@ebowwa/channel-ssh 1.1.3 → 2.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.
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @ebowwa/channel-ssh
3
+ *
4
+ * SSH channel adapter implementing ChannelConnector.
5
+ *
6
+ * This package handles:
7
+ * - File-based IPC (reads from ~/.ssh-chat/in, writes to ~/.ssh-chat/out)
8
+ * - Status tracking (~/.ssh-chat/status)
9
+ * - Message normalization to ChannelMessage format
10
+ *
11
+ * Intelligence (GLM, tools, memory) can be provided by:
12
+ * 1. This package (standalone mode with built-in echo handler)
13
+ * 2. External daemon/consumer (adapter mode via onMessage handler)
14
+ *
15
+ * Usage:
16
+ * Write message: echo "your message" > ~/.ssh-chat/in
17
+ * Read response: cat ~/.ssh-chat/out
18
+ * Check status: cat ~/.ssh-chat/status
19
+ */
20
+ import { type ChannelId, type ChannelResponse, type ChannelCapabilities, type MessageHandler } from "@ebowwa/channel-types";
21
+ export interface SSHConfig {
22
+ /** Chat directory for IPC files (default: ~/.ssh-chat) */
23
+ chatDir?: string;
24
+ /** Polling interval in ms (default: 500) */
25
+ pollInterval?: number;
26
+ /** Memory limit - max messages to keep (default: 100) */
27
+ memoryLimit?: number;
28
+ /** Context limit for LLM (default: 20) */
29
+ contextLimit?: number;
30
+ }
31
+ export declare function createSSHConfigFromEnv(): SSHConfig;
32
+ interface StoredMessage {
33
+ role: "user" | "assistant" | "system";
34
+ content: string;
35
+ timestamp: number;
36
+ }
37
+ export declare class ConversationMemory {
38
+ private messages;
39
+ private maxMessages;
40
+ private file;
41
+ constructor(file: string, maxMessages?: number);
42
+ private load;
43
+ private save;
44
+ add(role: "user" | "assistant" | "system", content: string): void;
45
+ getContext(limit?: number): StoredMessage[];
46
+ clear(): void;
47
+ }
48
+ export declare class SSHChannel {
49
+ readonly id: ChannelId;
50
+ readonly label = "SSH";
51
+ readonly capabilities: ChannelCapabilities;
52
+ private config;
53
+ private memory;
54
+ private messageHandler?;
55
+ private connected;
56
+ private watcher?;
57
+ private pollInterval?;
58
+ private lastContent;
59
+ private messageCounter;
60
+ private readonly IN_FILE;
61
+ private readonly OUT_FILE;
62
+ private readonly STATUS_FILE;
63
+ private readonly MEMORY_FILE;
64
+ constructor(config?: SSHConfig);
65
+ start(): Promise<void>;
66
+ stop(): Promise<void>;
67
+ /**
68
+ * Set the message handler. The daemon/consumer provides intelligence.
69
+ */
70
+ onMessage(handler: MessageHandler): void;
71
+ /**
72
+ * Send a response back to SSH channel (writes to OUT_FILE).
73
+ */
74
+ send(response: ChannelResponse): Promise<void>;
75
+ isConnected(): boolean;
76
+ /**
77
+ * Get the conversation memory.
78
+ */
79
+ getMemory(): ConversationMemory;
80
+ /**
81
+ * Get the input file path.
82
+ */
83
+ getInFile(): string;
84
+ /**
85
+ * Get the output file path.
86
+ */
87
+ getOutFile(): string;
88
+ /**
89
+ * Get the status file path.
90
+ */
91
+ getStatusFile(): string;
92
+ private ensureDir;
93
+ private setStatus;
94
+ private processIncoming;
95
+ /**
96
+ * Normalize SSH input to ChannelMessage format.
97
+ */
98
+ private createChannelMessage;
99
+ }
100
+ export declare function createSSHChannel(config?: SSHConfig): SSHChannel;
101
+ export { createSSHPlugin, sshPlugin, type ResolvedSSHAccount } from "./plugin.js";
102
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAGxB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,sBAAsB,IAAI,SAAS,CAalD;AAMD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,MAAM,EAAE,WAAW,SAAM;IAM3C,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAQZ,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjE,UAAU,CAAC,KAAK,SAAK,GAAG,aAAa,EAAE;IAIvC,KAAK,IAAI,IAAI;CAId;AAMD,qBAAa,UAAU;IACrB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,KAAK,SAAS;IACvB,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAcxC;IAEF,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,GAAE,SAAc;IAsB5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIxC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,WAAW,IAAI,OAAO;IAQtB;;OAEG;IACH,SAAS,IAAI,kBAAkB;IAI/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;YAIH,eAAe;IAqD7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA4B7B;AAMD,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAE/D;AAyCD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC"}