@inkeep/open-knowledge 0.20.0-beta.2 → 0.20.0-beta.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 (47) hide show
  1. package/dist/assets/skills/discovery/SKILL.md +2 -2
  2. package/dist/assets/skills/project/SKILL.md +69 -455
  3. package/dist/assets/skills/project/references/anti-patterns.md +33 -0
  4. package/dist/assets/skills/project/references/cadence-and-logs.md +17 -0
  5. package/dist/assets/skills/project/references/components-and-visuals.md +53 -0
  6. package/dist/assets/skills/project/references/conflict-resolution.md +28 -0
  7. package/dist/assets/skills/project/references/corpus-qa.md +14 -0
  8. package/dist/assets/skills/project/references/doc-editing.md +11 -0
  9. package/dist/assets/skills/project/references/folder-model.md +42 -0
  10. package/dist/assets/skills/project/references/ingest-and-sources.md +24 -0
  11. package/dist/assets/skills/project/references/linking.md +14 -0
  12. package/dist/assets/skills/project/references/media-and-assets.md +14 -0
  13. package/dist/assets/skills/project/references/preview.md +51 -0
  14. package/dist/assets/skills/project/references/setup.md +2 -2
  15. package/dist/assets/skills/project/references/template-authoring.md +65 -0
  16. package/dist/assets/skills/project/references/workflow-guides.md +30 -0
  17. package/dist/assets/skills/project/references/writing.md +9 -0
  18. package/dist/assets/skills/write-skill/SKILL.md +16 -5
  19. package/dist/cli.mjs +6 -6
  20. package/dist/constants-CccigS7Z.mjs +2 -0
  21. package/dist/{dist-CcBhqiSK.mjs → dist-DG18qmsf.mjs} +6 -6
  22. package/dist/{dist-DVWyQ2rE.mjs → dist-lMD2xM96.mjs} +1 -1
  23. package/dist/index.mjs +1 -1
  24. package/dist/{init-B7uIAmKy.mjs → init-BEl-oLte.mjs} +4 -4
  25. package/dist/init-C7uBoTEn.mjs +1 -0
  26. package/dist/loader-Br4O9l2c.mjs +1 -0
  27. package/dist/{loader-C1HBTcQa.mjs → loader-CAzv0pqx.mjs} +2 -2
  28. package/dist/{preview-lXnqdb3D.mjs → preview-BQFuOGx7.mjs} +2 -2
  29. package/dist/preview-DgLc6gDO.mjs +1 -0
  30. package/dist/public/assets/{TerminalPanel-DiJi11zw.js → TerminalPanel-DRbEwLNU.js} +1 -1
  31. package/dist/public/assets/{index-BRRMUSFc.js → index-B8O97Pkv.js} +4 -4
  32. package/dist/public/index.html +1 -1
  33. package/dist/{repair-launch-json-CHs1S_6W.mjs → repair-launch-json-BTrUFJZp.mjs} +2 -2
  34. package/dist/{repair-mcp-configs-BNXjgbYB.mjs → repair-mcp-configs-_6UImgDH.mjs} +2 -2
  35. package/dist/{repair-skills-aa6PY9M2.mjs → repair-skills-B54Iho-y.mjs} +2 -2
  36. package/dist/repair-skills-CypPUSjG.mjs +1 -0
  37. package/dist/{src-Cj9YcMw2.mjs → src-AOM5DOYm.mjs} +2 -2
  38. package/dist/start-C0Mpznab.mjs +1 -0
  39. package/dist/{start-Cxl8h9Mt.mjs → start-CPnfm53U.mjs} +2 -2
  40. package/dist/{write-project-skill-DF8Mypd7.mjs → write-project-skill-CD-qC1w3.mjs} +2 -2
  41. package/package.json +1 -1
  42. package/dist/constants-DOCLO9Wy.mjs +0 -2
  43. package/dist/init-_bjIxAij.mjs +0 -1
  44. package/dist/loader-DAdEi1_2.mjs +0 -1
  45. package/dist/preview-B4Oewkq2.mjs +0 -1
  46. package/dist/repair-skills-CUAuz35w.mjs +0 -1
  47. package/dist/start-CSaaayz9.mjs +0 -1
@@ -1 +1 @@
1
- import{An as e,Fn as t,J as n,Pi as r,Vi as i,Wt as a,a as o,an as s,c,d as l,f as u,g as d,h as f,hn as p,i as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C,ui as w,un as T}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{$ as E,$i as D,$n as O,$r as k,$t as A,A as j,Ai as M,An as N,Ar as P,At as F,B as I,Bi as L,Bn as R,Br as z,Bt as B,C as V,Ci as H,Cn as U,Cr as W,Ct as G,D as K,Di as q,Dn as J,Dr as Y,Dt as X,E as Z,Ei as Q,En as $,Er as ee,Et as te,F as ne,Fi as re,Fn as ie,Fr as ae,Ft as oe,G as se,Gi as ce,Gn as le,Gr as ue,Gt as de,H as fe,Hi as pe,Hn as me,Hr as he,Ht as ge,I as _e,Ii as ve,In as ye,Ir as be,It as xe,J as Se,Ji as Ce,Jn as we,Jr as Te,Jt as Ee,K as De,Ki as Oe,Kn as ke,Kr as Ae,Kt as je,L as Me,Li as Ne,Ln as Pe,Lr as Fe,Lt as Ie,M as Le,Mi as Re,Mn as ze,Mr as Be,Mt as Ve,N as He,Ni as Ue,Nn as We,Nr as Ge,Nt as Ke,O as qe,Oi as Je,On as Ye,Or as Xe,Ot as Ze,P as Qe,Pi as $e,Pn as et,Pr as tt,Pt as nt,Q as rt,Qi as it,Qn as at,Qr as ot,Qt as st,R as ct,Ri as lt,Rn as ut,Rr as dt,Rt as ft,S as pt,Si as mt,Sn as ht,Sr as gt,St as _t,T as vt,Ti as yt,Tn as bt,Tr as xt,Tt as St,U as Ct,Ui as wt,Un as Tt,Ur as Et,Ut as Dt,V as Ot,Vi as kt,Vn as At,Vr as jt,Vt as Mt,W as Nt,Wi as Pt,Wn as Ft,Wr as It,Wt as Lt,X as Rt,Xi as zt,Xn as Bt,Xr as Vt,Xt as Ht,Y as Ut,Yi as Wt,Yn as Gt,Yr as Kt,Yt as qt,Z as Jt,Zi as Yt,Zn as Xt,Zr as Zt,Zt as Qt,_ as $t,_i as en,_n as tn,_r as nn,_t as rn,a as an,ai as on,an as sn,ar as cn,at as ln,b as un,bi as dn,bn as fn,br as pn,bt as mn,c as hn,ci as gn,cn as _n,cr as vn,ct as yn,d as bn,di as xn,dn as Sn,dr as Cn,dt as wn,ea as Tn,ei as En,en as Dn,er as On,et as kn,f as An,fa as jn,fi as Mn,fn as Nn,fr as Pn,ft as Fn,g as In,gi as Ln,gn as Rn,gr as zn,gt as Bn,h as Vn,hi as Hn,hn as Un,hr as Wn,ht as Gn,i as Kn,ii as qn,in as Jn,ir as Yn,it as Xn,j as Zn,ji as Qn,jn as $n,jr as er,jt as tr,k as nr,ki as rr,kn as ir,kr as ar,kt as or,l as sr,li as cr,ln as lr,lr as ur,lt as dr,m as fr,mi as pr,mn as mr,mr as hr,mt as gr,n as _r,ni as vr,nn as yr,nr as br,nt as xr,o as Sr,oi as Cr,on as wr,or as Tr,ot as Er,p as Dr,pa as Or,pi as kr,pn as Ar,pr as jr,pt as Mr,q as Nr,qi as Pr,qn as Fr,qr as Ir,qt as Lr,r as Rr,ri as zr,rn as Br,rr as Vr,rt as Hr,s as Ur,si as Wr,sn as Gr,sr as Kr,st as qr,t as Jr,ti as Yr,tn as Xr,tr as Zr,tt as Qr,u as $r,ui as ei,un as ti,ur as ni,ut as ri,v as ii,vi as ai,vn as oi,vr as si,vt as ci,w as li,wi as ui,wn as di,wr as fi,wt as pi,x as mi,xi as hi,xn as gi,xr as _i,xt as vi,y as yi,yi as bi,yn as xi,yr as Si,yt as Ci,z as wi,zi as Ti,zn as Ei,zr as Di,zt as Oi}from"./dist-CcBhqiSK.mjs";export{Jr as AGENT_ID_MAX_LEN,_r as AGENT_ID_RE,Rr as AGENT_WRITE_ORIGIN,Kn as AgentFocusBroadcaster,an as AgentPresenceBroadcaster,Sr as AgentSessionCapacityError,Ur as AgentSessionManager,hn as AutoStartDisabledError,sr as BUNDLE_IDS,$r as BUNDLE_SCOPE,bn as BUNDLE_SKILL_NAME,An as BacklinkIndex,Dr as CC1Broadcaster,n as CC1_CONTRACT_VERSION,fr as CONFIG_FILENAME,Vn as CONFLICT_MARKER_RE,In as CURSOR_BUNDLE_PATHS_BY_PLATFORM,$t as ConfigSchema,ii as DEFAULT_CHECKPOINT_RETENTION,yi as DEFAULT_EMBEDDINGS_DIMENSIONS,un as DEFAULT_PACK_ID,mi as EMBEDDINGS_API_KEY_ENV,pt as FILE_SYSTEM_WRITER,V as FILE_WATCHER_ORIGIN,li as FileEmbeddingsBackend,vt as GIT_PREFLIGHT_FAIL_SPAN_NAME,Z as GIT_UPSTREAM_WRITER,jn as GitDirAccessError,K as GitNotAvailableError,qe as GitTooOldError,nr as HOCUSPOCUS_AUTH_REJECTION_REASONS,j as HocuspocusAuthRejection,Zn as HocuspocusAuthTokenSchema,Le as INSTALLED_AGENTS_SCHEMES,a as LINEAGE_EPOCH_KEY,He as LIVE_DERIVED_INDEX_DEBOUNCE_MS,Qe as LOG_MD_TEMPLATE,ne as MANAGED_RENAME_ORIGIN,_e as MAX_AGENT_SESSIONS,Me as MCP_CONNECTION_ID_HEADER,s as MCP_SERVER_NAME,ct as MIN_GIT_VERSION,wi as MISSING_OK_CONFIG_MESSAGE,Or as MalformedGitPointerError,I as McpLogger,Ot as MissingOkConfigError,fe as OBSERVER_SYNC_ORIGIN,Ct as OK_OKIGNORE_TEMPLATE,T as ORPHAN_MODES,Nt as PANE_TARGET_TTL_MS,p as PROTOCOL_VERSION,se as PinoLogger,S as ProcessLockCollisionError,De as ProjectGitInitError,Nr as ROLLBACK_ORIGIN,Se as ROOT_GITIGNORE_TEMPLATE,_ as RUNTIME_VERSION,Ut as SERVICE_WRITER,Rt as SKILL_INSTALL_EVENTS_FILE_REL,e as SKILL_STATE_TARGETS,Jt as STARTER_FOLDERS,rt as STARTER_FOLDER_FRONTMATTER_FILENAME,E as STARTER_PACKS,kn as STARTER_PACK_IDS,Qr as STARTER_TEMPLATES,xr as STATE_MANIFEST_FILENAME,b as STATE_SCHEMA_VERSION,t as SYSTEM_DOC_NAME,Hr as SeedPrerequisiteError,Xn as SeedRootDirError,m as ServerLockCollisionError,ln as SingleFileNotAFileError,Er as SingleFileNotFoundError,qr as SingleFileNotMarkdownError,yn as StateManifestError,dr as TagIndex,ri as USER_GLOBAL_BUNDLE_IDS,wn as UiLockCollisionError,Fn as __getShowAllWalkStatsForTesting,Mr as __resetShowAllWalkStatsForTesting,o as acquireProcessLock,v as acquireServerLock,gr as acquireUiLock,Gn as applyAgentMarkdownWrite,Bn as applyExternalChange,rn as applySeed,ci as armPaneTarget,Ci as assertCompatibleStateManifest,mn as assertGitAvailable,vi as assertNeverDiskEvent,_t as attachIdleShutdown,G as bootServer,pi as buildAndOpenSkill,St as buildConfigYmlContent,te as buildExecResult,X as buildSkillZip,Ze as buildStarterFolderFrontmatterYaml,or as buildWipTree,F as bundleSkillMdPath,tr as classifyEvents,Ve as classifyFsPath,Ke as clearArmedPaneTarget,nt as clearContributors,oe as clearEmbeddingsKeyFromAllBackends,xe as coercePackId,w as colorFromSeed,Ie as commitUpstreamImport,ft as commitWip,Oi as commitWipFromTree,B as compareSemver,Mt as containsConflictMarkers,ge as contentHash,Dt as contributorCount,Lt as countShadowObjects,de as countStaleAgentWipRefs,je as countWipRefs,Lr as createApiExtension,Ee as createAssetServeMiddleware,qt as createContentFilter,Ht as createContentFilterAsync,Qt as createEmbeddingsSecretStore,st as createEphemeralProjectDir,A as createExternalChangeHandler,Dn as createFileLogger,Xr as createLiveDerivedIndexExtension,yr as createMcpHttpHandler,Br as createOsProbe,Jn as createPersistenceExtension,sn as createServer,wr as createServerObserverExtension,Gr as createStreamingErrorWriter,_n as createTestLogger,lr as describeStoredEmbeddingsKey,ti as detectClaudeDesktopPresence,Sn as detectGit,Nn as detectProjectShape,Ar as emitPreflightFailureSpan,mr as encodeDocName,Un as encodeFolderRoute,Rn as ensureProjectGit,tn as errorResponse,oi as evictStaleTrackerEntries,xi as extractWikiLinksFromMarkdown,fn as fallbackPaths,gi as findEnclosingGitRoot,ht as findEnclosingProjectRoot,U as flushFileLogger,di as formatAuthRejectionWire,bt as formatContributors,$ as formatContributorsFrom,J as formatPackRationale,Ye as gcCheckpointRefs,ir as getCurrentMcpLogger,N as getLocalDir,$n as getLogFilePath,ze as getLogger,We as getLogsDir,et as getMeter,ie as getMetrics,ye as getTracer,Pe as handleCollabSocketError,ut as handleSpawnCursor,Ei as hasGcLogLatch,r as iconFromClientName,R as incrementCollabSocketFilteredError,At as incrementServerObserverFire,me as initContent,Tt as initShadowRepo,Ft as initTelemetry,le as initToleranceTelemetryWriter,ke as installPrettyZodErrors,Fr as installTestLoggers,we as installUserSkill,Gt as isAllowedApiOrigin,Bt as isAllowedWorkspaceHostHeader,Xt as isConfigDoc,at as isHocuspocusAuthRejectionReason,O as isKnownPackId,On as isLinkIndexExcludedDoc,Zr as isLoopbackAddress,br as isManagedArtifactDoc,i as isOrphanMode,Vr as isPairedWriteOrigin,Yn as isPathWithinDir,x as isProcessAlive,cn as isProjectRoot,Tr as isProjectSkillManaged,Kr as isReservedForUserTree,vn as isSelfWrite,ur as isSystemDoc,ni as isToleranceTelemetryEnabled,c as isValidLockPid,Cn as lastKnownHash,Pn as listRescueCheckpoints,jr as listStarterPacks,hr as loadPrincipal,h as lockFilePath,Wn as loggerFactory,zn as logsCurrentPath,nn as logsPreviousPath,si as makeLazyEmbeddingsKeyStore,Si as mountMcpAndApi,pn as normalizeFsPath,_i as packageVersionMajorMinor,gt as parseAuthRejectionWire,W as parseGitVersion,fi as parseHocuspocusAuthToken,xt as parseKeepaliveConnectionId,ee as pathToDocName,Y as planSeed,Xe as prepareSingleFileOpen,ar as readAllTargets,P as readArmedPaneTarget,er as readBranchFromHead,C as readProcessLock,l as readProcessLockDetailed,Be as readProjectLocalSemanticConfig,u as readServerLock,Ge as readServerPackageVersion,tt as readSkillInstallStateSnapshot,ae as readSkillManagement,be as readStateManifest,Fe as readTargetRecordedAt,dt as readTargetVersion,Di as readUiLock,z as reconcile,jt as recordContributor,he as recordSkillInstallEvent,Et as registerAllTools,It as registerWrite,y as releaseProcessLock,g as releaseServerLock,ue as releaseUiLock,Ae as removeLastKnownHash,Ir as resetMetrics,Te as resolveBundledSkillDir,Kt as resolveContentDir,Vt as resolveCursorBinaryDefault,Zt as resolveCursorSpawnInvocation,ot as resolveLockDir,k as resolvePack,En as resolvePackageVersion,Yr as resolveUiInfo,vr as restoreContributors,zr as restoreLifecycleFromConflictsJson,qn as rewriteMarkdownLinksForDocumentRename,on as rewriteWikiLinksForDocumentRename,Cr as runAuthReposSubprocess,Wr as runAuthStatusSubprocess,gn as runCloneSubprocess,cr as runDeviceFlowSubprocess,ei as runWithMcpLogger,xn as safeContentPath,Mn as safeSubdir,kr as safetyCheckpoint,pr as sanitizeClientName,Hn as saveInMemoryCheckpoint,Ln as saveVersion,en as seedBasenameIndex,ai as serializeError,bi as setActiveSpanAttributes,dn as shadowGit,hi as shutdownTelemetry,mt as skillManagementPath,H as spansCurrentPath,ui as spansPreviousPath,yt as spawnDetached,Q as splitMarkdownBlocks,q as startWatcher,Je as streamingProblemEvent,rr as swapContributors,M as teardownToleranceTelemetryWriter,Qn as toBroadcasterKey,Re as tracedAppendFileSync,Ue as tracedLinkSync,$e as tracedMkdir,re as tracedMkdirSync,ve as tracedRename,Ne as tracedRenameSync,lt as tracedRmSync,Ti as tracedRmdirSync,L as tracedUnlinkSync,kt as tracedWriteFile,pe as tracedWriteFileSync,wt as updateLastKnownHash,f as updateProcessLockPort,d as updateServerLockPort,Pt as updateUiLockPort,ce as validateAgentId,Oe as validateCloneInputs,Pr as validateSkillZip,Ce as withSpan,Wt as withSpanSync,zt as writeRootGitignoreForNewRepo,Yt as writeSkillManagement,it as writeStateManifest,D as writeTargetVersion,Tn as writeTracker};
1
+ import{An as e,Fn as t,J as n,Pi as r,Vi as i,Wt as a,a as o,an as s,c,d as l,f as u,g as d,h as f,hn as p,i as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C,ui as w,un as T}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{$ as E,$i as D,$n as O,$r as k,$t as A,A as j,Ai as M,An as N,Ar as P,At as F,B as I,Bi as L,Bn as R,Br as z,Bt as B,C as V,Ci as H,Cn as U,Cr as W,Ct as G,D as K,Di as q,Dn as J,Dr as Y,Dt as X,E as Z,Ei as Q,En as $,Er as ee,Et as te,F as ne,Fi as re,Fn as ie,Fr as ae,Ft as oe,G as se,Gi as ce,Gn as le,Gr as ue,Gt as de,H as fe,Hi as pe,Hn as me,Hr as he,Ht as ge,I as _e,Ii as ve,In as ye,Ir as be,It as xe,J as Se,Ji as Ce,Jn as we,Jr as Te,Jt as Ee,K as De,Ki as Oe,Kn as ke,Kr as Ae,Kt as je,L as Me,Li as Ne,Ln as Pe,Lr as Fe,Lt as Ie,M as Le,Mi as Re,Mn as ze,Mr as Be,Mt as Ve,N as He,Ni as Ue,Nn as We,Nr as Ge,Nt as Ke,O as qe,Oi as Je,On as Ye,Or as Xe,Ot as Ze,P as Qe,Pi as $e,Pn as et,Pr as tt,Pt as nt,Q as rt,Qi as it,Qn as at,Qr as ot,Qt as st,R as ct,Ri as lt,Rn as ut,Rr as dt,Rt as ft,S as pt,Si as mt,Sn as ht,Sr as gt,St as _t,T as vt,Ti as yt,Tn as bt,Tr as xt,Tt as St,U as Ct,Ui as wt,Un as Tt,Ur as Et,Ut as Dt,V as Ot,Vi as kt,Vn as At,Vr as jt,Vt as Mt,W as Nt,Wi as Pt,Wn as Ft,Wr as It,Wt as Lt,X as Rt,Xi as zt,Xn as Bt,Xr as Vt,Xt as Ht,Y as Ut,Yi as Wt,Yn as Gt,Yr as Kt,Yt as qt,Z as Jt,Zi as Yt,Zn as Xt,Zr as Zt,Zt as Qt,_ as $t,_i as en,_n as tn,_r as nn,_t as rn,a as an,ai as on,an as sn,ar as cn,at as ln,b as un,bi as dn,bn as fn,br as pn,bt as mn,c as hn,ci as gn,cn as _n,cr as vn,ct as yn,d as bn,di as xn,dn as Sn,dr as Cn,dt as wn,ea as Tn,ei as En,en as Dn,er as On,et as kn,f as An,fa as jn,fi as Mn,fn as Nn,fr as Pn,ft as Fn,g as In,gi as Ln,gn as Rn,gr as zn,gt as Bn,h as Vn,hi as Hn,hn as Un,hr as Wn,ht as Gn,i as Kn,ii as qn,in as Jn,ir as Yn,it as Xn,j as Zn,ji as Qn,jn as $n,jr as er,jt as tr,k as nr,ki as rr,kn as ir,kr as ar,kt as or,l as sr,li as cr,ln as lr,lr as ur,lt as dr,m as fr,mi as pr,mn as mr,mr as hr,mt as gr,n as _r,ni as vr,nn as yr,nr as br,nt as xr,o as Sr,oi as Cr,on as wr,or as Tr,ot as Er,p as Dr,pa as Or,pi as kr,pn as Ar,pr as jr,pt as Mr,q as Nr,qi as Pr,qn as Fr,qr as Ir,qt as Lr,r as Rr,ri as zr,rn as Br,rr as Vr,rt as Hr,s as Ur,si as Wr,sn as Gr,sr as Kr,st as qr,t as Jr,ti as Yr,tn as Xr,tr as Zr,tt as Qr,u as $r,ui as ei,un as ti,ur as ni,ut as ri,v as ii,vi as ai,vn as oi,vr as si,vt as ci,w as li,wi as ui,wn as di,wr as fi,wt as pi,x as mi,xi as hi,xn as gi,xr as _i,xt as vi,y as yi,yi as bi,yn as xi,yr as Si,yt as Ci,z as wi,zi as Ti,zn as Ei,zr as Di,zt as Oi}from"./dist-DG18qmsf.mjs";export{Jr as AGENT_ID_MAX_LEN,_r as AGENT_ID_RE,Rr as AGENT_WRITE_ORIGIN,Kn as AgentFocusBroadcaster,an as AgentPresenceBroadcaster,Sr as AgentSessionCapacityError,Ur as AgentSessionManager,hn as AutoStartDisabledError,sr as BUNDLE_IDS,$r as BUNDLE_SCOPE,bn as BUNDLE_SKILL_NAME,An as BacklinkIndex,Dr as CC1Broadcaster,n as CC1_CONTRACT_VERSION,fr as CONFIG_FILENAME,Vn as CONFLICT_MARKER_RE,In as CURSOR_BUNDLE_PATHS_BY_PLATFORM,$t as ConfigSchema,ii as DEFAULT_CHECKPOINT_RETENTION,yi as DEFAULT_EMBEDDINGS_DIMENSIONS,un as DEFAULT_PACK_ID,mi as EMBEDDINGS_API_KEY_ENV,pt as FILE_SYSTEM_WRITER,V as FILE_WATCHER_ORIGIN,li as FileEmbeddingsBackend,vt as GIT_PREFLIGHT_FAIL_SPAN_NAME,Z as GIT_UPSTREAM_WRITER,jn as GitDirAccessError,K as GitNotAvailableError,qe as GitTooOldError,nr as HOCUSPOCUS_AUTH_REJECTION_REASONS,j as HocuspocusAuthRejection,Zn as HocuspocusAuthTokenSchema,Le as INSTALLED_AGENTS_SCHEMES,a as LINEAGE_EPOCH_KEY,He as LIVE_DERIVED_INDEX_DEBOUNCE_MS,Qe as LOG_MD_TEMPLATE,ne as MANAGED_RENAME_ORIGIN,_e as MAX_AGENT_SESSIONS,Me as MCP_CONNECTION_ID_HEADER,s as MCP_SERVER_NAME,ct as MIN_GIT_VERSION,wi as MISSING_OK_CONFIG_MESSAGE,Or as MalformedGitPointerError,I as McpLogger,Ot as MissingOkConfigError,fe as OBSERVER_SYNC_ORIGIN,Ct as OK_OKIGNORE_TEMPLATE,T as ORPHAN_MODES,Nt as PANE_TARGET_TTL_MS,p as PROTOCOL_VERSION,se as PinoLogger,S as ProcessLockCollisionError,De as ProjectGitInitError,Nr as ROLLBACK_ORIGIN,Se as ROOT_GITIGNORE_TEMPLATE,_ as RUNTIME_VERSION,Ut as SERVICE_WRITER,Rt as SKILL_INSTALL_EVENTS_FILE_REL,e as SKILL_STATE_TARGETS,Jt as STARTER_FOLDERS,rt as STARTER_FOLDER_FRONTMATTER_FILENAME,E as STARTER_PACKS,kn as STARTER_PACK_IDS,Qr as STARTER_TEMPLATES,xr as STATE_MANIFEST_FILENAME,b as STATE_SCHEMA_VERSION,t as SYSTEM_DOC_NAME,Hr as SeedPrerequisiteError,Xn as SeedRootDirError,m as ServerLockCollisionError,ln as SingleFileNotAFileError,Er as SingleFileNotFoundError,qr as SingleFileNotMarkdownError,yn as StateManifestError,dr as TagIndex,ri as USER_GLOBAL_BUNDLE_IDS,wn as UiLockCollisionError,Fn as __getShowAllWalkStatsForTesting,Mr as __resetShowAllWalkStatsForTesting,o as acquireProcessLock,v as acquireServerLock,gr as acquireUiLock,Gn as applyAgentMarkdownWrite,Bn as applyExternalChange,rn as applySeed,ci as armPaneTarget,Ci as assertCompatibleStateManifest,mn as assertGitAvailable,vi as assertNeverDiskEvent,_t as attachIdleShutdown,G as bootServer,pi as buildAndOpenSkill,St as buildConfigYmlContent,te as buildExecResult,X as buildSkillZip,Ze as buildStarterFolderFrontmatterYaml,or as buildWipTree,F as bundleSkillMdPath,tr as classifyEvents,Ve as classifyFsPath,Ke as clearArmedPaneTarget,nt as clearContributors,oe as clearEmbeddingsKeyFromAllBackends,xe as coercePackId,w as colorFromSeed,Ie as commitUpstreamImport,ft as commitWip,Oi as commitWipFromTree,B as compareSemver,Mt as containsConflictMarkers,ge as contentHash,Dt as contributorCount,Lt as countShadowObjects,de as countStaleAgentWipRefs,je as countWipRefs,Lr as createApiExtension,Ee as createAssetServeMiddleware,qt as createContentFilter,Ht as createContentFilterAsync,Qt as createEmbeddingsSecretStore,st as createEphemeralProjectDir,A as createExternalChangeHandler,Dn as createFileLogger,Xr as createLiveDerivedIndexExtension,yr as createMcpHttpHandler,Br as createOsProbe,Jn as createPersistenceExtension,sn as createServer,wr as createServerObserverExtension,Gr as createStreamingErrorWriter,_n as createTestLogger,lr as describeStoredEmbeddingsKey,ti as detectClaudeDesktopPresence,Sn as detectGit,Nn as detectProjectShape,Ar as emitPreflightFailureSpan,mr as encodeDocName,Un as encodeFolderRoute,Rn as ensureProjectGit,tn as errorResponse,oi as evictStaleTrackerEntries,xi as extractWikiLinksFromMarkdown,fn as fallbackPaths,gi as findEnclosingGitRoot,ht as findEnclosingProjectRoot,U as flushFileLogger,di as formatAuthRejectionWire,bt as formatContributors,$ as formatContributorsFrom,J as formatPackRationale,Ye as gcCheckpointRefs,ir as getCurrentMcpLogger,N as getLocalDir,$n as getLogFilePath,ze as getLogger,We as getLogsDir,et as getMeter,ie as getMetrics,ye as getTracer,Pe as handleCollabSocketError,ut as handleSpawnCursor,Ei as hasGcLogLatch,r as iconFromClientName,R as incrementCollabSocketFilteredError,At as incrementServerObserverFire,me as initContent,Tt as initShadowRepo,Ft as initTelemetry,le as initToleranceTelemetryWriter,ke as installPrettyZodErrors,Fr as installTestLoggers,we as installUserSkill,Gt as isAllowedApiOrigin,Bt as isAllowedWorkspaceHostHeader,Xt as isConfigDoc,at as isHocuspocusAuthRejectionReason,O as isKnownPackId,On as isLinkIndexExcludedDoc,Zr as isLoopbackAddress,br as isManagedArtifactDoc,i as isOrphanMode,Vr as isPairedWriteOrigin,Yn as isPathWithinDir,x as isProcessAlive,cn as isProjectRoot,Tr as isProjectSkillManaged,Kr as isReservedForUserTree,vn as isSelfWrite,ur as isSystemDoc,ni as isToleranceTelemetryEnabled,c as isValidLockPid,Cn as lastKnownHash,Pn as listRescueCheckpoints,jr as listStarterPacks,hr as loadPrincipal,h as lockFilePath,Wn as loggerFactory,zn as logsCurrentPath,nn as logsPreviousPath,si as makeLazyEmbeddingsKeyStore,Si as mountMcpAndApi,pn as normalizeFsPath,_i as packageVersionMajorMinor,gt as parseAuthRejectionWire,W as parseGitVersion,fi as parseHocuspocusAuthToken,xt as parseKeepaliveConnectionId,ee as pathToDocName,Y as planSeed,Xe as prepareSingleFileOpen,ar as readAllTargets,P as readArmedPaneTarget,er as readBranchFromHead,C as readProcessLock,l as readProcessLockDetailed,Be as readProjectLocalSemanticConfig,u as readServerLock,Ge as readServerPackageVersion,tt as readSkillInstallStateSnapshot,ae as readSkillManagement,be as readStateManifest,Fe as readTargetRecordedAt,dt as readTargetVersion,Di as readUiLock,z as reconcile,jt as recordContributor,he as recordSkillInstallEvent,Et as registerAllTools,It as registerWrite,y as releaseProcessLock,g as releaseServerLock,ue as releaseUiLock,Ae as removeLastKnownHash,Ir as resetMetrics,Te as resolveBundledSkillDir,Kt as resolveContentDir,Vt as resolveCursorBinaryDefault,Zt as resolveCursorSpawnInvocation,ot as resolveLockDir,k as resolvePack,En as resolvePackageVersion,Yr as resolveUiInfo,vr as restoreContributors,zr as restoreLifecycleFromConflictsJson,qn as rewriteMarkdownLinksForDocumentRename,on as rewriteWikiLinksForDocumentRename,Cr as runAuthReposSubprocess,Wr as runAuthStatusSubprocess,gn as runCloneSubprocess,cr as runDeviceFlowSubprocess,ei as runWithMcpLogger,xn as safeContentPath,Mn as safeSubdir,kr as safetyCheckpoint,pr as sanitizeClientName,Hn as saveInMemoryCheckpoint,Ln as saveVersion,en as seedBasenameIndex,ai as serializeError,bi as setActiveSpanAttributes,dn as shadowGit,hi as shutdownTelemetry,mt as skillManagementPath,H as spansCurrentPath,ui as spansPreviousPath,yt as spawnDetached,Q as splitMarkdownBlocks,q as startWatcher,Je as streamingProblemEvent,rr as swapContributors,M as teardownToleranceTelemetryWriter,Qn as toBroadcasterKey,Re as tracedAppendFileSync,Ue as tracedLinkSync,$e as tracedMkdir,re as tracedMkdirSync,ve as tracedRename,Ne as tracedRenameSync,lt as tracedRmSync,Ti as tracedRmdirSync,L as tracedUnlinkSync,kt as tracedWriteFile,pe as tracedWriteFileSync,wt as updateLastKnownHash,f as updateProcessLockPort,d as updateServerLockPort,Pt as updateUiLockPort,ce as validateAgentId,Oe as validateCloneInputs,Pr as validateSkillZip,Ce as withSpan,Wt as withSpanSync,zt as writeRootGitignoreForNewRepo,Yt as writeSkillManagement,it as writeStateManifest,D as writeTargetVersion,Tn as writeTracker};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{i as e,r as t,t as n}from"./gh-detect-DsccWGZs.mjs";import{C as r,E as i,S as a,T as o,_ as s,b as c,d as l,g as u,h as d,i as f,o as p,r as m,s as h,t as g,w as _,x as v,y}from"./init-B7uIAmKy.mjs";import{d as b,f as x,m as S,n as C,p as w,r as T,t as E}from"./src-Cj9YcMw2.mjs";import{a as D,c as O,l as k,o as A,r as j,s as M,t as N,u as P}from"./write-project-skill-DF8Mypd7.mjs";import{n as F}from"./loader-C1HBTcQa.mjs";import{n as I}from"./preview-lXnqdb3D.mjs";import{n as L,t as R}from"./mcp-migrate-event-D0NrGjvc.mjs";export{j as ALL_EDITOR_IDS,D as EDITOR_LABELS,A as EDITOR_TARGETS,M as HOSTS_WITH_USER_SKILL_DIR,g as LAUNCH_CONFIG_NAME,m as LAUNCH_UI_CHAIN_SENTINEL,f as LAUNCH_UI_CHAIN_V1,c as addOkPathsToGitExclude,N as assertProjectPathSafe,O as buildManagedServerEntry,R as buildMcpConfigMigrateEvent,p as classifyExistingMcpEntry,t as createTokenStore,n as detectGh,h as detectInstalledEditors,v as formatTrackedRemediation,a as getExcludedOkPaths,r as getOkArtifactPaths,k as isEntryUpToDate,P as isOwnManagedEntry,F as loadConfig,e as makeLazyProbeTokenStore,b as parseGitHubBlobUrl,x as parseGitHubShareUrl,w as parseGitHubTreeUrl,S as parseGitUrl,I as previewContent,_ as probeTrackedOkPaths,l as readExistingMcpEntry,o as readSharingMode,i as removeOkPathsFromGitExclude,y as resolveProjectRoot,T as runStop,d as scaffoldLaunchJson,L as truncatePriorEntry,C as validateLocalFolderForShare,u as writeEditorMcpConfig,E as writeProjectAiIntegrations,s as writeUserMcpConfigs};
1
+ import{i as e,r as t,t as n}from"./gh-detect-DsccWGZs.mjs";import{C as r,E as i,S as a,T as o,_ as s,b as c,d as l,g as u,h as d,i as f,o as p,r as m,s as h,t as g,w as _,x as v,y}from"./init-BEl-oLte.mjs";import{d as b,f as x,m as S,n as C,p as w,r as T,t as E}from"./src-AOM5DOYm.mjs";import{a as D,c as O,l as k,o as A,r as j,s as M,t as N,u as P}from"./write-project-skill-CD-qC1w3.mjs";import{n as F}from"./loader-CAzv0pqx.mjs";import{n as I}from"./preview-BQFuOGx7.mjs";import{n as L,t as R}from"./mcp-migrate-event-D0NrGjvc.mjs";export{j as ALL_EDITOR_IDS,D as EDITOR_LABELS,A as EDITOR_TARGETS,M as HOSTS_WITH_USER_SKILL_DIR,g as LAUNCH_CONFIG_NAME,m as LAUNCH_UI_CHAIN_SENTINEL,f as LAUNCH_UI_CHAIN_V1,c as addOkPathsToGitExclude,N as assertProjectPathSafe,O as buildManagedServerEntry,R as buildMcpConfigMigrateEvent,p as classifyExistingMcpEntry,t as createTokenStore,n as detectGh,h as detectInstalledEditors,v as formatTrackedRemediation,a as getExcludedOkPaths,r as getOkArtifactPaths,k as isEntryUpToDate,P as isOwnManagedEntry,F as loadConfig,e as makeLazyProbeTokenStore,b as parseGitHubBlobUrl,x as parseGitHubShareUrl,w as parseGitHubTreeUrl,S as parseGitUrl,I as previewContent,_ as probeTrackedOkPaths,l as readExistingMcpEntry,o as readSharingMode,i as removeOkPathsFromGitExclude,y as resolveProjectRoot,T as runStop,d as scaffoldLaunchJson,L as truncatePriorEntry,C as validateLocalFolderForShare,u as writeEditorMcpConfig,E as writeProjectAiIntegrations,s as writeUserMcpConfigs};
@@ -1,4 +1,4 @@
1
- import{a as e,s as t,t as n}from"./chunk-C94x7I9S.mjs";import{r,t as i}from"./esm-BLMtE3s6.mjs";import{Ct as a,Rt as o,Yi as s,vi as c,wt as l,y as u,yn as d,zt as f}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{Hn as p,Jn as m,K as h,Xi as g,Xn as _,Yn as v,ar as y,gn as b,ha as x,sa as S,tr as C,ua as w}from"./dist-CcBhqiSK.mjs";import"./constants-DOCLO9Wy.mjs";import{d as ee,f as T,n as te,o as E,r as ne,t as re}from"./write-project-skill-DF8Mypd7.mjs";import{t as D}from"./is-object-Cg453afR.mjs";import{i as O,o as k,r as A,s as j,t as M}from"./colors-8SzMRIVy.mjs";import{t as ie}from"./preview-lXnqdb3D.mjs";import{execFileSync as ae}from"node:child_process";import{existsSync as N,mkdirSync as P,readFileSync as F,realpathSync as oe,writeFileSync as I}from"node:fs";import se,{dirname as L,isAbsolute as ce,join as R,relative as z,resolve as le,sep as ue}from"node:path";import B from"node:process";import{homedir as de}from"node:os";import{randomUUID as fe}from"node:crypto";import{stripVTControlCharacters as pe,styleText as V}from"node:util";import{AsyncLocalStorage as me,AsyncResource as H}from"node:async_hooks";import{createServer as he,request as ge}from"node:http";import*as _e from"node:readline";import{connect as ve}from"node:net";function ye(){return B.platform.startsWith(`win`)?!!B.env.CI||!!B.env.WT_SESSION||!!B.env.TERMINUS_SUBLIME||B.env.ConEmuTask===`{cmd::Cmder}`||B.env.TERM_PROGRAM===`Terminus-Sublime`||B.env.TERM_PROGRAM===`vscode`||B.env.TERM===`xterm-256color`||B.env.TERM===`alacritty`||B.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:B.env.TERM!==`linux`}const be={circleQuestionMark:`(?)`,questionMarkPrefix:`(?)`,square:`█`,squareDarkShade:`▓`,squareMediumShade:`▒`,squareLightShade:`░`,squareTop:`▀`,squareBottom:`▄`,squareLeft:`▌`,squareRight:`▐`,squareCenter:`■`,bullet:`●`,dot:`․`,ellipsis:`…`,pointerSmall:`›`,triangleUp:`▲`,triangleUpSmall:`▴`,triangleDown:`▼`,triangleDownSmall:`▾`,triangleLeftSmall:`◂`,triangleRightSmall:`▸`,home:`⌂`,heart:`♥`,musicNote:`♪`,musicNoteBeamed:`♫`,arrowUp:`↑`,arrowDown:`↓`,arrowLeft:`←`,arrowRight:`→`,arrowLeftRight:`↔`,arrowUpDown:`↕`,almostEqual:`≈`,notEqual:`≠`,lessOrEqual:`≤`,greaterOrEqual:`≥`,identical:`≡`,infinity:`∞`,subscriptZero:`₀`,subscriptOne:`₁`,subscriptTwo:`₂`,subscriptThree:`₃`,subscriptFour:`₄`,subscriptFive:`₅`,subscriptSix:`₆`,subscriptSeven:`₇`,subscriptEight:`₈`,subscriptNine:`₉`,oneHalf:`½`,oneThird:`⅓`,oneQuarter:`¼`,oneFifth:`⅕`,oneSixth:`⅙`,oneEighth:`⅛`,twoThirds:`⅔`,twoFifths:`⅖`,threeQuarters:`¾`,threeFifths:`⅗`,threeEighths:`⅜`,fourFifths:`⅘`,fiveSixths:`⅚`,fiveEighths:`⅝`,sevenEighths:`⅞`,line:`─`,lineBold:`━`,lineDouble:`═`,lineDashed0:`┄`,lineDashed1:`┅`,lineDashed2:`┈`,lineDashed3:`┉`,lineDashed4:`╌`,lineDashed5:`╍`,lineDashed6:`╴`,lineDashed7:`╶`,lineDashed8:`╸`,lineDashed9:`╺`,lineDashed10:`╼`,lineDashed11:`╾`,lineDashed12:`−`,lineDashed13:`–`,lineDashed14:`‐`,lineDashed15:`⁃`,lineVertical:`│`,lineVerticalBold:`┃`,lineVerticalDouble:`║`,lineVerticalDashed0:`┆`,lineVerticalDashed1:`┇`,lineVerticalDashed2:`┊`,lineVerticalDashed3:`┋`,lineVerticalDashed4:`╎`,lineVerticalDashed5:`╏`,lineVerticalDashed6:`╵`,lineVerticalDashed7:`╷`,lineVerticalDashed8:`╹`,lineVerticalDashed9:`╻`,lineVerticalDashed10:`╽`,lineVerticalDashed11:`╿`,lineDownLeft:`┐`,lineDownLeftArc:`╮`,lineDownBoldLeftBold:`┓`,lineDownBoldLeft:`┒`,lineDownLeftBold:`┑`,lineDownDoubleLeftDouble:`╗`,lineDownDoubleLeft:`╖`,lineDownLeftDouble:`╕`,lineDownRight:`┌`,lineDownRightArc:`╭`,lineDownBoldRightBold:`┏`,lineDownBoldRight:`┎`,lineDownRightBold:`┍`,lineDownDoubleRightDouble:`╔`,lineDownDoubleRight:`╓`,lineDownRightDouble:`╒`,lineUpLeft:`┘`,lineUpLeftArc:`╯`,lineUpBoldLeftBold:`┛`,lineUpBoldLeft:`┚`,lineUpLeftBold:`┙`,lineUpDoubleLeftDouble:`╝`,lineUpDoubleLeft:`╜`,lineUpLeftDouble:`╛`,lineUpRight:`└`,lineUpRightArc:`╰`,lineUpBoldRightBold:`┗`,lineUpBoldRight:`┖`,lineUpRightBold:`┕`,lineUpDoubleRightDouble:`╚`,lineUpDoubleRight:`╙`,lineUpRightDouble:`╘`,lineUpDownLeft:`┤`,lineUpBoldDownBoldLeftBold:`┫`,lineUpBoldDownBoldLeft:`┨`,lineUpDownLeftBold:`┥`,lineUpBoldDownLeftBold:`┩`,lineUpDownBoldLeftBold:`┪`,lineUpDownBoldLeft:`┧`,lineUpBoldDownLeft:`┦`,lineUpDoubleDownDoubleLeftDouble:`╣`,lineUpDoubleDownDoubleLeft:`╢`,lineUpDownLeftDouble:`╡`,lineUpDownRight:`├`,lineUpBoldDownBoldRightBold:`┣`,lineUpBoldDownBoldRight:`┠`,lineUpDownRightBold:`┝`,lineUpBoldDownRightBold:`┡`,lineUpDownBoldRightBold:`┢`,lineUpDownBoldRight:`┟`,lineUpBoldDownRight:`┞`,lineUpDoubleDownDoubleRightDouble:`╠`,lineUpDoubleDownDoubleRight:`╟`,lineUpDownRightDouble:`╞`,lineDownLeftRight:`┬`,lineDownBoldLeftBoldRightBold:`┳`,lineDownLeftBoldRightBold:`┯`,lineDownBoldLeftRight:`┰`,lineDownBoldLeftBoldRight:`┱`,lineDownBoldLeftRightBold:`┲`,lineDownLeftRightBold:`┮`,lineDownLeftBoldRight:`┭`,lineDownDoubleLeftDoubleRightDouble:`╦`,lineDownDoubleLeftRight:`╥`,lineDownLeftDoubleRightDouble:`╤`,lineUpLeftRight:`┴`,lineUpBoldLeftBoldRightBold:`┻`,lineUpLeftBoldRightBold:`┷`,lineUpBoldLeftRight:`┸`,lineUpBoldLeftBoldRight:`┹`,lineUpBoldLeftRightBold:`┺`,lineUpLeftRightBold:`┶`,lineUpLeftBoldRight:`┵`,lineUpDoubleLeftDoubleRightDouble:`╩`,lineUpDoubleLeftRight:`╨`,lineUpLeftDoubleRightDouble:`╧`,lineUpDownLeftRight:`┼`,lineUpBoldDownBoldLeftBoldRightBold:`╋`,lineUpDownBoldLeftBoldRightBold:`╈`,lineUpBoldDownLeftBoldRightBold:`╇`,lineUpBoldDownBoldLeftRightBold:`╊`,lineUpBoldDownBoldLeftBoldRight:`╉`,lineUpBoldDownLeftRight:`╀`,lineUpDownBoldLeftRight:`╁`,lineUpDownLeftBoldRight:`┽`,lineUpDownLeftRightBold:`┾`,lineUpBoldDownBoldLeftRight:`╂`,lineUpDownLeftBoldRightBold:`┿`,lineUpBoldDownLeftBoldRight:`╃`,lineUpBoldDownLeftRightBold:`╄`,lineUpDownBoldLeftBoldRight:`╅`,lineUpDownBoldLeftRightBold:`╆`,lineUpDoubleDownDoubleLeftDoubleRightDouble:`╬`,lineUpDoubleDownDoubleLeftRight:`╫`,lineUpDownLeftDoubleRightDouble:`╪`,lineCross:`╳`,lineBackslash:`╲`,lineSlash:`╱`},xe={tick:`✔`,info:`ℹ`,warning:`⚠`,cross:`✘`,squareSmall:`◻`,squareSmallFilled:`◼`,circle:`◯`,circleFilled:`◉`,circleDotted:`◌`,circleDouble:`◎`,circleCircle:`ⓞ`,circleCross:`ⓧ`,circlePipe:`Ⓘ`,radioOn:`◉`,radioOff:`◯`,checkboxOn:`☒`,checkboxOff:`☐`,checkboxCircleOn:`ⓧ`,checkboxCircleOff:`Ⓘ`,pointer:`❯`,triangleUpOutline:`△`,triangleLeft:`◀`,triangleRight:`▶`,lozenge:`◆`,lozengeOutline:`◇`,hamburger:`☰`,smiley:`㋡`,mustache:`෴`,star:`★`,play:`▶`,nodejs:`⬢`,oneSeventh:`⅐`,oneNinth:`⅑`,oneTenth:`⅒`},Se={tick:`√`,info:`i`,warning:`‼`,cross:`×`,squareSmall:`□`,squareSmallFilled:`■`,circle:`( )`,circleFilled:`(*)`,circleDotted:`( )`,circleDouble:`( )`,circleCircle:`(○)`,circleCross:`(×)`,circlePipe:`(│)`,radioOn:`(*)`,radioOff:`( )`,checkboxOn:`[×]`,checkboxOff:`[ ]`,checkboxCircleOn:`(×)`,checkboxCircleOff:`( )`,pointer:`>`,triangleUpOutline:`∆`,triangleLeft:`◄`,triangleRight:`►`,lozenge:`♦`,lozengeOutline:`◊`,hamburger:`≡`,smiley:`☺`,mustache:`┌─┐`,star:`✶`,play:`►`,nodejs:`♦`,oneSeventh:`1/7`,oneNinth:`1/9`,oneTenth:`1/10`},Ce={...be,...xe},we={...be,...Se},U=ye()?Ce:we;Object.entries(xe);var Te=n(((t,n)=>{n.exports=i;function r(t){let n={defaultWidth:0,output:process.stdout,tty:e(`tty`)};return t?(Object.keys(n).forEach(function(e){t[e]||(t[e]=n[e])}),t):n}function i(e){let t=r(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let e=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(e)&&e!==0)return e}return t.defaultWidth}}));const Ee=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),De=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,Oe=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,ke=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Ae=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,je=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,Me=/\t{1,1000}/y,Ne=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,Pe=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Fe=/\p{M}+/gu,Ie={limit:1/0,ellipsis:``},Le=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?Le(i,Ie,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[Pe,l],[ke,0],[Ae,o],[Me,s],[Ne,c],[je,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,S=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(Fe,``)){let t=e.codePointAt(0)||0;if(S=De(t)?2:Oe(t)?u:l,x+S>v&&(_=Math.min(_,Math.max(y,f)+h)),x+S>r){g=!0;break outer}h+=e.length,x+=S}y=b=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===je?Ee(e.slice(p,n.lastIndex)):n===Ne?1:n.lastIndex-p,S=h*i,x+S>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+S>r){g=!0;break outer}x+=S,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},Re={limit:1/0,ellipsis:``,ellipsisWidth:0},W=(e,t={})=>Le(e,Re,t).width,ze=`]8;;`,Be=RegExp(`(?:\\[(?<code>\\d+)m|\\${ze}(?<uri>.*))`,`y`),Ve=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},He=e=>`[${e}m`,Ue=e=>`${ze}${e}`,We=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:W(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=W(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(ze,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},Ge=e=>{let t=e.split(` `),n=t.length;for(;n&&!W(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Ke=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=W(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=W(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),We(s,r,t),c=W(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){We(s,r,t),c=W(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){We(s,r,t),c=W(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>Ge(e)));let l=s.join(`
1
+ import{a as e,s as t,t as n}from"./chunk-C94x7I9S.mjs";import{r,t as i}from"./esm-BLMtE3s6.mjs";import{Ct as a,Rt as o,Yi as s,vi as c,wt as l,y as u,yn as d,zt as f}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{Hn as p,Jn as m,K as h,Xi as g,Xn as _,Yn as v,ar as y,gn as b,ha as x,sa as S,tr as C,ua as w}from"./dist-DG18qmsf.mjs";import"./constants-CccigS7Z.mjs";import{d as ee,f as T,n as te,o as E,r as ne,t as re}from"./write-project-skill-CD-qC1w3.mjs";import{t as D}from"./is-object-Cg453afR.mjs";import{i as O,o as k,r as A,s as j,t as M}from"./colors-8SzMRIVy.mjs";import{t as ie}from"./preview-BQFuOGx7.mjs";import{execFileSync as ae}from"node:child_process";import{existsSync as N,mkdirSync as P,readFileSync as F,realpathSync as oe,writeFileSync as I}from"node:fs";import se,{dirname as L,isAbsolute as ce,join as R,relative as z,resolve as le,sep as ue}from"node:path";import B from"node:process";import{homedir as de}from"node:os";import{randomUUID as fe}from"node:crypto";import{stripVTControlCharacters as pe,styleText as V}from"node:util";import{AsyncLocalStorage as me,AsyncResource as H}from"node:async_hooks";import{createServer as he,request as ge}from"node:http";import*as _e from"node:readline";import{connect as ve}from"node:net";function ye(){return B.platform.startsWith(`win`)?!!B.env.CI||!!B.env.WT_SESSION||!!B.env.TERMINUS_SUBLIME||B.env.ConEmuTask===`{cmd::Cmder}`||B.env.TERM_PROGRAM===`Terminus-Sublime`||B.env.TERM_PROGRAM===`vscode`||B.env.TERM===`xterm-256color`||B.env.TERM===`alacritty`||B.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:B.env.TERM!==`linux`}const be={circleQuestionMark:`(?)`,questionMarkPrefix:`(?)`,square:`█`,squareDarkShade:`▓`,squareMediumShade:`▒`,squareLightShade:`░`,squareTop:`▀`,squareBottom:`▄`,squareLeft:`▌`,squareRight:`▐`,squareCenter:`■`,bullet:`●`,dot:`․`,ellipsis:`…`,pointerSmall:`›`,triangleUp:`▲`,triangleUpSmall:`▴`,triangleDown:`▼`,triangleDownSmall:`▾`,triangleLeftSmall:`◂`,triangleRightSmall:`▸`,home:`⌂`,heart:`♥`,musicNote:`♪`,musicNoteBeamed:`♫`,arrowUp:`↑`,arrowDown:`↓`,arrowLeft:`←`,arrowRight:`→`,arrowLeftRight:`↔`,arrowUpDown:`↕`,almostEqual:`≈`,notEqual:`≠`,lessOrEqual:`≤`,greaterOrEqual:`≥`,identical:`≡`,infinity:`∞`,subscriptZero:`₀`,subscriptOne:`₁`,subscriptTwo:`₂`,subscriptThree:`₃`,subscriptFour:`₄`,subscriptFive:`₅`,subscriptSix:`₆`,subscriptSeven:`₇`,subscriptEight:`₈`,subscriptNine:`₉`,oneHalf:`½`,oneThird:`⅓`,oneQuarter:`¼`,oneFifth:`⅕`,oneSixth:`⅙`,oneEighth:`⅛`,twoThirds:`⅔`,twoFifths:`⅖`,threeQuarters:`¾`,threeFifths:`⅗`,threeEighths:`⅜`,fourFifths:`⅘`,fiveSixths:`⅚`,fiveEighths:`⅝`,sevenEighths:`⅞`,line:`─`,lineBold:`━`,lineDouble:`═`,lineDashed0:`┄`,lineDashed1:`┅`,lineDashed2:`┈`,lineDashed3:`┉`,lineDashed4:`╌`,lineDashed5:`╍`,lineDashed6:`╴`,lineDashed7:`╶`,lineDashed8:`╸`,lineDashed9:`╺`,lineDashed10:`╼`,lineDashed11:`╾`,lineDashed12:`−`,lineDashed13:`–`,lineDashed14:`‐`,lineDashed15:`⁃`,lineVertical:`│`,lineVerticalBold:`┃`,lineVerticalDouble:`║`,lineVerticalDashed0:`┆`,lineVerticalDashed1:`┇`,lineVerticalDashed2:`┊`,lineVerticalDashed3:`┋`,lineVerticalDashed4:`╎`,lineVerticalDashed5:`╏`,lineVerticalDashed6:`╵`,lineVerticalDashed7:`╷`,lineVerticalDashed8:`╹`,lineVerticalDashed9:`╻`,lineVerticalDashed10:`╽`,lineVerticalDashed11:`╿`,lineDownLeft:`┐`,lineDownLeftArc:`╮`,lineDownBoldLeftBold:`┓`,lineDownBoldLeft:`┒`,lineDownLeftBold:`┑`,lineDownDoubleLeftDouble:`╗`,lineDownDoubleLeft:`╖`,lineDownLeftDouble:`╕`,lineDownRight:`┌`,lineDownRightArc:`╭`,lineDownBoldRightBold:`┏`,lineDownBoldRight:`┎`,lineDownRightBold:`┍`,lineDownDoubleRightDouble:`╔`,lineDownDoubleRight:`╓`,lineDownRightDouble:`╒`,lineUpLeft:`┘`,lineUpLeftArc:`╯`,lineUpBoldLeftBold:`┛`,lineUpBoldLeft:`┚`,lineUpLeftBold:`┙`,lineUpDoubleLeftDouble:`╝`,lineUpDoubleLeft:`╜`,lineUpLeftDouble:`╛`,lineUpRight:`└`,lineUpRightArc:`╰`,lineUpBoldRightBold:`┗`,lineUpBoldRight:`┖`,lineUpRightBold:`┕`,lineUpDoubleRightDouble:`╚`,lineUpDoubleRight:`╙`,lineUpRightDouble:`╘`,lineUpDownLeft:`┤`,lineUpBoldDownBoldLeftBold:`┫`,lineUpBoldDownBoldLeft:`┨`,lineUpDownLeftBold:`┥`,lineUpBoldDownLeftBold:`┩`,lineUpDownBoldLeftBold:`┪`,lineUpDownBoldLeft:`┧`,lineUpBoldDownLeft:`┦`,lineUpDoubleDownDoubleLeftDouble:`╣`,lineUpDoubleDownDoubleLeft:`╢`,lineUpDownLeftDouble:`╡`,lineUpDownRight:`├`,lineUpBoldDownBoldRightBold:`┣`,lineUpBoldDownBoldRight:`┠`,lineUpDownRightBold:`┝`,lineUpBoldDownRightBold:`┡`,lineUpDownBoldRightBold:`┢`,lineUpDownBoldRight:`┟`,lineUpBoldDownRight:`┞`,lineUpDoubleDownDoubleRightDouble:`╠`,lineUpDoubleDownDoubleRight:`╟`,lineUpDownRightDouble:`╞`,lineDownLeftRight:`┬`,lineDownBoldLeftBoldRightBold:`┳`,lineDownLeftBoldRightBold:`┯`,lineDownBoldLeftRight:`┰`,lineDownBoldLeftBoldRight:`┱`,lineDownBoldLeftRightBold:`┲`,lineDownLeftRightBold:`┮`,lineDownLeftBoldRight:`┭`,lineDownDoubleLeftDoubleRightDouble:`╦`,lineDownDoubleLeftRight:`╥`,lineDownLeftDoubleRightDouble:`╤`,lineUpLeftRight:`┴`,lineUpBoldLeftBoldRightBold:`┻`,lineUpLeftBoldRightBold:`┷`,lineUpBoldLeftRight:`┸`,lineUpBoldLeftBoldRight:`┹`,lineUpBoldLeftRightBold:`┺`,lineUpLeftRightBold:`┶`,lineUpLeftBoldRight:`┵`,lineUpDoubleLeftDoubleRightDouble:`╩`,lineUpDoubleLeftRight:`╨`,lineUpLeftDoubleRightDouble:`╧`,lineUpDownLeftRight:`┼`,lineUpBoldDownBoldLeftBoldRightBold:`╋`,lineUpDownBoldLeftBoldRightBold:`╈`,lineUpBoldDownLeftBoldRightBold:`╇`,lineUpBoldDownBoldLeftRightBold:`╊`,lineUpBoldDownBoldLeftBoldRight:`╉`,lineUpBoldDownLeftRight:`╀`,lineUpDownBoldLeftRight:`╁`,lineUpDownLeftBoldRight:`┽`,lineUpDownLeftRightBold:`┾`,lineUpBoldDownBoldLeftRight:`╂`,lineUpDownLeftBoldRightBold:`┿`,lineUpBoldDownLeftBoldRight:`╃`,lineUpBoldDownLeftRightBold:`╄`,lineUpDownBoldLeftBoldRight:`╅`,lineUpDownBoldLeftRightBold:`╆`,lineUpDoubleDownDoubleLeftDoubleRightDouble:`╬`,lineUpDoubleDownDoubleLeftRight:`╫`,lineUpDownLeftDoubleRightDouble:`╪`,lineCross:`╳`,lineBackslash:`╲`,lineSlash:`╱`},xe={tick:`✔`,info:`ℹ`,warning:`⚠`,cross:`✘`,squareSmall:`◻`,squareSmallFilled:`◼`,circle:`◯`,circleFilled:`◉`,circleDotted:`◌`,circleDouble:`◎`,circleCircle:`ⓞ`,circleCross:`ⓧ`,circlePipe:`Ⓘ`,radioOn:`◉`,radioOff:`◯`,checkboxOn:`☒`,checkboxOff:`☐`,checkboxCircleOn:`ⓧ`,checkboxCircleOff:`Ⓘ`,pointer:`❯`,triangleUpOutline:`△`,triangleLeft:`◀`,triangleRight:`▶`,lozenge:`◆`,lozengeOutline:`◇`,hamburger:`☰`,smiley:`㋡`,mustache:`෴`,star:`★`,play:`▶`,nodejs:`⬢`,oneSeventh:`⅐`,oneNinth:`⅑`,oneTenth:`⅒`},Se={tick:`√`,info:`i`,warning:`‼`,cross:`×`,squareSmall:`□`,squareSmallFilled:`■`,circle:`( )`,circleFilled:`(*)`,circleDotted:`( )`,circleDouble:`( )`,circleCircle:`(○)`,circleCross:`(×)`,circlePipe:`(│)`,radioOn:`(*)`,radioOff:`( )`,checkboxOn:`[×]`,checkboxOff:`[ ]`,checkboxCircleOn:`(×)`,checkboxCircleOff:`( )`,pointer:`>`,triangleUpOutline:`∆`,triangleLeft:`◄`,triangleRight:`►`,lozenge:`♦`,lozengeOutline:`◊`,hamburger:`≡`,smiley:`☺`,mustache:`┌─┐`,star:`✶`,play:`►`,nodejs:`♦`,oneSeventh:`1/7`,oneNinth:`1/9`,oneTenth:`1/10`},Ce={...be,...xe},we={...be,...Se},U=ye()?Ce:we;Object.entries(xe);var Te=n(((t,n)=>{n.exports=i;function r(t){let n={defaultWidth:0,output:process.stdout,tty:e(`tty`)};return t?(Object.keys(n).forEach(function(e){t[e]||(t[e]=n[e])}),t):n}function i(e){let t=r(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let e=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(e)&&e!==0)return e}return t.defaultWidth}}));const Ee=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),De=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,Oe=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,ke=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Ae=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,je=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,Me=/\t{1,1000}/y,Ne=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,Pe=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Fe=/\p{M}+/gu,Ie={limit:1/0,ellipsis:``},Le=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?Le(i,Ie,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[Pe,l],[ke,0],[Ae,o],[Me,s],[Ne,c],[je,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,S=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(Fe,``)){let t=e.codePointAt(0)||0;if(S=De(t)?2:Oe(t)?u:l,x+S>v&&(_=Math.min(_,Math.max(y,f)+h)),x+S>r){g=!0;break outer}h+=e.length,x+=S}y=b=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===je?Ee(e.slice(p,n.lastIndex)):n===Ne?1:n.lastIndex-p,S=h*i,x+S>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+S>r){g=!0;break outer}x+=S,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},Re={limit:1/0,ellipsis:``,ellipsisWidth:0},W=(e,t={})=>Le(e,Re,t).width,ze=`]8;;`,Be=RegExp(`(?:\\[(?<code>\\d+)m|\\${ze}(?<uri>.*))`,`y`),Ve=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},He=e=>`[${e}m`,Ue=e=>`${ze}${e}`,We=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:W(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=W(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(ze,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},Ge=e=>{let t=e.split(` `),n=t.length;for(;n&&!W(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Ke=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=W(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=W(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),We(s,r,t),c=W(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){We(s,r,t),c=W(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){We(s,r,t),c=W(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>Ge(e)));let l=s.join(`
2
2
  `),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===`›`){Be.lastIndex=e+1;let t=Be.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
3
3
  `){a&&(r+=Ue(``));let e=i?Ve(i):void 0;i&&e&&(r+=He(e))}else t===`
4
4
  `&&(i&&Ve(i)&&(r+=He(i)),a&&(r+=Ue(a)))}return r},qe=/\r?\n/;function Je(e,t,n){return String(e).normalize().split(qe).map(e=>Ke(e,t,n)).join(`
@@ -281,7 +281,7 @@ let oi=/^[a-z0-9-_]+$/i;function si(e){let t=typeof e;if(t===`object`){if(Array.
281
281
  `}}return e&&(a||!o)&&(a=a?`[${e}]\n${a}`:`[${e}]`),a&&o?`${a}\n${o}`:a||o}function hi(e,{maxDepth:t=1e3,numbersAsFloat:n=!1}={}){if(si(e)!==`object`)throw TypeError(`stringify can only be called with an object`);let r=mi(0,e,``,t,n);return r[r.length-1]===`
282
282
  `?r:r+`
283
283
  `}function gi(e,t){let n=z(t,e);return n.length>0&&!n.startsWith(`..`)&&!ce(n)}const _i=e=>{try{let t=ae(`git`,[`rev-parse`,`--show-toplevel`],{cwd:e,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim();return t.length>0?t:null}catch{return null}};function vi(e,t={}){let n=t.homeDir??de(),r=t.gitTopLevel??_i,i=le(e),a;try{a=oe(i)}catch{a=i}let o=a,s=0;for(;s<30&&!(o===n||o===`/`||o===``);){if(y(o))return{projectRoot:o,defaultContentDir:`.`,ancestorPromoted:o!==a,gitRootPromoted:!1};let e=L(o);if(e===o)break;o=e,s+=1}let c=r(a);return c!==null&&gi(c,n)?c===a?{projectRoot:i,defaultContentDir:`.`,ancestorPromoted:!1,gitRootPromoted:!1}:{projectRoot:c,defaultContentDir:`.`,ancestorPromoted:!1,gitRootPromoted:!0}:{projectRoot:i,defaultContentDir:`.`,ancestorPromoted:!1,gitRootPromoted:!1}}function $(e,t,n,r,i){let a=`urn:uuid:${fe()}`;if(e.headersSent||e.writableEnded||e.destroyed){console.error(`[ok ui] emitProblem called after headers sent — suppressed`,{type:n,status:t,instance:a});return}let o={type:n,title:r,status:t,instance:a,...i===void 0?{}:{detail:i}},s=d.safeParse(o);if(!s.success){console.error(`[ok ui] emitProblem produced an invalid ProblemDetails body:`,{issues:s.error.issues,originalStatus:t,body:o}),e.writeHead(500,{"Content-Type":`application/problem+json`,"X-Content-Type-Options":`nosniff`,"Cache-Control":`no-store`}),e.end(JSON.stringify({type:`urn:ok:error:internal-server-error`,title:`Internal server error.`,status:500,instance:a}));return}e.writeHead(t,{"Content-Type":`application/problem+json`,"X-Content-Type-Options":`nosniff`,"Cache-Control":`no-store`}),e.end(JSON.stringify(o))}const yi=1e4;function bi(e,t){let n=e.socket?.remoteAddress;if(n!==void 0&&!C(n))return $(t,403,`urn:ok:error:loopback-required`,`Request must originate from a loopback address.`),!0;if(!_(e.headers.host))return $(t,403,`urn:ok:error:host-not-allowed`,`Host header is not in the loopback allowlist.`),!0;let r=e.headers.origin;return r!==void 0&&!v(r)?($(t,403,`urn:ok:error:invalid-origin`,`Origin header is not in the loopback allowlist.`),!0):!1}const xi=3e4;function Si(e,t){let n=e.socket?.remoteAddress;if(n!==void 0&&!C(n)||!_(e.headers.host))return t.destroy(),!0;let r=e.headers.origin;return typeof r==`string`&&!v(r)?(t.destroy(),!0):!1}function Ci(e,t,n,r,i,a){a.add(t),t.once(`close`,()=>a.delete(t));let o=ve({host:r,port:i,timeout:yi});a.add(o),o.once(`close`,()=>a.delete(o));let s=!1,c=n=>{if(!s){if(s=!0,n!==void 0){let t=n.err;console.warn(JSON.stringify({event:n.event,upstreamHost:r,upstreamPort:i,url:e.url,code:t instanceof Error?t.code:void 0,message:t instanceof Error?t.message:void 0}))}try{o.destroy()}catch{}try{t.destroy()}catch{}}};o.once(`connect`,()=>{o.setTimeout(0);let a=[`${e.method??`GET`} ${e.url??`/`} HTTP/1.1`,`host: ${r}:${i}`];for(let[t,n]of Object.entries(e.headers))if(t.toLowerCase()!==`host`&&n!==void 0)if(Array.isArray(n))for(let e of n)a.push(`${t}: ${e}`);else a.push(`${t}: ${n}`);try{o.write(`${a.join(`\r
284
- `)}\r\n\r\n`),n.length>0&&o.write(n)}catch(e){c({event:`proxy-upgrade-handshake-write-failed`,err:e});return}o.on(`data`,e=>{t.writable&&t.write(e)}),t.on(`data`,e=>{o.writable&&o.write(e)})}),o.once(`timeout`,()=>{c({event:`proxy-upgrade-upstream-connect-timeout`})}),o.on(`error`,e=>c({event:`proxy-upgrade-upstream-error`,err:e})),t.on(`error`,e=>c({event:`proxy-upgrade-client-error`,err:e})),o.once(`close`,()=>c()),t.once(`close`,()=>c())}const wi=[`connection`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`,`cookie`,`set-cookie`];async function Ti(e){let t=e.upstreamTimeoutMs??yi,n=new Set,r=he((n,r)=>{bi(n,r)||Di(n,r,e.upstreamHost,e.upstreamPort,t)});r.on(`upgrade`,(t,r,i)=>{Si(t,r)||Ci(t,r,i,e.upstreamHost,e.upstreamPort,n)}),await new Promise((t,n)=>{let i=e=>n(e);r.once(`error`,i),r.listen(e.listenPort,e.host,()=>{r.off(`error`,i),t()})});let i=r.address();return{httpServer:r,port:typeof i==`object`&&i?i.port:e.listenPort,close:()=>new Promise(e=>{for(let e of n)try{e.destroy()}catch{}n.clear(),r.close(()=>e()),r.closeIdleConnections()})}}function Ei(e,t,n){Di(e,t,n.upstreamHost,n.upstreamPort,n.upstreamTimeoutMs??yi)}function Di(e,t,n,r,i){let a={...e.headers};delete a.host;for(let e of wi)delete a[e];e.setTimeout(xi,()=>{if(t.headersSent)try{t.end()}catch{}else try{$(t,408,`urn:ok:error:request-timeout`,`Proxy request exceeded the per-request deadline.`,`Slow-loris-class: client did not finish within ${xi/1e3}s.`)}catch{}try{e.socket?.destroy()}catch{}});let o=ge({host:n,port:r,method:e.method,path:e.url,headers:{...a,host:`${n}:${r}`}},e=>{let n={...e.headers};for(let e of wi)delete n[e];t.writeHead(e.statusCode??502,n),e.pipe(t),e.once(`error`,()=>{try{t.end()}catch{}})});i>0&&o.setTimeout(i,()=>{if(!t.headersSent)$(t,504,`urn:ok:error:gateway-timeout`,`Upstream did not respond before the gateway deadline.`,`Upstream timeout: ${i/1e3}s elapsed without a response.`);else try{t.end()}catch{}o.destroy()}),o.on(`error`,()=>{if(!t.headersSent)$(t,502,`urn:ok:error:collab-server-not-running`,`Collab server is unreachable.`,`Upstream connection failed or dropped before a response was received.`);else try{t.end()}catch{}}),e.on(`error`,()=>{o.destroy()}),e.pipe(o)}const Oi=39847,ki=39848;async function Ai(e){await Promise.all(e.map(e=>new Promise(t=>{e.close(()=>t())})))}async function ji(e){let{existsSync:t}=await import(`node:fs`),{createServer:n}=await import(`node:http`),{resolve:r}=await import(`node:path`),{acquireUiLock:i,clearArmedPaneTarget:a,createAssetServeMiddleware:s,createContentFilter:d,readArmedPaneTarget:f,readServerLock:p,releaseUiLock:m,updateUiLockPort:h}=await import(`./dist-DVWyQ2rE.mjs`),{default:g}=await import(`./build-CCDQyip-.mjs`),{resolveContentDir:_,resolveLockDir:v}=await import(`./dist-DVWyQ2rE.mjs`),y=_(e.config,e.cwd),b=v(e.cwd);i(b,{port:0,worktreeRoot:e.cwd});let x=import.meta.dirname??new URL(`.`,import.meta.url).pathname,S=[r(x,`public`),r(x,`../../app/dist`),r(x,`../../../app/dist`)],C=e.assetDir??S.find(e=>t(e)),w=C?g(C,{single:!0,gzip:!0,etag:!0,dev:!0,extensions:[]}):null,ee=t(y)?s({contentFilter:d({projectDir:e.cwd,contentDir:y}),contentSirv:g(y,{dotfiles:!1,dev:!0,extensions:[]}),inlineExtensions:o,assetExtensions:u,blocklistExtensions:l}):null,T=e.port,te=null,E=(e,t)=>{let n=e.url?.split(`?`)[0];if(e.method===`GET`&&(n===`/`||n===``)){let e=f(b);if(e&&!/[\r\n]/.test(e)){a(b),t.statusCode=302,t.setHeader(`Location`,`/${e}`),t.setHeader(`Cache-Control`,`no-store`),t.end();return}}if((n===`/`||n===``)&&(e.url=`/index.html`),!(n?.startsWith(`/api/`)&&bi(e,t))){if(n===`/api/config`&&e.method===`DELETE`){a(b),t.setHeader(`Cache-Control`,`no-store`),t.statusCode=204,t.end();return}if(n===`/api/config`&&(e.method===`GET`||e.method===`HEAD`)){te?.();let n=p(b),r=e.headers.host??`localhost:${T}`,i=n&&n.port>0?`ws://${r}/collab`:null,a=f(b),o=JSON.stringify({collabUrl:i,previewUrl:null,port:T,paneTarget:a});t.setHeader(`Content-Type`,`application/json`),t.setHeader(`Cache-Control`,`no-store`),t.setHeader(`X-Content-Type-Options`,`nosniff`),t.statusCode=200,e.method===`HEAD`?t.end():t.end(o);return}if(n?.startsWith(`/api/`)){te?.();let r=p(b);if(!r||r.port<=0){$(t,503,`urn:ok:error:collab-server-not-running`,"Collab server not running. Start `ok start` or run `ok status`.",`Path: ${n}`);return}Ei(e,t,{upstreamHost:`localhost`,upstreamPort:r.port});return}if(w&&n?.startsWith(`/assets/`)){w(e,t,()=>{ee?ee(e,t,()=>Mi(t)):Mi(t)});return}if(ee){ee(e,t,()=>{w?w(e,t):Mi(t)});return}if(w){w(e,t);return}Mi(t)}},ne=new Set,re=(e,t,n)=>{if(Si(e,t))return;let r=e.url?.split(`?`)[0]??``;if(r!==`/collab`&&!r.startsWith(`/collab/`)){t.destroy();return}let i=p(b);if(!i||i.port<=0){console.warn(JSON.stringify({event:`ok-ui-upgrade-no-collab-lock`,url:r,reason:"server.lock missing or port unbound — is `ok start` running?"})),t.destroy();return}Ci(e,t,n,`localhost`,i.port,ne)},D=()=>{for(let e of ne)try{e.destroy()}catch{}ne.clear()},O=e.host===void 0?[`::1`,`127.0.0.1`]:[e.host],k=[],A=e.port,j=e=>e instanceof Error&&e.code===`EADDRINUSE`,M=async()=>{await Promise.all(k.splice(0).map(e=>new Promise(t=>{try{e.close(()=>t())}catch{t()}})))},ie=async e=>{A=e;for(let e of O){let t=n(E);t.on(`upgrade`,re),k.push(t),await new Promise((n,r)=>{let i=e=>r(e);t.once(`error`,i),t.listen(A,e,()=>{t.off(`error`,i);let e=t.address();typeof e==`object`&&e&&(A=e.port),n()})})}};try{try{await ie(e.port)}catch(t){if(e.fallbackToKernel===!0&&j(t))await M(),await ie(0);else throw t}}catch(e){await M();try{m(b)}catch{}throw e}let ae=A;T=ae,h(b,ae);let N=e.scheduler??c,P=e.safetyNetMs??432e5,F=null,oe=!1,I=!1,se=()=>{oe||(oe=!0,F!==null&&(N.clearTimeout(F),F=null))},L=()=>{if(se(),!I){I=!0;try{m(b)}catch{}}},ce=()=>{oe||P<=0||(F!==null&&(N.clearTimeout(F),F=null),F=N.setTimeout(()=>{F=null,console.warn(`[ui] safety-net (${P}ms) reached — shutting down (D-025 backstop)`);try{e.onSafetyNet?.()}catch{}D();for(let e of k)try{e.close()}catch{}L()},P))},R=()=>{oe||P<=0||ce()};return te=R,ce(),{httpServers:k,port:ae,release:L,detachSafetyNet:se,nudgeSafetyNet:R,drainUpgradeSockets:D}}function Mi(e){e.headersSent||e.writableEnded||e.destroyed||(e.setHeader(`X-Content-Type-Options`,`nosniff`),e.setHeader(`Cache-Control`,`no-store`),e.statusCode=404,e.end())}function Ni(e,t){if(e!==void 0){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<0||t>65535)throw Error(`Invalid --port value '${e}'`);return{port:t,fallbackToKernel:!1}}if(t!==void 0&&t!==``){let e=Number.parseInt(t,10);if(Number.isNaN(e)||e<0||e>65535)throw Error(`Invalid PORT env value '${t}'`);return{port:e,fallbackToKernel:!1}}return{port:Oi,fallbackToKernel:!0}}async function Pi(e){let t=e.readLock??(async()=>{let{readUiLock:t}=await import(`./dist-DVWyQ2rE.mjs`);return t(e.lockDir)}),n=await t();if(!n)throw Error(`UI lock collision reported but the lock disappeared before handling — retry acquiring.`);if(n.port===e.requestedPort&&n.port>0)return{mode:`already-running`,port:n.port};let r=n.port;if(r===0){let n=Date.now()+(e.pollDeadlineMs??2e3),i=e.pollIntervalMs??100;for(;Date.now()<n;){await new Promise(e=>{setTimeout(e,i)});let e=await t();if(e&&e.port>0){r=e.port;break}}if(r===0)throw Error("UI did not bind within 2s; run `ok clean`");if(r===e.requestedPort)return{mode:`already-running`,port:r}}return{mode:`proxy`,handle:await Ti({listenPort:e.requestedPort,host:e.host,upstreamHost:`localhost`,upstreamPort:r}),upstreamPort:r}}function Fi(e){return new i(`ui`).description(`Serve the OpenKnowledge React editor UI`).option(`-p, --port <port>`,`UI port (default: $PORT env or ${Oi}, kernel-allocated fallback if busy)`).option(`-H, --host <host>`,"UI host. Default: two-socket loopback bind (`[::1]` + `127.0.0.1`) so cross-family collisions fail loud. Pass an explicit host (e.g. `127.0.0.1`, `0.0.0.0`) to bind a single socket on that host.").action(async t=>{let{dim:n}=await import(`./colors-CmkIIbww.mjs`),{UiLockCollisionError:r}=await import(`./dist-DVWyQ2rE.mjs`),{resolveLockDir:i}=await import(`./dist-DVWyQ2rE.mjs`),a=e(),o=t.host,s;try{s=Ni(t.port,process.env.PORT)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exitCode=1;return}let c=s.port;try{let e=await ji({config:a,cwd:process.cwd(),port:c,fallbackToKernel:s.fallbackToKernel,host:o}),t=o===void 0||o===`::`||o===`0.0.0.0`?`localhost`:o;console.log(`${n(`[ui]`)} listening on http://${t}:${e.port}`);let r=!1,i=t=>{if(r)return;r=!0,console.log(n(`\n[ui] Shutting down (${t})`)),e.detachSafetyNet();let i=()=>{try{e.release()}finally{process.exit(process.exitCode??0)}};e.drainUpgradeSockets(),Ai(e.httpServers).then(i,i),setTimeout(i,2e3).unref()};process.once(`SIGINT`,()=>i(`SIGINT`)),process.once(`SIGTERM`,()=>i(`SIGTERM`));return}catch(e){if(!(e instanceof r))throw e;let t=i(process.cwd()),a=o??`localhost`,s;try{s=await Pi({requestedPort:c,host:a,lockDir:t})}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}if(s.mode===`already-running`){if(console.log(`UI already running at http://${a}:${s.port}`),Ii(process)){await new Promise(e=>{let t=t=>{console.log(n(`\n[ui-keepalive] Shutting down (${t})`)),e()};process.once(`SIGINT`,()=>t(`SIGINT`)),process.once(`SIGTERM`,()=>t(`SIGTERM`))});return}process.exit(0)}console.log(`UI running at http://${a}:${s.upstreamPort}; acting as HTTP proxy on port ${s.handle.port}`);let l=!1,u=e=>{l||(l=!0,console.log(n(`\n[ui-proxy] Shutting down (${e})`)),s.handle.close().finally(()=>process.exit(process.exitCode??0)),setTimeout(()=>process.exit(process.exitCode??0),2e3).unref())};process.once(`SIGINT`,()=>u(`SIGINT`)),process.once(`SIGTERM`,()=>u(`SIGTERM`))}})}function Ii(e){let t=e.stdout.isTTY===!0,n=typeof e.env.PORT==`string`&&e.env.PORT!==``;return!t||n}function Li(e){if(!N(e))return{};let t=F(e,`utf-8`).trim();if(t===``)return{};try{let n=JSON.parse(t);if(D(n))return n;throw Error(`${e} root must be a JSON object`)}catch(t){throw t instanceof SyntaxError?Error(`${e} contains invalid JSON: ${t.message}`):t}}function Ri(e){if(!N(e))return{};let t=F(e,`utf-8`).trim();if(t===``)return{};try{let n=ai(t);if(D(n))return n;throw Error(`${e} root must be a TOML table`)}catch(t){throw Error(`${e} contains invalid TOML: ${t instanceof Error?t.message:String(t)}`)}}function zi(e,t){S(e,`${JSON.stringify(t,null,2)}\n`)}function Bi(e,t){let n=hi(t);S(e,n.endsWith(`
284
+ `)}\r\n\r\n`),n.length>0&&o.write(n)}catch(e){c({event:`proxy-upgrade-handshake-write-failed`,err:e});return}o.on(`data`,e=>{t.writable&&t.write(e)}),t.on(`data`,e=>{o.writable&&o.write(e)})}),o.once(`timeout`,()=>{c({event:`proxy-upgrade-upstream-connect-timeout`})}),o.on(`error`,e=>c({event:`proxy-upgrade-upstream-error`,err:e})),t.on(`error`,e=>c({event:`proxy-upgrade-client-error`,err:e})),o.once(`close`,()=>c()),t.once(`close`,()=>c())}const wi=[`connection`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`,`cookie`,`set-cookie`];async function Ti(e){let t=e.upstreamTimeoutMs??yi,n=new Set,r=he((n,r)=>{bi(n,r)||Di(n,r,e.upstreamHost,e.upstreamPort,t)});r.on(`upgrade`,(t,r,i)=>{Si(t,r)||Ci(t,r,i,e.upstreamHost,e.upstreamPort,n)}),await new Promise((t,n)=>{let i=e=>n(e);r.once(`error`,i),r.listen(e.listenPort,e.host,()=>{r.off(`error`,i),t()})});let i=r.address();return{httpServer:r,port:typeof i==`object`&&i?i.port:e.listenPort,close:()=>new Promise(e=>{for(let e of n)try{e.destroy()}catch{}n.clear(),r.close(()=>e()),r.closeIdleConnections()})}}function Ei(e,t,n){Di(e,t,n.upstreamHost,n.upstreamPort,n.upstreamTimeoutMs??yi)}function Di(e,t,n,r,i){let a={...e.headers};delete a.host;for(let e of wi)delete a[e];e.setTimeout(xi,()=>{if(t.headersSent)try{t.end()}catch{}else try{$(t,408,`urn:ok:error:request-timeout`,`Proxy request exceeded the per-request deadline.`,`Slow-loris-class: client did not finish within ${xi/1e3}s.`)}catch{}try{e.socket?.destroy()}catch{}});let o=ge({host:n,port:r,method:e.method,path:e.url,headers:{...a,host:`${n}:${r}`}},e=>{let n={...e.headers};for(let e of wi)delete n[e];t.writeHead(e.statusCode??502,n),e.pipe(t),e.once(`error`,()=>{try{t.end()}catch{}})});i>0&&o.setTimeout(i,()=>{if(!t.headersSent)$(t,504,`urn:ok:error:gateway-timeout`,`Upstream did not respond before the gateway deadline.`,`Upstream timeout: ${i/1e3}s elapsed without a response.`);else try{t.end()}catch{}o.destroy()}),o.on(`error`,()=>{if(!t.headersSent)$(t,502,`urn:ok:error:collab-server-not-running`,`Collab server is unreachable.`,`Upstream connection failed or dropped before a response was received.`);else try{t.end()}catch{}}),e.on(`error`,()=>{o.destroy()}),e.pipe(o)}const Oi=39847,ki=39848;async function Ai(e){await Promise.all(e.map(e=>new Promise(t=>{e.close(()=>t())})))}async function ji(e){let{existsSync:t}=await import(`node:fs`),{createServer:n}=await import(`node:http`),{resolve:r}=await import(`node:path`),{acquireUiLock:i,clearArmedPaneTarget:a,createAssetServeMiddleware:s,createContentFilter:d,readArmedPaneTarget:f,readServerLock:p,releaseUiLock:m,updateUiLockPort:h}=await import(`./dist-lMD2xM96.mjs`),{default:g}=await import(`./build-CCDQyip-.mjs`),{resolveContentDir:_,resolveLockDir:v}=await import(`./dist-lMD2xM96.mjs`),y=_(e.config,e.cwd),b=v(e.cwd);i(b,{port:0,worktreeRoot:e.cwd});let x=import.meta.dirname??new URL(`.`,import.meta.url).pathname,S=[r(x,`public`),r(x,`../../app/dist`),r(x,`../../../app/dist`)],C=e.assetDir??S.find(e=>t(e)),w=C?g(C,{single:!0,gzip:!0,etag:!0,dev:!0,extensions:[]}):null,ee=t(y)?s({contentFilter:d({projectDir:e.cwd,contentDir:y}),contentSirv:g(y,{dotfiles:!1,dev:!0,extensions:[]}),inlineExtensions:o,assetExtensions:u,blocklistExtensions:l}):null,T=e.port,te=null,E=(e,t)=>{let n=e.url?.split(`?`)[0];if(e.method===`GET`&&(n===`/`||n===``)){let e=f(b);if(e&&!/[\r\n]/.test(e)){a(b),t.statusCode=302,t.setHeader(`Location`,`/${e}`),t.setHeader(`Cache-Control`,`no-store`),t.end();return}}if((n===`/`||n===``)&&(e.url=`/index.html`),!(n?.startsWith(`/api/`)&&bi(e,t))){if(n===`/api/config`&&e.method===`DELETE`){a(b),t.setHeader(`Cache-Control`,`no-store`),t.statusCode=204,t.end();return}if(n===`/api/config`&&(e.method===`GET`||e.method===`HEAD`)){te?.();let n=p(b),r=e.headers.host??`localhost:${T}`,i=n&&n.port>0?`ws://${r}/collab`:null,a=f(b),o=JSON.stringify({collabUrl:i,previewUrl:null,port:T,paneTarget:a});t.setHeader(`Content-Type`,`application/json`),t.setHeader(`Cache-Control`,`no-store`),t.setHeader(`X-Content-Type-Options`,`nosniff`),t.statusCode=200,e.method===`HEAD`?t.end():t.end(o);return}if(n?.startsWith(`/api/`)){te?.();let r=p(b);if(!r||r.port<=0){$(t,503,`urn:ok:error:collab-server-not-running`,"Collab server not running. Start `ok start` or run `ok status`.",`Path: ${n}`);return}Ei(e,t,{upstreamHost:`localhost`,upstreamPort:r.port});return}if(w&&n?.startsWith(`/assets/`)){w(e,t,()=>{ee?ee(e,t,()=>Mi(t)):Mi(t)});return}if(ee){ee(e,t,()=>{w?w(e,t):Mi(t)});return}if(w){w(e,t);return}Mi(t)}},ne=new Set,re=(e,t,n)=>{if(Si(e,t))return;let r=e.url?.split(`?`)[0]??``;if(r!==`/collab`&&!r.startsWith(`/collab/`)){t.destroy();return}let i=p(b);if(!i||i.port<=0){console.warn(JSON.stringify({event:`ok-ui-upgrade-no-collab-lock`,url:r,reason:"server.lock missing or port unbound — is `ok start` running?"})),t.destroy();return}Ci(e,t,n,`localhost`,i.port,ne)},D=()=>{for(let e of ne)try{e.destroy()}catch{}ne.clear()},O=e.host===void 0?[`::1`,`127.0.0.1`]:[e.host],k=[],A=e.port,j=e=>e instanceof Error&&e.code===`EADDRINUSE`,M=async()=>{await Promise.all(k.splice(0).map(e=>new Promise(t=>{try{e.close(()=>t())}catch{t()}})))},ie=async e=>{A=e;for(let e of O){let t=n(E);t.on(`upgrade`,re),k.push(t),await new Promise((n,r)=>{let i=e=>r(e);t.once(`error`,i),t.listen(A,e,()=>{t.off(`error`,i);let e=t.address();typeof e==`object`&&e&&(A=e.port),n()})})}};try{try{await ie(e.port)}catch(t){if(e.fallbackToKernel===!0&&j(t))await M(),await ie(0);else throw t}}catch(e){await M();try{m(b)}catch{}throw e}let ae=A;T=ae,h(b,ae);let N=e.scheduler??c,P=e.safetyNetMs??432e5,F=null,oe=!1,I=!1,se=()=>{oe||(oe=!0,F!==null&&(N.clearTimeout(F),F=null))},L=()=>{if(se(),!I){I=!0;try{m(b)}catch{}}},ce=()=>{oe||P<=0||(F!==null&&(N.clearTimeout(F),F=null),F=N.setTimeout(()=>{F=null,console.warn(`[ui] safety-net (${P}ms) reached — shutting down (D-025 backstop)`);try{e.onSafetyNet?.()}catch{}D();for(let e of k)try{e.close()}catch{}L()},P))},R=()=>{oe||P<=0||ce()};return te=R,ce(),{httpServers:k,port:ae,release:L,detachSafetyNet:se,nudgeSafetyNet:R,drainUpgradeSockets:D}}function Mi(e){e.headersSent||e.writableEnded||e.destroyed||(e.setHeader(`X-Content-Type-Options`,`nosniff`),e.setHeader(`Cache-Control`,`no-store`),e.statusCode=404,e.end())}function Ni(e,t){if(e!==void 0){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<0||t>65535)throw Error(`Invalid --port value '${e}'`);return{port:t,fallbackToKernel:!1}}if(t!==void 0&&t!==``){let e=Number.parseInt(t,10);if(Number.isNaN(e)||e<0||e>65535)throw Error(`Invalid PORT env value '${t}'`);return{port:e,fallbackToKernel:!1}}return{port:Oi,fallbackToKernel:!0}}async function Pi(e){let t=e.readLock??(async()=>{let{readUiLock:t}=await import(`./dist-lMD2xM96.mjs`);return t(e.lockDir)}),n=await t();if(!n)throw Error(`UI lock collision reported but the lock disappeared before handling — retry acquiring.`);if(n.port===e.requestedPort&&n.port>0)return{mode:`already-running`,port:n.port};let r=n.port;if(r===0){let n=Date.now()+(e.pollDeadlineMs??2e3),i=e.pollIntervalMs??100;for(;Date.now()<n;){await new Promise(e=>{setTimeout(e,i)});let e=await t();if(e&&e.port>0){r=e.port;break}}if(r===0)throw Error("UI did not bind within 2s; run `ok clean`");if(r===e.requestedPort)return{mode:`already-running`,port:r}}return{mode:`proxy`,handle:await Ti({listenPort:e.requestedPort,host:e.host,upstreamHost:`localhost`,upstreamPort:r}),upstreamPort:r}}function Fi(e){return new i(`ui`).description(`Serve the OpenKnowledge React editor UI`).option(`-p, --port <port>`,`UI port (default: $PORT env or ${Oi}, kernel-allocated fallback if busy)`).option(`-H, --host <host>`,"UI host. Default: two-socket loopback bind (`[::1]` + `127.0.0.1`) so cross-family collisions fail loud. Pass an explicit host (e.g. `127.0.0.1`, `0.0.0.0`) to bind a single socket on that host.").action(async t=>{let{dim:n}=await import(`./colors-CmkIIbww.mjs`),{UiLockCollisionError:r}=await import(`./dist-lMD2xM96.mjs`),{resolveLockDir:i}=await import(`./dist-lMD2xM96.mjs`),a=e(),o=t.host,s;try{s=Ni(t.port,process.env.PORT)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exitCode=1;return}let c=s.port;try{let e=await ji({config:a,cwd:process.cwd(),port:c,fallbackToKernel:s.fallbackToKernel,host:o}),t=o===void 0||o===`::`||o===`0.0.0.0`?`localhost`:o;console.log(`${n(`[ui]`)} listening on http://${t}:${e.port}`);let r=!1,i=t=>{if(r)return;r=!0,console.log(n(`\n[ui] Shutting down (${t})`)),e.detachSafetyNet();let i=()=>{try{e.release()}finally{process.exit(process.exitCode??0)}};e.drainUpgradeSockets(),Ai(e.httpServers).then(i,i),setTimeout(i,2e3).unref()};process.once(`SIGINT`,()=>i(`SIGINT`)),process.once(`SIGTERM`,()=>i(`SIGTERM`));return}catch(e){if(!(e instanceof r))throw e;let t=i(process.cwd()),a=o??`localhost`,s;try{s=await Pi({requestedPort:c,host:a,lockDir:t})}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}if(s.mode===`already-running`){if(console.log(`UI already running at http://${a}:${s.port}`),Ii(process)){await new Promise(e=>{let t=t=>{console.log(n(`\n[ui-keepalive] Shutting down (${t})`)),e()};process.once(`SIGINT`,()=>t(`SIGINT`)),process.once(`SIGTERM`,()=>t(`SIGTERM`))});return}process.exit(0)}console.log(`UI running at http://${a}:${s.upstreamPort}; acting as HTTP proxy on port ${s.handle.port}`);let l=!1,u=e=>{l||(l=!0,console.log(n(`\n[ui-proxy] Shutting down (${e})`)),s.handle.close().finally(()=>process.exit(process.exitCode??0)),setTimeout(()=>process.exit(process.exitCode??0),2e3).unref())};process.once(`SIGINT`,()=>u(`SIGINT`)),process.once(`SIGTERM`,()=>u(`SIGTERM`))}})}function Ii(e){let t=e.stdout.isTTY===!0,n=typeof e.env.PORT==`string`&&e.env.PORT!==``;return!t||n}function Li(e){if(!N(e))return{};let t=F(e,`utf-8`).trim();if(t===``)return{};try{let n=JSON.parse(t);if(D(n))return n;throw Error(`${e} root must be a JSON object`)}catch(t){throw t instanceof SyntaxError?Error(`${e} contains invalid JSON: ${t.message}`):t}}function Ri(e){if(!N(e))return{};let t=F(e,`utf-8`).trim();if(t===``)return{};try{let n=ai(t);if(D(n))return n;throw Error(`${e} root must be a TOML table`)}catch(t){throw Error(`${e} contains invalid TOML: ${t instanceof Error?t.message:String(t)}`)}}function zi(e,t){S(e,`${JSON.stringify(t,null,2)}\n`)}function Bi(e,t){let n=hi(t);S(e,n.endsWith(`
285
285
  `)?n:`${n}\n`)}const Vi=e=>e!==`project`,Hi=e=>e!==`user`;async function Ui(){let e=await En({message:`Where should the MCP server be configured?
286
286
  `,required:!1,theme:{icon:{checked:`[x]`,unchecked:`[ ]`}},choices:[{name:`User-level (~/.claude.json, ~/.cursor/mcp.json, …)`,value:`user`,checked:!0},{name:`Project-level (.mcp.json, .cursor/mcp.json, …)`,value:`project`,checked:!0}]});return e.includes(`user`)&&e.includes(`project`)?`both`:e.includes(`user`)?`user`:e.includes(`project`)?`project`:null}async function Wi(e){return e.mcp===!1?null:e.scope?e.scope:e.isTTY??process.stdout.isTTY?(e.promptFn??Ui)():`both`}async function Gi(e){return Fr({message:`How do you want to handle OpenKnowledge config files (.ok/, .mcp.json, project skills, launch.json)?`,default:e,choices:[{name:`Share with my team (commit alongside content)`,value:`shared`,description:`OK config gets committed alongside your project content.`},{name:`Local only (keep out of git via .git/info/exclude)`,value:`local-only`,description:"OK config stays on this machine only; teammates do not see it. Safe escape hatch via `ok config-sharing share`."}]})}async function Ki(e){if(e.sharing!==void 0)return e.sharing;let t=yt(e.projectRoot)===`local-only`?`local-only`:`shared`;return e.isTTY??process.stdout.isTTY?(e.promptFn??Gi)(t):t}const qi=`0.0.1`,Ji=`open-knowledge-ui`,Yi=[`-y`,`@inkeep/open-knowledge@latest`,`ui`],Xi=`# ok-ui-v1`,Zi=`${Xi}
287
287
  UIPORT="\${PORT:-${ki}}"
@@ -300,6 +300,6 @@ UIPORT="\${PORT:-${ki}}"
300
300
  unset PORT
301
301
  exec node "${ee()}" start --ui-port "$UIPORT"`],port:ki,autoPort:!0}:{name:Ji,runtimeExecutable:`/bin/sh`,runtimeArgs:[`-l`,`-c`,Zi],port:ki,autoPort:!0};try{if(re(n,e),!N(n))return P(L(n),{recursive:!0}),I(n,`${JSON.stringify({version:qi,configurations:[r]},null,2)}\n`,`utf-8`),{action:`created`,configPath:n};let t=F(n,`utf-8`).trim(),i=t?JSON.parse(t):{};if(!D(i))return{action:`failed`,configPath:n,error:`launch.json root is not an object`};let a=Array.isArray(i.configurations)?i.configurations:[],o=a.findIndex(e=>D(e)&&e.name===`open-knowledge-ui`);o>=0?a[o]=r:a.push(r);let s={...i,version:i.version??qi,configurations:a};return I(n,`${JSON.stringify(s,null,2)}\n`,`utf-8`),{action:o>=0?`merged`:`created`,configPath:n}}catch(e){return{action:`failed`,configPath:n,error:e instanceof Error?e.message:String(e)}}}function $i(e,t,n){try{return N(e.detectPath?.(t,n)??L(e.configPath(t,n)))}catch{return!1}}function ea(e,t,n,r,i){let a=e.serverName(t),o;try{o=i??e.configPath(t,r)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:``,serverName:a,error:t instanceof Error?t.message:String(t)}}if(!i&&!n.skipAvailabilityCheck&&!$i(e,t,r))return{editorId:e.id,label:e.label,action:`skipped-missing`,configPath:o,serverName:a};if(i!==void 0)try{re(o,t)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t),configScope:`project`}}let s;try{s=e.buildEntry(t,n)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t),...i===void 0?{}:{configScope:`project`}}}try{P(L(o),{recursive:!0})}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t),...i===void 0?{}:{configScope:`project`}}}let c,l;try{w(`${o}.lock`,()=>{let t=e.format===`toml`?Ri(o):Li(o),n=t[e.topLevelKey]??{};c=n[a];let r={...t,[e.topLevelKey]:{...n,[a]:s}};e.format===`toml`?Bi(o,r):zi(o,r)},{onWarn:(e,t)=>process.stderr.write(`[ok] ${e} ${JSON.stringify(t)}\n`)})}catch(e){l=e instanceof Error?e:Error(String(e))}return l?{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:l.message,...i===void 0?{}:{configScope:`project`}}:{editorId:e.id,label:e.label,action:c===void 0?`written`:`overwritten`,configPath:o,serverName:a,...i===void 0?{}:{configScope:`project`}}}function ta(e,t){let n=e.projectConfigPath?.(t);if(!(!n||!N(n)))return{editorId:e.id,label:e.label,path:n}}async function na(e){let t=T(e.editors),n={mode:`published`,skipAvailabilityCheck:!0};return t.map(t=>ea(t,``,n,e.home))}function ra(e,t,n,r){let i=ia(e,t,n,r);return i.kind===`present`?i.entry:null}function ia(e,t,n,r){let i;try{i=r??e.configPath(t,n)}catch{return{kind:`absent`}}if(!N(i))return{kind:`absent`};let a;try{a=F(i,`utf-8`)}catch(e){return{kind:`corrupt`,error:e instanceof Error?e.message:String(e)}}if(a.trim()===``)return{kind:`corrupt`,error:`file is empty`};let o;try{o=e.format===`toml`?Ri(i):Li(i)}catch(e){return{kind:`corrupt`,error:e instanceof Error?e.message:String(e)}}let s=o[e.topLevelKey];if(!D(s))return{kind:`no-entry`};let c=s[e.serverName(t)];return D(c)?{kind:`present`,entry:c}:{kind:`no-entry`}}async function aa(e={}){let t=le(e.cwd??process.cwd()),n=vi(t,{homeDir:e.home}),r=n.projectRoot,i=!N(R(r,`.ok`));n.ancestorPromoted?console.log(`[ok] Opened existing project at ${r}`):n.gitRootPromoted&&i&&console.log(`[ok] Initialized OK at ${r} — opened parent of ${z(r,t)} because it contains a .git folder`);let a={mode:e.devMcp?`dev`:`published`},o=await b(r),s;try{s=p(r,{contentDir:n.defaultContentDir})}catch(t){let n=E.claude.configPath(r,e.home);return{projectRoot:r,contentCreated:[],contentUpdated:[],contentSkipped:[],editors:[],projectSkills:[],legacyProjectConfigs:[],didGitInit:o.didInit,rootGitignoreCreated:!1,mcpAction:`failed`,mcpPath:n,mcpError:`Content scaffolding failed: ${t instanceof Error?t.message:String(t)}`,sharing:{kind:`no-exclude`,reason:`no-git`,localOnlyRequested:!1}}}let c=!1;if(o.didInit)try{c=g(r)===`created`}catch(e){console.warn(`[ok] Skipping .gitignore seed at ${r}: ${e instanceof Error?e.message:String(e)}`)}let l=await Wi({scope:e.scope,mcp:e.mcp,isTTY:e.isTTY,promptFn:e.promptFn}),u=e.editors??la(r,e.home),d=e.editors??ne.filter(e=>E[e].projectConfigPath!==void 0),f=T(u),h=T(d),_=e.mcp===!1||l===null,v=Array.from(new Map([...f,..._?[]:h].map(e=>[e.id,e])).values()),y=f.filter(t=>$i(t,r,e.home)),x=[],S=[],C=new Set;for(let t of v){if(_){let n=``;try{n=t.configPath(r,e.home)}catch{}x.push({editorId:t.id,label:t.label,action:`skipped-flag`,configPath:n,serverName:t.serverName(r)});continue}if(Vi(l)&&f.includes(t)&&x.push(ea(t,r,a,e.home)),Hi(l)&&h.includes(t)&&t.projectConfigPath){let n=t.projectConfigPath(r),i=ea(t,r,a,e.home,n);x.push(i),(i.action===`written`||i.action===`overwritten`)&&C.add(n)}}let w=new Set;for(let e of h){let t=e.projectSkillPath?.(r);!t||w.has(t)||(w.add(t),S.push(te(e,r)))}let ee=!_&&l!==null&&Hi(l)?h.filter(e=>!e.projectConfigPath).map(e=>e.label):void 0,re=_?[]:y.map(e=>ta(e,r)).filter(e=>e!==void 0).filter(e=>!C.has(e.path)),D=y.some(e=>e.id===`claude`)&&!_?Qi(r,a):void 0,O=await(e.installUserSkill??m)({home:e.home}),k=_?`skipped-flag`:`skipped-missing`,A=x.find(e=>e.editorId===`claude`)??x[0]??{action:k,configPath:E.claude.configPath(r,e.home)},j=await oa({projectRoot:r,desiredMode:await Ki({sharing:e.sharing,projectRoot:r,isTTY:e.isTTY,promptFn:e.sharingPromptFn}),explicitFlag:e.sharing});return{projectRoot:r,contentCreated:s.created,contentUpdated:s.updated,contentSkipped:s.skipped,editors:x,projectSkills:S,legacyProjectConfigs:re,launchJson:D,skillInstall:O,didGitInit:o.didInit,rootGitignoreCreated:c,mcpAction:A.action,mcpPath:A.configPath,mcpError:`error`in A?A.error:void 0,projectScopeUnsupportedLabels:ee,sharing:j}}async function oa(e){let{projectRoot:t,desiredMode:n,explicitFlag:r}=e,i=yt(t);if(i===`no-git`)return{kind:`no-exclude`,reason:`no-git`,localOnlyRequested:r===`local-only`};let a=gt(t);if(n===`local-only`){let e=_t(t,a);if(e.kind===`refused-tracked`){let t=e;return{kind:`refused-tracked`,tracked:t.tracked,remediation:t.remediation}}return e.kind===`no-exclude`?{kind:`no-exclude`,reason:e.reason,localOnlyRequested:r===`local-only`}:sa(t,e,`add`)}if(i===`shared`)return{kind:`applied`,mode:`shared`,action:`noop`,appended:[],alreadyPresent:[],removed:[]};let o=vt(t,a);return o.kind===`no-exclude`?{kind:`no-exclude`,reason:o.reason,localOnlyRequested:!1}:sa(t,o,`remove`)}function sa(e,t,n){let r=yt(e);return n===`add`?{kind:`applied`,mode:r,action:t.appended.length>0?`added`:`noop`,appended:t.appended,alreadyPresent:t.alreadyPresent,removed:[]}:{kind:`applied`,mode:r,action:`removed`,appended:[],alreadyPresent:[],removed:t.removed}}function ca(e,t){let n=[],r=e.editors.some(e=>e.action===`written`||e.action===`overwritten`),i=e.editors.some(e=>e.action===`failed`)||e.projectSkills.some(e=>e.action===`failed`),a=e.editors.length>0&&e.editors.every(e=>e.action===`skipped-flag`),o=e.editors.length>0&&e.editors.every(e=>e.action===`skipped-missing`),s=e=>{let n=e.configPath.startsWith(t)?z(t,e.configPath):e.configPath;switch(e.action){case`created`:return` app preview server ${n} configured for Claude Code Desktop embedded browser`;case`merged`:return` app preview server ${n} updated for Claude Code Desktop embedded browser`;case`failed`:return` app preview server ${n} FAILED: ${e.error}`}};e.didGitInit&&n.push(`Initialized git repo at ${t}/.git/ (default branch: main)`),e.rootGitignoreCreated&&n.push(`Seeded .gitignore at ${t}/.gitignore (.DS_Store)`);let c=R(t,`.ok`);if(e.contentCreated.length>0||e.contentUpdated.length>0?(n.push(M(`Content scaffolded at ${c}/`)),e.contentCreated.length>0&&n.push(` Created: ${e.contentCreated.join(`, `)}`),e.contentUpdated.length>0&&n.push(` Updated: ${e.contentUpdated.join(`, `)}`)):n.push(M(`Content already present at ${c}/`)),e.contentSkipped.length>0&&n.push(` Skipped (already exist): ${e.contentSkipped.join(`, `)}`),n.push(``),e.mcpError&&e.editors.length===0)n.push(`Warning: ${e.mcpError}`);else if(e.editors.length===0)if(n.push(M(`MCP server configuration:`)),e.mcpAction===`skipped-flag`)n.push(` MCP config not written — use without --no-mcp to configure editors`);else if(e.projectScopeUnsupportedLabels&&e.projectScopeUnsupportedLabels.length>0){let t=e.projectScopeUnsupportedLabels.join(`, `),r=e.projectScopeUnsupportedLabels.length===1?`does`:`do`;n.push(` ${t} ${r} not support project-level config; skipped`)}else n.push(` No supported editor config directories detected; skipped MCP registration`);else if(a)n.push(`MCP config not written — use without --no-mcp to configure editors`);else if(o)n.push(M(`MCP server configuration:`)),n.push(` No supported editor config directories detected; skipped MCP registration`);else{n.push(M(`MCP server configuration:`));for(let r of e.editors){let i=r.configPath.startsWith(t)?z(t,r.configPath):r.configPath.replace(/^\/Users\/[^/]+/,`~`),a=r.serverName===`open-knowledge`?``:` (${r.serverName})`,o=r.configScope===`project`?` (project)`:``,c=`${r.label}${o}`,l=` `.repeat(Math.max(1,20-c.length)),u=r.editorId===`claude-desktop`&&(r.action===`written`||r.action===`overwritten`)?` — quit and relaunch Claude Desktop to activate`:``;switch(r.action){case`written`:n.push(` ${c}${l}${i} ${k(`registered`)}${a}${u}`);break;case`overwritten`:n.push(` ${c}${l}${i} ${k(`updated`)}${a}${u}`);break;case`skipped-missing`:n.push(` ${c}${l}${i} config root missing; skipped`);break;case`failed`:n.push(` ${c}${l}${i} ${A(`FAILED`)}: ${r.error}`);break;case`skipped-flag`:break}r.editorId===`claude`&&e.launchJson&&n.push(s(e.launchJson))}if(e.projectScopeUnsupportedLabels&&e.projectScopeUnsupportedLabels.length>0){let t=e.projectScopeUnsupportedLabels.join(`, `),r=e.projectScopeUnsupportedLabels.length===1?`does`:`do`;n.push(` ${t} ${r} not support project-level config; skipped`)}}if(e.projectSkills.length>0){n.push(``),n.push(M(`Project-local skills:`));for(let r of e.projectSkills){let e=`${r.label} (project)`,i=` `.repeat(Math.max(1,20-e.length)),a=r.path?z(t,r.path):``;switch(r.action){case`written`:n.push(` ${e}${i}${a} ${k(`installed`)}`);break;case`overwritten`:n.push(` ${e}${i}${a} ${k(`updated`)}`);break;case`skipped-unsupported`:n.push(` ${e}${i}no known project skill surface; skipped`);break;case`failed`:n.push(` ${e}${i}${a} ${A(`FAILED`)}: ${r.error}`);break}}}if(i&&(n.push(``),n.push(`For failed editors, add the MCP server entry or project skill manually. See:`),n.push(` https://github.com/inkeep/open-knowledge#mcp-setup`)),e.legacyProjectConfigs.length>0){n.push(``),n.push(`Project MCP configs found:`);for(let r of e.legacyProjectConfigs)n.push(` ${r.label} ${z(t,r.path)}`);n.push(` These project-local files may override the global config. Remove them if you want fully user-scoped MCP setup in this project.`)}if(e.skillInstall)switch(n.push(``),n.push(M(`User-global skill:`)),e.skillInstall){case`installed`:n.push(` open-knowledge ${k(`installed to detected agent hosts`)} via \`npx skills\``);break;case`skip-current`:n.push(` open-knowledge ${k(`already installed at current version`)}`);break;case`failed`:n.push(` ${j(`open-knowledge install failed — MCP still configured; run manually:`)}`),n.push(` ${j(` npx skills@~1.5.0 add <bundled-path> --agent '*' -g -y --copy`)}`);break}if(e.preview?(n.push(``),n.push(ie(e.preview,t))):e.previewWarning&&(n.push(``),n.push(`Content preview unavailable: ${e.previewWarning}`)),n.push(``),n.push(...da(e.sharing,t)),r){let t=new Set,r=e.editors.filter(e=>e.action===`written`||e.action===`overwritten`).filter(e=>!t.has(e.editorId)&&t.add(e.editorId)).map(e=>e.label);n.push(``),n.push(`${k(`✓`)} ${M(`Next steps:`)}`),n.push(` 1. Open your editor (${O(r.join(` / `))})`),n.push(` 2. Approve the MCP server when prompted`),n.push(` 3. (Optional) scaffold the starter knowledge-base structure:`),n.push(` - ${O(`ok seed`)} — empty repo, Karpathy 3-layer`),n.push(` - ${O(`mcp__open-knowledge__discover`)} — existing repo, extract conventions`),n.push(` 4. Use the MCP workflow tools as you build the wiki:`),n.push(` - ${O(`mcp__open-knowledge__ingest`)} — capture an external source`),n.push(` - ${O(`mcp__open-knowledge__research`)} — gather sources and write findings`),n.push(` - ${O(`mcp__open-knowledge__consolidate`)} — promote research to canonical articles`)}return n.join(`
302
302
  `)}function la(e,t){let n=[];for(let r of ne)$i(E[r],e,t)&&n.push(r);return n}function ua(){return new i(`init`).description(`Scaffold .ok/ in the current directory and register the MCP server for your editor(s)`).option(`--mcp`,`Register the MCP server for selected editors (default: true)`,!0).option(`--no-mcp`,`Scaffold the .ok/ directory but do not touch MCP config`).option(`--dev-mcp`,`Register a local dev MCP entry using node + packages/cli/dist/cli.mjs with debug logging`).addOption(new r(`--scope <scope>`,`Write MCP config at user level, project level, or both`).choices([`user`,`project`,`both`])).addOption(new r(`--shared`,`Commit OK config alongside content (the default for fresh repos)`).conflicts(`localOnly`)).addOption(new r(`--local-only`,`Keep OK config out of git via .git/info/exclude (per-clone, not committed)`).conflicts(`shared`)).action(async e=>{let t=process.cwd(),n=e.shared?`shared`:e.localOnly?`local-only`:void 0,r;try{r=await aa({cwd:t,mcp:e.mcp,devMcp:e.devMcp,scope:e.scope,sharing:n})}catch(e){if(e instanceof h){process.stderr.write(`open-knowledge requires git to initialize a parent repo. Install git or run 'git init' yourself, then re-run.
303
- `),e.stderr&&process.stderr.write(`${e.stderr.trim()}\n`),process.exitCode=1;return}throw e}try{let{previewContent:e}=await import(`./preview-B4Oewkq2.mjs`),{loadConfig:t}=await import(`./loader-DAdEi1_2.mjs`),{resolveContentDir:n}=await import(`./dist-DVWyQ2rE.mjs`),{config:i}=t(r.projectRoot),a=n(i,r.projectRoot);r.preview=e({projectDir:r.projectRoot,contentDir:a})}catch(e){r.previewWarning=e instanceof Error?e.message:String(e)}process.stdout.write(`${ca(r,r.projectRoot)}\n`),(r.editors.some(e=>e.action===`failed`)||r.mcpAction===`failed`)&&(process.exitCode=1)})}function da(e,t){let n=[];switch(e.kind){case`applied`:return n.push(M(`Sharing mode:`)),e.mode===`local-only`?e.action===`added`?n.push(` ${k(`local-only`)} — appended ${e.appended.length} path(s) to ${M(`${t}/.git/info/exclude`)} (per-clone, not committed).`):e.action===`noop`&&e.alreadyPresent.length>0?n.push(` ${k(`local-only`)} — already excluded; nothing to do.`):n.push(` ${k(`local-only`)}`):e.action===`removed`?n.push(` ${k(`shared`)} — removed OK paths from ${M(`${t}/.git/info/exclude`)}; commit the files to share with teammates.`):n.push(` ${k(`shared`)} — OK config will be committed alongside content.`),n;case`refused-tracked`:n.push(j(`Sharing mode: switch to local-only deferred`));for(let t of e.remediation.split(`
303
+ `),e.stderr&&process.stderr.write(`${e.stderr.trim()}\n`),process.exitCode=1;return}throw e}try{let{previewContent:e}=await import(`./preview-DgLc6gDO.mjs`),{loadConfig:t}=await import(`./loader-Br4O9l2c.mjs`),{resolveContentDir:n}=await import(`./dist-lMD2xM96.mjs`),{config:i}=t(r.projectRoot),a=n(i,r.projectRoot);r.preview=e({projectDir:r.projectRoot,contentDir:a})}catch(e){r.previewWarning=e instanceof Error?e.message:String(e)}process.stdout.write(`${ca(r,r.projectRoot)}\n`),(r.editors.some(e=>e.action===`failed`)||r.mcpAction===`failed`)&&(process.exitCode=1)})}function da(e,t){let n=[];switch(e.kind){case`applied`:return n.push(M(`Sharing mode:`)),e.mode===`local-only`?e.action===`added`?n.push(` ${k(`local-only`)} — appended ${e.appended.length} path(s) to ${M(`${t}/.git/info/exclude`)} (per-clone, not committed).`):e.action===`noop`&&e.alreadyPresent.length>0?n.push(` ${k(`local-only`)} — already excluded; nothing to do.`):n.push(` ${k(`local-only`)}`):e.action===`removed`?n.push(` ${k(`shared`)} — removed OK paths from ${M(`${t}/.git/info/exclude`)}; commit the files to share with teammates.`):n.push(` ${k(`shared`)} — OK config will be committed alongside content.`),n;case`refused-tracked`:n.push(j(`Sharing mode: switch to local-only deferred`));for(let t of e.remediation.split(`
304
304
  `))n.push(t.length>0?` ${t}`:``);return n.push(` Re-run ${O(`ok config-sharing unshare`)} after resolving to complete the switch.`),n;case`no-exclude`:if(e.localOnlyRequested)n.push(j(`Sharing mode: --local-only requested but no git repo found — option ignored`)),n.push(` Run ${O(`git init`)} (or open this folder via OK Desktop, which can scaffold a repo) and then ${O(`ok config-sharing unshare`)}.`);else if(e.reason===`no-git`)return[];else n.push(j(`Sharing mode unavailable: ${e.reason}.`));return n}}export{pt as A,gt as C,ft as D,vt as E,Je as F,Te as I,U as L,ht as M,ot as N,lt as O,Ye as P,bt as S,yt as T,na as _,oa as a,_t as b,ca as c,ra as d,Wi as f,ea as g,Qi as h,Zi as i,dt as j,ut as k,da as l,aa as m,Yi as n,ia as o,Ki as p,Xi as r,la as s,Ji as t,ua as u,Fi as v,xt as w,St as x,vi as y};
305
- //# sourceMappingURL=init-B7uIAmKy.mjs.map
305
+ //# sourceMappingURL=init-BEl-oLte.mjs.map
@@ -0,0 +1 @@
1
+ import{m as e}from"./init-BEl-oLte.mjs";export{e as runInit};
@@ -0,0 +1 @@
1
+ import{n as e}from"./loader-CAzv0pqx.mjs";export{e as loadConfig};
@@ -1,4 +1,4 @@
1
- import{Ba as e,Mo as t,Ua as n,Va as r}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{_ as i,ca as a,la as o}from"./dist-CcBhqiSK.mjs";import{t as s}from"./constants-DOCLO9Wy.mjs";import{t as c}from"./is-object-Cg453afR.mjs";import{existsSync as l,readFileSync as u}from"node:fs";import{resolve as d}from"node:path";import{realpath as f}from"node:fs/promises";async function p(e){let t=d(e);try{return await f(t)}catch(e){if(e.code!==`ENOENT`){let n=e instanceof Error?e.message:String(e);console.warn(`[normalize-cwd] realpath failed for ${t}: ${n}`)}return t}}var m=t();function h(e,t){let n={...e};for(let r of Object.keys(t)){let i=e[r],a=t[r];c(a)&&c(i)?n[r]=h(i,a):a!==void 0&&(n[r]=a)}return n}function g(e){if(!l(e))return{value:null,path:e,source:null,doc:null};let t;try{t=u(e,`utf-8`)}catch(t){return console.warn(`[config] Failed to read ${e}: ${t instanceof Error?t.message:t}`),{value:null,path:e,source:null,doc:null}}let n=(0,m.parseDocument)(t);if(n.errors.length>0)return console.warn(`[config] Failed to parse ${e}: ${n.errors.map(e=>e.message).join(`; `)}`),{value:null,path:e,source:t,doc:null};let r=n.toJSON();return c(r)?{value:r,path:e,source:t,doc:n}:{value:null,path:e,source:t,doc:n}}function _(e,t){return e.map(e=>{let r=e.path.map(e=>typeof e==`symbol`?String(e):e),i={path:r,message:e.message,issueCode:e.code};if(t.doc!==null&&t.source!==null){let e=n({file:t.path,source:t.source,doc:t.doc,path:r});if(e!==void 0)return{...i,source:e}}return i})}function v(t){let n=t??process.cwd(),c=[],l=o(`user`,n),u=a({absPath:l}),f={};u.valid&&u.source!==void 0?(f=h(f,u.value),c.push(l)):u.valid;let p=d(n,`.ok`,s),m=g(p);if(m.value!==null){let t=e({value:m.value,file:m.path,source:m.source,doc:m.doc});if(t.length>0)throw Error(t.map(r).join(`
1
+ import{Ba as e,Mo as t,Ua as n,Va as r}from"./server-lock-CN2YHwpP-CemdeDui.mjs";import{_ as i,ca as a,la as o}from"./dist-DG18qmsf.mjs";import{t as s}from"./constants-CccigS7Z.mjs";import{t as c}from"./is-object-Cg453afR.mjs";import{existsSync as l,readFileSync as u}from"node:fs";import{resolve as d}from"node:path";import{realpath as f}from"node:fs/promises";async function p(e){let t=d(e);try{return await f(t)}catch(e){if(e.code!==`ENOENT`){let n=e instanceof Error?e.message:String(e);console.warn(`[normalize-cwd] realpath failed for ${t}: ${n}`)}return t}}var m=t();function h(e,t){let n={...e};for(let r of Object.keys(t)){let i=e[r],a=t[r];c(a)&&c(i)?n[r]=h(i,a):a!==void 0&&(n[r]=a)}return n}function g(e){if(!l(e))return{value:null,path:e,source:null,doc:null};let t;try{t=u(e,`utf-8`)}catch(t){return console.warn(`[config] Failed to read ${e}: ${t instanceof Error?t.message:t}`),{value:null,path:e,source:null,doc:null}}let n=(0,m.parseDocument)(t);if(n.errors.length>0)return console.warn(`[config] Failed to parse ${e}: ${n.errors.map(e=>e.message).join(`; `)}`),{value:null,path:e,source:t,doc:null};let r=n.toJSON();return c(r)?{value:r,path:e,source:t,doc:n}:{value:null,path:e,source:t,doc:n}}function _(e,t){return e.map(e=>{let r=e.path.map(e=>typeof e==`symbol`?String(e):e),i={path:r,message:e.message,issueCode:e.code};if(t.doc!==null&&t.source!==null){let e=n({file:t.path,source:t.source,doc:t.doc,path:r});if(e!==void 0)return{...i,source:e}}return i})}function v(t){let n=t??process.cwd(),c=[],l=o(`user`,n),u=a({absPath:l}),f={};u.valid&&u.source!==void 0?(f=h(f,u.value),c.push(l)):u.valid;let p=d(n,`.ok`,s),m=g(p);if(m.value!==null){let t=e({value:m.value,file:m.path,source:m.source,doc:m.doc});if(t.length>0)throw Error(t.map(r).join(`
2
2
 
3
3
  `));f=h(f,m.value),c.push(p)}let v=i.safeParse(f);if(!v.success){let e={code:`SCHEMA_INVALID`,issues:_(v.error.issues,m)};throw Error(r(e))}return{config:v.data,sources:c}}function y(e){let t=e.cacheMs??1e3,n=e.loadConfigFn??v,r=new Map,i=new Map,a=p(e.startupCwd);return async o=>{let s=await p(o??e.startupCwd),c=Date.now(),l=r.get(s);if(l&&l.expiresAt>c)return l.config;let u=i.get(s);if(u)return await u;let d=(async()=>{if(s===await a)return r.set(s,{config:e.startupConfig,expiresAt:Date.now()+t}),e.startupConfig;let i=n(s).config;return r.set(s,{config:i,expiresAt:Date.now()+t}),i})();i.set(s,d);try{return await d}finally{i.delete(s)}}}export{v as n,y as t};
4
- //# sourceMappingURL=loader-C1HBTcQa.mjs.map
4
+ //# sourceMappingURL=loader-CAzv0pqx.mjs.map
@@ -1,3 +1,3 @@
1
- import{Yt as e}from"./dist-CcBhqiSK.mjs";import"./constants-DOCLO9Wy.mjs";import{existsSync as t,lstatSync as n,readdirSync as r,realpathSync as i,statSync as a}from"node:fs";import{join as o,relative as s}from"node:path";function c(t){let{projectDir:c,contentDir:l,sampleCap:u=5}=t,d=[],f=[];try{n(l)}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[`cannot access content directory ${l}: ${e instanceof Error?e.message:String(e)}`]}}let p;try{p=e({projectDir:c,contentDir:l})}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[e instanceof Error?e.message:String(e)]}}function m(e){let t;try{t=r(e,{withFileTypes:!0})}catch(t){let n=t instanceof Error?t.message:String(t);d.push(`could not read directory ${s(l,e)||`.`}: ${n}`);return}for(let n of t){let t=o(e,n.name);if(n.isSymbolicLink()){let e;try{e=i(t)}catch(e){let n=e.code;n===`ENOENT`||n===`ELOOP`?d.push(`broken or cyclic symlink: ${s(l,t)}`):d.push(`cannot resolve symlink ${s(l,t)}: ${n??`unknown error`}`);continue}let n;try{n=a(e)}catch{continue}if(n.isDirectory()){let e=s(l,t);if(p.isDirExcluded(e))continue;m(t)}else if(n.isFile()){let e=s(l,t);if(p.isExcluded(e))continue;f.push(e)}}else if(n.isDirectory()){let e=s(l,t);if(p.isDirExcluded(e))continue;m(t)}else if(n.isFile()){let e=s(l,t);if(p.isExcluded(e))continue;f.push(e)}}}return m(l),{totalCount:f.length,sample:f.slice(0,u),contentDir:l,warnings:d}}function l(e,n){let r=[],i=s(n,e.contentDir),a=i===``?`./`:`./${i}`;if(r.push(`Content:`),r.push(` Found ${e.totalCount} markdown files in ${a}`),e.sample.length>0){let t=e.sample.join(`, `),n=e.totalCount>e.sample.length?`, …`:``;r.push(` Sample: ${t}${n}`)}if(e.warnings.length>0)for(let t of e.warnings)r.push(` Warning: ${t}`);return r.push(``),t(o(n,`.ok`,`config.yml`))?(r.push(` To adjust scope, add patterns to .okignore at the project root.`),r.push(` To change the content root, edit .ok/config.yml → content.dir.`)):r.push(" Run `open-knowledge init` to scaffold config + .okignore."),r.push(``),r.push(` Re-check anytime: open-knowledge preview`),r.join(`
1
+ import{Yt as e}from"./dist-DG18qmsf.mjs";import"./constants-CccigS7Z.mjs";import{existsSync as t,lstatSync as n,readdirSync as r,realpathSync as i,statSync as a}from"node:fs";import{join as o,relative as s}from"node:path";function c(t){let{projectDir:c,contentDir:l,sampleCap:u=5}=t,d=[],f=[];try{n(l)}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[`cannot access content directory ${l}: ${e instanceof Error?e.message:String(e)}`]}}let p;try{p=e({projectDir:c,contentDir:l})}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[e instanceof Error?e.message:String(e)]}}function m(e){let t;try{t=r(e,{withFileTypes:!0})}catch(t){let n=t instanceof Error?t.message:String(t);d.push(`could not read directory ${s(l,e)||`.`}: ${n}`);return}for(let n of t){let t=o(e,n.name);if(n.isSymbolicLink()){let e;try{e=i(t)}catch(e){let n=e.code;n===`ENOENT`||n===`ELOOP`?d.push(`broken or cyclic symlink: ${s(l,t)}`):d.push(`cannot resolve symlink ${s(l,t)}: ${n??`unknown error`}`);continue}let n;try{n=a(e)}catch{continue}if(n.isDirectory()){let e=s(l,t);if(p.isDirExcluded(e))continue;m(t)}else if(n.isFile()){let e=s(l,t);if(p.isExcluded(e))continue;f.push(e)}}else if(n.isDirectory()){let e=s(l,t);if(p.isDirExcluded(e))continue;m(t)}else if(n.isFile()){let e=s(l,t);if(p.isExcluded(e))continue;f.push(e)}}}return m(l),{totalCount:f.length,sample:f.slice(0,u),contentDir:l,warnings:d}}function l(e,n){let r=[],i=s(n,e.contentDir),a=i===``?`./`:`./${i}`;if(r.push(`Content:`),r.push(` Found ${e.totalCount} markdown files in ${a}`),e.sample.length>0){let t=e.sample.join(`, `),n=e.totalCount>e.sample.length?`, …`:``;r.push(` Sample: ${t}${n}`)}if(e.warnings.length>0)for(let t of e.warnings)r.push(` Warning: ${t}`);return r.push(``),t(o(n,`.ok`,`config.yml`))?(r.push(` To adjust scope, add patterns to .okignore at the project root.`),r.push(` To change the content root, edit .ok/config.yml → content.dir.`)):r.push(" Run `open-knowledge init` to scaffold config + .okignore."),r.push(``),r.push(` Re-check anytime: open-knowledge preview`),r.join(`
2
2
  `)}export{c as n,l as t};
3
- //# sourceMappingURL=preview-lXnqdb3D.mjs.map
3
+ //# sourceMappingURL=preview-BQFuOGx7.mjs.map
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./preview-BQFuOGx7.mjs";export{t as formatPreviewBlock,e as previewContent};
@@ -143,4 +143,4 @@ ${s.join(`
143
143
  `))),this._register(this._terminal.onA11yTab(e=>this._handleTab(e))),this._register(this._terminal.onKey(e=>this._handleKey(e.key))),this._register(this._terminal.onBlur(()=>this._clearLiveRegion())),this._register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._register(H(i,`selectionchange`,()=>this._handleSelectionChange())),this._register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRowsDimensions(),this._refreshRows(),this._register(R(()=>{zp?this._debugRootContainer.remove():this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(e){for(let t=0;t<e;t++)this._handleChar(` `)}_handleChar(e){this._liveRegionLineCount<Rp+1&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,e===`
144
144
  `&&(this._liveRegionLineCount++,this._liveRegionLineCount===Rp+1&&(this._liveRegion.textContent+=Ja.get())))}_clearLiveRegion(){this._liveRegion.textContent=``,this._liveRegionLineCount=0}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_renderRows(e,t){let n=this._terminal.buffer,r=n.lines.length.toString();for(let i=e;i<=t;i++){let e=n.lines.get(n.ydisp+i),t=[],a=e?.translateToString(!0,void 0,void 0,t)||``,o=(n.ydisp+i+1).toString(),s=this._rowElements[i];s&&(a.length===0?(s.textContent=`\xA0`,this._rowColumns.set(s,[0,1])):(s.textContent=a,this._rowColumns.set(s,t)),s.setAttribute(`aria-posinset`,o),s.setAttribute(`aria-setsize`,r),this._alignRowWidth(s))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce=``)}_handleBoundaryFocus(e,t){let n=e.target,r=this._rowElements[t===0?1:this._rowElements.length-2];if(n.getAttribute(`aria-posinset`)===(t===0?`1`:`${this._terminal.buffer.lines.length}`)||e.relatedTarget!==r)return;let i,a;if(t===0?(i=n,a=this._rowElements.pop(),this._rowContainer.removeChild(a)):(i=this._rowElements.shift(),a=n,this._rowContainer.removeChild(i)),i.removeEventListener(`focus`,this._topBoundaryFocusListener),a.removeEventListener(`focus`,this._bottomBoundaryFocusListener),t===0){let e=this._createAccessibilityTreeNode();this._rowElements.unshift(e),this._rowContainer.insertAdjacentElement(`afterbegin`,e)}else{let e=this._createAccessibilityTreeNode();this._rowElements.push(e),this._rowContainer.appendChild(e)}this._rowElements[0].addEventListener(`focus`,this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._terminal.scrollLines(t===0?-1:1),this._rowElements[t===0?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;let e=this._coreBrowserService.mainDocument.getSelection();if(!e)return;if(e.isCollapsed){this._rowContainer.contains(e.anchorNode)&&this._terminal.clearSelection();return}if(!e.anchorNode||!e.focusNode){console.error(`anchorNode and/or focusNode are null`);return}let t={node:e.anchorNode,offset:e.anchorOffset},n={node:e.focusNode,offset:e.focusOffset};if((t.node.compareDocumentPosition(n.node)&Node.DOCUMENT_POSITION_PRECEDING||t.node===n.node&&t.offset>n.offset)&&([t,n]=[n,t]),t.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(t={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(t.node))return;let r=this._rowElements.slice(-1)[0];if(n.node.compareDocumentPosition(r)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(n={node:r,offset:r.textContent?.length??0}),!this._rowContainer.contains(n.node))return;let i=({node:e,offset:t})=>{let n=e instanceof Text?e.parentNode:e,r=parseInt(n?.getAttribute(`aria-posinset`),10)-1;if(isNaN(r))return console.warn(`row is invalid. Race condition?`),null;let i=this._rowColumns.get(n);if(!i)return console.warn(`columns is null. Race condition?`),null;let a=t<i.length?i[t]:i.slice(-1)[0]+1;return a>=this._terminal.cols&&(++r,a=0),{row:r,column:a}},a=i(t),o=i(n);if(!(!a||!o)){if(a.row>o.row||a.row===o.row&&a.column>=o.column)throw Error(`invalid range`);this._terminal.select(a.column,a.row,(o.row-a.row)*this._terminal.cols-a.column+o.column)}}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener(`focus`,this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);for(;this._rowElements.length>e;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener(`focus`,this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let e=this._coreBrowserService.mainDocument.createElement(`div`);return e.setAttribute(`role`,`listitem`),e.tabIndex=-1,this._refreshRowDimensions(e),e}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){Object.assign(this._accessibilityContainer.style,{width:`${this._renderService.dimensions.css.canvas.width}px`,fontSize:`${this._terminal.options.fontSize}px`}),this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let e=0;e<this._terminal.rows;e++)this._refreshRowDimensions(this._rowElements[e]),this._alignRowWidth(this._rowElements[e])}}_refreshRowDimensions(e){e.style.height=`${this._renderService.dimensions.css.cell.height}px`}_alignRowWidth(e){e.style.transform=``;let t=e.getBoundingClientRect().width,n=this._rowColumns.get(e)?.slice(-1)?.[0];if(!n)return;let r=n*this._renderService.dimensions.css.cell.width;e.style.transform=`scaleX(${r/t})`}};Bp=I([L(1,So),L(2,jo),L(3,No)],Bp);var Vp=class extends z{constructor(e,t,n,r,i){super(),this._element=e,this._mouseService=t,this._renderService=n,this._bufferService=r,this._linkProviderService=i,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this._register(new V),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this._register(new V),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this._register(R(()=>{fs(this._linkCacheDisposables),this._linkCacheDisposables.length=0,this._lastMouseEvent=void 0,this._activeProviderReplies?.clear()})),this._register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this._register(H(this._element,`mouseleave`,()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this._register(H(this._element,`mousemove`,this._handleMouseMove.bind(this))),this._register(H(this._element,`mousedown`,this._handleMouseDown.bind(this))),this._register(H(this._element,`mouseup`,this._handleMouseUp.bind(this)))}get currentLink(){return this._currentLink}_handleMouseMove(e){this._lastMouseEvent=e;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!t)return;this._isMouseOut=!1;let n=e.composedPath();for(let e=0;e<n.length;e++){let t=n[e];if(t.classList.contains(`xterm`))break;if(t.classList.contains(`xterm-hover`))return}(!this._lastBufferCell||t.x!==this._lastBufferCell.x||t.y!==this._lastBufferCell.y)&&(this._handleHover(t),this._lastBufferCell=t)}_handleHover(e){if(this._activeLine!==e.y||this._wasResized){this._clearCurrentLink(),this._askForLink(e,!1),this._wasResized=!1;return}this._currentLink&&this._linkAtPosition(this._currentLink.link,e)||(this._clearCurrentLink(),this._askForLink(e,!0))}_askForLink(e,t){(!this._activeProviderReplies||!t)&&(this._activeProviderReplies?.forEach(e=>{e?.forEach(e=>{e.link.dispose&&e.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=e.y);let n=!1;for(let[r,i]of this._linkProviderService.linkProviders.entries())t?this._activeProviderReplies?.get(r)&&(n=this._checkLinkProviderResult(r,e,n)):i.provideLinks(e.y,t=>{if(this._isMouseOut)return;let i=t?.map(e=>({link:e}));this._activeProviderReplies?.set(r,i),n=this._checkLinkProviderResult(r,e,n),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)})}_removeIntersectingLinks(e,t){let n=new Set;for(let r=0;r<t.size;r++){let i=t.get(r);if(i)for(let t=0;t<i.length;t++){let r=i[t],a=r.link.range.start.y<e?0:r.link.range.start.x,o=r.link.range.end.y>e?this._bufferService.cols:r.link.range.end.x;for(let e=a;e<=o;e++){if(n.has(e)){i.splice(t--,1);break}n.add(e)}}}}_checkLinkProviderResult(e,t,n){if(!this._activeProviderReplies)return n;let r=this._activeProviderReplies.get(e),i=!1;for(let t=0;t<e;t++)(!this._activeProviderReplies.has(t)||this._activeProviderReplies.get(t))&&(i=!0);if(!i&&r){let e=r.find(e=>this._linkAtPosition(e.link,t));e&&(n=!0,this._handleNewLink(e))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!n)for(let e=0;e<this._activeProviderReplies.size;e++){let r=this._activeProviderReplies.get(e)?.find(e=>this._linkAtPosition(e.link,t));if(r){n=!0,this._handleNewLink(r);break}}return n}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._currentLink)return;let t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink&&Hp(this._mouseDownLink.link,this._currentLink.link)&&this._linkAtPosition(this._currentLink.link,t)&&this._currentLink.link.activate(e,this._currentLink.link.text)}_clearCurrentLink(e,t){!this._currentLink||!this._lastMouseEvent||(!e||!t||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,fs(this._linkCacheDisposables),this._linkCacheDisposables.length=0)}_handleNewLink(e){if(!this._lastMouseEvent)return;let t=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);t&&this._linkAtPosition(e.link,t)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:e.link.decorations===void 0?!0:e.link.decorations.underline,pointerCursor:e.link.decorations===void 0?!0:e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:e=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&this._element.classList.toggle(`xterm-cursor-pointer`,e))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:t=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(e=>{if(!this._currentLink)return;let t=e.start===0?0:e.start+1+this._bufferService.buffer.ydisp,n=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=n&&(this._clearCurrentLink(t,n),this._lastMouseEvent)){let e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._askForLink(e,!1)}})))}_linkHover(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add(`xterm-cursor-pointer`)),t.hover&&t.hover(n,t.text)}_fireUnderlineEvent(e,t){let n=e.range,r=this._bufferService.buffer.ydisp,i=this._createLinkUnderlineEvent(n.start.x-1,n.start.y-r-1,n.end.x,n.end.y-r-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(i)}_linkLeave(e,t,n){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove(`xterm-cursor-pointer`)),t.leave&&t.leave(n,t.text)}_linkAtPosition(e,t){let n=e.range.start.y*this._bufferService.cols+e.range.start.x,r=e.range.end.y*this._bufferService.cols+e.range.end.x,i=t.y*this._bufferService.cols+t.x;return n<=i&&i<=r}_positionFromMouseEvent(e,t,n){let r=n.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(r)return{x:r[0],y:r[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,n,r,i){return{x1:e,y1:t,x2:n,y2:r,cols:this._bufferService.cols,fg:i}}};Vp=I([L(1,Mo),L(2,No),L(3,vo),L(4,Lo)],Vp);function Hp(e,t){return e.text===t.text&&e.range.start.x===t.range.start.x&&e.range.start.y===t.range.start.y&&e.range.end.x===t.range.end.x&&e.range.end.y===t.range.end.y}var Up=class extends Op{constructor(e={}){super(e),this._linkifier=this._register(new gs),this.browser=id,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this._register(new gs),this._onCursorMove=this._register(new V),this.onCursorMove=this._onCursorMove.event,this._onKey=this._register(new V),this.onKey=this._onKey.event,this._onRender=this._register(new V),this.onRender=this._onRender.event,this._onSelectionChange=this._register(new V),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this._register(new V),this.onTitleChange=this._onTitleChange.event,this._onBell=this._register(new V),this.onBell=this._onBell.event,this._onFocus=this._register(new V),this._onBlur=this._register(new V),this._onA11yCharEmitter=this._register(new V),this._onA11yTabEmitter=this._register(new V),this._onWillOpen=this._register(new V),this._setup(),this._decorationService=this._instantiationService.createInstance(Pp),this._instantiationService.setService(Do,this._decorationService),this._linkProviderService=this._instantiationService.createInstance($u),this._instantiationService.setService(Lo,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(Oo)),this._register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this._register(this._inputHandler.onRequestRefreshRows(e=>this.refresh(e?.start??0,e?.end??this.rows-1))),this._register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this._register(this._inputHandler.onRequestReset(()=>this.reset())),this._register(this._inputHandler.onRequestWindowsOptionsReport(e=>this._reportWindowsOptions(e))),this._register(this._inputHandler.onColor(e=>this._handleColorEvent(e))),this._register(Ts.forward(this._inputHandler.onCursorMove,this._onCursorMove)),this._register(Ts.forward(this._inputHandler.onTitleChange,this._onTitleChange)),this._register(Ts.forward(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this._register(Ts.forward(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this._register(this._bufferService.onResize(e=>this._afterResize(e.cols,e.rows))),this._register(R(()=>{this._customKeyEventHandler=void 0,this.element?.parentNode?.removeChild(this.element)}))}get linkifier(){return this._linkifier.value}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}_handleColorEvent(e){if(this._themeService)for(let t of e){let e,n=``;switch(t.index){case 256:e=`foreground`,n=`10`;break;case 257:e=`background`,n=`11`;break;case 258:e=`cursor`,n=`12`;break;default:e=`ansi`,n=`4;`+t.index}switch(t.type){case 0:let r=K.toColorRGB(e===`ansi`?this._themeService.colors.ansi[t.index]:this._themeService.colors[e]);this.coreService.triggerDataEvent(`${U.ESC}]${n};${fp(r)}${_u.ST}`);break;case 1:if(e===`ansi`)this._themeService.modifyColors(e=>e.ansi[t.index]=G.toColor(...t.color));else{let n=e;this._themeService.modifyColors(e=>e[n]=G.toColor(...t.color))}break;case 2:this._themeService.restoreColor(t.index);break}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(Bp,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(U.ESC+`[I`),this.element.classList.add(`focus`),this._showCursor(),this._onFocus.fire()}blur(){return this.textarea?.blur()}_handleTextAreaBlur(){this.textarea.value=``,this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(U.ESC+`[O`),this.element.classList.remove(`focus`),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(!t)return;let n=Math.min(this.buffer.x,this.cols-1),r=this._renderService.dimensions.css.cell.height,i=t.getWidth(n),a=this._renderService.dimensions.css.cell.width*i,o=this.buffer.y*this._renderService.dimensions.css.cell.height,s=n*this._renderService.dimensions.css.cell.width;this.textarea.style.left=s+`px`,this.textarea.style.top=o+`px`,this.textarea.style.width=a+`px`,this.textarea.style.height=r+`px`,this.textarea.style.lineHeight=r+`px`,this.textarea.style.zIndex=`-5`}_initGlobal(){this._bindKeys(),this._register(H(this.element,`copy`,e=>{this.hasSelection()&&Za(e,this._selectionService)}));let e=e=>Qa(e,this.textarea,this.coreService,this.optionsService);this._register(H(this.textarea,`paste`,e)),this._register(H(this.element,`paste`,e)),cd?this._register(H(this.element,`mousedown`,e=>{e.button===2&&to(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this._register(H(this.element,`contextmenu`,e=>{to(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),gd&&this._register(H(this.element,`auxclick`,e=>{e.button===1&&eo(e,this.textarea,this.screenElement)}))}_bindKeys(){this._register(H(this.textarea,`keyup`,e=>this._keyUp(e),!0)),this._register(H(this.textarea,`keydown`,e=>this._keyDown(e),!0)),this._register(H(this.textarea,`keypress`,e=>this._keyPress(e),!0)),this._register(H(this.textarea,`compositionstart`,()=>this._compositionHelper.compositionstart())),this._register(H(this.textarea,`compositionupdate`,e=>this._compositionHelper.compositionupdate(e))),this._register(H(this.textarea,`compositionend`,()=>this._compositionHelper.compositionend())),this._register(H(this.textarea,`input`,e=>this._inputEvent(e),!0)),this._register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(e){if(!e)throw Error(`Terminal requires a parent element.`);if(e.isConnected||this._logService.debug(`Terminal.open was called on an element that was not attached to the DOM`),this.element?.ownerDocument.defaultView&&this._coreBrowserService){this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView);return}this._document=e.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement(`div`),this.element.dir=`ltr`,this.element.classList.add(`terminal`),this.element.classList.add(`xterm`),e.appendChild(this.element);let t=this._document.createDocumentFragment();this._viewportElement=this._document.createElement(`div`),this._viewportElement.classList.add(`xterm-viewport`),t.appendChild(this._viewportElement),this.screenElement=this._document.createElement(`div`),this.screenElement.classList.add(`xterm-screen`),this._register(H(this.screenElement,`mousemove`,e=>this.updateCursorStyle(e))),this._helperContainer=this._document.createElement(`div`),this._helperContainer.classList.add(`xterm-helpers`),this.screenElement.appendChild(this._helperContainer),t.appendChild(this.screenElement);let n=this.textarea=this._document.createElement(`textarea`);this.textarea.classList.add(`xterm-helper-textarea`),this.textarea.setAttribute(`aria-label`,Ka.get()),_d||this.textarea.setAttribute(`aria-multiline`,`false`),this.textarea.setAttribute(`autocorrect`,`off`),this.textarea.setAttribute(`autocapitalize`,`off`),this.textarea.setAttribute(`spellcheck`,`false`),this.textarea.tabIndex=0,this._register(this.optionsService.onSpecificOptionChange(`disableStdin`,()=>n.readOnly=this.optionsService.rawOptions.disableStdin)),this.textarea.readOnly=this.optionsService.rawOptions.disableStdin,this._coreBrowserService=this._register(this._instantiationService.createInstance(Zu,this.textarea,e.ownerDocument.defaultView??window,this._document??typeof window<`u`?window.document:null)),this._instantiationService.setService(jo,this._coreBrowserService),this._register(H(this.textarea,`focus`,e=>this._handleTextAreaFocus(e))),this._register(H(this.textarea,`blur`,()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(qu,this._document,this._helperContainer),this._instantiationService.setService(Ao,this._charSizeService),this._themeService=this._instantiationService.createInstance(ef),this._instantiationService.setService(Io,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(Ou),this._instantiationService.setService(Fo,this._characterJoinerService),this._renderService=this._register(this._instantiationService.createInstance(Cd,this.rows,this.screenElement)),this._instantiationService.setService(No,this._renderService),this._register(this._renderService.onRenderedViewportChange(e=>this._onRender.fire(e))),this.onResize(e=>this._renderService.resize(e.cols,e.rows)),this._compositionView=this._document.createElement(`div`),this._compositionView.classList.add(`composition-view`),this._compositionHelper=this._instantiationService.createInstance(vu,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(nd),this._instantiationService.setService(Mo,this._mouseService);let r=this._linkifier.value=this._register(this._instantiationService.createInstance(Vp,this.screenElement));this.element.appendChild(t);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this._register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this._register(this.onBlur(()=>this._renderService.handleBlur())),this._register(this.onFocus(()=>this._renderService.handleFocus())),this._viewport=this._register(this._instantiationService.createInstance(lu,this.element,this.screenElement)),this._register(this._viewport.onRequestScrollLines(e=>{super.scrollLines(e,!1),this.refresh(0,this.rows-1)})),this._selectionService=this._register(this._instantiationService.createInstance(Gd,this.element,this.screenElement,r)),this._instantiationService.setService(Po,this._selectionService),this._register(this._selectionService.onRequestScrollLines(e=>this.scrollLines(e.amount,e.suppressScrollEvent))),this._register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this._register(this._selectionService.onRequestRedraw(e=>this._renderService.handleSelectionChanged(e.start,e.end,e.columnSelectMode))),this._register(this._selectionService.onLinuxMouseSelection(e=>{this.textarea.value=e,this.textarea.focus(),this.textarea.select()})),this._register(Ts.any(this._onScroll.event,this._inputHandler.onScroll)(()=>{this._selectionService.refresh(),this._viewport?.queueSync()})),this._register(this._instantiationService.createInstance(uu,this.screenElement)),this._register(H(this.element,`mousedown`,e=>this._selectionService.handleMouseDown(e))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add(`enable-mouse-events`)):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(Bp,this)),this._register(this.optionsService.onSpecificOptionChange(`screenReaderMode`,e=>this._handleScreenReaderModeOptionChange(e))),this.options.overviewRuler.width&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(hu,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange(`overviewRuler`,e=>{!this._overviewRulerRenderer&&e&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this._register(this._instantiationService.createInstance(hu,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(Ku,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let e=this,t=this.element;function n(t){let n=e._mouseService.getMouseReportCoords(t,e.screenElement);if(!n)return!1;let r,i;switch(t.overrideType||t.type){case`mousemove`:i=32,t.buttons===void 0?(r=3,t.button!==void 0&&(r=t.button<3?t.button:3)):r=t.buttons&1?0:t.buttons&4?1:t.buttons&2?2:3;break;case`mouseup`:i=0,r=t.button<3?t.button:3;break;case`mousedown`:i=1,r=t.button<3?t.button:3;break;case`wheel`:if(e._customWheelEventHandler&&e._customWheelEventHandler(t)===!1)return!1;let n=t.deltaY;if(n===0||e.coreMouseService.consumeWheelEvent(t,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return!1;i=n<0?0:1,r=4;break;default:return!1}return i===void 0||r===void 0||r>4?!1:e.coreMouseService.triggerMouseEvent({col:n.col,row:n.row,x:n.x,y:n.y,button:r,action:i,ctrl:t.ctrlKey,alt:t.altKey,shift:t.shiftKey})}let r={mouseup:null,wheel:null,mousedrag:null,mousemove:null},i={mouseup:e=>(n(e),e.buttons||(this._document.removeEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.removeEventListener(`mousemove`,r.mousedrag)),this.cancel(e)),wheel:e=>(n(e),this.cancel(e,!0)),mousedrag:e=>{e.buttons&&n(e)},mousemove:e=>{e.buttons||n(e)}};this._register(this.coreMouseService.onProtocolChange(e=>{e?(this.optionsService.rawOptions.logLevel===`debug`&&this._logService.debug(`Binding to mouse events:`,this.coreMouseService.explainEvents(e)),this.element.classList.add(`enable-mouse-events`),this._selectionService.disable()):(this._logService.debug(`Unbinding from mouse events.`),this.element.classList.remove(`enable-mouse-events`),this._selectionService.enable()),e&8?r.mousemove||=(t.addEventListener(`mousemove`,i.mousemove),i.mousemove):(t.removeEventListener(`mousemove`,r.mousemove),r.mousemove=null),e&16?r.wheel||=(t.addEventListener(`wheel`,i.wheel,{passive:!1}),i.wheel):(t.removeEventListener(`wheel`,r.wheel),r.wheel=null),e&2?r.mouseup||=i.mouseup:(this._document.removeEventListener(`mouseup`,r.mouseup),r.mouseup=null),e&4?r.mousedrag||=i.mousedrag:(this._document.removeEventListener(`mousemove`,r.mousedrag),r.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this._register(H(t,`mousedown`,e=>{if(e.preventDefault(),this.focus(),!(!this.coreMouseService.areMouseEventsActive||this._selectionService.shouldForceSelection(e)))return n(e),r.mouseup&&this._document.addEventListener(`mouseup`,r.mouseup),r.mousedrag&&this._document.addEventListener(`mousemove`,r.mousedrag),this.cancel(e)})),this._register(H(t,`wheel`,t=>{if(!r.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(t)===!1)return!1;if(!this.buffer.hasScrollback){if(t.deltaY===0)return!1;if(e.coreMouseService.consumeWheelEvent(t,e._renderService?.dimensions?.device?.cell?.height,e._coreBrowserService?.dpr)===0)return this.cancel(t,!0);let n=U.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?`O`:`[`)+(t.deltaY<0?`A`:`B`);return this.coreService.triggerDataEvent(n,!0),this.cancel(t,!0)}}},{passive:!1}))}refresh(e,t){this._renderService?.refreshRows(e,t)}updateCursorStyle(e){this._selectionService?.shouldColumnSelect(e)?this.element.classList.add(`column-select`):this.element.classList.remove(`column-select`)}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,t){this._viewport?this._viewport.scrollLines(e):super.scrollLines(e,t),this.refresh(0,this.rows-1)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(e){e&&this._viewport?this._viewport.scrollToLine(this.buffer.ybase,!0):this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){let t=e-this._bufferService.buffer.ydisp;t!==0&&this.scrollLines(t)}paste(e){$a(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}attachCustomWheelEventHandler(e){this._customWheelEventHandler=e}registerLinkProvider(e){return this._linkProviderService.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);let t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw Error(`Terminal must be opened first`);this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return this._selectionService?this._selectionService.hasSelection:!1}select(e,t,n){this._selectionService.setSelection(e,t,n)}getSelection(){return this._selectionService?this._selectionService.selectionText:``}getSelectionPosition(){if(!(!this._selectionService||!this._selectionService.hasSelection))return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){this._selectionService?.clearSelection()}selectAll(){this._selectionService?.selectAll()}selectLines(e,t){this._selectionService?.selectLines(e,t)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;let t=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!t&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(!0),!1;!t&&(e.key===`Dead`||e.key===`AltGraph`)&&(this._unprocessedDeadKey=!0);let n=Ap(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),n.type===3||n.type===2){let t=this.rows-1;return this.scrollLines(n.type===2?-t:t),this.cancel(e,!0)}if(n.type===1&&this.selectAll(),this._isThirdLevelShift(this.browser,e)||(n.cancel&&this.cancel(e,!0),!n.key)||e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.key.length===1&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)return!0;if(this._unprocessedDeadKey)return this._unprocessedDeadKey=!1,!0;if((n.key===U.ETX||n.key===U.CR)&&(this.textarea.value=``),this._onKey.fire({key:n.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(n.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey)return this.cancel(e,!0);this._keyDownHandled=!0}_isThirdLevelShift(e,t){let n=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState(`AltGraph`);return t.type===`keypress`?n:n&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,!(this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)&&(Wp(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let t;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(e)===!1)return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(e.which===null||e.which===void 0)t=e.keyCode;else if(e.which!==0&&e.charCode!==0)t=e.which;else return!1;return!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)?!1:(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,!0)}_inputEvent(e){if(e.data&&e.inputType===`insertText`&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;let t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1}resize(e,t){if(e===this.cols&&t===this.rows){this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure();return}super.resize(e,t)}_afterResize(e,t){this._charSizeService?.measure()}clear(){if(!(this.buffer.ybase===0&&this.buffer.y===0)){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let e=1;e<this.rows;e++)this.buffer.lines.push(this.buffer.getBlankLine(Z));this._onScroll.fire({position:this.buffer.ydisp}),this.refresh(0,this.rows-1)}}reset(){this.options.rows=this.rows,this.options.cols=this.cols;let e=this._customKeyEventHandler;this._setup(),super.reset(),this._selectionService?.reset(),this._decorationService.reset(),this._customKeyEventHandler=e,this.refresh(0,this.rows-1)}clearTextureAtlas(){this._renderService?.clearTextureAtlas()}_reportFocus(){this.element?.classList.contains(`focus`)?this.coreService.triggerDataEvent(U.ESC+`[I`):this.coreService.triggerDataEvent(U.ESC+`[O`)}_reportWindowsOptions(e){if(this._renderService)switch(e){case 0:let e=this._renderService.dimensions.css.canvas.width.toFixed(0),t=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${U.ESC}[4;${t};${e}t`);break;case 1:let n=this._renderService.dimensions.css.cell.width.toFixed(0),r=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${U.ESC}[6;${r};${n}t`);break}}cancel(e,t){if(!(!this.options.cancelEvents&&!t))return e.preventDefault(),e.stopPropagation(),!1}};function Wp(e){return e.keyCode===16||e.keyCode===17||e.keyCode===18}var Gp=class{constructor(){this._addons=[]}dispose(){for(let e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()}loadAddon(e,t){let n={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(n),t.dispose=()=>this._wrappedAddonDispose(n),t.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let t=-1;for(let n=0;n<this._addons.length;n++)if(this._addons[n]===e){t=n;break}if(t===-1)throw Error(`Could not dispose an addon that has not been loaded`);e.isDisposed=!0,e.dispose.apply(e.instance),this._addons.splice(t,1)}},Kp=class{constructor(e){this._line=e}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new uo)}translateToString(e,t,n){return this._line.translateToString(e,t,n)}},qp=class{constructor(e,t){this._buffer=e,this.type=t}init(e){return this._buffer=e,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(e){let t=this._buffer.lines.get(e);if(t)return new Kp(t)}getNullCell(){return new uo}},Jp=class extends z{constructor(e){super(),this._core=e,this._onBufferChange=this._register(new V),this.onBufferChange=this._onBufferChange.event,this._normal=new qp(this._core.buffers.normal,`normal`),this._alternate=new qp(this._core.buffers.alt,`alternate`),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw Error(`Active buffer is neither normal nor alternate`)}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}},Yp=class{constructor(e){this._core=e}registerCsiHandler(e,t){return this._core.registerCsiHandler(e,e=>t(e.toArray()))}addCsiHandler(e,t){return this.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._core.registerDcsHandler(e,(e,n)=>t(e,n.toArray()))}addDcsHandler(e,t){return this.registerDcsHandler(e,t)}registerEscHandler(e,t){return this._core.registerEscHandler(e,t)}addEscHandler(e,t){return this.registerEscHandler(e,t)}registerOscHandler(e,t){return this._core.registerOscHandler(e,t)}addOscHandler(e,t){return this.registerOscHandler(e,t)}},Xp=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}},Zp=[`cols`,`rows`],Qp=0,$p=class extends z{constructor(e){super(),this._core=this._register(new Up(e)),this._addonManager=this._register(new Gp),this._publicOptions={...this._core.options};let t=e=>this._core.options[e],n=(e,t)=>{this._checkReadonlyOptions(e),this._core.options[e]=t};for(let e in this._core.options){let r={get:t.bind(this,e),set:n.bind(this,e)};Object.defineProperty(this._publicOptions,e,r)}}_checkReadonlyOptions(e){if(Zp.includes(e))throw Error(`Option "${e}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw Error(`You must set the allowProposedApi option to true to use proposed API`)}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||=new Yp(this._core),this._parser}get unicode(){return this._checkProposedApi(),new Xp(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||=this._register(new Jp(this._core)),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let e=this._core.coreService.decPrivateModes,t=`none`;switch(this._core.coreMouseService.activeProtocol){case`X10`:t=`x10`;break;case`VT200`:t=`vt200`;break;case`DRAG`:t=`drag`;break;case`ANY`:t=`any`;break}return{applicationCursorKeysMode:e.applicationCursorKeys,applicationKeypadMode:e.applicationKeypad,bracketedPasteMode:e.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:t,originMode:e.origin,reverseWraparoundMode:e.reverseWraparound,sendFocusMode:e.sendFocus,synchronizedOutputMode:e.synchronizedOutput,wraparoundMode:e.wraparound}}get options(){return this._publicOptions}set options(e){for(let t in e)this._publicOptions[t]=e[t]}blur(){this._core.blur()}focus(){this._core.focus()}input(e,t=!0){this._core.input(e,t)}resize(e,t){this._verifyIntegers(e,t),this._core.resize(e,t)}open(e){this._core.open(e)}attachCustomKeyEventHandler(e){this._core.attachCustomKeyEventHandler(e)}attachCustomWheelEventHandler(e){this._core.attachCustomWheelEventHandler(e)}registerLinkProvider(e){return this._core.registerLinkProvider(e)}registerCharacterJoiner(e){return this._checkProposedApi(),this._core.registerCharacterJoiner(e)}deregisterCharacterJoiner(e){this._checkProposedApi(),this._core.deregisterCharacterJoiner(e)}registerMarker(e=0){return this._verifyIntegers(e),this._core.registerMarker(e)}registerDecoration(e){return this._checkProposedApi(),this._verifyPositiveIntegers(e.x??0,e.width??0,e.height??0),this._core.registerDecoration(e)}hasSelection(){return this._core.hasSelection()}select(e,t,n){this._verifyIntegers(e,t,n),this._core.select(e,t,n)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(e,t){this._verifyIntegers(e,t),this._core.selectLines(e,t)}dispose(){super.dispose()}scrollLines(e){this._verifyIntegers(e),this._core.scrollLines(e)}scrollPages(e){this._verifyIntegers(e),this._core.scrollPages(e)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(e){this._verifyIntegers(e),this._core.scrollToLine(e)}clear(){this._core.clear()}write(e,t){this._core.write(e,t)}writeln(e,t){this._core.write(e),this._core.write(`\r
145
145
  `,t)}paste(e){this._core.paste(e)}refresh(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(e){this._addonManager.loadAddon(this,e)}static get strings(){return{get promptLabel(){return Ka.get()},set promptLabel(e){Ka.set(e)},get tooMuchOutput(){return Ja.get()},set tooMuchOutput(e){Ja.set(e)}}}_verifyIntegers(...e){for(Qp of e)if(Qp===1/0||isNaN(Qp)||Qp%1!=0)throw Error(`This API only accepts integers`)}_verifyPositiveIntegers(...e){for(Qp of e)if(Qp&&(Qp===1/0||isNaN(Qp)||Qp%1!=0||Qp<0))throw Error(`This API only accepts positive integers`)}},em=e(t(),1),$=n(),tm=`https://docs.claude.com/en/docs/claude-code`;function nm(e){return e.claude===`not-found`?`claude-missing`:e.claude===`present`&&e.mcp===`needs-rewire`?`mcp-needs-rewire`:null}function rm(e){let t=(0,p.c)(29),{readiness:n,bridge:r,onDismiss:a}=e,{_:o}=i(),s;t[0]===n?s=t[1]:(s=nm(n),t[0]=n,t[1]=s);let c=s;if(c===null)return null;let f=c===`claude-missing`,m;t[2]!==o||t[3]!==f?(m=o(f?{id:`dNM58w`}:{id:`_bth6g`}),t[2]=o,t[3]=f,t[4]=m):m=t[4];let h=m,g;t[5]!==o||t[6]!==f?(g=o(f?{id:`E1tG2u`}:{id:`gfohmY`}),t[5]=o,t[6]=f,t[7]=g):g=t[7];let _=g,v;t[8]!==o||t[9]!==r.shell||t[10]!==r.terminal||t[11]!==f||t[12]!==a?(v=function(){if(f){r.shell.openExternal(tm);return}r.terminal.rewireClaudeMcp().then(e=>{if(e.rewireError!=null){u.error(o({id:`cn1sLi`}));return}a()}).catch(e=>{console.warn(`[terminal] rewireClaudeMcp failed:`,e),u.error(o({id:`cn1sLi`}))})},t[8]=o,t[9]=r.shell,t[10]=r.terminal,t[11]=f,t[12]=a,t[13]=v):v=t[13];let y=v,b;t[14]===h?b=t[15]:(b=(0,$.jsx)(`p`,{className:`min-w-0 flex-1`,children:h}),t[14]=h,t[15]=b);let x;t[16]!==_||t[17]!==y?(x=(0,$.jsx)(l,{size:`sm`,variant:`secondary`,className:`shrink-0`,onClick:y,children:_}),t[16]=_,t[17]=y,t[18]=x):x=t[18];let S;t[19]===o?S=t[20]:(S=o({id:`1QfxQT`}),t[19]=o,t[20]=S);let C;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,$.jsx)(d,{"aria-hidden":`true`,className:`size-4`}),t[21]=C):C=t[21];let w;t[22]!==a||t[23]!==S?(w=(0,$.jsx)(l,{size:`icon`,variant:`ghost`,"aria-label":S,className:`size-6 shrink-0`,onClick:a,children:C}),t[22]=a,t[23]=S,t[24]=w):w=t[24];let ee;return t[25]!==b||t[26]!==x||t[27]!==w?(ee=(0,$.jsxs)(`div`,{role:`status`,"data-testid":`terminal-readiness-banner`,className:`flex shrink-0 items-center gap-3 border-border border-b bg-muted px-3 py-2 text-foreground text-xs`,children:[b,x,w]}),t[25]=b,t[26]=x,t[27]=w,t[28]=ee):ee=t[28],ee}function im(e){let t=(0,p.c)(25),{cli:n,bridge:r,onDismiss:a}=e,{_:o}=i(),{bin:c,displayName:u,docsUrl:f}=s[n],m;t[0]!==o||t[1]!==c||t[2]!==u?(m=o({id:`rSoi6g`,values:{displayName:u,bin:c}}),t[0]=o,t[1]=c,t[2]=u,t[3]=m):m=t[3];let h;t[4]===m?h=t[5]:(h=(0,$.jsx)(`p`,{className:`min-w-0 flex-1`,children:m}),t[4]=m,t[5]=h);let g;t[6]!==r.shell||t[7]!==f?(g=()=>void r.shell.openExternal(f),t[6]=r.shell,t[7]=f,t[8]=g):g=t[8];let _;t[9]!==o||t[10]!==u?(_=o({id:`F0OA00`,values:{displayName:u}}),t[9]=o,t[10]=u,t[11]=_):_=t[11];let v;t[12]!==g||t[13]!==_?(v=(0,$.jsx)(l,{size:`sm`,variant:`secondary`,className:`shrink-0`,onClick:g,children:_}),t[12]=g,t[13]=_,t[14]=v):v=t[14];let y;t[15]===o?y=t[16]:(y=o({id:`1QfxQT`}),t[15]=o,t[16]=y);let b;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(d,{"aria-hidden":`true`,className:`size-4`}),t[17]=b):b=t[17];let x;t[18]!==a||t[19]!==y?(x=(0,$.jsx)(l,{size:`icon`,variant:`ghost`,"aria-label":y,className:`size-6 shrink-0`,onClick:a,children:b}),t[18]=a,t[19]=y,t[20]=x):x=t[20];let S;return t[21]!==h||t[22]!==v||t[23]!==x?(S=(0,$.jsxs)(`div`,{role:`status`,className:`flex shrink-0 items-center gap-3 border-border border-b bg-muted px-3 py-2 text-foreground text-xs`,children:[h,v,x]}),t[21]=h,t[22]=v,t[23]=x,t[24]=S):S=t[24],S}function am(e){let t=(0,p.c)(20),{info:n,onRestart:r}=e,{_:a}=i(),o;if(n.error!=null){let e;t[0]===a?e=t[1]:(e=a({id:`uL_Wx8`}),t[0]=a,t[1]=e),o=e}else if(n.signal!=null&&n.signal!==0){let e;t[2]!==a||t[3]!==n.signal?(e=a({id:`ubMwcO`,values:{0:n.signal}}),t[2]=a,t[3]=n.signal,t[4]=e):e=t[4],o=e}else if(n.exitCode!==0){let e;t[5]!==a||t[6]!==n.exitCode?(e=a({id:`q4YJl_`,values:{0:n.exitCode}}),t[5]=a,t[6]=n.exitCode,t[7]=e):e=t[7],o=e}else{let e;t[8]===a?e=t[9]:(e=a({id:`AE7BY3`}),t[8]=a,t[9]=e),o=e}let s;t[10]===o?s=t[11]:(s=(0,$.jsx)(`p`,{className:`max-w-sm text-sm text-muted-foreground`,children:o}),t[10]=o,t[11]=s);let c;t[12]===a?c=t[13]:(c=a({id:`BQKHuL`}),t[12]=a,t[13]=c);let u;t[14]!==r||t[15]!==c?(u=(0,$.jsx)(l,{size:`sm`,variant:`outline`,className:`uppercase font-mono`,onClick:r,children:c}),t[14]=r,t[15]=c,t[16]=u):u=t[16];let d;return t[17]!==s||t[18]!==u?(d=(0,$.jsxs)(`div`,{role:`alert`,className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 bg-background/90 dark:bg-transparent p-6 text-center`,children:[s,u]}),t[17]=s,t[18]=u,t[19]=d):d=t[19],d}function om(e){let t=(0,p.c)(11),{reason:n,onClose:r}=e,{_:a}=i(),o;t[0]!==a||t[1]!==n?(o=a(n===`not-consented`?{id:`Khxcyu`}:{id:`fBHvBn`}),t[0]=a,t[1]=n,t[2]=o):o=t[2];let s=o,c;t[3]===s?c=t[4]:(c=(0,$.jsx)(`p`,{className:`max-w-sm text-sm`,children:s}),t[3]=s,t[4]=c);let u;t[5]!==a||t[6]!==r?(u=r?(0,$.jsx)(l,{size:`sm`,variant:`secondary`,onClick:r,children:a({id:`Iq8zdU`})}):null,t[5]=a,t[6]=r,t[7]=u):u=t[7];let d;return t[8]!==c||t[9]!==u?(d=(0,$.jsxs)(`div`,{role:`alert`,className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 bg-background/90 p-6 text-center text-foreground`,children:[c,u]}),t[8]=c,t[9]=u,t[10]=d):d=t[10],d}var sm=1,cm=2;function lm(e,t,n,r){let i=n+(t===sm?e:t===cm?e*r.viewportRows:e/r.cellHeight)*r.sensitivity,a=Math.trunc(i);return a===0?{count:0,button:65,accumulator:i}:{count:Math.min(Math.abs(a),r.maxRowsPerEvent),button:a<0?64:65,accumulator:i-a}}function um(e){return`\x1b[<${e};1;1M`}function dm(e){let t=(0,p.c)(21),{bridge:n,className:r,onClose:a,onExit:s,onTitleChange:l,launch:u}=e,d=u===void 0?null:u,{_:m}=i(),{resolvedTheme:h}=o(),[g,_]=(0,em.useState)(0),v;t[0]===m?v=t[1]:(v=m({id:`ALhMYW`}),t[0]=m,t[1]=v);let y;t[2]===h?y=t[3]:(y=f(h),t[2]=h,t[3]=y);let b;t[4]===y.background?b=t[5]:(b={backgroundColor:y.background},t[4]=y.background,t[5]=b);let x;t[6]===r?x=t[7]:(x=c(`relative flex h-full w-full flex-col overflow-hidden`,r),t[6]=r,t[7]=x);let S;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>_(fm),t[8]=S):S=t[8];let C;t[9]!==n||t[10]!==d||t[11]!==a||t[12]!==s||t[13]!==l||t[14]!==g?(C=(0,$.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:(0,$.jsx)(pm,{bridge:n,onClose:a,onExit:s,onTitleChange:l,onRestart:S,launch:d},g)}),t[9]=n,t[10]=d,t[11]=a,t[12]=s,t[13]=l,t[14]=g,t[15]=C):C=t[15];let w;return t[16]!==v||t[17]!==b||t[18]!==x||t[19]!==C?(w=(0,$.jsx)(`section`,{"aria-label":v,style:b,className:x,children:C}),t[16]=v,t[17]=b,t[18]=x,t[19]=C,t[20]=w):w=t[20],w}function fm(e){return e+1}function pm(e){let t=(0,p.c)(46),{bridge:n,onClose:r,onExit:i,onTitleChange:s,onRestart:c,launch:l}=e,u=l===void 0?null:l,d=(0,em.useRef)(null),m=(0,em.useRef)(i),h=(0,em.useRef)(s),{resolvedTheme:_}=o(),v=(0,em.useRef)(null),y=(0,em.useRef)(_),[b,x]=(0,em.useState)(`starting`),[S,C]=(0,em.useState)(null),[w,ee]=(0,em.useState)(!1),[te,T]=(0,em.useState)(null),ne=(0,em.useRef)(null),[E,re]=(0,em.useState)(!1),ie=(0,em.useRef)(null),[ae,D]=(0,em.useState)(null),O;t[0]!==i||t[1]!==s?(O=()=>{m.current=i,h.current=s},t[0]=i,t[1]=s,t[2]=O):O=t[2],(0,em.useEffect)(O);let k,oe;t[3]===n?(k=t[4],oe=t[5]):(k=()=>{let e=d.current;if(!e)return;let t=!1,r=null,i,a,o,s,c=new $p({screenReaderMode:!0,minimumContrastRatio:4.5,allowProposedApi:!0,cursorBlink:!0,fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, monospace`,fontSize:13,scrollback:1e4,smoothScrollDuration:125,scrollSensitivity:3,theme:f(y.current)});v.current=c;let l=new g;if(c.loadAddon(l),c.loadAddon(new Ze),c.unicode.activeVersion=`11`,c.loadAddon(new rt),c.open(e),n.config.e2eSmoke!==!0)try{let e=new Va;e.onContextLoss(()=>{console.warn(`[terminal] WebGL context lost, falling back to DOM renderer`),e.dispose()}),c.loadAddon(e)}catch(e){let t=e;(t instanceof Error&&/webgl2?|context/i.test(t.message)?console.warn:console.error)(`[terminal] WebGL addon failed, using DOM renderer:`,t)}l.fit(),o=c.onTitleChange(e=>{t||h.current?.(e)}),c.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`||!e.shiftKey)return!0;if(e.key===`Tab`)return e.preventDefault(),!0;if(e.key===`Enter`){let t=ne.current;return t===null?!0:(e.preventDefault(),n.terminal.input(t,`
146
- `),!1)}return!0});let u=0,p=!1;return c.attachCustomWheelEventHandler(e=>{let t=c._core,r=t?.coreMouseService?.activeEncoding;if(!(c.modes.mouseTrackingMode!==`none`&&(r===`SGR`||r===`SGR_PIXELS`)))return u=0,!0;let i=ne.current;if(i===null||e.deltaY===0)return!0;let a=t?._renderService?.dimensions?.css?.cell?.height;a===void 0&&!p&&(p=!0,console.warn(`[terminal] xterm cell-height internal not found; wheel scroll using fallback. An xterm upgrade may have moved _core._renderService.dimensions.css.cell.height.`));let o=a??17,{count:s,button:l,accumulator:d}=lm(e.deltaY,e.deltaMode,u,{cellHeight:o,sensitivity:1.5,maxRowsPerEvent:20,viewportRows:c.rows});return u=d,s>0&&n.terminal.input(i,um(l).repeat(s)),!1}),(async()=>{let o;try{o=await n.terminal.create({cols:c.cols,rows:c.rows})}catch(e){let n=e;if(console.error(`[terminal] create() failed:`,n),t)return;T({exitCode:1,signal:null,error:n instanceof Error?n.message:String(n)}),x(`exited`);return}if(t){o.ok&&n.terminal.kill(o.ptyId).catch(gm);return}if(!o.ok){x(o.reason===`not-consented`?`not-consented`:`no-project`);return}r=o.ptyId,ne.current=o.ptyId,x(`running`),c.onData(e=>{r&&n.terminal.input(r,e)}),i=n.terminal.onData(e=>{e.ptyId===r&&(t||re(!0),c.write(e.data,()=>n.terminal.drain(e.ptyId,e.data.length)))}),a=n.terminal.onExit(e=>{e.ptyId===r&&(T({exitCode:e.exitCode,signal:e.signal,error:e.error}),x(`exited`),m.current?.({exitCode:e.exitCode,signal:e.signal}))}),s=new ResizeObserver(()=>{l.fit(),r&&n.terminal.resize(r,c.cols,c.rows)}),s.observe(e),c.focus(),n.terminal.claudePreflight().then(e=>{t||C(e)}).catch(hm).finally(()=>{t||ee(!0)})})(),()=>{t=!0,ne.current=null,v.current=null,s?.disconnect(),i?.(),a?.(),o?.dispose(),c.dispose(),r&&n.terminal.kill(r).catch(mm)}},oe=[n],t[3]=n,t[4]=k,t[5]=oe),(0,em.useEffect)(k,oe);let se,ce;t[6]===_?(se=t[7],ce=t[8]):(se=()=>{let e=v.current;e!==null&&(e.options.theme=f(_))},ce=[_],t[6]=_,t[7]=se,t[8]=ce),(0,em.useEffect)(se,ce);let A;t[9]!==n||t[10]!==E||t[11]!==u||t[12]!==w||t[13]!==S?.claude||t[14]!==b?(A=()=>{if(u===null||b!==`running`||!E||ie.current===u.nonce||ne.current===null)return;let e=u.nonce,t=!1;if(u.cli===`claude`){if(!w)return;if(D(null),S?.claude===`not-found`){ie.current=e;return}let{prompt:r}=u,i=i=>{if(t)return;let o=ne.current;o!==null&&(n.terminal.input(o,a(`claude`,r,{mcpPreApprove:i})),ie.current=e)};return n.terminal.claudePreflight().then(e=>i(e.mcpPreApprovable===!0)).catch(e=>{console.warn(`[terminal] claude pre-approval recheck failed`,{err:e}),i(!1)}),()=>{t=!0}}D(null);let{cli:r,prompt:i}=u,o=()=>{if(t)return;let o=ne.current;o!==null&&(n.terminal.input(o,a(r,i)),ie.current=e)};return n.terminal.cliPreflight(r).then(n=>{if(!t){if(n.onPath===`not-found`){D(r),ie.current=e;return}o()}}).catch(e=>{t||(console.warn(`[terminal] cliPreflight failed`,{cli:r,err:e}),o())}),()=>{t=!0}},t[9]=n,t[10]=E,t[11]=u,t[12]=w,t[13]=S?.claude,t[14]=b,t[15]=A):A=t[15];let le;t[16]!==n||t[17]!==E||t[18]!==u||t[19]!==w||t[20]!==S||t[21]!==b?(le=[n,u,b,E,w,S],t[16]=n,t[17]=E,t[18]=u,t[19]=w,t[20]=S,t[21]=b,t[22]=le):le=t[22],(0,em.useEffect)(A,le);let ue;t[23]!==n||t[24]!==S||t[25]!==b?(ue=b===`running`&&S?(0,$.jsx)(rm,{readiness:S,bridge:n,onDismiss:()=>C(null)}):null,t[23]=n,t[24]=S,t[25]=b,t[26]=ue):ue=t[26];let de;t[27]!==n||t[28]!==ae||t[29]!==b?(de=b===`running`&&ae?(0,$.jsx)(im,{cli:ae,bridge:n,onDismiss:()=>D(null)}):null,t[27]=n,t[28]=ae,t[29]=b,t[30]=de):de=t[30];let fe;t[31]===b?fe=t[32]:(fe=(0,$.jsx)(`div`,{ref:d,"data-terminal-status":b,className:`min-h-0 flex-1 px-1.5`}),t[31]=b,t[32]=fe);let pe;t[33]!==te||t[34]!==c||t[35]!==b?(pe=b===`exited`&&te?(0,$.jsx)(am,{info:te,onRestart:c}):null,t[33]=te,t[34]=c,t[35]=b,t[36]=pe):pe=t[36];let me;t[37]!==r||t[38]!==b?(me=b===`no-project`||b===`not-consented`?(0,$.jsx)(om,{reason:b,onClose:r}):null,t[37]=r,t[38]=b,t[39]=me):me=t[39];let he;return t[40]!==de||t[41]!==fe||t[42]!==pe||t[43]!==me||t[44]!==ue?(he=(0,$.jsxs)(`div`,{className:`flex h-full w-full flex-col`,children:[ue,de,fe,pe,me]}),t[40]=de,t[41]=fe,t[42]=pe,t[43]=me,t[44]=ue,t[45]=he):he=t[45],he}function mm(e){return console.warn(`[terminal] kill on unmount failed:`,e)}function hm(e){console.warn(`[terminal] claude readiness preflight failed`,e)}function gm(e){return console.warn(`[terminal] kill after cancelled mount failed:`,e)}export{dm as TerminalPanel};
146
+ `),!1)}return!0});let u=0,p=!1;return c.attachCustomWheelEventHandler(e=>{let t=c._core,r=t?.coreMouseService?.activeEncoding;if(!(c.modes.mouseTrackingMode!==`none`&&(r===`SGR`||r===`SGR_PIXELS`)))return u=0,!0;let i=ne.current;if(i===null||e.deltaY===0)return!0;let a=t?._renderService?.dimensions?.css?.cell?.height;a===void 0&&!p&&(p=!0,console.warn(`[terminal] xterm cell-height internal not found; wheel scroll using fallback. An xterm upgrade may have moved _core._renderService.dimensions.css.cell.height.`));let o=a??17,{count:s,button:l,accumulator:d}=lm(e.deltaY,e.deltaMode,u,{cellHeight:o,sensitivity:1.5,maxRowsPerEvent:20,viewportRows:c.rows});return u=d,s>0&&n.terminal.input(i,um(l).repeat(s)),!1}),(async()=>{let o;try{o=await n.terminal.create({cols:c.cols,rows:c.rows})}catch(e){let n=e;if(console.error(`[terminal] create() failed:`,n),t)return;T({exitCode:1,signal:null,error:n instanceof Error?n.message:String(n)}),x(`exited`);return}if(t){o.ok&&n.terminal.kill(o.ptyId).catch(gm);return}if(!o.ok){x(o.reason===`not-consented`?`not-consented`:`no-project`);return}r=o.ptyId,ne.current=o.ptyId,x(`running`),c.onData(e=>{r&&n.terminal.input(r,e)}),i=n.terminal.onData(e=>{e.ptyId===r&&(t||re(!0),c.write(e.data,()=>n.terminal.drain(e.ptyId,e.data.length)))}),a=n.terminal.onExit(e=>{e.ptyId===r&&(T({exitCode:e.exitCode,signal:e.signal,error:e.error}),x(`exited`),m.current?.({exitCode:e.exitCode,signal:e.signal}))}),s=new ResizeObserver(()=>{l.fit(),r&&n.terminal.resize(r,c.cols,c.rows)}),s.observe(e),c.focus(),n.terminal.claudePreflight().then(e=>{t||C(e)}).catch(hm).finally(()=>{t||ee(!0)})})(),()=>{t=!0,ne.current=null,v.current=null,s?.disconnect(),i?.(),a?.(),o?.dispose(),c.dispose(),r&&n.terminal.kill(r).catch(mm)}},oe=[n],t[3]=n,t[4]=k,t[5]=oe),(0,em.useEffect)(k,oe);let se,ce;t[6]===_?(se=t[7],ce=t[8]):(se=()=>{let e=v.current;e!==null&&(e.options.theme=f(_))},ce=[_],t[6]=_,t[7]=se,t[8]=ce),(0,em.useEffect)(se,ce);let A;t[9]!==n||t[10]!==E||t[11]!==u||t[12]!==w||t[13]!==S?.claude||t[14]!==b?(A=()=>{if(u===null||b!==`running`||!E||ie.current===u.nonce||ne.current===null)return;let e=u.nonce,t=!1;if(u.cli===`claude`){if(!w)return;if(D(null),S?.claude===`not-found`){ie.current=e;return}let{prompt:r}=u,i=i=>{if(t)return;let o=ne.current;o!==null&&(n.terminal.input(o,a(`claude`,r,{mcpPreApprove:i})),ie.current=e)};return n.terminal.claudePreflight().then(n=>{if(!t){if(n.claude===`present`){i(n.mcpPreApprovable===!0);return}C(n.claude===`not-found`?n:{claude:`not-found`,mcp:n.mcp,mcpPreApprovable:!1}),ie.current=e}}).catch(n=>{t||(console.warn(`[terminal] claude pre-approval recheck failed`,{nonce:e,err:n}),C({claude:`not-found`,mcp:`needs-rewire`,mcpPreApprovable:!1}),ie.current=e)}),()=>{t=!0}}D(null);let{cli:r,prompt:i}=u,o=()=>{if(t)return;let o=ne.current;o!==null&&(n.terminal.input(o,a(r,i)),ie.current=e)},s=()=>{t||(D(r),ie.current=e)};return(async()=>{try{let e=await n.terminal.cliPreflight(r);if(e.onPath===`unknown`){if(t)return;e=await n.terminal.cliPreflight(r)}if(t)return;e.onPath===`present`?o():s()}catch(e){let n=e;if(t)return;console.warn(`[terminal] cliPreflight failed`,{cli:r,err:n}),s()}})(),()=>{t=!0}},t[9]=n,t[10]=E,t[11]=u,t[12]=w,t[13]=S?.claude,t[14]=b,t[15]=A):A=t[15];let le;t[16]!==n||t[17]!==E||t[18]!==u||t[19]!==w||t[20]!==S||t[21]!==b?(le=[n,u,b,E,w,S],t[16]=n,t[17]=E,t[18]=u,t[19]=w,t[20]=S,t[21]=b,t[22]=le):le=t[22],(0,em.useEffect)(A,le);let ue;t[23]!==n||t[24]!==S||t[25]!==b?(ue=b===`running`&&S?(0,$.jsx)(rm,{readiness:S,bridge:n,onDismiss:()=>C(null)}):null,t[23]=n,t[24]=S,t[25]=b,t[26]=ue):ue=t[26];let de;t[27]!==n||t[28]!==ae||t[29]!==b?(de=b===`running`&&ae?(0,$.jsx)(im,{cli:ae,bridge:n,onDismiss:()=>D(null)}):null,t[27]=n,t[28]=ae,t[29]=b,t[30]=de):de=t[30];let fe;t[31]===b?fe=t[32]:(fe=(0,$.jsx)(`div`,{ref:d,"data-terminal-status":b,className:`min-h-0 flex-1 px-1.5`}),t[31]=b,t[32]=fe);let pe;t[33]!==te||t[34]!==c||t[35]!==b?(pe=b===`exited`&&te?(0,$.jsx)(am,{info:te,onRestart:c}):null,t[33]=te,t[34]=c,t[35]=b,t[36]=pe):pe=t[36];let me;t[37]!==r||t[38]!==b?(me=b===`no-project`||b===`not-consented`?(0,$.jsx)(om,{reason:b,onClose:r}):null,t[37]=r,t[38]=b,t[39]=me):me=t[39];let he;return t[40]!==de||t[41]!==fe||t[42]!==pe||t[43]!==me||t[44]!==ue?(he=(0,$.jsxs)(`div`,{className:`flex h-full w-full flex-col`,children:[ue,de,fe,pe,me]}),t[40]=de,t[41]=fe,t[42]=pe,t[43]=me,t[44]=ue,t[45]=he):he=t[45],he}function mm(e){return console.warn(`[terminal] kill on unmount failed:`,e)}function hm(e){console.warn(`[terminal] claude readiness preflight failed`,e)}function gm(e){return console.warn(`[terminal] kill after cancelled mount failed:`,e)}export{dm as TerminalPanel};