@robota-sdk/agent-transport 3.0.0-beta.64
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/LICENSE +21 -0
- package/dist/node/headless/index.cjs +1 -0
- package/dist/node/headless/index.d.ts +2 -0
- package/dist/node/headless/index.js +1 -0
- package/dist/node/headless-CWEpJXFK.js +7 -0
- package/dist/node/headless-CWEpJXFK.js.map +1 -0
- package/dist/node/headless-CsZFelG9.cjs +6 -0
- package/dist/node/http/index.cjs +1 -0
- package/dist/node/http/index.d.ts +2 -0
- package/dist/node/http/index.js +1 -0
- package/dist/node/http-CM3TJhrF.cjs +1 -0
- package/dist/node/http-DwO1AHG-.js +2 -0
- package/dist/node/http-DwO1AHG-.js.map +1 -0
- package/dist/node/index--Ti9NzQX.d.ts +64 -0
- package/dist/node/index--Ti9NzQX.d.ts.map +1 -0
- package/dist/node/index-B_rcr14p.d.ts +47 -0
- package/dist/node/index-B_rcr14p.d.ts.map +1 -0
- package/dist/node/index-C9LWCL4l.d.ts +34 -0
- package/dist/node/index-C9LWCL4l.d.ts.map +1 -0
- package/dist/node/index-CAr3ioVh.d.ts +64 -0
- package/dist/node/index-CAr3ioVh.d.ts.map +1 -0
- package/dist/node/index-CEs25wVk.d.ts +213 -0
- package/dist/node/index-CEs25wVk.d.ts.map +1 -0
- package/dist/node/index-CvXLpjJO.d.ts +213 -0
- package/dist/node/index-CvXLpjJO.d.ts.map +1 -0
- package/dist/node/index-D34WUfFH.d.ts +26 -0
- package/dist/node/index-D34WUfFH.d.ts.map +1 -0
- package/dist/node/index-Y0zHb1Bz.d.ts +47 -0
- package/dist/node/index-Y0zHb1Bz.d.ts.map +1 -0
- package/dist/node/index-k3TUjA-T.d.ts +26 -0
- package/dist/node/index-k3TUjA-T.d.ts.map +1 -0
- package/dist/node/index-nBlMTFkZ.d.ts +34 -0
- package/dist/node/index-nBlMTFkZ.d.ts.map +1 -0
- package/dist/node/index.cjs +1 -0
- package/dist/node/index.d.ts +6 -0
- package/dist/node/index.js +1 -0
- package/dist/node/mcp/index.cjs +1 -0
- package/dist/node/mcp/index.d.ts +2 -0
- package/dist/node/mcp/index.js +1 -0
- package/dist/node/mcp-BXBwF6Wu.js +2 -0
- package/dist/node/mcp-BXBwF6Wu.js.map +1 -0
- package/dist/node/mcp-DcHuGokt.cjs +1 -0
- package/dist/node/tui/index.cjs +1 -0
- package/dist/node/tui/index.d.ts +2 -0
- package/dist/node/tui/index.js +1 -0
- package/dist/node/tui-CeD_6rSo.cjs +24 -0
- package/dist/node/tui-zmDTPk4b.js +25 -0
- package/dist/node/tui-zmDTPk4b.js.map +1 -0
- package/dist/node/ws/index.cjs +1 -0
- package/dist/node/ws/index.d.ts +2 -0
- package/dist/node/ws/index.js +1 -0
- package/dist/node/ws-B-oRccFl.js +2 -0
- package/dist/node/ws-B-oRccFl.js.map +1 -0
- package/dist/node/ws-COnIgnmn.cjs +1 -0
- package/package.json +141 -0
- package/src/headless/__tests__/headless-runner-initialization.test.ts +45 -0
- package/src/headless/__tests__/headless-runner.test.ts +484 -0
- package/src/headless/__tests__/headless-skill-activation.integration.test.ts +430 -0
- package/src/headless/__tests__/headless-transport.test.ts +268 -0
- package/src/headless/headless-runner.ts +141 -0
- package/src/headless/headless-stream-json.ts +142 -0
- package/src/headless/headless-transport.ts +43 -0
- package/src/headless/index.ts +4 -0
- package/src/http/__tests__/http-transport.test.ts +55 -0
- package/src/http/__tests__/routes.test.ts +168 -0
- package/src/http/http-transport.ts +42 -0
- package/src/http/index.ts +4 -0
- package/src/http/routes.ts +151 -0
- package/src/index.ts +5 -0
- package/src/mcp/__tests__/mcp-server.test.ts +66 -0
- package/src/mcp/__tests__/mcp-transport.test.ts +46 -0
- package/src/mcp/index.ts +4 -0
- package/src/mcp/mcp-server.ts +162 -0
- package/src/mcp/mcp-transport.ts +48 -0
- package/src/tui/App.tsx +478 -0
- package/src/tui/BackgroundTaskPanel.tsx +34 -0
- package/src/tui/CjkTextInput.tsx +204 -0
- package/src/tui/ConfirmPrompt.tsx +69 -0
- package/src/tui/ExecutionWorkspaceDetailPane.tsx +62 -0
- package/src/tui/ExecutionWorkspaceSwitcher.tsx +185 -0
- package/src/tui/InkTerminal.ts +42 -0
- package/src/tui/InputArea.tsx +298 -0
- package/src/tui/InteractivePrompt.tsx +57 -0
- package/src/tui/ListPicker.tsx +94 -0
- package/src/tui/MenuSelect.tsx +103 -0
- package/src/tui/MessageList.tsx +282 -0
- package/src/tui/PermissionPrompt.tsx +84 -0
- package/src/tui/PluginTUI.tsx +256 -0
- package/src/tui/SessionPicker.tsx +66 -0
- package/src/tui/SessionStatusBar.tsx +66 -0
- package/src/tui/SlashAutocomplete.tsx +110 -0
- package/src/tui/StatusBar.tsx +213 -0
- package/src/tui/StreamingIndicator.tsx +91 -0
- package/src/tui/TextPrompt.tsx +80 -0
- package/src/tui/ToolCommandOutput.tsx +37 -0
- package/src/tui/ToolDiffBlock.tsx +30 -0
- package/src/tui/TransportTUI.tsx +116 -0
- package/src/tui/UpdateNotice.tsx +14 -0
- package/src/tui/UsageSummaryEntry.tsx +38 -0
- package/src/tui/WaveText.tsx +44 -0
- package/src/tui/__tests__/InteractivePrompt.test.tsx +82 -0
- package/src/tui/__tests__/ListPicker.test.tsx +159 -0
- package/src/tui/__tests__/MenuSelect.test.tsx +103 -0
- package/src/tui/__tests__/PluginTUI.test.tsx +167 -0
- package/src/tui/__tests__/SlashAutocomplete.test.tsx +140 -0
- package/src/tui/__tests__/TextPrompt.test.tsx +98 -0
- package/src/tui/__tests__/UpdateNotice.test.tsx +15 -0
- package/src/tui/__tests__/abort-after-permission.test.tsx +169 -0
- package/src/tui/__tests__/abort-streaming-e2e.test.tsx +183 -0
- package/src/tui/__tests__/background-task-panel.test.tsx +53 -0
- package/src/tui/__tests__/background-task-row-format.test.ts +59 -0
- package/src/tui/__tests__/cjk-text-input-flow.test.ts +109 -0
- package/src/tui/__tests__/cjk-text-input.test.ts +191 -0
- package/src/tui/__tests__/command-effect-handler.test.ts +128 -0
- package/src/tui/__tests__/command-output-summary.test.ts +95 -0
- package/src/tui/__tests__/compact-event-bridge.test.ts +20 -0
- package/src/tui/__tests__/confirm-permission-flow.test.ts +91 -0
- package/src/tui/__tests__/confirm-prompt.test.tsx +87 -0
- package/src/tui/__tests__/execution-workspace-switcher.test.tsx +110 -0
- package/src/tui/__tests__/execution-workspace-view-model.test.ts +93 -0
- package/src/tui/__tests__/fixtures/provider-setup-prompt-driver.tsx +122 -0
- package/src/tui/__tests__/input-area-flow.test.ts +152 -0
- package/src/tui/__tests__/message-list-rendering.test.tsx +353 -0
- package/src/tui/__tests__/model-change-side-effect.test.ts +91 -0
- package/src/tui/__tests__/prompt-queue.test.tsx +255 -0
- package/src/tui/__tests__/provider-setup-pty-e2e.test.ts +233 -0
- package/src/tui/__tests__/render-markdown.test.ts +72 -0
- package/src/tui/__tests__/selection-flow.test.ts +61 -0
- package/src/tui/__tests__/slash-routing-effects.test.ts +225 -0
- package/src/tui/__tests__/status-activity.test.ts +71 -0
- package/src/tui/__tests__/status-bar.test.tsx +157 -0
- package/src/tui/__tests__/streaming-indicator.test.tsx +137 -0
- package/src/tui/__tests__/text-prompt-flow.test.ts +77 -0
- package/src/tui/__tests__/tui-state-manager.test.ts +401 -0
- package/src/tui/background-task-row-format.ts +52 -0
- package/src/tui/command-output-summary.ts +122 -0
- package/src/tui/execution-workspace-view-model.ts +123 -0
- package/src/tui/flows/cjk-text-input-flow.ts +285 -0
- package/src/tui/flows/confirm-prompt-flow.ts +45 -0
- package/src/tui/flows/input-area-flow.ts +186 -0
- package/src/tui/flows/permission-prompt-flow.ts +76 -0
- package/src/tui/flows/selection-flow.ts +126 -0
- package/src/tui/flows/text-prompt-flow.ts +98 -0
- package/src/tui/hooks/command-effect-handler.ts +98 -0
- package/src/tui/hooks/command-effect-queue.ts +39 -0
- package/src/tui/hooks/model-change-side-effect.ts +63 -0
- package/src/tui/hooks/side-effects-types.ts +38 -0
- package/src/tui/hooks/use-interactive-session-init.ts +50 -0
- package/src/tui/hooks/useAutocomplete.ts +85 -0
- package/src/tui/hooks/useInteractiveSession.ts +273 -0
- package/src/tui/hooks/usePermissionQueue.ts +51 -0
- package/src/tui/hooks/usePluginCallbacks.ts +30 -0
- package/src/tui/hooks/usePluginScreenData.ts +84 -0
- package/src/tui/hooks/useSideEffects.ts +210 -0
- package/src/tui/hooks/useSlashRouting.ts +117 -0
- package/src/tui/hooks/useStatusLineSettings.ts +35 -0
- package/src/tui/index.ts +3 -0
- package/src/tui/plugin-tui-handlers.ts +163 -0
- package/src/tui/render-markdown.ts +129 -0
- package/src/tui/render.tsx +60 -0
- package/src/tui/status-activity.ts +63 -0
- package/src/tui/tui-cli-adapter-context.tsx +12 -0
- package/src/tui/tui-cli-adapter.ts +25 -0
- package/src/tui/tui-state-manager.ts +225 -0
- package/src/tui/tui-transport.ts +32 -0
- package/src/tui/types.ts +14 -0
- package/src/tui/utils/__tests__/edit-diff.test.ts +426 -0
- package/src/tui/utils/__tests__/paste-detection.test.ts +116 -0
- package/src/tui/utils/__tests__/paste-labels.test.ts +46 -0
- package/src/tui/utils/__tests__/tool-call-extractor.test.ts +227 -0
- package/src/tui/utils/__tests__/tool-diff-summary.test.ts +104 -0
- package/src/tui/utils/edit-diff.ts +152 -0
- package/src/tui/utils/paste-labels.ts +9 -0
- package/src/tui/utils/tool-call-extractor.ts +91 -0
- package/src/tui/utils/tool-diff-summary.ts +75 -0
- package/src/ws/__tests__/ws-handler.test.ts +407 -0
- package/src/ws/__tests__/ws-transport.test.ts +53 -0
- package/src/ws/index.ts +13 -0
- package/src/ws/ws-background-messages.ts +170 -0
- package/src/ws/ws-handler.ts +279 -0
- package/src/ws/ws-protocol.ts +76 -0
- package/src/ws/ws-transport-configurable.ts +123 -0
- package/src/ws/ws-transport.ts +42 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { IBackgroundJobGroupState, IBackgroundTaskInput, IBackgroundTaskListFilter, IBackgroundTaskLogCursor, IBackgroundTaskLogPage, IBackgroundTaskState, ICommandResult, IExecutionResult, IExecutionWorkspaceEntry, IExecutionWorkspaceSnapshot, IExecutionWorkspaceSnapshot as IExecutionWorkspaceSnapshot$1, IInteractiveSession, IToolState, InteractiveSession, TBackgroundJobGroupEvent, TBackgroundTaskEvent, TExecutionAttention, TExecutionWorkspaceStatus } from "@robota-sdk/agent-framework";
|
|
2
|
+
import { TUniversalValue } from "@robota-sdk/agent-core";
|
|
3
|
+
import { IConfigurableTransport, ITransportAdapter } from "@robota-sdk/agent-interface-transport";
|
|
4
|
+
|
|
5
|
+
//#region src/ws/ws-protocol.d.ts
|
|
6
|
+
type TBackgroundControlAction = 'cancel' | 'close' | 'send';
|
|
7
|
+
/** Inbound message from client to server. */
|
|
8
|
+
type TClientMessage = {
|
|
9
|
+
type: 'submit';
|
|
10
|
+
prompt: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'command';
|
|
13
|
+
name: string;
|
|
14
|
+
args?: string;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'abort';
|
|
17
|
+
} | {
|
|
18
|
+
type: 'cancel-queue';
|
|
19
|
+
} | {
|
|
20
|
+
type: 'get-messages';
|
|
21
|
+
} | {
|
|
22
|
+
type: 'get-context';
|
|
23
|
+
} | {
|
|
24
|
+
type: 'get-executing';
|
|
25
|
+
} | {
|
|
26
|
+
type: 'get-pending';
|
|
27
|
+
} | {
|
|
28
|
+
type: 'get-execution-workspace';
|
|
29
|
+
} | {
|
|
30
|
+
type: 'get-background-tasks';
|
|
31
|
+
filter?: IBackgroundTaskListFilter;
|
|
32
|
+
} | {
|
|
33
|
+
type: 'get-background-task';
|
|
34
|
+
taskId: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'get-background-job-groups';
|
|
37
|
+
} | {
|
|
38
|
+
type: 'get-background-job-group';
|
|
39
|
+
groupId: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'wait-background-job-group';
|
|
42
|
+
groupId: string;
|
|
43
|
+
} | {
|
|
44
|
+
type: 'cancel-background-task';
|
|
45
|
+
taskId: string;
|
|
46
|
+
reason?: string;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'close-background-task';
|
|
49
|
+
taskId: string;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'send-background-task';
|
|
52
|
+
taskId: string;
|
|
53
|
+
input: IBackgroundTaskInput;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'read-background-task-log';
|
|
56
|
+
taskId: string;
|
|
57
|
+
cursor?: IBackgroundTaskLogCursor;
|
|
58
|
+
};
|
|
59
|
+
/** Outbound message from server to client. */
|
|
60
|
+
type TServerMessage = {
|
|
61
|
+
type: 'text_delta';
|
|
62
|
+
delta: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: 'user_message';
|
|
65
|
+
content: string;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'tool_start';
|
|
68
|
+
state: IToolState;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'tool_end';
|
|
71
|
+
state: IToolState;
|
|
72
|
+
} | {
|
|
73
|
+
type: 'thinking';
|
|
74
|
+
isThinking: boolean;
|
|
75
|
+
} | {
|
|
76
|
+
type: 'complete';
|
|
77
|
+
result: IExecutionResult;
|
|
78
|
+
} | {
|
|
79
|
+
type: 'interrupted';
|
|
80
|
+
result: IExecutionResult;
|
|
81
|
+
} | {
|
|
82
|
+
type: 'error';
|
|
83
|
+
message: string;
|
|
84
|
+
} | {
|
|
85
|
+
type: 'command_result';
|
|
86
|
+
name: string;
|
|
87
|
+
message: string;
|
|
88
|
+
success: boolean;
|
|
89
|
+
data?: ICommandResult['data'];
|
|
90
|
+
} | {
|
|
91
|
+
type: 'messages';
|
|
92
|
+
messages: ReturnType<InteractiveSession['getMessages']>;
|
|
93
|
+
} | {
|
|
94
|
+
type: 'context';
|
|
95
|
+
state: ReturnType<InteractiveSession['getContextState']>;
|
|
96
|
+
} | {
|
|
97
|
+
type: 'executing';
|
|
98
|
+
executing: boolean;
|
|
99
|
+
} | {
|
|
100
|
+
type: 'pending';
|
|
101
|
+
pending: string | null;
|
|
102
|
+
} | {
|
|
103
|
+
type: 'execution_workspace_event';
|
|
104
|
+
snapshot: IExecutionWorkspaceSnapshot;
|
|
105
|
+
} | {
|
|
106
|
+
type: 'background_task_event';
|
|
107
|
+
event: TBackgroundTaskEvent;
|
|
108
|
+
} | {
|
|
109
|
+
type: 'background_job_group_event';
|
|
110
|
+
event: TBackgroundJobGroupEvent;
|
|
111
|
+
} | {
|
|
112
|
+
type: 'background_tasks';
|
|
113
|
+
tasks: IBackgroundTaskState[];
|
|
114
|
+
} | {
|
|
115
|
+
type: 'background_task';
|
|
116
|
+
taskId: string;
|
|
117
|
+
task: IBackgroundTaskState | null;
|
|
118
|
+
} | {
|
|
119
|
+
type: 'background_job_groups';
|
|
120
|
+
groups: IBackgroundJobGroupState[];
|
|
121
|
+
} | {
|
|
122
|
+
type: 'background_job_group';
|
|
123
|
+
groupId: string;
|
|
124
|
+
group: IBackgroundJobGroupState | null;
|
|
125
|
+
} | {
|
|
126
|
+
type: 'background_task_log';
|
|
127
|
+
taskId: string;
|
|
128
|
+
page: IBackgroundTaskLogPage;
|
|
129
|
+
} | {
|
|
130
|
+
type: 'background_task_control_result';
|
|
131
|
+
action: TBackgroundControlAction;
|
|
132
|
+
taskId: string;
|
|
133
|
+
success: boolean;
|
|
134
|
+
message?: string;
|
|
135
|
+
} | {
|
|
136
|
+
type: 'protocol_error';
|
|
137
|
+
message: string;
|
|
138
|
+
};
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/ws/ws-handler.d.ts
|
|
141
|
+
interface IWsHandlerOptions {
|
|
142
|
+
/** IInteractiveSession to expose. */
|
|
143
|
+
session: IInteractiveSession;
|
|
144
|
+
/** Send a JSON message to the client. */
|
|
145
|
+
send: (message: TServerMessage) => void;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create a WebSocket message handler for an IInteractiveSession.
|
|
149
|
+
*
|
|
150
|
+
* Returns:
|
|
151
|
+
* - `onMessage(data)`: call this when the WebSocket receives a message
|
|
152
|
+
* - `cleanup()`: call this when the WebSocket disconnects
|
|
153
|
+
*
|
|
154
|
+
* Usage:
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const { onMessage, cleanup } = createWsHandler({
|
|
157
|
+
* session: interactiveSession,
|
|
158
|
+
* send: (msg) => ws.send(JSON.stringify(msg)),
|
|
159
|
+
* });
|
|
160
|
+
*
|
|
161
|
+
* ws.on('message', (data) => onMessage(String(data)));
|
|
162
|
+
* ws.on('close', cleanup);
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
declare function createWsHandler(options: IWsHandlerOptions): {
|
|
166
|
+
onMessage: (data: string) => void;
|
|
167
|
+
cleanup: () => void;
|
|
168
|
+
};
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/ws/ws-transport.d.ts
|
|
171
|
+
interface IWsTransportOptions {
|
|
172
|
+
/** Send a JSON message to the connected WebSocket client. */
|
|
173
|
+
send: (message: TServerMessage) => void;
|
|
174
|
+
}
|
|
175
|
+
declare function createWsTransport(options: IWsTransportOptions): ITransportAdapter<IInteractiveSession> & {
|
|
176
|
+
onMessage: ((data: string) => void) | null;
|
|
177
|
+
};
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region src/ws/ws-transport-configurable.d.ts
|
|
180
|
+
interface IWsTransportConfig {
|
|
181
|
+
port?: number;
|
|
182
|
+
maxRetries?: number;
|
|
183
|
+
}
|
|
184
|
+
declare class WsTransport implements IConfigurableTransport<IInteractiveSession> {
|
|
185
|
+
readonly name = "ws";
|
|
186
|
+
readonly defaultEnabled = true;
|
|
187
|
+
readonly optionsSchema: {
|
|
188
|
+
port: {
|
|
189
|
+
type: string;
|
|
190
|
+
description: string;
|
|
191
|
+
default: number;
|
|
192
|
+
};
|
|
193
|
+
maxRetries: {
|
|
194
|
+
type: string;
|
|
195
|
+
description: string;
|
|
196
|
+
default: number;
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
private session;
|
|
200
|
+
private stopFn;
|
|
201
|
+
private readonly port;
|
|
202
|
+
private readonly maxRetries;
|
|
203
|
+
constructor(config?: IWsTransportConfig);
|
|
204
|
+
attach(session: IInteractiveSession): void;
|
|
205
|
+
start(): Promise<void>;
|
|
206
|
+
stop(): Promise<void>;
|
|
207
|
+
validateOptions(options: Record<string, TUniversalValue>): boolean;
|
|
208
|
+
private bindWithRetry;
|
|
209
|
+
private tryBind;
|
|
210
|
+
}
|
|
211
|
+
//#endregion
|
|
212
|
+
export { IWsTransportConfig as a, createWsTransport as c, TClientMessage as d, TServerMessage as f, TExecutionWorkspaceStatus as i, IWsHandlerOptions as l, IExecutionWorkspaceSnapshot$1 as n, WsTransport as o, TExecutionAttention as r, IWsTransportOptions as s, IExecutionWorkspaceEntry as t, createWsHandler as u };
|
|
213
|
+
//# sourceMappingURL=index-CvXLpjJO.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CvXLpjJO.d.ts","names":[],"sources":["../../src/ws/ws-protocol.ts","../../src/ws/ws-handler.ts","../../src/ws/ws-transport.ts","../../src/ws/ws-transport-configurable.ts"],"mappings":";;;;;KAgBY,wBAAA;;KAGA,cAAA;EACN,IAAA;EAAgB,MAAA;AAAA;EAChB,IAAA;EAAiB,IAAA;EAAc,IAAA;AAAA;EAC/B,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAA8B,MAAA,GAAS,yBAAA;AAAA;EACvC,IAAA;EAA6B,MAAA;AAAA;EAC7B,IAAA;AAAA;EACA,IAAA;EAAkC,OAAA;AAAA;EAClC,IAAA;EAAmC,OAAA;AAAA;EACnC,IAAA;EAAgC,MAAA;EAAgB,MAAA;AAAA;EAChD,IAAA;EAA+B,MAAA;AAAA;EAC/B,IAAA;EAA8B,MAAA;EAAgB,KAAA,EAAO,oBAAA;AAAA;EACrD,IAAA;EAAkC,MAAA;EAAgB,MAAA,GAAS,wBAAA;AAAA;AAAwB;AAAA,KAG7E,cAAA;EACN,IAAA;EAAoB,KAAA;AAAA;EACpB,IAAA;EAAsB,OAAA;AAAA;EACtB,IAAA;EAAoB,KAAA,EAAO,UAAA;AAAA;EAC3B,IAAA;EAAkB,KAAA,EAAO,UAAA;AAAA;EACzB,IAAA;EAAkB,UAAA;AAAA;EAClB,IAAA;EAAkB,MAAA,EAAQ,gBAAA;AAAA;EAC1B,IAAA;EAAqB,MAAA,EAAQ,gBAAA;AAAA;EAC7B,IAAA;EAAe,OAAA;AAAA;EAEf,IAAA;EACA,IAAA;EACA,OAAA;EACA,OAAA;EACA,IAAA,GAAO,cAAA;AAAA;EAEP,IAAA;EAAkB,QAAA,EAAU,UAAA,CAAW,kBAAA;AAAA;EACvC,IAAA;EAAiB,KAAA,EAAO,UAAA,CAAW,kBAAA;AAAA;EACnC,IAAA;EAAmB,SAAA;AAAA;EACnB,IAAA;EAAiB,OAAA;AAAA;EACjB,IAAA;EAAmC,QAAA,EAAU,2BAAA;AAAA;EAC7C,IAAA;EAA+B,KAAA,EAAO,oBAAA;AAAA;EACtC,IAAA;EAAoC,KAAA,EAAO,wBAAA;AAAA;EAC3C,IAAA;EAA0B,KAAA,EAAO,oBAAA;AAAA;EACjC,IAAA;EAAyB,MAAA;EAAgB,IAAA,EAAM,oBAAA;AAAA;EAC/C,IAAA;EAA+B,MAAA,EAAQ,wBAAA;AAAA;EACvC,IAAA;EAA8B,OAAA;EAAiB,KAAA,EAAO,wBAAA;AAAA;EACtD,IAAA;EAA6B,MAAA;EAAgB,IAAA,EAAM,sBAAA;AAAA;EAEnD,IAAA;EACA,MAAA,EAAQ,wBAAA;EACR,MAAA;EACA,OAAA;EACA,OAAA;AAAA;EAEA,IAAA;EAAwB,OAAA;AAAA;;;UCnDb,iBAAA;;EAEf,OAAA,EAAS,mBAAA;EDUgD;ECRzD,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;;;;;;;;;;;;;;;;;;;iBAqBhB,eAAA,CAAgB,OAAA,EAAS,iBAAiB;EACxD,SAAA,GAAY,IAAA;EACZ,OAAA;AAAA;;;UCvCe,mBAAA;EFOL;EELV,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;AAAA,iBAGhB,iBAAA,CACd,OAAA,EAAS,mBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,SAAA,IAAa,IAAA;AAAA;;;UCH1C,kBAAA;EACf,IAAA;EACA,UAAU;AAAA;AAAA,cAGC,WAAA,YAAuB,sBAAA,CAAuB,mBAAA;EAAA,SAChD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;;;;;;;;;;;;UASD,OAAA;EAAA,QACA,MAAA;EAAA,iBACS,IAAA;EAAA,iBACA,UAAA;cAEL,MAAA,GAAQ,kBAAA;EAKpB,MAAA,CAAO,OAAA,EAAS,mBAAA;EAIV,KAAA,CAAA,GAAS,OAAA;EAMT,IAAA,CAAA,GAAQ,OAAA;EAKd,eAAA,CAAgB,OAAA,EAAS,MAAA,SAAe,eAAA;EAAA,QAQhC,aAAA;EAAA,QAYA,OAAA;AAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IInteractiveSession } from "@robota-sdk/agent-framework";
|
|
2
|
+
import { ITransportAdapter } from "@robota-sdk/agent-interface-transport";
|
|
3
|
+
|
|
4
|
+
//#region src/headless/headless-runner.d.ts
|
|
5
|
+
type TOutputFormat = 'text' | 'json' | 'stream-json';
|
|
6
|
+
interface IHeadlessRunnerOptions {
|
|
7
|
+
session: IInteractiveSession;
|
|
8
|
+
outputFormat: TOutputFormat;
|
|
9
|
+
}
|
|
10
|
+
declare function createHeadlessRunner(options: IHeadlessRunnerOptions): {
|
|
11
|
+
run: (prompt: string) => Promise<number>;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/headless/headless-transport.d.ts
|
|
15
|
+
interface IHeadlessTransportOptions {
|
|
16
|
+
/** Output format: 'text', 'json', or 'stream-json'. */
|
|
17
|
+
outputFormat: TOutputFormat;
|
|
18
|
+
/** The prompt to execute. */
|
|
19
|
+
prompt: string;
|
|
20
|
+
}
|
|
21
|
+
declare function createHeadlessTransport(options: IHeadlessTransportOptions): ITransportAdapter<IInteractiveSession> & {
|
|
22
|
+
getExitCode(): number;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createHeadlessRunner as a, TOutputFormat as i, createHeadlessTransport as n, IHeadlessRunnerOptions as r, IHeadlessTransportOptions as t };
|
|
26
|
+
//# sourceMappingURL=index-D34WUfFH.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D34WUfFH.d.ts","names":[],"sources":["../../src/headless/headless-runner.ts","../../src/headless/headless-transport.ts"],"mappings":";;;;KAGY,aAAA;AAAA,UAEK,sBAAA;EACf,OAAA,EAAS,mBAAA;EACT,YAAA,EAAc,aAAa;AAAA;AAAA,iBAGb,oBAAA,CAAqB,OAAA,EAAS,sBAAA;EAC5C,GAAA,GAAM,MAAA,aAAmB,OAAO;AAAA;;;UCCjB,yBAAA;EDPsB;ECSrC,YAAA,EAAc,aAAa;EDPA;ECS3B,MAAA;AAAA;AAAA,iBAGc,uBAAA,CACd,OAAA,EAAS,yBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,WAAA;AAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IInteractiveSession } from "@robota-sdk/agent-framework";
|
|
2
|
+
import { ITransportAdapter } from "@robota-sdk/agent-interface-transport";
|
|
3
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
4
|
+
|
|
5
|
+
//#region src/mcp/mcp-server.d.ts
|
|
6
|
+
interface IAgentMcpOptions {
|
|
7
|
+
/** Name for the MCP server. */
|
|
8
|
+
name: string;
|
|
9
|
+
/** Version string. */
|
|
10
|
+
version: string;
|
|
11
|
+
/** IInteractiveSession to expose. */
|
|
12
|
+
session: IInteractiveSession;
|
|
13
|
+
/** If true, register each system command as a separate MCP tool. Default: true. */
|
|
14
|
+
exposeCommands?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create an MCP server that exposes IInteractiveSession over Model Context Protocol.
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const server = createAgentMcpServer({
|
|
22
|
+
* name: 'robota-agent',
|
|
23
|
+
* version: '1.0.0',
|
|
24
|
+
* session: interactiveSession,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
28
|
+
* await server.connect(new StdioServerTransport());
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
declare function createAgentMcpServer(options: IAgentMcpOptions): Server;
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/mcp/mcp-transport.d.ts
|
|
34
|
+
interface IMcpTransportOptions {
|
|
35
|
+
/** Name for the MCP server. */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Version string. */
|
|
38
|
+
version: string;
|
|
39
|
+
/** If true, register each system command as a separate MCP tool. Default: true. */
|
|
40
|
+
exposeCommands?: boolean;
|
|
41
|
+
}
|
|
42
|
+
declare function createMcpTransport(options: IMcpTransportOptions): ITransportAdapter<IInteractiveSession> & {
|
|
43
|
+
getServer(): Server;
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { createAgentMcpServer as i, createMcpTransport as n, IAgentMcpOptions as r, IMcpTransportOptions as t };
|
|
47
|
+
//# sourceMappingURL=index-Y0zHb1Bz.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Y0zHb1Bz.d.ts","names":[],"sources":["../../src/mcp/mcp-server.ts","../../src/mcp/mcp-transport.ts"],"mappings":";;;;;UAYiB,gBAAA;EAIf;EAFA,IAAA;EAIS;EAFT,OAAA;EAIc;EAFd,OAAA,EAAS,mBAAmB;EAoBd;EAlBd,cAAA;AAAA;;;;;;AAkBqE;;;;AC1BvE;;;;;;iBD0BgB,oBAAA,CAAqB,OAAA,EAAS,gBAAA,GAAmB,MAAM;;;UC1BtD,oBAAA;EDIf;ECFA,IAAA;EDIS;ECFT,OAAA;EDIc;ECFd,cAAA;AAAA;AAAA,iBAGc,kBAAA,CACd,OAAA,EAAS,oBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,SAAA,IAAa,MAAA;AAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IInteractiveSession } from "@robota-sdk/agent-framework";
|
|
2
|
+
import { ITransportAdapter } from "@robota-sdk/agent-interface-transport";
|
|
3
|
+
|
|
4
|
+
//#region src/headless/headless-runner.d.ts
|
|
5
|
+
type TOutputFormat = 'text' | 'json' | 'stream-json';
|
|
6
|
+
interface IHeadlessRunnerOptions {
|
|
7
|
+
session: IInteractiveSession;
|
|
8
|
+
outputFormat: TOutputFormat;
|
|
9
|
+
}
|
|
10
|
+
declare function createHeadlessRunner(options: IHeadlessRunnerOptions): {
|
|
11
|
+
run: (prompt: string) => Promise<number>;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/headless/headless-transport.d.ts
|
|
15
|
+
interface IHeadlessTransportOptions {
|
|
16
|
+
/** Output format: 'text', 'json', or 'stream-json'. */
|
|
17
|
+
outputFormat: TOutputFormat;
|
|
18
|
+
/** The prompt to execute. */
|
|
19
|
+
prompt: string;
|
|
20
|
+
}
|
|
21
|
+
declare function createHeadlessTransport(options: IHeadlessTransportOptions): ITransportAdapter<IInteractiveSession> & {
|
|
22
|
+
getExitCode(): number;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createHeadlessRunner as a, TOutputFormat as i, createHeadlessTransport as n, IHeadlessRunnerOptions as r, IHeadlessTransportOptions as t };
|
|
26
|
+
//# sourceMappingURL=index-k3TUjA-T.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-k3TUjA-T.d.ts","names":[],"sources":["../../src/headless/headless-runner.ts","../../src/headless/headless-transport.ts"],"mappings":";;;;KAGY,aAAA;AAAA,UAEK,sBAAA;EACf,OAAA,EAAS,mBAAA;EACT,YAAA,EAAc,aAAa;AAAA;AAAA,iBAGb,oBAAA,CAAqB,OAAA,EAAS,sBAAA;EAC5C,GAAA,GAAM,MAAA,aAAmB,OAAO;AAAA;;;UCCjB,yBAAA;EDPsB;ECSrC,YAAA,EAAc,aAAa;EDPA;ECS3B,MAAA;AAAA;AAAA,iBAGc,uBAAA,CACd,OAAA,EAAS,yBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,WAAA;AAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IInteractiveSession } from "@robota-sdk/agent-framework";
|
|
2
|
+
import { Context, Hono } from "hono";
|
|
3
|
+
import { ITransportAdapter } from "@robota-sdk/agent-interface-transport";
|
|
4
|
+
|
|
5
|
+
//#region src/http/routes.d.ts
|
|
6
|
+
/** Callback that resolves an IInteractiveSession from the request context. */
|
|
7
|
+
type TSessionFactory = (c: Context) => IInteractiveSession | Promise<IInteractiveSession>;
|
|
8
|
+
interface IAgentRoutesOptions {
|
|
9
|
+
/** Resolve an IInteractiveSession per request (e.g., by auth token, session ID). */
|
|
10
|
+
sessionFactory: TSessionFactory;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a Hono router with all agent HTTP endpoints.
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const routes = createAgentRoutes({ sessionFactory });
|
|
18
|
+
* app.route('/agent', routes); // mount on existing app
|
|
19
|
+
* export default routes; // or use standalone (CF Workers)
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function createAgentRoutes(options: IAgentRoutesOptions): Hono;
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/http/http-transport.d.ts
|
|
25
|
+
interface IHttpTransportOptions {
|
|
26
|
+
/** Optional: base path prefix for routes. */
|
|
27
|
+
basePath?: string;
|
|
28
|
+
}
|
|
29
|
+
declare function createHttpTransport(options?: IHttpTransportOptions): ITransportAdapter<IInteractiveSession> & {
|
|
30
|
+
getApp(): Hono;
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { createAgentRoutes as a, TSessionFactory as i, createHttpTransport as n, IAgentRoutesOptions as r, IHttpTransportOptions as t };
|
|
34
|
+
//# sourceMappingURL=index-nBlMTFkZ.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-nBlMTFkZ.d.ts","names":[],"sources":["../../src/http/routes.ts","../../src/http/http-transport.ts"],"mappings":";;;;;;KAaY,eAAA,IAAmB,CAAA,EAAG,OAAA,KAAY,mBAAA,GAAsB,OAAA,CAAQ,mBAAA;AAAA,UAE3D,mBAAA;EAF0D;EAIzE,cAAA,EAAgB,eAAe;AAAA;;;;;;AAJ8D;AAE/F;;;;iBAegB,iBAAA,CAAkB,OAAA,EAAS,mBAAA,GAAsB,IAAI;;;UCjBpD,qBAAA;EDA2D;ECE1E,QAAQ;AAAA;AAAA,iBAGM,mBAAA,CACd,OAAA,GAAU,qBAAA,GACT,iBAAA,CAAkB,mBAAA;EAAyB,MAAA,IAAU,IAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./tui-CeD_6rSo.cjs`),t=require(`./headless-CsZFelG9.cjs`),n=require(`./http-CM3TJhrF.cjs`),r=require(`./ws-COnIgnmn.cjs`),i=require(`./mcp-DcHuGokt.cjs`);exports.TuiTransport=e.t,exports.WsTransport=r.t,exports.createAgentMcpServer=i.n,exports.createAgentRoutes=n.n,exports.createHeadlessRunner=t.n,exports.createHeadlessTransport=t.t,exports.createHttpTransport=n.t,exports.createMcpTransport=i.t,exports.createWsHandler=r.r,exports.createWsTransport=r.n;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { a as createHeadlessRunner, i as TOutputFormat, n as createHeadlessTransport, r as IHeadlessRunnerOptions, t as IHeadlessTransportOptions } from "./index-D34WUfFH.js";
|
|
2
|
+
import { a as createAgentRoutes, i as TSessionFactory, n as createHttpTransport, r as IAgentRoutesOptions, t as IHttpTransportOptions } from "./index-nBlMTFkZ.js";
|
|
3
|
+
import { n as IRenderOptions, r as ITuiCliAdapter, t as TuiTransport } from "./index-CAr3ioVh.js";
|
|
4
|
+
import { a as IWsTransportConfig, c as createWsTransport, d as TClientMessage, f as TServerMessage, i as TExecutionWorkspaceStatus, l as IWsHandlerOptions, n as IExecutionWorkspaceSnapshot, o as WsTransport, r as TExecutionAttention, s as IWsTransportOptions, t as IExecutionWorkspaceEntry, u as createWsHandler } from "./index-CvXLpjJO.js";
|
|
5
|
+
import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "./index-B_rcr14p.js";
|
|
6
|
+
export { type IAgentMcpOptions, type IAgentRoutesOptions, type IExecutionWorkspaceEntry, type IExecutionWorkspaceSnapshot, type IHeadlessRunnerOptions, type IHeadlessTransportOptions, type IHttpTransportOptions, type IMcpTransportOptions, type IRenderOptions, type ITuiCliAdapter, type IWsHandlerOptions, type IWsTransportConfig, type IWsTransportOptions, type TClientMessage, type TExecutionAttention, type TExecutionWorkspaceStatus, type TOutputFormat, type TServerMessage, type TSessionFactory, TuiTransport, WsTransport, createAgentMcpServer, createAgentRoutes, createHeadlessRunner, createHeadlessTransport, createHttpTransport, createMcpTransport, createWsHandler, createWsTransport };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./tui-zmDTPk4b.js";import{n as t,t as n}from"./headless-CWEpJXFK.js";import{n as r,t as i}from"./http-DwO1AHG-.js";import{n as a,r as o,t as s}from"./ws-B-oRccFl.js";import{n as c,t as l}from"./mcp-BXBwF6Wu.js";export{e as TuiTransport,s as WsTransport,c as createAgentMcpServer,r as createAgentRoutes,t as createHeadlessRunner,n as createHeadlessTransport,i as createHttpTransport,l as createMcpTransport,o as createWsHandler,a as createWsTransport};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../mcp-DcHuGokt.cjs`);exports.createAgentMcpServer=e.n,exports.createMcpTransport=e.t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"../mcp-BXBwF6Wu.js";export{e as createAgentMcpServer,t as createMcpTransport};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Server as e}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as t,ListToolsRequestSchema as n}from"@modelcontextprotocol/sdk/types.js";function r(r){let{name:a,version:o,session:s,exposeCommands:c=!0}=r,l=new e({name:a,version:o},{capabilities:{tools:{}}}),u=[{name:`submit`,description:`Submit a prompt to the AI agent and wait for the response`,inputSchema:{type:`object`,properties:{prompt:{type:`string`,description:`The prompt to send to the agent`}},required:[`prompt`]}}];if(c)for(let e of s.listCommands())u.push({name:`command_${e.name}`,description:e.description,inputSchema:{type:`object`,properties:{args:{type:`string`,description:`Command arguments`}}}});return l.setRequestHandler(n,async()=>({tools:u})),l.setRequestHandler(t,async e=>{let{name:t,arguments:n}=e.params;if(t===`submit`){let e=n?.prompt;return e?{content:[{type:`text`,text:(await i(s,e)).response}]}:{content:[{type:`text`,text:`Error: prompt is required`}],isError:!0}}if(t.startsWith(`command_`)){let e=t.slice(8),r=n?.args??``,i=await s.executeCommand(e,r);return{content:[{type:`text`,text:i?.message??`Unknown command: ${e}`}],isError:!i}}return{content:[{type:`text`,text:`Unknown tool: ${t}`}],isError:!0}}),l}function i(e,t){return new Promise((n,r)=>{let i=e=>{s(),n(e)},a=e=>{s(),n(e)},o=e=>{s(),r(e)},s=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),e.submit(t).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}function a(e){let t=null,n=null;return{name:`mcp`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);n=r({...e,session:t})},async stop(){n&&=(await n.close(),null)},getServer(){if(!n)throw Error(`Transport not started. Call start() first.`);return n}}}export{r as n,a as t};
|
|
2
|
+
//# sourceMappingURL=mcp-BXBwF6Wu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-BXBwF6Wu.js","names":[],"sources":["../../src/mcp/mcp-server.ts","../../src/mcp/mcp-transport.ts"],"sourcesContent":["/**\n * MCP transport adapter — exposes IInteractiveSession as an MCP server.\n *\n * Uses the low-level MCP Server class to avoid TypeScript depth issues\n * with McpServer.registerTool() generics. Registers tools/list and\n * tools/call handlers directly.\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';\nimport type { IInteractiveSession, IExecutionResult } from '@robota-sdk/agent-framework';\n\nexport interface IAgentMcpOptions {\n /** Name for the MCP server. */\n name: string;\n /** Version string. */\n version: string;\n /** IInteractiveSession to expose. */\n session: IInteractiveSession;\n /** If true, register each system command as a separate MCP tool. Default: true. */\n exposeCommands?: boolean;\n}\n\n/**\n * Create an MCP server that exposes IInteractiveSession over Model Context Protocol.\n *\n * Usage:\n * ```typescript\n * const server = createAgentMcpServer({\n * name: 'robota-agent',\n * version: '1.0.0',\n * session: interactiveSession,\n * });\n *\n * import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n * await server.connect(new StdioServerTransport());\n * ```\n */\nexport function createAgentMcpServer(options: IAgentMcpOptions): Server {\n const { name, version, session, exposeCommands = true } = options;\n\n const server = new Server({ name, version }, { capabilities: { tools: {} } });\n\n // Build tool definitions\n const tools: Array<{\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n }> = [\n {\n name: 'submit',\n description: 'Submit a prompt to the AI agent and wait for the response',\n inputSchema: {\n type: 'object',\n properties: {\n prompt: { type: 'string', description: 'The prompt to send to the agent' },\n },\n required: ['prompt'],\n },\n },\n ];\n\n if (exposeCommands) {\n for (const cmd of session.listCommands()) {\n tools.push({\n name: `command_${cmd.name}`,\n description: cmd.description,\n inputSchema: {\n type: 'object',\n properties: {\n args: { type: 'string', description: 'Command arguments' },\n },\n },\n });\n }\n }\n\n // tools/list handler\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools,\n }));\n\n // tools/call handler\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name: toolName, arguments: toolArgs } = request.params;\n\n if (toolName === 'submit') {\n const prompt = (toolArgs as Record<string, string>)?.prompt;\n if (!prompt) {\n return {\n content: [{ type: 'text', text: 'Error: prompt is required' }],\n isError: true,\n };\n }\n const result = await waitForCompletion(session, prompt);\n return {\n content: [{ type: 'text', text: result.response }],\n };\n }\n\n // System commands: command_<name>\n if (toolName.startsWith('command_')) {\n const cmdName = toolName.slice('command_'.length);\n const args = (toolArgs as Record<string, string>)?.args ?? '';\n const result = await session.executeCommand(cmdName, args);\n return {\n content: [\n {\n type: 'text',\n text: result?.message ?? `Unknown command: ${cmdName}`,\n },\n ],\n isError: !result,\n };\n }\n\n return {\n content: [{ type: 'text', text: `Unknown tool: ${toolName}` }],\n isError: true,\n };\n });\n\n return server;\n}\n\n/**\n * Submit a prompt and wait for the complete/interrupted/error event.\n */\nfunction waitForCompletion(\n session: IInteractiveSession,\n prompt: string,\n): Promise<IExecutionResult> {\n return new Promise((resolve, reject) => {\n const onComplete = (result: IExecutionResult): void => {\n cleanup();\n resolve(result);\n };\n const onInterrupted = (result: IExecutionResult): void => {\n cleanup();\n resolve(result);\n };\n const onError = (error: Error): void => {\n cleanup();\n reject(error);\n };\n\n const cleanup = (): void => {\n session.off('complete', onComplete);\n session.off('interrupted', onInterrupted);\n session.off('error', onError);\n };\n\n session.on('complete', onComplete);\n session.on('interrupted', onInterrupted);\n session.on('error', onError);\n\n session.submit(prompt).catch((err) => {\n cleanup();\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n });\n}\n","/**\n * ITransportAdapter implementation for MCP transport.\n *\n * Wraps createAgentMcpServer into the unified ITransportAdapter interface\n * while exposing the underlying MCP Server via getServer().\n */\n\nimport type { ITransportAdapter } from '@robota-sdk/agent-interface-transport';\nimport type { IInteractiveSession } from '@robota-sdk/agent-framework';\nimport { createAgentMcpServer } from './mcp-server.js';\nimport type { Server } from '@modelcontextprotocol/sdk/server/index.js';\n\nexport interface IMcpTransportOptions {\n /** Name for the MCP server. */\n name: string;\n /** Version string. */\n version: string;\n /** If true, register each system command as a separate MCP tool. Default: true. */\n exposeCommands?: boolean;\n}\n\nexport function createMcpTransport(\n options: IMcpTransportOptions,\n): ITransportAdapter<IInteractiveSession> & { getServer(): Server } {\n let session: IInteractiveSession | null = null;\n let server: Server | null = null;\n\n return {\n name: 'mcp',\n attach(s: IInteractiveSession) {\n session = s;\n },\n async start() {\n if (!session) throw new Error('No session attached. Call attach() first.');\n server = createAgentMcpServer({ ...options, session });\n },\n async stop() {\n if (server) {\n await server.close();\n server = null;\n }\n },\n getServer() {\n if (!server) throw new Error('Transport not started. Call start() first.');\n return server;\n },\n };\n}\n"],"mappings":"0KAsCA,SAAgB,EAAqB,EAAmC,CACtE,GAAM,CAAE,OAAM,UAAS,UAAS,iBAAiB,IAAS,EAEpD,EAAS,IAAI,EAAO,CAAE,OAAM,SAAQ,EAAG,CAAE,aAAc,CAAE,MAAO,CAAC,CAAE,CAAE,CAAC,EAGtE,EAID,CACH,CACE,KAAM,SACN,YAAa,4DACb,YAAa,CACX,KAAM,SACN,WAAY,CACV,OAAQ,CAAE,KAAM,SAAU,YAAa,iCAAkC,CAC3E,EACA,SAAU,CAAC,QAAQ,CACrB,CACF,CACF,EAEA,GAAI,EACF,IAAK,IAAM,KAAO,EAAQ,aAAa,EACrC,EAAM,KAAK,CACT,KAAM,WAAW,EAAI,OACrB,YAAa,EAAI,YACjB,YAAa,CACX,KAAM,SACN,WAAY,CACV,KAAM,CAAE,KAAM,SAAU,YAAa,mBAAoB,CAC3D,CACF,CACF,CAAC,EAiDL,OA5CA,EAAO,kBAAkB,EAAwB,UAAa,CAC5D,OACF,EAAE,EAGF,EAAO,kBAAkB,EAAuB,KAAO,IAAY,CACjE,GAAM,CAAE,KAAM,EAAU,UAAW,GAAa,EAAQ,OAExD,GAAI,IAAa,SAAU,CACzB,IAAM,EAAU,GAAqC,OAQrD,OAPK,EAOE,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,MAAM,MAFb,EAAkB,EAAS,CAAM,GAEb,QAAS,CAAC,CACnD,EARS,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,2BAA4B,CAAC,EAC7D,QAAS,EACX,CAMJ,CAGA,GAAI,EAAS,WAAW,UAAU,EAAG,CACnC,IAAM,EAAU,EAAS,MAAM,CAAiB,EAC1C,EAAQ,GAAqC,MAAQ,GACrD,EAAS,MAAM,EAAQ,eAAe,EAAS,CAAI,EACzD,MAAO,CACL,QAAS,CACP,CACE,KAAM,OACN,KAAM,GAAQ,SAAW,oBAAoB,GAC/C,CACF,EACA,QAAS,CAAC,CACZ,CACF,CAEA,MAAO,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,iBAAiB,GAAW,CAAC,EAC7D,QAAS,EACX,CACF,CAAC,EAEM,CACT,CAKA,SAAS,EACP,EACA,EAC2B,CAC3B,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAM,EAAc,GAAmC,CACrD,EAAQ,EACR,EAAQ,CAAM,CAChB,EACM,EAAiB,GAAmC,CACxD,EAAQ,EACR,EAAQ,CAAM,CAChB,EACM,EAAW,GAAuB,CACtC,EAAQ,EACR,EAAO,CAAK,CACd,EAEM,MAAsB,CAC1B,EAAQ,IAAI,WAAY,CAAU,EAClC,EAAQ,IAAI,cAAe,CAAa,EACxC,EAAQ,IAAI,QAAS,CAAO,CAC9B,EAEA,EAAQ,GAAG,WAAY,CAAU,EACjC,EAAQ,GAAG,cAAe,CAAa,EACvC,EAAQ,GAAG,QAAS,CAAO,EAE3B,EAAQ,OAAO,CAAM,EAAE,MAAO,GAAQ,CACpC,EAAQ,EACR,EAAO,aAAe,MAAQ,EAAU,MAAM,OAAO,CAAG,CAAC,CAAC,CAC5D,CAAC,CACH,CAAC,CACH,CC5IA,SAAgB,EACd,EACkE,CAClE,IAAI,EAAsC,KACtC,EAAwB,KAE5B,MAAO,CACL,KAAM,MACN,OAAO,EAAwB,CAC7B,EAAU,CACZ,EACA,MAAM,OAAQ,CACZ,GAAI,CAAC,EAAS,MAAU,MAAM,2CAA2C,EACzE,EAAS,EAAqB,CAAE,GAAG,EAAS,SAAQ,CAAC,CACvD,EACA,MAAM,MAAO,CACX,AAEE,KADA,MAAM,EAAO,MAAM,EACV,KAEb,EACA,WAAY,CACV,GAAI,CAAC,EAAQ,MAAU,MAAM,4CAA4C,EACzE,OAAO,CACT,CACF,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./tui-CeD_6rSo.cjs`);let e=require(`@modelcontextprotocol/sdk/server/index.js`),t=require(`@modelcontextprotocol/sdk/types.js`);function n(n){let{name:i,version:a,session:o,exposeCommands:s=!0}=n,c=new e.Server({name:i,version:a},{capabilities:{tools:{}}}),l=[{name:`submit`,description:`Submit a prompt to the AI agent and wait for the response`,inputSchema:{type:`object`,properties:{prompt:{type:`string`,description:`The prompt to send to the agent`}},required:[`prompt`]}}];if(s)for(let e of o.listCommands())l.push({name:`command_${e.name}`,description:e.description,inputSchema:{type:`object`,properties:{args:{type:`string`,description:`Command arguments`}}}});return c.setRequestHandler(t.ListToolsRequestSchema,async()=>({tools:l})),c.setRequestHandler(t.CallToolRequestSchema,async e=>{let{name:t,arguments:n}=e.params;if(t===`submit`){let e=n?.prompt;return e?{content:[{type:`text`,text:(await r(o,e)).response}]}:{content:[{type:`text`,text:`Error: prompt is required`}],isError:!0}}if(t.startsWith(`command_`)){let e=t.slice(8),r=n?.args??``,i=await o.executeCommand(e,r);return{content:[{type:`text`,text:i?.message??`Unknown command: ${e}`}],isError:!i}}return{content:[{type:`text`,text:`Unknown tool: ${t}`}],isError:!0}}),c}function r(e,t){return new Promise((n,r)=>{let i=e=>{s(),n(e)},a=e=>{s(),n(e)},o=e=>{s(),r(e)},s=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),e.submit(t).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}function i(e){let t=null,r=null;return{name:`mcp`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);r=n({...e,session:t})},async stop(){r&&=(await r.close(),null)},getServer(){if(!r)throw Error(`Transport not started. Call start() first.`);return r}}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../tui-CeD_6rSo.cjs`);exports.TuiTransport=e.t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"../tui-zmDTPk4b.js";export{e as TuiTransport};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`react`),l=s(c,1);c=s(c);let u=require(`ink`),d=require(`@robota-sdk/agent-framework`),f=require(`@robota-sdk/agent-core`),p=require(`marked`),m=require(`marked-terminal`);m=s(m,1);let h=require(`react/jsx-runtime`),g=require(`chalk`);g=s(g);let _=require(`string-width`);_=s(_,1);function v(e,t,n,r,i){return(0,l.useCallback)(async a=>{if(!a.startsWith(`/`)){await e.submit(a),n.setPendingPrompt(e.getPendingPrompt());return}let o=a.slice(1).split(/\s+/),s=o[0]?.toLowerCase()??``,c=o.slice(1).join(` `),l=await e.executeCommand(s,c);if(l){if(l.effects?.some(e=>e.type===`session-execution-started`)){n.setPendingPrompt(e.getPendingPrompt());return}y(l,e,t,n,r,i);return}n.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Unknown command "/${s}". Type /help for help.`)))},[e,t,n,r,i])}function y(e,t,n,r,i,a){let o=b(e.effects,n,r,a);if(r.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(e.message))),e.interaction!==void 0&&i.enqueueInteraction(e.interaction),o.length>0&&i.enqueueEffects(o),t.isInitialized){let e=t.getContextState();r.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})}}function b(e,t,n,r){if(e===void 0||e.length===0)return[];let i=[];for(let a of e){if(a.type===`conversation-history-cleared`){n.clearHistory();continue}if(a.type===`plugin-registry-reload-requested`){r?.(t);continue}i.push(a)}return i}function x(){let[e,t]=(0,l.useState)(null),n=(0,l.useRef)([]),r=(0,l.useRef)(!1),i=(0,l.useCallback)(()=>{if(r.current)return;let e=n.current[0];if(!e){t(null);return}r.current=!0,t({toolName:e.toolName,toolArgs:e.toolArgs,resolve:a=>{n.current.shift(),r.current=!1,t(null),e.resolve(a),setTimeout(()=>i(),0)}})},[]);return{permissionHandler:(0,l.useCallback)((e,t)=>new Promise(r=>{n.current.push({toolName:e,toolArgs:t,resolve:r}),i()}),[i]),permissionRequest:e}}function S(e,t){let n=null;return{schedule(){n||=setTimeout(()=>{n=null,e()},t)},flush(){n&&=(clearTimeout(n),null)}}}var C=class{history=[];streamingText=``;activeTools=[];isThinking=!1;isAborting=!1;pendingPrompt=null;contextState={percentage:0,usedTokens:0,maxTokens:0};executionWorkspaceSnapshot=null;selectedExecutionEntryId;onChange=null;streamBuf=``;debouncedStreamNotify=S(()=>this.notify(),300);notify(){this.onChange?.()}onTextDelta=e=>{this.streamBuf+=e,this.streamingText=this.streamBuf,this.debouncedStreamNotify.schedule()};onToolStart=e=>{this.activeTools=[...this.activeTools,e],this.notify()};onToolEnd=e=>{let t=this.activeTools.findLastIndex(t=>t.toolName===e.toolName&&t.isRunning);if(t!==-1){let n=[...this.activeTools];n[t]=e,this.activeTools=n}this.notify()};onThinking=e=>{this.isThinking=e,e?(this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[]):this.isAborting=!1,this.notify()};onComplete=e=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.contextState={percentage:e.contextState.usedPercentage,usedTokens:e.contextState.usedTokens,maxTokens:e.contextState.maxTokens},this.notify()};onInterrupted=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onError=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onContextUpdate=e=>{this.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})};syncHistory(e){e.length!==0&&(this.history=e.length>100?e.slice(-100):[...e],this.notify())}addEntry(e){let t=[...this.history,e];this.history=t.length>100?t.slice(-100):t,this.notify()}clearHistory(){this.history=[],this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()}setPendingPrompt(e){this.pendingPrompt=e,this.notify()}setAborting(e){this.isAborting=e,this.notify()}setContextState(e){this.contextState=e,this.notify()}syncExecutionWorkspaceSnapshot(e){let t=this.selectedExecutionEntryId,n=t!==void 0&&e.entries.some(e=>e.id===t)?t:e.selectedEntryId??e.entries[0]?.id;this.executionWorkspaceSnapshot={...e,...n?{selectedEntryId:n}:{}},this.selectedExecutionEntryId=n,this.notify()}selectExecutionWorkspaceEntry(e){this.executionWorkspaceSnapshot?.entries.some(t=>t.id===e)&&(this.selectedExecutionEntryId=e,this.executionWorkspaceSnapshot={...this.executionWorkspaceSnapshot,selectedEntryId:e},this.notify())}},w=class{queue=[];enqueueInteraction(e){this.queue.push({type:`interaction`,interaction:e})}enqueueEffects(e){e.length!==0&&this.queue.push({type:`effects`,effects:[...e]})}drain(){return this.queue.shift()}clear(){this.queue.length=0}};function T(e,t){let n=new d.InteractiveSession({cwd:e.cwd,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:t,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,language:e.language,agentName:e.agentName}),r=new d.CommandRegistry;for(let t of e.commandModules??[])r.addModule(t);return e.reloadPluginCommandSource?.(r),{interactiveSession:n,registry:r,manager:new C,commandEffectQueue:new w}}function E(e,t){t.syncHistory(e.getFullHistory())}function D(e,t){t.syncHistory(e.getFullHistory())}function O(e,t){try{t.syncExecutionWorkspaceSnapshot(e.getExecutionWorkspaceSnapshot({selectedEntryId:t.selectedExecutionEntryId}))}catch{}}function k(e){let[,t]=(0,l.useState)(0),[n,r]=(0,l.useState)(!1),{permissionHandler:i,permissionRequest:a}=x(),[o]=(0,l.useState)(()=>T(e,i)),{interactiveSession:s,registry:c,manager:u,commandEffectQueue:d}=o;if(u.onChange=()=>t(e=>e+1),u.history.length===0){let e=s.getFullHistory();e.length>0&&u.syncHistory(e)}(0,l.useEffect)(()=>{if(!e.transportRegistry)return;let t=e.transportRegistry;return t.startAll(s).catch(()=>void 0),()=>{t.stopAll().catch(()=>void 0)}},[s,e.transportRegistry]),(0,l.useEffect)(()=>{let e=()=>E(s,u),t=()=>D(s,u),n=e=>u.syncExecutionWorkspaceSnapshot(e.snapshot);s.on(`text_delta`,u.onTextDelta),s.on(`tool_start`,u.onToolStart),s.on(`tool_end`,u.onToolEnd),s.on(`thinking`,u.onThinking),s.on(`complete`,u.onComplete),s.on(`interrupted`,u.onInterrupted),s.on(`error`,u.onError),s.on(`context_update`,u.onContextUpdate),s.on(`compact`,e),s.on(`skill_activation`,t),s.on(`execution_workspace_event`,n);let r=setInterval(()=>{try{let e=s.getContextState();u.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens});let t=s.getFullHistory();t.length>0&&u.syncHistory(t),O(s,u),clearInterval(r)}catch{}},200);return()=>{clearInterval(r),s.off(`text_delta`,u.onTextDelta),s.off(`tool_start`,u.onToolStart),s.off(`tool_end`,u.onToolEnd),s.off(`thinking`,u.onThinking),s.off(`complete`,u.onComplete),s.off(`interrupted`,u.onInterrupted),s.off(`error`,u.onError),s.off(`context_update`,u.onContextUpdate),s.off(`compact`,e),s.off(`skill_activation`,t),s.off(`execution_workspace_event`,n)}},[s,u]),(0,l.useEffect)(()=>{u.syncHistory(s.getFullHistory()),O(s,u),u.isThinking||u.setPendingPrompt(s.getPendingPrompt())},[u.isThinking,s,u]);let p=v(s,c,u,d,e.reloadPluginCommandSource),m=(0,l.useCallback)(()=>{u.setAborting(!0),s.abort()},[s,u]),h=(0,l.useCallback)(()=>{s.cancelQueue(),u.setPendingPrompt(null)},[s,u]),g=(0,l.useCallback)(async(e=`prompt_input_exit`)=>{n||(r(!0),u.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Shutting down...`))),await s.shutdown({reason:e,message:`CLI shutdown`}))},[s,u,n]),_=(0,l.useCallback)(e=>u.selectExecutionWorkspaceEntry(e),[u]),y=(0,l.useCallback)(e=>s.readExecutionWorkspaceDetail(e),[s]);return{interactiveSession:s,registry:c,commandEffectQueue:d,history:u.history,addEntry:e=>u.addEntry(e),streamingText:u.streamingText,activeTools:u.activeTools,isThinking:u.isThinking,isAborting:u.isAborting,isShuttingDown:n,pendingPrompt:u.pendingPrompt,executionWorkspaceSnapshot:u.executionWorkspaceSnapshot,selectedExecutionEntryId:u.selectedExecutionEntryId,permissionRequest:a,contextState:u.contextState,handleSubmit:p,handleAbort:m,handleCancelQueue:h,handleShutdown:g,selectExecutionWorkspaceEntry:_,readExecutionWorkspaceDetail:y}}function A(){return{listInstalled:async()=>[],listAvailablePlugins:async()=>[],install:async()=>void 0,uninstall:async()=>void 0,enable:async()=>void 0,disable:async()=>void 0,marketplaceAdd:async()=>``,marketplaceRemove:async()=>void 0,marketplaceUpdate:async()=>void 0,marketplaceList:async()=>[],reloadPlugins:async()=>({loadedPluginCount:0})}}function ee(e){return(0,l.useMemo)(()=>A(),[])}function j(e,t){for(let n of e){if(n.type===`model-change-requested`)return t.requestModelChange(n.modelId),!0;if(n.type===`language-change-requested`)return M(n.language,t),!0;if(n.type===`settings-reset-requested`)return N(t),!0;if(n.type===`session-exit-requested`)return t.requestShutdown(n.reason??`prompt_input_exit`,n.message??`User requested exit`),!0;if(n.type===`session-restart-requested`)return t.requestShutdown(n.reason,n.message),!0;if(n.type===`plugin-tui-requested`)return t.openPluginTUI(),!0;if(n.type===`settings-tui-requested`)return t.openTransportTUI(),!0;if(n.type===`agent-switcher-requested`)return t.openAgentSwitcher(),!0;if(n.type===`session-picker-requested`)return t.openSessionPicker(),!0;if(n.type===`session-renamed`)return t.renameSession(n.name),!0;if(n.type===`statusline-settings-patch`&&(0,d.isStatusLineCommandSettingsPatch)(n.patch))return t.applyStatusLinePatch(n.patch)}return!1}function M(e,t){let n=t.cliAdapter.getUserSettingsPath(),r=t.cliAdapter.readSettings(n);r.language=e,t.cliAdapter.writeSettings(n,r),t.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Language set to "${e}". Restarting...`))),t.requestShutdown(`other`,`Language change restart`)}function N(e){let t=e.cliAdapter.getUserSettingsPath();e.cliAdapter.deleteSettings(t)?e.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Deleted ${t}. Exiting...`))):e.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`No user settings found.`))),e.requestShutdown(`other`,`Reset settings restart`)}const P=(0,c.createContext)(null),te=P.Provider;function F(){let e=(0,c.useContext)(P);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function ne(e){return`Change model to ${(0,f.getModelName)(e)}? This will exit the current session so the next session uses it.`}function I(e){return`Model changed to ${(0,f.getModelName)(e)}. Exiting so the next session uses it.`}function L(e){let t=e.applyModelChange;if(!t){e.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Model change unavailable: no adapter provided.`)));return}let n=e.providerOverride===void 0?void 0:{providerOverride:e.providerOverride};try{t(e.cwd,e.modelId,n),e.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(I(e.modelId)))),e.requestShutdown(`other`,`Model change applied`)}catch(t){e.addEntry((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Failed: ${t instanceof Error?t.message:String(t)}`)))}}function R(e){e((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Model change cancelled.`)))}function re({cwd:e,providerOverride:t,interactiveSession:n,commandEffectQueue:r,addEntry:i,baseHandleSubmit:a,setSessionName:o,setStatusLineSettings:s,showSessionPickerOnStart:c,openAgentSwitcher:d}){let{exit:p}=(0,u.useApp)(),m=F(),[h,g]=(0,l.useState)(null),_=(0,l.useRef)(null),[v,y]=(0,l.useState)(null),b=(0,l.useRef)(null),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(c??!1),[T,E]=(0,l.useState)(!1),D=(0,l.useCallback)((e,t)=>{i((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Shutting down...`))),setTimeout(()=>{n.shutdown({reason:e,message:t}).finally(()=>p())},500)},[n,i,p]),O=(0,l.useCallback)(e=>j(e,{addEntry:i,requestShutdown:D,requestModelChange:e=>{_.current=e,g(e)},openPluginTUI:()=>S(!0),openSessionPicker:()=>w(!0),openTransportTUI:()=>E(!0),openAgentSwitcher:()=>d?.(),renameSession:e=>{n.setName(e),o(e)},applyStatusLinePatch:e=>(s(m.applyStatusLineSettings(m.getUserSettingsPath(),e)),!0),cliAdapter:m}),[i,m,n,D,o,s]),k=(0,l.useCallback)(e=>{if(e.message.length>0&&i((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(e.message))),e.interaction!==void 0){b.current=e.interaction,y(e.interaction.prompt);return}b.current=null,y(null),e.effects!==void 0&&e.effects.length>0&&O(e.effects)},[i,O]),A=(0,l.useCallback)(()=>{let e=r.drain();if(e===void 0)return!1;if(e.type===`interaction`){let{interaction:t}=e;return b.current=t,y(t.prompt),!0}return O(e.effects)},[O,r]);return{handleSubmit:(0,l.useCallback)(async e=>{await a(e),A()},[a,A]),pendingModelId:h,pendingInteractionPrompt:v,showPluginTUI:x,showSessionPicker:C,showTransportTUI:T,setPendingModelId:g,setShowPluginTUI:S,setShowSessionPicker:w,setShowTransportTUI:E,handleModelConfirm:(0,l.useCallback)(n=>{let r=_.current;g(null),_.current=null,n===0&&r?L({cwd:e,modelId:r,providerOverride:t,addEntry:i,requestShutdown:D,applyModelChange:(e,t,n)=>(m.applyActiveModelChange(e,t,n),{applied:!0})}):R(i)},[e,t,i,m,D]),handleInteractionSubmit:(0,l.useCallback)(async e=>{let t=b.current;if(t===null){y(null);return}try{k(await t.submit(e))}catch(e){b.current=null,y(null),i((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Failed: ${e instanceof Error?e.message:String(e)}`)))}},[i,k]),handleInteractionCancel:(0,l.useCallback)(()=>{let e=b.current;if(b.current=null,y(null),e?.cancel===void 0){i((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Command interaction cancelled.`)));return}Promise.resolve(e.cancel()).then(e=>k(e)).catch(e=>{i((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Failed: ${e instanceof Error?e.message:String(e)}`)))})},[i,k])}}function ie(e){let t={...d.DEFAULT_STATUS_LINE_COMMAND_SETTINGS},n=e.statusline;return z(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function ae(){let e=F();return(0,l.useState)(()=>ie(e.readSettings(e.getUserSettingsPath())))}const B=`\x1B[0m`,V=` `,oe=m.default;function se(e){return e===void 0?process.env.NO_COLOR||process.env.FORCE_COLOR===`0`?!1:process.env.FORCE_COLOR?!0:!!process.stdout.isTTY:e}function ce(e){return e?.trim().toLowerCase()===`diff`}function le(e,t,n){let r=`${V}${e}`.padEnd(t);return n?e.startsWith(`+`)?`[48;5;22m[38;5;120m${r}${B}`:e.startsWith(`-`)?`[48;5;52m[38;5;210m${r}${B}`:r.trimEnd():r.trimEnd()}function H(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return le(e,n,t);let r=`${V}${e}`;return t?e.startsWith(`@@`)?`[36m${r}${B}`:e.startsWith(`diff `)||e.startsWith(`index `)?`[2m${r}${B}`:r:r}function ue(e,t){let n=e.reduce((e,t)=>Math.max(e,4+t.length),0);return t===void 0?n:Math.max(n,t)}function de(e,t,n){let r=e.split(`
|
|
2
|
+
`),i=ue(r,n);return`${r.map(e=>H(e,t,i)).join(`
|
|
3
|
+
`)}\n\n`}function U(e,t){let n=new oe(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>ce(i)?de(n,e,t):r(n,i,a),n}function W(e,t={}){let n=p.marked.parse(e,{renderer:U(se(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function G(e){let t=e.lines.length>12?fe(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>K(e,n)),i=e.lines.length>12;return{file:e.file,markdown:["```diff",...r,"```"].join(`
|
|
4
|
+
`),truncated:i,remainingLineCount:i?e.lines.length-t.length:0}}function K(e,t){if(e.type===`hunk`)return e.text;let n=e.lineNumber.toString().padStart(t,` `);return e.type===`remove`?`- ${n} | ${e.text}`:e.type===`add`?`+ ${n} | ${e.text}`:` ${n} | ${e.text}`}function fe(e){let t=pe(e),n=[];for(let e of t){if(n.length===0&&e.length>10)return e.slice(0,10);if(n.length+e.length>10)break;n.push(...e)}return n.length>0?n:e.slice(0,10)}function pe(e){let t=[],n=[];for(let r of e){if(r.type===`hunk`&&n.length>0){t.push(n),n=[r];continue}n.push(r)}return n.length>0&&t.push(n),t}function q({file:e,lines:t}){let n=G({file:e,lines:t});return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginLeft:4,children:[n.file&&(0,h.jsxs)(u.Text,{color:`white`,dimColor:!0,children:[`│ `,n.file]}),(0,h.jsx)(u.Text,{children:W(n.markdown)}),n.truncated&&(0,h.jsxs)(u.Text,{color:`white`,dimColor:!0,children:[`│ ... and `,n.remainingLineCount,` more lines`]})]})}function me({entry:e}){let t=e.data;if(!t)return(0,h.jsx)(h.Fragment,{});let n=t.promptTokens===void 0?`?`:J(t.promptTokens),r=t.completionTokens===void 0?`?`:J(t.completionTokens),i=J(t.totalTokens),a=`${Math.round(t.contextUsedPercentage)}% (${(0,f.formatTokenCount)(t.contextUsedTokens)}/${(0,f.formatTokenCount)(t.contextMaxTokens)})`,o=t.costStatus===`unknown`?`cost unknown`:`cost ${t.costStatus}`;return(0,h.jsx)(u.Box,{flexDirection:`column`,marginBottom:1,children:(0,h.jsxs)(u.Box,{children:[(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Usage:`,` `]}),(0,h.jsxs)(u.Text,{dimColor:!0,children:[t.kind,` `,i,` tokens (in `,n,` / out `,r,`) · Context `,a,` ·`,` `,o]})]})})}function J(e){return e<1e3?e.toLocaleString():(0,f.formatTokenCount)(e)}const he=new Set([`Bash`,`BackgroundProcess`]);function Y(e){if(!he.has(e.toolName)||!e.toolResultData)return;let t=ge(e.toolResultData),n=Se(t,`exitCode`),r=Ce(t,`success`),i=ye(X(_e(e.toolResultData,t))),a=i.slice(0,4),o=Math.max(0,i.length-a.length),s=e.result===`error`||r===!1||n!==void 0&&n!==0;return{status:s?`error`:`success`,statusLabel:ve(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function ge(e){try{return JSON.parse(e)}catch{return e}}function _e(e,t){if(!Z(t))return e;let n=xe(t,`output`);if(n!==void 0)return n;let r=xe(t,`stdout`),i=xe(t,`stderr`),a=xe(t,`error`),o=[];return r&&o.push(r),i&&o.push(be(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
|
|
5
|
+
`)}function ve(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function X(e){return e?e.replace(/\r\n/g,`
|
|
6
|
+
`).split(`
|
|
7
|
+
`):[]}function ye(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function be(e,t){return X(e).map(e=>`${t}${e}`).join(`
|
|
8
|
+
`)}function Z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function xe(e,t){if(!Z(e))return;let n=e[t];return typeof n==`string`?n:void 0}function Se(e,t){if(!Z(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Ce(e,t){if(!Z(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}function we({tool:e}){let t=Y(e);if(!t||t.statusLabel===`ok`&&t.previewLines.length===0&&!t.transcriptHint)return null;let n=t.status===`error`?`red`:`white`;return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginLeft:4,children:[t.statusLabel!==`ok`&&(0,h.jsx)(u.Text,{color:n,dimColor:!0,children:t.statusLabel}),t.previewLines.map((e,t)=>(0,h.jsx)(u.Text,{color:n,dimColor:!0,children:e},`${e}-${t}`)),t.transcriptHint&&(0,h.jsx)(u.Text,{dimColor:!0,children:t.transcriptHint})]})}function Te(e){return Y(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function Ee(e){return Y(e)?.status===`error`||e.result===`error`?`red`:e.isRunning||e.result===`denied`?`yellow`:`green`}function De(e){return`${Te(e)} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`}function Oe({role:e}){switch(e){case`user`:return(0,h.jsxs)(u.Text,{color:`green`,bold:!0,children:[`You:`,` `]});case`assistant`:return(0,h.jsxs)(u.Text,{color:`cyan`,bold:!0,children:[`Robota:`,` `]});case`system`:return(0,h.jsxs)(u.Text,{color:`yellow`,bold:!0,children:[`System:`,` `]});case`tool`:return(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}}function ke({message:e}){if(!(0,f.isToolMessage)(e))return(0,h.jsx)(h.Fragment,{});let t=e.name,n=e.content,r=null;try{let e=JSON.parse(n);Array.isArray(e)&&e.length>0&&typeof e[0].line==`string`&&(r=e)}catch{}if(r)return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsxs)(u.Box,{children:[(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]}),t&&(0,h.jsxs)(u.Text,{color:`white`,dimColor:!0,children:[`[`,t,`]`]})]}),(0,h.jsx)(u.Text,{children:` `}),r.map((e,t)=>(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[(0,h.jsxs)(u.Text,{color:`green`,children:[` `,`✓`,` `,e.line]}),e.diffLines&&e.diffLines.length>0&&(0,h.jsx)(q,{file:e.diffFile,lines:e.diffLines})]},t))]});let i=n.split(`
|
|
9
|
+
`).filter(e=>e.trim());return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsxs)(u.Box,{children:[(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]}),t&&(0,h.jsxs)(u.Text,{color:`white`,dimColor:!0,children:[`[`,t,`]`]})]}),(0,h.jsx)(u.Text,{children:` `}),i.map((e,t)=>(0,h.jsxs)(u.Text,{color:`green`,children:[` `,`✓`,` `,e]},t))]})}const Ae=c.default.memo(function({message:e}){if((0,f.isToolMessage)(e))return(0,h.jsx)(ke,{message:e});let t=e.content??``,n=e.state===`interrupted`;return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Box,{children:(0,h.jsx)(Oe,{role:e.role})}),(0,h.jsx)(u.Text,{children:` `}),(0,h.jsx)(u.Box,{marginLeft:2,children:(0,h.jsx)(u.Text,{wrap:`wrap`,children:(0,f.isAssistantMessage)(e)?W(t+(n?`
|
|
10
|
+
|
|
11
|
+
_(interrupted)_`:``)):t})})]})});function je({entry:e}){let t=e.data,n=t?.tools,r=t?.summary?.split(`
|
|
12
|
+
`)??[];return n&&n.length>0?(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Box,{children:(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),(0,h.jsx)(u.Text,{children:` `}),n.map((e,t)=>(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[(0,h.jsxs)(u.Text,{color:Ee(e),children:[` `,De(e)]}),(0,h.jsx)(we,{tool:e}),e.diffLines&&e.diffLines.length>0&&(0,h.jsx)(q,{file:e.diffFile,lines:e.diffLines})]},t))]}):(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Box,{children:(0,h.jsxs)(u.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),(0,h.jsx)(u.Text,{children:` `}),r.map((e,t)=>(0,h.jsxs)(u.Text,{color:`green`,children:[` `,e]},t))]})}function Me({entry:e}){let t=e.data,n=typeof t?.message==`string`?t.message:typeof t?.content==`string`?t.content:e.type;return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Box,{children:(0,h.jsxs)(u.Text,{color:`yellow`,bold:!0,children:[`System:`,` `]})}),(0,h.jsx)(u.Text,{children:` `}),(0,h.jsx)(u.Box,{marginLeft:2,children:(0,h.jsx)(u.Text,{wrap:`wrap`,children:n})})]})}function Ne({entry:e}){if(e.category===`chat`){let t=e.data;return(0,h.jsx)(Ae,{message:t})}return e.type===`tool-summary`?(0,h.jsx)(je,{entry:e}):e.type===`usage-summary`?(0,h.jsx)(me,{entry:e}):e.type===`tool-start`||e.type===`tool-end`?(0,h.jsx)(h.Fragment,{}):(0,h.jsx)(Me,{entry:e})}function Pe({history:e}){return(0,h.jsx)(u.Box,{flexDirection:`column`,children:e.map(e=>(0,h.jsx)(Ne,{entry:e},e.id))})}function Fe(e){let t=Ie(e),n=e.hasPendingPrompt&&t.kind!==`queued`?[`queued`]:[],r=[t.label,...n].join(` · `);return{...t,segments:n,text:r}}function Ie(e){return e.activeToolCount>0?{kind:`tools`,label:`Tools x${e.activeToolCount}`,color:`cyan`}:e.isThinking?{kind:`thinking`,label:`Thinking`,color:`yellow`}:e.activeBackgroundTaskCount>0?{kind:`background`,label:`Background x${e.activeBackgroundTaskCount}`,color:`cyan`}:e.hasPendingPrompt?{kind:`queued`,label:`Queued`,color:`yellow`}:{kind:`idle`,label:`Idle`,color:`gray`}}function Le(e){return e>=90?`red`:e>=70?`yellow`:`green`}function Re({isThinking:e,activeToolCount:t,activeBackgroundTaskCount:n,hasPendingPrompt:r}){let i=Fe({isThinking:e,activeToolCount:t,activeBackgroundTaskCount:n,hasPendingPrompt:r});return(0,h.jsx)(u.Text,{color:i.color,bold:i.kind!==`idle`,children:i.text})}function ze({percentage:e,usedTokens:t,maxTokens:n}){return(0,h.jsxs)(u.Text,{color:Le(e),children:[`Context: `,Math.round(e),`% (`,(0,f.formatTokenCount)(t),`/`,(0,f.formatTokenCount)(n),`)`]})}function Be({permissionMode:e}){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`Mode:`}),` `,(0,h.jsx)(u.Text,{children:e})]})}function Ve(e){return e!==`default`}function He({modelName:e,providerDisplayName:t}){return t===void 0?(0,h.jsx)(u.Text,{dimColor:!0,children:e}):(0,h.jsxs)(u.Text,{dimColor:!0,children:[t,` `,e]})}function Ue(e){let t=e.showGitBranch&&e.gitBranch!==void 0&&e.gitBranch.length>0,n=Ve(e.permissionMode);return(0,h.jsxs)(u.Text,{children:[(0,h.jsx)(Re,{isThinking:e.isThinking,activeToolCount:e.activeToolCount,activeBackgroundTaskCount:e.activeBackgroundTaskCount,hasPendingPrompt:e.hasPendingPrompt}),n&&(0,h.jsxs)(h.Fragment,{children:[` | `,(0,h.jsx)(Be,{permissionMode:e.permissionMode})]}),e.sessionName&&(0,h.jsxs)(h.Fragment,{children:[` | `,(0,h.jsx)(u.Text,{color:`magenta`,children:e.sessionName})]}),t&&(0,h.jsxs)(h.Fragment,{children:[` | `,(0,h.jsxs)(u.Text,{dimColor:!0,children:[`git: `,e.gitBranch]})]}),` | `,(0,h.jsx)(He,{modelName:e.modelName,providerDisplayName:e.providerDisplayName}),` | `,(0,h.jsx)(ze,{percentage:e.contextPercentage,usedTokens:e.contextUsedTokens,maxTokens:e.contextMaxTokens})]})}function We({permissionMode:e,modelName:t,providerDisplayName:n,sessionId:r,isThinking:i,activeToolCount:a=0,activeBackgroundTaskCount:o=0,hasPendingPrompt:s=!1,contextPercentage:c,contextUsedTokens:l,contextMaxTokens:d,sessionName:f,gitBranch:p,showGitBranch:m=!0,activeAgentLabel:g}){return(0,h.jsxs)(u.Box,{borderStyle:`single`,borderColor:`gray`,paddingLeft:1,paddingRight:1,justifyContent:`space-between`,children:[(0,h.jsx)(Ue,{permissionMode:e,modelName:t,providerDisplayName:n,isThinking:i,activeToolCount:a,activeBackgroundTaskCount:o,hasPendingPrompt:s,contextPercentage:c,contextUsedTokens:l,contextMaxTokens:d,sessionName:f,gitBranch:p,showGitBranch:m}),g!==void 0&&(0,h.jsxs)(u.Text,{color:`yellow`,bold:!0,children:[`[`,g,`]`]})]})}function Ge({cwd:e,permissionMode:t,modelId:n,providerType:r,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:l,contextState:u,sessionName:d,settings:f,activeAgentLabel:p}){let m=F(),g=(0,c.useMemo)(()=>m.getGitBranch(e),[m,e]),_=(0,c.useMemo)(()=>r===void 0?void 0:m.getProviderDisplayName(r),[m,r]);return f.enabled?(0,h.jsx)(We,{permissionMode:t,modelName:n??``,providerDisplayName:_,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:l,contextPercentage:u.percentage,contextUsedTokens:u.usedTokens,contextMaxTokens:u.maxTokens,sessionName:d,gitBranch:g,showGitBranch:f.gitBranch,activeAgentLabel:p}):null}const Ke=`[200~`,qe=`[201~`;function Je(e){return{value:e,cursor:e.length,isPasting:!1,pasteBuffer:``}}function Ye(e,t,n){return t===e.value?e:{...e,value:t,cursor:n==null?t.length:Math.min(n,t.length)}}function Xe(e,t,n,r){let i=Qe(e,t,r);if(i!==void 0)return i;let a=$e(e,t,n,r);if(a!==void 0)return a;let o=et(e,n,r);return o===void 0?ut(e,t):o}function Ze(e,t,n){let r=t.replace(/\r\n?/g,`
|
|
13
|
+
`);return r.length===0?{state:e,effect:{type:`none`}}:r.includes(`
|
|
14
|
+
`)&&n.canPaste?{state:e,effect:{type:`paste`,text:r,cursor:e.cursor}}:ut(e,r)}function Qe(e,t,n){if(t===Ke||t.startsWith(Ke))return at(e,t);if(e.isPasting)return ot(e,t,n)}function $e(e,t,n,r){if(n.ctrl===!0&&t===`c`||n.tab===!0)return{state:e,effect:{type:`none`}};if(n.return===!0)return{state:e,effect:{type:`submit`,value:e.value}};if(t.length>1&&(t.includes(`
|
|
15
|
+
`)||t.includes(`\r`))&&r.canPaste)return{state:e,effect:{type:`paste`,text:t.replace(/\r\n?/g,`
|
|
16
|
+
`),cursor:e.cursor}}}function et(e,t,n){if(t.upArrow===!0||t.downArrow===!0)return n.enableVerticalNavigation===!1?{state:e,effect:{type:`none`}}:st(e,t.upArrow===!0?`up`:`down`,n.availableWidth);if(t.leftArrow===!0)return ct(e,`left`);if(t.rightArrow===!0)return ct(e,`right`);if(t.backspace===!0||t.delete===!0)return lt(e)}function tt(e){if(!e||e.length===0)return``;let t=``;for(let n of e){let e=n.charCodeAt(0);e>31&&e!==127&&(t+=n)}return t}function nt(e,t,n){return{value:e.slice(0,t)+n+e.slice(t),cursor:t+n.length}}function rt(e,t,n){let r=0;for(let i=0;i<t&&i<e.length;i++){let t=(0,_.default)(e[i]),a=r%n;a+t>n&&(r+=n-a),r+=t}return r}function it(e,t,n){let r=0;for(let i=0;i<e.length;i++){if(r>=t)return i;let a=(0,_.default)(e[i]),o=r%n;o+a>n&&(r+=n-o),r+=a}return e.length}function at(e,t){return{state:{...e,isPasting:!0,pasteBuffer:t.slice(5)},effect:{type:`none`}}}function ot(e,t,n){if(t!==qe&&!t.includes(qe))return{state:{...e,pasteBuffer:e.pasteBuffer+t},effect:{type:`none`}};let r=t.split(qe)[0]??``;return Ze({...e,isPasting:!1,pasteBuffer:``},e.pasteBuffer+r,n)}function st(e,t,n){if(!n||n<=0)return{state:e,effect:{type:`none`}};let r=[...e.value],i=rt(r,e.cursor,n),a=t===`up`?i-n:i+n;if(a<0)return{state:e,effect:{type:`none`}};let o=it(r,a,n);return o===e.cursor?{state:e,effect:{type:`none`}}:{state:{...e,cursor:o},effect:{type:`render`}}}function ct(e,t){return t===`left`&&e.cursor>0?{state:{...e,cursor:e.cursor-1},effect:{type:`render`}}:t===`right`&&e.cursor<e.value.length?{state:{...e,cursor:e.cursor+1},effect:{type:`render`}}:{state:e,effect:{type:`none`}}}function lt(e){if(e.cursor===0)return{state:e,effect:{type:`none`}};let t=e.value.slice(0,e.cursor-1)+e.value.slice(e.cursor);return{state:{...e,value:t,cursor:e.cursor-1},effect:{type:`change`,value:t}}}function ut(e,t){let n=tt(t);if(n.length===0)return{state:e,effect:{type:`none`}};let r=nt(e.value,e.cursor,n);return{state:{...e,value:r.value,cursor:r.cursor},effect:{type:`change`,value:r.value}}}function dt({value:e,onChange:t,onSubmit:n,onPaste:r,placeholder:i=``,focus:a=!0,showCursor:o=!0,availableWidth:s,cursorHint:l=null,enableVerticalNavigation:d=!0}){let f=(0,c.useRef)(Je(e)),[,p]=(0,c.useState)(0);return f.current=Ye(f.current,e,l),ft({stateRef:f,onChange:t,onSubmit:n,onPaste:r,availableWidth:s,focus:a,enableVerticalNavigation:d,forceRender:p}),(0,h.jsx)(u.Text,{children:gt(f.current.value,f.current.cursor,i,o&&a)})}function ft(e){(0,u.usePaste)(t=>{mt(e,()=>Ze(e.stateRef.current,t,pt(e)))},{isActive:e.focus}),(0,u.useInput)((t,n)=>{mt(e,()=>Xe(e.stateRef.current,t,n,pt(e)))},{isActive:e.focus})}function pt(e){return{availableWidth:e.availableWidth,canPaste:e.onPaste!==void 0,enableVerticalNavigation:e.enableVerticalNavigation}}function mt(e,t){try{let n=t();e.stateRef.current=n.state,ht(n.effect,e.onChange,e.onSubmit,e.onPaste,e.forceRender)}catch{}}function ht(e,t,n,r,i){e.type===`change`?t(e.value):e.type===`submit`?n?.(e.value):e.type===`paste`?r?.(e.text,e.cursor):e.type===`render`&&i(e=>e+1)}function gt(e,t,n,r){if(!r)return e.length>0?e:n?g.default.gray(n):``;if(e.length===0)return n.length>0?g.default.inverse(n[0])+g.default.gray(n.slice(1)):g.default.inverse(` `);let i=[...e],a=``;for(let e=0;e<i.length;e++){let n=i[e]??``;a+=e===t?g.default.inverse(n):n}return t>=i.length&&(a+=g.default.inverse(` `)),a}const _t=[`#666666`,`#888888`,`#aaaaaa`,`#888888`];function vt({text:e}){let[t,n]=(0,c.useState)(0);return(0,c.useEffect)(()=>{let e=setInterval(()=>{n(e=>e+1)},400);return()=>clearInterval(e)},[]),(0,h.jsx)(u.Text,{children:[...e].map((e,n)=>(0,h.jsx)(u.Text,{color:_t[(t+Math.floor(n/4))%_t.length],children:e},n))})}function yt(){let{stdout:e}=(0,u.useStdout)(),t=()=>Math.max(40,(e.columns??80)-4),[n,r]=(0,c.useState)(t);return(0,c.useEffect)(()=>{let n=()=>r(t());return e.on(`resize`,n),()=>{e.off(`resize`,n)}},[e]),n}function bt(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function xt(e){let{cmd:t,isSelected:n,showSlash:r,rowWidth:i,nameColWidth:a}=e,o=n?`▸ `:` `,s=n?`cyan`:void 0,c=!n,l=bt(t.displayName??t.name,a);return(0,h.jsx)(u.Box,{width:i,children:(0,h.jsx)(u.Text,{color:s,dimColor:c,wrap:`truncate-end`,children:r?`${o}/${l} ${t.description??``}`:`${o}${l} ${t.description??``}`})})}function St({commands:e,selectedIndex:t,visible:n,isSubcommandMode:r}){let i=yt();if(!n||e.length===0)return null;let a=Ct(t,e.length),o=e.slice(a,a+8),s=Math.min(20,Math.max(...o.map(e=>(e.displayName??e.name).length)));return(0,h.jsx)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`gray`,paddingX:1,children:o.map((e,n)=>(0,h.jsx)(xt,{cmd:e,isSelected:a+n===t,showSlash:!r,rowWidth:i,nameColWidth:s},e.name))})}function Ct(e,t){if(t<=8||e<8)return 0;let n=t-8;return Math.min(e-8+1,n)}const wt=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function Tt(e,t){return e.replace(wt,(e,n)=>t.get(Number(n))??``)}function Et(e){if(!e.startsWith(`/`))return{isSlash:!1,parentCommand:``,filter:``};let t=e.slice(1),n=t.indexOf(` `);return n===-1?{isSlash:!0,parentCommand:``,filter:t}:{isSlash:!0,parentCommand:t.slice(0,n),filter:t.slice(n+1)}}function Dt(e,t){let[n,r]=(0,l.useState)(0),[i,a]=(0,l.useState)(!1),o=l.default.useRef(e);o.current!==e&&(o.current=e,i&&a(!1));let s=Et(e),c=s.isSlash&&s.parentCommand.length>0,u=(0,l.useMemo)(()=>{if(!t||!s.isSlash||i)return[];if(c){let e=t.getSubcommands(s.parentCommand);if(e.length===0)return[];if(!s.filter)return e;let n=s.filter.toLowerCase();return e.filter(e=>e.name.toLowerCase().startsWith(n))}return t.getCommands(s.filter)},[t,s.isSlash,s.parentCommand,s.filter,i,c]),d=s.isSlash&&u.length>0&&!i;return n>=u.length&&u.length>0&&r(u.length-1),{showPopup:d,filteredCommands:u,selectedIndex:n,setSelectedIndex:r,isSubcommandMode:c,setShowPopup:e=>{a(typeof e==`function`?t=>!e(!t):!e)}}}function Ot(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.escape===!0)return`close`;if(e.tab===!0)return`complete`}function kt(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function At(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function jt(){return{selectedIndex:null,draft:``}}function Mt(e,t,n,r){if(t.length===0)return{value:e,cursorHint:e.length,state:n};if(r===`previous`){let r=n.selectedIndex===null?t.length-1:Math.max(0,n.selectedIndex-1),i=t[r]??e;return{value:i,cursorHint:i.length,state:{selectedIndex:r,draft:n.selectedIndex===null?e:n.draft}}}if(n.selectedIndex===null)return{value:e,cursorHint:e.length,state:n};if(n.selectedIndex<t.length-1){let r=n.selectedIndex+1,i=t[r]??e;return{value:i,cursorHint:i.length,state:{...n,selectedIndex:r}}}return{value:n.draft,cursorHint:n.draft.length,state:jt()}}function Nt(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function Pt(e){let t=[];for(let n of e){if(n.category!==`chat`||n.type!==`user`)continue;let e=n.data;typeof e?.content==`string`&&(t=Nt(t,e.content))}return t}function Ft(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function It(e,t){let n=Et(e);return n.parentCommand?{type:`insert`,value:`/${n.parentCommand} ${t.name} `}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`insert`,value:`/${t.name} `}}function Lt(e,t){let n=Et(e);return n.parentCommand?{type:`submit`,value:`/${n.parentCommand} ${t.name}`}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function Rt(e,t,n,r){let i=r.split(`
|
|
17
|
+
`).length,a=`[Pasted text #${n} +${i} lines]`;return{value:e.slice(0,t)+a+e.slice(t),cursorHint:t+a.length,label:a,lineCount:i}}function zt(e){return e.trim().length>0}function Bt({onSubmit:e,onCancelQueue:t,isDisabled:n,isAborting:r,pendingPrompt:i,registry:a,sessionName:o,history:s}){let[l,d]=(0,c.useState)(``),[f,p]=(0,c.useState)(null),[m,g]=(0,c.useState)(jt),[_,v]=(0,c.useState)([]),y=(0,c.useMemo)(()=>Pt(s??[]),[s]),b=(0,c.useMemo)(()=>_.reduce((e,t)=>Nt(e,t),y),[y,_]),x=(0,c.useRef)(new Map),{columns:S}=(0,u.useWindowSize)(),C=S>0?S:80,w=Math.max(1,C-5),T=(0,c.useRef)(0),{showPopup:E,filteredCommands:D,selectedIndex:O,setSelectedIndex:k,isSubcommandMode:A,setShowPopup:ee}=Dt(l,a),j=(0,c.useCallback)((e,t)=>{T.current+=1;let n=T.current;x.current.set(n,e),d(r=>{let i=Rt(r,t,n,e);return p(i.cursorHint),i.value})},[]),M=(0,c.useCallback)(()=>{g(jt())},[]),N=(0,c.useCallback)(e=>{v(t=>Nt(t,e))},[]),P=(0,c.useCallback)(t=>{N(t),M(),e(t)},[e,N,M]),te=(0,c.useCallback)(e=>{let t=It(l,e);t.type===`insert`&&(d(t.value),t.selectedIndex!==void 0&&k(t.selectedIndex))},[l,k]),F=(0,c.useCallback)(e=>{let t=Lt(l,e);if(t.type===`insert`){d(t.value),t.selectedIndex!==void 0&&k(t.selectedIndex);return}d(``),P(t.value)},[l,P,k]),ne=(0,c.useCallback)(e=>{if(!zt(e))return;if(E&&D[O]){F(D[O]);return}let t=Tt(e.trim(),x.current);d(``),x.current.clear(),T.current=0,P(t)},[E,D,O,F,P]);(0,u.useInput)((e,t)=>{if(!E)return;let n=Ot(t);if(n===`previous`||n===`next`)k(e=>Ft(e,D.length,n));else if(n===`close`)ee(!1);else if(n===`complete`){let e=D[O];e&&te(e)}},{isActive:E&&!n}),(0,u.useInput)((e,t)=>{let n=At(t);if(!n)return;let r=Mt(l,b,m,n);d(r.value),p(r.cursorHint),g(r.state)},{isActive:!E&&!n&&!i}),(0,u.useInput)((e,n)=>{kt(n)===`cancelQueue`&&i&&t?.()},{isActive:!!i});let I=r?`yellow`:i?`cyan`:n?`gray`:`green`,L=Math.max(1,C-2),R=(()=>{if(o){let e=` "${o}" `,t=Math.max(0,L-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(L),label:``,right:`┐`}})();return(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[E&&(0,h.jsx)(St,{commands:D,selectedIndex:O,visible:E,isSubcommandMode:A}),(0,h.jsxs)(u.Text,{color:I,children:[R.left,R.label?(0,h.jsx)(u.Text,{backgroundColor:I,color:`black`,bold:!0,children:R.label}):null,R.right]}),(0,h.jsx)(u.Box,{borderStyle:`single`,borderTop:!1,borderColor:I,paddingLeft:1,children:r?(0,h.jsx)(u.Text,{color:`yellow`,children:` Interrupting...`}):i?(0,h.jsxs)(u.Text,{color:`cyan`,children:[` `,`Queued:`,` `,i.length>50?i.slice(0,47)+`...`:i,` `,(0,h.jsx)(u.Text,{dimColor:!0,children:`(Backspace to cancel)`})]}):n?(0,h.jsx)(vt,{text:` Waiting for response... (ESC to interrupt)`}):(0,h.jsxs)(u.Box,{children:[(0,h.jsx)(u.Text,{color:`green`,bold:!0,children:`> `}),(0,h.jsx)(dt,{value:l,onChange:e=>{d(e),M(),p(null)},onSubmit:ne,onPaste:j,placeholder:`Type a message or /help`,availableWidth:w,cursorHint:f,enableVerticalNavigation:!1})]})})]})}function Q(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function Vt(e){if(e.escape===!0)return`cancel`;if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function Ht(e){if(e.escape===!0)return`cancel`;if(e.leftArrow===!0||e.upArrow===!0)return`previous`;if(e.rightArrow===!0||e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function $(e,t,n){if(e.resolved)return{state:e,effect:{type:`none`}};if(t===`cancel`)return{state:{...e,resolved:!0},effect:{type:`cancel`}};if(n.enabled===!1||n.itemCount===0)return{state:e,effect:{type:`none`}};if(t===`select`){let t=Kt(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=Wt(e.selectedIndex,t,n),i=Gt(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function Ut(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=Kt(e.selectedIndex,t.itemCount),r=Gt(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function Wt(e,t,n){return t===`previous`?n.wrap===!0&&e===0?n.itemCount-1:Math.max(0,e-1):n.wrap===!0&&e===n.itemCount-1?0:Math.min(n.itemCount-1,e+1)}function Gt(e,t,n){let r=n.maxVisible??n.itemCount;return r<=0?0:e<t?e:e>=t+r?e-r+1:Math.max(0,t)}function Kt(e,t){return Math.min(Math.max(e,0),t-1)}function qt(e,t,n){let r=Ht({...t,escape:!1});if(r!==void 0)return r;if(n===2&&e===`y`)return{type:`shortcut`,index:0};if(n===2&&e===`n`)return{type:`shortcut`,index:1}}function Jt(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:typeof t==`string`?$(e,t,{itemCount:n}):{state:{...e,selectedIndex:t.index,resolved:!0},effect:{type:`select`,index:t.index}}}function Yt({message:e,options:t=[`Yes`,`No`],onSelect:n}){let[r,i]=(0,c.useState)(()=>Q()),a=(0,c.useRef)(r),o=(0,c.useCallback)(e=>{let r=Jt(a.current,e,t.length);a.current=r.state,i(r.state),r.effect.type===`select`&&n(r.effect.index)},[n,t.length]);return(0,u.useInput)((e,n)=>{let r=qt(e,n,t.length);r!==void 0&&o(r)}),(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,h.jsx)(u.Text,{color:`yellow`,children:e}),(0,h.jsx)(u.Box,{marginTop:1,children:t.map((e,t)=>(0,h.jsx)(u.Box,{marginRight:2,children:(0,h.jsxs)(u.Text,{color:t===r.selectedIndex?`cyan`:void 0,bold:t===r.selectedIndex,children:[t===r.selectedIndex?`> `:` `,e]})},e))}),(0,h.jsx)(u.Text,{dimColor:!0,children:` arrow keys to select, Enter to confirm`})]})}function Xt({items:e,renderItem:t,onSelect:n,onCancel:r,maxVisible:i=3}){let[a,o]=(0,c.useState)(()=>Q()),s=(0,c.useRef)(a),l=(0,c.useCallback)(t=>{let a=$(s.current,t,{itemCount:e.length,maxVisible:i});if(s.current=a.state,o(a.state),a.effect.type===`cancel`)r();else if(a.effect.type===`select`){let t=e[a.effect.index];t!==void 0&&n(t)}},[e,i,r,n]);if((0,u.useInput)((e,t)=>{let n=Vt(t);n!==void 0&&l(n)}),e.length===0)return(0,h.jsx)(u.Box,{});let d=Ut(a,{itemCount:e.length,maxVisible:i});d!==a&&(s.current=d);let{selectedIndex:f,scrollOffset:p}=d,m=e.slice(p,p+i),g=p+i<e.length;return(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[p>0&&(0,h.jsxs)(u.Text,{dimColor:!0,children:[` ↑ `,p,` more above`]}),m.map((e,n)=>(0,h.jsx)(u.Box,{marginBottom:1,children:t(e,p+n===f)},p+n)),g&&(0,h.jsxs)(u.Text,{dimColor:!0,children:[` ↓ `,e.length-p-i,` more below`]})]})}function Zt(){return{value:``,resolved:!1}}function Qt(e,t){if(t.escape===!0)return{type:`cancel`};if(t.return===!0)return{type:`submit`};if(t.backspace===!0||t.delete===!0)return{type:`delete`};if(e&&t.ctrl!==!0&&t.meta!==!0)return{type:`insert`,value:e}}function $t(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:t.type===`cancel`?{state:{...e,resolved:!0},effect:{type:`cancel`}}:t.type===`delete`?{state:{...e,value:e.value.slice(0,-1),error:void 0},effect:{type:`none`}}:t.type===`insert`?{state:{...e,value:e.value+t.value,error:void 0},effect:{type:`none`}}:en(e,n)}function en(e,t){let n=e.value.trim();if(!n&&!t.allowEmpty){let r=t.validate?.(n);return{state:r?{...e,error:r}:e,effect:{type:`none`}}}let r=t.validate?.(n);return r===void 0?{state:{...e,resolved:!0},effect:{type:`submit`,value:n}}:{state:{...e,error:r},effect:{type:`none`}}}function tn({title:e,description:t,placeholder:n,onSubmit:r,onCancel:i,validate:a,allowEmpty:o=!1,masked:s=!1}){let[l,d]=(0,c.useState)(()=>Zt()),f=(0,c.useRef)(l),p=(0,c.useCallback)(e=>{let t=$t(f.current,e,{allowEmpty:o,validate:a});f.current=t.state,d(t.state),t.effect.type===`cancel`?i():t.effect.type===`submit`&&r(t.effect.value)},[o,a,i,r]);return(0,u.useInput)((e,t)=>{let n=Qt(e,t);n!==void 0&&p(n)}),(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,h.jsx)(u.Text,{color:`yellow`,bold:!0,children:e}),(0,h.jsx)(nn,{description:t}),(0,h.jsxs)(u.Box,{marginTop:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,children:`> `}),l.value?(0,h.jsx)(u.Text,{children:s?`*`.repeat(l.value.length):l.value}):n?(0,h.jsx)(u.Text,{dimColor:!0,children:n}):null,(0,h.jsx)(u.Text,{color:`cyan`,children:`█`})]}),l.error&&(0,h.jsx)(u.Text,{color:`red`,children:l.error}),(0,h.jsx)(u.Text,{dimColor:!0,children:` Enter Submit Esc Cancel`})]})}function nn({description:e}){return e===void 0||e.length===0?null:(0,h.jsx)(u.Text,{dimColor:!0,children:e})}function rn({prompt:e,onSubmit:t,onCancel:n}){return e.kind===`text`?(0,h.jsx)(tn,{title:e.title,description:e.description,placeholder:e.placeholder,allowEmpty:e.allowEmpty,masked:e.masked,validate:e.validate,onSubmit:t,onCancel:n},`text:${e.title}`):(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[(0,h.jsx)(u.Text,{bold:!0,children:e.title}),e.description!==void 0&&e.description.length>0&&(0,h.jsx)(u.Text,{dimColor:!0,children:e.description}),(0,h.jsx)(Xt,{items:[...e.options],maxVisible:e.maxVisible,renderItem:(e,t)=>(0,h.jsxs)(u.Text,{color:t?`cyan`:void 0,children:[t?`> `:` `,e.label]}),onSelect:e=>t(e.value),onCancel:n})]})}const an=[`Allow`,`Allow always (this session)`,`Deny`];function on(e,t){let n=Ht({...t,escape:!1});if(n!==void 0)return n;if(e===`y`||e===`1`)return{type:`shortcut`,index:0};if(e===`a`||e===`2`)return{type:`shortcut`,index:1};if(e===`n`||e===`d`||e===`3`)return{type:`shortcut`,index:2}}function sn(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return ln(e,t.index);let n=$(e,t,{itemCount:an.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:cn(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function cn(e){return e===0?!0:e===1?`allow-session`:!1}function ln(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:cn(t)}}}function un(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}function dn({request:e}){let[t,n]=c.default.useState(()=>Q()),r=c.default.useRef(t),i=c.default.useRef(e);if(i.current!==e){i.current=e;let t=Q();r.current=t,n(t)}let a=c.default.useCallback(t=>{let i=sn(r.current,t);r.current=i.state,n(i.state),i.effect.type===`resolve`&&e.resolve(i.effect.decision)},[e]);return(0,u.useInput)((e,t)=>{let n=on(e,t);n!==void 0&&a(n)}),(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,h.jsx)(u.Text,{color:`yellow`,bold:!0,children:`[Permission Required]`}),(0,h.jsxs)(u.Text,{children:[`Tool:`,` `,(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:e.toolName})]}),(0,h.jsxs)(u.Text,{dimColor:!0,children:[` `,un(e.toolArgs)]}),(0,h.jsx)(u.Box,{marginTop:1,children:an.map((e,n)=>(0,h.jsx)(u.Box,{marginRight:2,children:(0,h.jsxs)(u.Text,{color:n===t.selectedIndex?`cyan`:void 0,bold:n===t.selectedIndex,children:[n===t.selectedIndex?`> `:` `,e]})},e))}),(0,h.jsx)(u.Text,{dimColor:!0,children:` left/right to select, Enter to confirm`})]})}function fn(e){return e.isRunning?{color:`yellow`,icon:`⟳`,strikethrough:!1}:e.result===`error`?{color:`red`,icon:`✗`,strikethrough:!0}:e.result===`denied`?{color:`yellowBright`,icon:`⊘`,strikethrough:!0}:{color:`green`,icon:`✓`,strikethrough:!1}}function pn(e){return e?(0,h.jsx)(u.Box,{marginBottom:1,children:(0,h.jsx)(u.Text,{color:`yellow`,children:`Thinking...`})}):(0,h.jsx)(h.Fragment,{})}function mn(e){return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Text,{color:`white`,bold:!0,children:`Tools:`}),(0,h.jsx)(u.Text,{children:` `}),e.map((e,t)=>{let{color:n,icon:r,strikethrough:i}=fn(e);return(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[(0,h.jsxs)(u.Text,{color:n,strikethrough:i,children:[` `,r,` `,e.toolName,`(`,e.firstArg,`)`]}),e.diffLines&&e.diffLines.length>0&&(0,h.jsx)(q,{file:e.diffFile,lines:e.diffLines})]},`${e.toolName}-${t}`)})]})}function hn({text:e,activeTools:t,isThinking:n=!1}){let r=t.length>0,i=e.length>0;return!r&&!i?pn(n):(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[r&&mn(t),i&&(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`Robota:`}),(0,h.jsx)(u.Text,{children:` `}),(0,h.jsx)(u.Box,{marginLeft:2,children:(0,h.jsx)(u.Text,{wrap:`wrap`,children:W(e)})})]})]})}function gn({title:e,items:t,onSelect:n,onBack:r,loading:i,error:a}){let[o,s]=(0,c.useState)(()=>Q()),l=(0,c.useRef)(o),d=!i&&!a,f=(0,c.useCallback)(e=>{let i=$(l.current,e,{itemCount:t.length,enabled:d});if(l.current=i.state,s(i.state),i.effect.type===`cancel`)r();else if(i.effect.type===`select`){let e=t[i.effect.index];e!==void 0&&n(e.value)}},[d,t,r,n]);(0,u.useInput)((e,t)=>{let n=Vt(t);n!==void 0&&f(n)});let p=Ut(o,{itemCount:t.length});p!==o&&(l.current=p);let m=p.selectedIndex;return(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,h.jsx)(u.Text,{color:`yellow`,bold:!0,children:e}),i&&(0,h.jsx)(u.Box,{marginTop:1,children:(0,h.jsx)(u.Text,{dimColor:!0,children:`Loading...`})}),a&&(0,h.jsxs)(u.Box,{marginTop:1,flexDirection:`column`,children:[(0,h.jsx)(u.Text,{color:`red`,children:a}),(0,h.jsx)(u.Text,{dimColor:!0,children:`Press Esc to go back`})]}),!i&&!a&&(0,h.jsx)(u.Box,{flexDirection:`column`,marginTop:1,children:t.map((e,t)=>(0,h.jsxs)(u.Box,{children:[(0,h.jsxs)(u.Text,{color:t===m?`cyan`:void 0,bold:t===m,children:[t===m?`> `:` `,e.label]}),e.hint&&(0,h.jsxs)(u.Text,{dimColor:!0,children:[` `,e.hint]})]},e.value))}),(0,h.jsx)(u.Text,{dimColor:!0,children:i||a?``:` ↑↓ Navigate Enter Select Esc Back`})]})}function _n(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function vn(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function yn(e,t,n,r){e===`browse`?r.push({screen:`marketplace-browse`,context:{marketplace:t}}):e===`update`?n.marketplaceUpdate(t).then(()=>{r.notify(`Updated marketplace "${t}".`),r.pop()}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)}):e===`remove`&&r.setConfirm({message:`Remove marketplace "${t}" and all its plugins?`,onConfirm:()=>{r.setConfirm(void 0),n.marketplaceRemove(t).then(()=>{r.notify(`Removed marketplace "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function bn(e,t,n,r){let i=`${e}@${t}`;n.find(t=>t.value===e)?.hint===`installed`?r.push({screen:`installed-action`,context:{pluginId:i}}):r.push({screen:`marketplace-install-scope`,context:{marketplace:t,pluginId:i}})}function xn(e,t,n,r){let i=e;n.install(t,i).then(()=>{r.notify(`Installed plugin "${t}" (${i} scope).`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})}function Sn(e,t,n){n.setConfirm({message:`Uninstall plugin "${e}"?`,onConfirm:()=>{n.setConfirm(void 0),t.uninstall(e).then(()=>{n.notify(`Uninstalled plugin "${e}".`),n.refresh()}).catch(e=>{n.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>n.setConfirm(void 0)})}function Cn(e,t,n,r){e===`uninstall`&&r.setConfirm({message:`Uninstall plugin "${t}"?`,onConfirm:()=>{r.setConfirm(void 0),n.uninstall(t).then(()=>{r.notify(`Uninstalled plugin "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function wn(e,t,n,r,i){let[a,o]=(0,l.useState)([]),[s,c]=(0,l.useState)(!1),[u,d]=(0,l.useState)();return(0,l.useEffect)(()=>{if(o([]),d(void 0),e===`marketplace-list`)c(!0),n.marketplaceList().then(e=>{let t=[{label:`Add Marketplace`,value:`__add__`}],n=e.map(e=>({label:e.name,value:e.name,hint:e.type}));o([...t,...n]),c(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),c(!1)});else if(e===`marketplace-browse`){let e=t??``;c(!0),n.listAvailablePlugins(e).then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.installed?`installed`:e.description}))),c(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),c(!1)})}else e===`installed-list`&&(c(!0),n.listInstalled().then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.description}))),c(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),c(!1)}))},[i,e,t,n,r]),{items:a,loading:s,error:u}}function Tn({callbacks:e,onClose:t,addMessage:n}){let[r,i]=(0,c.useState)([{screen:`main`}]),[a,o]=(0,c.useState)(),[s,l]=(0,c.useState)(0),u=r[r.length-1]??{screen:`main`},d=(0,c.useCallback)(e=>{i(t=>[...t,e])},[]),f=(0,c.useCallback)(()=>{i(e=>e.length<=1?(t(),e):e.slice(0,-1))},[t]),p=(0,c.useCallback)(e=>{i(n=>{let r=n.slice(0,Math.max(1,n.length-e));return r.length===0?(t(),n):r})},[t]),m=(0,c.useCallback)(e=>{n?.({role:`system`,content:e})},[n]),g=(0,c.useCallback)(()=>{l(e=>e+1)},[]),_=(0,c.useCallback)(e=>o(e),[o]),v={push:(0,c.useCallback)(e=>d({screen:e.screen,context:e.context}),[d]),pop:f,popN:p,notify:m,setConfirm:_,refresh:g},{items:y,loading:b,error:x}=wn(u.screen,u.context?.marketplace,e,s,r.length),S=(0,c.useCallback)(t=>{let n=u.screen,r=u.context;n===`main`?_n(t,v):n===`marketplace-list`?vn(t,v):n===`marketplace-action`?yn(t,r?.marketplace??``,e,v):n===`marketplace-browse`?bn(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?xn(t,r?.pluginId??``,e,v):n===`installed-list`?Sn(t,e,v):n===`installed-action`&&Cn(t,r?.pluginId??``,e,v)},[u,y,e,d,f,p,m,o,g]),C=(0,c.useCallback)(t=>{u.screen===`marketplace-add`&&e.marketplaceAdd(t).then(e=>{m(`Added marketplace "${e}" from ${t}.`),f()}).catch(e=>{m(`Error: ${e instanceof Error?e.message:String(e)}`),f()})},[u.screen,e,m,f]);if(a)return(0,h.jsx)(Yt,{message:a.message,onSelect:e=>{e===0?a.onConfirm():a.onCancel()}});let w=u.screen;return w===`marketplace-add`?(0,h.jsx)(tn,{title:`Add Marketplace Source`,placeholder:`owner/repo or git URL`,onSubmit:C,onCancel:f,validate:e=>e.includes(`/`)?void 0:`Must be owner/repo or a git URL`}):w===`marketplace-action`?(0,h.jsx)(gn,{title:`Marketplace: ${u.context?.marketplace??``}`,items:[{label:`Browse plugins`,value:`browse`},{label:`Update`,value:`update`},{label:`Remove`,value:`remove`}],onSelect:S,onBack:f},r.length):w===`marketplace-install-scope`?(0,h.jsx)(gn,{title:`Install scope for "${u.context?.pluginId??``}"`,items:[{label:`User scope`,value:`user`},{label:`Project scope`,value:`project`}],onSelect:S,onBack:f},r.length):w===`installed-action`?(0,h.jsx)(gn,{title:`Plugin: ${u.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:f},r.length):(0,h.jsx)(gn,{title:{main:`Plugin Management`,"marketplace-list":`Marketplace`,"marketplace-browse":`Browse: ${u.context?.marketplace??``}`,"installed-list":`Installed Plugins`}[w]??`Plugin Management`,items:{main:[{label:`Marketplace`,value:`marketplace`},{label:`Installed Plugins`,value:`installed`}]}[w]??y,onSelect:S,onBack:f,loading:b,error:x},`${w}-${r.length}-${s}`)}function En({entry:e,selected:t}){let n=e.config.enabled,r=n?`●`:`○`,i=n?`[enabled] `:`[disabled]`,a=e.config.options?.port,o=typeof a==`number`?`port: ${a}`:``;return(0,h.jsx)(u.Box,{children:(0,h.jsx)(u.Text,{color:t?`cyan`:void 0,bold:t,children:`${r} ${e.transport.name.padEnd(18)} ${i} ${o}`})})}function Dn(e,t,n,r,i,a,o,s){(0,u.useInput)((0,c.useCallback)((c,l)=>{if(!n){if(l.upArrow){i(e=>Math.max(0,e-1));return}if(l.downArrow){i(t=>Math.min(e.length-1,t+1));return}if(l.escape||l.return){o();return}if(c===` `){let n=e[t];if(!n)return;a(!0),r.setEnabled(n.transport.name,!n.config.enabled).then(()=>{s(),a(!1)}).catch(()=>a(!1))}}},[n,e,t,r,o,s,i,a]))}function On({registry:e,onClose:t}){let[n,r]=(0,c.useState)(()=>e.getAll()),[i,a]=(0,c.useState)(0),[o,s]=(0,c.useState)(!1);return Dn(n,i,o,e,a,s,t,(0,c.useCallback)(()=>{r(e.getAll())},[e])),(0,h.jsxs)(u.Box,{flexDirection:`column`,paddingX:2,paddingY:1,children:[(0,h.jsx)(u.Text,{bold:!0,children:`Settings › Transports`}),(0,h.jsx)(u.Box,{marginTop:1,flexDirection:`column`,children:n.map((e,t)=>(0,h.jsx)(En,{entry:e,selected:t===i},e.transport.name))}),(0,h.jsx)(u.Box,{marginTop:1,children:(0,h.jsx)(u.Text,{dimColor:!0,children:`↑↓ select space toggle enter/esc close`})}),o&&(0,h.jsx)(u.Box,{marginTop:1,children:(0,h.jsx)(u.Text,{color:`yellow`,children:`Saving…`})})]})}function kn({sessions:e,onSelect:t,onCancel:n}){return(0,h.jsxs)(u.Box,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[(0,h.jsx)(u.Text,{bold:!0,color:`cyan`,children:`Select a session to resume (ESC to cancel):`}),(0,h.jsx)(Xt,{items:[...e],renderItem:(e,t)=>{let n=e.preview?e.preview.slice(0,60)+(e.preview.length>60?`...`:``):``;return(0,h.jsxs)(u.Text,{children:[t?`> `:` `,(0,h.jsx)(u.Text,{bold:!0,children:e.name??e.id.slice(0,8)}),` `,(0,h.jsx)(u.Text,{dimColor:!0,children:new Date(e.updatedAt).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),` `,(0,h.jsxs)(u.Text,{dimColor:!0,children:[`msgs: `,e.messageCount]}),n?(0,h.jsxs)(h.Fragment,{children:[`
|
|
18
|
+
`,(0,h.jsx)(u.Text,{color:`gray`,children:n})]}):null]})},onSelect:e=>t(e.id),onCancel:n})]})}const An=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],jn=/\s+/g;function Mn(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function Nn(e){return Mn(e).filter(e=>An.includes(e.status)).length}function Pn(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:In(e),subtitle:Ln(e),statusLabel:Rn(e.status),preview:Bn(e.preview??e.currentAction),color:zn(e),isSelected:n};return{...r,accessibleText:Vn(r)}}function Fn(e){let t=e.text.trim().replace(jn,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function In(e){return e.kind===`main_thread`?e.title:e.kind===`background_group`?`${e.title} group`:e.taskKind===`agent`?`${e.title} agent`:e.taskKind===`process`?e.title||`Process`:e.taskKind===`scheduled`?e.title||`Scheduled`:e.title}function Ln(e){return e.kind===`main_thread`?e.subtitle:[e.taskKind,e.subtitle,e.attention===`none`?void 0:e.attention].filter(e=>typeof e==`string`&&e.length>0).join(` · `)||void 0}function Rn(e){return e.replace(/_/g,` `)}function zn(e){return e.attention===`failed`||e.status===`failed`?`red`:e.attention===`permission`||e.status===`waiting_permission`?`yellow`:e.status===`completed`?`green`:e.status===`cancelled`?`yellow`:An.includes(e.status)?`cyan`:`white`}function Bn(e){return e?.trim().replace(jn,` `)||void 0}function Vn(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function Hn(e,t={}){let n=Pn(e),r=Un(e)?`□`:`■`,i=[n.statusLabel,n.subtitle].filter(e=>typeof e==`string`&&e.length>0);return{connector:t.isLast===!1?`├`:`└`,marker:r,color:n.color,label:n.title,segments:i,preview:n.preview,accessibleText:[`${t.isLast===!1?`├`:`└`} ${r} ${n.title}`,...i,n.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}}function Un(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function Wn({entries:e}){return e.length===0?null:(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`Background work`}),e.map((t,n)=>{let r=Hn(t,{isLast:n===e.length-1});return(0,h.jsxs)(u.Text,{children:[`${r.connector} `,(0,h.jsx)(u.Text,{color:r.color,children:r.marker}),` ${r.label}`,r.segments.map((e,t)=>(0,h.jsx)(u.Text,{dimColor:!0,children:` · ${e}`},`${e}-${t}`)),r.preview?(0,h.jsx)(u.Text,{dimColor:!0,children:` · ${r.preview}`}):null]},t.id)})]})}function Gn({snapshot:e,selectedEntryId:t,onSelect:n,onClose:r}){let{normalized:i,visibleEntries:a,applyAction:o}=Kn({entries:[...e?.entries??[]],selectedEntryId:t,onSelect:n,onClose:r});return(0,u.useInput)((e,t)=>{let n=Vt(t);n!==void 0&&o(n)}),(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`Execution workspace`}),(0,h.jsx)(u.Box,{flexDirection:`column`,marginTop:1,children:a.length===0?(0,h.jsx)(u.Text,{dimColor:!0,children:`No workspace entries`}):a.map((e,n)=>(0,h.jsx)(Yn,{entry:e,isFocused:i.scrollOffset+n===i.selectedIndex,selectedEntryId:t},e.id))}),(0,h.jsx)(u.Text,{dimColor:!0,children:`Ctrl+B Close ↑↓ Navigate Enter Switch Esc Close`})]})}function Kn({entries:e,selectedEntryId:t,onSelect:n,onClose:r}){let[i,a]=(0,c.useState)(()=>Q()),o=(0,c.useRef)(i);(0,c.useEffect)(()=>{let n=Jn({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});o.current=n,a(n)},[e.length,t]);let s=Jn({selectedIndex:i.selectedIndex,scrollOffset:i.scrollOffset,itemCount:e.length});return s!==i&&(o.current=s),{normalized:s,visibleEntries:e.slice(s.scrollOffset,s.scrollOffset+8),applyAction:qn({entries:e,stateRef:o,setState:a,onSelect:n,onClose:r})}}function qn({entries:e,stateRef:t,setState:n,onSelect:r,onClose:i}){return a=>{let o=$(t.current,a,{itemCount:e.length,maxVisible:8}),s=o.effect.type===`select`||o.effect.type===`cancel`?{...o.state,resolved:!1}:o.state;if(t.current=s,n(s),o.effect.type===`cancel`)i();else if(o.effect.type===`select`){let t=e[o.effect.index];t&&r(t.id)}}}function Jn(e){return Ut({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function Yn({entry:e,isFocused:t,selectedEntryId:n}){let r=Pn(e,{selectedEntryId:n});return(0,h.jsxs)(u.Text,{children:[(0,h.jsx)(u.Text,{color:t?`cyan`:void 0,bold:t,children:t?`> `:` `}),(0,h.jsx)(u.Text,{color:r.color,children:r.radio}),(0,h.jsx)(u.Text,{color:t?`cyan`:void 0,bold:t,children:` ${r.title}`}),(0,h.jsx)(u.Text,{dimColor:!0,children:` · ${r.statusLabel}`}),r.subtitle?(0,h.jsx)(u.Text,{dimColor:!0,children:` · ${r.subtitle}`}):null,r.preview?(0,h.jsx)(u.Text,{dimColor:!0,children:` · ${r.preview}`}):null]})}function Xn({entry:e,page:t,loading:n,error:r}){let i=Pn(e,{selectedEntryId:e.id}),a=t?.records.slice(-12)??[];return(0,h.jsxs)(u.Box,{flexDirection:`column`,marginBottom:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`Viewing ${i.title}`}),(0,h.jsxs)(u.Text,{dimColor:!0,children:[i.statusLabel,i.subtitle?` · ${i.subtitle}`:``,i.preview?` · ${i.preview}`:``]}),n?(0,h.jsx)(u.Text,{dimColor:!0,children:`Loading workspace detail...`}):null,r?(0,h.jsx)(u.Text,{color:`red`,children:r}):null,!n&&!r&&a.length===0?(0,h.jsx)(u.Text,{dimColor:!0,children:`No detail yet`}):null,!n&&!r&&a.map(e=>(0,h.jsx)(u.Text,{color:Zn(e.kind),children:Fn(e)},e.id)),t?.nextCursor?(0,h.jsx)(u.Text,{dimColor:!0,children:`... more detail available`}):null]})}function Zn(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function Qn({message:e}){return(0,h.jsx)(u.Box,{paddingX:1,marginBottom:1,children:(0,h.jsx)(u.Text,{color:`yellow`,children:e})})}function $n(e){let[t,n]=(0,c.useState)(e.resumeSessionId),[r,i]=(0,c.useState)(e.showSessionPickerOnStart??!1);return(0,h.jsx)(te,{value:e.cliAdapter,children:(0,h.jsx)(er,{...e,showSessionPickerOnStart:r,resumeSessionId:t,onSessionSwitch:e=>{i(!1),n(e)}},t??`__new__`)})}function er(e){let t=e.cwd,{interactiveSession:n,registry:r,commandEffectQueue:i,history:a,addEntry:o,streamingText:s,activeTools:l,isThinking:p,isAborting:m,isShuttingDown:g,pendingPrompt:_,executionWorkspaceSnapshot:v,selectedExecutionEntryId:y,selectExecutionWorkspaceEntry:b,readExecutionWorkspaceDetail:x,permissionRequest:S,contextState:C,handleSubmit:w,handleAbort:T,handleCancelQueue:E,handleShutdown:D}=k({cwd:t,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,transportRegistry:e.transportRegistry,language:e.language,reloadPluginCommandSource:e.reloadPluginCommandSource,agentName:e.agentName}),O=ee(t),A=e.commandHostAdapters?.plugin??O,{exit:j}=(0,u.useApp)(),[M,N]=(0,c.useState)(e.sessionName),[P,te]=(0,c.useState)(),[F,I]=(0,c.useState)(!1),[L,R]=(0,c.useState)(null),[ie,z]=(0,c.useState)(),[B,V]=(0,c.useState)(!1),[oe,se]=ae(),ce=(0,c.useMemo)(()=>Mn(v),[v]),le=Nn(v),H=(0,c.useMemo)(()=>v?.entries.find(e=>e.id===y),[v,y]),{handleSubmit:ue,pendingModelId:de,pendingInteractionPrompt:U,showPluginTUI:W,showSessionPicker:G,showTransportTUI:K,setShowPluginTUI:fe,setShowSessionPicker:pe,setShowTransportTUI:q,handleModelConfirm:me,handleInteractionSubmit:J,handleInteractionCancel:he}=re({cwd:t,providerOverride:e.providerOverride,interactiveSession:n,commandEffectQueue:i,addEntry:o,baseHandleSubmit:w,setSessionName:N,setStatusLineSettings:se,showSessionPickerOnStart:e.showSessionPickerOnStart,openAgentSwitcher:()=>I(!0)}),Y=!H||H.kind===`main_thread`||H.controls.includes(`send`),ge=H&&H.kind!==`main_thread`?H.title:void 0,_e=(0,c.useMemo)(()=>v?.entries.find(e=>e.kind===`main_thread`)?.id,[v]),ve=(0,c.useCallback)(async e=>{H&&H.kind!==`main_thread`&&H.controls.includes(`send`)?await n.sendAgentJob(H.sourceId,e):await ue(e)},[H,ue,n]);(0,c.useEffect)(()=>{let e=n?.getName?.();e&&!M&&N(e)},[n,M]),(0,c.useEffect)(()=>{let t=!0;return e.startupUpdateNotice?.then(e=>{t&&e!==void 0&&te(e)}).catch(()=>{}),()=>{t=!1}},[e.startupUpdateNotice]),(0,c.useEffect)(()=>{let e=M?`Robota — ${M}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[M]),(0,u.useInput)((e,t)=>{!t.escape||!p||S||W||K||G||F||T()}),(0,u.useInput)((e,t)=>{!t.ctrl||e!==`b`||S||W||G||g||I(e=>!e)}),(0,u.useInput)((e,t)=>{!t.escape||p||S||W||K||G||F||H&&H.kind!==`main_thread`&&_e!==void 0&&b(_e)}),(0,u.useInput)((e,t)=>{!t.ctrl||e!==`c`||g||D(`prompt_input_exit`).finally(()=>j())}),(0,c.useEffect)(()=>{let e=()=>{g||D(`other`).finally(()=>j())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[D,j,g]),(0,c.useEffect)(()=>{if(!H||H.kind===`main_thread`){R(null),z(void 0),V(!1);return}let e=!0;return V(!0),z(void 0),x(H.id).then(t=>{e&&(R(t),V(!1))}).catch(t=>{e&&(z(t.message),V(!1))}),()=>{e=!1}},[v,x,H]);let X=e.permissionMode??`default`,ye=``;try{let e=n.getSession();X=e.getPermissionMode(),ye=e.getSessionId()}catch{}return(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[(0,h.jsxs)(u.Box,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[(0,h.jsx)(u.Text,{color:`cyan`,bold:!0,children:`
|
|
19
|
+
____ ___ ____ ___ _____ _
|
|
20
|
+
| _ \\ / _ \\| __ ) / _ \\_ _|/ \\
|
|
21
|
+
| |_) | | | | _ \\| | | || | / _ \\
|
|
22
|
+
| _ <| |_| | |_) | |_| || |/ ___ \\
|
|
23
|
+
|_| \\_\\\\___/|____/ \\___/ |_/_/ \\_\\
|
|
24
|
+
`}),(0,h.jsxs)(u.Text,{dimColor:!0,children:[` v`,e.version??`0.0.0`]})]}),P&&(0,h.jsx)(Qn,{message:P}),(0,h.jsxs)(u.Box,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[H&&H.kind!==`main_thread`?(0,h.jsx)(Xn,{entry:H,page:L,loading:B,error:ie}):(0,h.jsx)(Pe,{history:a}),g&&(0,h.jsx)(u.Box,{marginBottom:1,children:(0,h.jsx)(u.Text,{color:`yellow`,children:`Shutting down...`})}),(p||l.length>0)&&(0,h.jsx)(u.Box,{flexDirection:`column`,marginBottom:1,children:(0,h.jsx)(hn,{text:s,activeTools:l,isThinking:p})}),(0,h.jsx)(Wn,{entries:ce})]}),F&&(0,h.jsx)(Gn,{snapshot:v,selectedEntryId:y,onSelect:b,onClose:()=>I(!1)}),S&&(0,h.jsx)(dn,{request:S}),de&&(0,h.jsx)(Yt,{message:ne(de),onSelect:me}),U&&(0,h.jsx)(rn,{prompt:U,onSubmit:J,onCancel:he}),W&&(0,h.jsx)(Tn,{callbacks:A,onClose:()=>fe(!1),addMessage:e=>o((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(e.content)))}),K&&e.transportRegistry&&(0,h.jsx)(On,{registry:e.transportRegistry,onClose:()=>q(!1)}),G&&(0,h.jsx)(kn,{sessions:(0,d.listResumableSessionSummaries)(e.sessionStore,e.cwd),onSelect:t=>{pe(!1),e.onSessionSwitch(t)},onCancel:()=>{pe(!1),o((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Session resume cancelled.`)))}}),(0,h.jsx)(Ge,{cwd:t,permissionMode:X,modelId:e.modelId,providerType:e.providerType,sessionId:ye,isThinking:p,activeToolCount:l.length,activeBackgroundTaskCount:le,hasPendingPrompt:_!==null,contextState:C,sessionName:M,settings:oe,activeAgentLabel:ge}),(0,h.jsx)(Bt,{onSubmit:ve,onCancelQueue:E,isDisabled:!!S||W||K||G||F||g||U!==null||p&&!!_||!Y,isAborting:m,pendingPrompt:_,registry:r,sessionName:M,history:a}),(0,h.jsx)(u.Text,{children:` `})]})}async function tr(e){process.on(`unhandledRejection`,e=>{process.stderr.write(`\n[UNHANDLED REJECTION] ${e}\n`),e instanceof Error&&process.stderr.write(`${e.stack}\n`)}),await(0,u.render)((0,h.jsx)($n,{...e}),{exitOnCtrlC:!1}).waitUntilExit()}var nr=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await tr(this.options)}async stop(){}validateOptions(e){return!0}};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return nr}});
|