botmux 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -0
- package/README.md +1 -0
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +13 -1
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +11 -1
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +6 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +7 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +1 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +11 -0
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -0
- package/dist/cli/daemon-lifecycle-env.js +25 -0
- package/dist/cli/daemon-lifecycle-env.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -4
- package/dist/cli.js.map +1 -1
- package/dist/codex-rpc-engine.d.ts +110 -0
- package/dist/codex-rpc-engine.d.ts.map +1 -0
- package/dist/codex-rpc-engine.js +496 -0
- package/dist/codex-rpc-engine.js.map +1 -0
- package/dist/codex-rpc-lifecycle.d.ts +157 -0
- package/dist/codex-rpc-lifecycle.d.ts.map +1 -0
- package/dist/codex-rpc-lifecycle.js +210 -0
- package/dist/codex-rpc-lifecycle.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -2
- package/dist/config.js.map +1 -1
- package/dist/core/attachment-path.d.ts +3 -0
- package/dist/core/attachment-path.d.ts.map +1 -0
- package/dist/core/attachment-path.js +8 -0
- package/dist/core/attachment-path.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +6 -1
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-images.d.ts +29 -0
- package/dist/core/dashboard-images.d.ts.map +1 -0
- package/dist/core/dashboard-images.js +113 -0
- package/dist/core/dashboard-images.js.map +1 -0
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +13 -1
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/github-auth.d.ts +5 -0
- package/dist/core/github-auth.d.ts.map +1 -1
- package/dist/core/github-auth.js +38 -0
- package/dist/core/github-auth.js.map +1 -1
- package/dist/core/maintenance.d.ts +1 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +9 -1
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/session-create.d.ts +10 -0
- package/dist/core/session-create.d.ts.map +1 -1
- package/dist/core/session-create.js +21 -0
- package/dist/core/session-create.js.map +1 -1
- package/dist/core/session-manager.d.ts +4 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +25 -13
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/trigger-session.d.ts +3 -0
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +17 -3
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2 -0
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +19 -3
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +19 -0
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +2 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +6 -0
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +23 -2
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/create-session-composer.d.ts +35 -0
- package/dist/dashboard/web/create-session-composer.d.ts.map +1 -0
- package/dist/dashboard/web/create-session-composer.js +70 -0
- package/dist/dashboard/web/create-session-composer.js.map +1 -0
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +65 -5
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +147 -1
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +2 -1
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +5 -2
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts +4 -0
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +19 -0
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-4PM4T6QQ.js → bot-defaults-page-O37SAQD5.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-RXVA6XW3.js → chunk-6QHMLMIM.js} +6 -6
- package/dist/dashboard-web/chunks/{chunk-IKCZ677K.js → chunk-B42PCL5P.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-3PMN55Z6.js → chunk-FYALHCPG.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-AIDN2WZB.js → chunk-O2DPQL7C.js} +1 -1
- package/dist/dashboard-web/chunks/connectors-page-DZBQ42MH.js +1 -0
- package/dist/dashboard-web/chunks/{groups-page-TAU2UIVS.js → groups-page-3IEGRZKQ.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-PJ2XVM6T.js → insights-page-X3ADRON3.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-D6445HJO.js → monitor-room-IV36RGQY.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-GUHMCKSO.js → monitoring-page-ADFKVON4.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-6K6U2MS5.js → office-page-CALAOWNS.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-USDYU7U5.js → overview-page-SLMGLK3M.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-O4OUA7ZH.js → roles-page-L7JJ4FFV.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-LNIBXJSZ.js → schedules-page-Z3672POL.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-OKJ5YWUZ.js +3 -0
- package/dist/dashboard-web/chunks/settings-page-P6MI2ZUE.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-M5KYNXBA.js → skills-page-FT7BVZ6X.js} +4 -4
- package/dist/dashboard-web/chunks/{team-federation-page-GT7UFQMN.js → team-federation-page-DEYCPUFB.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-UYZIRJ2C.js → v3-page-4IOWREZG.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-WAR77DQE.js → whiteboards-page-2VMBETZH.js} +1 -1
- package/dist/dashboard-web/style.css +191 -0
- package/dist/dashboard.js +33 -6
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +7 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +2 -0
- package/dist/global-config.js.map +1 -1
- package/dist/im/lark/ask-card.d.ts.map +1 -1
- package/dist/im/lark/ask-card.js +52 -4
- package/dist/im/lark/ask-card.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +2 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +19 -2
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +3 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +706 -693
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/grant-pending.d.ts +8 -4
- package/dist/im/lark/grant-pending.d.ts.map +1 -1
- package/dist/im/lark/grant-pending.js +13 -6
- package/dist/im/lark/grant-pending.js.map +1 -1
- package/dist/services/connector-store.d.ts +8 -0
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/session-store.d.ts +2 -1
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +60 -2
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts +16 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +343 -47
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/trigger-types.d.ts +5 -0
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +12 -0
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/types.d.ts +13 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/worker.js +440 -34
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/connectors-page-2MKF4YTN.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-B6U6TCFF.js +0 -3
- package/dist/dashboard-web/chunks/settings-page-PXLRFF7I.js +0 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface MentionTrigger {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
query: string;
|
|
5
|
+
}
|
|
6
|
+
/** Find the active @ token immediately before the caret. The trigger starts at
|
|
7
|
+
* line start or after whitespace; this avoids turning email addresses into bot
|
|
8
|
+
* mentions. Display names may contain spaces once a suggestion has been
|
|
9
|
+
* inserted, but an in-progress query intentionally stops at whitespace. */
|
|
10
|
+
export declare function findMentionTrigger(text: string, caret: number): MentionTrigger | null;
|
|
11
|
+
export declare function insertBotMention(text: string, trigger: Pick<MentionTrigger, 'start' | 'end'>, botName: string): {
|
|
12
|
+
text: string;
|
|
13
|
+
caret: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function filterMentionBots<T extends {
|
|
16
|
+
botName: string;
|
|
17
|
+
larkAppId: string;
|
|
18
|
+
}>(bots: readonly T[], query: string): T[];
|
|
19
|
+
/** Insert visible attachment markers at the textarea selection. Images remain
|
|
20
|
+
* binary attachments, while the markers preserve their intended position in
|
|
21
|
+
* the plain-text task body and make the preview order unambiguous. */
|
|
22
|
+
export declare function insertImageMarkers(text: string, selectionStart: number, selectionEnd: number, markers: readonly string[]): {
|
|
23
|
+
text: string;
|
|
24
|
+
caret: number;
|
|
25
|
+
};
|
|
26
|
+
/** Remove one generated marker without collapsing surrounding words. */
|
|
27
|
+
export declare function removeImageMarker(text: string, marker: string): string;
|
|
28
|
+
/** Remove one image marker and compact the remaining markers back to attachment
|
|
29
|
+
* order. This keeps `[图片 N]` aligned with the backend's 1-based attachment
|
|
30
|
+
* numbering after deleting an image from the middle of the list. */
|
|
31
|
+
export declare function removeAndReindexImageMarkers(text: string, removedMarker: string, remainingMarkers: readonly string[], markerForIndex: (index: number) => string): {
|
|
32
|
+
text: string;
|
|
33
|
+
markers: string[];
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=create-session-composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session-composer.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/create-session-composer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;2EAG2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAOrF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,KAAK,CAAC,EAC9C,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChF,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,KAAK,EAAE,MAAM,GACZ,CAAC,EAAE,CAML;AAED;;sEAEsE;AACtE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAajC;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED;;oEAEoE;AACpE,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CASrC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Find the active @ token immediately before the caret. The trigger starts at
|
|
2
|
+
* line start or after whitespace; this avoids turning email addresses into bot
|
|
3
|
+
* mentions. Display names may contain spaces once a suggestion has been
|
|
4
|
+
* inserted, but an in-progress query intentionally stops at whitespace. */
|
|
5
|
+
export function findMentionTrigger(text, caret) {
|
|
6
|
+
const safeCaret = Math.max(0, Math.min(caret, text.length));
|
|
7
|
+
const prefix = text.slice(0, safeCaret);
|
|
8
|
+
const match = prefix.match(/(?:^|\s)@([^\s@]*)$/u);
|
|
9
|
+
if (!match)
|
|
10
|
+
return null;
|
|
11
|
+
const query = match[1] ?? '';
|
|
12
|
+
return { start: safeCaret - query.length - 1, end: safeCaret, query };
|
|
13
|
+
}
|
|
14
|
+
export function insertBotMention(text, trigger, botName) {
|
|
15
|
+
const replacement = `@${botName} `;
|
|
16
|
+
const suffixStart = text[trigger.end] === ' ' ? trigger.end + 1 : trigger.end;
|
|
17
|
+
const next = text.slice(0, trigger.start) + replacement + text.slice(suffixStart);
|
|
18
|
+
return { text: next, caret: trigger.start + replacement.length };
|
|
19
|
+
}
|
|
20
|
+
export function filterMentionBots(bots, query) {
|
|
21
|
+
const normalized = query.trim().toLocaleLowerCase();
|
|
22
|
+
if (!normalized)
|
|
23
|
+
return [...bots];
|
|
24
|
+
return bots.filter(bot => bot.botName.toLocaleLowerCase().includes(normalized)
|
|
25
|
+
|| bot.larkAppId.toLocaleLowerCase().includes(normalized));
|
|
26
|
+
}
|
|
27
|
+
/** Insert visible attachment markers at the textarea selection. Images remain
|
|
28
|
+
* binary attachments, while the markers preserve their intended position in
|
|
29
|
+
* the plain-text task body and make the preview order unambiguous. */
|
|
30
|
+
export function insertImageMarkers(text, selectionStart, selectionEnd, markers) {
|
|
31
|
+
if (markers.length === 0)
|
|
32
|
+
return { text, caret: Math.max(0, Math.min(selectionStart, text.length)) };
|
|
33
|
+
const start = Math.max(0, Math.min(selectionStart, text.length));
|
|
34
|
+
const end = Math.max(start, Math.min(selectionEnd, text.length));
|
|
35
|
+
const before = text.slice(0, start);
|
|
36
|
+
const after = text.slice(end);
|
|
37
|
+
const leading = before && !/\s$/u.test(before) ? ' ' : '';
|
|
38
|
+
const trailing = after && !/^\s/u.test(after) ? ' ' : '';
|
|
39
|
+
const insertion = `${leading}${markers.join(' ')}${trailing}`;
|
|
40
|
+
return {
|
|
41
|
+
text: before + insertion + after,
|
|
42
|
+
caret: before.length + insertion.length,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Remove one generated marker without collapsing surrounding words. */
|
|
46
|
+
export function removeImageMarker(text, marker) {
|
|
47
|
+
const index = text.indexOf(marker);
|
|
48
|
+
if (index < 0)
|
|
49
|
+
return text;
|
|
50
|
+
const before = text.slice(0, index);
|
|
51
|
+
let after = text.slice(index + marker.length);
|
|
52
|
+
if (/\s$/u.test(before) && /^\s/u.test(after))
|
|
53
|
+
after = after.slice(1);
|
|
54
|
+
return before + after;
|
|
55
|
+
}
|
|
56
|
+
/** Remove one image marker and compact the remaining markers back to attachment
|
|
57
|
+
* order. This keeps `[图片 N]` aligned with the backend's 1-based attachment
|
|
58
|
+
* numbering after deleting an image from the middle of the list. */
|
|
59
|
+
export function removeAndReindexImageMarkers(text, removedMarker, remainingMarkers, markerForIndex) {
|
|
60
|
+
let nextText = removeImageMarker(text, removedMarker);
|
|
61
|
+
const markers = remainingMarkers.map((_marker, index) => markerForIndex(index));
|
|
62
|
+
remainingMarkers.forEach((oldMarker, index) => {
|
|
63
|
+
const markerIndex = nextText.indexOf(oldMarker);
|
|
64
|
+
if (markerIndex < 0 || oldMarker === markers[index])
|
|
65
|
+
return;
|
|
66
|
+
nextText = nextText.slice(0, markerIndex) + markers[index] + nextText.slice(markerIndex + oldMarker.length);
|
|
67
|
+
});
|
|
68
|
+
return { text: nextText, markers };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=create-session-composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-session-composer.js","sourceRoot":"","sources":["../../../src/dashboard/web/create-session-composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/i18n.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAI1C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/i18n.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAI1C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAstHtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAM/E;AAED,wBAAgB,qBAAqB,CAAC,SAAS,GAAE,SAAS,MAAM,EAAO,GAAG,eAAe,CAMxF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CASpI;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CAGrH"}
|
|
@@ -688,6 +688,22 @@ const zh = {
|
|
|
688
688
|
'connectors.newGroupNotice': '此模式会自动创建新群并邀请所选机器人,无需选择现有群。',
|
|
689
689
|
'connectors.fInstruction': '处理指令',
|
|
690
690
|
'connectors.fInstructionPh': '事件触发后的处理目标。留空时仅把原始事件交给模型。',
|
|
691
|
+
'connectors.topicMessage': '触发提示',
|
|
692
|
+
'connectors.topicMessageHint': 'Webhook 创建新话题时显示的起始消息。只影响这条提示,不影响机器人后续回复。',
|
|
693
|
+
'connectors.topicMessageDefault': '使用默认文案',
|
|
694
|
+
'connectors.topicMessageDefaultHint': '自动带上 Webhook 名称,保持现有体验。',
|
|
695
|
+
'connectors.topicMessageCustom': '自定义文案',
|
|
696
|
+
'connectors.topicMessageCustomHint': '用自己的提示说明这次触发来自哪里。',
|
|
697
|
+
'connectors.topicMessageNone': '不发送提示',
|
|
698
|
+
'connectors.topicMessageNoneHint': '静默启动,不发送话题起始消息。',
|
|
699
|
+
'connectors.topicMessageCustomPh': '如:CI 构建失败,请检查发布流水线',
|
|
700
|
+
'connectors.topicMessageCustomHelp': '可使用 {source} 代入 Webhook 名称。',
|
|
701
|
+
'connectors.topicMessagePreview': '预览:外部事件触发:{source}',
|
|
702
|
+
'connectors.topicMessageNonePreview': '不会发送触发提示;机器人后续输出仍会正常发送。',
|
|
703
|
+
'connectors.topicMessageSourceFallback': 'Webhook 名称',
|
|
704
|
+
'connectors.topicMessageListDefault': '触发提示:默认文案',
|
|
705
|
+
'connectors.topicMessageListCustom': '触发提示:{text}',
|
|
706
|
+
'connectors.topicMessageListNone': '触发提示:不发送',
|
|
691
707
|
'connectors.fVerify': '校验方式',
|
|
692
708
|
'connectors.verifyToken': '令牌(简单:密钥放进 URL,一条 curl 就能触发)',
|
|
693
709
|
'connectors.verifyHmac': 'HMAC 签名(高级:更安全,需自行对请求签名)',
|
|
@@ -730,6 +746,7 @@ const zh = {
|
|
|
730
746
|
'connectors.errLegacyWorkflowRetired': 'Legacy v2 工作流连接器正在退役,不能新建。请使用 v3 Saved Workflow 入口。',
|
|
731
747
|
'connectors.errChat': '请选择(或手动填)投递的群',
|
|
732
748
|
'connectors.errDedup': '请填写用于复用群的业务唯一键',
|
|
749
|
+
'connectors.errTopicMessage': '请填写自定义触发提示',
|
|
733
750
|
'connectors.creating': '创建中…',
|
|
734
751
|
'connectors.saving': '保存中…',
|
|
735
752
|
'connectors.updated': '已保存全部配置',
|
|
@@ -966,7 +983,17 @@ const zh = {
|
|
|
966
983
|
'sessions.create.button': '创建会话',
|
|
967
984
|
'sessions.create.title': '创建会话',
|
|
968
985
|
'sessions.create.content': '内容',
|
|
969
|
-
'sessions.create.contentPlaceholder': '
|
|
986
|
+
'sessions.create.contentPlaceholder': '描述要做的事;输入 @ 给指定机器人派活,也可直接粘贴截图',
|
|
987
|
+
'sessions.create.contentHelp': '输入 @ 可搜索机器人(选中后会自动加入新群)。粘贴图片时会在当前光标处插入图片标记。Lead 分配模式下,正文即使 @了 sub,也只会先启动 Lead,由 Lead 再决定何时派发。支持 PNG/JPEG/GIF/WebP。',
|
|
988
|
+
'sessions.create.mentionBots': '选择要 @ 的机器人',
|
|
989
|
+
'sessions.create.pastedImages': '已粘贴图片',
|
|
990
|
+
'sessions.create.imageMarker': '图片 {n}',
|
|
991
|
+
'sessions.create.removeImage': '移除图片 {name}',
|
|
992
|
+
'sessions.create.imageUnsupported': '仅支持粘贴 PNG、JPEG、GIF 或 WebP 图片',
|
|
993
|
+
'sessions.create.imageCountLimit': '一次最多粘贴 {n} 张图片',
|
|
994
|
+
'sessions.create.imageSizeLimit': '单张图片不能超过 10 MB',
|
|
995
|
+
'sessions.create.imageTotalLimit': '图片总大小不能超过 25 MB',
|
|
996
|
+
'sessions.create.imageReadFailed': '读取粘贴图片失败,请重试',
|
|
970
997
|
'sessions.create.bots': '机器人(拉进新群)',
|
|
971
998
|
'sessions.create.noBots': '没有在线的机器人可选',
|
|
972
999
|
'sessions.create.botSearchPlaceholder': '搜索机器人…',
|
|
@@ -974,7 +1001,7 @@ const zh = {
|
|
|
974
1001
|
'sessions.create.selectedCount': '已选 {n} 个机器人',
|
|
975
1002
|
'sessions.create.mode': '协作模式',
|
|
976
1003
|
'sessions.create.modeAll': '一起开工',
|
|
977
|
-
'sessions.create.modeLead': 'Lead 分配(推荐)',
|
|
1004
|
+
'sessions.create.modeLead': '只发 Lead,由 Lead 分配(推荐)',
|
|
978
1005
|
'sessions.create.modeHelp': '一起开工:每个被选机器人各起一条会话、拿同一份内容。Lead 分配:只起 lead,由它在群里 @ 拉起其它机器人干活。',
|
|
979
1006
|
'sessions.create.lead': 'Lead 机器人',
|
|
980
1007
|
'sessions.create.leadHelp': '内容会发给 lead,由它决定何时拉起哪个 sub bot。',
|
|
@@ -1189,7 +1216,7 @@ const zh = {
|
|
|
1189
1216
|
'settings.chatBotDiscovery': '群内机器人发现(飞书 /members/bots)',
|
|
1190
1217
|
'settings.chatBotDiscoveryHelp': '默认开启。实时读取群内机器人成员,提高多 bot 互相 @ 的准确性。接口不可用时会回退旧逻辑;仅在成员识别异常时关闭。',
|
|
1191
1218
|
'settings.herdrTraexPlugin': 'TraeX herdr 插件自动安装(opt-in)',
|
|
1192
|
-
'settings.herdrTraexPluginHelp': '默认关闭。需 herdr ≥ 0.7.0。开启后填写可信 source 与可选 ref
|
|
1219
|
+
'settings.herdrTraexPluginHelp': '默认关闭。需 herdr ≥ 0.7.0。开启后填写可信 source 与可选 ref,再点击”保存并安装”;安装成功后执行 action 写入 ~/.trae hooks。请只使用你信任的来源,并优先钉 commit SHA。',
|
|
1193
1220
|
'settings.herdrTraexPluginSource': '插件 source',
|
|
1194
1221
|
'settings.herdrTraexPluginSourcePlaceholder': 'owner/repo[/subdir](不提供默认源)',
|
|
1195
1222
|
'settings.herdrTraexPluginSourceHelp': '作为独立 argv 传给 `herdr plugin install <source>`;不要把 ref 写成 #tag。botmux 不默认执行任何第三方仓库。',
|
|
@@ -1205,6 +1232,8 @@ const zh = {
|
|
|
1205
1232
|
'settings.herdrTraexInstallStepInstall': '安装',
|
|
1206
1233
|
'settings.herdrTraexInstallStepAction': '写入 hooks',
|
|
1207
1234
|
'settings.herdrTraexUnsupported': '当前 herdr 不支持插件;需 ≥ 0.7.0,请先运行 herdr update',
|
|
1235
|
+
'settings.codexRpcInput': 'Codex 家族 RPC 输入模式',
|
|
1236
|
+
'settings.codexRpcInputHelp': '实验性,默认关闭。对 codex / traex 机器人(仅 tmux 后端),用户消息经 app-server JSON-RPC 通道注入,绕开 codex 终端粘贴丢消息的问题(pane 仍跑真实 --remote TUI 渲染)。sandbox/隔离/审批门控/wrapper/带启动命令的会话自动回退传统粘贴。',
|
|
1208
1237
|
'settings.sectionVcMeetingAgent': '会议监听',
|
|
1209
1238
|
'settings.vcMeetingAgent': '允许本机使用会议监听能力',
|
|
1210
1239
|
'settings.vcMeetingAgentHelp': '默认开启。控制本机 bot 是否接收新的会议监听事件。关闭后不再恢复监听;已进行中的会议通常自然结束。',
|
|
@@ -1399,6 +1428,7 @@ const zh = {
|
|
|
1399
1428
|
'skills.sourceHelpAgentbuddy': '直接粘贴 agentbuddy 安装命令,例如 agentbuddy skill collection add <uid> / agentbuddy plugin collection add <uid>;开源 skills 用 skills add owner/repo 也认(走 GitHub 安装)。agentbuddy 命令需部署机已 agentbuddy login。',
|
|
1400
1429
|
'skills.agentbuddyNotFound': '部署机未找到 agentbuddy CLI。请在部署机全局安装,或设置 BOTMUX_AGENTBUDDY_CMD。',
|
|
1401
1430
|
'skills.agentbuddyNeedsLogin': '部署机 agentbuddy 未登录。请在部署机运行 agentbuddy login 后重试。',
|
|
1431
|
+
'skills.gitNeedsAuth': 'GitHub 私有仓库鉴权失败。请在部署机执行 gh auth login,或在 ~/.botmux/.env 配置 GITHUB_TOKEN / GH_TOKEN;也可使用 SSH Git URL 复用主机 SSH key。',
|
|
1402
1432
|
'skills.agentbuddyCommandFailed': 'agentbuddy 安装失败,请查看部署机日志。',
|
|
1403
1433
|
'skills.agentbuddyTelemetryFailed': '内嵌 telemetry 清理失败,已中断安装(如需保留可设 BOTMUX_AGENTBUDDY_KEEP_TELEMETRY=1)。',
|
|
1404
1434
|
'skills.agentbuddyNoSkill': 'agentbuddy 未产出任何 Skill,请检查 identifier 是否正确。',
|
|
@@ -2554,6 +2584,22 @@ const en = {
|
|
|
2554
2584
|
'connectors.newGroupNotice': 'This mode creates a group and invites the selected bot automatically. No existing group is required.',
|
|
2555
2585
|
'connectors.fInstruction': 'Instruction',
|
|
2556
2586
|
'connectors.fInstructionPh': 'What the bot should do after the event. Empty passes the raw event to the model.',
|
|
2587
|
+
'connectors.topicMessage': 'Trigger notice',
|
|
2588
|
+
'connectors.topicMessageHint': 'The first message shown when a webhook opens a new topic. This only affects the notice, not later bot replies.',
|
|
2589
|
+
'connectors.topicMessageDefault': 'Use default text',
|
|
2590
|
+
'connectors.topicMessageDefaultHint': 'Includes the webhook name and preserves the current behavior.',
|
|
2591
|
+
'connectors.topicMessageCustom': 'Custom text',
|
|
2592
|
+
'connectors.topicMessageCustomHint': 'Explain where this trigger came from in your own words.',
|
|
2593
|
+
'connectors.topicMessageNone': 'Send no notice',
|
|
2594
|
+
'connectors.topicMessageNoneHint': 'Start silently without a topic seed message.',
|
|
2595
|
+
'connectors.topicMessageCustomPh': 'e.g. CI build failed — inspect the release pipeline',
|
|
2596
|
+
'connectors.topicMessageCustomHelp': 'Use {source} to insert the webhook name.',
|
|
2597
|
+
'connectors.topicMessagePreview': 'Preview: External event: {source}',
|
|
2598
|
+
'connectors.topicMessageNonePreview': 'No trigger notice will be sent. Later bot output is unaffected.',
|
|
2599
|
+
'connectors.topicMessageSourceFallback': 'Webhook name',
|
|
2600
|
+
'connectors.topicMessageListDefault': 'Trigger notice: default text',
|
|
2601
|
+
'connectors.topicMessageListCustom': 'Trigger notice: {text}',
|
|
2602
|
+
'connectors.topicMessageListNone': 'Trigger notice: disabled',
|
|
2557
2603
|
'connectors.fVerify': 'Verification',
|
|
2558
2604
|
'connectors.verifyToken': 'Token (simple: secret in the URL, one curl triggers it)',
|
|
2559
2605
|
'connectors.verifyHmac': 'HMAC signature (advanced: more secure, sign the request yourself)',
|
|
@@ -2596,6 +2642,7 @@ const en = {
|
|
|
2596
2642
|
'connectors.errLegacyWorkflowRetired': 'Legacy v2 workflow connectors are retiring and cannot be created. Use the v3 Saved Workflow entry point.',
|
|
2597
2643
|
'connectors.errChat': 'Pick (or enter) a target group',
|
|
2598
2644
|
'connectors.errDedup': 'Enter the business key used to reuse a group',
|
|
2645
|
+
'connectors.errTopicMessage': 'Enter custom trigger notice text',
|
|
2599
2646
|
'connectors.creating': 'Creating…',
|
|
2600
2647
|
'connectors.saving': 'Saving…',
|
|
2601
2648
|
'connectors.updated': 'All settings saved',
|
|
@@ -2832,7 +2879,17 @@ const en = {
|
|
|
2832
2879
|
'sessions.create.button': 'Create session',
|
|
2833
2880
|
'sessions.create.title': 'Create session',
|
|
2834
2881
|
'sessions.create.content': 'Content',
|
|
2835
|
-
'sessions.create.contentPlaceholder': 'Describe the task;
|
|
2882
|
+
'sessions.create.contentPlaceholder': 'Describe the task; type @ to assign a bot, or paste screenshots directly',
|
|
2883
|
+
'sessions.create.contentHelp': 'Type @ to find a bot (selecting it also adds it to the new group). Pasting an image inserts a marker at the current caret. In Lead dispatch, @sub instructions still start only the Lead; the Lead decides when to delegate. PNG, JPEG, GIF, and WebP are supported.',
|
|
2884
|
+
'sessions.create.mentionBots': 'Choose a bot to mention',
|
|
2885
|
+
'sessions.create.pastedImages': 'Pasted images',
|
|
2886
|
+
'sessions.create.imageMarker': 'Image {n}',
|
|
2887
|
+
'sessions.create.removeImage': 'Remove image {name}',
|
|
2888
|
+
'sessions.create.imageUnsupported': 'Only PNG, JPEG, GIF, or WebP images can be pasted',
|
|
2889
|
+
'sessions.create.imageCountLimit': 'You can paste up to {n} images at a time',
|
|
2890
|
+
'sessions.create.imageSizeLimit': 'Each image must be 10 MB or smaller',
|
|
2891
|
+
'sessions.create.imageTotalLimit': 'Images must total 25 MB or less',
|
|
2892
|
+
'sessions.create.imageReadFailed': 'Could not read the pasted image; please try again',
|
|
2836
2893
|
'sessions.create.bots': 'Bots (added to the new group)',
|
|
2837
2894
|
'sessions.create.noBots': 'No online bots to pick',
|
|
2838
2895
|
'sessions.create.botSearchPlaceholder': 'Search bots…',
|
|
@@ -2840,7 +2897,7 @@ const en = {
|
|
|
2840
2897
|
'sessions.create.selectedCount': '{n} bot(s) selected',
|
|
2841
2898
|
'sessions.create.mode': 'Collaboration mode',
|
|
2842
2899
|
'sessions.create.modeAll': 'Work together',
|
|
2843
|
-
'sessions.create.modeLead': 'Lead dispatch (recommended)',
|
|
2900
|
+
'sessions.create.modeLead': 'Lead only, then dispatch (recommended)',
|
|
2844
2901
|
'sessions.create.modeHelp': 'Work together: every selected bot starts its own session with the same content. Lead dispatch: only the lead starts; it @-mentions the other bots in the chat to bring them in.',
|
|
2845
2902
|
'sessions.create.lead': 'Lead bot',
|
|
2846
2903
|
'sessions.create.leadHelp': 'The content goes to the lead, which decides when to bring up each sub-bot.',
|
|
@@ -3071,6 +3128,8 @@ const en = {
|
|
|
3071
3128
|
'settings.herdrTraexInstallStepInstall': 'install',
|
|
3072
3129
|
'settings.herdrTraexInstallStepAction': 'write hooks',
|
|
3073
3130
|
'settings.herdrTraexUnsupported': 'This herdr does not support plugins; requires >= 0.7.0. Run herdr update first',
|
|
3131
|
+
'settings.codexRpcInput': 'Codex-family RPC input mode',
|
|
3132
|
+
'settings.codexRpcInputHelp': 'Experimental, off by default. For codex / traex bots (tmux backend only), user messages are injected via the app-server JSON-RPC channel, bypassing codex terminal paste-drops (the pane still runs the real --remote TUI). Sandbox/isolation/approval-gated/wrapper/startup-command sessions fall back to paste.',
|
|
3074
3133
|
'settings.sectionVcMeetingAgent': 'Meeting Listener',
|
|
3075
3134
|
'settings.vcMeetingAgent': 'Allow meeting listener features on this machine',
|
|
3076
3135
|
'settings.vcMeetingAgentHelp': 'On by default. Controls whether bots on this host accept new meeting listener events. Off also skips listener restore; running meetings usually finish naturally.',
|
|
@@ -3265,6 +3324,7 @@ const en = {
|
|
|
3265
3324
|
'skills.sourceHelpAgentbuddy': 'Paste an agentbuddy install command, e.g. agentbuddy skill collection add <uid> / agentbuddy plugin collection add <uid>; the open-source skills CLI form skills add owner/repo also works (via GitHub install). agentbuddy commands need the deploy host logged in via agentbuddy login.',
|
|
3266
3325
|
'skills.agentbuddyNotFound': 'agentbuddy CLI not found on the deploy host. Install it globally there, or set BOTMUX_AGENTBUDDY_CMD.',
|
|
3267
3326
|
'skills.agentbuddyNeedsLogin': 'agentbuddy on the deploy host is not logged in. Run agentbuddy login there and retry.',
|
|
3327
|
+
'skills.gitNeedsAuth': 'Private GitHub repository authentication failed. Run gh auth login on the deploy host, configure GITHUB_TOKEN / GH_TOKEN in ~/.botmux/.env, or use an SSH Git URL with the host SSH key.',
|
|
3268
3328
|
'skills.agentbuddyCommandFailed': 'agentbuddy install failed — check the deploy-host logs.',
|
|
3269
3329
|
'skills.agentbuddyTelemetryFailed': 'Embedded-telemetry removal failed; install aborted (set BOTMUX_AGENTBUDDY_KEEP_TELEMETRY=1 to keep it).',
|
|
3270
3330
|
'skills.agentbuddyNoSkill': 'agentbuddy produced no Skill — check the identifier.',
|