@bytespell/amux 0.0.10 → 0.0.12

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.
Files changed (78) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/CLAUDE.md +104 -0
  3. package/LICENSE +21 -0
  4. package/README.md +204 -0
  5. package/dist/cli.d.ts +14 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +118 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/client.d.ts +68 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +135 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/index.d.ts +41 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +44 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/{lib/mentions.d.ts → message-parser.d.ts} +3 -5
  18. package/dist/message-parser.d.ts.map +1 -0
  19. package/dist/message-parser.js +45 -0
  20. package/dist/message-parser.js.map +1 -0
  21. package/dist/server.d.ts +24 -0
  22. package/dist/server.d.ts.map +1 -0
  23. package/dist/server.js +356 -0
  24. package/dist/server.js.map +1 -0
  25. package/dist/session-updates.d.ts +26 -0
  26. package/dist/session-updates.d.ts.map +1 -0
  27. package/dist/session-updates.js +68 -0
  28. package/dist/session-updates.js.map +1 -0
  29. package/dist/session.d.ts +207 -0
  30. package/dist/session.d.ts.map +1 -0
  31. package/dist/session.js +563 -0
  32. package/dist/session.js.map +1 -0
  33. package/dist/state.d.ts +74 -0
  34. package/dist/state.d.ts.map +1 -0
  35. package/dist/state.js +250 -0
  36. package/dist/state.js.map +1 -0
  37. package/dist/terminal.d.ts +47 -0
  38. package/dist/terminal.d.ts.map +1 -0
  39. package/dist/terminal.js +137 -0
  40. package/dist/terminal.js.map +1 -0
  41. package/dist/types.d.ts +64 -2
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +16 -31
  44. package/dist/types.js.map +1 -1
  45. package/dist/ws-adapter.d.ts +39 -0
  46. package/dist/ws-adapter.d.ts.map +1 -0
  47. package/dist/ws-adapter.js +198 -0
  48. package/dist/ws-adapter.js.map +1 -0
  49. package/package.json +47 -24
  50. package/src/client.ts +162 -0
  51. package/src/index.ts +66 -0
  52. package/src/message-parser.ts +54 -0
  53. package/src/session-updates.ts +87 -0
  54. package/src/session.ts +719 -0
  55. package/src/state.ts +287 -0
  56. package/src/terminal.ts +164 -0
  57. package/src/types.ts +88 -0
  58. package/src/ws-adapter.ts +245 -0
  59. package/tsconfig.json +22 -0
  60. package/dist/chunk-5IPYOXBE.js +0 -32
  61. package/dist/chunk-5IPYOXBE.js.map +0 -1
  62. package/dist/chunk-C73RKCTS.js +0 -36
  63. package/dist/chunk-C73RKCTS.js.map +0 -1
  64. package/dist/chunk-VVXT4HQM.js +0 -779
  65. package/dist/chunk-VVXT4HQM.js.map +0 -1
  66. package/dist/lib/logger.d.ts +0 -24
  67. package/dist/lib/logger.js +0 -17
  68. package/dist/lib/logger.js.map +0 -1
  69. package/dist/lib/mentions.js +0 -7
  70. package/dist/lib/mentions.js.map +0 -1
  71. package/dist/streams/backends/index.d.ts +0 -88
  72. package/dist/streams/backends/index.js +0 -13
  73. package/dist/streams/backends/index.js.map +0 -1
  74. package/dist/streams/manager.d.ts +0 -55
  75. package/dist/streams/manager.js +0 -248
  76. package/dist/streams/manager.js.map +0 -1
  77. package/dist/types-DV6-SxsB.d.ts +0 -192
  78. package/scripts/fix-pty.cjs +0 -21
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Type guard for tool_call session updates
3
+ */
4
+ export function isToolCallUpdate(update) {
5
+ return update.sessionUpdate === 'tool_call';
6
+ }
7
+ /**
8
+ * Type guard for tool_call_update session updates
9
+ */
10
+ export function isToolCallUpdateMessage(update) {
11
+ return update.sessionUpdate === 'tool_call_update';
12
+ }
13
+ /**
14
+ * Type guard for diff content items
15
+ */
16
+ export function isDiffContent(item) {
17
+ return item.type === 'diff';
18
+ }
19
+ /**
20
+ * Normalize ACP session updates.
21
+ * Claude sends Edit/Write diffs as {newText, oldText, path} instead of unified diff.
22
+ * We convert these to standard unified diff format so the UI doesn't need agent-specific logic.
23
+ */
24
+ export function normalizeSessionUpdate(update) {
25
+ // Only process tool_call and tool_call_update events with content arrays
26
+ if (!isToolCallUpdate(update) && !isToolCallUpdateMessage(update)) {
27
+ return update;
28
+ }
29
+ const content = update.content;
30
+ if (!content || !Array.isArray(content)) {
31
+ return update;
32
+ }
33
+ // Check for diff items that need normalization
34
+ const normalizedContent = content.map((item) => {
35
+ if (!isDiffContent(item))
36
+ return item;
37
+ const diffItem = item;
38
+ const newText = diffItem.newText;
39
+ const oldText = diffItem.oldText;
40
+ const filePath = diffItem.path ?? 'file';
41
+ // Generate unified diff
42
+ const oldLines = oldText ? oldText.split('\n') : [];
43
+ const newLines = newText.split('\n');
44
+ let unifiedDiff = `Index: ${filePath}\n`;
45
+ unifiedDiff += '===================================================================\n';
46
+ unifiedDiff += `--- ${filePath}\n`;
47
+ unifiedDiff += `+++ ${filePath}\n`;
48
+ unifiedDiff += `@@ -${oldLines.length > 0 ? 1 : 0},${oldLines.length} +1,${newLines.length} @@\n`;
49
+ for (const line of oldLines) {
50
+ unifiedDiff += `-${line}\n`;
51
+ }
52
+ for (const line of newLines) {
53
+ unifiedDiff += `+${line}\n`;
54
+ }
55
+ // Return normalized diff item
56
+ return {
57
+ type: 'diff',
58
+ newText: unifiedDiff,
59
+ oldText: '',
60
+ path: filePath,
61
+ };
62
+ });
63
+ return {
64
+ ...update,
65
+ content: normalizedContent,
66
+ };
67
+ }
68
+ //# sourceMappingURL=session-updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-updates.js","sourceRoot":"","sources":["../src/session-updates.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB;IAEzB,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAyB;IAEzB,OAAO,MAAM,CAAC,aAAa,KAAK,kBAAkB,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAyB;IAEzB,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAyB;IAEzB,yEAAyE;IACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAuB,EAAE;QAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC;QAEzC,wBAAwB;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,WAAW,GAAG,UAAU,QAAQ,IAAI,CAAC;QACzC,WAAW,IAAI,uEAAuE,CAAC;QACvF,WAAW,IAAI,OAAO,QAAQ,IAAI,CAAC;QACnC,WAAW,IAAI,OAAO,QAAQ,IAAI,CAAC;QACnC,WAAW,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC;QAElG,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC;QAC9B,CAAC;QAED,8BAA8B;QAC9B,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,iBAAiB;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,207 @@
1
+ import { EventEmitter } from 'events';
2
+ import * as acp from '@agentclientprotocol/sdk';
3
+ import type { AgentSessionConfig, SessionRestoreInfo, SessionMetadata } from './types.js';
4
+ /**
5
+ * Events emitted by AgentSession
6
+ */
7
+ export interface AgentSessionEvents {
8
+ ready: {
9
+ cwd: string;
10
+ sessionId: string | null;
11
+ sessionRestore?: SessionRestoreInfo;
12
+ capabilities: acp.AgentCapabilities | null;
13
+ agent: {
14
+ type: string;
15
+ name: string;
16
+ };
17
+ availableAgents: Array<{
18
+ id: string;
19
+ name: string;
20
+ }>;
21
+ };
22
+ update: acp.SessionUpdate;
23
+ turn_start: Record<string, never>;
24
+ turn_end: Record<string, never>;
25
+ permission_request: {
26
+ requestId: string;
27
+ toolCall?: acp.ToolCall;
28
+ options: acp.PermissionOption[];
29
+ };
30
+ prompt_complete: {
31
+ stopReason?: string;
32
+ };
33
+ session_created: {
34
+ sessionId: string | null;
35
+ };
36
+ session_switched: {
37
+ sessionId: string;
38
+ };
39
+ history_replay: {
40
+ previousSessionId: string;
41
+ events: unknown[];
42
+ eventCount: number;
43
+ };
44
+ error: {
45
+ message: string;
46
+ };
47
+ agent_exit: {
48
+ code: number | null;
49
+ signal: string | null;
50
+ };
51
+ connecting: Record<string, never>;
52
+ }
53
+ /**
54
+ * AgentSession - Core ACP session management with EventEmitter interface.
55
+ *
56
+ * Emits events for all session activity. Transport-agnostic - wire up
57
+ * to WebSocket, HTTP, IPC, or anything else.
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const session = new AgentSession({
62
+ * instanceId: 'my-instance',
63
+ * basePath: __dirname,
64
+ * });
65
+ *
66
+ * session.on('ready', (data) => console.log('Ready:', data));
67
+ * session.on('update', (data) => console.log('Update:', data));
68
+ *
69
+ * await session.spawnAgent();
70
+ * await session.prompt('Hello!');
71
+ * ```
72
+ */
73
+ export declare class AgentSession extends EventEmitter {
74
+ private _cwd;
75
+ private _sessionId;
76
+ private _agentType;
77
+ private _systemContext?;
78
+ private agentProcess;
79
+ private acpConnection;
80
+ private _agentCapabilities;
81
+ private terminalManager;
82
+ private amuxClient;
83
+ private stateManager;
84
+ private instanceId;
85
+ private basePath;
86
+ private fixedCwd?;
87
+ private agents;
88
+ constructor(config: AgentSessionConfig);
89
+ emit<K extends keyof AgentSessionEvents>(event: K, data: AgentSessionEvents[K]): boolean;
90
+ on<K extends keyof AgentSessionEvents>(event: K, listener: (data: AgentSessionEvents[K]) => void): this;
91
+ once<K extends keyof AgentSessionEvents>(event: K, listener: (data: AgentSessionEvents[K]) => void): this;
92
+ /**
93
+ * Emit update and store to history
94
+ */
95
+ private emitUpdate;
96
+ /**
97
+ * Emit turn marker and store to history
98
+ */
99
+ private emitTurnMarker;
100
+ get cwd(): string;
101
+ get sessionId(): string | null;
102
+ get agentType(): string;
103
+ get agentCapabilities(): acp.AgentCapabilities | null;
104
+ get isConnected(): boolean;
105
+ get systemContext(): string | undefined;
106
+ /**
107
+ * Get current agent info
108
+ */
109
+ getAgentInfo(): {
110
+ type: string;
111
+ name: string;
112
+ };
113
+ /**
114
+ * Get available agents list
115
+ */
116
+ getAvailableAgents(): Array<{
117
+ id: string;
118
+ name: string;
119
+ }>;
120
+ /**
121
+ * Save current state to disk
122
+ */
123
+ private saveState;
124
+ /**
125
+ * Name the session after the first user message
126
+ */
127
+ private maybeNameSession;
128
+ /**
129
+ * Spawn and initialize the ACP agent
130
+ */
131
+ spawnAgent(): Promise<void>;
132
+ /**
133
+ * Initialize or restore session
134
+ */
135
+ private initializeSession;
136
+ /**
137
+ * Inject system context as the first message
138
+ */
139
+ private injectSystemContext;
140
+ /**
141
+ * Replay history events from a previous session
142
+ */
143
+ private replayHistoryFromPreviousSession;
144
+ /**
145
+ * Create a new session
146
+ */
147
+ private createNewSession;
148
+ /**
149
+ * Broadcast mode info if available
150
+ */
151
+ private broadcastModeInfo;
152
+ /**
153
+ * Send a prompt to the agent
154
+ */
155
+ prompt(message: string): Promise<{
156
+ stopReason?: string;
157
+ }>;
158
+ /**
159
+ * Cancel current operation
160
+ */
161
+ cancel(): Promise<void>;
162
+ /**
163
+ * Handle permission response from UI
164
+ */
165
+ respondToPermission(requestId: string, optionId: string): void;
166
+ /**
167
+ * List available sessions
168
+ */
169
+ listSessions(): SessionMetadata[];
170
+ /**
171
+ * Load history for current session
172
+ */
173
+ loadHistory(): unknown[];
174
+ /**
175
+ * Switch to a different session
176
+ */
177
+ switchSession(sessionId: string): Promise<void>;
178
+ /**
179
+ * Change working directory (requires agent restart)
180
+ */
181
+ changeCwd(newPath: string): Promise<void>;
182
+ /**
183
+ * Create a new session
184
+ */
185
+ newSession(): Promise<void>;
186
+ /**
187
+ * Set session mode
188
+ */
189
+ setMode(modeId: string): Promise<void>;
190
+ /**
191
+ * Set session model
192
+ */
193
+ setModel(modelId: string): Promise<void>;
194
+ /**
195
+ * Change agent type (requires agent restart)
196
+ */
197
+ changeAgent(agentType: string): Promise<void>;
198
+ /**
199
+ * Kill the agent process
200
+ */
201
+ killAgent(): Promise<void>;
202
+ /**
203
+ * Shutdown (cleanup all resources)
204
+ */
205
+ shutdown(): void;
206
+ }
207
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}