@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.
- package/dist/{BunHttpServer-DTG5XWSi.cjs → BunHttpServer-CtFGbsWr.cjs} +2 -2
- package/dist/{BunHttpServer-BpaVqxli.mjs → BunHttpServer-o7ISooSQ.mjs} +2 -2
- package/dist/{HttpServer-5UTabe01.mjs → HttpServer-BbbI8N6_.mjs} +79 -39
- package/dist/{HttpServer-DZ6iaxyk.cjs → HttpServer-CRBqMWdP.cjs} +47 -1
- package/dist/{NodeHttpServer-DePOzmYy.mjs → NodeHttpServer-BngJqAIT.mjs} +2 -2
- package/dist/{NodeHttpServer-RV5QsVeb.cjs → NodeHttpServer-DyI6OyMg.cjs} +2 -2
- package/dist/bin.cjs +600 -304
- package/dist/bin.mjs +710 -414
- package/dist/client/assets/{CanvasPanel-By1TNSCJ.js → CanvasPanel-BsTCRB1I.js} +2 -2
- package/dist/client/assets/{CompositeItem-B4KFI6uM.js → CompositeItem-DNkNENOR.js} +2 -2
- package/dist/client/assets/{DiffPanel-W2IJB2F9.js → DiffPanel-CQF1ISJz.js} +2 -2
- package/dist/client/assets/{DiffPanel.logic-D-ynbsKZ.js → DiffPanel.logic-ZO6qepWo.js} +2 -2
- package/dist/client/assets/{DiffWorkerPoolProvider-h4bACnie.js → DiffWorkerPoolProvider-B7F6vAh9.js} +2 -2
- package/dist/client/assets/{PullRequestCodePanel-Bphx591a.js → PullRequestCodePanel-B93y-X1L.js} +2 -2
- package/dist/client/assets/{Virtualizer-BGM8Aavb.js → Virtualizer-BtFYmUB0.js} +2 -2
- package/dist/client/assets/{WorkerPoolContext-dJEWASlP.js → WorkerPoolContext-VAp-zZQ5.js} +31 -31
- package/dist/client/assets/{canvasStateStore-DoXLRnB-.js → canvasStateStore-Dl3vO1ug.js} +2 -2
- package/dist/client/assets/{cmmdAuthRedirect-DJMI3b92.js → cmmdAuthRedirect-DCgS12fq.js} +2 -2
- package/dist/client/assets/{index-_uhZ-JUt.js → index-BhdZllxU.js} +60 -60
- package/dist/client/assets/{popover-DlZTqPIV.js → popover-C9fxnFA4.js} +2 -2
- package/dist/client/assets/{src-1F7f5y9L.js → src-DFTFXdyK.js} +2 -2
- package/dist/client/assets/{toggle-BwedUJ-z.js → toggle-Ks6yUkoN.js} +2 -2
- package/dist/client/index.html +10 -10
- package/dist/forge-build.json +1 -1
- 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$
|
|
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$
|
|
6
|
-
import { _ as ChildProcessSpawner, a as Stdio, g as make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26109
|
+
const WsServerRefreshProvidersRpc = make$29(WS_METHODS.serverRefreshProviders, {
|
|
26089
26110
|
payload: Struct({}),
|
|
26090
26111
|
success: ServerProviderUpdatedPayload
|
|
26091
26112
|
});
|
|
26092
|
-
const WsServerStartProviderAuthRpc = make$
|
|
26113
|
+
const WsServerStartProviderAuthRpc = make$29(WS_METHODS.serverStartProviderAuth, {
|
|
26093
26114
|
payload: ProviderAuthStartInput,
|
|
26094
26115
|
success: ProviderAuthSession
|
|
26095
26116
|
});
|
|
26096
|
-
const WsServerRepairProviderAuthRuntimeRpc = make$
|
|
26117
|
+
const WsServerRepairProviderAuthRuntimeRpc = make$29(WS_METHODS.serverRepairProviderAuthRuntime, {
|
|
26097
26118
|
payload: ProviderAuthRuntimeRepairInput,
|
|
26098
26119
|
success: ProviderAuthRuntimeRepairResult
|
|
26099
26120
|
});
|
|
26100
|
-
const WsServerDisconnectProviderAuthRpc = make$
|
|
26121
|
+
const WsServerDisconnectProviderAuthRpc = make$29(WS_METHODS.serverDisconnectProviderAuth, {
|
|
26101
26122
|
payload: ProviderAuthDisconnectInput,
|
|
26102
26123
|
success: ServerProviderUpdatedPayload
|
|
26103
26124
|
});
|
|
26104
|
-
const WsServerGetProviderAuthSessionRpc = make$
|
|
26125
|
+
const WsServerGetProviderAuthSessionRpc = make$29(WS_METHODS.serverGetProviderAuthSession, {
|
|
26105
26126
|
payload: ProviderAuthSessionInput,
|
|
26106
26127
|
success: ProviderAuthSession
|
|
26107
26128
|
});
|
|
26108
|
-
const WsServerCancelProviderAuthRpc = make$
|
|
26129
|
+
const WsServerCancelProviderAuthRpc = make$29(WS_METHODS.serverCancelProviderAuth, {
|
|
26109
26130
|
payload: ProviderAuthSessionInput,
|
|
26110
26131
|
success: ProviderAuthSession
|
|
26111
26132
|
});
|
|
26112
|
-
const WsServerSubmitProviderAuthCodeRpc = make$
|
|
26133
|
+
const WsServerSubmitProviderAuthCodeRpc = make$29(WS_METHODS.serverSubmitProviderAuthCode, {
|
|
26113
26134
|
payload: ProviderAuthSubmitCodeInput,
|
|
26114
26135
|
success: ProviderAuthSession
|
|
26115
26136
|
});
|
|
26116
|
-
const WsServerSyncPersonalCodexToCloudRpc = make$
|
|
26137
|
+
const WsServerSyncPersonalCodexToCloudRpc = make$29(WS_METHODS.serverSyncPersonalCodexToCloud, {
|
|
26117
26138
|
payload: ProviderCredentialCloudSyncInput,
|
|
26118
26139
|
success: ProviderCredentialCloudSyncResult
|
|
26119
26140
|
});
|
|
26120
|
-
const WsServerSyncPersonalClaudeToCloudRpc = make$
|
|
26141
|
+
const WsServerSyncPersonalClaudeToCloudRpc = make$29(WS_METHODS.serverSyncPersonalClaudeToCloud, {
|
|
26121
26142
|
payload: ProviderCredentialCloudSyncInput,
|
|
26122
26143
|
success: ProviderCredentialCloudSyncResult
|
|
26123
26144
|
});
|
|
26124
|
-
const WsServerGetSettingsRpc = make$
|
|
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$
|
|
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$
|
|
26155
|
+
const WsServerUpdateEnvironmentDisplayNameRpc = make$29(WS_METHODS.serverUpdateEnvironmentDisplayName, {
|
|
26135
26156
|
payload: ServerEnvironmentDisplayNameUpdateInput,
|
|
26136
26157
|
success: ServerEnvironmentDisplayNameUpdateResult
|
|
26137
26158
|
});
|
|
26138
|
-
const WsServerTraceDiagnosticsRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26268
|
+
const WsProjectCheckoutDeletionPreviewRpc = make$29(WS_METHODS.projectCheckoutDeletionPreview, {
|
|
26248
26269
|
payload: ProjectCheckoutDeletionPreviewInput,
|
|
26249
26270
|
success: ProjectCheckoutDeletionPreview
|
|
26250
26271
|
});
|
|
26251
|
-
const WsProjectCheckoutDeletionExecuteRpc = make$
|
|
26272
|
+
const WsProjectCheckoutDeletionExecuteRpc = make$29(WS_METHODS.projectCheckoutDeletionExecute, {
|
|
26252
26273
|
payload: ProjectCheckoutDeletionExecuteInput,
|
|
26253
26274
|
success: ProjectCheckoutDeletionResult
|
|
26254
26275
|
});
|
|
26255
|
-
const WsWorkspaceReadFileRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26302
|
+
const WsShellOpenInEditorRpc = make$29(WS_METHODS.shellOpenInEditor, {
|
|
26282
26303
|
payload: OpenInEditorInput,
|
|
26283
26304
|
error: OpenError$1
|
|
26284
26305
|
});
|
|
26285
|
-
const WsSubscribeGitStatusRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26369
|
+
const WsVcsRemoveWorktreeRpc = make$29(WS_METHODS.vcsRemoveWorktree, {
|
|
26349
26370
|
payload: GitRemoveWorktreeInput,
|
|
26350
26371
|
error: GitCommandError
|
|
26351
26372
|
});
|
|
26352
|
-
const WsVcsCreateRefRpc = make$
|
|
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$
|
|
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$
|
|
26383
|
+
const WsVcsInitRpc = make$29(WS_METHODS.vcsInit, {
|
|
26363
26384
|
payload: VcsInitInput,
|
|
26364
26385
|
error: Union([GitCommandError, VcsUnsupportedRequestError])
|
|
26365
26386
|
});
|
|
26366
|
-
const WsGitCreateWorktreeRpc = make$
|
|
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$
|
|
26392
|
+
const WsGitRemoveWorktreeRpc = make$29(WS_METHODS.gitRemoveWorktree, {
|
|
26372
26393
|
payload: GitRemoveWorktreeInput,
|
|
26373
26394
|
error: GitCommandError
|
|
26374
26395
|
});
|
|
26375
|
-
const WsGitCreateBranchRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26495
|
+
const WsBrowserCloseSessionRpc = make$29(WS_METHODS.browserCloseSession, {
|
|
26475
26496
|
payload: BrowserCloseSessionInput,
|
|
26476
26497
|
error: BrowserError
|
|
26477
26498
|
});
|
|
26478
|
-
const WsBrowserGetSessionRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26541
|
+
const WsDevTunnelUnregisterRpc = make$29(WS_METHODS.devTunnelUnregister, {
|
|
26521
26542
|
payload: DevTunnelUnregisterInput,
|
|
26522
26543
|
error: DevTunnelError
|
|
26523
26544
|
});
|
|
26524
|
-
const WsDevTunnelListRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
26560
|
+
const WsThreadDevRuntimeReleaseRpc = make$29(WS_METHODS.threadDevRuntimeRelease, {
|
|
26540
26561
|
payload: ThreadDevRuntimeReleaseInput,
|
|
26541
26562
|
error: ThreadDevRuntimeError
|
|
26542
26563
|
});
|
|
26543
|
-
const WsWorkspaceEnvironmentPreflightRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26658
|
-
const WsServerDiscoverSourceControlRpc = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
26729
|
+
}), make$29(WS_METHODS.attachmentsCreateUploadUrl, {
|
|
26709
26730
|
payload: AttachmentCreateUploadUrlInput,
|
|
26710
26731
|
success: AttachmentCreateUploadUrlResult,
|
|
26711
26732
|
error: AttachmentUploadSigningKeyError
|
|
26712
|
-
}), make$
|
|
26733
|
+
}), make$29(WS_METHODS.attachmentsDelete, {
|
|
26713
26734
|
payload: AttachmentDeleteInput,
|
|
26714
26735
|
success: Void
|
|
26715
|
-
}), make$
|
|
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$
|
|
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$
|
|
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$
|
|
34879
|
-
const router = make$
|
|
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$
|
|
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.
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
84264
|
+
const writeSemaphore = yield* make$43(1);
|
|
84244
84265
|
const cacheKey = "settings";
|
|
84245
84266
|
const changesPubSub = yield* unbounded$1();
|
|
84246
|
-
const startedRef = yield* make$
|
|
84247
|
-
const startedDeferred = yield* make$
|
|
84248
|
-
const watcherScope = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
93515
|
+
const upsertSemaphore = yield* make$43(1);
|
|
93495
93516
|
const resolvedConfigCacheKey = "resolved";
|
|
93496
93517
|
const changesPubSub = yield* unbounded$1();
|
|
93497
|
-
const startedRef = yield* make$
|
|
93498
|
-
const startedDeferred = yield* make$
|
|
93499
|
-
const watcherScope = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
99884
|
-
const untilTime = input.untilTime === void 0 ? none$4() : make$
|
|
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$
|
|
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$
|
|
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$
|
|
100112
|
+
const scanScope = yield* make$36("sequential");
|
|
100092
100113
|
yield* addFinalizer$2(() => close(scanScope, void_$3));
|
|
100093
|
-
const scanSemaphore = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
100591
|
+
const commandReady = yield* make$38();
|
|
100571
100592
|
const commandQueue = yield* unbounded$2();
|
|
100572
|
-
const commandReadinessState = yield* make$
|
|
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$
|
|
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$
|
|
100801
|
-
const reactorScope = yield* make$
|
|
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$
|
|
101573
|
-
const usedPorts = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
214348
|
-
const settingsRef = yield* make$
|
|
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$
|
|
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
|
-
|
|
214372
|
-
|
|
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
|
|
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$
|
|
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$
|
|
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: !
|
|
215277
|
+
installed: !commandMissing,
|
|
215228
215278
|
version: null,
|
|
215229
215279
|
status: "error",
|
|
215230
215280
|
auth: { status: "unknown" },
|
|
215231
|
-
message:
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
222953
|
-
const terminationHandled = yield* make$
|
|
222954
|
-
const extPending = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
223294
|
-
const ClientRpcs = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
223476
|
+
yield* make$23(ClientRpcs).pipe(provideService(Protocol, transport.serverProtocol), provide(clientHandlerLayer), forkScoped);
|
|
223425
223477
|
let nextRpcRequestId = 1n << 32n;
|
|
223426
|
-
const rpc = yield* make$
|
|
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$
|
|
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$
|
|
223554
|
-
const toolCallsRef = yield* make$
|
|
223555
|
-
const assistantSegmentRef = yield* make$
|
|
223556
|
-
const configOptionsRef = yield* make$
|
|
223557
|
-
const startStateRef = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
231912
|
-
const stderrRef = yield* make$
|
|
231913
|
-
const readyDeferred = yield* make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
236695
|
-
const cacheRef = yield* make$
|
|
236696
|
-
const pollersRef = yield* make$
|
|
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$
|
|
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$
|
|
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: !
|
|
237426
|
+
installed: !commandMissing,
|
|
237373
237427
|
version: null,
|
|
237374
237428
|
status: "error",
|
|
237375
237429
|
auth: { status: "unknown" },
|
|
237376
|
-
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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 =
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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
|
-
*
|
|
295037
|
-
*
|
|
295038
|
-
*
|
|
295039
|
-
*
|
|
295040
|
-
*
|
|
295041
|
-
*
|
|
295042
|
-
*
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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$
|
|
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$
|
|
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
|
|
296216
|
-
const [previousProviders, providers] = yield* modify$3(providersRef, (previousProviders) => {
|
|
296217
|
-
const
|
|
296218
|
-
|
|
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 [[
|
|
296482
|
+
return [[
|
|
296483
|
+
previousProviders,
|
|
296484
|
+
providers,
|
|
296485
|
+
resolvedProviders
|
|
296486
|
+
], providers];
|
|
296221
296487
|
});
|
|
296222
296488
|
if (haveProvidersChanged(previousProviders, providers)) {
|
|
296223
|
-
yield* forEach(
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
299114
|
-
return make$
|
|
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 "
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
317538
|
+
const preparedAuthorityRef = yield* make$49({
|
|
317243
317539
|
authority: preparedHandoff.authority,
|
|
317244
317540
|
preparation: preparedHandoff.providerAuthorityPreparation
|
|
317245
317541
|
});
|
|
317246
|
-
const acceptingHeartbeatRef = yield* make$
|
|
317247
|
-
const heartbeatPublicationSemaphore = yield* make$
|
|
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$
|
|
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$
|
|
322390
|
+
snapshotRef: yield* make$49(null),
|
|
322095
322391
|
pubsub: yield* unbounded$1(),
|
|
322096
|
-
subscriberCountRef: yield* make$
|
|
322392
|
+
subscriberCountRef: yield* make$49(0)
|
|
322097
322393
|
};
|
|
322098
322394
|
});
|
|
322099
322395
|
const WorkspaceReadinessStateLive = effect(WorkspaceReadinessState, gen(function* () {
|
|
322100
|
-
const slotsRef = yield* make$
|
|
322101
|
-
const pruneScope = yield* make$
|
|
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-
|
|
323163
|
-
const [NodeHttpServer, NodeHttp] = yield* all([promise(() => import("./NodeHttpServer-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
324023
|
-
const projectAddCommand = make$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
324229
|
-
const serveCommand = make$
|
|
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$
|
|
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,
|