wechat-bridge-opencode 0.1.6 → 0.1.8
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 -21
- package/README.md +111 -100
- package/dist/bin/wechat-opencode.js +23 -23
- package/dist/package.json +1 -1
- package/dist/src/acp/agent-manager.d.ts +8 -0
- package/dist/src/acp/agent-manager.d.ts.map +1 -1
- package/dist/src/acp/agent-manager.js +9 -0
- package/dist/src/acp/agent-manager.js.map +1 -1
- package/dist/src/acp/client.d.ts +6 -0
- package/dist/src/acp/client.d.ts.map +1 -1
- package/dist/src/acp/client.js +26 -0
- package/dist/src/acp/client.js.map +1 -1
- package/dist/src/acp/opencode-sessions.d.ts +3 -0
- package/dist/src/acp/opencode-sessions.d.ts.map +1 -1
- package/dist/src/acp/opencode-sessions.js +4 -1
- package/dist/src/acp/opencode-sessions.js.map +1 -1
- package/dist/src/acp/session.d.ts +37 -14
- package/dist/src/acp/session.d.ts.map +1 -1
- package/dist/src/acp/session.js +163 -97
- package/dist/src/acp/session.js.map +1 -1
- package/dist/src/adapter/workspace-cmd.d.ts +8 -0
- package/dist/src/adapter/workspace-cmd.d.ts.map +1 -1
- package/dist/src/adapter/workspace-cmd.js +55 -4
- package/dist/src/adapter/workspace-cmd.js.map +1 -1
- package/dist/src/bridge.d.ts +10 -0
- package/dist/src/bridge.d.ts.map +1 -1
- package/dist/src/bridge.js +121 -48
- package/dist/src/bridge.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-tool.mjs +14 -14
- package/dist/bin/wechat-acp.d.ts +0 -14
- package/dist/bin/wechat-acp.d.ts.map +0 -1
- package/dist/bin/wechat-acp.js +0 -284
- package/dist/bin/wechat-acp.js.map +0 -1
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-user ACP session manager.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* New architecture: ONE agent process per user, MULTIPLE ACP sessions within it.
|
|
5
|
+
* Session/workspace switching uses ACP protocol methods (newSession/loadSession)
|
|
6
|
+
* instead of kill+respawn.
|
|
7
7
|
*/
|
|
8
|
+
import type { ChildProcess } from "node:child_process";
|
|
8
9
|
import type * as acp from "@agentclientprotocol/sdk";
|
|
9
10
|
import { WeChatAcpClient, type MediaContent } from "./client.js";
|
|
10
|
-
import { type
|
|
11
|
+
import { type AgentCapabilities } from "./agent-manager.js";
|
|
11
12
|
export interface PendingMessage {
|
|
12
13
|
prompt: acp.ContentBlock[];
|
|
13
14
|
contextToken: string;
|
|
15
|
+
hint?: string;
|
|
14
16
|
}
|
|
15
17
|
export interface UserSession {
|
|
16
18
|
userId: string;
|
|
17
19
|
contextToken: string;
|
|
18
20
|
client: WeChatAcpClient;
|
|
19
|
-
|
|
21
|
+
process: ChildProcess;
|
|
22
|
+
connection: acp.ClientSideConnection;
|
|
23
|
+
capabilities: AgentCapabilities;
|
|
24
|
+
activeSessionId: string;
|
|
25
|
+
sessions: Map<string, {
|
|
26
|
+
cwd: string;
|
|
27
|
+
title?: string;
|
|
28
|
+
}>;
|
|
20
29
|
queue: PendingMessage[];
|
|
21
30
|
processing: boolean;
|
|
22
31
|
lastActivity: number;
|
|
23
32
|
createdAt: number;
|
|
24
|
-
/** Set to true when agent is fully initialized */
|
|
25
33
|
ready: boolean;
|
|
26
34
|
}
|
|
27
35
|
export interface SessionManagerOpts {
|
|
@@ -52,23 +60,38 @@ export declare class SessionManager {
|
|
|
52
60
|
stop(): Promise<void>;
|
|
53
61
|
enqueue(userId: string, message: PendingMessage): Promise<void>;
|
|
54
62
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
63
|
+
* Switch workspace: loads the most recent session for the given cwd,
|
|
64
|
+
* or creates a new one if none exists.
|
|
65
|
+
* NO kill/respawn of the agent process.
|
|
57
66
|
*/
|
|
58
|
-
|
|
67
|
+
switchWorkspace(userId: string, contextToken: string, cwd: string, existingSessionId?: string): Promise<void>;
|
|
59
68
|
/**
|
|
60
|
-
* Switch
|
|
61
|
-
* Returns a promise that resolves when the new agent is fully ready.
|
|
69
|
+
* Switch to an existing ACP session, replaying its conversation history.
|
|
62
70
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
switchSession(userId: string, contextToken: string, sessionId: string, cwd: string): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a new ACP session, returns the new session ID.
|
|
74
|
+
*/
|
|
75
|
+
createNewSession(userId: string, contextToken: string, cwd: string): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* List sessions for the current agent.
|
|
78
|
+
*/
|
|
79
|
+
listAgentSessions(userId: string, cwd?: string): Promise<acp.ListSessionsResponse>;
|
|
80
|
+
/**
|
|
81
|
+
* Close an ACP session.
|
|
82
|
+
*/
|
|
83
|
+
closeSession(userId: string, sessionId: string): Promise<void>;
|
|
65
84
|
getSession(userId: string): UserSession | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Get available slash commands advertised by the agent.
|
|
87
|
+
*/
|
|
88
|
+
getAvailableCommands(userId: string): acp.AvailableCommand[];
|
|
66
89
|
getUserBySessionId(acpSessionId: string): {
|
|
67
90
|
userId: string;
|
|
68
91
|
contextToken: string;
|
|
69
92
|
} | null;
|
|
70
93
|
get activeCount(): number;
|
|
71
|
-
private
|
|
94
|
+
private createInitialSession;
|
|
72
95
|
private processQueue;
|
|
73
96
|
private cleanupIdleSessions;
|
|
74
97
|
private evictOldest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/acp/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/acp/session.ts"],"names":[],"mappings":"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"}
|
package/dist/src/acp/session.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-user ACP session manager.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* New architecture: ONE agent process per user, MULTIPLE ACP sessions within it.
|
|
5
|
+
* Session/workspace switching uses ACP protocol methods (newSession/loadSession)
|
|
6
|
+
* instead of kill+respawn.
|
|
7
7
|
*/
|
|
8
8
|
import { WeChatAcpClient } from "./client.js";
|
|
9
9
|
import { spawnAgent, killAgent } from "./agent-manager.js";
|
|
@@ -26,7 +26,7 @@ export class SessionManager {
|
|
|
26
26
|
this.cleanupTimer = null;
|
|
27
27
|
}
|
|
28
28
|
for (const session of this.sessions.values()) {
|
|
29
|
-
killAgent(session.
|
|
29
|
+
killAgent(session.process);
|
|
30
30
|
}
|
|
31
31
|
this.sessions.clear();
|
|
32
32
|
}
|
|
@@ -36,7 +36,7 @@ export class SessionManager {
|
|
|
36
36
|
if (this.sessions.size >= this.opts.maxConcurrentUsers) {
|
|
37
37
|
this.evictOldest();
|
|
38
38
|
}
|
|
39
|
-
session = await this.
|
|
39
|
+
session = await this.createInitialSession(userId, message.contextToken);
|
|
40
40
|
this.sessions.set(userId, session);
|
|
41
41
|
}
|
|
42
42
|
session.contextToken = message.contextToken;
|
|
@@ -50,105 +50,161 @@ export class SessionManager {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
53
|
+
* Switch workspace: loads the most recent session for the given cwd,
|
|
54
|
+
* or creates a new one if none exists.
|
|
55
|
+
* NO kill/respawn of the agent process.
|
|
55
56
|
*/
|
|
56
|
-
async
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.sessions.
|
|
57
|
+
async switchWorkspace(userId, contextToken, cwd, existingSessionId) {
|
|
58
|
+
let session = this.sessions.get(userId);
|
|
59
|
+
if (!session) {
|
|
60
|
+
// No process yet — create initial session first
|
|
61
|
+
session = await this.createInitialSession(userId, contextToken);
|
|
62
|
+
this.sessions.set(userId, session);
|
|
63
|
+
}
|
|
64
|
+
if (existingSessionId) {
|
|
65
|
+
// Load existing session for this cwd
|
|
66
|
+
this.opts.log(`[${userId}] Loading session ${existingSessionId} for workspace switch (cwd: ${cwd})`);
|
|
67
|
+
session.client.setReplaying(true);
|
|
68
|
+
try {
|
|
69
|
+
await session.connection.loadSession({
|
|
70
|
+
sessionId: existingSessionId,
|
|
71
|
+
cwd,
|
|
72
|
+
mcpServers: [],
|
|
73
|
+
});
|
|
74
|
+
session.activeSessionId = existingSessionId;
|
|
75
|
+
if (!session.sessions.has(existingSessionId)) {
|
|
76
|
+
session.sessions.set(existingSessionId, { cwd });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
session.client.setReplaying(false);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// No existing session — create new one
|
|
85
|
+
this.opts.log(`[${userId}] Creating new session for workspace switch (cwd: ${cwd})`);
|
|
86
|
+
const result = await session.connection.newSession({
|
|
87
|
+
cwd,
|
|
88
|
+
mcpServers: [],
|
|
89
|
+
});
|
|
90
|
+
session.activeSessionId = result.sessionId;
|
|
91
|
+
session.sessions.set(result.sessionId, { cwd });
|
|
62
92
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
93
|
+
session.contextToken = contextToken;
|
|
94
|
+
session.lastActivity = Date.now();
|
|
95
|
+
this.opts.onSessionReady?.(userId, session.activeSessionId);
|
|
66
96
|
}
|
|
67
97
|
/**
|
|
68
|
-
* Switch
|
|
69
|
-
* Returns a promise that resolves when the new agent is fully ready.
|
|
98
|
+
* Switch to an existing ACP session, replaying its conversation history.
|
|
70
99
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.sessions.
|
|
100
|
+
async switchSession(userId, contextToken, sessionId, cwd) {
|
|
101
|
+
let session = this.sessions.get(userId);
|
|
102
|
+
if (!session) {
|
|
103
|
+
// No process yet — create initial session first
|
|
104
|
+
session = await this.createInitialSession(userId, contextToken);
|
|
105
|
+
this.sessions.set(userId, session);
|
|
77
106
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
client
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
},
|
|
99
|
-
queue: [],
|
|
100
|
-
processing: false,
|
|
101
|
-
lastActivity: Date.now(),
|
|
102
|
-
createdAt: Date.now(),
|
|
103
|
-
ready: false,
|
|
104
|
-
};
|
|
105
|
-
this.sessions.set(userId, placeholder);
|
|
106
|
-
// Now spawn the agent in background
|
|
107
|
-
this.spawnAndReplace(userId, contextToken, cwd, client, resolveReady).catch((err) => {
|
|
108
|
-
this.opts.log(`[${userId}] Failed to spawn agent: ${String(err)}`);
|
|
109
|
-
this.sessions.delete(userId);
|
|
110
|
-
});
|
|
111
|
-
return readyPromise;
|
|
107
|
+
this.opts.log(`[${userId}] Loading session ${sessionId} (cwd: ${cwd})`);
|
|
108
|
+
// Suppress replayed content
|
|
109
|
+
session.client.setReplaying(true);
|
|
110
|
+
try {
|
|
111
|
+
await session.connection.loadSession({
|
|
112
|
+
sessionId,
|
|
113
|
+
cwd,
|
|
114
|
+
mcpServers: [],
|
|
115
|
+
});
|
|
116
|
+
session.activeSessionId = sessionId;
|
|
117
|
+
if (!session.sessions.has(sessionId)) {
|
|
118
|
+
session.sessions.set(sessionId, { cwd });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
session.client.setReplaying(false);
|
|
123
|
+
}
|
|
124
|
+
session.contextToken = contextToken;
|
|
125
|
+
session.lastActivity = Date.now();
|
|
126
|
+
this.opts.onSessionReady?.(userId, sessionId);
|
|
112
127
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Create a new ACP session, returns the new session ID.
|
|
130
|
+
*/
|
|
131
|
+
async createNewSession(userId, contextToken, cwd) {
|
|
132
|
+
let session = this.sessions.get(userId);
|
|
133
|
+
if (!session) {
|
|
134
|
+
// No process yet — create initial session first
|
|
135
|
+
session = await this.createInitialSession(userId, contextToken);
|
|
136
|
+
this.sessions.set(userId, session);
|
|
137
|
+
}
|
|
138
|
+
this.opts.log(`[${userId}] Creating new ACP session (cwd: ${cwd})`);
|
|
139
|
+
const result = await session.connection.newSession({
|
|
118
140
|
cwd,
|
|
119
|
-
|
|
120
|
-
client,
|
|
121
|
-
log: (msg) => this.opts.log(`[${userId}] ${msg}`),
|
|
122
|
-
existingSessionId,
|
|
141
|
+
mcpServers: [],
|
|
123
142
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
session.sessions.set(result.sessionId, { cwd });
|
|
144
|
+
session.activeSessionId = result.sessionId;
|
|
145
|
+
session.contextToken = contextToken;
|
|
146
|
+
session.lastActivity = Date.now();
|
|
147
|
+
return result.sessionId;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* List sessions for the current agent.
|
|
151
|
+
*/
|
|
152
|
+
async listAgentSessions(userId, cwd) {
|
|
153
|
+
const session = this.sessions.get(userId);
|
|
154
|
+
if (!session) {
|
|
155
|
+
return { sessions: [] };
|
|
156
|
+
}
|
|
157
|
+
if (!session.capabilities.sessionCapabilities?.list) {
|
|
158
|
+
this.opts.log(`[${userId}] Agent does not support listSessions`);
|
|
159
|
+
return { sessions: [] };
|
|
160
|
+
}
|
|
161
|
+
return session.connection.listSessions({ cwd });
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Close an ACP session.
|
|
165
|
+
*/
|
|
166
|
+
async closeSession(userId, sessionId) {
|
|
167
|
+
const session = this.sessions.get(userId);
|
|
168
|
+
if (!session) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (!session.capabilities.sessionCapabilities?.close) {
|
|
172
|
+
this.opts.log(`[${userId}] Agent does not support closeSession`);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this.opts.log(`[${userId}] Closing session ${sessionId}`);
|
|
176
|
+
await session.connection.unstable_closeSession({ sessionId });
|
|
177
|
+
session.sessions.delete(sessionId);
|
|
178
|
+
// If we closed the active session, switch to another or create a new one
|
|
179
|
+
if (session.activeSessionId === sessionId) {
|
|
180
|
+
const remaining = Array.from(session.sessions.keys());
|
|
181
|
+
if (remaining.length > 0) {
|
|
182
|
+
session.activeSessionId = remaining[0];
|
|
140
183
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
184
|
+
else {
|
|
185
|
+
// Create a new session
|
|
186
|
+
const cwd = this.opts.resolveCwd(userId);
|
|
187
|
+
const result = await session.connection.newSession({ cwd, mcpServers: [] });
|
|
188
|
+
session.activeSessionId = result.sessionId;
|
|
189
|
+
session.sessions.set(result.sessionId, { cwd });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
145
192
|
}
|
|
146
193
|
getSession(userId) {
|
|
147
194
|
return this.sessions.get(userId);
|
|
148
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Get available slash commands advertised by the agent.
|
|
198
|
+
*/
|
|
199
|
+
getAvailableCommands(userId) {
|
|
200
|
+
const session = this.sessions.get(userId);
|
|
201
|
+
if (!session)
|
|
202
|
+
return [];
|
|
203
|
+
return session.client.getAvailableCommands();
|
|
204
|
+
}
|
|
149
205
|
getUserBySessionId(acpSessionId) {
|
|
150
206
|
for (const [userId, session] of this.sessions) {
|
|
151
|
-
if (session.
|
|
207
|
+
if (session.activeSessionId === acpSessionId) {
|
|
152
208
|
return { userId, contextToken: session.contextToken };
|
|
153
209
|
}
|
|
154
210
|
}
|
|
@@ -157,9 +213,10 @@ export class SessionManager {
|
|
|
157
213
|
get activeCount() {
|
|
158
214
|
return this.sessions.size;
|
|
159
215
|
}
|
|
160
|
-
async
|
|
216
|
+
async createInitialSession(userId, contextToken) {
|
|
161
217
|
const cwd = this.opts.resolveCwd(userId);
|
|
162
|
-
this.opts.
|
|
218
|
+
const existingSessionId = this.opts.getExistingSessionId?.(userId);
|
|
219
|
+
this.opts.log(`Creating initial session for ${userId} (cwd: ${cwd}${existingSessionId ? `, resume: ${existingSessionId}` : ""})`);
|
|
163
220
|
const client = new WeChatAcpClient({
|
|
164
221
|
sendTyping: () => this.opts.sendTyping(userId, contextToken),
|
|
165
222
|
onThoughtFlush: (text) => this.opts.onReply(userId, contextToken, text),
|
|
@@ -176,9 +233,10 @@ export class SessionManager {
|
|
|
176
233
|
log: (msg) => this.opts.log(`[${userId}] ${msg}`),
|
|
177
234
|
existingSessionId,
|
|
178
235
|
});
|
|
236
|
+
// Set up process exit handler
|
|
179
237
|
agentInfo.process.on("exit", () => {
|
|
180
238
|
const s = this.sessions.get(userId);
|
|
181
|
-
if (s && s.
|
|
239
|
+
if (s && s.process === agentInfo.process) {
|
|
182
240
|
this.opts.log(`Agent process for ${userId} exited, removing session`);
|
|
183
241
|
this.sessions.delete(userId);
|
|
184
242
|
}
|
|
@@ -189,7 +247,11 @@ export class SessionManager {
|
|
|
189
247
|
userId,
|
|
190
248
|
contextToken,
|
|
191
249
|
client,
|
|
192
|
-
agentInfo,
|
|
250
|
+
process: agentInfo.process,
|
|
251
|
+
connection: agentInfo.connection,
|
|
252
|
+
capabilities: agentInfo.capabilities,
|
|
253
|
+
activeSessionId: agentInfo.sessionId,
|
|
254
|
+
sessions: new Map([[agentInfo.sessionId, { cwd }]]),
|
|
193
255
|
queue: [],
|
|
194
256
|
processing: false,
|
|
195
257
|
lastActivity: Date.now(),
|
|
@@ -210,8 +272,8 @@ export class SessionManager {
|
|
|
210
272
|
try {
|
|
211
273
|
this.opts.sendTyping(session.userId, pending.contextToken).catch(() => { });
|
|
212
274
|
this.opts.log(`[${session.userId}] Sending prompt to agent...`);
|
|
213
|
-
const result = await session.
|
|
214
|
-
sessionId: session.
|
|
275
|
+
const result = await session.connection.prompt({
|
|
276
|
+
sessionId: session.activeSessionId,
|
|
215
277
|
prompt: pending.prompt,
|
|
216
278
|
});
|
|
217
279
|
let replyText = await session.client.flush();
|
|
@@ -222,13 +284,17 @@ export class SessionManager {
|
|
|
222
284
|
replyText += "\n[agent refused to continue]";
|
|
223
285
|
}
|
|
224
286
|
this.opts.log(`[${session.userId}] Agent done (${result.stopReason}), reply ${replyText.length} chars`);
|
|
287
|
+
// Append hint if present
|
|
288
|
+
if (pending.hint && replyText.trim()) {
|
|
289
|
+
replyText += `\n\n${pending.hint}`;
|
|
290
|
+
}
|
|
225
291
|
if (replyText.trim()) {
|
|
226
292
|
await this.opts.onReply(session.userId, pending.contextToken, replyText);
|
|
227
293
|
}
|
|
228
294
|
}
|
|
229
295
|
catch (err) {
|
|
230
296
|
this.opts.log(`[${session.userId}] Agent prompt error: ${String(err)}`);
|
|
231
|
-
if (session.
|
|
297
|
+
if (session.process.killed || session.process.exitCode !== null) {
|
|
232
298
|
this.opts.log(`[${session.userId}] Agent process died, removing session`);
|
|
233
299
|
this.sessions.delete(session.userId);
|
|
234
300
|
return;
|
|
@@ -254,7 +320,7 @@ export class SessionManager {
|
|
|
254
320
|
for (const [userId, session] of this.sessions) {
|
|
255
321
|
if (now - session.lastActivity > this.opts.idleTimeoutMs && !session.processing) {
|
|
256
322
|
this.opts.log(`Session for ${userId} idle for ${Math.round((now - session.lastActivity) / 60_000)}min, removing`);
|
|
257
|
-
killAgent(session.
|
|
323
|
+
killAgent(session.process);
|
|
258
324
|
this.sessions.delete(userId);
|
|
259
325
|
}
|
|
260
326
|
}
|
|
@@ -270,7 +336,7 @@ export class SessionManager {
|
|
|
270
336
|
this.opts.log(`Evicting oldest idle session: ${oldest.userId}`);
|
|
271
337
|
const session = this.sessions.get(oldest.userId);
|
|
272
338
|
if (session)
|
|
273
|
-
killAgent(session.
|
|
339
|
+
killAgent(session.process);
|
|
274
340
|
this.sessions.delete(oldest.userId);
|
|
275
341
|
}
|
|
276
342
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/acp/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/acp/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export interface WorkspaceCommand {
|
|
|
23
23
|
export interface SessionCommand {
|
|
24
24
|
kind: "new" | "switch" | "remove" | "list" | "status";
|
|
25
25
|
name?: string;
|
|
26
|
+
cwdFilter?: string;
|
|
26
27
|
}
|
|
27
28
|
export declare function parseWorkspaceCommand(text: string): WorkspaceCommand | null;
|
|
28
29
|
export declare function parseSessionCommand(text: string): SessionCommand | null;
|
|
@@ -50,4 +51,11 @@ export declare function parseHelpCommand(text: string): boolean;
|
|
|
50
51
|
* Format the help message listing all available commands.
|
|
51
52
|
*/
|
|
52
53
|
export declare function formatHelp(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Format help message including OpenCode native slash commands from available_commands_update.
|
|
56
|
+
*/
|
|
57
|
+
export declare function formatHelpWithNativeCommands(nativeCommands: Array<{
|
|
58
|
+
name: string;
|
|
59
|
+
description: string;
|
|
60
|
+
}>): string;
|
|
53
61
|
//# sourceMappingURL=workspace-cmd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-cmd.d.ts","sourceRoot":"","sources":["../../../src/adapter/workspace-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-cmd.d.ts","sourceRoot":"","sources":["../../../src/adapter/workspace-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA2C3E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAwDvE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5D,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAUR;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1F,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,GAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACnD,MAAM,CAuBR;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAyBnC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CA+BjH"}
|
|
@@ -85,8 +85,24 @@ export function parseSessionCommand(text) {
|
|
|
85
85
|
return { kind: "remove", name: target };
|
|
86
86
|
}
|
|
87
87
|
case "list":
|
|
88
|
-
case "ls":
|
|
89
|
-
|
|
88
|
+
case "ls": {
|
|
89
|
+
// /s list → no filter
|
|
90
|
+
// /s list --cwd → filter by current workspace
|
|
91
|
+
// /s list /path/to/cwd → filter by specific cwd
|
|
92
|
+
// /s list N → filter by workspace at index N (resolved by bridge)
|
|
93
|
+
const hasCwdFlag = args.includes("--cwd");
|
|
94
|
+
let cwdFilter;
|
|
95
|
+
if (hasCwdFlag) {
|
|
96
|
+
cwdFilter = "__current__";
|
|
97
|
+
}
|
|
98
|
+
else if (args.length > 1) {
|
|
99
|
+
// Take everything after "list" as the filter value
|
|
100
|
+
const filterValue = args.slice(1).join(" ");
|
|
101
|
+
if (filterValue)
|
|
102
|
+
cwdFilter = filterValue;
|
|
103
|
+
}
|
|
104
|
+
return { kind: "list", cwdFilter };
|
|
105
|
+
}
|
|
90
106
|
case "status":
|
|
91
107
|
case "current":
|
|
92
108
|
case "info":
|
|
@@ -152,16 +168,18 @@ export function formatHelp() {
|
|
|
152
168
|
"── Workspaces ──",
|
|
153
169
|
" /workspace list List all workspaces",
|
|
154
170
|
" /workspace add /path [name] Add a workspace",
|
|
155
|
-
" /workspace switch <
|
|
171
|
+
" /workspace switch <n|path> Switch to workspace by index or path (loads most recent session)",
|
|
156
172
|
" /workspace remove <name> Remove a workspace",
|
|
157
173
|
" /workspace status Show current workspace",
|
|
158
174
|
" (shorthand: /ws ...)",
|
|
159
175
|
"",
|
|
160
176
|
"── Sessions ──",
|
|
161
177
|
" /session new [name] Create a new session",
|
|
162
|
-
" /session switch <
|
|
178
|
+
" /session switch <n|slug> Switch to session by index or slug/title",
|
|
163
179
|
" /session remove <name> Remove a session",
|
|
164
180
|
" /session list List all sessions",
|
|
181
|
+
" /session list --cwd List sessions in current workspace",
|
|
182
|
+
" /session list <path|n> List sessions by workspace path or index",
|
|
165
183
|
" /session status Show current session",
|
|
166
184
|
" (shorthand: /s ...)",
|
|
167
185
|
"",
|
|
@@ -169,4 +187,37 @@ export function formatHelp() {
|
|
|
169
187
|
" /help Show this help message",
|
|
170
188
|
].join("\n");
|
|
171
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Format help message including OpenCode native slash commands from available_commands_update.
|
|
192
|
+
*/
|
|
193
|
+
export function formatHelpWithNativeCommands(nativeCommands) {
|
|
194
|
+
const lines = [
|
|
195
|
+
"📖 Available Commands:",
|
|
196
|
+
"",
|
|
197
|
+
"── Bridge Commands ──",
|
|
198
|
+
" /workspace list List all workspaces",
|
|
199
|
+
" /workspace add /path [name] Add a workspace",
|
|
200
|
+
" /workspace switch <n|path> Switch to workspace by index or path",
|
|
201
|
+
" /workspace status Show current workspace",
|
|
202
|
+
" (shorthand: /ws ...)",
|
|
203
|
+
"",
|
|
204
|
+
" /session new Create a new session",
|
|
205
|
+
" /session switch <n|slug> Switch to session by index or slug/title",
|
|
206
|
+
" /session list List all sessions",
|
|
207
|
+
" /session list --cwd List sessions in current workspace",
|
|
208
|
+
" /session list <path|n> List sessions by workspace path or index",
|
|
209
|
+
" /session status Show current session",
|
|
210
|
+
" (shorthand: /s ...)",
|
|
211
|
+
"",
|
|
212
|
+
" /help Show this help message",
|
|
213
|
+
];
|
|
214
|
+
if (nativeCommands.length > 0) {
|
|
215
|
+
lines.push("");
|
|
216
|
+
lines.push("── OpenCode Agent Commands ──");
|
|
217
|
+
for (const cmd of nativeCommands) {
|
|
218
|
+
lines.push(` /${cmd.name}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return lines.join("\n");
|
|
222
|
+
}
|
|
172
223
|
//# sourceMappingURL=workspace-cmd.js.map
|