@meetquinn/animactl 0.1.8-canary.245.1.f62c9be → 0.1.8
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/dist/server/messages/message.service.d.ts +0 -8
- package/dist/server/messages/message.service.d.ts.map +1 -1
- package/dist/server/messages/message.service.js +0 -64
- package/dist/server/tests/cli-message.test.js +0 -14
- package/dist/server/tools/message-history-cli.d.ts +0 -8
- package/dist/server/tools/message-history-cli.d.ts.map +1 -1
- package/dist/server/tools/message-history-cli.js +0 -55
- package/dist/server/tools/messages-cli.d.ts.map +1 -1
- package/dist/server/tools/messages-cli.js +0 -23
- package/dist/web/assets/{activity-CxrV3i0k.js → activity-BVldP4Pq.js} +1 -1
- package/dist/web/assets/{arc-K7sMaWun.js → arc-y9VrnbVz.js} +1 -1
- package/dist/web/assets/architecture-7EHR7CIX-omeV01gv.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-D2pfHN9z.js → architectureDiagram-3BPJPVTR-dWhu3Wi5.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-JsApgrq1.js → blockDiagram-GPEHLZMM-BIOm7rd6.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-DUY5ZwMY.js → c4Diagram-AAUBKEIU-BA8bKeTT.js} +1 -1
- package/dist/web/assets/channel-Cj74vMR_.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-B-yOYOn3.js → chunk-2J33WTMH-Cjp-7yY4.js} +1 -1
- package/dist/web/assets/{chunk-3OPIFGDE-DocwVjnk.js → chunk-3OPIFGDE-D22wm10K.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-DlYkc7vA.js → chunk-4BX2VUAB-Cnc9Sf-7.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Bq493tJZ.js → chunk-55IACEB6-Bk72BLSQ.js} +1 -1
- package/dist/web/assets/{chunk-5ZQYHXKU-Dsx-Wffn.js → chunk-5ZQYHXKU-CZcEFO_S.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-BjtPuuaL.js → chunk-727SXJPM-Czlp6noa.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-DrnHezOV.js → chunk-AQP2D5EJ-DvUvuuwD.js} +1 -1
- package/dist/web/assets/{chunk-BSJP7CBP-BB6NUEky.js → chunk-BSJP7CBP-SqRdMxqA.js} +1 -1
- package/dist/web/assets/{chunk-CSCIHK7Q-Ct4sx534.js → chunk-CSCIHK7Q-DKISp1Og.js} +3 -3
- package/dist/web/assets/{chunk-FMBD7UC4-D9a_V6Iu.js → chunk-FMBD7UC4-DFzyicgw.js} +1 -1
- package/dist/web/assets/{chunk-KSCS5N6A-CbPtLi1Y.js → chunk-KSCS5N6A-_sn9PS8d.js} +1 -1
- package/dist/web/assets/{chunk-L5ZTLDWV-Di6dZQLO.js → chunk-L5ZTLDWV-DDrUC9kd.js} +1 -1
- package/dist/web/assets/{chunk-LZXEDZCA-CoFRnT6J.js → chunk-LZXEDZCA-BNYSToR9.js} +2 -2
- package/dist/web/assets/{chunk-ND2GUHAM-BgV3eRRB.js → chunk-ND2GUHAM-DF-thjzZ.js} +1 -1
- package/dist/web/assets/{chunk-NZK2D7GU-DFaNbf0d.js → chunk-NZK2D7GU-DWnqvtOl.js} +1 -1
- package/dist/web/assets/{chunk-O5CBEL6O-n1glWaKY.js → chunk-O5CBEL6O-D-8BTuvF.js} +1 -1
- package/dist/web/assets/chunk-QZHKN3VN-M5P7kNca.js +1 -0
- package/dist/web/assets/chunk-WU5MYG2G-DVvYSNoY.js +1 -0
- package/dist/web/assets/{chunk-XPW4576I-Dj-OhOV9.js → chunk-XPW4576I-Bs1x7Vra.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BA2aLF97.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-BA2aLF97.js +1 -0
- package/dist/web/assets/{clipboard-CAJOJc1-.js → clipboard-BCyl_zTi.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-DrQrmNgs.js → cose-bilkent-S5V4N54A-RlLX_JHS.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-Bojj9qhB.js → dagre-BM42HDAG-r-bKQWlC.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-BwVzWVOF.js → diagram-2AECGRRQ-BjG0VorX.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-BXDOrJ1X.js → diagram-5GNKFQAL-CBGB0rGN.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-Q3Ow5EWr.js → diagram-KO2AKTUF-DhAEeM3n.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-XQOmfFYl.js → diagram-LMA3HP47-BWaphPhb.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-BMCPPDjb.js → diagram-OG6HWLK6-C7ukczsd.js} +1 -1
- package/dist/web/assets/{dist-BmSD3sMQ.js → dist-BVavXi56.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-CLYBjgbL.js → erDiagram-TEJ5UH35-Bkv1njfQ.js} +1 -1
- package/dist/web/assets/eventmodeling-FCH6USID-BVD7HBC1.js +1 -0
- package/dist/web/assets/{file-text-I8uhTpDP.js → file-text-Cfzfbo7N.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-DX_75gQz.js → flowDiagram-I6XJVG4X-CDUMIZxh.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DHOh9R73.js → ganttDiagram-6RSMTGT7-DWYSFbOX.js} +1 -1
- package/dist/web/assets/gitGraph-WXDBUCRP-DtcMCNK3.js +1 -0
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-BXMuXCI2.js → gitGraphDiagram-PVQCEYII-DmE7klu6.js} +1 -1
- package/dist/web/assets/{index-BaTqN_kJ.js → index-BC31DAWC.js} +2 -2
- package/dist/web/assets/info-J43DQDTF-0nAquh2a.js +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-CXfKzZON.js → infoDiagram-5YYISTIA-BYtKZ6QY.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-az3MCHCc.js → ishikawaDiagram-YF4QCWOH-BJAkK2UO.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-B8UBRnjS.js → journeyDiagram-JHISSGLW-KRKTy7We.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-B1xIF3lh.js → kanban-definition-UN3LZRKU-DTpZ-7RY.js} +1 -1
- package/dist/web/assets/katex-D-u_b8iy.js +1 -0
- package/dist/web/assets/{kb-Df6C05a4.js → kb-BSVQ2wxp.js} +3 -3
- package/dist/web/assets/{line-hfrkKxJ2.js → line-CPH_o3rA.js} +1 -1
- package/dist/web/assets/{linear-vmerzOPb.js → linear-4UU6yqXc.js} +1 -1
- package/dist/web/assets/{login-DFf5fbFG.js → login-BZqmZ4kN.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-oOFhHxq6.js → mermaid-parser.core-Bkfoiyjt.js} +2 -2
- package/dist/web/assets/{mermaid.core-e5-PzGVf.js → mermaid.core-DCXf8AfE.js} +3 -3
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-DYjhY-IA.js → mindmap-definition-RKZ34NQL-Cs-9B8ra.js} +1 -1
- package/dist/web/assets/packet-YPE3B663-B39SsEFw.js +1 -0
- package/dist/web/assets/pie-LRSECV5Y-CHoDCXaz.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-CoS7Wv3l.js → pieDiagram-4H26LBE5-DFYA7OP8.js} +1 -1
- package/dist/web/assets/profile-CTSMP5-l.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-Bg8mUVZ_.js → quadrantDiagram-W4KKPZXB-DKnS2_s2.js} +1 -1
- package/dist/web/assets/radar-GUYGQ44K-DIMotGvd.js +1 -0
- package/dist/web/assets/{reminders-ByvCUQQT.js → reminders-Gcud0HP5.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-DInyShSQ.js → requirementDiagram-4Y6WPE33-ksQdRxpA.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DBg6ssN3.js → sankeyDiagram-5OEKKPKP-MQGkfVWI.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-em0GirlQ.js → sequenceDiagram-3UESZ5HK-B6Kf2N83.js} +1 -1
- package/dist/web/assets/{src-BsMCNUkB.js → src-DwncC3TX.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-B1itjclA.js → stateDiagram-AJRCARHV-D6RMvWBn.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BAXwnEhr.js +1 -0
- package/dist/web/assets/{timeline-definition-PNZ67QCA-CvI6yYPS.js → timeline-definition-PNZ67QCA-Cvbf5suT.js} +1 -1
- package/dist/web/assets/treeView-BLDUP644-CU6UkdlZ.js +1 -0
- package/dist/web/assets/treemap-LRROVOQU-BGoCSkoq.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-3cEHx0BJ.js → vennDiagram-CIIHVFJN-p6vaAzDA.js} +1 -1
- package/dist/web/assets/wardley-L42UT6IY-K_nK5_uz.js +1 -0
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CoT7v0Mk.js → wardleyDiagram-YWT4CUSO-CTUvkCuk.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-MMgKxAI0.js → xychartDiagram-2RQKCTM6-DVycVnPa.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/architecture-7EHR7CIX-Ci9wSylq.js +0 -1
- package/dist/web/assets/channel-Bqn9LpNK.js +0 -1
- package/dist/web/assets/chunk-QZHKN3VN-BJNlBjFz.js +0 -1
- package/dist/web/assets/chunk-WU5MYG2G-XeurFrrd.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CmXDwK1o.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CmXDwK1o.js +0 -1
- package/dist/web/assets/eventmodeling-FCH6USID-BTN7Or2h.js +0 -1
- package/dist/web/assets/gitGraph-WXDBUCRP-ZTQ3hXZN.js +0 -1
- package/dist/web/assets/info-J43DQDTF-CK_BolNP.js +0 -1
- package/dist/web/assets/katex-GTTjc3As.js +0 -1
- package/dist/web/assets/packet-YPE3B663-B1V-7TlD.js +0 -1
- package/dist/web/assets/pie-LRSECV5Y-CHITdKdl.js +0 -1
- package/dist/web/assets/profile-3NpQfN1V.js +0 -1
- package/dist/web/assets/radar-GUYGQ44K-DWtbsuY9.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BH0na08_.js +0 -1
- package/dist/web/assets/treeView-BLDUP644-DAaXAAX6.js +0 -1
- package/dist/web/assets/treemap-LRROVOQU-Cqb_HCVr.js +0 -1
- package/dist/web/assets/wardley-L42UT6IY-CK9MRv-9.js +0 -1
|
@@ -10,13 +10,6 @@ export interface MessageListInput {
|
|
|
10
10
|
limit?: number;
|
|
11
11
|
since?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface MessageSearchInput {
|
|
14
|
-
before?: string;
|
|
15
|
-
channel?: string;
|
|
16
|
-
keywords: string[];
|
|
17
|
-
limit?: number;
|
|
18
|
-
since?: string;
|
|
19
|
-
}
|
|
20
13
|
export declare class MessageService {
|
|
21
14
|
private readonly store;
|
|
22
15
|
private readonly wakeQueueStore;
|
|
@@ -25,7 +18,6 @@ export declare class MessageService {
|
|
|
25
18
|
recordInboxItem(item: InboxItem): Promise<AgentMessageRecord | undefined>;
|
|
26
19
|
recordOutboxActivity(activity: Activity): Promise<AgentMessageRecord | undefined>;
|
|
27
20
|
list(input?: MessageListInput): Promise<AgentMessageHistoryPage>;
|
|
28
|
-
search(input: MessageSearchInput): Promise<AgentMessageHistoryPage>;
|
|
29
21
|
legacyBackfilled(): Promise<boolean>;
|
|
30
22
|
private backfillLegacyMessages;
|
|
31
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.service.d.ts","sourceRoot":"","sources":["../../../server/messages/message.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,
|
|
1
|
+
{"version":3,"file":"message.service.d.ts","sourceRoot":"","sources":["../../../server/messages/message.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAH9B,OAAO,EAAE,MAAM,EACE,KAAK,GAAE,YAAwC,EAC/C,cAAc,GAAE,cAA4C,EAC5D,aAAa,GAAE,aAA0C;IAGtE,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAOzE,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAOjF,IAAI,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAS1E,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;YAItB,sBAAsB;CAmBrC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEtE"}
|
|
@@ -33,22 +33,6 @@ export class MessageService {
|
|
|
33
33
|
const nextCursor = entries.length > limit ? (page.at(-1)?.timestamp ?? null) : null;
|
|
34
34
|
return { entries: page, nextCursor };
|
|
35
35
|
}
|
|
36
|
-
async search(input) {
|
|
37
|
-
await this.backfillLegacyMessages();
|
|
38
|
-
const keywords = normalizeSearchKeywords(input.keywords);
|
|
39
|
-
if (keywords.length === 0)
|
|
40
|
-
return { entries: [], nextCursor: null };
|
|
41
|
-
const limit = normalizeMessageLimit(input.limit);
|
|
42
|
-
const entries = (await this.store.readAll())
|
|
43
|
-
.filter((entry) => (!input.before || entry.timestamp < input.before) &&
|
|
44
|
-
(!input.since || entry.timestamp >= input.since) &&
|
|
45
|
-
(!input.channel || messageMatchesChannel(entry, input.channel)) &&
|
|
46
|
-
messageMatchesKeywords(entry, keywords))
|
|
47
|
-
.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
|
|
48
|
-
const page = entries.slice(0, limit);
|
|
49
|
-
const nextCursor = entries.length > limit ? (page.at(-1)?.timestamp ?? null) : null;
|
|
50
|
-
return { entries: page, nextCursor };
|
|
51
|
-
}
|
|
52
36
|
legacyBackfilled() {
|
|
53
37
|
return this.store.legacyBackfilled();
|
|
54
38
|
}
|
|
@@ -83,51 +67,3 @@ function normalizeMessageLimit(limit) {
|
|
|
83
67
|
return 100;
|
|
84
68
|
return Math.min(Math.max(1, Math.trunc(limit)), 500);
|
|
85
69
|
}
|
|
86
|
-
function normalizeSearchKeywords(keywords) {
|
|
87
|
-
return keywords
|
|
88
|
-
.flatMap((keyword) => keyword.split(/\s+/g))
|
|
89
|
-
.map((keyword) => keyword.trim().toLowerCase())
|
|
90
|
-
.filter(Boolean);
|
|
91
|
-
}
|
|
92
|
-
function messageMatchesKeywords(entry, keywords) {
|
|
93
|
-
const haystack = [
|
|
94
|
-
entry.actor,
|
|
95
|
-
entry.actorDisplayName,
|
|
96
|
-
entry.actorHandle,
|
|
97
|
-
entry.channelDisplayName,
|
|
98
|
-
entry.channelId,
|
|
99
|
-
entry.channelKind,
|
|
100
|
-
entry.channelName,
|
|
101
|
-
entry.dmHandle,
|
|
102
|
-
entry.dmUserId,
|
|
103
|
-
entry.messageTs,
|
|
104
|
-
entry.platform,
|
|
105
|
-
entry.text,
|
|
106
|
-
entry.threadTs,
|
|
107
|
-
]
|
|
108
|
-
.filter((value) => Boolean(value))
|
|
109
|
-
.join('\n')
|
|
110
|
-
.toLowerCase();
|
|
111
|
-
return keywords.every((keyword) => haystack.includes(keyword));
|
|
112
|
-
}
|
|
113
|
-
function messageMatchesChannel(entry, channel) {
|
|
114
|
-
const needle = normalizeChannelSearchTerm(channel);
|
|
115
|
-
if (!needle)
|
|
116
|
-
return true;
|
|
117
|
-
const candidates = [
|
|
118
|
-
entry.channelId,
|
|
119
|
-
entry.channelName,
|
|
120
|
-
entry.channelDisplayName,
|
|
121
|
-
entry.dmHandle,
|
|
122
|
-
entry.dmUserId,
|
|
123
|
-
];
|
|
124
|
-
return candidates.some((candidate) => {
|
|
125
|
-
if (!candidate)
|
|
126
|
-
return false;
|
|
127
|
-
const normalized = normalizeChannelSearchTerm(candidate);
|
|
128
|
-
return normalized === needle || candidate.trim().toLowerCase() === channel.trim().toLowerCase();
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
function normalizeChannelSearchTerm(value) {
|
|
132
|
-
return value.trim().toLowerCase().replace(/^[@#]/, '').replace(/^dm with @/i, '');
|
|
133
|
-
}
|
|
@@ -459,25 +459,11 @@ test('inbox and outbox commands show recent received and sent history', async ()
|
|
|
459
459
|
assert.equal(outbox.status, 0, outbox.stderr || outbox.stdout);
|
|
460
460
|
assert.match(outbox.stdout, /^Outbox \(1 entry, newest first\)/);
|
|
461
461
|
assert.match(outbox.stdout, /\[time=2026-05-11T00:06:00\.000Z channel=@alice channel_id=D-alice message_ts=1770000206\.000001\] sent: Sent the summary\./);
|
|
462
|
-
const search = await runNode([cliPath, 'message', 'search', 'launch', 'thread'], { env });
|
|
463
|
-
assert.equal(search.status, 0, search.stderr || search.stdout);
|
|
464
|
-
assert.match(search.stdout, /^Message search \(1 match, newest first\)/);
|
|
465
|
-
assert.match(search.stdout, /\[time=2026-05-11T00:00:00\.000Z direction=in channel=#product channel_id=C-product thread_ts=1770000200\.000001 message_ts=1770000200\.000002\] Alice Cooper \(@alice\): Can you summarize the launch thread\?/);
|
|
466
|
-
assert.doesNotMatch(search.stdout, /Second message for pagination/);
|
|
467
|
-
const dmSearch = await runNode([cliPath, 'message', 'search', 'summary', '--channel', '@alice'], { env });
|
|
468
|
-
assert.equal(dmSearch.status, 0, dmSearch.stderr || dmSearch.stdout);
|
|
469
|
-
assert.match(dmSearch.stdout, /^Message search \(1 match, newest first\)/);
|
|
470
|
-
assert.match(dmSearch.stdout, /\[time=2026-05-11T00:06:00\.000Z direction=out channel=@alice channel_id=D-alice message_ts=1770000206\.000001\] sent: Sent the summary\./);
|
|
471
462
|
}
|
|
472
463
|
finally {
|
|
473
464
|
await rm(stateDir, { force: true, recursive: true });
|
|
474
465
|
}
|
|
475
466
|
});
|
|
476
|
-
test('message search help states agent-visible history boundary', async () => {
|
|
477
|
-
const help = await runNode([cliPath, 'message', 'search', '--help']);
|
|
478
|
-
assert.equal(help.status, 0, help.stderr || help.stdout);
|
|
479
|
-
assert.match(help.stdout, /Search this agent-visible message history, not workspace search\./);
|
|
480
|
-
});
|
|
481
467
|
test('inbox command defaults to twenty entries', async () => {
|
|
482
468
|
const stateDir = await mkdtemp(join(tmpdir(), 'anima-cli-inbox-default-limit-test-'));
|
|
483
469
|
try {
|
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
export interface MessageSearchCliInput {
|
|
3
|
-
before?: string;
|
|
4
|
-
channel?: string;
|
|
5
|
-
keywords: string[];
|
|
6
|
-
limit?: number;
|
|
7
|
-
since?: string;
|
|
8
|
-
}
|
|
9
2
|
export declare function registerMessageHistoryCommands(program: Command): void;
|
|
10
|
-
export declare function runMessageSearch(opts: MessageSearchCliInput): Promise<void>;
|
|
11
3
|
//# sourceMappingURL=message-history-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-history-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/message-history-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,
|
|
1
|
+
{"version":3,"file":"message-history-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/message-history-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBrE"}
|
|
@@ -47,60 +47,18 @@ async function runMessageHistory(direction, opts) {
|
|
|
47
47
|
console.log(formatHistoryEntry(entry));
|
|
48
48
|
console.log(`[page has_more=${Boolean(page.nextCursor)} next_cursor=${page.nextCursor ?? '-'}]`);
|
|
49
49
|
}
|
|
50
|
-
export async function runMessageSearch(opts) {
|
|
51
|
-
const agentId = resolveToolAgentId({});
|
|
52
|
-
if (!agentId)
|
|
53
|
-
throw new Error('message search requires current agent context');
|
|
54
|
-
const keywords = normalizeSearchKeywords(opts.keywords);
|
|
55
|
-
if (keywords.length === 0)
|
|
56
|
-
throw new Error('message search requires at least one keyword');
|
|
57
|
-
const page = await messageServiceForAgent(agentId).search({
|
|
58
|
-
channel: opts.channel,
|
|
59
|
-
keywords,
|
|
60
|
-
...normalizeTimeWindow(opts),
|
|
61
|
-
limit: opts.limit ?? 20,
|
|
62
|
-
});
|
|
63
|
-
if (page.entries.length === 0) {
|
|
64
|
-
console.log('Message search found no matches in this agent-visible history.');
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
console.log(`Message search (${page.entries.length} match${page.entries.length === 1 ? '' : 'es'}, newest first)`);
|
|
68
|
-
for (const entry of page.entries)
|
|
69
|
-
console.log(formatSearchEntry(entry, keywords));
|
|
70
|
-
console.log(`[page has_more=${Boolean(page.nextCursor)} next_cursor=${page.nextCursor ?? '-'}]`);
|
|
71
|
-
}
|
|
72
50
|
function normalizeTimeWindow(opts) {
|
|
73
51
|
return {
|
|
74
52
|
...(opts.before ? { before: normalizeIsoCursor(opts.before, '--before') } : {}),
|
|
75
53
|
...(opts.since ? { since: normalizeIsoCursor(opts.since, '--since') } : {}),
|
|
76
54
|
};
|
|
77
55
|
}
|
|
78
|
-
function normalizeSearchKeywords(keywords) {
|
|
79
|
-
return keywords
|
|
80
|
-
.flatMap((keyword) => keyword.split(/\s+/g))
|
|
81
|
-
.map((keyword) => keyword.trim())
|
|
82
|
-
.filter(Boolean);
|
|
83
|
-
}
|
|
84
56
|
function normalizeIsoCursor(value, flag) {
|
|
85
57
|
const date = new Date(value);
|
|
86
58
|
if (!Number.isFinite(date.getTime()))
|
|
87
59
|
throw new Error(`${flag} must be an ISO timestamp`);
|
|
88
60
|
return date.toISOString();
|
|
89
61
|
}
|
|
90
|
-
function formatSearchEntry(entry, keywords) {
|
|
91
|
-
const attrs = [`time=${entry.timestamp}`, `direction=${entry.direction}`];
|
|
92
|
-
const surface = surfaceLabel(entry);
|
|
93
|
-
if (surface)
|
|
94
|
-
attrs.push(`channel=${surface}`);
|
|
95
|
-
if (entry.channelId && entry.channelId !== surface)
|
|
96
|
-
attrs.push(`channel_id=${entry.channelId}`);
|
|
97
|
-
if (entry.threadTs)
|
|
98
|
-
attrs.push(`thread_ts=${entry.threadTs}`);
|
|
99
|
-
if (entry.messageTs)
|
|
100
|
-
attrs.push(`message_ts=${entry.messageTs}`);
|
|
101
|
-
const lead = entry.direction === 'in' ? `${entry.actor ?? 'Unknown'}:` : `${outboxVerb(entry)}:`;
|
|
102
|
-
return `[${attrs.join(' ')}] ${lead} ${snippet(entry.text, keywords)}`;
|
|
103
|
-
}
|
|
104
62
|
function formatHistoryEntry(entry) {
|
|
105
63
|
const attrs = [`time=${entry.timestamp}`];
|
|
106
64
|
const surface = surfaceLabel(entry);
|
|
@@ -115,19 +73,6 @@ function formatHistoryEntry(entry) {
|
|
|
115
73
|
const lead = entry.direction === 'in' ? `${entry.actor ?? 'Unknown'}:` : `${outboxVerb(entry)}:`;
|
|
116
74
|
return `[${attrs.join(' ')}] ${lead} ${oneLineText(entry.text)}`;
|
|
117
75
|
}
|
|
118
|
-
function snippet(text, keywords) {
|
|
119
|
-
const normalized = text.replace(/\r?\n/g, ' ').replace(/\s+/g, ' ').trim();
|
|
120
|
-
if (normalized.length <= 240)
|
|
121
|
-
return normalized;
|
|
122
|
-
const lower = normalized.toLowerCase();
|
|
123
|
-
const firstMatch = keywords
|
|
124
|
-
.map((keyword) => lower.indexOf(keyword.toLowerCase()))
|
|
125
|
-
.filter((index) => index >= 0)
|
|
126
|
-
.sort((a, b) => a - b)[0] ?? 0;
|
|
127
|
-
const start = Math.max(0, Math.min(firstMatch - 80, normalized.length - 240));
|
|
128
|
-
const end = Math.min(normalized.length, start + 240);
|
|
129
|
-
return `${start > 0 ? '...' : ''}${normalized.slice(start, end)}${end < normalized.length ? '...' : ''}`;
|
|
130
|
-
}
|
|
131
76
|
function outboxVerb(entry) {
|
|
132
77
|
if (entry.kind === 'file')
|
|
133
78
|
return 'sent file';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/messages-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"messages-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/messages-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF9D"}
|
|
@@ -3,7 +3,6 @@ import { runMessageRead } from './message-read.js';
|
|
|
3
3
|
import { normalizeChatTargetOptions } from './chat-target-options.js';
|
|
4
4
|
import { runMessageReact } from './reactions.js';
|
|
5
5
|
import { runMessageSend, runMessageUpdate, } from './messages.js';
|
|
6
|
-
import { runMessageSearch } from './message-history-cli.js';
|
|
7
6
|
const GlobalFlags = z.object({});
|
|
8
7
|
const MessageReadSchema = GlobalFlags.extend({
|
|
9
8
|
after: z.string().optional(),
|
|
@@ -23,13 +22,6 @@ const MessageSendSchema = GlobalFlags.extend({
|
|
|
23
22
|
channel: z.string().optional(),
|
|
24
23
|
threadTs: z.string().optional(),
|
|
25
24
|
});
|
|
26
|
-
const MessageSearchSchema = GlobalFlags.extend({
|
|
27
|
-
before: z.string().optional(),
|
|
28
|
-
channel: z.string().optional(),
|
|
29
|
-
keywords: z.array(z.string()).min(1),
|
|
30
|
-
limit: z.coerce.number().int().positive().optional(),
|
|
31
|
-
since: z.string().optional(),
|
|
32
|
-
});
|
|
33
25
|
const MessageUpdateSchema = GlobalFlags.extend({
|
|
34
26
|
chatId: z.string().optional(),
|
|
35
27
|
channel: z.string().optional(),
|
|
@@ -82,21 +74,6 @@ export function registerMessageCommands(program) {
|
|
|
82
74
|
// Input: anima message send --chat-id <oc_...> [--thread-ts <om_or_omt>] < body (stdin)
|
|
83
75
|
// Output: sent successfully. (channel=#<name> | dm=<handle>)[, thread_ts=<ts>], message_ts=<ts>.
|
|
84
76
|
// Failure: human-readable error to stderr; exit 1.
|
|
85
|
-
message
|
|
86
|
-
.command('search')
|
|
87
|
-
.description('Search this agent-visible message history, not workspace search.')
|
|
88
|
-
.argument('<keywords...>', 'keywords to search for; all keywords must match')
|
|
89
|
-
.option('--channel <channel>', 'only search one channel/DM by id or display label')
|
|
90
|
-
.option('--limit <n>', 'max matches to return (default: 20; hard cap: 500)')
|
|
91
|
-
.option('--before <iso>', 'matches before this ISO timestamp')
|
|
92
|
-
.option('--since <iso>', 'matches at or after this ISO timestamp')
|
|
93
|
-
.action(async (keywords, _, command) => {
|
|
94
|
-
const opts = MessageSearchSchema.parse({
|
|
95
|
-
...command.optsWithGlobals(),
|
|
96
|
-
keywords,
|
|
97
|
-
});
|
|
98
|
-
await runMessageSearch(opts);
|
|
99
|
-
});
|
|
100
77
|
message
|
|
101
78
|
.command('send')
|
|
102
79
|
.description('Post a Slack or Feishu message.\nMessage body is read from stdin.')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./file-text-I8uhTpDP.js";import{$ as t,$t as n,Bt as r,Ct as i,Ft as a,J as o,Mt as s,Pt as c,St as l,Vt as u,X as d,Y as f,Z as p,_t as ee,a as m,an as h,bt as g,cn as _,dn as te,en as ne,et as v,ft as y,gn as re,in as ie,ln as ae,lt as oe,n as se,nn as ce,o as b,on as le,ot as x,pn as S,q as ue,r as de,rn as C,s as fe,sn as w,t as pe,un as me,vt as T}from"./index-BaTqN_kJ.js";var he=class extends h{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:le(t,n.data),hasPreviousPage:w(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function ge(e,t){return C(e,he,t)}var _e=i(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ve=i(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),E=re(S(),1),D=new Set([`runtime.started`,`runtime.output`,`runtime.followup_appended`,`runtime.steered`,`runtime.pending`,`runtime.steer_failed`]);function O(e){return!!(e===`provider.reasoning`||e.endsWith(`.context.stats`)||e.endsWith(`.system.init`)||e.includes(`.stream.`)||e.includes(`.reasoning.`)||e.endsWith(`.thinking.delta`)||e.endsWith(`.content.part`)||e.endsWith(`.tool.call.part`)||e.endsWith(`.tool_result`)||e.endsWith(`.hook.triggered`)||e.endsWith(`.hook.resolved`)||e.endsWith(`.plan.display`)||e.endsWith(`.plan.updated`)||e.endsWith(`.diff.updated`)||e.endsWith(`.subagent.event`)||e.endsWith(`.mcp.progress`)||e.endsWith(`.raw_response_item.completed`)||e.endsWith(`.steer.consumed`)||e.endsWith(`.turn.started`)||e.endsWith(`.turn.completed`)||e.endsWith(`.step.started`)||e.includes(`.outputDelta`)||e.includes(`.patchUpdated`))}function ye(e,t=!1){let n=e.events.flatMap(e=>e.kind===`activity`?[e.activity]:[]),r=e.events.flatMap(e=>e.kind===`inbox`?[e.item]:[]),i=new Map;for(let e of n){let t=typeof e.payload?.parentToolCallId==`string`?e.payload.parentToolCallId:void 0;if(!t)continue;let n=typeof e.payload?.subRunId==`string`?e.payload.subRunId:`__default__`;i.has(t)||i.set(t,new Map);let r=i.get(t),a=r.get(n)??[];a.push(e),r.set(n,a)}let a=new Map;for(let e of n){if(e.type!==`tool.call.completed`||e.payload?.tool!==`anima.reminder.fire`)continue;let t=typeof e.payload.reminderId==`string`?e.payload.reminderId:``;if(!t)continue;let n=typeof e.payload.firedCount==`number`?e.payload.firedCount:1,r=typeof e.payload.scheduleKind==`string`?e.payload.scheduleKind:`once`;a.set(t,{firedCount:n,scheduleKind:r})}let o=[];for(let e of r){let t=e.kind===`reminder`?z(e):void 0,n=t?a.get(t):void 0;o.push({kind:`message-in`,event:e,timestamp:xe(e),surface:N(e,n),followupAppended:!1,...n?{wakeMeta:n}:{}})}for(let e of n){if(typeof e.payload?.parentToolCallId==`string`||e.type===`runtime.steer_failed`)continue;if(e.type===`tool.call.completed`||e.type===`external.effect.completed`){let t=e.payload?.tool,n=e.payload?.effect;if(t===`anima.message.send`||t===`anima.message.update`||n===`slack.message.send`||n===`slack.message.update`||n===`feishu.message.send`){let r=e.payload?.text;o.push({kind:`message-out`,activity:e,text:typeof r==`string`?r:``,timestamp:e.createdAt,surface:R(e),isEdit:t===`anima.message.update`||n===`slack.message.update`});continue}if(t===`anima.file.send`||n===`slack.file.send`){let t=e.payload??{},n=typeof t.caption==`string`?t.caption:``,r=typeof t.permalink==`string`?t.permalink:void 0,i=M(t.uploads);o.push({kind:`file-out`,activity:e,caption:n,files:i,...r?{permalink:r}:{},timestamp:e.createdAt,surface:R(e)});continue}if(t===`anima.reminder.fire`)continue;if(t===`anima.message.react`||n===`slack.reaction`){let t=e.payload??{},n=t.action===`removed`?`removed`:`added`,r=typeof t.name==`string`?t.name:``,i=t.noop===!0;o.push({kind:`reaction-out`,activity:e,action:n,emoji:r,noop:i,timestamp:e.createdAt,surface:R(e)});continue}}if(e.type===`tool.call.started`||e.type===`tool.call.completed`||e.type===`external.effect.started`){let t=e.payload??{},n=String(t.tool??``);if(e.type===`external.effect.started`||e.type===`tool.call.started`&&n.startsWith(`anima.`))continue;let r=String(t.providerToolName??``).toLowerCase();if(r===`shell`||r===`bash`){let e=String(t.command??t.target??``).trim();if(/^(\/\S*sh\s+-l?c\s+['"])?\s*anima\s+(message|file|reminder|follow|subscription|ask)\b/.test(e))continue}}if(e.type===`runtime.event`){if(O(String(e.payload?.eventType??``)))continue}else if(!t&&D.has(e.type))continue;let n=typeof e.payload?.providerToolId==`string`?e.payload.providerToolId:void 0,r=n?i.get(n):void 0,a=r?Se(r,t):void 0;o.push({kind:`step`,activity:e,timestamp:e.createdAt,...a?{subagentStreams:a}:{}})}return o.sort((e,t)=>{let n=e.timestamp.localeCompare(t.timestamp);return n===0?j(e)-j(t):n}),o}function be(e){let t=[];for(let n of e.entries){if(n.direction===`in`){let e=k(n);t.push({kind:`message-in`,event:e,timestamp:n.timestamp,surface:N(e),followupAppended:!1});continue}if(n.kind===`message`){let e=A(n);t.push({kind:`message-out`,activity:e,text:n.text,timestamp:n.timestamp,surface:R(e),isEdit:n.isEdit===!0});continue}if(n.kind===`file`){let e=A(n);t.push({kind:`file-out`,activity:e,caption:n.text.split(/\r?\nFiles:/)[0]??``,files:(n.files??[]).map((e,t)=>({fileId:e.fileId??`${n.messageId}:file:${t}`,filename:e.filename,mimetype:e.mimetype??`application/octet-stream`,...e.permalink?{permalink:e.permalink}:{},sizeBytes:e.sizeBytes??0,...e.thumb360?{thumb360:e.thumb360}:{},...e.thumb720?{thumb720:e.thumb720}:{}})),...n.permalink?{permalink:n.permalink}:{},timestamp:n.timestamp,surface:R(e)});continue}if(n.kind===`reaction`){let e=A(n);t.push({kind:`reaction-out`,activity:e,action:n.reaction?.action??`added`,emoji:n.reaction?.name??``,noop:n.reaction?.noop===!0,timestamp:n.timestamp,surface:R(e)})}}return t.sort((e,t)=>e.timestamp.localeCompare(t.timestamp))}function k(e){let t={handling:{completedAt:e.timestamp,createdAt:e.timestamp,status:`completed`,updatedAt:e.timestamp},id:e.source.kind===`inbox`?e.source.id:e.messageId,receivedAt:e.timestamp};if(e.kind===`reminder`)return{...t,kind:`reminder`,reminderId:e.reminderId??e.source.id};if(e.kind===`onboarding`){if(e.platform===`feishu`){let n=e.actorUserId??``;return{...t,kind:`feishu_onboarding`,owner:{openId:n},target:{platform:`feishu`,receiveId:n,receiveIdType:`open_id`},text:e.text}}return{...t,channelId:e.channelId??``,kind:`onboarding`,operator:{displayName:e.actorDisplayName??e.actor??`Owner`,...e.actorHandle?{handle:e.actorHandle}:{},slackUserId:e.actorUserId??``},teamId:``,text:e.text}}return e.kind===`choice_response`?{...t,answeredBy:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorHandle?{handle:e.actorHandle}:{},slackUserId:e.actorUserId??``},askId:e.source.id,channelId:e.channelId??``,...e.channelName?{channelName:e.channelName}:{},kind:`choice_response`,messageTs:e.messageTs??``,optionId:e.optionLabel??e.messageId,optionLabel:e.optionLabel??e.text,question:e.question??``,teamId:``,threadTs:e.threadTs??``}:e.platform===`feishu`?{...t,actor:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorUserId?{openId:e.actorUserId}:{}},chatId:e.channelId??``,chatType:e.channelKind??`group`,...e.files?.length?{files:e.files.map((t,n)=>({id:t.fileId??`${e.messageId}:file:${n}`,mimetype:t.mimetype??`application/octet-stream`,name:t.filename,sizeBytes:t.sizeBytes??0}))}:{},kind:`feishu`,messageId:e.messageTs??e.messageId,text:e.text,...e.threadTs?{threadId:e.threadTs}:{}}:{...t,actor:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorHandle?{handle:e.actorHandle}:{},...e.actorUserId?{userId:e.actorUserId}:{}},channelId:e.channelId??``,...e.channelName?{channelName:e.channelName}:{},...e.files?.length?{files:e.files.map((t,n)=>({id:t.fileId??`${e.messageId}:file:${n}`,mimetype:t.mimetype??`application/octet-stream`,name:t.filename,sizeBytes:t.sizeBytes??0}))}:{},kind:`slack`,messageTs:e.messageTs??``,...e.permalink?{permalink:e.permalink}:{},teamId:``,text:e.text,...e.threadTs?{threadTs:e.threadTs}:{}}}function A(e){let t={channel:e.channelId,channelDisplayName:e.channelDisplayName,channelKind:e.channelKind,channelName:e.channelName,dmHandle:e.dmHandle,dmUserId:e.dmUserId,permalink:e.permalink,platform:e.platform,status:`completed`,text:e.text,threadTs:e.threadTs,ts:e.messageTs};return e.kind===`message`?t.effect=e.platform===`feishu`?`feishu.message.send`:e.isEdit?`slack.message.update`:`slack.message.send`:e.kind===`file`?(t.effect=`slack.file.send`,t.caption=e.text.split(/\r?\nFiles:/)[0]??``,t.uploads=(e.files??[]).map((t,n)=>({fileId:t.fileId??`${e.messageId}:file:${n}`,filename:t.filename,mimetype:t.mimetype??`application/octet-stream`,permalink:t.permalink,sizeBytes:t.sizeBytes??0,thumb360:t.thumb360,thumb720:t.thumb720}))):e.kind===`reaction`&&(t.effect=`slack.reaction`,t.action=e.reaction?.action??`added`,t.name=e.reaction?.name??``,t.noop=e.reaction?.noop===!0,t.targetTs=e.messageTs),{activityId:e.source.kind===`activity`?e.source.id:e.messageId,createdAt:e.timestamp,payload:t,type:`external.effect.completed`}}function j(e){return e.kind===`message-in`?0:e.kind===`message-out`||e.kind===`file-out`||e.kind===`reaction-out`?1:e.kind===`step`&&e.activity.type===`runtime.completed`?3:2}function M(e){return Array.isArray(e)?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=typeof t.fileId==`string`?t.fileId:``,r=typeof t.filename==`string`?t.filename:``;return!n||!r?[]:[{fileId:n,filename:r,mimetype:typeof t.mimetype==`string`?t.mimetype:`application/octet-stream`,sizeBytes:typeof t.sizeBytes==`number`?t.sizeBytes:0,...typeof t.permalink==`string`?{permalink:t.permalink}:{},...typeof t.thumb360==`string`?{thumb360:t.thumb360}:{},...typeof t.thumb720==`string`?{thumb720:t.thumb720}:{}}]}):[]}function N(e,t){return P(e)?{kind:`onboarding`,label:`Onboarding`}:e.kind===`reminder`?{kind:`reminder`,label:t&&t.scheduleKind!==`once`?`Reminder · fire #${t.firedCount}`:`Reminder`}:e.kind===`choice_response`?L(e):e.kind===`feishu`?I(e):e.kind===`slack`?F(e):{kind:`onboarding`,label:`Onboarding`}}function P(e){return e.kind===`onboarding`||e.kind===`feishu_onboarding`||e.id.startsWith(`agent-onboarding:`)}function F(e){let t=e.channelId??`unknown-channel`,n=e.channelName,r=e.threadTs,i=t.startsWith(`D`)?`dm`:r?`thread`:`channel`,a=n?`#${n}`:t;if(i===`dm`){let t=e.actor?.handle||e.actor?.displayName;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}return i===`thread`?{kind:`thread`,label:`${a} · thread`}:{kind:`channel`,label:a}}function I(e){let t=e.chatType===`p2p`?`Feishu DM`:`Feishu ${e.chatType||`chat`}`;return e.threadId?{kind:`thread`,label:`${t} · topic`}:e.chatType===`p2p`?{kind:`dm`,label:t}:{kind:`channel`,label:t}}function L(e){let t=e.channelId??`unknown-channel`,n=e.channelName,r=e.threadTs,i=t.startsWith(`D`)?`dm`:r?`thread`:`channel`,a=n?n.startsWith(`#`)?n:`#${n}`:t;if(i===`dm`){let t=e.answeredBy.handle||e.answeredBy.displayName;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}return i===`thread`?{kind:`thread`,label:`${a} · thread`}:{kind:`channel`,label:a}}function R(e){let t=e.payload??{},n=typeof t.channel==`string`?t.channel:``,r=typeof t.channelName==`string`?t.channelName:``,i=typeof t.channelDisplayName==`string`?t.channelDisplayName:``,a=typeof t.channelKind==`string`?t.channelKind:``,o=typeof t.dmHandle==`string`?t.dmHandle:``,s=typeof t.threadTs==`string`?t.threadTs:``;if((typeof t.platform==`string`?t.platform:``)===`feishu`){let e=a||(n.startsWith(`oc_`)?`group`:`chat`);if(e===`open_id`)return{kind:`dm`,label:i||`Feishu owner`};let t=e===`p2p`?`Feishu DM`:`Feishu ${e}`;return s?{kind:`thread`,label:`${t} · topic`}:e===`p2p`?{kind:`dm`,label:t}:{kind:`channel`,label:t}}if(o)return{kind:`dm`,label:`@${o.replace(/^@/,``)}`};if(n){if(a===`dm`||n.startsWith(`D`)&&!r&&!i){let e=i.replace(/^DM with /i,``),t=e&&e!==i?e:``;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}let e=r?`#${r}`:i?i.startsWith(`#`)?i:`#${i}`:n;return s?{kind:`thread`,label:e}:{kind:`channel`,label:e}}return{kind:`reminder`,label:`Reminder`}}function xe(e){return e.receivedAt??new Date(0).toISOString()}function z(e){if(e.kind===`reminder`)return e.reminderId}function Se(e,t){let n=[];for(let[r,i]of e.entries()){let e=i[0],a=e&&typeof e.payload?.name==`string`?e.payload.name:void 0,o=e&&typeof e.payload?.role==`string`?e.payload.role:void 0,s=i.map(e=>typeof e.payload?.model==`string`?e.payload.model:void 0).find(e=>!!e),c=e&&typeof e.payload?.depth==`number`?e.payload.depth:1,l=V(i,t);n.push({subRunId:r,...a?{name:a}:{},...o?{role:o}:{},...s?{model:s}:{},depth:c,items:l})}return n.sort((e,t)=>{let n=e.items[0]?.timestamp??``,r=t.items[0]?.timestamp??``;return n.localeCompare(r)}),n}function Ce(e){if(!e)return;let t=e.toLowerCase();return t.includes(`fable`)?`Fable`:t.includes(`haiku`)?`Haiku`:t.includes(`sonnet`)?`Sonnet`:t.includes(`opus`)?`Opus`:e.replace(/-\d{8}$/,``)}function B(e){let t=e.map(e=>[e.role,Ce(e.model)].filter(Boolean).join(` · `)).filter(Boolean),n=Array.from(new Set(t));return n.length>0?n.join(`, `):void 0}function V(e,t){let n=[];for(let r of e)if(r.type!==`runtime.steer_failed`){if(r.type===`tool.call.completed`||r.type===`external.effect.completed`){let e=r.payload?.tool,t=r.payload?.effect;if(e===`anima.message.send`||e===`anima.message.update`||t===`slack.message.send`||t===`slack.message.update`||t===`feishu.message.send`){let i=r.payload?.text;n.push({kind:`message-out`,activity:r,text:typeof i==`string`?i:``,timestamp:r.createdAt,surface:R(r),isEdit:e===`anima.message.update`||t===`slack.message.update`});continue}if(e===`anima.file.send`||t===`slack.file.send`){let e=r.payload??{},t=typeof e.caption==`string`?e.caption:``,i=typeof e.permalink==`string`?e.permalink:void 0,a=M(e.uploads);n.push({kind:`file-out`,activity:r,caption:t,files:a,...i?{permalink:i}:{},timestamp:r.createdAt,surface:R(r)});continue}if(e===`anima.reminder.fire`)continue;if(e===`anima.message.react`||t===`slack.reaction`){let e=r.payload??{},t=e.action===`removed`?`removed`:`added`,i=typeof e.name==`string`?e.name:``,a=e.noop===!0;n.push({kind:`reaction-out`,activity:r,action:t,emoji:i,noop:a,timestamp:r.createdAt,surface:R(r)});continue}}if(r.type===`tool.call.started`||r.type===`tool.call.completed`||r.type===`external.effect.started`){let e=r.payload??{},t=String(e.tool??``);if(r.type===`external.effect.started`||r.type===`tool.call.started`&&t.startsWith(`anima.`))continue;let n=String(e.providerToolName??``).toLowerCase();if(n===`shell`||n===`bash`){let t=String(e.command??e.target??``).trim();if(/^(\/\S*sh\s+-l?c\s+['"])?\s*anima\s+(message|file|reminder|follow|subscription|ask)\b/.test(t))continue}}if(r.type===`runtime.event`){if(O(String(r.payload?.eventType??``)))continue}else if(!t&&D.has(r.type))continue;n.push({kind:`step`,activity:r,timestamp:r.createdAt})}return n.sort((e,t)=>e.timestamp.localeCompare(t.timestamp)),n}var H=`var(--color-activity-tool)`,U=`var(--color-health-error)`,W=`var(--color-health-warn)`,we=`var(--color-health-ok)`;function Te(e){if(G(e))return!0;if(e.type===`tool.call.started`){let t=e.payload??{},n=String(t.providerToolName||t.tool||``).toLowerCase().replace(/^(claude|codex|kimi)\./,``);return[`read`,`readfile`,`readmediafile`,`write`,`writefile`,`edit`,`multiedit`,`bash`,`shell`,`webfetch`,`fetchurl`,`websearch`,`searchweb`,`grep`,`glob`,`ls`,`todowrite`,`settodolist`,`filechange`,`strreplacefile`,`agent`,`skill`,`taskcreate`,`taskupdate`].includes(n)}if(e.type===`tool.call.completed`||e.type===`external.effect.completed`){let t=String(e.payload?.tool??``).toLowerCase(),n=String(e.payload?.effect??``).toLowerCase();return!!(n===`slack.message.send`||n===`slack.message.update`||n===`slack.file.send`||n===`slack.reaction`||n===`slack.ask.post`||t===`anima.message.read`||t.startsWith(`anima.reminder.`)&&t!==`anima.reminder.list`)}if(e.type===`runtime.completed`||e.type===`runtime.aborted`||e.type===`anima.session.rotate`||e.type===`anima.subscription.add`||e.type===`anima.subscription.remove`||e.type===`agent.text`)return!0;if(e.type===`runtime.event`){let t=String(e.payload?.eventType??``);return!!(t.endsWith(`.compact.started`)||t.endsWith(`.compact.completed`)||t.endsWith(`.compact.failed`))}return!1}function G(e){return e.type===`runtime.event`&&String(e.payload?.eventType??``).endsWith(`.failed`)?!0:e.type.endsWith(`.failed`)||e.type===`runtime.followup_failed`||e.type===`runtime.steer_failed`}function K(e){let t=e.payload??{},n=String(t.providerToolName||t.tool||``).replace(/^claude\./,``),r=n.toLowerCase();if(e.type!==`runtime.event`&&G(e)){let i=X(t,[`summary`,`text`,`error`]);if(e.type===`runtime.failed`)return{title:t.failureSource===`provider`?`Provider failure`:`Run failed`,...Z(i,200),color:U,kind:`failure`};if(e.type===`runtime.followup_failed`)return{title:`Follow-up failed`,...Z(X(t,[`reason`,`error`]),200),color:U,kind:`failure`};let a=Ee(r,i);if(a)return a;if(e.type===`external.effect.failed`){let e=Ee(String(t.effect??``).toLowerCase(),i);if(e)return e}if(r===`bash`||r===`shell`){let e=Ae(X(t,[`command`,`target`]));if(e){let t=Be(i);return{title:n?`Failed: ${n}`:`Failed`,...Z(t?`${e} · ${t}`:e,200),color:U,kind:`failure`}}}let o=X(t,[`target`,`command`]);if(o){let e=[o,Be(i)].filter(Boolean).join(` · `),t=[o,i].filter(Boolean).join(`
|
|
1
|
+
import{t as e}from"./file-text-Cfzfbo7N.js";import{$ as t,$t as n,Bt as r,Ct as i,Ft as a,J as o,Mt as s,Pt as c,St as l,Vt as u,X as d,Y as f,Z as p,_t as ee,a as m,an as h,bt as g,cn as _,dn as te,en as ne,et as v,ft as y,gn as re,in as ie,ln as ae,lt as oe,n as se,nn as ce,o as b,on as le,ot as x,pn as S,q as ue,r as de,rn as C,s as fe,sn as w,t as pe,un as me,vt as T}from"./index-BC31DAWC.js";var he=class extends h{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:le(t,n.data),hasPreviousPage:w(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function ge(e,t){return C(e,he,t)}var _e=i(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ve=i(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),E=re(S(),1),D=new Set([`runtime.started`,`runtime.output`,`runtime.followup_appended`,`runtime.steered`,`runtime.pending`,`runtime.steer_failed`]);function O(e){return!!(e===`provider.reasoning`||e.endsWith(`.context.stats`)||e.endsWith(`.system.init`)||e.includes(`.stream.`)||e.includes(`.reasoning.`)||e.endsWith(`.thinking.delta`)||e.endsWith(`.content.part`)||e.endsWith(`.tool.call.part`)||e.endsWith(`.tool_result`)||e.endsWith(`.hook.triggered`)||e.endsWith(`.hook.resolved`)||e.endsWith(`.plan.display`)||e.endsWith(`.plan.updated`)||e.endsWith(`.diff.updated`)||e.endsWith(`.subagent.event`)||e.endsWith(`.mcp.progress`)||e.endsWith(`.raw_response_item.completed`)||e.endsWith(`.steer.consumed`)||e.endsWith(`.turn.started`)||e.endsWith(`.turn.completed`)||e.endsWith(`.step.started`)||e.includes(`.outputDelta`)||e.includes(`.patchUpdated`))}function ye(e,t=!1){let n=e.events.flatMap(e=>e.kind===`activity`?[e.activity]:[]),r=e.events.flatMap(e=>e.kind===`inbox`?[e.item]:[]),i=new Map;for(let e of n){let t=typeof e.payload?.parentToolCallId==`string`?e.payload.parentToolCallId:void 0;if(!t)continue;let n=typeof e.payload?.subRunId==`string`?e.payload.subRunId:`__default__`;i.has(t)||i.set(t,new Map);let r=i.get(t),a=r.get(n)??[];a.push(e),r.set(n,a)}let a=new Map;for(let e of n){if(e.type!==`tool.call.completed`||e.payload?.tool!==`anima.reminder.fire`)continue;let t=typeof e.payload.reminderId==`string`?e.payload.reminderId:``;if(!t)continue;let n=typeof e.payload.firedCount==`number`?e.payload.firedCount:1,r=typeof e.payload.scheduleKind==`string`?e.payload.scheduleKind:`once`;a.set(t,{firedCount:n,scheduleKind:r})}let o=[];for(let e of r){let t=e.kind===`reminder`?z(e):void 0,n=t?a.get(t):void 0;o.push({kind:`message-in`,event:e,timestamp:xe(e),surface:N(e,n),followupAppended:!1,...n?{wakeMeta:n}:{}})}for(let e of n){if(typeof e.payload?.parentToolCallId==`string`||e.type===`runtime.steer_failed`)continue;if(e.type===`tool.call.completed`||e.type===`external.effect.completed`){let t=e.payload?.tool,n=e.payload?.effect;if(t===`anima.message.send`||t===`anima.message.update`||n===`slack.message.send`||n===`slack.message.update`||n===`feishu.message.send`){let r=e.payload?.text;o.push({kind:`message-out`,activity:e,text:typeof r==`string`?r:``,timestamp:e.createdAt,surface:R(e),isEdit:t===`anima.message.update`||n===`slack.message.update`});continue}if(t===`anima.file.send`||n===`slack.file.send`){let t=e.payload??{},n=typeof t.caption==`string`?t.caption:``,r=typeof t.permalink==`string`?t.permalink:void 0,i=M(t.uploads);o.push({kind:`file-out`,activity:e,caption:n,files:i,...r?{permalink:r}:{},timestamp:e.createdAt,surface:R(e)});continue}if(t===`anima.reminder.fire`)continue;if(t===`anima.message.react`||n===`slack.reaction`){let t=e.payload??{},n=t.action===`removed`?`removed`:`added`,r=typeof t.name==`string`?t.name:``,i=t.noop===!0;o.push({kind:`reaction-out`,activity:e,action:n,emoji:r,noop:i,timestamp:e.createdAt,surface:R(e)});continue}}if(e.type===`tool.call.started`||e.type===`tool.call.completed`||e.type===`external.effect.started`){let t=e.payload??{},n=String(t.tool??``);if(e.type===`external.effect.started`||e.type===`tool.call.started`&&n.startsWith(`anima.`))continue;let r=String(t.providerToolName??``).toLowerCase();if(r===`shell`||r===`bash`){let e=String(t.command??t.target??``).trim();if(/^(\/\S*sh\s+-l?c\s+['"])?\s*anima\s+(message|file|reminder|follow|subscription|ask)\b/.test(e))continue}}if(e.type===`runtime.event`){if(O(String(e.payload?.eventType??``)))continue}else if(!t&&D.has(e.type))continue;let n=typeof e.payload?.providerToolId==`string`?e.payload.providerToolId:void 0,r=n?i.get(n):void 0,a=r?Se(r,t):void 0;o.push({kind:`step`,activity:e,timestamp:e.createdAt,...a?{subagentStreams:a}:{}})}return o.sort((e,t)=>{let n=e.timestamp.localeCompare(t.timestamp);return n===0?j(e)-j(t):n}),o}function be(e){let t=[];for(let n of e.entries){if(n.direction===`in`){let e=k(n);t.push({kind:`message-in`,event:e,timestamp:n.timestamp,surface:N(e),followupAppended:!1});continue}if(n.kind===`message`){let e=A(n);t.push({kind:`message-out`,activity:e,text:n.text,timestamp:n.timestamp,surface:R(e),isEdit:n.isEdit===!0});continue}if(n.kind===`file`){let e=A(n);t.push({kind:`file-out`,activity:e,caption:n.text.split(/\r?\nFiles:/)[0]??``,files:(n.files??[]).map((e,t)=>({fileId:e.fileId??`${n.messageId}:file:${t}`,filename:e.filename,mimetype:e.mimetype??`application/octet-stream`,...e.permalink?{permalink:e.permalink}:{},sizeBytes:e.sizeBytes??0,...e.thumb360?{thumb360:e.thumb360}:{},...e.thumb720?{thumb720:e.thumb720}:{}})),...n.permalink?{permalink:n.permalink}:{},timestamp:n.timestamp,surface:R(e)});continue}if(n.kind===`reaction`){let e=A(n);t.push({kind:`reaction-out`,activity:e,action:n.reaction?.action??`added`,emoji:n.reaction?.name??``,noop:n.reaction?.noop===!0,timestamp:n.timestamp,surface:R(e)})}}return t.sort((e,t)=>e.timestamp.localeCompare(t.timestamp))}function k(e){let t={handling:{completedAt:e.timestamp,createdAt:e.timestamp,status:`completed`,updatedAt:e.timestamp},id:e.source.kind===`inbox`?e.source.id:e.messageId,receivedAt:e.timestamp};if(e.kind===`reminder`)return{...t,kind:`reminder`,reminderId:e.reminderId??e.source.id};if(e.kind===`onboarding`){if(e.platform===`feishu`){let n=e.actorUserId??``;return{...t,kind:`feishu_onboarding`,owner:{openId:n},target:{platform:`feishu`,receiveId:n,receiveIdType:`open_id`},text:e.text}}return{...t,channelId:e.channelId??``,kind:`onboarding`,operator:{displayName:e.actorDisplayName??e.actor??`Owner`,...e.actorHandle?{handle:e.actorHandle}:{},slackUserId:e.actorUserId??``},teamId:``,text:e.text}}return e.kind===`choice_response`?{...t,answeredBy:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorHandle?{handle:e.actorHandle}:{},slackUserId:e.actorUserId??``},askId:e.source.id,channelId:e.channelId??``,...e.channelName?{channelName:e.channelName}:{},kind:`choice_response`,messageTs:e.messageTs??``,optionId:e.optionLabel??e.messageId,optionLabel:e.optionLabel??e.text,question:e.question??``,teamId:``,threadTs:e.threadTs??``}:e.platform===`feishu`?{...t,actor:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorUserId?{openId:e.actorUserId}:{}},chatId:e.channelId??``,chatType:e.channelKind??`group`,...e.files?.length?{files:e.files.map((t,n)=>({id:t.fileId??`${e.messageId}:file:${n}`,mimetype:t.mimetype??`application/octet-stream`,name:t.filename,sizeBytes:t.sizeBytes??0}))}:{},kind:`feishu`,messageId:e.messageTs??e.messageId,text:e.text,...e.threadTs?{threadId:e.threadTs}:{}}:{...t,actor:{...e.actorDisplayName?{displayName:e.actorDisplayName}:{},...e.actorHandle?{handle:e.actorHandle}:{},...e.actorUserId?{userId:e.actorUserId}:{}},channelId:e.channelId??``,...e.channelName?{channelName:e.channelName}:{},...e.files?.length?{files:e.files.map((t,n)=>({id:t.fileId??`${e.messageId}:file:${n}`,mimetype:t.mimetype??`application/octet-stream`,name:t.filename,sizeBytes:t.sizeBytes??0}))}:{},kind:`slack`,messageTs:e.messageTs??``,...e.permalink?{permalink:e.permalink}:{},teamId:``,text:e.text,...e.threadTs?{threadTs:e.threadTs}:{}}}function A(e){let t={channel:e.channelId,channelDisplayName:e.channelDisplayName,channelKind:e.channelKind,channelName:e.channelName,dmHandle:e.dmHandle,dmUserId:e.dmUserId,permalink:e.permalink,platform:e.platform,status:`completed`,text:e.text,threadTs:e.threadTs,ts:e.messageTs};return e.kind===`message`?t.effect=e.platform===`feishu`?`feishu.message.send`:e.isEdit?`slack.message.update`:`slack.message.send`:e.kind===`file`?(t.effect=`slack.file.send`,t.caption=e.text.split(/\r?\nFiles:/)[0]??``,t.uploads=(e.files??[]).map((t,n)=>({fileId:t.fileId??`${e.messageId}:file:${n}`,filename:t.filename,mimetype:t.mimetype??`application/octet-stream`,permalink:t.permalink,sizeBytes:t.sizeBytes??0,thumb360:t.thumb360,thumb720:t.thumb720}))):e.kind===`reaction`&&(t.effect=`slack.reaction`,t.action=e.reaction?.action??`added`,t.name=e.reaction?.name??``,t.noop=e.reaction?.noop===!0,t.targetTs=e.messageTs),{activityId:e.source.kind===`activity`?e.source.id:e.messageId,createdAt:e.timestamp,payload:t,type:`external.effect.completed`}}function j(e){return e.kind===`message-in`?0:e.kind===`message-out`||e.kind===`file-out`||e.kind===`reaction-out`?1:e.kind===`step`&&e.activity.type===`runtime.completed`?3:2}function M(e){return Array.isArray(e)?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=typeof t.fileId==`string`?t.fileId:``,r=typeof t.filename==`string`?t.filename:``;return!n||!r?[]:[{fileId:n,filename:r,mimetype:typeof t.mimetype==`string`?t.mimetype:`application/octet-stream`,sizeBytes:typeof t.sizeBytes==`number`?t.sizeBytes:0,...typeof t.permalink==`string`?{permalink:t.permalink}:{},...typeof t.thumb360==`string`?{thumb360:t.thumb360}:{},...typeof t.thumb720==`string`?{thumb720:t.thumb720}:{}}]}):[]}function N(e,t){return P(e)?{kind:`onboarding`,label:`Onboarding`}:e.kind===`reminder`?{kind:`reminder`,label:t&&t.scheduleKind!==`once`?`Reminder · fire #${t.firedCount}`:`Reminder`}:e.kind===`choice_response`?L(e):e.kind===`feishu`?I(e):e.kind===`slack`?F(e):{kind:`onboarding`,label:`Onboarding`}}function P(e){return e.kind===`onboarding`||e.kind===`feishu_onboarding`||e.id.startsWith(`agent-onboarding:`)}function F(e){let t=e.channelId??`unknown-channel`,n=e.channelName,r=e.threadTs,i=t.startsWith(`D`)?`dm`:r?`thread`:`channel`,a=n?`#${n}`:t;if(i===`dm`){let t=e.actor?.handle||e.actor?.displayName;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}return i===`thread`?{kind:`thread`,label:`${a} · thread`}:{kind:`channel`,label:a}}function I(e){let t=e.chatType===`p2p`?`Feishu DM`:`Feishu ${e.chatType||`chat`}`;return e.threadId?{kind:`thread`,label:`${t} · topic`}:e.chatType===`p2p`?{kind:`dm`,label:t}:{kind:`channel`,label:t}}function L(e){let t=e.channelId??`unknown-channel`,n=e.channelName,r=e.threadTs,i=t.startsWith(`D`)?`dm`:r?`thread`:`channel`,a=n?n.startsWith(`#`)?n:`#${n}`:t;if(i===`dm`){let t=e.answeredBy.handle||e.answeredBy.displayName;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}return i===`thread`?{kind:`thread`,label:`${a} · thread`}:{kind:`channel`,label:a}}function R(e){let t=e.payload??{},n=typeof t.channel==`string`?t.channel:``,r=typeof t.channelName==`string`?t.channelName:``,i=typeof t.channelDisplayName==`string`?t.channelDisplayName:``,a=typeof t.channelKind==`string`?t.channelKind:``,o=typeof t.dmHandle==`string`?t.dmHandle:``,s=typeof t.threadTs==`string`?t.threadTs:``;if((typeof t.platform==`string`?t.platform:``)===`feishu`){let e=a||(n.startsWith(`oc_`)?`group`:`chat`);if(e===`open_id`)return{kind:`dm`,label:i||`Feishu owner`};let t=e===`p2p`?`Feishu DM`:`Feishu ${e}`;return s?{kind:`thread`,label:`${t} · topic`}:e===`p2p`?{kind:`dm`,label:t}:{kind:`channel`,label:t}}if(o)return{kind:`dm`,label:`@${o.replace(/^@/,``)}`};if(n){if(a===`dm`||n.startsWith(`D`)&&!r&&!i){let e=i.replace(/^DM with /i,``),t=e&&e!==i?e:``;return{kind:`dm`,label:t?`@${t.replace(/^@/,``)}`:`DM`}}let e=r?`#${r}`:i?i.startsWith(`#`)?i:`#${i}`:n;return s?{kind:`thread`,label:e}:{kind:`channel`,label:e}}return{kind:`reminder`,label:`Reminder`}}function xe(e){return e.receivedAt??new Date(0).toISOString()}function z(e){if(e.kind===`reminder`)return e.reminderId}function Se(e,t){let n=[];for(let[r,i]of e.entries()){let e=i[0],a=e&&typeof e.payload?.name==`string`?e.payload.name:void 0,o=e&&typeof e.payload?.role==`string`?e.payload.role:void 0,s=i.map(e=>typeof e.payload?.model==`string`?e.payload.model:void 0).find(e=>!!e),c=e&&typeof e.payload?.depth==`number`?e.payload.depth:1,l=V(i,t);n.push({subRunId:r,...a?{name:a}:{},...o?{role:o}:{},...s?{model:s}:{},depth:c,items:l})}return n.sort((e,t)=>{let n=e.items[0]?.timestamp??``,r=t.items[0]?.timestamp??``;return n.localeCompare(r)}),n}function Ce(e){if(!e)return;let t=e.toLowerCase();return t.includes(`fable`)?`Fable`:t.includes(`haiku`)?`Haiku`:t.includes(`sonnet`)?`Sonnet`:t.includes(`opus`)?`Opus`:e.replace(/-\d{8}$/,``)}function B(e){let t=e.map(e=>[e.role,Ce(e.model)].filter(Boolean).join(` · `)).filter(Boolean),n=Array.from(new Set(t));return n.length>0?n.join(`, `):void 0}function V(e,t){let n=[];for(let r of e)if(r.type!==`runtime.steer_failed`){if(r.type===`tool.call.completed`||r.type===`external.effect.completed`){let e=r.payload?.tool,t=r.payload?.effect;if(e===`anima.message.send`||e===`anima.message.update`||t===`slack.message.send`||t===`slack.message.update`||t===`feishu.message.send`){let i=r.payload?.text;n.push({kind:`message-out`,activity:r,text:typeof i==`string`?i:``,timestamp:r.createdAt,surface:R(r),isEdit:e===`anima.message.update`||t===`slack.message.update`});continue}if(e===`anima.file.send`||t===`slack.file.send`){let e=r.payload??{},t=typeof e.caption==`string`?e.caption:``,i=typeof e.permalink==`string`?e.permalink:void 0,a=M(e.uploads);n.push({kind:`file-out`,activity:r,caption:t,files:a,...i?{permalink:i}:{},timestamp:r.createdAt,surface:R(r)});continue}if(e===`anima.reminder.fire`)continue;if(e===`anima.message.react`||t===`slack.reaction`){let e=r.payload??{},t=e.action===`removed`?`removed`:`added`,i=typeof e.name==`string`?e.name:``,a=e.noop===!0;n.push({kind:`reaction-out`,activity:r,action:t,emoji:i,noop:a,timestamp:r.createdAt,surface:R(r)});continue}}if(r.type===`tool.call.started`||r.type===`tool.call.completed`||r.type===`external.effect.started`){let e=r.payload??{},t=String(e.tool??``);if(r.type===`external.effect.started`||r.type===`tool.call.started`&&t.startsWith(`anima.`))continue;let n=String(e.providerToolName??``).toLowerCase();if(n===`shell`||n===`bash`){let t=String(e.command??e.target??``).trim();if(/^(\/\S*sh\s+-l?c\s+['"])?\s*anima\s+(message|file|reminder|follow|subscription|ask)\b/.test(t))continue}}if(r.type===`runtime.event`){if(O(String(r.payload?.eventType??``)))continue}else if(!t&&D.has(r.type))continue;n.push({kind:`step`,activity:r,timestamp:r.createdAt})}return n.sort((e,t)=>e.timestamp.localeCompare(t.timestamp)),n}var H=`var(--color-activity-tool)`,U=`var(--color-health-error)`,W=`var(--color-health-warn)`,we=`var(--color-health-ok)`;function Te(e){if(G(e))return!0;if(e.type===`tool.call.started`){let t=e.payload??{},n=String(t.providerToolName||t.tool||``).toLowerCase().replace(/^(claude|codex|kimi)\./,``);return[`read`,`readfile`,`readmediafile`,`write`,`writefile`,`edit`,`multiedit`,`bash`,`shell`,`webfetch`,`fetchurl`,`websearch`,`searchweb`,`grep`,`glob`,`ls`,`todowrite`,`settodolist`,`filechange`,`strreplacefile`,`agent`,`skill`,`taskcreate`,`taskupdate`].includes(n)}if(e.type===`tool.call.completed`||e.type===`external.effect.completed`){let t=String(e.payload?.tool??``).toLowerCase(),n=String(e.payload?.effect??``).toLowerCase();return!!(n===`slack.message.send`||n===`slack.message.update`||n===`slack.file.send`||n===`slack.reaction`||n===`slack.ask.post`||t===`anima.message.read`||t.startsWith(`anima.reminder.`)&&t!==`anima.reminder.list`)}if(e.type===`runtime.completed`||e.type===`runtime.aborted`||e.type===`anima.session.rotate`||e.type===`anima.subscription.add`||e.type===`anima.subscription.remove`||e.type===`agent.text`)return!0;if(e.type===`runtime.event`){let t=String(e.payload?.eventType??``);return!!(t.endsWith(`.compact.started`)||t.endsWith(`.compact.completed`)||t.endsWith(`.compact.failed`))}return!1}function G(e){return e.type===`runtime.event`&&String(e.payload?.eventType??``).endsWith(`.failed`)?!0:e.type.endsWith(`.failed`)||e.type===`runtime.followup_failed`||e.type===`runtime.steer_failed`}function K(e){let t=e.payload??{},n=String(t.providerToolName||t.tool||``).replace(/^claude\./,``),r=n.toLowerCase();if(e.type!==`runtime.event`&&G(e)){let i=X(t,[`summary`,`text`,`error`]);if(e.type===`runtime.failed`)return{title:t.failureSource===`provider`?`Provider failure`:`Run failed`,...Z(i,200),color:U,kind:`failure`};if(e.type===`runtime.followup_failed`)return{title:`Follow-up failed`,...Z(X(t,[`reason`,`error`]),200),color:U,kind:`failure`};let a=Ee(r,i);if(a)return a;if(e.type===`external.effect.failed`){let e=Ee(String(t.effect??``).toLowerCase(),i);if(e)return e}if(r===`bash`||r===`shell`){let e=Ae(X(t,[`command`,`target`]));if(e){let t=Be(i);return{title:n?`Failed: ${n}`:`Failed`,...Z(t?`${e} · ${t}`:e,200),color:U,kind:`failure`}}}let o=X(t,[`target`,`command`]);if(o){let e=[o,Be(i)].filter(Boolean).join(` · `),t=[o,i].filter(Boolean).join(`
|
|
2
2
|
|
|
3
3
|
`);return{title:n?`Failed: ${n}`:`Failed`,...Z(e,200),...t&&t!==e?{targetFull:t}:{},color:U,kind:`failure`}}return{title:n?`Failed: ${n}`:`Failed`,...Z(i,200),color:U,kind:`failure`}}if(r===`read`||r===`readfile`||r===`readmediafile`)return q(`Read`,X(t,[`target`]));if(r===`write`||r===`writefile`)return q(`Wrote`,X(t,[`target`]));if(r===`edit`||r===`multiedit`)return q(`Edited`,X(t,[`target`]),X(t,[`diff`]));if(r===`grep`)return q(`Searched`,X(t,[`target`]));if(r===`glob`||r===`ls`)return q(`Listed`,X(t,[`target`]));if(r===`webfetch`||r===`fetchurl`)return q(`Fetched`,X(t,[`target`]));if(r===`websearch`||r===`searchweb`)return q(`Searched`,X(t,[`target`,`query`]));if(r===`todowrite`||r===`settodolist`)return q(`Updated todos`);if(r===`toolsearch`)return q(`Searched tools`,X(t,[`target`]));if(r===`bash`||r===`shell`)return{title:`Ran`,...Z(Ae(X(t,[`command`,`target`]))||r,120),color:H,kind:`tool`};let i=String(t.effect??``).toLowerCase();if(r===`anima.file.send`||i===`slack.file.send`){let e=t.fileCount,n=X(t,[`channelName`]),r=X(t,[`channel`]),i=n?`#${n}`:r||void 0;return{title:typeof e==`number`&&e!==1?`Sent ${e} files`:`Sent file`,target:i,color:H,kind:`tool`}}if(r===`anima.message.read`){let e=X(t,[`channelName`]),n=X(t,[`channelDisplayName`]),r=X(t,[`channelId`,`channel`]),i=t.messageCount;return{title:`Read messages`,target:[e?`#${e.replace(/^#/,``)}`:n||r||`?`,je(t),i===void 0?void 0:`${i} messages`].filter(Boolean).join(` · `),color:H,kind:`tool`}}if(r===`anima.reminder.schedule`){let e=J(t),n=X(t,[`nextDueAt`]);return{title:`Scheduled reminder`,target:n?e?`${e} · at ${v(n)}`:`at ${v(n)}`:e,color:`var(--color-activity-reminder)`,kind:`tool`}}if(r===`anima.reminder.cancel`)return{title:`Cancelled reminder`,target:J(t),color:`var(--color-activity-reminder)`,kind:`tool`};if(r===`anima.reminder.snooze`){let e=J(t),n=X(t,[`snoozedUntil`,`nextDueAt`]);return{title:`Snoozed reminder`,target:e&&n?`${e} · until ${v(n)}`:e,color:`var(--color-activity-reminder)`,kind:`tool`}}if(r===`anima.reminder.list`)return{title:`Listed reminders`,color:`var(--color-activity-reminder)`,kind:`tool`};if(r===`anima.reminder.fire`)return{title:`Reminder fired`,target:J(t),color:`var(--color-activity-reminder)`,kind:`lifecycle`};if(e.type===`anima.subscription.add`){let e=X(t,[`channelName`]),n=X(t,[`channelId`]),r=X(t,[`kind`]),i=e?`#${e}`:n||void 0;return{title:`Subscribed to`,target:i&&r?`${i} · ${r}`:i,color:`var(--color-activity-subscription)`,kind:`tool`}}if(e.type===`anima.subscription.remove`){let e=X(t,[`channelName`]),n=X(t,[`channelId`]);return{title:`Unsubscribed from`,target:e?`#${e}`:n||void 0,color:`var(--color-activity-subscription)`,kind:`tool`}}if(e.type===`anima.session.rotate`){let e=t.archivedCount,n=X(t,[`note`]);return{title:`Session rotated`,target:[typeof e==`number`?`Archived ${e} provider session${e===1?``:`s`}`:void 0,n].filter(Boolean).join(` · `)||void 0,color:W,kind:`lifecycle`}}if(e.type===`runtime.started`)return{title:`Working`,target:`Message received`,color:W,kind:`lifecycle`};if(e.type===`runtime.completed`)return{title:`Idle`,color:we,kind:`lifecycle`};if(e.type===`runtime.aborted`){let e=X(t,[`reason`]);return{title:e===`shutdown`?`Runtime restarted`:e===`user_stop`?`Stopped by user`:e===`operator_restart`?`Restarted by operator`:e===`idle_timeout`?`Idle timeout`:`Runtime stopped`,target:e===`idle_timeout`?Oe(t):void 0,color:W,kind:`lifecycle`}}if(e.type===`runtime.pending`)return{title:`Queued behind current item`,color:H,kind:`lifecycle`};if(e.type===`runtime.output`){let e=X(t,[`stream`]),n=String(t.text||``);return{title:`Process output`,...Z(e?`[${e}] ${n}`:n,300),color:H,kind:`output`}}if(e.type===`runtime.followup_appended`)return{title:`Follow-up added to current run`,...Z(String(t.text||``),120),color:W,kind:`lifecycle`};if(e.type===`external.effect.started`)return{title:`Sending`,color:H,kind:`tool`};if(e.type===`external.effect.completed`){if(String(t.effect??``).toLowerCase()===`slack.ask.post`){let e=X(t,[`allowedUserLabel`]);return{title:t.allowAnyone===!0?`Asked anyone`:e?`Asked ${e}`:`Asked`,...Z(Ne(t),220),color:H,kind:`tool`}}return{title:Y(String(t.effect??`external.effect`)),color:H,kind:`tool`}}if(e.type===`external.effect.failed`)return{title:`External effect failed`,...Z(X(t,[`summary`,`text`,`error`]),200),color:U,kind:`failure`};if(e.type===`runtime.event`){let e=String(t.eventType??``);if(e.endsWith(`.compact.started`))return{title:`Compacting context`,color:W,kind:`lifecycle`};if(e.endsWith(`.compact.completed`))return{title:`Context compacted`,color:we,kind:`lifecycle`};if(e.endsWith(`.compact.failed`))return{title:`Compact failed`,...Z(X(t,[`error`]),160),color:U,kind:`failure`};if(e.endsWith(`.session.stats`))return{title:`Session stats`,target:Ie(t),color:H,kind:`lifecycle`};let n=De(e,t);if(n)return n}if(e.type===`agent.text`)return{title:`Output`,...Z(String(t.text||``),280),color:H,kind:`output`};let a=r.replace(/^(claude|codex|kimi|anima)\./,``);if(a===`filechange`||a===`strreplacefile`)return q(`Edited`,X(t,[`target`]),X(t,[`diff`]));if(a===`agent`)return q(`Delegated to subagent`,X(t,[`target`,`description`]));if(a===`skill`)return q(`Ran skill`,X(t,[`target`,`name`]));if(a===`taskcreate`)return q(`Created task`,X(t,[`target`,`title`]));if(a===`taskupdate`)return q(`Updated task`,X(t,[`target`,`title`]));if(n){let e=X(t,[`target`,`command`]);return{title:`Used ${Y(n)}`,target:e||void 0,color:H,kind:`tool`}}return{title:Y(e.type),color:H,kind:`unknown`}}function q(e,t,n){return{title:e,target:t||void 0,...n&&n!==t?{targetFull:n}:{},color:H,kind:`tool`}}function Ee(e,t){let n;if(e===`anima.message.send`||e===`slack.message.send`?n=`Message failed`:e===`anima.message.update`||e===`slack.message.update`?n=`Edit failed`:e===`anima.file.send`||e===`slack.file.send`?n=`File upload failed`:e===`anima.message.react`||e===`slack.reaction`?n=`Reaction failed`:e===`anima.message.read`?n=`Read failed`:e.startsWith(`anima.reminder.`)&&(n=`Reminder ${e.replace(`anima.reminder.`,``)} failed`),n)return{title:n,...Z(t,200),color:U,kind:`failure`}}function De(e,t){if(e===`provider.crash.retry`){let e=t.attempt,n=t.maxRetries;return{title:`Provider retry`,...Z([typeof e==`number`&&typeof n==`number`?`Retry ${e}/${n}`:`Retrying`,X(t,[`error`])].filter(Boolean).join(` · `),200),color:W,kind:`lifecycle`}}if(e===`codex.model.rerouted`){let e=X(t,[`fromModel`]),n=X(t,[`toModel`]),r=X(t,[`reason`]);return{title:`Model rerouted`,target:[e&&n?`${e} → ${n}`:n||e,r].filter(Boolean).join(` · `)||void 0,color:W,kind:`lifecycle`}}if(e===`codex.rate_limits.updated`||e===`claude.rate_limit`)return{title:`Rate limit updated`,target:[X(t,[`limitName`,`rateLimitType`,`status`]),Pe(t)].filter(Boolean).join(` · `)||void 0,color:W,kind:`lifecycle`};if(e.startsWith(`codex.`)&&e.toLowerCase().includes(`warning`))return{title:`Provider warning`,...Z(X(t,[`message`,`summary`,`details`]),200),color:W,kind:`lifecycle`};if(e===`claude.provider.retry`||e===`claude.provider.resume_retry`){let n=X(t,[`reason`]),r=X(t,[`error`]);return{title:e.endsWith(`.resume_retry`)?`Provider resume retry`:`Provider retry`,...Z([n,r].filter(Boolean).join(` · `),200),color:W,kind:`lifecycle`}}if(e===`claude.session.resume_missing`)return{title:`Provider session expired`,target:`Started a fresh session`,color:W,kind:`lifecycle`};if(e===`kimi.approval.response`)return{title:`Approval answered`,target:X(t,[`response`]),color:H,kind:`tool`};if(e===`kimi.step.interrupted`)return{title:`Step interrupted`,color:W,kind:`lifecycle`}}function Oe(e){let t=e.timeoutMs;return typeof t!=`number`||!Number.isFinite(t)||t<=0?`No provider activity`:`${ke(t)} with no provider activity`}function ke(e){let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;return r?`${n}h ${r}m`:`${n}h`}function Ae(e){let t=e.match(/^\/\S*sh\s+-l?c\s+['"]/);return t?e.slice(t[0].length).replace(/['"]\s*$/,``):e}function J(e){return X(e,[`title`,`reminderId`])||void 0}function je(e){if(e.threadTs)return`thread`;let t=X(e,[`around`]);if(t)return`around ${v(Me(t))}`;let n=e.limit;return typeof n==`number`?`last ${n}`:``}function Me(e){let t=Number(e.split(`.`)[0]);return Number.isFinite(t)?new Date(t*1e3).toISOString():e}function Ne(e){let t=X(e,[`question`,`target`]),n=Array.isArray(e.optionLabels)?e.optionLabels.filter(e=>typeof e==`string`&&!!e.trim()):[],r=n.length?`[${n.join(` / `)}]`:``;return[t?`"${t}"`:``,r].filter(Boolean).join(` - `)}function Y(e){let t=e.replace(/^(claude|codex|kimi|anima)[._-]/i,``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[._-]+/g,` `).trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):`tool`}function Pe(e){let t=X(e,[`resetsAt`]);if(t)return`resets ${Fe(t)}`;for(let t of[`primary`,`secondary`]){let n=e[t];if(!n||typeof n!=`object`)continue;let r=n.resetsAt;if(typeof r==`number`&&Number.isFinite(r))return`resets ${Fe(r)}`}return``}function Fe(e){if(typeof e==`number`){let t=new Date(e>1e10?e:e*1e3);return Number.isNaN(t.getTime())?String(e):v(t.toISOString())}return v(e)}function X(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t}return``}function Ie(e){let t=[X(e,[`model`]),Le(`context`,e.contextWindow),Le(`cached`,e.cacheReadInputTokens),Le(`output`,e.outputTokens)].filter(Boolean);return t.length>0?t.join(` · `):void 0}function Le(e,t){if(!(typeof t!=`number`||!Number.isFinite(t)))return`${e} ${Re(t)}`}function Re(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:String(e)}function ze(e,t){return e.length<=t?e:e.slice(0,t).trimEnd()+`…`}function Be(e){if(!e)return``;let t=e.match(/exit(?: code)? (\d+)/i);return t?`exit ${t[1]}`:ze(e.split(`
|
|
4
4
|
`).map(e=>e.trim()).find(Boolean)??``,60)}function Z(e,t){if(!e)return{};let n=ze(e,t);return n===e?{target:n}:{target:n,targetFull:e}}var Ve={white_check_mark:`✅`,heavy_check_mark:`✔️`,ballot_box_with_check:`☑️`,x:`❌`,heavy_multiplication_x:`✖️`,negative_squared_cross_mark:`❎`,question:`❓`,grey_question:`❔`,exclamation:`❗`,warning:`⚠️`,no_entry:`⛔`,"+1":`👍`,thumbsup:`👍`,"-1":`👎`,thumbsdown:`👎`,ok_hand:`👌`,clap:`👏`,raised_hands:`🙌`,muscle:`💪`,pray:`🙏`,wave:`👋`,point_up:`☝️`,eyes:`👀`,tada:`🎉`,fire:`🔥`,rocket:`🚀`,sparkles:`✨`,star:`⭐`,star2:`🌟`,100:`💯`,zap:`⚡`,boom:`💥`,heart:`❤️`,yellow_heart:`💛`,green_heart:`💚`,blue_heart:`💙`,purple_heart:`💜`,black_heart:`🖤`,white_heart:`🤍`,orange_heart:`🧡`,broken_heart:`💔`,smile:`😄`,grinning:`😀`,laughing:`😆`,joy:`😂`,rofl:`🤣`,sweat_smile:`😅`,wink:`😉`,blush:`😊`,thinking_face:`🤔`,thinking:`🤔`,pensive:`😔`,cry:`😢`,sob:`😭`,rage:`😡`,angry:`😠`,exploding_head:`🤯`,nerd_face:`🤓`,sunglasses:`😎`,flushed:`😳`,scream:`😱`,raised_eyebrow:`🤨`,face_with_monocle:`🧐`,robot_face:`🤖`,see_no_evil:`🙈`,hear_no_evil:`🙉`,speak_no_evil:`🙊`,gear:`⚙️`,hammer_and_wrench:`🛠️`,wrench:`🔧`,hammer:`🔨`,lock:`🔒`,unlock:`🔓`,key:`🔑`,mag:`🔍`,mag_right:`🔎`,bell:`🔔`,no_bell:`🔕`,bookmark:`🔖`,pushpin:`📌`,paperclip:`📎`,link:`🔗`,memo:`📝`,pencil:`📝`,pencil2:`✏️`,notebook:`📓`,scroll:`📜`,bulb:`💡`,flashlight:`🔦`,chart_with_upwards_trend:`📈`,chart_with_downwards_trend:`📉`,bar_chart:`📊`,calendar:`📅`,spiral_calendar_pad:`🗓️`,hourglass:`⌛`,hourglass_flowing_sand:`⏳`,clock:`🕐`,alarm_clock:`⏰`,speech_balloon:`💬`,thought_balloon:`💭`,email:`📧`,"e-mail":`📧`,inbox_tray:`📥`,outbox_tray:`📤`,package:`📦`,computer:`💻`,iphone:`📱`,bug:`🐛`,ghost:`👻`,alien:`👽`,crown:`👑`,trophy:`🏆`,medal:`🏅`,art:`🎨`,rainbow:`🌈`};function He(e){if(e)return Ve[e.replace(/^:|:$/g,``).toLowerCase()]}var Q=ie(),Ue=/```([\s\S]*?)```|\*\*([^*\n]+)\*\*|\*([^*\n]+)\*|_([^_\n]+)_|`([^`\n]+)`|<!date\^[^|>]*(?:\|([^>]*))?>|<!subteam\^([A-Z0-9]+)(?:\|([^>]*))?>|<!(channel|here|everyone)>|<(https?:\/\/[^|>\s]+)\|([^>]+)>|<(https?:\/\/[^>\s]+)>|<#([A-Z0-9]+)\|([^>]+)>|<@([A-Z0-9]+)(?:\|([^>]*))?>|:([a-z0-9_+-]+):/g;function We(e){if(!e)return null;let t=Ge(e),n=[],r=0,i=0;for(let e of t.matchAll(Ue)){let a=e.index;if(a>r&&Ke(n,t.slice(r,a),i++),e[1]!==void 0)n.push((0,Q.jsx)(`pre`,{className:`mt-1 overflow-x-auto rounded bg-surface-elevated px-2 py-1.5 font-mono text-[12px]`,children:(0,Q.jsx)(`code`,{children:e[1].trim()})},i++));else if(e[2])n.push((0,Q.jsx)(`strong`,{className:`font-semibold`,children:e[2]},i++));else if(e[3])n.push((0,Q.jsx)(`strong`,{className:`font-semibold`,children:e[3]},i++));else if(e[4])n.push((0,Q.jsx)(`em`,{children:e[4]},i++));else if(e[5])n.push((0,Q.jsx)(`code`,{className:`rounded border border-border-soft bg-surface-elevated px-1 font-mono text-[0.9em]`,children:e[5]},i++));else if(e[6]!==void 0)Ke(n,e[6],i++);else if(e[7])n.push((0,Q.jsxs)(`span`,{className:`font-medium text-accent`,children:[`@`,(e[8]||e[7]).replace(/^@/,``)]},i++));else if(e[9])n.push((0,Q.jsxs)(`span`,{className:`font-medium text-accent`,children:[`@`,e[9]]},i++));else if(e[10]&&e[11])n.push((0,Q.jsx)(`a`,{href:e[10],target:`_blank`,rel:`noreferrer`,className:`text-accent underline decoration-accent/40 underline-offset-2 hover:decoration-accent`,children:e[11]},i++));else if(e[12])n.push((0,Q.jsx)(`a`,{href:e[12],target:`_blank`,rel:`noreferrer`,className:`text-accent underline decoration-accent/40 underline-offset-2 hover:decoration-accent`,children:e[12]},i++));else if(e[13]&&e[14])n.push((0,Q.jsxs)(`span`,{className:`font-medium text-accent`,children:[`#`,e[14]]},i++));else if(e[15]){let t=e[16]||e[15];n.push((0,Q.jsxs)(`span`,{className:`font-medium text-accent`,children:[`@`,t]},i++))}else e[17]&&n.push(He(e[17])??`:${e[17]}:`);r=a+e[0].length}return r<t.length&&Ke(n,t.slice(r),i),n.length===0?null:n.length===1?n[0]:(0,Q.jsx)(Q.Fragment,{children:n})}function Ge(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function Ke(e,t,n){t&&t.split(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-
|
|
1
|
+
import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-BVavXi56.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{x as e}from"./mermaid-parser.core-Bkfoiyjt.js";export{e as createArchitectureServices};
|