@agentick/cli 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +353 -0
- package/dist/bin.d.ts +6 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +44 -0
- package/dist/bin.js.map +1 -0
- package/dist/chat-session.d.ts +37 -0
- package/dist/chat-session.d.ts.map +1 -0
- package/dist/chat-session.js +201 -0
- package/dist/chat-session.js.map +1 -0
- package/dist/cli.d.ts +84 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/chat.d.ts +13 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +22 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/send.d.ts +14 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +77 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +22 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +83 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/renderer.d.ts +85 -0
- package/dist/ui/renderer.d.ts.map +1 -0
- package/dist/ui/renderer.js +163 -0
- package/dist/ui/renderer.js.map +1 -0
- package/package.json +47 -0
- package/src/bin.ts +50 -0
- package/src/chat-session.ts +244 -0
- package/src/cli.ts +206 -0
- package/src/commands/chat.ts +34 -0
- package/src/commands/send.ts +95 -0
- package/src/commands/status.ts +32 -0
- package/src/config.ts +123 -0
- package/src/index.ts +12 -0
- package/src/types.d.ts +33 -0
- package/src/ui/renderer.ts +194 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI - Main CLI class
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
/**
|
|
6
|
+
* CLI configuration
|
|
7
|
+
*/
|
|
8
|
+
export interface CLIConfig {
|
|
9
|
+
/** Server URL */
|
|
10
|
+
url: string;
|
|
11
|
+
/** Session ID (optional - server will create one if not provided) */
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
/** Authentication token */
|
|
14
|
+
token?: string;
|
|
15
|
+
/** Enable streaming (default: true) */
|
|
16
|
+
streaming?: boolean;
|
|
17
|
+
/** Enable debug mode */
|
|
18
|
+
debug?: boolean;
|
|
19
|
+
/** Custom headers */
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* CLI event types
|
|
24
|
+
*/
|
|
25
|
+
export interface CLIEvents {
|
|
26
|
+
connected: [];
|
|
27
|
+
disconnected: [];
|
|
28
|
+
error: [Error];
|
|
29
|
+
"message:sent": [{
|
|
30
|
+
content: string;
|
|
31
|
+
}];
|
|
32
|
+
"message:received": [{
|
|
33
|
+
content: string;
|
|
34
|
+
tokens?: {
|
|
35
|
+
input: number;
|
|
36
|
+
output: number;
|
|
37
|
+
};
|
|
38
|
+
}];
|
|
39
|
+
"stream:delta": [{
|
|
40
|
+
text: string;
|
|
41
|
+
}];
|
|
42
|
+
"stream:start": [];
|
|
43
|
+
"stream:end": [];
|
|
44
|
+
"tool:start": [{
|
|
45
|
+
name: string;
|
|
46
|
+
args: Record<string, unknown>;
|
|
47
|
+
}];
|
|
48
|
+
"tool:end": [{
|
|
49
|
+
name: string;
|
|
50
|
+
result: unknown;
|
|
51
|
+
}];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* CLI class for programmatic usage
|
|
55
|
+
*/
|
|
56
|
+
export declare class CLI extends EventEmitter {
|
|
57
|
+
private client;
|
|
58
|
+
private config;
|
|
59
|
+
private _sessionId?;
|
|
60
|
+
private _isConnected;
|
|
61
|
+
constructor(config: CLIConfig);
|
|
62
|
+
get sessionId(): string | undefined;
|
|
63
|
+
get isConnected(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Send a message and get the response
|
|
66
|
+
*/
|
|
67
|
+
send(message: string): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Send a message and stream the response
|
|
70
|
+
*/
|
|
71
|
+
stream(message: string): AsyncGenerator<{
|
|
72
|
+
type: string;
|
|
73
|
+
data: unknown;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Destroy the client
|
|
77
|
+
*/
|
|
78
|
+
destroy(): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a CLI instance
|
|
82
|
+
*/
|
|
83
|
+
export declare function createCLI(config: CLIConfig): CLI;
|
|
84
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IAEZ,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,EAAE,CAAC;IACd,YAAY,EAAE,EAAE,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,cAAc,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,kBAAkB,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACtF,cAAc,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnC,cAAc,EAAE,EAAE,CAAC;IACnB,YAAY,EAAE,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,GAAI,SAAQ,YAAY;IACnC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,SAAS;IA8B7B,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4E5C;;OAEG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAe/E;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAEhD"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI - Main CLI class
|
|
3
|
+
*/
|
|
4
|
+
import { createClient } from "@agentick/client";
|
|
5
|
+
import EventSource from "eventsource";
|
|
6
|
+
import { EventEmitter } from "events";
|
|
7
|
+
/**
|
|
8
|
+
* CLI class for programmatic usage
|
|
9
|
+
*/
|
|
10
|
+
export class CLI extends EventEmitter {
|
|
11
|
+
client;
|
|
12
|
+
config;
|
|
13
|
+
_sessionId;
|
|
14
|
+
_isConnected = false;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super();
|
|
17
|
+
this.config = config;
|
|
18
|
+
// Create client with Node.js EventSource
|
|
19
|
+
const clientConfig = {
|
|
20
|
+
baseUrl: config.url,
|
|
21
|
+
token: config.token,
|
|
22
|
+
headers: config.headers,
|
|
23
|
+
// @ts-expect-error - EventSource types differ slightly
|
|
24
|
+
EventSource: EventSource,
|
|
25
|
+
};
|
|
26
|
+
this.client = createClient(clientConfig);
|
|
27
|
+
this._sessionId = config.sessionId;
|
|
28
|
+
// Forward connection state changes
|
|
29
|
+
this.client.onConnectionChange((state) => {
|
|
30
|
+
if (state === "connected" && !this._isConnected) {
|
|
31
|
+
this._isConnected = true;
|
|
32
|
+
this.emit("connected");
|
|
33
|
+
}
|
|
34
|
+
else if (state === "disconnected" && this._isConnected) {
|
|
35
|
+
this._isConnected = false;
|
|
36
|
+
this.emit("disconnected");
|
|
37
|
+
}
|
|
38
|
+
else if (state === "error") {
|
|
39
|
+
this.emit("error", new Error("Connection error"));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
get sessionId() {
|
|
44
|
+
return this._sessionId;
|
|
45
|
+
}
|
|
46
|
+
get isConnected() {
|
|
47
|
+
return this._isConnected;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Send a message and get the response
|
|
51
|
+
*/
|
|
52
|
+
async send(message) {
|
|
53
|
+
const handle = this.client.send(message, {
|
|
54
|
+
sessionId: this._sessionId,
|
|
55
|
+
});
|
|
56
|
+
// Track session ID from response
|
|
57
|
+
let response = "";
|
|
58
|
+
this.emit("stream:start");
|
|
59
|
+
for await (const event of handle) {
|
|
60
|
+
// Update session ID if we get one
|
|
61
|
+
if ("sessionId" in event && event.sessionId) {
|
|
62
|
+
this._sessionId = event.sessionId;
|
|
63
|
+
}
|
|
64
|
+
switch (event.type) {
|
|
65
|
+
case "content_delta":
|
|
66
|
+
if ("delta" in event) {
|
|
67
|
+
const delta = event.delta;
|
|
68
|
+
response += delta;
|
|
69
|
+
this.emit("stream:delta", { text: delta });
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
case "tool_call_start":
|
|
73
|
+
if ("name" in event) {
|
|
74
|
+
const toolStart = event;
|
|
75
|
+
this.emit("tool:start", {
|
|
76
|
+
name: toolStart.name,
|
|
77
|
+
args: toolStart.input ?? {},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case "tool_result":
|
|
82
|
+
if ("name" in event) {
|
|
83
|
+
const toolResult = event;
|
|
84
|
+
this.emit("tool:end", {
|
|
85
|
+
name: toolResult.name,
|
|
86
|
+
result: toolResult.result,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
this.emit("stream:end");
|
|
93
|
+
// Get final result
|
|
94
|
+
try {
|
|
95
|
+
const result = await handle.result;
|
|
96
|
+
if (result?.response) {
|
|
97
|
+
response =
|
|
98
|
+
typeof result.response === "string" ? result.response : JSON.stringify(result.response);
|
|
99
|
+
}
|
|
100
|
+
this.emit("message:received", {
|
|
101
|
+
content: response,
|
|
102
|
+
tokens: result?.usage
|
|
103
|
+
? {
|
|
104
|
+
input: result.usage.inputTokens ?? 0,
|
|
105
|
+
output: result.usage.outputTokens ?? 0,
|
|
106
|
+
}
|
|
107
|
+
: undefined,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
// Result might fail if we already consumed the stream
|
|
112
|
+
if (!response) {
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return response;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Send a message and stream the response
|
|
120
|
+
*/
|
|
121
|
+
async *stream(message) {
|
|
122
|
+
const handle = this.client.send(message, {
|
|
123
|
+
sessionId: this._sessionId,
|
|
124
|
+
});
|
|
125
|
+
for await (const event of handle) {
|
|
126
|
+
// Update session ID
|
|
127
|
+
if ("sessionId" in event && event.sessionId) {
|
|
128
|
+
this._sessionId = event.sessionId;
|
|
129
|
+
}
|
|
130
|
+
yield { type: event.type, data: event };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Destroy the client
|
|
135
|
+
*/
|
|
136
|
+
destroy() {
|
|
137
|
+
this.client.destroy();
|
|
138
|
+
this._isConnected = false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create a CLI instance
|
|
143
|
+
*/
|
|
144
|
+
export function createCLI(config) {
|
|
145
|
+
return new CLI(config);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat command - Interactive chat mode
|
|
3
|
+
*/
|
|
4
|
+
interface ChatOptions {
|
|
5
|
+
url?: string;
|
|
6
|
+
session?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
stream?: boolean;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function chatCommand(options: ChatOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat command - Interactive chat mode
|
|
3
|
+
*/
|
|
4
|
+
import { ChatSession } from "../chat-session.js";
|
|
5
|
+
import { loadConfig } from "../config.js";
|
|
6
|
+
export async function chatCommand(options) {
|
|
7
|
+
// Load config with CLI overrides
|
|
8
|
+
const config = loadConfig(options);
|
|
9
|
+
if (!config.url) {
|
|
10
|
+
console.error("Error: Server URL is required. Use --url or set TENTICKLE_URL.");
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const session = new ChatSession({
|
|
14
|
+
url: config.url,
|
|
15
|
+
sessionId: config.sessionId,
|
|
16
|
+
token: config.token,
|
|
17
|
+
streaming: options.stream !== false,
|
|
18
|
+
debug: options.debug,
|
|
19
|
+
});
|
|
20
|
+
await session.start();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,iCAAiC;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Send command - Non-interactive message sending
|
|
3
|
+
*/
|
|
4
|
+
interface SendOptions {
|
|
5
|
+
url?: string;
|
|
6
|
+
session?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
stdin?: boolean;
|
|
9
|
+
format?: "plain" | "json" | "markdown";
|
|
10
|
+
stream?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function sendCommand(message: string, options: SendOptions): Promise<void>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=send.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EtF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Send command - Non-interactive message sending
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import { CLI } from "../cli.js";
|
|
6
|
+
import { Renderer } from "../ui/renderer.js";
|
|
7
|
+
import { loadConfig } from "../config.js";
|
|
8
|
+
export async function sendCommand(message, options) {
|
|
9
|
+
const config = loadConfig(options);
|
|
10
|
+
if (!config.url) {
|
|
11
|
+
console.error("Error: Server URL is required. Use --url or set TENTICKLE_URL.");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const renderer = new Renderer({
|
|
15
|
+
markdown: options.format === "markdown",
|
|
16
|
+
});
|
|
17
|
+
// Read stdin if requested
|
|
18
|
+
let fullMessage = message;
|
|
19
|
+
if (options.stdin) {
|
|
20
|
+
const stdinData = fs.readFileSync(0, "utf-8");
|
|
21
|
+
fullMessage = `${message}\n\n${stdinData}`;
|
|
22
|
+
}
|
|
23
|
+
const cli = new CLI({
|
|
24
|
+
url: config.url,
|
|
25
|
+
sessionId: config.sessionId,
|
|
26
|
+
token: config.token,
|
|
27
|
+
streaming: options.stream !== false,
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
let response = "";
|
|
31
|
+
if (options.stream !== false) {
|
|
32
|
+
// Stream mode - show output as it arrives
|
|
33
|
+
cli.on("stream:delta", ({ text }) => {
|
|
34
|
+
process.stdout.write(text);
|
|
35
|
+
});
|
|
36
|
+
cli.on("tool:start", ({ name }) => {
|
|
37
|
+
if (options.format !== "json") {
|
|
38
|
+
process.stderr.write(`\n[tool: ${name}]\n`);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
response = await cli.send(fullMessage);
|
|
42
|
+
console.log(); // Newline after streaming
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Non-stream mode - wait for complete response
|
|
46
|
+
response = await cli.send(fullMessage);
|
|
47
|
+
}
|
|
48
|
+
// Output based on format
|
|
49
|
+
switch (options.format) {
|
|
50
|
+
case "json":
|
|
51
|
+
renderer.json({
|
|
52
|
+
response,
|
|
53
|
+
sessionId: cli.sessionId,
|
|
54
|
+
});
|
|
55
|
+
break;
|
|
56
|
+
case "markdown":
|
|
57
|
+
if (options.stream === false) {
|
|
58
|
+
renderer.response(response);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
case "plain":
|
|
62
|
+
default:
|
|
63
|
+
if (options.stream === false) {
|
|
64
|
+
renderer.plain(response);
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
cli.destroy();
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
renderer.error(error instanceof Error ? error.message : String(error));
|
|
73
|
+
cli.destroy();
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status command - Show server and session status
|
|
3
|
+
*/
|
|
4
|
+
interface StatusOptions {
|
|
5
|
+
url?: string;
|
|
6
|
+
session?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function statusCommand(options: StatusOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status command - Show server and session status
|
|
3
|
+
*/
|
|
4
|
+
import { Renderer } from "../ui/renderer.js";
|
|
5
|
+
import { loadConfig } from "../config.js";
|
|
6
|
+
export async function statusCommand(options) {
|
|
7
|
+
const config = loadConfig(options);
|
|
8
|
+
const renderer = new Renderer();
|
|
9
|
+
if (!config.url) {
|
|
10
|
+
console.error("Error: Server URL is required. Use --url or set TENTICKLE_URL.");
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
renderer.info("\nAgentick Status");
|
|
14
|
+
renderer.separator();
|
|
15
|
+
renderer.info(`URL: ${config.url}`);
|
|
16
|
+
renderer.info(`Session: ${config.sessionId ?? "(auto-create)"}`);
|
|
17
|
+
renderer.info(`Token: ${config.token ? "(set)" : "(not set)"}`);
|
|
18
|
+
renderer.separator();
|
|
19
|
+
renderer.info("\nNote: Server status check not yet implemented.");
|
|
20
|
+
renderer.info("Use 'agentick chat' to connect and '/status' for session info.\n");
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAErB,QAAQ,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;AACpF,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* CLI configuration
|
|
6
|
+
*/
|
|
7
|
+
export interface Config {
|
|
8
|
+
url?: string;
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
token?: string;
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Config file structure
|
|
15
|
+
*/
|
|
16
|
+
interface ConfigFile {
|
|
17
|
+
defaultUrl?: string;
|
|
18
|
+
defaultToken?: string;
|
|
19
|
+
aliases?: Record<string, string>;
|
|
20
|
+
debug?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load configuration from environment, config file, and CLI options
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadConfig(cliOptions: {
|
|
26
|
+
url?: string;
|
|
27
|
+
session?: string;
|
|
28
|
+
token?: string;
|
|
29
|
+
debug?: boolean;
|
|
30
|
+
}): Config;
|
|
31
|
+
/**
|
|
32
|
+
* Save configuration
|
|
33
|
+
*/
|
|
34
|
+
export declare function saveConfig(config: Partial<ConfigFile>): void;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,UAAU;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,MAAM,CAwBT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAsB5D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and management
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import * as os from "os";
|
|
7
|
+
/**
|
|
8
|
+
* Get config file path
|
|
9
|
+
*/
|
|
10
|
+
function getConfigPath() {
|
|
11
|
+
return path.join(os.homedir(), ".agentick", "config.json");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load config file
|
|
15
|
+
*/
|
|
16
|
+
function loadConfigFile() {
|
|
17
|
+
const configPath = getConfigPath();
|
|
18
|
+
try {
|
|
19
|
+
if (fs.existsSync(configPath)) {
|
|
20
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
21
|
+
return JSON.parse(content);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Ignore config file errors
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolve URL alias
|
|
31
|
+
*/
|
|
32
|
+
function resolveAlias(url, configFile) {
|
|
33
|
+
if (configFile?.aliases && configFile.aliases[url]) {
|
|
34
|
+
return configFile.aliases[url];
|
|
35
|
+
}
|
|
36
|
+
return url;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Load configuration from environment, config file, and CLI options
|
|
40
|
+
*/
|
|
41
|
+
export function loadConfig(cliOptions) {
|
|
42
|
+
const configFile = loadConfigFile();
|
|
43
|
+
// Priority: CLI > Environment > Config file
|
|
44
|
+
let url = cliOptions.url ?? process.env.TENTICKLE_URL ?? configFile?.defaultUrl;
|
|
45
|
+
// Resolve alias if URL looks like one
|
|
46
|
+
if (url && !url.includes("://")) {
|
|
47
|
+
url = resolveAlias(url, configFile);
|
|
48
|
+
}
|
|
49
|
+
const sessionId = cliOptions.session ?? process.env.TENTICKLE_SESSION;
|
|
50
|
+
const token = cliOptions.token ?? process.env.TENTICKLE_TOKEN ?? configFile?.defaultToken;
|
|
51
|
+
const debug = cliOptions.debug || process.env.TENTICKLE_DEBUG === "1" || configFile?.debug || false;
|
|
52
|
+
return {
|
|
53
|
+
url,
|
|
54
|
+
sessionId,
|
|
55
|
+
token,
|
|
56
|
+
debug,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Save configuration
|
|
61
|
+
*/
|
|
62
|
+
export function saveConfig(config) {
|
|
63
|
+
const configPath = getConfigPath();
|
|
64
|
+
const configDir = path.dirname(configPath);
|
|
65
|
+
// Ensure directory exists
|
|
66
|
+
if (!fs.existsSync(configDir)) {
|
|
67
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
// Load existing config
|
|
70
|
+
let existing = {};
|
|
71
|
+
try {
|
|
72
|
+
if (fs.existsSync(configPath)) {
|
|
73
|
+
existing = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Ignore
|
|
78
|
+
}
|
|
79
|
+
// Merge and save
|
|
80
|
+
const merged = { ...existing, ...config };
|
|
81
|
+
fs.writeFileSync(configPath, JSON.stringify(merged, null, 2));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentick/cli - Terminal client for Agentick agents
|
|
3
|
+
*
|
|
4
|
+
* Provides interactive and non-interactive modes for communicating
|
|
5
|
+
* with Agentick servers.
|
|
6
|
+
*
|
|
7
|
+
* @module @agentick/cli
|
|
8
|
+
*/
|
|
9
|
+
export { CLI, createCLI, type CLIConfig, type CLIEvents } from "./cli.js";
|
|
10
|
+
export { ChatSession, type ChatSessionOptions } from "./chat-session.js";
|
|
11
|
+
export { Renderer, type RendererOptions } from "./ui/renderer.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentick/cli - Terminal client for Agentick agents
|
|
3
|
+
*
|
|
4
|
+
* Provides interactive and non-interactive modes for communicating
|
|
5
|
+
* with Agentick servers.
|
|
6
|
+
*
|
|
7
|
+
* @module @agentick/cli
|
|
8
|
+
*/
|
|
9
|
+
export { CLI, createCLI } from "./cli.js";
|
|
10
|
+
export { ChatSession } from "./chat-session.js";
|
|
11
|
+
export { Renderer } from "./ui/renderer.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,SAAS,EAAkC,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAwB,MAAM,kBAAkB,CAAC"}
|