@mce-bt/microagents-tui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface AppProps {
3
+ /** Direct agent URL — skip agent selection */
4
+ agentUrl?: string;
5
+ /** Agent name for display */
6
+ agentName?: string;
7
+ /** Registry URL for agent discovery */
8
+ registryUrl?: string;
9
+ /** Shared secret for auth */
10
+ sharedSecret?: string;
11
+ /** Pre-existing session ID */
12
+ sessionId?: string;
13
+ }
14
+ export declare function App({ agentUrl, agentName, registryUrl, sharedSecret, sessionId, }: AppProps): React.JSX.Element;
15
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAWxC,MAAM,WAAW,QAAQ;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,GAAG,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,WAAqC,EACrC,YAAY,EACZ,SAAS,GACV,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4C9B"}
package/dist/App.js ADDED
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useState } from 'react';
3
+ import { Box, Text, useApp, useInput } from 'ink';
4
+ import { Chat } from './components/Chat.js';
5
+ import { AgentSelector } from './components/AgentSelector.js';
6
+ export function App({ agentUrl, agentName, registryUrl = 'http://localhost:4000', sharedSecret, sessionId, }) {
7
+ const { exit } = useApp();
8
+ const [selectedAgent, setSelectedAgent] = useState(agentUrl ? { id: 'direct', name: agentName ?? 'Agent', baseUrl: agentUrl } : null);
9
+ // Ctrl+C exits
10
+ useInput((_input, key) => {
11
+ if (key.ctrl && _input === 'c') {
12
+ exit();
13
+ }
14
+ });
15
+ // If we have a direct URL, go straight to chat
16
+ if (selectedAgent) {
17
+ return (_jsx(Chat, { agentUrl: selectedAgent.baseUrl, agentName: selectedAgent.name, sharedSecret: sharedSecret, sessionId: sessionId }));
18
+ }
19
+ // Show agent selector
20
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(AgentSelector, { registryUrl: registryUrl, sharedSecret: sharedSecret, onSelect: (agent) => {
21
+ setSelectedAgent({
22
+ id: agent.id,
23
+ name: agent.name,
24
+ baseUrl: agent.baseUrl,
25
+ });
26
+ } }), _jsx(Box, { marginTop: 1, paddingLeft: 1, children: _jsx(Text, { color: "gray", children: 'Press Ctrl+C to exit' }) })] }));
27
+ }
28
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAqB9D,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,GAAG,uBAAuB,EACrC,YAAY,EACZ,SAAS,GACA;IACT,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAClF,CAAC;IAEF,eAAe;IACf,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,KAAC,IAAI,IACH,QAAQ,EAAE,aAAa,CAAC,OAAO,EAC/B,SAAS,EAAE,aAAa,CAAC,IAAI,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,aAAa,IACZ,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,gBAAgB,CAAC;wBACf,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;gBACL,CAAC,GACD,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,YAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,sBAAsB,GAAQ,GAC9C,IACF,CACP,CAAC;AACJ,CAAC"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import React from 'react';
3
+ import { render } from 'ink';
4
+ import { App } from './App.js';
5
+ const args = process.argv.slice(2);
6
+ function getArg(name) {
7
+ const idx = args.indexOf(`--${name}`);
8
+ if (idx === -1)
9
+ return undefined;
10
+ return args[idx + 1];
11
+ }
12
+ const agentUrl = getArg('agent-url') ?? getArg('url');
13
+ const agentName = getArg('agent-name') ?? getArg('name') ?? 'Agent';
14
+ const registryUrl = getArg('registry-url') ?? getArg('registry') ?? process.env.REGISTRY_URL ?? 'http://localhost:4000';
15
+ const sharedSecret = getArg('secret') ?? process.env.SHARED_SECRET;
16
+ const sessionId = getArg('session');
17
+ render(React.createElement(App, {
18
+ agentUrl,
19
+ agentName,
20
+ registryUrl,
21
+ sharedSecret,
22
+ sessionId,
23
+ }));
24
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;AACpE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB,CAAC;AACxH,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AACnE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEpC,MAAM,CACJ,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,YAAY;IACZ,SAAS;CACV,CAAC,CACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { AgUiEvent } from '@mce-bt/microagents-core';
2
+ export interface AgUiClientConfig {
3
+ agentUrl: string;
4
+ sharedSecret?: string;
5
+ }
6
+ /**
7
+ * AG-UI SSE client — connects to an agent's AG-UI endpoint and streams events.
8
+ */
9
+ export declare class AgUiClient {
10
+ private config;
11
+ constructor(config: AgUiClientConfig);
12
+ /**
13
+ * Start a run and stream AG-UI events.
14
+ */
15
+ run(input: {
16
+ threadId: string;
17
+ runId: string;
18
+ message: string;
19
+ sessionId?: string;
20
+ tier?: string;
21
+ temperature?: number;
22
+ maxTokens?: number;
23
+ maxToolRounds?: number;
24
+ }): AsyncGenerator<AgUiEvent>;
25
+ }
26
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAIpC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,cAAc,CAAC,SAAS,CAAC;CA0E9B"}
package/dist/client.js ADDED
@@ -0,0 +1,81 @@
1
+ import { createHmac } from 'node:crypto';
2
+ /**
3
+ * AG-UI SSE client — connects to an agent's AG-UI endpoint and streams events.
4
+ */
5
+ export class AgUiClient {
6
+ config;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ /**
11
+ * Start a run and stream AG-UI events.
12
+ */
13
+ async *run(input) {
14
+ const url = `${this.config.agentUrl}/ag-ui/runs`;
15
+ const body = JSON.stringify(input);
16
+ const headers = {
17
+ 'Content-Type': 'application/json',
18
+ };
19
+ if (this.config.sharedSecret) {
20
+ const timestamp = Date.now().toString();
21
+ const signature = createHmac('sha256', this.config.sharedSecret)
22
+ .update(`${timestamp}.${body}`)
23
+ .digest('hex');
24
+ headers['X-Agent-Id'] = 'tui-client';
25
+ headers['X-Timestamp'] = timestamp;
26
+ headers['X-Signature'] = signature;
27
+ }
28
+ const response = await fetch(url, {
29
+ method: 'POST',
30
+ headers,
31
+ body,
32
+ });
33
+ if (!response.ok) {
34
+ throw new Error(`AG-UI request failed: HTTP ${response.status} ${response.statusText}`);
35
+ }
36
+ if (!response.body) {
37
+ throw new Error('No response body from AG-UI endpoint');
38
+ }
39
+ const reader = response.body.getReader();
40
+ const decoder = new TextDecoder();
41
+ let buffer = '';
42
+ try {
43
+ for (;;) {
44
+ const { done, value } = await reader.read();
45
+ if (done)
46
+ break;
47
+ buffer += decoder.decode(value, { stream: true });
48
+ // Parse SSE data lines
49
+ const lines = buffer.split('\n');
50
+ buffer = lines.pop() ?? '';
51
+ for (const line of lines) {
52
+ const trimmed = line.trim();
53
+ if (!trimmed || !trimmed.startsWith('data: '))
54
+ continue;
55
+ const jsonStr = trimmed.slice(6);
56
+ try {
57
+ const event = JSON.parse(jsonStr);
58
+ yield event;
59
+ }
60
+ catch {
61
+ // Skip malformed events
62
+ }
63
+ }
64
+ }
65
+ // Process remaining buffer
66
+ if (buffer.trim().startsWith('data: ')) {
67
+ try {
68
+ const event = JSON.parse(buffer.trim().slice(6));
69
+ yield event;
70
+ }
71
+ catch {
72
+ // Skip
73
+ }
74
+ }
75
+ }
76
+ finally {
77
+ reader.releaseLock();
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ interface AgentInfo {
3
+ id: string;
4
+ name: string;
5
+ domain: string;
6
+ status: string;
7
+ baseUrl: string;
8
+ }
9
+ export interface AgentSelectorProps {
10
+ registryUrl: string;
11
+ sharedSecret?: string;
12
+ onSelect: (agent: AgentInfo) => void;
13
+ }
14
+ export declare function AgentSelector({ registryUrl, sharedSecret, onSelect }: AgentSelectorProps): React.JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=AgentSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSelector.d.ts","sourceRoot":"","sources":["../../src/components/AgentSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuF5G"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useState, useEffect } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ import Spinner from 'ink-spinner';
5
+ export function AgentSelector({ registryUrl, sharedSecret, onSelect }) {
6
+ const [agents, setAgents] = useState([]);
7
+ const [selectedIndex, setSelectedIndex] = useState(0);
8
+ const [loading, setLoading] = useState(true);
9
+ const [error, setError] = useState(null);
10
+ useEffect(() => {
11
+ const fetchAgents = async () => {
12
+ try {
13
+ const headers = {};
14
+ if (sharedSecret) {
15
+ headers['X-Shared-Secret'] = sharedSecret;
16
+ }
17
+ const res = await fetch(`${registryUrl}/api/agents`, {
18
+ headers,
19
+ signal: AbortSignal.timeout(5000),
20
+ });
21
+ if (!res.ok)
22
+ throw new Error(`HTTP ${res.status}`);
23
+ const data = await res.json();
24
+ const onlineAgents = data.filter(a => a.status === 'online');
25
+ setAgents(onlineAgents);
26
+ if (onlineAgents.length === 0) {
27
+ setError('No online agents found. Start an agent first.');
28
+ }
29
+ }
30
+ catch (err) {
31
+ setError(err instanceof Error ? err.message : 'Failed to fetch agents');
32
+ }
33
+ finally {
34
+ setLoading(false);
35
+ }
36
+ };
37
+ void fetchAgents();
38
+ }, [registryUrl]);
39
+ useInput((input, key) => {
40
+ if (loading || agents.length === 0)
41
+ return;
42
+ if (key.upArrow) {
43
+ setSelectedIndex(prev => (prev > 0 ? prev - 1 : agents.length - 1));
44
+ }
45
+ else if (key.downArrow) {
46
+ setSelectedIndex(prev => (prev < agents.length - 1 ? prev + 1 : 0));
47
+ }
48
+ else if (key.return) {
49
+ onSelect(agents[selectedIndex]);
50
+ }
51
+ });
52
+ if (loading) {
53
+ return (_jsxs(Box, { padding: 1, children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: ' Fetching agents from registry...' })] }));
54
+ }
55
+ if (error) {
56
+ return (_jsxs(Box, { padding: 1, flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ['✗ ', error] }), _jsxs(Text, { color: "gray", children: ['\n Registry: ', registryUrl] })] }));
57
+ }
58
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: '📡 Select an agent' }), _jsx(Text, { color: "gray", children: '\n Use ↑↓ to navigate, Enter to select\n' }), agents.map((agent, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === selectedIndex ? 'cyan' : 'white', children: [i === selectedIndex ? ' ❯ ' : ' ', _jsx(Text, { bold: i === selectedIndex, children: agent.name }), _jsx(Text, { color: "gray", children: ` (${agent.domain}) — ${agent.baseUrl}` })] }) }, agent.id)))] }));
59
+ }
60
+ //# sourceMappingURL=AgentSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSelector.js","sourceRoot":"","sources":["../../src/components/AgentSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface ChatProps {
3
+ agentUrl: string;
4
+ agentName: string;
5
+ sharedSecret?: string;
6
+ sessionId?: string;
7
+ }
8
+ export declare function Chat({ agentUrl, agentName, sharedSecret, sessionId: initialSessionId }: ChatProps): React.JSX.Element;
9
+ //# sourceMappingURL=Chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/components/Chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAoBrD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkKrH"}
@@ -0,0 +1,79 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useState, useCallback } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import TextInput from 'ink-text-input';
5
+ import Spinner from 'ink-spinner';
6
+ import { AgUiEventType } from '@mce-bt/microagents-core';
7
+ import { AgUiClient } from '../client.js';
8
+ import { randomUUID } from 'node:crypto';
9
+ export function Chat({ agentUrl, agentName, sharedSecret, sessionId: initialSessionId }) {
10
+ const [messages, setMessages] = useState([]);
11
+ const [input, setInput] = useState('');
12
+ const [isStreaming, setIsStreaming] = useState(false);
13
+ const [currentResponse, setCurrentResponse] = useState('');
14
+ const [activeTools, setActiveTools] = useState([]);
15
+ const [error, setError] = useState(null);
16
+ const [sessionId] = useState(initialSessionId ?? randomUUID());
17
+ const client = new AgUiClient({ agentUrl, sharedSecret });
18
+ const handleSubmit = useCallback(async (value) => {
19
+ if (!value.trim() || isStreaming)
20
+ return;
21
+ const userMessage = value.trim();
22
+ setInput('');
23
+ setError(null);
24
+ setMessages(prev => [...prev, { role: 'user', content: userMessage }]);
25
+ setIsStreaming(true);
26
+ setCurrentResponse('');
27
+ setActiveTools([]);
28
+ try {
29
+ const threadId = sessionId;
30
+ const runId = randomUUID();
31
+ let responseText = '';
32
+ const stream = client.run({
33
+ threadId,
34
+ runId,
35
+ message: userMessage,
36
+ sessionId,
37
+ });
38
+ for await (const event of stream) {
39
+ handleEvent(event, (delta) => {
40
+ responseText += delta;
41
+ setCurrentResponse(responseText);
42
+ });
43
+ }
44
+ setMessages(prev => [...prev, { role: 'assistant', content: responseText }]);
45
+ setCurrentResponse('');
46
+ }
47
+ catch (err) {
48
+ setError(err instanceof Error ? err.message : String(err));
49
+ }
50
+ finally {
51
+ setIsStreaming(false);
52
+ setActiveTools([]);
53
+ }
54
+ }, [isStreaming, sessionId]);
55
+ const handleEvent = (event, onDelta) => {
56
+ switch (event.type) {
57
+ case AgUiEventType.TEXT_MESSAGE_CONTENT:
58
+ onDelta(event.delta);
59
+ break;
60
+ case AgUiEventType.TOOL_CALL_START:
61
+ setActiveTools(prev => [
62
+ ...prev,
63
+ { id: event.toolCallId, name: event.toolCallName, args: '' },
64
+ ]);
65
+ break;
66
+ case AgUiEventType.TOOL_CALL_ARGS:
67
+ setActiveTools(prev => prev.map(t => t.id === event.toolCallId ? { ...t, args: t.args + event.delta } : t));
68
+ break;
69
+ case AgUiEventType.TOOL_CALL_RESULT:
70
+ setActiveTools(prev => prev.map(t => t.id === event.toolCallId ? { ...t, result: event.content } : t));
71
+ break;
72
+ case AgUiEventType.RUN_ERROR:
73
+ setError(event.message);
74
+ break;
75
+ }
76
+ };
77
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ['💬 ', "microagents chat"] }), _jsx(Text, { color: "gray", children: ' — ' }), _jsx(Text, { color: "green", children: agentName }), _jsx(Text, { color: "gray", children: ` (${agentUrl})` })] }), messages.map((msg, i) => (_jsx(Box, { marginBottom: 0, children: msg.role === 'user' ? (_jsxs(Text, { children: [_jsx(Text, { color: "blue", bold: true, children: '> ' }), _jsx(Text, { children: msg.content })] })) : (_jsxs(Text, { children: [_jsx(Text, { color: "green", bold: true, children: '◆ ' }), _jsx(Text, { children: msg.content })] })) }, i))), isStreaming && (_jsxs(Box, { flexDirection: "column", children: [activeTools.map((tool) => (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "yellow", children: ['⚙ ', tool.name, tool.result ? ' ✓' : '...'] }) }, tool.id))), currentResponse ? (_jsxs(Text, { children: [_jsx(Text, { color: "green", bold: true, children: '◆ ' }), _jsx(Text, { children: currentResponse }), _jsx(Text, { color: "gray", children: '▌' })] })) : (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { color: "gray", children: ' Thinking...' })] }))] })), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "red", children: ['✗ ', error] }) })), !isStreaming && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "blue", bold: true, children: '> ' }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type a message..." })] }))] }));
78
+ }
79
+ //# sourceMappingURL=Chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../src/components/Chat.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { App, type AppProps } from './App.js';
2
+ export { Chat, type ChatProps } from './components/Chat.js';
3
+ export { AgentSelector, type AgentSelectorProps } from './components/AgentSelector.js';
4
+ export { AgUiClient, type AgUiClientConfig } from './client.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { App } from './App.js';
2
+ export { Chat } from './components/Chat.js';
3
+ export { AgentSelector } from './components/AgentSelector.js';
4
+ export { AgUiClient } from './client.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAiB,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAkB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAyB,MAAM,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@mce-bt/microagents-tui",
3
+ "version": "0.1.0",
4
+ "description": "Terminal chat interface using AG-UI protocol",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "microagents-chat": "dist/bin.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc --build",
13
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
14
+ "test": "vitest run --passWithNoTests"
15
+ },
16
+ "dependencies": {
17
+ "@mce-bt/microagents-core": "^0.1.0",
18
+ "ink": "^5.1.0",
19
+ "react": "^18.3.1",
20
+ "chalk": "^5.4.1",
21
+ "ink-text-input": "^6.0.0",
22
+ "ink-spinner": "^5.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/react": "^18.3.20"
26
+ },
27
+ "license": "MIT",
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/cavillo/microagents.git",
37
+ "directory": "packages/tui"
38
+ },
39
+ "homepage": "https://github.com/cavillo/microagents#readme",
40
+ "bugs": {
41
+ "url": "https://github.com/cavillo/microagents/issues"
42
+ },
43
+ "engines": {
44
+ "node": ">=20.0.0"
45
+ },
46
+ "exports": {
47
+ ".": {
48
+ "types": "./dist/index.d.ts",
49
+ "import": "./dist/index.js"
50
+ }
51
+ }
52
+ }