agim-cli 1.1.11 → 1.2.1
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/CHANGELOG.md +169 -0
- package/dist/cli.js +78 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/approval-bus.d.ts +18 -0
- package/dist/core/approval-bus.d.ts.map +1 -1
- package/dist/core/approval-bus.js +111 -0
- package/dist/core/approval-bus.js.map +1 -1
- package/dist/core/approval-router.d.ts.map +1 -1
- package/dist/core/approval-router.js +12 -0
- package/dist/core/approval-router.js.map +1 -1
- package/dist/core/audit-log.d.ts +39 -0
- package/dist/core/audit-log.d.ts.map +1 -1
- package/dist/core/audit-log.js +124 -0
- package/dist/core/audit-log.js.map +1 -1
- package/dist/core/boot-state.d.ts +17 -0
- package/dist/core/boot-state.d.ts.map +1 -0
- package/dist/core/boot-state.js +77 -0
- package/dist/core/boot-state.js.map +1 -0
- package/dist/core/job-recovery.d.ts +41 -1
- package/dist/core/job-recovery.d.ts.map +1 -1
- package/dist/core/job-recovery.js +216 -4
- package/dist/core/job-recovery.js.map +1 -1
- package/dist/core/memory-consolidate.d.ts +12 -0
- package/dist/core/memory-consolidate.d.ts.map +1 -0
- package/dist/core/memory-consolidate.js +242 -0
- package/dist/core/memory-consolidate.js.map +1 -0
- package/dist/core/memory-distill.d.ts +30 -0
- package/dist/core/memory-distill.d.ts.map +1 -0
- package/dist/core/memory-distill.js +213 -0
- package/dist/core/memory-distill.js.map +1 -0
- package/dist/core/memory-rpc.d.ts +11 -0
- package/dist/core/memory-rpc.d.ts.map +1 -0
- package/dist/core/memory-rpc.js +94 -0
- package/dist/core/memory-rpc.js.map +1 -0
- package/dist/core/memory-vector.d.ts +47 -0
- package/dist/core/memory-vector.d.ts.map +1 -0
- package/dist/core/memory-vector.js +386 -0
- package/dist/core/memory-vector.js.map +1 -0
- package/dist/core/memory.d.ts +140 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +714 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/persona.d.ts +24 -0
- package/dist/core/persona.d.ts.map +1 -0
- package/dist/core/persona.js +80 -0
- package/dist/core/persona.js.map +1 -0
- package/dist/core/push-rpc.d.ts +26 -0
- package/dist/core/push-rpc.d.ts.map +1 -0
- package/dist/core/push-rpc.js +123 -0
- package/dist/core/push-rpc.js.map +1 -0
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +26 -1
- package/dist/core/router.js.map +1 -1
- package/dist/core/types.d.ts +41 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/index.d.ts +9 -0
- package/dist/plugins/agents/claude-code/index.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/index.js +37 -0
- package/dist/plugins/agents/claude-code/index.js.map +1 -1
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +8 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/mcp-approval-server.js +181 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts +5 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.js +85 -0
- package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -1
- package/dist/web/public/settings.html +106 -10
- package/dist/web/public/tasks.html +992 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +433 -6
- package/dist/web/server.js.map +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/core/audit-log.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/core/audit-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type BootPhase = 'starting' | 'web_ready' | 'messengers_loading' | 'ready';
|
|
2
|
+
export declare function getBootPhase(): BootPhase;
|
|
3
|
+
export declare function getBootInfo(): {
|
|
4
|
+
phase: BootPhase;
|
|
5
|
+
startedAt: number;
|
|
6
|
+
msSinceStart: number;
|
|
7
|
+
phaseTimings: Partial<Record<BootPhase, number>>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Advance to `phase`. Idempotent — re-setting the current phase is a
|
|
11
|
+
* no-op. Going backward (e.g. setting 'starting' after 'ready') is
|
|
12
|
+
* also a no-op + warn (would only happen on programmer error).
|
|
13
|
+
*/
|
|
14
|
+
export declare function setBootPhase(phase: BootPhase): void;
|
|
15
|
+
/** Test helper — reset to 'starting'. */
|
|
16
|
+
export declare function _resetBootStateForTests(): void;
|
|
17
|
+
//# sourceMappingURL=boot-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-state.d.ts","sourceRoot":"","sources":["../../src/core/boot-state.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,oBAAoB,GAAG,OAAO,CAAA;AAQjF,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,wBAAgB,WAAW,IAAI;IAC7B,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;CACjD,CAQA;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CA0BnD;AAED,yCAAyC;AACzC,wBAAgB,uBAAuB,IAAI,IAAI,CAO9C"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// boot-state — module-level tracker for "where are we in startup?".
|
|
2
|
+
//
|
|
3
|
+
// /api/service/status returns the phase so the web console's restart
|
|
4
|
+
// polling can wait for `ready` (everything wired) instead of just
|
|
5
|
+
// `web_ready` (HTTP server bound, but messengers / a2a not yet up).
|
|
6
|
+
//
|
|
7
|
+
// Phases progress strictly forward; never roll back:
|
|
8
|
+
//
|
|
9
|
+
// starting — process started, before any subsystem is up
|
|
10
|
+
// web_ready — HTTP server bound to port (browser can connect)
|
|
11
|
+
// messengers_loading — adapters registered, .start() in flight
|
|
12
|
+
// ready — every adapter resolved .start(); processRestartPending
|
|
13
|
+
// done; ok to send / receive IM messages
|
|
14
|
+
//
|
|
15
|
+
// On graceful shutdown we don't roll back; the process exits before
|
|
16
|
+
// anyone cares to read.
|
|
17
|
+
import { logger as rootLogger } from './logger.js';
|
|
18
|
+
const log = rootLogger.child({ component: 'boot-state' });
|
|
19
|
+
const ORDER = ['starting', 'web_ready', 'messengers_loading', 'ready'];
|
|
20
|
+
let currentPhase = 'starting';
|
|
21
|
+
const phaseStarts = { starting: Date.now() };
|
|
22
|
+
const phaseDurations = {};
|
|
23
|
+
export function getBootPhase() {
|
|
24
|
+
return currentPhase;
|
|
25
|
+
}
|
|
26
|
+
export function getBootInfo() {
|
|
27
|
+
const startedAt = phaseStarts.starting ?? Date.now();
|
|
28
|
+
return {
|
|
29
|
+
phase: currentPhase,
|
|
30
|
+
startedAt,
|
|
31
|
+
msSinceStart: Date.now() - startedAt,
|
|
32
|
+
phaseTimings: { ...phaseDurations },
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Advance to `phase`. Idempotent — re-setting the current phase is a
|
|
37
|
+
* no-op. Going backward (e.g. setting 'starting' after 'ready') is
|
|
38
|
+
* also a no-op + warn (would only happen on programmer error).
|
|
39
|
+
*/
|
|
40
|
+
export function setBootPhase(phase) {
|
|
41
|
+
const cur = ORDER.indexOf(currentPhase);
|
|
42
|
+
const next = ORDER.indexOf(phase);
|
|
43
|
+
if (next < 0) {
|
|
44
|
+
log.warn({ event: 'boot.invalid_phase', phase });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (next === cur)
|
|
48
|
+
return;
|
|
49
|
+
if (next < cur) {
|
|
50
|
+
log.warn({ event: 'boot.backward_phase', from: currentPhase, to: phase });
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Record duration of the phase we're leaving (from its start, if known).
|
|
54
|
+
const now = Date.now();
|
|
55
|
+
const startOfLeaving = phaseStarts[currentPhase];
|
|
56
|
+
if (typeof startOfLeaving === 'number') {
|
|
57
|
+
phaseDurations[currentPhase] = now - startOfLeaving;
|
|
58
|
+
}
|
|
59
|
+
log.info({
|
|
60
|
+
event: 'boot.phase',
|
|
61
|
+
from: currentPhase,
|
|
62
|
+
to: phase,
|
|
63
|
+
leavingDurationMs: phaseDurations[currentPhase] ?? null,
|
|
64
|
+
});
|
|
65
|
+
currentPhase = phase;
|
|
66
|
+
phaseStarts[phase] = now;
|
|
67
|
+
}
|
|
68
|
+
/** Test helper — reset to 'starting'. */
|
|
69
|
+
export function _resetBootStateForTests() {
|
|
70
|
+
currentPhase = 'starting';
|
|
71
|
+
for (const k of ORDER) {
|
|
72
|
+
delete phaseStarts[k];
|
|
73
|
+
delete phaseDurations[k];
|
|
74
|
+
}
|
|
75
|
+
phaseStarts.starting = Date.now();
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=boot-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-state.js","sourceRoot":"","sources":["../../src/core/boot-state.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,EAAE;AACF,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,wEAAwE;AACxE,iEAAiE;AACjE,+EAA+E;AAC/E,+DAA+D;AAC/D,EAAE;AACF,oEAAoE;AACpE,wBAAwB;AAExB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;AAIzD,MAAM,KAAK,GAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAEnF,IAAI,YAAY,GAAc,UAAU,CAAA;AACxC,MAAM,WAAW,GAAuC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;AAChF,MAAM,cAAc,GAAuC,EAAE,CAAA;AAE7D,MAAM,UAAU,YAAY;IAC1B,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,WAAW;IAMzB,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACpD,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QACpC,YAAY,EAAE,EAAE,GAAG,cAAc,EAAE;KACpC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAM;IACxB,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACzE,OAAM;IACR,CAAC;IACD,yEAAyE;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;IAChD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,cAAc,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,cAAc,CAAA;IACrD,CAAC;IACD,GAAG,CAAC,IAAI,CAAC;QACP,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,KAAK;QACT,iBAAiB,EAAE,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI;KACxD,CAAC,CAAA;IACF,YAAY,GAAG,KAAK,CAAA;IACpB,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;AAC1B,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,uBAAuB;IACrC,YAAY,GAAG,UAAU,CAAA;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;QACrB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IACD,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACnC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ButtonCallback } from './types.js';
|
|
1
2
|
interface PendingRetry {
|
|
2
3
|
jobId: number;
|
|
3
4
|
agent: string;
|
|
@@ -9,7 +10,30 @@ interface PendingRetry {
|
|
|
9
10
|
creatorId: string;
|
|
10
11
|
/** ms-epoch when the entry expires (interrupted_at + window). */
|
|
11
12
|
expiresAt: number;
|
|
13
|
+
/** v1.2 — id of the choice card we sent for this entry (if the adapter
|
|
14
|
+
* supported sendChoiceCard). Used to edit the card to its terminal text
|
|
15
|
+
* after the user picks a button or replies via text. Null when we fell
|
|
16
|
+
* back to plain text. */
|
|
17
|
+
cardMessageId: string | null;
|
|
12
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* v1.2 — executor hook injected by cli.ts at boot. When the user accepts
|
|
21
|
+
* a retry (via text "1" OR button "🔁 重发"), the new inline-job row is
|
|
22
|
+
* created here but the agent never runs unless we feed a synthetic
|
|
23
|
+
* MessageContext through cli's handleMessage. cli.ts owns that closure
|
|
24
|
+
* (it has the registry, sink, agent dispatcher) so we register the
|
|
25
|
+
* callback here and invoke it after a successful retry.
|
|
26
|
+
*
|
|
27
|
+
* Without this hook the row stays in 'pending' forever. That bug
|
|
28
|
+
* affected the button path only (text path was working via the
|
|
29
|
+
* messenger's own onMessage chain).
|
|
30
|
+
*/
|
|
31
|
+
export interface RecoveryExecutorArgs {
|
|
32
|
+
entry: PendingRetry;
|
|
33
|
+
newJobId: number;
|
|
34
|
+
}
|
|
35
|
+
export type RecoveryExecutor = (args: RecoveryExecutorArgs) => Promise<void>;
|
|
36
|
+
export declare function setRecoveryExecutor(fn: RecoveryExecutor | null): void;
|
|
13
37
|
/** Test hook — wipe the in-memory state. */
|
|
14
38
|
export declare function _resetPendingForTests(): void;
|
|
15
39
|
/** Test hook — inspect current state. */
|
|
@@ -38,11 +62,27 @@ export type RecoveryReplyOutcome = {
|
|
|
38
62
|
};
|
|
39
63
|
/** Try to interpret a user's reply as a recovery decision. Returns an
|
|
40
64
|
* outcome the caller can render. Side-effect: on a recognized decision,
|
|
41
|
-
* the pending entry is removed and the DB row transitions.
|
|
65
|
+
* the pending entry is removed and the DB row transitions. When the
|
|
66
|
+
* entry was originally sent as a native choice card, this also edits
|
|
67
|
+
* the card to its terminal state so its buttons can't be tapped after
|
|
68
|
+
* the user already replied with text — otherwise a stale tap would
|
|
69
|
+
* hit the "请求已过期" branch and read as a glitch. */
|
|
42
70
|
export declare function tryHandleRecoveryReply(threadKey: string, text: string): RecoveryReplyOutcome;
|
|
43
71
|
/** Convenience for cli.ts: was the thread expecting a recovery reply just
|
|
44
72
|
* before we routed this message? Used to skip approval / reminder
|
|
45
73
|
* interceptors when the user is replying to a recovery prompt. */
|
|
46
74
|
export declare function hasPendingRecovery(threadKey: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* True if the given callback_data belongs to a recovery prompt — used by
|
|
77
|
+
* approval-router's button dispatcher to route the tap to us instead of
|
|
78
|
+
* the approval flow.
|
|
79
|
+
*/
|
|
80
|
+
export declare function isRecoveryButtonData(data: string): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Handle a button tap on a recovery card. Mirrors tryHandleRecoveryReply's
|
|
83
|
+
* semantics: returns the outcome the caller can act on. Also edits the
|
|
84
|
+
* card (drops the buttons) so a stale tap can't fire twice.
|
|
85
|
+
*/
|
|
86
|
+
export declare function handleRecoveryButton(platform: string, cb: ButtonCallback): Promise<RecoveryReplyOutcome | null>;
|
|
47
87
|
export {};
|
|
48
88
|
//# sourceMappingURL=job-recovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-recovery.d.ts","sourceRoot":"","sources":["../../src/core/job-recovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-recovery.d.ts","sourceRoot":"","sources":["../../src/core/job-recovery.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB;;;8BAG0B;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAOD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE5E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,yCAAyC;AACzC,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAEhE;AA+BD,gEAAgE;AAChE,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4EjG;AAED;wEACwE;AACxE,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,CAYpE;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAmB3C;;;;;;mDAMmD;AACnD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA4C5F;AAED;;mEAEmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D;AA2CD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AA0BD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsFrH"}
|
|
@@ -26,15 +26,23 @@
|
|
|
26
26
|
// entry that outlives the row it points at.
|
|
27
27
|
import { logger as rootLogger } from './logger.js';
|
|
28
28
|
import { createInlineJob, findRecoverableInterrupted, getRecoveryWindowMs, markInterruptedCancelled, markJobReplacedBy, sweepAbandonedInterrupted, } from './job-board.js';
|
|
29
|
-
import { sink } from './message-sink.js';
|
|
29
|
+
import { sink, resolveMessenger } from './message-sink.js';
|
|
30
30
|
const log = rootLogger.child({ component: 'job-recovery' });
|
|
31
|
+
/** Choice-card `data` prefix this module owns. approval-router's button
|
|
32
|
+
* dispatch forwards taps starting with this prefix to handleRecoveryButton. */
|
|
33
|
+
const RECOVERY_CB_PREFIX = 'rec:';
|
|
31
34
|
/** Thread-keyed pending entries. One per thread — if a thread happens to
|
|
32
35
|
* have multiple interrupted rows (rare), we surface the most recent only
|
|
33
36
|
* and the rest get swept to 'abandoned' next sweep. */
|
|
34
37
|
const pending = new Map();
|
|
38
|
+
let recoveryExecutor = null;
|
|
39
|
+
export function setRecoveryExecutor(fn) {
|
|
40
|
+
recoveryExecutor = fn;
|
|
41
|
+
}
|
|
35
42
|
/** Test hook — wipe the in-memory state. */
|
|
36
43
|
export function _resetPendingForTests() {
|
|
37
44
|
pending.clear();
|
|
45
|
+
recoveryExecutor = null;
|
|
38
46
|
}
|
|
39
47
|
/** Test hook — inspect current state. */
|
|
40
48
|
export function _peekPendingForTests() {
|
|
@@ -91,7 +99,7 @@ export async function scanInterruptedAndNotify() {
|
|
|
91
99
|
const interruptedAtMs = j.completed_at
|
|
92
100
|
? Date.parse(`${j.completed_at}Z`)
|
|
93
101
|
: Date.now();
|
|
94
|
-
|
|
102
|
+
const entry = {
|
|
95
103
|
jobId: j.id,
|
|
96
104
|
agent: j.agent,
|
|
97
105
|
prompt: j.prompt,
|
|
@@ -101,7 +109,19 @@ export async function scanInterruptedAndNotify() {
|
|
|
101
109
|
threadId: parsed.threadId,
|
|
102
110
|
creatorId: j.creator_id,
|
|
103
111
|
expiresAt: interruptedAtMs + windowMs,
|
|
104
|
-
|
|
112
|
+
cardMessageId: null,
|
|
113
|
+
};
|
|
114
|
+
pending.set(key, entry);
|
|
115
|
+
// v1.2 — try the platform's native choice card first; fall back to plain
|
|
116
|
+
// text when the adapter doesn't implement sendChoiceCard (WeChat-iLink,
|
|
117
|
+
// DingTalk text mode, …). Both paths support text replies ("1" / "重发")
|
|
118
|
+
// so the user always has a way out.
|
|
119
|
+
const cardSent = await trySendRecoveryCard(entry, windowMin);
|
|
120
|
+
if (cardSent) {
|
|
121
|
+
entry.cardMessageId = cardSent;
|
|
122
|
+
notified++;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
105
125
|
try {
|
|
106
126
|
await sink.deliver({
|
|
107
127
|
platform: parsed.platform,
|
|
@@ -110,6 +130,7 @@ export async function scanInterruptedAndNotify() {
|
|
|
110
130
|
payload: formatNotice(j, windowMin),
|
|
111
131
|
kind: 'text',
|
|
112
132
|
priority: 'normal',
|
|
133
|
+
source: 'system',
|
|
113
134
|
});
|
|
114
135
|
notified++;
|
|
115
136
|
}
|
|
@@ -140,9 +161,31 @@ export function sweepExpiredPending(now = Date.now()) {
|
|
|
140
161
|
}
|
|
141
162
|
return n;
|
|
142
163
|
}
|
|
164
|
+
async function editCardForTextReply(entry, finalText) {
|
|
165
|
+
const adapter = resolveMessenger(entry.platform);
|
|
166
|
+
if (!adapter?.editChoiceCard || !entry.cardMessageId)
|
|
167
|
+
return;
|
|
168
|
+
try {
|
|
169
|
+
await adapter.editChoiceCard(entry.threadId, entry.cardMessageId, finalText);
|
|
170
|
+
log.info({
|
|
171
|
+
event: 'recovery.text_reply.card_edited',
|
|
172
|
+
jobId: entry.jobId, finalText: finalText.slice(0, 60),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
log.warn({
|
|
177
|
+
event: 'recovery.text_reply.card_edit_failed',
|
|
178
|
+
jobId: entry.jobId, err: err instanceof Error ? err.message : String(err),
|
|
179
|
+
}, 'editing card after text reply failed — buttons may stay live until card expires');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
143
182
|
/** Try to interpret a user's reply as a recovery decision. Returns an
|
|
144
183
|
* outcome the caller can render. Side-effect: on a recognized decision,
|
|
145
|
-
* the pending entry is removed and the DB row transitions.
|
|
184
|
+
* the pending entry is removed and the DB row transitions. When the
|
|
185
|
+
* entry was originally sent as a native choice card, this also edits
|
|
186
|
+
* the card to its terminal state so its buttons can't be tapped after
|
|
187
|
+
* the user already replied with text — otherwise a stale tap would
|
|
188
|
+
* hit the "请求已过期" branch and read as a glitch. */
|
|
146
189
|
export function tryHandleRecoveryReply(threadKey, text) {
|
|
147
190
|
const entry = pending.get(threadKey);
|
|
148
191
|
if (!entry)
|
|
@@ -153,6 +196,15 @@ export function tryHandleRecoveryReply(threadKey, text) {
|
|
|
153
196
|
if (!isRetry && !isCancel)
|
|
154
197
|
return { kind: 'not-recovery-reply' };
|
|
155
198
|
pending.delete(threadKey);
|
|
199
|
+
// Fire-and-forget: if there's a card attached to this entry, edit it
|
|
200
|
+
// to terminal text + strip buttons. Errors logged but don't block the
|
|
201
|
+
// outcome the caller is waiting on.
|
|
202
|
+
if (entry.cardMessageId) {
|
|
203
|
+
const finalText = isRetry
|
|
204
|
+
? `🔁 已重发 · ${nowHm()}\n「${entry.prompt.replace(/\s+/g, ' ').slice(0, 60)}…」`
|
|
205
|
+
: `✖ 已取消 · ${nowHm()}`;
|
|
206
|
+
void editCardForTextReply(entry, finalText);
|
|
207
|
+
}
|
|
156
208
|
if (isCancel) {
|
|
157
209
|
markInterruptedCancelled(entry.jobId);
|
|
158
210
|
return { kind: 'cancelled', oldJobId: entry.jobId };
|
|
@@ -182,4 +234,164 @@ export function tryHandleRecoveryReply(threadKey, text) {
|
|
|
182
234
|
export function hasPendingRecovery(threadKey) {
|
|
183
235
|
return pending.has(threadKey);
|
|
184
236
|
}
|
|
237
|
+
// ─── v1.2: native choice-card flow ────────────────────────────────────
|
|
238
|
+
/** Render the card prompt for one interrupted entry. */
|
|
239
|
+
function buildChoiceCard(entry, windowMin) {
|
|
240
|
+
const flat = entry.prompt.replace(/\s+/g, ' ').trim();
|
|
241
|
+
const preview = flat.length > 80 ? `${flat.slice(0, 80)}…` : flat;
|
|
242
|
+
return {
|
|
243
|
+
title: '⚠️ 上次的消息被服务重启中断了',
|
|
244
|
+
body: `「${preview}」\n${windowMin} 分钟内有效`,
|
|
245
|
+
choices: [
|
|
246
|
+
{ label: '🔁 重发', data: `${RECOVERY_CB_PREFIX}${entry.jobId}:y` },
|
|
247
|
+
{ label: '✖ 取消', data: `${RECOVERY_CB_PREFIX}${entry.jobId}:n` },
|
|
248
|
+
],
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/** Try to send a native choice card via the adapter. Returns the new
|
|
252
|
+
* message id on success, null if the adapter doesn't support it (so caller
|
|
253
|
+
* can fall back to plain text). */
|
|
254
|
+
async function trySendRecoveryCard(entry, windowMin) {
|
|
255
|
+
const adapter = resolveMessenger(entry.platform);
|
|
256
|
+
if (!adapter?.sendChoiceCard)
|
|
257
|
+
return null;
|
|
258
|
+
try {
|
|
259
|
+
const sent = await adapter.sendChoiceCard(entry.threadId, buildChoiceCard(entry, windowMin));
|
|
260
|
+
log.info({
|
|
261
|
+
event: 'recovery.card_sent',
|
|
262
|
+
jobId: entry.jobId,
|
|
263
|
+
platform: entry.platform,
|
|
264
|
+
messageId: sent.messageId,
|
|
265
|
+
});
|
|
266
|
+
return sent.messageId;
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
log.warn({
|
|
270
|
+
event: 'recovery.card_send_failed',
|
|
271
|
+
jobId: entry.jobId,
|
|
272
|
+
err: err instanceof Error ? err.message : String(err),
|
|
273
|
+
}, 'sendChoiceCard threw — falling back to plain text');
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* True if the given callback_data belongs to a recovery prompt — used by
|
|
279
|
+
* approval-router's button dispatcher to route the tap to us instead of
|
|
280
|
+
* the approval flow.
|
|
281
|
+
*/
|
|
282
|
+
export function isRecoveryButtonData(data) {
|
|
283
|
+
return typeof data === 'string' && data.startsWith(RECOVERY_CB_PREFIX);
|
|
284
|
+
}
|
|
285
|
+
/** In-process dedupe of repeated callback_query deliveries — Telegram may
|
|
286
|
+
* retry the callback if it doesn't see an ack in time. Without this,
|
|
287
|
+
* the second delivery sees an empty pending map → "expired" branch fires
|
|
288
|
+
* and may overwrite the just-set terminal card. */
|
|
289
|
+
const recentClicks = new Map(); // `${jobId}:${choice}` → ts
|
|
290
|
+
const CLICK_DEDUPE_MS = 30_000;
|
|
291
|
+
function isDuplicateClick(jobId, choice) {
|
|
292
|
+
const key = `${jobId}:${choice}`;
|
|
293
|
+
const ts = Date.now();
|
|
294
|
+
// Sweep stale entries opportunistically.
|
|
295
|
+
for (const [k, t] of recentClicks.entries()) {
|
|
296
|
+
if (ts - t > CLICK_DEDUPE_MS)
|
|
297
|
+
recentClicks.delete(k);
|
|
298
|
+
}
|
|
299
|
+
if (recentClicks.has(key))
|
|
300
|
+
return true;
|
|
301
|
+
recentClicks.set(key, ts);
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
function nowHm() {
|
|
305
|
+
const d = new Date();
|
|
306
|
+
return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Handle a button tap on a recovery card. Mirrors tryHandleRecoveryReply's
|
|
310
|
+
* semantics: returns the outcome the caller can act on. Also edits the
|
|
311
|
+
* card (drops the buttons) so a stale tap can't fire twice.
|
|
312
|
+
*/
|
|
313
|
+
export async function handleRecoveryButton(platform, cb) {
|
|
314
|
+
const remainder = cb.data.slice(RECOVERY_CB_PREFIX.length); // e.g. "42:y"
|
|
315
|
+
const [jobIdStr, choice] = remainder.split(':');
|
|
316
|
+
const jobId = Number.parseInt(jobIdStr, 10);
|
|
317
|
+
if (!Number.isFinite(jobId) || (choice !== 'y' && choice !== 'n')) {
|
|
318
|
+
log.warn({ event: 'recovery.button.bad_data', data: cb.data });
|
|
319
|
+
await cb.ack('按钮数据格式错误').catch(() => { });
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
log.info({
|
|
323
|
+
event: 'recovery.button.received',
|
|
324
|
+
platform, jobId, choice, threadId: cb.threadId, messageId: cb.messageId,
|
|
325
|
+
});
|
|
326
|
+
// Dedupe identical clicks within a short window — Telegram resends
|
|
327
|
+
// callbacks when ack times out; we don't want to double-process.
|
|
328
|
+
if (isDuplicateClick(jobId, choice)) {
|
|
329
|
+
log.info({ event: 'recovery.button.dedup_skip', jobId, choice });
|
|
330
|
+
await cb.ack().catch(() => { }); // silent ack; no card edit
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
// Look up the pending entry by jobId.
|
|
334
|
+
let entry;
|
|
335
|
+
let entryKey;
|
|
336
|
+
for (const [k, v] of pending.entries()) {
|
|
337
|
+
if (v.jobId === jobId) {
|
|
338
|
+
entry = v;
|
|
339
|
+
entryKey = k;
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (!entry || !entryKey) {
|
|
344
|
+
await cb.ack('请求已过期').catch(() => { });
|
|
345
|
+
const adapter = resolveMessenger(platform);
|
|
346
|
+
if (adapter?.editChoiceCard) {
|
|
347
|
+
await adapter.editChoiceCard(cb.threadId, cb.messageId, `⏱ 已过期 · ${nowHm()}`).catch(() => { });
|
|
348
|
+
}
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
// Only the original requester may resolve the card. In group chats
|
|
352
|
+
// anyone can see the buttons; without this check a bystander could
|
|
353
|
+
// tap "取消" and kill someone else's retry — or worse, tap "重发" and
|
|
354
|
+
// re-run a prompt that wasn't theirs.
|
|
355
|
+
if (entry.creatorId && cb.userId && entry.creatorId !== cb.userId) {
|
|
356
|
+
log.warn({
|
|
357
|
+
event: 'recovery.button.unauthorized_tapper',
|
|
358
|
+
jobId, expected: entry.creatorId, actual: cb.userId,
|
|
359
|
+
});
|
|
360
|
+
await cb.ack('只有发起者可以处理这条消息').catch(() => { });
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
const reply = choice === 'y' ? '1' : '2';
|
|
364
|
+
const outcome = tryHandleRecoveryReply(entryKey, reply);
|
|
365
|
+
const ackText = choice === 'y' ? '🔁 已请求重发' : '✖ 已取消';
|
|
366
|
+
await cb.ack(ackText).catch(() => { });
|
|
367
|
+
// Append a HH:MM marker to the edit text so a retry-delivery's "not
|
|
368
|
+
// modified" edit doesn't silently swallow the visual update (Telegram
|
|
369
|
+
// rejects edits whose new content matches the current).
|
|
370
|
+
const adapter = resolveMessenger(platform);
|
|
371
|
+
if (adapter?.editChoiceCard) {
|
|
372
|
+
const finalText = choice === 'y'
|
|
373
|
+
? `🔁 已重发 · ${nowHm()}\n「${entry.prompt.replace(/\s+/g, ' ').slice(0, 60)}…」`
|
|
374
|
+
: `✖ 已取消 · ${nowHm()}`;
|
|
375
|
+
await adapter.editChoiceCard(cb.threadId, cb.messageId, finalText).catch(() => { });
|
|
376
|
+
log.info({ event: 'recovery.button.edited', jobId, choice, finalText: finalText.slice(0, 60) });
|
|
377
|
+
}
|
|
378
|
+
// P0-3 fix: button-tap path was creating the replacement row but never
|
|
379
|
+
// running the agent. Invoke the executor cli.ts registered at boot.
|
|
380
|
+
if (outcome.kind === 'retried' && recoveryExecutor) {
|
|
381
|
+
try {
|
|
382
|
+
await recoveryExecutor({ entry: outcome.entry, newJobId: outcome.newJobId });
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
log.warn({
|
|
386
|
+
event: 'recovery.button.executor_failed', jobId, err: String(err),
|
|
387
|
+
}, 'retry executor threw — replacement job created but agent did not run');
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else if (outcome.kind === 'retried' && !recoveryExecutor) {
|
|
391
|
+
log.warn({
|
|
392
|
+
event: 'recovery.button.no_executor', jobId,
|
|
393
|
+
}, 'no executor registered — replacement job will stay pending');
|
|
394
|
+
}
|
|
395
|
+
return outcome;
|
|
396
|
+
}
|
|
185
397
|
//# sourceMappingURL=job-recovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-recovery.js","sourceRoot":"","sources":["../../src/core/job-recovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-recovery.js","sourceRoot":"","sources":["../../src/core/job-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One pass: consolidate every active user. Returns { users, updated }.
|
|
3
|
+
* Safe to call manually (e.g. from a CLI / /memory consolidate command).
|
|
4
|
+
*/
|
|
5
|
+
export declare function runConsolidationOnce(): Promise<{
|
|
6
|
+
users: number;
|
|
7
|
+
updated: number;
|
|
8
|
+
}>;
|
|
9
|
+
/** Start the periodic consolidator. Idempotent; safe to call once at boot. */
|
|
10
|
+
export declare function startMemoryConsolidator(): void;
|
|
11
|
+
export declare function stopMemoryConsolidator(): void;
|
|
12
|
+
//# sourceMappingURL=memory-consolidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-consolidate.d.ts","sourceRoot":"","sources":["../../src/core/memory-consolidate.ts"],"names":[],"mappings":"AAkMA;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBxF;AAKD,8EAA8E;AAC9E,wBAAgB,uBAAuB,IAAI,IAAI,CAgB9C;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
|