@molecule/app-ide-react 1.7.0 → 1.8.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,OAAO,CAAA;AAY3C,OAAO,KAAK,EAAa,WAAW,EAAmB,MAAM,uBAAuB,CAAA;AAuCpF,OAAO,KAAK,EAAE,cAAc,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAevD,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,oBAAoB,CAAA;AAW3B,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,gCAAgC,CAAA;AA6LnF,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AA+ND,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAm+BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACzD,GAAG,GAAG,CAAC,OAAO,CAoPd;AAMD,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAA;IAChB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClF,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAA;IACxE;;;;OAIG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,mGAAmG;IACnG,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACnD,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2IAA2I;IAC3I,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAwkBD,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8FAA8F;IAC9F,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACnD,0GAA0G;IAC1G,uBAAuB,CAAC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAA;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iHAAiH;IACjH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC9C,gDAAgD;IAChD,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAA;IAC/C,6GAA6G;IAC7G,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IACjD,qHAAqH;IACrH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,8IAA8I;IAC9I,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD,kHAAkH;IAClH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,iGAAiG;IACjG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,iHAAiH;IACjH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,mHAAmH;IACnH,qBAAqB,CAAC,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IAC/D,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qHAAqH;IACrH,oBAAoB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gGAAgG;IAChG,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,yLAAyL;IACzL,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,uMAAuM;IACvM,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,4HAA4H;IAC5H,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yIAAyI;IACzI,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,8GAA8G;IAC9G,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oGAAoG;IACpG,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IACrC,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1301,16 +1301,11 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1301
1301
|
clearInterval(autoFixIntervalRef.current);
|
|
1302
1302
|
}, []);
|
|
1303
1303
|
// Ref so the stream-event callback can push activity cards without depending
|
|
1304
|
-
// on the state setter
|
|
1304
|
+
// on the state setter.
|
|
1305
1305
|
const addActivityCardRef = useRef(() => { });
|
|
1306
|
-
//
|
|
1307
|
-
//
|
|
1308
|
-
//
|
|
1309
|
-
const appendCardMessageRef = useRef(() => { });
|
|
1310
|
-
// Ref to useChat's appendCompleteMessage — same contract as appendCardMessageRef, for a
|
|
1311
|
-
// teammate's broadcast `message` event (a complete non-streaming message, e.g. a
|
|
1312
|
-
// human-only team note). This client's OWN `message` events append internally in useChat.
|
|
1313
|
-
const appendCompleteMessageRef = useRef(() => { });
|
|
1306
|
+
// (A teammate's broadcast `card` / `message` events are ingested by
|
|
1307
|
+
// useChat.applyRemoteEvent — applyPushedStreamEvent routes every pushed frame
|
|
1308
|
+
// through it before this panel's handler runs, so no append refs live here.)
|
|
1314
1309
|
// Kept current each render so handleStreamEvent (memoized) always calls the latest.
|
|
1315
1310
|
const onReadyToBuildRef = useRef(onReadyToBuild);
|
|
1316
1311
|
onReadyToBuildRef.current = onReadyToBuild;
|
|
@@ -1328,9 +1323,15 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1328
1323
|
contextWindow: event.usage.contextWindow,
|
|
1329
1324
|
});
|
|
1330
1325
|
}
|
|
1331
|
-
// Capture verification errors to trigger countdown after stream ends
|
|
1326
|
+
// Capture verification errors to trigger countdown after stream ends —
|
|
1327
|
+
// SENDER-ONLY: a pushed frame from a teammate's turn must not arm this
|
|
1328
|
+
// client's auto-fix (the sender's client owns the follow-up; two clients
|
|
1329
|
+
// arming it would double-send the fix).
|
|
1332
1330
|
// Also drop any deferred preview error — verification's countdown handles it.
|
|
1333
|
-
if (
|
|
1331
|
+
if (!applyingPushedRef.current &&
|
|
1332
|
+
event.type === 'verification_result' &&
|
|
1333
|
+
event.status === 'error' &&
|
|
1334
|
+
event.output) {
|
|
1334
1335
|
pendingVerificationRef.current = {
|
|
1335
1336
|
output: event.output,
|
|
1336
1337
|
categories: event.categories ?? [],
|
|
@@ -1348,22 +1349,9 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1348
1349
|
if (event.type === 'verification_result' && event.status === 'ok') {
|
|
1349
1350
|
pendingVerificationRef.current = null;
|
|
1350
1351
|
}
|
|
1351
|
-
//
|
|
1352
|
-
//
|
|
1353
|
-
// the
|
|
1354
|
-
// (applied through applyPushedStreamEvent → handleStreamEvent): append it to the local
|
|
1355
|
-
// store so it shows live for the collaborator too (de-duped by id; never re-persisted —
|
|
1356
|
-
// the originating server already persisted it, and on reload it loads with the messages).
|
|
1357
|
-
if (event.type === 'card' && applyingPushedRef.current) {
|
|
1358
|
-
appendCardMessageRef.current(event.id, event.timestamp, event.card);
|
|
1359
|
-
}
|
|
1360
|
-
// A teammate's broadcast complete message (e.g. a human-only team note) — append it
|
|
1361
|
-
// to the local store so it shows live for the collaborator too (de-duped by id;
|
|
1362
|
-
// never re-persisted — the originating server already persisted it). This client's
|
|
1363
|
-
// OWN `message` stream events are appended internally by useChat.
|
|
1364
|
-
if (event.type === 'message' && applyingPushedRef.current && event.message) {
|
|
1365
|
-
appendCompleteMessageRef.current(event.message);
|
|
1366
|
-
}
|
|
1352
|
+
// NOTE: pushed `card` / `message` events are ingested into the message store by
|
|
1353
|
+
// useChat.applyRemoteEvent (applyPushedStreamEvent calls it before this handler),
|
|
1354
|
+
// through the same append helpers as an own stream — no panel-side append here.
|
|
1367
1355
|
// Captured outbound side effect (email/sms/push/webhook/channel) — push an
|
|
1368
1356
|
// inline activity card into the timeline. Non-text card, mirroring how
|
|
1369
1357
|
// system cards are appended.
|
|
@@ -1371,9 +1359,11 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1371
1359
|
addActivityCardRef.current(activityFromEvent(event.activity));
|
|
1372
1360
|
}
|
|
1373
1361
|
// Discovery finished and the server selected a starting point — boot the
|
|
1374
|
-
// sandbox.
|
|
1375
|
-
//
|
|
1376
|
-
|
|
1362
|
+
// sandbox. SENDER-ONLY: the sender's client drives the boot; a watching
|
|
1363
|
+
// client's host follows the project's sandbox status instead of racing a
|
|
1364
|
+
// second boot request. The template choice is internal; this event carries
|
|
1365
|
+
// no user-facing payload and is never rendered in the transcript.
|
|
1366
|
+
if (event.type === 'ready_to_build' && !applyingPushedRef.current) {
|
|
1377
1367
|
onReadyToBuildRef.current?.();
|
|
1378
1368
|
}
|
|
1379
1369
|
// The agent asked the IDE to reload/navigate the preview, open a file, or drive the
|
|
@@ -1501,10 +1491,13 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1501
1491
|
}
|
|
1502
1492
|
onFileChange?.(path, content);
|
|
1503
1493
|
}, [onFileChange, onFileOpen, autoFixCountdown]);
|
|
1504
|
-
const { messages, isLoading, isRemoteStreaming, noteRemoteStreamEvent, error, errorMeta, mode, fastMode, streamingStatus, setMode, setFastMode, sendMessage, abort, clearHistory, editQueuedMessage, deleteQueuedMessage, clearQueuedForFile,
|
|
1494
|
+
const { messages, isLoading, isRemoteStreaming, noteRemoteStreamEvent, error, errorMeta, mode, fastMode, streamingStatus, setMode, setFastMode, sendMessage, abort, clearHistory, editQueuedMessage, deleteQueuedMessage, clearQueuedForFile, applyRemoteEvent, retryCountdown, cancelRetry, } = useChat({
|
|
1505
1495
|
endpoint,
|
|
1506
1496
|
projectId,
|
|
1507
1497
|
agentName,
|
|
1498
|
+
// A read-only viewer never issues chat POSTs (no resume/retry) — a live turn
|
|
1499
|
+
// is watched via pushed frames + the reconcile poll instead.
|
|
1500
|
+
readOnly: canEdit === false,
|
|
1508
1501
|
// ALWAYS load history on mount. A persisted conversation MUST restore on refresh,
|
|
1509
1502
|
// even when an initialMessage / initialInputValue is also present. The old condition
|
|
1510
1503
|
// suppressed the load whenever a fresh message was about to be auto-sent — but on a
|
|
@@ -1530,13 +1523,15 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
1530
1523
|
// model. This replaces the old default of writing the legacy `chatModel`
|
|
1531
1524
|
// (which silently moved BOTH modes).
|
|
1532
1525
|
const liveModelMode = mode === 'plan' ? 'plan' : 'execute';
|
|
1526
|
+
// Target for a settings PATCH that changes agent behavior (model / effort /
|
|
1527
|
+
// max loops / region / auto-fix / auto-approve): name the OPEN conversation so
|
|
1528
|
+
// the server's shared setting card lands in the transcript members are
|
|
1529
|
+
// actually watching (a project can hold several conversations).
|
|
1530
|
+
const settingsPatchUrl = useCallback(() => `/projects/${projectId}${conversationIdRef.current
|
|
1531
|
+
? `?conversationId=${encodeURIComponent(conversationIdRef.current)}`
|
|
1532
|
+
: ''}`, [projectId]);
|
|
1533
1533
|
// Keep sendMessageRef in sync so the countdown effect can call the latest sendMessage
|
|
1534
1534
|
sendMessageRef.current = sendMessage;
|
|
1535
|
-
// Keep the card-append ref current so handleStreamEvent (memoized) can append a teammate's
|
|
1536
|
-
// broadcast `card` event to the message store.
|
|
1537
|
-
appendCardMessageRef.current = appendCardMessage;
|
|
1538
|
-
// Same for a teammate's broadcast complete `message` event (e.g. a team note).
|
|
1539
|
-
appendCompleteMessageRef.current = appendCompleteMessage;
|
|
1540
1535
|
// User Stop. A stop is a user decision the platform must not overrule — so
|
|
1541
1536
|
// beyond killing the stream (useChat.abort also records the stop client-side
|
|
1542
1537
|
// and, via chat-abort's userInitiated flag, server-side), drop every pending
|
|
@@ -2226,17 +2221,24 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2226
2221
|
}
|
|
2227
2222
|
}, []);
|
|
2228
2223
|
// Apply a chat event broadcast by another project member (the chat push channel). The
|
|
2229
|
-
// originating member's SERVER already persisted everything
|
|
2230
|
-
//
|
|
2231
|
-
//
|
|
2232
|
-
//
|
|
2224
|
+
// originating member's SERVER already persisted everything; this client renders the
|
|
2225
|
+
// broadcast live and gets the durable copy on reload. EVERY frame of a remote turn
|
|
2226
|
+
// arrives here — text/thinking deltas, tool events, verification, cards, the user
|
|
2227
|
+
// message, done — and is ingested into the message store through useChat's
|
|
2228
|
+
// applyRemoteEvent (the same content applier as an own SSE stream), so watching a
|
|
2229
|
+
// teammate's turn looks exactly like running one. handleStreamEvent then handles the
|
|
2230
|
+
// panel-level concerns (context usage, sounds, activity cards) with the
|
|
2231
|
+
// applyingPushed flag gating the sender-only side effects (auto-fix, ready_to_build).
|
|
2233
2232
|
const applyPushedStreamEvent = useCallback((frameConversationId, event) => {
|
|
2234
2233
|
// Only apply broadcasts for the conversation this panel has open.
|
|
2235
2234
|
if (frameConversationId !== conversationIdRef.current)
|
|
2236
2235
|
return;
|
|
2237
|
-
//
|
|
2238
|
-
//
|
|
2239
|
-
|
|
2236
|
+
// Store ingestion first, so the transcript is current before any panel
|
|
2237
|
+
// side effect reads it.
|
|
2238
|
+
applyRemoteEvent(event);
|
|
2239
|
+
// Flag the window so a pushed activity card is marked `received` (rendered, not
|
|
2240
|
+
// re-PUT) and sender-only side effects are skipped. handleStreamEvent is
|
|
2241
|
+
// synchronous, so the flag is set for exactly this event's handling.
|
|
2240
2242
|
applyingPushedRef.current = true;
|
|
2241
2243
|
try {
|
|
2242
2244
|
handleStreamEvent(event);
|
|
@@ -2249,7 +2251,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2249
2251
|
// continuation), tell useChat so it confirms against the server's streaming
|
|
2250
2252
|
// flag and keeps the Stop button visible + functional for the remote turn.
|
|
2251
2253
|
noteRemoteStreamEvent();
|
|
2252
|
-
}, [handleStreamEvent, noteRemoteStreamEvent]);
|
|
2254
|
+
}, [applyRemoteEvent, handleStreamEvent, noteRemoteStreamEvent]);
|
|
2253
2255
|
// Register the pushed-event handler with the parent (Workspace) so it can deliver
|
|
2254
2256
|
// broadcast chat events from other project members; deregister on unmount.
|
|
2255
2257
|
useEffect(() => {
|
|
@@ -2318,11 +2320,6 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2318
2320
|
activityCardsLoadedConvRef.current = null;
|
|
2319
2321
|
if (!conversationId)
|
|
2320
2322
|
return;
|
|
2321
|
-
// Activity cards carry recipients/summaries and their routes are editor+ by
|
|
2322
|
-
// design — a viewer's fetch/persist would just 403 on every panel open
|
|
2323
|
-
// (observed live in prod logs). Skip both for read-only viewers.
|
|
2324
|
-
if (canEdit === false)
|
|
2325
|
-
return;
|
|
2326
2323
|
if (prevConv && prevConv !== conversationId)
|
|
2327
2324
|
setActivityCards([]);
|
|
2328
2325
|
let cancelled = false;
|
|
@@ -2781,7 +2778,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2781
2778
|
// viewer's tab keeps the in-memory switch (all this session needs) and
|
|
2782
2779
|
// skips a PATCH that could only 403.
|
|
2783
2780
|
if (canEdit !== false) {
|
|
2784
|
-
http.patch(
|
|
2781
|
+
http.patch(settingsPatchUrl(), { settings: { chatModel: fallback } }).catch(() => {
|
|
2785
2782
|
/* persistence is best-effort; the in-memory switch is what matters */
|
|
2786
2783
|
});
|
|
2787
2784
|
}
|
|
@@ -3591,7 +3588,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3591
3588
|
const name = displayName ?? modelId;
|
|
3592
3589
|
try {
|
|
3593
3590
|
if (mode) {
|
|
3594
|
-
await http.patch(
|
|
3591
|
+
await http.patch(settingsPatchUrl(), {
|
|
3595
3592
|
settings: { [modeSettingKey(mode)]: modelId },
|
|
3596
3593
|
});
|
|
3597
3594
|
if (mode === 'plan')
|
|
@@ -3611,7 +3608,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3611
3608
|
: t('ide.chat.compactModelSet', { name }, { defaultValue: 'Compaction model set to {{name}}' }));
|
|
3612
3609
|
}
|
|
3613
3610
|
else {
|
|
3614
|
-
await http.patch(
|
|
3611
|
+
await http.patch(settingsPatchUrl(), { settings: { chatModel: modelId } });
|
|
3615
3612
|
setCurrentModel(modelId);
|
|
3616
3613
|
setSavedChatModel(modelId);
|
|
3617
3614
|
addSystemCard(t('ide.chat.modelSet', { name }, {
|
|
@@ -3635,7 +3632,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3635
3632
|
const nextRegions = { ...modelRegions, [modelId]: region };
|
|
3636
3633
|
setModelRegions(nextRegions);
|
|
3637
3634
|
try {
|
|
3638
|
-
await http.patch(
|
|
3635
|
+
await http.patch(settingsPatchUrl(), {
|
|
3639
3636
|
settings: { modelRegions: nextRegions },
|
|
3640
3637
|
});
|
|
3641
3638
|
}
|
|
@@ -3927,7 +3924,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3927
3924
|
setInputValue('');
|
|
3928
3925
|
const newValue = !autoFixEnabled;
|
|
3929
3926
|
try {
|
|
3930
|
-
await http.patch(
|
|
3927
|
+
await http.patch(settingsPatchUrl(), { settings: { autoFix: newValue } });
|
|
3931
3928
|
setAutoFixEnabled(newValue);
|
|
3932
3929
|
addSystemCard(newValue
|
|
3933
3930
|
? t('ide.chat.autoFixEnabled', undefined, {
|
|
@@ -3948,7 +3945,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3948
3945
|
setInputValue('');
|
|
3949
3946
|
const newValue = !autoApproveCommandsEnabled;
|
|
3950
3947
|
try {
|
|
3951
|
-
await http.patch(
|
|
3948
|
+
await http.patch(settingsPatchUrl(), {
|
|
3952
3949
|
settings: { autoApproveCommands: newValue },
|
|
3953
3950
|
});
|
|
3954
3951
|
setAutoApproveCommandsEnabled(newValue);
|
|
@@ -4320,7 +4317,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4320
4317
|
}
|
|
4321
4318
|
try {
|
|
4322
4319
|
const nextByMode = { ...effortByMode, [targetMode]: level };
|
|
4323
|
-
await http.patch(
|
|
4320
|
+
await http.patch(settingsPatchUrl(), { settings: { effortByMode: nextByMode } });
|
|
4324
4321
|
setEffortByMode(nextByMode);
|
|
4325
4322
|
addSystemCard(t('ide.chat.effort.setMode', {
|
|
4326
4323
|
mode: targetMode,
|
|
@@ -4342,7 +4339,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4342
4339
|
if (maxLoopsMatch) {
|
|
4343
4340
|
const n = Math.max(1, Number(maxLoopsMatch[1]));
|
|
4344
4341
|
try {
|
|
4345
|
-
await http.patch(
|
|
4342
|
+
await http.patch(settingsPatchUrl(), { settings: { maxToolLoops: n } });
|
|
4346
4343
|
setCurrentMaxLoops(n);
|
|
4347
4344
|
addSystemCard(t('ide.chat.maxLoopsSet', { n }, {
|
|
4348
4345
|
defaultValue: `Max tool iterations set to ${n}`,
|
|
@@ -4915,6 +4912,15 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4915
4912
|
// unrenderable card (a custom event with no registered factory, or a non-execute mode) so
|
|
4916
4913
|
// the timeline simply omits it.
|
|
4917
4914
|
const cardEventToSystemCard = useCallback((cardEvent, id, timestamp) => {
|
|
4915
|
+
// Suffix a card's copy with the member who made the change, when the
|
|
4916
|
+
// server attributed one — so a teammate watching knows WHO flipped the
|
|
4917
|
+
// model/effort/mode, live and on reload.
|
|
4918
|
+
const withBy = (text) => {
|
|
4919
|
+
const by = cardEvent.by;
|
|
4920
|
+
return by
|
|
4921
|
+
? t('ide.chat.cardBy', { text, name: by }, { defaultValue: '{{text}} — {{name}}' })
|
|
4922
|
+
: text;
|
|
4923
|
+
};
|
|
4918
4924
|
switch (cardEvent.kind) {
|
|
4919
4925
|
case 'model': {
|
|
4920
4926
|
const label = cardEvent.label || cardEvent.model;
|
|
@@ -4926,9 +4932,9 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4926
4932
|
const regionCode = def && def.provider !== 'custom' ? effectiveModelRegion(def).toUpperCase() : null;
|
|
4927
4933
|
return {
|
|
4928
4934
|
id,
|
|
4929
|
-
text: regionCode
|
|
4935
|
+
text: withBy(regionCode
|
|
4930
4936
|
? t('ide.chat.modelInUseRegion', { model: label, region: regionCode }, { defaultValue: 'Now using {{model}} ({{region}})' })
|
|
4931
|
-
: t('ide.chat.modelInUse', { model: label }, { defaultValue: 'Now using {{model}}' }),
|
|
4937
|
+
: t('ide.chat.modelInUse', { model: label }, { defaultValue: 'Now using {{model}}' })),
|
|
4932
4938
|
timestamp,
|
|
4933
4939
|
};
|
|
4934
4940
|
}
|
|
@@ -4939,7 +4945,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4939
4945
|
if (cardEvent.mode === 'plan') {
|
|
4940
4946
|
return {
|
|
4941
4947
|
id,
|
|
4942
|
-
text: t('ide.chat.phasePlanning', undefined, { defaultValue: '📝 Plan mode' }),
|
|
4948
|
+
text: withBy(t('ide.chat.phasePlanning', undefined, { defaultValue: '📝 Plan mode' })),
|
|
4943
4949
|
timestamp,
|
|
4944
4950
|
};
|
|
4945
4951
|
}
|
|
@@ -4947,9 +4953,56 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4947
4953
|
return null;
|
|
4948
4954
|
return {
|
|
4949
4955
|
id,
|
|
4950
|
-
text: t('ide.chat.phaseBuilding', undefined, { defaultValue: '🔨 Building your app' }),
|
|
4956
|
+
text: withBy(t('ide.chat.phaseBuilding', undefined, { defaultValue: '🔨 Building your app' })),
|
|
4951
4957
|
timestamp,
|
|
4952
4958
|
};
|
|
4959
|
+
case 'setting': {
|
|
4960
|
+
// A Synthase-altering setting changed (effort / fast mode / max loops /
|
|
4961
|
+
// region / auto-fix / auto-approve) — announced to every member, live
|
|
4962
|
+
// and on reload. Copy reuses the same localized strings as the local
|
|
4963
|
+
// confirmation cards, so the shared card reads identically.
|
|
4964
|
+
let text = null;
|
|
4965
|
+
if (cardEvent.setting === 'effort') {
|
|
4966
|
+
const level = String(cardEvent.value ?? 'default');
|
|
4967
|
+
const cardMode = cardEvent.mode ?? '';
|
|
4968
|
+
text = cardEvent.label
|
|
4969
|
+
? t('ide.chat.effort.setMode', { mode: cardMode, level, model: cardEvent.label }, { defaultValue: 'Reasoning effort for {{mode}} set to {{level}} ({{model}}).' })
|
|
4970
|
+
: t('ide.chat.setting.effort', { mode: cardMode, level }, { defaultValue: 'Reasoning effort for {{mode}} set to {{level}}.' });
|
|
4971
|
+
}
|
|
4972
|
+
else if (cardEvent.setting === 'fastMode') {
|
|
4973
|
+
text = cardEvent.value
|
|
4974
|
+
? t('ide.chat.fastModeOn', undefined, {
|
|
4975
|
+
defaultValue: 'Fast mode on — faster responses at a higher rate',
|
|
4976
|
+
})
|
|
4977
|
+
: t('ide.chat.fastModeOff', undefined, { defaultValue: 'Fast mode off' });
|
|
4978
|
+
}
|
|
4979
|
+
else if (cardEvent.setting === 'maxToolLoops') {
|
|
4980
|
+
text = t('ide.chat.maxLoopsSet', { n: Number(cardEvent.value ?? 0) }, { defaultValue: 'Max tool iterations set to {{n}}' });
|
|
4981
|
+
}
|
|
4982
|
+
else if (cardEvent.setting === 'region') {
|
|
4983
|
+
text = t('ide.chat.modelInUseRegion', {
|
|
4984
|
+
model: cardEvent.label ?? '',
|
|
4985
|
+
region: String(cardEvent.value ?? '').toUpperCase(),
|
|
4986
|
+
}, { defaultValue: 'Now using {{model}} ({{region}})' });
|
|
4987
|
+
}
|
|
4988
|
+
else if (cardEvent.setting === 'autoFix') {
|
|
4989
|
+
text = cardEvent.value
|
|
4990
|
+
? t('ide.chat.autoFixEnabled', undefined, { defaultValue: 'Auto-fix enabled.' })
|
|
4991
|
+
: t('ide.chat.autoFixDisabled', undefined, { defaultValue: 'Auto-fix disabled.' });
|
|
4992
|
+
}
|
|
4993
|
+
else if (cardEvent.setting === 'autoApprove') {
|
|
4994
|
+
text = cardEvent.value
|
|
4995
|
+
? t('ide.chat.autoApproveEnabled', undefined, {
|
|
4996
|
+
defaultValue: 'Auto-approve on — destructive commands run without asking. The exfiltration guard still asks. Turn off with /autoapprove.',
|
|
4997
|
+
})
|
|
4998
|
+
: t('ide.chat.autoApproveDisabled', undefined, {
|
|
4999
|
+
defaultValue: 'Auto-approve off — destructive commands ask before running.',
|
|
5000
|
+
});
|
|
5001
|
+
}
|
|
5002
|
+
if (!text)
|
|
5003
|
+
return null;
|
|
5004
|
+
return { id, text: withBy(text), timestamp };
|
|
5005
|
+
}
|
|
4953
5006
|
case 'skills':
|
|
4954
5007
|
return {
|
|
4955
5008
|
id,
|
|
@@ -5317,7 +5370,10 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
5317
5370
|
}, children: [_jsx(Icon, { name: "people", size: CHAT_CARD_ICON_SIZE, "aria-hidden": "true", style: { flexShrink: 0, marginTop: 1, color: NOTICE_TONE.gold.accent } }), _jsx("span", { style: { flex: 1 }, children: t('ide.chat.viewerReadOnly', undefined, {
|
|
5318
5371
|
defaultValue: "You have view-only access, so you can't run the assistant here. You can still read along and use /teamsay to message the team.",
|
|
5319
5372
|
}) })] })) : null) : (_jsx("div", { className: cm.cn(cm.textSize('sm'), cm.sp('p', 2), cm.sp('mb', 2), cm.bgErrorSubtle, cm.textError), style: { borderRadius: '6px' }, children: error }))), (() => {
|
|
5320
|
-
|
|
5373
|
+
// A remote turn (a teammate's send, another tab, a server-side
|
|
5374
|
+
// continuation) shows the same live activity indicator as an own send —
|
|
5375
|
+
// watchers see Synthase working, not a frozen transcript.
|
|
5376
|
+
const showActivity = isLoading || awaitingSandboxBoot || isRemoteStreaming;
|
|
5321
5377
|
const streamingMsg = isLoading
|
|
5322
5378
|
? [...visibleMessages].reverse().find((m) => m.isStreaming)
|
|
5323
5379
|
: undefined;
|