@robota-sdk/agent-transport 3.0.0-beta.65 → 3.0.0-beta.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -0
- package/dist/node/chunk-Bmb41Sf3.cjs +1 -0
- package/dist/node/headless/index.cjs +1 -1
- package/dist/node/headless/index.d.ts +2 -2
- package/dist/node/headless/index.js +1 -1
- package/dist/node/headless-B8yWkXW_.js +15 -0
- package/dist/node/headless-B8yWkXW_.js.map +1 -0
- package/dist/node/headless-Dp3kQVmo.cjs +14 -0
- package/dist/node/http/index.cjs +1 -1
- package/dist/node/http/index.d.ts +1 -1
- package/dist/node/http/index.js +1 -1
- package/dist/node/{http-DwO1AHG-.js → http-Br10Ps8m.js} +1 -1
- package/dist/node/http-Br10Ps8m.js.map +1 -0
- package/dist/node/http-Da6Kw4oy.cjs +1 -0
- package/dist/node/{index-B_rcr14p.d.ts → index-C5KNEBO9.d.ts} +2 -2
- package/dist/node/{index-B_rcr14p.d.ts.map → index-C5KNEBO9.d.ts.map} +1 -1
- package/dist/node/{index-Y0zHb1Bz.d.ts → index-C7DvsmEg.d.ts} +2 -2
- package/dist/node/{index-Y0zHb1Bz.d.ts.map → index-C7DvsmEg.d.ts.map} +1 -1
- package/dist/node/index-C9LWCL4l.d.ts.map +1 -1
- package/dist/node/{index-k3TUjA-T.d.ts → index-CP7kaYMg.d.ts} +17 -2
- package/dist/node/index-CP7kaYMg.d.ts.map +1 -0
- package/dist/node/index-CQsMNXAh.d.ts +67 -0
- package/dist/node/index-CQsMNXAh.d.ts.map +1 -0
- package/dist/node/{index-nBlMTFkZ.d.ts → index-DOA2KIYt.d.ts} +2 -2
- package/dist/node/{index-nBlMTFkZ.d.ts.map → index-DOA2KIYt.d.ts.map} +1 -1
- package/dist/node/{index-D34WUfFH.d.ts → index-Gby9H4q2.d.ts} +17 -2
- package/dist/node/index-Gby9H4q2.d.ts.map +1 -0
- package/dist/node/{index-CvXLpjJO.d.ts → index-X2Zg8FEY.d.ts} +2 -2
- package/dist/node/{index-CEs25wVk.d.ts.map → index-X2Zg8FEY.d.ts.map} +1 -1
- package/dist/node/index-rGmGTQ9o.d.ts +67 -0
- package/dist/node/index-rGmGTQ9o.d.ts.map +1 -0
- package/dist/node/{index-CEs25wVk.d.ts → index-yvGShbDx.d.ts} +2 -2
- package/dist/node/{index-CvXLpjJO.d.ts.map → index-yvGShbDx.d.ts.map} +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.ts +28 -6
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +2 -1
- package/dist/node/index.js.map +1 -0
- package/dist/node/mcp/index.cjs +1 -1
- package/dist/node/mcp/index.d.ts +1 -1
- package/dist/node/mcp/index.js +1 -1
- package/dist/node/{mcp-BXBwF6Wu.js → mcp-BAujHOMr.js} +1 -1
- package/dist/node/mcp-BAujHOMr.js.map +1 -0
- package/dist/node/mcp-Bl8jUfev.cjs +1 -0
- package/dist/node/tui/index.cjs +1 -1
- package/dist/node/tui/index.d.ts +2 -2
- package/dist/node/tui/index.js +1 -1
- package/dist/node/tui-B8G3yHrL.cjs +24 -0
- package/dist/node/tui-DUIfVw3G.js +25 -0
- package/dist/node/tui-DUIfVw3G.js.map +1 -0
- package/dist/node/ws/index.cjs +1 -1
- package/dist/node/ws/index.d.ts +1 -1
- package/dist/node/ws/index.js +1 -1
- package/dist/node/{ws-B-oRccFl.js → ws-BWel8nzl.js} +1 -1
- package/dist/node/ws-BWel8nzl.js.map +1 -0
- package/dist/node/ws-tCjj2gPu.cjs +1 -0
- package/package.json +19 -18
- package/src/headless/cli-input.ts +50 -0
- package/src/headless/headless-runner.ts +2 -1
- package/src/headless/headless-stream-json.ts +1 -0
- package/src/headless/headless-transport.ts +3 -2
- package/src/headless/index.ts +2 -0
- package/src/headless/print-terminal.ts +57 -0
- package/src/http/http-transport.ts +3 -3
- package/src/http/routes.ts +2 -1
- package/src/index.ts +2 -1
- package/src/mcp/mcp-server.ts +1 -0
- package/src/mcp/mcp-transport.ts +3 -2
- package/src/transport-registry.ts +100 -0
- package/src/tui/App.tsx +52 -34
- package/src/tui/BackgroundTaskPanel.tsx +4 -2
- package/src/tui/CjkTextInput.tsx +3 -2
- package/src/tui/ConfirmPrompt.tsx +2 -1
- package/src/tui/ExecutionWorkspaceDetailPane.tsx +7 -5
- package/src/tui/ExecutionWorkspaceSwitcher.tsx +8 -6
- package/src/tui/InputArea.tsx +20 -19
- package/src/tui/InteractivePrompt.tsx +5 -3
- package/src/tui/ListPicker.tsx +2 -1
- package/src/tui/MenuSelect.tsx +2 -1
- package/src/tui/MessageList.tsx +8 -6
- package/src/tui/PermissionPrompt.tsx +5 -3
- package/src/tui/PluginTUI.tsx +5 -3
- package/src/tui/SessionPicker.tsx +4 -2
- package/src/tui/SessionStatusBar.tsx +7 -3
- package/src/tui/SlashAutocomplete.tsx +4 -3
- package/src/tui/StatusBar.tsx +5 -3
- package/src/tui/StreamingIndicator.tsx +4 -2
- package/src/tui/TextPrompt.tsx +2 -1
- package/src/tui/ToolCommandOutput.tsx +4 -2
- package/src/tui/ToolDiffBlock.tsx +4 -2
- package/src/tui/TransportTUI.tsx +3 -2
- package/src/tui/UpdateNotice.tsx +1 -1
- package/src/tui/UsageSummaryEntry.tsx +3 -2
- package/src/tui/WaveText.tsx +1 -1
- package/src/tui/__tests__/fixtures/provider-setup-prompt-driver.tsx +7 -4
- package/src/tui/background-task-row-format.ts +2 -1
- package/src/tui/command-interaction-registry.ts +66 -0
- package/src/tui/command-interaction.ts +9 -35
- package/src/tui/create-default-tui-cli-adapter.ts +42 -0
- package/src/tui/flows/input-area-flow.ts +3 -2
- package/src/tui/hooks/command-effect-handler.ts +4 -3
- package/src/tui/hooks/side-effects-types.ts +1 -1
- package/src/tui/hooks/use-interactive-session-init.ts +4 -2
- package/src/tui/hooks/useAutocomplete.ts +1 -0
- package/src/tui/hooks/useInteractiveSession.ts +22 -19
- package/src/tui/hooks/usePermissionQueue.ts +2 -1
- package/src/tui/hooks/usePluginCallbacks.ts +1 -0
- package/src/tui/hooks/usePluginScreenData.ts +2 -1
- package/src/tui/hooks/useSideEffects.ts +8 -6
- package/src/tui/hooks/useSlashRouting.ts +4 -3
- package/src/tui/hooks/useStatusLineSettings.ts +4 -2
- package/src/tui/index.ts +3 -1
- package/src/tui/interactions/CommandConfirm.tsx +2 -1
- package/src/tui/interactions/CommandPicker.tsx +2 -1
- package/src/tui/render-markdown.ts +2 -1
- package/src/tui/render.tsx +12 -28
- package/src/tui/tui-cli-adapter-context.tsx +1 -0
- package/src/tui/tui-cli-adapter.ts +1 -1
- package/src/tui/tui-transport.ts +5 -4
- package/src/tui/utils/edit-diff.ts +1 -0
- package/src/tui/utils/tool-call-extractor.ts +1 -0
- package/src/ws/ws-background-messages.ts +1 -1
- package/src/ws/ws-handler.ts +6 -5
- package/src/ws/ws-transport-configurable.ts +6 -3
- package/src/ws/ws-transport.ts +3 -2
- package/dist/node/headless-CWEpJXFK.js +0 -7
- package/dist/node/headless-CWEpJXFK.js.map +0 -1
- package/dist/node/headless-DJ5pnxM6.cjs +0 -6
- package/dist/node/http-CuQE6V6t.cjs +0 -1
- package/dist/node/http-DwO1AHG-.js.map +0 -1
- package/dist/node/index-CSgNoyPK.d.ts +0 -85
- package/dist/node/index-CSgNoyPK.d.ts.map +0 -1
- package/dist/node/index-D34WUfFH.d.ts.map +0 -1
- package/dist/node/index-_dNm-2J3.d.ts +0 -85
- package/dist/node/index-_dNm-2J3.d.ts.map +0 -1
- package/dist/node/index-k3TUjA-T.d.ts.map +0 -1
- package/dist/node/mcp-BXBwF6Wu.js.map +0 -1
- package/dist/node/mcp-BiJsIywJ.cjs +0 -1
- package/dist/node/tui-BIpIcT7-.cjs +0 -24
- package/dist/node/tui-DBLn1T15.js +0 -25
- package/dist/node/tui-DBLn1T15.js.map +0 -1
- package/dist/node/ws-B-oRccFl.js.map +0 -1
- package/dist/node/ws-XRTSFZOK.cjs +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { CommandRegistry, IBackgroundTaskRunner, ICommandHostAdapters, ICommandModule, IInteractiveSession, IInteractiveSessionStore, IStatusLineCommandSettings, TShellExecFn, TStatusLineCommandSettingsPatch, TSubagentRunnerFactory } from "@robota-sdk/agent-framework";
|
|
2
|
-
import { IAIProvider, TPermissionMode, TUniversalValue } from "@robota-sdk/agent-core";
|
|
3
|
-
import { IConfigurableTransport, ITransportRegistryView } from "@robota-sdk/agent-interface-transport";
|
|
4
|
-
|
|
5
|
-
//#region src/tui/tui-cli-adapter.d.ts
|
|
6
|
-
interface ITuiCliAdapter {
|
|
7
|
-
getUserSettingsPath(): string;
|
|
8
|
-
readSettings(path: string): Record<string, TUniversalValue>;
|
|
9
|
-
writeSettings(path: string, settings: Record<string, TUniversalValue>): void;
|
|
10
|
-
deleteSettings(path: string): boolean;
|
|
11
|
-
applyStatusLineSettings(path: string, patch: TStatusLineCommandSettingsPatch): IStatusLineCommandSettings;
|
|
12
|
-
reloadPluginCommandSource(registry: CommandRegistry): void;
|
|
13
|
-
applyActiveModelChange(cwd: string, modelId: string, options?: {
|
|
14
|
-
providerOverride?: string;
|
|
15
|
-
}): {
|
|
16
|
-
applied: boolean;
|
|
17
|
-
};
|
|
18
|
-
getGitBranch(cwd: string): string | undefined;
|
|
19
|
-
getProviderDisplayName(type: string): string;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/tui/command-interaction.d.ts
|
|
23
|
-
type TOnMissingArgsAction = 'picker' | 'wizard' | 'confirm';
|
|
24
|
-
interface ITuiPickerItem {
|
|
25
|
-
label: string;
|
|
26
|
-
value: string;
|
|
27
|
-
description?: string;
|
|
28
|
-
}
|
|
29
|
-
interface ITuiCommandInteraction {
|
|
30
|
-
onMissingArgs?: TOnMissingArgsAction;
|
|
31
|
-
}
|
|
32
|
-
interface ITuiPickerInteraction extends ITuiCommandInteraction {
|
|
33
|
-
onMissingArgs: 'picker';
|
|
34
|
-
getItems(): ITuiPickerItem[];
|
|
35
|
-
}
|
|
36
|
-
interface ITuiConfirmInteraction extends ITuiCommandInteraction {
|
|
37
|
-
onMissingArgs: 'confirm';
|
|
38
|
-
message: string;
|
|
39
|
-
}
|
|
40
|
-
type TAnyTuiCommandInteraction = ITuiPickerInteraction | ITuiConfirmInteraction;
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/tui/render.d.ts
|
|
43
|
-
interface IRenderOptions {
|
|
44
|
-
cwd: string;
|
|
45
|
-
provider: IAIProvider;
|
|
46
|
-
providerOverride?: string | undefined;
|
|
47
|
-
providerType?: string | undefined;
|
|
48
|
-
modelId?: string;
|
|
49
|
-
language?: string;
|
|
50
|
-
permissionMode?: TPermissionMode;
|
|
51
|
-
maxTurns?: number;
|
|
52
|
-
version?: string;
|
|
53
|
-
sessionStore?: IInteractiveSessionStore;
|
|
54
|
-
resumeSessionId?: string;
|
|
55
|
-
showSessionPickerOnStart?: boolean;
|
|
56
|
-
forkSession?: boolean;
|
|
57
|
-
sessionName?: string;
|
|
58
|
-
backgroundTaskRunners?: IBackgroundTaskRunner[];
|
|
59
|
-
subagentRunnerFactory?: TSubagentRunnerFactory;
|
|
60
|
-
commandModules?: readonly ICommandModule[];
|
|
61
|
-
commandHostAdapters?: ICommandHostAdapters;
|
|
62
|
-
shellExec?: TShellExecFn;
|
|
63
|
-
startupUpdateNotice?: Promise<string | undefined>;
|
|
64
|
-
transportRegistry?: ITransportRegistryView<IInteractiveSession>;
|
|
65
|
-
cliAdapter: ITuiCliAdapter;
|
|
66
|
-
reloadPluginCommandSource?: (registry: CommandRegistry) => void;
|
|
67
|
-
agentName?: string;
|
|
68
|
-
resolveInteraction?: (commandName: string) => ITuiCommandInteraction | undefined;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/tui/tui-transport.d.ts
|
|
72
|
-
declare class TuiTransport implements IConfigurableTransport<IInteractiveSession> {
|
|
73
|
-
readonly name = "tui";
|
|
74
|
-
readonly defaultEnabled = true;
|
|
75
|
-
readonly optionsSchema: {};
|
|
76
|
-
private readonly options;
|
|
77
|
-
constructor(options: IRenderOptions);
|
|
78
|
-
attach(_session: IInteractiveSession): void;
|
|
79
|
-
start(): Promise<void>;
|
|
80
|
-
stop(): Promise<void>;
|
|
81
|
-
validateOptions(_options: Record<string, TUniversalValue>): boolean;
|
|
82
|
-
}
|
|
83
|
-
//#endregion
|
|
84
|
-
export { ITuiPickerInteraction as a, TOnMissingArgsAction as c, ITuiConfirmInteraction as i, ITuiCliAdapter as l, IRenderOptions as n, ITuiPickerItem as o, ITuiCommandInteraction as r, TAnyTuiCommandInteraction as s, TuiTransport as t };
|
|
85
|
-
//# sourceMappingURL=index-CSgNoyPK.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CSgNoyPK.d.ts","names":[],"sources":["../../src/tui/tui-cli-adapter.ts","../../src/tui/command-interaction.ts","../../src/tui/render.tsx","../../src/tui/tui-transport.ts"],"mappings":";;;;;UAOiB,cAAA;EACf,mBAAA;EACA,YAAA,CAAa,IAAA,WAAe,MAAA,SAAe,eAAA;EAC3C,aAAA,CAAc,IAAA,UAAc,QAAA,EAAU,MAAA,SAAe,eAAA;EACrD,cAAA,CAAe,IAAA;EACf,uBAAA,CACE,IAAA,UACA,KAAA,EAAO,+BAAA,GACN,0BAAA;EACH,yBAAA,CAA0B,QAAA,EAAU,eAAA;EACpC,sBAAA,CACE,GAAA,UACA,OAAA,UACA,OAAA;IAAY,gBAAA;EAAA;IACT,OAAA;EAAA;EACL,YAAA,CAAa,GAAA;EACb,sBAAA,CAAuB,IAAA;AAAA;;;KCvBb,oBAAA;AAAA,UAEK,cAAA;EACf,KAAA;EACA,KAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,aAAA,GAAgB,oBAAoB;AAAA;AAAA,UAGrB,qBAAA,SAA8B,sBAAsB;EACnE,aAAA;EACA,QAAA,IAAY,cAAA;AAAA;AAAA,UAGG,sBAAA,SAA+B,sBAAsB;EACpE,aAAA;EACA,OAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,qBAAA,GAAwB,sBAAsB;;;UCCrE,cAAA;EACf,GAAA;EACA,QAAA,EAAU,WAAA;EACV,gBAAA;EACA,YAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA,GAAiB,eAAA;EACjB,QAAA;EACA,OAAA;EACA,YAAA,GAAe,wBAAA;EACf,eAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,qBAAA,GAAwB,qBAAA;EACxB,qBAAA,GAAwB,sBAAA;EACxB,cAAA,YAA0B,cAAA;EAC1B,mBAAA,GAAsB,oBAAA;EACtB,SAAA,GAAY,YAAA;EACZ,mBAAA,GAAsB,OAAA;EACtB,iBAAA,GAAoB,sBAAA,CAAuB,mBAAA;EAC3C,UAAA,EAAY,cAAA;EACZ,yBAAA,IAA6B,QAAA,EAAU,eAAA;EACvC,SAAA;EACA,kBAAA,IAAsB,WAAA,aAAwB,sBAAA;AAAA;;;cC3CnC,YAAA,YAAwB,sBAAA,CAAuB,mBAAA;EAAA,SACjD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;EAAA,iBAEQ,OAAA;cAEL,OAAA,EAAS,cAAA;EAIrB,MAAA,CAAO,QAAA,EAAU,mBAAA;EAIX,KAAA,CAAA,GAAS,OAAA;EAIT,IAAA,CAAA,GAAQ,OAAA;EAId,eAAA,CAAgB,QAAA,EAAU,MAAA,SAAe,eAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { CommandRegistry, IBackgroundTaskRunner, ICommandHostAdapters, ICommandModule, IInteractiveSession, IInteractiveSessionStore, IStatusLineCommandSettings, TShellExecFn, TStatusLineCommandSettingsPatch, TSubagentRunnerFactory } from "@robota-sdk/agent-framework";
|
|
2
|
-
import { IConfigurableTransport, ITransportRegistryView } from "@robota-sdk/agent-interface-transport";
|
|
3
|
-
import { IAIProvider, TPermissionMode, TUniversalValue } from "@robota-sdk/agent-core";
|
|
4
|
-
|
|
5
|
-
//#region src/tui/tui-cli-adapter.d.ts
|
|
6
|
-
interface ITuiCliAdapter {
|
|
7
|
-
getUserSettingsPath(): string;
|
|
8
|
-
readSettings(path: string): Record<string, TUniversalValue>;
|
|
9
|
-
writeSettings(path: string, settings: Record<string, TUniversalValue>): void;
|
|
10
|
-
deleteSettings(path: string): boolean;
|
|
11
|
-
applyStatusLineSettings(path: string, patch: TStatusLineCommandSettingsPatch): IStatusLineCommandSettings;
|
|
12
|
-
reloadPluginCommandSource(registry: CommandRegistry): void;
|
|
13
|
-
applyActiveModelChange(cwd: string, modelId: string, options?: {
|
|
14
|
-
providerOverride?: string;
|
|
15
|
-
}): {
|
|
16
|
-
applied: boolean;
|
|
17
|
-
};
|
|
18
|
-
getGitBranch(cwd: string): string | undefined;
|
|
19
|
-
getProviderDisplayName(type: string): string;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/tui/command-interaction.d.ts
|
|
23
|
-
type TOnMissingArgsAction = 'picker' | 'wizard' | 'confirm';
|
|
24
|
-
interface ITuiPickerItem {
|
|
25
|
-
label: string;
|
|
26
|
-
value: string;
|
|
27
|
-
description?: string;
|
|
28
|
-
}
|
|
29
|
-
interface ITuiCommandInteraction {
|
|
30
|
-
onMissingArgs?: TOnMissingArgsAction;
|
|
31
|
-
}
|
|
32
|
-
interface ITuiPickerInteraction extends ITuiCommandInteraction {
|
|
33
|
-
onMissingArgs: 'picker';
|
|
34
|
-
getItems(): ITuiPickerItem[];
|
|
35
|
-
}
|
|
36
|
-
interface ITuiConfirmInteraction extends ITuiCommandInteraction {
|
|
37
|
-
onMissingArgs: 'confirm';
|
|
38
|
-
message: string;
|
|
39
|
-
}
|
|
40
|
-
type TAnyTuiCommandInteraction = ITuiPickerInteraction | ITuiConfirmInteraction;
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/tui/render.d.ts
|
|
43
|
-
interface IRenderOptions {
|
|
44
|
-
cwd: string;
|
|
45
|
-
provider: IAIProvider;
|
|
46
|
-
providerOverride?: string | undefined;
|
|
47
|
-
providerType?: string | undefined;
|
|
48
|
-
modelId?: string;
|
|
49
|
-
language?: string;
|
|
50
|
-
permissionMode?: TPermissionMode;
|
|
51
|
-
maxTurns?: number;
|
|
52
|
-
version?: string;
|
|
53
|
-
sessionStore?: IInteractiveSessionStore;
|
|
54
|
-
resumeSessionId?: string;
|
|
55
|
-
showSessionPickerOnStart?: boolean;
|
|
56
|
-
forkSession?: boolean;
|
|
57
|
-
sessionName?: string;
|
|
58
|
-
backgroundTaskRunners?: IBackgroundTaskRunner[];
|
|
59
|
-
subagentRunnerFactory?: TSubagentRunnerFactory;
|
|
60
|
-
commandModules?: readonly ICommandModule[];
|
|
61
|
-
commandHostAdapters?: ICommandHostAdapters;
|
|
62
|
-
shellExec?: TShellExecFn;
|
|
63
|
-
startupUpdateNotice?: Promise<string | undefined>;
|
|
64
|
-
transportRegistry?: ITransportRegistryView<IInteractiveSession>;
|
|
65
|
-
cliAdapter: ITuiCliAdapter;
|
|
66
|
-
reloadPluginCommandSource?: (registry: CommandRegistry) => void;
|
|
67
|
-
agentName?: string;
|
|
68
|
-
resolveInteraction?: (commandName: string) => ITuiCommandInteraction | undefined;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/tui/tui-transport.d.ts
|
|
72
|
-
declare class TuiTransport implements IConfigurableTransport<IInteractiveSession> {
|
|
73
|
-
readonly name = "tui";
|
|
74
|
-
readonly defaultEnabled = true;
|
|
75
|
-
readonly optionsSchema: {};
|
|
76
|
-
private readonly options;
|
|
77
|
-
constructor(options: IRenderOptions);
|
|
78
|
-
attach(_session: IInteractiveSession): void;
|
|
79
|
-
start(): Promise<void>;
|
|
80
|
-
stop(): Promise<void>;
|
|
81
|
-
validateOptions(_options: Record<string, TUniversalValue>): boolean;
|
|
82
|
-
}
|
|
83
|
-
//#endregion
|
|
84
|
-
export { ITuiPickerInteraction as a, TOnMissingArgsAction as c, ITuiConfirmInteraction as i, ITuiCliAdapter as l, IRenderOptions as n, ITuiPickerItem as o, ITuiCommandInteraction as r, TAnyTuiCommandInteraction as s, TuiTransport as t };
|
|
85
|
-
//# sourceMappingURL=index-_dNm-2J3.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-_dNm-2J3.d.ts","names":[],"sources":["../../src/tui/tui-cli-adapter.ts","../../src/tui/command-interaction.ts","../../src/tui/render.tsx","../../src/tui/tui-transport.ts"],"mappings":";;;;;UAOiB,cAAA;EACf,mBAAA;EACA,YAAA,CAAa,IAAA,WAAe,MAAA,SAAe,eAAA;EAC3C,aAAA,CAAc,IAAA,UAAc,QAAA,EAAU,MAAA,SAAe,eAAA;EACrD,cAAA,CAAe,IAAA;EACf,uBAAA,CACE,IAAA,UACA,KAAA,EAAO,+BAAA,GACN,0BAAA;EACH,yBAAA,CAA0B,QAAA,EAAU,eAAA;EACpC,sBAAA,CACE,GAAA,UACA,OAAA,UACA,OAAA;IAAY,gBAAA;EAAA;IACT,OAAA;EAAA;EACL,YAAA,CAAa,GAAA;EACb,sBAAA,CAAuB,IAAA;AAAA;;;KCvBb,oBAAA;AAAA,UAEK,cAAA;EACf,KAAA;EACA,KAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,aAAA,GAAgB,oBAAoB;AAAA;AAAA,UAGrB,qBAAA,SAA8B,sBAAsB;EACnE,aAAA;EACA,QAAA,IAAY,cAAA;AAAA;AAAA,UAGG,sBAAA,SAA+B,sBAAsB;EACpE,aAAA;EACA,OAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,qBAAA,GAAwB,sBAAsB;;;UCCrE,cAAA;EACf,GAAA;EACA,QAAA,EAAU,WAAA;EACV,gBAAA;EACA,YAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA,GAAiB,eAAA;EACjB,QAAA;EACA,OAAA;EACA,YAAA,GAAe,wBAAA;EACf,eAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,qBAAA,GAAwB,qBAAA;EACxB,qBAAA,GAAwB,sBAAA;EACxB,cAAA,YAA0B,cAAA;EAC1B,mBAAA,GAAsB,oBAAA;EACtB,SAAA,GAAY,YAAA;EACZ,mBAAA,GAAsB,OAAA;EACtB,iBAAA,GAAoB,sBAAA,CAAuB,mBAAA;EAC3C,UAAA,EAAY,cAAA;EACZ,yBAAA,IAA6B,QAAA,EAAU,eAAA;EACvC,SAAA;EACA,kBAAA,IAAsB,WAAA,aAAwB,sBAAA;AAAA;;;cC3CnC,YAAA,YAAwB,sBAAA,CAAuB,mBAAA;EAAA,SACjD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;EAAA,iBAEQ,OAAA;cAEL,OAAA,EAAS,cAAA;EAIrB,MAAA,CAAO,QAAA,EAAU,mBAAA;EAIX,KAAA,CAAA,GAAS,OAAA;EAIT,IAAA,CAAA,GAAQ,OAAA;EAId,eAAA,CAAgB,QAAA,EAAU,MAAA,SAAe,eAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./tui-BIpIcT7-.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}});
|
|
@@ -1,24 +0,0 @@
|
|
|
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 j(e){return(0,l.useMemo)(()=>A(),[])}function M(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 N(n.language,t),!0;if(n.type===`settings-reset-requested`)return P(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 N(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 P(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 F=(0,c.createContext)(null),I=F.Provider;function L(){let e=(0,c.useContext)(F);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function R(e){return`Change model to ${(0,f.getModelName)(e)}? This will exit the current session so the next session uses it.`}function z(e){return`Model changed to ${(0,f.getModelName)(e)}. Exiting so the next session uses it.`}function B(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)(z(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 V(e){e((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Model change cancelled.`)))}function H({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=L(),[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=>M(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?B({cwd:e,modelId:r,providerOverride:t,addEntry:i,requestShutdown:D,applyModelChange:(e,t,n)=>(m.applyActiveModelChange(e,t,n),{applied:!0})}):V(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 U(e){let t={...d.DEFAULT_STATUS_LINE_COMMAND_SETTINGS},n=e.statusline;return W(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function ee(){let e=L();return(0,l.useState)(()=>U(e.readSettings(e.getUserSettingsPath())))}const G=`\x1B[0m`,K=` `,te=m.default;function ne(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 re(e){return e?.trim().toLowerCase()===`diff`}function ie(e,t,n){let r=`${K}${e}`.padEnd(t);return n?e.startsWith(`+`)?`[48;5;22m[38;5;120m${r}${G}`:e.startsWith(`-`)?`[48;5;52m[38;5;210m${r}${G}`:r.trimEnd():r.trimEnd()}function q(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return ie(e,n,t);let r=`${K}${e}`;return t?e.startsWith(`@@`)?`[36m${r}${G}`:e.startsWith(`diff `)||e.startsWith(`index `)?`[2m${r}${G}`:r:r}function ae(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 oe(e,t,n){let r=e.split(`
|
|
2
|
-
`),i=ae(r,n);return`${r.map(e=>q(e,t,i)).join(`
|
|
3
|
-
`)}\n\n`}function J(e,t){let n=new te(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>re(i)?oe(n,e,t):r(n,i,a),n}function Y(e,t={}){let n=p.marked.parse(e,{renderer:J(ne(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function X(e){let t=e.lines.length>12?se(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>Z(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 Z(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 se(e){let t=ce(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 ce(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 le({file:e,lines:t}){let n=X({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:Y(n.markdown)}),n.truncated&&(0,h.jsxs)(u.Text,{color:`white`,dimColor:!0,children:[`│ ... and `,n.remainingLineCount,` more lines`]})]})}function ue({entry:e}){let t=e.data;if(!t)return(0,h.jsx)(h.Fragment,{});let n=t.promptTokens===void 0?`?`:de(t.promptTokens),r=t.completionTokens===void 0?`?`:de(t.completionTokens),i=de(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 de(e){return e<1e3?e.toLocaleString():(0,f.formatTokenCount)(e)}const fe=new Set([`Bash`,`BackgroundProcess`]);function pe(e){if(!fe.has(e.toolName)||!e.toolResultData)return;let t=me(e.toolResultData),n=Se(t,`exitCode`),r=Ce(t,`success`),i=ve(_e(he(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:ge(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function me(e){try{return JSON.parse(e)}catch{return e}}function he(e,t){if(!be(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(ye(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
|
|
5
|
-
`)}function ge(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function _e(e){return e?e.replace(/\r\n/g,`
|
|
6
|
-
`).split(`
|
|
7
|
-
`):[]}function ve(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function ye(e,t){return _e(e).map(e=>`${t}${e}`).join(`
|
|
8
|
-
`)}function be(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function xe(e,t){if(!be(e))return;let n=e[t];return typeof n==`string`?n:void 0}function Se(e,t){if(!be(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Ce(e,t){if(!be(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}function we({tool:e}){let t=pe(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 pe(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function Ee(e){return pe(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)(le,{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)?Y(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)(le,{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)(ue,{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=L(),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.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.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)}function wt(){let{stdout:e}=(0,u.useStdout)();return Math.max(40,(e.columns??80)-4)}function Tt({commandName:e,interaction:t,onSelect:n,onCancel:r}){let i=t.getItems(),[a,o]=(0,c.useState)(0),s=wt();(0,u.useInput)((e,t)=>{if(t.upArrow)o(e=>e>0?e-1:i.length-1);else if(t.downArrow)o(e=>e<i.length-1?e+1:0);else if(t.return){let e=i[a];e&&n(e)}else (t.escape||e===`q`)&&r()});let l=i.length<=8||a<8?0:Math.min(a-8+1,i.length-8),d=i.slice(l,l+8);return(0,h.jsxs)(u.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[(0,h.jsxs)(u.Text,{bold:!0,color:`cyan`,children:[`/`,e]}),d.map((e,t)=>{let n=l+t===a;return(0,h.jsx)(u.Box,{width:s,children:(0,h.jsxs)(u.Text,{color:n?`cyan`:void 0,dimColor:!n,wrap:`truncate-end`,children:[n?`▸ `:` `,e.label,e.description==null?``:` ${e.description}`]})},e.value)}),(0,h.jsx)(u.Text,{dimColor:!0,children:`↑↓ navigate · Enter select · Esc cancel`})]})}function Et({commandName:e,interaction:t,onConfirm:n,onCancel:r}){return(0,u.useInput)((e,t)=>{t.return||e===`y`||e===`Y`?n():(t.escape||e===`n`||e===`N`)&&r()}),(0,h.jsxs)(u.Box,{paddingX:1,children:[(0,h.jsxs)(u.Text,{bold:!0,color:`yellow`,children:[`/`,e,`:`,` `]}),(0,h.jsxs)(u.Text,{children:[t.message,` `]}),(0,h.jsx)(u.Text,{dimColor:!0,children:`[y/n]`})]})}const Dt=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function Ot(e,t){return e.replace(Dt,(e,n)=>t.get(Number(n))??``)}function kt(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 At(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=kt(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 jt(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 Mt(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function Nt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function Pt(){return{selectedIndex:null,draft:``}}function Ft(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:Pt()}}function It(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function Lt(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=It(t,e.content))}return t}function Rt(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function zt(e,t){let n=kt(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 Bt(e,t,n){let r=kt(e);return r.parentCommand?{type:`submit`,value:`/${r.parentCommand} ${t.name}`}:n?.onMissingArgs?{type:`open-interaction`,commandName:t.name}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function Vt(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 Ht(e){return e.trim().length>0}function Ut(e){return e.onMissingArgs===`picker`}function Wt(e){return e.onMissingArgs===`confirm`}function Gt({onSubmit:e,onCancelQueue:t,isDisabled:n,isAborting:r,pendingPrompt:i,registry:a,sessionName:o,history:s,resolveInteraction:l}){let[d,f]=(0,c.useState)(``),[p,m]=(0,c.useState)(null),[g,_]=(0,c.useState)(null),[v,y]=(0,c.useState)(Pt),[b,x]=(0,c.useState)([]),S=(0,c.useMemo)(()=>Lt(s??[]),[s]),C=(0,c.useMemo)(()=>b.reduce((e,t)=>It(e,t),S),[S,b]),w=(0,c.useRef)(new Map),{columns:T}=(0,u.useWindowSize)(),E=T>0?T:80,D=Math.max(1,E-5),O=(0,c.useRef)(0),{showPopup:k,filteredCommands:A,selectedIndex:j,setSelectedIndex:M,isSubcommandMode:N,setShowPopup:P}=At(d,a),F=(0,c.useCallback)((e,t)=>{O.current+=1;let n=O.current;w.current.set(n,e),f(r=>{let i=Vt(r,t,n,e);return m(i.cursorHint),i.value})},[]),I=(0,c.useCallback)(()=>{y(Pt())},[]),L=(0,c.useCallback)(e=>{x(t=>It(t,e))},[]),R=(0,c.useCallback)(t=>{L(t),I(),e(t)},[e,L,I]),z=(0,c.useCallback)(e=>{let t=zt(d,e);t.type===`insert`&&(f(t.value),t.selectedIndex!==void 0&&M(t.selectedIndex))},[d,M]),B=(0,c.useCallback)(e=>{let t=l?.(e.name),n=Bt(d,e,t);if(n.type===`insert`){f(n.value),n.selectedIndex!==void 0&&M(n.selectedIndex);return}if(n.type===`open-interaction`&&t?.onMissingArgs){P(!1),_({commandName:n.commandName,interaction:t});return}n.type===`submit`&&(f(``),R(n.value))},[d,R,M,l,P]),V=(0,c.useCallback)(e=>{if(!Ht(e))return;if(k&&A[j]){B(A[j]);return}let t=Ot(e.trim(),w.current);f(``),w.current.clear(),O.current=0,R(t)},[k,A,j,B,R]);(0,u.useInput)((e,t)=>{if(!k)return;let n=jt(t);if(n===`previous`||n===`next`)M(e=>Rt(e,A.length,n));else if(n===`close`)P(!1);else if(n===`complete`){let e=A[j];e&&z(e)}},{isActive:k&&!n}),(0,u.useInput)((e,t)=>{let n=Nt(t);if(!n)return;let r=Ft(d,C,v,n);f(r.value),m(r.cursorHint),y(r.state)},{isActive:!k&&!n&&!i}),(0,u.useInput)((e,n)=>{Mt(n)===`cancelQueue`&&i&&t?.()},{isActive:!!i});let H=r?`yellow`:i?`cyan`:n?`gray`:`green`,U=Math.max(1,E-2),W=(()=>{if(o){let e=` "${o}" `,t=Math.max(0,U-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(U),label:``,right:`┐`}})(),ee=(0,c.useCallback)(e=>{g&&(_(null),R(`/${g.commandName} ${e.value}`))},[g,R]),G=(0,c.useCallback)(()=>{g&&(_(null),R(`/${g.commandName}`))},[g,R]),K=(0,c.useCallback)(()=>{_(null)},[]);return(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[g&&Ut(g.interaction)&&(0,h.jsx)(Tt,{commandName:g.commandName,interaction:g.interaction,onSelect:ee,onCancel:K}),g&&Wt(g.interaction)&&(0,h.jsx)(Et,{commandName:g.commandName,interaction:g.interaction,onConfirm:G,onCancel:K}),!g&&k&&(0,h.jsx)(St,{commands:A,selectedIndex:j,visible:k,isSubcommandMode:N}),(0,h.jsxs)(u.Text,{color:H,children:[W.left,W.label?(0,h.jsx)(u.Text,{backgroundColor:H,color:`black`,bold:!0,children:W.label}):null,W.right]}),(0,h.jsx)(u.Box,{borderStyle:`single`,borderTop:!1,borderColor:H,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:d,onChange:e=>{f(e),I(),m(null)},onSubmit:V,onPaste:F,placeholder:`Type a message or /help`,availableWidth:D,cursorHint:p,enableVerticalNavigation:!1})]})})]})}function Q(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function Kt(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 qt(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=Zt(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=Yt(e.selectedIndex,t,n),i=Xt(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function Jt(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=Zt(e.selectedIndex,t.itemCount),r=Xt(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function Yt(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 Xt(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 Zt(e,t){return Math.min(Math.max(e,0),t-1)}function Qt(e,t,n){let r=qt({...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 $t(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 en({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=$t(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 tn({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=Kt(t);n!==void 0&&l(n)}),e.length===0)return(0,h.jsx)(u.Box,{});let d=Jt(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 nn(){return{value:``,resolved:!1}}function rn(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 an(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`}}:on(e,n)}function on(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 sn({title:e,description:t,placeholder:n,onSubmit:r,onCancel:i,validate:a,allowEmpty:o=!1,masked:s=!1}){let[l,d]=(0,c.useState)(()=>nn()),f=(0,c.useRef)(l),p=(0,c.useCallback)(e=>{let t=an(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=rn(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)(cn,{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 cn({description:e}){return e===void 0||e.length===0?null:(0,h.jsx)(u.Text,{dimColor:!0,children:e})}function ln({prompt:e,onSubmit:t,onCancel:n}){return e.kind===`text`?(0,h.jsx)(sn,{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)(tn,{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 un=[`Allow`,`Allow always (this session)`,`Deny`];function dn(e,t){let n=qt({...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 fn(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return mn(e,t.index);let n=$(e,t,{itemCount:un.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:pn(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function pn(e){return e===0?!0:e===1?`allow-session`:!1}function mn(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:pn(t)}}}function hn(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 gn({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=fn(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=dn(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:[` `,hn(e.toolArgs)]}),(0,h.jsx)(u.Box,{marginTop:1,children:un.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 _n(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 vn(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 yn(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}=_n(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)(le,{file:e.diffFile,lines:e.diffLines})]},`${e.toolName}-${t}`)})]})}function bn({text:e,activeTools:t,isThinking:n=!1}){let r=t.length>0,i=e.length>0;return!r&&!i?vn(n):(0,h.jsxs)(u.Box,{flexDirection:`column`,children:[r&&yn(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:Y(e)})})]})]})}function xn({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=Kt(t);n!==void 0&&f(n)});let p=Jt(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 Sn(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function Cn(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function wn(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 Tn(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 En(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 Dn(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 On(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 kn(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 An({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}=kn(u.screen,u.context?.marketplace,e,s,r.length),S=(0,c.useCallback)(t=>{let n=u.screen,r=u.context;n===`main`?Sn(t,v):n===`marketplace-list`?Cn(t,v):n===`marketplace-action`?wn(t,r?.marketplace??``,e,v):n===`marketplace-browse`?Tn(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?En(t,r?.pluginId??``,e,v):n===`installed-list`?Dn(t,e,v):n===`installed-action`&&On(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)(en,{message:a.message,onSelect:e=>{e===0?a.onConfirm():a.onCancel()}});let w=u.screen;return w===`marketplace-add`?(0,h.jsx)(sn,{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)(xn,{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)(xn,{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)(xn,{title:`Plugin: ${u.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:f},r.length):(0,h.jsx)(xn,{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 jn({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 Mn(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 Nn({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 Mn(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)(jn,{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 Pn({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)(tn,{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 Fn=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],In=/\s+/g;function Ln(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function Rn(e){return Ln(e).filter(e=>Fn.includes(e.status)).length}function zn(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:Vn(e),subtitle:Hn(e),statusLabel:Un(e.status),preview:Gn(e.preview??e.currentAction),color:Wn(e),isSelected:n};return{...r,accessibleText:Kn(r)}}function Bn(e){let t=e.text.trim().replace(In,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function Vn(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 Hn(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 Un(e){return e.replace(/_/g,` `)}function Wn(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`:Fn.includes(e.status)?`cyan`:`white`}function Gn(e){return e?.trim().replace(In,` `)||void 0}function Kn(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function qn(e,t={}){let n=zn(e),r=Jn(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 Jn(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function Yn({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=qn(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 Xn({snapshot:e,selectedEntryId:t,onSelect:n,onClose:r}){let{normalized:i,visibleEntries:a,applyAction:o}=Zn({entries:[...e?.entries??[]],selectedEntryId:t,onSelect:n,onClose:r});return(0,u.useInput)((e,t)=>{let n=Kt(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)(er,{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 Zn({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=$n({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});o.current=n,a(n)},[e.length,t]);let s=$n({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 $n(e){return Jt({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function er({entry:e,isFocused:t,selectedEntryId:n}){let r=zn(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 tr({entry:e,page:t,loading:n,error:r}){let i=zn(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:nr(e.kind),children:Bn(e)},e.id)),t?.nextCursor?(0,h.jsx)(u.Text,{dimColor:!0,children:`... more detail available`}):null]})}function nr(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function rr({message:e}){return(0,h.jsx)(u.Box,{paddingX:1,marginBottom:1,children:(0,h.jsx)(u.Text,{color:`yellow`,children:e})})}function ir(e){let[t,n]=(0,c.useState)(e.resumeSessionId),[r,i]=(0,c.useState)(e.showSessionPickerOnStart??!1);return(0,h.jsx)(I,{value:e.cliAdapter,children:(0,h.jsx)(ar,{...e,showSessionPickerOnStart:r,resumeSessionId:t,onSessionSwitch:e=>{i(!1),n(e)}},t??`__new__`)})}function ar(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=j(t),A=e.commandHostAdapters?.plugin??O,{exit:M}=(0,u.useApp)(),[N,P]=(0,c.useState)(e.sessionName),[F,I]=(0,c.useState)(),[L,z]=(0,c.useState)(!1),[B,V]=(0,c.useState)(null),[U,W]=(0,c.useState)(),[G,K]=(0,c.useState)(!1),[te,ne]=ee(),re=(0,c.useMemo)(()=>Ln(v),[v]),ie=Rn(v),q=(0,c.useMemo)(()=>v?.entries.find(e=>e.id===y),[v,y]),{handleSubmit:ae,pendingModelId:oe,pendingInteractionPrompt:J,showPluginTUI:Y,showSessionPicker:X,showTransportTUI:Z,setShowPluginTUI:se,setShowSessionPicker:ce,setShowTransportTUI:le,handleModelConfirm:ue,handleInteractionSubmit:de,handleInteractionCancel:fe}=H({cwd:t,providerOverride:e.providerOverride,interactiveSession:n,commandEffectQueue:i,addEntry:o,baseHandleSubmit:w,setSessionName:P,setStatusLineSettings:ne,showSessionPickerOnStart:e.showSessionPickerOnStart,openAgentSwitcher:()=>z(!0)}),pe=!q||q.kind===`main_thread`||q.controls.includes(`send`),me=q&&q.kind!==`main_thread`?q.title:void 0,he=(0,c.useMemo)(()=>v?.entries.find(e=>e.kind===`main_thread`)?.id,[v]),ge=(0,c.useCallback)(async e=>{q&&q.kind!==`main_thread`&&q.controls.includes(`send`)?await n.sendAgentJob(q.sourceId,e):await ae(e)},[q,ae,n]);(0,c.useEffect)(()=>{let e=n?.getName?.();e&&!N&&P(e)},[n,N]),(0,c.useEffect)(()=>{let t=!0;return e.startupUpdateNotice?.then(e=>{t&&e!==void 0&&I(e)}).catch(()=>{}),()=>{t=!1}},[e.startupUpdateNotice]),(0,c.useEffect)(()=>{let e=N?`Robota — ${N}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[N]),(0,u.useInput)((e,t)=>{!t.escape||!p||S||Y||Z||X||L||T()}),(0,u.useInput)((e,t)=>{!t.ctrl||e!==`b`||S||Y||X||g||z(e=>!e)}),(0,u.useInput)((e,t)=>{!t.escape||p||S||Y||Z||X||L||q&&q.kind!==`main_thread`&&he!==void 0&&b(he)}),(0,u.useInput)((e,t)=>{!t.ctrl||e!==`c`||g||D(`prompt_input_exit`).finally(()=>M())}),(0,c.useEffect)(()=>{let e=()=>{g||D(`other`).finally(()=>M())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[D,M,g]),(0,c.useEffect)(()=>{if(!q||q.kind===`main_thread`){V(null),W(void 0),K(!1);return}let e=!0;return K(!0),W(void 0),x(q.id).then(t=>{e&&(V(t),K(!1))}).catch(t=>{e&&(W(t.message),K(!1))}),()=>{e=!1}},[v,x,q]);let _e=e.permissionMode??`default`,ve=``;try{let e=n.getSession();_e=e.getPermissionMode(),ve=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`]})]}),F&&(0,h.jsx)(rr,{message:F}),(0,h.jsxs)(u.Box,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[q&&q.kind!==`main_thread`?(0,h.jsx)(tr,{entry:q,page:B,loading:G,error:U}):(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)(bn,{text:s,activeTools:l,isThinking:p})}),(0,h.jsx)(Yn,{entries:re})]}),L&&(0,h.jsx)(Xn,{snapshot:v,selectedEntryId:y,onSelect:b,onClose:()=>z(!1)}),S&&(0,h.jsx)(gn,{request:S}),oe&&(0,h.jsx)(en,{message:R(oe),onSelect:ue}),J&&(0,h.jsx)(ln,{prompt:J,onSubmit:de,onCancel:fe}),Y&&(0,h.jsx)(An,{callbacks:A,onClose:()=>se(!1),addMessage:e=>o((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(e.content)))}),Z&&e.transportRegistry&&(0,h.jsx)(Nn,{registry:e.transportRegistry,onClose:()=>le(!1)}),X&&(0,h.jsx)(Pn,{sessions:(0,d.listResumableSessionSummaries)(e.sessionStore,e.cwd),onSelect:t=>{ce(!1),e.onSessionSwitch(t)},onCancel:()=>{ce(!1),o((0,f.messageToHistoryEntry)((0,f.createSystemMessage)(`Session resume cancelled.`)))}}),(0,h.jsx)(Ge,{cwd:t,permissionMode:_e,modelId:e.modelId,providerType:e.providerType,sessionId:ve,isThinking:p,activeToolCount:l.length,activeBackgroundTaskCount:ie,hasPendingPrompt:_!==null,contextState:C,sessionName:N,settings:te,activeAgentLabel:me}),(0,h.jsx)(Gt,{onSubmit:ge,onCancelQueue:E,isDisabled:!!S||Y||Z||X||L||g||J!==null||p&&!!_||!pe,isAborting:m,pendingPrompt:_,registry:r,sessionName:N,history:a,resolveInteraction:e.resolveInteraction}),(0,h.jsx)(u.Text,{children:` `})]})}async function or(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)(ir,{...e}),{exitOnCtrlC:!1}).waitUntilExit()}var sr=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await or(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 sr}});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import e,{createContext as t,useCallback as n,useContext as r,useEffect as i,useMemo as a,useRef as o,useState as s}from"react";import{Box as c,Text as l,render as u,useApp as d,useInput as f,usePaste as p,useStdout as m,useWindowSize as h}from"ink";import{CommandRegistry as g,DEFAULT_STATUS_LINE_COMMAND_SETTINGS as _,InteractiveSession as v,isStatusLineCommandSettingsPatch as y,listResumableSessionSummaries as b}from"@robota-sdk/agent-framework";import{createSystemMessage as x,formatTokenCount as S,getModelName as C,isAssistantMessage as w,isToolMessage as T,messageToHistoryEntry as E}from"@robota-sdk/agent-core";import{marked as D}from"marked";import O from"marked-terminal";import{Fragment as k,jsx as A,jsxs as j}from"react/jsx-runtime";import M from"chalk";import N from"string-width";function ee(e,t,r,i,a){return n(async n=>{if(!n.startsWith(`/`)){await e.submit(n),r.setPendingPrompt(e.getPendingPrompt());return}let o=n.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`)){r.setPendingPrompt(e.getPendingPrompt());return}P(l,e,t,r,i,a);return}r.addEntry(E(x(`Unknown command "/${s}". Type /help for help.`)))},[e,t,r,i,a])}function P(e,t,n,r,i,a){let o=F(e.effects,n,r,a);if(r.addEntry(E(x(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 F(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 I(){let[e,t]=s(null),r=o([]),i=o(!1),a=n(()=>{if(i.current)return;let e=r.current[0];if(!e){t(null);return}i.current=!0,t({toolName:e.toolName,toolArgs:e.toolArgs,resolve:n=>{r.current.shift(),i.current=!1,t(null),e.resolve(n),setTimeout(()=>a(),0)}})},[]);return{permissionHandler:n((e,t)=>new Promise(n=>{r.current.push({toolName:e,toolArgs:t,resolve:n}),a()}),[a]),permissionRequest:e}}function L(e,t){let n=null;return{schedule(){n||=setTimeout(()=>{n=null,e()},t)},flush(){n&&=(clearTimeout(n),null)}}}var R=class{history=[];streamingText=``;activeTools=[];isThinking=!1;isAborting=!1;pendingPrompt=null;contextState={percentage:0,usedTokens:0,maxTokens:0};executionWorkspaceSnapshot=null;selectedExecutionEntryId;onChange=null;streamBuf=``;debouncedStreamNotify=L(()=>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())}},te=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 z(e,t){let n=new v({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 g;for(let t of e.commandModules??[])r.addModule(t);return e.reloadPluginCommandSource?.(r),{interactiveSession:n,registry:r,manager:new R,commandEffectQueue:new te}}function ne(e,t){t.syncHistory(e.getFullHistory())}function B(e,t){t.syncHistory(e.getFullHistory())}function V(e,t){try{t.syncExecutionWorkspaceSnapshot(e.getExecutionWorkspaceSnapshot({selectedEntryId:t.selectedExecutionEntryId}))}catch{}}function H(e){let[,t]=s(0),[r,a]=s(!1),{permissionHandler:o,permissionRequest:c}=I(),[l]=s(()=>z(e,o)),{interactiveSession:u,registry:d,manager:f,commandEffectQueue:p}=l;if(f.onChange=()=>t(e=>e+1),f.history.length===0){let e=u.getFullHistory();e.length>0&&f.syncHistory(e)}i(()=>{if(!e.transportRegistry)return;let t=e.transportRegistry;return t.startAll(u).catch(()=>void 0),()=>{t.stopAll().catch(()=>void 0)}},[u,e.transportRegistry]),i(()=>{let e=()=>ne(u,f),t=()=>B(u,f),n=e=>f.syncExecutionWorkspaceSnapshot(e.snapshot);u.on(`text_delta`,f.onTextDelta),u.on(`tool_start`,f.onToolStart),u.on(`tool_end`,f.onToolEnd),u.on(`thinking`,f.onThinking),u.on(`complete`,f.onComplete),u.on(`interrupted`,f.onInterrupted),u.on(`error`,f.onError),u.on(`context_update`,f.onContextUpdate),u.on(`compact`,e),u.on(`skill_activation`,t),u.on(`execution_workspace_event`,n);let r=setInterval(()=>{try{let e=u.getContextState();f.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens});let t=u.getFullHistory();t.length>0&&f.syncHistory(t),V(u,f),clearInterval(r)}catch{}},200);return()=>{clearInterval(r),u.off(`text_delta`,f.onTextDelta),u.off(`tool_start`,f.onToolStart),u.off(`tool_end`,f.onToolEnd),u.off(`thinking`,f.onThinking),u.off(`complete`,f.onComplete),u.off(`interrupted`,f.onInterrupted),u.off(`error`,f.onError),u.off(`context_update`,f.onContextUpdate),u.off(`compact`,e),u.off(`skill_activation`,t),u.off(`execution_workspace_event`,n)}},[u,f]),i(()=>{f.syncHistory(u.getFullHistory()),V(u,f),f.isThinking||f.setPendingPrompt(u.getPendingPrompt())},[f.isThinking,u,f]);let m=ee(u,d,f,p,e.reloadPluginCommandSource),h=n(()=>{f.setAborting(!0),u.abort()},[u,f]),g=n(()=>{u.cancelQueue(),f.setPendingPrompt(null)},[u,f]),_=n(async(e=`prompt_input_exit`)=>{r||(a(!0),f.addEntry(E(x(`Shutting down...`))),await u.shutdown({reason:e,message:`CLI shutdown`}))},[u,f,r]),v=n(e=>f.selectExecutionWorkspaceEntry(e),[f]),y=n(e=>u.readExecutionWorkspaceDetail(e),[u]);return{interactiveSession:u,registry:d,commandEffectQueue:p,history:f.history,addEntry:e=>f.addEntry(e),streamingText:f.streamingText,activeTools:f.activeTools,isThinking:f.isThinking,isAborting:f.isAborting,isShuttingDown:r,pendingPrompt:f.pendingPrompt,executionWorkspaceSnapshot:f.executionWorkspaceSnapshot,selectedExecutionEntryId:f.selectedExecutionEntryId,permissionRequest:c,contextState:f.contextState,handleSubmit:m,handleAbort:h,handleCancelQueue:g,handleShutdown:_,selectExecutionWorkspaceEntry:v,readExecutionWorkspaceDetail:y}}function re(){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 ie(e){return a(()=>re(),[])}function ae(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 U(n.language,t),!0;if(n.type===`settings-reset-requested`)return W(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`&&y(n.patch))return t.applyStatusLinePatch(n.patch)}return!1}function U(e,t){let n=t.cliAdapter.getUserSettingsPath(),r=t.cliAdapter.readSettings(n);r.language=e,t.cliAdapter.writeSettings(n,r),t.addEntry(E(x(`Language set to "${e}". Restarting...`))),t.requestShutdown(`other`,`Language change restart`)}function W(e){let t=e.cliAdapter.getUserSettingsPath();e.cliAdapter.deleteSettings(t)?e.addEntry(E(x(`Deleted ${t}. Exiting...`))):e.addEntry(E(x(`No user settings found.`))),e.requestShutdown(`other`,`Reset settings restart`)}const G=t(null),K=G.Provider;function q(){let e=r(G);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function oe(e){return`Change model to ${C(e)}? This will exit the current session so the next session uses it.`}function se(e){return`Model changed to ${C(e)}. Exiting so the next session uses it.`}function ce(e){let t=e.applyModelChange;if(!t){e.addEntry(E(x(`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(E(x(se(e.modelId)))),e.requestShutdown(`other`,`Model change applied`)}catch(t){e.addEntry(E(x(`Failed: ${t instanceof Error?t.message:String(t)}`)))}}function le(e){e(E(x(`Model change cancelled.`)))}function ue({cwd:e,providerOverride:t,interactiveSession:r,commandEffectQueue:i,addEntry:a,baseHandleSubmit:c,setSessionName:l,setStatusLineSettings:u,showSessionPickerOnStart:f,openAgentSwitcher:p}){let{exit:m}=d(),h=q(),[g,_]=s(null),v=o(null),[y,b]=s(null),S=o(null),[C,w]=s(!1),[T,D]=s(f??!1),[O,k]=s(!1),A=n((e,t)=>{a(E(x(`Shutting down...`))),setTimeout(()=>{r.shutdown({reason:e,message:t}).finally(()=>m())},500)},[r,a,m]),j=n(e=>ae(e,{addEntry:a,requestShutdown:A,requestModelChange:e=>{v.current=e,_(e)},openPluginTUI:()=>w(!0),openSessionPicker:()=>D(!0),openTransportTUI:()=>k(!0),openAgentSwitcher:()=>p?.(),renameSession:e=>{r.setName(e),l(e)},applyStatusLinePatch:e=>(u(h.applyStatusLineSettings(h.getUserSettingsPath(),e)),!0),cliAdapter:h}),[a,h,r,A,l,u]),M=n(e=>{if(e.message.length>0&&a(E(x(e.message))),e.interaction!==void 0){S.current=e.interaction,b(e.interaction.prompt);return}S.current=null,b(null),e.effects!==void 0&&e.effects.length>0&&j(e.effects)},[a,j]),N=n(()=>{let e=i.drain();if(e===void 0)return!1;if(e.type===`interaction`){let{interaction:t}=e;return S.current=t,b(t.prompt),!0}return j(e.effects)},[j,i]);return{handleSubmit:n(async e=>{await c(e),N()},[c,N]),pendingModelId:g,pendingInteractionPrompt:y,showPluginTUI:C,showSessionPicker:T,showTransportTUI:O,setPendingModelId:_,setShowPluginTUI:w,setShowSessionPicker:D,setShowTransportTUI:k,handleModelConfirm:n(n=>{let r=v.current;_(null),v.current=null,n===0&&r?ce({cwd:e,modelId:r,providerOverride:t,addEntry:a,requestShutdown:A,applyModelChange:(e,t,n)=>(h.applyActiveModelChange(e,t,n),{applied:!0})}):le(a)},[e,t,a,h,A]),handleInteractionSubmit:n(async e=>{let t=S.current;if(t===null){b(null);return}try{M(await t.submit(e))}catch(e){S.current=null,b(null),a(E(x(`Failed: ${e instanceof Error?e.message:String(e)}`)))}},[a,M]),handleInteractionCancel:n(()=>{let e=S.current;if(S.current=null,b(null),e?.cancel===void 0){a(E(x(`Command interaction cancelled.`)));return}Promise.resolve(e.cancel()).then(e=>M(e)).catch(e=>{a(E(x(`Failed: ${e instanceof Error?e.message:String(e)}`)))})},[a,M])}}function J(e){let t={..._},n=e.statusline;return de(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function de(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function fe(){let e=q();return s(()=>J(e.readSettings(e.getUserSettingsPath())))}const Y=`\x1B[0m`,X=` `,Z=O;function Q(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 pe(e){return e?.trim().toLowerCase()===`diff`}function me(e,t,n){let r=`${X}${e}`.padEnd(t);return n?e.startsWith(`+`)?`[48;5;22m[38;5;120m${r}${Y}`:e.startsWith(`-`)?`[48;5;52m[38;5;210m${r}${Y}`:r.trimEnd():r.trimEnd()}function he(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return me(e,n,t);let r=`${X}${e}`;return t?e.startsWith(`@@`)?`[36m${r}${Y}`:e.startsWith(`diff `)||e.startsWith(`index `)?`[2m${r}${Y}`:r:r}function ge(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 _e(e,t,n){let r=e.split(`
|
|
2
|
-
`),i=ge(r,n);return`${r.map(e=>he(e,t,i)).join(`
|
|
3
|
-
`)}\n\n`}function ve(e,t){let n=new Z(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>pe(i)?_e(n,e,t):r(n,i,a),n}function ye(e,t={}){let n=D.parse(e,{renderer:ve(Q(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function be(e){let t=e.lines.length>12?Se(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>xe(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 xe(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 Se(e){let t=Ce(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 Ce(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 we({file:e,lines:t}){let n=be({file:e,lines:t});return j(c,{flexDirection:`column`,marginLeft:4,children:[n.file&&j(l,{color:`white`,dimColor:!0,children:[`│ `,n.file]}),A(l,{children:ye(n.markdown)}),n.truncated&&j(l,{color:`white`,dimColor:!0,children:[`│ ... and `,n.remainingLineCount,` more lines`]})]})}function Te({entry:e}){let t=e.data;if(!t)return A(k,{});let n=t.promptTokens===void 0?`?`:Ee(t.promptTokens),r=t.completionTokens===void 0?`?`:Ee(t.completionTokens),i=Ee(t.totalTokens),a=`${Math.round(t.contextUsedPercentage)}% (${S(t.contextUsedTokens)}/${S(t.contextMaxTokens)})`,o=t.costStatus===`unknown`?`cost unknown`:`cost ${t.costStatus}`;return A(c,{flexDirection:`column`,marginBottom:1,children:j(c,{children:[j(l,{color:`white`,bold:!0,children:[`Usage:`,` `]}),j(l,{dimColor:!0,children:[t.kind,` `,i,` tokens (in `,n,` / out `,r,`) · Context `,a,` ·`,` `,o]})]})})}function Ee(e){return e<1e3?e.toLocaleString():S(e)}const De=new Set([`Bash`,`BackgroundProcess`]);function Oe(e){if(!De.has(e.toolName)||!e.toolResultData)return;let t=ke(e.toolResultData),n=Le(t,`exitCode`),r=Re(t,`success`),i=Ne(Me(Ae(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:je(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function ke(e){try{return JSON.parse(e)}catch{return e}}function Ae(e,t){if(!Fe(t))return e;let n=Ie(t,`output`);if(n!==void 0)return n;let r=Ie(t,`stdout`),i=Ie(t,`stderr`),a=Ie(t,`error`),o=[];return r&&o.push(r),i&&o.push(Pe(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
|
|
5
|
-
`)}function je(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function Me(e){return e?e.replace(/\r\n/g,`
|
|
6
|
-
`).split(`
|
|
7
|
-
`):[]}function Ne(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function Pe(e,t){return Me(e).map(e=>`${t}${e}`).join(`
|
|
8
|
-
`)}function Fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Ie(e,t){if(!Fe(e))return;let n=e[t];return typeof n==`string`?n:void 0}function Le(e,t){if(!Fe(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Re(e,t){if(!Fe(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}function ze({tool:e}){let t=Oe(e);if(!t||t.statusLabel===`ok`&&t.previewLines.length===0&&!t.transcriptHint)return null;let n=t.status===`error`?`red`:`white`;return j(c,{flexDirection:`column`,marginLeft:4,children:[t.statusLabel!==`ok`&&A(l,{color:n,dimColor:!0,children:t.statusLabel}),t.previewLines.map((e,t)=>A(l,{color:n,dimColor:!0,children:e},`${e}-${t}`)),t.transcriptHint&&A(l,{dimColor:!0,children:t.transcriptHint})]})}function Be(e){return Oe(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function Ve(e){return Oe(e)?.status===`error`||e.result===`error`?`red`:e.isRunning||e.result===`denied`?`yellow`:`green`}function He(e){return`${Be(e)} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`}function Ue({role:e}){switch(e){case`user`:return j(l,{color:`green`,bold:!0,children:[`You:`,` `]});case`assistant`:return j(l,{color:`cyan`,bold:!0,children:[`Robota:`,` `]});case`system`:return j(l,{color:`yellow`,bold:!0,children:[`System:`,` `]});case`tool`:return j(l,{color:`white`,bold:!0,children:[`Tool:`,` `]})}}function We({message:e}){if(!T(e))return A(k,{});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 j(c,{flexDirection:`column`,marginBottom:1,children:[j(c,{children:[j(l,{color:`white`,bold:!0,children:[`Tool:`,` `]}),t&&j(l,{color:`white`,dimColor:!0,children:[`[`,t,`]`]})]}),A(l,{children:` `}),r.map((e,t)=>j(c,{flexDirection:`column`,children:[j(l,{color:`green`,children:[` `,`✓`,` `,e.line]}),e.diffLines&&e.diffLines.length>0&&A(we,{file:e.diffFile,lines:e.diffLines})]},t))]});let i=n.split(`
|
|
9
|
-
`).filter(e=>e.trim());return j(c,{flexDirection:`column`,marginBottom:1,children:[j(c,{children:[j(l,{color:`white`,bold:!0,children:[`Tool:`,` `]}),t&&j(l,{color:`white`,dimColor:!0,children:[`[`,t,`]`]})]}),A(l,{children:` `}),i.map((e,t)=>j(l,{color:`green`,children:[` `,`✓`,` `,e]},t))]})}const Ge=e.memo(function({message:e}){if(T(e))return A(We,{message:e});let t=e.content??``,n=e.state===`interrupted`;return j(c,{flexDirection:`column`,marginBottom:1,children:[A(c,{children:A(Ue,{role:e.role})}),A(l,{children:` `}),A(c,{marginLeft:2,children:A(l,{wrap:`wrap`,children:w(e)?ye(t+(n?`
|
|
10
|
-
|
|
11
|
-
_(interrupted)_`:``)):t})})]})});function Ke({entry:e}){let t=e.data,n=t?.tools,r=t?.summary?.split(`
|
|
12
|
-
`)??[];return n&&n.length>0?j(c,{flexDirection:`column`,marginBottom:1,children:[A(c,{children:j(l,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),A(l,{children:` `}),n.map((e,t)=>j(c,{flexDirection:`column`,children:[j(l,{color:Ve(e),children:[` `,He(e)]}),A(ze,{tool:e}),e.diffLines&&e.diffLines.length>0&&A(we,{file:e.diffFile,lines:e.diffLines})]},t))]}):j(c,{flexDirection:`column`,marginBottom:1,children:[A(c,{children:j(l,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),A(l,{children:` `}),r.map((e,t)=>j(l,{color:`green`,children:[` `,e]},t))]})}function qe({entry:e}){let t=e.data,n=typeof t?.message==`string`?t.message:typeof t?.content==`string`?t.content:e.type;return j(c,{flexDirection:`column`,marginBottom:1,children:[A(c,{children:j(l,{color:`yellow`,bold:!0,children:[`System:`,` `]})}),A(l,{children:` `}),A(c,{marginLeft:2,children:A(l,{wrap:`wrap`,children:n})})]})}function Je({entry:e}){if(e.category===`chat`){let t=e.data;return A(Ge,{message:t})}return e.type===`tool-summary`?A(Ke,{entry:e}):e.type===`usage-summary`?A(Te,{entry:e}):e.type===`tool-start`||e.type===`tool-end`?A(k,{}):A(qe,{entry:e})}function Ye({history:e}){return A(c,{flexDirection:`column`,children:e.map(e=>A(Je,{entry:e},e.id))})}function Xe(e){let t=Ze(e),n=e.hasPendingPrompt&&t.kind!==`queued`?[`queued`]:[],r=[t.label,...n].join(` · `);return{...t,segments:n,text:r}}function Ze(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 Qe(e){return e>=90?`red`:e>=70?`yellow`:`green`}function $e({isThinking:e,activeToolCount:t,activeBackgroundTaskCount:n,hasPendingPrompt:r}){let i=Xe({isThinking:e,activeToolCount:t,activeBackgroundTaskCount:n,hasPendingPrompt:r});return A(l,{color:i.color,bold:i.kind!==`idle`,children:i.text})}function et({percentage:e,usedTokens:t,maxTokens:n}){return j(l,{color:Qe(e),children:[`Context: `,Math.round(e),`% (`,S(t),`/`,S(n),`)`]})}function tt({permissionMode:e}){return j(k,{children:[A(l,{color:`cyan`,bold:!0,children:`Mode:`}),` `,A(l,{children:e})]})}function nt(e){return e!==`default`}function rt({modelName:e,providerDisplayName:t}){return t===void 0?A(l,{dimColor:!0,children:e}):j(l,{dimColor:!0,children:[t,` `,e]})}function it(e){let t=e.showGitBranch&&e.gitBranch!==void 0&&e.gitBranch.length>0,n=nt(e.permissionMode);return j(l,{children:[A($e,{isThinking:e.isThinking,activeToolCount:e.activeToolCount,activeBackgroundTaskCount:e.activeBackgroundTaskCount,hasPendingPrompt:e.hasPendingPrompt}),n&&j(k,{children:[` | `,A(tt,{permissionMode:e.permissionMode})]}),e.sessionName&&j(k,{children:[` | `,A(l,{color:`magenta`,children:e.sessionName})]}),t&&j(k,{children:[` | `,j(l,{dimColor:!0,children:[`git: `,e.gitBranch]})]}),` | `,A(rt,{modelName:e.modelName,providerDisplayName:e.providerDisplayName}),` | `,A(et,{percentage:e.contextPercentage,usedTokens:e.contextUsedTokens,maxTokens:e.contextMaxTokens})]})}function at({permissionMode:e,modelName:t,providerDisplayName:n,sessionId:r,isThinking:i,activeToolCount:a=0,activeBackgroundTaskCount:o=0,hasPendingPrompt:s=!1,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h=!0,activeAgentLabel:g}){return j(c,{borderStyle:`single`,borderColor:`gray`,paddingLeft:1,paddingRight:1,justifyContent:`space-between`,children:[A(it,{permissionMode:e,modelName:t,providerDisplayName:n,isThinking:i,activeToolCount:a,activeBackgroundTaskCount:o,hasPendingPrompt:s,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h}),g!==void 0&&j(l,{color:`yellow`,bold:!0,children:[`[`,g,`]`]})]})}function ot({cwd:e,permissionMode:t,modelId:n,providerType:r,sessionId:i,isThinking:o,activeToolCount:s,activeBackgroundTaskCount:c,hasPendingPrompt:l,contextState:u,sessionName:d,settings:f,activeAgentLabel:p}){let m=q(),h=a(()=>m.getGitBranch(e),[m,e]),g=a(()=>r===void 0?void 0:m.getProviderDisplayName(r),[m,r]);return f.enabled?A(at,{permissionMode:t,modelName:n??``,providerDisplayName:g,sessionId:i,isThinking:o,activeToolCount:s,activeBackgroundTaskCount:c,hasPendingPrompt:l,contextPercentage:u.percentage,contextUsedTokens:u.usedTokens,contextMaxTokens:u.maxTokens,sessionName:d,gitBranch:h,showGitBranch:f.gitBranch,activeAgentLabel:p}):null}const st=`[200~`,ct=`[201~`;function lt(e){return{value:e,cursor:e.length,isPasting:!1,pasteBuffer:``}}function ut(e,t,n){return t===e.value?e:{...e,value:t,cursor:n==null?t.length:Math.min(n,t.length)}}function dt(e,t,n,r){let i=pt(e,t,r);if(i!==void 0)return i;let a=mt(e,t,n,r);if(a!==void 0)return a;let o=ht(e,n,r);return o===void 0?Tt(e,t):o}function ft(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}}:Tt(e,r)}function pt(e,t,n){if(t===st||t.startsWith(st))return bt(e,t);if(e.isPasting)return xt(e,t,n)}function mt(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 ht(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 wt(e)}function gt(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 _t(e,t,n){return{value:e.slice(0,t)+n+e.slice(t),cursor:t+n.length}}function vt(e,t,n){let r=0;for(let i=0;i<t&&i<e.length;i++){let t=N(e[i]),a=r%n;a+t>n&&(r+=n-a),r+=t}return r}function yt(e,t,n){let r=0;for(let i=0;i<e.length;i++){if(r>=t)return i;let a=N(e[i]),o=r%n;o+a>n&&(r+=n-o),r+=a}return e.length}function bt(e,t){return{state:{...e,isPasting:!0,pasteBuffer:t.slice(5)},effect:{type:`none`}}}function xt(e,t,n){if(t!==ct&&!t.includes(ct))return{state:{...e,pasteBuffer:e.pasteBuffer+t},effect:{type:`none`}};let r=t.split(ct)[0]??``;return ft({...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=vt(r,e.cursor,n),a=t===`up`?i-n:i+n;if(a<0)return{state:e,effect:{type:`none`}};let o=yt(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 wt(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 Tt(e,t){let n=gt(t);if(n.length===0)return{state:e,effect:{type:`none`}};let r=_t(e.value,e.cursor,n);return{state:{...e,value:r.value,cursor:r.cursor},effect:{type:`change`,value:r.value}}}function Et({value:e,onChange:t,onSubmit:n,onPaste:r,placeholder:i=``,focus:a=!0,showCursor:c=!0,availableWidth:u,cursorHint:d=null,enableVerticalNavigation:f=!0}){let p=o(lt(e)),[,m]=s(0);return p.current=ut(p.current,e,d),Dt({stateRef:p,onChange:t,onSubmit:n,onPaste:r,availableWidth:u,focus:a,enableVerticalNavigation:f,forceRender:m}),A(l,{children:jt(p.current.value,p.current.cursor,i,c&&a)})}function Dt(e){p(t=>{kt(e,()=>ft(e.stateRef.current,t,Ot(e)))},{isActive:e.focus}),f((t,n)=>{kt(e,()=>dt(e.stateRef.current,t,n,Ot(e)))},{isActive:e.focus})}function Ot(e){return{availableWidth:e.availableWidth,canPaste:e.onPaste!==void 0,enableVerticalNavigation:e.enableVerticalNavigation}}function kt(e,t){try{let n=t();e.stateRef.current=n.state,At(n.effect,e.onChange,e.onSubmit,e.onPaste,e.forceRender)}catch{}}function At(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 jt(e,t,n,r){if(!r)return e.length>0?e:n?M.gray(n):``;if(e.length===0)return n.length>0?M.inverse(n[0])+M.gray(n.slice(1)):M.inverse(` `);let i=[...e],a=``;for(let e=0;e<i.length;e++){let n=i[e]??``;a+=e===t?M.inverse(n):n}return t>=i.length&&(a+=M.inverse(` `)),a}const Mt=[`#666666`,`#888888`,`#aaaaaa`,`#888888`];function Nt({text:e}){let[t,n]=s(0);return i(()=>{let e=setInterval(()=>{n(e=>e+1)},400);return()=>clearInterval(e)},[]),A(l,{children:[...e].map((e,n)=>A(l,{color:Mt[(t+Math.floor(n/4))%Mt.length],children:e},n))})}function Pt(){let{stdout:e}=m(),t=()=>Math.max(40,(e.columns??80)-4),[n,r]=s(t);return i(()=>{let n=()=>r(t());return e.on(`resize`,n),()=>{e.off(`resize`,n)}},[e]),n}function Ft(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function It(e){let{cmd:t,isSelected:n,showSlash:r,rowWidth:i,nameColWidth:a}=e,o=n?`▸ `:` `,s=n?`cyan`:void 0,u=!n,d=Ft(t.name,a);return A(c,{width:i,children:A(l,{color:s,dimColor:u,wrap:`truncate-end`,children:r?`${o}/${d} ${t.description??``}`:`${o}${d} ${t.description??``}`})})}function Lt({commands:e,selectedIndex:t,visible:n,isSubcommandMode:r}){let i=Pt();if(!n||e.length===0)return null;let a=Rt(t,e.length),o=e.slice(a,a+8),s=Math.min(20,Math.max(...o.map(e=>e.name.length)));return A(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`gray`,paddingX:1,children:o.map((e,n)=>A(It,{cmd:e,isSelected:a+n===t,showSlash:!r,rowWidth:i,nameColWidth:s},e.name))})}function Rt(e,t){if(t<=8||e<8)return 0;let n=t-8;return Math.min(e-8+1,n)}function zt(){let{stdout:e}=m();return Math.max(40,(e.columns??80)-4)}function Bt({commandName:e,interaction:t,onSelect:n,onCancel:r}){let i=t.getItems(),[a,o]=s(0),u=zt();f((e,t)=>{if(t.upArrow)o(e=>e>0?e-1:i.length-1);else if(t.downArrow)o(e=>e<i.length-1?e+1:0);else if(t.return){let e=i[a];e&&n(e)}else (t.escape||e===`q`)&&r()});let d=i.length<=8||a<8?0:Math.min(a-8+1,i.length-8),p=i.slice(d,d+8);return j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[j(l,{bold:!0,color:`cyan`,children:[`/`,e]}),p.map((e,t)=>{let n=d+t===a;return A(c,{width:u,children:j(l,{color:n?`cyan`:void 0,dimColor:!n,wrap:`truncate-end`,children:[n?`▸ `:` `,e.label,e.description==null?``:` ${e.description}`]})},e.value)}),A(l,{dimColor:!0,children:`↑↓ navigate · Enter select · Esc cancel`})]})}function Vt({commandName:e,interaction:t,onConfirm:n,onCancel:r}){return f((e,t)=>{t.return||e===`y`||e===`Y`?n():(t.escape||e===`n`||e===`N`)&&r()}),j(c,{paddingX:1,children:[j(l,{bold:!0,color:`yellow`,children:[`/`,e,`:`,` `]}),j(l,{children:[t.message,` `]}),A(l,{dimColor:!0,children:`[y/n]`})]})}const Ht=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function Ut(e,t){return e.replace(Ht,(e,n)=>t.get(Number(n))??``)}function Wt(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 Gt(t,n){let[r,i]=s(0),[o,c]=s(!1),l=e.useRef(t);l.current!==t&&(l.current=t,o&&c(!1));let u=Wt(t),d=u.isSlash&&u.parentCommand.length>0,f=a(()=>{if(!n||!u.isSlash||o)return[];if(d){let e=n.getSubcommands(u.parentCommand);if(e.length===0)return[];if(!u.filter)return e;let t=u.filter.toLowerCase();return e.filter(e=>e.name.toLowerCase().startsWith(t))}return n.getCommands(u.filter)},[n,u.isSlash,u.parentCommand,u.filter,o,d]),p=u.isSlash&&f.length>0&&!o;return r>=f.length&&f.length>0&&i(f.length-1),{showPopup:p,filteredCommands:f,selectedIndex:r,setSelectedIndex:i,isSubcommandMode:d,setShowPopup:e=>{c(typeof e==`function`?t=>!e(!t):!e)}}}function Kt(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 qt(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function Jt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function Yt(){return{selectedIndex:null,draft:``}}function Xt(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:Yt()}}function Zt(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function Qt(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=Zt(t,e.content))}return t}function $t(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function en(e,t){let n=Wt(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 tn(e,t,n){let r=Wt(e);return r.parentCommand?{type:`submit`,value:`/${r.parentCommand} ${t.name}`}:n?.onMissingArgs?{type:`open-interaction`,commandName:t.name}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function nn(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 rn(e){return e.trim().length>0}function an(e){return e.onMissingArgs===`picker`}function on(e){return e.onMissingArgs===`confirm`}function sn({onSubmit:e,onCancelQueue:t,isDisabled:r,isAborting:i,pendingPrompt:u,registry:d,sessionName:p,history:m,resolveInteraction:g}){let[_,v]=s(``),[y,b]=s(null),[x,S]=s(null),[C,w]=s(Yt),[T,E]=s([]),D=a(()=>Qt(m??[]),[m]),O=a(()=>T.reduce((e,t)=>Zt(e,t),D),[D,T]),k=o(new Map),{columns:M}=h(),N=M>0?M:80,ee=Math.max(1,N-5),P=o(0),{showPopup:F,filteredCommands:I,selectedIndex:L,setSelectedIndex:R,isSubcommandMode:te,setShowPopup:z}=Gt(_,d),ne=n((e,t)=>{P.current+=1;let n=P.current;k.current.set(n,e),v(r=>{let i=nn(r,t,n,e);return b(i.cursorHint),i.value})},[]),B=n(()=>{w(Yt())},[]),V=n(e=>{E(t=>Zt(t,e))},[]),H=n(t=>{V(t),B(),e(t)},[e,V,B]),re=n(e=>{let t=en(_,e);t.type===`insert`&&(v(t.value),t.selectedIndex!==void 0&&R(t.selectedIndex))},[_,R]),ie=n(e=>{let t=g?.(e.name),n=tn(_,e,t);if(n.type===`insert`){v(n.value),n.selectedIndex!==void 0&&R(n.selectedIndex);return}if(n.type===`open-interaction`&&t?.onMissingArgs){z(!1),S({commandName:n.commandName,interaction:t});return}n.type===`submit`&&(v(``),H(n.value))},[_,H,R,g,z]),ae=n(e=>{if(!rn(e))return;if(F&&I[L]){ie(I[L]);return}let t=Ut(e.trim(),k.current);v(``),k.current.clear(),P.current=0,H(t)},[F,I,L,ie,H]);f((e,t)=>{if(!F)return;let n=Kt(t);if(n===`previous`||n===`next`)R(e=>$t(e,I.length,n));else if(n===`close`)z(!1);else if(n===`complete`){let e=I[L];e&&re(e)}},{isActive:F&&!r}),f((e,t)=>{let n=Jt(t);if(!n)return;let r=Xt(_,O,C,n);v(r.value),b(r.cursorHint),w(r.state)},{isActive:!F&&!r&&!u}),f((e,n)=>{qt(n)===`cancelQueue`&&u&&t?.()},{isActive:!!u});let U=i?`yellow`:u?`cyan`:r?`gray`:`green`,W=Math.max(1,N-2),G=(()=>{if(p){let e=` "${p}" `,t=Math.max(0,W-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(W),label:``,right:`┐`}})(),K=n(e=>{x&&(S(null),H(`/${x.commandName} ${e.value}`))},[x,H]),q=n(()=>{x&&(S(null),H(`/${x.commandName}`))},[x,H]),oe=n(()=>{S(null)},[]);return j(c,{flexDirection:`column`,children:[x&&an(x.interaction)&&A(Bt,{commandName:x.commandName,interaction:x.interaction,onSelect:K,onCancel:oe}),x&&on(x.interaction)&&A(Vt,{commandName:x.commandName,interaction:x.interaction,onConfirm:q,onCancel:oe}),!x&&F&&A(Lt,{commands:I,selectedIndex:L,visible:F,isSubcommandMode:te}),j(l,{color:U,children:[G.left,G.label?A(l,{backgroundColor:U,color:`black`,bold:!0,children:G.label}):null,G.right]}),A(c,{borderStyle:`single`,borderTop:!1,borderColor:U,paddingLeft:1,children:i?A(l,{color:`yellow`,children:` Interrupting...`}):u?j(l,{color:`cyan`,children:[` `,`Queued:`,` `,u.length>50?u.slice(0,47)+`...`:u,` `,A(l,{dimColor:!0,children:`(Backspace to cancel)`})]}):r?A(Nt,{text:` Waiting for response... (ESC to interrupt)`}):j(c,{children:[A(l,{color:`green`,bold:!0,children:`> `}),A(Et,{value:_,onChange:e=>{v(e),B(),b(null)},onSubmit:ae,onPaste:ne,placeholder:`Type a message or /help`,availableWidth:ee,cursorHint:y,enableVerticalNavigation:!1})]})})]})}function $(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function cn(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 ln(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 un(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=mn(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=fn(e.selectedIndex,t,n),i=pn(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function dn(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=mn(e.selectedIndex,t.itemCount),r=pn(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function fn(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 pn(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 mn(e,t){return Math.min(Math.max(e,0),t-1)}function hn(e,t,n){let r=ln({...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 gn(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:typeof t==`string`?un(e,t,{itemCount:n}):{state:{...e,selectedIndex:t.index,resolved:!0},effect:{type:`select`,index:t.index}}}function _n({message:e,options:t=[`Yes`,`No`],onSelect:r}){let[i,a]=s(()=>$()),u=o(i),d=n(e=>{let n=gn(u.current,e,t.length);u.current=n.state,a(n.state),n.effect.type===`select`&&r(n.effect.index)},[r,t.length]);return f((e,n)=>{let r=hn(e,n,t.length);r!==void 0&&d(r)}),j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[A(l,{color:`yellow`,children:e}),A(c,{marginTop:1,children:t.map((e,t)=>A(c,{marginRight:2,children:j(l,{color:t===i.selectedIndex?`cyan`:void 0,bold:t===i.selectedIndex,children:[t===i.selectedIndex?`> `:` `,e]})},e))}),A(l,{dimColor:!0,children:` arrow keys to select, Enter to confirm`})]})}function vn({items:e,renderItem:t,onSelect:r,onCancel:i,maxVisible:a=3}){let[u,d]=s(()=>$()),p=o(u),m=n(t=>{let n=un(p.current,t,{itemCount:e.length,maxVisible:a});if(p.current=n.state,d(n.state),n.effect.type===`cancel`)i();else if(n.effect.type===`select`){let t=e[n.effect.index];t!==void 0&&r(t)}},[e,a,i,r]);if(f((e,t)=>{let n=cn(t);n!==void 0&&m(n)}),e.length===0)return A(c,{});let h=dn(u,{itemCount:e.length,maxVisible:a});h!==u&&(p.current=h);let{selectedIndex:g,scrollOffset:_}=h,v=e.slice(_,_+a),y=_+a<e.length;return j(c,{flexDirection:`column`,children:[_>0&&j(l,{dimColor:!0,children:[` ↑ `,_,` more above`]}),v.map((e,n)=>A(c,{marginBottom:1,children:t(e,_+n===g)},_+n)),y&&j(l,{dimColor:!0,children:[` ↓ `,e.length-_-a,` more below`]})]})}function yn(){return{value:``,resolved:!1}}function bn(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 xn(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`}}:Sn(e,n)}function Sn(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 Cn({title:e,description:t,placeholder:r,onSubmit:i,onCancel:a,validate:u,allowEmpty:d=!1,masked:p=!1}){let[m,h]=s(()=>yn()),g=o(m),_=n(e=>{let t=xn(g.current,e,{allowEmpty:d,validate:u});g.current=t.state,h(t.state),t.effect.type===`cancel`?a():t.effect.type===`submit`&&i(t.effect.value)},[d,u,a,i]);return f((e,t)=>{let n=bn(e,t);n!==void 0&&_(n)}),j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[A(l,{color:`yellow`,bold:!0,children:e}),A(wn,{description:t}),j(c,{marginTop:1,children:[A(l,{color:`cyan`,children:`> `}),m.value?A(l,{children:p?`*`.repeat(m.value.length):m.value}):r?A(l,{dimColor:!0,children:r}):null,A(l,{color:`cyan`,children:`█`})]}),m.error&&A(l,{color:`red`,children:m.error}),A(l,{dimColor:!0,children:` Enter Submit Esc Cancel`})]})}function wn({description:e}){return e===void 0||e.length===0?null:A(l,{dimColor:!0,children:e})}function Tn({prompt:e,onSubmit:t,onCancel:n}){return e.kind===`text`?A(Cn,{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}`):j(c,{flexDirection:`column`,children:[A(l,{bold:!0,children:e.title}),e.description!==void 0&&e.description.length>0&&A(l,{dimColor:!0,children:e.description}),A(vn,{items:[...e.options],maxVisible:e.maxVisible,renderItem:(e,t)=>j(l,{color:t?`cyan`:void 0,children:[t?`> `:` `,e.label]}),onSelect:e=>t(e.value),onCancel:n})]})}const En=[`Allow`,`Allow always (this session)`,`Deny`];function Dn(e,t){let n=ln({...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 On(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return An(e,t.index);let n=un(e,t,{itemCount:En.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:kn(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function kn(e){return e===0?!0:e===1?`allow-session`:!1}function An(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:kn(t)}}}function jn(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 Mn({request:t}){let[n,r]=e.useState(()=>$()),i=e.useRef(n),a=e.useRef(t);if(a.current!==t){a.current=t;let e=$();i.current=e,r(e)}let o=e.useCallback(e=>{let n=On(i.current,e);i.current=n.state,r(n.state),n.effect.type===`resolve`&&t.resolve(n.effect.decision)},[t]);return f((e,t)=>{let n=Dn(e,t);n!==void 0&&o(n)}),j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[A(l,{color:`yellow`,bold:!0,children:`[Permission Required]`}),j(l,{children:[`Tool:`,` `,A(l,{color:`cyan`,bold:!0,children:t.toolName})]}),j(l,{dimColor:!0,children:[` `,jn(t.toolArgs)]}),A(c,{marginTop:1,children:En.map((e,t)=>A(c,{marginRight:2,children:j(l,{color:t===n.selectedIndex?`cyan`:void 0,bold:t===n.selectedIndex,children:[t===n.selectedIndex?`> `:` `,e]})},e))}),A(l,{dimColor:!0,children:` left/right to select, Enter to confirm`})]})}function Nn(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?A(c,{marginBottom:1,children:A(l,{color:`yellow`,children:`Thinking...`})}):A(k,{})}function Fn(e){return j(c,{flexDirection:`column`,marginBottom:1,children:[A(l,{color:`white`,bold:!0,children:`Tools:`}),A(l,{children:` `}),e.map((e,t)=>{let{color:n,icon:r,strikethrough:i}=Nn(e);return j(c,{flexDirection:`column`,children:[j(l,{color:n,strikethrough:i,children:[` `,r,` `,e.toolName,`(`,e.firstArg,`)`]}),e.diffLines&&e.diffLines.length>0&&A(we,{file:e.diffFile,lines:e.diffLines})]},`${e.toolName}-${t}`)})]})}function In({text:e,activeTools:t,isThinking:n=!1}){let r=t.length>0,i=e.length>0;return!r&&!i?Pn(n):j(c,{flexDirection:`column`,children:[r&&Fn(t),i&&j(c,{flexDirection:`column`,marginBottom:1,children:[A(l,{color:`cyan`,bold:!0,children:`Robota:`}),A(l,{children:` `}),A(c,{marginLeft:2,children:A(l,{wrap:`wrap`,children:ye(e)})})]})]})}function Ln({title:e,items:t,onSelect:r,onBack:i,loading:a,error:u}){let[d,p]=s(()=>$()),m=o(d),h=!a&&!u,g=n(e=>{let n=un(m.current,e,{itemCount:t.length,enabled:h});if(m.current=n.state,p(n.state),n.effect.type===`cancel`)i();else if(n.effect.type===`select`){let e=t[n.effect.index];e!==void 0&&r(e.value)}},[h,t,i,r]);f((e,t)=>{let n=cn(t);n!==void 0&&g(n)});let _=dn(d,{itemCount:t.length});_!==d&&(m.current=_);let v=_.selectedIndex;return j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[A(l,{color:`yellow`,bold:!0,children:e}),a&&A(c,{marginTop:1,children:A(l,{dimColor:!0,children:`Loading...`})}),u&&j(c,{marginTop:1,flexDirection:`column`,children:[A(l,{color:`red`,children:u}),A(l,{dimColor:!0,children:`Press Esc to go back`})]}),!a&&!u&&A(c,{flexDirection:`column`,marginTop:1,children:t.map((e,t)=>j(c,{children:[j(l,{color:t===v?`cyan`:void 0,bold:t===v,children:[t===v?`> `:` `,e.label]}),e.hint&&j(l,{dimColor:!0,children:[` `,e.hint]})]},e.value))}),A(l,{dimColor:!0,children:a||u?``:` ↑↓ Navigate Enter Select Esc Back`})]})}function Rn(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function zn(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function Bn(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 Vn(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 Hn(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 Un(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 Wn(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 Gn(e,t,n,r,a){let[o,c]=s([]),[l,u]=s(!1),[d,f]=s();return i(()=>{if(c([]),f(void 0),e===`marketplace-list`)u(!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}));c([...t,...n]),u(!1)}).catch(e=>{f(e instanceof Error?e.message:String(e)),u(!1)});else if(e===`marketplace-browse`){let e=t??``;u(!0),n.listAvailablePlugins(e).then(e=>{c(e.map(e=>({label:e.name,value:e.name,hint:e.installed?`installed`:e.description}))),u(!1)}).catch(e=>{f(e instanceof Error?e.message:String(e)),u(!1)})}else e===`installed-list`&&(u(!0),n.listInstalled().then(e=>{c(e.map(e=>({label:e.name,value:e.name,hint:e.description}))),u(!1)}).catch(e=>{f(e instanceof Error?e.message:String(e)),u(!1)}))},[a,e,t,n,r]),{items:o,loading:l,error:d}}function Kn({callbacks:e,onClose:t,addMessage:r}){let[i,a]=s([{screen:`main`}]),[o,c]=s(),[l,u]=s(0),d=i[i.length-1]??{screen:`main`},f=n(e=>{a(t=>[...t,e])},[]),p=n(()=>{a(e=>e.length<=1?(t(),e):e.slice(0,-1))},[t]),m=n(e=>{a(n=>{let r=n.slice(0,Math.max(1,n.length-e));return r.length===0?(t(),n):r})},[t]),h=n(e=>{r?.({role:`system`,content:e})},[r]),g=n(()=>{u(e=>e+1)},[]),_=n(e=>c(e),[c]),v={push:n(e=>f({screen:e.screen,context:e.context}),[f]),pop:p,popN:m,notify:h,setConfirm:_,refresh:g},{items:y,loading:b,error:x}=Gn(d.screen,d.context?.marketplace,e,l,i.length),S=n(t=>{let n=d.screen,r=d.context;n===`main`?Rn(t,v):n===`marketplace-list`?zn(t,v):n===`marketplace-action`?Bn(t,r?.marketplace??``,e,v):n===`marketplace-browse`?Vn(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?Hn(t,r?.pluginId??``,e,v):n===`installed-list`?Un(t,e,v):n===`installed-action`&&Wn(t,r?.pluginId??``,e,v)},[d,y,e,f,p,m,h,c,g]),C=n(t=>{d.screen===`marketplace-add`&&e.marketplaceAdd(t).then(e=>{h(`Added marketplace "${e}" from ${t}.`),p()}).catch(e=>{h(`Error: ${e instanceof Error?e.message:String(e)}`),p()})},[d.screen,e,h,p]);if(o)return A(_n,{message:o.message,onSelect:e=>{e===0?o.onConfirm():o.onCancel()}});let w=d.screen;return w===`marketplace-add`?A(Cn,{title:`Add Marketplace Source`,placeholder:`owner/repo or git URL`,onSubmit:C,onCancel:p,validate:e=>e.includes(`/`)?void 0:`Must be owner/repo or a git URL`}):w===`marketplace-action`?A(Ln,{title:`Marketplace: ${d.context?.marketplace??``}`,items:[{label:`Browse plugins`,value:`browse`},{label:`Update`,value:`update`},{label:`Remove`,value:`remove`}],onSelect:S,onBack:p},i.length):w===`marketplace-install-scope`?A(Ln,{title:`Install scope for "${d.context?.pluginId??``}"`,items:[{label:`User scope`,value:`user`},{label:`Project scope`,value:`project`}],onSelect:S,onBack:p},i.length):w===`installed-action`?A(Ln,{title:`Plugin: ${d.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:p},i.length):A(Ln,{title:{main:`Plugin Management`,"marketplace-list":`Marketplace`,"marketplace-browse":`Browse: ${d.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:p,loading:b,error:x},`${w}-${i.length}-${l}`)}function qn({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 A(c,{children:A(l,{color:t?`cyan`:void 0,bold:t,children:`${r} ${e.transport.name.padEnd(18)} ${i} ${o}`})})}function Jn(e,t,r,i,a,o,s,c){f(n((n,l)=>{if(!r){if(l.upArrow){a(e=>Math.max(0,e-1));return}if(l.downArrow){a(t=>Math.min(e.length-1,t+1));return}if(l.escape||l.return){s();return}if(n===` `){let n=e[t];if(!n)return;o(!0),i.setEnabled(n.transport.name,!n.config.enabled).then(()=>{c(),o(!1)}).catch(()=>o(!1))}}},[r,e,t,i,s,c,a,o]))}function Yn({registry:e,onClose:t}){let[r,i]=s(()=>e.getAll()),[a,o]=s(0),[u,d]=s(!1);return Jn(r,a,u,e,o,d,t,n(()=>{i(e.getAll())},[e])),j(c,{flexDirection:`column`,paddingX:2,paddingY:1,children:[A(l,{bold:!0,children:`Settings › Transports`}),A(c,{marginTop:1,flexDirection:`column`,children:r.map((e,t)=>A(qn,{entry:e,selected:t===a},e.transport.name))}),A(c,{marginTop:1,children:A(l,{dimColor:!0,children:`↑↓ select space toggle enter/esc close`})}),u&&A(c,{marginTop:1,children:A(l,{color:`yellow`,children:`Saving…`})})]})}function Xn({sessions:e,onSelect:t,onCancel:n}){return j(c,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[A(l,{bold:!0,color:`cyan`,children:`Select a session to resume (ESC to cancel):`}),A(vn,{items:[...e],renderItem:(e,t)=>{let n=e.preview?e.preview.slice(0,60)+(e.preview.length>60?`...`:``):``;return j(l,{children:[t?`> `:` `,A(l,{bold:!0,children:e.name??e.id.slice(0,8)}),` `,A(l,{dimColor:!0,children:new Date(e.updatedAt).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),` `,j(l,{dimColor:!0,children:[`msgs: `,e.messageCount]}),n?j(k,{children:[`
|
|
18
|
-
`,A(l,{color:`gray`,children:n})]}):null]})},onSelect:e=>t(e.id),onCancel:n})]})}const Zn=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],Qn=/\s+/g;function $n(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function er(e){return $n(e).filter(e=>Zn.includes(e.status)).length}function tr(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:rr(e),subtitle:ir(e),statusLabel:ar(e.status),preview:sr(e.preview??e.currentAction),color:or(e),isSelected:n};return{...r,accessibleText:cr(r)}}function nr(e){let t=e.text.trim().replace(Qn,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function rr(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 ir(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 ar(e){return e.replace(/_/g,` `)}function or(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`:Zn.includes(e.status)?`cyan`:`white`}function sr(e){return e?.trim().replace(Qn,` `)||void 0}function cr(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function lr(e,t={}){let n=tr(e),r=ur(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 ur(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function dr({entries:e}){return e.length===0?null:j(c,{flexDirection:`column`,marginBottom:1,children:[A(l,{color:`cyan`,bold:!0,children:`Background work`}),e.map((t,n)=>{let r=lr(t,{isLast:n===e.length-1});return j(l,{children:[`${r.connector} `,A(l,{color:r.color,children:r.marker}),` ${r.label}`,r.segments.map((e,t)=>A(l,{dimColor:!0,children:` · ${e}`},`${e}-${t}`)),r.preview?A(l,{dimColor:!0,children:` · ${r.preview}`}):null]},t.id)})]})}function fr({snapshot:e,selectedEntryId:t,onSelect:n,onClose:r}){let{normalized:i,visibleEntries:a,applyAction:o}=pr({entries:[...e?.entries??[]],selectedEntryId:t,onSelect:n,onClose:r});return f((e,t)=>{let n=cn(t);n!==void 0&&o(n)}),j(c,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[A(l,{color:`cyan`,bold:!0,children:`Execution workspace`}),A(c,{flexDirection:`column`,marginTop:1,children:a.length===0?A(l,{dimColor:!0,children:`No workspace entries`}):a.map((e,n)=>A(gr,{entry:e,isFocused:i.scrollOffset+n===i.selectedIndex,selectedEntryId:t},e.id))}),A(l,{dimColor:!0,children:`Ctrl+B Close ↑↓ Navigate Enter Switch Esc Close`})]})}function pr({entries:e,selectedEntryId:t,onSelect:n,onClose:r}){let[a,c]=s(()=>$()),l=o(a);i(()=>{let n=hr({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});l.current=n,c(n)},[e.length,t]);let u=hr({selectedIndex:a.selectedIndex,scrollOffset:a.scrollOffset,itemCount:e.length});return u!==a&&(l.current=u),{normalized:u,visibleEntries:e.slice(u.scrollOffset,u.scrollOffset+8),applyAction:mr({entries:e,stateRef:l,setState:c,onSelect:n,onClose:r})}}function mr({entries:e,stateRef:t,setState:n,onSelect:r,onClose:i}){return a=>{let o=un(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 hr(e){return dn({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function gr({entry:e,isFocused:t,selectedEntryId:n}){let r=tr(e,{selectedEntryId:n});return j(l,{children:[A(l,{color:t?`cyan`:void 0,bold:t,children:t?`> `:` `}),A(l,{color:r.color,children:r.radio}),A(l,{color:t?`cyan`:void 0,bold:t,children:` ${r.title}`}),A(l,{dimColor:!0,children:` · ${r.statusLabel}`}),r.subtitle?A(l,{dimColor:!0,children:` · ${r.subtitle}`}):null,r.preview?A(l,{dimColor:!0,children:` · ${r.preview}`}):null]})}function _r({entry:e,page:t,loading:n,error:r}){let i=tr(e,{selectedEntryId:e.id}),a=t?.records.slice(-12)??[];return j(c,{flexDirection:`column`,marginBottom:1,children:[A(l,{color:`cyan`,bold:!0,children:`Viewing ${i.title}`}),j(l,{dimColor:!0,children:[i.statusLabel,i.subtitle?` · ${i.subtitle}`:``,i.preview?` · ${i.preview}`:``]}),n?A(l,{dimColor:!0,children:`Loading workspace detail...`}):null,r?A(l,{color:`red`,children:r}):null,!n&&!r&&a.length===0?A(l,{dimColor:!0,children:`No detail yet`}):null,!n&&!r&&a.map(e=>A(l,{color:vr(e.kind),children:nr(e)},e.id)),t?.nextCursor?A(l,{dimColor:!0,children:`... more detail available`}):null]})}function vr(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function yr({message:e}){return A(c,{paddingX:1,marginBottom:1,children:A(l,{color:`yellow`,children:e})})}function br(e){let[t,n]=s(e.resumeSessionId),[r,i]=s(e.showSessionPickerOnStart??!1);return A(K,{value:e.cliAdapter,children:A(xr,{...e,showSessionPickerOnStart:r,resumeSessionId:t,onSessionSwitch:e=>{i(!1),n(e)}},t??`__new__`)})}function xr(e){let t=e.cwd,{interactiveSession:r,registry:o,commandEffectQueue:u,history:p,addEntry:m,streamingText:h,activeTools:g,isThinking:_,isAborting:v,isShuttingDown:y,pendingPrompt:S,executionWorkspaceSnapshot:C,selectedExecutionEntryId:w,selectExecutionWorkspaceEntry:T,readExecutionWorkspaceDetail:D,permissionRequest:O,contextState:k,handleSubmit:M,handleAbort:N,handleCancelQueue:ee,handleShutdown:P}=H({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}),F=ie(t),I=e.commandHostAdapters?.plugin??F,{exit:L}=d(),[R,te]=s(e.sessionName),[z,ne]=s(),[B,V]=s(!1),[re,ae]=s(null),[U,W]=s(),[G,K]=s(!1),[q,se]=fe(),ce=a(()=>$n(C),[C]),le=er(C),J=a(()=>C?.entries.find(e=>e.id===w),[C,w]),{handleSubmit:de,pendingModelId:Y,pendingInteractionPrompt:X,showPluginTUI:Z,showSessionPicker:Q,showTransportTUI:pe,setShowPluginTUI:me,setShowSessionPicker:he,setShowTransportTUI:ge,handleModelConfirm:_e,handleInteractionSubmit:ve,handleInteractionCancel:ye}=ue({cwd:t,providerOverride:e.providerOverride,interactiveSession:r,commandEffectQueue:u,addEntry:m,baseHandleSubmit:M,setSessionName:te,setStatusLineSettings:se,showSessionPickerOnStart:e.showSessionPickerOnStart,openAgentSwitcher:()=>V(!0)}),be=!J||J.kind===`main_thread`||J.controls.includes(`send`),xe=J&&J.kind!==`main_thread`?J.title:void 0,Se=a(()=>C?.entries.find(e=>e.kind===`main_thread`)?.id,[C]),Ce=n(async e=>{J&&J.kind!==`main_thread`&&J.controls.includes(`send`)?await r.sendAgentJob(J.sourceId,e):await de(e)},[J,de,r]);i(()=>{let e=r?.getName?.();e&&!R&&te(e)},[r,R]),i(()=>{let t=!0;return e.startupUpdateNotice?.then(e=>{t&&e!==void 0&&ne(e)}).catch(()=>{}),()=>{t=!1}},[e.startupUpdateNotice]),i(()=>{let e=R?`Robota — ${R}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[R]),f((e,t)=>{!t.escape||!_||O||Z||pe||Q||B||N()}),f((e,t)=>{!t.ctrl||e!==`b`||O||Z||Q||y||V(e=>!e)}),f((e,t)=>{!t.escape||_||O||Z||pe||Q||B||J&&J.kind!==`main_thread`&&Se!==void 0&&T(Se)}),f((e,t)=>{!t.ctrl||e!==`c`||y||P(`prompt_input_exit`).finally(()=>L())}),i(()=>{let e=()=>{y||P(`other`).finally(()=>L())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[P,L,y]),i(()=>{if(!J||J.kind===`main_thread`){ae(null),W(void 0),K(!1);return}let e=!0;return K(!0),W(void 0),D(J.id).then(t=>{e&&(ae(t),K(!1))}).catch(t=>{e&&(W(t.message),K(!1))}),()=>{e=!1}},[C,D,J]);let we=e.permissionMode??`default`,Te=``;try{let e=r.getSession();we=e.getPermissionMode(),Te=e.getSessionId()}catch{}return j(c,{flexDirection:`column`,children:[j(c,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[A(l,{color:`cyan`,bold:!0,children:`
|
|
19
|
-
____ ___ ____ ___ _____ _
|
|
20
|
-
| _ \\ / _ \\| __ ) / _ \\_ _|/ \\
|
|
21
|
-
| |_) | | | | _ \\| | | || | / _ \\
|
|
22
|
-
| _ <| |_| | |_) | |_| || |/ ___ \\
|
|
23
|
-
|_| \\_\\\\___/|____/ \\___/ |_/_/ \\_\\
|
|
24
|
-
`}),j(l,{dimColor:!0,children:[` v`,e.version??`0.0.0`]})]}),z&&A(yr,{message:z}),j(c,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[J&&J.kind!==`main_thread`?A(_r,{entry:J,page:re,loading:G,error:U}):A(Ye,{history:p}),y&&A(c,{marginBottom:1,children:A(l,{color:`yellow`,children:`Shutting down...`})}),(_||g.length>0)&&A(c,{flexDirection:`column`,marginBottom:1,children:A(In,{text:h,activeTools:g,isThinking:_})}),A(dr,{entries:ce})]}),B&&A(fr,{snapshot:C,selectedEntryId:w,onSelect:T,onClose:()=>V(!1)}),O&&A(Mn,{request:O}),Y&&A(_n,{message:oe(Y),onSelect:_e}),X&&A(Tn,{prompt:X,onSubmit:ve,onCancel:ye}),Z&&A(Kn,{callbacks:I,onClose:()=>me(!1),addMessage:e=>m(E(x(e.content)))}),pe&&e.transportRegistry&&A(Yn,{registry:e.transportRegistry,onClose:()=>ge(!1)}),Q&&A(Xn,{sessions:b(e.sessionStore,e.cwd),onSelect:t=>{he(!1),e.onSessionSwitch(t)},onCancel:()=>{he(!1),m(E(x(`Session resume cancelled.`)))}}),A(ot,{cwd:t,permissionMode:we,modelId:e.modelId,providerType:e.providerType,sessionId:Te,isThinking:_,activeToolCount:g.length,activeBackgroundTaskCount:le,hasPendingPrompt:S!==null,contextState:k,sessionName:R,settings:q,activeAgentLabel:xe}),A(sn,{onSubmit:Ce,onCancelQueue:ee,isDisabled:!!O||Z||pe||Q||B||y||X!==null||_&&!!S||!be,isAborting:v,pendingPrompt:S,registry:o,sessionName:R,history:p,resolveInteraction:e.resolveInteraction}),A(l,{children:` `})]})}async function Sr(e){process.on(`unhandledRejection`,e=>{process.stderr.write(`\n[UNHANDLED REJECTION] ${e}\n`),e instanceof Error&&process.stderr.write(`${e.stack}\n`)}),await u(A(br,{...e}),{exitOnCtrlC:!1}).waitUntilExit()}var Cr=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await Sr(this.options)}async stop(){}validateOptions(e){return!0}};export{Cr as t};
|
|
25
|
-
//# sourceMappingURL=tui-DBLn1T15.js.map
|