@molecule/app-ide-react 1.14.0 → 1.16.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.
- package/README.md +261 -7
- package/dist/components/ChatPanel.d.ts +10 -1
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +114 -13
- package/dist/components/ChatPanel.js.map +1 -1
- package/dist/components/TestsCard.d.ts +27 -3
- package/dist/components/TestsCard.d.ts.map +1 -1
- package/dist/components/TestsCard.js +116 -21
- package/dist/components/TestsCard.js.map +1 -1
- package/dist/components/ToolCallCard.d.ts +7 -1
- package/dist/components/ToolCallCard.d.ts.map +1 -1
- package/dist/components/ToolCallCard.js +133 -94
- package/dist/components/ToolCallCard.js.map +1 -1
- package/dist/components/tests-card-utilities.d.ts +108 -2
- package/dist/components/tests-card-utilities.d.ts.map +1 -1
- package/dist/components/tests-card-utilities.js +205 -6
- package/dist/components/tests-card-utilities.js.map +1 -1
- package/dist/components/tool-call-utilities.d.ts +13 -0
- package/dist/components/tool-call-utilities.d.ts.map +1 -1
- package/dist/components/tool-call-utilities.js +22 -0
- package/dist/components/tool-call-utilities.js.map +1 -1
- package/dist/types.d.ts +60 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-09-
|
|
6
|
+
Generated: 2026-09-16T17:39:51.907Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-ide-react
|
|
@@ -607,6 +607,13 @@ interface ChatPanelProps {
|
|
|
607
607
|
* browser or letting a Run click fail. Defaults to `true`.
|
|
608
608
|
*/
|
|
609
609
|
testsAvailable?: boolean
|
|
610
|
+
/**
|
|
611
|
+
* Skip the executor's tool call that is running right now, without ending the
|
|
612
|
+
* turn — the call comes back marked as skipped and the turn carries on. The
|
|
613
|
+
* host owns the request; omitting this renders no Skip control on tool calls.
|
|
614
|
+
* Resolving `false` means nothing was in flight, which is a benign race.
|
|
615
|
+
*/
|
|
616
|
+
skipToolCall?: (toolCallId: string) => void | Promise<boolean | void>
|
|
610
617
|
className?: string
|
|
611
618
|
}
|
|
612
619
|
```
|
|
@@ -1470,6 +1477,46 @@ interface TabBarProps {
|
|
|
1470
1477
|
}
|
|
1471
1478
|
```
|
|
1472
1479
|
|
|
1480
|
+
#### `TestCaseProgress`
|
|
1481
|
+
|
|
1482
|
+
What one FILE is doing while it runs: which test is on screen, and how its
|
|
1483
|
+
own tests have gone so far. Discarded the moment the file reports a `result`
|
|
1484
|
+
— the row's verdict pill takes over from there.
|
|
1485
|
+
|
|
1486
|
+
```typescript
|
|
1487
|
+
interface TestCaseProgress {
|
|
1488
|
+
/** The test running right now, or `null` between tests. */
|
|
1489
|
+
current: TestCaseRef | null
|
|
1490
|
+
passed: number
|
|
1491
|
+
failed: number
|
|
1492
|
+
skipped: number
|
|
1493
|
+
}
|
|
1494
|
+
```
|
|
1495
|
+
|
|
1496
|
+
#### `TestCaseRef`
|
|
1497
|
+
|
|
1498
|
+
The one test a file is on right now, named the way its runner names it.
|
|
1499
|
+
|
|
1500
|
+
```typescript
|
|
1501
|
+
interface TestCaseRef {
|
|
1502
|
+
/** The runner's test title. */
|
|
1503
|
+
title: string
|
|
1504
|
+
/** Its enclosing group (`describe`), when it has one. */
|
|
1505
|
+
describe?: string
|
|
1506
|
+
}
|
|
1507
|
+
```
|
|
1508
|
+
|
|
1509
|
+
#### `TestFailure`
|
|
1510
|
+
|
|
1511
|
+
One failing test and the output that explains it.
|
|
1512
|
+
|
|
1513
|
+
```typescript
|
|
1514
|
+
interface TestFailure {
|
|
1515
|
+
item: TestItem
|
|
1516
|
+
output?: string | undefined
|
|
1517
|
+
}
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1473
1520
|
#### `TestGroup`
|
|
1474
1521
|
|
|
1475
1522
|
One rendered group of rows: a kind within a project directory.
|
|
@@ -1546,6 +1593,16 @@ Handle to a run in flight, so the bar can stop it.
|
|
|
1546
1593
|
interface TestRunHandle {
|
|
1547
1594
|
/** Stop the run — the host aborts its stream, which cancels the work. */
|
|
1548
1595
|
cancel(): void
|
|
1596
|
+
/**
|
|
1597
|
+
* Skip the command the run is on right now WITHOUT ending the run: the files
|
|
1598
|
+
* that command owned come back as `result`s with `status: 'skipped'`, and the
|
|
1599
|
+
* run moves to the next command.
|
|
1600
|
+
*
|
|
1601
|
+
* Optional, because a host may not serve it. Resolving `false` means there
|
|
1602
|
+
* was nothing to skip (the run had already moved on) — a benign race the card
|
|
1603
|
+
* answers by dropping the control, never by showing an error.
|
|
1604
|
+
*/
|
|
1605
|
+
skipCurrent?(): void | Promise<boolean | void>
|
|
1549
1606
|
}
|
|
1550
1607
|
```
|
|
1551
1608
|
|
|
@@ -1578,8 +1635,25 @@ interface TestsCardProps {
|
|
|
1578
1635
|
canRun: boolean
|
|
1579
1636
|
/** Runs a selection. */
|
|
1580
1637
|
onRun: (selection: TestSelection) => void
|
|
1581
|
-
/** Stops the run in flight. */
|
|
1638
|
+
/** Stops the run in flight — the whole run, every remaining file. */
|
|
1582
1639
|
onCancel: () => void
|
|
1640
|
+
/**
|
|
1641
|
+
* Skips the command the run is on right now, WITHOUT ending it: that file
|
|
1642
|
+
* comes back `Skipped` and the run moves to the next one. Omitted by a host
|
|
1643
|
+
* that does not serve skipping — then no Skip control is rendered.
|
|
1644
|
+
*/
|
|
1645
|
+
onSkipCurrent?: () => void
|
|
1646
|
+
/**
|
|
1647
|
+
* Hands the failing tests to the agent as ONE chat message — a real turn it
|
|
1648
|
+
* answers, exactly like the editor’s “Fix with AI”.
|
|
1649
|
+
*/
|
|
1650
|
+
onFix: (failures: TestFailure[]) => void
|
|
1651
|
+
/**
|
|
1652
|
+
* Why fixing is unavailable (a viewer, a turn already streaming), already
|
|
1653
|
+
* translated by the host — `null` when it is available. The card states the
|
|
1654
|
+
* reason on the disabled button rather than letting a click do nothing.
|
|
1655
|
+
*/
|
|
1656
|
+
fixDisabledReason: string | null
|
|
1583
1657
|
/** Light theme (drives the same row border + field inset the sibling cards use). */
|
|
1584
1658
|
isLight: boolean
|
|
1585
1659
|
/** Chrome-less inside the command overlay; full card chrome in the timeline. */
|
|
@@ -1616,6 +1690,19 @@ interface TestsRunState {
|
|
|
1616
1690
|
output: string[]
|
|
1617
1691
|
/** Per-id outcome from this run (and from earlier runs, until re-run). */
|
|
1618
1692
|
results: Record<string, TestResultEntry>
|
|
1693
|
+
/**
|
|
1694
|
+
* Per-id LIVE per-test progress, for the files that are running right now.
|
|
1695
|
+
* An entry exists only between a file's first `case` event and its `result`.
|
|
1696
|
+
*/
|
|
1697
|
+
cases: Record<string, TestCaseProgress>
|
|
1698
|
+
/** A skip was asked for and the run has not answered it yet. */
|
|
1699
|
+
skipPending: boolean
|
|
1700
|
+
/**
|
|
1701
|
+
* Skipping is not on offer: the host wired no `skipCurrent`, or it answered
|
|
1702
|
+
* that there was nothing left to skip. The control is dropped — never
|
|
1703
|
+
* replaced by an error the person cannot act on.
|
|
1704
|
+
*/
|
|
1705
|
+
skipUnavailable: boolean
|
|
1619
1706
|
/** How the run ended, once it has. */
|
|
1620
1707
|
outcome: TestRunOutcome | null
|
|
1621
1708
|
/** A run-level failure message (timeout, transport error) shown in the card. */
|
|
@@ -1652,6 +1739,21 @@ interface ToolCallCardProps {
|
|
|
1652
1739
|
onFileRevert?: (path: string, content: string) => Promise<void>
|
|
1653
1740
|
/** Called when the user responds to an `ask_user` tool call (clicks an option or submits free text). */
|
|
1654
1741
|
onAskUserResponse?: (response: string) => void
|
|
1742
|
+
/**
|
|
1743
|
+
* Skip this tool call while it is RUNNING, without ending the turn: the call
|
|
1744
|
+
* comes back as skipped, the model is told it did not run, and the turn
|
|
1745
|
+
* carries on. Omitted by a host that does not serve it — then no control is
|
|
1746
|
+
* rendered at all. Resolving `false` means nothing was in flight (the call
|
|
1747
|
+
* had already finished), which returns the button to its resting state rather
|
|
1748
|
+
* than reporting an error.
|
|
1749
|
+
*/
|
|
1750
|
+
onSkip?: (id: string) => void | Promise<boolean | void>
|
|
1751
|
+
/**
|
|
1752
|
+
* Why skipping is unavailable to THIS viewer, already translated by the host
|
|
1753
|
+
* — `null` when it is available. The control stays visible and disabled with
|
|
1754
|
+
* the reason on it, rather than vanishing without explanation.
|
|
1755
|
+
*/
|
|
1756
|
+
skipDisabledReason?: string | null
|
|
1655
1757
|
className?: string
|
|
1656
1758
|
}
|
|
1657
1759
|
```
|
|
@@ -1867,6 +1969,16 @@ A role granted by a share link.
|
|
|
1867
1969
|
type ShareRole = (typeof SHARE_ROLES)[number]
|
|
1868
1970
|
```
|
|
1869
1971
|
|
|
1972
|
+
#### `TestCaseStatus`
|
|
1973
|
+
|
|
1974
|
+
How one TEST inside a file is doing: the three verdicts a file can end with,
|
|
1975
|
+
plus `running` — the state a file never reports, because a file is only ever
|
|
1976
|
+
seen finished.
|
|
1977
|
+
|
|
1978
|
+
```typescript
|
|
1979
|
+
type TestCaseStatus = TestStatus | 'running'
|
|
1980
|
+
```
|
|
1981
|
+
|
|
1870
1982
|
#### `TestKind`
|
|
1871
1983
|
|
|
1872
1984
|
What a test file is: an end-to-end spec driven against the LIVE PREVIEW (the
|
|
@@ -1881,12 +1993,25 @@ type TestKind = 'e2e' | 'unit'
|
|
|
1881
1993
|
|
|
1882
1994
|
One event from a run in progress. The host streams these to the bar (over SSE
|
|
1883
1995
|
in molecule.dev) in the order the run produces them: one `start`, then
|
|
1884
|
-
interleaved `output`/`result`, then exactly one `done`.
|
|
1996
|
+
interleaved `output`/`case`/`result`, then exactly one `done`.
|
|
1885
1997
|
|
|
1886
1998
|
```typescript
|
|
1887
1999
|
type TestRunEvent =
|
|
1888
2000
|
| { type: 'start'; runId: string; ids: string[]; startedAt?: string }
|
|
1889
2001
|
| { type: 'output'; id?: string; stream?: 'stdout' | 'stderr'; chunk: string }
|
|
2002
|
+
/**
|
|
2003
|
+
* One TEST within a file — the runner's own title and group, so the person
|
|
2004
|
+
* watching a five-minute spec run sees WHICH test is on screen instead of a
|
|
2005
|
+
* spinner. `id` is the same file id `result` uses.
|
|
2006
|
+
*/
|
|
2007
|
+
| {
|
|
2008
|
+
type: 'case'
|
|
2009
|
+
id: string
|
|
2010
|
+
title: string
|
|
2011
|
+
describe?: string
|
|
2012
|
+
status: TestCaseStatus
|
|
2013
|
+
durationMs?: number
|
|
2014
|
+
}
|
|
1890
2015
|
| {
|
|
1891
2016
|
type: 'result'
|
|
1892
2017
|
id: string
|
|
@@ -1912,10 +2037,14 @@ type TestRunEvent =
|
|
|
1912
2037
|
|
|
1913
2038
|
#### `TestRunOutcome`
|
|
1914
2039
|
|
|
1915
|
-
How a whole run ended.
|
|
2040
|
+
How a whole run ended. `skipped-by-user` is a run that otherwise finished but
|
|
2041
|
+
had at least one command skipped from the card — deliberately its OWN outcome
|
|
2042
|
+
rather than `completed` plus a count, so nothing can read a run with skipped
|
|
2043
|
+
work in it as a clean pass. A real failure still wins: `error`, `timeout` and
|
|
2044
|
+
`cancelled` take precedence over it.
|
|
1916
2045
|
|
|
1917
2046
|
```typescript
|
|
1918
|
-
type TestRunOutcome = 'completed' | 'cancelled' | 'timeout' | 'error'
|
|
2047
|
+
type TestRunOutcome = 'completed' | 'cancelled' | 'timeout' | 'error' | 'skipped-by-user'
|
|
1919
2048
|
```
|
|
1920
2049
|
|
|
1921
2050
|
#### `TestsStatus`
|
|
@@ -2069,8 +2198,10 @@ function activityTypeLabel(type: ActivityType): string
|
|
|
2069
2198
|
Fold one streamed event into the run state.
|
|
2070
2199
|
|
|
2071
2200
|
Deliberately total: an event for an id the card no longer lists is recorded
|
|
2072
|
-
anyway (a re-list may be in flight),
|
|
2073
|
-
|
|
2201
|
+
anyway (a re-list may be in flight), a `case` that arrives out of order (after
|
|
2202
|
+
its file already reported a verdict) is dropped rather than resurrecting a
|
|
2203
|
+
finished row, and an unknown event type leaves the state untouched rather
|
|
2204
|
+
than throwing inside a stream handler.
|
|
2074
2205
|
|
|
2075
2206
|
```typescript
|
|
2076
2207
|
function applyTestRunEvent(state: TestsRunState, event: TestRunEvent): TestsRunState
|
|
@@ -2139,6 +2270,35 @@ function buildShareUrl(result: ShareLinkResult, origin: string): string
|
|
|
2139
2270
|
|
|
2140
2271
|
**Returns:** The absolute, copyable share URL.
|
|
2141
2272
|
|
|
2273
|
+
#### `buildTestFixMessage(failures)`
|
|
2274
|
+
|
|
2275
|
+
Compose the ONE user message the card's “Fix with Synthase” action sends.
|
|
2276
|
+
|
|
2277
|
+
It is a real turn the executor answers, so it reads like something a person
|
|
2278
|
+
would type: which test failed, where it lives, what the runner said, and to
|
|
2279
|
+
re-run it. This is a PROMPT, not UI copy — it is not translated, exactly like
|
|
2280
|
+
the auto-fix loop’s own `Fix these issues:` message.
|
|
2281
|
+
|
|
2282
|
+
```typescript
|
|
2283
|
+
function buildTestFixMessage(failures: readonly TestFailure[]): string
|
|
2284
|
+
```
|
|
2285
|
+
|
|
2286
|
+
- `failures` — The failing tests, in the order the card lists them.
|
|
2287
|
+
|
|
2288
|
+
**Returns:** The message, or `` when there is nothing to fix.
|
|
2289
|
+
|
|
2290
|
+
#### `canSkipRun(state)`
|
|
2291
|
+
|
|
2292
|
+
Whether the host can be asked to skip right now.
|
|
2293
|
+
|
|
2294
|
+
```typescript
|
|
2295
|
+
function canSkipRun(state: TestsRunState): boolean
|
|
2296
|
+
```
|
|
2297
|
+
|
|
2298
|
+
- `state` — The run state.
|
|
2299
|
+
|
|
2300
|
+
**Returns:** True when a Skip control belongs on screen.
|
|
2301
|
+
|
|
2142
2302
|
#### `ChatPanel(props)`
|
|
2143
2303
|
|
|
2144
2304
|
AI chat panel with conversation history dropdown and Claude Code-style tool display.
|
|
@@ -2204,6 +2364,7 @@ function ChatPanel({
|
|
|
2204
2364
|
runTests,
|
|
2205
2365
|
canRunTests,
|
|
2206
2366
|
testsAvailable,
|
|
2367
|
+
skipToolCall,
|
|
2207
2368
|
className,
|
|
2208
2369
|
}: ChatPanelProps): JSX.Element
|
|
2209
2370
|
```
|
|
@@ -2294,6 +2455,20 @@ function countByKind(tests: readonly TestItem[]): Record<TestKind, number>
|
|
|
2294
2455
|
|
|
2295
2456
|
**Returns:** The per-kind counts.
|
|
2296
2457
|
|
|
2458
|
+
#### `currentRunRowId(state)`
|
|
2459
|
+
|
|
2460
|
+
Which row the Skip acts on: the one the stream named as current, or — when it
|
|
2461
|
+
has not named one yet — the single row still awaiting a verdict, because with
|
|
2462
|
+
exactly one candidate there is nothing to be ambiguous about.
|
|
2463
|
+
|
|
2464
|
+
```typescript
|
|
2465
|
+
function currentRunRowId(state: TestsRunState): string | null
|
|
2466
|
+
```
|
|
2467
|
+
|
|
2468
|
+
- `state` — The run state.
|
|
2469
|
+
|
|
2470
|
+
**Returns:** The row's id, or `null` when the run is not on an identifiable row.
|
|
2471
|
+
|
|
2297
2472
|
#### `DeviceFrameSelector(props)`
|
|
2298
2473
|
|
|
2299
2474
|
A dropdown that selects the preview device frame and hosts the Rotate +
|
|
@@ -2352,6 +2527,23 @@ function EditorPanel({
|
|
|
2352
2527
|
|
|
2353
2528
|
**Returns:** The rendered editor panel element.
|
|
2354
2529
|
|
|
2530
|
+
#### `failedTests(tests, results)`
|
|
2531
|
+
|
|
2532
|
+
Every listed test whose last verdict was a failure, with its output — what
|
|
2533
|
+
the card's fix actions send.
|
|
2534
|
+
|
|
2535
|
+
```typescript
|
|
2536
|
+
function failedTests(
|
|
2537
|
+
tests: readonly TestItem[],
|
|
2538
|
+
results: Record<string, TestResultEntry>,
|
|
2539
|
+
): TestFailure[]
|
|
2540
|
+
```
|
|
2541
|
+
|
|
2542
|
+
- `tests` — The currently listed (and filtered) tests.
|
|
2543
|
+
- `results` — The per-id outcomes.
|
|
2544
|
+
|
|
2545
|
+
**Returns:** The failures, in list order.
|
|
2546
|
+
|
|
2355
2547
|
#### `failRun(state, message)`
|
|
2356
2548
|
|
|
2357
2549
|
The state after a run that never produced a `done` event — the host's stream
|
|
@@ -2727,6 +2919,20 @@ function livePanelSize(layout: WorkspaceLayout, panelConfigs: PanelConfig[], ind
|
|
|
2727
2919
|
|
|
2728
2920
|
**Returns:** The panel size as a percentage.
|
|
2729
2921
|
|
|
2922
|
+
#### `markSkipUnavailable(state)`
|
|
2923
|
+
|
|
2924
|
+
Record that skipping is not on offer — either the host wired no `skipCurrent`
|
|
2925
|
+
or it answered that the run had already moved on. The control is dropped; the
|
|
2926
|
+
person is not shown an error about a race they did not cause.
|
|
2927
|
+
|
|
2928
|
+
```typescript
|
|
2929
|
+
function markSkipUnavailable(state: TestsRunState): TestsRunState
|
|
2930
|
+
```
|
|
2931
|
+
|
|
2932
|
+
- `state` — The current state.
|
|
2933
|
+
|
|
2934
|
+
**Returns:** The next state.
|
|
2935
|
+
|
|
2730
2936
|
#### `matchesSideChannelCommand(defs, text)`
|
|
2731
2937
|
|
|
2732
2938
|
True when `text` invokes a side-channel command ({@link CommandDef.sideChannel})
|
|
@@ -2972,6 +3178,20 @@ function ReportModal({
|
|
|
2972
3178
|
|
|
2973
3179
|
**Returns:** The rendered report modal.
|
|
2974
3180
|
|
|
3181
|
+
#### `requestSkip(state)`
|
|
3182
|
+
|
|
3183
|
+
Record that the person asked to skip what is running. The state only says a
|
|
3184
|
+
request is OUT — the run's own `result` for the skipped file is what actually
|
|
3185
|
+
moves the row, so nothing here can make a skipped file read as anything else.
|
|
3186
|
+
|
|
3187
|
+
```typescript
|
|
3188
|
+
function requestSkip(state: TestsRunState): TestsRunState
|
|
3189
|
+
```
|
|
3190
|
+
|
|
3191
|
+
- `state` — The current state.
|
|
3192
|
+
|
|
3193
|
+
**Returns:** The next state, or the same one when there is nothing to skip.
|
|
3194
|
+
|
|
2975
3195
|
#### `ResizeHandle(props)`
|
|
2976
3196
|
|
|
2977
3197
|
Draggable handle for resizing adjacent panels. Uses Pointer Events so it works
|
|
@@ -3210,6 +3430,19 @@ function TabBar({
|
|
|
3210
3430
|
|
|
3211
3431
|
**Returns:** The rendered tab bar element, or null if no tabs are open.
|
|
3212
3432
|
|
|
3433
|
+
#### `testCaseLabel(current)`
|
|
3434
|
+
|
|
3435
|
+
The one-line name of the test a file is on: its group and its title, or just
|
|
3436
|
+
its title when the runner gave it no group.
|
|
3437
|
+
|
|
3438
|
+
```typescript
|
|
3439
|
+
function testCaseLabel(current: TestCaseRef | null | undefined): string
|
|
3440
|
+
```
|
|
3441
|
+
|
|
3442
|
+
- `current` — The running test, or `null`.
|
|
3443
|
+
|
|
3444
|
+
**Returns:** The label, or `` when nothing is named.
|
|
3445
|
+
|
|
3213
3446
|
#### `testRowLabel(item)`
|
|
3214
3447
|
|
|
3215
3448
|
The label for a row: the host's title when it gave one, else the file path.
|
|
@@ -3235,6 +3468,9 @@ function TestsCard({
|
|
|
3235
3468
|
canRun,
|
|
3236
3469
|
onRun,
|
|
3237
3470
|
onCancel,
|
|
3471
|
+
onSkipCurrent,
|
|
3472
|
+
onFix,
|
|
3473
|
+
fixDisabledReason,
|
|
3238
3474
|
isLight,
|
|
3239
3475
|
embedded,
|
|
3240
3476
|
}: TestsCardProps): JSX.Element
|
|
@@ -3524,6 +3760,22 @@ Maximum avatar source length we will render inline (~256 KB data-URI).
|
|
|
3524
3760
|
const MAX_AVATAR_SRC_LENGTH: 262144
|
|
3525
3761
|
```
|
|
3526
3762
|
|
|
3763
|
+
#### `MAX_FIX_MESSAGE_OUTPUT_CHARS`
|
|
3764
|
+
|
|
3765
|
+
Total output kept across a batched fix message, so one click cannot send a novel.
|
|
3766
|
+
|
|
3767
|
+
```typescript
|
|
3768
|
+
const MAX_FIX_MESSAGE_OUTPUT_CHARS: 12000
|
|
3769
|
+
```
|
|
3770
|
+
|
|
3771
|
+
#### `MAX_FIX_OUTPUT_CHARS`
|
|
3772
|
+
|
|
3773
|
+
Output kept per failure when several are batched into one fix message.
|
|
3774
|
+
|
|
3775
|
+
```typescript
|
|
3776
|
+
const MAX_FIX_OUTPUT_CHARS: 2000
|
|
3777
|
+
```
|
|
3778
|
+
|
|
3527
3779
|
#### `MAX_OUTPUT_LINES`
|
|
3528
3780
|
|
|
3529
3781
|
Live output lines retained — enough to read, bounded so a chatty run cannot grow forever.
|
|
@@ -3611,6 +3863,8 @@ const ToolCallCard: MemoExoticComponent<
|
|
|
3611
3863
|
onFileDiff,
|
|
3612
3864
|
onFileRevert,
|
|
3613
3865
|
onAskUserResponse,
|
|
3866
|
+
onSkip,
|
|
3867
|
+
skipDisabledReason,
|
|
3614
3868
|
className,
|
|
3615
3869
|
}: ToolCallCardProps) => JSX.Element | null
|
|
3616
3870
|
>
|
|
@@ -102,6 +102,13 @@ export interface MessageItemProps {
|
|
|
102
102
|
agentName?: string;
|
|
103
103
|
/** Whether the user may write shared project state — false hides/inertizes write affordances in the message (revert, ask_user answers). */
|
|
104
104
|
canEdit?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Skips a tool call that is running right now, without ending the turn.
|
|
107
|
+
* Undefined when the host serves no such route — then no Skip is rendered.
|
|
108
|
+
*/
|
|
109
|
+
onSkipToolCall?: (toolCallId: string) => void | Promise<boolean | void>;
|
|
110
|
+
/** Why this viewer cannot skip, already translated — `null` when they can. */
|
|
111
|
+
skipToolCallReason?: string | null;
|
|
105
112
|
/**
|
|
106
113
|
* Whether the header row shows the message's time — decided for the whole
|
|
107
114
|
* timeline by `planChatTimestamps` (a run of identical labels shows it once).
|
|
@@ -212,13 +219,15 @@ export interface ChatInnerProps {
|
|
|
212
219
|
canRunTests?: boolean;
|
|
213
220
|
/** Whether the environment that runs them is up — see {@link ChatPanelProps.testsAvailable}. */
|
|
214
221
|
testsAvailable?: boolean;
|
|
222
|
+
/** Skips the executor's running tool call — see {@link ChatPanelProps.skipToolCall}. */
|
|
223
|
+
skipToolCall?: ChatPanelProps['skipToolCall'];
|
|
215
224
|
}
|
|
216
225
|
/**
|
|
217
226
|
* AI chat panel with conversation history dropdown and Claude Code-style tool display.
|
|
218
227
|
* @param props - Component props (see {@link MessageItemProps}).
|
|
219
228
|
* @returns The rendered chat panel element.
|
|
220
229
|
*/
|
|
221
|
-
export declare function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit, canShare, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, className, }: ChatPanelProps): JSX.Element;
|
|
230
|
+
export declare function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit, canShare, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }: ChatPanelProps): JSX.Element;
|
|
222
231
|
export declare namespace ChatPanel {
|
|
223
232
|
var displayName: string;
|
|
224
233
|
}
|
|
@@ -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;AAwCpF,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EAIhB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAevD,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,oBAAoB,CAAA;AAY3B,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,gCAAgC,CAAA;
|
|
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;AAwCpF,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EAIhB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAevD,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,oBAAoB,CAAA;AAY3B,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAkNnF,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;AAwOD,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAo/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;AAwDD,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;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACjD,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,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;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACvE,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAspBD,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,4HAA4H;IAC5H,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IACjD,6GAA6G;IAC7G,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,6GAA6G;IAC7G,0BAA0B,CAAC,EAAE,cAAc,CAAC,4BAA4B,CAAC,CAAA;IACzE,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;IACpB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IACvC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;IACrC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gGAAgG;IAChG,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wFAAwF;IACxF,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAC9C;AAiqSD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,wBAA+B,EAC/B,cAAc,EAAE,wBAAwB,EACxC,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,0BAA0B,EAC5C,eAAe,EAAE,qBAAqB,EACtC,gBAAgB,EAAE,sBAAsB,EACxC,kBAAkB,EAAE,wBAAwB,EAC5C,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,OAAc,EACd,QAAQ,EACR,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,SAAS,EACT,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,EACZ,SAAS,GACV,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAgd9B;yBA9gBe,SAAS"}
|