@mlpal/yodex-ui 0.1.0 → 0.2.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 +3 -3
- package/dist/client/client.d.ts +12 -18
- package/dist/client/types.d.ts +13 -34
- package/dist/components/SessionList.d.ts +3 -10
- package/dist/index.js +30 -15
- package/dist/index.js.map +6 -6
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -37,6 +37,6 @@ function Chat({ url, token }: { url: string; token?: string }) {
|
|
|
37
37
|
- Styling: Tailwind utilities compiled against the Obsidian Intelligence token names
|
|
38
38
|
(`--background`, `--primary`, `--muted`, `--success`, `--warning`, `--info`, …). Every component
|
|
39
39
|
works at 390 px width with 44 px touch targets.
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
- `state.capabilities` mirrors `ready.capabilities` ("questions", "approval", "attachments",
|
|
41
|
+
"sessions_v2", …): the hook refuses attachments the server cannot take, `QuestionForm` and the
|
|
42
|
+
approval controls only ever show when the server asks, and a `yodex/1` server still works.
|
package/dist/client/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientMessage, ServerMessage } from "@mlpal/harness-protocol";
|
|
1
|
+
import type { ClientMessage, ContentBlock, ServerMessage } from "@mlpal/harness-protocol";
|
|
2
2
|
import type { AskOutcome, ConnectionState, IncomingMessage } from "./types";
|
|
3
3
|
/** The subset of the WebSocket API the client uses, so tests can inject a fake. */
|
|
4
4
|
export interface SocketLike {
|
|
@@ -17,26 +17,14 @@ export interface RunOptions {
|
|
|
17
17
|
sessionId?: string;
|
|
18
18
|
model?: string;
|
|
19
19
|
mode?: string;
|
|
20
|
-
/** yodex/2:
|
|
20
|
+
/** yodex/2: the HOP for this run (must be the server's own unless it claims "hop_per_run"),
|
|
21
|
+
* the working directory under the workspace root, and attachments ("attachments"). */
|
|
21
22
|
hop?: string;
|
|
22
23
|
cwd?: string;
|
|
24
|
+
blocks?: ContentBlock[];
|
|
23
25
|
}
|
|
24
|
-
/** Outgoing messages: yodex/
|
|
25
|
-
export type OutgoingMessage = ClientMessage
|
|
26
|
-
type: "run";
|
|
27
|
-
}> & {
|
|
28
|
-
hop?: string;
|
|
29
|
-
cwd?: string;
|
|
30
|
-
}) | {
|
|
31
|
-
type: "question_response";
|
|
32
|
-
id: string;
|
|
33
|
-
outcome: AskOutcome;
|
|
34
|
-
} | {
|
|
35
|
-
type: "approval_response";
|
|
36
|
-
sessionId: string;
|
|
37
|
-
decision: "allow" | "deny";
|
|
38
|
-
reason?: string;
|
|
39
|
-
};
|
|
26
|
+
/** Outgoing messages: the protocol's ClientMessage (yodex/2, additive over yodex/1). */
|
|
27
|
+
export type OutgoingMessage = ClientMessage;
|
|
40
28
|
export interface YodexClientOptions {
|
|
41
29
|
/** ws:// or wss:// URL of `yodex serve`'s /ws endpoint. */
|
|
42
30
|
url: string;
|
|
@@ -121,5 +109,11 @@ export declare class YodexClient {
|
|
|
121
109
|
requestId?: string;
|
|
122
110
|
sessionId: string;
|
|
123
111
|
messages: import("@mlpal/harness-protocol").SDKMessage[];
|
|
112
|
+
pendingQuestion?: {
|
|
113
|
+
id: string;
|
|
114
|
+
questions: import("@mlpal/harness-protocol").AskQuestion[];
|
|
115
|
+
};
|
|
116
|
+
pendingApproval?: import("@mlpal/harness-protocol").PendingApproval;
|
|
117
|
+
live?: boolean;
|
|
124
118
|
}>;
|
|
125
119
|
}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Author, ContentBlock, ResultEvent, ServerMessage, SessionSummary, ToolResultBlocks, Usage } from "@mlpal/harness-protocol";
|
|
1
|
+
import type { AskQuestion, Author, ContentBlock, PendingApproval, ResultEvent, ServerCapability, ServerMessage, SessionSummary, ToolResultBlocks, Usage } from "@mlpal/harness-protocol";
|
|
2
|
+
export type { AskAnswer, AskOption, AskOutcome, AskQuestion, PendingApproval, ServerCapability } from "@mlpal/harness-protocol";
|
|
2
3
|
/** One rendered row of a session's transcript. Built by the reducer from the wire events. */
|
|
3
4
|
export type TranscriptItem = {
|
|
4
5
|
kind: "user";
|
|
@@ -59,28 +60,6 @@ export interface PendingPermission {
|
|
|
59
60
|
toolName: string;
|
|
60
61
|
input: Record<string, unknown>;
|
|
61
62
|
}
|
|
62
|
-
/** The AskUserQuestion schema (harness tools/builtin/ask.ts), mirrored here until the wire
|
|
63
|
-
* protocol carries it. `question_request` / `question_response` land with serve yodex/2. */
|
|
64
|
-
export interface AskOption {
|
|
65
|
-
label: string;
|
|
66
|
-
description?: string;
|
|
67
|
-
preview?: string;
|
|
68
|
-
}
|
|
69
|
-
export interface AskQuestion {
|
|
70
|
-
question: string;
|
|
71
|
-
header?: string;
|
|
72
|
-
multiSelect?: boolean;
|
|
73
|
-
options?: AskOption[];
|
|
74
|
-
}
|
|
75
|
-
export interface AskAnswer {
|
|
76
|
-
question: string;
|
|
77
|
-
answers: string[];
|
|
78
|
-
note?: string;
|
|
79
|
-
}
|
|
80
|
-
export interface AskOutcome {
|
|
81
|
-
declined: boolean;
|
|
82
|
-
answers: AskAnswer[];
|
|
83
|
-
}
|
|
84
63
|
export interface PendingQuestion {
|
|
85
64
|
id: string;
|
|
86
65
|
sessionId: string;
|
|
@@ -90,6 +69,15 @@ export type ConnectionState = "connecting" | "connected" | "reconnecting" | "clo
|
|
|
90
69
|
export interface SessionState {
|
|
91
70
|
connection: ConnectionState;
|
|
92
71
|
protocol?: string;
|
|
72
|
+
/** What the server serves beyond yodex/1 (ready.capabilities); empty on a yodex/1 server. */
|
|
73
|
+
capabilities: ServerCapability[];
|
|
74
|
+
/** The server's HOP and workspace root, from ready. */
|
|
75
|
+
hop?: string;
|
|
76
|
+
rootCwd?: string;
|
|
77
|
+
/** A run is streaming on this session on another connection (load_session.live). */
|
|
78
|
+
liveElsewhere?: boolean;
|
|
79
|
+
/** The last run parked at the safety edge; `approve` resumes it. */
|
|
80
|
+
pendingApproval?: PendingApproval;
|
|
93
81
|
sessionId?: string;
|
|
94
82
|
model?: string;
|
|
95
83
|
cwd?: string;
|
|
@@ -114,17 +102,8 @@ export interface SessionState {
|
|
|
114
102
|
/** The last transport or server error, cleared on the next run. */
|
|
115
103
|
error?: string;
|
|
116
104
|
}
|
|
117
|
-
/**
|
|
118
|
-
|
|
119
|
-
export type IncomingMessage = ServerMessage | {
|
|
120
|
-
type: "question_request";
|
|
121
|
-
id: string;
|
|
122
|
-
sessionId: string;
|
|
123
|
-
questions: AskQuestion[];
|
|
124
|
-
} | {
|
|
125
|
-
type: "question_cleared";
|
|
126
|
-
id: string;
|
|
127
|
-
};
|
|
105
|
+
/** The server stream (yodex/2, additive over yodex/1). Unknown messages are ignored. */
|
|
106
|
+
export type IncomingMessage = ServerMessage;
|
|
128
107
|
export type SessionAction = {
|
|
129
108
|
type: "connection";
|
|
130
109
|
state: ConnectionState;
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import type { SessionSummary } from "@mlpal/harness-protocol";
|
|
2
|
-
/** A
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
hop?: string;
|
|
6
|
-
cwd?: string;
|
|
7
|
-
relCwd?: string;
|
|
8
|
-
projectName?: string;
|
|
9
|
-
lastMessagePreview?: string;
|
|
10
|
-
pendingQuestion?: boolean;
|
|
11
|
-
}
|
|
2
|
+
/** A SessionSummary; the yodex/2 fields (hop, relCwd, projectName, …) are present when the
|
|
3
|
+
* server claims "sessions_v2". */
|
|
4
|
+
export type SessionRow = SessionSummary;
|
|
12
5
|
export declare function groupSessions(rows: SessionRow[]): Array<{
|
|
13
6
|
project: string;
|
|
14
7
|
rows: SessionRow[];
|
package/dist/index.js
CHANGED
|
@@ -165,6 +165,7 @@ import { addUsage, emptyUsage, HUMAN } from "@mlpal/harness-protocol";
|
|
|
165
165
|
function initialState() {
|
|
166
166
|
return {
|
|
167
167
|
connection: "connecting",
|
|
168
|
+
capabilities: [],
|
|
168
169
|
items: [],
|
|
169
170
|
running: false,
|
|
170
171
|
usageTotal: emptyUsage(),
|
|
@@ -297,7 +298,7 @@ function reduce(state, action) {
|
|
|
297
298
|
case "connection":
|
|
298
299
|
return { ...state, connection: action.state };
|
|
299
300
|
case "clear":
|
|
300
|
-
return { ...initialState(), connection: state.connection, protocol: state.protocol, sessions: state.sessions, models: state.models, skills: state.skills };
|
|
301
|
+
return { ...initialState(), connection: state.connection, protocol: state.protocol, capabilities: state.capabilities, hop: state.hop, rootCwd: state.rootCwd, sessions: state.sessions, models: state.models, skills: state.skills };
|
|
301
302
|
case "error":
|
|
302
303
|
return { ...state, error: action.message };
|
|
303
304
|
case "local_user":
|
|
@@ -306,7 +307,7 @@ function reduce(state, action) {
|
|
|
306
307
|
items: [...state.items, { kind: "user", id: nextId("u"), text: action.text, author: HUMAN, ts: action.ts, ...action.blocks?.length ? { blocks: action.blocks } : {} }]
|
|
307
308
|
};
|
|
308
309
|
case "run_started":
|
|
309
|
-
return { ...state, running: true, runStartedAt: action.at, activity: "Thinking", error: undefined, lastResult: undefined, ...action.sessionId ? { sessionId: action.sessionId } : {} };
|
|
310
|
+
return { ...state, running: true, runStartedAt: action.at, activity: "Thinking", error: undefined, lastResult: undefined, pendingApproval: undefined, ...action.sessionId ? { sessionId: action.sessionId } : {} };
|
|
310
311
|
case "permission_answered":
|
|
311
312
|
return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };
|
|
312
313
|
case "question_answered":
|
|
@@ -321,25 +322,38 @@ function reduce(state, action) {
|
|
|
321
322
|
const m = action.message;
|
|
322
323
|
switch (m.type) {
|
|
323
324
|
case "ready":
|
|
324
|
-
return { ...state, connection: "connected", protocol: m.protocol };
|
|
325
|
+
return { ...state, connection: "connected", protocol: m.protocol, capabilities: m.capabilities ?? [], hop: m.hop, rootCwd: m.cwd };
|
|
325
326
|
case "event":
|
|
326
327
|
return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);
|
|
327
328
|
case "permission_request":
|
|
328
329
|
return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input }] };
|
|
329
330
|
case "question_request":
|
|
330
331
|
return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };
|
|
331
|
-
case "question_cleared":
|
|
332
|
-
return state.pendingQuestion?.id === m.id ? { ...state, pendingQuestion: undefined } : state;
|
|
333
332
|
case "sessions":
|
|
334
333
|
return { ...state, sessions: m.sessions };
|
|
335
334
|
case "models":
|
|
336
335
|
return { ...state, models: m.models };
|
|
337
336
|
case "skills":
|
|
338
337
|
return { ...state, skills: m.skills };
|
|
339
|
-
case "session_history":
|
|
340
|
-
|
|
338
|
+
case "session_history": {
|
|
339
|
+
const s = reduce(state, { type: "history", sessionId: m.sessionId, messages: m.messages });
|
|
340
|
+
return {
|
|
341
|
+
...s,
|
|
342
|
+
pendingQuestion: m.pendingQuestion ? { id: m.pendingQuestion.id, sessionId: m.sessionId, questions: m.pendingQuestion.questions } : undefined,
|
|
343
|
+
pendingApproval: m.pendingApproval,
|
|
344
|
+
liveElsewhere: m.live ?? false
|
|
345
|
+
};
|
|
346
|
+
}
|
|
341
347
|
case "done":
|
|
342
|
-
return {
|
|
348
|
+
return {
|
|
349
|
+
...state,
|
|
350
|
+
running: false,
|
|
351
|
+
activity: undefined,
|
|
352
|
+
pendingPermissions: [],
|
|
353
|
+
sessionId: m.sessionId,
|
|
354
|
+
...m.pendingApproval ? { pendingApproval: m.pendingApproval } : {},
|
|
355
|
+
...m.usage && !state.lastResult ? { usageTotal: addUsage(state.usageTotal, m.usage) } : {}
|
|
356
|
+
};
|
|
343
357
|
case "error":
|
|
344
358
|
return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: "error", id: nextId("e"), message: m.message, ts: new Date().toISOString() }] };
|
|
345
359
|
default:
|
|
@@ -407,17 +421,17 @@ function useYodexSession(options) {
|
|
|
407
421
|
}, []);
|
|
408
422
|
const run = useCallback((text, attachments = [], runOptions = {}) => {
|
|
409
423
|
const blocks = attachments.map((a) => ({ type: "image", source: { type: "base64", media_type: a.mediaType, data: a.data } }));
|
|
410
|
-
if (blocks.length && state.
|
|
411
|
-
dispatch({ type: "error", message: "This server
|
|
424
|
+
if (blocks.length && !state.capabilities.includes("attachments")) {
|
|
425
|
+
dispatch({ type: "error", message: "This server does not accept image attachments; the message was not sent." });
|
|
412
426
|
return;
|
|
413
427
|
}
|
|
414
428
|
guard(() => {
|
|
415
429
|
const sessionId = sessionIdRef.current;
|
|
416
430
|
dispatch({ type: "local_user", text, ts: new Date().toISOString(), blocks });
|
|
417
431
|
dispatch({ type: "run_started", sessionId, at: Date.now() });
|
|
418
|
-
client.run(text, { ...sessionId ? { sessionId } : {}, ...options.run, ...runOptions });
|
|
432
|
+
client.run(text, { ...sessionId ? { sessionId } : {}, ...options.run, ...runOptions, ...blocks.length ? { blocks } : {} });
|
|
419
433
|
});
|
|
420
|
-
}, [client, guard, options.run, state.
|
|
434
|
+
}, [client, guard, options.run, state.capabilities]);
|
|
421
435
|
const stop = useCallback(() => guard(() => client.interrupt()), [client, guard]);
|
|
422
436
|
const allow = useCallback((id) => guard(() => {
|
|
423
437
|
client.respondPermission(id, "allow");
|
|
@@ -1328,8 +1342,9 @@ function SessionList({ sessions, selectedId, onSelect, onNew, className }) {
|
|
|
1328
1342
|
className: "flex items-center gap-2",
|
|
1329
1343
|
children: [
|
|
1330
1344
|
/* @__PURE__ */ jsx9("span", {
|
|
1331
|
-
className: cn("h-2 w-2 shrink-0 rounded-full", s.status === "active" ? "bg-success" : s.status === "listening" ? "bg-info" : s.status === "error" ? "bg-destructive" : "bg-muted-foreground/40"),
|
|
1332
|
-
"aria-label": s.status
|
|
1345
|
+
className: cn("h-2 w-2 shrink-0 rounded-full", s.live ? "animate-pulse bg-accent" : s.status === "active" ? "bg-success" : s.status === "listening" ? "bg-info" : s.status === "error" ? "bg-destructive" : "bg-muted-foreground/40"),
|
|
1346
|
+
"aria-label": s.live ? "working" : s.status,
|
|
1347
|
+
"data-live": s.live ? "true" : undefined
|
|
1333
1348
|
}),
|
|
1334
1349
|
/* @__PURE__ */ jsx9("span", {
|
|
1335
1350
|
className: "min-w-0 flex-1 truncate font-medium",
|
|
@@ -1579,5 +1594,5 @@ export {
|
|
|
1579
1594
|
AssistantMessage
|
|
1580
1595
|
};
|
|
1581
1596
|
|
|
1582
|
-
//# debugId=
|
|
1597
|
+
//# debugId=20955FCF1BAF8E9564756E2164756E21
|
|
1583
1598
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/client/client.ts", "../src/client/reducer.ts", "../src/client/useYodexSession.ts", "../src/components/Transcript.tsx", "../src/components/AssistantMessage.tsx", "../src/components/cn.ts", "../src/components/PlanChecklist.tsx", "../src/components/ToolCall.tsx", "../src/components/DiffView.tsx", "../src/components/PermissionPrompt.tsx", "../src/components/QuestionForm.tsx", "../src/components/RunStatus.tsx", "../src/components/SessionList.tsx", "../src/components/Composer.tsx"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { ClientMessage, ServerMessage } from \"@mlpal/harness-protocol\";\nimport type { AskOutcome, ConnectionState, IncomingMessage } from \"./types\";\n\n/** The subset of the WebSocket API the client uses, so tests can inject a fake. */\nexport interface SocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n onopen: ((ev: unknown) => void) | null;\n onclose: ((ev: unknown) => void) | null;\n onerror: ((ev: unknown) => void) | null;\n onmessage: ((ev: { data: unknown }) => void) | null;\n}\nexport type SocketFactory = (url: string) => SocketLike;\n\nexport interface RunOptions {\n sessionId?: string;\n model?: string;\n mode?: string;\n /** yodex/2:
|
|
6
|
-
"import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") return state;\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\":\n return { ...state, connection: action.state };\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol };\n case \"event\":\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input }] };\n case \"question_request\":\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"question_cleared\":\n return state.pendingQuestion?.id === m.id ? { ...state, pendingQuestion: undefined } : state;\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\":\n return reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n case \"done\":\n return { ...state, running: false, activity: undefined, pendingPermissions: [], sessionId: m.sessionId };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
|
|
7
|
-
"import { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport type { ContentBlock } from \"@mlpal/harness-protocol\";\nimport { type RunOptions, type SocketFactory, YodexClient } from \"./client\";\nimport { initialState, reduce } from \"./reducer\";\nimport type { AskOutcome, SessionState } from \"./types\";\n\nexport interface UseYodexSessionOptions {\n url: string;\n token?: string;\n /** Load this session's history on connect and run turns against it. */\n sessionId?: string;\n /** Default run options (model, mode, hop, cwd) applied to every turn. */\n run?: RunOptions;\n autoConnect?: boolean;\n socketFactory?: SocketFactory;\n}\n\nexport interface Attachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n}\n\nexport interface YodexSession {\n state: SessionState;\n client: YodexClient;\n /** Send a turn. Attachments ride as image blocks once the server speaks yodex/2. */\n run: (text: string, attachments?: Attachment[], options?: RunOptions) => void;\n stop: () => void;\n allow: (permissionId: string) => void;\n deny: (permissionId: string, reason?: string) => void;\n answer: (questionId: string, outcome: AskOutcome) => void;\n approve: (decision: \"allow\" | \"deny\", reason?: string) => void;\n loadSession: (sessionId: string) => Promise<void>;\n refreshSessions: () => Promise<void>;\n refreshModels: () => Promise<void>;\n newSession: () => void;\n}\n\n/** One session view over one socket: connect, replay, stream, answer. */\nexport function useYodexSession(options: UseYodexSessionOptions): YodexSession {\n const [state, dispatch] = useReducer(reduce, undefined, initialState);\n const sessionIdRef = useRef<string | undefined>(options.sessionId);\n const client = useMemo(\n () =>\n new YodexClient({\n url: options.url,\n token: options.token,\n socketFactory: options.socketFactory,\n onState: (s) => dispatch({ type: \"connection\", state: s }),\n onMessage: (m) => {\n dispatch({ type: \"server\", message: m });\n if (m.type === \"ready\" && sessionIdRef.current) {\n client.loadSession(sessionIdRef.current).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }\n },\n }),\n // The socket outlives renders; a URL or token change means a new client.\n [options.url, options.token, options.socketFactory],\n );\n\n useEffect(() => {\n if (options.autoConnect === false) return;\n client.connect();\n return () => client.close();\n }, [client, options.autoConnect]);\n\n useEffect(() => {\n sessionIdRef.current = state.sessionId ?? options.sessionId;\n }, [state.sessionId, options.sessionId]);\n\n const guard = useCallback(\n (fn: () => void) => {\n try {\n fn();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [],\n );\n\n const run = useCallback(\n (text: string, attachments: Attachment[] = [], runOptions: RunOptions = {}) => {\n const blocks: ContentBlock[] = attachments.map((a) => ({ type: \"image\", source: { type: \"base64\", media_type: a.mediaType
|
|
5
|
+
"import type { ClientMessage, ContentBlock, ServerMessage } from \"@mlpal/harness-protocol\";\nimport type { AskOutcome, ConnectionState, IncomingMessage } from \"./types\";\n\n/** The subset of the WebSocket API the client uses, so tests can inject a fake. */\nexport interface SocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n onopen: ((ev: unknown) => void) | null;\n onclose: ((ev: unknown) => void) | null;\n onerror: ((ev: unknown) => void) | null;\n onmessage: ((ev: { data: unknown }) => void) | null;\n}\nexport type SocketFactory = (url: string) => SocketLike;\n\nexport interface RunOptions {\n sessionId?: string;\n model?: string;\n mode?: string;\n /** yodex/2: the HOP for this run (must be the server's own unless it claims \"hop_per_run\"),\n * the working directory under the workspace root, and attachments (\"attachments\"). */\n hop?: string;\n cwd?: string;\n blocks?: ContentBlock[];\n}\n\n/** Outgoing messages: the protocol's ClientMessage (yodex/2, additive over yodex/1). */\nexport type OutgoingMessage = ClientMessage;\n\nexport interface YodexClientOptions {\n /** ws:// or wss:// URL of `yodex serve`'s /ws endpoint. */\n url: string;\n /** Appended as ?token= when the proxy does not inject Authorization on the upgrade. */\n token?: string;\n onMessage: (m: IncomingMessage) => void;\n onState?: (s: ConnectionState) => void;\n socketFactory?: SocketFactory;\n /** Reconnect backoff bounds, ms. */\n backoffMs?: { min: number; max: number };\n requestTimeoutMs?: number;\n /** Injected for deterministic tests. */\n setTimer?: (fn: () => void, ms: number) => unknown;\n clearTimer?: (h: unknown) => void;\n random?: () => number;\n}\n\ninterface Pending {\n resolve: (m: ServerMessage) => void;\n reject: (e: Error) => void;\n timer: unknown;\n}\n\n/**\n * A yodex serve client: one socket per session view, reconnect with jittered exponential\n * backoff, and request-id correlation for the list_* / load_session round-trips. Everything\n * streamed (events, permission and question requests, done, error) goes to `onMessage`;\n * the reducer in ./reducer turns it into view state.\n */\nexport class YodexClient {\n private socket: SocketLike | null = null;\n private closedByUser = false;\n private attempt = 0;\n private reconnectHandle: unknown = null;\n private readonly pending = new Map<string, Pending>();\n private readonly opts: Required<Pick<YodexClientOptions, \"backoffMs\" | \"requestTimeoutMs\" | \"socketFactory\" | \"setTimer\" | \"clearTimer\" | \"random\">> & YodexClientOptions;\n private seq = 0;\n state: ConnectionState = \"closed\";\n\n constructor(options: YodexClientOptions) {\n this.opts = {\n backoffMs: { min: 500, max: 10_000 },\n requestTimeoutMs: 15_000,\n socketFactory: (url) => new WebSocket(url) as unknown as SocketLike,\n setTimer: (fn, ms) => setTimeout(fn, ms),\n clearTimer: (h) => clearTimeout(h as ReturnType<typeof setTimeout>),\n random: Math.random,\n ...options,\n };\n }\n\n get url(): string {\n const u = this.opts.url;\n if (!this.opts.token) return u;\n return `${u}${u.includes(\"?\") ? \"&\" : \"?\"}token=${encodeURIComponent(this.opts.token)}`;\n }\n\n connect(): void {\n this.closedByUser = false;\n this.open();\n }\n\n close(): void {\n this.closedByUser = true;\n if (this.reconnectHandle) this.opts.clearTimer(this.reconnectHandle);\n this.reconnectHandle = null;\n this.socket?.close();\n this.socket = null;\n this.failPending(new Error(\"client closed\"));\n this.setState(\"closed\");\n }\n\n private setState(s: ConnectionState): void {\n if (this.state === s) return;\n this.state = s;\n this.opts.onState?.(s);\n }\n\n private open(): void {\n this.setState(this.attempt === 0 ? \"connecting\" : \"reconnecting\");\n const ws = this.opts.socketFactory(this.url);\n this.socket = ws;\n ws.onopen = () => {\n this.attempt = 0;\n };\n ws.onmessage = (ev) => {\n let m: IncomingMessage;\n try {\n m = JSON.parse(String(ev.data)) as IncomingMessage;\n } catch {\n return;\n }\n if (m.type === \"ready\") this.setState(\"connected\");\n const rid = (m as { requestId?: string }).requestId;\n if (rid && this.pending.has(rid) && m.type !== \"done\") {\n const p = this.pending.get(rid)!;\n this.pending.delete(rid);\n this.opts.clearTimer(p.timer);\n p.resolve(m as ServerMessage);\n }\n this.opts.onMessage(m);\n };\n ws.onerror = () => {\n // onclose follows; the reconnect decision lives there.\n };\n ws.onclose = () => {\n if (this.socket !== ws) return;\n this.socket = null;\n this.failPending(new Error(\"connection lost\"));\n if (this.closedByUser) return;\n this.scheduleReconnect();\n };\n }\n\n private scheduleReconnect(): void {\n const { min, max } = this.opts.backoffMs;\n const base = Math.min(max, min * 2 ** this.attempt);\n const delay = Math.round(base * (0.5 + this.opts.random() * 0.5));\n this.attempt += 1;\n this.setState(\"reconnecting\");\n this.reconnectHandle = this.opts.setTimer(() => {\n this.reconnectHandle = null;\n if (!this.closedByUser) this.open();\n }, delay);\n }\n\n private failPending(e: Error): void {\n for (const p of this.pending.values()) {\n this.opts.clearTimer(p.timer);\n p.reject(e);\n }\n this.pending.clear();\n }\n\n get connected(): boolean {\n return this.state === \"connected\" && this.socket !== null;\n }\n\n send(m: OutgoingMessage): void {\n if (!this.socket || this.state !== \"connected\") throw new Error(\"not connected\");\n this.socket.send(JSON.stringify(m));\n }\n\n private requestId(): string {\n return `${Date.now().toString(36)}-${(++this.seq).toString(36)}`;\n }\n\n /** Send a request carrying a requestId and resolve with the server's correlated reply. */\n request<T extends ServerMessage[\"type\"]>(m: OutgoingMessage & { requestId: string }, _expect: T): Promise<Extract<ServerMessage, { type: T }>> {\n return new Promise((resolve, reject) => {\n const timer = this.opts.setTimer(() => {\n this.pending.delete(m.requestId);\n reject(new Error(`${m.type}: no reply within ${this.opts.requestTimeoutMs} ms`));\n }, this.opts.requestTimeoutMs);\n this.pending.set(m.requestId, { resolve: (r) => resolve(r as Extract<ServerMessage, { type: T }>), reject, timer });\n try {\n this.send(m);\n } catch (e) {\n this.pending.delete(m.requestId);\n this.opts.clearTimer(timer);\n reject(e as Error);\n }\n });\n }\n\n /** Start a turn. Returns the requestId the matching `done` will carry. */\n run(prompt: string, options: RunOptions = {}): string {\n const requestId = this.requestId();\n this.send({ type: \"run\", requestId, prompt, ...options });\n return requestId;\n }\n\n interrupt(): void {\n this.send({ type: \"interrupt\" });\n }\n\n sendPeer(sessionId: string, text: string): void {\n this.send({ type: \"send\", sessionId, text });\n }\n\n respondPermission(id: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"permission_response\", id, decision, ...(reason ? { reason } : {}) });\n }\n\n respondQuestion(id: string, outcome: AskOutcome): void {\n this.send({ type: \"question_response\", id, outcome });\n }\n\n respondApproval(sessionId: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"approval_response\", sessionId, decision, ...(reason ? { reason } : {}) });\n }\n\n listSessions() {\n return this.request({ type: \"list_sessions\", requestId: this.requestId() }, \"sessions\");\n }\n listModels() {\n return this.request({ type: \"list_models\", requestId: this.requestId() }, \"models\");\n }\n listSkills() {\n return this.request({ type: \"list_skills\", requestId: this.requestId() }, \"skills\");\n }\n loadSession(sessionId: string) {\n return this.request({ type: \"load_session\", requestId: this.requestId(), sessionId }, \"session_history\");\n }\n}\n",
|
|
6
|
+
"import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n capabilities: [],\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") return state;\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\":\n return { ...state, connection: action.state };\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, capabilities: state.capabilities, hop: state.hop, rootCwd: state.rootCwd, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, pendingApproval: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol, capabilities: m.capabilities ?? [], hop: m.hop, rootCwd: m.cwd };\n case \"event\":\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input }] };\n case \"question_request\":\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\": {\n const s = reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n return {\n ...s,\n pendingQuestion: m.pendingQuestion ? { id: m.pendingQuestion.id, sessionId: m.sessionId, questions: m.pendingQuestion.questions } : undefined,\n pendingApproval: m.pendingApproval,\n liveElsewhere: m.live ?? false,\n };\n }\n case \"done\":\n return {\n ...state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n sessionId: m.sessionId,\n ...(m.pendingApproval ? { pendingApproval: m.pendingApproval } : {}),\n ...(m.usage && !state.lastResult ? { usageTotal: addUsage(state.usageTotal, m.usage) } : {}),\n };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
|
|
7
|
+
"import { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport type { ContentBlock } from \"@mlpal/harness-protocol\";\nimport { type RunOptions, type SocketFactory, YodexClient } from \"./client\";\nimport { initialState, reduce } from \"./reducer\";\nimport type { AskOutcome, SessionState } from \"./types\";\n\nexport interface UseYodexSessionOptions {\n url: string;\n token?: string;\n /** Load this session's history on connect and run turns against it. */\n sessionId?: string;\n /** Default run options (model, mode, hop, cwd) applied to every turn. */\n run?: RunOptions;\n autoConnect?: boolean;\n socketFactory?: SocketFactory;\n}\n\nexport interface Attachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n}\n\nexport interface YodexSession {\n state: SessionState;\n client: YodexClient;\n /** Send a turn. Attachments ride as image blocks once the server speaks yodex/2. */\n run: (text: string, attachments?: Attachment[], options?: RunOptions) => void;\n stop: () => void;\n allow: (permissionId: string) => void;\n deny: (permissionId: string, reason?: string) => void;\n answer: (questionId: string, outcome: AskOutcome) => void;\n approve: (decision: \"allow\" | \"deny\", reason?: string) => void;\n loadSession: (sessionId: string) => Promise<void>;\n refreshSessions: () => Promise<void>;\n refreshModels: () => Promise<void>;\n newSession: () => void;\n}\n\n/** One session view over one socket: connect, replay, stream, answer. */\nexport function useYodexSession(options: UseYodexSessionOptions): YodexSession {\n const [state, dispatch] = useReducer(reduce, undefined, initialState);\n const sessionIdRef = useRef<string | undefined>(options.sessionId);\n const client = useMemo(\n () =>\n new YodexClient({\n url: options.url,\n token: options.token,\n socketFactory: options.socketFactory,\n onState: (s) => dispatch({ type: \"connection\", state: s }),\n onMessage: (m) => {\n dispatch({ type: \"server\", message: m });\n if (m.type === \"ready\" && sessionIdRef.current) {\n client.loadSession(sessionIdRef.current).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }\n },\n }),\n // The socket outlives renders; a URL or token change means a new client.\n [options.url, options.token, options.socketFactory],\n );\n\n useEffect(() => {\n if (options.autoConnect === false) return;\n client.connect();\n return () => client.close();\n }, [client, options.autoConnect]);\n\n useEffect(() => {\n sessionIdRef.current = state.sessionId ?? options.sessionId;\n }, [state.sessionId, options.sessionId]);\n\n const guard = useCallback(\n (fn: () => void) => {\n try {\n fn();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [],\n );\n\n const run = useCallback(\n (text: string, attachments: Attachment[] = [], runOptions: RunOptions = {}) => {\n const blocks: ContentBlock[] = attachments.map((a) => ({ type: \"image\", source: { type: \"base64\", media_type: a.mediaType, data: a.data } }));\n if (blocks.length && !state.capabilities.includes(\"attachments\")) {\n dispatch({ type: \"error\", message: \"This server does not accept image attachments; the message was not sent.\" });\n return;\n }\n guard(() => {\n const sessionId = sessionIdRef.current;\n dispatch({ type: \"local_user\", text, ts: new Date().toISOString(), blocks });\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.run(text, { ...(sessionId ? { sessionId } : {}), ...options.run, ...runOptions, ...(blocks.length ? { blocks } : {}) });\n });\n },\n [client, guard, options.run, state.capabilities],\n );\n\n const stop = useCallback(() => guard(() => client.interrupt()), [client, guard]);\n const allow = useCallback(\n (id: string) =>\n guard(() => {\n client.respondPermission(id, \"allow\");\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const deny = useCallback(\n (id: string, reason?: string) =>\n guard(() => {\n client.respondPermission(id, \"deny\", reason);\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const answer = useCallback(\n (id: string, outcome: AskOutcome) =>\n guard(() => {\n client.respondQuestion(id, outcome);\n dispatch({ type: \"question_answered\", id });\n }),\n [client, guard],\n );\n const approve = useCallback(\n (decision: \"allow\" | \"deny\", reason?: string) =>\n guard(() => {\n const sessionId = sessionIdRef.current;\n if (!sessionId) throw new Error(\"no session to approve\");\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.respondApproval(sessionId, decision, reason);\n }),\n [client, guard],\n );\n const loadSession = useCallback(\n async (sessionId: string) => {\n sessionIdRef.current = sessionId;\n dispatch({ type: \"clear\" });\n try {\n await client.loadSession(sessionId);\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [client],\n );\n const refreshSessions = useCallback(async () => {\n try {\n await client.listSessions();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const refreshModels = useCallback(async () => {\n try {\n await client.listModels();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const newSession = useCallback(() => {\n sessionIdRef.current = undefined;\n dispatch({ type: \"clear\" });\n }, []);\n\n return { state, client, run, stop, allow, deny, answer, approve, loadSession, refreshSessions, refreshModels, newSession };\n}\n",
|
|
8
8
|
"import { useEffect, useRef } from \"react\";\nimport type { TranscriptItem } from \"../client/types\";\nimport { AssistantMessage } from \"./AssistantMessage\";\nimport { cn } from \"./cn\";\nimport { PlanChecklist } from \"./PlanChecklist\";\nimport { ToolCall } from \"./ToolCall\";\nimport { resultLabel, formatTokens } from \"../client/reducer\";\n\nexport interface TranscriptProps {\n items: TranscriptItem[];\n /** Keep the view pinned to the bottom while new rows arrive, unless the reader scrolled up. */\n autoScroll?: boolean;\n onOpenFile?: (path: string) => void;\n /** Rendered after the last row: pending prompts, the status line. */\n footer?: React.ReactNode;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nexport function Transcript({ items, autoScroll = true, onOpenFile, footer, emptyState, className }: TranscriptProps) {\n const ref = useRef<HTMLDivElement>(null);\n const pinned = useRef(true);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const onScroll = () => {\n pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 48;\n };\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => el.removeEventListener(\"scroll\", onScroll);\n }, []);\n useEffect(() => {\n const el = ref.current;\n if (el && autoScroll && pinned.current) el.scrollTop = el.scrollHeight;\n });\n return (\n <div ref={ref} className={cn(\"yx-transcript flex-1 overflow-y-auto px-4 py-3\", className)} role=\"log\" aria-live=\"polite\">\n <div className=\"mx-auto flex w-full max-w-3xl flex-col gap-3\">\n {items.length === 0 && emptyState}\n {items.map((it) => {\n switch (it.kind) {\n case \"user\":\n return (\n <div key={it.id} className={cn(\"flex\", it.author.type === \"human\" ? \"justify-end\" : \"justify-start\")} data-author={it.author.type}>\n <div className={cn(\"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl px-4 py-2 text-[15px] leading-6\", it.author.type === \"human\" ? \"rounded-br-md bg-primary text-primary-foreground\" : \"rounded-bl-md border border-border bg-card\")}>\n {it.author.type !== \"human\" && <div className=\"mb-1 text-[11px] text-muted-foreground\">{it.author.displayName ?? it.author.type}</div>}\n {it.blocks?.some((b) => b.type === \"image\") && <div className=\"mb-1 text-[11px] opacity-80\">[image]</div>}\n {it.text}\n </div>\n </div>\n );\n case \"assistant\":\n return <AssistantMessage key={it.id} text={it.text} live={it.live} />;\n case \"tool\":\n return <ToolCall key={it.id} item={it} onOpenFile={onOpenFile} />;\n case \"plan\":\n return <PlanChecklist key=\"plan\" items={it.items} />;\n case \"result\": {\n const { label, tone } = resultLabel(it.result);\n return (\n <div key={it.id} className={cn(\"flex items-center gap-2 text-[12px] text-muted-foreground\", tone === \"bad\" && \"text-destructive\")} data-subtype={it.result.subtype}>\n <span>{label}</span>\n <span>·</span>\n <span className=\"font-mono tabular-nums\">\n {it.result.numTurns} step{it.result.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(it.result.usage)}\n </span>\n </div>\n );\n }\n case \"error\":\n return (\n <div key={it.id} role=\"alert\" className=\"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-[13px] text-destructive\">\n {it.message}\n </div>\n );\n case \"compact\":\n return (\n <div key={it.id} className=\"text-center text-[11px] text-muted-foreground\">\n — context compacted ({it.replacedMessages} earlier messages summarised) —\n </div>\n );\n }\n })}\n {footer}\n </div>\n </div>\n );\n}\n",
|
|
9
9
|
"import Markdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { cn } from \"./cn\";\n\nconst plugins = [remarkGfm];\n\n/**\n * Assistant prose as sanitised markdown: GFM tables and task lists, raw HTML skipped, links\n * opened in a new tab. `live` marks a still-streaming turn.\n */\nexport function AssistantMessage({ text, live, className }: { text: string; live?: boolean; className?: string }) {\n return (\n <div className={cn(\"yx-assistant prose prose-sm max-w-none break-words text-foreground\", live && \"yx-live\", className)} data-live={live ? \"true\" : undefined}>\n <Markdown\n remarkPlugins={plugins}\n skipHtml\n components={{\n a: ({ node: _n, ...props }) => <a {...props} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-info underline underline-offset-2\" />,\n pre: ({ node: _n, ...props }) => <pre {...props} className=\"overflow-x-auto rounded-md border border-border bg-card p-3 font-mono text-[12.5px] leading-5\" />,\n code: ({ node: _n, className: cls, ...props }) =>\n cls ? <code {...props} className={cls} /> : <code {...props} className=\"rounded bg-muted px-1 py-0.5 font-mono text-[0.9em]\" />,\n table: ({ node: _n, ...props }) => (\n <div className=\"overflow-x-auto\">\n <table {...props} className=\"my-2 w-full border-collapse text-sm\" />\n </div>\n ),\n th: ({ node: _n, ...props }) => <th {...props} className=\"border border-border bg-muted px-2 py-1 text-left font-medium\" />,\n td: ({ node: _n, ...props }) => <td {...props} className=\"border border-border px-2 py-1 align-top\" />,\n }}\n >\n {text}\n </Markdown>\n </div>\n );\n}\n",
|
|
10
10
|
"import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n",
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"import { useEffect } from \"react\";\nimport { ShieldAlert } from \"lucide-react\";\nimport type { PendingPermission } from \"../client/types\";\nimport { cn } from \"./cn\";\n\nexport function permissionSummary(p: PendingPermission): string {\n const v = p.input.command ?? p.input.file_path ?? p.input.path ?? p.input.url;\n if (typeof v === \"string\") return v;\n const s = JSON.stringify(p.input);\n return s.length > 240 ? `${s.slice(0, 239)}…` : s;\n}\n\n/** The engine asks before a tool runs. Allow / Deny, with `a` / `d` as keys while focused. */\nexport function PermissionPrompt({ request, onAllow, onDeny, className }: { request: PendingPermission; onAllow: (id: string) => void; onDeny: (id: string, reason?: string) => void; className?: string }) {\n useEffect(() => {\n const key = (e: KeyboardEvent) => {\n const t = e.target as HTMLElement | null;\n if (t && (t.tagName === \"TEXTAREA\" || t.tagName === \"INPUT\" || t.isContentEditable)) return;\n if (e.key === \"a\") onAllow(request.id);\n else if (e.key === \"d\") onDeny(request.id);\n };\n document.addEventListener(\"keydown\", key);\n return () => document.removeEventListener(\"keydown\", key);\n }, [request.id, onAllow, onDeny]);\n return (\n <div role=\"alertdialog\" aria-labelledby={`perm-${request.id}`} className={cn(\"yx-permission rounded-md border border-warning/50 bg-card p-3 text-sm\", className)}>\n <div id={`perm-${request.id}`} className=\"mb-2 flex items-center gap-2 font-medium\">\n <ShieldAlert className=\"h-4 w-4 text-warning\" aria-hidden />\n Run <span className=\"font-mono\">{request.toolName}</span>?\n </div>\n <pre className=\"mb-3 overflow-x-auto whitespace-pre-wrap break-words rounded bg-muted p-2 font-mono text-[12.5px] leading-5\">{permissionSummary(request)}</pre>\n <div className=\"flex gap-2\">\n <button type=\"button\" onClick={() => onAllow(request.id)} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\">\n Allow <kbd className=\"ml-1 rounded bg-primary-foreground/20 px-1 text-[11px]\">a</kbd>\n </button>\n <button type=\"button\" onClick={() => onDeny(request.id)} className=\"min-h-11 flex-1 rounded-md border border-border bg-background px-4 font-medium hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\">\n Deny <kbd className=\"ml-1 rounded bg-muted px-1 text-[11px]\">d</kbd>\n </button>\n </div>\n </div>\n );\n}\n",
|
|
15
15
|
"import { useState } from \"react\";\nimport { HelpCircle, X } from \"lucide-react\";\nimport type { AskOutcome, AskQuestion, PendingQuestion } from \"../client/types\";\nimport { cn } from \"./cn\";\n\n/** What the person has picked or typed so far, per question index. */\nexport interface QuestionDraft {\n selected: string[][];\n notes: string[];\n}\n\nexport function emptyDraft(questions: AskQuestion[]): QuestionDraft {\n return { selected: questions.map(() => []), notes: questions.map(() => \"\") };\n}\n\n/** The ask.ts outcome: labels and free text per question; a closed form is `declined`. */\nexport function buildOutcome(questions: AskQuestion[], draft: QuestionDraft, declined = false): AskOutcome {\n if (declined) return { declined: true, answers: [] };\n return {\n declined: false,\n answers: questions.map((q, i) => {\n const picked = draft.selected[i] ?? [];\n const note = (draft.notes[i] ?? \"\").trim();\n const answers = picked.length ? picked : note ? [note] : [];\n return { question: q.question, answers, ...(picked.length && note ? { note } : {}) };\n }),\n };\n}\n\nfunction chip(q: AskQuestion, i: number): string {\n const h = (q.header ?? \"\").trim();\n return h || `Q${i + 1}`;\n}\n\n/**\n * AskUserQuestion as a form: one tab per question, single or multi select with optional\n * previews, free text, Submit or close-to-decline. The outcome shape mirrors harness ask.ts.\n */\nexport function QuestionForm({ request, onSubmit, onDecline, className }: { request: PendingQuestion; onSubmit: (id: string, outcome: AskOutcome) => void; onDecline: (id: string) => void; className?: string }) {\n const qs = request.questions;\n const [tab, setTab] = useState(0);\n const [draft, setDraft] = useState<QuestionDraft>(() => emptyDraft(qs));\n const q = qs[tab];\n if (!q) return null;\n const picked = draft.selected[tab] ?? [];\n const toggle = (label: string) => {\n setDraft((d) => {\n const selected = d.selected.slice();\n const cur = selected[tab] ?? [];\n selected[tab] = q.multiSelect ? (cur.includes(label) ? cur.filter((l) => l !== label) : [...cur, label]) : cur[0] === label ? [] : [label];\n return { ...d, selected };\n });\n };\n const setNote = (v: string) =>\n setDraft((d) => {\n const notes = d.notes.slice();\n notes[tab] = v;\n return { ...d, notes };\n });\n const answered = qs.map((_, i) => (draft.selected[i]?.length ?? 0) > 0 || (draft.notes[i] ?? \"\").trim().length > 0);\n const previewOf = (q.options ?? []).find((o) => picked[0] === o.label)?.preview;\n return (\n <div role=\"dialog\" aria-label=\"The agent has a question\" className={cn(\"yx-question rounded-md border border-info/50 bg-card text-sm\", className)}>\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <HelpCircle className=\"h-4 w-4 text-info\" aria-hidden />\n <span className=\"font-medium\">The agent needs your input</span>\n <button type=\"button\" onClick={() => onDecline(request.id)} aria-label=\"Close and keep talking\" className=\"ml-auto flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground hover:bg-muted\">\n <X className=\"h-4 w-4\" aria-hidden />\n </button>\n </div>\n {qs.length > 1 && (\n <div role=\"tablist\" className=\"flex gap-1 overflow-x-auto border-b border-border px-2 py-1\">\n {qs.map((qq, i) => (\n <button key={i} role=\"tab\" type=\"button\" aria-selected={i === tab} onClick={() => setTab(i)} className={cn(\"min-h-9 shrink-0 rounded-md px-3 text-[12px]\", i === tab ? \"bg-primary text-primary-foreground\" : \"bg-muted text-muted-foreground hover:bg-muted/70\", answered[i] && i !== tab && \"ring-1 ring-success\")}>\n {chip(qq, i)}\n </button>\n ))}\n </div>\n )}\n <div className=\"space-y-3 p-3\">\n <p className=\"font-medium\">{q.question}</p>\n {(q.options ?? []).length > 0 && (\n <div role={q.multiSelect ? \"group\" : \"radiogroup\"} className=\"space-y-2\">\n {(q.options ?? []).map((o) => {\n const on = picked.includes(o.label);\n return (\n <button key={o.label} type=\"button\" role={q.multiSelect ? \"checkbox\" : \"radio\"} aria-checked={on} onClick={() => toggle(o.label)} className={cn(\"flex min-h-11 w-full items-start gap-3 rounded-md border px-3 py-2 text-left hover:bg-muted/60\", on ? \"border-primary bg-muted\" : \"border-border\")}>\n <span className={cn(\"mt-1 h-4 w-4 shrink-0 border\", q.multiSelect ? \"rounded\" : \"rounded-full\", on ? \"border-primary bg-primary\" : \"border-muted-foreground\")} aria-hidden />\n <span className=\"min-w-0\">\n <span className=\"block font-medium\">{o.label}</span>\n {o.description && <span className=\"block text-muted-foreground\">{o.description}</span>}\n </span>\n </button>\n );\n })}\n </div>\n )}\n {previewOf && <pre className=\"overflow-x-auto rounded-md border border-border bg-muted p-2 font-mono text-[12px] leading-5\">{previewOf}</pre>}\n <label className=\"block\">\n <span className=\"mb-1 block text-[12px] text-muted-foreground\">{(q.options ?? []).length ? \"Add a note (optional)\" : \"Your answer\"}</span>\n <textarea value={draft.notes[tab] ?? \"\"} onChange={(e) => setNote(e.target.value)} rows={2} className=\"w-full rounded-md border border-border bg-input-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\" />\n </label>\n <div className=\"flex gap-2\">\n {tab < qs.length - 1 ? (\n <button type=\"button\" onClick={() => setTab(tab + 1)} className=\"min-h-11 flex-1 rounded-md border border-border px-4 font-medium hover:bg-muted\">\n Next\n </button>\n ) : null}\n <button type=\"button\" onClick={() => onSubmit(request.id, buildOutcome(qs, draft))} disabled={!answered.some(Boolean)} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90 disabled:opacity-50\">\n Submit\n </button>\n </div>\n </div>\n </div>\n );\n}\n",
|
|
16
16
|
"import { useEffect, useState } from \"react\";\nimport { AlertTriangle, Check, Loader2, Square } from \"lucide-react\";\nimport type { ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport type { ConnectionState } from \"../client/types\";\nimport { elapsedLabel, formatTokens, resultLabel } from \"../client/reducer\";\nimport { cn } from \"./cn\";\n\nexport interface RunStatusProps {\n running: boolean;\n startedAt?: number;\n activity?: string;\n lastResult?: ResultEvent;\n usageTotal?: Usage;\n connection?: ConnectionState;\n onStop?: () => void;\n onApprove?: (decision: \"allow\" | \"deny\") => void;\n className?: string;\n /** Injected clock for deterministic rendering. */\n now?: () => number;\n}\n\n/** One row: what the agent is doing with elapsed time while running; the result line after. */\nexport function RunStatus({ running, startedAt, activity, lastResult, usageTotal, connection, onStop, onApprove, className, now = Date.now }: RunStatusProps) {\n const [, tick] = useState(0);\n useEffect(() => {\n if (!running) return;\n const h = setInterval(() => tick((n) => n + 1), 1000);\n return () => clearInterval(h);\n }, [running]);\n if (connection && connection !== \"connected\") {\n return (\n <div className={cn(\"yx-status flex min-h-9 items-center gap-2 text-[12.5px] text-muted-foreground\", className)} role=\"status\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden />\n {connection === \"closed\" ? \"Disconnected\" : connection === \"reconnecting\" ? \"Reconnecting…\" : \"Connecting…\"}\n </div>\n );\n }\n if (running) {\n return (\n <div className={cn(\"yx-status flex min-h-9 items-center gap-2 text-[12.5px] text-muted-foreground\", className)} role=\"status\" aria-live=\"polite\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin text-accent\" aria-hidden />\n <span>{activity ?? \"Working\"}</span>\n {startedAt !== undefined && <span className=\"font-mono tabular-nums\">· {elapsedLabel(now() - startedAt)}</span>}\n {onStop && (\n <button type=\"button\" onClick={onStop} className=\"ml-auto flex min-h-9 items-center gap-1 rounded-md px-2 hover:bg-muted\" aria-label=\"Stop\">\n <Square className=\"h-3.5 w-3.5\" aria-hidden /> Stop\n </button>\n )}\n </div>\n );\n }\n if (!lastResult) return null;\n const { label, tone } = resultLabel(lastResult);\n const needsApproval = lastResult.subtype === \"needs_approval\";\n return (\n <div className={cn(\"yx-status flex min-h-9 flex-wrap items-center gap-2 text-[12.5px]\", className)} role=\"status\" data-subtype={lastResult.subtype}>\n {tone === \"ok\" ? <Check className=\"h-3.5 w-3.5 text-success\" aria-hidden /> : tone === \"bad\" ? <AlertTriangle className=\"h-3.5 w-3.5 text-destructive\" aria-hidden /> : <AlertTriangle className={cn(\"h-3.5 w-3.5\", tone === \"warn\" ? \"text-warning\" : \"text-muted-foreground\")} aria-hidden />}\n <span className={cn(tone === \"ok\" && \"text-success\", tone === \"bad\" && \"text-destructive\", tone === \"warn\" && \"text-warning\", tone === \"muted\" && \"text-muted-foreground\")}>{label}</span>\n <span className=\"text-muted-foreground\">·</span>\n <span className=\"font-mono tabular-nums text-muted-foreground\">\n {lastResult.numTurns} step{lastResult.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(usageTotal ?? lastResult.usage)}\n </span>\n {needsApproval && lastResult.pendingApproval && (\n <div className=\"basis-full rounded-md border border-warning/50 bg-card p-2\">\n <div className=\"mb-1 text-[12px] text-muted-foreground\">{lastResult.pendingApproval.reason}</div>\n <pre className=\"mb-2 overflow-x-auto whitespace-pre-wrap break-words font-mono text-[12px]\">{lastResult.pendingApproval.command}</pre>\n {onApprove && (\n <div className=\"flex gap-2\">\n <button type=\"button\" onClick={() => onApprove(\"allow\")} className=\"min-h-11 flex-1 rounded-md bg-primary px-3 font-medium text-primary-foreground\">\n Approve and continue\n </button>\n <button type=\"button\" onClick={() => onApprove(\"deny\")} className=\"min-h-11 flex-1 rounded-md border border-border px-3 font-medium hover:bg-muted\">\n Don't run it\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n",
|
|
17
|
-
"import { Plus } from \"lucide-react\";\nimport type { SessionSummary } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** A
|
|
17
|
+
"import { Plus } from \"lucide-react\";\nimport type { SessionSummary } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** A SessionSummary; the yodex/2 fields (hop, relCwd, projectName, …) are present when the\n * server claims \"sessions_v2\". */\nexport type SessionRow = SessionSummary;\n\nexport function groupSessions(rows: SessionRow[]): Array<{ project: string; rows: SessionRow[] }> {\n const groups = new Map<string, SessionRow[]>();\n for (const r of rows) {\n const key = r.projectName ?? \"\";\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(r);\n }\n return [...groups.entries()].map(([project, rows]) => ({ project, rows }));\n}\n\nfunction when(iso: string): string {\n const t = Date.parse(iso);\n if (Number.isNaN(t)) return \"\";\n const d = new Date(t);\n return `${d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" })} ${d.toLocaleTimeString(undefined, { hour: \"2-digit\", minute: \"2-digit\" })}`;\n}\n\nexport function SessionList({ sessions, selectedId, onSelect, onNew, className }: { sessions: SessionRow[]; selectedId?: string; onSelect: (sessionId: string) => void; onNew?: () => void; className?: string }) {\n const groups = groupSessions(sessions);\n return (\n <nav className={cn(\"yx-sessions text-sm\", className)} aria-label=\"Sessions\">\n {onNew && (\n <button type=\"button\" onClick={onNew} className=\"mb-2 flex min-h-11 w-full items-center gap-2 rounded-md border border-dashed border-border px-3 text-left hover:bg-muted\">\n <Plus className=\"h-4 w-4\" aria-hidden /> New session\n </button>\n )}\n {sessions.length === 0 && <p className=\"px-3 py-2 text-muted-foreground\">No sessions yet.</p>}\n {groups.map((g) => (\n <div key={g.project} className=\"mb-2\">\n {g.project && <div className=\"px-3 py-1 text-[11px] uppercase tracking-wide text-muted-foreground\">{g.project}</div>}\n <ul>\n {g.rows.map((s) => {\n const on = s.sessionId === selectedId;\n const title = s.name || s.title || s.lastMessagePreview || s.sessionId.slice(0, 8);\n return (\n <li key={s.sessionId}>\n <button type=\"button\" onClick={() => onSelect(s.sessionId)} aria-current={on ? \"true\" : undefined} className={cn(\"flex min-h-11 w-full flex-col gap-0.5 rounded-md px-3 py-2 text-left hover:bg-muted\", on && \"bg-muted\")} data-status={s.status}>\n <span className=\"flex items-center gap-2\">\n {/* live = a run is streaming right now (sessions_v2); the record's status otherwise. */}\n <span\n className={cn(\"h-2 w-2 shrink-0 rounded-full\", s.live ? \"animate-pulse bg-accent\" : s.status === \"active\" ? \"bg-success\" : s.status === \"listening\" ? \"bg-info\" : s.status === \"error\" ? \"bg-destructive\" : \"bg-muted-foreground/40\")}\n aria-label={s.live ? \"working\" : s.status}\n data-live={s.live ? \"true\" : undefined}\n />\n <span className=\"min-w-0 flex-1 truncate font-medium\">{title}</span>\n {s.pendingQuestion && <span className=\"shrink-0 rounded-full bg-warning px-1.5 text-[10px] font-medium text-warning-foreground\">question</span>}\n </span>\n <span className=\"flex gap-2 truncate text-[11.5px] text-muted-foreground\">\n {s.hop && <span className=\"truncate\">{s.hop}</span>}\n {s.relCwd && <span className=\"truncate\">{s.relCwd}</span>}\n <span className=\"ml-auto shrink-0 tabular-nums\">{when(s.updatedAt)}</span>\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </nav>\n );\n}\n",
|
|
18
18
|
"import { type ClipboardEvent, type DragEvent, type KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ArrowUp, ImagePlus, Square, X } from \"lucide-react\";\nimport { cn } from \"./cn\";\n\nexport interface ComposerAttachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n /** object URL for the thumbnail; revoked when removed. */\n previewUrl?: string;\n}\n\nexport interface HopOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface ComposerProps {\n onSubmit: (text: string, attachments: ComposerAttachment[]) => void;\n /** While a run is live the send button becomes Stop. */\n running?: boolean;\n onStop?: () => void;\n disabled?: boolean;\n /** Shown as a placeholder reason while disabled, e.g. \"Workspace is waking up\". */\n disabledReason?: string;\n placeholder?: string;\n hopOptions?: HopOption[];\n hop?: string;\n onHopChange?: (hop: string) => void;\n /** A slot beside the HOP picker (model picker, mode pill). */\n leading?: React.ReactNode;\n maxAttachmentBytes?: number;\n className?: string;\n autoFocus?: boolean;\n}\n\nconst ACCEPT = [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"];\n\nasync function fileToAttachment(f: File): Promise<ComposerAttachment> {\n const buf = new Uint8Array(await f.arrayBuffer());\n let bin = \"\";\n for (let i = 0; i < buf.length; i += 0x8000) bin += String.fromCharCode(...buf.subarray(i, i + 0x8000));\n return { name: f.name || \"image\", mediaType: f.type, data: btoa(bin), previewUrl: URL.createObjectURL(f) };\n}\n\n/**\n * The input: a growing textarea, Enter sends and Shift+Enter breaks a line, images paste or\n * drop in as attachments, a HOP picker slot, Stop while running, and an outside-controlled\n * disabled state for a sleeping workspace.\n */\nexport function Composer({ onSubmit, running, onStop, disabled, disabledReason, placeholder = \"Ask yodex to do something…\", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }: ComposerProps) {\n const [text, setText] = useState(\"\");\n const [attachments, setAttachments] = useState<ComposerAttachment[]>([]);\n const [note, setNote] = useState<string | null>(null);\n const ref = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n el.style.height = \"0px\";\n el.style.height = `${Math.min(el.scrollHeight, 240)}px`;\n }, [text]);\n\n const addFiles = useCallback(\n async (files: FileList | File[]) => {\n const list = [...files].filter((f) => ACCEPT.includes(f.type));\n if (!list.length) return;\n const big = list.find((f) => f.size > maxAttachmentBytes);\n if (big) {\n setNote(`${big.name} is larger than ${Math.round(maxAttachmentBytes / 1024 / 1024)} MB`);\n return;\n }\n const next = await Promise.all(list.map(fileToAttachment));\n setAttachments((a) => [...a, ...next]);\n setNote(null);\n },\n [maxAttachmentBytes],\n );\n\n const remove = (i: number) =>\n setAttachments((a) => {\n const gone = a[i];\n if (gone?.previewUrl) URL.revokeObjectURL(gone.previewUrl);\n return a.filter((_, j) => j !== i);\n });\n\n const canSend = !disabled && !running && (text.trim().length > 0 || attachments.length > 0);\n const submit = () => {\n if (!canSend) return;\n onSubmit(text.trim(), attachments);\n setText(\"\");\n for (const a of attachments) if (a.previewUrl) URL.revokeObjectURL(a.previewUrl);\n setAttachments([]);\n };\n\n const onKey = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n submit();\n }\n };\n const onPaste = (e: ClipboardEvent<HTMLTextAreaElement>) => {\n const files = [...e.clipboardData.files];\n if (files.length) {\n e.preventDefault();\n void addFiles(files);\n }\n };\n const onDrop = (e: DragEvent<HTMLDivElement>) => {\n if (e.dataTransfer.files.length) {\n e.preventDefault();\n void addFiles(e.dataTransfer.files);\n }\n };\n\n return (\n <div className={cn(\"yx-composer rounded-lg border border-border bg-card shadow-sm\", disabled && \"opacity-70\", className)} onDrop={onDrop} onDragOver={(e) => e.preventDefault()} data-disabled={disabled ? \"true\" : undefined}>\n {attachments.length > 0 && (\n <ul className=\"flex flex-wrap gap-2 px-3 pt-3\" aria-label=\"attachments\">\n {attachments.map((a, i) => (\n <li key={`${a.name}-${i}`} className=\"relative\">\n {a.previewUrl ? <img src={a.previewUrl} alt={a.name} className=\"h-14 w-14 rounded-md border border-border object-cover\" /> : <span className=\"block h-14 w-14 rounded-md border border-border bg-muted\" />}\n <button type=\"button\" onClick={() => remove(i)} aria-label={`Remove ${a.name}`} className=\"absolute -right-2 -top-2 flex h-6 w-6 items-center justify-center rounded-full border border-border bg-background\">\n <X className=\"h-3 w-3\" aria-hidden />\n </button>\n </li>\n ))}\n </ul>\n )}\n <textarea\n ref={ref}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKey}\n onPaste={onPaste}\n disabled={disabled}\n autoFocus={autoFocus}\n rows={1}\n placeholder={disabled && disabledReason ? disabledReason : placeholder}\n aria-label=\"Message\"\n className=\"block w-full resize-none bg-transparent px-3 py-3 text-[15px] leading-6 placeholder:text-muted-foreground focus-visible:outline-none\"\n />\n <div className=\"flex items-center gap-1 px-2 pb-2\">\n {leading}\n {hopOptions && hopOptions.length > 0 && (\n <select value={hop ?? \"\"} onChange={(e) => onHopChange?.(e.target.value)} disabled={disabled} aria-label=\"HOP\" className=\"min-h-9 max-w-[45%] rounded-md border border-border bg-background px-2 text-[12.5px]\">\n {hopOptions.map((o) => (\n <option key={o.value} value={o.value} title={o.description}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n <label className={cn(\"flex h-11 w-11 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted\", disabled && \"pointer-events-none\")} aria-label=\"Attach image\">\n <ImagePlus className=\"h-4 w-4\" aria-hidden />\n <input type=\"file\" accept={ACCEPT.join(\",\")} multiple className=\"sr-only\" disabled={disabled} onChange={(e) => e.target.files && void addFiles(e.target.files)} />\n </label>\n {note && <span className=\"truncate text-[12px] text-destructive\">{note}</span>}\n <span className=\"flex-1\" />\n {running ? (\n <button type=\"button\" onClick={onStop} aria-label=\"Stop\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-destructive text-destructive-foreground\">\n <Square className=\"h-4 w-4\" aria-hidden />\n </button>\n ) : (\n <button type=\"button\" onClick={submit} disabled={!canSend} aria-label=\"Send\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-primary text-primary-foreground disabled:opacity-40\">\n <ArrowUp className=\"h-4 w-4\" aria-hidden />\n </button>\n )}\n </div>\n </div>\n );\n}\n"
|
|
19
19
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "20955FCF1BAF8E9564756E2164756E21",
|
|
22
22
|
"names": []
|
|
23
23
|
}
|
package/dist/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-3xl:48rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--tracking-wide:.025em;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.-top-2{top:calc(var(--spacing) * -2)}.-right-2{right:calc(var(--spacing) * -2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[45\%\]{max-width:45%}.max-w-\[85\%\]{max-width:85%}.max-w-none{max-width:none}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.rotate-90{rotate:90deg}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:calc(var(--radius) + 2px)}.rounded-md{border-radius:var(--radius)}.rounded-br-md{border-bottom-right-radius:var(--radius)}.rounded-bl-md{border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-info\/50{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.border-info\/50{border-color:color-mix(in oklab, var(--info) 50%, transparent)}}.border-muted-foreground{border-color:var(--muted-foreground)}.border-primary{border-color:var(--primary)}.border-warning\/50{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/50{border-color:color-mix(in oklab, var(--warning) 50%, transparent)}}.bg-background{background-color:var(--background)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-info{background-color:var(--info)}.bg-input-background{background-color:var(--input-background)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-primary-foreground\/20{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-primary-foreground\/20{background-color:color-mix(in oklab, var(--primary-foreground) 20%, transparent)}}.bg-success,.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--warning)}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[0\.9em\]{font-size:.9em}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-info{color:var(--info)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-warning-foreground{color:var(--warning-foreground)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-success{--tw-ring-color:var(--success)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media (hover:hover){.hover\:bg-muted:hover,.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.hover\:bg-muted\/70:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}}.yx-assistant :is(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4){margin:.5em 0}.yx-assistant :is(h1,h2,h3,h4){font-weight:600;line-height:1.3}.yx-assistant h1{font-size:1.25em}.yx-assistant h2{font-size:1.15em}.yx-assistant h3{font-size:1.05em}.yx-assistant ul{padding-left:1.25em;list-style:outside}.yx-assistant ol{padding-left:1.25em;list-style:decimal}.yx-assistant li{margin:.2em 0}.yx-assistant blockquote{border-left:2px solid var(--border);color:var(--muted-foreground);padding-left:.75em}.yx-assistant hr{border:0;border-top:1px solid var(--border);margin:.75em 0}.yx-assistant input[type=checkbox]{margin-right:.4em}.yx-live:after{content:"▍";color:var(--accent);animation:1s steps(2,end) infinite yx-blink}@keyframes yx-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.yx-live:after,.animate-spin{animation:none}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes spin{to{transform:rotate(360deg)}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-3xl:48rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--tracking-wide:.025em;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.-top-2{top:calc(var(--spacing) * -2)}.-right-2{right:calc(var(--spacing) * -2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[45\%\]{max-width:45%}.max-w-\[85\%\]{max-width:85%}.max-w-none{max-width:none}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:calc(var(--radius) + 2px)}.rounded-md{border-radius:var(--radius)}.rounded-br-md{border-bottom-right-radius:var(--radius)}.rounded-bl-md{border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-info\/50{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.border-info\/50{border-color:color-mix(in oklab, var(--info) 50%, transparent)}}.border-muted-foreground{border-color:var(--muted-foreground)}.border-primary{border-color:var(--primary)}.border-warning\/50{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/50{border-color:color-mix(in oklab, var(--warning) 50%, transparent)}}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-info{background-color:var(--info)}.bg-input-background{background-color:var(--input-background)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-primary-foreground\/20{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-primary-foreground\/20{background-color:color-mix(in oklab, var(--primary-foreground) 20%, transparent)}}.bg-success,.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--warning)}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[0\.9em\]{font-size:.9em}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-info{color:var(--info)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-warning-foreground{color:var(--warning-foreground)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-success{--tw-ring-color:var(--success)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media (hover:hover){.hover\:bg-muted:hover,.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.hover\:bg-muted\/70:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}}.yx-assistant :is(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4){margin:.5em 0}.yx-assistant :is(h1,h2,h3,h4){font-weight:600;line-height:1.3}.yx-assistant h1{font-size:1.25em}.yx-assistant h2{font-size:1.15em}.yx-assistant h3{font-size:1.05em}.yx-assistant ul{padding-left:1.25em;list-style:outside}.yx-assistant ol{padding-left:1.25em;list-style:decimal}.yx-assistant li{margin:.2em 0}.yx-assistant blockquote{border-left:2px solid var(--border);color:var(--muted-foreground);padding-left:.75em}.yx-assistant hr{border:0;border-top:1px solid var(--border);margin:.75em 0}.yx-assistant input[type=checkbox]{margin-right:.4em}.yx-live:after{content:"▍";color:var(--accent);animation:1s steps(2,end) infinite yx-blink}@keyframes yx-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.yx-live:after,.animate-spin{animation:none}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mlpal/yodex-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "React components and a session hook for yodex frontends: transcript, tool calls, permissions, questions, run status, sessions, composer, over the yodex serve wire protocol.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"react-dom": "^18.2.0"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@mlpal/harness-protocol": "^0.
|
|
28
|
+
"@mlpal/harness-protocol": "^0.10.0",
|
|
29
29
|
"clsx": "^2.1.1",
|
|
30
30
|
"lucide-react": "^0.487.0",
|
|
31
31
|
"react-markdown": "^10.1.0",
|