@inkeep/open-knowledge 0.79.3 → 0.79.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cli.mjs +70 -68
  2. package/dist/constants-C6wMiGgw.mjs +1 -0
  3. package/dist/dist-CeD-QmMk.mjs +1 -0
  4. package/dist/{dist-Cmgb0r3p.mjs → dist-Dci-h_mV.mjs} +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/init-D6ZJF6PV.mjs +1 -0
  7. package/dist/{init-D_DKMj1s.mjs → init-PYX9s0p3.mjs} +14 -14
  8. package/dist/{launch-json-removal-CMIL2ikQ.mjs → launch-json-removal-DE_lefaT.mjs} +1 -1
  9. package/dist/loader-CNWGHRCV.mjs +1 -0
  10. package/dist/{loader-N7jiS4w0.mjs → loader-SBH7CBDL.mjs} +1 -1
  11. package/dist/{open-browser-CNVUL-A_.mjs → open-browser-CmAzRurP.mjs} +1 -1
  12. package/dist/{preview-wLB8OL2o.mjs → preview-CYBCI8OL.mjs} +1 -1
  13. package/dist/preview-Ch3iH9hA.mjs +1 -0
  14. package/dist/public/assets/FeedbackForm-B2kRhtsR.js +1 -0
  15. package/dist/public/assets/{ImageAttachments-Cooc1nca.js → ImageAttachments-mkcDupGd.js} +1 -1
  16. package/dist/public/assets/{ReportBugDialogBody-Bb5if0pW.js → ReportBugDialogBody-ABNMdMUU.js} +1 -1
  17. package/dist/public/assets/{ReportBugMenuTrigger-DHmYILeX.js → ReportBugMenuTrigger-DRki3qOn.js} +1 -1
  18. package/dist/public/assets/{SessionsHost-Cdic3R-Y.js → SessionsHost-BqU3aWOR.js} +2 -2
  19. package/dist/public/assets/{TerminalWindowApp-C9GosoJU.js → TerminalWindowApp-QDFQJvJI.js} +1 -1
  20. package/dist/public/assets/{ThreadView-CPLHpCdR.js → ThreadView-e6Emlmew.js} +17 -17
  21. package/dist/public/assets/image-attachment-C1B_QOlM.js +1 -0
  22. package/dist/public/assets/index-B4DpftwC.js +2205 -0
  23. package/dist/public/assets/{progress-0Dfq8VnS.js → progress-ChqYJ_wo.js} +1 -1
  24. package/dist/public/assets/{use-installed-clis-BzQZdtk_.js → use-installed-clis-SziirqY4.js} +2 -2
  25. package/dist/public/index.html +6 -6
  26. package/dist/registry-probes-Dege_xbr.mjs +17 -0
  27. package/dist/{removal-file-path-CSUwOdaZ.mjs → removal-file-path-CVCUJzdD.mjs} +1 -1
  28. package/dist/{repair-launch-json-CHU3DQHD.mjs → repair-launch-json-B9YcmXBD.mjs} +1 -1
  29. package/dist/{repair-mcp-configs-BhdagblW.mjs → repair-mcp-configs-BM8NXaJm.mjs} +1 -1
  30. package/dist/{src-DPs9CRCY.mjs → src-B5SmbFF9.mjs} +5 -5
  31. package/dist/src-DsMWEyve.mjs +1 -0
  32. package/dist/{start-C8VxoPil.mjs → start-CtAMwLgE.mjs} +3 -3
  33. package/dist/start-sCxyzBNh.mjs +1 -0
  34. package/package.json +5 -5
  35. package/dist/constants-CNxoEQ5b.mjs +0 -1
  36. package/dist/dist-DzdGKL8W.mjs +0 -1
  37. package/dist/init-DsGKNoaN.mjs +0 -1
  38. package/dist/loader-DAk_l84X.mjs +0 -1
  39. package/dist/preview-CRnYd6sw.mjs +0 -1
  40. package/dist/public/assets/FeedbackForm-CXLWTOXd.js +0 -1
  41. package/dist/public/assets/image-attachment-IlVZ-iwe.js +0 -1
  42. package/dist/public/assets/index-CFr0XcXQ.js +0 -2205
  43. package/dist/registry-probes-V6HkuVVa.mjs +0 -17
  44. package/dist/src-CXxDQ4LC.mjs +0 -1
  45. package/dist/start-Du6cCuDw.mjs +0 -1
@@ -0,0 +1 @@
1
+ import"./md-manager-BGnqyqi1-BWyJhS5F.mjs";var e=`0.79.4`;const t=`config.yml`,n=e;export{n,t};
@@ -0,0 +1 @@
1
+ import{Ht as e,Io as t,Jo as n,Kl as r,La as i,Rs as a,Zn as o,su as s,wn as c,yn as l,zd as u}from"./md-manager-BGnqyqi1-BWyJhS5F.mjs";import{$ as d,$a as f,$i as p,$n as m,$o as h,$r as g,$t as _,A as v,Aa as y,Ai as b,An as x,Ar as S,At as C,B as w,Ba as T,Bi as E,Bn as D,Br as O,Bt as k,C as A,Ca as j,Ci as M,Cn as N,Cr as P,Ct as F,D as I,Da as L,Di as R,Dn as z,Dr as B,Dt as V,E as H,Ea as U,Ei as W,En as G,Er as K,Et as q,F as J,Fa as Y,Fi as X,Fn as Z,Fr as Q,Ft as $,G as ee,Ga as te,Gi as ne,Gn as re,Gr as ie,Gt as ae,H as oe,Ha as se,Hi as ce,Hn as le,Hr as ue,Ht as de,I as fe,Ia as pe,Ii as me,In as he,Ir as ge,It as _e,J as ve,Ja as ye,Ji as be,Jn as xe,Jo as Se,Jr as Ce,Jt as we,K as Te,Ka as Ee,Ki as De,Kn as Oe,Kr as ke,Kt as Ae,L as je,La as Me,Li as Ne,Ln as Pe,Lr as Fe,Lt as Ie,M as Le,Ma as Re,Mi as ze,Mn as Be,Mr as Ve,Mt as He,N as Ue,Na as We,Ni as Ge,Nn as Ke,Nr as qe,Nt as Je,O as Ye,Oa as Xe,Oi as Ze,On as Qe,Or as $e,Ot as et,P as tt,Pa as nt,Pi as rt,Pn as it,Pr as at,Pt as ot,Q as st,Qa as ct,Qi as lt,Qn as ut,Qo as dt,Qr as ft,Qt as pt,R as mt,Ra as ht,Ri as gt,Rn as _t,Rr as vt,Rt as yt,S as bt,Sa as xt,Si as St,Sn as Ct,So as wt,Sr as Tt,St as Et,T as Dt,Ta as Ot,Ti as kt,Tn as At,Tr as jt,Tt as Mt,U as Nt,Ua as Pt,Ui as Ft,Un as It,Ur as Lt,Ut as Rt,V as zt,Va as Bt,Vi as Vt,Vn as Ht,Vr as Ut,Vt as Wt,W as Gt,Wa as Kt,Wi as qt,Wn as Jt,Wr as Yt,Wt as Xt,X as Zt,Xa as Qt,Xi as $t,Xn as en,Xr as tn,Xt as nn,Y as rn,Ya as an,Yi as on,Yn as sn,Yr as cn,Yt as ln,Z as un,Za as dn,Zi as fn,Zn as pn,Zr as mn,Zt as hn,_ as gn,_a as _n,_i as vn,_n as yn,_o as bn,_r as xn,_t as Sn,a as Cn,aa as wn,ai as Tn,an as En,ao as Dn,ar as On,as as kn,at as An,b as jn,ba as Mn,bi as Nn,bn as Pn,bo as Fn,br as In,bt as Ln,c as Rn,ca as zn,ci as Bn,cn as Vn,co as Hn,cr as Un,ct as Wn,d as Gn,da as Kn,di as qn,dn as Jn,do as Yn,dr as Xn,dt as Zn,ea as Qn,ei as $n,en as er,eo as tr,er as nr,es as rr,et as ir,f as ar,fa as or,fi as sr,fn as cr,fo as lr,fr as ur,ft as dr,g as fr,ga as pr,gi as mr,gn as hr,go as gr,gr as _r,gt as vr,h as yr,ha as br,hi as xr,hn as Sr,ho as Cr,hr as wr,ht as Tr,i as Er,ia as Dr,ii as Or,in as kr,io as Ar,ir as jr,is as Mr,it as Nr,j as Pr,ja as Fr,ji as Ir,jn as Lr,jr as Rr,jt as zr,k as Br,ka as Vr,ki as Hr,kn as Ur,kr as Wr,kt as Gr,l as Kr,la as qr,li as Jr,ln as Yr,lo as Xr,lr as Zr,lt as Qr,m as $r,ma as ei,mi as ti,mn as ni,mo as ri,mr as ii,mt as ai,n as oi,na as si,ni as ci,nn as li,no as ui,nr as di,ns as fi,nt as pi,o as mi,oa as hi,oi as gi,on as _i,oo as vi,or as yi,os as bi,ot as xi,p as Si,pa as Ci,pi as wi,pn as Ti,po as Ei,pr as Di,pt as Oi,q as ki,qa as Ai,qi as ji,qn as Mi,qo as Ni,qr as Pi,qt as Fi,r as Ii,ra as Li,ri as Ri,rn as zi,ro as Bi,rr as Vi,rs as Hi,rt as Ui,s as Wi,sa as Gi,si as Ki,sn as qi,so as Ji,sr as Yi,st as Xi,t as Zi,ta as Qi,ti as $i,tn as ea,to as ta,tr as na,ts as ra,tt as ia,u as aa,ua as oa,ui as sa,un as ca,uo as la,ur as ua,ut as da,v as fa,va as pa,vi as ma,vn as ha,vo as ga,vr as _a,vt as va,w as ya,wa as ba,wi as xa,wn as Sa,wr as Ca,wt as wa,x as Ta,xa as Ea,xi as Da,xn as Oa,xo as ka,xr as Aa,xt as ja,y as Ma,ya as Na,yi as Pa,yn as Fa,yo as Ia,yr as La,yt as Ra,z as za,za as Ba,zi as Va,zn as Ha,zr as Ua,zt as Wa}from"./dist-Dci-h_mV.mjs";export{Zi as AGENT_ID_MAX_LEN,oi as AGENT_ID_RE,Ii as AGENT_WRITE_ORIGIN,Er as AcpPermissionStore,Cn as AcpRegistry,mi as AcpThreadManager,Wi as AgentFocusBroadcaster,Rn as AgentPresenceBroadcaster,Kr as AgentSessionCapacityError,aa as AgentSessionManager,Gn as AutoStartDisabledError,ar as BUNDLE_IDS,Si as BUNDLE_SCOPE,$r as BUNDLE_SKILL_NAME,yr as BacklinkIndex,fr as CC1Broadcaster,r as CC1_CONTRACT_VERSION,gn as CONCURRENT_REPLACE_WINDOW_MS,fa as CONFIG_FILENAME,Ma as CONFLICT_MARKER_RE,jn as CURSOR_BUNDLE_PATHS_BY_PLATFORM,Ta as ConfigSchema,bt as ConflictAuthority,A as DEFAULT_CHECKPOINT_RETENTION,ya as DEFAULT_EMBEDDINGS_DIMENSIONS,Dt as DEFAULT_PACK_ID,H as DocumentDurabilityState,I as DocumentDurabilityStateError,Ye as EMBEDDINGS_API_KEY_ENV,Br as EPHEMERAL_PROJECT_DIR_PREFIX,v as ExposureConsentError,Pr as FEATURED_AGENT_IDS,Le as FILE_SYSTEM_WRITER,Ue as FILE_WATCHER_ORIGIN,tt as FileEmbeddingsBackend,J as GIT_PREFLIGHT_FAIL_SPAN_NAME,fe as GIT_UPSTREAM_WRITER,Ni as GitDirAccessError,je as GitNotAvailableError,mt as GitTooOldError,za as HOCUSPOCUS_AUTH_REJECTION_REASONS,w as HocuspocusAuthRejection,zt as HocuspocusAuthTokenSchema,oe as HomeProjectRootError,Nt as INSTALLED_AGENTS_SCHEMES,Gt as JSON_SCHEMA_DIALECT_2020_12,e as LINEAGE_EPOCH_KEY,ee as LIVE_DERIVED_INDEX_DEBOUNCE_MS,Te as MANAGED_RENAME_ORIGIN,ki as MAX_ACP_THREADS,ve as MAX_AGENT_SESSIONS,rn as MCP_CONNECTION_ID_HEADER,u as MCP_SERVER_NAME,Zt as MIN_EVICTABLE_IDLE_MS,un as MIN_GIT_VERSION,st as MISSING_OK_CONFIG_MESSAGE,Se as MalformedGitPointerError,d as McpLogger,ir as MissingOkConfigError,ia as OBSERVER_SYNC_ORIGIN,pi as OK_OKIGNORE_TEMPLATE,Ui as ONBOARDING_BUNDLE_IDS,l as ORPHAN_MODES,c as PROTOCOL_VERSION,dt as PinoLogger,Nr as ProcessLockCollisionError,An as ProjectGitInitError,xi as ROLLBACK_ORIGIN,Xi as ROOT_GITIGNORE_TEMPLATE,Wn as RUNTIME_VERSION,Qr as SERVICE_WRITER,da as SKILL_INSTALL_EVENTS_FILE_REL,o as SKILL_STATE_TARGETS,Zn as STARTER_FOLDER_FRONTMATTER_FILENAME,dr as STARTER_PACKS,Oi as STARTER_PACK_IDS,ai as STATE_MANIFEST_FILENAME,Tr as STATE_SCHEMA_VERSION,s as SYSTEM_DOC_NAME,vr as SeedPrerequisiteError,Sn as SeedRootDirError,va as ServerLockCollisionError,Ra as SingleFileNotAFileError,Ln as SingleFileNotFoundError,ja as SingleFileNotMarkdownError,Et as SingleFileProjectOverrideError,F as StateManifestError,wa as TagIndex,Mt as USER_GLOBAL_BUNDLE_IDS,q as __getShowAllWalkStatsForTesting,V as __resetShowAllWalkStatsForTesting,et as acpThreadStoreRoots,Gr as acpThreadsDir,C as acquireProcessLock,zr as acquireServerLock,He as applyAgentMarkdownWrite,Je as applyExternalChange,ot as applySeed,$ as assertCompatibleStateManifest,_e as assertGitAvailable,Ie as assertNeverDiskEvent,yt as assertNotHomeProjectRoot,Wa as attachAcpThreadSocket,k as attachCollabClientCounter,Wt as attachIdleShutdown,de as bindConflictAuthority,Rt as bootServer,Xt as buildAndOpenSkill,ae as buildConfigYmlContent,Ae as buildExecResult,Fi as buildIngressPolicy,we as buildOkMcpStdioCommand,ln as buildSkillZip,nn as buildStarterFolderFrontmatterYaml,hn as buildWipTree,pt as bundleSkillMdPath,_ as canonicalProjectKey,er as canonicalizeForCompare,ea as classifyEvents,li as classifyFsPath,zi as clearAllEmbeddingsKeys,kr as coercePackId,En as collectServerHostSnapshot,i as colorFromSeed,_i as commitUpstreamImport,qi as commitWip,Vn as commitWipFromTree,Yr as compareSemver,ca as composeEffectiveLinterConfig,Jn as composeFrontmatterSchemasConfig,cr as containsConflictMarkers,Ti as contentHash,ni as contributorCount,Sr as countShadowObjects,hr as countStaleAgentWipRefs,yn as countWipRefs,ha as createApiExtension,Fa as createAssetServeMiddleware,Pn as createCollaborationHost,Oa as createContentFilter,Ct as createContentFilterAsync,N as createEmbeddingsSecretStore,Sa as createEphemeralProjectDir,At as createExternalChangeHandler,G as createFileLogger,z as createLiveDerivedIndexExtension,Qe as createMcpHttpHandler,Ur as createOsProbe,x as createPersistenceExtension,Lr as createProbeFailureReporter,Be as createServer,Ke as createServerObserverExtension,it as createServerProbeResolver,Z as createStreamingErrorWriter,h as createTestLogger,he as describeStoredEmbeddingsKey,Pe as detectClaudeDesktopPresence,_t as detectGit,Ha as detectProjectShape,D as detectUserSkillHosts,Ht as discoverLockDirs,le as discoverMarkdownlintConfig,It as emitPreflightFailureSpan,Jt as encodeDocName,re as encodeFolderRoute,Oe as encodeSkillRoute,Mi as ensureProjectGit,xe as errorResponse,sn as evictStaleTrackerEntries,en as extractHeadings,pn as extractOkBinaryPath,ut as extractWikiLinksFromMarkdown,m as fallbackPaths,nr as findEnclosingGitRoot,na as findEnclosingProjectRoot,di as findNativeMarkdownlintFile,Vi as flushFileLogger,jr as formatAuditBrokenLinkSuppressionLine,On as formatAuthRejectionWire,yi as formatContributorsFrom,Yi as formatPackRationale,Un as gcCheckpointRefs,Zr as getCurrentMcpLogger,ua as getIngressContext,Xn as getLocalDir,ur as getLogFilePath,rr as getLogger,Di as getLogsDir,ii as getMachineId,wr as getMeter,_r as getMetrics,xn as getTracer,_a as handleCollabSocketError,La as handleSpawnCursor,In as hasForwardingHeaders,Aa as hasGcLogLatch,t as iconFromClientName,Tt as incrementCollabSocketFilteredError,P as incrementServerObserverFire,Ca as initContent,jt as initShadowRepo,K as initTelemetry,B as initToleranceTelemetryWriter,$e as installJsonSchemaDialect,Wr as installPrettyZodErrors,ra as installTestLoggers,S as installUserSkill,Rr as isAllowedApiOrigin,Ve as isAllowedWorkspaceHostHeader,qe as isConfigDoc,at as isDefunctProcess,Q as isDocInConflict,ge as isHocuspocusAuthRejectionReason,Fe as isHomeDir,vt as isHostAdmitted,Ua as isKnownPackId,O as isLinkIndexExcludedDoc,Ut as isLockProcessRunning,ue as isLoopbackAddress,Lt as isManagedArtifactDoc,Yt as isMintedThreadId,ie as isOriginAdmitted,n as isOrphanMode,ke as isPairedWriteOrigin,Pi as isPathWithinDir,Ce as isPeerAdmitted,cn as isProcessAlive,tn as isProjectRoot,mn as isReservedForUserTree,ft as isSelfWrite,g as isSystemDoc,$n as isToleranceTelemetryEnabled,$i as isValidLockPid,ci as lastKnownHash,Ri as listRescueCheckpoints,Or as listStarterPacks,Tn as loadCustomAgents,gi as loadPrincipal,Ki as lockAdvertisesUi,Bn as lockBaseUrl,Jr as lockFilePath,fi as loggerFactory,sa as loginShapedUserinfoUser,Hi as logsCurrentPath,Mr as logsPreviousPath,qn as makeLazyEmbeddingsKeyStore,sr as markServerLockDraining,wi as mountMcpAndApi,ti as normalizeFsPath,xr as observeReadiness,mr as packageVersionMajorMinor,vn as parseAuthRejectionWire,ma as parseGitVersion,Pa as parseHocuspocusAuthToken,Nn as parseKeepaliveConnectionId,Da as pathToDocName,St as planSeed,M as prepareSingleFileOpen,xa as processCommand,kt as processUsage,W as readAgentBrowserTools,R as readAllTargets,Ze as readBundleDecision,Hr as readDeclaredGitHubHosts,b as readOriginGitHubRepo,Ir as readOwnNativeRules,ze as readProcessLock,Ge as readProcessLockDetailed,rt as readProcessState,X as readProjectHeadState,me as readProjectLocalSemanticConfig,Ne as readServerLock,gt as readServerPackageVersion,Va as readSkillInstallStateSnapshot,E as readStateManifest,Vt as readTargetRecordedAt,ce as readTargetVersion,Ft as reconcile,qt as recordContributor,ne as recordSkillInstallEvent,De as redactShareSubprocessStderr,ji as registerAllTools,be as registerWrite,on as releaseProcessLock,$t as releaseServerLock,fn as removeLastKnownHash,lt as removeProjectSkillGitignoreBlock,p as reportSkillInstall,Qn as resetMetrics,Qi as resolveBuiltinSkillHosts,a as resolveBundleEnabled,si as resolveBundledSkillDir,Li as resolveContentDir,Dr as resolveCursorBinaryDefault,wn as resolveCursorSpawnInvocation,hi as resolveEffectiveLinterConfig,Gi as resolveEmbeddingsCredential,zn as resolveGitHubAccountFromUrl,qr as resolveGitHubAuthHost,oa as resolveLockDir,Kn as resolveNativeConfigForDoc,or as resolveNativeMarkdownlintConfig,Ci as resolvePack,ei as resolvePackageVersion,br as resolveSkillInstallReportSettings,pr as resolveUiInfo,_n as restoreContributors,pa as rewriteMarkdownLinksForDocumentRename,Na as rewriteWikiLinksForDocumentRename,Mn as runAuthReposSubprocess,Ea as runAuthStatusSubprocess,xt as runCloneSubprocess,j as runDeviceFlowSubprocess,ba as runWithMcpLogger,Ot as safeContentPath,U as safeSubdir,L as safetyCheckpoint,Xe as sameGitHubLogin,Vr as sanitizeClientName,y as saveInMemoryCheckpoint,Fr as saveVersion,Re as scanLockProcesses,We as seedBasenameIndex,nt as seedEphemeralProjectDir,Y as serializeError,pe as setActiveSpanAttributes,Me as setupServerObservers,ht as shadowGit,Ba as shutdownTelemetry,kn as spansCurrentPath,bi as spansPreviousPath,T as spawnDetached,Bt as splitMarkdownBlocks,se as startWatcher,Pt as strategiesFor,Kt as streamedChunkOf,te as streamingProblemEvent,Ee as swapContributors,Ai as teardownToleranceTelemetryWriter,ye as toBroadcasterKey,an as tracedAppendFileSync,Qt as tracedLinkSync,dn as tracedMkdir,ct as tracedMkdirSync,f as tracedRename,tr as tracedRenameSync,ta as tracedRmSync,ui as tracedRmdirSync,Bi as tracedUnlinkSync,Ar as tracedWriteFile,Dn as tracedWriteFileSync,vi as trustSystemCertificates,Ji as updateLastKnownHash,Hn as updateProcessLockPort,Xr as updateServerLockPort,la as validateAgentId,Yn as validateCloneInputs,lr as validateSkillZip,Ei as waitForServerLockDrain,ri as withHiddenWindowsConsole,Cr as withSpan,gr as withSpanSync,bn as writeBundleDecision,ga as writeMarkdownlintRule,Ia as writeRootGitignoreForNewRepo,Fn as writeStateManifest,ka as writeTargetVersion,wt as writeTracker};
@@ -2129,4 +2129,4 @@ native-divergence-injected
2129
2129
  `)){let r=n.trim();if(r===``)continue;if(r.startsWith(`C\0`)){let[,e,t]=r.split(`\0`);o=e&&t?{name:e,email:t}:null;continue}if(!o||!r.endsWith(`.md`)&&!r.endsWith(`.mdx`))continue;let a=W(e,r);if(!OX(a,t))continue;let s=_Z(a,t);i.has(s)||G(a)&&i.set(s,o)}return i}function Wbt(e){Bbt();let t=e.ingressPolicy??_1({}),{contentDir:n,projectDir:r=n,quiet:i=!0,debounce:a=2e3,maxDebounce:o=1e4,gitEnabled:s=!0,commitDebounceMs:c=3e4,wipRef:l=`refs/wip/main`,configHomedirOverride:u,enableTestRoutes:d=!1,shadowRepo:f,contentRoot:p,destroyTimeoutMs:m=1e4,localOpCliArgs:h,authStreamHeartbeatMs:g,skipStateManifestCheck:_=!1,singleDocRelPath:v,ephemeral:y=!1}=e,b=R6(u),x=q(`server`),S=null,C=()=>S?.getLastKnownBranch()??null,w=()=>S?S.getLastKnownBranch():s9(r).branch,T=T_t(W(n)),E=null,D=s9(r).branch??`main`,O=new R4(D,{persistencePath:H(kY(r),`stale-external-writes.json`),onStaleExternalWriteChange:()=>{E?.signal(`sync-status`),re()},onStoreRefused:e=>{wn(e,`refused-store-mark`)===`lost`&&x.warn({docName:e},`[rescue] refused-store content for ${e} was not durably buffered at refusal time`)},fileForDocName:e=>U(r,DX(e,n)).replaceAll(`\\`,`/`),hasResolvedExtension:cY}),k=()=>O.getActiveBranch(),A=e=>O.getReconciledBase(e),j=(e,t)=>O.setReconciledBase(e,t),ee=e=>O.deleteReconciledBase(e),te=e=>O.switchReconciledBaseScope(e),M=e=>O.setBatchInProgress(e),ne=e=>{M(e),e||je.flushDeferredStores(`within-branch`).catch(e=>{x.error({err:e},`[persistence] deferred store drain failed after batch`)})},N=()=>O.isBatchInProgress(),P=new yYe({projectDir:r,contentDir:n,branch:D,signal:{signal:e=>E?.signal(e)},io:{gitRaw:async e=>B4(r,{credentialConfig:[],timeoutMs:3e4}).git.raw(e),writeProjectFileUntracked:(e,t)=>qq(e,t,`utf-8`),unlinkProjectFileUndeclared:e=>Qq(e),deleteResolvedContent:(e,t)=>{let n=HJe(t);try{Qq(t)}catch(e){throw UJe(n),e}De.decrementMdDir(V(e))},applyResolvedContent:async(e,t,n)=>{let r=!G(t);oZ(t,tZ(n)),await JC(t,n,{fs:rJ}),r&&De.incrementMdDir(V(e)),Ne.documents.get(e)&&on(e,n),j(e,n),await Oe.recordDiskUpsert(e,n)},readLiveContent:e=>an(e),finalizeReconcileResolution:async(e,t,n)=>{let r;if(e.reason===`stale-external-write`){let i=O.getStaleExternalWrite(n);i&&(r={conflict:i,branch:O.getActiveBranch()}),t===`mine`||t===`content`?O.recordDisplacedVersion(n,e.stages.theirs):O.clearDisplacedVersions(n),O.clearStaleExternalWrite(n)}let i=Ne.documents.get(n),a=i?.getMap(`lifecycle`);if(t===`delete`){let e=i?pn(n,S?.getLastKnownBranch()??`main`,`delete`,!0):!1;await Oe.recordDiskDelete(n),x.info({docName:n,isDirty:e,source:`resolve-delete`},`[reconcile] delete: ${n} (dirty=${e})`);let t=a?{status:a.get(`status`),reason:a.get(`reason`),detectedAt:a.get(`detectedAt`)}:void 0;if(a?.set(`status`,`deleted-upstream`),a?.delete(`reason`),a?.delete(`detectedAt`),i)try{Ne.closeConnections(n),await Ze(i)}catch(e){if(a&&t)for(let[e,n]of Object.entries(t))n===void 0?a.delete(e):a.set(e,n);if(r)try{O.restoreStaleExternalWrite(r.conflict,r.branch)}catch(e){x.error({err:e,docName:n},`[reconcile] stale-external-write rollback failed for ${n}; the retry may not find the conflict`)}throw e}ee(n),Qt(n),Ft(n),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:n,kind:`deleted`,source:`resolve-delete`}))}else a?.get(`reason`)===e.reason&&(a.delete(`status`),a.delete(`reason`),a.delete(`detectedAt`));at(`files`)}}});function re(){for(let e of O.listStaleExternalWrites()){let t=A(e.docName)??e.diskContent;P.raise({kind:`reconcile`,file:e.file,reason:`stale-external-write`,detectedAt:e.detectedAt,stages:{base:t,ours:e.retainedContent??t,theirs:e.diskContent}})}}re();function ie(e){let t=GC({absPath:ZC(`project`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project config`)});if(!t.valid){let n=Mi(t.error)&&t.error.code===`SCHEMA_INVALID`?t.error.issues.filter(e=>e.path.map(String).join(`.`)===`content.attachmentFolderPath`):[];if(n.length>0){let e=n.map(e=>e.message).join(`; `);throw Error(`Invalid content.attachmentFolderPath in project config: ${e}`)}if(e?.requireValid)throw Error(`Project config is invalid`,{cause:t.error});x.warn({},`[config] committed content.attachmentFolderPath unavailable (project config invalid) — using default attachment placement`)}return t.value.content.attachmentFolderPath??`./`}function ae(){let e=GC({absPath:ZC(`project-local`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project-local config`)}),t=jn(e.value.autoSync);if(t!==null)return{mode:t,source:`config`};e.valid||x.warn({},`[config] project-local autoSync.mode unavailable (config invalid) — falling back to the committed project default`);let n=GC({absPath:ZC(`project`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project config`)});return n.valid||x.warn({},`[config] committed autoSync.default unavailable (project config invalid) — defaulting to disabled`),{mode:ree(n.value.autoSync?.default)??`off`,source:`committed-default`}}function oe(){let e=GC({absPath:ZC(`project-local`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project-local config`)});return ve(e.value.autoSync)}function se(){let e=GC({absPath:ZC(`project`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project config for linter`)}).value.contentRules,t=e?Xne(e):Ci;return xvt(r,t.plugins.okf),t}function ce(){let e=GC({absPath:ZC(`project`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project config for link validation`)});return{links:e.value.validation?.links??`warning`,suppressLogLinkAdvisories:e.value.validation?.suppressLogLinkAdvisories??!0}}function le(){return aet(r,{configHomedirOverride:u,onWarn:e=>x.warn({message:e},`[config] could not read project-local config`)})}function ue(){let e=GC({absPath:ZC(`project-local`,r,u),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project-local config`)});return e.valid?e.value.linkPreviews?.enabled===!0:!1}function de(){return the({cwd:r,homedirOverride:u,warn:e=>x.debug({message:e},`[config] diagnostics read`)})}function fe(e){let t={user:Qr,project:Jr,"project-local":Eee};for(let n of de().diagnostics)if(e===void 0||t[n.scope]===e){if(n.code===`VALUE_FALLBACK`){for(let e of n.issues)x.warn({code:n.code,scope:n.scope,file:n.file,path:e.path.join(`.`),line:e.line,column:e.column},`[config] ${e.path.join(`.`)}: ${e.message}`);continue}n.code===`REMOVED_KEY`&&x.warn({scope:n.scope,file:n.file,path:n.path.join(`.`)},`[config] ${n.path.join(`.`)} is no longer read and was ignored. ${n.redirect}`)}}function pe(e){return`${t3(e.baseUrl)}|${e.model}|${e.dimensions??`auto`}`}function me(e){return`${e.maxBatchSize}|${e.maxBatchChars}|${e.docTimeoutMs}`}let he,ge=0;function _e(e,t){let i;if(e===`__config__/project`||e===`__local__/project`){let t=ae();i=t.mode,Sn?.setMode(t.mode,t.source).catch(n=>{x.warn({err:n,mode:t.mode,docName:e},`[sync] failed to apply autoSync mode from config`)});let n=oe();Sn?.setIntervals(n.pullIntervalSeconds,n.pushIntervalSeconds)}let a=le();if(Ke.applyConfig({enabled:a.enabled,providerFingerprint:pe(a),transportFingerprint:me(a),maxBatchSize:a.maxBatchSize}),e===`__config__/project`){ge+=1;try{let e=ie({requireValid:!0});De?.setAttachmentFolderPath(e),he!==void 0&&e!==he&&x.warn({previous:he,next:e},`[content-filter] attachment folder changed — files under the previous folder no longer sync`),he=e}catch(e){x.warn({err:e},`[content-filter] project config invalid — keeping previous attachment admission`)}E?.signal(`lint-config`),(t??se().plugins.okf?.generate?.index===!0)||$_t({projectDir:r,contentDir:n,generatedDocNames:Vt(),enabled:!1}).then(e=>{e.ok||x.warn({state:e.status.state},`[index] could not remove Open Knowledge generated-index Git attributes`)}),It()}x.info({docName:e,autoSyncMode:i,semanticEnabled:a.enabled},`[config] applied persisted config to in-process consumers`)}xq();let ye=cc(),be=kY(r),xe=new tq({localDir:be,log:q(`acp-registry`),fetchImpl:e.acpRegistryFetchImpl}),Se=new JK(be,q(`acp-permissions`));if(T3(be,{port:0,worktreeRoot:r,kind:e.lockKind??`interactive`,capabilities:e.capabilities??[`http`,`ws`]}),!_)try{Nyt({lockDir:be,shadowRepoDir:jC(r)})}catch(e){throw O3(be),e}let Ce=ure(),Te=(e,t)=>Ce.resolveEmbed(e,t),Ee=(e,t)=>{let r=Ce.resolveEmbed(e,t);if(!r&&e.includes(`/`)&&(r=e.replace(/^\.?\//,``)),!r)return null;let i=W(n,r);if(!BY(i,W(n)))return null;try{let e=Vs(i);return e.isFile()?e.size:null}catch{return null}},De,Oe,ke,Ae,je,Me,Ne,Fe,Ie,Le,Re,ze=null,Be=null,Ve=null,He=null,Ue=null,We=null,Ge=le(),Ke=new met({loadEmbedder:()=>{let t=le(),n={keyStore:e.embeddingsKeyStore??null,projectDir:r,config:{baseUrl:t.baseUrl,model:t.model,dimensions:t.dimensions},options:{maxBatchSize:t.maxBatchSize,maxBatchChars:t.maxBatchChars,docTimeoutMs:t.docTimeoutMs}};return(e.embedderLoader??Y9e)(n)},cacheDir:H(kY(r),`embeddings`),enabled:Ge.enabled,providerFingerprint:pe(Ge),transportFingerprint:me(Ge),maxBatchSize:Ge.maxBatchSize}),qe=null,Je=new Set,Ye=!1,Xe=[],Ze,Qe,$e,et,tt=new Promise((e,t)=>{$e=e,et=t}),nt,rt=new Promise(e=>{nt=e});async function it(){let e,t=Symbol(`branch-scope-gate-timeout`),n=new Promise(n=>{e=setTimeout(()=>n(t),1e4),e.unref?.()});try{if(await Promise.race([rt,n])!==t)return k()}finally{e&&clearTimeout(e)}try{return s9(r).branch??null}catch(e){return x.warn({err:e},`[auth] branch scope gate expired and HEAD is unreadable — skipping the branch claim check`),null}}function at(e){E?.signal(e)}let ot,st,ct,lt=!1,ut=!1,dt=new AbortController,ft=new Set,pt=!1,mt=!1,ht=!1,gt=0,_t,vt=new Promise(e=>{_t=e});function yt(e){ht||(ht=!0,_t(e))}function bt(){return pt||ft.size>0}function xt(){ut||!lt||(ot!==void 0&&clearTimeout(ot),ot=setTimeout(()=>{ot=void 0,jt()},500),ot.unref?.())}function St(){if(ut){yt({status:`cancelled`,indexCount:0});return}pt=!0,mt=!0,st=setImmediate(()=>{st=void 0,jt()})}let Ct,wt,Tt=!1,Et=null;async function Dt(){let e=ke.current;if(!e||Tt)return;let t=performance.now();x.info({gitDir:e.gitDir},`[shadow-housekeeping] deferred boot housekeeping started`);try{await NGe(e)}catch(e){x.warn({err:e},`failed to write gc config (non-fatal)`)}if(!Tt){if(Et)try{let t=Number.parseInt(process.env.OK_BOOT_RENAME_GC_RETRY_INTERVAL_MS??``,10)||1e3,n=!1;for(let r=0;r<30;r++){if(!(await d0(e,Et,{rebuild:!0})).skipped){n=!0;break}if(r===29)break;if(await new Promise(e=>{setTimeout(e,t).unref?.()}),Tt)return}n||x.warn({gitDir:e.gitDir},`[rename-log] deferred boot GC/rebuild retry budget exhausted (persistent GC contention); rebuild deferred to next boot`)}catch(t){x.warn({err:t,gitDir:e.gitDir},`[rename-log] deferred boot GC/rebuild failed; index loaded without GC`)}if(!Tt){try{await Ae?.runBootMaintenance()}catch(e){x.warn({err:e},`[shadow-maintenance] boot maintenance failed (non-fatal)`)}x.info({gitDir:e.gitDir,durationMs:Math.round(performance.now()-t)},`[shadow-housekeeping] deferred boot housekeeping complete`)}}}function Ot(){Tt||(Ct=setImmediate(()=>{Ct=void 0,wt=Dt().catch(e=>{x.error({err:e},`[shadow-housekeeping] unexpected uncaught failure`)})}))}async function At(){if(Tt=!0,Ct!==void 0&&(clearImmediate(Ct),Ct=void 0),!wt)return;let e,t=new Promise(t=>{e=setTimeout(()=>t(`timeout`),m)});try{if(await Promise.race([wt,t])===`timeout`)throw Error(`shadow housekeeping drain timed out after ${m}ms — abandoning in-flight housekeeping`)}finally{e!==void 0&&clearTimeout(e)}}function jt(){if(ut||!lt||!bt())return;if(ct!==void 0){e.generatedIndexTestHooks?.onKickWhileInFlight?.();return}if(O.isBatchInProgress()){xt();return}let t=pt,n=new Set(ft),r=mt;pt=!1,ft.clear(),mt=!1;let i=t?{fullSweep:!0}:{fullSweep:!1,directories:n};ct=(async()=>{let e=await Gt(i,dt.signal);if(e.status===`deferred`){pt=!0,r&&(gt+=e.indexCount,mt=!0);return}r&&(gt+=e.indexCount,e.status===`completed`&&bt()?mt=!0:yt({...e,indexCount:gt}))})().catch(e=>{x.warn({err:e},`[index] index regeneration coordinator failed`),r&&yt({status:`failed`,indexCount:0})}).finally(()=>{if(ct=void 0,ut){r&&yt({status:`cancelled`,indexCount:0});return}bt()&&ot===void 0?xt():!bt()&&ot===void 0&&e.generatedIndexTestHooks?.onIdle?.()})}async function Mt(){if(!ut){let e=ct;ut=!0,dt.abort(),ot!==void 0&&(clearTimeout(ot),ot=void 0),st!==void 0&&(clearImmediate(st),st=void 0),ft.clear(),pt=!1,mt=!1,e===void 0&&yt({status:`cancelled`,indexCount:0})}await ct}function Nt(e){ut||rvt(e)||(ft.add(r9(e)),xt())}function Pt(e){if(!ut){for(let t of nvt(e))ft.add(t);xt()}}function Ft(e){let t=xn?.getFileIndex();if(!t){Nt(e);return}let n=r9(e);if(i9(t.keys()).has(n)){Nt(e);return}Pt(r9(n))}function It(){ut||(pt=!0,xt())}function Lt(e){let t=xn?.getFileIndex().get(e);if(t)return{title:t.title,description:t.description,type:t.type}}let Rt=!1,zt={origin:Hbt,writer:UGe,isConflict:e=>P.has(e),getDocument:e=>Ne.documents.get(e),writeDisk:async(e,t)=>{Yq(V(e),{recursive:!0}),await JC(e,t,{fs:rJ})},registerWrite:(e,t)=>oZ(e,tZ(t)),noteFileIndex:e=>xn?.mutateFileIndex({kind:e.kind,path:e.absPath,docName:e.docName,content:e.markdown}),signalFiles:()=>at(`files`),attribute:async(e,t)=>{L1(e,t.id,t.name,t.id),Rt=!0}};function Bt(e){return e===``?t9:`${e}/${t9}`}function Vt(){return[...xn?i9(xn.getFileIndex().keys()):new Set([``])].map(Bt)}function Ht(e){let t=se().plugins.okf?.generate?.index===!0,n=e.state===`ready`||e.state===`not-applicable`;return{enabled:t,active:t&&n,git:e.state===`ready`?{state:e.state,ownership:e.ownership}:{state:e.state}}}function Ut(){return Ht(Y_t({projectDir:r,contentDir:n,generatedDocNames:Vt()}))}async function Wt(e){let t=await $_t({projectDir:r,contentDir:n,generatedDocNames:Vt(),enabled:e});if(!t.ok)return{...Ut(),applied:!1,reason:t.status.state===`conflict`?`git-conflict`:`git-unavailable`};let i=await $C({cwd:r,scope:`project`,patch:{contentRules:{okf:{generate:{index:e}}}}});if(!i.ok){try{await t.rollback()}catch(e){x.error({err:e},`[index] could not roll back generated-index Git attributes`)}return{...Ut(),applied:!1,reason:`config-write`}}try{let e=K(i.path,`utf-8`);W7(Ne.documents.get(`__config__/project`)??null,Jr,e,je.configPersistenceCtx)}catch(e){x.warn({err:e},`[index] generated-index settings reflection deferred to config watcher`)}return _e(Jr,e),fe(Jr),{...Ut(),applied:!0}}async function Gt(t,i){let a=0,o=t.fullSweep?performance.now():void 0,s=()=>se().plugins.okf?.generate?.index!==!0;try{if(i.aborted)return{status:`cancelled`,indexCount:0};if(s())return{status:`disabled`,indexCount:0};let c=xn?.getFileIndex();if(!c)return{status:`failed`,indexCount:0};try{if(await e.generatedIndexTestHooks?.beforePlan?.({fullSweep:t.fullSweep,signal:i}),i.aborted)return{status:`cancelled`,indexCount:a};if(s())return{status:`disabled`,indexCount:a};if(O.isBatchInProgress())return{status:`deferred`,indexCount:a};let o=svt({docs:c,docExtension:sY,currentMarkdownFor:()=>null,warningScope:T}),l=Y_t({projectDir:r,contentDir:n,generatedDocNames:o.map(({directory:e})=>Bt(e))});if(l.state!==`ready`&&l.state!==`not-applicable`)return x.warn({state:l.state},`[index] generated index regeneration paused by Git attributes`),{status:`blocked`,indexCount:a};for(let{directory:r,markdown:c}of o){if(!t.fullSweep&&!t.directories.has(r))continue;if(i.aborted)return{status:`cancelled`,indexCount:a};if(s())return{status:`disabled`,indexCount:a};if(O.isBatchInProgress())return{status:`deferred`,indexCount:a};if(await e.generatedIndexTestHooks?.beforeDecision?.({directory:r,fullSweep:t.fullSweep,signal:i}),i.aborted)return{status:`cancelled`,indexCount:a};if(s())return{status:`disabled`,indexCount:a};let o=Bt(r),l=W(n,`${o}.md`),u;try{u=K(l,`utf-8`)}catch(e){e.code!==`ENOENT`&&x.warn({err:e,path:Rq(l)},`[index] could not read the existing generated index; treating it as absent`),u=null}a+=1;let d=await R_t({docName:o,absPath:l,markdown:c,currentMarkdown:u},zt);d===`blocked-conflict`?x.warn({event:`generated-index-regeneration`,outcome:`blocked`,directory:r,reason:`conflict`},`[index] generated index regeneration blocked by active conflict`):x.info({event:`generated-index-regeneration`,outcome:d===`unchanged`?`unchanged`:`written`,directory:r},`[index] generated index regeneration completed`),await e.generatedIndexTestHooks?.afterWrite?.({docName:o,fullSweep:t.fullSweep,signal:i}),!t.fullSweep&&r!==``&&u===null&&Pt(r9(r))}}finally{Rt&&=(await je.waitForPendingCommits(),await je.flushContributors(),!1),o!==void 0&&(X4(`generatedIndexSweepMs`,Math.round((performance.now()-o)*100)/100),C9e(`generatedIndexCount`,a))}return{status:`completed`,indexCount:a}}catch(e){return x.warn({err:e},`[index] index regeneration failed`),{status:`failed`,indexCount:a}}}let Kt=null,qt=!1,Jt=()=>{try{Eyt(r,Yt.entries())}catch(e){x.warn({err:e},`[removed-docs-journal] failed to persist removal journal`)}},Yt=new _yt(void 0,{onEviction:()=>iGe(),onSizeChange:e=>aGe(e),onMutate:()=>{!qt||Kt!==null||(Kt=setTimeout(()=>{Kt=null,Jt()},2e3))}});for(let[e,t]of Tyt(r))vY(e)||j5(e)&&([`.md`,`.mdx`].some(t=>{let r=W(n,`${e}${t}`);return BY(r,W(n))&&G(r)})||Yt.restore(e,t));qt=!0;let Xt={current:null},Zt=(e,t)=>{vY(e)||Yt.setRenamed(e,t)},Qt=e=>{if(!vY(e)){if(Yt.peek(e)?.kind===`renamed`){console.info(JSON.stringify({event:`recently-removed-docs-unpaired-delete-suppressed`,docName:e,source:`watcher-delete`}));return}Yt.setDeleted(e),Xt.current?.deleted(e)}},$t=e=>{vY(e)||Yt.delete(e)};try{let m=`./`;try{m=ie()}catch(e){x.warn({err:e},`[content-filter] invalid attachment folder at boot — using sibling admission`)}he=m,De=rX({projectDir:r,contentDir:n,singleDocRelPath:v,attachmentFolderPath:m,inPlaceSkillDirs:M2(n),rescanInPlaceSkillDirs:()=>M2(n),skillRootPaths:F8e(n),onAfterRebuild:()=>{Oe.refreshContentScope().catch(e=>{q(`server-factory`).warn({err:e},`[content-filter] derived-index rebuild failed after onAfterRebuild`)}),fYe(xn).then(({prunedFiles:e,prunedFolders:t})=>{let n=e+t;n>0?q(`server-factory`).info({pruned:n,prunedFiles:e,prunedFolders:t},`[content-filter] reconciled file indexes after onAfterRebuild`):q(`server-factory`).debug({prunedFiles:e,prunedFolders:t},`[content-filter] file index reconcile completed after onAfterRebuild (no entries pruned; rescan may have added entries)`)}).catch(e=>{q(`server-factory`).warn({err:e},`[content-filter] file index reconcile failed after onAfterRebuild`)})}}),Oe=new K7e({projectDir:r,contentDir:n,contentFilter:De,getGlobalSkillRoots:()=>vrt(je.managedArtifactCtx),signalChannel:at,getLocalTargetInventory:()=>mlt(xn,n),onRecoveredFileTarget:(e,t)=>{xn&&yyt({watcher:xn,contentDir:n,relativePath:e,exists:t,invalidateReferencedAssetsCache:Ue})}}),ke={current:f},Ae=s?Kvt({getShadow:()=>ke.current??null,getCurrentBranch:C,contentRoot:p??``,projectGitDir:AC(r)??void 0,isWriterLive:e=>{if(!He&&!Fe)return q(`server-factory`).debug({writerId:e},`[server-factory] isWriterLive called before liveness deps populated — treating writer as dead`),!1;if(He?.getPresenceMap()[e])return!0;let t=e.startsWith(`agent-`)?e.slice(6):e;for(let e of Fe?.sessionsForConnection(t)??[])return!0;return!1}}):void 0;let _=null;je=pyt({contentDir:n,projectDir:r,conflicts:P,lifecycleOf:(e,t)=>P.lifecycleOf(e,t),gitEnabled:s,commitDebounceMs:c,wipRef:l,shadowRef:ke,ephemeral:y,contentRoot:p,derivedDocumentIndex:Oe,configHomedirOverride:u,getCurrentBranch:C,resolveEmbed:Te,resolveSize:Ee,getPrincipal:()=>qe,onAgentCommit:()=>E?.signal(`session-activity`),onFlushCommit:()=>Ae?.noteFlushCommit(),onDiskFlush:(e,t,n,r)=>{E?.emitDiskAck(e,t),!vY(e)&&(cvt(r,n,e)&&Nt(e),zet(r,n)&&(Ue?.(),at(`files`)))},onConfigRejected:(e,t)=>E?.emitConfigValidationRejected(e,t),onConfigPersisted:e=>{_e(e),fe(e)},onManagedSkillPersisted:e=>{let t=we(e);t?.kind===`skill`&&t.scope===`global`&&(_!==null&&clearTimeout(_),_=setTimeout(()=>{_=null;let e=u??Ks();G2(e,e,A2(e)).then(e=>{e>0&&x.info({refreshed:e},`[in-place-skills] post-edit copy re-sync`)}).catch(e=>x.warn({err:e},`[in-place-skills] post-edit copy re-sync failed`))},2e3),_.unref?.())},isRecentlyRemoved:e=>Yt.has(e),mdManager:e.mdManager,getLossRing:()=>Me,durabilityState:O}),Ne=new $Ve({quiet:i,debounce:a,maxDebounce:o,extensions:[je.extension]});let S=Ne.openDirectConnection.bind(Ne);Ne.openDirectConnection=((e,t)=>S(lY(e),t));let T=Ne;Xe.push(AXe(()=>T.documents.size),jXe(()=>je.getQueueDepths()),NXe(()=>{let e=0;for(let t of T.documents.values())e+=t.directConnectionsCount;return{websocket:T.getConnectionsCount()-e,direct:e}})),FXe(),y||(We=myt({getLoadedDocuments:()=>T.documents,lifecycleOf:(e,t)=>P.lifecycleOf(e,t),forceStore:(e,t)=>je.forceStore(e,t),getBase:e=>O.getReconciledBase(e),isBatchActive:()=>O.isBatchInProgress(),hasInFlight:e=>O.inFlightFlushCount(e)>0,readDiskBytes:e=>{let t=DX(e,n),r,i;try{r=Ls(t),i=Vs(r).size}catch(t){let n=AX(t);if(n===`ENOENT`)return null;throw n===`ELOOP`?new v9(`symlink cycle at content path: ${e}`):t}if(!OX(r,n))throw new v9(`symlink-escape: ${t} resolves outside the content dir`);if(i>524288)throw new v9(`document exceeds the open byte limit: ${e}`);try{return K(r,`utf-8`)}catch(e){if(AX(e)===`ENOENT`)return null;throw e}},graceMs:e.stalenessGraceMs,sweepIntervalMs:e.stalenessSweepIntervalMs})),Qe=Ne.shouldUnloadDocument.bind(Ne),Ne.shouldUnloadDocument=e=>{if(Je.has(e))return!0;if(Ye&&!vY(e.name)&&O.isStoreRefused(e.name))return!1;if(Ye&&Qe(e))return!0;let t=e.name;return vY(t)||A(t)!==void 0||e.getXmlFragment(`default`).length!==0||e.getText(`source`).length!==0?!1:Qe(e)},Ze=async e=>{Je.add(e);try{await Ne.unloadDocument(e)}finally{Je.delete(e)}},E=new mKe(Ne),Ve=new z0e(Ne),He=new V0e(Ne),Fe=new xZe(Ne,e.agentSessionOptions);let D=Fe;Xe.push(PXe(()=>({active:D.liveSessionCount,limit:D.sessionLimit})));let k=Dvt({derivedDocumentIndex:Oe,onDocumentSettled:e=>Xt.current?.changed(e)});Ne.configuration.extensions.push(k);function j(e,t,n={}){x.warn({reason:e,docName:t,...n},`[auth-rejection] ${e}`)}Ne.configuration.extensions.push({__kind:`principal-auth`,async onAuthenticate(e){let t=e.token,n=I5(t),r=n?.expectedServerInstanceId;if(typeof r==`string`&&r.length>0&&r!==ye)throw j(`server-instance-mismatch`,e.documentName,{claimedServerInstanceId:r,currentServerInstanceId:ye}),new F5(`server-instance-mismatch`,`server instance mismatch: client claimed ${r}, this server is ${ye}`);let i=n?.expectedBranch;if(typeof i==`string`&&i.length>0){let t=await it();if(t!==null&&i!==t)throw j(`branch-mismatch`,e.documentName,{claimedBranch:i,currentBranch:t}),new F5(`branch-mismatch`,`branch mismatch: client claimed ${i}, server is on ${t}`)}if(!n)return;let a=e.context;typeof n.principalId==`string`&&(qe&&n.principalId===qe.id?a.principalId=qe.id:qe?console.warn(JSON.stringify({event:`principal-token-mismatch`,claimed:n.principalId,loaded:qe.id})):a.principalId=n.principalId),typeof n.tabSessionId==`string`&&(a.tabSessionId=n.tabSessionId),a.kind=`human`}}),Ne.configuration.extensions.push({__kind:`config-doc-admission-guard`,async onAuthenticate(e){if(!pY(e.documentName)&&!mY(e.documentName))return;let n=e.request,r=n.socket?.remoteAddress;if(r!==void 0&&!v1(r,t))throw j(`config-doc-admission-denied`,e.documentName,{check:`peer`}),Error(`config-doc admission requires loopback peer (peer=${r}, doc=${e.documentName})`);let i=e.requestHeaders,a=(i&&typeof i.get==`function`?i.get(`host`):null)??n.headers?.host??void 0;if(!y1(a,t))throw j(`config-doc-admission-denied`,e.documentName,{check:`host`}),Error(`config-doc admission requires a loopback or remote Host header (host=${a??`<absent>`}, doc=${e.documentName})`)}});let ee=W(n);function te(e){if(!j5(e))return null;let t=uY(e),n=W(ee,t);return BY(n,ee)?n:null}Ne.configuration.extensions.push({__kind:`removal-redirect-guard`,async onAuthenticate(e){await xyt(e.documentName,{recentlyRemovedDocs:Yt,resolveFilePath:te,fileExists:G})}}),Ne.configuration.extensions.push({__kind:`doc-lineage-guard`,async onAuthenticate(e){let t=I5(e.token);uvt(e.documentName,t?.expectedDocLineageEpoch,{getLoadedDoc:e=>Ne.documents.get(e)})}}),Ne.configuration.extensions.push({__kind:`system-doc-broadcast-guard`,async beforeHandleMessage(e){if(e.documentName!==`__system__`)return;let t=new $G(e.update);if(t.readVarString(),t.readVarUint()===uK.BroadcastStateless)throw Error(`inbound BroadcastStateless on ${ya} rejected — server-only channel`)}});let M=Put({declaredGitHubHosts:b,hocuspocus:Ne,durabilityState:O,ingressPolicy:t,sessionManager:Fe,commentDocHooksRef:Xt,contentDir:n,getGeneratedIndexSettingsStatus:Ut,setGeneratedIndexEnabled:Wt,contentFilter:De,serverInstanceId:ye,getFileIndex:()=>xn?xn.getFileIndex():new Map,getAttachmentFolderPath:ie,getAllFilesIndex:()=>xn?xn.getAllFilesIndex():new Map,getFileIndexGeneration:()=>xn?.getFileIndexGeneration()??0,mutateFileIndex:e=>{let t=e.kind===`update`?Lt(e.docName):void 0;switch(xn?.mutateFileIndex(e),e.kind){case`update`:lvt(t,e.content,e.docName)&&Nt(e.docName);break;case`create`:case`conflict`:Nt(e.docName);break;case`delete`:Ft(e.docName);break;case`rename`:Ft(e.oldDocName),Nt(e.newDocName);break;case`folder-create`:case`folder-delete`:Pt(e.relativePath);break;case`asset-create`:case`asset-delete`:case`file-create`:case`file-update`:case`file-delete`:break;default:rZ(e)}},getFolderIndex:()=>xn?xn.getFolderIndex():new Map,getAliasMap:()=>xn?xn.getAliasMap():new Map,getFolderAliasIndex:()=>xn?xn.getFolderAliasIndex():new Map,rescanFiles:()=>xn?.rescanFromDisk(),enableTestRoutes:d,shadowRef:ke,flushGitCommit:()=>je.flushPendingGitCommit(),flushContributors:()=>je.flushContributors(),getCurrentBranch:C,getReportedBranch:w,getDiskAckSVs:()=>E?.getLatestDiskAckSVsAsBase64()??{},getCollabClientCount:e.getCollabClientCount,contentRoot:p,derivedDocumentIndex:Oe,signalChannel:at,agentFocusBroadcaster:Ve,agentPresenceBroadcaster:He,onAgentWrite:e.onAgentWrite,getSyncEngine:()=>Sn,conflicts:P,setBatchInProgress:ne,localOpCliArgs:h,authStreamHeartbeatMs:g,projectDir:r,resolveEmbed:Te,getBridgeLossReporter:()=>Re,getPrincipal:()=>qe,agentIntegrations:e.agentIntegrations,acpRegistry:xe,loadAcpCustomAgents:()=>nq(be,q(`acp-registry`)),homeDirOverride:u,forceUnloadDocument:Ze,ready:tt,recentlyRemovedDocs:Yt,serializeDoc:an,evictManagedArtifactLkg:e=>{je.managedArtifactCtx.lkgCache.delete(e)},semanticSearch:Ke,getSemanticSimilarityFloor:()=>le().similarityFloor,getLinterBaseConfig:()=>se(),getLinkAdvisoryPolicy:ce,getProjectConfigEpoch:()=>ge,getLinkPreviewsEnabled:ue,resolveGitHubToken:Hst(e.detectGh,e.tokenStore),getConfigDiagnostics:de,embeddingsSecretsFile:Q9e(u),readSemanticProviderConfig:le,ephemeral:y,onReferencedAssetsCacheInvalidator:e=>{Ue=e}});Ne.configuration.extensions.push(M),Ie=M.nativeApi,Le=M.localApi;let N=GC({absPath:ZC(`project`,r),sideline:!1,warn:e=>x.warn({message:e},`[config] could not read project config for bridge guards`)}),re=N.value.bridge.deferGuard.enabled,ae=N.value.bridge.fixedPoint.enabled,oe=N.value.bridge.preDrain.enabled;Me=N.value.lossCapture.enabled?new pUe({projectDir:r,maxBytes:N.value.lossCapture.maxBytes}):void 0,N.value.bridge.lossDetector.enabled&&(Re=aKe({shadow:()=>ke.current,ring:Me,getBranch:()=>C()??`main`,contentRoot:p??``}),Fe.attachBridgeLossReporter(Re)),Ne.configuration.extensions.push(Dyt({mdManager:ba,schema:$i,shadowRef:ke,contentRoot:p,getCurrentBranch:C,resolveEmbed:Te,resolveSize:Ee,deferGuardEnabled:re,lossDetectorEnabled:N.value.bridge.lossDetector.enabled,fixedPointBackstopEnabled:ae,preDrainEnabled:oe,lossRing:Me})),Ne.configuration.extensions.push(zbt()),Ne.configuration.extensions.push({async afterLoadDocument({document:e}){hYe(e,P)}})}catch(e){for(let e of Xe.splice(0))e();throw We?.dispose(),We=null,O3(be),e}let en=null,tn=new Map,nn=[];function rn(e,t){let n=W(e,`rescue`),r=uY(t),i=W(n,r);return BY(i,n)?i:null}function an(e){let t=Ne.documents.get(e);return t?q1(t):null}let on=(e,t)=>H1(O,Ne,e,t,Te,Ee,Re),sn=e=>{if(!e)return;let t=`[[${e}]]`;for(let[n]of Ne.documents){if(vY(n))continue;let r=Ne.documents.get(n);if(!r)continue;let i=r.getText(`source`).toString();if(i.includes(t))try{r.transact(()=>{B1(r,i,Te,n)},z1)}catch(t){x.error({originalError:$2e(t),docName:n,assetBasename:e},`[asset-event] failed to re-render ${n} for asset basename ${e}`)}}},cn=null,ln=e=>{e&&(cn===null&&(cn=new Set,setImmediate(()=>{let e=cn;if(cn=null,e)try{for(let t of e)sn(t)}catch(t){x.error({err:t,basenames:[...e]},`[asset-event] dedup rerender pass crashed`)}})),cn.add(e))};function un(e){switch(e.kind){case`rename`:return e.newDocName;case`asset-create`:case`asset-delete`:case`folder-create`:case`folder-delete`:case`file-create`:case`file-update`:case`file-delete`:return e.relativePath;case`create`:case`update`:case`delete`:case`conflict`:return e.docName;default:return rZ(e)}}let dn={delete:`external-change-rescue`,rename:`external-change-rescue`,"branch-switch":`external-change-rescue`,"disk-update":`external-change-rescue-disk-update`},fn=(e,t,n,r,i=``,a=!1)=>{if(!ke.current){let t=a?r===`delete`?` — the delete that follows destroys the document content`:` — the overwrite that follows replaces the document content`:``;return x.warn({docName:e,site:r},`[reconcile] rescue checkpoint not minted for ${e} (${r}) — shadow repo unavailable${t}`),gJ(),!1}let o=ke.current;return queueMicrotask(()=>{XJ(o,p??``,{kind:dn[r],docName:e,contents:t,label:`External change recovered @ ${new Date().toISOString()}`,branch:n,metadata:{incomingDiskSha:i}}).then(()=>{WUe(),x.info({docName:e,site:r},`[reconcile] rescue checkpoint saved (${r}): ${e}`)}).catch(t=>{GUe();let n=a?r===`delete`?` — the delete that follows destroys the document content`:` — the overwrite that follows replaces the document content`:``;x.error({docName:e,site:r,err:t},`[reconcile] rescue checkpoint write failed (${r}): ${e}${n}`)})}),!0},pn=(e,t,n,r=!1)=>{let i=A(e),a=an(e)??``,o=i===void 0?a!==``:a!==i;return o&&(fn(e,a,t,n,``,r),o)};function mn(e){P.dissolveReconcile(e),P.dissolveWorkingTree(P.fileOf(e))}let hn=(e,t,n,r)=>{(t.kind===`merged`||t.kind===`conflicts`)&&t.dedupSkipped&&(LUe(),x.warn({docName:e,oursLen:n.length,theirsLen:r.length,newLen:t.newContent.length},`[reconcile] ${e} insert-group dedup skipped (LCS cell cap); union emitted with possible same-block duplication`))},gn=async(e,t,n)=>{YWe();let r=an(e)??``,i=C()??`main`,a=tZ(t).slice(0,6),o=r!==``&&r!==t,s=o?wn(e,`disk-authoritative-ingest`):`not-needed`;o&&fn(e,r,i,`disk-update`,a,!0);let c=tZ(r).slice(0,6),l=n?`absent`:`blockless`,u=!1;try{on(e,t),mn(e),u=!0}catch(o){XWe(),x.error({err:o,docName:e},`[reconcile] failed to apply disk-authoritative ingest to Y.Doc for ${e}`),j(e,t),fn(e,t,i,`disk-update`,a,!0),mn(e);let u;try{u=an(e)??void 0}catch(t){x.error({err:t,docName:e},`[reconcile] unable to read ${e} back after a failed disk-authoritative ingest; treating the live content as lost`)}s===`lost`&&u!==r&&(ZWe(),x.warn({docName:e,baseAbsent:n,reason:`no-base`,ours:c,theirs:a,result:`clean-unrescued`,rescue:s,applyFailed:!0},`[reconcile] ${e} base=${l} reason=no-base result=clean-unrescued ours=${c} theirs=${a} rescue=${s} applyFailed=true`))}if(u){let r=s===`lost`?`clean-unrescued`:`clean`;s===`lost`&&ZWe(),(s===`lost`?x.warn.bind(x):x.info.bind(x))({docName:e,baseAbsent:n,reason:`no-base`,ours:c,theirs:a,result:r,rescue:s},`[reconcile] ${e} base=${l} reason=no-base result=${r} ours=${c} theirs=${a} rescue=${s}`),await Oe.recordDiskUpsert(e,t)}};async function _n(e){try{switch(e.kind){case`create`:x.info({docName:e.docName},`[reconcile] create: ${e.docName}`),await Oe.recordDiskUpsert(e.docName,e.content),at(`files`),Nt(e.docName),$t(e.docName);break;case`update`:{let{docName:t,content:n}=e;if(lvt(e.previousIndexedFields,n,t)&&Nt(t),P.findByDocName(t)?.kind===`merge-native`)try{await P.pruneMergeNativeAgainstGit()}catch(e){x.warn({err:e,docName:t},`[reconcile] conflict prune against git failed`)}let r=Ne.documents.get(t);if(!r){G1(O,void 0,t,n,P),await Oe.recordDiskUpsert(t,n);return}let i=A(t),a=an(t)??i??``;if(G1(O,r,t,n,P,a)){await Oe.recordDiskUpsert(t,n);return}if(i===void 0){await gn(t,n,!0);break}let o=uX({docName:t,base:i,ours:a,theirs:n}),s=tZ(i).slice(0,6),c=tZ(a).slice(0,6),l=tZ(n).slice(0,6),u=a.length,d=n.length,f=o.kind===`clean`||o.kind===`merged`||o.kind===`conflicts`?o.newContent.length:void 0,p=f===void 0?void 0:f-Math.max(u,d),m=f===void 0?``:` newLen=${f} delta=${p}`;switch(x.info({docName:t,base:s,ours:c,theirs:l,result:o.kind,oursLen:u,theirsLen:d,...f===void 0?{}:{newLen:f,delta:p}},`[reconcile] ${t} base=${s} ours=${c} theirs=${l} result=${o.kind} oursLen=${u} theirsLen=${d}${m}`),hn(t,o,a,n),o.kind){case`noop`:P.dissolveReconcile(t),await Oe.recordDiskUpsert(t,n);break;case`clean`:{let e=!1;try{on(t,o.newContent),j(t,o.newContent),mJ(),P.dissolveReconcile(t),e=!0}catch(e){x.error({err:e,docName:t},`[reconcile] failed to apply clean content to Y.Doc for ${t}`),j(t,n),P.dissolveReconcile(t)}e&&await Oe.recordDiskUpsert(t,n)}break;case`merged`:{let e=!1;try{on(t,o.newContent),j(t,n),mJ(),P.dissolveReconcile(t),e=!0}catch(e){x.error({err:e,docName:t},`[reconcile] failed to apply merged content to Y.Doc for ${t}`),j(t,n),P.dissolveReconcile(t)}e&&await Oe.recordDiskUpsert(t,n)}break;case`conflicts`:{let e=!1;try{on(t,o.newContent),j(t,o.newContent),mJ(),hJ(),e=!0}catch(e){x.error({err:e,docName:t},`[reconcile] failed to apply conflict content to Y.Doc for ${t}`),j(t,n)}P.raise({kind:`reconcile`,file:P.fileOf(t),reason:`merged-with-markers`,stages:{base:i,ours:a,theirs:n}}),e&&await Oe.recordDiskUpsert(t,n);break}case`refused`:if(o.reason===`no-base`){await gn(t,n,!1);break}hJ(),P.raise({kind:`reconcile`,file:P.fileOf(t),reason:t4e(o.reason),stages:{base:i,ours:a,theirs:n}})}break}case`delete`:{let{docName:t}=e;mn(t);let n=Ne.documents.get(t);if(!n){ee(t),await Oe.recordDiskDelete(t),at(`files`),Qt(t),Ft(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));return}let r=pn(t,C()??`main`,`delete`,!0);n.getMap(`lifecycle`).set(`status`,`deleted-upstream`),ee(t),await Oe.recordDiskDelete(t),x.info({docName:t,isDirty:r,source:`watcher-delete`},`[reconcile] delete: ${t} (dirty=${r})`),Ne.closeConnections(t),await Ze(n),at(`files`),Qt(t),Ft(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));break}case`rename`:{let{oldDocName:t,newDocName:n,content:r}=e;mn(t);let i=e=>{let t=e.getMap(`lifecycle`);t.set(`status`,`renamed`),t.set(`newPath`,n)},a=Ne.documents.get(t),o=a?pn(t,C()??`main`,`rename`):!1;a&&i(a),ee(t),je.forgetObservedFile(t),j(n,r),x.info({oldDocName:t,newDocName:n,isDirty:o},`[reconcile] rename: ${t} → ${n} (dirty=${o})`),at(`files`),$t(n),Zt(t,n);try{await Oe.recordDiskRename(t,n,r)}catch(e){x.error({oldDocName:t,newDocName:n,err:e},`[reconcile] rename: index update failed for ${t} → ${n}; completing client teardown anyway`)}let s=Ne.documents.get(t);s&&s!==a&&i(s);let c=Ne.documents.get(n);if(c&&c.getMap(`lifecycle`).get(`status`)===`renamed`){let e=c.getMap(`lifecycle`);e.delete(`status`),e.delete(`newPath`),on(n,r),x.info({newDocName:n},`[reconcile] rename: cleared stale renamed lifecycle on ${n}`)}await Fe.closeAllForDoc(t);let l=s?.getConnectionsCount()??0;Ne.closeConnections(t),l>0&&x.info({oldDocName:t,newDocName:n,closedConnections:l},`[reconcile] rename: closed ${l} connection(s) on ${t}`),console.info(JSON.stringify({event:`recently-removed-docs-populate`,from:t,to:n,kind:`renamed`,source:`watcher-rename`})),Ft(t),Nt(n);break}case`conflict`:{let{docName:t}=e;if(!Ne.documents.get(t))return;let n=A(t)??``,r=an(t);r===null?x.warn({docName:t},`[reconcile] case 'conflict': serializeDoc returned null for ${t}; reconciledBase snapshot skipped — post-resolution reconcile may degrade to 3-way merge`):j(t,r),P.raise({kind:`reconcile`,file:P.fileOf(t),reason:`disk-markers`,stages:{base:n,ours:r??n,theirs:e.content}}),x.info({docName:t},`[reconcile] conflict markers detected: ${t}`);break}case`asset-create`:Ce.add(e.relativePath),at(`files`),ln(fs(e.relativePath));break;case`asset-delete`:Ce.remove(e.relativePath),at(`files`),ln(fs(e.relativePath));break;case`folder-create`:case`folder-delete`:at(`files`),Pt(e.relativePath);break;case`file-create`:case`file-update`:await Oe.recordFileTargetUpsert(e.relativePath),Ue?.(),at(`files`);break;case`file-delete`:await Oe.recordFileTargetDelete(e.relativePath),Ue?.(),at(`files`);break;default:rZ(e)}}catch(t){let n=un(e);x.error({err:t,kind:e.kind,label:n},`[reconcile] failed to handle ${e.kind} for ${n}`)}}let vn=[];async function yn(e){if(N()){vn.push(e);return}await _n(e)}async function bn(){let e=vn.splice(0,vn.length);for(let t of e)await _n(t)}let xn=null,Sn=null,Cn=null,wn=(e,t)=>{let n=ke.current;if(!n)return x.warn({docName:e,context:t},`[rescue] shadow repo unavailable — cannot buffer ${e} (${t})`),gJ(),`lost`;try{let r=an(e);if(r===null)return x.warn({docName:e,context:t},`[rescue] skipping ${e} — document dropped from map mid-rescue (${t})`),gJ(),`lost`;let i=rn(n.gitDir,e);return i?(Yq(V(i),{recursive:!0}),qq(i,r,`utf-8`),WUe(),x.info({docName:e,context:t},`[rescue] rescue buffer saved (${t}): ${e}`),`rescued`):(x.warn({docName:e,gitDir:n.gitDir,context:t},`[rescue] path-traversal guard rejected docName: ${e} (${t})`),gJ(),`lost`)}catch(n){return x.error({err:n,docName:e,context:t},`[rescue] failed to write rescue buffer for ${e} (${t})`),gJ(),`lost`}};async function Tn(e){if(Ne.documents.size===0)return;let t=!1,n=new Promise(e=>{Ne.configuration.extensions.push({async afterUnloadDocument({instance:n}){!t&&n.getDocumentsCount()===0&&(t=!0,e())}})}),r=Array.from(Ne.documents.keys());Ne.closeConnections(),Ne.flushPendingStores();for(let e of Ne.documents.values())e.getConnectionsCount()===0&&Ne.unloadDocument(e).catch(t=>{console.warn(JSON.stringify({event:`ok-shutdown-unload-document-failed`,docName:e.name,reason:t instanceof Error?t.message:String(t)}))});let i=Date.now()+e;for(;Date.now()<i-250&&Array.from(Ne.documents.values()).some(e=>e.getConnectionsCount()===0&&!Qe(e));)await new Promise(e=>setTimeout(e,25));for(let e of O.getRefusedStoreDocNames()){if(vY(e))continue;let t=Ne.documents.get(e);if(!t||!Qe(t))continue;if(i-Date.now()<50){x.warn({docName:e},`[rescue] refused-store pass out of budget before ${e}; leaving it and any remaining refused docs to the flush timeout path`);break}if(wn(e,`refused-store-shutdown`)!==`rescued`){x.warn({docName:e},`[rescue] refused-store doc rescue failed; leaving ${e} to the flush timeout path`);continue}let n=!1,r=!1,a=Ze(t).then(()=>{n=!0}).catch(t=>{r=!0,n=!0,x.warn({docName:e,err:t},`[rescue] refused-store doc unload failed at shutdown: ${e}`)}),o=Math.max(i-Date.now(),50);if(await new Promise(e=>{let t=setTimeout(e,o);a.then(()=>{clearTimeout(t),e()})}),!n){x.warn({docName:e,unloadDeadline:o},`[rescue] refused-store doc unload did not finish before the flush deadline; leaving ${e} to the flush timeout path`),a.then(()=>{r||x.info({docName:e},`[rescue] refused-store doc unload completed after the flush deadline: ${e}`)});continue}r||x.info({docName:e},`[rescue] refused-store doc rescued and unloaded at shutdown: ${e}`)}let a,o=new Promise((n,o)=>{a=setTimeout(()=>{t=!0;let n=Array.from(Ne.documents.keys()),i=[],a=[];if(ke.current)for(let e of n)vY(e)||(wn(e,`flush-timeout`)===`rescued`?i.push(e):a.push(e));else{x.warn({stillLoadedCount:n.length},`[rescue] shadow repo unavailable at flush timeout — ${n.length} doc(s) will be lost: [${n.join(`, `)}]`);for(let e of n)vY(e)||(a.push(e),gJ())}let s=i.length>0||a.length>0?` — rescued [${i.join(`, `)}]${a.length>0?`, lost [${a.join(`, `)}]`:``}`:``;o(Error(`flushAllStoresAndWait timeout after ${e}ms — ${n.length}/${r.length} docs did not unload: [${n.join(`, `)}]${s}`))},Math.max(i-Date.now(),250))});try{await Promise.race([n,o])}finally{a!==void 0&&clearTimeout(a)}}async function En(){return Cn||(Cn=(async()=>{let e=Date.now(),t=[];Ye=!0;try{await Mt()}catch(e){x.warn({err:e},`[index] generated index shutdown drain failed`),t.push({phase:`generated-index-drain`,error:String(e)})}for(let e of Xe.splice(0))e();try{await We?.dispose()}catch(e){x.warn({err:e},`[server] staleness watchdog drain failed during destroy`)}We=null;try{k3(be)}catch(e){x.warn({err:e},`[server] failed to mark server.lock draining`)}Ae?.destroy();try{await At()}catch(e){x.warn({err:e},`[shadow-housekeeping] shutdown drain failed`),t.push({phase:`shadow-housekeeping-drain`,error:String(e)})}if(Kt!==null&&(clearTimeout(Kt),Kt=null),qt)try{Eyt(r,Yt.entries())}catch(e){x.warn({err:e},`[removed-docs-journal] failed to persist removal journal during shutdown`),t.push({phase:`removed-docs-journal-flush`,error:String(e)})}let n,i=await Promise.race([tt.then(()=>`completed`,e=>(x.debug({err:e},`[server] init incomplete during shutdown`),`failed`)),new Promise(e=>{n=setTimeout(()=>e(`timeout`),5e3)})]);n!==void 0&&clearTimeout(n),i===`timeout`&&x.warn({},`[server] init did not complete within 5s during shutdown`);let a=Ne.documents.size;try{try{try{ze&&=(clearTimeout(ze),null),Be&&=(clearTimeout(Be),null),S&&=(await S.unsubscribe(),null),xn&&=(await xn.unsubscribe(),null);for(let{docName:e,cleanup:t}of nn)try{await t()}catch(t){x.warn({err:t,docName:e},`[server] failed to stop config-file-watcher for ${e}`)}nn.length=0}catch(e){t.push({phase:`watcher-unsubscribe`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-1 watcher unsubscribe failed`)}try{E?.destroy(),He?.destroy(),en&&=(await en.disconnect(),null);for(let[e,t]of tn)try{await t.disconnect()}catch(t){x.warn({err:t,docName:e},`[server] failed to disconnect ${e} during shutdown`)}tn.clear()}catch(e){t.push({phase:`cc1-teardown`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-1b CC1 teardown failed`)}try{await Fe.closeAll()}catch(e){t.push({phase:`agent-session-drain`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-2 agent session drain failed`)}try{await BYe()}catch(e){t.push({phase:`parse-pool-teardown`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-2b parse pool teardown failed`)}try{await Tn(m)}catch(e){t.push({phase:`flush-all-stores`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-3 flush failed`)}Oe.close();let e;try{await Promise.race([(async()=>{await je.flushPendingGitCommit(),await je.waitForPendingCommits()})(),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`L2 git flush timeout`)),m)})])}catch(e){t.push({phase:`git-commit-flush`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-4 git commit flush failed`)}finally{e!==void 0&&clearTimeout(e)}try{Sn&&=(await Sn.destroy(),null)}catch(e){t.push({phase:`sync-engine-stop`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown sync-engine-stop failed`)}}finally{if(ke.current){let e;try{await Promise.race([AJ(ke.current).drain(),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`shadow mutator drain timeout`)),m)})])}catch(e){t.push({phase:`shadow-mutator-drain`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-5 shadow mutator drain failed`)}finally{e!==void 0&&clearTimeout(e)}try{let e=(await GP({baseDir:r,timeout:{block:5e3}}).revparse(`HEAD`)).trim();e&&Us(W(ke.current.gitDir,`last-known-head`),e,`utf-8`)}catch{}try{PGe(ke.current)}catch(e){t.push({phase:`shadow-repo-release`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-5 destroyShadowRepo failed`)}}let n=Date.now()-e;t.length===0?x.info({documentCount:a,durationMs:n},`[server] shutdown flushed ${a} documents in ${n}ms`):x.warn({documentCount:a,durationMs:n,phaseErrors:t},`[server] shutdown flushed ${a} documents in ${n}ms with ${t.length} phase error(s)`)}}finally{try{O3(be,{deferUnlinkToExit:!0})}catch(e){t.push({phase:`server-lock-release`,error:e instanceof Error?e.message:String(e)}),x.error({err:e},`[server] shutdown phase-6 releaseServerLock failed`)}try{await Cq()}catch(e){t.push({phase:`telemetry-shutdown`,error:e instanceof Error?e.message:String(e)})}}})(),Cn)}let Dn=[];async function On(){try{qe=await gyt(r),x.info({principalId:qe.id},`[server] principal loaded`)}catch(e){x.warn({err:e},`[server] principal load failed — browser writes will use SERVICE_WRITER`)}if(!ke.current)try{ke.current=await zJ(r,{deferGcConfig:!0}),x.info({gitDir:ke.current.gitDir},`[server] history repo initialized at ${ke.current.gitDir}`),AGe(ke.current)&&!Dn.includes(`shadow-excludes`)&&Dn.push(`shadow-excludes`)}catch(e){x.error({err:e},`[server] history repo init failed`),Dn.push(`shadow-repo`)}if(ke.current)try{let e=j4e(ke.current.gitDir);G4e(ke.current.gitDir,e),P4e(ke.current.gitDir,e),Et=e,x.info({entries:e.byTo.size},`[server] rename log loaded (${e.byTo.size} entries)`)}catch(e){x.warn({err:e},`[rename-log] boot-time load/sweep failed; rename history unavailable`)}if(ke.current)try{await LJ(ke.current).raw(`rev-parse`,`--git-dir`)}catch(e){let t=e instanceof Error?e.message:String(e);if(t.includes(`not a git repository`)||t.includes(`invalid object`)){x.warn({},`[server] history repo appears corrupted — reinitializing`);try{ke.current=await zJ(r,{deferGcConfig:!0}),AGe(ke.current)&&!Dn.includes(`shadow-excludes`)&&Dn.push(`shadow-excludes`)}catch(e){x.error({err:e},`[server] history repo reinit failed`),ke.current=void 0,Dn.includes(`shadow-repo`)||Dn.push(`shadow-repo`)}}else x.error({err:e},`[server] history repo check failed (transient?)`)}if(ke.current&&Cn===null){let e=ke.current,t=zY(U(r,n))||`.`;Be=setTimeout(()=>{Be=null,HJ(e,t).catch(e=>{x.debug({err:e},`[shadow] fan-out index warm-up failed (non-fatal)`)})},3e3),Be.unref?.()}if(ke.current)try{let e=W(ke.current.gitDir,`last-known-head`),t=null;try{t=K(e,`utf-8`).trim()||null}catch{}let n=null;try{n=(await GP({baseDir:r,timeout:{block:1e4}}).revparse(`HEAD`)).trim()||null}catch{}if(n!==null){if(n!==t){let e=`main`;try{let t=(await GP({baseDir:r,timeout:{block:1e4}}).raw(`rev-parse`,`--abbrev-ref`,`HEAD`)).trim();t&&t!==`HEAD`&&(e=t)}catch{}x.info({lastKnownHead:t,currentHead:n,branch:e},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${n}, action=import`);try{await qJ(ke.current,p??``,t,n,e),VUe()}catch(e){x.warn({err:e},`[head-drift] commitUpstreamImport failed — continuing`)}}else x.info({currentHead:n},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${n}, action=noop`);try{Us(e,n,`utf-8`)}catch(e){x.warn({err:e},`[head-drift] failed to write last-known-head`)}}}catch(e){x.warn({err:e},`[head-drift] check failed — continuing`)}try{let e=Nlt(n,r);if(e.recovered&&e.journal){let t=e.journal.version===2?e.journal.fromPath:e.journal.sourceDocName,n=e.journal.version===2?e.journal.toPath:e.journal.destinationDocName;x.warn({journalVersion:e.journal.version,fromPath:t,toPath:n,restoredDocNames:e.restoredDocNames},`[managed-rename] recovered pending rename ${t} -> ${n}`)}}catch(e){x.error({err:e},`[server] managed rename recovery failed`),Dn.push(`managed-rename-recovery`)}try{let e=dtt(r);(e.deleted>0||e.errors>0)&&x.info({scanned:e.scanned,deleted:e.deleted,errors:e.errors},`[upload-tempfile-sweep] swept ${e.deleted} orphan tempfile(s)`)}catch(e){x.error({err:e},`[server] upload-tempfile sweep failed`),Dn.push(`upload-tempfile-sweep`)}try{en=await Ne.openDirectConnection(ya),E?.emitServerInfo(ye,w()??void 0)}catch(e){x.error({err:e},`[server] failed to open __system__ direct connection — CC1 push disabled`),Dn.push(`cc1-push`)}let t=y?[]:fa;for(let e of t)try{let t=await Ne.openDirectConnection(e);tn.set(e,t)}catch(t){x.error({err:t,docName:e},`[server] failed to open ${e} direct connection — config bind degraded`),Dn.push(`config-doc:${e}`)}let i=new Map([[Jr,ZC(`project`,r)],[Eee,ZC(`project-local`,r)],[Qr,ZC(`user`,r,u)]]);for(let e of t){let t=i.get(e);if(t)try{x.info({docName:e,path:t},`[config-file-watcher] starting`);let n=await i_t(t,t=>{let n=Ne.documents.get(e),r=y_t(e,t,je.configPersistenceCtx);x.info({docName:e,hasDocument:n!==void 0,contentLength:t.length},`[config-file-watcher] file changed`);let i=W7(n??null,e,t,je.configPersistenceCtx);x.info({docName:e,outcome:i,isEcho:r},`[config-file-watcher] applyExternalConfigChange outcome`),_e(e),r||fe(e)});nn.push({docName:e,cleanup:n}),x.info({docName:e,path:t},`[config-file-watcher] started`)}catch(n){x.warn({err:n,docName:e,path:t},`[config-file-watcher] failed to start for ${e}`),Dn.push(`config-file-watcher:${e}`)}}if(!y){let e=null,t=t=>{e!==null&&clearTimeout(e),e=setTimeout(()=>{e=null,Oe.refreshGlobalSkillNodes().catch(e=>{x.warn({err:e,docName:t},`[backlinks] global skill bundle re-ingest failed`)})},300)},n=(e,n)=>{let r=Srt(e,je.managedArtifactCtx);if(!r)return;let i=Drt(Ne.documents.get(r)??null,r,n,je.managedArtifactCtx);x.info({docName:r,outcome:i},`[managed-artifact-watcher] external change`),at(`files`),Pe(r)&&t(r)},r=e=>{let n=Srt(e,je.managedArtifactCtx);at(`files`),n&&Pe(n)&&t(n)};try{let e=vrt(je.managedArtifactCtx),t=await qvt(e,n,r);nn.push({docName:`__skill-files__`,cleanup:t}),x.info({roots:e},`[managed-artifact-watcher] skills started`)}catch(e){x.warn({err:e},`[managed-artifact-watcher] skills failed to start`),Dn.push(`managed-artifact-watcher:skills`)}try{let e=W(H6(je.managedArtifactCtx),`.ok`,`skill-state.yml`),t=await i_t(e,()=>{at(`files`)});nn.push({docName:`__skill-state__`,cleanup:t}),x.info({path:e},`[skill-state-watcher] started`)}catch(e){x.warn({err:e},`[skill-state-watcher] failed to start`),Dn.push(`skill-state-watcher`)}}try{let e=W(n,`.okignore`),t=W(r,`.gitignore`),i=null;try{let e=us(`git`,[`rev-parse`,`--git-common-dir`],LY({cwd:r,encoding:`utf-8`,timeout:5e3}));if(e.status===0&&e.stdout){let t=W(r,e.stdout.trim()),n=H(t,`info`,`exclude`);G(V(n))&&(i=n)}}catch{}let a=i?[e,t,i]:[e,t],o=x;o.info({okignorePath:e,gitignorePath:t,gitInfoExcludePath:i,ephemeral:y},`[ignore-watcher] starting multi-path watcher for .okignore + .gitignore (+ .git/info/exclude when present)`);let s=y?null:await a_t(a,(t,n)=>{(async()=>{if(t===e)try{let e=W7(Ne.documents.get(`__config__/okignore`)??null,kt,n,je.configPersistenceCtx);o.info({docName:kt,outcome:e},`[ignore-watcher] applyExternalConfigChange outcome`)}catch(e){o.error({err:e,changedPath:U(r,t)},`[ignore-watcher] applyExternalConfigChange failed; rebuild proceeds independently`)}let i=await De.rebuildIgnorePatterns();if(i.ok)o.info({changedPath:U(r,t),patternCount:i.patternCount,nestedFileCount:i.nestedFileCount,durationMs:i.durationMs},`[ignore-watcher] rebuild succeeded — broadcasting files channel`),E?.signal(`files`);else{let e=U(r,t)||`.`;o.warn({changedPath:e,error:i.error.message},`[ignore-watcher] rebuild failed — emitting config-ignore-nested-error`),E?.emitConfigIgnoreNestedError(e,i.error.message)}})().catch(e=>{o.error({err:e,changedPath:U(r,t)||`.`},`[ignore-watcher] handler threw`)})});s&&(nn.push({docName:`__ignore-files__`,cleanup:s}),o.info({okignorePath:e,gitignorePath:t},`[ignore-watcher] multi-path watcher started`))}catch(e){x.warn({err:e,projectDir:r,contentDir:n},`[ignore-watcher] failed to start multi-path watcher`),Dn.push(`ignore-files-watcher`)}let a=s9(r).branch??`main`;te(a),nt();let o=Oe.beginStartup(a),s=!1,c=performance.now();try{await Eq(`ok.boot.indexes`,void 0,async()=>{let{deletedDocNames:e,backlinkIndexDegraded:t}=await o.backlinksReady;t&&Dn.push(`backlink-index`);let i=0;for(let t of e)vY(t)||Yt.peek(t)?.kind!==`renamed`&&(Yt.setDeleted(t),i++);i>0&&x.info({count:i},`[removal-guard] tombstoned docs deleted while the server was down`);let a=performance.now(),c=/^\.(?!ok\/)[A-Za-z0-9_-]+\/skills\//,l=De?M2(n):new Set,d=e=>{e.some(e=>c.test(U(n,e).split(ys).join(`/`)))&&(ze&&clearTimeout(ze),ze=setTimeout(()=>{ze=null;try{G2(r,n).then(e=>{e>0&&(x.info({refreshed:e},`[in-place-skills] re-synced recorded copies`),E?.signal(`files`))}).catch(e=>x.warn({err:e},`[in-place-skills] copy re-sync failed`));let e=M2(n);if(!(e.size!==l.size||[...e].some(e=>!l.has(e))))return;l=e,De.rebuildIgnorePatterns().then(t=>{t.ok?(x.info({skillDirs:e.size},`[in-place-skills] canonical set changed — filter rebuilt`),E?.signal(`files`)):x.warn({error:t.error.message},`[in-place-skills] filter rebuild failed after skill re-scan`)}).catch(e=>x.warn({err:e},`[in-place-skills] rebuild threw`))}catch(e){x.warn({err:e},`[in-place-skills] re-scan trigger failed`)}},500))};xn=await Eq(`ok.boot.seed-walk`,void 0,async()=>dYe(n,yn,De,{onRawBatch:d})),G2(r,n).then(e=>{e>0&&x.info({refreshed:e},`[in-place-skills] boot copy re-sync`)}).catch(e=>x.warn({err:e},`[in-place-skills] boot copy re-sync failed`));{let e=u??Ks();G2(e,e,A2(e)).then(e=>{e>0&&x.info({refreshed:e},`[in-place-skills] global boot copy re-sync`)}).catch(e=>x.warn({err:e},`[in-place-skills] global copy re-sync failed`))}X4(`seedWalkMs`,Math.round(performance.now()-a));{let e=W(n),t=0;for(let[n]of Yt.entries()){if(!j5(n))continue;let r=W(e,`${n}${sY(n)}`);BY(r,e)&&G(r)&&(Yt.delete(n),t++)}t>0&&x.info({count:t},`[removal-guard] dropped journaled removal entries whose file re-appeared while the server was down`)}let f=await Oe.settleStartupAfterWatcherSeed();s=!0,f.tagIndexDegraded&&Dn.push(`tag-index`);let p=0;try{v===void 0?await P5({contentDir:n,contentFilter:De,basenameIndex:Ce,onSkip:(e,t,n)=>{p++,x.warn({reason:e,code:t,path:n},`[basename-index] skipped entry during seed (${e}${t?` ${t}`:``})`)}}):Iut({contentDir:n,basenameIndex:Ce,onSkip:(e,t,n)=>{p++,x.warn({reason:e,code:t,path:n},`[basename-index] skipped entry during single-file seed (${e}${t?` ${t}`:``})`)}}),p>0&&(x.warn({count:p},`[basename-index] startup seed completed with ${p} skipped entries — embeds under inaccessible subtrees will not resolve`),Dn.push(`basename-index-partial`))}catch(e){x.error({err:e},`[basename-index] startup seed failed`),Dn.push(`basename-index`)}})}catch(e){if(x.error({err:e},`[server] disk bridge watcher failed to start`),Dn.push(`file-watcher`),!s){let e=await Oe.settleStartupAfterWatcherSeed();s=!0,e.tagIndexDegraded&&Dn.push(`tag-index`)}}finally{X4(`indexesMs`,Math.round(performance.now()-c)),xn&&C9e(`fileCount`,xn.getFileIndex().size)}try{S=await hvt(r,async({trigger:e})=>{if(x.info({trigger:e},`[batch] begin trigger=${e}`),BUe(),Ne.flushPendingStores(),await je.flushPendingGitCommit(),M(!0),ke.current){let e=k(),t=s9(r).branch??e,n=[],i=0;for(let[e,t]of Ne.documents){if(vY(e))continue;let r=null;if(t.transact(()=>{r=an(e)},Vbt),r===null)continue;let a=A(e);if(a===void 0){i++;continue}n.push({docName:e,markdown:r,diskSnapshot:a})}if(i>0&&x.warn({count:i,branch:e},`[history] skipped parking ${i} doc(s) with no reconciled base; their content was not parked to the shadow history`),n.length>0)try{let r=await XGe(ke.current,e,GJ.id,n,t);r&&(qUe(),x.info({count:n.length,branch:e,sha:r.slice(0,8)},`[history] parked ${n.length} docs on ${e} → ${r.slice(0,8)}`))}catch(e){x.error({err:e},`[shadow] park failed`)}}},async e=>{let t=vn.length,i=e.newBranch??`main`;if(x.info({kind:e.batchKind,headMoved:e.headMoved,docs:t,timeout:!!e.timeout},`[batch] end kind=${e.batchKind} headMoved=${e.headMoved} docs=${t}${e.timeout?` timeout`:``}`),e.batchKind===`within-branch`){if(M(!1),await bn(),e.headMoved&&e.newHead){let t=Ubt(r,W(n),e.oldHead,e.newHead);if(t.size>0){H2e(t.keys());for(let[e,n]of t)L1(e,Ype(n.email),n.name,n.email,cme(e));await je.flushContributors()}}await je.flushDeferredStores(`within-branch`);try{await P.pruneMergeNativeAgainstGit()}catch(e){x.warn({err:e},`[head-watcher] conflict prune against git failed`)}}else{KUe(),vn.splice(0,vn.length);let t=!1,r;try{te(i),P.setBranch(i),re(),r=await Oe.beginBranchSwitch(i),De.rebuildDirCount();try{let e=0;Ce.clear(),await P5({contentDir:n,contentFilter:De,basenameIndex:Ce,onSkip:(t,n,r)=>{e++,x.warn({reason:t,code:n,path:r,branch:i},`[basename-index] skipped entry during branch-switch reseed (${t}${n?` ${n}`:``})`)}}),e>0&&(x.warn({count:e,branch:i},`[basename-index] branch-switch reseed completed with ${e} skipped entries — embeds under inaccessible subtrees will not resolve on this branch`),Dn.includes(`basename-index-partial`)||Dn.push(`basename-index-partial`))}catch(e){x.error({err:e,branch:i},`[basename-index] branch-switch reseed failed`)}for(let[e,t]of Ne.documents)if(!vY(e))try{let r=DX(e,n);if(!G(r)){pn(e,i,`branch-switch`),t.getMap(`lifecycle`).set(`status`,`deleted-upstream`),x.info({docName:e,branch:i},`[branch-switch] tombstone: ${e} (not on ${i})`);continue}let a=K(r,`utf-8`);if(A(e)===void 0){let t=an(e)??``;t!==``&&t!==a&&pn(e,i,`branch-switch`,!0)}on(e,a),j(e,a),x.info({docName:e},`[branch-switch] reset: ${e}`)}catch(t){x.error({err:t,docName:e},`[branch-switch] failed to reset ${e}`)}x.info({branch:i,docCount:Ne.documents.size},`[branch-switch] loaded branch ${i} (${Ne.documents.size} docs)`);try{await Oe.settleBranchFromDisk(r)}catch(e){Oe.abortBranchSwitch(r),x.error({err:e,branch:i},`[derived-index] branch-switch rebuild failed; relationship views may be stale`)}if(ke.current&&e.batchKind===`cross-branch`){let e=0;for(let[t]of Ne.documents)if(!vY(t))try{let n=await QGe(ke.current,i,GJ.id,t);if(!n||n.markdown===n.diskSnapshot)continue;let r=A(t);if(!r)continue;let a=uX({docName:t,base:n.diskSnapshot,ours:n.markdown,theirs:r});switch(hn(t,a,n.markdown,r),a.kind){case`merged`:case`clean`:on(t,a.newContent),j(t,a.newContent),e++;break;case`conflicts`:on(t,a.newContent),j(t,a.newContent),hJ(),e++,P.raise({kind:`reconcile`,file:P.fileOf(t),reason:`merged-with-markers`,stages:{base:n.diskSnapshot,ours:n.markdown,theirs:r}});break;case`noop`:break;case`refused`:switch(a.reason){case`conflict-markers`:case`no-base`:case`too-large`:x.warn({docName:t,reason:a.reason,branch:i},`[branch-switch] parked WIP not restored for ${t} (reconcile refused: ${a.reason})`);break;default:{let e=a.reason;x.warn({docName:t,reason:String(e),branch:i},`[branch-switch] parked WIP not restored for ${t} (reconcile refused: ${String(e)})`);break}}}}catch(e){x.error({err:e,docName:t},`[branch-switch] restore WIP failed for ${t}`)}e>0&&x.info({count:e,branch:i},`[branch-switch] restored ${e} parked docs on ${i}`)}if(e.oldBranch?.startsWith(`detached-`)&&ke.current)try{let t=LJ(ke.current),n=(await t.raw(`for-each-ref`,`refs/wip/${e.oldBranch}/`,`--format=%(refname)`)).trim();n&&(await AJ(ke.current).withMutator(async()=>{for(let e of n.split(`
2130
2130
  `))e&&await t.raw(`update-ref`,`-d`,e)}),x.info({context:e.oldBranch},`[branch-switch] cleaned up detached context ${e.oldBranch}`))}catch(e){x.error({err:e},`[branch-switch] detached cleanup failed`)}M(!1),await je.flushDeferredStores(`discard-stale`),t=!0,E?.emitBranchSwitched(i)}finally{Oe.abortBranchSwitch(r),t||(M(!1),await je.flushDeferredStores(`discard-stale`))}}if(e.headMoved&&e.newHead&&ke.current&&t>0){let t=p??`.`;try{let n=await qJ(ke.current,t,e.oldHead,e.newHead,i);VUe(),x.info({oldHead:e.oldHead?.slice(0,8)??`null`,newHead:e.newHead.slice(0,8),sha:n.slice(0,8)},`[history] upstream-import from ${e.oldHead?.slice(0,8)??`null`}..${e.newHead.slice(0,8)} → ${n.slice(0,8)}`)}catch(e){x.error({err:e},`[shadow] upstream-import failed`)}}})}catch(e){x.error({err:e},`[server] HEAD watcher failed to start`),Dn.push(`head-watcher`)}P.subscribe(e=>{if(e.type!==`raised`||e.conflict.kind===`reconcile`)return;let t=e.docName;if(t===null||!Ne.documents.get(t))return;let n=an(t);n===null?x.warn({docName:t,file:e.conflict.file},`[sync] content conflict: serializeDoc returned null; reconciledBase snapshot skipped`):j(t,n)});try{await P.pruneMergeNativeAgainstGit()}catch(e){x.warn({err:e},`[conflicts] boot prune of merge-native entries failed`)}let l=B6(r,b);x.debug({resetAmbientCredentials:l,originKind:z6(r,b).kind},`[sync] ambient credential-chain reset decision at boot`);let d=V4(h,{resetAmbient:l}),f=ae(),m=oe();f.mode!==`off`&&x.info({mode:f.mode,source:f.source},`[sync] mode active at boot`);try{Sn=new Lbt({declaredGitHubHosts:b,projectDir:r,contentDir:n,contentFilter:De,contentRoot:p,mcpTomlEditor:e.mcpTomlEditor,mode:f.mode,pullIntervalSeconds:e.pullIntervalSeconds??m.pullIntervalSeconds,pushIntervalSeconds:e.pushIntervalSeconds??m.pushIntervalSeconds,credentialConfig:d,cc1Broadcaster:E,conflicts:P,detectGh:e.detectGh,detectGhAccounts:e.detectGhAccounts,tokenStore:e.tokenStore,checkPushPermissionFn:e.checkPushPermissionFn,setBatchInProgress:ne,onStateChange:e=>{x.info({state:e},`[sync] state → ${e}`)},checkpointBeforeStrandedConversion:async({branch:e,ahead:t})=>{let n=ke.current;n&&await YJ(n,p??``,{action:`pull-only-stranded-conversion`,context:{ahead:t}},e)},checkpointBeforeOverlayRestore:async({branch:e,paths:t})=>{let n=ke.current;n&&await YJ(n,p??``,{action:`pull-only-overlay-restore`,context:{paths:t}},e)},onAutoDisable:async e=>{x.warn({reason:e},`[sync] auto-disabled — persisting to project-local config`);let t=await $C({cwd:r,scope:`project-local`,patch:{autoSync:{enabled:!1}}});t.ok||x.error({result:t,reason:e,humanError:Pte(t.error),configPath:ZC(`project-local`,r)},`[sync] failed to persist auto-disable — next restart WILL re-enable sync and re-trigger the same failure. Check permissions on the config path.`)}}),await Sn.start()}catch(e){x.warn({err:e},`[server] SyncEngine failed to start — sync disabled`),Sn=null}at(`files`),Oe.announceReadyViews();let g=S9e();g!==void 0&&X4(`readyMs`,g),fe()}return On().then(()=>{lt=!0,$e(),St(),Ot()},e=>{ut=!0,dt.abort(),yt({status:`failed`,indexCount:0}),Oe.close(),nt(),et(e)}),{hocuspocus:Ne,durabilityState:O,sessionManager:Fe,nativeApi:Ie,localApi:Le,cc1Broadcaster:E,agentFocusBroadcaster:Ve,agentPresenceBroadcaster:He,maintenanceCoordinator:Ae,contentFilter:De,basenameIndex:Ce,serverInstanceId:ye,destroy:En,ready:tt,generatedIndexSweepReady:vt,degraded:Dn,lockDir:be,get syncEngine(){return Sn},conflicts:P,getLinkPreviewsEnabled:ue,resolveEmbed:Te,acpRegistry:xe,acpPermissions:Se}}function I9(e){return e/1048576}function Gbt(){let e=process.memoryUsage();return{schemaVersion:1,capturedAt:new Date().toISOString(),snapshot:{rssMb:I9(e.rss),heapTotalMb:I9(e.heapTotal),heapUsedMb:I9(e.heapUsed),externalMb:I9(e.external),arrayBuffersMb:I9(e.arrayBuffers)}}}let L9=null,R9=null,z9=null;const Kbt=1e6;let B9=null,V9=null;Sq(()=>{L9=null,R9=null,z9=null,B9?.disable(),B9=null,V9=null});function qbt(){if(L9)return;let e=Tq().createObservableGauge(`ok.server.memory.usage_megabytes`,{description:`Server process memory by section. Bounded labels: section ∈ {heap_used, heap_total, rss, external, array_buffers}.`,unit:`MB`});e.addCallback(e=>{let{snapshot:t}=Gbt();e.observe(t.heapUsedMb,{section:`heap_used`}),e.observe(t.heapTotalMb,{section:`heap_total`}),e.observe(t.rssMb,{section:`rss`}),e.observe(t.externalMb,{section:`external`}),e.observe(t.arrayBuffersMb,{section:`array_buffers`})}),L9=e}function Jbt(){if(!R9){let e=Tq().createObservableGauge(`ok.server.event_loop.delay_ms`,{description:`Event-loop delay percentiles over the last export window. Bounded labels: stat ∈ {p50, p99}.`,unit:`ms`});e.addCallback(e=>{if(!B9){B9=xae({resolution:20}),B9.enable();return}e.observe(B9.percentile(50)/Kbt,{stat:`p50`}),e.observe(B9.percentile(99)/Kbt,{stat:`p99`}),B9.reset()}),R9=e}if(!z9){let e=Tq().createObservableGauge(`ok.server.cpu.utilization`,{description:`Process CPU time as a fraction of wall time since the previous export. Bounded labels: mode ∈ {user, system}.`,unit:`1`});e.addCallback(e=>{let t=process.cpuUsage(),n=process.hrtime.bigint(),r=V9;if(V9={cpu:t,hrtimeNs:n},!r)return;let i=Number(n-r.hrtimeNs)/1e3;i<=0||(e.observe((t.user-r.cpu.user)/i,{mode:`user`}),e.observe((t.system-r.cpu.system)/i,{mode:`system`}))}),z9=e}}const Ybt=q(`skill-migrate`);function Xbt(e){return[{host:`agents`,root:Ye},...Object.entries(e).filter(e=>e[1]!==null).map(([e,t])=>({host:e,root:t}))].sort((e,t)=>{let n=bF.indexOf(e.host),r=bF.indexOf(t.host);return(n===-1?bF.length:n)-(r===-1?bF.length:r)||e.host.localeCompare(t.host)})}const Zbt=Xbt(Dt),Qbt=Xbt(qr);function $bt(e,t){return G(W(e,Bi(t)))}function ext(e,t){Yq(V(t),{recursive:!0});try{Xq(e,t)}catch(n){if(!(n instanceof Error)||n.code!==`EXDEV`)throw n;Zq(e,t,{recursive:!0}),tJ(e,{recursive:!0,force:!0})}}function txt(e,t,n){let r=t5e(e,t,n);switch(r.kind){case`absent`:return{kind:`absent`};case`other`:return{kind:`occupied`,by:`different`};case`symlink`:return r.resolution===`target`?{kind:`store-link`}:{kind:`occupied`,by:`foreign-link`};case`dir`:return r.identity===`different`?{kind:`occupied`,by:`different`}:{kind:`same-copy`}}}function nxt(e,t){let n;try{n=Ls(W(e,`.ok`,`skills`))}catch{n=W(e,`.ok`,`skills`)}return new Set(t.filter(t=>{try{return!Ls(W(e,t.dir)).startsWith(n+ys)}catch{return!0}}).map(e=>e.name))}async function rxt(e){let{projectDir:t,skillsRoot:n}=e,r=e.inPlaceNames??new Set,i=e.hostRoots??Zbt,a={migrated:[],skipped:[]};if(!G(n))return a;let o;try{o=Is(n)}catch{return a}let s=U(t,n).split(ys).join(`/`),c=new Set;for(let[e,n]of Object.entries(U2(t)))for(let t of n)t.path.split(`/`).slice(0,-1).join(`/`)===s&&c.add(e);for(let e of o)try{if(!pa.test(e)||RQ.has(e))continue;if(r.has(e)){a.skipped.push({name:e,reason:`placement-of-in-place`});continue}if(c.has(e)){a.skipped.push({name:e,reason:`recorded-placement`});continue}let o=W(n,e);if(!G(H(o,`SKILL.md`)))continue;let s=mF(o)?.contentHash;if(s===void 0)continue;let l=Ls(o),u=i.map(({host:n,root:r})=>{let i=W(t,r);return{host:n,root:r,path:H(i,e),escapes:$2(t,i),state:txt(H(i,e),l,s)}}).filter(e=>!e.escapes),d=u.find(e=>e.state.kind===`store-link`||e.state.kind===`same-copy`)??u.find(e=>$bt(t,e.root));if(!d){a.skipped.push({name:e,reason:`no-usable-target`});continue}if(d.state.kind===`occupied`){a.skipped.push({name:e,reason:`target-occupied:${d.root} (${d.state.by})`});continue}d.state.kind===`same-copy`?tJ(o,{recursive:!0,force:!0}):(d.state.kind===`store-link`&&tJ(d.path,{recursive:!0,force:!0}),ext(o,d.path));for(let e of u)e!==d&&e.state.kind===`store-link`&&(tJ(e.path,{recursive:!0,force:!0}),Zq(d.path,e.path,{recursive:!0}));await I2(t,e),a.migrated.push({name:e,to:`${d.root}/${e}`}),Ybt.info({skill:e,to:`${d.root}/${e}`},`migrated store skill in place`)}catch(t){a.skipped.push({name:e,reason:`error`}),Ybt.warn({err:t,skill:e},`store-skill migration skipped one entry after error`)}return a}let H9=null,U9=!1;function ixt(e=process.env){return e.OK_BRIDGE_TOLERANCE_TELEMETRY===`1`}function axt(e){if(!ixt())return;let t=kY(e);H9=new bC({currentPath:W(t,`tolerance-telemetry.jsonl`),previousPath:W(t,`tolerance-telemetry.prev.jsonl`),maxBytes:8388608}),rr(e=>{let t={event:`bridge-tolerance-fire`,timestamp:e.timestamp,class:e.className,document:e.documentName??null,codeUnitPosition:e.codeUnitPosition,severity:e.severity};H9?.append(`${JSON.stringify(t)}\n`).catch(e=>{U9||(U9=!0,q(`tolerance-telemetry`).warn({err:e instanceof Error?e:Error(String(e))},`append failed; further failures are silent`))})})}async function W9(){rr(null),await H9?.drain(),H9=null,U9=!1}function oxt(e){let t=W(e,ii);if(!(()=>{if(!G(t))return!0;try{return Is(t).length===0}catch{return!0}})())return[];let n=[];for(let t of di)G(W(e,t))&&n.push(t);for(let t of Da){let r=W(e,t);try{G(r)&&Vs(r).isDirectory()&&n.push(`${t}/`)}catch{}}return n}function sxt(e){let t=kC(e);switch(t.kind){case`directory`:return{kind:`main`,gitdir:t.path};case`linked`:return{kind:`linked`,gitdir:t.path};case`malformed-pointer`:return{kind:`linked`,gitdir:null};case`inaccessible`:case`absent`:return{kind:`main`,gitdir:null}}}const G9=Number(process.env.OK_DESTROY_STEP_TIMEOUT_MS)||5e3;async function cxt(e){x9e();let t=e.projectDir??e.contentDir,n=$ut({projectDir:t});if(n){let e=n.telemetry.attributeDenylist,t=[];for(let n of e){t.push(n);for(let e=1;e<=5;e++)t.push(`${`*.`.repeat(e)}${n}`)}wC.configure({pinoConfig:{fileSink:n.logs,redactPaths:t}})}xq({localSink:n?.telemetry}),axt(t),qbt(),Jbt();let{kind:r,gitdir:i}=sxt(e.projectDir??e.contentDir),a={"ok.worktree.kind":r};i!==null&&(a[`ok.worktree.gitdir`]=Rq(i));let o=qut(t),s=process.env.OK_STARTUP_TRACEPARENT,c=()=>Eq(`ok.boot`,{attributes:a},async()=>lxt(e)),l=()=>{if(s)try{let e=to.extract(Za.active(),{traceparent:s});return Za.with(e,c)}catch(e){q(`boot`).warn({err:e},`ok.boot trace-join failed — starting unparented boot`)}return c()},u;try{u=await l()}catch(e){throw o.uninstall(),e}let d=u.destroy;return u.destroy=async e=>{try{await d(e)}finally{o.uninstall()}},u}async function lxt(e){let t=e.skipAutoInit??!1,n=e.log??q(`boot`),r=e.serverRuntime??{...dt(e.config),allowExternal:!1},i=e.bind!==void 0&&e.bind.length>0?e.bind:[e.host??`127.0.0.1`];if((xt(r)||!Ze(i))&&!r.allowExternal)throw new d2e(`refusing to start: the server would bind a non-loopback address (${(Ze(i)?r.bind:i).join(`, `)}), which exposes this server beyond this machine. Consent with OK_ALLOW_EXTERNAL=1, or server.allowExternal: true in .ok/local/config.yml.`);let a=_1({serverRuntime:r});r.allowExternal&&!r.loopbackOnly&&r.externalUrl===void 0&&(a.bindLiterals.length===0?n.warn({bind:r.bind},`[ingress] server.allowExternal is set on a wildcard bind (0.0.0.0/::) with no server.externalUrl — external requests will be REFUSED (403 host-not-allowed) because no external Host name is admitted. Set server.externalUrl to the public origin clients dial (e.g. behind a reverse proxy or platform edge), or bind a specific address instead of a wildcard.`):n.info({bind:r.bind},`[ingress] server.allowExternal is set with no server.externalUrl — the bind-address literals are admitted as Host names (direct IP access). Set server.externalUrl to admit a hostname.`));let o=process.env.OK_LOCK_KIND===`mcp-spawned`||process.env.OK_LOCK_KIND===`interactive`?process.env.OK_LOCK_KIND:void 0,s=e.lockKind??o??`interactive`,{createServer:c}=await import(`node:http`),{markServerLockDraining:l,releaseServerLock:u,updateServerLockPort:d}=await Promise.resolve().then(()=>ket),f=!1;if(!t&&e.autoInitFn)try{f=!!await e.autoInitFn()}catch(e){n.warn({err:e},`autoInitFn failed`)}let p=e.projectDir??e.contentDir,m=W(p,`.ok`),h=W(m,`config.yml`);if(!G(h))throw new Jgt(G(m)?`config`:`okdir`,p);let g=W(m,`.gitignore`);G(g)||q(`boot`).warn({path:g},"Note: .ok/.gitignore is missing — per-machine state files in .ok/ may show up as untracked changes. Run `ok init` to add the recommended ignore entries.");let _=e.gitPreflight??KQ;try{e.gitEnabled!==!1&&_()}catch(e){if(e instanceof WQ||e instanceof GQ){let t=e instanceof GQ?e.detected:``,r=e instanceof GQ?`too_old`:`not_available`;u8(e),n.warn({event:`git_preflight_fail`,platform:e.platform,reason:r,detectedVersion:t},r===`not_available`?`git binary not found`:`git binary too old`),process.stderr.write(`${e.message}\n`)}throw await Cq(),await Promise.race([W9(),new Promise(e=>setTimeout(e,G9))]),e}let v=oxt(m);v.length>0&&q(`boot`).warn({files:v},`Found legacy runtime files at .ok/${v.join(`, `)}. Delete .ok/ and re-init — these files moved to .ok/${ii}/.`);let y=null,b=Wbt({getCollabClientCount:()=>y?.getCount()??0,acpRegistryFetchImpl:e.acpRegistryFetchImpl,contentDir:e.contentDir,projectDir:e.projectDir,ingressPolicy:a,contentRoot:e.contentRoot,port:e.port,host:e.host,quiet:e.quiet??!1,debounce:e.debounce,maxDebounce:e.maxDebounce,gitEnabled:e.gitEnabled,mcpTomlEditor:e.mcpTomlEditor,commitDebounceMs:e.commitDebounceMs,wipRef:e.wipRef,enableTestRoutes:e.enableTestRoutes,shadowRepo:e.shadowRepo,destroyTimeoutMs:e.destroyTimeoutMs,localOpCliArgs:e.localOpCliArgs,authStreamHeartbeatMs:e.authStreamHeartbeatMs,onAgentWrite:e.onAgentWrite,lockKind:s,capabilities:e.reactShellDistDir?[`http`,`ws`,`ui`]:[`http`,`ws`],skipStateManifestCheck:e.skipStateManifestCheck,detectGh:e.detectGh,detectGhAccounts:e.detectGhAccounts,tokenStore:e.tokenStore,agentIntegrations:e.agentIntegrations,embeddingsKeyStore:e.embeddingsKeyStore,singleDocRelPath:e.singleDocRelPath,ephemeral:e.ephemeral,configHomedirOverride:e.configHomedirOverride}),{hocuspocus:x,destroy:S,ready:C,degraded:w,lockDir:T,sessionManager:E,agentFocusBroadcaster:D,agentPresenceBroadcaster:O,maintenanceCoordinator:k}=b,A=(()=>{let t=e.host??`localhost`;return t===`0.0.0.0`||t===`::`?`localhost`:t.includes(`:`)&&!t.startsWith(`[`)?`[${t}]`:t})(),j=e.port??0,ee=()=>`http://${A}:${j}`,te=e.ephemeral?void 0:zgt({contentDir:e.contentDir,projectDir:e.projectDir??e.contentDir,config:e.config,getServerUrl:()=>ee(),localApi:b.localApi,log:n}),M=c();M.headersTimeout=3e4,M.requestTimeout=6e4;let ne=e.serveContentAssets===!1?void 0:Fut({contentFilter:b.contentFilter,contentSirv:BR(e.contentDir,{dev:!0,dotfiles:!1}),inlineExtensions:gee,assetExtensions:Tr,blocklistExtensions:cee,ingressPolicy:a}),N=e.reactShellDistDir?BR(e.reactShellDistDir,{single:!0,gzip:!0,etag:!0,dev:!0}):void 0,P=e.ephemeral?null:new w0e({contentDir:e.contentDir,localDir:T,globalDir:W(Ks(),`.ok`),registry:b.acpRegistry,permissions:b.acpPermissions,sessionManager:E,agentPresenceBroadcaster:O,resolveEmbed:b.resolveEmbed,isExcludedPath:e=>b.contentFilter.isExcluded(e),isIgnoredPath:e=>b.contentFilter.isPathIgnored(e),getLoadedDocText:e=>x.documents.get(e)?.getText(`source`).toString()??null,getServerUrl:()=>ee(),getMcpStdioCommand:()=>C0e(e.localOpCliArgs,j,{log:n}),probeHarnessManagedMcpEntry:e.probeHarnessManagedMcpEntry,probePiAcpBridge:e.probePiAcpBridge,ensurePiAcpBridge:e.ensurePiAcpBridge,terminalAuthAvailable:e.terminalAuthAvailable===!0,hostSnapshot:()=>r1({env:`local-web`,resolve:e.agentIntegrations?.probe}),autoApproveOkTools:()=>KHe(e.projectDir??e.contentDir,e.configHomedirOverride,n),agentBrowserTools:()=>KK(e.projectDir??e.contentDir,e.configHomedirOverride,n),log:n});P!==null&&await P.init();let re=`pending`;C.then(()=>{re=`ready`},()=>{re=`failed`});let ie=Kgt({httpServer:M,hocuspocus:x,nativeApi:b.nativeApi,mcpHttpHandler:te,ingressPolicy:a,health:{readiness:()=>re,degraded:()=>w},log:n,sessionManager:E,agentFocusBroadcaster:D,agentPresenceBroadcaster:O,maintenanceCoordinator:k,keepaliveGraceMs:e.keepaliveGraceMs,contentAssetMiddleware:ne,reactShellMiddleware:N,ephemeral:e.ephemeral,acpThreadManager:P}),ae=async()=>{throw Error(`bootServer: destroy() invoked before initialization — boot did not complete`)};y=R5(M);let oe=null;if(e.idleShutdownMs!==null){let t=e.idleShutdownMs??18e5,r=e.idleShutdownHandler??(e=>async()=>{await e()});oe=Jut({httpServer:M,counter:y,thresholdMs:t,log:n,onShutdown:r(async()=>{await ae(`idle-shutdown`)})})}let se=[...new Set(i)],ce=se[0],le=async()=>{await S().catch(e=>{n.warn({err:e},`destroyHocuspocus failed during listen-error cleanup`)}),u(T)},ue=(e,t,n)=>new Promise((r,i)=>{let a=e=>i(e);e.once(`error`,a),e.listen(t,n,()=>{e.removeListener(`error`,a),r()})});try{await ue(M,e.port??0,ce??`127.0.0.1`)}catch(e){throw await le(),e}let de=M.address(),fe=typeof de==`object`&&de?de.port:e.port??0,pe=[];for(let e of se.slice(1)){let t=c();t.headersTimeout=M.headersTimeout,t.requestTimeout=M.requestTimeout;for(let e of M.listeners(`request`))t.on(`request`,e);for(let e of M.listeners(`upgrade`))t.on(`upgrade`,e);try{await ue(t,fe,e)}catch(t){n.error({err:t,failedAddress:e,port:fe,alreadyBound:pe.length+1},`[boot] secondary address bind failed — unwinding all listeners`);for(let e of[...pe,M])e.closeAllConnections?.(),await new Promise(t=>{e.close(e=>{e&&n.warn({err:e},`[boot] listener close failed during unwind`),t()})});throw await le(),t}pe.push(t)}let me=S9e();me!==void 0&&X4(`httpListenMs`,me);let he=M.address(),ge=typeof he==`object`&&he?he.port:e.port??0;j=ge;let _e=ee();d(T,ge,_e),n.info({event:`server-listening`,pid:process.pid,port:ge,addresses:se,url:_e,lockDir:T},`[boot] listening on ${_e}`);let ve=!1,ye=async(e,t)=>{let n;try{await Promise.race([t(),new Promise((t,r)=>{n=setTimeout(()=>{r(Error(`${e} timed out after ${G9}ms`))},G9),n.unref?.()})])}finally{n!==void 0&&clearTimeout(n)}};ae=async(e=`unspecified`)=>{if(ve)return;ve=!0,n.info({reason:e,pid:process.pid,lockDir:T},`[server] shutdown initiated (${e})`),re=`draining`;let t=[],r=async(e,r)=>{try{await ye(e,r)}catch(r){t.push(r),n.warn({err:r,step:e},`bootServer destroy step failed`)}};try{l(T)}catch(e){n.warn({err:e,step:`markServerLockDraining`},`bootServer destroy step failed`)}try{y?.detach()}catch(e){n.warn({err:e,step:`collabClientCounter.detach`},`bootServer destroy step failed`)}try{oe?.detach()}catch(e){t.push(e),n.warn({err:e,step:`idleHandle.detach`},`bootServer destroy step failed`)}if(P!==null&&await r(`acpThreads.destroy`,()=>P.destroy()),await r(`secondaryListeners.close`,async()=>{for(let e of pe)e.closeAllConnections?.(),await new Promise(t=>{e.close(e=>{e&&n.warn({err:e},`[boot] secondary listener close failed during teardown`),t()})})}),await r(`mount.shutdown`,()=>ie.shutdown()),te!==void 0&&await r(`mcpHttpHandler.close`,()=>te.close()),await r(`mount.wss.close`,()=>new Promise((e,t)=>{ie.wss.close(n=>n?t(n):e())})),await r(`httpServer.closeAllConnections`,async()=>{M.closeAllConnections?.()}),await r(`httpServer.close`,()=>new Promise((e,t)=>{M.close(n=>n&&n.code!==`ERR_SERVER_NOT_RUNNING`?t(n):e())})),await r(`destroyHocuspocus`,()=>S()),await r(`shutdownTelemetry`,()=>Cq()),await r(`teardownToleranceTelemetry`,()=>W9()),await r(`flushLogFileSinks`,()=>wC.flushAllFileSinks()),t.length>0)throw AggregateError(t,`bootServer destroy completed with errors`)};try{let t=await rxt({projectDir:p,skillsRoot:W(e.contentDir,`.ok`,`skills`),inPlaceNames:nxt(e.contentDir,k2(e.contentDir))});t.migrated.length+t.skipped.length>0&&n.info?.({event:`store-skills-migrated-in-place`,migrated:t.migrated,skipped:t.skipped},`Migrated ${t.migrated.length} store skill(s) in place (${t.skipped.length} skipped).`)}catch(e){n.warn?.({err:e,event:`store-skill-migration-failed`},`Store-skill in-place migration failed (non-fatal).`)}try{let e=Ks(),t=await rxt({projectDir:e,skillsRoot:W(e,`.ok`,`skills`),hostRoots:Qbt,inPlaceNames:nxt(e,A2(e))});t.migrated.length+t.skipped.length>0&&n.info?.({event:`global-store-skills-migrated-in-place`,migrated:t.migrated,skipped:t.skipped},`Migrated ${t.migrated.length} global store skill(s) in place (${t.skipped.length} skipped).`)}catch(e){n.warn?.({err:e,event:`global-store-skill-migration-failed`},`Global store-skill in-place migration failed (non-fatal).`)}return{httpServer:M,destroy:ae,lockDir:T,contentDir:e.contentDir,port:ge,ready:C,generatedIndexSweepReady:b.generatedIndexSweepReady,degraded:w,didAutoInit:f,serverInstance:b,runtime:Ygt(b,{contentDir:e.contentDir,projectDir:p}),acpThreadManager:P}}const uxt=_;function dxt(e={}){let t=e.home??Ks(),n=e.platformName??process.platform,r=e.env??process.env;if(n===`darwin`)return G(H(t,`Library`,`Application Support`,`Claude`));if(n===`win32`){let e=r.APPDATA??H(t,`AppData`,`Roaming`);return G(H(e,`Claude`))}return!1}var K9=aC(Ufe(),1);const q9=H(Ks(),`.ok`,`logs`),fxt=[`authorization`,`password`,`token`,`apiKey`,`secret`,`*.authorization`,`*.password`,`*.token`,`*.apiKey`,`*.secret`];function pxt(){let e=process.env.OK_LOG_LEVEL??process.env.LOG_LEVEL;if(e){let t=[`fatal`,`error`,`warn`,`info`,`debug`],n=e.toLowerCase();if(t.includes(n))return n}return process.env.NODE_ENV===`test`?`silent`:`info`}function mxt(e){js(e,{recursive:!0})}function hxt(){return new Date().toISOString().slice(0,10)}function gxt(e){try{if(Vs(e).size<5242880)return}catch{return}for(let t=2;t>=1;t--){let n=t===1?e:`${e}.${t-1}`,r=`${e}.${t}`;try{Rs(n,r)}catch{}}try{Hs(`${e}.3`)}catch{}}function _xt(e){try{let t=Date.now(),n=6048e5,r=Is(e).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(t=>{try{let n=Vs(H(e,t));return{name:t,mtime:n.mtimeMs,size:n.size}}catch{return null}}).filter(Boolean);for(let i of r)if(t-i.mtime>n)try{Hs(H(e,i.name))}catch{}let i=r.filter(e=>t-e.mtime<=n).sort((e,t)=>e.mtime-t.mtime),a=i.reduce((e,t)=>e+t.size,0);for(let t of i){if(a<=47185920)break;try{Hs(H(e,t.name)),a-=t.size}catch{}}}catch{}}function vxt(e){mxt(q9);let t=hxt(),n=e.filePath??H(q9,`${e.name}.${t}.log`);gxt(n),(e._setTimeout??setTimeout)(()=>_xt(q9),5e3).unref();let r=K9.default.destination({dest:n,append:!0,sync:!0}),i=pxt();return(0,K9.default)({level:i,name:e.name,redact:{paths:fxt,censor:`[REDACTED]`},base:{pid:process.pid,hostname:void 0,runtime:`cli`,project:e.project??`<no-project>`},timestamp:K9.default.stdTimeFunctions.isoTime,...e.additionalOptions},r)}function yxt(e,t=250){return new Promise(n=>{if(!e){n();return}let r=e[K9.default.symbols.streamSym],i=!1,a=()=>{i||(i=!0,n())};if(!r||typeof r.flushSync!=`function`){a();return}let o=()=>{try{r.flushSync?.()}catch{}a()},s=setTimeout(a,t);typeof s.unref==`function`&&s.unref(),typeof r.fd==`number`&&r.fd>=0?(clearTimeout(s),o()):typeof r.once==`function`?r.once(`ready`,()=>{clearTimeout(s),o()}):(clearTimeout(s),o())})}function bxt(e){return H(q9,`${e}.${hxt()}.log`)}function xxt(){return q9}function Sxt(e){let t=W(e),n=0;for(;n<30;){let e=!1;try{e=G(W(t,`.git`))}catch{e=!1}if(e)return{gitRoot:t,distance:n};let r=V(t);if(r===t)return null;t=r,n+=1}return null}const J9=dc(ss),Y9=q(`project-git`);var X9=class extends Error{stderr;constructor(e,t=``,n){super(e,n),this.name=`ProjectGitInitError`,this.stderr=t}};async function Cxt(e,t){try{return await J9(e,[`var`,`GIT_COMMITTER_IDENT`],LY({cwd:t,encoding:`utf-8`})),!0}catch{return!1}}async function wxt(e,t){try{let{stdout:n}=await J9(e,[`for-each-ref`,`--count=1`,`refs/`],LY({cwd:t,encoding:`utf-8`}));return n.trim().length>0}catch(e){return Y9.warn({path:t,stderr:Ext(e)},`could not list refs — assuming history exists and skipping the initial commit`),!0}}function Txt(e){let t=W(e,`packed-refs`);if(G(t))try{if(K(t,`utf-8`).split(`
2131
2131
  `).some(e=>e.trim()!==``&&!e.startsWith(`#`)))return!0}catch{return!0}try{return Is(W(e,`refs/heads`)).length>0}catch{return!1}}function Ext(e){let t=typeof e==`object`&&e?e:null,n=t?.stderr;return n==null?String(t?.message??e):Buffer.isBuffer(n)?n.toString(`utf-8`):String(n)}async function Dxt(e,t){if(await wxt(e,t))return;let n=[`commit`,`--allow-empty`,`--no-verify`,`--no-gpg-sign`,`-m`,`Initial commit`],r=await Cxt(e,t),i=r?n:[`-c`,`user.name=Open Knowledge`,`-c`,`user.email=noreply@openknowledge.local`,...n];try{await J9(e,i,LY({cwd:t,encoding:`utf-8`})),r||Y9.info({path:t},`created initial commit with fallback identity (git identity unset)`)}catch(e){Y9.warn({path:t,stderr:Ext(e)},`could not create initial commit`)}}async function Oxt(e,t){try{let{stdout:n}=await J9(e,[`rev-parse`,`--is-inside-work-tree`],LY({cwd:t,encoding:`utf-8`}));return n.trim()===`true`}catch{return!1}}async function kxt(e){let t=W(e);uJ(t);let n=W(t,`.git`),r=W(n,`HEAD`),i=!1,a=!1;if(G(n)){if(!Vs(n).isDirectory())return{didInit:!1};if(G(r)){if(Txt(n))return{didInit:!1};a=!0}else Y9.info({},`detected partial .git/ — running git init to repair`),i=!0}let o;try{o=KQ()}catch(e){throw e instanceof WQ||e instanceof GQ?(u8(e),Y9.warn({event:`git_preflight_fail`,platform:e.platform,reason:e instanceof GQ?`too_old`:`not_available`,detectedVersion:e instanceof GQ?e.detected:``},e instanceof GQ?`git binary too old`:`git binary not found`)):Y9.warn({event:`git_preflight_unexpected_error`,err:e},`unexpected error during git preflight`),e}let s=o.resolvedPath;if(a)return await Dxt(s,t),{didInit:!1};if(!i&&await Oxt(s,t))return{didInit:!1};let c=``;try{c=(await J9(s,[`init`,`--initial-branch=main`,t],LY({encoding:`utf-8`}))).stderr??``}catch(e){let n=typeof e==`object`&&e&&`stderr`in e?String(e.stderr??``):``;throw new X9(`git init failed at ${t}: ${e instanceof Error?e.message:String(e)}`,n,{cause:e})}if(!G(r))throw new X9(`git init reported success but ${n}/HEAD is missing (partial init detected)`,c);return await Dxt(s,t),i?(Y9.info({path:t},`backfilled missing .git/HEAD`),{didInit:!0,repaired:!0}):(Y9.info({path:t,branch:`main`},`initialized .git/`),{didInit:!0})}async function Axt(e,t){let n;try{n=os(t).resolve(e)}catch(e){if(e?.code===`MODULE_NOT_FOUND`)return;throw e}for(let t=V(n),r=0;r<32;r+=1){let n=H(t,`package.json`);if(G(n))try{let t=JSON.parse(await ec(n,`utf-8`));if(t.name===e&&typeof t.version==`string`)return t.version}catch{}let r=V(t);if(r===t)return;t=r}}const jxt=[{regex:/\/Users\/[^/]+\//g,replacement:`~/`},{regex:/\/home\/[^/]+\//g,replacement:`~/`},{regex:/C:\\\\Users\\\\[^\\\\]+\\\\/g,replacement:`~\\`},{regex:/C:\\Users\\[^\\]+\\/g,replacement:`~\\`}];function Z9(e){if(e===void 0)return;let t=e;for(let{regex:e,replacement:n}of jxt)t=t.replace(e,n);return t}function Q9(e,t=0,n=new WeakSet){if(t>=5)return{name:`SerializedError.CauseDepthExceeded`,message:`cause chain depth > 5; truncated`};if(typeof e==`object`&&e){if(n.has(e))return{name:`SerializedError.CauseCycle`,message:`cyclic cause; truncated`};n.add(e)}if(e instanceof Error)return{name:e.name,message:Z9(e.message)??``,stack:Z9(e.stack),code:e.code,cause:e.cause===void 0?void 0:Q9(e.cause,t+1,n)};if(e==null)return{name:`UnknownError`,message:String(e)};if(typeof e==`string`)return{name:`StringError`,message:Z9(e)??e};if(typeof e==`object`){let r=e;return{name:String(r.name??`ObjectError`),message:Z9(String(r.message??``))??``,stack:Z9(r.stack),code:r.code,cause:r.cause===void 0?void 0:Q9(r.cause,t+1,n)}}return{name:`UnknownError`,message:String(e)}}var Mxt=class extends Error{filePath;constructor(e){super(`File not found: ${e}`),this.filePath=e,this.name=`SingleFileNotFoundError`}},Nxt=class extends Error{filePath;constructor(e){super(`Not a file: ${e}. \`ok <file>\` opens a single markdown file.`),this.filePath=e,this.name=`SingleFileNotAFileError`}},$9=class extends Error{projectRoot;constructor(e,t){super(`Cannot open with --project ${e}: ${t}`),this.projectRoot=e,this.name=`SingleFileProjectOverrideError`}},Pxt=class extends Error{filePath;constructor(e){super(`OpenKnowledge edits markdown files (.md / .mdx): ${e}`),this.filePath=e,this.name=`SingleFileNotMarkdownError`}};function Fxt(e,t={}){if(!tY(e))throw new Pxt(e);let n;try{n=Ls(W(e))}catch(t){throw t.code===`ENOENT`?new Mxt(e):t}if(!Vs(n).isFile())throw new Nxt(e);let r=V(n);if(t.projectRoot!==void 0){let e=W(t.projectRoot);if(!RY(e))throw new $9(e,`no .ok/config.yml there, so it is not an OpenKnowledge project root`);let r=Ixt(e),i=U(r,n);if(i.startsWith(`..`)||hs(i))throw new $9(e,`${n} is not inside that project's content directory`);return{mode:`project`,projectRoot:e,docName:rY(i.split(ys).join(`/`)),canonicalFilePath:n}}let i=PKe(r);if(i){let e=i.rootPath,t=Ixt(e);return{mode:`project`,projectRoot:e,docName:rY(U(t,n).split(ys).join(`/`)),canonicalFilePath:n}}let a=fs(n);return{mode:`ephemeral`,canonicalFilePath:n,contentDir:r,singleDocRelPath:a,docName:rY(a)}}function Ixt(e){let t=GC({absPath:ZC(`project`,e),sideline:!1,warn:()=>{}}).value.content?.dir??`.`;return W(e,t)}const Lxt=`ok-ephemeral-`;function Rxt(e,t){let n=W(e,`.ok`);return js(n,{recursive:!0}),Us(W(n,`config.yml`),`# Ephemeral single-file session (\`ok <file>\`). Throwaway — safe to delete.\ncontent:\n dir: ${JSON.stringify(t)}\n`,`utf-8`),Us(W(n,`.gitignore`),`local/
2132
- `,`utf-8`),e}function zxt(e){return Rxt(Ms(W(Ys(),Lxt)),e)}export{Ldt as $,Gq as $a,o2 as $i,WZe as $n,q as $o,fY as $r,s3 as $t,d2e as A,XJ as Aa,z6 as Ai,pyt as An,_I as Ao,o8e as Ar,Cet as At,F5 as B,O8 as Ba,Myt as Bi,c2 as Bn,GC as Bo,yY as Br,R5 as Bt,ZJ as C,pat as Ca,Fxt as Ci,tet as Cn,ZV as Co,bJ as Cr,x9 as Ct,I4 as D,YJ as Da,$0e as Di,Dvt as Dn,bB as Do,axt as Dr,hut as Dt,R4 as E,sut as Ea,KK as Ei,vxt as En,APe as Eo,xq as Er,mut as Et,xat as F,Q9 as Fa,s9 as Fi,wY as Fn,KF as Fo,kZ as Fr,Nyt as Ft,wvt as G,bKe as Ga,Z0 as Gi,Nft as Gn,$C as Go,b1 as Gr,DUe as Gt,SUe as H,dYe as Ha,c1 as Hi,i7e as Hn,ZC as Ho,p1 as Hr,hYe as Ht,WJ as I,Oq as Ia,aet as Ii,ret as In,GP as Io,zut as Ir,KQ as It,_Ze as J,sq as Ja,oZ as Ji,X as Jn,BC as Jo,v1 as Jr,C0e as Jt,d5 as K,U2e as Ka,o8 as Ki,r7 as Kn,NC as Ko,CQ as Kr,Wmt as Kt,WQ as L,aZe as La,E3 as Li,dxt as Ln,qC as Lo,CUe as Lr,rZ as Lt,UJ as M,Ddt as Ma,S3 as Mi,Wbt as Mn,gI as Mo,c2e as Mr,NQ as Mt,z1 as N,P5 as Na,Det as Ni,Dyt as Nn,fI as No,pY as Nr,H1 as Nt,U9e as O,L6 as Oa,q0e as Oi,zgt as On,CB as Oo,tdt as Or,gQe as Ot,c3 as P,Rxt as Pa,U5 as Pi,U0e as Pn,pI as Po,_dt as Pr,uot as Pt,qgt as Q,Yq as Qa,jUe as Qi,k0 as Qn,zpe as Qo,wZ as Qr,TZe as Qt,GQ as R,LJ as Ra,u1 as Ri,IZe as Rn,Gme as Ro,y1 as Rr,uJ as Rt,yYe as S,Tat as Sa,hot as Si,hqe as Sn,aZ as So,uGe as Sr,$9 as St,not as T,DX as Ta,mdt as Ti,e4e as Tn,aB as To,zJ as Tr,HQ as Tt,J0 as U,jY as Ua,uX as Ui,u8 as Un,XC as Uo,mY as Ur,cxt as Ut,Lut as V,lX as Va,K0e as Vi,Tdt as Vn,she as Vo,ydt as Vr,Jut as Vt,V5 as W,TK as Wa,L1 as Wi,n7 as Wn,qme as Wo,e$ as Wr,l8e as Wt,vZe as X,$q as Xa,O3 as Xi,kut as Xn,TC as Xo,RY as Xr,cot as Xt,tQe as Y,Jq as Ya,C3 as Yi,GJe as Yn,jC as Yo,EJ as Yr,PZe as Yt,FZe as Z,Kq as Za,CZ as Zi,fdt as Zn,CC as Zo,vY as Zr,HJ as Zt,cZe as _,W2e as _a,Vut as _i,d9 as _n,J0e as _o,wq as _r,_8 as _t,tq as a,j8 as aa,nq as ai,r1 as an,qq as ao,But as ar,Epe as as,X9 as at,Wot as b,bat as ba,Bgt as bi,Hgt as bn,S9 as bo,h1 as br,Mxt as bt,V0e as c,hbt as ca,b3 as ci,VGe as cn,x3 as co,JGe as cr,YQ as ct,Hut as d,y4 as da,net as di,x4 as dn,Cat as do,kY as dr,sot as dt,vGe as ea,ixt as ei,lJ as en,Xq as eo,Sxt as er,Bpe as es,Jgt as et,BQ as f,a7e as fa,k3 as fi,sX as fn,NZe as fo,bxt as fr,v8 as ft,mKe as g,o7 as ga,TUe as gi,Vvt as gn,Dq as go,_Ge as gr,g8 as gt,Y3e as h,Q0 as ha,hq as hi,u9 as hn,Eq as ho,Tq as hr,aQe as ht,JK as i,A8 as ia,aot as ii,x8 as in,Hq as io,p4e as ir,Tpe as is,h3 as it,YK as j,QJ as ja,o7e as ji,Edt as jn,hI as jo,s2e as jr,T3 as jt,Lxt as k,rQe as ka,R6 as ki,X0 as kn,BL as ko,ndt as kr,$Q as kt,IQ as l,drt as la,g3 as li,eQe as ln,Aet as lo,J5 as lr,GJ as lt,LQ as m,Axt as ma,Rq as mi,R1 as mn,LY as mo,p3 as mr,Oyt as mt,iq as n,UQ as na,xZ as ni,zq as nn,nJ as no,_4 as nr,SC as ns,NUe as nt,w0e as o,S4 as oa,gyt as oi,qJ as on,Bbt as oo,G2e as or,i6e as ot,VQ as p,b8 as pa,Kgt as pi,tZ as pn,jet as po,xxt as pr,y8 as pt,l0e as q,W9 as qa,Lgt as qi,kxt as qn,MC as qo,M8 as qr,_1 as qt,oZe as r,OY as ra,KGe as ri,iet as rn,Qq as ro,yxt as rr,Mpe as rs,wZe as rt,z0e as s,r3 as sa,D3 as si,BJ as sn,SZ as so,vot as sr,PUe as st,tUe as t,e8e as ta,DJ as ti,ZJe as tn,tJ as to,PKe as tr,wC as ts,SQ as tt,xZe as u,AY as ua,ort as ui,b4 as un,oq as uo,v2e as ur,L6e as ut,dJ as v,dJe as va,RZe as vi,Put as vn,zit as vo,wJ as vr,w3 as vt,H9e as w,Rdt as wa,pdt as wi,zxt as wn,DB as wo,FUe as wr,V7e as wt,uxt as x,yat as xa,_Z as xi,rX as xn,l1 as xo,Bvt as xr,Pxt as xt,gqe as y,uJe as ya,I5 as yi,Fut as yn,IUe as yo,Uot as yr,Nxt as yt,Rut as z,Cq as za,Q0e as zi,kyt as zn,che as zo,rot as zr,L0e as zt};
2132
+ `,`utf-8`),e}function zxt(e){return Rxt(Ms(W(Ys(),Lxt)),e)}export{Ldt as $,Gq as $a,o2 as $i,WZe as $n,zpe as $o,fY as $r,s3 as $t,d2e as A,XJ as Aa,z6 as Ai,pyt as An,_I as Ao,o8e as Ar,Cet as At,F5 as B,O8 as Ba,Myt as Bi,c2 as Bn,che as Bo,yY as Br,R5 as Bt,ZJ as C,pat as Ca,Fxt as Ci,tet as Cn,ZV as Co,bJ as Cr,x9 as Ct,I4 as D,YJ as Da,$0e as Di,Dvt as Dn,bB as Do,axt as Dr,hut as Dt,R4 as E,sut as Ea,KK as Ei,vxt as En,APe as Eo,xq as Er,mut as Et,xat as F,Q9 as Fa,s9 as Fi,wY as Fn,KF as Fo,kZ as Fr,Nyt as Ft,wvt as G,bKe as Ga,Z0 as Gi,Nft as Gn,qme as Go,b1 as Gr,DUe as Gt,SUe as H,dYe as Ha,c1 as Hi,i7e as Hn,she as Ho,p1 as Hr,hYe as Ht,WJ as I,Oq as Ia,aet as Ii,ret as In,BP as Io,zut as Ir,KQ as It,_Ze as J,sq as Ja,oZ as Ji,X as Jn,MC as Jo,v1 as Jr,C0e as Jt,d5 as K,U2e as Ka,o8 as Ki,r7 as Kn,$C as Ko,CQ as Kr,Wmt as Kt,WQ as L,aZe as La,E3 as Li,dxt as Ln,GP as Lo,CUe as Lr,rZ as Lt,UJ as M,Ddt as Ma,S3 as Mi,Wbt as Mn,gI as Mo,c2e as Mr,NQ as Mt,z1 as N,P5 as Na,Det as Ni,Dyt as Nn,fI as No,pY as Nr,H1 as Nt,U9e as O,L6 as Oa,q0e as Oi,zgt as On,CB as Oo,tdt as Or,gQe as Ot,c3 as P,Rxt as Pa,U5 as Pi,U0e as Pn,pI as Po,_dt as Pr,uot as Pt,qgt as Q,Yq as Qa,jUe as Qi,k0 as Qn,CC as Qo,wZ as Qr,TZe as Qt,GQ as R,LJ as Ra,u1 as Ri,IZe as Rn,qC as Ro,y1 as Rr,uJ as Rt,yYe as S,Tat as Sa,hot as Si,hqe as Sn,aZ as So,uGe as Sr,$9 as St,not as T,DX as Ta,mdt as Ti,e4e as Tn,aB as To,zJ as Tr,HQ as Tt,J0 as U,jY as Ua,uX as Ui,u8 as Un,ZC as Uo,mY as Ur,cxt as Ut,Lut as V,lX as Va,K0e as Vi,Tdt as Vn,GC as Vo,ydt as Vr,Jut as Vt,V5 as W,TK as Wa,L1 as Wi,n7 as Wn,XC as Wo,e$ as Wr,l8e as Wt,vZe as X,$q as Xa,O3 as Xi,kut as Xn,jC as Xo,RY as Xr,cot as Xt,tQe as Y,Jq as Ya,C3 as Yi,GJe as Yn,BC as Yo,EJ as Yr,PZe as Yt,FZe as Z,Kq as Za,CZ as Zi,fdt as Zn,TC as Zo,vY as Zr,HJ as Zt,cZe as _,W2e as _a,Vut as _i,d9 as _n,J0e as _o,wq as _r,_8 as _t,tq as a,j8 as aa,nq as ai,r1 as an,qq as ao,But as ar,Tpe as as,X9 as at,Wot as b,bat as ba,Bgt as bi,Hgt as bn,S9 as bo,h1 as br,Mxt as bt,V0e as c,hbt as ca,b3 as ci,VGe as cn,x3 as co,JGe as cr,YQ as ct,Hut as d,y4 as da,net as di,x4 as dn,Cat as do,kY as dr,sot as dt,vGe as ea,ixt as ei,lJ as en,Xq as eo,Sxt as er,q as es,Jgt as et,BQ as f,a7e as fa,k3 as fi,sX as fn,NZe as fo,bxt as fr,v8 as ft,mKe as g,o7 as ga,TUe as gi,Vvt as gn,Dq as go,_Ge as gr,g8 as gt,Y3e as h,Q0 as ha,hq as hi,u9 as hn,Eq as ho,Tq as hr,aQe as ht,JK as i,A8 as ia,aot as ii,x8 as in,Hq as io,p4e as ir,Mpe as is,h3 as it,YK as j,QJ as ja,o7e as ji,Edt as jn,hI as jo,s2e as jr,T3 as jt,Lxt as k,rQe as ka,R6 as ki,X0 as kn,BL as ko,ndt as kr,$Q as kt,IQ as l,drt as la,g3 as li,eQe as ln,Aet as lo,J5 as lr,GJ as lt,LQ as m,Axt as ma,Rq as mi,R1 as mn,LY as mo,p3 as mr,Oyt as mt,iq as n,UQ as na,xZ as ni,zq as nn,nJ as no,_4 as nr,wC as ns,NUe as nt,w0e as o,S4 as oa,gyt as oi,qJ as on,Bbt as oo,G2e as or,Epe as os,i6e as ot,VQ as p,b8 as pa,Kgt as pi,tZ as pn,jet as po,xxt as pr,y8 as pt,l0e as q,W9 as qa,Lgt as qi,kxt as qn,NC as qo,M8 as qr,_1 as qt,oZe as r,OY as ra,KGe as ri,iet as rn,Qq as ro,yxt as rr,SC as rs,wZe as rt,z0e as s,r3 as sa,D3 as si,BJ as sn,SZ as so,vot as sr,PUe as st,tUe as t,e8e as ta,DJ as ti,ZJe as tn,tJ as to,PKe as tr,Bpe as ts,SQ as tt,xZe as u,AY as ua,ort as ui,b4 as un,oq as uo,v2e as ur,L6e as ut,dJ as v,dJe as va,RZe as vi,Put as vn,zit as vo,wJ as vr,w3 as vt,H9e as w,Rdt as wa,pdt as wi,zxt as wn,DB as wo,FUe as wr,V7e as wt,uxt as x,yat as xa,_Z as xi,rX as xn,l1 as xo,Bvt as xr,Pxt as xt,gqe as y,uJe as ya,I5 as yi,Fut as yn,IUe as yo,Uot as yr,Nxt as yt,Rut as z,Cq as za,Q0e as zi,kyt as zn,Gme as zo,rot as zr,L0e as zt};
package/dist/index.mjs CHANGED
@@ -1539,6 +1539,6 @@ GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){funct
1539
1539
  `);re(e,o)}function M9(e,t){let n=S(e,`utf-8`);if(n.trim().length!==0)try{let r=A9(JSON.parse(n),t),i=n.endsWith(`
1540
1540
  `)?`
1541
1541
  `:``;re(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=k9(n,t.contentDir);r!==n&&re(e,r)}}function N9(e,t){let n=S(e,`utf-8`),r=k9(n,t.contentDir);r!==n&&re(e,r)}function P9(e){try{return w(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>N(e,t.name))}catch{return[]}}const jje=new Set([`agent-presence.json`,`agent-effects.json`,`runtime.json`]);function F9(e){return/\.log\.\d+$/.test(e)}function Mje(e){return e.endsWith(`.jsonl`)||e.endsWith(`.log`)||F9(e)}const Nje=[`telemetry`,`logs`,`process`,`diagnostic-reports`];function Pje(e){let t={contentDir:e.contentDir};for(let n of Nje)for(let r of P9(N(e.stagingDir,n)))Mje(r)?j9(r,t):r.endsWith(`.json`)?M9(r,t):N9(r,t);for(let n of P9(N(e.stagingDir,`state`))){let e=me(n);n.endsWith(`.jsonl`)?j9(n,t):jje.has(e)?M9(n,t):N9(n,t)}}const I9=[`.ok`,`local`,`telemetry`],L9=[`.ok`,`local`,`logs`],R9=[`.ok`,`local`,`loss-capture`],z9=`spans-current.jsonl`,B9=`spans-prev.jsonl`,V9=`server-current.jsonl`,H9=`server-prev.jsonl`,U9=`loss-current.jsonl`,W9=`loss-prev.jsonl`;function Fje(e){return N(e,...I9,z9)}function Ije(e){return N(e,...I9,B9)}function Lje(e){return N(e,...L9,V9)}function Rje(e){return N(e,...L9,H9)}function zje(e){return N(e,...R9,U9)}function Bje(e){return N(e,...R9,W9)}const G9=1e3;async function Vje(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout(G9)});return t.ok?await t.text():null}catch{return null}}async function Hje(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-effects`,{signal:AbortSignal.timeout(G9)});return t.ok?await t.text():null}catch{return null}}async function Uje(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/watcher-recent`,{signal:AbortSignal.timeout(G9)});return t.ok?await t.text():null}catch{return null}}function Wje(e){try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=t.decisions;return Array.isArray(n)?n.length===0?``:`${n.map(e=>JSON.stringify(e)).join(`
1542
- `)}\n`:null}catch{return null}}function Gje(e){let t=N(e,`.git`,`ok`);if(!g(t))return null;let n=l(`git`,[`-C`,t,`log`,`--oneline`,`-50`],V6({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function Kje(e){let t=N(e,`.git`,`ok`);if(!g(t))return null;let n=l(`git`,[`-C`,t,`for-each-ref`,`--sort=-creatordate`,`--count=50`,`--format=%(refname)%09%(creatordate:iso-strict)%09%(contents:subject)`,`refs/checkpoints/`],V6({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function K9(){let e=process.env.OK_DESKTOP_VERSION,t=process.env.OK_DESKTOP_PACKAGED,n=process.env.OK_DESKTOP_CHANNEL;return e===void 0||t===void 0||n===void 0?null:{electronVersion:e,packaged:t===`1`||t.toLowerCase()===`true`,channel:n}}function qje(){return{nodeVersion:process.version,platform:le(),arch:ae()}}function Jje(){return process.env.OTEL_SDK_DISABLED===`false`}function q9(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function J9(e){if(!g(e))return{};let t;try{t=(0,tn.parse)(S(e,`utf-8`))}catch(t){return console.warn(`[ok diagnose bundle] failed to parse ${e} for manifest config; manifest will report schema defaults. Reason: ${t instanceof Error?t.message:String(t)}`),{}}if(!q9(t))return{};let n=t.telemetry;if(!q9(n))return{};let r=n.localSink;return q9(r)?r:{}}function Y9(e){return typeof e==`boolean`?e:void 0}function Yje(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function X9(e){if(q9(e))return Yje(e.maxBytes)}function Xje(e){let t=J9(LX(`project`,e)),n=J9(LX(`project-local`,e));return{enabled:Y9(n.enabled)??Y9(t.enabled)??!0,spansMaxBytes:X9(n.spans)??X9(t.spans)??52428800,logsMaxBytes:X9(n.logs)??X9(t.logs)??26214400}}function Zje(e){return Ne(`sha256`).update(e).digest(`hex`)}function Qje(e){let t=S(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}const $je=[`"doc.name"`,`"docName"`];function eMe(e){let t=S(e,`utf-8`),n=0;for(let e of $je){let r=t.indexOf(e);for(;r!==-1;)n++,r=t.indexOf(e,r+e.length)}return n}function Z9(e,t){if(!g(e))return!1;try{return v(M(t),{recursive:!0}),e.endsWith(`.ips`)?re(t,C7(S(e,`utf-8`))):m(e,t),!0}catch{return!1}}function Q9(e){let t=[],n=e=>{let r=w(e,{withFileTypes:!0});for(let i of r){let r=N(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const tMe=new Set([`.jsonl`]);function nMe(e){let t=e.lastIndexOf(`.`);return t!==-1&&tMe.has(e.slice(t))}const rMe=new Set([`.jsonl`,`.json`,`.txt`,`.log`,`.lock`,`.yaml`,`.yml`,`.ips`]);function iMe(e){if(F9(e))return!0;let t=e.lastIndexOf(`.`);return t!==-1&&rMe.has(e.slice(t))}function aMe(e){let t=[];for(let n of Q9(e)){let r=$9(e,n);if(!iMe(r))continue;let{redacted:i,patterns:a,lineCount:o}=NB(S(n,`utf-8`));a.length!==0&&(re(n,i),t.push({file:r,lineCount:o,patterns:a}))}return{redactions:t,redactedLineCount:t.reduce((e,t)=>e+t.lineCount,0)}}function $9(e,t){return ye(e,t).split(xe).join(`/`)}async function oMe(e){let t=be(e.contentDir),n=be(e.projectDir??e.contentDir),r=e.deps??{},i=r.fetchAgentPresence??Vje,a=r.fetchAgentEffects??Hje,o=r.fetchWatcherRecent??Uje,s=r.readShadowHead??Gje,c=r.readCheckpointRefs??Kje,l=r.now??(()=>new Date),u=r.okVersion??(()=>`0.79.3`),d=r.readDesktopEnv??K9,f=r.readLanguage??O9,p=r.readRuntime??qje,h=r.isOtlpPushEnabled??Jje,_=y(N(A(),`ok-bundle-`));try{v(N(_,`telemetry`),{recursive:!0}),v(N(_,`logs`),{recursive:!0}),v(N(_,`state`),{recursive:!0}),Z9(Fje(n),N(_,`telemetry`,z9)),Z9(Ije(n),N(_,`telemetry`,B9)),Z9(Lje(n),N(_,`logs`,V9)),Z9(Rje(n),N(_,`logs`,H9));for(let t of e.userLogFiles??[])Z9(t,N(_,`logs`,me(t)));for(let t of e.userStateFiles??[])Z9(t,N(_,tR,me(t)));let y=0;for(let t of e.diagnosticReports?.files??[])Z9(t,N(_,`diagnostic-reports`,me(t)))&&(y+=1);let b=N(n,`.ok`,`local`),x=N(b,`server.lock`),C=`not-running`,w=`no server.lock`,T=null;if(g(x)){Z9(x,N(_,`state`,`server.lock`));try{let e=S(x,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?T=t.port:w=`lock present but no port`}catch{w=`lock present but unparseable`}}if(T!==null){let e=await i(T);e===null?w=`agent-presence endpoint at :${T} unreachable`:(re(N(_,`state`,`agent-presence.json`),e),C=`running`,w=``);let t=await a(T);t!==null&&re(N(_,`state`,`agent-effects.json`),t);let n=await o(T);if(n!==null){let e=Wje(n);e!==null&&re(N(_,`state`,`watcher-recent.jsonl`),e)}}let E=s(t);E!==null&&re(N(_,`state`,`shadow-head.txt`),E);let D=c(t);D!==null&&re(N(_,`state`,`checkpoint-refs.txt`),D),Z9(zje(n),N(_,`state`,U9)),Z9(Bje(n),N(_,`state`,W9)),Z9(N(b,`last-spawn-error.log`),N(_,`state`,`last-spawn-error.log`)),Z9(N(b,Hu),N(_,`state`,Hu)),Z9(N(b,Uu),N(_,`state`,Uu)),Z9(N(b,Vu),N(_,`state`,Vu));let ee=p(),ne=d(),ie=f(),ae={ok:{version:u(),nodeVersion:ee.nodeVersion,platform:ee.platform,arch:ee.arch},host:{desktop:ne,language:ie}};re(N(_,`state`,`runtime.json`),`${JSON.stringify(ae,null,2)}\n`);let oe=C===`running`?`running
1542
+ `)}\n`:null}catch{return null}}function Gje(e){let t=N(e,`.git`,`ok`);if(!g(t))return null;let n=l(`git`,[`-C`,t,`log`,`--oneline`,`-50`],V6({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function Kje(e){let t=N(e,`.git`,`ok`);if(!g(t))return null;let n=l(`git`,[`-C`,t,`for-each-ref`,`--sort=-creatordate`,`--count=50`,`--format=%(refname)%09%(creatordate:iso-strict)%09%(contents:subject)`,`refs/checkpoints/`],V6({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function K9(){let e=process.env.OK_DESKTOP_VERSION,t=process.env.OK_DESKTOP_PACKAGED,n=process.env.OK_DESKTOP_CHANNEL;return e===void 0||t===void 0||n===void 0?null:{electronVersion:e,packaged:t===`1`||t.toLowerCase()===`true`,channel:n}}function qje(){return{nodeVersion:process.version,platform:le(),arch:ae()}}function Jje(){return process.env.OTEL_SDK_DISABLED===`false`}function q9(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function J9(e){if(!g(e))return{};let t;try{t=(0,tn.parse)(S(e,`utf-8`))}catch(t){return console.warn(`[ok diagnose bundle] failed to parse ${e} for manifest config; manifest will report schema defaults. Reason: ${t instanceof Error?t.message:String(t)}`),{}}if(!q9(t))return{};let n=t.telemetry;if(!q9(n))return{};let r=n.localSink;return q9(r)?r:{}}function Y9(e){return typeof e==`boolean`?e:void 0}function Yje(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function X9(e){if(q9(e))return Yje(e.maxBytes)}function Xje(e){let t=J9(LX(`project`,e)),n=J9(LX(`project-local`,e));return{enabled:Y9(n.enabled)??Y9(t.enabled)??!0,spansMaxBytes:X9(n.spans)??X9(t.spans)??52428800,logsMaxBytes:X9(n.logs)??X9(t.logs)??26214400}}function Zje(e){return Ne(`sha256`).update(e).digest(`hex`)}function Qje(e){let t=S(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}const $je=[`"doc.name"`,`"docName"`];function eMe(e){let t=S(e,`utf-8`),n=0;for(let e of $je){let r=t.indexOf(e);for(;r!==-1;)n++,r=t.indexOf(e,r+e.length)}return n}function Z9(e,t){if(!g(e))return!1;try{return v(M(t),{recursive:!0}),e.endsWith(`.ips`)?re(t,C7(S(e,`utf-8`))):m(e,t),!0}catch{return!1}}function Q9(e){let t=[],n=e=>{let r=w(e,{withFileTypes:!0});for(let i of r){let r=N(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const tMe=new Set([`.jsonl`]);function nMe(e){let t=e.lastIndexOf(`.`);return t!==-1&&tMe.has(e.slice(t))}const rMe=new Set([`.jsonl`,`.json`,`.txt`,`.log`,`.lock`,`.yaml`,`.yml`,`.ips`]);function iMe(e){if(F9(e))return!0;let t=e.lastIndexOf(`.`);return t!==-1&&rMe.has(e.slice(t))}function aMe(e){let t=[];for(let n of Q9(e)){let r=$9(e,n);if(!iMe(r))continue;let{redacted:i,patterns:a,lineCount:o}=NB(S(n,`utf-8`));a.length!==0&&(re(n,i),t.push({file:r,lineCount:o,patterns:a}))}return{redactions:t,redactedLineCount:t.reduce((e,t)=>e+t.lineCount,0)}}function $9(e,t){return ye(e,t).split(xe).join(`/`)}async function oMe(e){let t=be(e.contentDir),n=be(e.projectDir??e.contentDir),r=e.deps??{},i=r.fetchAgentPresence??Vje,a=r.fetchAgentEffects??Hje,o=r.fetchWatcherRecent??Uje,s=r.readShadowHead??Gje,c=r.readCheckpointRefs??Kje,l=r.now??(()=>new Date),u=r.okVersion??(()=>`0.79.4`),d=r.readDesktopEnv??K9,f=r.readLanguage??O9,p=r.readRuntime??qje,h=r.isOtlpPushEnabled??Jje,_=y(N(A(),`ok-bundle-`));try{v(N(_,`telemetry`),{recursive:!0}),v(N(_,`logs`),{recursive:!0}),v(N(_,`state`),{recursive:!0}),Z9(Fje(n),N(_,`telemetry`,z9)),Z9(Ije(n),N(_,`telemetry`,B9)),Z9(Lje(n),N(_,`logs`,V9)),Z9(Rje(n),N(_,`logs`,H9));for(let t of e.userLogFiles??[])Z9(t,N(_,`logs`,me(t)));for(let t of e.userStateFiles??[])Z9(t,N(_,tR,me(t)));let y=0;for(let t of e.diagnosticReports?.files??[])Z9(t,N(_,`diagnostic-reports`,me(t)))&&(y+=1);let b=N(n,`.ok`,`local`),x=N(b,`server.lock`),C=`not-running`,w=`no server.lock`,T=null;if(g(x)){Z9(x,N(_,`state`,`server.lock`));try{let e=S(x,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?T=t.port:w=`lock present but no port`}catch{w=`lock present but unparseable`}}if(T!==null){let e=await i(T);e===null?w=`agent-presence endpoint at :${T} unreachable`:(re(N(_,`state`,`agent-presence.json`),e),C=`running`,w=``);let t=await a(T);t!==null&&re(N(_,`state`,`agent-effects.json`),t);let n=await o(T);if(n!==null){let e=Wje(n);e!==null&&re(N(_,`state`,`watcher-recent.jsonl`),e)}}let E=s(t);E!==null&&re(N(_,`state`,`shadow-head.txt`),E);let D=c(t);D!==null&&re(N(_,`state`,`checkpoint-refs.txt`),D),Z9(zje(n),N(_,`state`,U9)),Z9(Bje(n),N(_,`state`,W9)),Z9(N(b,`last-spawn-error.log`),N(_,`state`,`last-spawn-error.log`)),Z9(N(b,Hu),N(_,`state`,Hu)),Z9(N(b,Uu),N(_,`state`,Uu)),Z9(N(b,Vu),N(_,`state`,Vu));let ee=p(),ne=d(),ie=f(),ae={ok:{version:u(),nodeVersion:ee.nodeVersion,platform:ee.platform,arch:ee.arch},host:{desktop:ne,language:ie}};re(N(_,`state`,`runtime.json`),`${JSON.stringify(ae,null,2)}\n`);let oe=C===`running`?`running
1543
1543
  `:`not-running (${w})\n`;re(N(_,`state`,`server-status.txt`),oe);let se=e.diagnosticReports===void 0?`not-collected (no collection attempted)`:S7(e.diagnosticReports,y);if(re(N(_,`state`,`diagnostic-reports-status.txt`),`${se}\n`),e.processDir&&g(e.processDir)){let t=N(_,`process`);v(t,{recursive:!0}),m(e.processDir,t,{recursive:!0})}let k=e.redact===!0;k&&Pje({stagingDir:_,contentDir:t}),e.note&&re(N(_,`note.txt`),e.note);let ce=null;e.scrubSecrets===!0&&(ce=aMe(_));for(let t of e.extraFiles??[]){let e=t.zipName??me(t.sourcePath);if(!Z9(t.sourcePath,N(_,`extra`,e))){r.logger?.warn({sourcePath:t.sourcePath},`extra file missing; omitted from bundle`);continue}let n=T7(t,`extra/${e}`);n!==null&&(ce??={redactions:[],redactedLineCount:0},ce.redactions.push(n),ce.redactedLineCount+=n.lineCount)}let le=Xje(n),ue=Q9(_),A=[],j=0,de=0;for(let e of ue){let t=$9(_,e),n=te(e).size,r=nMe(t)?Qje(e):0;A.push({path:t,bytes:n,lines:r}),j+=n,(t.startsWith(`telemetry/`)||t.startsWith(`logs/`))&&(de+=eMe(e))}let fe={applied:k};ce!==null&&(fe.secretScrub=ce);let pe={schemaVersion:2,createdAt:l().toISOString(),ok:{version:u(),nodeVersion:ee.nodeVersion,platform:ee.platform,arch:ee.arch},host:{desktop:ne,language:ie},contentDir:{pathSha256:Zje(t),absolutePath:k?`<CONTENT_DIR>`:t},telemetry:{localSink:le,otlpPushEnabled:h()},redaction:fe,serverStatus:C,files:A};re(N(_,`manifest.json`),`${JSON.stringify(pe,null,2)}\n`);let M=ue.some(e=>{try{return S(e,`utf-8`).includes(t)}catch{return!1}}),he={stagedDiagnosticReports:y,totalBytes:j,fileCount:A.length,docNameCount:de,contentDirVisible:M,redacted:k},ge=!1;return{stagingDir:_,manifest:pe,summary:he,cleanup:()=>{ge||(ge=!0,O(_,{recursive:!0,force:!0}))}}}catch(e){throw O(_,{recursive:!0,force:!0}),e}}async function sMe(e){let{collected:t,outputPath:n}=e,r=M(n);if(!g(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);let i=new cwe.ZipFile,a=Q9(t.stagingDir);for(let e of a){let n=$9(t.stagingDir,e);i.addFile(e,n)}i.end();let o=h(n);return i.outputStream.pipe(o),await new Promise((e,t)=>{o.on(`close`,e),o.on(`error`,t),i.outputStream.on(`error`,t)}),n}function cMe(e,t){let n=N(e,`.ok`,`config.yml`);if(g(n))try{let t=(0,tn.parse)(S(n,`utf-8`)),r=W8(t)?t.content:void 0,i=W8(r)?r.dir:void 0;if(typeof i==`string`&&i.length>0)return be(e,i)}catch(e){t?.warn({configPath:n,err:e},`bug-report: failed to read .ok/config.yml; falling back to project root as content dir`)}return be(e)}async function lMe(e,t,n,r,i){let a=E7(t,e.logger),o=await oMe({contentDir:cMe(t,e.logger),projectDir:t,redact:e.redact,scrubSecrets:e.redact,note:e.note,extraFiles:e.extraFiles,userLogFiles:[...yAe(a,e.userLogsDir??N(k(),`.ok`,`logs`)),...O7(e.cachesDir??N(k(),`Library`,`Caches`))],userStateFiles:k7(e.bugReportsDir??w7()),diagnosticReports:i,deps:{readDesktopEnv:n,readLanguage:r,logger:e.logger}});try{v(M(e.outputPath),{recursive:!0}),await sMe({collected:o,outputPath:e.outputPath});let t=o.manifest.redaction.secretScrub;return{zipPath:e.outputPath,summary:{level:`full`,systemWide:!1,projectSlug:a,files:o.manifest.files.map(e=>e.path),redactions:t?.redactions??[],redactedLineCount:t?.redactedLineCount??0,generatedAt:o.manifest.createdAt}}}finally{o.cleanup()}}async function uMe(e){let{projectDir:t}=e,n=e.readDesktopEnv??K9,r=e.readLanguage??O9,i=()=>mAe(e.diagnosticReportsDir??N(k(),`Library`,`Logs`,`DiagnosticReports`),new Date);if(e.level===`full`&&t!==void 0)return lMe(e,t,n,r,i());let{zipPath:a,summary:o}=await wAe({projectDir:t,redact:e.redact,revealDocNames:e.level===`full`,outputPath:e.outputPath,userLogsDir:e.userLogsDir,shipItLogFiles:O7(e.cachesDir??N(k(),`Library`,`Caches`)),bugReportLedgerFiles:k7(e.bugReportsDir??w7()),diagnosticReports:e.level===`full`?i():void 0,logger:e.logger,note:e.note,extraFiles:e.extraFiles,desktop:n(),language:r()});return{zipPath:a,summary:{level:e.level,systemWide:t===void 0,projectSlug:o.projectSlug,files:o.files,redactions:o.redactions,redactedLineCount:o.redactedLineCount,generatedAt:o.generatedAt}}}export{Z8 as ALL_EDITOR_IDS,Q8 as EDITOR_LABELS,O5 as EDITOR_TARGETS,FOe as HOSTS_WITH_USER_SKILL_DIR,eAe as LAUNCH_CONFIG_NAME,pje as PATH_SHIM_BEGIN,hje as PATH_SHIM_BLOCK_RE,mje as PATH_SHIM_END,F5 as ProjectPathSafetyError,Mke as addOkPathsToGitExclude,I5 as assertProjectPathSafe,u5 as buildManagedServerEntry,rje as buildMcpConfigDeclineEvent,ije as buildMcpConfigMigrateEvent,y7 as classifyExistingMcpEntry,uMe as collectReportBundle,bje as createCliProbeResolver,on as createTokenStore,gAe as defaultBugReportZipPath,We as detectGh,qe as detectGhAccounts,iAe as detectInstalledEditors,y5 as droppedManagedKeys,nke as editorConfigPathDisplay,tke as editorEntryLocator,KAe as ensurePiBridge,Z5 as formatTrackedRemediation,Fke as getExcludedOkPaths,Y5 as getInstalledSkillProjectionPaths,POe as getNativeTomlMcpEditor,J5 as getOkArtifactPaths,c5 as isEntryUpToDate,d5 as isOwnManagedEntry,uje as loadConfig,bee as makeLazyProbeTokenStore,w7 as okBugReportsDir,b9 as parseGitHubBlobUrl,dje as parseGitHubShareUrl,x9 as parseGitHubTreeUrl,y9 as parseGitUrl,gje as pathInstallMarkerPath,_ke as previewContent,aAe as probeOwnManagedEditorMcpEntry,WAe as probePiBridgeState,X5 as probeTrackedOkPaths,_7 as readExistingMcpEntry,Pke as readSharingMode,NB as redactContent,Nke as removeOkPathsFromGitExclude,$Ae as removeOwnMcpEntry,kke as removeProjectSkill,Sje as removeUserGlobalSkillBundle,Oje as removeUserSkill,Cke as resolveProjectRoot,sje as runStop,h9 as truncatePriorEntry,E9 as userGlobalSkillBundleTargets,Dje as userSkillPresentAnywhere,fje as validateLocalFolderForShare,g7 as writeEditorMcpConfig,Tje as writeProjectAiIntegrations,H5 as writeProjectSkill,rAe as writeUserMcpConfigs,Eje as writeUserSkill};
1544
1544
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ import"./dist-Dci-h_mV.mjs";import{_ as e}from"./init-PYX9s0p3.mjs";export{e as runInit};