twinny 0.0.0-dev.260525150705
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +264 -0
- package/README.zh-CN.md +252 -0
- package/configs/banner.png +0 -0
- package/configs/logo.png +0 -0
- package/dist/app/caffeinate.d.ts +28 -0
- package/dist/app/caffeinate.js +96 -0
- package/dist/app/caffeinate.js.map +1 -0
- package/dist/app/daemon.d.ts +1 -0
- package/dist/app/daemon.js +44 -0
- package/dist/app/daemon.js.map +1 -0
- package/dist/app/lark-assets.d.ts +25 -0
- package/dist/app/lark-assets.js +108 -0
- package/dist/app/lark-assets.js.map +1 -0
- package/dist/app/startup-probe.d.ts +17 -0
- package/dist/app/startup-probe.js +90 -0
- package/dist/app/startup-probe.js.map +1 -0
- package/dist/app/wiring.d.ts +122 -0
- package/dist/app/wiring.js +694 -0
- package/dist/app/wiring.js.map +1 -0
- package/dist/cli/commands.d.ts +1 -0
- package/dist/cli/commands.js +47 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/install-wizard.d.ts +41 -0
- package/dist/cli/install-wizard.js +629 -0
- package/dist/cli/install-wizard.js.map +1 -0
- package/dist/codex/appserver.d.ts +109 -0
- package/dist/codex/appserver.js +308 -0
- package/dist/codex/appserver.js.map +1 -0
- package/dist/codex/goal.d.ts +64 -0
- package/dist/codex/goal.js +433 -0
- package/dist/codex/goal.js.map +1 -0
- package/dist/codex/index.d.ts +6 -0
- package/dist/codex/index.js +7 -0
- package/dist/codex/index.js.map +1 -0
- package/dist/codex/protocol.d.ts +95 -0
- package/dist/codex/protocol.js +205 -0
- package/dist/codex/protocol.js.map +1 -0
- package/dist/codex/thread-name.d.ts +3 -0
- package/dist/codex/thread-name.js +27 -0
- package/dist/codex/thread-name.js.map +1 -0
- package/dist/codex/thread.d.ts +76 -0
- package/dist/codex/thread.js +80 -0
- package/dist/codex/thread.js.map +1 -0
- package/dist/codex/turn.d.ts +166 -0
- package/dist/codex/turn.js +746 -0
- package/dist/codex/turn.js.map +1 -0
- package/dist/config/bootstrap.d.ts +14 -0
- package/dist/config/bootstrap.js +56 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +49 -0
- package/dist/config/loader.js +467 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +11 -0
- package/dist/config/paths.js +43 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/secrets.d.ts +33 -0
- package/dist/config/secrets.js +85 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/conversation/manager.d.ts +701 -0
- package/dist/conversation/manager.js +7673 -0
- package/dist/conversation/manager.js.map +1 -0
- package/dist/conversation/queue.d.ts +8 -0
- package/dist/conversation/queue.js +28 -0
- package/dist/conversation/queue.js.map +1 -0
- package/dist/conversation/routing.d.ts +11 -0
- package/dist/conversation/routing.js +55 -0
- package/dist/conversation/routing.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lark/auth.d.ts +41 -0
- package/dist/lark/auth.js +132 -0
- package/dist/lark/auth.js.map +1 -0
- package/dist/lark/browser-auth.d.ts +68 -0
- package/dist/lark/browser-auth.js +258 -0
- package/dist/lark/browser-auth.js.map +1 -0
- package/dist/lark/cards.d.ts +140 -0
- package/dist/lark/cards.js +1150 -0
- package/dist/lark/cards.js.map +1 -0
- package/dist/lark/contact.d.ts +41 -0
- package/dist/lark/contact.js +122 -0
- package/dist/lark/contact.js.map +1 -0
- package/dist/lark/events.d.ts +65 -0
- package/dist/lark/events.js +218 -0
- package/dist/lark/events.js.map +1 -0
- package/dist/lark/files.d.ts +36 -0
- package/dist/lark/files.js +191 -0
- package/dist/lark/files.js.map +1 -0
- package/dist/lark/filters.d.ts +73 -0
- package/dist/lark/filters.js +678 -0
- package/dist/lark/filters.js.map +1 -0
- package/dist/lark/index.d.ts +10 -0
- package/dist/lark/index.js +11 -0
- package/dist/lark/index.js.map +1 -0
- package/dist/lark/messages.d.ts +87 -0
- package/dist/lark/messages.js +428 -0
- package/dist/lark/messages.js.map +1 -0
- package/dist/lark/openapi.d.ts +58 -0
- package/dist/lark/openapi.js +206 -0
- package/dist/lark/openapi.js.map +1 -0
- package/dist/lark/redactor.d.ts +5 -0
- package/dist/lark/redactor.js +68 -0
- package/dist/lark/redactor.js.map +1 -0
- package/dist/lark/types.d.ts +49 -0
- package/dist/lark/types.js +18 -0
- package/dist/lark/types.js.map +1 -0
- package/dist/launchd/install.d.ts +22 -0
- package/dist/launchd/install.js +114 -0
- package/dist/launchd/install.js.map +1 -0
- package/dist/launchd/plist.d.ts +10 -0
- package/dist/launchd/plist.js +61 -0
- package/dist/launchd/plist.js.map +1 -0
- package/dist/lock/index.d.ts +20 -0
- package/dist/lock/index.js +74 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +11 -0
- package/dist/main.js.map +1 -0
- package/dist/markdown.d.ts +12 -0
- package/dist/markdown.js +149 -0
- package/dist/markdown.js.map +1 -0
- package/dist/observability/health.d.ts +25 -0
- package/dist/observability/health.js +187 -0
- package/dist/observability/health.js.map +1 -0
- package/dist/observability/logs.d.ts +10 -0
- package/dist/observability/logs.js +34 -0
- package/dist/observability/logs.js.map +1 -0
- package/dist/observability/system-notifications.d.ts +25 -0
- package/dist/observability/system-notifications.js +33 -0
- package/dist/observability/system-notifications.js.map +1 -0
- package/dist/profiles/guest.d.ts +19 -0
- package/dist/profiles/guest.js +241 -0
- package/dist/profiles/guest.js.map +1 -0
- package/dist/profiles/index.d.ts +5 -0
- package/dist/profiles/index.js +14 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/profiles/owner.d.ts +1 -0
- package/dist/profiles/owner.js +6 -0
- package/dist/profiles/owner.js.map +1 -0
- package/dist/store/db.d.ts +10 -0
- package/dist/store/db.js +29 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/index.d.ts +3 -0
- package/dist/store/index.js +4 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/migrations.d.ts +13 -0
- package/dist/store/migrations.js +79 -0
- package/dist/store/migrations.js.map +1 -0
- package/dist/store/repositories.d.ts +227 -0
- package/dist/store/repositories.js +1384 -0
- package/dist/store/repositories.js.map +1 -0
- package/dist/telemetry/client.d.ts +60 -0
- package/dist/telemetry/client.js +204 -0
- package/dist/telemetry/client.js.map +1 -0
- package/dist/telemetry/hash.d.ts +1 -0
- package/dist/telemetry/hash.js +8 -0
- package/dist/telemetry/hash.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.js +5 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/posthog.d.ts +27 -0
- package/dist/telemetry/posthog.js +45 -0
- package/dist/telemetry/posthog.js.map +1 -0
- package/dist/telemetry/reporter.d.ts +13 -0
- package/dist/telemetry/reporter.js +29 -0
- package/dist/telemetry/reporter.js.map +1 -0
- package/dist/types.d.ts +330 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +1 -0
- package/dist/version.js.map +1 -0
- package/dist/version.json +3 -0
- package/dist/workspace/index.d.ts +2 -0
- package/dist/workspace/index.js +3 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/manager.d.ts +14 -0
- package/dist/workspace/manager.js +69 -0
- package/dist/workspace/manager.js.map +1 -0
- package/dist/workspace/slug.d.ts +8 -0
- package/dist/workspace/slug.js +59 -0
- package/dist/workspace/slug.js.map +1 -0
- package/migrations/0001_initial.sql +102 -0
- package/package.json +85 -0
|
@@ -0,0 +1,701 @@
|
|
|
1
|
+
import type { Logger } from "pino";
|
|
2
|
+
import { type LarkCardJson } from "../lark/cards.js";
|
|
3
|
+
import type { CodexThreadTokenUsageUpdate, CodexTurnResult, CodexAgentMessage, CodexImageGeneration, CodexPlanUpdate, CodexRequestUserInputRequest, CodexThreadGoalStatus, CodexThreadMode, CodexThreadNameUpdate, CodexThreadStatus, ConversationResponseMode, ConversationRecord, ConversationType, IncomingLarkBotMenuAction, IncomingLarkCardAction, IncomingLarkMessage, IncomingLarkMessageRecall, LarkMessageRecord, LarkMessageRouteKind, LarkMessageStatus, LarkReactionHandle, NewConversationRecord, ProfileName, CodexThreadRecord, TwinnyConfig, LarkChatMode, LarkGroupMessageType } from "../types.js";
|
|
4
|
+
import { type CodexDynamicToolCallResponse, type CodexRequestUserInputResponder, type CodexSetThreadNameToolRequest, type CodexTurnInput } from "../codex/turn.js";
|
|
5
|
+
import type { ThreadGoal } from "../codex/goal.js";
|
|
6
|
+
import type { LarkSendMessageResult } from "../lark/types.js";
|
|
7
|
+
import type { TelemetryClient } from "../telemetry/index.js";
|
|
8
|
+
export interface ConversationRepository {
|
|
9
|
+
findByConversationKey(conversationKey: string): Promise<ConversationRecord | null> | ConversationRecord | null;
|
|
10
|
+
create(record: NewConversationRecord): Promise<ConversationRecord> | ConversationRecord;
|
|
11
|
+
updateThreadBinding(conversationKey: string, update: {
|
|
12
|
+
codexThreadId: string;
|
|
13
|
+
profile?: ProfileName;
|
|
14
|
+
profileCodexHome?: string;
|
|
15
|
+
workspace?: string;
|
|
16
|
+
}): Promise<ConversationRecord> | ConversationRecord;
|
|
17
|
+
updateConversationSettings(conversationKey: string, update: {
|
|
18
|
+
type?: ConversationType;
|
|
19
|
+
name?: string;
|
|
20
|
+
responseMode?: ConversationResponseMode;
|
|
21
|
+
}): Promise<ConversationRecord> | ConversationRecord;
|
|
22
|
+
markThreadHasRollout(conversationKey: string, codexThreadId: string): Promise<void> | void;
|
|
23
|
+
getCodexThreadById(codexThreadId: string): Promise<CodexThreadRecord | undefined> | CodexThreadRecord | undefined;
|
|
24
|
+
getCodexThreadByConversationAndLarkThread(conversationKey: string, larkThreadId: string): Promise<CodexThreadRecord | undefined> | CodexThreadRecord | undefined;
|
|
25
|
+
getLarkMessageById(larkMessageId: string): Promise<unknown | undefined> | unknown | undefined;
|
|
26
|
+
getLarkMessageByEventId(eventId: string): Promise<unknown | undefined> | unknown | undefined;
|
|
27
|
+
getLarkMessageUsageTargetForTurn(codexThreadId: string, codexTurnId: string): Promise<LarkMessageRecord | undefined> | LarkMessageRecord | undefined;
|
|
28
|
+
getLatestSteeredLarkMessageForTurn(codexThreadId: string, codexTurnId: string): Promise<LarkMessageRecord | undefined> | LarkMessageRecord | undefined;
|
|
29
|
+
listUnfinishedLarkMessages(): Promise<LarkMessageRecord[]> | LarkMessageRecord[];
|
|
30
|
+
upsertCodexThread(input: {
|
|
31
|
+
codexThreadId: string;
|
|
32
|
+
conversationKey: string;
|
|
33
|
+
profile: ProfileName;
|
|
34
|
+
model?: string;
|
|
35
|
+
effort?: string;
|
|
36
|
+
larkThreadId?: string;
|
|
37
|
+
codexThreadHasRollout?: boolean;
|
|
38
|
+
forkedFromCodexThreadId?: string;
|
|
39
|
+
forkedAt?: number;
|
|
40
|
+
name?: string;
|
|
41
|
+
}): Promise<unknown> | unknown;
|
|
42
|
+
replaceCodexThreadForLarkThread?(conversationKey: string, larkThreadId: string, update: {
|
|
43
|
+
codexThreadId: string;
|
|
44
|
+
profile: ProfileName;
|
|
45
|
+
model?: string;
|
|
46
|
+
effort?: string;
|
|
47
|
+
codexThreadHasRollout?: boolean;
|
|
48
|
+
}): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
49
|
+
updateCodexThreadTokenUsage(input: {
|
|
50
|
+
codexThreadId: string;
|
|
51
|
+
conversationKey: string;
|
|
52
|
+
profile: ProfileName;
|
|
53
|
+
totalTokens: number;
|
|
54
|
+
inputTokens: number;
|
|
55
|
+
outputTokens: number;
|
|
56
|
+
cachedInputTokens: number;
|
|
57
|
+
reasoningOutputTokens: number;
|
|
58
|
+
contextTokens: number;
|
|
59
|
+
contextWindow: number;
|
|
60
|
+
tokenUsageJson: string;
|
|
61
|
+
}): Promise<unknown> | unknown;
|
|
62
|
+
updateCodexThreadCard(input: {
|
|
63
|
+
codexThreadId: string;
|
|
64
|
+
conversationKey: string;
|
|
65
|
+
profile: ProfileName;
|
|
66
|
+
model?: string;
|
|
67
|
+
effort?: string;
|
|
68
|
+
larkThreadId?: string;
|
|
69
|
+
creatorOpenId?: string;
|
|
70
|
+
cardMessageId?: string;
|
|
71
|
+
name?: string;
|
|
72
|
+
}): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
73
|
+
updateCodexThreadModelSettings(input: {
|
|
74
|
+
codexThreadId: string;
|
|
75
|
+
model: string;
|
|
76
|
+
effort: string;
|
|
77
|
+
}): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
78
|
+
updateCodexThreadName(codexThreadId: string, name: string): Promise<CodexThreadRecord | undefined> | CodexThreadRecord | undefined;
|
|
79
|
+
updateCodexThreadMode(conversationKey: string, codexThreadId: string, mode: CodexThreadMode): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
80
|
+
updateCodexThreadStatus(conversationKey: string, codexThreadId: string, status: CodexThreadStatus): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
81
|
+
updateCodexThreadGoalStatus(input: {
|
|
82
|
+
codexThreadId: string;
|
|
83
|
+
goalStatus: CodexThreadGoalStatus;
|
|
84
|
+
goalUpdatedAt?: number;
|
|
85
|
+
}): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
86
|
+
clearCodexThreadGoalStatus(codexThreadId: string): Promise<CodexThreadRecord> | CodexThreadRecord;
|
|
87
|
+
getCodexThreadWorkStats(codexThreadId: string): Promise<{
|
|
88
|
+
turnCount: number;
|
|
89
|
+
totalWorkDurationMs: number;
|
|
90
|
+
}> | {
|
|
91
|
+
turnCount: number;
|
|
92
|
+
totalWorkDurationMs: number;
|
|
93
|
+
};
|
|
94
|
+
getCodexThreadStatusStats(codexThreadId: string): Promise<{
|
|
95
|
+
userMessageCount: number;
|
|
96
|
+
turnCount: number;
|
|
97
|
+
totalWorkDurationMs: number;
|
|
98
|
+
}> | {
|
|
99
|
+
userMessageCount: number;
|
|
100
|
+
turnCount: number;
|
|
101
|
+
totalWorkDurationMs: number;
|
|
102
|
+
};
|
|
103
|
+
getConversationStatusStats(conversationKey: string): Promise<{
|
|
104
|
+
topicCount: number;
|
|
105
|
+
userMessageCount: number;
|
|
106
|
+
inputTokens: number;
|
|
107
|
+
outputTokens: number;
|
|
108
|
+
cachedInputTokens: number;
|
|
109
|
+
reasoningOutputTokens: number;
|
|
110
|
+
totalTokens: number;
|
|
111
|
+
totalWorkDurationMs: number;
|
|
112
|
+
}> | {
|
|
113
|
+
topicCount: number;
|
|
114
|
+
userMessageCount: number;
|
|
115
|
+
inputTokens: number;
|
|
116
|
+
outputTokens: number;
|
|
117
|
+
cachedInputTokens: number;
|
|
118
|
+
reasoningOutputTokens: number;
|
|
119
|
+
totalTokens: number;
|
|
120
|
+
totalWorkDurationMs: number;
|
|
121
|
+
};
|
|
122
|
+
insertLarkMessage(input: {
|
|
123
|
+
larkMessageId?: string;
|
|
124
|
+
eventId: string;
|
|
125
|
+
larkUserId: string;
|
|
126
|
+
larkGroupId?: string;
|
|
127
|
+
larkThreadId?: string;
|
|
128
|
+
conversationKey?: string;
|
|
129
|
+
codexThreadId?: string;
|
|
130
|
+
codexTurnId?: string;
|
|
131
|
+
routeKind: LarkMessageRouteKind;
|
|
132
|
+
status: LarkMessageStatus;
|
|
133
|
+
text: string;
|
|
134
|
+
larkCreateTime?: number;
|
|
135
|
+
sideId?: number;
|
|
136
|
+
agentCardMessageId?: string;
|
|
137
|
+
rawEventJson?: string;
|
|
138
|
+
}): Promise<unknown> | unknown;
|
|
139
|
+
markLarkMessageQueued(larkMessageId: string): Promise<void> | void;
|
|
140
|
+
markLarkMessageRecalled(larkMessageId: string): Promise<boolean> | boolean;
|
|
141
|
+
updateQueuedLarkMessage(larkMessageId: string, update: {
|
|
142
|
+
text: string;
|
|
143
|
+
rawEventJson?: string;
|
|
144
|
+
}): Promise<boolean> | boolean;
|
|
145
|
+
updateLarkMessageSideMetadata?(larkMessageId: string, update: {
|
|
146
|
+
sideId?: number;
|
|
147
|
+
agentCardMessageId?: string;
|
|
148
|
+
}): Promise<boolean> | boolean;
|
|
149
|
+
updateLarkMessageTokenUsage(input: {
|
|
150
|
+
larkMessageId: string;
|
|
151
|
+
inputTokens: number;
|
|
152
|
+
outputTokens: number;
|
|
153
|
+
cachedInputTokens: number;
|
|
154
|
+
reasoningOutputTokens: number;
|
|
155
|
+
tokenUsageJson: string;
|
|
156
|
+
}): Promise<LarkMessageRecord | undefined> | LarkMessageRecord | undefined;
|
|
157
|
+
markLarkMessagesProcessing(larkMessageIds: string[], update?: {
|
|
158
|
+
conversationKey?: string;
|
|
159
|
+
codexThreadId?: string;
|
|
160
|
+
codexTurnId?: string;
|
|
161
|
+
}): Promise<void> | void;
|
|
162
|
+
markLarkMessagesSteered(larkMessageIds: string[], update?: {
|
|
163
|
+
conversationKey?: string;
|
|
164
|
+
codexThreadId?: string;
|
|
165
|
+
codexTurnId?: string;
|
|
166
|
+
}): Promise<void> | void;
|
|
167
|
+
markLarkMessagesCompleted(larkMessageIds: string[]): Promise<void> | void;
|
|
168
|
+
markLarkMessagesFailed(larkMessageIds: string[]): Promise<void> | void;
|
|
169
|
+
markLarkMessagesInterrupted(larkMessageIds: string[]): Promise<void> | void;
|
|
170
|
+
markLarkMessagesCleared(larkMessageIds: string[]): Promise<void> | void;
|
|
171
|
+
}
|
|
172
|
+
export interface LarkUserDirectory {
|
|
173
|
+
getUserNameByOpenId(openId: string): Promise<string | undefined>;
|
|
174
|
+
}
|
|
175
|
+
export interface LarkChatDirectory {
|
|
176
|
+
getChatInfo?(chatId: string): Promise<{
|
|
177
|
+
name?: string;
|
|
178
|
+
chatMode?: LarkChatMode | "p2p";
|
|
179
|
+
groupMessageType?: LarkGroupMessageType;
|
|
180
|
+
} | undefined>;
|
|
181
|
+
getChatName?(chatId: string): Promise<string | undefined>;
|
|
182
|
+
}
|
|
183
|
+
export interface LarkFileDownloader {
|
|
184
|
+
downloadMessageResource(params: {
|
|
185
|
+
messageId: string;
|
|
186
|
+
resourceType: "image" | "file";
|
|
187
|
+
fileKey: string;
|
|
188
|
+
fileName?: string;
|
|
189
|
+
outputDir: string;
|
|
190
|
+
}): Promise<{
|
|
191
|
+
path: string;
|
|
192
|
+
resourceType: "image" | "file";
|
|
193
|
+
fileKey: string;
|
|
194
|
+
fileName?: string;
|
|
195
|
+
size: number;
|
|
196
|
+
contentType?: string;
|
|
197
|
+
}>;
|
|
198
|
+
uploadImage?(params: {
|
|
199
|
+
filePath: string;
|
|
200
|
+
fileName?: string;
|
|
201
|
+
contentType?: string;
|
|
202
|
+
}): Promise<{
|
|
203
|
+
imageKey: string;
|
|
204
|
+
raw?: unknown;
|
|
205
|
+
}>;
|
|
206
|
+
uploadFile?(params: {
|
|
207
|
+
filePath: string;
|
|
208
|
+
fileName?: string;
|
|
209
|
+
fileType?: string;
|
|
210
|
+
contentType?: string;
|
|
211
|
+
durationMs?: number;
|
|
212
|
+
}): Promise<{
|
|
213
|
+
fileKey: string;
|
|
214
|
+
raw?: unknown;
|
|
215
|
+
}>;
|
|
216
|
+
}
|
|
217
|
+
export interface LarkMessageReader {
|
|
218
|
+
getMessage(messageId: string): Promise<unknown>;
|
|
219
|
+
getMessageItems?(messageId: string): Promise<unknown[]>;
|
|
220
|
+
}
|
|
221
|
+
export interface WorkspaceManagerLike {
|
|
222
|
+
ensureWorkspace(conversationKey: string): Promise<string> | string;
|
|
223
|
+
}
|
|
224
|
+
export interface CodexBridge {
|
|
225
|
+
startThread(params: {
|
|
226
|
+
profile: ProfileName;
|
|
227
|
+
cwd: string;
|
|
228
|
+
approvalPolicy: "never";
|
|
229
|
+
developerInstructions?: string;
|
|
230
|
+
}): Promise<{
|
|
231
|
+
threadId: string;
|
|
232
|
+
}>;
|
|
233
|
+
resumeThread(params: {
|
|
234
|
+
profile: ProfileName;
|
|
235
|
+
threadId: string;
|
|
236
|
+
cwd: string;
|
|
237
|
+
approvalPolicy: "never";
|
|
238
|
+
}): Promise<{
|
|
239
|
+
threadId: string;
|
|
240
|
+
}>;
|
|
241
|
+
forkThread(params: {
|
|
242
|
+
profile: ProfileName;
|
|
243
|
+
threadId: string;
|
|
244
|
+
cwd: string;
|
|
245
|
+
approvalPolicy: "never";
|
|
246
|
+
ephemeral?: boolean;
|
|
247
|
+
developerInstructions?: string;
|
|
248
|
+
model?: string;
|
|
249
|
+
effort?: string;
|
|
250
|
+
}): Promise<{
|
|
251
|
+
threadId: string;
|
|
252
|
+
}>;
|
|
253
|
+
injectThreadItems?(params: {
|
|
254
|
+
profile: ProfileName;
|
|
255
|
+
threadId: string;
|
|
256
|
+
items: unknown[];
|
|
257
|
+
}): Promise<void>;
|
|
258
|
+
unsubscribeThread?(params: {
|
|
259
|
+
profile: ProfileName;
|
|
260
|
+
threadId: string;
|
|
261
|
+
}): Promise<void>;
|
|
262
|
+
startTurn(params: {
|
|
263
|
+
profile: ProfileName;
|
|
264
|
+
threadId: string;
|
|
265
|
+
input: CodexTurnInput;
|
|
266
|
+
currentThreadName?: string;
|
|
267
|
+
cwd: string;
|
|
268
|
+
approvalPolicy: "never";
|
|
269
|
+
mode?: CodexThreadMode;
|
|
270
|
+
model?: string;
|
|
271
|
+
effort?: string;
|
|
272
|
+
onTurnStarted?: (turnId: string) => Promise<void> | void;
|
|
273
|
+
onAgentMessage?: (message: CodexAgentMessage) => Promise<void> | void;
|
|
274
|
+
onImageGeneration?: (image: CodexImageGeneration) => Promise<void> | void;
|
|
275
|
+
onTokenUsage?: (usage: CodexThreadTokenUsageUpdate) => Promise<void> | void;
|
|
276
|
+
onGoalUpdated?: (goal: ThreadGoal, turnId: string | null) => Promise<void> | void;
|
|
277
|
+
onGoalCleared?: () => Promise<void> | void;
|
|
278
|
+
onPlanUpdated?: (plan: CodexPlanUpdate) => Promise<void> | void;
|
|
279
|
+
onRequestUserInput?: (request: CodexRequestUserInputRequest, responder: CodexRequestUserInputResponder) => Promise<void> | void;
|
|
280
|
+
onSetThreadName?: (request: CodexSetThreadNameToolRequest) => Promise<CodexDynamicToolCallResponse> | CodexDynamicToolCallResponse;
|
|
281
|
+
}): Promise<CodexTurnResult>;
|
|
282
|
+
compactThread(params: {
|
|
283
|
+
profile: ProfileName;
|
|
284
|
+
threadId: string;
|
|
285
|
+
cwd: string;
|
|
286
|
+
approvalPolicy: "never";
|
|
287
|
+
onTurnStarted?: (turnId: string) => Promise<void> | void;
|
|
288
|
+
onTokenUsage?: (usage: CodexThreadTokenUsageUpdate) => Promise<void> | void;
|
|
289
|
+
}): Promise<CodexTurnResult>;
|
|
290
|
+
steerTurn(params: {
|
|
291
|
+
profile: ProfileName;
|
|
292
|
+
threadId: string;
|
|
293
|
+
turnId: string;
|
|
294
|
+
input: CodexTurnInput;
|
|
295
|
+
cwd: string;
|
|
296
|
+
approvalPolicy: "never";
|
|
297
|
+
}): Promise<void>;
|
|
298
|
+
interruptTurn(params: {
|
|
299
|
+
profile: ProfileName;
|
|
300
|
+
threadId: string;
|
|
301
|
+
turnId: string;
|
|
302
|
+
}): Promise<void>;
|
|
303
|
+
readCodexVersion?(params: {
|
|
304
|
+
profile: ProfileName;
|
|
305
|
+
}): Promise<string> | string;
|
|
306
|
+
readAccountRateLimits?(params: {
|
|
307
|
+
profile: ProfileName;
|
|
308
|
+
}): Promise<unknown>;
|
|
309
|
+
setThreadGoal?(params: {
|
|
310
|
+
profile: ProfileName;
|
|
311
|
+
threadId: string;
|
|
312
|
+
objective: string;
|
|
313
|
+
}): Promise<ThreadGoal>;
|
|
314
|
+
getThreadGoal?(params: {
|
|
315
|
+
profile: ProfileName;
|
|
316
|
+
threadId: string;
|
|
317
|
+
}): Promise<ThreadGoal | null>;
|
|
318
|
+
clearThreadGoal?(params: {
|
|
319
|
+
profile: ProfileName;
|
|
320
|
+
threadId: string;
|
|
321
|
+
}): Promise<void>;
|
|
322
|
+
setThreadName?(params: {
|
|
323
|
+
profile: ProfileName;
|
|
324
|
+
threadId: string;
|
|
325
|
+
name: string;
|
|
326
|
+
}): Promise<void>;
|
|
327
|
+
runGoal?(params: {
|
|
328
|
+
profile: ProfileName;
|
|
329
|
+
threadId: string;
|
|
330
|
+
objective: string;
|
|
331
|
+
onTurnStarted?: (turnId: string) => Promise<void> | void;
|
|
332
|
+
onAgentMessage?: (message: CodexAgentMessage) => Promise<void> | void;
|
|
333
|
+
onTokenUsage?: (usage: CodexThreadTokenUsageUpdate) => Promise<void> | void;
|
|
334
|
+
onGoalUpdated?: (goal: ThreadGoal, turnId: string | null) => Promise<void> | void;
|
|
335
|
+
onGoalCleared?: () => Promise<void> | void;
|
|
336
|
+
onRequestUserInput?: (request: CodexRequestUserInputRequest, responder: CodexRequestUserInputResponder) => Promise<void> | void;
|
|
337
|
+
onSetThreadName?: (request: CodexSetThreadNameToolRequest) => Promise<CodexDynamicToolCallResponse> | CodexDynamicToolCallResponse;
|
|
338
|
+
}): Promise<CodexTurnResult>;
|
|
339
|
+
resumeGoal?(params: {
|
|
340
|
+
profile: ProfileName;
|
|
341
|
+
threadId: string;
|
|
342
|
+
cwd: string;
|
|
343
|
+
onTurnStarted?: (turnId: string) => Promise<void> | void;
|
|
344
|
+
onAgentMessage?: (message: CodexAgentMessage) => Promise<void> | void;
|
|
345
|
+
onTokenUsage?: (usage: CodexThreadTokenUsageUpdate) => Promise<void> | void;
|
|
346
|
+
onGoalUpdated?: (goal: ThreadGoal, turnId: string | null) => Promise<void> | void;
|
|
347
|
+
onGoalCleared?: () => Promise<void> | void;
|
|
348
|
+
onRequestUserInput?: (request: CodexRequestUserInputRequest, responder: CodexRequestUserInputResponder) => Promise<void> | void;
|
|
349
|
+
onSetThreadName?: (request: CodexSetThreadNameToolRequest) => Promise<CodexDynamicToolCallResponse> | CodexDynamicToolCallResponse;
|
|
350
|
+
}): Promise<CodexTurnResult>;
|
|
351
|
+
}
|
|
352
|
+
export interface LarkResponder {
|
|
353
|
+
addTypingReaction(messageId: string): Promise<LarkReactionHandle | null>;
|
|
354
|
+
addCompletedReaction(messageId: string): Promise<LarkReactionHandle | null>;
|
|
355
|
+
addQueuedReaction(messageId: string): Promise<LarkReactionHandle | null>;
|
|
356
|
+
removeReaction(handle: LarkReactionHandle): Promise<void>;
|
|
357
|
+
replyText(messageId: string, text: string, options?: LarkReplyOptions): Promise<LarkReplyResult | void>;
|
|
358
|
+
replyMarkdown(messageId: string, markdown: string, options?: LarkReplyOptions): Promise<LarkReplyResult | void>;
|
|
359
|
+
replyPost(messageId: string, content: LarkPostContent, options?: LarkReplyOptions): Promise<LarkReplyResult | void>;
|
|
360
|
+
replyFile(messageId: string, fileKey: string): Promise<{
|
|
361
|
+
messageId?: string;
|
|
362
|
+
} | void>;
|
|
363
|
+
replyImage(messageId: string, imageKey: string): Promise<{
|
|
364
|
+
messageId?: string;
|
|
365
|
+
} | void>;
|
|
366
|
+
sendTextToOpenId(openId: string, text: string): Promise<void>;
|
|
367
|
+
sendCardToOpenId(openId: string, card: LarkCardJson, options?: {
|
|
368
|
+
uuid?: string;
|
|
369
|
+
}): Promise<LarkSendMessageResult | void>;
|
|
370
|
+
sendCardToChatId(chatId: string, card: LarkCardJson, options?: {
|
|
371
|
+
uuid?: string;
|
|
372
|
+
}): Promise<LarkSendMessageResult | void>;
|
|
373
|
+
sendEphemeralCardToChatId(chatId: string, openId: string, card: LarkCardJson): Promise<LarkSendMessageResult | void>;
|
|
374
|
+
forwardThreadToThread(threadId: string, receiveThreadId: string, options?: {
|
|
375
|
+
uuid?: string;
|
|
376
|
+
}): Promise<LarkSendMessageResult | void>;
|
|
377
|
+
replyCard(messageId: string, card: LarkCardJson, options?: LarkReplyOptions): Promise<LarkReplyResult | void>;
|
|
378
|
+
patchCard(messageId: string, card: LarkCardJson): Promise<{
|
|
379
|
+
messageId?: string;
|
|
380
|
+
} | void>;
|
|
381
|
+
recallMessage(messageId: string): Promise<void>;
|
|
382
|
+
deleteEphemeralMessage(messageId: string): Promise<void>;
|
|
383
|
+
getMessageReadOpenIds(messageId: string): Promise<string[]>;
|
|
384
|
+
}
|
|
385
|
+
export interface ProfileHomeResolver {
|
|
386
|
+
codexHomeFor(profile: ProfileName): string;
|
|
387
|
+
}
|
|
388
|
+
export interface RuntimeControlBridge {
|
|
389
|
+
reloadProfile(profile?: ProfileName): Promise<void>;
|
|
390
|
+
}
|
|
391
|
+
export interface ConversationManagerOptions {
|
|
392
|
+
config: TwinnyConfig;
|
|
393
|
+
repository: ConversationRepository;
|
|
394
|
+
workspaces: WorkspaceManagerLike;
|
|
395
|
+
codex: CodexBridge;
|
|
396
|
+
lark: LarkResponder;
|
|
397
|
+
larkUsers?: LarkUserDirectory;
|
|
398
|
+
larkChats?: LarkChatDirectory;
|
|
399
|
+
larkFiles?: LarkFileDownloader;
|
|
400
|
+
larkMessages?: LarkMessageReader;
|
|
401
|
+
botOpenId?: string;
|
|
402
|
+
assetImageKeys?: {
|
|
403
|
+
logoImageKey?: string;
|
|
404
|
+
bannerImageKey?: string;
|
|
405
|
+
};
|
|
406
|
+
profiles: ProfileHomeResolver;
|
|
407
|
+
runtime?: RuntimeControlBridge;
|
|
408
|
+
telemetry?: TelemetryClient;
|
|
409
|
+
logger?: Logger;
|
|
410
|
+
nameLookupFailureTtlMs?: number;
|
|
411
|
+
}
|
|
412
|
+
export interface ConversationRecoveryProbeFailure {
|
|
413
|
+
eventId: string;
|
|
414
|
+
larkMessageId?: string;
|
|
415
|
+
status: LarkMessageStatus;
|
|
416
|
+
error: string;
|
|
417
|
+
}
|
|
418
|
+
export interface ConversationRecoveryProbeSnapshot {
|
|
419
|
+
unfinishedMessages: number;
|
|
420
|
+
queuedMessages: number;
|
|
421
|
+
processingMessages: number;
|
|
422
|
+
recoveredMessages: number;
|
|
423
|
+
failedMessages: number;
|
|
424
|
+
stateCount: number;
|
|
425
|
+
pendingMessages: number;
|
|
426
|
+
compactMessages: number;
|
|
427
|
+
profiles: Record<ProfileName, number>;
|
|
428
|
+
failures: ConversationRecoveryProbeFailure[];
|
|
429
|
+
}
|
|
430
|
+
export interface ConversationRuntimeStats {
|
|
431
|
+
activeTurnCount: number;
|
|
432
|
+
sideTurnCount: number;
|
|
433
|
+
queuedMessageCount: number;
|
|
434
|
+
suspendedTurnCount: number;
|
|
435
|
+
}
|
|
436
|
+
interface LarkReplyOptions {
|
|
437
|
+
replyInThread?: boolean;
|
|
438
|
+
}
|
|
439
|
+
interface LarkReplyResult {
|
|
440
|
+
messageId?: string;
|
|
441
|
+
raw?: unknown;
|
|
442
|
+
}
|
|
443
|
+
export declare class ConversationManager {
|
|
444
|
+
private readonly options;
|
|
445
|
+
private static readonly recoveryPrompt;
|
|
446
|
+
private readonly states;
|
|
447
|
+
private readonly nameLookupFailureCache;
|
|
448
|
+
private readonly pendingThreadNames;
|
|
449
|
+
private readonly log;
|
|
450
|
+
private shuttingDown;
|
|
451
|
+
constructor(options: ConversationManagerOptions);
|
|
452
|
+
submitIncoming(message: IncomingLarkMessage): void;
|
|
453
|
+
submitMessageRecall(recall: IncomingLarkMessageRecall): void;
|
|
454
|
+
submitBotMenuAction(action: IncomingLarkBotMenuAction): void;
|
|
455
|
+
submitCardAction(action: IncomingLarkCardAction): void;
|
|
456
|
+
submitCodexThreadNameUpdated(update: CodexThreadNameUpdate): void;
|
|
457
|
+
shutdown(): Promise<void>;
|
|
458
|
+
suspendActiveTurnsForCodexAppServerExit(profile: ProfileName): Promise<number>;
|
|
459
|
+
recoverSuspendedActiveTurnsForCodexAppServerExit(profile: ProfileName): Promise<number>;
|
|
460
|
+
recoverUnfinishedMessages(options?: {
|
|
461
|
+
profile?: ProfileName;
|
|
462
|
+
}): Promise<void>;
|
|
463
|
+
probeUnfinishedMessages(): Promise<ConversationRecoveryProbeSnapshot>;
|
|
464
|
+
private profileForRecoverableRecord;
|
|
465
|
+
private toRecoveredPendingMessage;
|
|
466
|
+
private startRecoveredProcessingMessages;
|
|
467
|
+
private getOrCreateRecoveryConversation;
|
|
468
|
+
queueDepth(conversationKey: string): number;
|
|
469
|
+
getRuntimeStats(): ConversationRuntimeStats;
|
|
470
|
+
private processBotMenuAction;
|
|
471
|
+
private processSubmittedMessage;
|
|
472
|
+
private handleSubmittedMessageFailure;
|
|
473
|
+
private isPersistedDuplicateMessage;
|
|
474
|
+
private enqueueQueuedMessageChange;
|
|
475
|
+
private processQueuedMessageRecall;
|
|
476
|
+
private routeMessage;
|
|
477
|
+
private prepareIncomingMessageForCodex;
|
|
478
|
+
private expandMergeForwardMessage;
|
|
479
|
+
private resolveMergeForwardSourceChat;
|
|
480
|
+
private renderMergeForwardChildMessage;
|
|
481
|
+
private resolveMergeForwardSenderName;
|
|
482
|
+
private downloadMergeForwardChildResources;
|
|
483
|
+
private shouldDropOccupiedControlCommand;
|
|
484
|
+
private handleRecordedParsedCommand;
|
|
485
|
+
private recordIncomingMessage;
|
|
486
|
+
private prepareMessageResources;
|
|
487
|
+
private applyGroupResponsePolicy;
|
|
488
|
+
private rejectUnauthorizedP2pBestEffort;
|
|
489
|
+
private resolveSenderName;
|
|
490
|
+
private cacheNameLookupFailure;
|
|
491
|
+
private handleActivateCommand;
|
|
492
|
+
private handlePairCommand;
|
|
493
|
+
private handleReloadCommand;
|
|
494
|
+
private resolveGroupInfo;
|
|
495
|
+
private handleNewSessionMenuAction;
|
|
496
|
+
private handleThreadCommand;
|
|
497
|
+
private handleForkCommand;
|
|
498
|
+
private resolveForkSourceThread;
|
|
499
|
+
private replyThreadCommandMessage;
|
|
500
|
+
private prepareThreadReplyPostResources;
|
|
501
|
+
private replyThreadTextMessage;
|
|
502
|
+
private updateSessionTopicThreadId;
|
|
503
|
+
private forwardSessionTopicToSourceThreadBestEffort;
|
|
504
|
+
private createNewSessionTopic;
|
|
505
|
+
private handleDeactivateCommand;
|
|
506
|
+
private cancelConversationStates;
|
|
507
|
+
private handleUserMessage;
|
|
508
|
+
private handleQueueCommand;
|
|
509
|
+
private handleGoalCommand;
|
|
510
|
+
private updateActiveGoalCommand;
|
|
511
|
+
private handleSideCommand;
|
|
512
|
+
private beginSideTurn;
|
|
513
|
+
private handlePlanCommand;
|
|
514
|
+
private handleExitCommand;
|
|
515
|
+
private handleCompactCommand;
|
|
516
|
+
private handleLogoCommand;
|
|
517
|
+
private handleBannerCommand;
|
|
518
|
+
private handleHelpCommand;
|
|
519
|
+
private handleStatusCommand;
|
|
520
|
+
private handleModelCommand;
|
|
521
|
+
private resolveCurrentThreadForModelCommand;
|
|
522
|
+
private formatStatusCard;
|
|
523
|
+
private formatStatusText;
|
|
524
|
+
private formatOwnerRateLimitStatus;
|
|
525
|
+
private formatOwnerRateLimitCardStatus;
|
|
526
|
+
private handleStopCommand;
|
|
527
|
+
private stopConversationState;
|
|
528
|
+
private processStatusCardHideAction;
|
|
529
|
+
private processCardAction;
|
|
530
|
+
private findActiveTurnForCardAction;
|
|
531
|
+
private executeStopAction;
|
|
532
|
+
private executeNextAction;
|
|
533
|
+
private executeQueueAction;
|
|
534
|
+
private executeRequestInputSubmitAction;
|
|
535
|
+
private executeRequestInputSkipAction;
|
|
536
|
+
private executePlanImplementAction;
|
|
537
|
+
private recordMenuActionBestEffort;
|
|
538
|
+
private recordCardActionBestEffort;
|
|
539
|
+
private captureMessageReceived;
|
|
540
|
+
private captureMenuActionReceived;
|
|
541
|
+
private captureCardActionReceived;
|
|
542
|
+
private handleNextCommand;
|
|
543
|
+
private handleSteerCommand;
|
|
544
|
+
private handleNewCommand;
|
|
545
|
+
private openNewThreadForMessage;
|
|
546
|
+
private steerOrDefer;
|
|
547
|
+
private startPendingBatch;
|
|
548
|
+
private schedulePendingMessage;
|
|
549
|
+
private tryRunPendingMessageDirectly;
|
|
550
|
+
private enqueuePendingMessage;
|
|
551
|
+
private tryStartRunnableQueueHead;
|
|
552
|
+
private tryConsumeWaitingQueue;
|
|
553
|
+
private interruptWaitingTurnWithMessage;
|
|
554
|
+
private startWaitingInterruptBatch;
|
|
555
|
+
private startImmediatePendingMessages;
|
|
556
|
+
private processPendingControlMessage;
|
|
557
|
+
private beginCompactTurn;
|
|
558
|
+
private refreshPendingMessagesBeforeStart;
|
|
559
|
+
private refreshPendingMessageBeforeStart;
|
|
560
|
+
private startTurnForMessages;
|
|
561
|
+
private beginGoalTurn;
|
|
562
|
+
private resolveThreadForMessage;
|
|
563
|
+
private profileForNewConversation;
|
|
564
|
+
private beginActiveTurn;
|
|
565
|
+
private replaceMissingThreadForActiveTurn;
|
|
566
|
+
private handleTurnStarted;
|
|
567
|
+
private handleSideTurnStarted;
|
|
568
|
+
private recordSideTokenUsageBestEffort;
|
|
569
|
+
private flushPendingSteers;
|
|
570
|
+
private handleRequestUserInput;
|
|
571
|
+
private handleSetThreadNameToolCall;
|
|
572
|
+
private handlePlanUpdated;
|
|
573
|
+
private finishActiveTurn;
|
|
574
|
+
private finishSideTurn;
|
|
575
|
+
private captureTurnEnd;
|
|
576
|
+
private clearPendingMessages;
|
|
577
|
+
private clearPendingMessagesBestEffort;
|
|
578
|
+
private cancelActiveTurn;
|
|
579
|
+
private cancelSideTurn;
|
|
580
|
+
private cancelAllSideTurns;
|
|
581
|
+
private failSideTurnForShutdown;
|
|
582
|
+
private failSideTurnsForShutdown;
|
|
583
|
+
private failSideTurnsForProfile;
|
|
584
|
+
private suspendActiveTurnForCodexAppServerExit;
|
|
585
|
+
private recoverSuspendedActiveTurnForCodexAppServerExit;
|
|
586
|
+
private suspendActiveTurnForShutdown;
|
|
587
|
+
private interruptActiveTurnBestEffort;
|
|
588
|
+
private clearActiveGoalBestEffort;
|
|
589
|
+
private unsubscribeSideThreadBestEffort;
|
|
590
|
+
private recordCodexThreadBestEffort;
|
|
591
|
+
private setThreadModeBestEffort;
|
|
592
|
+
private setThreadStatusBestEffort;
|
|
593
|
+
private recordOrReplaceCodexThreadBestEffort;
|
|
594
|
+
private renderThreadSummaryCard;
|
|
595
|
+
private handleCodexThreadNameUpdated;
|
|
596
|
+
private isMainConversationThread;
|
|
597
|
+
private applyThreadNameUpdate;
|
|
598
|
+
private syncCodexThreadNameBestEffort;
|
|
599
|
+
private logoImageKey;
|
|
600
|
+
private bannerImageKey;
|
|
601
|
+
private findActiveTurn;
|
|
602
|
+
private rememberPendingThreadName;
|
|
603
|
+
private consumePendingThreadName;
|
|
604
|
+
private updateThreadSummaryCardBestEffort;
|
|
605
|
+
private profileDefaultModelSettings;
|
|
606
|
+
private threadModelSettings;
|
|
607
|
+
private readCodexTurnModelSettingsBestEffort;
|
|
608
|
+
private readThreadTokenUsageBestEffort;
|
|
609
|
+
private resolveRecoveredUsageTarget;
|
|
610
|
+
private resolveFallbackUsageTargetMessageId;
|
|
611
|
+
private recordThreadTokenUsageBestEffort;
|
|
612
|
+
private recordLarkMessageTokenUsageBestEffort;
|
|
613
|
+
private patchActiveAgentCardTokenUsageBestEffort;
|
|
614
|
+
private markPendingMessagesProcessingBestEffort;
|
|
615
|
+
private markMessagesProcessingBestEffort;
|
|
616
|
+
private markActiveProcessingMessagesSteered;
|
|
617
|
+
private markMessagesSteeredBestEffort;
|
|
618
|
+
private markPendingMessagesQueuedBestEffort;
|
|
619
|
+
private markMessageRecalledBestEffort;
|
|
620
|
+
private updateQueuedMessageBestEffort;
|
|
621
|
+
private updateSideMessageMetadataBestEffort;
|
|
622
|
+
private markMessagesCompletedBestEffort;
|
|
623
|
+
private markMessagesFailedBestEffort;
|
|
624
|
+
private markMessagesInterruptedBestEffort;
|
|
625
|
+
private markPendingMessagesClearedBestEffort;
|
|
626
|
+
private getOrCreateConversation;
|
|
627
|
+
private resolveActiveThread;
|
|
628
|
+
private resumeThreadRecord;
|
|
629
|
+
private replaceThreadBindingBestEffort;
|
|
630
|
+
private getState;
|
|
631
|
+
private addReactionBestEffort;
|
|
632
|
+
private addQueuedReactionBestEffort;
|
|
633
|
+
private addQueuedReactionsBestEffort;
|
|
634
|
+
private clearQueuedReactionBestEffort;
|
|
635
|
+
private clearQueuedReactionsBestEffort;
|
|
636
|
+
private moveReactionBestEffort;
|
|
637
|
+
private clearReactionBestEffort;
|
|
638
|
+
private removeReactionBestEffort;
|
|
639
|
+
private canControlActiveTurn;
|
|
640
|
+
private canSteerActiveTurn;
|
|
641
|
+
private notifyThreadReplacementBestEffort;
|
|
642
|
+
private replyControlBestEffort;
|
|
643
|
+
private replyStatusCardBestEffort;
|
|
644
|
+
private sendEphemeralStatusCardBestEffort;
|
|
645
|
+
private sendDirectControlBestEffort;
|
|
646
|
+
private readCodexVersionBestEffort;
|
|
647
|
+
private recallMessageBestEffort;
|
|
648
|
+
private replyGroupUnauthorizedBestEffort;
|
|
649
|
+
private replyErrorBestEffort;
|
|
650
|
+
private replyAgentMessageForActiveBestEffort;
|
|
651
|
+
private recordImageGenerationForActiveBestEffort;
|
|
652
|
+
private updateAgentCardWithGeneratedImageBestEffort;
|
|
653
|
+
private updateAgentCardWithThreadNameBestEffort;
|
|
654
|
+
private recordGoalUpdateForActiveBestEffort;
|
|
655
|
+
private recordGoalClearedForActiveBestEffort;
|
|
656
|
+
private updateThreadGoalStatusBestEffort;
|
|
657
|
+
private clearThreadGoalStatusBestEffort;
|
|
658
|
+
private refreshThreadGoalStatusBestEffort;
|
|
659
|
+
private clearThreadGoalStatusAwaitBestEffort;
|
|
660
|
+
private goalNeedsResume;
|
|
661
|
+
private resumeGoalForActiveBestEffort;
|
|
662
|
+
private updateAgentCardWithMessageBestEffort;
|
|
663
|
+
private createAgentCardBestEffort;
|
|
664
|
+
private patchAgentCardBestEffort;
|
|
665
|
+
private notifyAgentCardBestEffort;
|
|
666
|
+
private completeAgentCardBestEffort;
|
|
667
|
+
private shouldUpdateCompletedAgentCardInPlace;
|
|
668
|
+
private updateCompletedAgentCardInPlace;
|
|
669
|
+
private resendCompletedAgentCard;
|
|
670
|
+
private replyAgentCardFilesBestEffort;
|
|
671
|
+
private failAgentCardBestEffort;
|
|
672
|
+
private patchRecoveredSideCardFailedBestEffort;
|
|
673
|
+
private interruptAgentCardBestEffort;
|
|
674
|
+
private pauseAgentCardForShutdownBestEffort;
|
|
675
|
+
private startAgentCardTimer;
|
|
676
|
+
private stopAgentCardTimer;
|
|
677
|
+
private moveAgentCardBestEffort;
|
|
678
|
+
private renderAgentCard;
|
|
679
|
+
private replyAgentMessageBestEffort;
|
|
680
|
+
private prepareAgentReplyForLark;
|
|
681
|
+
private prepareAgentFinalCardOutputForLark;
|
|
682
|
+
}
|
|
683
|
+
type LarkPostNode = {
|
|
684
|
+
tag: "md";
|
|
685
|
+
text: string;
|
|
686
|
+
} | {
|
|
687
|
+
tag: "text";
|
|
688
|
+
text: string;
|
|
689
|
+
} | {
|
|
690
|
+
tag: "at";
|
|
691
|
+
user_id: string;
|
|
692
|
+
user_name?: string;
|
|
693
|
+
} | {
|
|
694
|
+
tag: "img";
|
|
695
|
+
image_key: string;
|
|
696
|
+
} | {
|
|
697
|
+
tag: "media";
|
|
698
|
+
file_key: string;
|
|
699
|
+
};
|
|
700
|
+
type LarkPostContent = LarkPostNode[][];
|
|
701
|
+
export {};
|