@cecwxf/wtt 0.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.
Files changed (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +147 -0
  3. package/bin/openclaw-wtt-bootstrap.mjs +181 -0
  4. package/dist/channel.d.ts +275 -0
  5. package/dist/channel.d.ts.map +1 -0
  6. package/dist/channel.js +2088 -0
  7. package/dist/channel.js.map +1 -0
  8. package/dist/commands/account.d.ts +16 -0
  9. package/dist/commands/account.d.ts.map +1 -0
  10. package/dist/commands/account.js +37 -0
  11. package/dist/commands/account.js.map +1 -0
  12. package/dist/commands/bind.d.ts +3 -0
  13. package/dist/commands/bind.d.ts.map +1 -0
  14. package/dist/commands/bind.js +102 -0
  15. package/dist/commands/bind.js.map +1 -0
  16. package/dist/commands/config.d.ts +3 -0
  17. package/dist/commands/config.d.ts.map +1 -0
  18. package/dist/commands/config.js +38 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/delegate.d.ts +7 -0
  21. package/dist/commands/delegate.d.ts.map +1 -0
  22. package/dist/commands/delegate.js +99 -0
  23. package/dist/commands/delegate.js.map +1 -0
  24. package/dist/commands/formatter.d.ts +8 -0
  25. package/dist/commands/formatter.d.ts.map +1 -0
  26. package/dist/commands/formatter.js +198 -0
  27. package/dist/commands/formatter.js.map +1 -0
  28. package/dist/commands/handlers.d.ts +3 -0
  29. package/dist/commands/handlers.d.ts.map +1 -0
  30. package/dist/commands/handlers.js +79 -0
  31. package/dist/commands/handlers.js.map +1 -0
  32. package/dist/commands/http.d.ts +26 -0
  33. package/dist/commands/http.d.ts.map +1 -0
  34. package/dist/commands/http.js +190 -0
  35. package/dist/commands/http.js.map +1 -0
  36. package/dist/commands/index.d.ts +3 -0
  37. package/dist/commands/index.d.ts.map +1 -0
  38. package/dist/commands/index.js +2 -0
  39. package/dist/commands/index.js.map +1 -0
  40. package/dist/commands/parser.d.ts +5 -0
  41. package/dist/commands/parser.d.ts.map +1 -0
  42. package/dist/commands/parser.js +325 -0
  43. package/dist/commands/parser.js.map +1 -0
  44. package/dist/commands/pipeline.d.ts +7 -0
  45. package/dist/commands/pipeline.d.ts.map +1 -0
  46. package/dist/commands/pipeline.js +99 -0
  47. package/dist/commands/pipeline.js.map +1 -0
  48. package/dist/commands/router.d.ts +18 -0
  49. package/dist/commands/router.d.ts.map +1 -0
  50. package/dist/commands/router.js +74 -0
  51. package/dist/commands/router.js.map +1 -0
  52. package/dist/commands/setup.d.ts +7 -0
  53. package/dist/commands/setup.d.ts.map +1 -0
  54. package/dist/commands/setup.js +89 -0
  55. package/dist/commands/setup.js.map +1 -0
  56. package/dist/commands/task.d.ts +26 -0
  57. package/dist/commands/task.d.ts.map +1 -0
  58. package/dist/commands/task.js +438 -0
  59. package/dist/commands/task.js.map +1 -0
  60. package/dist/commands/types.d.ts +173 -0
  61. package/dist/commands/types.d.ts.map +1 -0
  62. package/dist/commands/types.js +2 -0
  63. package/dist/commands/types.js.map +1 -0
  64. package/dist/e2e-crypto.d.ts +36 -0
  65. package/dist/e2e-crypto.d.ts.map +1 -0
  66. package/dist/e2e-crypto.js +166 -0
  67. package/dist/e2e-crypto.js.map +1 -0
  68. package/dist/index.d.ts +20 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +21 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/plugin-config.d.ts +32 -0
  73. package/dist/plugin-config.d.ts.map +1 -0
  74. package/dist/plugin-config.js +268 -0
  75. package/dist/plugin-config.js.map +1 -0
  76. package/dist/runtime/index.d.ts +13 -0
  77. package/dist/runtime/index.d.ts.map +1 -0
  78. package/dist/runtime/index.js +7 -0
  79. package/dist/runtime/index.js.map +1 -0
  80. package/dist/runtime/progress-ticker.d.ts +65 -0
  81. package/dist/runtime/progress-ticker.d.ts.map +1 -0
  82. package/dist/runtime/progress-ticker.js +116 -0
  83. package/dist/runtime/progress-ticker.js.map +1 -0
  84. package/dist/runtime/session-binding.d.ts +16 -0
  85. package/dist/runtime/session-binding.d.ts.map +1 -0
  86. package/dist/runtime/session-binding.js +20 -0
  87. package/dist/runtime/session-binding.js.map +1 -0
  88. package/dist/runtime/status-transition.d.ts +19 -0
  89. package/dist/runtime/status-transition.d.ts.map +1 -0
  90. package/dist/runtime/status-transition.js +95 -0
  91. package/dist/runtime/status-transition.js.map +1 -0
  92. package/dist/runtime/task-executor-persistence.d.ts +63 -0
  93. package/dist/runtime/task-executor-persistence.d.ts.map +1 -0
  94. package/dist/runtime/task-executor-persistence.js +201 -0
  95. package/dist/runtime/task-executor-persistence.js.map +1 -0
  96. package/dist/runtime/task-executor.d.ts +169 -0
  97. package/dist/runtime/task-executor.d.ts.map +1 -0
  98. package/dist/runtime/task-executor.js +1230 -0
  99. package/dist/runtime/task-executor.js.map +1 -0
  100. package/dist/runtime/task-status-handler.d.ts +28 -0
  101. package/dist/runtime/task-status-handler.d.ts.map +1 -0
  102. package/dist/runtime/task-status-handler.js +102 -0
  103. package/dist/runtime/task-status-handler.js.map +1 -0
  104. package/dist/types.d.ts +159 -0
  105. package/dist/types.d.ts.map +1 -0
  106. package/dist/types.js +6 -0
  107. package/dist/types.js.map +1 -0
  108. package/dist/ws-client.d.ts +90 -0
  109. package/dist/ws-client.d.ts.map +1 -0
  110. package/dist/ws-client.js +385 -0
  111. package/dist/ws-client.js.map +1 -0
  112. package/index.ts +19 -0
  113. package/openclaw.plugin.json +49 -0
  114. package/package.json +62 -0
  115. package/scripts/install-bootstrap-cli.sh +54 -0
@@ -0,0 +1,198 @@
1
+ function asRecord(value) {
2
+ if (typeof value !== "object" || value === null || Array.isArray(value))
3
+ return null;
4
+ return value;
5
+ }
6
+ function asString(value, fallback = "-") {
7
+ return typeof value === "string" && value.trim() ? value : fallback;
8
+ }
9
+ function asNumber(value) {
10
+ if (typeof value === "number" && Number.isFinite(value))
11
+ return value;
12
+ if (typeof value === "string" && /^\d+$/.test(value))
13
+ return Number(value);
14
+ return null;
15
+ }
16
+ function topicIcon(topicType) {
17
+ switch (topicType) {
18
+ case "broadcast":
19
+ return "📣";
20
+ case "discussion":
21
+ return "💬";
22
+ case "collaborative":
23
+ return "🤝";
24
+ case "p2p":
25
+ return "🔒";
26
+ default:
27
+ return "📌";
28
+ }
29
+ }
30
+ function contentIcon(contentType) {
31
+ switch (contentType) {
32
+ case "image":
33
+ return "🖼";
34
+ case "audio":
35
+ return "🎵";
36
+ case "video":
37
+ return "🎬";
38
+ case "file":
39
+ return "📎";
40
+ case "link":
41
+ return "🔗";
42
+ default:
43
+ return "💬";
44
+ }
45
+ }
46
+ function compactText(raw, maxLen = 90) {
47
+ const normalized = raw.replace(/\s+/g, " ").trim();
48
+ if (normalized.length <= maxLen)
49
+ return normalized;
50
+ return `${normalized.slice(0, maxLen - 1)}…`;
51
+ }
52
+ function toTopicList(data) {
53
+ if (!Array.isArray(data))
54
+ return [];
55
+ return data.map((item) => asRecord(item)).filter((item) => item !== null);
56
+ }
57
+ function toMessageList(data) {
58
+ if (!Array.isArray(data))
59
+ return [];
60
+ return data.map((item) => asRecord(item)).filter((item) => item !== null);
61
+ }
62
+ export function formatHelp() {
63
+ return [
64
+ "WTT 命令(plugin 迁移中)",
65
+ "- @wtt list [limit]",
66
+ "- @wtt find <query>",
67
+ "- @wtt join <topic_id>",
68
+ "- @wtt leave <topic_id>",
69
+ "- @wtt publish <topic_id> <content>",
70
+ "- @wtt poll [limit]",
71
+ "- @wtt history <topic_id> [limit]",
72
+ "- @wtt p2p <agent_id> <content>",
73
+ "- @wtt detail <topic_id>",
74
+ "- @wtt subscribed",
75
+ "- @wtt task list | detail <task_id> | create <title> [description] | run <task_id> | review <task_id> <approve|reject|block> [comment]",
76
+ "- @wtt pipeline list | create <name> [description] | run <pipeline_id>",
77
+ "- @wtt delegate list | create <target_agent_id> | remove <target_agent_id>",
78
+ "- @wtt config [auto]",
79
+ "- @wtt bind",
80
+ "- @wtt setup <agent_id> <agent_token> [cloudUrl]",
81
+ "- @wtt help",
82
+ ].join("\n");
83
+ }
84
+ export function formatTopicCollection(title, data) {
85
+ const topics = toTopicList(data);
86
+ if (topics.length === 0)
87
+ return `${title}:暂无结果`;
88
+ const lines = [`${title}(${topics.length})`];
89
+ for (const [idx, topic] of topics.entries()) {
90
+ const id = asString(topic.id, "-");
91
+ const name = asString(topic.name, "(未命名)");
92
+ const type = asString(topic.type, "unknown");
93
+ const memberCount = asNumber(topic.member_count);
94
+ const role = asString(topic.my_role, "");
95
+ const desc = asString(topic.description, "");
96
+ const roleText = role && role !== "-" ? ` [${role}]` : "";
97
+ const memberText = memberCount !== null ? ` | 成员 ${memberCount}` : "";
98
+ lines.push(`${idx + 1}. ${topicIcon(type)} ${name}${roleText}`);
99
+ lines.push(` id: ${id} | 类型 ${type}${memberText}`);
100
+ if (desc && desc !== "-")
101
+ lines.push(` ${compactText(desc, 70)}`);
102
+ }
103
+ return lines.join("\n");
104
+ }
105
+ async function getMessageText(client, message) {
106
+ const rawContent = asString(message.content, "");
107
+ if (!rawContent)
108
+ return "";
109
+ const encrypted = message.encrypted === true;
110
+ if (!encrypted || typeof client.decryptMessage !== "function")
111
+ return rawContent;
112
+ try {
113
+ return await client.decryptMessage(rawContent);
114
+ }
115
+ catch {
116
+ return rawContent;
117
+ }
118
+ }
119
+ export async function formatPoll(data, client) {
120
+ const payload = asRecord(data);
121
+ if (!payload)
122
+ return "poll 返回数据格式异常";
123
+ const messages = toMessageList(payload.messages);
124
+ const topics = toTopicList(payload.topics);
125
+ if (messages.length === 0)
126
+ return "暂无新消息";
127
+ const topicNameById = new Map();
128
+ for (const topic of topics) {
129
+ const id = asString(topic.id, "");
130
+ if (!id)
131
+ continue;
132
+ topicNameById.set(id, asString(topic.name, id.slice(0, 8)));
133
+ }
134
+ const lines = [`新消息(${messages.length})`];
135
+ for (const message of messages) {
136
+ const topicId = asString(message.topic_id, "-");
137
+ const topicName = topicNameById.get(topicId) ?? topicId;
138
+ const sender = asString(message.sender_id, "?");
139
+ const contentType = asString(message.content_type, "text");
140
+ const content = compactText(await getMessageText(client, message), 100);
141
+ const prefix = contentType === "text" ? "" : `${contentIcon(contentType)} `;
142
+ lines.push(`- [${topicName}] ${sender}: ${prefix}${content}`);
143
+ }
144
+ return lines.join("\n");
145
+ }
146
+ export async function formatHistory(data, client) {
147
+ const messages = toMessageList(data);
148
+ if (messages.length === 0)
149
+ return "该话题暂无历史消息";
150
+ const lines = [`历史消息(${messages.length})`];
151
+ for (const message of messages) {
152
+ const ts = asString(message.created_at, "-");
153
+ const sender = asString(message.sender_id, "?");
154
+ const contentType = asString(message.content_type, "text");
155
+ const content = compactText(await getMessageText(client, message), 110);
156
+ const prefix = contentType === "text" ? "" : `${contentIcon(contentType)} `;
157
+ lines.push(`- ${ts} ${sender}: ${prefix}${content}`);
158
+ }
159
+ return lines.join("\n");
160
+ }
161
+ export function formatDetail(data) {
162
+ const topic = asRecord(data);
163
+ if (!topic)
164
+ return "topic 详情返回数据格式异常";
165
+ const name = asString(topic.name, "(未命名)");
166
+ const id = asString(topic.id, "-");
167
+ const type = asString(topic.type, "-");
168
+ const visibility = asString(topic.visibility, "-");
169
+ const joinMethod = asString(topic.join_method, "-");
170
+ const memberCount = asNumber(topic.member_count);
171
+ const creator = asString(topic.creator_agent_id, "-");
172
+ const desc = asString(topic.description, "");
173
+ const lines = [
174
+ `${topicIcon(type)} ${name}`,
175
+ `id: ${id}`,
176
+ `类型: ${type} | 可见性: ${visibility}`,
177
+ `加入方式: ${joinMethod} | 成员: ${memberCount ?? "-"}`,
178
+ `创建者: ${creator}`,
179
+ ];
180
+ if (desc && desc !== "-")
181
+ lines.push(`描述: ${compactText(desc, 120)}`);
182
+ return lines.join("\n");
183
+ }
184
+ export function formatAcknowledge(action, data, target) {
185
+ const payload = asRecord(data) ?? {};
186
+ const msg = asString(payload.message, "");
187
+ if (action === "join")
188
+ return msg ? `已加入 ${target}(${msg})` : `已加入 ${target}`;
189
+ if (action === "leave")
190
+ return msg ? `已离开 ${target}(${msg})` : `已离开 ${target}`;
191
+ if (action === "publish") {
192
+ const messageId = asString(payload.id, "");
193
+ return messageId ? `已发布到 ${target}(消息ID: ${messageId})` : `已发布到 ${target}`;
194
+ }
195
+ const messageId = asString(payload.id, "");
196
+ return messageId ? `已发送给 ${target}(消息ID: ${messageId})` : `已发送给 ${target}`;
197
+ }
198
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/commands/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ParsedWTTCommand, WTTCommandClient, WTTCommandExecutionContext } from "./types.js";
2
+ export declare function executeWTTCommand(command: ParsedWTTCommand, client: WTTCommandClient | undefined, ctx: WTTCommandExecutionContext): Promise<string>;
3
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAgBpB,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAmFjB"}
@@ -0,0 +1,79 @@
1
+ import { formatAcknowledge, formatDetail, formatHelp, formatHistory, formatPoll, formatTopicCollection, } from "./formatter.js";
2
+ import { handleConfigCommand } from "./config.js";
3
+ import { handleBindCommand } from "./bind.js";
4
+ import { handleSetupCommand } from "./setup.js";
5
+ import { handleTaskCommand } from "./task.js";
6
+ import { handlePipelineCommand } from "./pipeline.js";
7
+ import { handleDelegateCommand } from "./delegate.js";
8
+ export async function executeWTTCommand(command, client, ctx) {
9
+ switch (command.name) {
10
+ case "help":
11
+ return formatHelp();
12
+ case "invalid": {
13
+ const hint = command.usage ? `\n用法: ${command.usage}` : "\n输入 @wtt help 查看支持命令";
14
+ return `命令格式错误:${command.reason}${hint}`;
15
+ }
16
+ case "config":
17
+ return handleConfigCommand(command.mode, ctx);
18
+ case "bind":
19
+ return handleBindCommand(ctx);
20
+ case "setup":
21
+ return handleSetupCommand(command, ctx);
22
+ case "task":
23
+ return handleTaskCommand(command, ctx);
24
+ case "pipeline":
25
+ return handlePipelineCommand(command, ctx);
26
+ case "delegate":
27
+ return handleDelegateCommand(command, ctx);
28
+ case "list": {
29
+ const data = await requireClient(client, "list").list(command.limit);
30
+ return formatTopicCollection("公开话题", data);
31
+ }
32
+ case "find": {
33
+ const data = await requireClient(client, "find").find(command.query);
34
+ return formatTopicCollection(`搜索结果(${command.query})`, data);
35
+ }
36
+ case "join": {
37
+ const data = await requireClient(client, "join").join(command.topicId);
38
+ return formatAcknowledge("join", data, command.topicId);
39
+ }
40
+ case "leave": {
41
+ const data = await requireClient(client, "leave").leave(command.topicId);
42
+ return formatAcknowledge("leave", data, command.topicId);
43
+ }
44
+ case "publish": {
45
+ const data = await requireClient(client, "publish").publish(command.topicId, command.content);
46
+ return formatAcknowledge("publish", data, command.topicId);
47
+ }
48
+ case "poll": {
49
+ const c = requireClient(client, "poll");
50
+ const data = await c.poll(command.limit);
51
+ return formatPoll(data, c);
52
+ }
53
+ case "history": {
54
+ const c = requireClient(client, "history");
55
+ const data = await c.history(command.topicId, command.limit);
56
+ return formatHistory(data, c);
57
+ }
58
+ case "p2p": {
59
+ const data = await requireClient(client, "p2p").p2p(command.agentId, command.content, true);
60
+ return formatAcknowledge("p2p", data, command.agentId);
61
+ }
62
+ case "detail": {
63
+ const data = await requireClient(client, "detail").detail(command.topicId);
64
+ return formatDetail(data);
65
+ }
66
+ case "subscribed": {
67
+ const data = await requireClient(client, "subscribed").subscribed();
68
+ return formatTopicCollection("已订阅话题", data);
69
+ }
70
+ default:
71
+ return formatHelp();
72
+ }
73
+ }
74
+ function requireClient(client, command) {
75
+ if (!client)
76
+ throw new Error(`命令 ${command} 需要可用的 WTT 客户端`);
77
+ return client;
78
+ }
79
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,UAAU,EACV,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAyB,EACzB,MAAoC,EACpC,GAA+B;IAE/B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,UAAU,EAAE,CAAC;QAEtB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAChF,OAAO,UAAU,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEhD,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEhC,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE1C,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEzC,KAAK,UAAU;YACb,OAAO,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE7C,KAAK,UAAU;YACb,OAAO,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE7C,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrE,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrE,OAAO,qBAAqB,CAAC,QAAQ,OAAO,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvE,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzE,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9F,OAAO,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5F,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3E,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;YACpE,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED;YACE,OAAO,UAAU,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAoC,EAAE,OAAe;IAC1E,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { WTTCommandExecutionContext } from "./types.js";
2
+ type HttpMethod = "GET" | "POST" | "PATCH" | "DELETE";
3
+ export type WTTApiErrorCode = "UNAUTHORIZED" | "ENDPOINT_UNAVAILABLE" | "HTTP_ERROR" | "NETWORK_ERROR" | "TIMEOUT";
4
+ export declare class WTTApiError extends Error {
5
+ code: WTTApiErrorCode;
6
+ status?: number;
7
+ endpoint?: string;
8
+ tried?: string[];
9
+ constructor(code: WTTApiErrorCode, message: string, opts?: {
10
+ status?: number;
11
+ endpoint?: string;
12
+ tried?: string[];
13
+ });
14
+ }
15
+ interface ApiRequestOptions {
16
+ method: HttpMethod;
17
+ path: string;
18
+ fallbackPaths?: string[];
19
+ query?: Record<string, string | number | boolean | undefined>;
20
+ body?: unknown;
21
+ timeoutMs?: number;
22
+ }
23
+ export declare function wttApiRequestJson(ctx: WTTCommandExecutionContext, options: ApiRequestOptions): Promise<unknown>;
24
+ export declare function formatApiError(actionLabel: string, error: unknown): string;
25
+ export {};
26
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/commands/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAsC,MAAM,YAAY,CAAC;AAIjG,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,sBAAsB,GACtB,YAAY,GACZ,eAAe,GACf,SAAS,CAAC;AAEd,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;gBAGf,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;CASlE;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyFD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,0BAA0B,EAC/B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,OAAO,CAAC,CAgFlB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAwB1E"}
@@ -0,0 +1,190 @@
1
+ import { normalizeAccountContext } from "./account.js";
2
+ const DEFAULT_TIMEOUT_MS = 12_000;
3
+ export class WTTApiError extends Error {
4
+ code;
5
+ status;
6
+ endpoint;
7
+ tried;
8
+ constructor(code, message, opts) {
9
+ super(message);
10
+ this.name = "WTTApiError";
11
+ this.code = code;
12
+ this.status = opts?.status;
13
+ this.endpoint = opts?.endpoint;
14
+ this.tried = opts?.tried;
15
+ }
16
+ }
17
+ function defaultFetchImpl(input, init) {
18
+ return fetch(input, init);
19
+ }
20
+ function hasJsonContentType(resp) {
21
+ const headers = resp;
22
+ const contentType = headers.headers?.get?.("content-type") ?? "";
23
+ return contentType.toLowerCase().includes("application/json");
24
+ }
25
+ async function parseResponseBody(resp) {
26
+ if (resp.status === 204)
27
+ return {};
28
+ if (hasJsonContentType(resp)) {
29
+ try {
30
+ return await resp.json();
31
+ }
32
+ catch {
33
+ // fall through to text
34
+ }
35
+ }
36
+ const text = await resp.text();
37
+ if (!text)
38
+ return {};
39
+ try {
40
+ return JSON.parse(text);
41
+ }
42
+ catch {
43
+ return { message: text };
44
+ }
45
+ }
46
+ function extractErrorMessage(payload) {
47
+ if (typeof payload === "string" && payload.trim())
48
+ return payload.trim();
49
+ if (typeof payload === "object" && payload !== null) {
50
+ const data = payload;
51
+ const detail = data.detail;
52
+ if (typeof detail === "string" && detail.trim())
53
+ return detail.trim();
54
+ if (Array.isArray(detail) && detail.length > 0) {
55
+ const first = detail[0];
56
+ if (typeof first === "string" && first.trim())
57
+ return first.trim();
58
+ if (typeof first === "object" && first !== null) {
59
+ const msg = first.msg;
60
+ if (typeof msg === "string" && msg.trim())
61
+ return msg.trim();
62
+ }
63
+ }
64
+ for (const key of ["error", "message", "msg", "reason"]) {
65
+ const value = data[key];
66
+ if (typeof value === "string" && value.trim())
67
+ return value.trim();
68
+ }
69
+ }
70
+ return "服务端返回异常";
71
+ }
72
+ function toQueryString(query) {
73
+ if (!query)
74
+ return "";
75
+ const params = new URLSearchParams();
76
+ for (const [k, v] of Object.entries(query)) {
77
+ if (v === undefined)
78
+ continue;
79
+ params.set(k, String(v));
80
+ }
81
+ const qs = params.toString();
82
+ return qs ? `?${qs}` : "";
83
+ }
84
+ function withApiPrefixCandidates(path) {
85
+ const normalized = path.startsWith("/") ? path : `/${path}`;
86
+ const candidates = new Set([normalized]);
87
+ if (!normalized.startsWith("/api/")) {
88
+ candidates.add(`/api${normalized}`);
89
+ candidates.add(`/api/v1${normalized}`);
90
+ }
91
+ return Array.from(candidates);
92
+ }
93
+ function isAbortError(error) {
94
+ if (!(error instanceof Error))
95
+ return false;
96
+ return error.name === "AbortError" || /aborted/i.test(error.message);
97
+ }
98
+ export async function wttApiRequestJson(ctx, options) {
99
+ const account = normalizeAccountContext(ctx.accountId, ctx.account);
100
+ const fetchImpl = ctx.fetchImpl ?? defaultFetchImpl;
101
+ const headers = {
102
+ Accept: "application/json",
103
+ };
104
+ if (options.body !== undefined)
105
+ headers["Content-Type"] = "application/json";
106
+ if (account.hasToken) {
107
+ headers.Authorization = `Bearer ${account.token}`;
108
+ headers["X-Agent-Token"] = account.token;
109
+ }
110
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
111
+ const pathCandidates = [
112
+ ...withApiPrefixCandidates(options.path),
113
+ ...(options.fallbackPaths ?? []),
114
+ ];
115
+ const tried = [];
116
+ for (const path of pathCandidates) {
117
+ const query = toQueryString(options.query);
118
+ const endpoint = `${account.cloudUrl.replace(/\/$/, "")}${path}${query}`;
119
+ tried.push(endpoint);
120
+ const controller = new AbortController();
121
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
122
+ try {
123
+ const resp = await fetchImpl(endpoint, {
124
+ method: options.method,
125
+ headers,
126
+ body: options.body === undefined ? undefined : JSON.stringify(options.body),
127
+ signal: controller.signal,
128
+ });
129
+ const payload = await parseResponseBody(resp);
130
+ if (resp.ok)
131
+ return payload;
132
+ if (resp.status === 401 || resp.status === 403) {
133
+ throw new WTTApiError("UNAUTHORIZED", "鉴权失败", {
134
+ status: resp.status,
135
+ endpoint,
136
+ tried,
137
+ });
138
+ }
139
+ if (resp.status === 404 || resp.status === 405) {
140
+ continue;
141
+ }
142
+ const msg = extractErrorMessage(payload);
143
+ throw new WTTApiError("HTTP_ERROR", msg, {
144
+ status: resp.status,
145
+ endpoint,
146
+ tried,
147
+ });
148
+ }
149
+ catch (error) {
150
+ if (error instanceof WTTApiError) {
151
+ if (error.code === "HTTP_ERROR" || error.code === "UNAUTHORIZED")
152
+ throw error;
153
+ continue;
154
+ }
155
+ if (isAbortError(error)) {
156
+ throw new WTTApiError("TIMEOUT", "请求超时", { endpoint, tried });
157
+ }
158
+ const msg = error instanceof Error ? error.message : String(error);
159
+ throw new WTTApiError("NETWORK_ERROR", msg, { endpoint, tried });
160
+ }
161
+ finally {
162
+ clearTimeout(timer);
163
+ }
164
+ }
165
+ throw new WTTApiError("ENDPOINT_UNAVAILABLE", "服务端暂未暴露该接口", { tried });
166
+ }
167
+ export function formatApiError(actionLabel, error) {
168
+ if (error instanceof WTTApiError) {
169
+ if (error.code === "UNAUTHORIZED") {
170
+ return `${actionLabel}失败:鉴权失败(401/403),请检查 token 配置。`;
171
+ }
172
+ if (error.code === "ENDPOINT_UNAVAILABLE") {
173
+ const hint = error.tried?.length
174
+ ? `\n已尝试:${error.tried.map((url) => url.replace(/^https?:\/\//, "")).join(" | ")}`
175
+ : "";
176
+ return `${actionLabel}暂不可用:当前后端未提供该 API。${hint}`;
177
+ }
178
+ if (error.code === "TIMEOUT") {
179
+ return `${actionLabel}失败:请求超时,请稍后重试。`;
180
+ }
181
+ if (error.code === "NETWORK_ERROR") {
182
+ return `${actionLabel}失败:网络异常(${error.message})。`;
183
+ }
184
+ const statusText = error.status ? `(HTTP ${error.status})` : "";
185
+ return `${actionLabel}失败${statusText}:${error.message}`;
186
+ }
187
+ const msg = error instanceof Error ? error.message : String(error);
188
+ return `${actionLabel}失败:${msg}`;
189
+ }
190
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/commands/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createWTTCommandRouter, normalizeWTTCommandText, parseWTTCommandText } from "./router.js";
2
+ export type { ParsedWTTCommand, WTTCommandClient, WTTCommandName, WTTCommandProcessResult, } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnG,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createWTTCommandRouter, normalizeWTTCommandText, parseWTTCommandText } from "./router.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ParsedWTTCommand } from "./types.js";
2
+ export declare function normalizeWTTCommandText(text: string): string | null;
3
+ export declare function parseWTTCommandText(text: string): ParsedWTTCommand | null;
4
+ export declare function isWTTCommandText(text: string): boolean;
5
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/commands/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBnE;AA2MD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAmHzE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}