@molecule/app-ide-react 3.0.4 → 3.1.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 +165 -4
- package/dist/components/ChatPanel.d.ts +3 -1
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +228 -46
- package/dist/components/ChatPanel.js.map +1 -1
- package/dist/components/TestStatusBar.d.ts +3 -1
- package/dist/components/TestStatusBar.d.ts.map +1 -1
- package/dist/components/TestStatusBar.js +7 -4
- package/dist/components/TestStatusBar.js.map +1 -1
- package/dist/components/TestsCard.d.ts +12 -1
- package/dist/components/TestsCard.d.ts.map +1 -1
- package/dist/components/TestsCard.js +31 -3
- package/dist/components/TestsCard.js.map +1 -1
- package/dist/components/tests-card-utilities.d.ts +31 -2
- package/dist/components/tests-card-utilities.d.ts.map +1 -1
- package/dist/components/tests-card-utilities.js +136 -6
- package/dist/components/tests-card-utilities.js.map +1 -1
- package/dist/types.d.ts +39 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -5
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-10-
|
|
6
|
+
Generated: 2026-10-30T23:44:58.704Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-ide-react
|
|
@@ -224,6 +224,8 @@ interface TestsCardProps {
|
|
|
224
224
|
isLight: boolean
|
|
225
225
|
/** Chrome-less inside the command overlay; full card chrome in the timeline. */
|
|
226
226
|
embedded?: boolean
|
|
227
|
+
/** The agent's display name, for a run the agent started. */
|
|
228
|
+
agentName?: string
|
|
227
229
|
}
|
|
228
230
|
```
|
|
229
231
|
|
|
@@ -523,8 +525,10 @@ Everything the card knows about the run it is showing.
|
|
|
523
525
|
interface TestsRunState {
|
|
524
526
|
runId: string | null
|
|
525
527
|
running: boolean
|
|
526
|
-
/** The ids
|
|
528
|
+
/** The ids the run on show covers, in run order (its private Skip candidates). */
|
|
527
529
|
queued: string[]
|
|
530
|
+
/** Files owed by ANY live covering run; row spinners use this aggregate, Skip never does. */
|
|
531
|
+
runningIds?: string[]
|
|
528
532
|
/** The id whose output is streaming right now, when the host says which. */
|
|
529
533
|
currentId: string | null
|
|
530
534
|
/** The live output lines, newest last, capped at {@link MAX_OUTPUT_LINES}. */
|
|
@@ -550,6 +554,16 @@ interface TestsRunState {
|
|
|
550
554
|
error: string | null
|
|
551
555
|
startedAt: number | null
|
|
552
556
|
durationMs: number | null
|
|
557
|
+
/**
|
|
558
|
+
* The run on show was NOT started by this panel (the agent, the platform, or
|
|
559
|
+
* another tab): it can be watched but not stopped or skipped from here.
|
|
560
|
+
* Absent on the panel's own runs.
|
|
561
|
+
*/
|
|
562
|
+
external?: boolean
|
|
563
|
+
/** Who started the run, when the host said. */
|
|
564
|
+
source?: TestRunSource | null
|
|
565
|
+
/** The command a run this panel did not start is running, when the host said. */
|
|
566
|
+
command?: string | null
|
|
553
567
|
}
|
|
554
568
|
```
|
|
555
569
|
|
|
@@ -1768,8 +1782,21 @@ in molecule.dev) in the order the run produces them: one `start`, then
|
|
|
1768
1782
|
interleaved `output`/`case`/`result`, then exactly one `done`.
|
|
1769
1783
|
|
|
1770
1784
|
```typescript
|
|
1771
|
-
type TestRunEvent =
|
|
1772
|
-
| {
|
|
1785
|
+
type TestRunEvent = (
|
|
1786
|
+
| {
|
|
1787
|
+
type: 'start'
|
|
1788
|
+
runId: string
|
|
1789
|
+
ids: string[]
|
|
1790
|
+
startedAt?: string
|
|
1791
|
+
/** Who started the run — what the test view says about a run it did not start. */
|
|
1792
|
+
source?: TestRunSource
|
|
1793
|
+
/**
|
|
1794
|
+
* The command a run the test view did not start is running (masked by the
|
|
1795
|
+
* host). An agent's own command names no test ids up front, so this is
|
|
1796
|
+
* what the view can show while its results arrive.
|
|
1797
|
+
*/
|
|
1798
|
+
command?: string
|
|
1799
|
+
}
|
|
1773
1800
|
| { type: 'output'; id?: string; stream?: 'stdout' | 'stderr'; chunk: string }
|
|
1774
1801
|
/**
|
|
1775
1802
|
* One TEST within a file — the runner's own title and group, so the person
|
|
@@ -1805,6 +1832,30 @@ type TestRunEvent =
|
|
|
1805
1832
|
durationMs?: number
|
|
1806
1833
|
error?: string
|
|
1807
1834
|
}
|
|
1835
|
+
) & {
|
|
1836
|
+
/** Server order on the direct stream too; optional only for older/custom hosts. */
|
|
1837
|
+
eventId?: string
|
|
1838
|
+
}
|
|
1839
|
+
```
|
|
1840
|
+
|
|
1841
|
+
#### `TestRunSource`
|
|
1842
|
+
|
|
1843
|
+
Who started a test run: the person (the Run buttons, in this tab or another),
|
|
1844
|
+
the agent (its test tool or its own shell commands), or the platform (its
|
|
1845
|
+
checks of a deploy).
|
|
1846
|
+
|
|
1847
|
+
```typescript
|
|
1848
|
+
type TestRunSource = 'person' | 'agent' | 'platform'
|
|
1849
|
+
```
|
|
1850
|
+
|
|
1851
|
+
#### `TestRunFeedEvent`
|
|
1852
|
+
|
|
1853
|
+
One event of the project's test-run feed: any {@link TestRunEvent}, stamped
|
|
1854
|
+
with the run it belongs to, since the feed interleaves every run in the
|
|
1855
|
+
project.
|
|
1856
|
+
|
|
1857
|
+
```typescript
|
|
1858
|
+
type TestRunFeedEvent = TestRunEvent & { runId: string }
|
|
1808
1859
|
```
|
|
1809
1860
|
|
|
1810
1861
|
#### `PreviewStuckReason`
|
|
@@ -1844,6 +1895,114 @@ rendering ("compiles + serves" ≠ "renders").
|
|
|
1844
1895
|
type PreviewRenderState = 'rendered' | 'blank' | 'frozen' | 'loading'
|
|
1845
1896
|
```
|
|
1846
1897
|
|
|
1898
|
+
### Classes
|
|
1899
|
+
|
|
1900
|
+
#### `TestRunProjection`
|
|
1901
|
+
|
|
1902
|
+
Incremental card state. A server id is applied once, in order; completed runs are compacted
|
|
1903
|
+
while per-file verdicts survive. No raw event history is retained or replayed into a fold.
|
|
1904
|
+
|
|
1905
|
+
```typescript
|
|
1906
|
+
class TestRunProjection {
|
|
1907
|
+
private readonly runs = new Map<string, ProjectedRun>()
|
|
1908
|
+
private readonly results: Record<string, TestResultEntry> = {}
|
|
1909
|
+
private readonly pending = new Map<string, string>()
|
|
1910
|
+
private lastEventId: string | null = null
|
|
1911
|
+
private order = 0
|
|
1912
|
+
|
|
1913
|
+
/** Apply one event and return the visible state. Missing ids support older custom hosts only. */
|
|
1914
|
+
apply(event: TestRunFeedEvent, activeOwnRunId: string | null = null): TestsRunState {
|
|
1915
|
+
if (event.eventId) {
|
|
1916
|
+
if (this.lastEventId && compareEventIds(event.eventId, this.lastEventId) <= 0)
|
|
1917
|
+
return this.show(activeOwnRunId)
|
|
1918
|
+
this.lastEventId = event.eventId
|
|
1919
|
+
}
|
|
1920
|
+
const order = ++this.order
|
|
1921
|
+
const previous = this.runs.get(event.runId) ?? {
|
|
1922
|
+
state: { ...EMPTY_RUN_STATE, runId: event.runId, running: event.type !== 'done' },
|
|
1923
|
+
covered: new Set<string>(),
|
|
1924
|
+
startOrder: order,
|
|
1925
|
+
lastOrder: order,
|
|
1926
|
+
}
|
|
1927
|
+
if (!previous.state.running && event.type === 'done') return this.show(activeOwnRunId)
|
|
1928
|
+
|
|
1929
|
+
const id =
|
|
1930
|
+
event.type === 'case' || event.type === 'result' || event.type === 'output'
|
|
1931
|
+
? event.id
|
|
1932
|
+
: undefined
|
|
1933
|
+
const covered =
|
|
1934
|
+
event.type === 'start' ? event.ids : id != null && !previous.covered.has(id) ? [id] : []
|
|
1935
|
+
for (const file of covered) {
|
|
1936
|
+
previous.covered.add(file)
|
|
1937
|
+
delete this.results[file]
|
|
1938
|
+
this.pending.set(file, event.runId)
|
|
1939
|
+
}
|
|
1940
|
+
|
|
1941
|
+
let next = applyTestRunEvent(previous.state, event)
|
|
1942
|
+
if (event.type === 'start' && event.startedAt) {
|
|
1943
|
+
const startedAt = Date.parse(event.startedAt)
|
|
1944
|
+
if (Number.isFinite(startedAt)) next = { ...next, startedAt }
|
|
1945
|
+
}
|
|
1946
|
+
if (event.type === 'result') {
|
|
1947
|
+
const verdict = next.results[event.id]
|
|
1948
|
+
if (verdict) this.results[event.id] = verdict
|
|
1949
|
+
// The latest verdict is what counts, even when an older run produced it after a newer start.
|
|
1950
|
+
this.pending.delete(event.id)
|
|
1951
|
+
}
|
|
1952
|
+
if (event.type === 'done') {
|
|
1953
|
+
for (const [file, runId] of this.pending) {
|
|
1954
|
+
if (runId === event.runId) this.pending.delete(file)
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1957
|
+
this.runs.set(event.runId, { ...previous, state: next, lastOrder: order })
|
|
1958
|
+
this.compact()
|
|
1959
|
+
return this.show(activeOwnRunId)
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
/** Keep every live run (including the active own run) and only the latest completed run. */
|
|
1963
|
+
private compact(): void {
|
|
1964
|
+
const completed = [...this.runs.values()]
|
|
1965
|
+
.filter((run) => !run.state.running)
|
|
1966
|
+
.sort((a, b) => b.lastOrder - a.lastOrder)
|
|
1967
|
+
for (const run of completed.slice(1)) {
|
|
1968
|
+
if (run.state.runId) this.runs.delete(run.state.runId)
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
/** Render current per-file state, with progress and controls selected independently. */
|
|
1973
|
+
show(activeOwnRunId: string | null = null): TestsRunState {
|
|
1974
|
+
const activeOwn = activeOwnRunId ? this.runs.get(activeOwnRunId) : undefined
|
|
1975
|
+
const running = [...this.runs.values()]
|
|
1976
|
+
.filter((run) => run.state.running)
|
|
1977
|
+
.sort((a, b) => a.startOrder - b.startOrder || a.lastOrder - b.lastOrder)
|
|
1978
|
+
const latest = [...this.runs.values()].sort((a, b) => a.lastOrder - b.lastOrder).at(-1)
|
|
1979
|
+
const shown = activeOwn?.state.running
|
|
1980
|
+
? activeOwn
|
|
1981
|
+
: (running.at(-1) ?? latest ?? { state: EMPTY_RUN_STATE })
|
|
1982
|
+
const runningIds = new Set(
|
|
1983
|
+
[...this.pending]
|
|
1984
|
+
.filter(([, runId]) => this.runs.get(runId)?.state.running === true)
|
|
1985
|
+
.map(([id]) => id),
|
|
1986
|
+
)
|
|
1987
|
+
const own = shown.state.runId != null && shown.state.runId === activeOwnRunId
|
|
1988
|
+
const currentId =
|
|
1989
|
+
shown.state.currentId && runningIds.has(shown.state.currentId) ? shown.state.currentId : null
|
|
1990
|
+
const cases = Object.fromEntries(
|
|
1991
|
+
Object.entries(shown.state.cases).filter(([id]) => runningIds.has(id)),
|
|
1992
|
+
)
|
|
1993
|
+
return {
|
|
1994
|
+
...shown.state,
|
|
1995
|
+
currentId,
|
|
1996
|
+
cases,
|
|
1997
|
+
runningIds: [...runningIds],
|
|
1998
|
+
results: { ...this.results },
|
|
1999
|
+
external: shown.state.runId == null ? undefined : !own,
|
|
2000
|
+
skipUnavailable: own ? shown.state.skipUnavailable : true,
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
```
|
|
2005
|
+
|
|
1847
2006
|
### Functions
|
|
1848
2007
|
|
|
1849
2008
|
#### `groupCommandsByCategory(commands, categories)`
|
|
@@ -1962,6 +2121,7 @@ function ChatPanel({
|
|
|
1962
2121
|
feedbackUrl,
|
|
1963
2122
|
listTests,
|
|
1964
2123
|
runTests,
|
|
2124
|
+
watchTestRuns,
|
|
1965
2125
|
canRunTests,
|
|
1966
2126
|
testsAvailable,
|
|
1967
2127
|
skipToolCall,
|
|
@@ -2390,6 +2550,7 @@ function TestsCard({
|
|
|
2390
2550
|
fixDisabledReason,
|
|
2391
2551
|
isLight,
|
|
2392
2552
|
embedded,
|
|
2553
|
+
agentName,
|
|
2393
2554
|
}: TestsCardProps): JSX.Element
|
|
2394
2555
|
```
|
|
2395
2556
|
|
|
@@ -246,6 +246,8 @@ export interface ChatInnerProps {
|
|
|
246
246
|
listTests?: ChatPanelProps['listTests'];
|
|
247
247
|
/** Runs the selected tests, streaming events — see {@link ChatPanelProps.runTests}. */
|
|
248
248
|
runTests?: ChatPanelProps['runTests'];
|
|
249
|
+
/** Every test run in the project, streamed — see {@link ChatPanelProps.watchTestRuns}. */
|
|
250
|
+
watchTestRuns?: ChatPanelProps['watchTestRuns'];
|
|
249
251
|
/** Whether this viewer may run tests — see {@link ChatPanelProps.canRunTests}. */
|
|
250
252
|
canRunTests?: boolean;
|
|
251
253
|
/** Whether the environment that runs them is up — see {@link ChatPanelProps.testsAvailable}. */
|
|
@@ -258,7 +260,7 @@ export interface ChatInnerProps {
|
|
|
258
260
|
* @param props - Component props (see {@link MessageItemProps}).
|
|
259
261
|
* @returns The rendered chat panel element.
|
|
260
262
|
*/
|
|
261
|
-
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, canSendTeamMessages, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }: ChatPanelProps): JSX.Element;
|
|
263
|
+
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, canSendTeamMessages, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, watchTestRuns, canRunTests, testsAvailable, skipToolCall, className, }: ChatPanelProps): JSX.Element;
|
|
262
264
|
export declare namespace ChatPanel {
|
|
263
265
|
var displayName: string;
|
|
264
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAa3C,OAAO,KAAK,EAEV,WAAW,EAIZ,MAAM,uBAAuB,CAAA;AAyC9B,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|