@cmmd-center/forge 0.9.5 → 0.9.6
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-BgNCpQzV.mjs → BunHttpServer-C_855q3m.mjs} +6 -6
- package/dist/{BunHttpServer-DOAuw4Iq.cjs → BunHttpServer-Dxx0kzQc.cjs} +6 -6
- package/dist/{BunPTY-D-Klry5N.mjs → BunPTY-B7ThejfA.mjs} +3 -3
- package/dist/{BunPTY-2icf7sRj.cjs → BunPTY-BjHFZATJ.cjs} +3 -3
- package/dist/{BunServices-ChM4mYH9.mjs → BunServices-BFygTrvx.mjs} +3 -3
- package/dist/{BunServices-CiNXNzHD.cjs → BunServices-U1VBnEJS.cjs} +3 -3
- package/dist/{Cache-XSj5g7uG.cjs → Cache-BRhFH80U.cjs} +3 -3
- package/dist/{Cache-Cm78WiyU.mjs → Cache-CHvh_vWI.mjs} +3 -3
- package/dist/{Config-DMA9WqtC.cjs → Config-BHRBB8XM.cjs} +2 -2
- package/dist/{Config-DrOyN3WS.mjs → Config-To1VEqlB.mjs} +2 -2
- package/dist/{HttpServer-aJkhz6yu.cjs → HttpServer-BTcgkY38.cjs} +123 -4
- package/dist/{HttpServer-ByyNdEXm.mjs → HttpServer-DV-x5DVo.mjs} +118 -4
- package/dist/{NodeHttpServer-D_ismXpd.cjs → NodeHttpServer-D6YVHsL8.cjs} +7 -7
- package/dist/{NodeHttpServer-C_wePPV0.mjs → NodeHttpServer-DgD75IAg.mjs} +7 -7
- package/dist/{NodePTY-cb7HIasY.cjs → NodePTY-Bd9mvI6U.cjs} +4 -4
- package/dist/{NodePTY-BMUFdM93.mjs → NodePTY-RnitYPTs.mjs} +4 -4
- package/dist/{NodeServices-BAl07hlH.cjs → NodeServices-BcQL_53W.cjs} +1 -1
- package/dist/{NodeServices-BISZRY3e.cjs → NodeServices-BjmXNhpe.cjs} +3 -3
- package/dist/{NodeServices-Bqqy4DuH.mjs → NodeServices-Da5rUDDE.mjs} +3 -3
- package/dist/{NodeSqliteClient-SsUCk9mA.cjs → NodeSqliteClient-CG_mPdVp.cjs} +6 -6
- package/dist/{NodeSqliteClient-OdI1TawL.mjs → NodeSqliteClient-CcLD4Zvr.mjs} +6 -6
- package/dist/{NodeTerminal-B9u7fFYa.cjs → NodeTerminal-D86oor5_.cjs} +3 -3
- package/dist/{NodeTerminal-_XekCzf-.mjs → NodeTerminal-Ke6chk0A.mjs} +3 -3
- package/dist/{PTY-U3JQnLXS.cjs → PTY-BB84iC10.cjs} +2 -2
- package/dist/{PTY-CBkE5akF.mjs → PTY-X-4Tv31s.mjs} +2 -2
- package/dist/{Path-Bwl3ltR5.mjs → Path-DJTwK58E.mjs} +2 -2
- package/dist/{Path-CsbBuCFB.cjs → Path-qpublmG3.cjs} +2 -2
- package/dist/{Schema-CTXk8IgN.mjs → Schema-CKuz8TX8.mjs} +61 -6
- package/dist/{Schema-Bij_WAra.cjs → Schema-DaFukK_y.cjs} +72 -5
- package/dist/{SqlError-C2mi8_tp.cjs → SqlError-CsWFS-OU.cjs} +3 -3
- package/dist/{SqlError-1c-3v7GY.mjs → SqlError-DhK0hV8S.mjs} +3 -3
- package/dist/{SqliteClient-CdAhI4lb.cjs → SqliteClient-BpjZWL6O.cjs} +5 -5
- package/dist/{SqliteClient-aoOb51gB.mjs → SqliteClient-CA7vjiUj.mjs} +5 -5
- package/dist/bin.cjs +261 -56
- package/dist/bin.mjs +284 -80
- package/dist/{open-FIgTDosf.mjs → open-D8mGyWmt.mjs} +3 -3
- package/package.json +1 -1
package/dist/bin.mjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
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
|
|
5
|
-
import { $ as toAsyncIterable, A as isStream, At as offerUnsafe, C as fromChannel, Ct as end, D as fromQueue, Dt as make$42, E as fromPubSub, F as merge$4, Ft as unbounded$2, G as runFold, Gt as interrupt$4, H as run$2, Ht as makeUnsafe$7, It as publish, K as runForEach, Lt as shutdown$2, M as map$7, Mt as sliding, N as mapEffect$1, Nt as take$1, Ot as offer$1, Pt as takeAll, Q as tick, R as onExit$1, Rt as subscribe$1, S as fromAsyncIterable, St as bounded, T as fromIterable$1, Tt as failCause$4, U as runCollect, Ut as await_, V as provideContext$1, W as runDrain, Wt as getCurrent, Y as succeed$4, Z as takeWhile, _ as ensuring$1, _t as fromTransform, at as make$44, b as filter$2, bt as make$41, d as concat$2, dt as drain, f as debounce$1, ft as forEach$1, g as encodeText, h as empty$5, ht as mapInput, i as FileSystem, it as get$4, j as make$43, jt as shutdown$1, k as fromSubscription, kt as offerAll, l as callback$1, p as decodeText$1, q as runForEachArray, qt as runIn, rt as unwrap$1, t as Path$2, u as catchCause$1, w as fromEffect, x as flatMap$3, xt as makeUnsafe$6, y as failCause$5, zt as unbounded$1 } from "./Path-
|
|
6
|
-
import { _ as ChildProcessSpawner, a as Stdio, g as make$45, o as make$46, r as isQuitError } from "./NodeTerminal-
|
|
7
|
-
import { n as layer$7 } from "./NodeServices-
|
|
8
|
-
import { $ as
|
|
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$3, t as Boolean$2, u as number$2 } from "./Config-
|
|
10
|
-
import { a as make$48, i as keys, n as getOption, o as makeWith$1, r as invalidate, s as set$3, t as get$7 } from "./Cache-
|
|
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$49, 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-
|
|
4
|
+
import { $ as encodeEffect, $a as fail$2, $c as map$5, $l as pipe$1, $n as filterOrFail, $r as runPromiseWith, $s as toSeconds, $t as stringifyJson, Aa as addFinalizerExit, Ac as succeed$1, Ai as whileLoop, An as cached$3, As as MinimumTraceLevel, At as withConstructorDefault, Bc as makeUnsafe$3, Bi as snapshotUnsafe, Bl as isTagged, Bn as context, Br as promise, Bs as format$1, Bt as head, C as Record, Ca as provideMerge, Ci as undefined_, Cl as format, Cn as andThen, Cr as makeSpanScoped, Cs as sync, Ct as optionalKey, D as TaggedStruct, Da as unwrap, Dc as isFailure$1, Di as useSpan, Dl as equals, Dn as as$3, Do as pretty, Ds as void_$2, Dt as toCodecStringTree, E as TaggedErrorClass, Ea as sync$2, En as annotateSpans, Eo as map$6, Er as mapError, Et as toCodecJson, F as UndefinedOr, Fa as makeUnsafe$4, Fc as get$3, Fi as withTracerEnabled, Fl as isNotNull, Fn as catchIf, Fo as addFinalizer, Fs as make$40, G as decodeExit, Ga as failCause$3, Gc as flatten$1, Gi as both, Gr as raceFirst, Gt as Transformation, H as declare, Ha as _await, Hi as update$3, Hn as currentSpan, Hr as provideContext, Hs as fromInputUnsafe, Ht as size$2, I as Union, Ia as provide$2, Ii as yieldNow, Il as isNotNullish, In as catchReason, Io as andThen$1, Ir as onInterrupt, It as assign, J as decodeUnknownEffect, Jc as getOrElse, Jl as constVoid, Jn as fail, Jr as retry, Js as min, Jt as transformOrFail, K as decodeSync, Kc as fromNullishOr, Ki as exponential, Kl as constTrue, Kn as ensuring, Kr as repeat, Ks as max, L as Unknown, La as CurrentLogAnnotations, Li as zipWith, Ll as isNotUndefined, Ln as catchTag, Lo as as$2, Lr as option, Lt as append$1, M as URLFromString, Ma as closeUnsafe, Mc as Service$1, Mn as catchCause, Mo as CurrentLoggers$1, Mr as never$1, Ms as ParentSpan, Na as forkUnsafe, Nc as add$2, Ni as withParentSpan, Nl as compose$1, Nn as catchDefect, Nr as onError$1, Ns as Tracer, O as TemplateLiteral, Oa as Scope$1, Oc as isSuccess$1, Oi as void_$1, On as asSome, Oo as prettyErrors, Or as match$1, Ot as toJsonSchemaDocument, P as Undefined, Pa as make$35, Pc as empty$1, Pi as withSpan, Pl as hasProperty, Pn as catchFilter, Pr as onExit, Ps as externalSpan, Q as encode$4, Qa as die$2, Qc as isSome, Qi as catchDone, Ql as identity, Qn as filterMapOrFail, Qs as toMillis, R as UnknownFromJsonString$1, Ra as CurrentLogSpans, Rc as getUnsafe$1, Ri as counter, Rl as isNullish, Rn as catchTags, Rr as orDie, Rt as drop$1, S as Option, Sa as provide$1, Si as txRetry, Sl as toJson, Sn as all, So as interruptors, Sr as logWarning$1, Ss as suspend, St as optional$4, T as Struct, Ta as succeedContext, Ti as uninterruptibleMask$1, Tn as annotateLogs, Ts as uninterruptibleMask, Tt as tag, Uc as firstSomeOf, Ui as withAttributes, Ul as cast, Ur as provideService, Ut as toArray, V as brand, Va as TracerTimingEnabled, Vc as merge$2, Vi as timer, Vn as contextWith, Vo as consolePretty$1, Vr as provide, Vs as fromInput, Vt as isEmpty$2, W as decodeEffect, Wa as fail$3, Wc as flatMap$2, Wi as addDelay, Wl as compose, Wn as die$1, Wr as race, X as decodeUnknownOption, Xc as getOrUndefined, Xi as recurs, Xl as dual, Xo as fiberInterrupt, Xr as runForkWith, Xs as seconds, Xt as onSome, Y as decodeUnknownExit, Ya as make$37, Yc as getOrNull, Yi as passthrough$1, Yl as constant, Yn as failCause$1, Yr as runFork, Ys as minutes, Z as decodeUnknownSync, Za as succeed$3, Zc as isNone, Zi as spaced, Zn as filter$1, Zr as runPromise, Zs as times, Zt as parseJson$1, _ as NonEmptyArray, _a as empty$4, _i as timeoutOption, _l as isEffect$1, _n as toUtc, _r as log$4, _s as scopeAddFinalizerExit, _t as isSchemaError, a as DateTimeUtc, aa as parse$6, ac as flatMapNullishOr, ai as serviceOption, an as value, ar as forEach, as as forever, at as isBetween, b as NullOr, ba as merge$3, bi as try_, bn as acquireUseRelease, bo as hasInterruptsOnly, br as logFatal, bt as makeFilter, c as Defect, ca as Class$1, cc as isReadonlyArrayNonEmpty, ci as succeedNone, cn as add$3, co as NoSuchElementError, cr as forkDetach$1, ct as isGreaterThanOrEqualTo, d as Exit, da as CurrentMemoMap, di as sync$1, dn as isGreaterThanOrEqualTo$1, dr as gen, dt as isMaxLength, ec as zero, el as match, eo as failCause$2, er as flatMap, et as encodeSync, eu as pipeArguments, fa as build, fc as map$4, fi as tap, fn as make$36, fr as ignore, ft as isMaxProperties, g as Never, ga as effectDiscard, gi as timeout, gn as toEpochMillis, gr as isEffect, gs as scope, gt as isSchema, h as Literals, ha as effectContext, hc as sort, hi as tapErrorTag, hn as toDate, hr as interruptible, hs as reportCauseUnsafe, ht as isPattern, i as Class, ia as clamp, ic as filter, ii as service, il as make$39, in as make$38, io as match$2, ir as fnUntraced, is as fnUntraced$1, it as is$1, ja as close, jc as Reference$1, ji as withFiber$1, jn as callback, jo as ConsoleRef, jr as matchEffect, js as NativeSpan, jt as withDecodingDefault, k as Trim, ka as addFinalizer$1, kn as asVoid, ko as squash, kr as matchCauseEffect, kt as toType, l as Duration, li as succeedSome, ll as PipeInspectableProto, ln as distance, lo as StackTrace, lr as forkIn, ls as loggerMake, lt as isInt, m as Literal, ma as effect, mc as reverse, mi as tapError, mn as now, mo as fail$4, mr as interrupt$1, mt as isNonEmpty, n as ArraySchema, nc as empty$3, ni as scoped, nl as some, no as isFailure, nr as flatten$2, nt as encodeUnknownExit, o as DateTimeUtcFromString, oa as Clock, oc as fromIterable, oi as sleep$4, oo as void_$3, or as forever$1, os as forkDetach, ot as isFinite$1, p as Int$1, pa as buildWithMemoMap, pi as tapCause, pn as makeUnsafe$5, po as done, pr as ignoreCause, pt as isMinLength, q as decodeTo, qc as fromUndefinedOr, qi as forever$2, ql as constUndefined, qn as exit, qr as result, qs as millis, r as Boolean$1, ra as Random$1, rc as ensure, rl as Number$2, rn as makeFormatterDefault, ro as isSuccess, rr as fn$1, rs as flatMap$1, rt as fromJsonString, sa as currentTimeMillis, sc as isArrayNonEmpty, si as succeed, sn as encodeBase64Url$2, sr as forkChild, st as isGreaterThan, t as Any, ta as isDoneCause, tc as allocate, ti as scope$1, tl as none$4, tn as InvalidValue$1, to as interrupt$3, tt as encodeUnknownEffect, u as ErrorClass, ua as TaggedError, ui as suspend$1, ul as YieldableProto, un as formatIso, ur as forkScoped, ut as isLessThanOrEqualTo, v as NonEmptyString, vi as timeoutOrElse, vl as withFiber, vn as Transaction$1, vo as hasDies, vr as logDebug, vs as sleep$3, w as String$1, wa as succeed$2, wc as fail$1, wi as uninterruptible, wn as annotateCurrentSpan, wr as map$3, ws as tracerLogger$1, wt as suspend$2, x as Number$1, xa as mergeAll, xi as tx$1, xl as NodeInspectSymbol, xn as addFinalizer$2, xo as interrupt$2, xr as logInfo, xt as mutable, y as Null, ya as launch$1, yi as tryPromise, yn as acquireRelease, yo as hasInterrupts, yr as logError, yt as make$34, z as Void, za as MinimumLogLevel, zc as make$33, zi as gauge, zl as isObject$1, zn as catch_, zr as orElseSucceed, zs as days, zt as empty$2 } from "./Schema-CKuz8TX8.mjs";
|
|
5
|
+
import { $ as toAsyncIterable, A as isStream, At as offerUnsafe, C as fromChannel, Ct as end, D as fromQueue, Dt as make$42, E as fromPubSub, F as merge$4, Ft as unbounded$2, G as runFold, Gt as interrupt$4, H as run$2, Ht as makeUnsafe$7, It as publish, K as runForEach, Lt as shutdown$2, M as map$7, Mt as sliding, N as mapEffect$1, Nt as take$1, Ot as offer$1, Pt as takeAll, Q as tick, R as onExit$1, Rt as subscribe$1, S as fromAsyncIterable, St as bounded, T as fromIterable$1, Tt as failCause$4, U as runCollect, Ut as await_, V as provideContext$1, W as runDrain, Wt as getCurrent, Y as succeed$4, Z as takeWhile, _ as ensuring$1, _t as fromTransform, at as make$44, b as filter$2, bt as make$41, d as concat$2, dt as drain, f as debounce$1, ft as forEach$1, g as encodeText, h as empty$5, ht as mapInput, i as FileSystem, it as get$4, j as make$43, jt as shutdown$1, k as fromSubscription, kt as offerAll, l as callback$1, p as decodeText$1, q as runForEachArray, qt as runIn, rt as unwrap$1, t as Path$2, u as catchCause$1, w as fromEffect, x as flatMap$3, xt as makeUnsafe$6, y as failCause$5, zt as unbounded$1 } from "./Path-DJTwK58E.mjs";
|
|
6
|
+
import { _ as ChildProcessSpawner, a as Stdio, g as make$45, o as make$46, r as isQuitError } from "./NodeTerminal-Ke6chk0A.mjs";
|
|
7
|
+
import { n as layer$7 } from "./NodeServices-Da5rUDDE.mjs";
|
|
8
|
+
import { $ as jsonUnsafe, A as SocketErrorReason, Bt as updateAndGet, Ct as jsonUnsafe$1, Dt as fromRecordUnsafe, Et as fromInput$1, Ft as make$47, G as filterStatusOk$1, I as HttpServerError, It as makeUnsafe$8, K as retryTransient, Lt as modify$3, Mt as get$5, Nt as getAndSet, Ot as merge$5, Pt as getUnsafe$2, Q as isHttpServerResponse, Rt as set$2, St as isHttpClientError, Tt as empty$7, U as layer$8, W as HttpClient, X as empty$6, Y as symbol$1, Z as file, _ as schemaBodyUrlParams, _t as bodyJson, a as withLogAddress, at as setHeader, bt as setBody, ct as uint8Array, d as logger$1, et as raw, f as withLoggerDisabled, g as schemaBodyJson, gt as bearerToken, ht as acceptJson, i as serve$1, it as setCookies, lt as filterStatusOk, m as ParsedSearchParams, mt as schemaBodyJson$1, nt as schemaJson, ot as stream, p as HttpServerRequest, rt as setCookie, st as text$1, t as HttpServer, tt as redirect, u as cors, ut as matchStatus, v as schemaHeaders, vt as get$6, xt as HttpClientErrorSchema, y as toURL, yt as post, z as RouteNotFound, zt as update$4 } from "./HttpServer-DV-x5DVo.mjs";
|
|
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$3, t as Boolean$2, u as number$2 } from "./Config-To1VEqlB.mjs";
|
|
10
|
+
import { a as make$48, i as keys, n as getOption, o as makeWith$1, r as invalidate, s as set$3, t as get$7 } from "./Cache-CHvh_vWI.mjs";
|
|
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$49, 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-DhK0hV8S.mjs";
|
|
12
12
|
import { a as diag, c as SpanKind$1, d as TraceFlags, f as ROOT_CONTEXT, i as propagation, l as isSpanContextValid, m as DiagLogLevel, n as init_esm$1, o as context$1, p as createContextKey, r as trace, s as SpanStatusCode, t as esm_exports$1 } from "./esm-Ce1GqbVk.mjs";
|
|
13
13
|
import { t as Mime_default } from "./Mime-BITO-E1U.mjs";
|
|
14
14
|
import { a as verifyCmmdAuthRuntimeTicket, c as verifyCmmdRuntimeTicketRefreshProof, d as createReadOnceFileTokenAccessor, i as sendRuntimeControlHeartbeat, l as runtimeGrantToken, n as bootstrapRuntimeControlAuthorityFromNarrowGrant, o as verifyCmmdClaudeReadinessTicket, r as readRuntimeControlAuthority, s as verifyCmmdRuntimeTicket, t as bootstrapRuntimeControlAuthority, u as setRuntimeGrantToken } from "./runtimeControlAuthority-L85w5RTn.mjs";
|
|
15
|
-
import { n as PtySpawnError, t as PtyAdapter } from "./PTY-
|
|
15
|
+
import { n as PtySpawnError, t as PtyAdapter } from "./PTY-X-4Tv31s.mjs";
|
|
16
16
|
import { createRequire } from "node:module";
|
|
17
17
|
import * as HE from "node:child_process";
|
|
18
18
|
import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
|
|
@@ -22,7 +22,7 @@ import { createCipheriv, createDecipheriv, createHash, createHmac, createPublicK
|
|
|
22
22
|
import * as FS$1 from "node:fs";
|
|
23
23
|
import fs, { accessSync, chmodSync, constants, createReadStream, existsSync, mkdirSync, mkdtempSync, promises, readFile, readFileSync, readdir, readdirSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
24
24
|
import * as NodeOS from "node:os";
|
|
25
|
-
import
|
|
25
|
+
import $U, { homedir, networkInterfaces, tmpdir } from "node:os";
|
|
26
26
|
import * as Path$1 from "node:path";
|
|
27
27
|
import path, { basename, delimiter, dirname, extname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
|
|
28
28
|
import { pathToFileURL } from "node:url";
|
|
@@ -17588,6 +17588,7 @@ const ExecutionEnvironmentCapabilities = Struct({
|
|
|
17588
17588
|
pullRequests: optionalKey(Boolean$1),
|
|
17589
17589
|
threadPullRequestLinking: optionalKey(Boolean$1),
|
|
17590
17590
|
cloudMode: Boolean$1.pipe(withDecodingDefault(succeed(false))),
|
|
17591
|
+
threadSettlement: optionalKey(Boolean$1),
|
|
17591
17592
|
posthogPublicKey: NullOr(String$1).pipe(withDecodingDefault(succeed(null))),
|
|
17592
17593
|
posthogHost: NullOr(String$1).pipe(withDecodingDefault(succeed(null))),
|
|
17593
17594
|
runtime: optionalKey(ExecutionEnvironmentRuntimeCapabilities),
|
|
@@ -52182,7 +52183,7 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
|
52182
52183
|
const min = forceColor || 0;
|
|
52183
52184
|
if (env.TERM === "dumb") return min;
|
|
52184
52185
|
if (process$1.platform === "win32") {
|
|
52185
|
-
const osRelease =
|
|
52186
|
+
const osRelease = $U.release().split(".");
|
|
52186
52187
|
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
52187
52188
|
return 1;
|
|
52188
52189
|
}
|
|
@@ -54625,7 +54626,7 @@ var require_ProcessDetector = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
54625
54626
|
exports.processDetector = void 0;
|
|
54626
54627
|
const api_1 = (init_esm$1(), __toCommonJS(esm_exports$1));
|
|
54627
54628
|
const semconv_1 = require_semconv$1();
|
|
54628
|
-
const os$
|
|
54629
|
+
const os$3 = __require("os");
|
|
54629
54630
|
/**
|
|
54630
54631
|
* ProcessDetector will be used to detect the resources related current process running
|
|
54631
54632
|
* and being instrumented from the NodeJS Process module.
|
|
@@ -54647,7 +54648,7 @@ var require_ProcessDetector = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
54647
54648
|
};
|
|
54648
54649
|
if (process.argv.length > 1) attributes[semconv_1.ATTR_PROCESS_COMMAND] = process.argv[1];
|
|
54649
54650
|
try {
|
|
54650
|
-
const userInfo = os$
|
|
54651
|
+
const userInfo = os$3.userInfo();
|
|
54651
54652
|
attributes[semconv_1.ATTR_PROCESS_OWNER] = userInfo.username;
|
|
54652
54653
|
} catch (e) {
|
|
54653
54654
|
api_1.diag.debug(`error obtaining process owner: ${e}`);
|
|
@@ -67972,6 +67973,30 @@ const respondToAuthError = (error) => gen(function* () {
|
|
|
67972
67973
|
}));
|
|
67973
67974
|
return response;
|
|
67974
67975
|
});
|
|
67976
|
+
const OAUTH_ACCESS_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token";
|
|
67977
|
+
/**
|
|
67978
|
+
* The one exchange this endpoint performs, or the reason it will not.
|
|
67979
|
+
*
|
|
67980
|
+
* Returns a message rather than a boolean so the route can say which field was
|
|
67981
|
+
* wrong: an operator debugging a pairing failure otherwise cannot tell an
|
|
67982
|
+
* unsupported grant from an unsupported token type.
|
|
67983
|
+
*/
|
|
67984
|
+
function rejectUnsupportedTokenExchange(input) {
|
|
67985
|
+
if (input.grant_type !== "urn:ietf:params:oauth:grant-type:token-exchange") return "Unsupported grant_type.";
|
|
67986
|
+
if (input.subject_token_type !== "urn:t3:params:oauth:token-type:environment-bootstrap") return "Unsupported subject_token_type.";
|
|
67987
|
+
if (input.requested_token_type !== "urn:ietf:params:oauth:token-type:access_token") return "Unsupported requested_token_type.";
|
|
67988
|
+
return null;
|
|
67989
|
+
}
|
|
67990
|
+
/**
|
|
67991
|
+
* `expires_in` is a duration in seconds; a session carries an absolute instant.
|
|
67992
|
+
*
|
|
67993
|
+
* Clamped at zero so a session that expired between issuance and this call is
|
|
67994
|
+
* reported as already expired rather than as a negative lifetime, which a client
|
|
67995
|
+
* could read as a very large unsigned value.
|
|
67996
|
+
*/
|
|
67997
|
+
function accessTokenExpiresInSeconds(remainingMillis) {
|
|
67998
|
+
return Math.max(0, Math.floor(remainingMillis / 1e3));
|
|
67999
|
+
}
|
|
67975
68000
|
//#endregion
|
|
67976
68001
|
//#region ../../packages/shared/src/cmmdIdentity.ts
|
|
67977
68002
|
const MAX_CMMD_AVATAR_URL_LENGTH = 256 * 1024;
|
|
@@ -69171,6 +69196,16 @@ const CommandOAuthDeviceInput = Struct({
|
|
|
69171
69196
|
return_url: optionalKey(String$1),
|
|
69172
69197
|
scope: optionalKey(String$1)
|
|
69173
69198
|
});
|
|
69199
|
+
const OAuthTokenExchangeInput = Struct({
|
|
69200
|
+
grant_type: String$1,
|
|
69201
|
+
subject_token: String$1,
|
|
69202
|
+
subject_token_type: String$1,
|
|
69203
|
+
requested_token_type: String$1,
|
|
69204
|
+
scope: optional$4(String$1),
|
|
69205
|
+
client_label: optional$4(String$1),
|
|
69206
|
+
client_device_type: optional$4(String$1),
|
|
69207
|
+
client_os: optional$4(String$1)
|
|
69208
|
+
});
|
|
69174
69209
|
const CommandOAuthTokenInput = Struct({
|
|
69175
69210
|
grant_type: String$1,
|
|
69176
69211
|
device_code: String$1,
|
|
@@ -70012,6 +70047,50 @@ const authBearerBootstrapRouteLayer = add$1("POST", "/api/auth/bootstrap/bearer"
|
|
|
70012
70047
|
})));
|
|
70013
70048
|
return jsonUnsafe(yield* serverAuth.exchangeBootstrapCredentialForBearerSession(payload.credential, deriveAuthClientMetadata({ request })), { status: 200 });
|
|
70014
70049
|
}).pipe(catchTag("AuthError", (error) => respondToAuthError(error))));
|
|
70050
|
+
/**
|
|
70051
|
+
* FORGE COMPAT. `POST /oauth/token` — the RFC 8693 token exchange the vendored
|
|
70052
|
+
* t3code client uses to turn a pairing credential into a bearer token.
|
|
70053
|
+
*
|
|
70054
|
+
* Forge's own clients call `/api/auth/bootstrap/bearer` with JSON. The mobile app
|
|
70055
|
+
* cannot: the endpoint is baked into the vendored contract
|
|
70056
|
+
* (packages/t3-contracts/src/environmentHttp.ts) as a form-urlencoded OAuth
|
|
70057
|
+
* exchange, and without it every attempt to add an environment fails with a 404 —
|
|
70058
|
+
* which leaves the whole app unusable, since no screen works before an
|
|
70059
|
+
* environment exists.
|
|
70060
|
+
*
|
|
70061
|
+
* This is a shape adapter, not a second way to authenticate. It performs no
|
|
70062
|
+
* validation of its own and mints nothing: it forwards the subject token to the
|
|
70063
|
+
* same `exchangeBootstrapCredentialForBearerSession` the JSON route uses, so the
|
|
70064
|
+
* credential rules, expiry and session issuance stay in one place. The only work
|
|
70065
|
+
* here is vocabulary — form encoding in, OAuth field names out.
|
|
70066
|
+
*
|
|
70067
|
+
* Same pattern as the vcs.* handlers in ws.ts: the Forge server speaks upstream's
|
|
70068
|
+
* dialect over Forge's own services, rather than the vendored client being patched
|
|
70069
|
+
* to speak Forge's.
|
|
70070
|
+
*/
|
|
70071
|
+
const authOAuthTokenExchangeRouteLayer = add$1("POST", "/oauth/token", gen(function* () {
|
|
70072
|
+
const request = yield* HttpServerRequest;
|
|
70073
|
+
const serverAuth = yield* ServerAuth;
|
|
70074
|
+
const payload = yield* schemaBodyUrlParams(OAuthTokenExchangeInput).pipe(mapError((cause) => new AuthError({
|
|
70075
|
+
message: "Invalid token exchange payload.",
|
|
70076
|
+
status: 400,
|
|
70077
|
+
cause
|
|
70078
|
+
})));
|
|
70079
|
+
const refusal = rejectUnsupportedTokenExchange(payload);
|
|
70080
|
+
if (refusal !== null) return yield* new AuthError({
|
|
70081
|
+
message: refusal,
|
|
70082
|
+
status: 400
|
|
70083
|
+
});
|
|
70084
|
+
const session = yield* serverAuth.exchangeBootstrapCredentialForBearerSession(payload.subject_token, deriveAuthClientMetadata({ request }));
|
|
70085
|
+
const expiresInSeconds = accessTokenExpiresInSeconds(toMillis(distance(yield* now, session.expiresAt)));
|
|
70086
|
+
return jsonUnsafe({
|
|
70087
|
+
access_token: session.sessionToken,
|
|
70088
|
+
issued_token_type: OAUTH_ACCESS_TOKEN_TYPE,
|
|
70089
|
+
token_type: "Bearer",
|
|
70090
|
+
expires_in: expiresInSeconds,
|
|
70091
|
+
scope: payload.scope ?? session.role
|
|
70092
|
+
}, { status: 200 });
|
|
70093
|
+
}).pipe(catchTag("AuthError", (error) => respondToAuthError(error))));
|
|
70015
70094
|
const authWebSocketTokenRouteLayer = add$1("POST", "/api/auth/ws-token", gen(function* () {
|
|
70016
70095
|
const request = yield* HttpServerRequest;
|
|
70017
70096
|
const serverAuth = yield* ServerAuth;
|
|
@@ -76071,7 +76150,7 @@ var require_node_gyp_build = /* @__PURE__ */ __commonJSMin(((exports, module) =>
|
|
|
76071
76150
|
var fs$6 = __require("fs");
|
|
76072
76151
|
var path$5 = __require("path");
|
|
76073
76152
|
var url$1 = __require("url");
|
|
76074
|
-
var os$
|
|
76153
|
+
var os$2 = __require("os");
|
|
76075
76154
|
var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require;
|
|
76076
76155
|
var vars = process.config && process.config.variables || {};
|
|
76077
76156
|
var prebuildsOnly = !!process.env.PREBUILDS_ONLY;
|
|
@@ -76079,8 +76158,8 @@ var require_node_gyp_build = /* @__PURE__ */ __commonJSMin(((exports, module) =>
|
|
|
76079
76158
|
var abi = versions.modules;
|
|
76080
76159
|
if (versions.deno || process.isBun) abi = "unsupported";
|
|
76081
76160
|
var runtime = isElectron() ? "electron" : isNwjs() ? "node-webkit" : "node";
|
|
76082
|
-
var arch = process.env.npm_config_arch || os$
|
|
76083
|
-
var platform = process.env.npm_config_platform || os$
|
|
76161
|
+
var arch = process.env.npm_config_arch || os$2.arch();
|
|
76162
|
+
var platform = process.env.npm_config_platform || os$2.platform();
|
|
76084
76163
|
var libc = process.env.LIBC || (isMusl(platform) ? "musl" : "glibc");
|
|
76085
76164
|
var armv = process.env.ARM_VERSION || (arch === "arm64" ? "8" : vars.arm_version) || "";
|
|
76086
76165
|
var uv = (versions.uv || "").split(".")[0];
|
|
@@ -93715,7 +93794,7 @@ const launchDetached = (launch) => gen(function* () {
|
|
|
93715
93794
|
});
|
|
93716
93795
|
const OpenLive = effect(Open, gen(function* () {
|
|
93717
93796
|
const open = yield* tryPromise({
|
|
93718
|
-
try: () => import("./open-
|
|
93797
|
+
try: () => import("./open-D8mGyWmt.mjs"),
|
|
93719
93798
|
catch: (cause) => new OpenError$1({
|
|
93720
93799
|
message: "failed to load browser opener",
|
|
93721
93800
|
cause
|
|
@@ -113371,8 +113450,8 @@ effectDiscard(runMigrations());
|
|
|
113371
113450
|
//#endregion
|
|
113372
113451
|
//#region src/persistence/Layers/Sqlite.ts
|
|
113373
113452
|
const defaultSqliteClientLoaders = {
|
|
113374
|
-
bun: () => import("./SqliteClient-
|
|
113375
|
-
node: () => import("./NodeSqliteClient-
|
|
113453
|
+
bun: () => import("./SqliteClient-CA7vjiUj.mjs"),
|
|
113454
|
+
node: () => import("./NodeSqliteClient-CcLD4Zvr.mjs")
|
|
113376
113455
|
};
|
|
113377
113456
|
const makeRuntimeSqliteLayer = fn$1("makeRuntimeSqliteLayer")(function* (config) {
|
|
113378
113457
|
const loader = defaultSqliteClientLoaders[process.versions.bun !== void 0 ? "bun" : "node"];
|
|
@@ -146712,22 +146791,58 @@ function runtimeAuthoritySessionId(input) {
|
|
|
146712
146791
|
if (input.authSessionId) return input.authSessionId;
|
|
146713
146792
|
return input.threadId ? readThreadSessionId(input.threadId) : null;
|
|
146714
146793
|
}
|
|
146794
|
+
/**
|
|
146795
|
+
* Pure mapping from the three preconditions to an outcome.
|
|
146796
|
+
*
|
|
146797
|
+
* Split out so the reason can be tested without an Effect runtime, env vars or
|
|
146798
|
+
* module mocking — the decision is the thing worth pinning, not the plumbing
|
|
146799
|
+
* around it.
|
|
146800
|
+
*/
|
|
146801
|
+
function resolveBrokerTicketOutcome(input) {
|
|
146802
|
+
if (input.identityMode === "legacy") return {
|
|
146803
|
+
kind: "ticket",
|
|
146804
|
+
token: input.legacyGrantToken
|
|
146805
|
+
};
|
|
146806
|
+
if (input.identityMode === "invalid") return {
|
|
146807
|
+
kind: "unavailable",
|
|
146808
|
+
reason: "runtime identity is incomplete or invalid"
|
|
146809
|
+
};
|
|
146810
|
+
if (!input.sessionId) return {
|
|
146811
|
+
kind: "unavailable",
|
|
146812
|
+
reason: "no owner session is bound to this request"
|
|
146813
|
+
};
|
|
146814
|
+
return input.brokerAuthority ? {
|
|
146815
|
+
kind: "ticket",
|
|
146816
|
+
token: input.brokerAuthority
|
|
146817
|
+
} : {
|
|
146818
|
+
kind: "unavailable",
|
|
146819
|
+
reason: "no live broker authority for this session"
|
|
146820
|
+
};
|
|
146821
|
+
}
|
|
146715
146822
|
function runtimeProviderBrokerToken(input) {
|
|
146716
146823
|
const identity = classifyRuntimeBrokerIdentity({
|
|
146717
146824
|
machineId: configuredRuntimeMachineId() ?? void 0,
|
|
146718
146825
|
credentialEpoch: configuredRuntimeCredentialEpoch(),
|
|
146719
146826
|
brokerAuthorityMode: process.env.FORGE_CMMD_RUNTIME_BROKER_AUTHORITY_MODE
|
|
146720
146827
|
});
|
|
146721
|
-
if (identity.mode
|
|
146722
|
-
|
|
146828
|
+
if (identity.mode !== "exact") return resolveBrokerTicketOutcome({
|
|
146829
|
+
identityMode: identity.mode,
|
|
146830
|
+
legacyGrantToken: identity.mode === "legacy" ? runtimeGrantToken() : null,
|
|
146831
|
+
sessionId: null,
|
|
146832
|
+
brokerAuthority: null
|
|
146833
|
+
});
|
|
146723
146834
|
const sessionId = runtimeAuthoritySessionId(input);
|
|
146724
|
-
|
|
146725
|
-
|
|
146835
|
+
return resolveBrokerTicketOutcome({
|
|
146836
|
+
identityMode: "exact",
|
|
146837
|
+
legacyGrantToken: null,
|
|
146726
146838
|
sessionId,
|
|
146727
|
-
|
|
146728
|
-
|
|
146729
|
-
|
|
146730
|
-
|
|
146839
|
+
brokerAuthority: sessionId ? readRuntimeBrokerAuthority({
|
|
146840
|
+
sessionId,
|
|
146841
|
+
runtimeId: process.env.FORGE_CMMD_RUNTIME_ID,
|
|
146842
|
+
machineId: identity.machineId,
|
|
146843
|
+
credentialEpoch: identity.credentialEpoch,
|
|
146844
|
+
requiredScope: "provider"
|
|
146845
|
+
}) : null
|
|
146731
146846
|
});
|
|
146732
146847
|
}
|
|
146733
146848
|
async function fetchRuntimeProviderGrant(input) {
|
|
@@ -146772,8 +146887,9 @@ const issueProviderEgressCredential = (input) => tryPromise({
|
|
|
146772
146887
|
async function issueCmmdRuntimeProviderEgressCredential(input) {
|
|
146773
146888
|
const controlPlaneUrl = process.env.FORGE_COMMAND_APP_URL.replace(/\/+$/, "");
|
|
146774
146889
|
const runtimeId = encodeURIComponent(process.env.FORGE_CMMD_RUNTIME_ID);
|
|
146775
|
-
const
|
|
146776
|
-
if (
|
|
146890
|
+
const brokerTicket = runtimeProviderBrokerToken(input);
|
|
146891
|
+
if (brokerTicket.kind === "unavailable") throw new Error(`Provider token issuance requires a live exact-machine broker authority for this runtime epoch (${brokerTicket.reason}).`);
|
|
146892
|
+
const runtimeGrantToken = brokerTicket.token;
|
|
146777
146893
|
const response = await fetchRuntimeProviderGrant({
|
|
146778
146894
|
url: `${controlPlaneUrl}/api/forge/runtimes/${runtimeId}/provider/token`,
|
|
146779
146895
|
token: runtimeGrantToken,
|
|
@@ -186060,7 +186176,7 @@ var Vce = {
|
|
|
186060
186176
|
function Ve() {
|
|
186061
186177
|
return Vce;
|
|
186062
186178
|
}
|
|
186063
|
-
var Us =
|
|
186179
|
+
var Us = $U.homedir(), lk = $U.tmpdir(), { env: Vc } = process$1, Yce = (e) => {
|
|
186064
186180
|
let t = path.join(Us, "Library");
|
|
186065
186181
|
return {
|
|
186066
186182
|
data: path.join(t, "Application Support", e),
|
|
@@ -196260,12 +196376,12 @@ function qZ(e, t) {
|
|
|
196260
196376
|
}
|
|
196261
196377
|
return n;
|
|
196262
196378
|
}
|
|
196263
|
-
var os$
|
|
196379
|
+
var os$1 = "https://code.claude.com/docs/en", kKe = [
|
|
196264
196380
|
{
|
|
196265
196381
|
matches: (e) => e.path === "permissions.defaultMode" && e.code === "invalid_value",
|
|
196266
196382
|
tip: {
|
|
196267
196383
|
suggestion: "Valid modes: \"acceptEdits\" (ask before file changes), \"plan\" (analysis only), \"bypassPermissions\" (auto-accept all), or \"default\" (standard behavior)",
|
|
196268
|
-
docLink: `${os$
|
|
196384
|
+
docLink: `${os$1}/iam#permission-modes`
|
|
196269
196385
|
}
|
|
196270
196386
|
},
|
|
196271
196387
|
{
|
|
@@ -196280,7 +196396,7 @@ var os$2 = "https://code.claude.com/docs/en", kKe = [
|
|
|
196280
196396
|
matches: (e) => e.path.startsWith("env.") && e.code === "invalid_type",
|
|
196281
196397
|
tip: {
|
|
196282
196398
|
suggestion: "Environment variables must be strings. Wrap numbers and booleans in quotes. Example: \"DEBUG\": \"true\", \"PORT\": \"3000\"",
|
|
196283
|
-
docLink: `${os$
|
|
196399
|
+
docLink: `${os$1}/settings#environment-variables`
|
|
196284
196400
|
}
|
|
196285
196401
|
},
|
|
196286
196402
|
{
|
|
@@ -196291,14 +196407,14 @@ var os$2 = "https://code.claude.com/docs/en", kKe = [
|
|
|
196291
196407
|
matches: (e) => e.path.startsWith("hooks.") && e.code === "invalid_key",
|
|
196292
196408
|
tip: {
|
|
196293
196409
|
suggestion: "Not a recognized hook event. Common events: PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, SessionEnd, Stop. Check spelling and capitalization.",
|
|
196294
|
-
docLink: `${os$
|
|
196410
|
+
docLink: `${os$1}/hooks`
|
|
196295
196411
|
}
|
|
196296
196412
|
},
|
|
196297
196413
|
{
|
|
196298
196414
|
matches: (e) => /\.hooks\.\d+\.command$/.test(e.path) && e.code === "invalid_type" && e.received === "undefined",
|
|
196299
196415
|
tip: {
|
|
196300
196416
|
suggestion: "Command hooks require `command`. For exec form (no shell), set `command` to the executable and `args` to its arguments: {\"type\": \"command\", \"command\": \"echo\", \"args\": [\"hi\"]}. For shell form, set `command` to the full shell string: {\"type\": \"command\", \"command\": \"echo hi\"}.",
|
|
196301
|
-
docLink: `${os$
|
|
196417
|
+
docLink: `${os$1}/hooks#exec-form-and-shell-form`
|
|
196302
196418
|
}
|
|
196303
196419
|
},
|
|
196304
196420
|
{
|
|
@@ -196313,7 +196429,7 @@ var os$2 = "https://code.claude.com/docs/en", kKe = [
|
|
|
196313
196429
|
matches: (e) => e.code === "unrecognized_keys",
|
|
196314
196430
|
tip: {
|
|
196315
196431
|
suggestion: "Check for typos or refer to the documentation for valid fields",
|
|
196316
|
-
docLink: `${os$
|
|
196432
|
+
docLink: `${os$1}/settings`
|
|
196317
196433
|
}
|
|
196318
196434
|
},
|
|
196319
196435
|
{
|
|
@@ -196328,13 +196444,13 @@ var os$2 = "https://code.claude.com/docs/en", kKe = [
|
|
|
196328
196444
|
matches: (e) => e.path === "permissions.additionalDirectories" && e.code === "invalid_type",
|
|
196329
196445
|
tip: {
|
|
196330
196446
|
suggestion: "Must be an array of directory paths. Example: [\"~/projects\", \"/tmp/workspace\"]. You can also use --add-dir flag or /add-dir command",
|
|
196331
|
-
docLink: `${os$
|
|
196447
|
+
docLink: `${os$1}/iam#working-directories`
|
|
196332
196448
|
}
|
|
196333
196449
|
}
|
|
196334
196450
|
], AKe = {
|
|
196335
|
-
permissions: `${os$
|
|
196336
|
-
env: `${os$
|
|
196337
|
-
hooks: `${os$
|
|
196451
|
+
permissions: `${os$1}/iam#configuring-permissions`,
|
|
196452
|
+
env: `${os$1}/settings#environment-variables`,
|
|
196453
|
+
hooks: `${os$1}/hooks`
|
|
196338
196454
|
};
|
|
196339
196455
|
function GZ(e) {
|
|
196340
196456
|
let t = kKe.find((r) => r.matches(e));
|
|
@@ -205021,6 +205137,48 @@ function applyPluginSkillPermissionsToDynamicTools(tools, settings) {
|
|
|
205021
205137
|
});
|
|
205022
205138
|
}
|
|
205023
205139
|
//#endregion
|
|
205140
|
+
//#region src/github/forgeGitHubToolHandler.ts
|
|
205141
|
+
/**
|
|
205142
|
+
* Shared wiring for Forge's brokered GitHub tools.
|
|
205143
|
+
*
|
|
205144
|
+
* Both provider surfaces run the same handler: Codex exposes the tools
|
|
205145
|
+
* natively, Claude reaches them over in-process MCP (`GitHubMcpServer.ts`).
|
|
205146
|
+
* The auth binding, the write confirmation gate and the audit trail live here
|
|
205147
|
+
* so a new surface cannot accidentally omit one — the handler's own defaults
|
|
205148
|
+
* are deliberately inert (no audit, never confirmed), which is safe for tests
|
|
205149
|
+
* but wrong for a real turn.
|
|
205150
|
+
*/
|
|
205151
|
+
function createForgeGitHubToolHandlerOptions(deps) {
|
|
205152
|
+
const { runWithRuntimeContext } = deps;
|
|
205153
|
+
return {
|
|
205154
|
+
broker: new GitHubBroker({
|
|
205155
|
+
resolveJwt: (auth) => runWithRuntimeContext(resolveCmmdJwtForSession({
|
|
205156
|
+
sessionId: auth.sessionId,
|
|
205157
|
+
logPrefix: deps.logPrefix,
|
|
205158
|
+
...auth.subject !== void 0 ? { subject: auth.subject } : {},
|
|
205159
|
+
...auth.forceRefresh !== void 0 ? { forceRefresh: auth.forceRefresh } : {}
|
|
205160
|
+
})),
|
|
205161
|
+
githubWriteIdentity: deps.githubWriteIdentity
|
|
205162
|
+
}),
|
|
205163
|
+
resolveAuth: async (threadId) => {
|
|
205164
|
+
const binding = await runWithRuntimeContext(readThreadAuthSession(threadId));
|
|
205165
|
+
return binding ? {
|
|
205166
|
+
sessionId: binding.sessionId,
|
|
205167
|
+
...binding.subject ? { subject: binding.subject } : {}
|
|
205168
|
+
} : null;
|
|
205169
|
+
},
|
|
205170
|
+
recordAudit: (auditEvent) => runWithRuntimeContext(recordGitHubToolAuditEvent(auditEvent).pipe(asVoid)),
|
|
205171
|
+
createConfirmation: (confirmation) => runWithRuntimeContext(createGitHubToolConfirmation(confirmation)),
|
|
205172
|
+
isConfirmed: (confirmation) => runWithRuntimeContext(consumeApprovedOrLatestGitHubToolConfirmation({
|
|
205173
|
+
confirmationId: confirmation.confirmationId,
|
|
205174
|
+
threadId: confirmation.threadId,
|
|
205175
|
+
toolName: confirmation.toolName,
|
|
205176
|
+
request: confirmation.request
|
|
205177
|
+
})),
|
|
205178
|
+
bypassWriteConfirmation: deps.bypassWriteConfirmation
|
|
205179
|
+
};
|
|
205180
|
+
}
|
|
205181
|
+
//#endregion
|
|
205024
205182
|
//#region src/provider/shellSafety.ts
|
|
205025
205183
|
const SHELL_SAFE_COMMAND_PATH_PATTERN = /^[A-Za-z0-9_.\-/\\:]+$/;
|
|
205026
205184
|
function isShellSafeCommandPath(command) {
|
|
@@ -206309,33 +206467,12 @@ const makeCodexAdapter = fn$1("makeCodexAdapter")(function* (options) {
|
|
|
206309
206467
|
}));
|
|
206310
206468
|
const browserToolEnvironmentId = yield* resolveBrowserToolEnvironmentId$1();
|
|
206311
206469
|
const computerManager = resolveComputerManager(serverConfig);
|
|
206312
|
-
const githubDynamicToolHandler = createCodexGitHubDynamicToolHandler({
|
|
206313
|
-
|
|
206314
|
-
|
|
206315
|
-
|
|
206316
|
-
logPrefix: "codex-github",
|
|
206317
|
-
...auth.subject !== void 0 ? { subject: auth.subject } : {},
|
|
206318
|
-
...auth.forceRefresh !== void 0 ? { forceRefresh: auth.forceRefresh } : {}
|
|
206319
|
-
})),
|
|
206320
|
-
githubWriteIdentity: settings.githubWriteIdentity
|
|
206321
|
-
}),
|
|
206322
|
-
resolveAuth: async (threadId) => {
|
|
206323
|
-
const binding = await runWithRuntimeContext(readThreadAuthSession(threadId));
|
|
206324
|
-
return binding ? {
|
|
206325
|
-
sessionId: binding.sessionId,
|
|
206326
|
-
...binding.subject ? { subject: binding.subject } : {}
|
|
206327
|
-
} : null;
|
|
206328
|
-
},
|
|
206329
|
-
recordAudit: (auditEvent) => runWithRuntimeContext(recordGitHubToolAuditEvent(auditEvent).pipe(asVoid)),
|
|
206330
|
-
createConfirmation: (confirmation) => runWithRuntimeContext(createGitHubToolConfirmation(confirmation)),
|
|
206331
|
-
isConfirmed: (confirmation) => runWithRuntimeContext(consumeApprovedOrLatestGitHubToolConfirmation({
|
|
206332
|
-
confirmationId: confirmation.confirmationId,
|
|
206333
|
-
threadId: confirmation.threadId,
|
|
206334
|
-
toolName: confirmation.toolName,
|
|
206335
|
-
request: confirmation.request
|
|
206336
|
-
})),
|
|
206470
|
+
const githubDynamicToolHandler = createCodexGitHubDynamicToolHandler(createForgeGitHubToolHandlerOptions({
|
|
206471
|
+
runWithRuntimeContext,
|
|
206472
|
+
githubWriteIdentity: settings.githubWriteIdentity,
|
|
206473
|
+
logPrefix: "codex-github",
|
|
206337
206474
|
bypassWriteConfirmation: input.runtimeMode === "full-access"
|
|
206338
|
-
});
|
|
206475
|
+
}));
|
|
206339
206476
|
const cmmdConnectorDynamicToolHandler = createCodexCmmdConnectorDynamicToolHandler({ resolveAuth: async (threadId) => {
|
|
206340
206477
|
const binding = await runWithRuntimeContext(readThreadAuthSession(threadId));
|
|
206341
206478
|
if (!binding) return null;
|
|
@@ -207879,6 +208016,62 @@ function createDevServerMcpServer(deps, threadId) {
|
|
|
207879
208016
|
});
|
|
207880
208017
|
}
|
|
207881
208018
|
//#endregion
|
|
208019
|
+
//#region src/github/GitHubMcpServer.ts
|
|
208020
|
+
/**
|
|
208021
|
+
* Brokered Forge GitHub tools, exposed to the Claude surface (in-process MCP).
|
|
208022
|
+
*
|
|
208023
|
+
* The Codex app-server consumes these tools as native dynamic tools; Claude
|
|
208024
|
+
* reaches them through MCP instead. Both surfaces dispatch the SAME handler
|
|
208025
|
+
* (`createCodexGitHubDynamicToolHandler`), so auth resolution, the write
|
|
208026
|
+
* confirmation gate and the audit trail are shared rather than reimplemented
|
|
208027
|
+
* per provider — this module only adapts descriptor + result shapes.
|
|
208028
|
+
*
|
|
208029
|
+
* Without it a Claude agent has no brokered push path at all and falls back to
|
|
208030
|
+
* raw `git`, which the runtime deliberately blocks via `GIT_ASKPASS=/bin/false`.
|
|
208031
|
+
*
|
|
208032
|
+
* Result envelopes are relayed verbatim as tool content: the web approval card
|
|
208033
|
+
* is built by scanning tool results for `userActionRequired`, so summarising or
|
|
208034
|
+
* reshaping the payload here would silently strip the user's ability to approve
|
|
208035
|
+
* a write.
|
|
208036
|
+
*/
|
|
208037
|
+
const GITHUB_MCP_SERVER_NAME = "forge-github";
|
|
208038
|
+
/** Joins the brokered result's content items back into a single text payload. */
|
|
208039
|
+
function readResultText(contentItems) {
|
|
208040
|
+
return contentItems.map((item) => item.text).filter((text) => typeof text === "string").join("\n");
|
|
208041
|
+
}
|
|
208042
|
+
/**
|
|
208043
|
+
* Factored out of `createGitHubMcpServer` (mirroring the Sidekick tools server)
|
|
208044
|
+
* so dispatch and envelope handling are testable without the SDK's `tool()` /
|
|
208045
|
+
* `createSdkMcpServer` machinery.
|
|
208046
|
+
*/
|
|
208047
|
+
function buildGitHubToolHandlers(runBrokeredTool, threadId) {
|
|
208048
|
+
return createCodexGitHubDynamicTools().map((descriptor) => ({
|
|
208049
|
+
name: descriptor.name,
|
|
208050
|
+
description: descriptor.description,
|
|
208051
|
+
inputSchema: jsonSchemaToZodShape(descriptor.inputSchema),
|
|
208052
|
+
handler: async (args) => {
|
|
208053
|
+
const result = await runBrokeredTool({
|
|
208054
|
+
threadId,
|
|
208055
|
+
tool: descriptor.name,
|
|
208056
|
+
arguments: args
|
|
208057
|
+
});
|
|
208058
|
+
return {
|
|
208059
|
+
content: [{
|
|
208060
|
+
type: "text",
|
|
208061
|
+
text: readResultText(result.contentItems)
|
|
208062
|
+
}],
|
|
208063
|
+
...result.success ? {} : { isError: true }
|
|
208064
|
+
};
|
|
208065
|
+
}
|
|
208066
|
+
}));
|
|
208067
|
+
}
|
|
208068
|
+
function createGitHubMcpServer(runBrokeredTool, threadId) {
|
|
208069
|
+
return z1e({
|
|
208070
|
+
name: GITHUB_MCP_SERVER_NAME,
|
|
208071
|
+
tools: buildGitHubToolHandlers(runBrokeredTool, threadId).map((entry) => U1e(entry.name, entry.description, entry.inputSchema, entry.handler))
|
|
208072
|
+
});
|
|
208073
|
+
}
|
|
208074
|
+
//#endregion
|
|
207882
208075
|
//#region src/provider/providerAuthFailureCopy.ts
|
|
207883
208076
|
/**
|
|
207884
208077
|
* Rewrite provider auth failures into an action the user can actually take.
|
|
@@ -208183,6 +208376,7 @@ function buildClaudeMcpServers(input) {
|
|
|
208183
208376
|
"forge-browser": createBrowserMcpServer(input.browserManager, input.threadId, browserToolScope(input.browserToolEnvironmentId)),
|
|
208184
208377
|
"forge-dev-server": createDevServerMcpServer(input.devServerToolDeps, input.threadId),
|
|
208185
208378
|
"cmmd-context": createCmmdContextMcpServer(input.threadId, input.resolveCmmdPat),
|
|
208379
|
+
[GITHUB_MCP_SERVER_NAME]: createGitHubMcpServer(input.runBrokeredGitHubTool, input.threadId),
|
|
208186
208380
|
...input.computerManager ? { [COMPUTER_MCP_SERVER_NAME]: createComputerMcpServer(input.computerManager, input.threadId) } : {},
|
|
208187
208381
|
...input.cmmdSidekickTools ? { "cmmd-sidekick-tools": createCmmdSidekickToolsMcpServer(input.cmmdSidekickTools.session, input.cmmdSidekickTools.tools) } : {}
|
|
208188
208382
|
};
|
|
@@ -210192,6 +210386,12 @@ const makeClaudeAdapter = fn$1("makeClaudeAdapter")(function* (options) {
|
|
|
210192
210386
|
const permissionMode = permissionModeForRuntimeMode(input.runtimeMode);
|
|
210193
210387
|
const settings = claudeQuerySettings(modelConfig.thinking, modelConfig.fastMode);
|
|
210194
210388
|
const systemPrompt = buildClaudeSystemPrompt(modelConfig.endpointProfile, serverSettings.coauthorIncludeForge);
|
|
210389
|
+
const runBrokeredGitHubTool = createCodexGitHubDynamicToolHandler(createForgeGitHubToolHandlerOptions({
|
|
210390
|
+
runWithRuntimeContext: runWithSqlRuntimeContext,
|
|
210391
|
+
githubWriteIdentity: serverSettings.githubWriteIdentity,
|
|
210392
|
+
logPrefix: "claude-github",
|
|
210393
|
+
bypassWriteConfirmation: input.runtimeMode === "full-access"
|
|
210394
|
+
}));
|
|
210195
210395
|
const queryRuntime = yield* createClaudeQueryRuntime(prompt, buildClaudeQueryOptions({
|
|
210196
210396
|
cwd: input.cwd,
|
|
210197
210397
|
effectiveApiModelId: modelConfig.effectiveApiModelId,
|
|
@@ -210211,7 +210411,8 @@ const makeClaudeAdapter = fn$1("makeClaudeAdapter")(function* (options) {
|
|
|
210211
210411
|
computerManager,
|
|
210212
210412
|
resolveCmmdPat,
|
|
210213
210413
|
devServerToolDeps,
|
|
210214
|
-
cmmdSidekickTools
|
|
210414
|
+
cmmdSidekickTools,
|
|
210415
|
+
runBrokeredGitHubTool
|
|
210215
210416
|
}), threadId);
|
|
210216
210417
|
const session = buildClaudeProviderSession({
|
|
210217
210418
|
threadId,
|
|
@@ -260394,7 +260595,7 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
260394
260595
|
var dgram = __require("dgram");
|
|
260395
260596
|
var thunky = require_thunky();
|
|
260396
260597
|
var events = __require("events");
|
|
260397
|
-
var os
|
|
260598
|
+
var os = __require("os");
|
|
260398
260599
|
var noop = function() {};
|
|
260399
260600
|
module.exports = function(opts) {
|
|
260400
260601
|
if (!opts) opts = {};
|
|
@@ -260525,14 +260726,14 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
260525
260726
|
return that;
|
|
260526
260727
|
};
|
|
260527
260728
|
function defaultInterface() {
|
|
260528
|
-
var networks = os
|
|
260729
|
+
var networks = os.networkInterfaces();
|
|
260529
260730
|
var names = Object.keys(networks);
|
|
260530
260731
|
for (var i = 0; i < names.length; i++) {
|
|
260531
260732
|
var net = networks[names[i]];
|
|
260532
260733
|
for (var j = 0; j < net.length; j++) {
|
|
260533
260734
|
var iface = net[j];
|
|
260534
260735
|
if (isIPv4(iface.family) && !iface.internal) {
|
|
260535
|
-
if (os
|
|
260736
|
+
if (os.platform() === "darwin" && names[i] === "en0") return iface.address;
|
|
260536
260737
|
return "0.0.0.0";
|
|
260537
260738
|
}
|
|
260538
260739
|
}
|
|
@@ -260540,7 +260741,7 @@ var import_multicast_dns = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
260540
260741
|
return "127.0.0.1";
|
|
260541
260742
|
}
|
|
260542
260743
|
function allInterfaces() {
|
|
260543
|
-
var networks = os
|
|
260744
|
+
var networks = os.networkInterfaces();
|
|
260544
260745
|
var names = Object.keys(networks);
|
|
260545
260746
|
var res = [];
|
|
260546
260747
|
for (var i = 0; i < names.length; i++) {
|
|
@@ -283125,7 +283326,9 @@ const ProviderCommandReactorLive = effect(ProviderCommandReactor, gen(function*
|
|
|
283125
283326
|
projects: readModel.projects
|
|
283126
283327
|
});
|
|
283127
283328
|
if (!cwd) return "Forge could not resolve the project folder for this thread.";
|
|
283128
|
-
|
|
283329
|
+
const isCloudExecutionRuntime = serverConfig.forgeCmmdRuntimeMode === true;
|
|
283330
|
+
const managedRoots = [serverConfig.cloudProjectsRoot, serverConfig.worktreesDir];
|
|
283331
|
+
if (isCloudExecutionRuntime && !isPathInsideAnyRoot(cwd, managedRoots)) return `Forge blocked this agent turn because the project folder is outside the managed runtime workspace. Folder: ${cwd}. Managed roots: ${managedRoots.join(", ")}.`;
|
|
283129
283332
|
if (thread.anchorKind === "task" && project?.repositoryIdentity == null && !isGitWorkspace(cwd)) return "Forge created this task thread, but the project folder is not a Git repository yet. Import or link the repository before starting an agent turn.";
|
|
283130
283333
|
return null;
|
|
283131
283334
|
});
|
|
@@ -288483,6 +288686,7 @@ function executionEnvironmentCapabilities(serverConfig) {
|
|
|
288483
288686
|
repositoryIdentity: true,
|
|
288484
288687
|
pullRequests: isExecutionPlane,
|
|
288485
288688
|
threadPullRequestLinking: isExecutionPlane,
|
|
288689
|
+
threadSettlement: isExecutionPlane,
|
|
288486
288690
|
cloudMode: serverConfig.forgeCmmdRuntimeMode === true || isCloudShell,
|
|
288487
288691
|
runtime: {
|
|
288488
288692
|
topology: runtimeTopology(serverConfig),
|
|
@@ -310312,16 +310516,16 @@ const gitUrlCloneRouteLayer = add$1("POST", "/api/cloud/git/clone-url", gen(func
|
|
|
310312
310516
|
//#endregion
|
|
310313
310517
|
//#region src/server.ts
|
|
310314
310518
|
const PtyAdapterLive = unwrap(gen(function* () {
|
|
310315
|
-
if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunPTY-
|
|
310316
|
-
else return (yield* promise(() => import("./NodePTY-
|
|
310519
|
+
if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunPTY-B7ThejfA.mjs"))).layer;
|
|
310520
|
+
else return (yield* promise(() => import("./NodePTY-RnitYPTs.mjs"))).layer;
|
|
310317
310521
|
}));
|
|
310318
310522
|
const HttpServerLive = unwrap(gen(function* () {
|
|
310319
310523
|
const config = yield* ServerConfig;
|
|
310320
|
-
if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunHttpServer-
|
|
310524
|
+
if (typeof Bun !== "undefined") return (yield* promise(() => import("./BunHttpServer-C_855q3m.mjs"))).layer({
|
|
310321
310525
|
port: config.port,
|
|
310322
310526
|
...config.host ? { hostname: config.host } : {}
|
|
310323
310527
|
});
|
|
310324
|
-
const [NodeHttpServer, NodeHttp] = yield* all([promise(() => import("./NodeHttpServer-
|
|
310528
|
+
const [NodeHttpServer, NodeHttp] = yield* all([promise(() => import("./NodeHttpServer-DgD75IAg.mjs")), promise(() => import("node:http"))]);
|
|
310325
310529
|
return NodeHttpServer.layer(NodeHttp.createServer, {
|
|
310326
310530
|
host: config.host,
|
|
310327
310531
|
port: config.port
|
|
@@ -310329,10 +310533,10 @@ const HttpServerLive = unwrap(gen(function* () {
|
|
|
310329
310533
|
}));
|
|
310330
310534
|
const PlatformServicesLive = unwrap(gen(function* () {
|
|
310331
310535
|
if (typeof Bun !== "undefined") {
|
|
310332
|
-
const { layer } = yield* promise(() => import("./BunServices-
|
|
310536
|
+
const { layer } = yield* promise(() => import("./BunServices-BFygTrvx.mjs"));
|
|
310333
310537
|
return layer;
|
|
310334
310538
|
} else {
|
|
310335
|
-
const { layer } = yield* promise(() => import("./NodeServices-
|
|
310539
|
+
const { layer } = yield* promise(() => import("./NodeServices-Da5rUDDE.mjs").then((n) => n.t));
|
|
310336
310540
|
return layer;
|
|
310337
310541
|
}
|
|
310338
310542
|
}));
|
|
@@ -310398,7 +310602,7 @@ const MiscRuntimeLayerLive = mergeAll(AnalyticsServiceLayerLive, OpenLive, Serve
|
|
|
310398
310602
|
const RuntimeDependenciesWithoutPullRequestsLive = ReactorLayerLive.pipe(provideMerge(CheckpointingLayerLive), provideMerge(GitLayerLive), provideMerge(OrchestrationLayerLive), provideMerge(ProviderLayerLive), provideMerge(TerminalLayerLive), provideMerge(AgentBrowserManagerLive), provideMerge(mergeAll(ThreadDevRuntimeLive, DevTunnelLive.pipe(provide$1(ThreadDevRuntimeLive)))), provideMerge(PersistenceLayerLive), provideMerge(KeybindingsLive), provideMerge(ProviderRegistryLive), provideMerge(mergeAll(ServerSettingsLive, UsageServiceLive.pipe(provide$1(ServerSettingsLive)))), provideMerge(WorkspaceLayerLive), provideMerge(WorkspaceReadinessStateLive), provideMerge(ProjectFaviconResolverLive), provideMerge(RepositoryIdentityResolverLive), provideMerge(ServerEnvironmentLive), provideMerge(AuthLayerLive), provideMerge(ServerSecretStoreLayerLive), provideMerge(mergeAll(CloudRedisCoordinationLive, CloudStateSyncLive.pipe(provide$1(PersistenceLayerLive)))), provideMerge(MiscRuntimeLayerLive));
|
|
310399
310603
|
const RuntimeDependenciesLive = pullRequestServiceFactoryLayer.pipe(provideMerge(RuntimeDependenciesWithoutPullRequestsLive), provideMerge(cmmdProjectIdentityResolverLive.pipe(provide$1(RuntimeDependenciesWithoutPullRequestsLive))), provideMerge(pullRequestProviderRuntimeLive));
|
|
310400
310604
|
const RuntimeServicesLive = ServerRuntimeStartupLive.pipe(provideMerge(RuntimeDependenciesLive));
|
|
310401
|
-
const makeRoutesLayer = mergeAll(authBearerBootstrapRouteLayer, authBootstrapRouteLayer, authCommandBearerBootstrapRouteLayer, authCommandBootstrapRouteLayer, authCmmdOAuthDeviceRouteLayer, authCmmdOAuthTokenRouteLayer, authCmmdPasswordTokenRouteLayer, authClientsRevokeOthersRouteLayer, authClientsRevokeRouteLayer, authClientsRouteLayer, authLogoutRouteLayer, authPairingLinksRevokeRouteLayer, authPairingLinksRouteLayer, authPairingCredentialRouteLayer, authSessionRouteLayer, authWebSocketTokenRouteLayer, authWebLoginRouteLayer, authWebCallbackRouteLayer, desktopLocalWebBridgePublishRouteLayer, desktopLocalWebBridgeBootstrapRouteLayer, desktopRelayControlPlaneRouteLayer, apiDocsHtmlRouteLayer, apiDocsOpenApiRouteLayer, pulseSignalStateListRouteLayer, pulseSignalStateUpsertRouteLayer, cmmdProfileRouteLayer, cmmdCreateBrainDocRouteLayer, cmmdUpdateTaskRouteLayer, cmmdUpsertTaskPullRequestRouteLayer, ...cmmdPullRequestRouteLayers, cmmdAddTaskCommentRouteLayer, cmmdWorkIntakeRouteLayer, cmmdWsTokenRouteLayer, cmmdSearchTasksRouteLayer, cmmdGetTaskCommentsRouteLayer, cmmdGetProjectCommentsRouteLayer, cmmdAddProjectCommentRouteLayer, cmmdUpdateProjectRouteLayer, cmmdGetOrgMembersRouteLayer, cmmdSimHostsRouteLayer, cmmdSimLeaseReadRouteLayer, cmmdSimLeaseClaimRouteLayer, cmmdSimLeaseReleaseRouteLayer, cmmdSimLeaseRenewRouteLayer, cmmdUploadTaskAttachmentRouteLayer, cmmdGetTaskAttachmentsRouteLayer, cmmdUpdateTaskCommentRouteLayer, cmmdDeleteTaskCommentRouteLayer, cmmdGetProjectRepositoryRouteLayer, cmmdListProjectRepositoriesRouteLayer, cmmdArchiveTaskRouteLayer, cmmdUnarchiveTaskRouteLayer, cmmdListTasksRouteLayer, cmmdCreateTaskRouteLayer, cmmdListCampaignsRouteLayer, cmmdGetCampaignRouteLayer, cmmdCreateCampaignRouteLayer, cmmdUpdateCampaignRouteLayer, cmmdDeleteCampaignRouteLayer, cmmdListSavedViewsRouteLayer, cmmdCreateSavedViewRouteLayer, cmmdImportSavedViewRouteLayer, cmmdUpdateSavedViewRouteLayer, cmmdDeleteSavedViewRouteLayer, cmmdListProjectsRouteLayer, cmmdGetProjectRouteLayer, cmmdCreateProjectRouteLayer, cmmdDeleteProjectRouteLayer, cmmdMoveProjectRouteLayer, cmmdGetProjectMembersRouteLayer, cmmdListWorkspaceMembersRouteLayer, cmmdAddProjectMemberRouteLayer, cmmdGetProjectMilestonesRouteLayer, cmmdCreateProjectMilestoneRouteLayer, cmmdUpdateProjectMilestoneRouteLayer, cmmdDeleteProjectMilestoneRouteLayer, cmmdGetProjectUpdatesRouteLayer, cmmdCreateProjectUpdateRouteLayer, cmmdUpdateProjectUpdateRouteLayer, cmmdDeleteProjectUpdateRouteLayer, cmmdImproveProjectContentRouteLayer, cmmdCreateProjectTaskDraftRouteLayer, cmmdGetProjectTaskDraftRouteLayer, cmmdUpdateProjectTaskDraftRouteLayer, cmmdPreviewProjectTaskDraftRouteLayer, cmmdCommitProjectTaskDraftRouteLayer, cmmdDiscardProjectTaskDraftRouteLayer, cmmdGetProjectLeadPlanRouteLayer, cmmdActivateProjectLeadAuthorityRouteLayer, cmmdGetProjectLeadReadinessRouteLayer, cmmdGetProjectLeadCapabilitiesRouteLayer, cmmdGetProjectLeadSummaryRouteLayer, cmmdGetProjectLeadDetailRouteLayer, cmmdGetProjectLeadBriefingRouteLayer, cmmdListProjectLeadEventsRouteLayer, cmmdExplainProjectLeadRouteLayer, cmmdPauseProjectLeadRouteLayer, cmmdResumeProjectLeadRouteLayer, cmmdReserveProjectLeadTaskRouteLayer, cmmdReleaseProjectLeadReservationRouteLayer, cmmdReconcileProjectLeadRouteLayer, cmmdResolveProjectLeadAttentionRouteLayer, cmmdClaimProjectLeadControllerRouteLayer, cmmdRenewProjectLeadControllerClaimRouteLayer, cmmdYieldProjectLeadControllerClaimRouteLayer, cmmdAcknowledgeProjectLeadControllerEventRouteLayer, cmmdRecordProjectLeadControllerDecisionRouteLayer, cmmdListForgeAutomationPresetsRouteLayer, cmmdListUserForgeAutomationRulesRouteLayer, cmmdCreateUserForgeAutomationRuleRouteLayer, cmmdUpdateUserForgeAutomationRuleRouteLayer, cmmdListUserForgeAutomationRunsRouteLayer, cmmdStartUserForgeAutomationRunRouteLayer, cmmdListForgeAutomationRulesRouteLayer, cmmdCreateForgeAutomationRuleRouteLayer, cmmdUpdateForgeAutomationRuleRouteLayer, cmmdListForgeAutomationRunsRouteLayer, cmmdStartForgeAutomationRunRouteLayer, cmmdGetForgeAutomationRunRouteLayer, cmmdRetryForgeAutomationRunRouteLayer, cmmdCancelForgeAutomationRunRouteLayer, cmmdApproveForgeAutomationEscalationRouteLayer, cmmdRejectForgeAutomationEscalationRouteLayer, cmmdListProjectAgentMembersRouteLayer, cmmdCreateProjectAgentMemberRouteLayer, cmmdGetProjectAgentMemberRouteLayer, cmmdRenameProjectAgentMemberRouteLayer, cmmdRetireProjectAgentMemberRouteLayer, cmmdUpdateProjectAgentMemberAvatarRouteLayer, cmmdListProjectAgentMemberInstancesRouteLayer, cmmdPreviewProjectAgentMemberConsolidationRouteLayer, cmmdApplyProjectAgentMemberConsolidationRouteLayer, cmmdPutProjectTaskAssignmentRouteLayer, cmmdListProjectBoardRouteLayer, cmmdGetProjectTaskWorkflowRouteLayer, cmmdUpdateProjectTaskWorkflowRouteLayer, cmmdCreateProjectBoardTaskRouteLayer, cmmdUpdateProjectBoardTaskRouteLayer, cmmdUpdateProjectBoardTaskStatusRouteLayer, cmmdListTaskExecutionOptionsRouteLayer, cmmdCreateTaskWorkSessionRouteLayer, cmmdListProjectWorkSessionsRouteLayer, cmmdGetWorkSessionRouteLayer, cmmdUpdateWorkSessionRouteLayer, cmmdAttachWorkSessionThreadRouteLayer, cmmdListTaskConversationsRouteLayer, cmmdLinkTaskConversationRouteLayer, cmmdGetTaskHistoryRouteLayer, cmmdGetTaskConversationRouteLayer, cmmdSpawnForgeThreadFromBoardTaskRouteLayer, cmmdListCenterBoardRouteLayer, cmmdCreateCenterBoardTaskRouteLayer, cmmdCreateFeedbackRouteLayer, cmmdUpdateCenterBoardTaskRouteLayer, cmmdMoveCenterBoardTaskRouteLayer, cmmdMoveProjectBoardTaskRouteLayer, cmmdArchiveProjectBoardTaskRouteLayer, cmmdUnarchiveProjectBoardTaskRouteLayer, cmmdArchiveCenterBoardTaskRouteLayer, cmmdUnarchiveCenterBoardTaskRouteLayer, cmmdBootstrapRouteLayer, cmmdGetAccountPreferencesRouteLayer, cmmdUpdateAccountPreferencesRouteLayer, cmmdGetOrgProviderPolicyRouteLayer, cmmdListChatsRouteLayer, cmmdGetChatRouteLayer, cmmdListDevicesRouteLayer, runtimeReplicationStatusRouteLayer, cmmdRegisterDeviceRouteLayer, cmmdHeartbeatRuntimeRouteLayer, cmmdGrantRuntimeAccessRouteLayer, cmmdRevokeRuntimeAccessRouteLayer, cmmdCreateRelayControlRouteLayer, cmmdCreateRelayActionGrantRouteLayer, cmmdReplaceRuntimeInventoryRouteLayer, cmmdListRuntimeInventoryRouteLayer, cmmdGetRuntimeDiagnosticsRouteLayer, cmmdProvisionAuthRuntimeRouteLayer, cmmdGetAuthRuntimeRouteLayer, cmmdDestroyAuthRuntimeRouteLayer, cmmdConnectAuthRuntimeRouteLayer, cmmdGetProviderAccountsRouteLayer, cmmdDeleteProviderAccountRouteLayer, cmmdSetProviderAccountDefaultRouteLayer, cmmdGetProviderUsageRouteLayer, cmmdRefreshProviderUsageRouteLayer, cmmdGetUserCodexCredentialRouteLayer, cmmdDeleteUserCodexCredentialRouteLayer, cmmdGetUserClaudeCredentialRouteLayer, cmmdDeleteUserClaudeCredentialRouteLayer, cmmdGetClaudeRuntimeReadinessRouteLayer, cmmdAppendRuntimeThreadEventsRouteLayer, cmmdGetRuntimeThreadReplicaRouteLayer, cmmdRenameDeviceRouteLayer, cmmdRevokeDeviceRouteLayer, cmmdInstallConnectorRouteLayer, cmmdListConnectorsRouteLayer, cmmdForgeCloudProjectsListRouteLayer, cmmdForgeCloudProjectsEventsRouteLayer, cmmdForgeCloudProjectRegisterRouteLayer, cmmdForgeCloudProjectUnregisterRouteLayer, cmmdForgeCloudProjectLifecyclePreflightRouteLayer, cmmdForgeCloudProjectRemovalRouteLayer, cmmdForgeCloudProjectRemovalReceiptRouteLayer, cmmdForgeRuntimesEnsureRouteLayer, cmmdForgeRuntimesConnectRouteLayer, ownerRuntimeCodexReadinessRouteLayer, cmmdForgeRuntimesStatusRouteLayer, cmmdForgeRuntimesStartRouteLayer, cmmdForgeRuntimesStopRouteLayer, cmmdForgeRuntimesRecycleRouteLayer, cmmdForgeRuntimesUpdateCommitRouteLayer, cmmdForgeRuntimesDestroyRouteLayer, cmmdGetTaskRouteLayer, commandUpdateTaskRouteLayer, mobileProviderCatalogRouteLayer, cmmdUsageSummaryRouteLayer, cmmdBillingRouteLayer, cmmdBillingSeriesRouteLayer, attachmentsRouteLayer, orchestrationDispatchRouteLayer, orchestrationCmmdWorkRunEventRouteLayer, orchestrationAutomationStartThreadRouteLayer, orchestrationAutomationRebindRouteLayer, orchestrationAutomationTerminalReconcileRouteLayer, mobileGitRunStackedActionRouteLayer, pullRequestDiffRouteLayer, orchestrationSnapshotRouteLayer, localAutomationListRouteLayer, localAutomationCreateRouteLayer, localAutomationUpdateRouteLayer, localAutomationDeleteRouteLayer, localAutomationRunRouteLayer, otlpTracesProxyRouteLayer, devTunnelProxyRouteLayer, devTunnelLocalPortProxyRouteLayer, projectFaviconRouteLayer, serverEnvironmentRouteLayer, browserWebRtcReadinessRouteLayer, staticAndDevRouteLayer, githubStatusRouteLayer, githubAuthorizeUrlRouteLayer, githubDisconnectRouteLayer, githubReposRouteLayer, githubCloneRouteLayer, githubCloneJobStartRouteLayer, githubCloneJobStatusRouteLayer, githubRefreshCredentialsRouteLayer, githubToolConfirmationApproveRouteLayer, projectLinkGetRouteLayer, projectLinkListRouteLayer, projectLinkSetRouteLayer, projectLinkDeleteRouteLayer, cmmdWorkspacesRouteLayer, cmmdCampaignsRouteLayer, cmmdProjectLinksRouteLayer, cmmdEnsureGitHubProjectContextRouteLayer, cmmdProjectRepositoryEnsureRouteLayer, cmmdProjectsGetRouteLayer, cmmdProjectsCreateRouteLayer, workspaceReadinessRouteLayer, runtimeLivenessRouteLayer, claudeNativeGenerationProofRouteLayer, codexRuntimeProviderReadinessRouteLayer, runtimeDiagnosticsRouteLayer, cloudFoldersRouteLayer, cloudProjectCreateRouteLayer, gitUrlCloneRouteLayer, websocketRpcRouteLayer).pipe(provide$1(browserApiCorsLayer));
|
|
310605
|
+
const makeRoutesLayer = mergeAll(authBearerBootstrapRouteLayer, authBootstrapRouteLayer, authCommandBearerBootstrapRouteLayer, authCommandBootstrapRouteLayer, authOAuthTokenExchangeRouteLayer, authCmmdOAuthDeviceRouteLayer, authCmmdOAuthTokenRouteLayer, authCmmdPasswordTokenRouteLayer, authClientsRevokeOthersRouteLayer, authClientsRevokeRouteLayer, authClientsRouteLayer, authLogoutRouteLayer, authPairingLinksRevokeRouteLayer, authPairingLinksRouteLayer, authPairingCredentialRouteLayer, authSessionRouteLayer, authWebSocketTokenRouteLayer, authWebLoginRouteLayer, authWebCallbackRouteLayer, desktopLocalWebBridgePublishRouteLayer, desktopLocalWebBridgeBootstrapRouteLayer, desktopRelayControlPlaneRouteLayer, apiDocsHtmlRouteLayer, apiDocsOpenApiRouteLayer, pulseSignalStateListRouteLayer, pulseSignalStateUpsertRouteLayer, cmmdProfileRouteLayer, cmmdCreateBrainDocRouteLayer, cmmdUpdateTaskRouteLayer, cmmdUpsertTaskPullRequestRouteLayer, ...cmmdPullRequestRouteLayers, cmmdAddTaskCommentRouteLayer, cmmdWorkIntakeRouteLayer, cmmdWsTokenRouteLayer, cmmdSearchTasksRouteLayer, cmmdGetTaskCommentsRouteLayer, cmmdGetProjectCommentsRouteLayer, cmmdAddProjectCommentRouteLayer, cmmdUpdateProjectRouteLayer, cmmdGetOrgMembersRouteLayer, cmmdSimHostsRouteLayer, cmmdSimLeaseReadRouteLayer, cmmdSimLeaseClaimRouteLayer, cmmdSimLeaseReleaseRouteLayer, cmmdSimLeaseRenewRouteLayer, cmmdUploadTaskAttachmentRouteLayer, cmmdGetTaskAttachmentsRouteLayer, cmmdUpdateTaskCommentRouteLayer, cmmdDeleteTaskCommentRouteLayer, cmmdGetProjectRepositoryRouteLayer, cmmdListProjectRepositoriesRouteLayer, cmmdArchiveTaskRouteLayer, cmmdUnarchiveTaskRouteLayer, cmmdListTasksRouteLayer, cmmdCreateTaskRouteLayer, cmmdListCampaignsRouteLayer, cmmdGetCampaignRouteLayer, cmmdCreateCampaignRouteLayer, cmmdUpdateCampaignRouteLayer, cmmdDeleteCampaignRouteLayer, cmmdListSavedViewsRouteLayer, cmmdCreateSavedViewRouteLayer, cmmdImportSavedViewRouteLayer, cmmdUpdateSavedViewRouteLayer, cmmdDeleteSavedViewRouteLayer, cmmdListProjectsRouteLayer, cmmdGetProjectRouteLayer, cmmdCreateProjectRouteLayer, cmmdDeleteProjectRouteLayer, cmmdMoveProjectRouteLayer, cmmdGetProjectMembersRouteLayer, cmmdListWorkspaceMembersRouteLayer, cmmdAddProjectMemberRouteLayer, cmmdGetProjectMilestonesRouteLayer, cmmdCreateProjectMilestoneRouteLayer, cmmdUpdateProjectMilestoneRouteLayer, cmmdDeleteProjectMilestoneRouteLayer, cmmdGetProjectUpdatesRouteLayer, cmmdCreateProjectUpdateRouteLayer, cmmdUpdateProjectUpdateRouteLayer, cmmdDeleteProjectUpdateRouteLayer, cmmdImproveProjectContentRouteLayer, cmmdCreateProjectTaskDraftRouteLayer, cmmdGetProjectTaskDraftRouteLayer, cmmdUpdateProjectTaskDraftRouteLayer, cmmdPreviewProjectTaskDraftRouteLayer, cmmdCommitProjectTaskDraftRouteLayer, cmmdDiscardProjectTaskDraftRouteLayer, cmmdGetProjectLeadPlanRouteLayer, cmmdActivateProjectLeadAuthorityRouteLayer, cmmdGetProjectLeadReadinessRouteLayer, cmmdGetProjectLeadCapabilitiesRouteLayer, cmmdGetProjectLeadSummaryRouteLayer, cmmdGetProjectLeadDetailRouteLayer, cmmdGetProjectLeadBriefingRouteLayer, cmmdListProjectLeadEventsRouteLayer, cmmdExplainProjectLeadRouteLayer, cmmdPauseProjectLeadRouteLayer, cmmdResumeProjectLeadRouteLayer, cmmdReserveProjectLeadTaskRouteLayer, cmmdReleaseProjectLeadReservationRouteLayer, cmmdReconcileProjectLeadRouteLayer, cmmdResolveProjectLeadAttentionRouteLayer, cmmdClaimProjectLeadControllerRouteLayer, cmmdRenewProjectLeadControllerClaimRouteLayer, cmmdYieldProjectLeadControllerClaimRouteLayer, cmmdAcknowledgeProjectLeadControllerEventRouteLayer, cmmdRecordProjectLeadControllerDecisionRouteLayer, cmmdListForgeAutomationPresetsRouteLayer, cmmdListUserForgeAutomationRulesRouteLayer, cmmdCreateUserForgeAutomationRuleRouteLayer, cmmdUpdateUserForgeAutomationRuleRouteLayer, cmmdListUserForgeAutomationRunsRouteLayer, cmmdStartUserForgeAutomationRunRouteLayer, cmmdListForgeAutomationRulesRouteLayer, cmmdCreateForgeAutomationRuleRouteLayer, cmmdUpdateForgeAutomationRuleRouteLayer, cmmdListForgeAutomationRunsRouteLayer, cmmdStartForgeAutomationRunRouteLayer, cmmdGetForgeAutomationRunRouteLayer, cmmdRetryForgeAutomationRunRouteLayer, cmmdCancelForgeAutomationRunRouteLayer, cmmdApproveForgeAutomationEscalationRouteLayer, cmmdRejectForgeAutomationEscalationRouteLayer, cmmdListProjectAgentMembersRouteLayer, cmmdCreateProjectAgentMemberRouteLayer, cmmdGetProjectAgentMemberRouteLayer, cmmdRenameProjectAgentMemberRouteLayer, cmmdRetireProjectAgentMemberRouteLayer, cmmdUpdateProjectAgentMemberAvatarRouteLayer, cmmdListProjectAgentMemberInstancesRouteLayer, cmmdPreviewProjectAgentMemberConsolidationRouteLayer, cmmdApplyProjectAgentMemberConsolidationRouteLayer, cmmdPutProjectTaskAssignmentRouteLayer, cmmdListProjectBoardRouteLayer, cmmdGetProjectTaskWorkflowRouteLayer, cmmdUpdateProjectTaskWorkflowRouteLayer, cmmdCreateProjectBoardTaskRouteLayer, cmmdUpdateProjectBoardTaskRouteLayer, cmmdUpdateProjectBoardTaskStatusRouteLayer, cmmdListTaskExecutionOptionsRouteLayer, cmmdCreateTaskWorkSessionRouteLayer, cmmdListProjectWorkSessionsRouteLayer, cmmdGetWorkSessionRouteLayer, cmmdUpdateWorkSessionRouteLayer, cmmdAttachWorkSessionThreadRouteLayer, cmmdListTaskConversationsRouteLayer, cmmdLinkTaskConversationRouteLayer, cmmdGetTaskHistoryRouteLayer, cmmdGetTaskConversationRouteLayer, cmmdSpawnForgeThreadFromBoardTaskRouteLayer, cmmdListCenterBoardRouteLayer, cmmdCreateCenterBoardTaskRouteLayer, cmmdCreateFeedbackRouteLayer, cmmdUpdateCenterBoardTaskRouteLayer, cmmdMoveCenterBoardTaskRouteLayer, cmmdMoveProjectBoardTaskRouteLayer, cmmdArchiveProjectBoardTaskRouteLayer, cmmdUnarchiveProjectBoardTaskRouteLayer, cmmdArchiveCenterBoardTaskRouteLayer, cmmdUnarchiveCenterBoardTaskRouteLayer, cmmdBootstrapRouteLayer, cmmdGetAccountPreferencesRouteLayer, cmmdUpdateAccountPreferencesRouteLayer, cmmdGetOrgProviderPolicyRouteLayer, cmmdListChatsRouteLayer, cmmdGetChatRouteLayer, cmmdListDevicesRouteLayer, runtimeReplicationStatusRouteLayer, cmmdRegisterDeviceRouteLayer, cmmdHeartbeatRuntimeRouteLayer, cmmdGrantRuntimeAccessRouteLayer, cmmdRevokeRuntimeAccessRouteLayer, cmmdCreateRelayControlRouteLayer, cmmdCreateRelayActionGrantRouteLayer, cmmdReplaceRuntimeInventoryRouteLayer, cmmdListRuntimeInventoryRouteLayer, cmmdGetRuntimeDiagnosticsRouteLayer, cmmdProvisionAuthRuntimeRouteLayer, cmmdGetAuthRuntimeRouteLayer, cmmdDestroyAuthRuntimeRouteLayer, cmmdConnectAuthRuntimeRouteLayer, cmmdGetProviderAccountsRouteLayer, cmmdDeleteProviderAccountRouteLayer, cmmdSetProviderAccountDefaultRouteLayer, cmmdGetProviderUsageRouteLayer, cmmdRefreshProviderUsageRouteLayer, cmmdGetUserCodexCredentialRouteLayer, cmmdDeleteUserCodexCredentialRouteLayer, cmmdGetUserClaudeCredentialRouteLayer, cmmdDeleteUserClaudeCredentialRouteLayer, cmmdGetClaudeRuntimeReadinessRouteLayer, cmmdAppendRuntimeThreadEventsRouteLayer, cmmdGetRuntimeThreadReplicaRouteLayer, cmmdRenameDeviceRouteLayer, cmmdRevokeDeviceRouteLayer, cmmdInstallConnectorRouteLayer, cmmdListConnectorsRouteLayer, cmmdForgeCloudProjectsListRouteLayer, cmmdForgeCloudProjectsEventsRouteLayer, cmmdForgeCloudProjectRegisterRouteLayer, cmmdForgeCloudProjectUnregisterRouteLayer, cmmdForgeCloudProjectLifecyclePreflightRouteLayer, cmmdForgeCloudProjectRemovalRouteLayer, cmmdForgeCloudProjectRemovalReceiptRouteLayer, cmmdForgeRuntimesEnsureRouteLayer, cmmdForgeRuntimesConnectRouteLayer, ownerRuntimeCodexReadinessRouteLayer, cmmdForgeRuntimesStatusRouteLayer, cmmdForgeRuntimesStartRouteLayer, cmmdForgeRuntimesStopRouteLayer, cmmdForgeRuntimesRecycleRouteLayer, cmmdForgeRuntimesUpdateCommitRouteLayer, cmmdForgeRuntimesDestroyRouteLayer, cmmdGetTaskRouteLayer, commandUpdateTaskRouteLayer, mobileProviderCatalogRouteLayer, cmmdUsageSummaryRouteLayer, cmmdBillingRouteLayer, cmmdBillingSeriesRouteLayer, attachmentsRouteLayer, orchestrationDispatchRouteLayer, orchestrationCmmdWorkRunEventRouteLayer, orchestrationAutomationStartThreadRouteLayer, orchestrationAutomationRebindRouteLayer, orchestrationAutomationTerminalReconcileRouteLayer, mobileGitRunStackedActionRouteLayer, pullRequestDiffRouteLayer, orchestrationSnapshotRouteLayer, localAutomationListRouteLayer, localAutomationCreateRouteLayer, localAutomationUpdateRouteLayer, localAutomationDeleteRouteLayer, localAutomationRunRouteLayer, otlpTracesProxyRouteLayer, devTunnelProxyRouteLayer, devTunnelLocalPortProxyRouteLayer, projectFaviconRouteLayer, serverEnvironmentRouteLayer, browserWebRtcReadinessRouteLayer, staticAndDevRouteLayer, githubStatusRouteLayer, githubAuthorizeUrlRouteLayer, githubDisconnectRouteLayer, githubReposRouteLayer, githubCloneRouteLayer, githubCloneJobStartRouteLayer, githubCloneJobStatusRouteLayer, githubRefreshCredentialsRouteLayer, githubToolConfirmationApproveRouteLayer, projectLinkGetRouteLayer, projectLinkListRouteLayer, projectLinkSetRouteLayer, projectLinkDeleteRouteLayer, cmmdWorkspacesRouteLayer, cmmdCampaignsRouteLayer, cmmdProjectLinksRouteLayer, cmmdEnsureGitHubProjectContextRouteLayer, cmmdProjectRepositoryEnsureRouteLayer, cmmdProjectsGetRouteLayer, cmmdProjectsCreateRouteLayer, workspaceReadinessRouteLayer, runtimeLivenessRouteLayer, claudeNativeGenerationProofRouteLayer, codexRuntimeProviderReadinessRouteLayer, runtimeDiagnosticsRouteLayer, cloudFoldersRouteLayer, cloudProjectCreateRouteLayer, gitUrlCloneRouteLayer, websocketRpcRouteLayer).pipe(provide$1(browserApiCorsLayer));
|
|
310402
310606
|
const runServer = launch$1(unwrap(gen(function* () {
|
|
310403
310607
|
const config = yield* ServerConfig;
|
|
310404
310608
|
fixPath();
|
|
@@ -311328,7 +311532,7 @@ const connectLoginCommand = make$32("login", {
|
|
|
311328
311532
|
})).json();
|
|
311329
311533
|
},
|
|
311330
311534
|
openBrowser: async (url) => {
|
|
311331
|
-
const open = (await import("./open-
|
|
311535
|
+
const open = (await import("./open-D8mGyWmt.mjs")).default;
|
|
311332
311536
|
await open(url);
|
|
311333
311537
|
return true;
|
|
311334
311538
|
},
|