wechat-bridge-opencode 0.1.2
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/.opencode/tools/send-wechat.ts +88 -0
- package/LICENSE +21 -0
- package/README.md +244 -0
- package/dist/bin/wechat-acp.d.ts +14 -0
- package/dist/bin/wechat-acp.d.ts.map +1 -0
- package/dist/bin/wechat-acp.js +284 -0
- package/dist/bin/wechat-acp.js.map +1 -0
- package/dist/bin/wechat-opencode.d.ts +14 -0
- package/dist/bin/wechat-opencode.d.ts.map +1 -0
- package/dist/bin/wechat-opencode.js +284 -0
- package/dist/bin/wechat-opencode.js.map +1 -0
- package/dist/package.json +60 -0
- package/dist/src/acp/agent-manager.d.ts +23 -0
- package/dist/src/acp/agent-manager.d.ts.map +1 -0
- package/dist/src/acp/agent-manager.js +134 -0
- package/dist/src/acp/agent-manager.js.map +1 -0
- package/dist/src/acp/client.d.ts +49 -0
- package/dist/src/acp/client.d.ts.map +1 -0
- package/dist/src/acp/client.js +219 -0
- package/dist/src/acp/client.js.map +1 -0
- package/dist/src/acp/opencode-sessions.d.ts +17 -0
- package/dist/src/acp/opencode-sessions.d.ts.map +1 -0
- package/dist/src/acp/opencode-sessions.js +59 -0
- package/dist/src/acp/opencode-sessions.js.map +1 -0
- package/dist/src/acp/session.d.ts +75 -0
- package/dist/src/acp/session.d.ts.map +1 -0
- package/dist/src/acp/session.js +273 -0
- package/dist/src/acp/session.js.map +1 -0
- package/dist/src/acp/workspace-manager.d.ts +48 -0
- package/dist/src/acp/workspace-manager.d.ts.map +1 -0
- package/dist/src/acp/workspace-manager.js +141 -0
- package/dist/src/acp/workspace-manager.js.map +1 -0
- package/dist/src/adapter/inbound.d.ts +10 -0
- package/dist/src/adapter/inbound.d.ts.map +1 -0
- package/dist/src/adapter/inbound.js +149 -0
- package/dist/src/adapter/inbound.js.map +1 -0
- package/dist/src/adapter/outbound.d.ts +9 -0
- package/dist/src/adapter/outbound.d.ts.map +1 -0
- package/dist/src/adapter/outbound.js +25 -0
- package/dist/src/adapter/outbound.js.map +1 -0
- package/dist/src/adapter/workspace-cmd.d.ts +53 -0
- package/dist/src/adapter/workspace-cmd.d.ts.map +1 -0
- package/dist/src/adapter/workspace-cmd.js +172 -0
- package/dist/src/adapter/workspace-cmd.js.map +1 -0
- package/dist/src/bridge.d.ts +42 -0
- package/dist/src/bridge.d.ts.map +1 -0
- package/dist/src/bridge.js +557 -0
- package/dist/src/bridge.js.map +1 -0
- package/dist/src/config.d.ts +63 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +88 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/weixin/api.d.ts +50 -0
- package/dist/src/weixin/api.d.ts.map +1 -0
- package/dist/src/weixin/api.js +87 -0
- package/dist/src/weixin/api.js.map +1 -0
- package/dist/src/weixin/auth.d.ts +20 -0
- package/dist/src/weixin/auth.d.ts.map +1 -0
- package/dist/src/weixin/auth.js +88 -0
- package/dist/src/weixin/auth.js.map +1 -0
- package/dist/src/weixin/media.d.ts +24 -0
- package/dist/src/weixin/media.d.ts.map +1 -0
- package/dist/src/weixin/media.js +91 -0
- package/dist/src/weixin/media.js.map +1 -0
- package/dist/src/weixin/monitor.d.ts +16 -0
- package/dist/src/weixin/monitor.d.ts.map +1 -0
- package/dist/src/weixin/monitor.js +111 -0
- package/dist/src/weixin/monitor.js.map +1 -0
- package/dist/src/weixin/send.d.ts +32 -0
- package/dist/src/weixin/send.d.ts.map +1 -0
- package/dist/src/weixin/send.js +193 -0
- package/dist/src/weixin/send.js.map +1 -0
- package/dist/src/weixin/types.d.ts +150 -0
- package/dist/src/weixin/types.d.ts.map +1 -0
- package/dist/src/weixin/types.js +33 -0
- package/dist/src/weixin/types.js.map +1 -0
- package/package.json +60 -0
- package/scripts/install-tool.mjs +14 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse workspace and session commands from WeChat messages.
|
|
3
|
+
*
|
|
4
|
+
* Workspace commands (/workspace or /ws):
|
|
5
|
+
* list — List all workspaces
|
|
6
|
+
* add /path [name] — Add a workspace
|
|
7
|
+
* switch <name|id> — Switch to a workspace
|
|
8
|
+
* remove <name|id> — Remove a workspace
|
|
9
|
+
* status — Show current workspace
|
|
10
|
+
*
|
|
11
|
+
* Session commands (/session or /s):
|
|
12
|
+
* new [name] — Create a new session
|
|
13
|
+
* switch <name|id> — Switch to an existing session
|
|
14
|
+
* remove <name|id> — Remove a session
|
|
15
|
+
* list — List all sessions
|
|
16
|
+
* status — Show current session info
|
|
17
|
+
*/
|
|
18
|
+
export function parseWorkspaceCommand(text) {
|
|
19
|
+
const trimmed = text.trim();
|
|
20
|
+
const match = trimmed.match(/^\/(?:workspace|ws)\s+(.+)$/i);
|
|
21
|
+
if (!match)
|
|
22
|
+
return null;
|
|
23
|
+
const args = match[1].trim().split(/\s+/);
|
|
24
|
+
const subcommand = args[0]?.toLowerCase();
|
|
25
|
+
switch (subcommand) {
|
|
26
|
+
case "list":
|
|
27
|
+
case "ls":
|
|
28
|
+
return { kind: "list" };
|
|
29
|
+
case "status":
|
|
30
|
+
case "current":
|
|
31
|
+
return { kind: "status" };
|
|
32
|
+
case "add": {
|
|
33
|
+
const pathArg = args[1];
|
|
34
|
+
if (!pathArg)
|
|
35
|
+
return null;
|
|
36
|
+
return { kind: "add", path: pathArg, name: args.slice(2).join(" ") || undefined };
|
|
37
|
+
}
|
|
38
|
+
case "switch":
|
|
39
|
+
case "sw":
|
|
40
|
+
case "use": {
|
|
41
|
+
const target = args.slice(1).join(" ");
|
|
42
|
+
if (!target)
|
|
43
|
+
return null;
|
|
44
|
+
return { kind: "switch", name: target };
|
|
45
|
+
}
|
|
46
|
+
case "remove":
|
|
47
|
+
case "rm":
|
|
48
|
+
case "delete":
|
|
49
|
+
case "del": {
|
|
50
|
+
const target = args.slice(1).join(" ");
|
|
51
|
+
if (!target)
|
|
52
|
+
return null;
|
|
53
|
+
return { kind: "remove", name: target };
|
|
54
|
+
}
|
|
55
|
+
default:
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function parseSessionCommand(text) {
|
|
60
|
+
const trimmed = text.trim();
|
|
61
|
+
const match = trimmed.match(/^\/(?:session|s)\s+(.+)$/i);
|
|
62
|
+
if (!match)
|
|
63
|
+
return null;
|
|
64
|
+
const args = match[1].trim().split(/\s+/);
|
|
65
|
+
const subcommand = args[0]?.toLowerCase();
|
|
66
|
+
switch (subcommand) {
|
|
67
|
+
case "new":
|
|
68
|
+
case "create":
|
|
69
|
+
return { kind: "new", name: args.slice(1).join(" ") || undefined };
|
|
70
|
+
case "switch":
|
|
71
|
+
case "sw":
|
|
72
|
+
case "use": {
|
|
73
|
+
const target = args.slice(1).join(" ");
|
|
74
|
+
if (!target)
|
|
75
|
+
return null;
|
|
76
|
+
return { kind: "switch", name: target };
|
|
77
|
+
}
|
|
78
|
+
case "remove":
|
|
79
|
+
case "rm":
|
|
80
|
+
case "delete":
|
|
81
|
+
case "del": {
|
|
82
|
+
const target = args.slice(1).join(" ");
|
|
83
|
+
if (!target)
|
|
84
|
+
return null;
|
|
85
|
+
return { kind: "remove", name: target };
|
|
86
|
+
}
|
|
87
|
+
case "list":
|
|
88
|
+
case "ls":
|
|
89
|
+
return { kind: "list" };
|
|
90
|
+
case "status":
|
|
91
|
+
case "current":
|
|
92
|
+
case "info":
|
|
93
|
+
return { kind: "status" };
|
|
94
|
+
default:
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export function formatWorkspaceList(workspaces, activeId) {
|
|
99
|
+
if (workspaces.length === 0)
|
|
100
|
+
return "No workspaces configured.";
|
|
101
|
+
const lines = ["📂 Workspaces:"];
|
|
102
|
+
for (const ws of workspaces) {
|
|
103
|
+
const prefix = ws.id === activeId ? "▶ " : " ";
|
|
104
|
+
lines.push(`${prefix}${ws.name} (${ws.id})`);
|
|
105
|
+
lines.push(` ${ws.cwd}`);
|
|
106
|
+
}
|
|
107
|
+
return lines.join("\n");
|
|
108
|
+
}
|
|
109
|
+
export function formatWorkspaceStatus(name, id, cwd) {
|
|
110
|
+
return `📂 Current workspace:\n ${name} (${id})\n ${cwd}`;
|
|
111
|
+
}
|
|
112
|
+
export function formatSessionList(sessions, activeId, workspaces = []) {
|
|
113
|
+
if (sessions.length === 0)
|
|
114
|
+
return "No sessions.";
|
|
115
|
+
// Group sessions by workspace
|
|
116
|
+
const wsMap = new Map();
|
|
117
|
+
for (const s of sessions) {
|
|
118
|
+
const wsName = s.workspaceName || s.workspaceId;
|
|
119
|
+
if (!wsMap.has(s.workspaceId)) {
|
|
120
|
+
const ws = workspaces.find((w) => w.id === s.workspaceId);
|
|
121
|
+
wsMap.set(s.workspaceId, { name: ws?.name ?? wsName, sessions: [] });
|
|
122
|
+
}
|
|
123
|
+
wsMap.get(s.workspaceId).sessions.push(s);
|
|
124
|
+
}
|
|
125
|
+
const lines = [];
|
|
126
|
+
for (const [wsId, group] of wsMap) {
|
|
127
|
+
lines.push(`📂 ${group.name} (${wsId}):`);
|
|
128
|
+
for (const s of group.sessions) {
|
|
129
|
+
const prefix = s.id === activeId ? " ▶ " : " ";
|
|
130
|
+
lines.push(`${prefix}${s.name} (${s.id})`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return lines.join("\n");
|
|
134
|
+
}
|
|
135
|
+
export function formatSessionStatus(sessionName, sessionId, workspaceName, workspaceId) {
|
|
136
|
+
return `💬 Current session:\n ${sessionName} (${sessionId})\n Workspace: ${workspaceName} (${workspaceId})`;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Check if a message is a help command.
|
|
140
|
+
*/
|
|
141
|
+
export function parseHelpCommand(text) {
|
|
142
|
+
const trimmed = text.trim().toLowerCase();
|
|
143
|
+
return trimmed === "/help" || trimmed === "/h" || trimmed === "/?";
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Format the help message listing all available commands.
|
|
147
|
+
*/
|
|
148
|
+
export function formatHelp() {
|
|
149
|
+
return [
|
|
150
|
+
"📖 Available Commands:",
|
|
151
|
+
"",
|
|
152
|
+
"── Workspaces ──",
|
|
153
|
+
" /workspace list List all workspaces",
|
|
154
|
+
" /workspace add /path [name] Add a workspace",
|
|
155
|
+
" /workspace switch <name> Switch to a workspace",
|
|
156
|
+
" /workspace remove <name> Remove a workspace",
|
|
157
|
+
" /workspace status Show current workspace",
|
|
158
|
+
" (shorthand: /ws ...)",
|
|
159
|
+
"",
|
|
160
|
+
"── Sessions ──",
|
|
161
|
+
" /session new [name] Create a new session",
|
|
162
|
+
" /session switch <name> Switch to an existing session",
|
|
163
|
+
" /session remove <name> Remove a session",
|
|
164
|
+
" /session list List all sessions",
|
|
165
|
+
" /session status Show current session",
|
|
166
|
+
" (shorthand: /s ...)",
|
|
167
|
+
"",
|
|
168
|
+
"── Help ──",
|
|
169
|
+
" /help Show this help message",
|
|
170
|
+
].join("\n");
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=workspace-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-cmd.js","sourceRoot":"","sources":["../../../src/adapter/workspace-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeChatOpencodeBridge — the main orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Two concepts:
|
|
5
|
+
* - Session: OpenCode conversation (from SQLite)
|
|
6
|
+
* - Directory: working directory (cwd)
|
|
7
|
+
*/
|
|
8
|
+
import type { WeChatOpencodeConfig } from "./config.js";
|
|
9
|
+
export declare class WeChatOpencodeBridge {
|
|
10
|
+
private config;
|
|
11
|
+
private abortController;
|
|
12
|
+
private sessionManager;
|
|
13
|
+
private tokenData;
|
|
14
|
+
private userStates;
|
|
15
|
+
private typingTickets;
|
|
16
|
+
private toolApiServer;
|
|
17
|
+
private log;
|
|
18
|
+
constructor(config: WeChatOpencodeConfig, log?: (msg: string) => void);
|
|
19
|
+
start(opts?: {
|
|
20
|
+
forceLogin?: boolean;
|
|
21
|
+
renderQrUrl?: (url: string) => void;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
private loadUserStates;
|
|
25
|
+
private saveUserStates;
|
|
26
|
+
private setUserState;
|
|
27
|
+
private getUserState;
|
|
28
|
+
private startToolApiServer;
|
|
29
|
+
private guessMimeType;
|
|
30
|
+
private handleMessage;
|
|
31
|
+
private handleDirectoryCommand;
|
|
32
|
+
private handleSessionCommand;
|
|
33
|
+
private extractTextFromMessage;
|
|
34
|
+
private enqueueMessage;
|
|
35
|
+
private sendReply;
|
|
36
|
+
private sendMediaReply;
|
|
37
|
+
private cancelTypingIndicator;
|
|
38
|
+
private sendTypingIndicator;
|
|
39
|
+
private getTypingTicket;
|
|
40
|
+
private previewMessage;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAYxD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,aAAa,CAA4D;IACjF,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,GAAG,CAAwB;gBAEvB,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAK/D,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE1F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,kBAAkB;IAgF1B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,aAAa;YAyCP,sBAAsB;YA0GtB,oBAAoB;IA4ElC,OAAO,CAAC,sBAAsB;YAQhB,cAAc;YAMd,SAAS;YAaT,cAAc;YAoCd,qBAAqB;YAUrB,mBAAmB;YAcnB,eAAe;IAoB7B,OAAO,CAAC,cAAc;CAcvB"}
|