@electric-agent/studio 1.13.1 → 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/bridge/message-parser.d.ts +3 -3
  2. package/dist/bridge/message-parser.d.ts.map +1 -1
  3. package/dist/bridge/message-parser.js +3 -3
  4. package/dist/bridge/message-parser.js.map +1 -1
  5. package/dist/client/assets/{index-IvCtVUfs.css → index-BSGS-yya.css} +1 -1
  6. package/dist/client/assets/{index-BXdgNRgB.js → index-qUqEqKXn.js} +35 -35
  7. package/dist/client/index.html +2 -2
  8. package/dist/room-router.d.ts +13 -0
  9. package/dist/room-router.d.ts.map +1 -1
  10. package/dist/room-router.js +29 -1
  11. package/dist/room-router.js.map +1 -1
  12. package/dist/server.d.ts +2 -4
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +60 -68
  15. package/dist/server.js.map +1 -1
  16. package/package.json +7 -2
  17. package/dist/bridge/codex-docker.d.ts +0 -70
  18. package/dist/bridge/codex-docker.d.ts.map +0 -1
  19. package/dist/bridge/codex-docker.js +0 -234
  20. package/dist/bridge/codex-docker.js.map +0 -1
  21. package/dist/bridge/codex-json-parser.d.ts +0 -31
  22. package/dist/bridge/codex-json-parser.d.ts.map +0 -1
  23. package/dist/bridge/codex-json-parser.js +0 -267
  24. package/dist/bridge/codex-json-parser.js.map +0 -1
  25. package/dist/bridge/codex-md-generator.d.ts +0 -14
  26. package/dist/bridge/codex-md-generator.d.ts.map +0 -1
  27. package/dist/bridge/codex-md-generator.js +0 -55
  28. package/dist/bridge/codex-md-generator.js.map +0 -1
  29. package/dist/bridge/codex-sprites.d.ts +0 -64
  30. package/dist/bridge/codex-sprites.d.ts.map +0 -1
  31. package/dist/bridge/codex-sprites.js +0 -227
  32. package/dist/bridge/codex-sprites.js.map +0 -1
  33. package/dist/bridge/daytona.d.ts +0 -35
  34. package/dist/bridge/daytona.d.ts.map +0 -1
  35. package/dist/bridge/daytona.js +0 -141
  36. package/dist/bridge/daytona.js.map +0 -1
  37. package/dist/bridge/docker-stdio.d.ts +0 -30
  38. package/dist/bridge/docker-stdio.d.ts.map +0 -1
  39. package/dist/bridge/docker-stdio.js +0 -135
  40. package/dist/bridge/docker-stdio.js.map +0 -1
  41. package/dist/bridge/sprites.d.ts +0 -32
  42. package/dist/bridge/sprites.d.ts.map +0 -1
  43. package/dist/bridge/sprites.js +0 -133
  44. package/dist/bridge/sprites.js.map +0 -1
  45. package/dist/github-app.test.d.ts +0 -2
  46. package/dist/github-app.test.d.ts.map +0 -1
  47. package/dist/github-app.test.js +0 -62
  48. package/dist/github-app.test.js.map +0 -1
  49. package/dist/sandbox/daytona-push.d.ts +0 -3
  50. package/dist/sandbox/daytona-push.d.ts.map +0 -1
  51. package/dist/sandbox/daytona-push.js +0 -56
  52. package/dist/sandbox/daytona-push.js.map +0 -1
  53. package/dist/sandbox/daytona-registry.d.ts +0 -41
  54. package/dist/sandbox/daytona-registry.d.ts.map +0 -1
  55. package/dist/sandbox/daytona-registry.js +0 -127
  56. package/dist/sandbox/daytona-registry.js.map +0 -1
  57. package/dist/sandbox/daytona.d.ts +0 -41
  58. package/dist/sandbox/daytona.d.ts.map +0 -1
  59. package/dist/sandbox/daytona.js +0 -282
  60. package/dist/sandbox/daytona.js.map +0 -1
  61. package/dist/shared-sessions.d.ts +0 -16
  62. package/dist/shared-sessions.d.ts.map +0 -1
  63. package/dist/shared-sessions.js +0 -52
  64. package/dist/shared-sessions.js.map +0 -1
@@ -7,8 +7,8 @@
7
7
  <link rel="icon" type="image/svg+xml" href="/img/brand/favicon.svg" />
8
8
  <link rel="icon" type="image/png" href="/img/brand/favicon.png" />
9
9
  <link rel="shortcut icon" href="/favicon.ico" />
10
- <script type="module" crossorigin src="/assets/index-BXdgNRgB.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-IvCtVUfs.css">
10
+ <script type="module" crossorigin src="/assets/index-qUqEqKXn.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-BSGS-yya.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
@@ -13,9 +13,17 @@ export interface RoomParticipant {
13
13
  role?: string;
14
14
  bridge: SessionBridge;
15
15
  }
16
+ export interface RepoInfo {
17
+ /** GitHub repository URL (e.g. https://github.com/org/repo) */
18
+ url: string | null;
19
+ /** Branch the coder is working on (default: main) */
20
+ branch: string;
21
+ }
16
22
  export interface RoomRouterOptions {
17
23
  /** Maximum rounds before the room auto-closes (default: 20) */
18
24
  maxRounds?: number;
25
+ /** Repository information to share with all agents at discovery time */
26
+ repoInfo?: RepoInfo;
19
27
  }
20
28
  export declare class RoomRouter {
21
29
  readonly roomId: string;
@@ -23,6 +31,7 @@ export declare class RoomRouter {
23
31
  private readonly streamConfig;
24
32
  private readonly maxRounds;
25
33
  private readonly _participants;
34
+ private _repoInfo;
26
35
  private _state;
27
36
  private _roundCount;
28
37
  private cancelSubscription;
@@ -31,6 +40,10 @@ export declare class RoomRouter {
31
40
  get participants(): RoomParticipant[];
32
41
  get state(): "active" | "closed";
33
42
  get roundCount(): number;
43
+ /**
44
+ * Update the repository info (e.g. after the GitHub repo is created).
45
+ */
46
+ setRepoInfo(info: RepoInfo): void;
34
47
  /**
35
48
  * Add an agent to the room.
36
49
  * Reads stream history for discovery context, sends discovery prompt to agent.
@@ -1 +1 @@
1
- {"version":3,"file":"room-router.d.ts","sourceRoot":"","sources":["../src/room-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAE7E,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,aAAa,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAOD,qBAAa,UAAU;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,MAAM,CAAe;gBAG5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,iBAAiB;IAiB5B,IAAI,YAAY,IAAI,eAAe,EAAE,CAEpC;IAED,IAAI,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAE/B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChF;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE;;;OAGG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EvE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;YACW,cAAc;IAwC5B;;OAEG;YACW,iBAAiB;IAwE/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAqD5B"}
1
+ {"version":3,"file":"room-router.d.ts","sourceRoot":"","sources":["../src/room-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAE7E,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,aAAa,CAAA;CACrB;AAED,MAAM,WAAW,QAAQ;IACxB,+DAA+D;IAC/D,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAOD,qBAAa,UAAU;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,MAAM,CAAe;gBAG5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,iBAAiB;IAkB5B,IAAI,YAAY,IAAI,eAAe,EAAE,CAEpC;IAED,IAAI,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAE/B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIjC;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChF;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE;;;OAGG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EvE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;YACW,cAAc;IAsD5B;;OAEG;YACW,iBAAiB;IAwE/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA8D5B"}
@@ -17,6 +17,7 @@ export class RoomRouter {
17
17
  streamConfig;
18
18
  maxRounds;
19
19
  _participants = new Map();
20
+ _repoInfo;
20
21
  _state = "active";
21
22
  _roundCount = 0;
22
23
  cancelSubscription = null;
@@ -26,6 +27,7 @@ export class RoomRouter {
26
27
  this.roomName = roomName;
27
28
  this.streamConfig = streamConfig;
28
29
  this.maxRounds = options?.maxRounds ?? 20;
30
+ this._repoInfo = options?.repoInfo ?? null;
29
31
  const conn = getRoomStreamConnectionInfo(roomId, streamConfig);
30
32
  this.stream = new DurableStream({
31
33
  url: conn.url,
@@ -43,6 +45,12 @@ export class RoomRouter {
43
45
  get roundCount() {
44
46
  return this._roundCount;
45
47
  }
48
+ /**
49
+ * Update the repository info (e.g. after the GitHub repo is created).
50
+ */
51
+ setRepoInfo(info) {
52
+ this._repoInfo = info;
53
+ }
46
54
  /**
47
55
  * Add an agent to the room.
48
56
  * Reads stream history for discovery context, sends discovery prompt to agent.
@@ -142,7 +150,7 @@ export class RoomRouter {
142
150
  console.log(`[room-router:${this.roomId}] handleAgentOutput: no @room/@name found in text from ${participant.name}`);
143
151
  return; // Agent chose silence
144
152
  }
145
- console.log(`[room-router:${this.roomId}] handleAgentOutput: parsed @room message from ${participant.name}: to=${parsed.to ?? "broadcast"} isDone=${parsed.isDone} body=${parsed.body.slice(0, 80)}`);
153
+ console.log(`[room-router:${this.roomId}] handleAgentOutput: parsed @room message from ${participant.name}: to=${parsed.to ?? "broadcast"} isReviewRequest=${parsed.isReviewRequest} body=${parsed.body.slice(0, 80)}`);
146
154
  let finalBody = parsed.body;
147
155
  const isGateRequest = parsed.isGateRequest;
148
156
  // Gated agent or explicit gate request: block until human approves
@@ -237,6 +245,18 @@ export class RoomRouter {
237
245
  deliverTo.push(p);
238
246
  }
239
247
  }
248
+ // Announce when agents pick up a task (visible in room timeline)
249
+ const isReviewRequest = /^REVIEW_REQUEST:/m.test(msg.body);
250
+ if (isReviewRequest && deliverTo.length > 0) {
251
+ for (const p of deliverTo) {
252
+ const action = p.role === "reviewer"
253
+ ? "starting review"
254
+ : p.role === "ui-designer"
255
+ ? "starting UI audit"
256
+ : "picking up task";
257
+ await this.sendMessage("system", `${p.name} is ${action}`);
258
+ }
259
+ }
240
260
  const prompt = `Message from ${msg.from}:\n\n${msg.body}`;
241
261
  await Promise.all(deliverTo.map(async (p) => {
242
262
  try {
@@ -336,6 +356,14 @@ export class RoomRouter {
336
356
  }
337
357
  }
338
358
  lines.push("");
359
+ if (this._repoInfo) {
360
+ lines.push("Repository info:");
361
+ if (this._repoInfo.url) {
362
+ lines.push(`- URL: ${this._repoInfo.url}`);
363
+ }
364
+ lines.push(`- Branch: ${this._repoInfo.branch}`);
365
+ lines.push("");
366
+ }
339
367
  if (others.length > 0) {
340
368
  lines.push("Other participants:");
341
369
  for (const p of others) {
@@ -1 +1 @@
1
- {"version":3,"file":"room-router.js","sourceRoot":"","sources":["../src/room-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room-router.js","sourceRoot":"","sources":["../src/room-router.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -17,9 +17,8 @@ interface ServerConfig {
17
17
  /** Bridge mode — always "claude-code" */
18
18
  bridgeMode: BridgeMode;
19
19
  /**
20
- * Enable dev-only endpoints (e.g. macOS Keychain credential reading).
20
+ * Enable dev-only endpoints (e.g. resume from repo, manual credential input).
21
21
  * Set via `devMode: true` in startWebServer opts or `STUDIO_DEV_MODE=1` env var.
22
- * SECURITY: Never enable in production — the keychain endpoint exposes OAuth tokens.
23
22
  */
24
23
  devMode: boolean;
25
24
  }
@@ -32,9 +31,8 @@ export declare function startWebServer(opts: {
32
31
  streamConfig: StreamConfig;
33
32
  bridgeMode?: BridgeMode;
34
33
  /**
35
- * Enable dev-only endpoints (e.g. macOS Keychain credential reading).
34
+ * Enable dev-only endpoints (e.g. resume from repo, manual credential input).
36
35
  * Can also be enabled via the `STUDIO_DEV_MODE=1` environment variable.
37
- * SECURITY: Never enable in production — the keychain endpoint exposes OAuth tokens.
38
36
  */
39
37
  devMode?: boolean;
40
38
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAkCrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAatE,OAAO,EAGN,KAAK,YAAY,EAEjB,MAAM,cAAc,CAAA;AAGrB,KAAK,UAAU,GAAG,aAAa,CAAA;AAE/B,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,QAAQ,EAAE,cAAc,CAAA;IACxB,yDAAyD;IACzD,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,eAAe,CAAA;IACxB,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAA;IAC1B,yCAAyC;IACzC,UAAU,EAAE,UAAU,CAAA;IACtB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;CAChB;AAyWD,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,8EAg3G7C;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAkCrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAatE,OAAO,EAGN,KAAK,YAAY,EAEjB,MAAM,cAAc,CAAA;AAGrB,KAAK,UAAU,GAAG,aAAa,CAAA;AAE/B,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,QAAQ,EAAE,cAAc,CAAA;IACxB,yDAAyD;IACzD,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,eAAe,CAAA;IACxB,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAA;IAC1B,yCAAyC;IACzC,UAAU,EAAE,UAAU,CAAA;IACtB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;CAChB;AAyXD,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,8EAq1G7C;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
package/dist/server.js CHANGED
@@ -25,6 +25,19 @@ import { RoomRouter } from "./room-router.js";
25
25
  import { deriveGlobalHookSecret, deriveHookToken, deriveRoomToken, deriveSessionToken, validateGlobalHookSecret, validateHookToken, validateRoomToken, validateSessionToken, } from "./session-auth.js";
26
26
  import { getRoomStreamConnectionInfo, getStreamConnectionInfo, } from "./streams.js";
27
27
  import { isResponse, validateBody } from "./validate.js";
28
+ /** Read OAuth token from macOS Keychain (Claude Code credentials). */
29
+ function readKeychainOAuthToken() {
30
+ if (process.platform !== "darwin")
31
+ return null;
32
+ try {
33
+ const raw = execFileSync("security", ["find-generic-password", "-s", "Claude Code-credentials", "-w"], { encoding: "utf-8", timeout: 3000, stdio: ["ignore", "pipe", "ignore"] }).trim();
34
+ const parsed = JSON.parse(raw);
35
+ return parsed.claudeAiOauth?.accessToken ?? null;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
28
41
  /** Active session bridges — one per running session */
29
42
  const bridges = new Map();
30
43
  /** Active room routers — one per room with agent-to-agent messaging */
@@ -811,14 +824,16 @@ echo "Start claude in this project — the session will appear in the studio UI.
811
824
  const body = await validateBody(c, createSessionSchema);
812
825
  if (isResponse(body))
813
826
  return body;
814
- // In prod mode, use server-side API key; ignore user-provided credentials
827
+ // Resolve Claude credentials try OAuth from keychain first, then API key
815
828
  const apiKey = config.devMode
816
829
  ? body.apiKey || process.env.ANTHROPIC_API_KEY
817
830
  : process.env.ANTHROPIC_API_KEY;
818
831
  const oauthToken = config.devMode
819
832
  ? body.oauthToken || process.env.CLAUDE_OAUTH_TOKEN
820
- : undefined;
833
+ : (readKeychainOAuthToken() ?? undefined);
821
834
  const ghToken = config.devMode ? body.ghToken : undefined;
835
+ const authType = oauthToken ? "oauth-keychain" : apiKey ? "api-key" : "none";
836
+ console.log(`[auth] Using ${authType} for Claude credentials`);
822
837
  // Block freeform sessions in production mode
823
838
  if (body.freeform && !config.devMode) {
824
839
  return c.json({ error: "Freeform sessions are not available" }, 403);
@@ -1706,14 +1721,16 @@ echo "Start claude in this project — the session will appear in the studio UI.
1706
1721
  const body = await validateBody(c, createAppRoomSchema);
1707
1722
  if (isResponse(body))
1708
1723
  return body;
1709
- // In prod mode, use server-side API key; ignore user-provided credentials
1724
+ // Resolve Claude credentials try OAuth from keychain first, then API key
1710
1725
  const apiKey = config.devMode
1711
1726
  ? body.apiKey || process.env.ANTHROPIC_API_KEY
1712
1727
  : process.env.ANTHROPIC_API_KEY;
1713
1728
  const oauthToken = config.devMode
1714
1729
  ? body.oauthToken || process.env.CLAUDE_OAUTH_TOKEN
1715
- : undefined;
1730
+ : (readKeychainOAuthToken() ?? undefined);
1716
1731
  const ghToken = config.devMode ? body.ghToken : undefined;
1732
+ const authType = oauthToken ? "oauth-keychain" : apiKey ? "api-key" : "none";
1733
+ console.log(`[auth] Using ${authType} for Claude credentials`);
1717
1734
  // Rate-limit session creation in production mode
1718
1735
  if (!config.devMode) {
1719
1736
  const ip = extractClientIp(c);
@@ -1783,7 +1800,6 @@ echo "Start claude in this project — the session will appear in the studio UI.
1783
1800
  const agentDefs = [
1784
1801
  { name: `coder-${uniquePick()}`, role: "coder" },
1785
1802
  { name: `reviewer-${uniquePick()}`, role: "reviewer" },
1786
- { name: `designer-${uniquePick()}`, role: "ui-designer" },
1787
1803
  ];
1788
1804
  // Create session IDs and streams upfront for all 3 agents
1789
1805
  const sessions = [];
@@ -1808,10 +1824,9 @@ echo "Start claude in this project — the session will appear in the studio UI.
1808
1824
  console.log(`[room:create-app] Created room ${roomId} with agents: ${sessions.map((s) => s.name).join(", ")}`);
1809
1825
  // Return immediately so the client can show the room + sessions
1810
1826
  // The async flow handles sandbox creation, skill injection, and agent startup
1811
- // Sessions are created in agentDefs order: [coder, reviewer, ui-designer]
1827
+ // Sessions are created in agentDefs order: [coder, reviewer]
1812
1828
  const coderSession = sessions[0];
1813
1829
  const reviewerSession = sessions[1];
1814
- const uiDesignerSession = sessions[2];
1815
1830
  const coderBridge = getOrCreateBridge(config, coderSession.sessionId);
1816
1831
  // Record all sessions
1817
1832
  for (const s of sessions) {
@@ -1929,10 +1944,7 @@ echo "Start claude in this project — the session will appear in the studio UI.
1929
1944
  const reviewerInfo = config.sessions.get(reviewerSession.sessionId);
1930
1945
  if (!reviewerInfo)
1931
1946
  throw new Error("Reviewer session not found in registry");
1932
- const uiDesignerInfo = config.sessions.get(uiDesignerSession.sessionId);
1933
- if (!uiDesignerInfo)
1934
- throw new Error("UI designer session not found in registry");
1935
- const [coderHandle, reviewerHandle, uiDesignerHandle] = await Promise.all([
1947
+ const [coderHandle, reviewerHandle] = await Promise.all([
1936
1948
  config.sandbox.create(coderSession.sessionId, {
1937
1949
  projectName: coderInfo.projectName,
1938
1950
  infra,
@@ -1949,19 +1961,10 @@ echo "Start claude in this project — the session will appear in the studio UI.
1949
1961
  ghToken,
1950
1962
  ...sandboxOpts(reviewerSession.sessionId),
1951
1963
  }),
1952
- config.sandbox.create(uiDesignerSession.sessionId, {
1953
- projectName: uiDesignerInfo.projectName,
1954
- infra: { mode: "none" },
1955
- apiKey,
1956
- oauthToken,
1957
- ghToken,
1958
- ...sandboxOpts(uiDesignerSession.sessionId),
1959
- }),
1960
1964
  ]);
1961
1965
  const handles = [
1962
1966
  { session: coderSession, handle: coderHandle },
1963
1967
  { session: reviewerSession, handle: reviewerHandle },
1964
- { session: uiDesignerSession, handle: uiDesignerHandle },
1965
1968
  ];
1966
1969
  // Update session info with sandbox details
1967
1970
  for (const { session: s, handle } of handles) {
@@ -2141,9 +2144,8 @@ echo "Start claude in this project — the session will appear in the studio UI.
2141
2144
  }
2142
2145
  // Route assistant_message output to the room router
2143
2146
  if (event.type === "assistant_message" && "text" in event) {
2144
- router
2145
- .handleAgentOutput(coderSession.sessionId, event.text)
2146
- .catch((err) => {
2147
+ const text = event.text;
2148
+ router.handleAgentOutput(coderSession.sessionId, text).catch((err) => {
2147
2149
  console.error(`[room:create-app:${roomId}] handleAgentOutput error (coder):`, err);
2148
2150
  });
2149
2151
  }
@@ -2168,7 +2170,6 @@ echo "Start claude in this project — the session will appear in the studio UI.
2168
2170
  const updates = {
2169
2171
  status: success ? "complete" : "error",
2170
2172
  };
2171
- let repoInfo = "";
2172
2173
  try {
2173
2174
  const gs = await config.sandbox.gitStatus(handle, handle.projectDir);
2174
2175
  if (gs.initialized) {
@@ -2182,21 +2183,14 @@ echo "Start claude in this project — the session will appear in the studio UI.
2182
2183
  lastCommitMessage: gs.lastCommitMessage ?? null,
2183
2184
  lastCheckpointAt: existing?.git?.lastCheckpointAt ?? null,
2184
2185
  };
2185
- if (existing?.git?.repoName) {
2186
- repoInfo = ` Repo: https://github.com/${existing.git.repoName}`;
2187
- }
2188
2186
  }
2189
2187
  }
2190
2188
  catch {
2191
2189
  // Sandbox may be stopped
2192
2190
  }
2193
2191
  config.sessions.update(coderSession.sessionId, updates);
2194
- const msg = success
2195
- ? `@room DONE: App is ready.${repoInfo}`
2196
- : "@room Coder session ended unexpectedly.";
2197
- router.handleAgentOutput(coderSession.sessionId, msg).catch((err) => {
2198
- console.error(`[room:create-app:${roomId}] Failed to send coder completion message:`, err);
2199
- });
2192
+ const status = success ? "completed" : "ended with errors";
2193
+ console.log(`[room:create-app:${roomId}] Coder session ${status}`);
2200
2194
  });
2201
2195
  await coderBridge.emit({
2202
2196
  type: "log",
@@ -2223,11 +2217,13 @@ echo "Start claude in this project — the session will appear in the studio UI.
2223
2217
  // Store the repoUrl for reviewer/ui-designer prompts
2224
2218
  // (we continue setting up those agents now)
2225
2219
  const finalRepoUrl = repoUrl;
2220
+ // Share repo info with all agents via the room router's discovery prompt
2221
+ router.setRepoInfo({
2222
+ url: finalRepoUrl,
2223
+ branch: "main",
2224
+ });
2226
2225
  // 5. Set up reviewer and ui-designer sandboxes
2227
- const supportAgents = [
2228
- { session: reviewerSession, handle: reviewerHandle },
2229
- { session: uiDesignerSession, handle: uiDesignerHandle },
2230
- ];
2226
+ const supportAgents = [{ session: reviewerSession, handle: reviewerHandle }];
2231
2227
  for (const { session: agentSession, handle: agentHandle } of supportAgents) {
2232
2228
  const agentBridge = getOrCreateBridge(config, agentSession.sessionId);
2233
2229
  // Write a minimal CLAUDE.md
@@ -2261,11 +2257,10 @@ echo "Start claude in this project — the session will appear in the studio UI.
2261
2257
  console.error(`[room:create-app:${roomId}] Failed to write role skill for ${agentSession.name}:`, err);
2262
2258
  }
2263
2259
  }
2264
- // Build prompt
2265
- const repoRef = finalRepoUrl ? ` The GitHub repo is: ${finalRepoUrl}.` : "";
2260
+ // Build prompt (repo info is now passed via the room router's discovery prompt)
2266
2261
  const agentPrompt = agentSession.role === "reviewer"
2267
- ? `You are "reviewer", a code review agent in a multi-agent room. Read .claude/skills/role/SKILL.md for your role guidelines.${repoRef} Wait for the coder to send a @room DONE: message before starting any work.`
2268
- : `You are "ui-designer", a UI design agent in a multi-agent room. Read .claude/skills/role/SKILL.md for your role guidelines.${repoRef} Wait for the coder to send a @room DONE: message before starting any work.`;
2262
+ ? `You are "reviewer", a read-only code review agent in a multi-agent room. Read .claude/skills/role/SKILL.md for your role guidelines. CRITICAL: You must NEVER modify code — only read and review. Wait for the coder to send a @room REVIEW_REQUEST: message before starting any work.`
2263
+ : `You are "${agentSession.role}", an agent in a multi-agent room. Read .claude/skills/role/SKILL.md for your role guidelines.`;
2269
2264
  // Create Claude Code bridge
2270
2265
  const agentHookToken = deriveHookToken(config.streamConfig.secret, agentSession.sessionId);
2271
2266
  const agentClaudeConfig = config.sandbox.runtime === "sprites"
@@ -2347,8 +2342,8 @@ echo "Start claude in this project — the session will appear in the studio UI.
2347
2342
  };
2348
2343
  await router.addParticipant(participant, false);
2349
2344
  }
2350
- console.log(`[room:create-app:${roomId}] All 3 agents started and added to room`);
2351
- await router.sendMessage("system", `All agents ready — ${coderSession.name} is building, ${reviewerSession.name} and ${uiDesignerSession.name} waiting.`);
2345
+ console.log(`[room:create-app:${roomId}] All agents started and added to room`);
2346
+ await router.sendMessage("system", `All agents ready — ${coderSession.name} is building, ${reviewerSession.name} waiting for review request. UI designer can be added later via "Add Agent".`);
2352
2347
  }
2353
2348
  };
2354
2349
  asyncFlow().catch(async (err) => {
@@ -2436,10 +2431,23 @@ echo "Start claude in this project — the session will appear in the studio UI.
2436
2431
  const roomId = c.req.param("id");
2437
2432
  const router = roomRouters.get(roomId);
2438
2433
  if (router) {
2434
+ // Find preview URL / port from any participant's session (prefer coder role)
2435
+ const coderParticipant = router.participants.find((p) => p.role === "coder");
2436
+ const previewParticipant = coderParticipant ?? router.participants[0];
2437
+ let previewUrl;
2438
+ let appPort;
2439
+ if (previewParticipant) {
2440
+ const handle = config.sandbox.get(previewParticipant.sessionId);
2441
+ const session = config.sessions.get(previewParticipant.sessionId);
2442
+ previewUrl = handle?.previewUrl ?? session?.previewUrl;
2443
+ appPort = handle?.port ?? session?.appPort;
2444
+ }
2439
2445
  return c.json({
2440
2446
  roomId,
2441
2447
  state: router.state,
2442
2448
  roundCount: router.roundCount,
2449
+ previewUrl,
2450
+ appPort,
2443
2451
  participants: router.participants.map((p) => ({
2444
2452
  sessionId: p.sessionId,
2445
2453
  name: p.name,
@@ -3041,30 +3049,14 @@ echo "Start claude in this project — the session will appear in the studio UI.
3041
3049
  return c.json({ error: e instanceof Error ? e.message : "Failed to list branches" }, 500);
3042
3050
  }
3043
3051
  });
3044
- // Read Claude credentials from macOS Keychain (dev convenience).
3045
- // Disabled by default — enable via devMode: true or STUDIO_DEV_MODE=1.
3046
- if (config.devMode) {
3047
- app.get("/api/credentials/keychain", (c) => {
3048
- if (process.platform !== "darwin") {
3049
- return c.json({ apiKey: null });
3050
- }
3051
- try {
3052
- const raw = execFileSync("security", ["find-generic-password", "-s", "Claude Code-credentials", "-w"], { encoding: "utf-8", timeout: 3000, stdio: ["ignore", "pipe", "ignore"] }).trim();
3053
- const parsed = JSON.parse(raw);
3054
- const token = parsed.claudeAiOauth?.accessToken ?? null;
3055
- if (token) {
3056
- console.log(`[dev] Loaded OAuth token from keychain (length: ${token.length})`);
3057
- }
3058
- else {
3059
- console.log("[dev] No OAuth token found in keychain");
3060
- }
3061
- return c.json({ oauthToken: token });
3062
- }
3063
- catch {
3064
- return c.json({ oauthToken: null });
3065
- }
3066
- });
3067
- }
3052
+ // Read Claude credentials from macOS Keychain.
3053
+ app.get("/api/credentials/keychain", (c) => {
3054
+ const token = readKeychainOAuthToken();
3055
+ if (token) {
3056
+ console.log(`[keychain] Loaded OAuth token (length: ${token.length})`);
3057
+ }
3058
+ return c.json({ oauthToken: token });
3059
+ });
3068
3060
  // Resume a project from a GitHub repo (dev mode only)
3069
3061
  app.post("/api/sessions/resume", async (c) => {
3070
3062
  if (!config.devMode) {
@@ -3319,7 +3311,7 @@ echo "Start claude in this project — the session will appear in the studio UI.
3319
3311
  export async function startWebServer(opts) {
3320
3312
  const devMode = opts.devMode ?? process.env.STUDIO_DEV_MODE === "1";
3321
3313
  if (devMode) {
3322
- console.log("[studio] Dev mode enabled — keychain endpoint active");
3314
+ console.log("[studio] Dev mode enabled");
3323
3315
  }
3324
3316
  // Hydrate session registry from durable stream (survives restarts)
3325
3317
  const registry = await Registry.create(opts.streamConfig);