@cmmd-center/forge 0.13.94 → 0.13.96

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 (25) hide show
  1. package/dist/{BunHttpServer-DTG5XWSi.cjs → BunHttpServer-CtFGbsWr.cjs} +2 -2
  2. package/dist/{BunHttpServer-BpaVqxli.mjs → BunHttpServer-o7ISooSQ.mjs} +2 -2
  3. package/dist/{HttpServer-5UTabe01.mjs → HttpServer-BbbI8N6_.mjs} +79 -39
  4. package/dist/{HttpServer-DZ6iaxyk.cjs → HttpServer-CRBqMWdP.cjs} +47 -1
  5. package/dist/{NodeHttpServer-DePOzmYy.mjs → NodeHttpServer-BngJqAIT.mjs} +2 -2
  6. package/dist/{NodeHttpServer-RV5QsVeb.cjs → NodeHttpServer-DyI6OyMg.cjs} +2 -2
  7. package/dist/bin.cjs +600 -304
  8. package/dist/bin.mjs +710 -414
  9. package/dist/client/assets/{CanvasPanel-By1TNSCJ.js → CanvasPanel-BsTCRB1I.js} +2 -2
  10. package/dist/client/assets/{CompositeItem-B4KFI6uM.js → CompositeItem-DNkNENOR.js} +2 -2
  11. package/dist/client/assets/{DiffPanel-W2IJB2F9.js → DiffPanel-CQF1ISJz.js} +2 -2
  12. package/dist/client/assets/{DiffPanel.logic-D-ynbsKZ.js → DiffPanel.logic-ZO6qepWo.js} +2 -2
  13. package/dist/client/assets/{DiffWorkerPoolProvider-h4bACnie.js → DiffWorkerPoolProvider-B7F6vAh9.js} +2 -2
  14. package/dist/client/assets/{PullRequestCodePanel-Bphx591a.js → PullRequestCodePanel-B93y-X1L.js} +2 -2
  15. package/dist/client/assets/{Virtualizer-BGM8Aavb.js → Virtualizer-BtFYmUB0.js} +2 -2
  16. package/dist/client/assets/{WorkerPoolContext-dJEWASlP.js → WorkerPoolContext-VAp-zZQ5.js} +31 -31
  17. package/dist/client/assets/{canvasStateStore-DoXLRnB-.js → canvasStateStore-Dl3vO1ug.js} +2 -2
  18. package/dist/client/assets/{cmmdAuthRedirect-DJMI3b92.js → cmmdAuthRedirect-DCgS12fq.js} +2 -2
  19. package/dist/client/assets/{index-_uhZ-JUt.js → index-BhdZllxU.js} +60 -60
  20. package/dist/client/assets/{popover-DlZTqPIV.js → popover-C9fxnFA4.js} +2 -2
  21. package/dist/client/assets/{src-1F7f5y9L.js → src-DFTFXdyK.js} +2 -2
  22. package/dist/client/assets/{toggle-BwedUJ-z.js → toggle-Ks6yUkoN.js} +2 -2
  23. package/dist/client/index.html +10 -10
  24. package/dist/forge-build.json +1 -1
  25. package/package.json +1 -1
package/dist/bin.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-C5ckVeoz.mjs";
4
- import { $ as encodeEffect, $a as make$39, $i as spaced, $n as filterMapOrFail, $r as runPromise, $s as max, $t as stringifyJson, Aa as Scope$1, Ai as void_$1, An as cached$3, Ar as match$1, As as uninterruptibleMask, At as withConstructorDefault, Ba as CurrentLogSpans, Bi as counter, Bn as catch_, Bo as addFinalizer, Br as orDie, Bs as make$42, Bt as head, C as Record, Ca as mergeAll, Cc as map$4, Ci as tx$1, Cn as andThen, Co as hasDies, Cr as logInfo, Cs as sleep$3, Ct as optionalKey, D as TaggedStruct, Da as succeedContext, Di as uninterruptibleMask$1, Dn as as$3, Do as interruptors, Ds as suspend, Dt as toCodecStringTree, E as TaggedErrorClass, Ea as succeed$2, Ec as sort, Ei as uninterruptible, En as annotateSpans, Eo as interrupt$2, Er as map$3, Et as toCodecJson, F as UndefinedOr, Fa as forkUnsafe, Fc as fail$1, Fi as withParentSpan, Fn as catchFilter, Fr as onError$1, Fs as MinimumTraceLevel, G as decodeExit, Ga as done, Gc as empty$1, Gi as withAttributes, Gl as hasProperty, Gn as die$1, Gr as provideService, Gs as format$1, Gt as Transformation, H as declare, Hc as Reference$1, Hi as snapshotUnsafe, Hn as contextWith, Ho as as$2, Hr as promise, Ht as size$2, I as Union, Ia as make$37, Ii as withSpan, In as catchIf, Io as ConsoleRef, Ir as onExit, Is as NativeSpan, It as assign, J as decodeUnknownEffect, Ja as failCause$3, Ji as exponential, Jl as isNotUndefined, Jn as exit, Jr as repeat, Js as hours, Jt as transformOrFail, K as decodeSync, Kc as get$3, Ki as addDelay, Kl as isNotNull, Ko as consolePretty$1, Kr as race, Ks as fromInput, L as Unknown, La as makeUnsafe$4, Li as withTracerEnabled, Ln as catchReason, Lo as CurrentLoggers$1, Ls as ParentSpan, Lt as append$1, M as URLFromString, Ma as addFinalizerExit, Mi as whileLoop, Ml as NodeInspectSymbol, Mn as callback, Mo as pretty, Ms as void_$2, Na as close, Ni as withFiber$1, Nl as toJson, Nn as catchCause, No as prettyErrors, Nr as matchEffect, O as TemplateLiteral, Oa as sync$2, Ol as isEffect$1, On as asSome, Or as mapError, Os as sync, Ot as toJsonSchemaDocument, P as Undefined, Pa as closeUnsafe, Pl as format, Pn as catchDefect, Po as squash, Pr as never$1, Q as encode$4, Qc as merge$2, Qi as recurs, Qn as filter$1, Qr as runForkWith, R as UnknownFromJsonString$1, Ra as provide$2, Rc as isFailure$1, Ri as yieldNow, Rl as equals, Rn as catchTag, Rr as onInterrupt, Rs as Tracer, Rt as drop$1, S as Option, Sa as merge$3, Si as try_, Sn as all, Sr as logFatal, Ss as scopeAddFinalizerExit, St as optional$4, T as Struct, Ta as provideMerge, Tc as reverse, Ti as undefined_, Tn as annotateLogs, To as hasInterruptsOnly, Tr as makeSpanScoped, Tt as tag, Ua as TracerTimingEnabled, Uc as Service$1, Ui as timer, Un as currentSpan, Ur as provide, Ut as toArray, V as brand, Va as MinimumLogLevel, Vc as succeed$1, Vi as gauge, Vn as context, Vo as andThen$1, Vr as orElseSucceed, Vt as isEmpty$2, W as decodeEffect, Wa as _await, Wc as add$2, Wi as update$3, Wl as compose$1, Wr as provideContext, Ws as days, X as decodeUnknownOption, Xc as make$35, Xl as isObject$1, Xn as failCause$1, Xr as retry, Xt as onSome, Y as decodeUnknownExit, Yc as getUnsafe$1, Yi as forever$2, Yl as isNullish, Yn as fail, Yr as result, Z as decodeUnknownSync, Za as isDeferred, Zc as makeUnsafe$3, Zi as passthrough$1, Zl as isTagged, Zr as runFork, Zs as isGreaterThan$1, Zt as parseJson$1, _ as NonEmptyArray, _a as effectContext, _i as tapErrorTag, _n as toUtc, _t as isSchemaError, a as DateTimeUtc, aa as Random$1, ac as sum$1, al as getOrElse, an as value, ao as interrupt$3, ar as fnUntraced, at as isBetween, au as constVoid, b as NullOr, bi as timeoutOrElse, bl as PipeInspectableProto, bn as acquireUseRelease, br as logDebug, bs as reportCauseUnsafe, bt as makeFilter, c as Defect, ca as Clock, cc as toSeconds, ci as sleep$4, cl as isNone, cn as add$3, co as match$2, cr as forkChild, cs as flatMap$1, ct as isGreaterThanOrEqualTo, d as Exit, dc as empty$3, di as succeedSome, dl as match, dn as isGreaterThanOrEqualTo$1, dr as forkScoped, ds as forkDetach, dt as isMaxLength, du as pipeArguments, ea as catchDone, ec as millis, el as firstSomeOf, er as filterOrFail, et as encodeSync, eu as cast, fa as TaggedError, fc as ensure, fi as suspend$1, fl as none$4, fn as make$38, fr as gen, ft as isMaxProperties, g as Never, ga as effect, gi as tapError, gn as toEpochMillis, gr as interruptible, gt as isSchema, h as Literals, ha as buildWithMemoMap, hc as fromIterable, hi as tapCause, hl as make$41, hn as toDate, hr as interrupt$1, ht as isPattern, i as Class, ic as subtract, ii as scoped, il as fromUndefinedOr, in as make$40, io as failCause$2, ir as fn$1, it as is$1, iu as constUndefined, ja as addFinalizer$1, jn as cachedWithTTL, jo as map$6, jr as matchCauseEffect, jt as withDecodingDefault, k as Trim, ka as unwrap, ki as useSpan, kl as withFiber, kn as asVoid, ks as tracerLogger$1, kt as toType, l as Duration, la as currentTimeMillis, lc as zero, li as succeed, ll as isSome, ln as distance, lr as forkDetach$1, ls as fnUntraced$1, lt as isInt, lu as identity, m as Literal, ma as build, mc as flatMapNullishOr, mi as tap, ml as Number$2, mn as now, mo as StackTrace, mr as ignoreCause, ms as loggerMake, mt as isNonEmpty, n as ArraySchema, nc as minutes, nl as flatten$1, no as die$2, nt as encodeUnknownExit, o as DateTimeUtcFromString, oa as clamp, oc as times, oi as service, ol as getOrNull, oo as isFailure, or as forEach, ot as isFinite$1, ou as constant, p as Int$1, pa as CurrentMemoMap, pc as filter, pi as sync$1, pl as some, pn as makeUnsafe$5, po as NoSuchElementError, pr as ignore, pt as isMinLength, q as decodeTo, qa as fail$3, qi as both, ql as isNotNullish, qn as ensuring, qr as raceFirst, qs as fromInputUnsafe, r as Boolean$1, ra as isDoneCause, rc as seconds, ri as scope$1, rl as fromNullishOr, rn as makeFormatterDefault, ro as fail$2, rr as flatten$2, rt as fromJsonString, ru as constTrue, sa as parse$6, sc as toMillis, si as serviceOption, sl as getOrUndefined, sn as encodeBase64Url$2, so as isSuccess, sr as forever$1, st as isGreaterThan, su as dual, t as Any, tc as min, ti as runPromiseWith, tl as flatMap$2, tn as InvalidValue$1, to as succeed$3, tr as flatMap, ts as fiberInterrupt, tt as encodeUnknownEffect, tu as compose, u as ErrorClass, ua as Class$1, uc as allocate, ui as succeedNone, ul as map$5, un as formatIso, uo as void_$3, ur as forkIn, us as forever, ut as isLessThanOrEqualTo, uu as pipe$1, v as NonEmptyString, va as effectDiscard, vc as isArrayNonEmpty, vi as timeout$1, vn as Transaction$1, vo as done$1, vr as isEffect, w as String$1, wa as provide$1, wi as txRetry, wn as annotateCurrentSpan, wo as hasInterrupts, wr as logWarning$1, wt as suspend$2, x as Number$1, xa as launch$1, xi as tryPromise, xl as YieldableProto, xn as addFinalizer$2, xr as logError, xs as scope, xt as mutable, y as Null, ya as empty$4, yc as isReadonlyArrayNonEmpty, yi as timeoutOption, yn as acquireRelease, yo as fail$4, yr as log$4, yt as make$36, z as Void, za as CurrentLogAnnotations, zc as isSuccess$1, zi as zipWith, zn as catchTags, zr as option, zs as externalSpan, zt as empty$2 } from "./Schema-Ay3DUM83.mjs";
5
- import { $t as interrupt$4, A as fromSubscription, At as end, B as onExit$1, Bt as sliding, C as fromChannel, Ct as fromSubscriptionArray, D as fromPull, Dt as make$44, E as fromPubSub, F as mapEffect$1, Ft as offer$1, G as runCollect, Gt as shutdown$2, Ht as takeAll, I as mapError$1, It as offerAll, J as runForEach, K as runDrain, Kt as subscribe$1, L as merge$4, Lt as offerUnsafe, M as make$43, Mt as failCause$4, N as map$7, O as fromQueue, Ot as makeUnsafe$6, P as mapAccum, Pt as make$45, Q as succeed$4, Qt as getCurrent, S as fromAsyncIterable, T as fromIterable$1, U as provideContext$1, Ut as unbounded$2, Vt as take$1, W as run$2, Wt as publish, X as runHead, Xt as makeUnsafe$7, Y as runForEachArray, Zt as await_, _t as drain, b as flatMap$3, c as callback$1, ct as get$4, d as debounce$1, dt as make$47, et as takeWhile, f as decodeText$1, g as ensuring$1, h as encodeText, j as isStream, kt as bounded, l as catchCause$1, lt as make$46, m as empty$5, nt as toAsyncIterable, q as runFold, qt as unbounded$1, r as FileSystem, rt as toPull, st as unwrap$1, t as Path$2, tn as runIn, tt as tick, u as concat$2, ut as get$5, v as failCause$5, vt as forEach$1, w as fromEffect, wt as fromTransform, x as fromArray, xt as mapInput, y as filter$2, zt as shutdown$1 } from "./Path-BIaGSU2M.mjs";
6
- import { _ as ChildProcessSpawner, a as Stdio, g as make$48, o as make$49, r as isQuitError } from "./NodeTerminal-CeaWke6-.mjs";
4
+ import { $ as encodeEffect, $a as make$38, $i as spaced, $n as filterMapOrFail, $r as runPromise, $s as max, $t as stringifyJson, Aa as Scope$1, Ai as void_$1, An as cached$3, Ar as match$1, As as uninterruptibleMask, At as withConstructorDefault, Ba as CurrentLogSpans, Bi as counter, Bn as catch_, Bo as addFinalizer, Br as orDie, Bs as make$41, Bt as head, C as Record, Ca as mergeAll, Cc as map$4, Ci as tx$1, Cn as andThen, Co as hasDies, Cr as logInfo, Cs as sleep$3, Ct as optionalKey, D as TaggedStruct, Da as succeedContext, Di as uninterruptibleMask$1, Dn as as$3, Do as interruptors, Ds as suspend, Dt as toCodecStringTree, E as TaggedErrorClass, Ea as succeed$2, Ec as sort, Ei as uninterruptible, En as annotateSpans, Eo as interrupt$2, Er as map$3, Et as toCodecJson, F as UndefinedOr, Fa as forkUnsafe, Fc as fail$1, Fi as withParentSpan, Fn as catchFilter, Fr as onError$1, Fs as MinimumTraceLevel, G as decodeExit, Ga as done, Gc as empty$1, Gi as withAttributes, Gl as hasProperty, Gn as die$1, Gr as provideService, Gs as format$1, Gt as Transformation, H as declare, Hc as Reference$1, Hi as snapshotUnsafe, Hn as contextWith, Ho as as$2, Hr as promise, Ht as size$2, I as Union, Ia as make$36, Ii as withSpan, In as catchIf, Io as ConsoleRef, Ir as onExit, Is as NativeSpan, It as assign, J as decodeUnknownEffect, Ja as failCause$3, Ji as exponential, Jl as isNotUndefined, Jn as exit, Jr as repeat, Js as hours, Jt as transformOrFail, K as decodeSync, Kc as get$3, Ki as addDelay, Kl as isNotNull, Ko as consolePretty$1, Kr as race, Ks as fromInput, L as Unknown, La as makeUnsafe$4, Li as withTracerEnabled, Ln as catchReason, Lo as CurrentLoggers$1, Ls as ParentSpan, Lt as append$1, M as URLFromString, Ma as addFinalizerExit, Mi as whileLoop, Ml as NodeInspectSymbol, Mn as callback, Mo as pretty, Ms as void_$2, Na as close, Ni as withFiber$1, Nl as toJson, Nn as catchCause, No as prettyErrors, Nr as matchEffect, O as TemplateLiteral, Oa as sync$2, Ol as isEffect$1, On as asSome, Or as mapError, Os as sync, Ot as toJsonSchemaDocument, P as Undefined, Pa as closeUnsafe, Pl as format, Pn as catchDefect, Po as squash, Pr as never$1, Q as encode$4, Qc as merge$2, Qi as recurs, Qn as filter$1, Qr as runForkWith, R as UnknownFromJsonString$1, Ra as provide$2, Rc as isFailure$1, Ri as yieldNow, Rl as equals, Rn as catchTag, Rr as onInterrupt, Rs as Tracer, Rt as drop$1, S as Option, Sa as merge$3, Si as try_, Sn as all, Sr as logFatal, Ss as scopeAddFinalizerExit, St as optional$4, T as Struct, Ta as provideMerge, Tc as reverse, Ti as undefined_, Tn as annotateLogs, To as hasInterruptsOnly, Tr as makeSpanScoped, Tt as tag, Ua as TracerTimingEnabled, Uc as Service$1, Ui as timer, Un as currentSpan, Ur as provide, Ut as toArray, V as brand, Va as MinimumLogLevel, Vc as succeed$1, Vi as gauge, Vn as context, Vo as andThen$1, Vr as orElseSucceed, Vt as isEmpty$2, W as decodeEffect, Wa as _await, Wc as add$2, Wi as update$3, Wl as compose$1, Wr as provideContext, Ws as days, X as decodeUnknownOption, Xc as make$34, Xl as isObject$1, Xn as failCause$1, Xr as retry, Xt as onSome, Y as decodeUnknownExit, Yc as getUnsafe$1, Yi as forever$2, Yl as isNullish, Yn as fail, Yr as result, Z as decodeUnknownSync, Za as isDeferred, Zc as makeUnsafe$3, Zi as passthrough$1, Zl as isTagged, Zr as runFork, Zs as isGreaterThan$1, Zt as parseJson$1, _ as NonEmptyArray, _a as effectContext, _i as tapErrorTag, _n as toUtc, _t as isSchemaError, a as DateTimeUtc, aa as Random$1, ac as sum$1, al as getOrElse, an as value, ao as interrupt$3, ar as fnUntraced, at as isBetween, au as constVoid, b as NullOr, bi as timeoutOrElse, bl as PipeInspectableProto, bn as acquireUseRelease, br as logDebug, bs as reportCauseUnsafe, bt as makeFilter, c as Defect, ca as Clock, cc as toSeconds, ci as sleep$4, cl as isNone, cn as add$3, co as match$2, cr as forkChild, cs as flatMap$1, ct as isGreaterThanOrEqualTo, d as Exit, dc as empty$3, di as succeedSome, dl as match, dn as isGreaterThanOrEqualTo$1, dr as forkScoped, ds as forkDetach, dt as isMaxLength, du as pipeArguments, ea as catchDone, ec as millis, el as firstSomeOf, er as filterOrFail, et as encodeSync, eu as cast, fa as TaggedError, fc as ensure, fi as suspend$1, fl as none$4, fn as make$37, fr as gen, ft as isMaxProperties, g as Never, ga as effect, gi as tapError, gn as toEpochMillis, gr as interruptible, gt as isSchema, h as Literals, ha as buildWithMemoMap, hc as fromIterable, hi as tapCause, hl as make$40, hn as toDate, hr as interrupt$1, ht as isPattern, i as Class, ic as subtract, ii as scoped, il as fromUndefinedOr, in as make$39, io as failCause$2, ir as fn$1, it as is$1, iu as constUndefined, ja as addFinalizer$1, jn as cachedWithTTL, jo as map$6, jr as matchCauseEffect, jt as withDecodingDefault, k as Trim, ka as unwrap, ki as useSpan, kl as withFiber, kn as asVoid, ks as tracerLogger$1, kt as toType, l as Duration, la as currentTimeMillis, lc as zero, li as succeed, ll as isSome, ln as distance, lr as forkDetach$1, ls as fnUntraced$1, lt as isInt, lu as identity, m as Literal, ma as build, mc as flatMapNullishOr, mi as tap, ml as Number$2, mn as now, mo as StackTrace, mr as ignoreCause, ms as loggerMake, mt as isNonEmpty, n as ArraySchema, nc as minutes, nl as flatten$1, no as die$2, nt as encodeUnknownExit, o as DateTimeUtcFromString, oa as clamp, oc as times, oi as service, ol as getOrNull, oo as isFailure, or as forEach, ot as isFinite$1, ou as constant, p as Int$1, pa as CurrentMemoMap, pc as filter, pi as sync$1, pl as some, pn as makeUnsafe$5, po as NoSuchElementError, pr as ignore, pt as isMinLength, q as decodeTo, qa as fail$3, qi as both, ql as isNotNullish, qn as ensuring, qr as raceFirst, qs as fromInputUnsafe, r as Boolean$1, ra as isDoneCause, rc as seconds, ri as scope$1, rl as fromNullishOr, rn as makeFormatterDefault, ro as fail$2, rr as flatten$2, rt as fromJsonString, ru as constTrue, sa as parse$6, sc as toMillis, si as serviceOption, sl as getOrUndefined, sn as encodeBase64Url$2, so as isSuccess, sr as forever$1, st as isGreaterThan, su as dual, t as Any, tc as min, ti as runPromiseWith, tl as flatMap$2, tn as InvalidValue$1, to as succeed$3, tr as flatMap, ts as fiberInterrupt, tt as encodeUnknownEffect, tu as compose, u as ErrorClass, ua as Class$1, uc as allocate, ui as succeedNone, ul as map$5, un as formatIso, uo as void_$3, ur as forkIn, us as forever, ut as isLessThanOrEqualTo, uu as pipe$1, v as NonEmptyString, va as effectDiscard, vc as isArrayNonEmpty, vi as timeout$1, vn as Transaction$1, vo as done$1, vr as isEffect, w as String$1, wa as provide$1, wi as txRetry, wn as annotateCurrentSpan, wo as hasInterrupts, wr as logWarning$1, wt as suspend$2, x as Number$1, xa as launch$1, xi as tryPromise, xl as YieldableProto, xn as addFinalizer$2, xr as logError, xs as scope, xt as mutable, y as Null, ya as empty$4, yc as isReadonlyArrayNonEmpty, yi as timeoutOption, yn as acquireRelease, yo as fail$4, yr as log$4, yt as make$35, z as Void, za as CurrentLogAnnotations, zc as isSuccess$1, zi as zipWith, zn as catchTags, zr as option, zs as externalSpan, zt as empty$2 } from "./Schema-Ay3DUM83.mjs";
5
+ import { $t as interrupt$4, A as fromSubscription, At as end, B as onExit$1, Bt as sliding, C as fromChannel, Ct as fromSubscriptionArray, D as fromPull, Dt as make$43, E as fromPubSub, F as mapEffect$1, Ft as offer$1, G as runCollect, Gt as shutdown$2, Ht as takeAll, I as mapError$1, It as offerAll, J as runForEach, K as runDrain, Kt as subscribe$1, L as merge$4, Lt as offerUnsafe, M as make$42, Mt as failCause$4, N as map$7, O as fromQueue, Ot as makeUnsafe$6, P as mapAccum, Pt as make$44, Q as succeed$4, Qt as getCurrent, S as fromAsyncIterable, T as fromIterable$1, U as provideContext$1, Ut as unbounded$2, Vt as take$1, W as run$2, Wt as publish, X as runHead, Xt as makeUnsafe$7, Y as runForEachArray, Zt as await_, _t as drain, b as flatMap$3, c as callback$1, ct as get$4, d as debounce$1, dt as make$46, et as takeWhile, f as decodeText$1, g as ensuring$1, h as encodeText, j as isStream, kt as bounded, l as catchCause$1, lt as make$45, m as empty$5, nt as toAsyncIterable, q as runFold, qt as unbounded$1, r as FileSystem, rt as toPull, st as unwrap$1, t as Path$2, tn as runIn, tt as tick, u as concat$2, ut as get$5, v as failCause$5, vt as forEach$1, w as fromEffect, wt as fromTransform, x as fromArray, xt as mapInput, y as filter$2, zt as shutdown$1 } from "./Path-BIaGSU2M.mjs";
6
+ import { _ as ChildProcessSpawner, a as Stdio, g as make$47, o as make$48, r as isQuitError } from "./NodeTerminal-CeaWke6-.mjs";
7
7
  import { n as layer$7 } from "./NodeServices-Bt1GwPBR.mjs";
8
- import { $ as file, A as SocketErrorReason, At as merge$5, Bt as set$3, Ct as HttpClientErrorSchema, Dt as empty$7, Ft as getAndSet, G as TracerPropagationEnabled, Ht as updateAndGet, I as HttpServerError, It as getUnsafe$2, J as transformResponse, K as filterStatusOk$1, Lt as make$50, Ot as fromInput$1, Pt as get$6, Q as empty$6, Rt as makeUnsafe$8, St as setBody, Tt as jsonUnsafe$1, U as layer$8, Vt as update$4, W as HttpClient, Z as symbol$1, _ as schemaBodyUrlParams, _t as acceptJson, a as withLogAddress, at as setCookie, bt as get$7, ct as stream, d as logger$1, dt as filterStatusOk, et as isHttpServerResponse, f as withLoggerDisabled, ft as matchStatus, g as schemaBodyJson, gt as schemaBodyJson$1, i as serve$1, it as schemaJson, kt as fromRecordUnsafe, lt as text$2, m as ParsedSearchParams, nt as raw, ot as setCookies, p as HttpServerRequest, q as retryTransient, rt as redirect, st as setHeader, t as HttpServer, tt as jsonUnsafe, u as cors, ut as uint8Array, v as schemaHeaders, vt as bearerToken, wt as isHttpClientError, xt as post, y as toURL, yt as bodyJson, z as RouteNotFound, zt as modify$3 } from "./HttpServer-5UTabe01.mjs";
8
+ import { $ as file, A as SocketErrorReason, At as merge$5, Bt as set$3, Ct as HttpClientErrorSchema, Dt as empty$7, Ft as getAndSet, G as TracerPropagationEnabled, Gt as run$3, Ht as updateAndGet, I as HttpServerError, It as getUnsafe$2, J as transformResponse, K as filterStatusOk$1, Lt as make$49, Ot as fromInput$1, Pt as get$6, Q as empty$6, Rt as makeUnsafe$8, St as setBody, Tt as jsonUnsafe$1, U as layer$8, Vt as update$4, W as HttpClient, Wt as make$50, Z as symbol$1, _ as schemaBodyUrlParams, _t as acceptJson, a as withLogAddress, at as setCookie, bt as get$7, ct as stream, d as logger$1, dt as filterStatusOk, et as isHttpServerResponse, f as withLoggerDisabled, ft as matchStatus, g as schemaBodyJson, gt as schemaBodyJson$1, i as serve$1, it as schemaJson, kt as fromRecordUnsafe, lt as text$2, m as ParsedSearchParams, nt as raw, ot as setCookies, p as HttpServerRequest, q as retryTransient, rt as redirect, st as setHeader, t as HttpServer, tt as jsonUnsafe, u as cors, ut as uint8Array, v as schemaHeaders, vt as bearerToken, wt as isHttpClientError, xt as post, y as toURL, yt as bodyJson, z as RouteNotFound, zt as modify$3 } from "./HttpServer-BbbI8N6_.mjs";
9
9
  import { _ as withDefault$3, a as all$1, c as logLevel, d as option$1, f as port, g as url$2, i as TrueValues, l as map$8, m as string$7, n as FalseValues, o as boolean$5, p as schema$2, r as Record$1, s as int$2, t as Boolean$2, u as number$2 } from "./Config-BnFFyBjD.mjs";
10
10
  import { a as make$51, i as keys, n as getOption, o as makeWith$1, r as invalidate, s as set$4, t as get$8 } from "./Cache-DOwpGEYJ.mjs";
11
11
  import { S as layer$9, _ as defaultEscape, a as DeadlockError, b as makeCompiler$1, c as SqlError, d as UnknownError, g as custom, h as make$52, i as ConstraintError, l as SqlSyntaxError, m as SqlClient, n as AuthorizationError, o as LockTimeoutError, r as ConnectionError, s as SerializationError, t as AuthenticationError, u as StatementTimeoutError, v as defaultTransforms, y as fragment } from "./SqlError-BBR7DPrQ.mjs";
@@ -14746,7 +14746,7 @@ const isCommand = (u) => hasProperty(u, TypeId$10);
14746
14746
  * @since 4.0.0
14747
14747
  * @category constructors
14748
14748
  */
14749
- const make$34 = (name, config, handler) => {
14749
+ const make$33 = (name, config, handler) => {
14750
14750
  return makeCommand({
14751
14751
  name,
14752
14752
  config: parseConfig(config ?? {}),
@@ -15081,7 +15081,7 @@ const runWith = (command, config) => {
15081
15081
  program = provideService(program, LogLevel, logLevel);
15082
15082
  const services = match(logLevel, {
15083
15083
  onNone: () => empty$1(),
15084
- onSome: (level) => make$35(MinimumLogLevel, level)
15084
+ onSome: (level) => make$34(MinimumLogLevel, level)
15085
15085
  });
15086
15086
  yield* provideContext(program, services);
15087
15087
  }, catchFilter((error) => isCliError(error) && error._tag === "ShowHelp" ? succeed$1(error) : fail$1(error), (error) => andThen(showHelp(command, error), fail(error))), catchFilter((e) => isQuitError(e) ? succeed$1(e) : fail$1(e), (_) => interrupt$1));
@@ -15262,7 +15262,7 @@ const CurrentLoggers = CurrentLoggers$1;
15262
15262
  * @since 2.0.0
15263
15263
  * @category constructors
15264
15264
  */
15265
- const make$33 = loggerMake;
15265
+ const make$32 = loggerMake;
15266
15266
  /**
15267
15267
  * Returns a new `Logger` which will aggregate logs output by the specified
15268
15268
  * `Logger` over the provided `window`. After the `window` has elapsed, the
@@ -15558,7 +15558,7 @@ const makeUnsafe$2 = (value) => {
15558
15558
  * @since 2.0.0
15559
15559
  * @category constructors
15560
15560
  */
15561
- const make$32 = (value) => sync$1(() => makeUnsafe$2(value));
15561
+ const make$31 = (value) => sync$1(() => makeUnsafe$2(value));
15562
15562
  /**
15563
15563
  * @since 2.0.0
15564
15564
  * @category getters
@@ -15627,7 +15627,7 @@ const TypeId$8 = "~effect/transactions/TxRef";
15627
15627
  * })
15628
15628
  * ```
15629
15629
  */
15630
- const make$31 = (initial) => sync$1(() => makeUnsafe$1(initial));
15630
+ const make$30 = (initial) => sync$1(() => makeUnsafe$1(initial));
15631
15631
  /**
15632
15632
  * Creates a new `TxRef` with the specified initial value.
15633
15633
  *
@@ -15810,7 +15810,7 @@ const TxChunkProto = {
15810
15810
  * })
15811
15811
  * ```
15812
15812
  */
15813
- const empty = () => map$3(make$31(empty$2()), (ref) => makeUnsafe(ref));
15813
+ const empty = () => map$3(make$30(empty$2()), (ref) => makeUnsafe(ref));
15814
15814
  /**
15815
15815
  * Creates a new `TxChunk` with the specified TxRef.
15816
15816
  *
@@ -16102,7 +16102,7 @@ const TxQueueProto = {
16102
16102
  */
16103
16103
  const unbounded = () => gen(function* () {
16104
16104
  const items = yield* empty();
16105
- const stateRef = yield* make$31({ _tag: "Open" });
16105
+ const stateRef = yield* make$30({ _tag: "Open" });
16106
16106
  const txQueue = Object.create(TxQueueProto);
16107
16107
  txQueue.strategy = "unbounded";
16108
16108
  txQueue.capacity = Number.POSITIVE_INFINITY;
@@ -22813,6 +22813,25 @@ const ProviderUnavailableDetail = Literals([
22813
22813
  "reconnect-required"
22814
22814
  ]);
22815
22815
  /**
22816
+ * Whether the check behind this snapshot's `installed`/`status`/`auth`/`models`
22817
+ * fields actually completed (`confirmed`), or a probe failed, timed out, or
22818
+ * errored before it could answer (`could-not-check`). Absent means the
22819
+ * snapshot predates this field and carries no opinion either way.
22820
+ *
22821
+ * Deliberately not a new `ProviderUnavailableReason` member, and not folded
22822
+ * into `ProviderUnavailableDetail`. That union is the wire vocabulary a
22823
+ * separate CMMD receiver already validates with a `.strict()` schema (see
22824
+ * `docs/adr/withheld-providers-carry-their-reason.md`), and a value that
22825
+ * receiver has never heard of fails the whole snapshot, which its outbox then
22826
+ * retries forever. A brand new field costs a receiver that has never heard of
22827
+ * it nothing: Effect Schema drops an unrecognized struct property instead of
22828
+ * failing the decode, and `serializeProviderCatalog`
22829
+ * (`apps/server/src/runtimeReplication/providerCatalog.ts`) never copies this
22830
+ * field to that wire in the first place, so the CMMD-facing shape does not
22831
+ * change at all.
22832
+ */
22833
+ const ProviderAvailabilityCheck = Literals(["confirmed", "could-not-check"]);
22834
+ /**
22816
22835
  * Whether the provider CLI honours the credential-directory variable, as this
22817
22836
  * Environment's probe found. `inconclusive` is a probe that ran and could not
22818
22837
  * tell. It is not `unsupported`, and it is never reported as `supported`. The
@@ -22869,6 +22888,8 @@ const ServerProvider = Struct({
22869
22888
  availability: optional$4(ProviderAvailability),
22870
22889
  unavailableReason: optional$4(ProviderUnavailableReason),
22871
22890
  unavailableDetail: optional$4(ProviderUnavailableDetail),
22891
+ availabilityCheck: optional$4(ProviderAvailabilityCheck),
22892
+ lastConfirmedAt: optional$4(IsoDateTime),
22872
22893
  credentialDirectory: optional$4(ProviderCredentialDirectoryAnswer),
22873
22894
  credentialStore: optional$4(ProviderCredentialStore),
22874
22895
  slashCommands: ArraySchema(ServerProviderSlashCommand).pipe(withDecodingDefault(succeed([]))),
@@ -25042,7 +25063,7 @@ const schema$1 = /* @__PURE__ */ declare(isStream);
25042
25063
  * @category Stream
25043
25064
  */
25044
25065
  function Stream$1(success, error) {
25045
- return make$36(schema$1.ast, {
25066
+ return make$35(schema$1.ast, {
25046
25067
  [StreamSchemaTypeId]: StreamSchemaTypeId,
25047
25068
  success,
25048
25069
  error
@@ -25172,7 +25193,7 @@ const makeProto$1 = (options) => {
25172
25193
  * @since 4.0.0
25173
25194
  * @category constructors
25174
25195
  */
25175
- const make$30 = (tag, options) => {
25196
+ const make$29 = (tag, options) => {
25176
25197
  const successSchema = options?.success ?? Void;
25177
25198
  const errorSchema = options?.error ?? Never;
25178
25199
  const defectSchema = options?.defect ?? Defect;
@@ -25319,7 +25340,7 @@ const RpcGroupProto = {
25319
25340
  });
25320
25341
  },
25321
25342
  annotateRpcs(service, value) {
25322
- return this.annotateRpcsMerge(make$35(service, value));
25343
+ return this.annotateRpcsMerge(make$34(service, value));
25323
25344
  },
25324
25345
  annotateMerge(context) {
25325
25346
  return makeProto({
@@ -25344,7 +25365,7 @@ const makeProto = (options) => Object.assign(function() {}, RpcGroupProto, {
25344
25365
  * @since 4.0.0
25345
25366
  * @category groups
25346
25367
  */
25347
- const make$29 = (...rpcs) => makeProto({
25368
+ const make$28 = (...rpcs) => makeProto({
25348
25369
  requests: new Map(rpcs.map((rpc) => [rpc._tag, rpc])),
25349
25370
  annotations: empty$1()
25350
25371
  });
@@ -26070,319 +26091,319 @@ const WS_METHODS = {
26070
26091
  attachmentsDelete: "attachments.delete",
26071
26092
  providerUploadFeedback: "provider.uploadFeedback"
26072
26093
  };
26073
- const WsServerUpsertKeybindingRpc = make$30(WS_METHODS.serverUpsertKeybinding, {
26094
+ const WsServerUpsertKeybindingRpc = make$29(WS_METHODS.serverUpsertKeybinding, {
26074
26095
  payload: ServerUpsertKeybindingInput,
26075
26096
  success: ServerUpsertKeybindingResult,
26076
26097
  error: KeybindingsConfigError
26077
26098
  });
26078
- const WsServerRemoveKeybindingRpc = make$30(WS_METHODS.serverRemoveKeybinding, {
26099
+ const WsServerRemoveKeybindingRpc = make$29(WS_METHODS.serverRemoveKeybinding, {
26079
26100
  payload: ServerRemoveKeybindingInput,
26080
26101
  success: ServerRemoveKeybindingResult,
26081
26102
  error: KeybindingsConfigError
26082
26103
  });
26083
- const WsServerGetConfigRpc = make$30(WS_METHODS.serverGetConfig, {
26104
+ const WsServerGetConfigRpc = make$29(WS_METHODS.serverGetConfig, {
26084
26105
  payload: Struct({}),
26085
26106
  success: ServerConfig$1,
26086
26107
  error: Union([KeybindingsConfigError, ServerSettingsError])
26087
26108
  });
26088
- const WsServerRefreshProvidersRpc = make$30(WS_METHODS.serverRefreshProviders, {
26109
+ const WsServerRefreshProvidersRpc = make$29(WS_METHODS.serverRefreshProviders, {
26089
26110
  payload: Struct({}),
26090
26111
  success: ServerProviderUpdatedPayload
26091
26112
  });
26092
- const WsServerStartProviderAuthRpc = make$30(WS_METHODS.serverStartProviderAuth, {
26113
+ const WsServerStartProviderAuthRpc = make$29(WS_METHODS.serverStartProviderAuth, {
26093
26114
  payload: ProviderAuthStartInput,
26094
26115
  success: ProviderAuthSession
26095
26116
  });
26096
- const WsServerRepairProviderAuthRuntimeRpc = make$30(WS_METHODS.serverRepairProviderAuthRuntime, {
26117
+ const WsServerRepairProviderAuthRuntimeRpc = make$29(WS_METHODS.serverRepairProviderAuthRuntime, {
26097
26118
  payload: ProviderAuthRuntimeRepairInput,
26098
26119
  success: ProviderAuthRuntimeRepairResult
26099
26120
  });
26100
- const WsServerDisconnectProviderAuthRpc = make$30(WS_METHODS.serverDisconnectProviderAuth, {
26121
+ const WsServerDisconnectProviderAuthRpc = make$29(WS_METHODS.serverDisconnectProviderAuth, {
26101
26122
  payload: ProviderAuthDisconnectInput,
26102
26123
  success: ServerProviderUpdatedPayload
26103
26124
  });
26104
- const WsServerGetProviderAuthSessionRpc = make$30(WS_METHODS.serverGetProviderAuthSession, {
26125
+ const WsServerGetProviderAuthSessionRpc = make$29(WS_METHODS.serverGetProviderAuthSession, {
26105
26126
  payload: ProviderAuthSessionInput,
26106
26127
  success: ProviderAuthSession
26107
26128
  });
26108
- const WsServerCancelProviderAuthRpc = make$30(WS_METHODS.serverCancelProviderAuth, {
26129
+ const WsServerCancelProviderAuthRpc = make$29(WS_METHODS.serverCancelProviderAuth, {
26109
26130
  payload: ProviderAuthSessionInput,
26110
26131
  success: ProviderAuthSession
26111
26132
  });
26112
- const WsServerSubmitProviderAuthCodeRpc = make$30(WS_METHODS.serverSubmitProviderAuthCode, {
26133
+ const WsServerSubmitProviderAuthCodeRpc = make$29(WS_METHODS.serverSubmitProviderAuthCode, {
26113
26134
  payload: ProviderAuthSubmitCodeInput,
26114
26135
  success: ProviderAuthSession
26115
26136
  });
26116
- const WsServerSyncPersonalCodexToCloudRpc = make$30(WS_METHODS.serverSyncPersonalCodexToCloud, {
26137
+ const WsServerSyncPersonalCodexToCloudRpc = make$29(WS_METHODS.serverSyncPersonalCodexToCloud, {
26117
26138
  payload: ProviderCredentialCloudSyncInput,
26118
26139
  success: ProviderCredentialCloudSyncResult
26119
26140
  });
26120
- const WsServerSyncPersonalClaudeToCloudRpc = make$30(WS_METHODS.serverSyncPersonalClaudeToCloud, {
26141
+ const WsServerSyncPersonalClaudeToCloudRpc = make$29(WS_METHODS.serverSyncPersonalClaudeToCloud, {
26121
26142
  payload: ProviderCredentialCloudSyncInput,
26122
26143
  success: ProviderCredentialCloudSyncResult
26123
26144
  });
26124
- const WsServerGetSettingsRpc = make$30(WS_METHODS.serverGetSettings, {
26145
+ const WsServerGetSettingsRpc = make$29(WS_METHODS.serverGetSettings, {
26125
26146
  payload: Struct({}),
26126
26147
  success: ServerSettings,
26127
26148
  error: ServerSettingsError
26128
26149
  });
26129
- const WsServerUpdateSettingsRpc = make$30(WS_METHODS.serverUpdateSettings, {
26150
+ const WsServerUpdateSettingsRpc = make$29(WS_METHODS.serverUpdateSettings, {
26130
26151
  payload: Struct({ patch: ServerSettingsPatch }),
26131
26152
  success: ServerSettings,
26132
26153
  error: ServerSettingsError
26133
26154
  });
26134
- const WsServerUpdateEnvironmentDisplayNameRpc = make$30(WS_METHODS.serverUpdateEnvironmentDisplayName, {
26155
+ const WsServerUpdateEnvironmentDisplayNameRpc = make$29(WS_METHODS.serverUpdateEnvironmentDisplayName, {
26135
26156
  payload: ServerEnvironmentDisplayNameUpdateInput,
26136
26157
  success: ServerEnvironmentDisplayNameUpdateResult
26137
26158
  });
26138
- const WsServerTraceDiagnosticsRpc = make$30(WS_METHODS.serverGetTraceDiagnostics, {
26159
+ const WsServerTraceDiagnosticsRpc = make$29(WS_METHODS.serverGetTraceDiagnostics, {
26139
26160
  payload: Struct({ slowSpanThresholdMs: optionalKey(NonNegativeInt) }),
26140
26161
  success: ServerTraceDiagnosticsResult
26141
26162
  });
26142
- const WsServerHeartbeatRpc = make$30(WS_METHODS.serverHeartbeat, {
26163
+ const WsServerHeartbeatRpc = make$29(WS_METHODS.serverHeartbeat, {
26143
26164
  payload: Struct({}),
26144
26165
  success: Struct({})
26145
26166
  });
26146
26167
  const PullRequestRpcError = Union([PullRequestUnavailableError, PullRequestOperationError]);
26147
- const WsPullRequestsListRpc = make$30(WS_METHODS.pullRequestsList, {
26168
+ const WsPullRequestsListRpc = make$29(WS_METHODS.pullRequestsList, {
26148
26169
  payload: PullRequestListInput,
26149
26170
  success: PullRequestListResult,
26150
26171
  error: PullRequestRpcError
26151
26172
  });
26152
- const WsPullRequestsListStatsRpc = make$30(WS_METHODS.pullRequestsListStats, {
26173
+ const WsPullRequestsListStatsRpc = make$29(WS_METHODS.pullRequestsListStats, {
26153
26174
  payload: PullRequestListStatsInput,
26154
26175
  success: PullRequestListStatsResult,
26155
26176
  error: PullRequestRpcError
26156
26177
  });
26157
- const WsPullRequestsDetailRpc = make$30(WS_METHODS.pullRequestsDetail, {
26178
+ const WsPullRequestsDetailRpc = make$29(WS_METHODS.pullRequestsDetail, {
26158
26179
  payload: PullRequestRef,
26159
26180
  success: PullRequestDetail,
26160
26181
  error: PullRequestRpcError
26161
26182
  });
26162
- const WsPullRequestsActivityRpc = make$30(WS_METHODS.pullRequestsActivity, {
26183
+ const WsPullRequestsActivityRpc = make$29(WS_METHODS.pullRequestsActivity, {
26163
26184
  payload: PullRequestRef,
26164
26185
  success: PullRequestActivity,
26165
26186
  error: PullRequestRpcError
26166
26187
  });
26167
- const WsPullRequestsThreadCommentsRpc = make$30(WS_METHODS.pullRequestsThreadComments, {
26188
+ const WsPullRequestsThreadCommentsRpc = make$29(WS_METHODS.pullRequestsThreadComments, {
26168
26189
  payload: PullRequestThreadCommentsInput,
26169
26190
  success: PullRequestThreadCommentsResult,
26170
26191
  error: PullRequestRpcError
26171
26192
  });
26172
- const WsPullRequestsDiffFileContentsRpc = make$30(WS_METHODS.pullRequestsDiffFileContents, {
26193
+ const WsPullRequestsDiffFileContentsRpc = make$29(WS_METHODS.pullRequestsDiffFileContents, {
26173
26194
  payload: PullRequestDiffFileContentsInput,
26174
26195
  success: PullRequestDiffFileContentsResult,
26175
26196
  error: PullRequestRpcError
26176
26197
  });
26177
- const WsPullRequestsRunActionRpc = make$30(WS_METHODS.pullRequestsRunAction, {
26198
+ const WsPullRequestsRunActionRpc = make$29(WS_METHODS.pullRequestsRunAction, {
26178
26199
  payload: PullRequestActionInput,
26179
26200
  success: Void,
26180
26201
  error: PullRequestRpcError
26181
26202
  });
26182
- const WsPullRequestsUpdateRpc = make$30(WS_METHODS.pullRequestsUpdate, {
26203
+ const WsPullRequestsUpdateRpc = make$29(WS_METHODS.pullRequestsUpdate, {
26183
26204
  payload: PullRequestUpdateInput,
26184
26205
  success: Void,
26185
26206
  error: PullRequestRpcError
26186
26207
  });
26187
- const WsPullRequestsCommentRpc = make$30(WS_METHODS.pullRequestsComment, {
26208
+ const WsPullRequestsCommentRpc = make$29(WS_METHODS.pullRequestsComment, {
26188
26209
  payload: PullRequestCommentInput,
26189
26210
  success: Void,
26190
26211
  error: PullRequestRpcError
26191
26212
  });
26192
- const WsPullRequestsUpdateCommentRpc = make$30(WS_METHODS.pullRequestsUpdateComment, {
26213
+ const WsPullRequestsUpdateCommentRpc = make$29(WS_METHODS.pullRequestsUpdateComment, {
26193
26214
  payload: PullRequestCommentUpdateInput,
26194
26215
  success: Void,
26195
26216
  error: PullRequestRpcError
26196
26217
  });
26197
- const WsPullRequestsSubmitReviewRpc = make$30(WS_METHODS.pullRequestsSubmitReview, {
26218
+ const WsPullRequestsSubmitReviewRpc = make$29(WS_METHODS.pullRequestsSubmitReview, {
26198
26219
  payload: PullRequestSubmitReviewInput,
26199
26220
  success: Void,
26200
26221
  error: PullRequestRpcError
26201
26222
  });
26202
- const WsPullRequestsReplyToThreadRpc = make$30(WS_METHODS.pullRequestsReplyToThread, {
26223
+ const WsPullRequestsReplyToThreadRpc = make$29(WS_METHODS.pullRequestsReplyToThread, {
26203
26224
  payload: PullRequestThreadReplyInput,
26204
26225
  success: Void,
26205
26226
  error: PullRequestRpcError
26206
26227
  });
26207
- const WsPullRequestsSetThreadResolutionRpc = make$30(WS_METHODS.pullRequestsSetThreadResolution, {
26228
+ const WsPullRequestsSetThreadResolutionRpc = make$29(WS_METHODS.pullRequestsSetThreadResolution, {
26208
26229
  payload: PullRequestThreadResolutionInput,
26209
26230
  success: Void,
26210
26231
  error: PullRequestRpcError
26211
26232
  });
26212
- const WsPullRequestsSetReactionRpc = make$30(WS_METHODS.pullRequestsSetReaction, {
26233
+ const WsPullRequestsSetReactionRpc = make$29(WS_METHODS.pullRequestsSetReaction, {
26213
26234
  payload: PullRequestReactionInput,
26214
26235
  success: Void,
26215
26236
  error: PullRequestRpcError
26216
26237
  });
26217
- const WsPullRequestsInvalidateRpc = make$30(WS_METHODS.pullRequestsInvalidate, {
26238
+ const WsPullRequestsInvalidateRpc = make$29(WS_METHODS.pullRequestsInvalidate, {
26218
26239
  payload: PullRequestInvalidateInput,
26219
26240
  success: Void,
26220
26241
  error: PullRequestRpcError
26221
26242
  });
26222
- const WsPullRequestsReviewerCandidatesRpc = make$30(WS_METHODS.pullRequestsReviewerCandidates, {
26243
+ const WsPullRequestsReviewerCandidatesRpc = make$29(WS_METHODS.pullRequestsReviewerCandidates, {
26223
26244
  payload: PullRequestRef,
26224
26245
  success: PullRequestReviewerCandidateList,
26225
26246
  error: PullRequestRpcError
26226
26247
  });
26227
- const WsPullRequestsRequestReviewersRpc = make$30(WS_METHODS.pullRequestsRequestReviewers, {
26248
+ const WsPullRequestsRequestReviewersRpc = make$29(WS_METHODS.pullRequestsRequestReviewers, {
26228
26249
  payload: PullRequestReviewerRequestInput,
26229
26250
  success: Void,
26230
26251
  error: PullRequestRpcError
26231
26252
  });
26232
- const WsProjectsSearchContentsRpc = make$30(WS_METHODS.projectsSearchContents, {
26253
+ const WsProjectsSearchContentsRpc = make$29(WS_METHODS.projectsSearchContents, {
26233
26254
  payload: ProjectSearchContentsInput,
26234
26255
  success: ProjectSearchContentsResult,
26235
26256
  error: ProjectSearchContentsError
26236
26257
  });
26237
- const WsProjectsSearchEntriesRpc = make$30(WS_METHODS.projectsSearchEntries, {
26258
+ const WsProjectsSearchEntriesRpc = make$29(WS_METHODS.projectsSearchEntries, {
26238
26259
  payload: ProjectSearchEntriesInput,
26239
26260
  success: ProjectSearchEntriesResult,
26240
26261
  error: ProjectSearchEntriesError
26241
26262
  });
26242
- const WsProjectsWriteFileRpc = make$30(WS_METHODS.projectsWriteFile, {
26263
+ const WsProjectsWriteFileRpc = make$29(WS_METHODS.projectsWriteFile, {
26243
26264
  payload: ProjectWriteFileInput,
26244
26265
  success: ProjectWriteFileResult,
26245
26266
  error: ProjectWriteFileError
26246
26267
  });
26247
- const WsProjectCheckoutDeletionPreviewRpc = make$30(WS_METHODS.projectCheckoutDeletionPreview, {
26268
+ const WsProjectCheckoutDeletionPreviewRpc = make$29(WS_METHODS.projectCheckoutDeletionPreview, {
26248
26269
  payload: ProjectCheckoutDeletionPreviewInput,
26249
26270
  success: ProjectCheckoutDeletionPreview
26250
26271
  });
26251
- const WsProjectCheckoutDeletionExecuteRpc = make$30(WS_METHODS.projectCheckoutDeletionExecute, {
26272
+ const WsProjectCheckoutDeletionExecuteRpc = make$29(WS_METHODS.projectCheckoutDeletionExecute, {
26252
26273
  payload: ProjectCheckoutDeletionExecuteInput,
26253
26274
  success: ProjectCheckoutDeletionResult
26254
26275
  });
26255
- const WsWorkspaceReadFileRpc = make$30(WS_METHODS.workspaceReadFile, {
26276
+ const WsWorkspaceReadFileRpc = make$29(WS_METHODS.workspaceReadFile, {
26256
26277
  payload: BulkTransferReadFileInput,
26257
26278
  success: BulkTransferStreamEvent,
26258
26279
  error: BulkTransferError,
26259
26280
  stream: true
26260
26281
  });
26261
- const WsWorkspaceBeginWriteFileRpc = make$30(WS_METHODS.workspaceBeginWriteFile, {
26282
+ const WsWorkspaceBeginWriteFileRpc = make$29(WS_METHODS.workspaceBeginWriteFile, {
26262
26283
  payload: BulkTransferWriteBeginInput,
26263
26284
  success: BulkTransferWriteBeginResult,
26264
26285
  error: BulkTransferError
26265
26286
  });
26266
- const WsWorkspaceWriteFileChunkRpc = make$30(WS_METHODS.workspaceWriteFileChunk, {
26287
+ const WsWorkspaceWriteFileChunkRpc = make$29(WS_METHODS.workspaceWriteFileChunk, {
26267
26288
  payload: BulkTransferWriteChunkInput,
26268
26289
  success: BulkTransferWriteChunkResult,
26269
26290
  error: BulkTransferError
26270
26291
  });
26271
- const WsWorkspaceCommitWriteFileRpc = make$30(WS_METHODS.workspaceCommitWriteFile, {
26292
+ const WsWorkspaceCommitWriteFileRpc = make$29(WS_METHODS.workspaceCommitWriteFile, {
26272
26293
  payload: BulkTransferIdInput,
26273
26294
  success: BulkTransferWriteCommitResult,
26274
26295
  error: BulkTransferError
26275
26296
  });
26276
- const WsWorkspaceCancelWriteFileRpc = make$30(WS_METHODS.workspaceCancelWriteFile, {
26297
+ const WsWorkspaceCancelWriteFileRpc = make$29(WS_METHODS.workspaceCancelWriteFile, {
26277
26298
  payload: BulkTransferIdInput,
26278
26299
  success: BulkTransferCancelResult,
26279
26300
  error: BulkTransferError
26280
26301
  });
26281
- const WsShellOpenInEditorRpc = make$30(WS_METHODS.shellOpenInEditor, {
26302
+ const WsShellOpenInEditorRpc = make$29(WS_METHODS.shellOpenInEditor, {
26282
26303
  payload: OpenInEditorInput,
26283
26304
  error: OpenError$1
26284
26305
  });
26285
- const WsSubscribeGitStatusRpc = make$30(WS_METHODS.subscribeGitStatus, {
26306
+ const WsSubscribeGitStatusRpc = make$29(WS_METHODS.subscribeGitStatus, {
26286
26307
  payload: GitStatusInput,
26287
26308
  success: GitStatusStreamEvent,
26288
26309
  error: GitManagerServiceError,
26289
26310
  stream: true
26290
26311
  });
26291
- const WsGitPullRpc = make$30(WS_METHODS.gitPull, {
26312
+ const WsGitPullRpc = make$29(WS_METHODS.gitPull, {
26292
26313
  payload: GitPullInput,
26293
26314
  success: GitPullResult,
26294
26315
  error: GitCommandError
26295
26316
  });
26296
- const WsGitRefreshStatusRpc = make$30(WS_METHODS.gitRefreshStatus, {
26317
+ const WsGitRefreshStatusRpc = make$29(WS_METHODS.gitRefreshStatus, {
26297
26318
  payload: GitStatusInput,
26298
26319
  success: GitStatusResult,
26299
26320
  error: GitManagerServiceError
26300
26321
  });
26301
- const WsGitRunStackedActionRpc = make$30(WS_METHODS.gitRunStackedAction, {
26322
+ const WsGitRunStackedActionRpc = make$29(WS_METHODS.gitRunStackedAction, {
26302
26323
  payload: GitRunStackedActionInput,
26303
26324
  success: GitActionProgressEvent,
26304
26325
  error: GitManagerServiceError,
26305
26326
  stream: true
26306
26327
  });
26307
- const WsGitResolvePullRequestRpc = make$30(WS_METHODS.gitResolvePullRequest, {
26328
+ const WsGitResolvePullRequestRpc = make$29(WS_METHODS.gitResolvePullRequest, {
26308
26329
  payload: GitPullRequestRefInput,
26309
26330
  success: GitResolvePullRequestResult,
26310
26331
  error: GitManagerServiceError
26311
26332
  });
26312
- const WsGitPreparePullRequestThreadRpc = make$30(WS_METHODS.gitPreparePullRequestThread, {
26333
+ const WsGitPreparePullRequestThreadRpc = make$29(WS_METHODS.gitPreparePullRequestThread, {
26313
26334
  payload: GitPreparePullRequestThreadInput,
26314
26335
  success: GitPreparePullRequestThreadResult,
26315
26336
  error: GitManagerServiceError
26316
26337
  });
26317
- const WsGitListBranchesRpc = make$30(WS_METHODS.gitListBranches, {
26338
+ const WsGitListBranchesRpc = make$29(WS_METHODS.gitListBranches, {
26318
26339
  payload: GitListBranchesInput,
26319
26340
  success: GitListBranchesResult,
26320
26341
  error: GitCommandError
26321
26342
  });
26322
- const WsVcsListRefsRpc = make$30(WS_METHODS.vcsListRefs, {
26343
+ const WsVcsListRefsRpc = make$29(WS_METHODS.vcsListRefs, {
26323
26344
  payload: VcsListRefsInput,
26324
26345
  success: VcsListRefsResult,
26325
26346
  error: GitCommandError
26326
26347
  });
26327
- const WsVcsRefreshStatusRpc = make$30(WS_METHODS.vcsRefreshStatus, {
26348
+ const WsVcsRefreshStatusRpc = make$29(WS_METHODS.vcsRefreshStatus, {
26328
26349
  payload: GitStatusInput,
26329
26350
  success: VcsStatusResult,
26330
26351
  error: GitManagerServiceError
26331
26352
  });
26332
- const WsSubscribeVcsStatusRpc = make$30(WS_METHODS.subscribeVcsStatus, {
26353
+ const WsSubscribeVcsStatusRpc = make$29(WS_METHODS.subscribeVcsStatus, {
26333
26354
  payload: GitStatusInput,
26334
26355
  success: VcsStatusStreamEvent,
26335
26356
  error: GitManagerServiceError,
26336
26357
  stream: true
26337
26358
  });
26338
- const WsVcsPullRpc = make$30(WS_METHODS.vcsPull, {
26359
+ const WsVcsPullRpc = make$29(WS_METHODS.vcsPull, {
26339
26360
  payload: VcsPullInput,
26340
26361
  success: VcsPullResult,
26341
26362
  error: GitCommandError
26342
26363
  });
26343
- const WsVcsCreateWorktreeRpc = make$30(WS_METHODS.vcsCreateWorktree, {
26364
+ const WsVcsCreateWorktreeRpc = make$29(WS_METHODS.vcsCreateWorktree, {
26344
26365
  payload: VcsCreateWorktreeInput,
26345
26366
  success: VcsCreateWorktreeResult,
26346
26367
  error: Union([GitCommandError, VcsUnsupportedRequestError])
26347
26368
  });
26348
- const WsVcsRemoveWorktreeRpc = make$30(WS_METHODS.vcsRemoveWorktree, {
26369
+ const WsVcsRemoveWorktreeRpc = make$29(WS_METHODS.vcsRemoveWorktree, {
26349
26370
  payload: GitRemoveWorktreeInput,
26350
26371
  error: GitCommandError
26351
26372
  });
26352
- const WsVcsCreateRefRpc = make$30(WS_METHODS.vcsCreateRef, {
26373
+ const WsVcsCreateRefRpc = make$29(WS_METHODS.vcsCreateRef, {
26353
26374
  payload: VcsCreateRefInput,
26354
26375
  success: VcsCreateRefResult,
26355
26376
  error: GitCommandError
26356
26377
  });
26357
- const WsVcsSwitchRefRpc = make$30(WS_METHODS.vcsSwitchRef, {
26378
+ const WsVcsSwitchRefRpc = make$29(WS_METHODS.vcsSwitchRef, {
26358
26379
  payload: VcsSwitchRefInput,
26359
26380
  success: VcsSwitchRefResult,
26360
26381
  error: GitCommandError
26361
26382
  });
26362
- const WsVcsInitRpc = make$30(WS_METHODS.vcsInit, {
26383
+ const WsVcsInitRpc = make$29(WS_METHODS.vcsInit, {
26363
26384
  payload: VcsInitInput,
26364
26385
  error: Union([GitCommandError, VcsUnsupportedRequestError])
26365
26386
  });
26366
- const WsGitCreateWorktreeRpc = make$30(WS_METHODS.gitCreateWorktree, {
26387
+ const WsGitCreateWorktreeRpc = make$29(WS_METHODS.gitCreateWorktree, {
26367
26388
  payload: GitCreateWorktreeInput,
26368
26389
  success: GitCreateWorktreeResult,
26369
26390
  error: GitCommandError
26370
26391
  });
26371
- const WsGitRemoveWorktreeRpc = make$30(WS_METHODS.gitRemoveWorktree, {
26392
+ const WsGitRemoveWorktreeRpc = make$29(WS_METHODS.gitRemoveWorktree, {
26372
26393
  payload: GitRemoveWorktreeInput,
26373
26394
  error: GitCommandError
26374
26395
  });
26375
- const WsGitCreateBranchRpc = make$30(WS_METHODS.gitCreateBranch, {
26396
+ const WsGitCreateBranchRpc = make$29(WS_METHODS.gitCreateBranch, {
26376
26397
  payload: GitCreateBranchInput,
26377
26398
  success: GitCreateBranchResult,
26378
26399
  error: GitCommandError
26379
26400
  });
26380
- const WsGitCheckoutRpc = make$30(WS_METHODS.gitCheckout, {
26401
+ const WsGitCheckoutRpc = make$29(WS_METHODS.gitCheckout, {
26381
26402
  payload: GitCheckoutInput,
26382
26403
  success: GitCheckoutResult,
26383
26404
  error: GitCommandError
26384
26405
  });
26385
- const WsGitInitRpc = make$30(WS_METHODS.gitInit, {
26406
+ const WsGitInitRpc = make$29(WS_METHODS.gitInit, {
26386
26407
  payload: GitInitInput,
26387
26408
  error: GitCommandError
26388
26409
  });
@@ -26390,7 +26411,7 @@ const WsGitInitRpc = make$30(WS_METHODS.gitInit, {
26390
26411
  * The git half of a review: the branch range and the uncommitted work. The
26391
26412
  * per-turn diffs beside it arrive through `orchestration.getTurnDiff`.
26392
26413
  */
26393
- const WsReviewGetDiffPreviewRpc = make$30(WS_METHODS.reviewGetDiffPreview, {
26414
+ const WsReviewGetDiffPreviewRpc = make$29(WS_METHODS.reviewGetDiffPreview, {
26394
26415
  payload: ReviewDiffPreviewInput,
26395
26416
  success: ReviewDiffPreviewResult,
26396
26417
  error: Union([ReviewDiffPreviewError])
@@ -26400,12 +26421,12 @@ const WsReviewGetDiffPreviewRpc = make$30(WS_METHODS.reviewGetDiffPreview, {
26400
26421
  * chunked bulk-transfer stream. A viewer wants the text once; a transfer wants
26401
26422
  * offsets and checksums.
26402
26423
  */
26403
- const WsProjectsReadFileRpc = make$30(WS_METHODS.projectsReadFile, {
26424
+ const WsProjectsReadFileRpc = make$29(WS_METHODS.projectsReadFile, {
26404
26425
  payload: ProjectReadFileInput,
26405
26426
  success: ProjectReadFileResult,
26406
26427
  error: Union([ProjectReadFileError])
26407
26428
  });
26408
- const WsFilesystemBrowseRpc = make$30(WS_METHODS.filesystemBrowse, {
26429
+ const WsFilesystemBrowseRpc = make$29(WS_METHODS.filesystemBrowse, {
26409
26430
  payload: FilesystemBrowseInput,
26410
26431
  success: FilesystemBrowseResult,
26411
26432
  error: Union([FilesystemBrowseError])
@@ -26415,87 +26436,87 @@ const WsFilesystemBrowseRpc = make$30(WS_METHODS.filesystemBrowse, {
26415
26436
  * Routed through the server because the phone keeps only the Forge-minted
26416
26437
  * session token, never a CMMD one.
26417
26438
  */
26418
- const WsCloudListRuntimesRpc = make$30(WS_METHODS.cloudListRuntimes, {
26439
+ const WsCloudListRuntimesRpc = make$29(WS_METHODS.cloudListRuntimes, {
26419
26440
  payload: CloudRuntimeListInput,
26420
26441
  success: CloudRuntimeListResult,
26421
26442
  error: Union([CloudRuntimeListError])
26422
26443
  });
26423
- const WsTerminalOpenRpc = make$30(WS_METHODS.terminalOpen, {
26444
+ const WsTerminalOpenRpc = make$29(WS_METHODS.terminalOpen, {
26424
26445
  payload: TerminalOpenInput,
26425
26446
  success: TerminalSessionSnapshot,
26426
26447
  error: TerminalError
26427
26448
  });
26428
- const WsTerminalAttachRpc = make$30(WS_METHODS.terminalAttach, {
26449
+ const WsTerminalAttachRpc = make$29(WS_METHODS.terminalAttach, {
26429
26450
  payload: TerminalAttachInput,
26430
26451
  success: TerminalAttachStreamEvent,
26431
26452
  error: TerminalError,
26432
26453
  stream: true
26433
26454
  });
26434
- const WsTerminalWriteRpc = make$30(WS_METHODS.terminalWrite, {
26455
+ const WsTerminalWriteRpc = make$29(WS_METHODS.terminalWrite, {
26435
26456
  payload: TerminalWriteRequest,
26436
26457
  success: TerminalControlAck,
26437
26458
  error: TerminalError
26438
26459
  });
26439
- const WsTerminalResizeRpc = make$30(WS_METHODS.terminalResize, {
26460
+ const WsTerminalResizeRpc = make$29(WS_METHODS.terminalResize, {
26440
26461
  payload: TerminalResizeRequest,
26441
26462
  success: TerminalControlAck,
26442
26463
  error: TerminalError
26443
26464
  });
26444
- const WsTerminalSignalRpc = make$30(WS_METHODS.terminalSignal, {
26465
+ const WsTerminalSignalRpc = make$29(WS_METHODS.terminalSignal, {
26445
26466
  payload: TerminalSignalRequest,
26446
26467
  success: TerminalControlAck,
26447
26468
  error: TerminalError
26448
26469
  });
26449
- const WsTerminalClearRpc = make$30(WS_METHODS.terminalClear, {
26470
+ const WsTerminalClearRpc = make$29(WS_METHODS.terminalClear, {
26450
26471
  payload: TerminalClearRequest,
26451
26472
  success: TerminalControlAck,
26452
26473
  error: TerminalError
26453
26474
  });
26454
- const WsTerminalRestartRpc = make$30(WS_METHODS.terminalRestart, {
26475
+ const WsTerminalRestartRpc = make$29(WS_METHODS.terminalRestart, {
26455
26476
  payload: TerminalRestartRequest,
26456
26477
  success: TerminalRestartResult,
26457
26478
  error: TerminalError
26458
26479
  });
26459
- const WsTerminalCloseRpc = make$30(WS_METHODS.terminalClose, {
26480
+ const WsTerminalCloseRpc = make$29(WS_METHODS.terminalClose, {
26460
26481
  payload: TerminalCloseRequest,
26461
26482
  success: TerminalControlAck,
26462
26483
  error: TerminalError
26463
26484
  });
26464
- const WsBrowserOpenSessionRpc = make$30(WS_METHODS.browserOpenSession, {
26485
+ const WsBrowserOpenSessionRpc = make$29(WS_METHODS.browserOpenSession, {
26465
26486
  payload: BrowserOpenSessionInput,
26466
26487
  success: BrowserSessionSnapshot,
26467
26488
  error: BrowserError
26468
26489
  });
26469
- const WsBrowserListSessionsRpc = make$30(WS_METHODS.browserListSessions, {
26490
+ const WsBrowserListSessionsRpc = make$29(WS_METHODS.browserListSessions, {
26470
26491
  payload: BrowserListSessionsInput,
26471
26492
  success: ArraySchema(BrowserSessionSnapshot),
26472
26493
  error: BrowserError
26473
26494
  });
26474
- const WsBrowserCloseSessionRpc = make$30(WS_METHODS.browserCloseSession, {
26495
+ const WsBrowserCloseSessionRpc = make$29(WS_METHODS.browserCloseSession, {
26475
26496
  payload: BrowserCloseSessionInput,
26476
26497
  error: BrowserError
26477
26498
  });
26478
- const WsBrowserGetSessionRpc = make$30(WS_METHODS.browserGetSession, {
26499
+ const WsBrowserGetSessionRpc = make$29(WS_METHODS.browserGetSession, {
26479
26500
  payload: BrowserGetSessionInput,
26480
26501
  success: NullOr(BrowserSessionSnapshot),
26481
26502
  error: BrowserError
26482
26503
  });
26483
- const WsBrowserCommandRpc = make$30(WS_METHODS.browserCommand, {
26504
+ const WsBrowserCommandRpc = make$29(WS_METHODS.browserCommand, {
26484
26505
  payload: BrowserCommandInput,
26485
26506
  success: BrowserCommandResult,
26486
26507
  error: BrowserError
26487
26508
  });
26488
- const WsBrowserClearBrowsingDataRpc = make$30(WS_METHODS.browserClearBrowsingData, {
26509
+ const WsBrowserClearBrowsingDataRpc = make$29(WS_METHODS.browserClearBrowsingData, {
26489
26510
  payload: BrowserClearBrowsingDataInput,
26490
26511
  success: BrowserClearBrowsingDataResult,
26491
26512
  error: BrowserError
26492
26513
  });
26493
- const WsBrowserAttachDisplayRpc = make$30(WS_METHODS.browserAttachDisplay, {
26514
+ const WsBrowserAttachDisplayRpc = make$29(WS_METHODS.browserAttachDisplay, {
26494
26515
  payload: BrowserDisplayAttachInput,
26495
26516
  success: BrowserDisplayAttachResult,
26496
26517
  error: BrowserError
26497
26518
  });
26498
- const WsBrowserAddDisplayIceCandidateRpc = make$30(WS_METHODS.browserAddDisplayIceCandidate, {
26519
+ const WsBrowserAddDisplayIceCandidateRpc = make$29(WS_METHODS.browserAddDisplayIceCandidate, {
26499
26520
  payload: BrowserDisplayIceCandidateInput,
26500
26521
  success: Struct({}),
26501
26522
  error: BrowserError
@@ -26507,87 +26528,87 @@ const WsBrowserAddDisplayIceCandidateRpc = make$30(WS_METHODS.browserAddDisplayI
26507
26528
  * page: it can click a DOM element but cannot touch the dock, a file manager,
26508
26529
  * or anything else outside Chromium. This one lands on the display itself.
26509
26530
  */
26510
- const WsComputerInputRpc = make$30(WS_METHODS.computerInput, {
26531
+ const WsComputerInputRpc = make$29(WS_METHODS.computerInput, {
26511
26532
  payload: ComputerInputInput,
26512
26533
  success: ComputerInputResult,
26513
26534
  error: ComputerError
26514
26535
  });
26515
- const WsDevTunnelRegisterRpc = make$30(WS_METHODS.devTunnelRegister, {
26536
+ const WsDevTunnelRegisterRpc = make$29(WS_METHODS.devTunnelRegister, {
26516
26537
  payload: DevTunnelRegisterInput,
26517
26538
  success: DevTunnelRecord,
26518
26539
  error: DevTunnelError
26519
26540
  });
26520
- const WsDevTunnelUnregisterRpc = make$30(WS_METHODS.devTunnelUnregister, {
26541
+ const WsDevTunnelUnregisterRpc = make$29(WS_METHODS.devTunnelUnregister, {
26521
26542
  payload: DevTunnelUnregisterInput,
26522
26543
  error: DevTunnelError
26523
26544
  });
26524
- const WsDevTunnelListRpc = make$30(WS_METHODS.devTunnelList, {
26545
+ const WsDevTunnelListRpc = make$29(WS_METHODS.devTunnelList, {
26525
26546
  payload: DevTunnelListInput,
26526
26547
  success: ArraySchema(DevTunnelRecord),
26527
26548
  error: DevTunnelError
26528
26549
  });
26529
- const WsThreadDevRuntimeGetRpc = make$30(WS_METHODS.threadDevRuntimeGet, {
26550
+ const WsThreadDevRuntimeGetRpc = make$29(WS_METHODS.threadDevRuntimeGet, {
26530
26551
  payload: ThreadDevRuntimeGetInput,
26531
26552
  success: NullOr(ThreadDevRuntimeRecord),
26532
26553
  error: ThreadDevRuntimeError
26533
26554
  });
26534
- const WsThreadDevRuntimeAllocatePortRpc = make$30(WS_METHODS.threadDevRuntimeAllocatePort, {
26555
+ const WsThreadDevRuntimeAllocatePortRpc = make$29(WS_METHODS.threadDevRuntimeAllocatePort, {
26535
26556
  payload: ThreadDevRuntimeAllocatePortInput,
26536
26557
  success: ThreadDevRuntimeRecord,
26537
26558
  error: ThreadDevRuntimeError
26538
26559
  });
26539
- const WsThreadDevRuntimeReleaseRpc = make$30(WS_METHODS.threadDevRuntimeRelease, {
26560
+ const WsThreadDevRuntimeReleaseRpc = make$29(WS_METHODS.threadDevRuntimeRelease, {
26540
26561
  payload: ThreadDevRuntimeReleaseInput,
26541
26562
  error: ThreadDevRuntimeError
26542
26563
  });
26543
- const WsWorkspaceEnvironmentPreflightRpc = make$30(WS_METHODS.workspaceEnvironmentPreflight, {
26564
+ const WsWorkspaceEnvironmentPreflightRpc = make$29(WS_METHODS.workspaceEnvironmentPreflight, {
26544
26565
  payload: WorkspaceEnvironmentPreflightInput,
26545
26566
  success: WorkspaceEnvironmentPreflightReport,
26546
26567
  error: WorkspaceEnvironmentError
26547
26568
  });
26548
- const WsWorkspaceEnsureScratchRpc = make$30(WS_METHODS.workspaceEnsureScratch, {
26569
+ const WsWorkspaceEnsureScratchRpc = make$29(WS_METHODS.workspaceEnsureScratch, {
26549
26570
  payload: WorkspaceEnsureScratchInput,
26550
26571
  success: WorkspaceEnsureScratchResult,
26551
26572
  error: WorkspaceEnvironmentError
26552
26573
  });
26553
- const WsOrchestrationDispatchCommandRpc = make$30(ORCHESTRATION_WS_METHODS.dispatchCommand, {
26574
+ const WsOrchestrationDispatchCommandRpc = make$29(ORCHESTRATION_WS_METHODS.dispatchCommand, {
26554
26575
  payload: ClientOrchestrationCommand,
26555
26576
  success: OrchestrationRpcSchemas.dispatchCommand.output,
26556
26577
  error: OrchestrationDispatchCommandError
26557
26578
  });
26558
- const WsOrchestrationGetTurnDiffRpc = make$30(ORCHESTRATION_WS_METHODS.getTurnDiff, {
26579
+ const WsOrchestrationGetTurnDiffRpc = make$29(ORCHESTRATION_WS_METHODS.getTurnDiff, {
26559
26580
  payload: OrchestrationGetTurnDiffInput,
26560
26581
  success: OrchestrationRpcSchemas.getTurnDiff.output,
26561
26582
  error: OrchestrationGetTurnDiffError
26562
26583
  });
26563
- const WsOrchestrationGetFullThreadDiffRpc = make$30(ORCHESTRATION_WS_METHODS.getFullThreadDiff, {
26584
+ const WsOrchestrationGetFullThreadDiffRpc = make$29(ORCHESTRATION_WS_METHODS.getFullThreadDiff, {
26564
26585
  payload: OrchestrationGetFullThreadDiffInput,
26565
26586
  success: OrchestrationRpcSchemas.getFullThreadDiff.output,
26566
26587
  error: OrchestrationGetFullThreadDiffError
26567
26588
  });
26568
- const WsOrchestrationStreamTurnDiffRpc = make$30(ORCHESTRATION_WS_METHODS.streamTurnDiff, {
26589
+ const WsOrchestrationStreamTurnDiffRpc = make$29(ORCHESTRATION_WS_METHODS.streamTurnDiff, {
26569
26590
  payload: OrchestrationGetTurnDiffInput,
26570
26591
  success: BulkTransferStreamEvent,
26571
26592
  error: Union([OrchestrationGetTurnDiffError, BulkTransferError]),
26572
26593
  stream: true
26573
26594
  });
26574
- const WsOrchestrationStreamFullThreadDiffRpc = make$30(ORCHESTRATION_WS_METHODS.streamFullThreadDiff, {
26595
+ const WsOrchestrationStreamFullThreadDiffRpc = make$29(ORCHESTRATION_WS_METHODS.streamFullThreadDiff, {
26575
26596
  payload: OrchestrationGetFullThreadDiffInput,
26576
26597
  success: BulkTransferStreamEvent,
26577
26598
  error: Union([OrchestrationGetFullThreadDiffError, BulkTransferError]),
26578
26599
  stream: true
26579
26600
  });
26580
- const WsOrchestrationReplayEventsRpc = make$30(ORCHESTRATION_WS_METHODS.replayEvents, {
26601
+ const WsOrchestrationReplayEventsRpc = make$29(ORCHESTRATION_WS_METHODS.replayEvents, {
26581
26602
  payload: OrchestrationReplayEventsInput,
26582
26603
  success: OrchestrationRpcSchemas.replayEvents.output,
26583
26604
  error: OrchestrationReplayEventsError
26584
26605
  });
26585
- const WsOrchestrationGetArchivedShellSnapshotRpc = make$30(ORCHESTRATION_WS_METHODS.getArchivedShellSnapshot, {
26606
+ const WsOrchestrationGetArchivedShellSnapshotRpc = make$29(ORCHESTRATION_WS_METHODS.getArchivedShellSnapshot, {
26586
26607
  payload: OrchestrationRpcSchemas.getArchivedShellSnapshot.input,
26587
26608
  success: OrchestrationRpcSchemas.getArchivedShellSnapshot.output,
26588
26609
  error: OrchestrationGetSnapshotError
26589
26610
  });
26590
- const WsOrchestrationSearchThreadsRpc = make$30(ORCHESTRATION_WS_METHODS.searchThreads, {
26611
+ const WsOrchestrationSearchThreadsRpc = make$29(ORCHESTRATION_WS_METHODS.searchThreads, {
26591
26612
  payload: OrchestrationSearchThreadsInput,
26592
26613
  success: OrchestrationRpcSchemas.searchThreads.output,
26593
26614
  error: OrchestrationSearchThreadsError
@@ -26598,7 +26619,7 @@ const WsOrchestrationSearchThreadsRpc = make$30(ORCHESTRATION_WS_METHODS.searchT
26598
26619
  * route and `subscribeThread`'s fallback snapshot serve, over the RPC socket
26599
26620
  * instead.
26600
26621
  */
26601
- const WsOrchestrationGetThreadDetailPageRpc = make$30(ORCHESTRATION_WS_METHODS.getThreadDetailPage, {
26622
+ const WsOrchestrationGetThreadDetailPageRpc = make$29(ORCHESTRATION_WS_METHODS.getThreadDetailPage, {
26602
26623
  payload: OrchestrationRpcSchemas.getThreadDetailPage.input,
26603
26624
  success: OrchestrationRpcSchemas.getThreadDetailPage.output,
26604
26625
  error: OrchestrationGetSnapshotError
@@ -26611,29 +26632,29 @@ const WsOrchestrationGetThreadDetailPageRpc = make$30(ORCHESTRATION_WS_METHODS.g
26611
26632
  * also be authorized, and a repository the caller cannot reach is a failure
26612
26633
  * here rather than a clone that dies half way.
26613
26634
  */
26614
- const WsSourceControlLookupRepositoryRpc = make$30(WS_METHODS.sourceControlLookupRepository, {
26635
+ const WsSourceControlLookupRepositoryRpc = make$29(WS_METHODS.sourceControlLookupRepository, {
26615
26636
  payload: SourceControlRepositoryLookupInput,
26616
26637
  success: SourceControlRepositoryInfo,
26617
26638
  error: SourceControlRepositoryError
26618
26639
  });
26619
- const WsSourceControlCloneRepositoryRpc = make$30(WS_METHODS.sourceControlCloneRepository, {
26640
+ const WsSourceControlCloneRepositoryRpc = make$29(WS_METHODS.sourceControlCloneRepository, {
26620
26641
  payload: SourceControlCloneRepositoryInput,
26621
26642
  success: SourceControlCloneRepositoryResult,
26622
26643
  error: SourceControlRepositoryError
26623
26644
  });
26624
- const WsOrchestrationSubscribeShellRpc = make$30(ORCHESTRATION_WS_METHODS.subscribeShell, {
26645
+ const WsOrchestrationSubscribeShellRpc = make$29(ORCHESTRATION_WS_METHODS.subscribeShell, {
26625
26646
  payload: OrchestrationRpcSchemas.subscribeShell.input,
26626
26647
  success: OrchestrationRpcSchemas.subscribeShell.output,
26627
26648
  error: OrchestrationGetSnapshotError,
26628
26649
  stream: true
26629
26650
  });
26630
- const WsOrchestrationSubscribeThreadRpc = make$30(ORCHESTRATION_WS_METHODS.subscribeThread, {
26651
+ const WsOrchestrationSubscribeThreadRpc = make$29(ORCHESTRATION_WS_METHODS.subscribeThread, {
26631
26652
  payload: OrchestrationRpcSchemas.subscribeThread.input,
26632
26653
  success: OrchestrationRpcSchemas.subscribeThread.output,
26633
26654
  error: OrchestrationGetSnapshotError,
26634
26655
  stream: true
26635
26656
  });
26636
- const WsSubscribeTerminalEventsRpc = make$30(WS_METHODS.subscribeTerminalEvents, {
26657
+ const WsSubscribeTerminalEventsRpc = make$29(WS_METHODS.subscribeTerminalEvents, {
26637
26658
  payload: Struct({}),
26638
26659
  success: TerminalEvent,
26639
26660
  stream: true
@@ -26654,65 +26675,65 @@ const WsSubscribeTerminalEventsRpc = make$30(WS_METHODS.subscribeTerminalEvents,
26654
26675
  * The client's activity report, accepted and dropped. See
26655
26676
  * packages/contracts/src/clientActivityCompat.ts for why there is no answer.
26656
26677
  */
26657
- const WsServerReportClientActivityRpc = make$30(WS_METHODS.serverReportClientActivity, { payload: ClientActivityReportInput });
26658
- const WsServerDiscoverSourceControlRpc = make$30(WS_METHODS.serverDiscoverSourceControl, {
26678
+ const WsServerReportClientActivityRpc = make$29(WS_METHODS.serverReportClientActivity, { payload: ClientActivityReportInput });
26679
+ const WsServerDiscoverSourceControlRpc = make$29(WS_METHODS.serverDiscoverSourceControl, {
26659
26680
  payload: Struct({}),
26660
26681
  success: SourceControlDiscoveryResult
26661
26682
  });
26662
- const WsProjectsListEntriesRpc = make$30(WS_METHODS.projectsListEntries, {
26683
+ const WsProjectsListEntriesRpc = make$29(WS_METHODS.projectsListEntries, {
26663
26684
  payload: ProjectListEntriesInput,
26664
26685
  success: ProjectListEntriesResult,
26665
26686
  error: ProjectListEntriesError
26666
26687
  });
26667
- const WsSubscribeTerminalMetadataRpc = make$30(WS_METHODS.subscribeTerminalMetadata, {
26688
+ const WsSubscribeTerminalMetadataRpc = make$29(WS_METHODS.subscribeTerminalMetadata, {
26668
26689
  payload: Struct({}),
26669
26690
  success: TerminalMetadataStreamEvent,
26670
26691
  stream: true
26671
26692
  });
26672
- const WsSubscribeBrowserEventsRpc = make$30(WS_METHODS.subscribeBrowserEvents, {
26693
+ const WsSubscribeBrowserEventsRpc = make$29(WS_METHODS.subscribeBrowserEvents, {
26673
26694
  payload: BrowserSubscribeInput,
26674
26695
  success: BrowserStreamEvent,
26675
26696
  error: BrowserError,
26676
26697
  stream: true
26677
26698
  });
26678
- const WsSubscribeServerConfigRpc = make$30(WS_METHODS.subscribeServerConfig, {
26699
+ const WsSubscribeServerConfigRpc = make$29(WS_METHODS.subscribeServerConfig, {
26679
26700
  payload: Struct({}),
26680
26701
  success: ServerConfigStreamEvent,
26681
26702
  error: Union([KeybindingsConfigError, ServerSettingsError]),
26682
26703
  stream: true
26683
26704
  });
26684
- const WsSubscribeServerLifecycleRpc = make$30(WS_METHODS.subscribeServerLifecycle, {
26705
+ const WsSubscribeServerLifecycleRpc = make$29(WS_METHODS.subscribeServerLifecycle, {
26685
26706
  payload: Struct({}),
26686
26707
  success: ServerLifecycleStreamEvent,
26687
26708
  stream: true
26688
26709
  });
26689
- const WsSubscribeAuthAccessRpc = make$30(WS_METHODS.subscribeAuthAccess, {
26710
+ const WsSubscribeAuthAccessRpc = make$29(WS_METHODS.subscribeAuthAccess, {
26690
26711
  payload: Struct({}),
26691
26712
  success: AuthAccessStreamEvent,
26692
26713
  stream: true
26693
26714
  });
26694
- const WsSubscribeWorkspaceReadinessRpc = make$30(WS_METHODS.subscribeWorkspaceReadiness, {
26715
+ const WsSubscribeWorkspaceReadinessRpc = make$29(WS_METHODS.subscribeWorkspaceReadiness, {
26695
26716
  payload: WorkspaceReadinessSubscribeInput,
26696
26717
  success: PhaseEvent,
26697
26718
  error: WorkspaceReadinessError,
26698
26719
  stream: true
26699
26720
  });
26700
- const WsRpcGroup = make$29(WsServerGetConfigRpc, WsServerRefreshProvidersRpc, WsServerStartProviderAuthRpc, WsServerRepairProviderAuthRuntimeRpc, WsServerDisconnectProviderAuthRpc, WsServerGetProviderAuthSessionRpc, WsServerCancelProviderAuthRpc, WsServerSubmitProviderAuthCodeRpc, WsServerSyncPersonalCodexToCloudRpc, WsServerSyncPersonalClaudeToCloudRpc, WsServerUpsertKeybindingRpc, WsServerRemoveKeybindingRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerUpdateEnvironmentDisplayNameRpc, WsServerTraceDiagnosticsRpc, WsServerHeartbeatRpc, make$30(WS_METHODS.usageGetSummary, {
26721
+ const WsRpcGroup = make$28(WsServerGetConfigRpc, WsServerRefreshProvidersRpc, WsServerStartProviderAuthRpc, WsServerRepairProviderAuthRuntimeRpc, WsServerDisconnectProviderAuthRpc, WsServerGetProviderAuthSessionRpc, WsServerCancelProviderAuthRpc, WsServerSubmitProviderAuthCodeRpc, WsServerSyncPersonalCodexToCloudRpc, WsServerSyncPersonalClaudeToCloudRpc, WsServerUpsertKeybindingRpc, WsServerRemoveKeybindingRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerUpdateEnvironmentDisplayNameRpc, WsServerTraceDiagnosticsRpc, WsServerHeartbeatRpc, make$29(WS_METHODS.usageGetSummary, {
26701
26722
  payload: UsageSummaryInput,
26702
26723
  success: UsageSummary,
26703
26724
  error: UsageReadError
26704
- }), WsPullRequestsListRpc, WsPullRequestsListStatsRpc, WsPullRequestsDetailRpc, WsPullRequestsActivityRpc, WsPullRequestsThreadCommentsRpc, WsPullRequestsDiffFileContentsRpc, WsPullRequestsRunActionRpc, WsPullRequestsUpdateRpc, WsPullRequestsCommentRpc, WsPullRequestsUpdateCommentRpc, WsPullRequestsSubmitReviewRpc, WsPullRequestsReplyToThreadRpc, WsPullRequestsSetThreadResolutionRpc, WsPullRequestsSetReactionRpc, WsPullRequestsInvalidateRpc, WsPullRequestsReviewerCandidatesRpc, WsPullRequestsRequestReviewersRpc, WsProjectsSearchContentsRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsProjectCheckoutDeletionPreviewRpc, WsProjectCheckoutDeletionExecuteRpc, WsWorkspaceReadFileRpc, WsWorkspaceBeginWriteFileRpc, WsWorkspaceWriteFileChunkRpc, WsWorkspaceCommitWriteFileRpc, WsWorkspaceCancelWriteFileRpc, WsShellOpenInEditorRpc, WsSubscribeGitStatusRpc, WsGitPullRpc, WsGitRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitListBranchesRpc, WsVcsListRefsRpc, WsVcsRefreshStatusRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsGitCreateWorktreeRpc, WsGitRemoveWorktreeRpc, WsGitCreateBranchRpc, WsGitCheckoutRpc, WsGitInitRpc, WsFilesystemBrowseRpc, WsProjectsReadFileRpc, WsReviewGetDiffPreviewRpc, WsCloudListRuntimesRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalSignalRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsBrowserOpenSessionRpc, WsBrowserListSessionsRpc, WsBrowserCloseSessionRpc, WsBrowserGetSessionRpc, WsBrowserCommandRpc, WsBrowserClearBrowsingDataRpc, WsBrowserAttachDisplayRpc, WsBrowserAddDisplayIceCandidateRpc, WsComputerInputRpc, WsDevTunnelRegisterRpc, WsDevTunnelUnregisterRpc, WsDevTunnelListRpc, WsThreadDevRuntimeGetRpc, WsThreadDevRuntimeAllocatePortRpc, WsThreadDevRuntimeReleaseRpc, WsWorkspaceEnvironmentPreflightRpc, WsWorkspaceEnsureScratchRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsProjectsListEntriesRpc, WsServerDiscoverSourceControlRpc, WsServerReportClientActivityRpc, WsSubscribeBrowserEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsSubscribeWorkspaceReadinessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationStreamTurnDiffRpc, WsOrchestrationStreamFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, make$30(WS_METHODS.assetsCreateUrl, {
26725
+ }), WsPullRequestsListRpc, WsPullRequestsListStatsRpc, WsPullRequestsDetailRpc, WsPullRequestsActivityRpc, WsPullRequestsThreadCommentsRpc, WsPullRequestsDiffFileContentsRpc, WsPullRequestsRunActionRpc, WsPullRequestsUpdateRpc, WsPullRequestsCommentRpc, WsPullRequestsUpdateCommentRpc, WsPullRequestsSubmitReviewRpc, WsPullRequestsReplyToThreadRpc, WsPullRequestsSetThreadResolutionRpc, WsPullRequestsSetReactionRpc, WsPullRequestsInvalidateRpc, WsPullRequestsReviewerCandidatesRpc, WsPullRequestsRequestReviewersRpc, WsProjectsSearchContentsRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsProjectCheckoutDeletionPreviewRpc, WsProjectCheckoutDeletionExecuteRpc, WsWorkspaceReadFileRpc, WsWorkspaceBeginWriteFileRpc, WsWorkspaceWriteFileChunkRpc, WsWorkspaceCommitWriteFileRpc, WsWorkspaceCancelWriteFileRpc, WsShellOpenInEditorRpc, WsSubscribeGitStatusRpc, WsGitPullRpc, WsGitRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitListBranchesRpc, WsVcsListRefsRpc, WsVcsRefreshStatusRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsGitCreateWorktreeRpc, WsGitRemoveWorktreeRpc, WsGitCreateBranchRpc, WsGitCheckoutRpc, WsGitInitRpc, WsFilesystemBrowseRpc, WsProjectsReadFileRpc, WsReviewGetDiffPreviewRpc, WsCloudListRuntimesRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalSignalRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsBrowserOpenSessionRpc, WsBrowserListSessionsRpc, WsBrowserCloseSessionRpc, WsBrowserGetSessionRpc, WsBrowserCommandRpc, WsBrowserClearBrowsingDataRpc, WsBrowserAttachDisplayRpc, WsBrowserAddDisplayIceCandidateRpc, WsComputerInputRpc, WsDevTunnelRegisterRpc, WsDevTunnelUnregisterRpc, WsDevTunnelListRpc, WsThreadDevRuntimeGetRpc, WsThreadDevRuntimeAllocatePortRpc, WsThreadDevRuntimeReleaseRpc, WsWorkspaceEnvironmentPreflightRpc, WsWorkspaceEnsureScratchRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsProjectsListEntriesRpc, WsServerDiscoverSourceControlRpc, WsServerReportClientActivityRpc, WsSubscribeBrowserEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsSubscribeWorkspaceReadinessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationStreamTurnDiffRpc, WsOrchestrationStreamFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, make$29(WS_METHODS.assetsCreateUrl, {
26705
26726
  payload: AssetsRpcSchemas.createUrl.input,
26706
26727
  success: AssetsRpcSchemas.createUrl.output,
26707
26728
  error: AssetAccessError
26708
- }), make$30(WS_METHODS.attachmentsCreateUploadUrl, {
26729
+ }), make$29(WS_METHODS.attachmentsCreateUploadUrl, {
26709
26730
  payload: AttachmentCreateUploadUrlInput,
26710
26731
  success: AttachmentCreateUploadUrlResult,
26711
26732
  error: AttachmentUploadSigningKeyError
26712
- }), make$30(WS_METHODS.attachmentsDelete, {
26733
+ }), make$29(WS_METHODS.attachmentsDelete, {
26713
26734
  payload: AttachmentDeleteInput,
26714
26735
  success: Void
26715
- }), make$30(WS_METHODS.providerUploadFeedback, {
26736
+ }), make$29(WS_METHODS.providerUploadFeedback, {
26716
26737
  payload: ProviderUploadFeedbackInput,
26717
26738
  success: ProviderUploadFeedbackResult,
26718
26739
  error: ProviderUploadFeedbackError
@@ -34340,7 +34361,7 @@ function parse$5(input) {
34340
34361
  const FULL_PATH_REGEXP = /^https?:\/\/.*?\//;
34341
34362
  const OPTIONAL_PARAM_REGEXP = /(\/:[^/()]*?)\?(\/?)/;
34342
34363
  /** @internal */
34343
- const make$28 = (options = {}) => new RouterImpl(options);
34364
+ const make$27 = (options = {}) => new RouterImpl(options);
34344
34365
  var RouterImpl = class {
34345
34366
  constructor(options = {}) {
34346
34367
  this.options = {
@@ -34859,7 +34880,7 @@ const httpMethods = [
34859
34880
  * @since 1.0.0
34860
34881
  * @category constructors
34861
34882
  */
34862
- const make$27 = make$28;
34883
+ const make$26 = make$27;
34863
34884
  //#endregion
34864
34885
  //#region ../../node_modules/.bun/effect@4.0.0-beta.51/node_modules/effect/dist/unstable/http/HttpRouter.js
34865
34886
  /**
@@ -34875,8 +34896,8 @@ const HttpRouter = /* @__PURE__ */ Service$1("effect/http/HttpRouter");
34875
34896
  * @since 4.0.0
34876
34897
  * @category HttpRouter
34877
34898
  */
34878
- const make$26 = /* @__PURE__ */ gen(function* () {
34879
- const router = make$27(yield* RouterConfig);
34899
+ const make$25 = /* @__PURE__ */ gen(function* () {
34900
+ const router = make$26(yield* RouterConfig);
34880
34901
  const middleware = /* @__PURE__ */ new Set();
34881
34902
  const addAll = (routes) => contextWith((context) => {
34882
34903
  const middleware = getMiddleware(context);
@@ -35006,7 +35027,7 @@ const add$1 = (method, path, handler, options) => use((router) => router.add(met
35006
35027
  * @since 4.0.0
35007
35028
  * @category HttpRouter
35008
35029
  */
35009
- const layer$5 = /* @__PURE__ */ effect(HttpRouter)(make$26);
35030
+ const layer$5 = /* @__PURE__ */ effect(HttpRouter)(make$25);
35010
35031
  const RouteTypeId = "~effect/http/HttpRouter/Route";
35011
35032
  const makeRoute = (options) => ({
35012
35033
  ...options,
@@ -66020,7 +66041,7 @@ function normalizeNumberish(value) {
66020
66041
  }
66021
66042
  //#endregion
66022
66043
  //#region package.json
66023
- var version$1 = "0.13.94";
66044
+ var version$1 = "0.13.96";
66024
66045
  //#endregion
66025
66046
  //#region src/sentry.ts
66026
66047
  const SERVER_APP_NAME = "forge-server";
@@ -70867,7 +70888,7 @@ const storeAttachmentUpload = fn$1("AttachmentUpload.store")(function* (claims,
70867
70888
  const fileSystem = yield* FileSystem;
70868
70889
  const path = yield* Path$2;
70869
70890
  let receivedBytes = 0;
70870
- const bodyStream = body instanceof Uint8Array ? make$43(body) : body;
70891
+ const bodyStream = body instanceof Uint8Array ? make$42(body) : body;
70871
70892
  return yield* gen(function* () {
70872
70893
  yield* fileSystem.makeDirectory(path.dirname(finalPath), { recursive: true });
70873
70894
  yield* run$2(bodyStream.pipe(takeWhile((chunk) => {
@@ -76816,7 +76837,7 @@ let clientIdCounter = 0;
76816
76837
  * @since 4.0.0
76817
76838
  * @category client
76818
76839
  */
76819
- const make$25 = /* @__PURE__ */ fnUntraced(function* (group, options) {
76840
+ const make$24 = /* @__PURE__ */ fnUntraced(function* (group, options) {
76820
76841
  const clientId = clientIdCounter++;
76821
76842
  const { run, send, supportsAck, supportsTransferables } = yield* Protocol$1;
76822
76843
  const entries = /* @__PURE__ */ new Map();
@@ -76960,7 +76981,7 @@ const makeNoSerialization = /* @__PURE__ */ fnUntraced(function* (group, options
76960
76981
  const services = yield* context();
76961
76982
  const scope = get$3(services, Scope$1);
76962
76983
  const trackFiber = runIn(forkUnsafe(scope, "parallel"));
76963
- const concurrencySemaphore = concurrency === "unbounded" ? void 0 : yield* make$44(concurrency);
76984
+ const concurrencySemaphore = concurrency === "unbounded" ? void 0 : yield* make$43(concurrency);
76964
76985
  const clients = /* @__PURE__ */ new Map();
76965
76986
  let isShutdown = false;
76966
76987
  const shutdownLatch = makeUnsafe$7(false);
@@ -77191,10 +77212,10 @@ const applyMiddleware = (context, handler, options) => {
77191
77212
  * @since 4.0.0
77192
77213
  * @category server
77193
77214
  */
77194
- const make$24 = /* @__PURE__ */ fnUntraced(function* (group, options) {
77215
+ const make$23 = /* @__PURE__ */ fnUntraced(function* (group, options) {
77195
77216
  const { disconnects, end, run, send, supportsAck, supportsSpanPropagation, supportsTransferables } = yield* Protocol;
77196
77217
  const services = yield* context();
77197
- const scope = yield* make$37();
77218
+ const scope = yield* make$36();
77198
77219
  const server = yield* makeNoSerialization(group, {
77199
77220
  ...options,
77200
77221
  disableClientAcks: !supportsAck,
@@ -77363,12 +77384,12 @@ const makeProtocolWithHttpEffectWebsocket = /* @__PURE__ */ gen(function* () {
77363
77384
  */
77364
77385
  const toHttpEffectWebsocket = /* @__PURE__ */ fnUntraced(function* (group, options) {
77365
77386
  const { httpEffect, protocol } = yield* makeProtocolWithHttpEffectWebsocket;
77366
- yield* make$24(group, options).pipe(provideService(Protocol, protocol), forkScoped);
77387
+ yield* make$23(group, options).pipe(provideService(Protocol, protocol), forkScoped);
77367
77388
  return httpEffect;
77368
77389
  });
77369
77390
  const makeSocketProtocol = /* @__PURE__ */ gen(function* () {
77370
77391
  const serialization = yield* RpcSerialization;
77371
- const disconnects = yield* make$45();
77392
+ const disconnects = yield* make$44();
77372
77393
  let clientId = 0;
77373
77394
  const clients = /* @__PURE__ */ new Map();
77374
77395
  const clientIds = /* @__PURE__ */ new Set();
@@ -78986,7 +79007,7 @@ function updateSuccessfulEntry(input) {
78986
79007
  return next;
78987
79008
  }
78988
79009
  const makeSourceControlRateLimit = gen(function* () {
78989
- const entries = yield* make$50(/* @__PURE__ */ new Map());
79010
+ const entries = yield* make$49(/* @__PURE__ */ new Map());
78990
79011
  const check = fn$1("SourceControlRateLimit.check")(function* (input, options) {
78991
79012
  const now = yield* currentTimeMillis;
78992
79013
  const entry = (yield* get$6(entries)).get(normalizedKey(input));
@@ -80021,7 +80042,7 @@ function trimmed$2(value) {
80021
80042
  * the other hosts already use.
80022
80043
  */
80023
80044
  function toIsoUtc(value) {
80024
- return match(make$38(value), {
80045
+ return match(make$37(value), {
80025
80046
  onNone: () => value,
80026
80047
  onSome: formatIso
80027
80048
  });
@@ -84182,7 +84203,7 @@ function resolveGithubWriteIdentity(getSettings) {
84182
84203
  }
84183
84204
  var ServerSettingsService = class ServerSettingsService extends Service$1()("forge/serverSettings/ServerSettingsService") {
84184
84205
  static layerTest = (overrides = {}) => effect(ServerSettingsService, gen(function* () {
84185
- const currentSettingsRef = yield* make$50(deepMerge$1(DEFAULT_SERVER_SETTINGS, overrides));
84206
+ const currentSettingsRef = yield* make$49(deepMerge$1(DEFAULT_SERVER_SETTINGS, overrides));
84186
84207
  return {
84187
84208
  start: void_$1,
84188
84209
  ready: void_$1,
@@ -84240,12 +84261,12 @@ const ServerSettingsLive = effect(ServerSettingsService, gen(function* () {
84240
84261
  const { settingsPath } = yield* ServerConfig;
84241
84262
  const fs = yield* FileSystem;
84242
84263
  const pathService = yield* Path$2;
84243
- const writeSemaphore = yield* make$44(1);
84264
+ const writeSemaphore = yield* make$43(1);
84244
84265
  const cacheKey = "settings";
84245
84266
  const changesPubSub = yield* unbounded$1();
84246
- const startedRef = yield* make$50(false);
84247
- const startedDeferred = yield* make$39();
84248
- const watcherScope = yield* make$37("sequential");
84267
+ const startedRef = yield* make$49(false);
84268
+ const startedDeferred = yield* make$38();
84269
+ const watcherScope = yield* make$36("sequential");
84249
84270
  yield* addFinalizer$2(() => close(watcherScope, void_$3));
84250
84271
  const emitChange = (settings) => publish(changesPubSub, settings).pipe(asVoid);
84251
84272
  const readConfigExists = fs.exists(settingsPath).pipe(mapError((cause) => new ServerSettingsError({
@@ -86323,7 +86344,7 @@ function toReviewThreadListing(threads, dismissalsByReviewId) {
86323
86344
  viewer: threads.metadata.viewer
86324
86345
  };
86325
86346
  }
86326
- const make$22 = gen(function* () {
86347
+ const make$21 = gen(function* () {
86327
86348
  const github = yield* GitHubCli$1;
86328
86349
  /**
86329
86350
  * The pull request's own node id, which is what a mutation against the pull request itself is
@@ -87028,9 +87049,9 @@ const make$22 = gen(function* () {
87028
87049
  })))
87029
87050
  });
87030
87051
  });
87031
- effect(GitHubPullRequestCli, make$22);
87052
+ effect(GitHubPullRequestCli, make$21);
87032
87053
  /** Builds a PR CLI for one authenticated session without touching global git or auth state. */
87033
- const makeFromCommandRunner = (runner) => make$22.pipe(provideService(GitHubCli$1, runner));
87054
+ const makeFromCommandRunner = (runner) => make$21.pipe(provideService(GitHubCli$1, runner));
87034
87055
  //#endregion
87035
87056
  //#region src/pullRequest/GitHubPullRequestProvider.ts
87036
87057
  const CAPABILITIES$3 = {
@@ -87150,7 +87171,7 @@ function loginAvatarUrl(login, host) {
87150
87171
  }
87151
87172
  /** True where markdown would render nothing: whitespace, or only HTML comments. */
87152
87173
  const rendersEmpty = (body) => body.replace(/<!--[\s\S]*?-->/g, "").trim().length === 0;
87153
- const make$21 = gen(function* () {
87174
+ const make$20 = gen(function* () {
87154
87175
  const cli = yield* GitHubPullRequestCli;
87155
87176
  const fail = (operation) => (error) => new PullRequestProviderError({
87156
87177
  provider: "github",
@@ -87359,7 +87380,7 @@ const make$21 = gen(function* () {
87359
87380
  };
87360
87381
  });
87361
87382
  /** Constructs the provider from a session-bound command service supplied by the caller. */
87362
- const makeFromCli = (cli) => make$21.pipe(provideService(GitHubPullRequestCli, cli));
87383
+ const makeFromCli = (cli) => make$20.pipe(provideService(GitHubPullRequestCli, cli));
87363
87384
  //#endregion
87364
87385
  //#region src/git/AgentAttribution.ts
87365
87386
  /**
@@ -92972,7 +92993,7 @@ function toResolvableLinks(links) {
92972
92993
  * A Forge project id is installation-local; it must never be sent to CMMD as a project id.
92973
92994
  */
92974
92995
  var CmmdProjectIdentityResolver = class extends Service$1()("forge/pullRequest/CmmdProjectIdentityResolver") {};
92975
- const make$20 = gen(function* () {
92996
+ const make$19 = gen(function* () {
92976
92997
  const environment = yield* ServerEnvironment;
92977
92998
  const repositoryIdentity = yield* RepositoryIdentityResolver;
92978
92999
  const resolve = (forgeProjectId, cmmdJwt) => gen(function* () {
@@ -93013,7 +93034,7 @@ function resolveCanonicalKey(repositoryIdentity, forgeProjectId) {
93013
93034
  return (yield* repositoryIdentity.resolve(workspaceRoot))?.canonicalKey ?? null;
93014
93035
  }).pipe(orElseSucceed(() => null));
93015
93036
  }
93016
- const cmmdProjectIdentityResolverLive = effect(CmmdProjectIdentityResolver, make$20);
93037
+ const cmmdProjectIdentityResolverLive = effect(CmmdProjectIdentityResolver, make$19);
93017
93038
  //#endregion
93018
93039
  //#region src/pullRequest/PullRequestServiceFactory.ts
93019
93040
  var PullRequestServiceFactory = class extends Service$1()("forge/pullRequest/PullRequestServiceFactory") {};
@@ -93491,12 +93512,12 @@ const KeybindingsLive = effect(Keybindings, gen(function* () {
93491
93512
  const { keybindingsConfigPath } = yield* ServerConfig;
93492
93513
  const fs = yield* FileSystem;
93493
93514
  const path = yield* Path$2;
93494
- const upsertSemaphore = yield* make$44(1);
93515
+ const upsertSemaphore = yield* make$43(1);
93495
93516
  const resolvedConfigCacheKey = "resolved";
93496
93517
  const changesPubSub = yield* unbounded$1();
93497
- const startedRef = yield* make$50(false);
93498
- const startedDeferred = yield* make$39();
93499
- const watcherScope = yield* make$37("sequential");
93518
+ const startedRef = yield* make$49(false);
93519
+ const startedDeferred = yield* make$38();
93520
+ const watcherScope = yield* make$36("sequential");
93500
93521
  yield* addFinalizer$2(() => close(watcherScope, void_$3));
93501
93522
  const emitChange = (configState) => publish(changesPubSub, configState).pipe(asVoid);
93502
93523
  const readConfigExists = fs.exists(keybindingsConfigPath).pipe(mapError((cause) => new KeybindingsConfigError({
@@ -94820,7 +94841,7 @@ var ProviderRegistry = class extends Service$1()("forge/provider/Services/Provid
94820
94841
  var ServerLifecycleEvents = class extends Service$1()("forge/serverLifecycleEvents") {};
94821
94842
  const ServerLifecycleEventsLive = effect(ServerLifecycleEvents, gen(function* () {
94822
94843
  const pubsub = yield* unbounded$1();
94823
- const state = yield* make$50({
94844
+ const state = yield* make$49({
94824
94845
  sequence: 0,
94825
94846
  events: []
94826
94847
  });
@@ -96605,7 +96626,7 @@ function normalizeCount(count) {
96605
96626
  return Number.isFinite(count) ? Math.max(0, Math.floor(count)) : 0;
96606
96627
  }
96607
96628
  const makeRuntimeDrainState = gen(function* () {
96608
- const stateRef = yield* make$50(initialState);
96629
+ const stateRef = yield* make$49(initialState);
96609
96630
  const update = (f) => updateAndGet(stateRef, f).pipe(map$3(snapshotFromState));
96610
96631
  return {
96611
96632
  beginTurn: (input) => update((state) => {
@@ -99226,7 +99247,7 @@ function askTheLedger(request) {
99226
99247
  return logWarning$1("usage session lookup failed; local lanes keep their records").pipe(annotateLogs({ cause: outcome.error }), as$3(UNAVAILABLE.callFailed));
99227
99248
  }));
99228
99249
  }
99229
- const make$16 = (fetchImpl, resolveOwnerCredential) => gen(function* () {
99250
+ const make$15 = (fetchImpl, resolveOwnerCredential) => gen(function* () {
99230
99251
  const config = yield* ServerConfig;
99231
99252
  const sql = yield* SqlClient;
99232
99253
  /** The cloud lane: this runtime's own scoped grant. */
@@ -99265,7 +99286,7 @@ const make$16 = (fetchImpl, resolveOwnerCredential) => gen(function* () {
99265
99286
  * without a signed-in machine behind it. Both default to the real thing.
99266
99287
  */
99267
99288
  function makeUsageSessionLookupLayer(fetchImpl = fetch, resolveOwnerCredential = resolveOwnerCredentialLive) {
99268
- return effect(UsageSessionLookup, make$16(fetchImpl, resolveOwnerCredential));
99289
+ return effect(UsageSessionLookup, make$15(fetchImpl, resolveOwnerCredential));
99269
99290
  }
99270
99291
  const UsageSessionLookupLive = makeUsageSessionLookupLayer();
99271
99292
  //#endregion
@@ -99880,8 +99901,8 @@ function parseJson(raw) {
99880
99901
  }
99881
99902
  }
99882
99903
  function resolveHourlyWindow(input) {
99883
- const sinceTime = input.sinceTime === void 0 ? none$4() : make$38(input.sinceTime);
99884
- const untilTime = input.untilTime === void 0 ? none$4() : make$38(input.untilTime);
99904
+ const sinceTime = input.sinceTime === void 0 ? none$4() : make$37(input.sinceTime);
99905
+ const untilTime = input.untilTime === void 0 ? none$4() : make$37(input.untilTime);
99885
99906
  if (isNone(sinceTime) || isNone(untilTime)) return "Hourly usage requires valid sinceTime and untilTime instants";
99886
99907
  const sinceTimeMs = toEpochMillis(sinceTime.value);
99887
99908
  const untilTimeMs = toEpochMillis(untilTime.value);
@@ -99917,7 +99938,7 @@ function resolveWindow(input) {
99917
99938
  };
99918
99939
  hourly = resolved;
99919
99940
  }
99920
- const windowStart = make$38(`${input.sinceDay}T00:00:00Z`);
99941
+ const windowStart = make$37(`${input.sinceDay}T00:00:00Z`);
99921
99942
  if (isNone(windowStart)) return {
99922
99943
  kind: "invalid",
99923
99944
  detail: `sinceDay '${input.sinceDay}' is not a valid date`
@@ -100075,7 +100096,7 @@ function failedRecordedSources(hostId, detail) {
100075
100096
  message: detail
100076
100097
  }));
100077
100098
  }
100078
- const make$15 = (hooks) => gen(function* () {
100099
+ const make$14 = (hooks) => gen(function* () {
100079
100100
  const fileSystem = yield* FileSystem;
100080
100101
  const path = yield* Path$2;
100081
100102
  const config = yield* ServerConfig;
@@ -100088,9 +100109,9 @@ const make$15 = (hooks) => gen(function* () {
100088
100109
  const lookupCache = /* @__PURE__ */ new Map();
100089
100110
  let lookupCacheDirty = false;
100090
100111
  const selfRuntimeId = resolveRuntimeReplicationRuntimeId(config);
100091
- const scanScope = yield* make$37("sequential");
100112
+ const scanScope = yield* make$36("sequential");
100092
100113
  yield* addFinalizer$2(() => close(scanScope, void_$3));
100093
- const scanSemaphore = yield* make$44(1);
100114
+ const scanSemaphore = yield* make$43(1);
100094
100115
  const inFlight = /* @__PURE__ */ new Map();
100095
100116
  const ratesCachePath = path.join(config.stateDir, RATES_CACHE_FILE);
100096
100117
  const scanCachePath = path.join(config.stateDir, SCAN_CACHE_FILE);
@@ -100494,7 +100515,7 @@ const make$15 = (hooks) => gen(function* () {
100494
100515
  const key = summaryKey(input);
100495
100516
  const joined = inFlight.get(key);
100496
100517
  if (joined !== void 0) return yield* _await(joined);
100497
- const deferred = yield* make$39();
100518
+ const deferred = yield* make$38();
100498
100519
  inFlight.set(key, deferred);
100499
100520
  yield* scanSemaphore.withPermits(1)(computeSummary(input, window)).pipe(exit, flatMap((exit) => done(deferred, exit)), ensuring(sync$1(() => {
100500
100521
  inFlight.delete(key);
@@ -100504,7 +100525,7 @@ const make$15 = (hooks) => gen(function* () {
100504
100525
  });
100505
100526
  /** The service with a seam into the scan; tests pass their own hooks. */
100506
100527
  function makeUsageServiceLayer(hooks = NOOP_SCAN_HOOKS) {
100507
- return effect(UsageService, make$15(hooks));
100528
+ return effect(UsageService, make$14(hooks));
100508
100529
  }
100509
100530
  const UsageServiceLive = makeUsageServiceLayer();
100510
100531
  const DAY_MS = 1440 * 60 * 1e3;
@@ -100550,7 +100571,7 @@ const runUsageScanWarmup = (options) => gen(function* () {
100550
100571
  const now = options.now ?? currentTimeMillis;
100551
100572
  const startDelayMs = options.startDelayMs ?? 2e4;
100552
100573
  const intervalMs = options.intervalMs ?? 36e5;
100553
- const scanning = yield* make$50(false);
100574
+ const scanning = yield* make$49(false);
100554
100575
  yield* sleep(startDelayMs);
100555
100576
  return yield* forever$1(gen(function* () {
100556
100577
  if (yield* get$6(scanning)) yield* logInfo("usage scan warm-up skipped; the previous scan is still running");
@@ -100567,9 +100588,9 @@ var ServerRuntimeStartupError = class extends TaggedError("ServerRuntimeStartupE
100567
100588
  var ServerRuntimeStartup = class extends Service$1()("forge/serverRuntimeStartup") {};
100568
100589
  const settleQueuedCommand = (deferred, exit) => isSuccess(exit) ? succeed$3(deferred, exit.value) : failCause$3(deferred, exit.cause);
100569
100590
  const makeCommandGate = gen(function* () {
100570
- const commandReady = yield* make$39();
100591
+ const commandReady = yield* make$38();
100571
100592
  const commandQueue = yield* unbounded$2();
100572
- const commandReadinessState = yield* make$50("pending");
100593
+ const commandReadinessState = yield* make$49("pending");
100573
100594
  yield* forkScoped(forever$1(take$1(commandQueue).pipe(flatMap((command) => command.run))));
100574
100595
  return {
100575
100596
  awaitCommandReady: _await(commandReady),
@@ -100585,7 +100606,7 @@ const makeCommandGate = gen(function* () {
100585
100606
  const readinessState = yield* get$6(commandReadinessState);
100586
100607
  if (readinessState === "ready") return yield* effect;
100587
100608
  if (readinessState !== "pending") return yield* readinessState;
100588
- const result = yield* make$39();
100609
+ const result = yield* make$38();
100589
100610
  yield* offer$1(commandQueue, { run: _await(commandReady).pipe(flatMap(() => effect), exit, flatMap((exit) => settleQueuedCommand(result, exit))) });
100590
100611
  return yield* _await(result);
100591
100612
  })
@@ -100797,8 +100818,8 @@ const ServerRuntimeStartupLive = effect(ServerRuntimeStartup, gen(function* () {
100797
100818
  const usage = yield* UsageService;
100798
100819
  const drainState = yield* RuntimeDrainState;
100799
100820
  const commandGate = yield* makeCommandGate;
100800
- const httpListening = yield* make$39();
100801
- const reactorScope = yield* make$37("sequential");
100821
+ const httpListening = yield* make$38();
100822
+ const reactorScope = yield* make$36("sequential");
100802
100823
  yield* addFinalizer$2(() => close(reactorScope, void_$3));
100803
100824
  const startup = gen(function* () {
100804
100825
  yield* logDebug("startup phase: starting keybindings runtime");
@@ -101569,8 +101590,8 @@ function previewUrlForPort(port) {
101569
101590
  return `http://127.0.0.1:${port}/`;
101570
101591
  }
101571
101592
  const ThreadDevRuntimeLive = effect(ThreadDevRuntime, gen(function* () {
101572
- const byThreadId = yield* make$50(/* @__PURE__ */ new Map());
101573
- const usedPorts = yield* make$50(/* @__PURE__ */ new Set());
101593
+ const byThreadId = yield* make$49(/* @__PURE__ */ new Map());
101594
+ const usedPorts = yield* make$49(/* @__PURE__ */ new Set());
101574
101595
  const allocateNextPort = gen(function* () {
101575
101596
  const used = yield* get$6(usedPorts);
101576
101597
  for (let port = DEFAULT_PORT_MIN; port <= DEFAULT_PORT_MAX; port += 1) if (!used.has(port)) return port;
@@ -107057,7 +107078,7 @@ function makeSnapshotThenLiveStream(input) {
107057
107078
  const liveEvents = yield* input.subscribeLiveEvents;
107058
107079
  const snapshot = yield* input.loadSnapshot;
107059
107080
  const eventsAfterSnapshot = liveEvents.pipe(filter$2((event) => event.sequence > snapshot.snapshotSequence));
107060
- return concat$2(make$43({
107081
+ return concat$2(make$42({
107061
107082
  kind: "snapshot",
107062
107083
  snapshot
107063
107084
  }), eventsAfterSnapshot);
@@ -107719,7 +107740,7 @@ const makeWsRpcLayer = (currentSessionId, currentUserId) => WsRpcGroup.toLayer(g
107719
107740
  discard: true
107720
107741
  }).pipe(ignoreCause({ log: true }), forkScoped);
107721
107742
  const liveUpdates = merge$4(keybindingsUpdates, merge$4(providerStatuses, merge$4(settingsUpdates, environmentUpdates)));
107722
- return concat$2(make$43({
107743
+ return concat$2(make$42({
107723
107744
  version: 1,
107724
107745
  type: "snapshot",
107725
107746
  config: yield* loadServerConfig
@@ -107733,9 +107754,9 @@ const makeWsRpcLayer = (currentSessionId, currentUserId) => WsRpcGroup.toLayer(g
107733
107754
  }), { "rpc.aggregate": "server" }),
107734
107755
  [WS_METHODS.subscribeAuthAccess]: (_input) => observeRpcStreamEffect(WS_METHODS.subscribeAuthAccess, gen(function* () {
107735
107756
  const initialSnapshot = yield* loadAuthAccessSnapshot();
107736
- const revisionRef = yield* make$50(1);
107757
+ const revisionRef = yield* make$49(1);
107737
107758
  const liveEvents = merge$4(bootstrapCredentials.streamChanges, sessions.streamChanges).pipe(mapEffect$1((change) => updateAndGet(revisionRef, (revision) => revision + 1).pipe(map$3((revision) => toAuthAccessStreamEvent(change, revision, currentSessionId)))));
107738
- return concat$2(make$43({
107759
+ return concat$2(make$42({
107739
107760
  version: 1,
107740
107761
  revision: 1,
107741
107762
  type: "snapshot",
@@ -114978,7 +114999,7 @@ const PgClient = /* @__PURE__ */ Service$1("@effect/sql-pg/PgClient");
114978
114999
  * @category constructors
114979
115000
  * @since 1.0.0
114980
115001
  */
114981
- const make$14 = (options) => fromPool({
115002
+ const make$13 = (options) => fromPool({
114982
115003
  ...options,
114983
115004
  acquire: gen(function* () {
114984
115005
  const pool = new Pool({
@@ -115087,7 +115108,7 @@ const fromPool = /* @__PURE__ */ fnUntraced(function* (options) {
115087
115108
  });
115088
115109
  const reserve = map$3(reserveRaw, makeConection);
115089
115110
  const onListenClientError = (_) => {};
115090
- const listenAcquirer = yield* make$46({ acquire: acquireRelease(tryPromise({
115111
+ const listenAcquirer = yield* make$45({ acquire: acquireRelease(tryPromise({
115091
115112
  try: async () => {
115092
115113
  const client = new Client(pool.options);
115093
115114
  await client.connect();
@@ -115100,12 +115121,12 @@ const fromPool = /* @__PURE__ */ fnUntraced(function* (options) {
115100
115121
  return client.end();
115101
115122
  }).pipe(timeoutOption(1e3))) });
115102
115123
  let config = {
115103
- url: pool.options.connectionString ? make$40(pool.options.connectionString) : void 0,
115124
+ url: pool.options.connectionString ? make$39(pool.options.connectionString) : void 0,
115104
115125
  host: pool.options.host,
115105
115126
  port: pool.options.port,
115106
115127
  database: pool.options.database,
115107
115128
  username: pool.options.user,
115108
- password: typeof pool.options.password === "string" ? make$40(pool.options.password) : void 0,
115129
+ password: typeof pool.options.password === "string" ? make$39(pool.options.password) : void 0,
115109
115130
  ssl: pool.options.ssl,
115110
115131
  applicationName: pool.options.application_name,
115111
115132
  types: pool.options.types
@@ -115117,7 +115138,7 @@ const fromPool = /* @__PURE__ */ fnUntraced(function* (options) {
115117
115138
  host: config.host ?? parsed.host ?? void 0,
115118
115139
  port: config.port ?? (parsed.port ? getOrUndefined(parse$6(parsed.port)) : void 0),
115119
115140
  username: config.username ?? parsed.user ?? void 0,
115120
- password: config.password ?? (parsed.password ? make$40(parsed.password) : void 0),
115141
+ password: config.password ?? (parsed.password ? make$39(parsed.password) : void 0),
115121
115142
  database: config.database ?? parsed.database ?? void 0
115122
115143
  };
115123
115144
  } catch {}
@@ -115251,12 +115272,12 @@ const makeCancel = (pool, client) => {
115251
115272
  * @category layers
115252
115273
  * @since 1.0.0
115253
115274
  */
115254
- const layerFrom = (acquire) => effectContext(map$3(acquire, (client) => make$35(PgClient, client).pipe(add$2(SqlClient, client)))).pipe(provide$1(layer$9));
115275
+ const layerFrom = (acquire) => effectContext(map$3(acquire, (client) => make$34(PgClient, client).pipe(add$2(SqlClient, client)))).pipe(provide$1(layer$9));
115255
115276
  /**
115256
115277
  * @category layers
115257
115278
  * @since 1.0.0
115258
115279
  */
115259
- const layer$3 = (config) => layerFrom(make$14(config));
115280
+ const layer$3 = (config) => layerFrom(make$13(config));
115260
115281
  /**
115261
115282
  * @category constructor
115262
115283
  * @since 1.0.0
@@ -115783,7 +115804,7 @@ const CloudStateSyncLive = effectDiscard(gen(function* () {
115783
115804
  //#region src/persistence/Layers/Postgres.ts
115784
115805
  function makePostgresPersistenceLive(config, databaseUrl) {
115785
115806
  const client = layer$3({
115786
- url: make$40(databaseUrl),
115807
+ url: make$39(databaseUrl),
115787
115808
  applicationName: "forge-cloud-shell",
115788
115809
  connectTimeout: "10 seconds",
115789
115810
  idleTimeout: "30 seconds",
@@ -115809,7 +115830,7 @@ var MigrationError = class extends TaggedError("MigrationError") {};
115809
115830
  * @category constructor
115810
115831
  * @since 4.0.0
115811
115832
  */
115812
- const make$13 = ({ dumpSchema = () => void_$1 }) => ({ loader, schemaDirectory, table = "effect_sql_migrations" }) => gen(function* () {
115833
+ const make$12 = ({ dumpSchema = () => void_$1 }) => ({ loader, schemaDirectory, table = "effect_sql_migrations" }) => gen(function* () {
115813
115834
  const sql = yield* SqlClient;
115814
115835
  const ensureMigrationsTable = sql.onDialectOrElse({
115815
115836
  mssql: () => sql`IF OBJECT_ID(N'${sql.literal(table)}', N'U') IS NULL
@@ -115898,7 +115919,7 @@ const make$13 = ({ dumpSchema = () => void_$1 }) => ({ loader, schemaDirectory,
115898
115919
  if (schemaDirectory && completed.length > 0) yield* dumpSchema(`${schemaDirectory}/_schema.sql`, table).pipe(catchCause((cause) => logInfo("Could not dump schema", cause)));
115899
115920
  return completed;
115900
115921
  });
115901
- const migrationOrder = /* @__PURE__ */ make$41(([a], [b]) => Number$2(a, b));
115922
+ const migrationOrder = /* @__PURE__ */ make$40(([a], [b]) => Number$2(a, b));
115902
115923
  /**
115903
115924
  * @since 4.0.0
115904
115925
  * @category loaders
@@ -118888,7 +118909,7 @@ const makeMigrationLoader = (throughId) => fromRecord(Object.fromEntries(migrati
118888
118909
  * Migrator run function - no schema dumping needed
118889
118910
  * Uses the base Migrator.make without platform dependencies
118890
118911
  */
118891
- const run = make$13({});
118912
+ const run = make$12({});
118892
118913
  /**
118893
118914
  * Run all pending migrations.
118894
118915
  *
@@ -150122,7 +150143,7 @@ const AnalyticsServiceLayerLive = effect(AnalyticsService, gen(function* () {
150122
150143
  const httpClient = yield* HttpClient;
150123
150144
  const serverConfig = yield* ServerConfig;
150124
150145
  const identifier = yield* getTelemetryIdentifier;
150125
- const bufferRef = yield* make$50([]);
150146
+ const bufferRef = yield* make$49([]);
150126
150147
  const clientType = serverConfig.mode === "desktop" ? "desktop-app" : "cli-web-client";
150127
150148
  const enqueueBufferedEvent = (event, properties) => flatMap(now, (now) => modify$3(bufferRef, (current) => {
150128
150149
  const appended = [...current, {
@@ -150283,7 +150304,7 @@ function formatLoggerMessage(message) {
150283
150304
  return typeof message === "string" ? message : String(message);
150284
150305
  }
150285
150306
  function makeLineLogger(streamLabel) {
150286
- return make$33(({ date, message }) => `[${date.toISOString()}] ${streamLabel}: ${formatLoggerMessage(message)}\n`);
150307
+ return make$32(({ date, message }) => `[${date.toISOString()}] ${streamLabel}: ${formatLoggerMessage(message)}\n`);
150287
150308
  }
150288
150309
  function resolveStreamLabel(stream) {
150289
150310
  switch (stream) {
@@ -150344,7 +150365,7 @@ const makeThreadWriter = fn$1("makeThreadWriter")(function* (input) {
150344
150365
  return;
150345
150366
  }
150346
150367
  const sink = sinkResult.sink;
150347
- const scope = yield* make$37();
150368
+ const scope = yield* make$36();
150348
150369
  const loggerLayer = layer$6([yield* batched(makeLineLogger(input.streamLabel), {
150349
150370
  window: input.batchWindowMs,
150350
150371
  flush: fn$1("makeThreadWriter.flush")(function* (messages) {
@@ -150399,7 +150420,7 @@ const makeEventNdjsonLogger = fn$1("makeEventNdjsonLogger")(function* (filePath,
150399
150420
  });
150400
150421
  return;
150401
150422
  }
150402
- const stateRef = yield* make$32({
150423
+ const stateRef = yield* make$31({
150403
150424
  threadWriters: /* @__PURE__ */ new Map(),
150404
150425
  failedSegments: /* @__PURE__ */ new Set()
150405
150426
  });
@@ -212178,6 +212199,17 @@ function isCommandMissingCause(error) {
212178
212199
  const lower = error.message.toLowerCase();
212179
212200
  return lower.includes("enoent") || lower.includes("notfound");
212180
212201
  }
212202
+ /**
212203
+ * The one thing a spawn failure answers for sure when it is command-missing
212204
+ * shaped: the binary is not there. Any other spawn failure (a permissions
212205
+ * error, a crashed shell, a Sprite freeze mid-spawn) never actually asked the
212206
+ * CLI anything, so it is not evidence the binary is missing (forge#3588).
212207
+ * Shared by every provider Layer's version-probe failure branch so the
212208
+ * classification reads the same way everywhere it is made.
212209
+ */
212210
+ function availabilityCheckForSpawnFailure(commandMissing) {
212211
+ return commandMissing ? "confirmed" : "could-not-check";
212212
+ }
212181
212213
  const spawnAndCollect = (binaryPath, command) => gen(function* () {
212182
212214
  const child = yield* (yield* ChildProcessSpawner).spawn(command);
212183
212215
  const [stdout, stderr, exitCode] = yield* all([
@@ -212243,7 +212275,7 @@ const MODEL_LIST_PROBE_TIMEOUT_MS = 5e3;
212243
212275
  const probeCliModels = (input) => gen(function* () {
212244
212276
  const useShell = process.platform === "win32";
212245
212277
  if (useShell && !isShellSafeCommandPath(input.binaryPath)) return;
212246
- const command = make$48(input.binaryPath, [...input.args], {
212278
+ const command = make$47(input.binaryPath, [...input.args], {
212247
212279
  shell: useShell,
212248
212280
  env: scrubForgeProviderChildEnvSecrets(process.env)
212249
212281
  });
@@ -212284,6 +212316,7 @@ function buildServerProvider(input) {
212284
212316
  auth: input.probe.auth,
212285
212317
  checkedAt: input.checkedAt,
212286
212318
  ...input.probe.message ? { message: input.probe.message } : {},
212319
+ ...input.probe.availabilityCheck ? { availabilityCheck: input.probe.availabilityCheck } : {},
212287
212320
  models: input.models,
212288
212321
  slashCommands: [...input.slashCommands ?? []],
212289
212322
  skills: [...withForgeBuiltInSkills(input.skills)]
@@ -214341,11 +214374,11 @@ async function runClaudeCommand$1(execFileImpl, binaryPath, args, env) {
214341
214374
  //#endregion
214342
214375
  //#region src/provider/makeManagedServerProvider.ts
214343
214376
  const makeManagedServerProvider = fn$1("makeManagedServerProvider")(function* (input) {
214344
- const refreshSemaphore = yield* make$44(1);
214377
+ const refreshSemaphore = yield* make$43(1);
214345
214378
  const changesPubSub = yield* acquireRelease(unbounded$1(), shutdown$2);
214346
214379
  const initialSettings = yield* input.getSettings;
214347
- const snapshotRef = yield* make$50(input.initialSnapshot(initialSettings));
214348
- const settingsRef = yield* make$50(initialSettings);
214380
+ const snapshotRef = yield* make$49(input.initialSnapshot(initialSettings));
214381
+ const settingsRef = yield* make$49(initialSettings);
214349
214382
  const applySnapshotBase = fn$1("applySnapshot")(function* (nextSettings, options) {
214350
214383
  const forceRefresh = options?.forceRefresh === true;
214351
214384
  const previousSettings = yield* get$6(settingsRef);
@@ -214364,18 +214397,28 @@ const makeManagedServerProvider = fn$1("makeManagedServerProvider")(function* (i
214364
214397
  return yield* applySnapshot(yield* input.getSettings, { forceRefresh: true });
214365
214398
  });
214366
214399
  yield* runForEach(input.streamSettings, (nextSettings) => asVoid(applySnapshot(nextSettings))).pipe(forkScoped);
214367
- const refreshFailureCount = yield* make$50(0);
214400
+ const refreshFailureCount = yield* make$49(0);
214401
+ const QUICK_RETRY_MS = 5e3;
214402
+ const MAX_QUICK_RETRIES = 3;
214403
+ const quickRetriesSoFar = yield* make$49(0);
214368
214404
  yield* forever$1(gen(function* () {
214369
214405
  const failureCount = yield* get$6(refreshFailureCount);
214406
+ const quickRetriesDone = yield* get$6(quickRetriesSoFar);
214370
214407
  const baseMs = 6e4;
214371
- yield* sleep$4(millis(Math.min(baseMs * Math.pow(2, failureCount), 3e5)));
214372
- if (isFailure(yield* refreshSnapshot().pipe(tapError((e) => sync$1(() => captureServerError(e))), exit))) {
214408
+ const backoffMs = Math.min(baseMs * Math.pow(2, failureCount), 3e5);
214409
+ yield* sleep$4(millis(quickRetriesDone > 0 ? QUICK_RETRY_MS : backoffMs));
214410
+ const result = yield* refreshSnapshot().pipe(tapError((e) => sync$1(() => captureServerError(e))), exit);
214411
+ if (isFailure(result)) {
214373
214412
  yield* update$4(refreshFailureCount, (n) => Math.min(n + 1, 4));
214413
+ yield* set$3(quickRetriesSoFar, 0);
214374
214414
  yield* logInfo("Provider refresh failed, backing off", {
214375
214415
  failureCount: failureCount + 1,
214376
214416
  nextDelayMs: Math.min(baseMs * Math.pow(2, failureCount + 1), 3e5)
214377
214417
  });
214378
- } else yield* set$3(refreshFailureCount, 0);
214418
+ } else {
214419
+ yield* set$3(refreshFailureCount, 0);
214420
+ yield* set$3(quickRetriesSoFar, result.value.availabilityCheck === "could-not-check" && quickRetriesDone < MAX_QUICK_RETRIES ? quickRetriesDone + 1 : 0);
214421
+ }
214379
214422
  })).pipe(forkScoped);
214380
214423
  return {
214381
214424
  getSnapshot: input.getSettings.pipe(flatMap(applySnapshot), tapError(logError), orDie),
@@ -214652,7 +214695,7 @@ function makeClaudeCredentialAnswersResolver(options) {
214652
214695
  */
214653
214696
  function runSupervisedRepeat(input) {
214654
214697
  return gen(function* () {
214655
- const shutdownSignal = yield* make$39();
214698
+ const shutdownSignal = yield* make$38();
214656
214699
  yield* addFinalizer$2(() => succeed$3(shutdownSignal, void 0));
214657
214700
  let firstAttempt = true;
214658
214701
  while (true) {
@@ -215028,7 +215071,8 @@ function buildClaudeProviderFromAuthProbe(input) {
215028
215071
  version: input.parsedVersion,
215029
215072
  status: "warning",
215030
215073
  auth: { status: "unknown" },
215031
- message: error instanceof Error ? `Could not verify Claude authentication status: ${error.message}.` : "Could not verify Claude authentication status."
215074
+ message: error instanceof Error ? `Could not verify Claude authentication status: ${error.message}.` : "Could not verify Claude authentication status.",
215075
+ availabilityCheck: "could-not-check"
215032
215076
  }
215033
215077
  });
215034
215078
  }
@@ -215049,7 +215093,8 @@ function buildClaudeProviderFromAuthProbe(input) {
215049
215093
  status: "warning",
215050
215094
  auth: { status: "unknown" },
215051
215095
  message: "Could not verify Claude authentication status. Timed out while running command."
215052
- }
215096
+ },
215097
+ availabilityCheck: "could-not-check"
215053
215098
  }
215054
215099
  });
215055
215100
  const parsed = parseClaudeAuthStatusFromOutput(input.authProbe.success.value, { proxiedCredential: input.provenance.credentialScope === "proxied" });
@@ -215068,7 +215113,8 @@ function buildClaudeProviderFromAuthProbe(input) {
215068
215113
  ...input.authMetadata ? input.authMetadata : {},
215069
215114
  provenance: input.provenance
215070
215115
  },
215071
- ...parsed.message ? { message: parsed.message } : {}
215116
+ ...parsed.message ? { message: parsed.message } : {},
215117
+ availabilityCheck: "confirmed"
215072
215118
  }
215073
215119
  });
215074
215120
  }
@@ -215114,7 +215160,7 @@ const runClaudeCommand = fn$1("runClaudeCommand")(function* (args) {
215114
215160
  }));
215115
215161
  const claudeSettings = yield* service(ServerSettingsService).pipe(flatMap((service) => service.getSettings), map$3((settings) => settings.providers.claudeAgent));
215116
215162
  const effectiveConfigPath = claudeSettings.configPath || config.forgeClaudeConfigPath || process.env.CLAUDE_CONFIG_DIR || void 0;
215117
- const command = make$48(claudeSettings.binaryPath, [...args], {
215163
+ const command = make$47(claudeSettings.binaryPath, [...args], {
215118
215164
  shell: process.platform === "win32",
215119
215165
  env: scrubForgeProviderChildEnvSecrets({
215120
215166
  ...process.env,
@@ -215134,7 +215180,8 @@ function claudeVersionProbeTimeoutProvider(input) {
215134
215180
  version: null,
215135
215181
  status: "error",
215136
215182
  auth: { status: "unknown" },
215137
- message: "Claude Agent CLI is installed but failed to run. Timed out while running command."
215183
+ message: "Claude Agent CLI is installed but failed to run. Timed out while running command.",
215184
+ availabilityCheck: "could-not-check"
215138
215185
  }
215139
215186
  });
215140
215187
  }
@@ -215166,7 +215213,8 @@ const nativeClaudeProviderStatus = fn$1("nativeClaudeProviderStatus")(function*
215166
215213
  status: usable ? "authenticated" : "unauthenticated",
215167
215214
  provenance: input.provenance
215168
215215
  },
215169
- ...usable ? {} : { message: claudeNativeCredentialUnusableMessage() }
215216
+ ...usable ? {} : { message: claudeNativeCredentialUnusableMessage() },
215217
+ availabilityCheck: "confirmed"
215170
215218
  }
215171
215219
  });
215172
215220
  });
@@ -215212,23 +215260,26 @@ const checkClaudeProviderStatus = fn$1("checkClaudeProviderStatus")(function* (r
215212
215260
  version: null,
215213
215261
  status: "warning",
215214
215262
  auth: { status: "unknown" },
215215
- message: "Claude is disabled in Forge settings."
215263
+ message: "Claude is disabled in Forge settings.",
215264
+ availabilityCheck: "confirmed"
215216
215265
  }
215217
215266
  });
215218
215267
  const versionProbe = yield* runClaudeCommand(["--version"]).pipe(timeoutOption(CLAUDE_VERSION_PROBE_TIMEOUT_MS), result);
215219
215268
  if (isFailure$1(versionProbe)) {
215220
215269
  const error = versionProbe.failure;
215270
+ const commandMissing = isCommandMissingCause(error);
215221
215271
  return buildServerProvider({
215222
215272
  provider: PROVIDER$12,
215223
215273
  enabled: claudeSettings.enabled,
215224
215274
  checkedAt,
215225
215275
  models: fallbackModels,
215226
215276
  probe: {
215227
- installed: !isCommandMissingCause(error),
215277
+ installed: !commandMissing,
215228
215278
  version: null,
215229
215279
  status: "error",
215230
215280
  auth: { status: "unknown" },
215231
- message: isCommandMissingCause(error) ? "Claude Agent CLI (`claude`) is not installed or not on PATH." : `Failed to execute Claude Agent CLI health check: ${error instanceof Error ? error.message : String(error)}.`
215281
+ message: commandMissing ? "Claude Agent CLI (`claude`) is not installed or not on PATH." : `Failed to execute Claude Agent CLI health check: ${error instanceof Error ? error.message : String(error)}.`,
215282
+ availabilityCheck: availabilityCheckForSpawnFailure(commandMissing)
215232
215283
  }
215233
215284
  });
215234
215285
  }
@@ -215251,7 +215302,8 @@ const checkClaudeProviderStatus = fn$1("checkClaudeProviderStatus")(function* (r
215251
215302
  version: parsedVersion,
215252
215303
  status: "error",
215253
215304
  auth: { status: "unknown" },
215254
- message: detail ? `Claude Agent CLI is installed but failed to run. ${detail}` : "Claude Agent CLI is installed but failed to run."
215305
+ message: detail ? `Claude Agent CLI is installed but failed to run. ${detail}` : "Claude Agent CLI is installed but failed to run.",
215306
+ availabilityCheck: "confirmed"
215255
215307
  }
215256
215308
  });
215257
215309
  }
@@ -218287,7 +218339,7 @@ const makeClaudeAdapter = fn$1("makeClaudeAdapter")(function* (options) {
218287
218339
  const handleAskUserQuestion = fn$1("handleAskUserQuestion")(function* (context, toolInput, callbackOptions, pendingUserInputs, runFork) {
218288
218340
  const requestId = ApprovalRequestId.make(yield* nextUUIDv4);
218289
218341
  const questions = userInputQuestionsFromToolInput(toolInput);
218290
- const answersDeferred = yield* make$39();
218342
+ const answersDeferred = yield* make$38();
218291
218343
  let aborted = false;
218292
218344
  const requestedStamp = yield* makeEventStamp();
218293
218345
  yield* offerRuntimeEvent({
@@ -218375,7 +218427,7 @@ const makeClaudeAdapter = fn$1("makeClaudeAdapter")(function* (options) {
218375
218427
  const requestId = ApprovalRequestId.make(yield* nextUUIDv4);
218376
218428
  const requestType = classifyRequestType(toolName);
218377
218429
  const detail = summarizeToolRequest(toolName, toolInput);
218378
- const decisionDeferred = yield* make$39();
218430
+ const decisionDeferred = yield* make$38();
218379
218431
  const pendingApproval = {
218380
218432
  requestType,
218381
218433
  detail,
@@ -218645,7 +218697,7 @@ const makeClaudeAdapter = fn$1("makeClaudeAdapter")(function* (options) {
218645
218697
  const pendingApprovals = /* @__PURE__ */ new Map();
218646
218698
  const pendingUserInputs = /* @__PURE__ */ new Map();
218647
218699
  const inFlightTools = /* @__PURE__ */ new Map();
218648
- const contextRef = yield* make$50(void 0);
218700
+ const contextRef = yield* make$49(void 0);
218649
218701
  const canUseTool = makeCanUseTool(contextRef, input.runtimeMode, pendingApprovals, pendingUserInputs, runFork, runPromise);
218650
218702
  const serverSettings = yield* serverSettingsService.getSettings.pipe(mapError((error) => new ProviderAdapterProcessError({
218651
218703
  provider: PROVIDER$11,
@@ -222949,9 +223001,9 @@ const makeAcpPatchedProtocol = fn$1("makeAcpPatchedProtocol")(function* (options
222949
223001
  const notificationQueue = yield* sliding(1024);
222950
223002
  const disconnects = yield* unbounded$2();
222951
223003
  const outgoing = yield* unbounded$2();
222952
- const nextRequestId = yield* make$50(1n);
222953
- const terminationHandled = yield* make$50(false);
222954
- const extPending = yield* make$50(/* @__PURE__ */ new Map());
223004
+ const nextRequestId = yield* make$49(1n);
223005
+ const terminationHandled = yield* make$49(false);
223006
+ const extPending = yield* make$49(/* @__PURE__ */ new Map());
222955
223007
  const logProtocol = (event) => {
222956
223008
  if (event.direction === "incoming" && !options.logIncoming) return void_$1;
222957
223009
  if (event.direction === "outgoing" && !options.logOutgoing) return void_$1;
@@ -223157,7 +223209,7 @@ const makeAcpPatchedProtocol = fn$1("makeAcpPatchedProtocol")(function* (options
223157
223209
  },
223158
223210
  request: fn$1("sendRequest")(function* (method, payload) {
223159
223211
  const requestId = yield* modify$3(nextRequestId, (current) => [current, current + 1n]);
223160
- const deferred = yield* make$39();
223212
+ const deferred = yield* make$38();
223161
223213
  yield* update$4(extPending, (pending) => new Map(pending).set(String(requestId), deferred));
223162
223214
  yield* offerOutgoing({
223163
223215
  _tag: "Request",
@@ -223185,113 +223237,113 @@ function toRpcClientError(error) {
223185
223237
  }
223186
223238
  //#endregion
223187
223239
  //#region ../../packages/effect-acp/src/rpc.ts
223188
- const InitializeRpc = make$30(AGENT_METHODS.initialize, {
223240
+ const InitializeRpc = make$29(AGENT_METHODS.initialize, {
223189
223241
  payload: InitializeRequest,
223190
223242
  success: InitializeResponse,
223191
223243
  error: Error$1
223192
223244
  });
223193
- const AuthenticateRpc = make$30(AGENT_METHODS.authenticate, {
223245
+ const AuthenticateRpc = make$29(AGENT_METHODS.authenticate, {
223194
223246
  payload: AuthenticateRequest,
223195
223247
  success: AuthenticateResponse,
223196
223248
  error: Error$1
223197
223249
  });
223198
- const LogoutRpc = make$30(AGENT_METHODS.logout, {
223250
+ const LogoutRpc = make$29(AGENT_METHODS.logout, {
223199
223251
  payload: LogoutRequest,
223200
223252
  success: LogoutResponse,
223201
223253
  error: Error$1
223202
223254
  });
223203
- const NewSessionRpc = make$30(AGENT_METHODS.session_new, {
223255
+ const NewSessionRpc = make$29(AGENT_METHODS.session_new, {
223204
223256
  payload: NewSessionRequest,
223205
223257
  success: NewSessionResponse,
223206
223258
  error: Error$1
223207
223259
  });
223208
- const LoadSessionRpc = make$30(AGENT_METHODS.session_load, {
223260
+ const LoadSessionRpc = make$29(AGENT_METHODS.session_load, {
223209
223261
  payload: LoadSessionRequest,
223210
223262
  success: LoadSessionResponse,
223211
223263
  error: Error$1
223212
223264
  });
223213
- const ListSessionsRpc = make$30(AGENT_METHODS.session_list, {
223265
+ const ListSessionsRpc = make$29(AGENT_METHODS.session_list, {
223214
223266
  payload: ListSessionsRequest,
223215
223267
  success: ListSessionsResponse,
223216
223268
  error: Error$1
223217
223269
  });
223218
- const ForkSessionRpc = make$30(AGENT_METHODS.session_fork, {
223270
+ const ForkSessionRpc = make$29(AGENT_METHODS.session_fork, {
223219
223271
  payload: ForkSessionRequest,
223220
223272
  success: ForkSessionResponse,
223221
223273
  error: Error$1
223222
223274
  });
223223
- const ResumeSessionRpc = make$30(AGENT_METHODS.session_resume, {
223275
+ const ResumeSessionRpc = make$29(AGENT_METHODS.session_resume, {
223224
223276
  payload: ResumeSessionRequest,
223225
223277
  success: ResumeSessionResponse,
223226
223278
  error: Error$1
223227
223279
  });
223228
- const CloseSessionRpc = make$30(AGENT_METHODS.session_close, {
223280
+ const CloseSessionRpc = make$29(AGENT_METHODS.session_close, {
223229
223281
  payload: CloseSessionRequest,
223230
223282
  success: CloseSessionResponse,
223231
223283
  error: Error$1
223232
223284
  });
223233
- const PromptRpc = make$30(AGENT_METHODS.session_prompt, {
223285
+ const PromptRpc = make$29(AGENT_METHODS.session_prompt, {
223234
223286
  payload: PromptRequest,
223235
223287
  success: PromptResponse,
223236
223288
  error: Error$1
223237
223289
  });
223238
- const SetSessionModelRpc = make$30(AGENT_METHODS.session_set_model, {
223290
+ const SetSessionModelRpc = make$29(AGENT_METHODS.session_set_model, {
223239
223291
  payload: SetSessionModelRequest,
223240
223292
  success: SetSessionModelResponse,
223241
223293
  error: Error$1
223242
223294
  });
223243
- const SetSessionConfigOptionRpc = make$30(AGENT_METHODS.session_set_config_option, {
223295
+ const SetSessionConfigOptionRpc = make$29(AGENT_METHODS.session_set_config_option, {
223244
223296
  payload: SetSessionConfigOptionRequest,
223245
223297
  success: SetSessionConfigOptionResponse,
223246
223298
  error: Error$1
223247
223299
  });
223248
- const ReadTextFileRpc = make$30(CLIENT_METHODS.fs_read_text_file, {
223300
+ const ReadTextFileRpc = make$29(CLIENT_METHODS.fs_read_text_file, {
223249
223301
  payload: ReadTextFileRequest,
223250
223302
  success: ReadTextFileResponse,
223251
223303
  error: Error$1
223252
223304
  });
223253
- const WriteTextFileRpc = make$30(CLIENT_METHODS.fs_write_text_file, {
223305
+ const WriteTextFileRpc = make$29(CLIENT_METHODS.fs_write_text_file, {
223254
223306
  payload: WriteTextFileRequest,
223255
223307
  success: WriteTextFileResponse,
223256
223308
  error: Error$1
223257
223309
  });
223258
- const RequestPermissionRpc = make$30(CLIENT_METHODS.session_request_permission, {
223310
+ const RequestPermissionRpc = make$29(CLIENT_METHODS.session_request_permission, {
223259
223311
  payload: RequestPermissionRequest,
223260
223312
  success: RequestPermissionResponse,
223261
223313
  error: Error$1
223262
223314
  });
223263
- const ElicitationRpc = make$30(CLIENT_METHODS.session_elicitation, {
223315
+ const ElicitationRpc = make$29(CLIENT_METHODS.session_elicitation, {
223264
223316
  payload: ElicitationRequest,
223265
223317
  success: ElicitationResponse,
223266
223318
  error: Error$1
223267
223319
  });
223268
- const CreateTerminalRpc = make$30(CLIENT_METHODS.terminal_create, {
223320
+ const CreateTerminalRpc = make$29(CLIENT_METHODS.terminal_create, {
223269
223321
  payload: CreateTerminalRequest,
223270
223322
  success: CreateTerminalResponse,
223271
223323
  error: Error$1
223272
223324
  });
223273
- const TerminalOutputRpc = make$30(CLIENT_METHODS.terminal_output, {
223325
+ const TerminalOutputRpc = make$29(CLIENT_METHODS.terminal_output, {
223274
223326
  payload: TerminalOutputRequest,
223275
223327
  success: TerminalOutputResponse,
223276
223328
  error: Error$1
223277
223329
  });
223278
- const ReleaseTerminalRpc = make$30(CLIENT_METHODS.terminal_release, {
223330
+ const ReleaseTerminalRpc = make$29(CLIENT_METHODS.terminal_release, {
223279
223331
  payload: ReleaseTerminalRequest,
223280
223332
  success: ReleaseTerminalResponse,
223281
223333
  error: Error$1
223282
223334
  });
223283
- const WaitForTerminalExitRpc = make$30(CLIENT_METHODS.terminal_wait_for_exit, {
223335
+ const WaitForTerminalExitRpc = make$29(CLIENT_METHODS.terminal_wait_for_exit, {
223284
223336
  payload: WaitForTerminalExitRequest,
223285
223337
  success: WaitForTerminalExitResponse,
223286
223338
  error: Error$1
223287
223339
  });
223288
- const KillTerminalRpc = make$30(CLIENT_METHODS.terminal_kill, {
223340
+ const KillTerminalRpc = make$29(CLIENT_METHODS.terminal_kill, {
223289
223341
  payload: KillTerminalRequest,
223290
223342
  success: KillTerminalResponse,
223291
223343
  error: Error$1
223292
223344
  });
223293
- const AgentRpcs = make$29(InitializeRpc, AuthenticateRpc, LogoutRpc, NewSessionRpc, LoadSessionRpc, ListSessionsRpc, ForkSessionRpc, ResumeSessionRpc, CloseSessionRpc, PromptRpc, SetSessionModelRpc, SetSessionConfigOptionRpc);
223294
- const ClientRpcs = make$29(ReadTextFileRpc, WriteTextFileRpc, RequestPermissionRpc, ElicitationRpc, CreateTerminalRpc, TerminalOutputRpc, ReleaseTerminalRpc, WaitForTerminalExitRpc, KillTerminalRpc);
223345
+ const AgentRpcs = make$28(InitializeRpc, AuthenticateRpc, LogoutRpc, NewSessionRpc, LoadSessionRpc, ListSessionsRpc, ForkSessionRpc, ResumeSessionRpc, CloseSessionRpc, PromptRpc, SetSessionModelRpc, SetSessionConfigOptionRpc);
223346
+ const ClientRpcs = make$28(ReadTextFileRpc, WriteTextFileRpc, RequestPermissionRpc, ElicitationRpc, CreateTerminalRpc, TerminalOutputRpc, ReleaseTerminalRpc, WaitForTerminalExitRpc, KillTerminalRpc);
223295
223347
  //#endregion
223296
223348
  //#region ../../packages/effect-acp/src/_internal/shared.ts
223297
223349
  const isError = is$1(Error$1);
@@ -223320,7 +223372,7 @@ ArraySchema(Unknown);
223320
223372
  //#endregion
223321
223373
  //#region ../../packages/effect-acp/src/_internal/stdio.ts
223322
223374
  const encoder$1 = new TextEncoder();
223323
- const makeChildStdio = (handle) => make$49({
223375
+ const makeChildStdio = (handle) => make$48({
223324
223376
  args: succeed([]),
223325
223377
  stdin: handle.stdout,
223326
223378
  stdout: () => mapInput(handle.stdin, (chunk) => typeof chunk === "string" ? encoder$1.encode(chunk) : chunk),
@@ -223331,7 +223383,7 @@ fn$1("makeInMemoryStdio")(function* () {
223331
223383
  const output = yield* unbounded$2();
223332
223384
  const decoder = new TextDecoder();
223333
223385
  return {
223334
- stdio: make$49({
223386
+ stdio: make$48({
223335
223387
  args: succeed([]),
223336
223388
  stdin: fromQueue(input),
223337
223389
  stdout: () => forEach$1((chunk) => offer$1(output, typeof chunk === "string" ? chunk : decoder.decode(chunk, { stream: true }))),
@@ -223354,7 +223406,7 @@ function runNotificationHandlers(registration, notification) {
223354
223406
  return forEach(registration.handlers, (handler) => handler(notification).pipe(catch_(() => void_$1)), { discard: true });
223355
223407
  }
223356
223408
  var AcpClient = class extends Service$1()("effect-acp/AcpClient") {};
223357
- const make$12 = fn$1("effect-acp/AcpClient.make")(function* (stdio, options = {}, terminationError) {
223409
+ const make$11 = fn$1("effect-acp/AcpClient.make")(function* (stdio, options = {}, terminationError) {
223358
223410
  const coreHandlers = {};
223359
223411
  const notificationHandlers = {
223360
223412
  sessionUpdate: {
@@ -223421,9 +223473,9 @@ const make$12 = fn$1("effect-acp/AcpClient.make")(function* (stdio, options = {}
223421
223473
  [CLIENT_METHODS.terminal_kill]: (payload) => runHandler(coreHandlers.terminalKill, payload, CLIENT_METHODS.terminal_kill).pipe(map$3((result) => result ?? {})),
223422
223474
  [CLIENT_METHODS.terminal_release]: (payload) => runHandler(coreHandlers.terminalRelease, payload, CLIENT_METHODS.terminal_release).pipe(map$3((result) => result ?? {}))
223423
223475
  }));
223424
- yield* make$24(ClientRpcs).pipe(provideService(Protocol, transport.serverProtocol), provide(clientHandlerLayer), forkScoped);
223476
+ yield* make$23(ClientRpcs).pipe(provideService(Protocol, transport.serverProtocol), provide(clientHandlerLayer), forkScoped);
223425
223477
  let nextRpcRequestId = 1n << 32n;
223426
- const rpc = yield* make$25(AgentRpcs, { generateRequestId: () => nextRpcRequestId++ }).pipe(provideService(Protocol$1, transport.clientProtocol));
223478
+ const rpc = yield* make$24(AgentRpcs, { generateRequestId: () => nextRpcRequestId++ }).pipe(provideService(Protocol$1, transport.clientProtocol));
223427
223479
  return AcpClient.of({
223428
223480
  raw: {
223429
223481
  notifications: transport.incoming,
@@ -223508,7 +223560,7 @@ const make$12 = fn$1("effect-acp/AcpClient.make")(function* (stdio, options = {}
223508
223560
  });
223509
223561
  });
223510
223562
  const layerChildProcess = (handle, options = {}) => {
223511
- return effect(AcpClient, make$12(makeChildStdio(handle), options, makeTerminationError(handle)));
223563
+ return effect(AcpClient, make$11(makeChildStdio(handle), options, makeTerminationError(handle)));
223512
223564
  };
223513
223565
  //#endregion
223514
223566
  //#region src/provider/acp/AcpSessionRuntime.ts
@@ -223550,11 +223602,11 @@ const makeAcpSessionRuntime = (options) => gen(function* () {
223550
223602
  const spawner = yield* ChildProcessSpawner;
223551
223603
  const runtimeScope = yield* Scope$1;
223552
223604
  const eventQueue = yield* unbounded$2();
223553
- const modeStateRef = yield* make$50(void 0);
223554
- const toolCallsRef = yield* make$50(/* @__PURE__ */ new Map());
223555
- const assistantSegmentRef = yield* make$50({ nextSegmentIndex: 0 });
223556
- const configOptionsRef = yield* make$50(sessionConfigOptionsFromSetup(void 0));
223557
- const startStateRef = yield* make$50({ _tag: "NotStarted" });
223605
+ const modeStateRef = yield* make$49(void 0);
223606
+ const toolCallsRef = yield* make$49(/* @__PURE__ */ new Map());
223607
+ const assistantSegmentRef = yield* make$49({ nextSegmentIndex: 0 });
223608
+ const configOptionsRef = yield* make$49(sessionConfigOptionsFromSetup(void 0));
223609
+ const startStateRef = yield* make$49({ _tag: "NotStarted" });
223558
223610
  const logRequest = (event) => options.requestLogger ? options.requestLogger(event) : void_$1;
223559
223611
  const runLoggedRequest = (method, payload, effect) => logRequest({
223560
223612
  method,
@@ -223576,7 +223628,7 @@ const makeAcpSessionRuntime = (options) => gen(function* () {
223576
223628
  command: options.spawn.command,
223577
223629
  cause: /* @__PURE__ */ new Error(`Refusing to spawn ACP child process: command path contains shell metacharacters that cmd.exe would interpret as additional commands. Adjust the provider \`binaryPath\` setting to an unquoted absolute path.`)
223578
223630
  });
223579
- const acpContext = yield* build(layerChildProcess(yield* spawner.spawn(make$48(options.spawn.command, [...options.spawn.args], {
223631
+ const acpContext = yield* build(layerChildProcess(yield* spawner.spawn(make$47(options.spawn.command, [...options.spawn.args], {
223580
223632
  ...options.spawn.cwd ? { cwd: options.spawn.cwd } : {},
223581
223633
  env: scrubForgeProviderChildEnvSecrets({
223582
223634
  ...process.env,
@@ -223908,7 +223960,7 @@ const makeStartCoordinator = (startStateRef, startOnce) => gen(function* () {
223908
223960
  const currentState = yield* get$6(startStateRef);
223909
223961
  if (currentState._tag === "Started") return currentState.result;
223910
223962
  if (currentState._tag === "Starting") return yield* _await(currentState.deferred);
223911
- const deferred = yield* make$39();
223963
+ const deferred = yield* make$38();
223912
223964
  return yield* yield* modify$3(startStateRef, (state) => {
223913
223965
  switch (state._tag) {
223914
223966
  case "Started": return [succeed(state.result), state];
@@ -224030,7 +224082,7 @@ const readCursorApiKey = (_settings) => process.env.CURSOR_API_KEY || null;
224030
224082
  const runCursorCommand = fn$1("runCursorCommand")(function* (binaryPath, args) {
224031
224083
  const useShell = process.platform === "win32";
224032
224084
  if (useShell && !isShellSafeCommandPath(binaryPath)) return yield* fail(/* @__PURE__ */ new Error(`Refusing to spawn cursor-agent: \`binaryPath\` contains shell metacharacters that cmd.exe would interpret as additional commands.`));
224033
- return yield* spawnAndCollect(binaryPath, make$48(binaryPath, [...args], {
224085
+ return yield* spawnAndCollect(binaryPath, make$47(binaryPath, [...args], {
224034
224086
  shell: useShell,
224035
224087
  env: scrubForgeProviderChildEnvSecrets(process.env)
224036
224088
  }));
@@ -224616,7 +224668,7 @@ function makeCursorAdapter(cursorSettings, options) {
224616
224668
  const nativeEventLogger = options?.nativeEventLogger ?? (options?.nativeEventLogPath !== void 0 ? yield* makeEventNdjsonLogger(options.nativeEventLogPath, { stream: "native" }) : void 0);
224617
224669
  const managedNativeEventLogger = options?.nativeEventLogger === void 0 ? nativeEventLogger : void 0;
224618
224670
  const sessions = /* @__PURE__ */ new Map();
224619
- const threadLocksRef = yield* make$32(/* @__PURE__ */ new Map());
224671
+ const threadLocksRef = yield* make$31(/* @__PURE__ */ new Map());
224620
224672
  const runtimeEventPubSub = yield* unbounded$1();
224621
224673
  const nowIso = map$3(now, formatIso);
224622
224674
  const nextEventId = map$3(nextUUIDv4, (id) => EventId.make(id));
@@ -224627,7 +224679,7 @@ function makeCursorAdapter(cursorSettings, options) {
224627
224679
  const offerRuntimeEvent = (event) => publish(runtimeEventPubSub, event).pipe(asVoid);
224628
224680
  const getThreadSemaphore = (threadId) => modifyEffect(threadLocksRef, (current) => {
224629
224681
  return match(fromNullishOr(current.get(threadId)), {
224630
- onNone: () => make$44(1).pipe(map$3((semaphore) => {
224682
+ onNone: () => make$43(1).pipe(map$3((semaphore) => {
224631
224683
  const next = new Map(current);
224632
224684
  next.set(threadId, semaphore);
224633
224685
  return [semaphore, next];
@@ -224708,7 +224760,7 @@ function makeCursorAdapter(cursorSettings, options) {
224708
224760
  if (existing && !existing.stopped) yield* stopSessionInternal(existing);
224709
224761
  const pendingApprovals = /* @__PURE__ */ new Map();
224710
224762
  const pendingUserInputs = /* @__PURE__ */ new Map();
224711
- const sessionScope = yield* make$37("sequential");
224763
+ const sessionScope = yield* make$36("sequential");
224712
224764
  let sessionScopeTransferred = false;
224713
224765
  yield* addFinalizer$2(() => sessionScopeTransferred ? void_$1 : close(sessionScope, void_$3));
224714
224766
  let ctx;
@@ -224742,7 +224794,7 @@ function makeCursorAdapter(cursorSettings, options) {
224742
224794
  yield* logNative(input.threadId, "cursor/ask_question", params, "acp.cursor.extension");
224743
224795
  const requestId = ApprovalRequestId.make(crypto.randomUUID());
224744
224796
  const runtimeRequestId = RuntimeRequestId.make(requestId);
224745
- const answers = yield* make$39();
224797
+ const answers = yield* make$38();
224746
224798
  pendingUserInputs.set(requestId, { answers });
224747
224799
  yield* offerRuntimeEvent({
224748
224800
  type: "user-input.requested",
@@ -224804,7 +224856,7 @@ function makeCursorAdapter(cursorSettings, options) {
224804
224856
  const permissionRequest = parsePermissionRequest(params);
224805
224857
  const requestId = ApprovalRequestId.make(crypto.randomUUID());
224806
224858
  const runtimeRequestId = RuntimeRequestId.make(requestId);
224807
- const decision = yield* make$39();
224859
+ const decision = yield* make$38();
224808
224860
  pendingApprovals.set(requestId, {
224809
224861
  decision,
224810
224862
  kind: permissionRequest.kind
@@ -231852,7 +231904,7 @@ const makeOpenCodeRuntime = gen(function* () {
231852
231904
  const netService = yield* NetService;
231853
231905
  const runOpenCodeCommand = (input) => gen(function* () {
231854
231906
  yield* rejectUnsafeWindowsBinaryPath("runOpenCodeCommand", input.binaryPath);
231855
- const child = yield* spawner.spawn(make$48(input.binaryPath, [...input.args], {
231907
+ const child = yield* spawner.spawn(make$47(input.binaryPath, [...input.args], {
231856
231908
  shell: process.platform === "win32",
231857
231909
  env: input.environment ?? process.env
231858
231910
  }));
@@ -231887,7 +231939,7 @@ const makeOpenCodeRuntime = gen(function* () {
231887
231939
  `--hostname=${hostname}`,
231888
231940
  `--port=${port}`
231889
231941
  ];
231890
- const child = yield* spawner.spawn(make$48(input.binaryPath, args, {
231942
+ const child = yield* spawner.spawn(make$47(input.binaryPath, args, {
231891
231943
  detached: process.platform !== "win32",
231892
231944
  shell: process.platform === "win32",
231893
231945
  env: {
@@ -231908,9 +231960,9 @@ const makeOpenCodeRuntime = gen(function* () {
231908
231960
  } catch {}
231909
231961
  });
231910
231962
  yield* addFinalizer$1(runtimeScope, killOpenCodeProcessGroup("SIGTERM").pipe(andThen(sleep$4("1 second")), andThen(killOpenCodeProcessGroup("SIGKILL")), ignore));
231911
- const stdoutRef = yield* make$50("");
231912
- const stderrRef = yield* make$50("");
231913
- const readyDeferred = yield* make$39();
231963
+ const stdoutRef = yield* make$49("");
231964
+ const stderrRef = yield* make$49("");
231965
+ const readyDeferred = yield* make$38();
231914
231966
  const setReadyFromStdoutChunk = (chunk) => updateAndGet(stdoutRef, (stdout) => `${stdout}${chunk}`).pipe(flatMap((nextStdout) => {
231915
231967
  const parsed = parseServerUrlFromOutput(nextStdout);
231916
231968
  return parsed ? succeed$3(readyDeferred, parsed).pipe(ignore) : void_$1;
@@ -232168,7 +232220,7 @@ function classifyGlobalEventEnvelope(envelope) {
232168
232220
  payload
232169
232221
  };
232170
232222
  }
232171
- const isoFromEpochMs = (value) => make$38(value).pipe(match({
232223
+ const isoFromEpochMs = (value) => make$37(value).pipe(match({
232172
232224
  onNone: () => void 0,
232173
232225
  onSome: formatIso
232174
232226
  }));
@@ -232601,7 +232653,7 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
232601
232653
  sessions.delete(input.threadId);
232602
232654
  }
232603
232655
  const started = yield* gen(function* () {
232604
- const sessionScope = yield* make$37();
232656
+ const sessionScope = yield* make$36();
232605
232657
  const startedExit = yield* exit(gen(function* () {
232606
232658
  const server = yield* openCodeRuntime.connectToOpenCodeServer({
232607
232659
  binaryPath,
@@ -232668,7 +232720,7 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
232668
232720
  activeTurnId: void 0,
232669
232721
  activeAgent: void 0,
232670
232722
  activeVariant: void 0,
232671
- stopped: yield* make$50(false),
232723
+ stopped: yield* make$49(false),
232672
232724
  sessionScope: started.sessionScope
232673
232725
  };
232674
232726
  sessions.set(input.threadId, context);
@@ -233168,7 +233220,7 @@ const makeProviderService = fn$1("makeProviderService")(function* (options) {
233168
233220
  const canonicalEventLogger = options?.canonicalEventLogger ?? (options?.canonicalEventLogPath !== void 0 ? yield* makeEventNdjsonLogger(options.canonicalEventLogPath, { stream: "canonical" }) : void 0);
233169
233221
  const registry = yield* ProviderAdapterRegistry;
233170
233222
  const directory = yield* ProviderSessionDirectory;
233171
- const sessionLocks = yield* make$47({ lookup: (_threadId) => make$44(1) });
233223
+ const sessionLocks = yield* make$46({ lookup: (_threadId) => make$43(1) });
233172
233224
  const withSessionLock = (threadId, effect) => get$5(sessionLocks, threadId).pipe(flatMap((lock) => lock.withPermit(effect)), scoped);
233173
233225
  const runtimeEventPubSub = yield* unbounded$1();
233174
233226
  const assertProviderExecutable = options?.assertProviderExecutable ?? (() => succeed(null));
@@ -235133,7 +235185,7 @@ const createTrace2Monitor = fn$1("createTrace2Monitor")(function* (input, progre
235133
235185
  suffix: ".json"
235134
235186
  });
235135
235187
  const hookStartByChildKey = /* @__PURE__ */ new Map();
235136
- const traceTailState = yield* make$50({
235188
+ const traceTailState = yield* make$49({
235137
235189
  processedChars: 0,
235138
235190
  remainder: ""
235139
235191
  });
@@ -235179,7 +235231,7 @@ const createTrace2Monitor = fn$1("createTrace2Monitor")(function* (input, progre
235179
235231
  });
235180
235232
  }
235181
235233
  });
235182
- const readTraceDelta = (yield* make$44(1)).withPermit(fs.readFileString(traceFilePath).pipe(flatMap((contents) => uninterruptible(modify$3(traceTailState, ({ processedChars, remainder }) => {
235234
+ const readTraceDelta = (yield* make$43(1)).withPermit(fs.readFileString(traceFilePath).pipe(flatMap((contents) => uninterruptible(modify$3(traceTailState, ({ processedChars, remainder }) => {
235183
235235
  if (contents.length <= processedChars) return [[], {
235184
235236
  processedChars,
235185
235237
  remainder
@@ -235308,7 +235360,7 @@ const GitCoreLive = effect(GitCore, fn$1("makeGitCore")(function* (options) {
235308
235360
  const truncateOutputAtMaxBytes = input.truncateOutputAtMaxBytes ?? false;
235309
235361
  return yield* fn$1("runGitCommand")(function* () {
235310
235362
  const trace2Monitor = yield* createTrace2Monitor(commandInput, input.progress).pipe(provideService(Path$2, path$10), provideService(FileSystem, fileSystem), mapError(toGitCommandError(commandInput, "failed to create trace2 monitor.")));
235311
- const child = yield* commandSpawner.spawn(make$48("git", commandInput.args, {
235363
+ const child = yield* commandSpawner.spawn(make$47("git", commandInput.args, {
235312
235364
  cwd: commandInput.cwd,
235313
235365
  env: withRepositoryOwnershipTrust({
235314
235366
  ...process.env,
@@ -235320,7 +235372,7 @@ const GitCoreLive = effect(GitCore, fn$1("makeGitCore")(function* (options) {
235320
235372
  collectOutput(commandInput, child.stdout, maxOutputBytes, truncateOutputAtMaxBytes, input.progress?.onStdoutLine),
235321
235373
  collectOutput(commandInput, child.stderr, maxOutputBytes, truncateOutputAtMaxBytes, input.progress?.onStderrLine),
235322
235374
  child.exitCode.pipe(map$3((value) => Number(value)), mapError(toGitCommandError(commandInput, "failed to report exit code."))),
235323
- input.stdin === void 0 ? void_$1 : run$2(encodeText(make$43(input.stdin)), child.stdin).pipe(mapError(toGitCommandError(commandInput, "failed to write stdin.")))
235375
+ input.stdin === void 0 ? void_$1 : run$2(encodeText(make$42(input.stdin)), child.stdin).pipe(mapError(toGitCommandError(commandInput, "failed to write stdin.")))
235324
235376
  ], { concurrency: "unbounded" }).pipe(map$3(([stdout, stderr, exitCode]) => [
235325
235377
  stdout,
235326
235378
  stderr,
@@ -236691,9 +236743,9 @@ function fingerprintStatusPart(status) {
236691
236743
  const GitStatusBroadcasterLive = effect(GitStatusBroadcaster, gen(function* () {
236692
236744
  const gitManager = yield* GitManager;
236693
236745
  const changesPubSub = yield* acquireRelease(unbounded$1(), (pubsub) => shutdown$2(pubsub));
236694
- const broadcasterScope = yield* acquireRelease(make$37(), (scope) => close(scope, void_$3));
236695
- const cacheRef = yield* make$50(/* @__PURE__ */ new Map());
236696
- const pollersRef = yield* make$32(/* @__PURE__ */ new Map());
236746
+ const broadcasterScope = yield* acquireRelease(make$36(), (scope) => close(scope, void_$3));
236747
+ const cacheRef = yield* make$49(/* @__PURE__ */ new Map());
236748
+ const pollersRef = yield* make$31(/* @__PURE__ */ new Map());
236697
236749
  const getCachedStatus = fn$1("getCachedStatus")(function* (cwd) {
236698
236750
  return yield* get$6(cacheRef).pipe(map$3((cache) => cache.get(cwd) ?? null));
236699
236751
  });
@@ -236847,7 +236899,7 @@ const GitStatusBroadcasterLive = effect(GitStatusBroadcaster, gen(function* () {
236847
236899
  const initialRemote = (yield* getCachedStatus(normalizedCwd))?.remote?.value ?? null;
236848
236900
  yield* retainRemotePoller(normalizedCwd);
236849
236901
  const release = releaseRemotePoller(normalizedCwd).pipe(ignore, asVoid);
236850
- return concat$2(make$43({
236902
+ return concat$2(make$42({
236851
236903
  _tag: "snapshot",
236852
236904
  local: initialLocal,
236853
236905
  remote: initialRemote
@@ -237318,7 +237370,7 @@ const runCodexCommand = fn$1("runCodexCommand")(function* (args) {
237318
237370
  }));
237319
237371
  const codexSettings = yield* (yield* ServerSettingsService).getSettings.pipe(map$3((settings) => settings.providers.codex));
237320
237372
  const effectiveHomePath = codexSettings.homePath || config.forgeCodexHomePath || process.env.CODEX_HOME || void 0;
237321
- const command = make$48(codexSettings.binaryPath, [...args], {
237373
+ const command = make$47(codexSettings.binaryPath, [...args], {
237322
237374
  shell: process.platform === "win32",
237323
237375
  env: scrubForgeProviderChildEnvSecrets({
237324
237376
  ...process.env,
@@ -237357,23 +237409,26 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237357
237409
  status: "unknown",
237358
237410
  provenance
237359
237411
  },
237360
- message: "Codex is disabled in Forge settings."
237412
+ message: "Codex is disabled in Forge settings.",
237413
+ availabilityCheck: "confirmed"
237361
237414
  }
237362
237415
  });
237363
237416
  const versionProbe = yield* runCodexCommand(["--version"]).pipe(timeoutOption(CODEX_VERSION_PROBE_TIMEOUT_MS), result);
237364
237417
  if (isFailure$1(versionProbe)) {
237365
237418
  const error = versionProbe.failure;
237419
+ const commandMissing = isCommandMissingCause(error);
237366
237420
  return buildServerProvider({
237367
237421
  provider: PROVIDER$4,
237368
237422
  enabled: codexSettings.enabled,
237369
237423
  checkedAt,
237370
237424
  models: fallbackModels,
237371
237425
  probe: {
237372
- installed: !isCommandMissingCause(error),
237426
+ installed: !commandMissing,
237373
237427
  version: null,
237374
237428
  status: "error",
237375
237429
  auth: { status: "unknown" },
237376
- message: isCommandMissingCause(error) ? "Codex CLI (`codex`) is not installed or not on PATH." : `Failed to execute Codex CLI health check: ${error.message}.`
237430
+ message: commandMissing ? "Codex CLI (`codex`) is not installed or not on PATH." : `Failed to execute Codex CLI health check: ${error.message}.`,
237431
+ availabilityCheck: availabilityCheckForSpawnFailure(commandMissing)
237377
237432
  }
237378
237433
  });
237379
237434
  }
@@ -237387,7 +237442,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237387
237442
  version: null,
237388
237443
  status: "error",
237389
237444
  auth: { status: "unknown" },
237390
- message: "Codex CLI is installed but failed to run. Timed out while running command."
237445
+ message: "Codex CLI is installed but failed to run. Timed out while running command.",
237446
+ availabilityCheck: "could-not-check"
237391
237447
  }
237392
237448
  });
237393
237449
  const version = versionProbe.success.value;
@@ -237404,7 +237460,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237404
237460
  version: parsedVersion,
237405
237461
  status: "error",
237406
237462
  auth: { status: "unknown" },
237407
- message: detail ? `Codex CLI is installed but failed to run. ${detail}` : "Codex CLI is installed but failed to run."
237463
+ message: detail ? `Codex CLI is installed but failed to run. ${detail}` : "Codex CLI is installed but failed to run.",
237464
+ availabilityCheck: "confirmed"
237408
237465
  }
237409
237466
  });
237410
237467
  }
@@ -237418,7 +237475,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237418
237475
  version: parsedVersion,
237419
237476
  status: "error",
237420
237477
  auth: { status: "unknown" },
237421
- message: formatCodexCliUpgradeMessage(parsedVersion)
237478
+ message: formatCodexCliUpgradeMessage(parsedVersion),
237479
+ availabilityCheck: "confirmed"
237422
237480
  }
237423
237481
  });
237424
237482
  const skills = (resolveSkills ? yield* resolveSkills({
@@ -237443,7 +237501,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237443
237501
  version: parsedVersion,
237444
237502
  status: "ready",
237445
237503
  auth: { status: "unknown" },
237446
- message: "Using a custom Codex model provider; OpenAI login check skipped."
237504
+ message: "Using a custom Codex model provider; OpenAI login check skipped.",
237505
+ availabilityCheck: "confirmed"
237447
237506
  }
237448
237507
  });
237449
237508
  const authProbe = yield* runCodexCommand(["login", "status"]).pipe(timeoutOption(CODEX_AUTH_PROBE_TIMEOUT_MS), result);
@@ -237465,7 +237524,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237465
237524
  version: parsedVersion,
237466
237525
  status: "warning",
237467
237526
  auth: { status: "unknown" },
237468
- message: `Could not verify Codex authentication status: ${error.message}.`
237527
+ message: `Could not verify Codex authentication status: ${error.message}.`,
237528
+ availabilityCheck: "could-not-check"
237469
237529
  }
237470
237530
  });
237471
237531
  }
@@ -237480,7 +237540,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237480
237540
  version: parsedVersion,
237481
237541
  status: "warning",
237482
237542
  auth: { status: "unknown" },
237483
- message: "Codex authentication status check did not respond in time. The agent can still run; refresh the provider from Settings to retry."
237543
+ message: "Codex authentication status check did not respond in time. The agent can still run; refresh the provider from Settings to retry.",
237544
+ availabilityCheck: "could-not-check"
237484
237545
  }
237485
237546
  });
237486
237547
  const parsed = parseAuthStatusFromOutput(authProbe.success.value);
@@ -237507,7 +237568,8 @@ const checkCodexProviderStatus = fn$1("checkCodexProviderStatus")(function* (res
237507
237568
  ...accountEmail ? { accountLabel: accountEmail } : {}
237508
237569
  }
237509
237570
  },
237510
- ...parsed.message ? { message: parsed.message } : {}
237571
+ ...parsed.message ? { message: parsed.message } : {},
237572
+ availabilityCheck: "confirmed"
237511
237573
  }
237512
237574
  });
237513
237575
  });
@@ -237748,7 +237810,7 @@ const CodexTextGenerationLive = effect(TextGeneration, gen(function* () {
237748
237810
  });
237749
237811
  const runCodexCommand = fn$1("runCodexJson.runCodexCommand")(function* () {
237750
237812
  const { normalizedOptions, reasoningEffort, accessMode, providerProxyToken } = yield* resolveCodexCommandTarget();
237751
- return yield* launchCodexCommand(make$48(codexSettings?.binaryPath || "codex", buildCodexExecArgs({
237813
+ return yield* launchCodexCommand(make$47(codexSettings?.binaryPath || "codex", buildCodexExecArgs({
237752
237814
  model: modelSelection.model,
237753
237815
  reasoningEffort,
237754
237816
  fastMode: normalizedOptions?.fastMode,
@@ -237767,7 +237829,7 @@ const CodexTextGenerationLive = effect(TextGeneration, gen(function* () {
237767
237829
  })),
237768
237830
  cwd: workingDirectory,
237769
237831
  shell: process.platform === "win32",
237770
- stdin: { stream: encodeText(make$43(prompt)) }
237832
+ stdin: { stream: encodeText(make$42(prompt)) }
237771
237833
  }));
237772
237834
  });
237773
237835
  const cleanup = all([...[
@@ -237957,7 +238019,7 @@ const ClaudeTextGenerationLive = effect(TextGeneration, gen(function* () {
237957
238019
  };
237958
238020
  const claudeSettings = yield* map$3(serverSettingsService.getSettings, (settings) => settings.providers.claudeAgent).pipe(catch_(() => undefined_));
237959
238021
  const rawStdout = yield* fn$1("runClaudeJson.runClaudeCommand")(function* () {
237960
- const command = make$48(claudeSettings?.binaryPath || "claude", [
238022
+ const command = make$47(claudeSettings?.binaryPath || "claude", [
237961
238023
  "-p",
237962
238024
  "--output-format",
237963
238025
  "json",
@@ -237971,7 +238033,7 @@ const ClaudeTextGenerationLive = effect(TextGeneration, gen(function* () {
237971
238033
  ], {
237972
238034
  cwd,
237973
238035
  shell: process.platform === "win32",
237974
- stdin: { stream: encodeText(make$43(prompt)) }
238036
+ stdin: { stream: encodeText(make$42(prompt)) }
237975
238037
  });
237976
238038
  const child = yield* commandSpawner.spawn(command).pipe(mapError((cause) => normalizeCliError("claude", operation, cause, "Failed to spawn Claude CLI process")));
237977
238039
  const [stdout, stderr, exitCode] = yield* all([
@@ -238252,7 +238314,7 @@ const TextGenerationUsageLive = effect(TextGenerationUsage, gen(function* () {
238252
238314
  //#region ../../packages/shared/src/KeyedCoalescingWorker.ts
238253
238315
  const makeKeyedCoalescingWorker = (options) => gen(function* () {
238254
238316
  const queue = yield* acquireRelease(unbounded(), shutdown);
238255
- const stateRef = yield* make$31({
238317
+ const stateRef = yield* make$30({
238256
238318
  latestByKey: /* @__PURE__ */ new Map(),
238257
238319
  queuedKeys: /* @__PURE__ */ new Set(),
238258
238320
  activeKeys: /* @__PURE__ */ new Set()
@@ -238812,14 +238874,14 @@ const makeTerminalManagerWithOptions = fn$1("makeTerminalManagerWithOptions")(fu
238812
238874
  const processKillGraceMs = options.processKillGraceMs ?? DEFAULT_PROCESS_KILL_GRACE_MS;
238813
238875
  const maxRetainedInactiveSessions = options.maxRetainedInactiveSessions ?? DEFAULT_MAX_RETAINED_INACTIVE_SESSIONS;
238814
238876
  yield* fileSystem.makeDirectory(logsDir, { recursive: true }).pipe(orDie);
238815
- const managerStateRef = yield* make$32({
238877
+ const managerStateRef = yield* make$31({
238816
238878
  sessions: /* @__PURE__ */ new Map(),
238817
238879
  killFibers: /* @__PURE__ */ new Map()
238818
238880
  });
238819
- const threadLocksRef = yield* make$32(/* @__PURE__ */ new Map());
238881
+ const threadLocksRef = yield* make$31(/* @__PURE__ */ new Map());
238820
238882
  const terminalEventListeners = /* @__PURE__ */ new Set();
238821
238883
  const transitionReceipts = /* @__PURE__ */ new Map();
238822
- const workerScope = yield* make$37("sequential");
238884
+ const workerScope = yield* make$36("sequential");
238823
238885
  yield* addFinalizer$2(() => close(workerScope, void_$3));
238824
238886
  const publishEvent = (event) => gen(function* () {
238825
238887
  for (const listener of terminalEventListeners) yield* listener(event).pipe(ignoreCause({ log: true }));
@@ -238834,7 +238896,7 @@ const makeTerminalManagerWithOptions = fn$1("makeTerminalManagerWithOptions")(fu
238834
238896
  const modifyManagerState = (f) => modify$2(managerStateRef, f);
238835
238897
  const getThreadSemaphore = (threadId) => modifyEffect(threadLocksRef, (current) => {
238836
238898
  return match(fromNullishOr(current.get(threadId)), {
238837
- onNone: () => make$44(1).pipe(map$3((semaphore) => {
238899
+ onNone: () => make$43(1).pipe(map$3((semaphore) => {
238838
238900
  const next = new Map(current);
238839
238901
  next.set(threadId, semaphore);
238840
238902
  return [semaphore, next];
@@ -241722,6 +241784,18 @@ var SpriteTaskHoldManager = class {
241722
241784
  return [...this.#holds.keys()];
241723
241785
  }
241724
241786
  /**
241787
+ * Every hold key currently associated with one thread: what `releaseThread`
241788
+ * releases. Read-only and synchronous, so a caller can snapshot what is
241789
+ * live right now and decide later, from that snapshot, what it is still
241790
+ * safe to release -- rather than asking this manager what is live AFTER
241791
+ * some delay of its own, by which point a fresh acquire may have replaced
241792
+ * the very hold the caller meant to release (SpriteTaskHoldReactor's
241793
+ * session.exited handling does exactly this, forge#3602).
241794
+ */
241795
+ activeTurnIdsForThread(threadId) {
241796
+ return [...this.#holds.entries()].filter(([, hold]) => hold.threadId === threadId).map(([turnId]) => turnId);
241797
+ }
241798
+ /**
241725
241799
  * `maxRefreshes` bounds a hold that has no terminal event of its own, such as a launch
241726
241800
  * whose turn may never start. When the budget is spent the hold releases itself.
241727
241801
  *
@@ -241997,7 +242071,7 @@ var SpriteTaskHoldManager = class {
241997
242071
  * from silently dropping the holds of the other turns running beside it.
241998
242072
  */
241999
242073
  async releaseThread(threadId) {
242000
- const turnIds = [...this.#holds.entries()].filter(([, hold]) => hold.threadId === threadId).map(([turnId]) => turnId);
242074
+ const turnIds = this.activeTurnIdsForThread(threadId);
242001
242075
  await Promise.all(turnIds.map((turnId) => this.release(turnId)));
242002
242076
  }
242003
242077
  /**
@@ -287854,7 +287928,7 @@ const GitManagerLive = effect(GitManager, fn$1("makeGitManager")(function* () {
287854
287928
  preparePullRequestThread,
287855
287929
  runStackedAction: fn$1("runStackedAction")(function* (input, options) {
287856
287930
  const progress = createProgressEmitter(input, options);
287857
- const currentPhase = yield* make$50(none$4());
287931
+ const currentPhase = yield* make$49(none$4());
287858
287932
  return yield* fn$1("runStackedAction.runAction")(function* () {
287859
287933
  const initialStatus = yield* gitCore.statusDetails(input.cwd);
287860
287934
  const wantsCommit = isCommitAction(input.action);
@@ -289795,7 +289869,7 @@ const ApprovedWorkerPlanReactorLive = effect(ApprovedWorkerPlanReactor, gen(func
289795
289869
  const git = yield* GitCore;
289796
289870
  const runPromise = runPromiseWith(yield* context());
289797
289871
  const eventState = makeApprovedWorkerPlanEventState();
289798
- const reconcileSemaphore = yield* make$44(1);
289872
+ const reconcileSemaphore = yield* make$43(1);
289799
289873
  const dispatch = (command) => runPromise(orchestration.dispatch(command).pipe(asVoid));
289800
289874
  const readMasterContext = async (prompt) => {
289801
289875
  const thread = getOrNull(await runPromise(readDurableWorkerDetail(projectionSnapshotQuery, ThreadId.make(prompt.masterThreadId))));
@@ -291071,7 +291145,7 @@ const makeRuntimeDrainReporter = gen(function* () {
291071
291145
  const providerService = yield* ProviderService;
291072
291146
  const serverConfig = yield* ServerConfig;
291073
291147
  const spriteTaskHoldReactor = yield* SpriteTaskHoldReactor;
291074
- const reportSemaphore = yield* make$44(1);
291148
+ const reportSemaphore = yield* make$43(1);
291075
291149
  let heartbeatSilent = false;
291076
291150
  const applyControlPlaneState = (runtime) => drainState.applyControlPlaneState({
291077
291151
  draining: runtime.draining,
@@ -291654,7 +291728,7 @@ function shouldApplyProviderTurnCompleted(activeTurnId, eventTurnId) {
291654
291728
  const ProviderRuntimeIngestionLive = effect(ProviderRuntimeIngestionService, fn$1("make")(function* () {
291655
291729
  const orchestrationEngine = yield* OrchestrationEngineService;
291656
291730
  const claudeUsageTelemetry = yield* ClaudeUsageTelemetry;
291657
- const claudeUsageScope = yield* make$37("parallel");
291731
+ const claudeUsageScope = yield* make$36("parallel");
291658
291732
  yield* addFinalizer$2(() => close(claudeUsageScope, void_$3));
291659
291733
  const providerService = yield* ProviderService;
291660
291734
  const projectionTurnRepository = yield* ProjectionTurnRepository;
@@ -292293,7 +292367,7 @@ const ClaudeUsageTelemetryLive = effect(ClaudeUsageTelemetry, gen(function* () {
292293
292367
  */
292294
292368
  const makeDrainableWorker = (process) => gen(function* () {
292295
292369
  const queue = yield* acquireRelease(unbounded(), shutdown);
292296
- const outstanding = yield* make$31(0);
292370
+ const outstanding = yield* make$30(0);
292297
292371
  yield* take(queue).pipe(tap((a) => ensuring(process(a), update$1(outstanding, (n) => n - 1))), forever$1, forkScoped);
292298
292372
  const drain = get$1(outstanding).pipe(tap((n) => n > 0 ? txRetry : void_$1), tx$1);
292299
292373
  const enqueue = (element) => offer(queue, element).pipe(tap(() => update$1(outstanding, (n) => n + 1)), tx$1);
@@ -293086,7 +293160,7 @@ const ProviderCommandReactorLive = effect(ProviderCommandReactor, gen(function*
293086
293160
  * gap between the ack and this call (review item 1).
293087
293161
  */
293088
293162
  const watchTurnStartOutcome = fn$1("watchTurnStartOutcome")(function* (input) {
293089
- const lastRetrySignal = yield* make$50(null);
293163
+ const lastRetrySignal = yield* make$49(null);
293090
293164
  const terminalEvent = yield* fromQueue(input.events).pipe(mapEffect$1((event) => gen(function* () {
293091
293165
  if (event.type === "runtime.warning") {
293092
293166
  const classified = classifyRetryableProviderFailure(event.payload.message);
@@ -294970,6 +295044,9 @@ const CheckpointReactorLive = effect(CheckpointReactor, gen(function* () {
294970
295044
  };
294971
295045
  }));
294972
295046
  //#endregion
295047
+ //#region src/runtimeReplication/Services/RuntimeReplicationThreadFlush.ts
295048
+ var RuntimeReplicationThreadFlush = class extends Service$1()("forge/runtimeReplication/Services/RuntimeReplicationThreadFlush") {};
295049
+ //#endregion
294973
295050
  //#region src/orchestration/Layers/SpriteTaskHoldReactor.ts
294974
295051
  /**
294975
295052
  * Holds the sprite awake for the duration of every agent turn.
@@ -294985,6 +295062,48 @@ const CheckpointReactorLive = effect(CheckpointReactor, gen(function* () {
294985
295062
  * `turn.started` / `turn.completed` through `ProviderService.streamEvents`.
294986
295063
  */
294987
295064
  /**
295065
+ * Bound for how long a terminal turn event (`turn.completed` / `turn.aborted`)
295066
+ * waits on that thread's pending replication before releasing the sprite's
295067
+ * turn hold anyway (forge#3600). The sprite freezes about a second after the
295068
+ * hold goes, so this is also roughly how much longer a finished turn's sprite
295069
+ * stays billed.
295070
+ *
295071
+ * Justified from the numbers already in this codebase, not a guess: the
295072
+ * outbox drain loop claims and posts on a 2 s tick
295073
+ * (`Schedule.spaced("2 seconds")` in RuntimeReplication.ts), each CMMD publish
295074
+ * attempt has its own 10 s deadline (`RUNTIME_REPLICATION_TIMEOUT_MS` in
295075
+ * RuntimeReplicationClient.ts), and `claim()` orders a thread's inventory row
295076
+ * ahead of its thread-events row, so one tick can mean two requests before the
295077
+ * thread's own batch goes out. 15 s covers one drain tick plus one full
295078
+ * publish attempt with headroom for that second request, while still keeping
295079
+ * a completed turn's sprite from staying billed anywhere near CMMD's own
295080
+ * stalled-turn sweep window (production: about 15 minutes, per forge#3600).
295081
+ */
295082
+ const REPLICATION_FLUSH_TIMEOUT_MS = 15e3;
295083
+ /**
295084
+ * How often the flush re-checks the thread's outbox row while waiting. Short
295085
+ * enough that the wait tracks CMMD's actual ack latency (typically well under
295086
+ * a second) rather than the bound, long enough that a 15 s wait costs at most
295087
+ * about 60 reads against the outbox table.
295088
+ */
295089
+ const REPLICATION_FLUSH_POLL_INTERVAL_MS = 250;
295090
+ /**
295091
+ * A single extra wait before trusting a flush's very first "nothing pending"
295092
+ * read (forge#3600 review follow-up). SpriteTaskHoldReactor and
295093
+ * RuntimeReplication's own domain-event-driven enqueue are independent
295094
+ * subscribers of the same ProviderService.streamEvents broadcast: this
295095
+ * reactor can see turn.completed and read the outbox before the OTHER
295096
+ * subscriber has finished projecting the turn's final events into a row. In
295097
+ * both production runs behind forge#3600, the final assistant_message and
295098
+ * turn_usage writes landed about a second apart from each other (00:43:15Z
295099
+ * and 00:43:16Z), so an immediate "nothing pending" read cannot be trusted:
295100
+ * that is exactly the race that stranded both turns. One settle wait,
295101
+ * re-checked once, closes it without turning every genuinely idle turn's
295102
+ * release into a long poll -- a thread that already has nothing to replicate
295103
+ * pays this once, never the full flushTimeoutMs bound.
295104
+ */
295105
+ const REPLICATION_FLUSH_SETTLE_MS = 1e3;
295106
+ /**
294988
295107
  * A launch hold refreshes every 60 s, so this budget is about ten minutes. A launch whose turn
294989
295108
  * never starts, because the provider refused it or the process died first, has no event to
294990
295109
  * release it. The budget is what stops that hold from keeping the sprite billing.
@@ -295002,8 +295121,69 @@ const TURN_START_HOLD_MAX_REFRESHES = 10;
295002
295121
  /** The hold id for `holdTurnStart` / `releaseTurnStart`. Distinct from `launchHoldId` on purpose:
295003
295122
  * see the shape's doc comment on `holdTurnStart`. */
295004
295123
  const turnStartHoldId = (key) => `turn-start-${key}`;
295005
- const SpriteTaskHoldReactorLive = effect(SpriteTaskHoldReactor, gen(function* () {
295124
+ const makeSpriteTaskHoldReactor = (overrides = {}) => gen(function* () {
295006
295125
  const providerService = yield* ProviderService;
295126
+ const replicationOutbox = yield* RuntimeReplicationThreadFlush;
295127
+ const replicationRuntimeId = resolveRuntimeReplicationRuntimeId(yield* ServerConfig);
295128
+ const flushTimeoutMs = overrides.replicationFlushTimeoutMs ?? REPLICATION_FLUSH_TIMEOUT_MS;
295129
+ const flushPollIntervalMs = overrides.replicationFlushPollIntervalMs ?? REPLICATION_FLUSH_POLL_INTERVAL_MS;
295130
+ const flushSettleMs = overrides.replicationFlushSettleMs ?? REPLICATION_FLUSH_SETTLE_MS;
295131
+ /**
295132
+ * Waits for CMMD to acknowledge this thread's outstanding replication -- or
295133
+ * for nothing to have been pending in the first place -- before the caller
295134
+ * releases the turn hold that keeps the sprite awake for the outbox drain
295135
+ * loop to run (forge#3600). Bounded so a wedged publish cannot hold a
295136
+ * finished turn's sprite open indefinitely: the bound firing releases
295137
+ * anyway and logs a warning with however much was still outstanding.
295138
+ *
295139
+ * Never fails: a defect from the outbox read (a SQL error, say) is caught
295140
+ * and treated the same as a timeout -- release the hold rather than let a
295141
+ * replication-read bug strand the sprite awake, or worse, crash the worker
295142
+ * that also has to release every OTHER turn's hold.
295143
+ */
295144
+ const flushThreadReplication = (threadId) => {
295145
+ if (replicationRuntimeId === void 0) return void_$1;
295146
+ const runtimeId = replicationRuntimeId;
295147
+ const streamKey = `thread:${threadId}`;
295148
+ const startedAt = Date.now();
295149
+ const poll = (phase) => replicationOutbox.readPendingCount({
295150
+ runtimeId,
295151
+ streamKey
295152
+ }).pipe(flatMap((pending) => {
295153
+ if (pending === 0) {
295154
+ if (phase === "initial") return sleep$4(flushSettleMs).pipe(andThen(suspend$1(() => poll("settle-recheck"))));
295155
+ return succeed({
295156
+ outcome: phase === "settle-recheck" ? "nothing_pending" : "delivered",
295157
+ pending,
295158
+ settled: phase === "settle-recheck"
295159
+ });
295160
+ }
295161
+ if (Date.now() - startedAt >= flushTimeoutMs) return succeed({
295162
+ outcome: "timed_out",
295163
+ pending,
295164
+ settled: false
295165
+ });
295166
+ return sleep$4(flushPollIntervalMs).pipe(andThen(suspend$1(() => poll("steady"))));
295167
+ }));
295168
+ return poll("initial").pipe(flatMap(({ outcome, pending, settled }) => {
295169
+ const elapsedMs = Date.now() - startedAt;
295170
+ const logOutcome = logInfo("sprite task hold replication flush", {
295171
+ threadId,
295172
+ outcome,
295173
+ pending,
295174
+ elapsedMs,
295175
+ ...settled ? { settledMs: flushSettleMs } : {}
295176
+ });
295177
+ return outcome === "timed_out" ? logOutcome.pipe(andThen(logWarning$1("sprite task hold replication flush timed out; releasing the turn hold anyway", {
295178
+ threadId,
295179
+ pending,
295180
+ elapsedMs
295181
+ }))) : logOutcome;
295182
+ }), catchCause((cause) => logError("sprite task hold replication flush failed; releasing the turn hold anyway", {
295183
+ threadId,
295184
+ cause: pretty(cause)
295185
+ })));
295186
+ };
295007
295187
  const manager = makeSpriteTaskHoldManager(process.env, (message, cause) => {
295008
295188
  runFork(logWarning$1(message, { cause: cause instanceof Error ? cause.message : cause }));
295009
295189
  }, (event) => {
@@ -295032,61 +295212,111 @@ const SpriteTaskHoldReactorLive = effect(SpriteTaskHoldReactor, gen(function* ()
295032
295212
  const launchCallers = /* @__PURE__ */ new Map();
295033
295213
  const launchGeneration = /* @__PURE__ */ new Map();
295034
295214
  const turnLaunchGeneration = /* @__PURE__ */ new Map();
295215
+ const turnHoldGeneration = /* @__PURE__ */ new Map();
295216
+ let nextTurnHoldGeneration = 0;
295035
295217
  /**
295036
- * Belt-and-braces cleanup for a turn reaching a terminal state
295037
- * (turn.completed or turn.aborted): a launch hold whose hand-off never
295038
- * confirmed (the turn hold's PUT kept failing) is still up, refreshing on
295039
- * its own budget, and the turn ending either way means the launch phase is
295040
- * over. `manager.release(String(turnId))` above can itself wait on the
295041
- * guest API, so by the time this runs the NEXT stage's own dispatch may
295042
- * already have acquired a fresh launch hold for the same thread; only
295043
- * release it here when no such newer launch has started since this turn's
295044
- * own turn.started was processed (CodeRabbit review, forge#3592). A no-op
295045
- * when this turn's own generation is stale, or when the hold was already
295046
- * released.
295218
+ * Release a launch hold left over from a turn hand-off that never
295219
+ * confirmed, once the turn it was covering has reached a terminal state
295220
+ * one way or another. `capturedGeneration` must be read from
295221
+ * `turnLaunchGeneration` by the caller before this runs -- see that map's
295222
+ * own doc comment for why the read cannot happen in here. A no-op when
295223
+ * nothing was captured, when a newer launch has since superseded it, or
295224
+ * when the hold was already released.
295047
295225
  */
295048
- const releaseLingeringLaunchHold = async (turnId, threadId) => {
295049
- const capturedGeneration = turnLaunchGeneration.get(turnId);
295050
- turnLaunchGeneration.delete(turnId);
295226
+ const releaseLingeringLaunchHoldIfCurrent = async (threadId, capturedGeneration) => {
295051
295227
  if (manager === null || capturedGeneration === void 0) return;
295052
295228
  if (launchGeneration.get(threadId) !== capturedGeneration) return;
295053
295229
  await manager.release(launchHoldId(threadId));
295054
295230
  };
295231
+ /**
295232
+ * Release a completed or aborted turn's hold, once its thread's pending
295233
+ * replication has flushed (forge#3600). Skips the release entirely once
295234
+ * `turnHoldGeneration` has moved past `expectedGeneration`: see that map's
295235
+ * own doc comment for the reused-turnId race this guards against.
295236
+ */
295237
+ const processTerminalItem = (item) => flushThreadReplication(item.threadId).pipe(andThen(promise(async () => {
295238
+ if (manager === null) return;
295239
+ if (turnHoldGeneration.get(item.turnId) !== item.expectedGeneration) return;
295240
+ await manager.release(item.turnId);
295241
+ await releaseLingeringLaunchHoldIfCurrent(item.threadId, item.capturedLaunchGeneration);
295242
+ if (turnHoldGeneration.get(item.turnId) === item.expectedGeneration) turnHoldGeneration.delete(item.turnId);
295243
+ })));
295244
+ /**
295245
+ * Release every hold a dead session was covering, once its thread's
295246
+ * pending replication has flushed (#3603 item 1: this used to call
295247
+ * `manager.releaseThread` on the spot, with nothing stopping a provider
295248
+ * process that died right after its own turn from stranding that turn's
295249
+ * final events the same way forge#3600 did for a clean completion).
295250
+ * `turns` and `capturedLaunchGeneration` are snapshotted by the caller at
295251
+ * session.exited time, BEFORE the flush runs: a launch or a turn that
295252
+ * starts on this thread WHILE the flush is running must survive. Reading
295253
+ * "what is live for this thread" only AFTER the flush -- the naive
295254
+ * flush-then-releaseThread shape -- would reopen the exact hand-off gap
295255
+ * forge#3589 already closed once, just moved behind a longer wait.
295256
+ */
295257
+ const processSessionExited = (item) => flushThreadReplication(item.threadId).pipe(andThen(promise(async () => {
295258
+ if (manager === null) return;
295259
+ await Promise.all(item.turns.filter((turn) => turnHoldGeneration.get(turn.turnId) === turn.expectedGeneration).map(async (turn) => {
295260
+ await manager.release(turn.turnId);
295261
+ if (turnHoldGeneration.get(turn.turnId) === turn.expectedGeneration) turnHoldGeneration.delete(turn.turnId);
295262
+ }));
295263
+ await releaseLingeringLaunchHoldIfCurrent(item.threadId, item.capturedLaunchGeneration);
295264
+ })));
295055
295265
  const start = fn$1("start")(function* () {
295056
295266
  if (manager === null) return;
295267
+ const terminalFibers = yield* make$50();
295268
+ const onTurnStarted = (turnIdKey, threadId) => {
295269
+ const generation = launchGeneration.get(threadId) ?? 0;
295270
+ turnHoldGeneration.set(turnIdKey, ++nextTurnHoldGeneration);
295271
+ return promise(async () => {
295272
+ const outcome = await manager.acquire(turnIdKey, threadId);
295273
+ launchCallers.delete(threadId);
295274
+ turnLaunchGeneration.set(turnIdKey, generation);
295275
+ if (outcome === "succeeded") await manager.release(launchHoldId(threadId));
295276
+ });
295277
+ };
295278
+ /** Shared by turn.completed and turn.aborted: see the dispatch below for why they are distinct wire events but handled identically. */
295279
+ const onTerminalTurnEvent = (turnIdKey, threadIdKey) => {
295280
+ const capturedLaunchGeneration = turnLaunchGeneration.get(turnIdKey);
295281
+ turnLaunchGeneration.delete(turnIdKey);
295282
+ return run$3(terminalFibers, processTerminalItem({
295283
+ turnId: turnIdKey,
295284
+ threadId: threadIdKey,
295285
+ expectedGeneration: turnHoldGeneration.get(turnIdKey) ?? 0,
295286
+ capturedLaunchGeneration
295287
+ })).pipe(asVoid);
295288
+ };
295289
+ const onSessionExited = (threadId) => {
295290
+ launchCallers.delete(threadId);
295291
+ const launchKey = launchHoldId(threadId);
295292
+ const turns = manager.activeTurnIdsForThread(threadId).filter((turnId) => turnId !== launchKey).map((turnId) => ({
295293
+ turnId,
295294
+ expectedGeneration: turnHoldGeneration.get(turnId) ?? 0
295295
+ }));
295296
+ for (const turn of turns) turnLaunchGeneration.delete(turn.turnId);
295297
+ return run$3(terminalFibers, processSessionExited({
295298
+ threadId,
295299
+ turns,
295300
+ capturedLaunchGeneration: launchGeneration.get(threadId)
295301
+ })).pipe(asVoid);
295302
+ };
295057
295303
  yield* forkScoped(runForEach(providerService.streamEvents, (event) => {
295058
295304
  if (event.type === "turn.started") {
295059
295305
  const turnId = event.turnId;
295060
295306
  if (turnId === void 0) return void_$1;
295061
- const threadId = String(event.threadId);
295062
- const generation = launchGeneration.get(threadId) ?? 0;
295063
- return promise(async () => {
295064
- const outcome = await manager.acquire(String(turnId), threadId);
295065
- launchCallers.delete(threadId);
295066
- turnLaunchGeneration.set(String(turnId), generation);
295067
- if (outcome === "succeeded") await manager.release(launchHoldId(threadId));
295068
- });
295307
+ return onTurnStarted(String(turnId), String(event.threadId));
295069
295308
  }
295070
295309
  if (event.type === "turn.completed") {
295071
295310
  const turnId = event.turnId;
295072
295311
  if (turnId === void 0) return void_$1;
295073
- return promise(async () => {
295074
- await manager.release(String(turnId));
295075
- await releaseLingeringLaunchHold(String(turnId), String(event.threadId));
295076
- });
295312
+ return onTerminalTurnEvent(String(turnId), String(event.threadId));
295077
295313
  }
295078
295314
  if (event.type === "turn.aborted") {
295079
295315
  const turnId = event.turnId;
295080
295316
  if (turnId === void 0) return void_$1;
295081
- return promise(async () => {
295082
- await manager.release(String(turnId));
295083
- await releaseLingeringLaunchHold(String(turnId), String(event.threadId));
295084
- });
295085
- }
295086
- if (event.type === "session.exited") {
295087
- launchCallers.delete(String(event.threadId));
295088
- return promise(() => manager.releaseThread(String(event.threadId)));
295317
+ return onTerminalTurnEvent(String(turnId), String(event.threadId));
295089
295318
  }
295319
+ if (event.type === "session.exited") return onSessionExited(String(event.threadId));
295090
295320
  return void_$1;
295091
295321
  }));
295092
295322
  });
@@ -295123,7 +295353,8 @@ const SpriteTaskHoldReactorLive = effect(SpriteTaskHoldReactor, gen(function* ()
295123
295353
  releaseTurnStart,
295124
295354
  releaseAll: onManager((taskHolds) => taskHolds.releaseAll())
295125
295355
  };
295126
- }));
295356
+ });
295357
+ const SpriteTaskHoldReactorLive = effect(SpriteTaskHoldReactor, makeSpriteTaskHoldReactor());
295127
295358
  //#endregion
295128
295359
  //#region src/orchestration/Layers/PlanTaskCreationReactor.ts
295129
295360
  var PlanMaterializationRequestError = class extends TaggedError("PlanMaterializationRequestError") {};
@@ -295950,7 +296181,7 @@ const readOpenCodeApiKey = (_settings) => process.env.OPENCODE_API_KEY || proces
295950
296181
  const runOpenCodeCommand = fn$1("runOpenCodeCommand")(function* (binaryPath, args) {
295951
296182
  const useShell = process.platform === "win32";
295952
296183
  if (useShell && !isShellSafeCommandPath(binaryPath)) return yield* fail(/* @__PURE__ */ new Error(`Refusing to spawn opencode: \`binaryPath\` contains shell metacharacters that cmd.exe would interpret as additional commands.`));
295953
- return yield* spawnAndCollect(binaryPath, make$48(binaryPath, [...args], {
296184
+ return yield* spawnAndCollect(binaryPath, make$47(binaryPath, [...args], {
295954
296185
  shell: useShell,
295955
296186
  env: scrubForgeProviderChildEnvSecrets(process.env)
295956
296187
  }));
@@ -296175,6 +296406,31 @@ const loadProviders = (codexProvider, claudeProvider, ollamaProvider, cmmdProvid
296175
296406
  opencodeProvider.getSnapshot
296176
296407
  ], { concurrency: "unbounded" });
296177
296408
  const haveProvidersChanged = (previousProviders, nextProviders) => !equals(previousProviders, nextProviders);
296409
+ /**
296410
+ * Keep publishing a previous good reading, marked stale, across a probe that
296411
+ * could not check rather than replacing it with a false "not on this
296412
+ * environment" (forge#3588).
296413
+ *
296414
+ * A Sprite freezes the cgroup about a second after the last inbound request,
296415
+ * so a probe already in flight at the freeze resumes into a timeout that
296416
+ * proves nothing: `checkCodexProviderStatus`/`checkClaudeProviderStatus` mark
296417
+ * exactly that shape `availabilityCheck: "could-not-check"`. When the last
296418
+ * thing this registry confirmed for the same provider was available, this
296419
+ * keeps publishing THAT reading rather than the fresh could-not-check one,
296420
+ * stamped stale with the time it was last confirmed. A provider with no prior
296421
+ * confirmed reading, or one whose previous reading was itself withheld, has
296422
+ * nothing to carry forward, so the fresh (still unavailable) reading stands.
296423
+ */
296424
+ function carryForwardStaleReading(incoming, previous) {
296425
+ if (incoming.availabilityCheck !== "could-not-check") return incoming;
296426
+ if (previous === void 0 || previous.availability !== "available") return incoming;
296427
+ return {
296428
+ ...previous,
296429
+ checkedAt: incoming.checkedAt,
296430
+ availabilityCheck: "could-not-check",
296431
+ lastConfirmedAt: previous.lastConfirmedAt ?? previous.checkedAt
296432
+ };
296433
+ }
296178
296434
  const ProviderRegistryLive = effect(ProviderRegistry, gen(function* () {
296179
296435
  const config = yield* ServerConfig;
296180
296436
  const codexProvider = yield* CodexProvider;
@@ -296193,7 +296449,7 @@ const ProviderRegistryLive = effect(ProviderRegistry, gen(function* () {
296193
296449
  provider
296194
296450
  })]));
296195
296451
  const fallbackByProvider = new Map(fallbackProviders.map((provider) => [provider.provider, provider]));
296196
- const providersRef = yield* make$50(yield* forEach(PROVIDER_CACHE_IDS, (provider) => {
296452
+ const providersRef = yield* make$49(yield* forEach(PROVIDER_CACHE_IDS, (provider) => {
296197
296453
  const filePath = cachePathByProvider.get(provider);
296198
296454
  const fallbackProvider = fallbackByProvider.get(provider);
296199
296455
  return readProviderStatusCache(filePath).pipe(provideService(FileSystem, fileSystem), map$3((cachedProvider) => {
@@ -296212,15 +296468,25 @@ const ProviderRegistryLive = effect(ProviderRegistry, gen(function* () {
296212
296468
  error
296213
296469
  })), ignore);
296214
296470
  const upsertProviders = fn$1("upsertProviders")(function* (incomingProviders, options) {
296215
- const nextProviders = incomingProviders.map((provider) => withProviderAvailability(provider));
296216
- const [previousProviders, providers] = yield* modify$3(providersRef, (previousProviders) => {
296217
- const mergedProviders = new Map(previousProviders.map((provider) => [provider.provider, provider]));
296218
- for (const provider of nextProviders) mergedProviders.set(provider.provider, provider);
296471
+ const withAvailability = incomingProviders.map((provider) => withProviderAvailability(provider));
296472
+ const [previousProviders, providers, resolvedProviders] = yield* modify$3(providersRef, (previousProviders) => {
296473
+ const previousByKind = new Map(previousProviders.map((provider) => [provider.provider, provider]));
296474
+ const mergedProviders = new Map(previousByKind);
296475
+ const resolvedProviders = [];
296476
+ for (const provider of withAvailability) {
296477
+ const resolved = carryForwardStaleReading(provider, previousByKind.get(provider.provider));
296478
+ resolvedProviders.push(resolved);
296479
+ mergedProviders.set(provider.provider, resolved);
296480
+ }
296219
296481
  const providers = orderProviderSnapshots([...mergedProviders.values()]);
296220
- return [[previousProviders, providers], providers];
296482
+ return [[
296483
+ previousProviders,
296484
+ providers,
296485
+ resolvedProviders
296486
+ ], providers];
296221
296487
  });
296222
296488
  if (haveProvidersChanged(previousProviders, providers)) {
296223
- yield* forEach(nextProviders, persistProvider, {
296489
+ yield* forEach(resolvedProviders, persistProvider, {
296224
296490
  concurrency: "unbounded",
296225
296491
  discard: true
296226
296492
  });
@@ -297299,7 +297565,7 @@ const makeWorkspaceBulkTransfer = (options = {}) => gen(function* () {
297299
297565
  const workspacePaths = yield* WorkspacePaths;
297300
297566
  const workspaceEntries = yield* WorkspaceEntries;
297301
297567
  const fault = options.fault ?? (() => void_$1);
297302
- const transferLocks = yield* forEach(Array.from({ length: TRANSFER_LOCK_STRIPE_COUNT }), () => make$44(1));
297568
+ const transferLocks = yield* forEach(Array.from({ length: TRANSFER_LOCK_STRIPE_COUNT }), () => make$43(1));
297303
297569
  const withTransferLock = (transferId, effect) => transferLocks[transferLockStripe(transferId)].withPermit(effect);
297304
297570
  const findTransfer = (transferId) => sql`
297305
297571
  SELECT transfer_id AS "transferId", workspace_root AS "workspaceRoot",
@@ -298346,7 +298612,7 @@ const make$3 = /* @__PURE__ */ fnUntraced(function* (options) {
298346
298612
  excludeLogSpans: options.excludeLogSpans ?? false,
298347
298613
  clock: yield* Clock
298348
298614
  };
298349
- return make$33((options) => {
298615
+ return make$32((options) => {
298350
298616
  exporter.push(makeLogRecord(options, opts));
298351
298617
  });
298352
298618
  });
@@ -298784,7 +299050,7 @@ const make$1 = /* @__PURE__ */ fnUntraced(function* (options) {
298784
299050
  if (!span.sampled) return;
298785
299051
  exporter.push(makeOtlpSpan(span));
298786
299052
  }
298787
- return make$42({
299053
+ return make$41({
298788
299054
  span(options) {
298789
299055
  return makeSpan({
298790
299056
  ...options,
@@ -299110,8 +299376,8 @@ const makeLocalFileTracer = fn$1("makeLocalFileTracer")(function* (options) {
299110
299376
  maxFiles: options.maxFiles,
299111
299377
  batchWindowMs: options.batchWindowMs
299112
299378
  }));
299113
- const delegate = options.delegate ?? make$42({ span: (spanOptions) => new NativeSpan(spanOptions) });
299114
- return make$42({
299379
+ const delegate = options.delegate ?? make$41({ span: (spanOptions) => new NativeSpan(spanOptions) });
299380
+ return make$41({
299115
299381
  span(spanOptions) {
299116
299382
  return new LocalFileSpan(spanOptions, delegate.span(spanOptions), sink.push);
299117
299383
  },
@@ -299235,7 +299501,7 @@ function resolveBuildCommitFromEnv(env) {
299235
299501
  * environment descriptor down instead of reporting an honest "unknown".
299236
299502
  */
299237
299503
  function readBakedBuildCommit() {
299238
- return "bb958274b2ec30ab04e69fa421419a546b6490de";
299504
+ return "96780e9bb987ecd23f530709589bda1b4b5791e5";
299239
299505
  }
299240
299506
  async function resolveServerBuildCommit(input) {
299241
299507
  if (isFullCommitSha(input.baked)) return input.baked;
@@ -299411,7 +299677,7 @@ const ServerEnvironmentLive = effect(ServerEnvironment, fn$1("makeServerEnvironm
299411
299677
  return yield* decodeUnknownEffect(EnvironmentMetadata)(parsed).pipe(orElseSucceed(() => ({ displayName: null })));
299412
299678
  });
299413
299679
  const writeMetadata = (metadata) => fileSystem.writeFileString(serverConfig.environmentMetadataPath, `${JSON.stringify(metadata, null, 2)}\n`);
299414
- const displayNameOverrideRef = yield* make$50(normalizeDisplayName((yield* readMetadata).displayName ?? null));
299680
+ const displayNameOverrideRef = yield* make$49(normalizeDisplayName((yield* readMetadata).displayName ?? null));
299415
299681
  const posthog = yield* PosthogPublicConfig.asEffect();
299416
299682
  const buildCommit = yield* promise(() => resolveServerBuildCommit({
299417
299683
  baked: readBakedBuildCommit(),
@@ -301018,7 +301284,7 @@ const internalBootstrapCredentialError = (message, cause) => new BootstrapCreden
301018
301284
  const BootstrapCredentialServiceLive = effect(BootstrapCredentialService, gen(function* () {
301019
301285
  const config = yield* ServerConfig;
301020
301286
  const pairingLinks = yield* AuthPairingLinkRepository;
301021
- const seededGrantsRef = yield* make$50(/* @__PURE__ */ new Map());
301287
+ const seededGrantsRef = yield* make$49(/* @__PURE__ */ new Map());
301022
301288
  const changesPubSub = yield* unbounded$1();
301023
301289
  const seedGrant = (credential, grant) => update$4(seededGrantsRef, (current) => {
301024
301290
  const next = new Map(current);
@@ -301489,7 +301755,7 @@ const SessionCredentialServiceLive = effect(SessionCredentialService, gen(functi
301489
301755
  if (serverConfig.forgeCloudShellMode === true && configuredSigningKey === null) return yield* die$1(/* @__PURE__ */ new Error("FORGE_SESSION_SIGNING_KEY must decode to at least 32 bytes in cloud-shell mode. Forge Cloud refuses to issue restart-unsafe or replica-local sessions."));
301490
301756
  const signingSecret = configuredSigningKey ?? (yield* secretStore.getOrCreateRandom(SIGNING_SECRET_NAME, 32));
301491
301757
  const statelessCookieSessions = configuredSigningKey !== null;
301492
- const connectedSessionsRef = yield* make$50(/* @__PURE__ */ new Map());
301758
+ const connectedSessionsRef = yield* make$49(/* @__PURE__ */ new Map());
301493
301759
  const changesPubSub = yield* unbounded$1();
301494
301760
  const cookieName = resolveSessionCookieName({
301495
301761
  mode: serverConfig.mode,
@@ -301998,7 +302264,7 @@ function verifyForgeCloudOwnerCallbackAssertion(assertion, config) {
301998
302264
  }));
301999
302265
  const verifier = assertionVerifierConfig(config);
302000
302266
  const verified = verifier ? verifyAssertion(assertion, verifier) : null;
302001
- const expiresAt = verified ? make$38(verified.expiresAtMilliseconds) : none$4();
302267
+ const expiresAt = verified ? make$37(verified.expiresAtMilliseconds) : none$4();
302002
302268
  if (!verified || isNone(expiresAt)) return fail(new AuthError({
302003
302269
  message: "Invalid Forge Cloud owner assertion.",
302004
302270
  status: 401
@@ -304400,7 +304666,7 @@ const OrchestrationEngineLive = effect(OrchestrationEngineService, gen(function*
304400
304666
  const getReadModel = () => sync$1(() => readModel);
304401
304667
  const readEvents = (fromSequenceExclusive) => eventStore.readFromSequence(fromSequenceExclusive);
304402
304668
  const dispatch = (command) => gen(function* () {
304403
- const result = yield* make$39();
304669
+ const result = yield* make$38();
304404
304670
  yield* offer$1(commandQueue, {
304405
304671
  command,
304406
304672
  result,
@@ -313611,7 +313877,7 @@ const RuntimeReplicationLive = effect(RuntimeReplication, gen(function* () {
313611
313877
  const terminal = yield* serviceOption(TerminalManager);
313612
313878
  const activeHourMeter = yield* ActiveHourMeter;
313613
313879
  const runtimeId = resolveRuntimeReplicationRuntimeId(config);
313614
- const outboxWarningActive = yield* make$50(false);
313880
+ const outboxWarningActive = yield* make$49(false);
313615
313881
  const enqueueInventoryPayload = (payload) => runtimeId ? outbox.enqueue({
313616
313882
  runtimeId,
313617
313883
  streamKey: "inventory",
@@ -314802,6 +315068,36 @@ const RuntimeReplicationOutboxLive = effect(RuntimeReplicationOutbox, gen(functi
314802
315068
  getDiagnostics
314803
315069
  });
314804
315070
  }));
315071
+ //#endregion
315072
+ //#region src/runtimeReplication/Layers/RuntimeReplicationThreadFlush.ts
315073
+ /**
315074
+ * A thread's outbox row holds its whole unacknowledged batch as one
315075
+ * `{ events: [...] }` payload -- RuntimeReplicationOutbox upserts by
315076
+ * `(runtime_id, stream_key)`, so there is at most one row per thread -- so the
315077
+ * count is that array's length. A row whose payload does not decode that way
315078
+ * (a blocked THREAD_STREAM_LOCAL_HISTORY_CONFLICT placeholder, for instance)
315079
+ * still represents one undelivered publication, so it counts as 1 rather than
315080
+ * 0: a caller bounding a wait on this number must never read a blocked row as
315081
+ * "nothing pending".
315082
+ */
315083
+ function pendingEventCount(payloadJson) {
315084
+ try {
315085
+ const parsed = JSON.parse(payloadJson);
315086
+ if (Array.isArray(parsed.events)) return parsed.events.length;
315087
+ } catch {}
315088
+ return 1;
315089
+ }
315090
+ const RuntimeReplicationThreadFlushLive = effect(RuntimeReplicationThreadFlush, gen(function* () {
315091
+ const sql = yield* SqlClient;
315092
+ const readPendingCount = (input) => sql`
315093
+ SELECT payload_json AS "payloadJson" FROM runtime_replication_outbox
315094
+ WHERE runtime_id = ${input.runtimeId} AND stream_key = ${input.streamKey}
315095
+ `.pipe(map$3((rows) => {
315096
+ const row = rows[0];
315097
+ return row === void 0 ? 0 : pendingEventCount(row.payloadJson);
315098
+ }), orDie);
315099
+ return RuntimeReplicationThreadFlush.of({ readPendingCount });
315100
+ }));
314805
315101
  /**
314806
315102
  * Gates guest-side Active Hour measurement (FOR-32642). Shadow-only: even
314807
315103
  * with this on, whether a reported interval is also recorded against the
@@ -314834,7 +315130,7 @@ const isActiveHourMeteringEnabled = gen(function* () {
314834
315130
  }).pipe(catch_(() => succeed(false)));
314835
315131
  const ActiveHourMeterLive = effect(ActiveHourMeter, gen(function* () {
314836
315132
  const outbox = yield* RuntimeReplicationOutbox;
314837
- const statesByRuntime = yield* make$50(/* @__PURE__ */ new Map());
315133
+ const statesByRuntime = yield* make$49(/* @__PURE__ */ new Map());
314838
315134
  const markAwake = (runtimeId) => gen(function* () {
314839
315135
  if (!(yield* isActiveHourMeteringEnabled)) return;
314840
315136
  yield* update$4(statesByRuntime, (states) => {
@@ -316863,7 +317159,7 @@ const PipelineRunCoordinatorLive = effect(PipelineRunCoordinator, gen(function*
316863
317159
  const providerAuthorityInstallations = /* @__PURE__ */ new Map();
316864
317160
  const providerAuthorityPublications = /* @__PURE__ */ new Map();
316865
317161
  const preparedHandoffs = /* @__PURE__ */ new WeakMap();
316866
- const authorityCleanupScope = yield* make$37("parallel");
317162
+ const authorityCleanupScope = yield* make$36("parallel");
316867
317163
  yield* addFinalizer$2(() => close(authorityCleanupScope, void_$3));
316868
317164
  const retryAuthoritySecretCleanup = (work, cause) => {
316869
317165
  const now = /* @__PURE__ */ new Date();
@@ -317239,12 +317535,12 @@ const PipelineRunCoordinatorLive = effect(PipelineRunCoordinator, gen(function*
317239
317535
  if (!preparedHandoffMatchesRun(preparedHandoff, input.runId)) return yield* coordinatorError("registerHandoff", "PIPELINE_HANDOFF_PREPARATION_INVALID", "The pipeline handoff preparation is missing, belongs to another run, or was already consumed.");
317240
317536
  preparedHandoffs.delete(input.preparedHandoff);
317241
317537
  const ownedProviderAuthorityInstallations = /* @__PURE__ */ new Set();
317242
- const preparedAuthorityRef = yield* make$50({
317538
+ const preparedAuthorityRef = yield* make$49({
317243
317539
  authority: preparedHandoff.authority,
317244
317540
  preparation: preparedHandoff.providerAuthorityPreparation
317245
317541
  });
317246
- const acceptingHeartbeatRef = yield* make$50(true);
317247
- const heartbeatPublicationSemaphore = yield* make$44(1);
317542
+ const acceptingHeartbeatRef = yield* make$49(true);
317543
+ const heartbeatPublicationSemaphore = yield* make$43(1);
317248
317544
  if ((yield* store.getByRunId(input.runId)) !== null) return yield* coordinatorError("registerHandoff", "PIPELINE_HANDOFF_ALREADY_BOUND", "The CMMD run already has a Forge task thread and must use the authority rebind contract.");
317249
317545
  const snapshot = preparedHandoff.snapshot;
317250
317546
  const readModel = yield* orchestration.getReadModel();
@@ -321126,7 +321422,7 @@ function makeProjectLeadSchedulerLive(options = {}) {
321126
321422
  return effect(ProjectLeadScheduler, gen(function* () {
321127
321423
  const client = yield* ProjectLeadControllerClient;
321128
321424
  const dispatcher = yield* ProjectLeadReservationDispatcher;
321129
- const semaphore = yield* make$44(1);
321425
+ const semaphore = yield* make$43(1);
321130
321426
  const leaseSeconds = options.leaseSeconds ?? DEFAULT_LEASE_SECONDS;
321131
321427
  const batchSize = options.batchSize ?? DEFAULT_BATCH_SIZE;
321132
321428
  const projectLimit = options.projectLimit ?? DEFAULT_PROJECT_LIMIT;
@@ -322091,14 +322387,14 @@ const AgentProtocolReactorLive = effect(AgentProtocolReactor, gen(function* () {
322091
322387
  const PRUNE_GRACE_MS = 6e4;
322092
322388
  const makeUserSlot = gen(function* () {
322093
322389
  return {
322094
- snapshotRef: yield* make$50(null),
322390
+ snapshotRef: yield* make$49(null),
322095
322391
  pubsub: yield* unbounded$1(),
322096
- subscriberCountRef: yield* make$50(0)
322392
+ subscriberCountRef: yield* make$49(0)
322097
322393
  };
322098
322394
  });
322099
322395
  const WorkspaceReadinessStateLive = effect(WorkspaceReadinessState, gen(function* () {
322100
- const slotsRef = yield* make$32(/* @__PURE__ */ new Map());
322101
- const pruneScope = yield* make$37("sequential");
322396
+ const slotsRef = yield* make$31(/* @__PURE__ */ new Map());
322397
+ const pruneScope = yield* make$36("sequential");
322102
322398
  yield* addFinalizer$2(() => close(pruneScope, void_$3));
322103
322399
  /**
322104
322400
  * Atomically get-or-create the slot for `userId`. The Synchronized wrapper
@@ -323159,8 +323455,8 @@ const PtyAdapterLive = unwrap(gen(function* () {
323159
323455
  }));
323160
323456
  const HttpServerLive = unwrap(gen(function* () {
323161
323457
  const config = yield* ServerConfig;
323162
- if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunHttpServer-BpaVqxli.mjs"))).layer(bunHttpServerOptions(config));
323163
- const [NodeHttpServer, NodeHttp] = yield* all([promise(() => import("./NodeHttpServer-DePOzmYy.mjs")), promise(() => import("node:http"))]);
323458
+ if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunHttpServer-o7ISooSQ.mjs"))).layer(bunHttpServerOptions(config));
323459
+ const [NodeHttpServer, NodeHttp] = yield* all([promise(() => import("./NodeHttpServer-BngJqAIT.mjs")), promise(() => import("node:http"))]);
323164
323460
  return NodeHttpServer.layer(NodeHttp.createServer, {
323165
323461
  host: config.host,
323166
323462
  port: config.port
@@ -323175,7 +323471,7 @@ const PlatformServicesLive = unwrap(gen(function* () {
323175
323471
  return layer;
323176
323472
  }
323177
323473
  }));
323178
- const RuntimeReplicationLayerLive = RuntimeReplicationLive.pipe(provideMerge(RuntimeReplicationClientLive), provideMerge(RuntimeReplicationOutboxLive), provideMerge(ActiveHourMeterLive.pipe(provide$1(RuntimeReplicationOutboxLive))));
323474
+ const RuntimeReplicationLayerLive = RuntimeReplicationLive.pipe(provideMerge(RuntimeReplicationClientLive), provideMerge(RuntimeReplicationOutboxLive), provideMerge(RuntimeReplicationThreadFlushLive), provideMerge(ActiveHourMeterLive.pipe(provide$1(RuntimeReplicationOutboxLive))));
323179
323475
  const RuntimeDrainLayerLive = RuntimeDrainReporterLive.pipe(provideMerge(RuntimeDrainStateLive));
323180
323476
  const RuntimeAwareProviderReactorsLive = mergeAll(ProviderRuntimeIngestionLive, ProviderCommandReactorLive).pipe(provide$1(RuntimeDrainLayerLive), provideMerge(RuntimeDrainStateLive), provide$1(ClaudeUsageTelemetryLive));
323181
323477
  const PipelineWorkerCoordinatorLayerLive = PipelineWorkerCoordinatorLive.pipe(provideMerge(PipelineRunClientLive));
@@ -323948,7 +324244,7 @@ const tokenOnlyFlag = boolean$2("token-only").pipe(withDescription$2("Print only
323948
324244
  * it stays least-privilege unless the operator asks otherwise.
323949
324245
  */
323950
324246
  const pairingRoleFlag = choice("role", ["owner", "client"]).pipe(withDescription$2("Role for the issued pairing token."), withDefault("client"));
323951
- const pairingCreateCommand = make$34("create", {
324247
+ const pairingCreateCommand = make$33("create", {
323952
324248
  ...authLocationFlags,
323953
324249
  ttl: ttlFlag,
323954
324250
  role: pairingRoleFlag,
@@ -323966,24 +324262,24 @@ const pairingCreateCommand = make$34("create", {
323966
324262
  ...isSome(flags.baseUrl) ? { baseUrl: flags.baseUrl.value } : {}
323967
324263
  }));
323968
324264
  }), { quietLogs: flags.json })));
323969
- const pairingListCommand = make$34("list", {
324265
+ const pairingListCommand = make$33("list", {
323970
324266
  ...authLocationFlags,
323971
324267
  json: jsonFlag
323972
324268
  }).pipe(withDescription$1("List active client pairing tokens without revealing their secrets."), withHandler((flags) => runWithAuthControlPlane(flags, (authControlPlane) => gen(function* () {
323973
324269
  yield* log$3(formatPairingCredentialList(yield* authControlPlane.listPairingLinks({ role: "client" }), { json: flags.json }));
323974
324270
  }), { quietLogs: flags.json })));
323975
- const pairingRevokeCommand = make$34("revoke", {
324271
+ const pairingRevokeCommand = make$33("revoke", {
323976
324272
  ...authLocationFlags,
323977
324273
  id: string$4("id").pipe(withDescription$3("Pairing credential id to revoke."))
323978
324274
  }).pipe(withDescription$1("Revoke an active client pairing token."), withHandler((flags) => runWithAuthControlPlane(flags, (authControlPlane) => gen(function* () {
323979
324275
  yield* log$3((yield* authControlPlane.revokePairingLink(flags.id)) ? `Revoked pairing credential ${flags.id}.\n` : `No active pairing credential found for ${flags.id}.\n`);
323980
324276
  }))));
323981
- const pairingCommand = make$34("pairing").pipe(withDescription$1("Manage one-time client pairing tokens."), withSubcommands([
324277
+ const pairingCommand = make$33("pairing").pipe(withDescription$1("Manage one-time client pairing tokens."), withSubcommands([
323982
324278
  pairingCreateCommand,
323983
324279
  pairingListCommand,
323984
324280
  pairingRevokeCommand
323985
324281
  ]));
323986
- const sessionIssueCommand = make$34("issue", {
324282
+ const sessionIssueCommand = make$33("issue", {
323987
324283
  ...authLocationFlags,
323988
324284
  ttl: ttlFlag,
323989
324285
  role: sessionRoleFlag,
@@ -324002,25 +324298,25 @@ const sessionIssueCommand = make$34("issue", {
324002
324298
  tokenOnly: flags.tokenOnly
324003
324299
  }));
324004
324300
  }), { quietLogs: flags.json || flags.tokenOnly })));
324005
- const sessionListCommand = make$34("list", {
324301
+ const sessionListCommand = make$33("list", {
324006
324302
  ...authLocationFlags,
324007
324303
  json: jsonFlag
324008
324304
  }).pipe(withDescription$1("List active sessions without revealing bearer tokens."), withHandler((flags) => runWithAuthControlPlane(flags, (authControlPlane) => gen(function* () {
324009
324305
  yield* log$3(formatSessionList(yield* authControlPlane.listSessions(), { json: flags.json }));
324010
324306
  }), { quietLogs: flags.json })));
324011
- const sessionRevokeCommand = make$34("revoke", {
324307
+ const sessionRevokeCommand = make$33("revoke", {
324012
324308
  ...authLocationFlags,
324013
324309
  sessionId: string$4("session-id").pipe(withDescription$3("Session id to revoke."), withSchema$1(AuthSessionId))
324014
324310
  }).pipe(withDescription$1("Revoke an active session."), withHandler((flags) => runWithAuthControlPlane(flags, (authControlPlane) => gen(function* () {
324015
324311
  yield* log$3((yield* authControlPlane.revokeSession(flags.sessionId)) ? `Revoked session ${flags.sessionId}.\n` : `No active session found for ${flags.sessionId}.\n`);
324016
324312
  }))));
324017
- const sessionCommand = make$34("session").pipe(withDescription$1("Manage bearer sessions."), withSubcommands([
324313
+ const sessionCommand = make$33("session").pipe(withDescription$1("Manage bearer sessions."), withSubcommands([
324018
324314
  sessionIssueCommand,
324019
324315
  sessionListCommand,
324020
324316
  sessionRevokeCommand
324021
324317
  ]));
324022
- const authCommand = make$34("auth").pipe(withDescription$1("Manage the local auth control plane for headless deployments."), withSubcommands([pairingCommand, sessionCommand]));
324023
- const projectAddCommand = make$34("add", {
324318
+ const authCommand = make$33("auth").pipe(withDescription$1("Manage the local auth control plane for headless deployments."), withSubcommands([pairingCommand, sessionCommand]));
324319
+ const projectAddCommand = make$33("add", {
324024
324320
  ...projectLocationFlags,
324025
324321
  workspaceRoot: string$4("path").pipe(withDescription$3("Workspace root to add as a project.")),
324026
324322
  title: string$3("title").pipe(withDescription$2("Optional project title."), optional$1)
@@ -324040,7 +324336,7 @@ const projectAddCommand = make$34("add", {
324040
324336
  });
324041
324337
  return `Added project ${projectId} (${title}) at ${workspaceRoot}.`;
324042
324338
  }))));
324043
- const projectRemoveCommand = make$34("remove", {
324339
+ const projectRemoveCommand = make$33("remove", {
324044
324340
  ...projectLocationFlags,
324045
324341
  project: string$4("project").pipe(withDescription$3("Project id or workspace root to remove."))
324046
324342
  }).pipe(withDescription$1("Remove a project."), withHandler((flags) => runProjectMutation(flags, fn$1("projectRemoveMutation")(function* ({ snapshot, dispatch }) {
@@ -324055,7 +324351,7 @@ const projectRemoveCommand = make$34("remove", {
324055
324351
  });
324056
324352
  return `Removed project ${project.id} (${project.title}).`;
324057
324353
  }))));
324058
- const projectRenameCommand = make$34("rename", {
324354
+ const projectRenameCommand = make$33("rename", {
324059
324355
  ...projectLocationFlags,
324060
324356
  project: string$4("project").pipe(withDescription$3("Project id or workspace root to rename.")),
324061
324357
  title: string$4("title").pipe(withDescription$3("New project title."))
@@ -324078,12 +324374,12 @@ const parseCmmdProjectId = (value) => {
324078
324374
  const projectId = Number(value);
324079
324375
  return Number.isSafeInteger(projectId) && projectId > 0 ? succeed(projectId) : fail(/* @__PURE__ */ new Error(`Invalid CMMD project id '${value}'. Expected a positive integer.`));
324080
324376
  };
324081
- const projectLeadExplainCommand = make$34("explain", {
324377
+ const projectLeadExplainCommand = make$33("explain", {
324082
324378
  ...projectLocationFlags,
324083
324379
  projectId: string$4("project-id").pipe(withDescription$3("Numeric CMMD project id.")),
324084
324380
  json: jsonFlag
324085
324381
  }).pipe(withDescription$1("Explain canonical Project Lead controller state."), withHandler((flags) => parseCmmdProjectId(flags.projectId).pipe(flatMap((projectId) => runProjectLeadQuery(flags, projectId, (explanation) => flags.json ? JSON.stringify(explanation, null, 2) : formatProjectLeadExplanation(projectId, explanation))))));
324086
- const projectLeadDoctorCommand = make$34("doctor", {
324382
+ const projectLeadDoctorCommand = make$33("doctor", {
324087
324383
  ...projectLocationFlags,
324088
324384
  projectId: string$4("project-id").pipe(withDescription$3("Numeric CMMD project id.")),
324089
324385
  json: jsonFlag
@@ -324091,7 +324387,7 @@ const projectLeadDoctorCommand = make$34("doctor", {
324091
324387
  const report = diagnoseProjectLead(projectId, explanation);
324092
324388
  return flags.json ? JSON.stringify(report, null, 2) : formatProjectLeadDoctor(report);
324093
324389
  })))));
324094
- const projectLeadCommand = make$34("lead").pipe(withDescription$1("Inspect the CMMD-owned Project Lead controller."), withSubcommands([projectLeadExplainCommand, projectLeadDoctorCommand]));
324390
+ const projectLeadCommand = make$33("lead").pipe(withDescription$1("Inspect the CMMD-owned Project Lead controller."), withSubcommands([projectLeadExplainCommand, projectLeadDoctorCommand]));
324095
324391
  const connectStatePathFor = fn$1("connectStatePathFor")(function* (flags) {
324096
324392
  const config = yield* resolveCliAuthConfig(flags, yield* LogLevel);
324097
324393
  return (yield* Path$2).join(config.stateDir, "connect.json");
@@ -324104,18 +324400,18 @@ const runConnectCommand = (flags, update) => gen(function* () {
324104
324400
  const state = next ?? current;
324105
324401
  yield* log$3(flags.json ? JSON.stringify(state, null, 2) : formatConnectStatus(state));
324106
324402
  });
324107
- const connectStatusCommand = make$34("status", {
324403
+ const connectStatusCommand = make$33("status", {
324108
324404
  ...projectLocationFlags,
324109
324405
  json: jsonFlag
324110
324406
  }).pipe(withDescription$1("Show whether this machine is offered to CMMD over the relay."), withHandler((flags) => runConnectCommand(flags, () => null)));
324111
- const connectLinkCommand = make$34("link", {
324407
+ const connectLinkCommand = make$33("link", {
324112
324408
  ...projectLocationFlags,
324113
324409
  json: jsonFlag
324114
324410
  }).pipe(withDescription$1("Offer this machine to CMMD over the relay on the next start."), withHandler((flags) => runConnectCommand(flags, (current) => ({
324115
324411
  ...current,
324116
324412
  linked: true
324117
324413
  }))));
324118
- const connectUnlinkCommand = make$34("unlink", {
324414
+ const connectUnlinkCommand = make$33("unlink", {
324119
324415
  ...projectLocationFlags,
324120
324416
  json: jsonFlag
324121
324417
  }).pipe(withDescription$1("Stop offering this machine, keeping its runtime identity so relinking is the same device."), withHandler((flags) => runConnectCommand(flags, (current) => ({
@@ -324126,7 +324422,7 @@ const noBrowserLoginFlag = boolean$2("no-browser").pipe(withDescription$2("Print
324126
324422
  const CONNECT_CLI_CLIENT_ID = "cmmd-forge-web";
324127
324423
  const connectSecretsFor = (stateDir) => createFileSecretStorage({ keyPath: Path$1.join(stateDir, "connect-secret.key") });
324128
324424
  const loginEmailFlag = string$3("email").pipe(withDescription$2("Sign in with this CMMD email and a password prompt instead of the browser flow."), optional$1);
324129
- const connectLoginCommand = make$34("login", {
324425
+ const connectLoginCommand = make$33("login", {
324130
324426
  ...projectLocationFlags,
324131
324427
  noBrowser: noBrowserLoginFlag,
324132
324428
  email: loginEmailFlag
@@ -324193,7 +324489,7 @@ const connectLoginCommand = make$34("login", {
324193
324489
  });
324194
324490
  yield* log$3("Signed in to CMMD. Run `cmmd-forge connect link` to offer this machine.");
324195
324491
  })));
324196
- const connectLogoutCommand = make$34("logout", { ...projectLocationFlags }).pipe(withDescription$1("Sign this machine out of CMMD and stop offering it."), withHandler((flags) => gen(function* () {
324492
+ const connectLogoutCommand = make$33("logout", { ...projectLocationFlags }).pipe(withDescription$1("Sign this machine out of CMMD and stop offering it."), withHandler((flags) => gen(function* () {
324197
324493
  const config = yield* resolveCliAuthConfig(flags, yield* LogLevel);
324198
324494
  const statePath = Path$1.join(config.stateDir, "connect.json");
324199
324495
  writeConnectState(statePath, {
@@ -324203,14 +324499,14 @@ const connectLogoutCommand = make$34("logout", { ...projectLocationFlags }).pipe
324203
324499
  clearConnectCredential(Path$1.join(config.stateDir, "connect-credential.json"));
324204
324500
  yield* log$3("Signed out of CMMD and stopped offering this machine.");
324205
324501
  })));
324206
- const connectCommand = make$34("connect").pipe(withDescription$1("Offer this machine to CMMD so other surfaces can reach it."), withSubcommands([
324502
+ const connectCommand = make$33("connect").pipe(withDescription$1("Offer this machine to CMMD so other surfaces can reach it."), withSubcommands([
324207
324503
  connectStatusCommand,
324208
324504
  connectLoginCommand,
324209
324505
  connectLogoutCommand,
324210
324506
  connectLinkCommand,
324211
324507
  connectUnlinkCommand
324212
324508
  ]));
324213
- const projectCommand = make$34("project").pipe(withDescription$1("Manage projects."), withSubcommands([
324509
+ const projectCommand = make$33("project").pipe(withDescription$1("Manage projects."), withSubcommands([
324214
324510
  projectAddCommand,
324215
324511
  projectRemoveCommand,
324216
324512
  projectRenameCommand,
@@ -324225,12 +324521,12 @@ const runServerCommand = (flags, options) => gen(function* () {
324225
324521
  });
324226
324522
  return yield* runServer.pipe(provideService(ServerConfig, config));
324227
324523
  });
324228
- const startCommand = make$34("start", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server."), withHandler((flags) => runServerCommand(flags)));
324229
- const serveCommand = make$34("serve", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server without opening a browser and print headless pairing details."), withHandler((flags) => runServerCommand(flags, {
324524
+ const startCommand = make$33("start", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server."), withHandler((flags) => runServerCommand(flags)));
324525
+ const serveCommand = make$33("serve", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server without opening a browser and print headless pairing details."), withHandler((flags) => runServerCommand(flags, {
324230
324526
  startupPresentation: "headless",
324231
324527
  forceAutoBootstrapProjectFromCwd: false
324232
324528
  })));
324233
- const cli = make$34("cmmd-forge", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server."), withHandler((flags) => runServerCommand(flags)), withSubcommands([
324529
+ const cli = make$33("cmmd-forge", { ...sharedServerCommandFlags }).pipe(withDescription$1("Run the Forge server."), withHandler((flags) => runServerCommand(flags)), withSubcommands([
324234
324530
  startCommand,
324235
324531
  serveCommand,
324236
324532
  authCommand,