@cmmd-center/forge 0.13.20 → 0.13.22
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/bin.cjs +218 -25
- package/dist/bin.mjs +242 -49
- package/dist/client/assets/{CanvasPanel-uofZ5KUR.js → CanvasPanel-DeDjy-X2.js} +2 -2
- package/dist/client/assets/{CompositeItem-C5YSRi5B.js → CompositeItem-CQubmTuU.js} +2 -2
- package/dist/client/assets/{DiffPanel-vMgoOgmn.js → DiffPanel-4dMGnRQx.js} +2 -2
- package/dist/client/assets/{DiffPanel.logic-BL2ToTuV.js → DiffPanel.logic-SlNrN8IK.js} +2 -2
- package/dist/client/assets/{DiffPanelShell-Dq2v4pBo.js → DiffPanelShell-BEZZSyhr.js} +3 -3
- package/dist/client/assets/{DiffWorkerPoolProvider-B2Da35Tj.js → DiffWorkerPoolProvider-DE_ppGS9.js} +2 -2
- package/dist/client/assets/{PullRequestCodePanel-ByFVxByx.js → PullRequestCodePanel-CsYCbixY.js} +2 -2
- package/dist/client/assets/{Virtualizer-B3YnhtJt.js → Virtualizer-DzZ4roLU.js} +2 -2
- package/dist/client/assets/{canvasStateStore-IBP3QM_C.js → canvasStateStore-UwPGvihn.js} +2 -2
- package/dist/client/assets/{cmmdAuthRedirect-Ck1QfYaS.js → cmmdAuthRedirect-BUli2MC4.js} +2 -2
- package/dist/client/assets/{index-gEW4XdYw.js → index-DW9nsKTK.js} +6 -6
- package/dist/client/assets/{popover-BQaoSlk7.js → popover-BpdZi4Uc.js} +2 -2
- package/dist/client/assets/src-DVtrA7UW.js +3 -0
- package/dist/client/assets/{toggle-CE2NHkQL.js → toggle-BUkm7Wlt.js} +2 -2
- package/dist/client/index.html +10 -10
- package/dist/forge-build.json +1 -1
- package/dist/{open-D8mGyWmt.mjs → open-FIgTDosf.mjs} +3 -3
- package/package.json +1 -1
- package/dist/client/assets/src-Bj8vTcnP.js +0 -3
package/dist/bin.cjs
CHANGED
|
@@ -17245,7 +17245,8 @@ const ExecutionEnvironmentAuthCapabilities = require_Schema$1.Struct({
|
|
|
17245
17245
|
ownerBootstrapPromotion: require_Schema$1.Boolean,
|
|
17246
17246
|
bearerBootstrap: require_Schema$1.Boolean,
|
|
17247
17247
|
desktopBootstrap: require_Schema$1.Boolean,
|
|
17248
|
-
providerCredentialBroker: require_Schema$1.Boolean
|
|
17248
|
+
providerCredentialBroker: require_Schema$1.Boolean,
|
|
17249
|
+
cloudOwnerAssertion: require_Schema$1.optionalKey(require_Schema$1.Boolean)
|
|
17249
17250
|
});
|
|
17250
17251
|
const ExecutionEnvironmentToolCapabilities = require_Schema$1.Struct({
|
|
17251
17252
|
agents: require_Schema$1.Boolean,
|
|
@@ -66231,7 +66232,7 @@ function normalizeNumberish(value) {
|
|
|
66231
66232
|
}
|
|
66232
66233
|
//#endregion
|
|
66233
66234
|
//#region package.json
|
|
66234
|
-
var version$1 = "0.13.
|
|
66235
|
+
var version$1 = "0.13.22";
|
|
66235
66236
|
//#endregion
|
|
66236
66237
|
//#region src/sentry.ts
|
|
66237
66238
|
const SERVER_APP_NAME = "forge-server";
|
|
@@ -68356,6 +68357,7 @@ function extractCookieValue(setCookieHeaders, name) {
|
|
|
68356
68357
|
}
|
|
68357
68358
|
return null;
|
|
68358
68359
|
}
|
|
68360
|
+
/** @internal exported for the other owner lanes and their tests. */
|
|
68359
68361
|
function readCmmdJsonResponse(response, fallbackMessage) {
|
|
68360
68362
|
return require_Schema$1.gen(function* () {
|
|
68361
68363
|
const payload = yield* require_Schema$1.tryPromise({
|
|
@@ -68617,11 +68619,14 @@ function cmmdUserCredential(payload) {
|
|
|
68617
68619
|
/**
|
|
68618
68620
|
* Read one CMMD token-exchange response into the credential set Forge stores.
|
|
68619
68621
|
*
|
|
68620
|
-
*
|
|
68621
|
-
*
|
|
68622
|
-
*
|
|
68623
|
-
*
|
|
68624
|
-
*
|
|
68622
|
+
* Every owner lane that redeems a CMMD grant — the browser OAuth callback,
|
|
68623
|
+
* Cloud's password login, the cookie-shaped session renew, and the bearer
|
|
68624
|
+
* device-session redeem in cloudOwnerDeviceSession.ts — sees the same bundle
|
|
68625
|
+
* shape. Reading it in one place is what keeps them from drifting on which
|
|
68626
|
+
* field carries the PAT; callers still own their own error reporting, which
|
|
68627
|
+
* is the only part that legitimately differs between them.
|
|
68628
|
+
*
|
|
68629
|
+
* @internal exported for the other owner lanes and their tests.
|
|
68625
68630
|
*/
|
|
68626
68631
|
function resolveCmmdTokenBundleCredentials(tokenResult) {
|
|
68627
68632
|
return require_Schema$1.gen(function* () {
|
|
@@ -69590,22 +69595,52 @@ const deriveServerPaths = require_Schema$1.fn(function* (baseDir, _devUrl, _mode
|
|
|
69590
69595
|
secretsDir: join(stateDir, "secrets")
|
|
69591
69596
|
};
|
|
69592
69597
|
});
|
|
69593
|
-
|
|
69598
|
+
/**
|
|
69599
|
+
* Create `dir`, healing the one case a recursive mkdir cannot: a symlink whose
|
|
69600
|
+
* target no longer exists.
|
|
69601
|
+
*
|
|
69602
|
+
* A recursive mkdir is a no-op when the path is already a directory, but it
|
|
69603
|
+
* fails when the path is a DANGLING symlink, because nothing on the way down
|
|
69604
|
+
* resolves. bun reports that as EEXIST and node as ENOENT; either way the call
|
|
69605
|
+
* raises instead of recreating what the link points at.
|
|
69606
|
+
*
|
|
69607
|
+
* That shape is normal on a CMMD cloud runtime. The regenerable cache
|
|
69608
|
+
* directories there are symlinks onto the sprite's machine-local /tmp, which is
|
|
69609
|
+
* a separate device that is NOT part of the checkpointed overlay, so a wipe
|
|
69610
|
+
* leaves the links behind and takes their targets. Only provisioning recreated
|
|
69611
|
+
* them, and provisioning does not re-run on a restart, so a wiped store meant
|
|
69612
|
+
* the server raised at boot, exited 1, and did so again on every supervisor
|
|
69613
|
+
* restart for as long as the runtime existed.
|
|
69614
|
+
*
|
|
69615
|
+
* Observed live on cloud runtime 33dff4ee: /forge/caches pointed at
|
|
69616
|
+
* /tmp/forge-store/caches, the target was gone, and the server failed to boot
|
|
69617
|
+
* 974 times between 2026-09-15 and 2026-09-16. Recreating the target directory
|
|
69618
|
+
* by hand was the whole repair, which is what this does automatically.
|
|
69619
|
+
*
|
|
69620
|
+
* Healing is deliberately narrow. A path that is not a symlink, or a symlink
|
|
69621
|
+
* whose target cannot be created, re-raises the original error rather than
|
|
69622
|
+
* inventing a directory somewhere the caller did not ask for.
|
|
69623
|
+
*/
|
|
69624
|
+
const ensureDirectory = require_Schema$1.fn(function* (dir) {
|
|
69594
69625
|
const fs = yield* require_Path.FileSystem;
|
|
69626
|
+
const path = yield* require_Path.Path;
|
|
69627
|
+
yield* fs.makeDirectory(dir, { recursive: true }).pipe(require_Schema$1.catch_((error) => fs.readLink(dir).pipe(require_Schema$1.flatMap((target) => fs.makeDirectory(path.resolve(path.dirname(dir), target), { recursive: true })), require_Schema$1.mapError(() => error))));
|
|
69628
|
+
});
|
|
69629
|
+
const ensureServerDirectories = require_Schema$1.fn(function* (derivedPaths) {
|
|
69595
69630
|
const path = yield* require_Path.Path;
|
|
69596
69631
|
yield* require_Schema$1.all([
|
|
69597
|
-
|
|
69598
|
-
|
|
69599
|
-
|
|
69600
|
-
|
|
69601
|
-
|
|
69602
|
-
|
|
69603
|
-
|
|
69604
|
-
|
|
69605
|
-
|
|
69606
|
-
|
|
69607
|
-
|
|
69608
|
-
|
|
69632
|
+
ensureDirectory(derivedPaths.stateDir),
|
|
69633
|
+
ensureDirectory(derivedPaths.logsDir),
|
|
69634
|
+
ensureDirectory(derivedPaths.providerLogsDir),
|
|
69635
|
+
ensureDirectory(derivedPaths.terminalLogsDir),
|
|
69636
|
+
ensureDirectory(derivedPaths.attachmentsDir),
|
|
69637
|
+
ensureDirectory(derivedPaths.worktreesDir),
|
|
69638
|
+
ensureDirectory(path.dirname(derivedPaths.keybindingsConfigPath)),
|
|
69639
|
+
ensureDirectory(path.dirname(derivedPaths.settingsPath)),
|
|
69640
|
+
ensureDirectory(derivedPaths.providerStatusCacheDir),
|
|
69641
|
+
ensureDirectory(path.dirname(derivedPaths.anonymousIdPath)),
|
|
69642
|
+
ensureDirectory(path.dirname(derivedPaths.environmentMetadataPath)),
|
|
69643
|
+
ensureDirectory(path.dirname(derivedPaths.serverRuntimeStatePath))
|
|
69609
69644
|
], { concurrency: "unbounded" });
|
|
69610
69645
|
});
|
|
69611
69646
|
/**
|
|
@@ -298212,7 +298247,7 @@ function resolveBuildCommitFromEnv(env) {
|
|
|
298212
298247
|
* environment descriptor down instead of reporting an honest "unknown".
|
|
298213
298248
|
*/
|
|
298214
298249
|
function readBakedBuildCommit() {
|
|
298215
|
-
return "
|
|
298250
|
+
return "c9bc6514eb0d5f3c0eff3b12d396a11f7a96abef";
|
|
298216
298251
|
}
|
|
298217
298252
|
async function resolveServerBuildCommit(input) {
|
|
298218
298253
|
if (isFullCommitSha(input.baked)) return input.baked;
|
|
@@ -298340,9 +298375,10 @@ function executionEnvironmentCapabilities(serverConfig) {
|
|
|
298340
298375
|
auth: {
|
|
298341
298376
|
cmmd: true,
|
|
298342
298377
|
ownerBootstrapPromotion: !isRuntime && !isCloudShell,
|
|
298343
|
-
bearerBootstrap:
|
|
298378
|
+
bearerBootstrap: !isCloudShell,
|
|
298344
298379
|
desktopBootstrap: serverConfig.mode === "desktop" || serverConfig.desktopBootstrapToken !== void 0,
|
|
298345
|
-
providerCredentialBroker: false
|
|
298380
|
+
providerCredentialBroker: false,
|
|
298381
|
+
cloudOwnerAssertion: isCloudShell
|
|
298346
298382
|
},
|
|
298347
298383
|
tools: {
|
|
298348
298384
|
agents: isExecutionPlane,
|
|
@@ -298434,6 +298470,145 @@ const makeServerEnvironment = require_Schema$1.fn("makeServerEnvironment")(funct
|
|
|
298434
298470
|
});
|
|
298435
298471
|
const ServerEnvironmentLive = require_Schema$1.effect(ServerEnvironment, makeServerEnvironment());
|
|
298436
298472
|
//#endregion
|
|
298473
|
+
//#region src/auth/http/cloudOwnerDeviceSession.ts
|
|
298474
|
+
/**
|
|
298475
|
+
* Native OAuth clients allowed to redeem a Forge Cloud session grant through
|
|
298476
|
+
* this bearer lane. Starts with only the mobile client from FOR-36841's
|
|
298477
|
+
* companion CMMD change; widen deliberately, not by accident.
|
|
298478
|
+
*/
|
|
298479
|
+
const CLOUD_NATIVE_OAUTH_CLIENT_IDS = new Set(["cmmd-forge-mobile"]);
|
|
298480
|
+
const CloudOwnerSessionRedeemInput = require_Schema$1.Struct({
|
|
298481
|
+
sessionGrant: require_Schema$1.String,
|
|
298482
|
+
clientId: require_Schema$1.String
|
|
298483
|
+
});
|
|
298484
|
+
function outsideCloudShell() {
|
|
298485
|
+
return require_Schema$1.fail(new AuthError({
|
|
298486
|
+
message: "Forge Cloud session redemption is unavailable.",
|
|
298487
|
+
status: 403
|
|
298488
|
+
}));
|
|
298489
|
+
}
|
|
298490
|
+
function redeemSessionGrantWithCmmd(input) {
|
|
298491
|
+
return require_Schema$1.tryPromise({
|
|
298492
|
+
try: () => fetch(resolveCommandAppEndpoint("/api/mcp-server/oauth/token"), {
|
|
298493
|
+
method: "POST",
|
|
298494
|
+
headers: { "content-type": "application/json" },
|
|
298495
|
+
body: JSON.stringify({
|
|
298496
|
+
grant_type: "forge_session_grant",
|
|
298497
|
+
grant_token: input.sessionGrant,
|
|
298498
|
+
client_id: input.clientId
|
|
298499
|
+
})
|
|
298500
|
+
}),
|
|
298501
|
+
catch: (cause) => new AuthError({
|
|
298502
|
+
message: "Failed to redeem the Forge Cloud session grant with CMMD.",
|
|
298503
|
+
status: 500,
|
|
298504
|
+
cause
|
|
298505
|
+
})
|
|
298506
|
+
}).pipe(require_Schema$1.flatMap((response) => readCmmdJsonResponse(response, "Failed to redeem the Forge Cloud session grant with CMMD.")));
|
|
298507
|
+
}
|
|
298508
|
+
const cloudOwnerSessionRedeemRouteLayer = add$1("POST", "/api/auth/cloud/session", require_Schema$1.gen(function* () {
|
|
298509
|
+
const serverAuth = yield* ServerAuth;
|
|
298510
|
+
if (serverAuth.isForgeCloudShell?.() !== true) return yield* outsideCloudShell();
|
|
298511
|
+
const request = yield* require_HttpServer.HttpServerRequest;
|
|
298512
|
+
const limited = rateLimitOrRespond({
|
|
298513
|
+
routeClass: "auth-bootstrap",
|
|
298514
|
+
clientKey: clientKeyFromRequest(request)
|
|
298515
|
+
});
|
|
298516
|
+
if (limited) return limited;
|
|
298517
|
+
yield* serverAuth.authenticateHttpRequest(request);
|
|
298518
|
+
const payload = yield* require_HttpServer.schemaBodyJson(CloudOwnerSessionRedeemInput).pipe(require_Schema$1.mapError((cause) => new AuthError({
|
|
298519
|
+
message: "Invalid Forge Cloud session redeem payload.",
|
|
298520
|
+
status: 400,
|
|
298521
|
+
cause
|
|
298522
|
+
})));
|
|
298523
|
+
if (!CLOUD_NATIVE_OAUTH_CLIENT_IDS.has(payload.clientId)) return yield* new AuthError({
|
|
298524
|
+
message: "Unknown Forge Cloud native client.",
|
|
298525
|
+
status: 403
|
|
298526
|
+
});
|
|
298527
|
+
const tokenResult = yield* redeemSessionGrantWithCmmd(payload);
|
|
298528
|
+
const { tokenObj, cmmdIdentity, userId, accessToken, mcpToken, refreshToken, forgeOwnerAssertion, sessionGrantExpiresAt, isJwt, patToStore, jwtToStore } = yield* resolveCmmdTokenBundleCredentials(tokenResult);
|
|
298529
|
+
if (!cmmdIdentity || !userId || !patToStore) {
|
|
298530
|
+
yield* require_Schema$1.logError("Forge Cloud session redeem: CMMD token response incomplete.", {
|
|
298531
|
+
clientId: payload.clientId,
|
|
298532
|
+
tokenResponse: describeCmmdTokenResponseForLog({
|
|
298533
|
+
tokenObj,
|
|
298534
|
+
tokenResult,
|
|
298535
|
+
accessToken,
|
|
298536
|
+
mcpToken,
|
|
298537
|
+
refreshToken,
|
|
298538
|
+
isJwt,
|
|
298539
|
+
userId,
|
|
298540
|
+
patToStore,
|
|
298541
|
+
jwtToStore
|
|
298542
|
+
})
|
|
298543
|
+
});
|
|
298544
|
+
return yield* new AuthError({
|
|
298545
|
+
message: "CMMD did not return a complete redeemed Forge Cloud session.",
|
|
298546
|
+
status: 500
|
|
298547
|
+
});
|
|
298548
|
+
}
|
|
298549
|
+
const assertion = yield* validateCloudOwnerCallbackAssertion({
|
|
298550
|
+
serverAuth,
|
|
298551
|
+
assertionToken: forgeOwnerAssertion,
|
|
298552
|
+
authenticatedUserId: userId
|
|
298553
|
+
});
|
|
298554
|
+
if (!assertion) return yield* require_Schema$1.die(/* @__PURE__ */ new Error("Expected a redeemed Forge Cloud owner assertion for a native client."));
|
|
298555
|
+
yield* persistCloudOwnerArtifacts({
|
|
298556
|
+
assertion,
|
|
298557
|
+
accessToken: patToStore,
|
|
298558
|
+
identity: cmmdIdentity,
|
|
298559
|
+
jwtToken: jwtToStore,
|
|
298560
|
+
refreshToken,
|
|
298561
|
+
sessionGrant: payload.sessionGrant,
|
|
298562
|
+
sessionGrantExpiresAt
|
|
298563
|
+
});
|
|
298564
|
+
yield* require_Schema$1.logInfo("Forge Cloud owner session redeemed.", {
|
|
298565
|
+
sessionId: assertion.sessionId,
|
|
298566
|
+
clientId: payload.clientId,
|
|
298567
|
+
userId
|
|
298568
|
+
});
|
|
298569
|
+
return require_HttpServer.jsonUnsafe({
|
|
298570
|
+
assertion: assertion.token,
|
|
298571
|
+
assertionExpiresAt: require_Schema$1.toUtc(assertion.expiresAt),
|
|
298572
|
+
sessionGrantExpiresAt,
|
|
298573
|
+
user: {
|
|
298574
|
+
id: assertion.userId,
|
|
298575
|
+
email: cmmdIdentity.email
|
|
298576
|
+
}
|
|
298577
|
+
}, { status: 200 });
|
|
298578
|
+
}).pipe(require_Schema$1.catchTag("AuthError", (error) => respondToAuthError(error))));
|
|
298579
|
+
/**
|
|
298580
|
+
* Seam for CMMD-side session-grant revocation.
|
|
298581
|
+
*
|
|
298582
|
+
* As of FOR-36841, CMMD does not expose an endpoint to revoke a
|
|
298583
|
+
* `forge_session_grant` token server-side (confirm with the CMMD change
|
|
298584
|
+
* before wiring this in). When it does, call it here, best-effort: a failure
|
|
298585
|
+
* revoking at CMMD must never block the local row deletion below, which is
|
|
298586
|
+
* this endpoint's actual guarantee. Left as a documented no-op rather than a
|
|
298587
|
+
* guess at CMMD's eventual route shape.
|
|
298588
|
+
*/
|
|
298589
|
+
function revokeCmmdSessionGrantBestEffort(_sessionId) {
|
|
298590
|
+
return require_Schema$1.void_;
|
|
298591
|
+
}
|
|
298592
|
+
const cloudOwnerSessionRevokeRouteLayer = add$1("POST", "/api/auth/cloud/session/revoke", require_Schema$1.gen(function* () {
|
|
298593
|
+
const serverAuth = yield* ServerAuth;
|
|
298594
|
+
if (serverAuth.isForgeCloudShell?.() !== true) return yield* outsideCloudShell();
|
|
298595
|
+
const request = yield* require_HttpServer.HttpServerRequest;
|
|
298596
|
+
const limited = rateLimitOrRespond({
|
|
298597
|
+
routeClass: "auth-bootstrap",
|
|
298598
|
+
clientKey: clientKeyFromRequest(request)
|
|
298599
|
+
});
|
|
298600
|
+
if (limited) return limited;
|
|
298601
|
+
const session = yield* serverAuth.authenticateHttpRequest(request);
|
|
298602
|
+
yield* clearCommandAccessTokenForSession(session.sessionId).pipe(require_Schema$1.mapError((cause) => new AuthError({
|
|
298603
|
+
message: "Failed to revoke the Forge Cloud owner session.",
|
|
298604
|
+
status: 500,
|
|
298605
|
+
cause
|
|
298606
|
+
})));
|
|
298607
|
+
yield* revokeCmmdSessionGrantBestEffort(session.sessionId);
|
|
298608
|
+
yield* require_Schema$1.logInfo("Forge Cloud owner session revoked.", { sessionId: session.sessionId });
|
|
298609
|
+
return require_HttpServer.empty({ status: 204 });
|
|
298610
|
+
}).pipe(require_Schema$1.catchTag("AuthError", (error) => respondToAuthError(error))));
|
|
298611
|
+
//#endregion
|
|
298437
298612
|
//#region src/docs/http.ts
|
|
298438
298613
|
const SCALAR_API_REFERENCE_URL = "https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.64.1";
|
|
298439
298614
|
const SCALAR_API_REFERENCE_INTEGRITY = "sha384-SmFRDuBBmEoCbbBCTcn8/+cIQONyH0xgOKpsp6OttBlI8uG9uc6iAO8SonYQ3e1W";
|
|
@@ -300567,6 +300742,24 @@ function readWebSocketUpgradeToken(params) {
|
|
|
300567
300742
|
}
|
|
300568
300743
|
//#endregion
|
|
300569
300744
|
//#region src/auth/Layers/ForgeCloudOwnerAuthentication.ts
|
|
300745
|
+
const BEARER_PREFIX = "Bearer ";
|
|
300746
|
+
/**
|
|
300747
|
+
* Reads a Forge Cloud owner assertion presented as `Authorization: Bearer
|
|
300748
|
+
* <assertion>`, alongside the cookie read below.
|
|
300749
|
+
*
|
|
300750
|
+
* Deliberately its own parser rather than a shared one: `ServerAuth.ts`
|
|
300751
|
+
* carries a bearer reader for the local bootstrap/pairing/desktop lanes, and
|
|
300752
|
+
* those must stay untouched by this change. This function is only ever
|
|
300753
|
+
* called from `authenticateForgeCloudOwnerRequest`, which itself only runs
|
|
300754
|
+
* when `serverConfig.forgeCloudShellMode === true` — so a non-cloud server's
|
|
300755
|
+
* bearer lanes never pass through here.
|
|
300756
|
+
*/
|
|
300757
|
+
function readForgeCloudOwnerBearerToken(request) {
|
|
300758
|
+
const header = request.headers["authorization"];
|
|
300759
|
+
if (typeof header !== "string" || !header.startsWith(BEARER_PREFIX)) return null;
|
|
300760
|
+
const token = header.slice(7).trim();
|
|
300761
|
+
return token.length > 0 ? token : null;
|
|
300762
|
+
}
|
|
300570
300763
|
function assertionVerifierConfig(config) {
|
|
300571
300764
|
const publicKey = config.forgeCloudOwnerAssertionPublicKey;
|
|
300572
300765
|
const keyId = config.forgeCloudOwnerAssertionKeyId;
|
|
@@ -300594,7 +300787,7 @@ function authenticateForgeCloudOwnerRequest(request, config) {
|
|
|
300594
300787
|
message: "Forge Cloud owner assertion verification is misconfigured.",
|
|
300595
300788
|
status: 500
|
|
300596
300789
|
});
|
|
300597
|
-
const token = request.cookies[
|
|
300790
|
+
const token = request.cookies["forge_cloud_owner_assertion"] ?? readForgeCloudOwnerBearerToken(request);
|
|
300598
300791
|
if (!token) return yield* new AuthError({
|
|
300599
300792
|
message: "Authentication required.",
|
|
300600
300793
|
status: 401
|
|
@@ -321763,7 +321956,7 @@ const MiscRuntimeLayerLive = require_Schema$1.mergeAll(AnalyticsServiceLayerLive
|
|
|
321763
321956
|
const RuntimeDependenciesWithoutPullRequestsLive = ReactorLayerLive.pipe(require_Schema$1.provideMerge(CheckpointingLayerLive), require_Schema$1.provideMerge(GitLayerLive), require_Schema$1.provideMerge(OrchestrationLayerLive), require_Schema$1.provideMerge(ProviderLayerLive), require_Schema$1.provideMerge(TerminalLayerLive), require_Schema$1.provideMerge(AgentBrowserManagerLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(ThreadDevRuntimeLive, DevTunnelLive.pipe(require_Schema$1.provide$1(ThreadDevRuntimeLive)))), require_Schema$1.provideMerge(PersistenceLayerLive), require_Schema$1.provideMerge(KeybindingsLive), require_Schema$1.provideMerge(ProviderRegistryLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(ServerSettingsLive, UsageServiceLive.pipe(require_Schema$1.provide$1(ServerSettingsLive), require_Schema$1.provide$1(UsageSessionLookupLive), require_Schema$1.provide$1(UsageRecordedSourceLive.pipe(require_Schema$1.provide$1(OrchestrationLayerLive), require_Schema$1.provide$1(RuntimeReplicationOutboxLive), require_Schema$1.provide$1(ProviderSessionRuntimeRepositoryLive), require_Schema$1.provide$1(TextGenerationSessionRepositoryLive)))))), require_Schema$1.provideMerge(WorkspaceLayerLive), require_Schema$1.provideMerge(WorkspaceReadinessStateLive), require_Schema$1.provideMerge(ProjectFaviconResolverLive), require_Schema$1.provideMerge(RepositoryIdentityResolverLive), require_Schema$1.provideMerge(ServerEnvironmentLive), require_Schema$1.provideMerge(AuthLayerLive), require_Schema$1.provideMerge(ServerSecretStoreLayerLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(CloudRedisCoordinationLive, CloudStateSyncLive.pipe(require_Schema$1.provide$1(PersistenceLayerLive)))), require_Schema$1.provideMerge(MiscRuntimeLayerLive));
|
|
321764
321957
|
const RuntimeDependenciesLive = pullRequestServiceFactoryLayer.pipe(require_Schema$1.provideMerge(RuntimeDependenciesWithoutPullRequestsLive), require_Schema$1.provideMerge(cmmdProjectIdentityResolverLive.pipe(require_Schema$1.provide$1(RuntimeDependenciesWithoutPullRequestsLive))), require_Schema$1.provideMerge(pullRequestProviderRuntimeLive));
|
|
321765
321958
|
const RuntimeServicesLive = ServerRuntimeStartupLive.pipe(require_Schema$1.provideMerge(RuntimeDependenciesLive));
|
|
321766
|
-
const makeRoutesLayer = require_Schema$1.mergeAll(attachmentUploadRouteLayer, authBearerBootstrapRouteLayer, authBootstrapRouteLayer, authCommandBearerBootstrapRouteLayer, authCommandBootstrapRouteLayer, authOAuthTokenExchangeRouteLayer, authWebSocketTicketRouteLayer, authCmmdOAuthDeviceRouteLayer, authCmmdOAuthTokenRouteLayer, authCmmdPasswordTokenRouteLayer, authClientsRevokeOthersRouteLayer, authClientsRevokeRouteLayer, authClientsRouteLayer, authLogoutRouteLayer, authPairingLinksRevokeRouteLayer, authPairingLinksRouteLayer, authPairingCredentialRouteLayer, authSessionRenewRouteLayer, authSessionRouteLayer, authWebSocketTokenRouteLayer, authWebLoginRouteLayer, authWebCallbackRouteLayer, desktopLocalWebBridgePublishRouteLayer, desktopLocalWebBridgeBootstrapRouteLayer, desktopRelayControlPlaneRouteLayer, apiDocsHtmlRouteLayer, apiDocsOpenApiRouteLayer, pulseSignalStateListRouteLayer, pulseSignalStateUpsertRouteLayer, cmmdProfileRouteLayer, ...cmmdProxyRouteLayers, cmmdWorkIntakeRouteLayer, cmmdWsTokenRouteLayer, cmmdGetProjectCommentsRouteLayer, cmmdAddProjectCommentRouteLayer, cmmdUpdateProjectRouteLayer, cmmdUploadTaskAttachmentRouteLayer, cmmdUpdateTaskCommentRouteLayer, cmmdListWorkspaceMembersRouteLayer, cmmdAddProjectMemberRouteLayer, cmmdUpdateProjectAgentMemberAvatarRouteLayer, runtimeReplicationStatusRouteLayer, cmmdRefreshProviderUsageRouteLayer, cmmdForgeCloudProjectsListRouteLayer, cmmdForgeCloudProjectsEventsRouteLayer, cmmdForgeRuntimesEnsureRouteLayer, cmmdForgeRuntimesConnectRouteLayer, ownerRuntimeCodexReadinessRouteLayer, cmmdForgeRuntimesStatusRouteLayer, cmmdForgeRuntimesStartRouteLayer, cmmdForgeRuntimesStopRouteLayer, cmmdForgeRuntimesRecycleRouteLayer, cmmdForgeRuntimesUpdateCommitRouteLayer, cmmdForgeRuntimesDestroyRouteLayer, mobileProviderCatalogRouteLayer, attachmentsRouteLayer, orchestrationDispatchRouteLayer, orchestrationCmmdWorkRunEventRouteLayer, orchestrationAutomationStartThreadRouteLayer, orchestrationAutomationRebindRouteLayer, orchestrationAutomationTerminalReconcileRouteLayer, mobileGitRunStackedActionRouteLayer, pullRequestDiffRouteLayer, orchestrationSnapshotRouteLayer, orchestrationThreadSnapshotRouteLayer, 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, runtimeFilesystemHealthRouteLayer, claudeNativeGenerationProofRouteLayer, claudeUsageRouteLayer, codexRuntimeProviderReadinessRouteLayer, runtimeDiagnosticsRouteLayer, cloudFoldersRouteLayer, cloudProjectCreateRouteLayer, gitUrlCloneRouteLayer, websocketRpcRouteLayer).pipe(require_Schema$1.provide$1(browserApiCorsLayer));
|
|
321959
|
+
const makeRoutesLayer = require_Schema$1.mergeAll(attachmentUploadRouteLayer, authBearerBootstrapRouteLayer, authBootstrapRouteLayer, authCommandBearerBootstrapRouteLayer, authCommandBootstrapRouteLayer, authOAuthTokenExchangeRouteLayer, authWebSocketTicketRouteLayer, authCmmdOAuthDeviceRouteLayer, authCmmdOAuthTokenRouteLayer, authCmmdPasswordTokenRouteLayer, authClientsRevokeOthersRouteLayer, authClientsRevokeRouteLayer, authClientsRouteLayer, authLogoutRouteLayer, authPairingLinksRevokeRouteLayer, authPairingLinksRouteLayer, authPairingCredentialRouteLayer, authSessionRenewRouteLayer, authSessionRouteLayer, authWebSocketTokenRouteLayer, authWebLoginRouteLayer, authWebCallbackRouteLayer, cloudOwnerSessionRedeemRouteLayer, cloudOwnerSessionRevokeRouteLayer, desktopLocalWebBridgePublishRouteLayer, desktopLocalWebBridgeBootstrapRouteLayer, desktopRelayControlPlaneRouteLayer, apiDocsHtmlRouteLayer, apiDocsOpenApiRouteLayer, pulseSignalStateListRouteLayer, pulseSignalStateUpsertRouteLayer, cmmdProfileRouteLayer, ...cmmdProxyRouteLayers, cmmdWorkIntakeRouteLayer, cmmdWsTokenRouteLayer, cmmdGetProjectCommentsRouteLayer, cmmdAddProjectCommentRouteLayer, cmmdUpdateProjectRouteLayer, cmmdUploadTaskAttachmentRouteLayer, cmmdUpdateTaskCommentRouteLayer, cmmdListWorkspaceMembersRouteLayer, cmmdAddProjectMemberRouteLayer, cmmdUpdateProjectAgentMemberAvatarRouteLayer, runtimeReplicationStatusRouteLayer, cmmdRefreshProviderUsageRouteLayer, cmmdForgeCloudProjectsListRouteLayer, cmmdForgeCloudProjectsEventsRouteLayer, cmmdForgeRuntimesEnsureRouteLayer, cmmdForgeRuntimesConnectRouteLayer, ownerRuntimeCodexReadinessRouteLayer, cmmdForgeRuntimesStatusRouteLayer, cmmdForgeRuntimesStartRouteLayer, cmmdForgeRuntimesStopRouteLayer, cmmdForgeRuntimesRecycleRouteLayer, cmmdForgeRuntimesUpdateCommitRouteLayer, cmmdForgeRuntimesDestroyRouteLayer, mobileProviderCatalogRouteLayer, attachmentsRouteLayer, orchestrationDispatchRouteLayer, orchestrationCmmdWorkRunEventRouteLayer, orchestrationAutomationStartThreadRouteLayer, orchestrationAutomationRebindRouteLayer, orchestrationAutomationTerminalReconcileRouteLayer, mobileGitRunStackedActionRouteLayer, pullRequestDiffRouteLayer, orchestrationSnapshotRouteLayer, orchestrationThreadSnapshotRouteLayer, 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, runtimeFilesystemHealthRouteLayer, claudeNativeGenerationProofRouteLayer, claudeUsageRouteLayer, codexRuntimeProviderReadinessRouteLayer, runtimeDiagnosticsRouteLayer, cloudFoldersRouteLayer, cloudProjectCreateRouteLayer, gitUrlCloneRouteLayer, websocketRpcRouteLayer).pipe(require_Schema$1.provide$1(browserApiCorsLayer));
|
|
321767
321960
|
const makeServerLayer = require_Schema$1.unwrap(require_Schema$1.gen(function* () {
|
|
321768
321961
|
const config = yield* ServerConfig;
|
|
321769
321962
|
fixPath({ preferProcessPath: config.forgeCmmdRuntimeMode === true });
|