tellrun 1.1.2 → 1.2.4
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/README.md +35 -91
- package/README.zh-CN.md +35 -91
- package/dist/agents/codex-interaction.js +126 -0
- package/dist/agents/codex-interaction.js.map +1 -0
- package/dist/agents/codex.js +132 -9
- package/dist/agents/codex.js.map +1 -1
- package/dist/cli.js +11 -6
- package/dist/cli.js.map +1 -1
- package/dist/core/relay.js +33 -9
- package/dist/core/relay.js.map +1 -1
- package/dist/im/telegram.js +100 -13
- package/dist/im/telegram.js.map +1 -1
- package/dist/launchd.js +212 -0
- package/dist/launchd.js.map +1 -0
- package/dist/logger.js +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/main.js +27 -2
- package/dist/main.js.map +1 -1
- package/dist/service.js +15 -0
- package/dist/service.js.map +1 -0
- package/dist/storage/lock.js +78 -0
- package/dist/storage/lock.js.map +1 -0
- package/dist/storage/schema.js +37 -0
- package/dist/storage/schema.js.map +1 -1
- package/dist/storage/store.js +278 -98
- package/dist/storage/store.js.map +1 -1
- package/dist/systemd.js +1 -7
- package/dist/systemd.js.map +1 -1
- package/docs/architecture.md +86 -67
- package/docs/prd.md +10 -8
- package/package.json +2 -2
package/dist/storage/store.js
CHANGED
|
@@ -1,83 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { chmodSync, mkdirSync, readdirSync, readFileSync, rmdirSync, rmSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
1
|
+
import { chmodSync, mkdirSync, readFileSync } from "node:fs";
|
|
3
2
|
import { dirname, join } from "node:path";
|
|
4
3
|
import { appDirectory } from "../config.js";
|
|
5
4
|
import { writeJson } from "./json.js";
|
|
5
|
+
import { acquireLock } from "./lock.js";
|
|
6
6
|
import { activeTaskStatuses, stateSchema } from "./schema.js";
|
|
7
7
|
/** 打开文件状态并取得单实例锁;所有业务写入统一替换 state.json。 */
|
|
8
8
|
export function openStore(path = join(appDirectory, "state.json")) {
|
|
9
9
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
10
10
|
if (dirname(path) === appDirectory)
|
|
11
11
|
chmodSync(appDirectory, 0o700);
|
|
12
|
-
const
|
|
13
|
-
const owner = `${process.pid}-${randomUUID()}`;
|
|
14
|
-
let owned = false;
|
|
12
|
+
const release = acquireLock(path);
|
|
15
13
|
let usable = true;
|
|
16
14
|
let updating = false;
|
|
17
15
|
/** 流式预览只保留内存中的最新片段,不为每个文本增量写磁盘。 */
|
|
18
16
|
let draft;
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
if (!owned)
|
|
22
|
-
return;
|
|
23
|
-
rmSync(join(lock, owner), { force: true });
|
|
24
|
-
owned = false;
|
|
25
|
-
try {
|
|
26
|
-
rmdirSync(lock);
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
if (!(error instanceof Error &&
|
|
30
|
-
"code" in error &&
|
|
31
|
-
["ENOENT", "ENOTEMPTY"].includes(String(error.code))))
|
|
32
|
-
throw error;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
17
|
+
/** 单个发送循环正在处理的回复;交互关闭时仍需保留它的消息清理关联。 */
|
|
18
|
+
let delivering;
|
|
35
19
|
try {
|
|
36
|
-
/** mkdir 竞争唯一写入者;回收旧锁必须先确认 PID 已退出,再删除该所有权文件。 */
|
|
37
|
-
for (let attempt = 0; attempt < 3 && !owned; attempt++) {
|
|
38
|
-
try {
|
|
39
|
-
mkdirSync(lock, { mode: 0o700 });
|
|
40
|
-
writeFileSync(join(lock, owner), "", { flag: "wx", mode: 0o600 });
|
|
41
|
-
owned = true;
|
|
42
|
-
if (readdirSync(lock).length !== 1)
|
|
43
|
-
throw new Error("State lock busy. Try again.");
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
if (owned || !(error instanceof Error && "code" in error && error.code === "EEXIST"))
|
|
47
|
-
throw error;
|
|
48
|
-
try {
|
|
49
|
-
const owners = readdirSync(lock);
|
|
50
|
-
if (owners.length === 0 && Date.now() - statSync(lock).mtimeMs > 30_000) {
|
|
51
|
-
rmdirSync(lock);
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
const previous = owners.length === 1 ? owners[0] : undefined;
|
|
55
|
-
const pid = previous?.match(/^([1-9]\d*)-[0-9a-f-]+$/)?.[1];
|
|
56
|
-
if (!previous || !pid)
|
|
57
|
-
throw new Error("State lock initializing or invalid. Check for another instance.");
|
|
58
|
-
try {
|
|
59
|
-
process.kill(Number(pid), 0);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (!(error instanceof Error && "code" in error && error.code === "ESRCH"))
|
|
63
|
-
throw error;
|
|
64
|
-
/** 只有成功移除旧所有权文件的实例才能回收目录,避免竞争时删除新锁。 */
|
|
65
|
-
unlinkSync(join(lock, previous));
|
|
66
|
-
rmdirSync(lock);
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
throw new Error("Another Tellrun instance is running. Stop it first.");
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
if (!(error instanceof Error &&
|
|
73
|
-
"code" in error &&
|
|
74
|
-
["ENOENT", "ENOTEMPTY"].includes(String(error.code))))
|
|
75
|
-
throw error;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (!owned)
|
|
80
|
-
throw new Error("Cannot acquire state lock. Try again.");
|
|
81
20
|
let state;
|
|
82
21
|
try {
|
|
83
22
|
const contents = readFileSync(path, "utf8");
|
|
@@ -92,9 +31,11 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
92
31
|
catch (error) {
|
|
93
32
|
if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
|
|
94
33
|
throw error;
|
|
95
|
-
state = { channels: [], inboundUpdates: [], tasks: [], outbox: [] };
|
|
34
|
+
state = { channels: [], inboundUpdates: [], tasks: [], interactions: [], outbox: [] };
|
|
96
35
|
writeJson(path, state);
|
|
97
36
|
}
|
|
37
|
+
/** 交互撤回可能清空发送队列;实例内保持递增,避免迟到发送回执删除新消息。 */
|
|
38
|
+
let replyId = state.outbox.reduce((max, item) => Math.max(max, item.id), 0);
|
|
98
39
|
/** 一次业务操作只保存一个快照;嵌套操作合并写入,失败时回滚内存并停止后续写入。 */
|
|
99
40
|
function update(action) {
|
|
100
41
|
if (!usable)
|
|
@@ -106,6 +47,14 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
106
47
|
updating = true;
|
|
107
48
|
try {
|
|
108
49
|
const result = action();
|
|
50
|
+
/** state 只保留运行所需记录;发送中的交互及待发送编辑不能提前回收。 */
|
|
51
|
+
state.interactions = state.interactions.filter((item) => item.status !== "closed" ||
|
|
52
|
+
item.id === delivering?.interactionId ||
|
|
53
|
+
state.outbox.some((reply) => reply.interactionId === item.id));
|
|
54
|
+
const latest = new Set(state.channels.map((channel) => state.tasks.findLast((task) => task.channelId === channel.id && !activeTaskStatuses.has(task.status))?.id));
|
|
55
|
+
state.tasks = state.tasks.filter((task) => activeTaskStatuses.has(task.status) ||
|
|
56
|
+
latest.has(task.id) ||
|
|
57
|
+
state.interactions.some((item) => item.taskId === task.id));
|
|
109
58
|
try {
|
|
110
59
|
writeJson(path, state);
|
|
111
60
|
}
|
|
@@ -124,21 +73,56 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
124
73
|
}
|
|
125
74
|
}
|
|
126
75
|
/** 无回复时跳过入队;其余按 Unicode 字符拆分,和触发它的状态变更一起保存。 */
|
|
127
|
-
function enqueueReply(channelId, text) {
|
|
76
|
+
function enqueueReply(channelId, text, delivery = {}) {
|
|
128
77
|
if (text === undefined)
|
|
129
78
|
return;
|
|
130
|
-
const parts =
|
|
79
|
+
const parts = delivery.messageId
|
|
80
|
+
? [text]
|
|
81
|
+
: (text.match(/[\s\S]{1,2000}/gu) ?? ["(No text reply)"]);
|
|
131
82
|
for (const [index, part] of parts.entries()) {
|
|
132
83
|
state.outbox.push({
|
|
133
|
-
id:
|
|
84
|
+
id: ++replyId,
|
|
134
85
|
channelId,
|
|
135
86
|
text: parts.length > 1 ? `(${index + 1}/${parts.length})\n${part}` : part,
|
|
136
87
|
attempts: 0,
|
|
137
88
|
retryAt: Date.now(),
|
|
89
|
+
...delivery,
|
|
90
|
+
...(delivery.interactionId && !delivery.messageId
|
|
91
|
+
? { promptEnd: index === parts.length - 1 }
|
|
92
|
+
: {}),
|
|
138
93
|
});
|
|
139
94
|
}
|
|
140
95
|
}
|
|
141
|
-
/**
|
|
96
|
+
/** 关闭请求或单个已答问题;撤回未发送提示,已发送消息保留正文并移除按钮。 */
|
|
97
|
+
function closeInteraction(id, reason, questionIndex) {
|
|
98
|
+
const interaction = state.interactions.find((item) => item.id === id);
|
|
99
|
+
if (!interaction || interaction.status === "closed")
|
|
100
|
+
return;
|
|
101
|
+
update(() => {
|
|
102
|
+
const interaction = state.interactions.find((item) => item.id === id);
|
|
103
|
+
const task = state.tasks.find((task) => task.id === interaction?.taskId);
|
|
104
|
+
if (!interaction || !task)
|
|
105
|
+
return;
|
|
106
|
+
if (questionIndex === undefined) {
|
|
107
|
+
interaction.status = "closed";
|
|
108
|
+
interaction.resolution = reason;
|
|
109
|
+
}
|
|
110
|
+
state.outbox = state.outbox.filter((reply) => reply.interactionId !== id ||
|
|
111
|
+
(questionIndex !== undefined && reply.questionIndex !== questionIndex));
|
|
112
|
+
for (const message of interaction.messages) {
|
|
113
|
+
if (questionIndex !== undefined && message.questionIndex !== questionIndex)
|
|
114
|
+
continue;
|
|
115
|
+
enqueueReply(task.channelId, `${message.text}\n\n${reason}`, {
|
|
116
|
+
interactionId: id,
|
|
117
|
+
messageId: message.messageId,
|
|
118
|
+
...(message.questionIndex !== undefined
|
|
119
|
+
? { questionIndex: message.questionIndex }
|
|
120
|
+
: {}),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/** 终态与最终回复一起保存,成功时只发送正文;迟到事件不能覆盖已完成结果。 */
|
|
142
126
|
function finishTask(id, result) {
|
|
143
127
|
if (!state.tasks.some((task) => task.id === id && activeTaskStatuses.has(task.status)))
|
|
144
128
|
return;
|
|
@@ -147,17 +131,20 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
147
131
|
if (!task)
|
|
148
132
|
throw new Error("Task not found.");
|
|
149
133
|
Object.assign(task, { status: result.status, result: result.text });
|
|
134
|
+
for (const interaction of state.interactions.filter((item) => item.taskId === id))
|
|
135
|
+
closeInteraction(interaction.id, "Task ended. Request closed.");
|
|
150
136
|
if (result.status === "interrupted") {
|
|
151
137
|
const channel = state.channels.find((channel) => channel.id === task.channelId);
|
|
152
138
|
if (channel)
|
|
153
139
|
channel.paused = true;
|
|
154
140
|
}
|
|
155
|
-
enqueueReply(task.channelId,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
141
|
+
enqueueReply(task.channelId, result.status === "completed"
|
|
142
|
+
? result.text
|
|
143
|
+
: `Task #${id} ${{
|
|
144
|
+
failed: "Failed",
|
|
145
|
+
cancelled: "Stopped",
|
|
146
|
+
interrupted: "Unconfirmed",
|
|
147
|
+
}[result.status]}\n${result.text}`);
|
|
161
148
|
for (const [index, input] of task.inputs.entries()) {
|
|
162
149
|
if (input.status !== "pending" && input.status !== "sending")
|
|
163
150
|
continue;
|
|
@@ -168,6 +155,20 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
168
155
|
if (draft?.taskId === id)
|
|
169
156
|
draft = undefined;
|
|
170
157
|
}
|
|
158
|
+
/** 命令与交互按钮共用停止逻辑;先使交互失效,再由核心层请求中断。 */
|
|
159
|
+
function cancelTask(id) {
|
|
160
|
+
if (state.tasks.find((task) => task.id === id)?.status === "queued") {
|
|
161
|
+
finishTask(id, { status: "cancelled", text: "Cancelled before starting." });
|
|
162
|
+
}
|
|
163
|
+
else
|
|
164
|
+
update(() => {
|
|
165
|
+
const task = state.tasks.find((task) => task.id === id && activeTaskStatuses.has(task.status));
|
|
166
|
+
if (task)
|
|
167
|
+
task.status = "cancelling";
|
|
168
|
+
for (const interaction of state.interactions.filter((item) => item.taskId === id))
|
|
169
|
+
closeInteraction(interaction.id, "Stopping. Request closed.");
|
|
170
|
+
});
|
|
171
|
+
}
|
|
171
172
|
return {
|
|
172
173
|
/** 去重标识、任务和必要回复合并保存,成功返回后才能确认入站事件。 */
|
|
173
174
|
accept(message, handle) {
|
|
@@ -176,8 +177,8 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
176
177
|
channel.chatId === message.channel.chatId);
|
|
177
178
|
if (existing &&
|
|
178
179
|
state.inboundUpdates.some((item) => item.channelId === existing.id && item.eventId === message.eventId))
|
|
179
|
-
return;
|
|
180
|
-
update(() => {
|
|
180
|
+
return message.content.type === "interaction" ? "Already handled." : undefined;
|
|
181
|
+
return update(() => {
|
|
181
182
|
let channel = state.channels.find((channel) => channel.id === existing?.id);
|
|
182
183
|
if (!channel) {
|
|
183
184
|
channel = {
|
|
@@ -194,8 +195,24 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
194
195
|
channelId: channel.id,
|
|
195
196
|
eventId: message.eventId,
|
|
196
197
|
});
|
|
197
|
-
|
|
198
|
+
const reply = handle(channel);
|
|
199
|
+
if (message.content.type !== "interaction")
|
|
200
|
+
enqueueReply(channel.id, reply);
|
|
201
|
+
return reply;
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
/** 成功拉取后才能回收已确认更新;空响应也说明服务端已无可重投记录。 */
|
|
205
|
+
confirmUpdates(accountId, offset, empty) {
|
|
206
|
+
const pending = state.inboundUpdates.filter((item) => {
|
|
207
|
+
const channel = state.channels.find((channel) => channel.id === item.channelId);
|
|
208
|
+
return (channel?.platform !== "telegram" ||
|
|
209
|
+
channel.accountId !== accountId ||
|
|
210
|
+
(!empty && !(Number(item.eventId) < offset)));
|
|
198
211
|
});
|
|
212
|
+
if (pending.length !== state.inboundUpdates.length)
|
|
213
|
+
update(() => {
|
|
214
|
+
state.inboundUpdates = pending;
|
|
215
|
+
});
|
|
199
216
|
},
|
|
200
217
|
/** 新会话或目录变化只影响后续任务,已保存任务仍使用自己的快照。 */
|
|
201
218
|
setSession(channelId, cwd) {
|
|
@@ -215,7 +232,13 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
215
232
|
},
|
|
216
233
|
/** 返回快照,避免调用方直接修改内存中的持久状态。 */
|
|
217
234
|
activeTask() {
|
|
218
|
-
|
|
235
|
+
const task = state.tasks.find((task) => activeTaskStatuses.has(task.status));
|
|
236
|
+
return task
|
|
237
|
+
? structuredClone({
|
|
238
|
+
...task,
|
|
239
|
+
interactions: state.interactions.filter((item) => item.taskId === task.id && item.status !== "closed"),
|
|
240
|
+
})
|
|
241
|
+
: undefined;
|
|
219
242
|
},
|
|
220
243
|
/** 限制预览为末尾 2000 个 Unicode 字符,完整结果仍由最终回复保存。 */
|
|
221
244
|
setDraft(id, text) {
|
|
@@ -226,6 +249,8 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
226
249
|
pendingDraft(accountId, userId) {
|
|
227
250
|
if (!draft?.text.trim())
|
|
228
251
|
return;
|
|
252
|
+
if (state.interactions.some((item) => item.taskId === draft?.taskId && item.blocking && item.status !== "closed"))
|
|
253
|
+
return;
|
|
229
254
|
const task = state.tasks.find((task) => task.id === draft?.taskId && task.status === "running");
|
|
230
255
|
const channel = state.channels.find((channel) => channel.id === task?.channelId);
|
|
231
256
|
if (channel?.platform === "telegram" &&
|
|
@@ -235,7 +260,7 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
235
260
|
},
|
|
236
261
|
/** 最近结果按聊天隔离,供 /last 再次查看。 */
|
|
237
262
|
lastTask(channelId) {
|
|
238
|
-
return structuredClone(state.tasks.findLast((task) => task.channelId === channelId));
|
|
263
|
+
return structuredClone(state.tasks.findLast((task) => task.channelId === channelId && !activeTaskStatuses.has(task.status)) ?? state.tasks.findLast((task) => task.channelId === channelId));
|
|
239
264
|
},
|
|
240
265
|
/** 接收时固定目录、会话与输入,限制全局只有一个未结束任务。 */
|
|
241
266
|
createTask(channel, prompt) {
|
|
@@ -334,19 +359,130 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
334
359
|
task.status = "running";
|
|
335
360
|
});
|
|
336
361
|
},
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
362
|
+
cancelTask,
|
|
363
|
+
finishTask,
|
|
364
|
+
/** 交互展示与任务关联一起保存;多题分别发送,任意一段都能明确回复。 */
|
|
365
|
+
addInteraction(taskId, request) {
|
|
366
|
+
update(() => {
|
|
367
|
+
const task = state.tasks.find((task) => task.id === taskId && task.status === "running");
|
|
368
|
+
if (!task || state.interactions.some((item) => item.id === request.id))
|
|
369
|
+
return;
|
|
370
|
+
state.interactions.push({
|
|
371
|
+
...request,
|
|
372
|
+
taskId,
|
|
373
|
+
questions: request.questions.map((question) => ({ ...question, answer: null })),
|
|
374
|
+
decision: null,
|
|
375
|
+
status: "pending",
|
|
376
|
+
resolution: null,
|
|
377
|
+
messages: [],
|
|
378
|
+
});
|
|
379
|
+
if (request.kind === "approval") {
|
|
380
|
+
enqueueReply(task.channelId, `Task #${taskId} · Approval\n${request.text}\n\nChoose below.`, { interactionId: request.id });
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
for (const [index, question] of request.questions.entries())
|
|
384
|
+
enqueueReply(task.channelId, `Task #${taskId} · Question ${index + 1}/${request.questions.length}\n${question.header}\n${question.question}${question.options.map((option, i) => `\n\n${i + 1}. ${option.label}\n${option.description}`).join("")}\n\n${question.allowText ? "Pick an option or reply to this message." : "Pick an option or reply with its number or label."}\nAnswer all questions to submit.`, { interactionId: request.id, questionIndex: index });
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
},
|
|
388
|
+
/** 与入站去重同一事务领取选择;不把普通消息或旧问题回复误作当前任务输入。 */
|
|
389
|
+
answerInteraction(channelId, content) {
|
|
390
|
+
const interaction = state.interactions.find((item) => content.type === "interaction"
|
|
391
|
+
? item.id === content.id
|
|
392
|
+
: item.messages.some((message) => message.messageId === content.replyToMessageId) &&
|
|
393
|
+
state.tasks.some((task) => task.id === item.taskId && task.channelId === channelId));
|
|
394
|
+
if (!interaction)
|
|
395
|
+
return content.type === "interaction"
|
|
396
|
+
? "Request expired."
|
|
397
|
+
: content.replyToMessageId !== undefined
|
|
398
|
+
? "Send a new message to continue."
|
|
399
|
+
: undefined;
|
|
400
|
+
const task = state.tasks.find((task) => task.id === interaction.taskId && task.channelId === channelId);
|
|
401
|
+
const message = interaction.messages.find((item) => item.messageId ===
|
|
402
|
+
(content.type === "interaction" ? content.messageId : content.replyToMessageId));
|
|
403
|
+
if (task?.status !== "running" ||
|
|
404
|
+
!message ||
|
|
405
|
+
interaction.status !== "pending" ||
|
|
406
|
+
interaction.expiresAt <= Date.now())
|
|
407
|
+
return "Request closed. Check /status.";
|
|
408
|
+
if (content.type === "interaction" && content.action === "stop") {
|
|
409
|
+
update(() => {
|
|
410
|
+
const channel = state.channels.find((channel) => channel.id === channelId);
|
|
411
|
+
if (channel)
|
|
412
|
+
channel.paused = true;
|
|
413
|
+
cancelTask(task.id);
|
|
414
|
+
});
|
|
415
|
+
return "Stopping. Wait for the result.";
|
|
341
416
|
}
|
|
342
|
-
|
|
417
|
+
if (interaction.kind === "approval") {
|
|
418
|
+
if (content.type !== "interaction" ||
|
|
419
|
+
(content.action !== "accept" && content.action !== "decline") ||
|
|
420
|
+
!interaction.choices.includes(content.action))
|
|
421
|
+
return "Use the approval buttons.";
|
|
343
422
|
update(() => {
|
|
344
|
-
const
|
|
345
|
-
if (
|
|
346
|
-
|
|
423
|
+
const current = state.interactions.find((item) => item.id === interaction.id);
|
|
424
|
+
if (!current)
|
|
425
|
+
return;
|
|
426
|
+
current.decision = content.action;
|
|
427
|
+
current.status = "ready";
|
|
347
428
|
});
|
|
429
|
+
return "Saved. Submitting...";
|
|
430
|
+
}
|
|
431
|
+
const question = message.questionIndex === undefined
|
|
432
|
+
? undefined
|
|
433
|
+
: interaction.questions[message.questionIndex];
|
|
434
|
+
if (!question || question.answer !== null)
|
|
435
|
+
return "Question closed.";
|
|
436
|
+
let answer;
|
|
437
|
+
if (content.type === "interaction") {
|
|
438
|
+
if (content.action !== "option" ||
|
|
439
|
+
content.questionIndex !== message.questionIndex ||
|
|
440
|
+
content.optionIndex === undefined)
|
|
441
|
+
return "Invalid option.";
|
|
442
|
+
answer = question.options[content.optionIndex]?.label;
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
answer = content.text.trim();
|
|
446
|
+
answer =
|
|
447
|
+
question.options.find((option, index) => String(index + 1) === answer || option.label === answer)?.label ?? (question.allowText ? answer : undefined);
|
|
448
|
+
}
|
|
449
|
+
if (!answer)
|
|
450
|
+
return "Invalid answer. Try again.";
|
|
451
|
+
update(() => {
|
|
452
|
+
const current = state.interactions.find((item) => item.id === interaction.id);
|
|
453
|
+
const question = current?.questions[message.questionIndex ?? -1];
|
|
454
|
+
if (!current || !question)
|
|
455
|
+
return;
|
|
456
|
+
question.answer = answer;
|
|
457
|
+
closeInteraction(interaction.id, "Answer saved.", message.questionIndex);
|
|
458
|
+
if (current.questions.every((question) => question.answer !== null))
|
|
459
|
+
current.status = "ready";
|
|
460
|
+
});
|
|
461
|
+
return "Answer saved.";
|
|
348
462
|
},
|
|
349
|
-
|
|
463
|
+
/** 提交前持久化 sending;重启不会重放已经领取的批准或答案。 */
|
|
464
|
+
claimInteraction(taskId) {
|
|
465
|
+
const interaction = state.interactions.find((item) => item.taskId === taskId && item.status === "ready" && item.expiresAt > Date.now());
|
|
466
|
+
if (!interaction ||
|
|
467
|
+
!state.tasks.some((task) => task.id === taskId && task.status === "running"))
|
|
468
|
+
return;
|
|
469
|
+
return update(() => {
|
|
470
|
+
const current = state.interactions.find((item) => item.id === interaction.id);
|
|
471
|
+
if (!current)
|
|
472
|
+
return;
|
|
473
|
+
current.status = "sending";
|
|
474
|
+
const answer = current.kind === "approval" && current.decision
|
|
475
|
+
? { decision: current.decision }
|
|
476
|
+
: {
|
|
477
|
+
answers: Object.fromEntries(current.questions.map((question) => [
|
|
478
|
+
question.id,
|
|
479
|
+
{ answers: [question.answer ?? ""] },
|
|
480
|
+
])),
|
|
481
|
+
};
|
|
482
|
+
return { id: current.id, answer };
|
|
483
|
+
});
|
|
484
|
+
},
|
|
485
|
+
closeInteraction,
|
|
350
486
|
/** 结果不确定的任务暂停并通知用户,不自动重新派发。 */
|
|
351
487
|
recoverTasks() {
|
|
352
488
|
for (const task of state.tasks.filter((task) => activeTaskStatuses.has(task.status) && task.status !== "queued")) {
|
|
@@ -355,29 +491,73 @@ export function openStore(path = join(appDirectory, "state.json")) {
|
|
|
355
491
|
text: "Service restarted; task result unknown. Check the project, then /resume and send a new task.",
|
|
356
492
|
});
|
|
357
493
|
}
|
|
494
|
+
for (const interaction of state.interactions)
|
|
495
|
+
closeInteraction(interaction.id, "Service restarted. Request closed.");
|
|
358
496
|
},
|
|
359
|
-
/**
|
|
360
|
-
|
|
497
|
+
/** 按机器人与授权用户领取最早回复,内存关联保留到发送成功或失败。 */
|
|
498
|
+
claimReply(accountId, userId) {
|
|
499
|
+
if (delivering)
|
|
500
|
+
return;
|
|
361
501
|
for (const reply of state.outbox) {
|
|
502
|
+
const interaction = state.interactions.find((item) => item.id === reply.interactionId);
|
|
503
|
+
if (reply.interactionId &&
|
|
504
|
+
!reply.messageId &&
|
|
505
|
+
(interaction?.status !== "pending" ||
|
|
506
|
+
interaction.expiresAt <= Date.now() ||
|
|
507
|
+
(reply.questionIndex !== undefined &&
|
|
508
|
+
interaction.questions[reply.questionIndex]?.answer !== null)))
|
|
509
|
+
continue;
|
|
362
510
|
const channel = state.channels.find((channel) => channel.id === reply.channelId);
|
|
363
511
|
if (channel?.platform === "telegram" &&
|
|
364
512
|
channel.accountId === accountId &&
|
|
365
513
|
channel.userId === userId) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
514
|
+
if (reply.retryAt > Date.now())
|
|
515
|
+
return;
|
|
516
|
+
delivering = structuredClone(reply);
|
|
517
|
+
return structuredClone({
|
|
518
|
+
...reply,
|
|
519
|
+
chatId: channel.chatId,
|
|
520
|
+
interaction,
|
|
521
|
+
});
|
|
369
522
|
}
|
|
370
523
|
}
|
|
371
524
|
},
|
|
372
|
-
/**
|
|
373
|
-
removeReply(id) {
|
|
525
|
+
/** 发送成功或永久拒绝后移出队列;/last 只保留每个聊天的最近结果。 */
|
|
526
|
+
removeReply(id, delivery) {
|
|
374
527
|
update(() => {
|
|
528
|
+
if (delivering?.id === id)
|
|
529
|
+
delivering = undefined;
|
|
375
530
|
state.outbox = state.outbox.filter((reply) => reply.id !== id);
|
|
531
|
+
const interaction = state.interactions.find((item) => item.id === delivery?.interactionId);
|
|
532
|
+
const task = state.tasks.find((task) => task.id === interaction?.taskId);
|
|
533
|
+
if (interaction && task && delivery) {
|
|
534
|
+
interaction.messages.push({
|
|
535
|
+
messageId: delivery.messageId,
|
|
536
|
+
text: delivery.text,
|
|
537
|
+
...(delivery.questionIndex !== undefined
|
|
538
|
+
? { questionIndex: delivery.questionIndex }
|
|
539
|
+
: {}),
|
|
540
|
+
});
|
|
541
|
+
/** 发送途中请求可能已关闭或该问题已回答;迟到的消息也必须移除按钮。 */
|
|
542
|
+
if (interaction.status !== "pending" ||
|
|
543
|
+
interaction.expiresAt <= Date.now() ||
|
|
544
|
+
(delivery.questionIndex !== undefined &&
|
|
545
|
+
interaction.questions[delivery.questionIndex]?.answer !== null))
|
|
546
|
+
enqueueReply(task.channelId, `${delivery.text}\n\n${interaction.resolution ?? "Request closed."}`, {
|
|
547
|
+
interactionId: interaction.id,
|
|
548
|
+
messageId: delivery.messageId,
|
|
549
|
+
...(delivery.questionIndex !== undefined
|
|
550
|
+
? { questionIndex: delivery.questionIndex }
|
|
551
|
+
: {}),
|
|
552
|
+
});
|
|
553
|
+
}
|
|
376
554
|
});
|
|
377
555
|
},
|
|
378
556
|
/** 发送失败只更新回复的重试信息,不影响任务执行状态。 */
|
|
379
557
|
retryReply(id, seconds) {
|
|
380
558
|
update(() => {
|
|
559
|
+
if (delivering?.id === id)
|
|
560
|
+
delivering = undefined;
|
|
381
561
|
const reply = state.outbox.find((reply) => reply.id === id);
|
|
382
562
|
if (reply)
|
|
383
563
|
Object.assign(reply, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/storage/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1E,2CAA2C;AAC3C,MAAM,UAAU,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,YAAY;QAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC;IAC/C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,mCAAmC;IACnC,IAAI,KAAmD,CAAC;IAExD,uCAAuC;IACvC,SAAS,OAAO;QACd,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,KAAK,GAAG,KAAK,CAAC;QACd,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,CAAC,CACC,KAAK,YAAY,KAAK;gBACtB,MAAM,IAAI,KAAK;gBACf,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACrD;gBAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,iDAAiD;QACjD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClE,KAAK,GAAG,IAAI,CAAC;gBACb,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACrF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;oBAClF,MAAM,KAAK,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;wBACxE,SAAS,CAAC,IAAI,CAAC,CAAC;wBAChB,SAAS;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC7D,MAAM,GAAG,GAAG,QAAQ,EAAE,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC5D,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG;wBACnB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;oBACrF,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;4BAAE,MAAM,KAAK,CAAC;wBACxF,uCAAuC;wBACvC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;wBACjC,SAAS,CAAC,IAAI,CAAC,CAAC;wBAChB,SAAS;oBACX,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACzE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IACE,CAAC,CACC,KAAK,YAAY,KAAK;wBACtB,MAAM,IAAI,KAAK;wBACf,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACrD;wBAED,MAAM,KAAK,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAErE,IAAI,KAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC;gBACH,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF,CAAC;YACD,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAAE,MAAM,KAAK,CAAC;YACzF,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACpE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,6CAA6C;QAC7C,SAAS,MAAM,CAAI,MAAe;YAChC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAChF,IAAI,QAAQ;gBAAE,OAAO,MAAM,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC;YACvB,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/B,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,GAAG,KAAK,CAAC;oBACf,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,sDAAsD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EACnF,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC/B,CAAC;gBACJ,CAAC;gBACD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,SAAS,YAAY,CAAC,SAAiB,EAAE,IAAwB;YAC/D,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACpE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;oBACrE,SAAS;oBACT,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;oBACzE,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,SAAS,UAAU,CAAC,EAAU,EAAE,MAAmB;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpF,OAAO;YACT,MAAM,CAAC,GAAG,EAAE;gBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpE,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChF,IAAI,OAAO;wBAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrC,CAAC;gBACD,YAAY,CACV,IAAI,CAAC,SAAS,EACd,SAAS,EAAE,IACT;oBACE,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,SAAS;oBACpB,WAAW,EAAE,aAAa;iBAC3B,CAAC,MAAM,CAAC,MAAM,CACjB,KAAK,MAAM,CAAC,IAAI,EAAE,CACnB,CAAC;gBACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBACnD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;wBAAE,SAAS;oBACvE,YAAY,CACV,IAAI,CAAC,SAAS,EACd,SAAS,EAAE,aAAa,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,gEAAgE,CACvK,CAAC;oBACF,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,EAAE;gBAAE,KAAK,GAAG,SAAS,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,sCAAsC;YACtC,MAAM,CACJ,OAAwB,EACxB,MAAkE;gBAElE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ;oBAC7C,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;oBAC/C,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC;gBACF,IACE,QAAQ;oBACR,KAAK,CAAC,cAAc,CAAC,IAAI,CACvB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAC7E;oBAED,OAAO;gBACT,MAAM,CAAC,GAAG,EAAE;oBACV,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG;4BACR,GAAG,OAAO,CAAC,OAAO;4BAClB,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;4BACvE,GAAG,EAAE,IAAI;4BACT,SAAS,EAAE,IAAI;4BACf,MAAM,EAAE,KAAK;yBACd,CAAC;wBACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;oBACxC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;wBACxB,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAC;oBACH,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,qCAAqC;YACrC,UAAU,CAAC,SAAiB,EAAE,GAAkB;gBAC9C,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;oBAC3E,IAAI,OAAO;wBAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;YACD,4BAA4B;YAC5B,SAAS,CAAC,SAAiB,EAAE,MAAe;gBAC1C,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;oBAC3E,IAAI,OAAO;wBAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvC,CAAC,CAAC,CAAC;YACL,CAAC;YACD,8BAA8B;YAC9B,UAAU;gBACR,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC;YACD,8CAA8C;YAC9C,QAAQ,CAAC,EAAU,EAAE,IAAY;gBAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;oBACzE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClE,CAAC;YACD,oCAAoC;YACpC,YAAY,CAAC,SAAiB,EAAE,MAAc;gBAC5C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE;oBAAE,OAAO;gBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAC3B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CACjE,CAAC;gBACF,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjF,IACE,OAAO,EAAE,QAAQ,KAAK,UAAU;oBAChC,OAAO,CAAC,SAAS,KAAK,SAAS;oBAC/B,OAAO,CAAC,MAAM,KAAK,MAAM;oBAEzB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAChD,CAAC;YACD,8BAA8B;YAC9B,QAAQ,CAAC,SAAiB;gBACxB,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,mCAAmC;YACnC,UAAU,CAAC,OAAkC,EAAE,MAAc;gBAC3D,OAAO,MAAM,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,OAAO,CAAC,GAAG;wBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBACpE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAChD,MAAM,IAAI,GAA2B;wBACnC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;wBACpE,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM;wBACN,MAAM,EAAE,EAAE;wBACV,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,IAAI;qBACb,CAAC;oBACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;YACD,uCAAuC;YACvC,eAAe,CAAC,EAAU,EAAE,IAAY;gBACtC,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;wBACtE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBACpD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;wBAAE,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,EAAE,CAAC;;wBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC;YACD,8CAA8C;YAC9C,cAAc,CAAC,EAAU;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBACrF,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;oBAAE,OAAO;gBAC/B,OAAO,MAAM,CAAC,GAAG,EAAE;oBACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxE,IAAI,CAAC,KAAK;wBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;oBAChD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;oBACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;YACD,iCAAiC;YACjC,eAAe,CAAC,EAAU,EAAE,KAAa,EAAE,KAAc;gBACvD,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxD,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS;wBAAE,OAAO;oBACjD,KAAK,CAAC,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3D,IAAI,KAAK,KAAK,SAAS;wBACrB,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;YACL,CAAC;YACD,sCAAsC;YACtC,SAAS,CAAC,MAAkE;gBAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjF,IACE,CAAC,IAAI;oBACL,CAAC,OAAO;oBACR,OAAO,CAAC,MAAM;oBACd,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;oBACpC,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;oBACtC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;oBAEhC,OAAO;gBACT,OAAO,MAAM,CAAC,GAAG,EAAE;oBACjB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,aAAsB,EAAE,CAAC;oBAC5D,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;oBAC7B,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC;YACD,+BAA+B;YAC/B,aAAa,CAAC,EAAU,EAAE,SAAiB;gBACzC,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAC3B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAChE,CAAC;oBACF,IAAI,CAAC,IAAI;wBAAE,OAAO;oBAClB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChF,IAAI,OAAO;wBAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,2BAA2B;YAC3B,WAAW,CAAC,EAAU;gBACpB,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxD,IAAI,IAAI,EAAE,MAAM,KAAK,aAAa;wBAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9D,CAAC,CAAC,CAAC;YACL,CAAC;YACD,iCAAiC;YACjC,UAAU,CAAC,EAAU;gBACnB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACpE,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBAC9E,CAAC;;oBACC,MAAM,CAAC,GAAG,EAAE;wBACV,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAC3B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAChE,CAAC;wBACF,IAAI,IAAI;4BAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;oBACvC,CAAC,CAAC,CAAC;YACP,CAAC;YACD,UAAU;YACV,+BAA+B;YAC/B,YAAY;gBACV,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CACnC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAC1E,EAAE,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;wBAClB,MAAM,EAAE,aAAa;wBACrB,IAAI,EAAE,8FAA8F;qBACrG,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,+BAA+B;YAC/B,YAAY,CAAC,SAAiB,EAAE,MAAc;gBAC5C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;oBACjF,IACE,OAAO,EAAE,QAAQ,KAAK,UAAU;wBAChC,OAAO,CAAC,SAAS,KAAK,SAAS;wBAC/B,OAAO,CAAC,MAAM,KAAK,MAAM,EACzB,CAAC;wBACD,OAAO,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;4BAChC,CAAC,CAAC,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;4BACvD,CAAC,CAAC,SAAS,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,gCAAgC;YAChC,WAAW,CAAC,EAAU;gBACpB,MAAM,CAAC,GAAG,EAAE;oBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACL,CAAC;YACD,gCAAgC;YAChC,UAAU,CAAC,EAAU,EAAE,OAAe;gBACpC,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC5D,IAAI,KAAK;wBACP,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;4BACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC;4BAC5B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI;yBACrC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACL,CAAC;YACD,0BAA0B;YAC1B,KAAK;gBACH,MAAM,GAAG,KAAK,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/storage/store.ts"],"names":[],"mappings":"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"}
|
package/dist/systemd.js
CHANGED
|
@@ -27,13 +27,7 @@ async function systemctl(...args) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
/** CLI 与配置向导共用后台生命周期;不加载运行状态或 Telegram 业务入口。 */
|
|
30
|
-
export async function
|
|
31
|
-
if (action === "status") {
|
|
32
|
-
console.log(`Config: ${join(appDirectory, "config.json")}\nState: ${join(appDirectory, "state.json")}`);
|
|
33
|
-
}
|
|
34
|
-
if (process.platform !== "linux") {
|
|
35
|
-
throw new Error("Background mode requires Linux systemd. Use tellrun run instead.");
|
|
36
|
-
}
|
|
30
|
+
export async function manageSystemdService(action, options) {
|
|
37
31
|
if (action === "logs") {
|
|
38
32
|
await new Promise((resolve, reject) => {
|
|
39
33
|
const child = spawn("journalctl", [
|