@lemoncat7/dsh-partner 2.25.0 → 2.25.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/docs/releases/2.25.1.md +11 -0
- package/docs/releases/2.25.2.md +8 -0
- package/docs/releases/2.25.3.md +11 -0
- package/docs/releases/2.25.4.md +10 -0
- package/docs/releases/2.25.5.md +10 -0
- package/docs/releases/2.25.6.md +7 -0
- package/docs/releases/2.25.7.md +9 -0
- package/docs/releases/2.25.8.md +7 -0
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +9 -6
- package/lib/agent-runtime.js.map +1 -1
- package/lib/attachments/delivery-receipt.d.ts +15 -0
- package/lib/attachments/delivery-receipt.d.ts.map +1 -1
- package/lib/attachments/delivery-receipt.js +23 -0
- package/lib/attachments/delivery-receipt.js.map +1 -1
- package/lib/channels/manager.d.ts +1 -0
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +14 -0
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/qq/reply-tool.d.ts.map +1 -1
- package/lib/channels/qq/reply-tool.js +9 -7
- package/lib/channels/qq/reply-tool.js.map +1 -1
- package/lib/character/activity-tool.js +1 -1
- package/lib/character/activity-tool.js.map +1 -1
- package/lib/character/conversation-behavior.d.ts +2 -1
- package/lib/character/conversation-behavior.d.ts.map +1 -1
- package/lib/character/conversation-behavior.js +16 -6
- package/lib/character/conversation-behavior.js.map +1 -1
- package/lib/character/domain.d.ts +1 -0
- package/lib/character/domain.d.ts.map +1 -1
- package/lib/character/domain.js +3 -0
- package/lib/character/domain.js.map +1 -1
- package/lib/character/idle-contact.d.ts +1 -1
- package/lib/character/idle-contact.d.ts.map +1 -1
- package/lib/character/idle-contact.js +12 -7
- package/lib/character/idle-contact.js.map +1 -1
- package/lib/character/thought-budget.d.ts +8 -0
- package/lib/character/thought-budget.d.ts.map +1 -0
- package/lib/character/thought-budget.js +39 -0
- package/lib/character/thought-budget.js.map +1 -0
- package/lib/character/thought-tool.d.ts.map +1 -1
- package/lib/character/thought-tool.js +38 -16
- package/lib/character/thought-tool.js.map +1 -1
- package/lib/character/thoughts.d.ts +3 -1
- package/lib/character/thoughts.d.ts.map +1 -1
- package/lib/character/thoughts.js +20 -16
- package/lib/character/thoughts.js.map +1 -1
- package/lib/chat/conversation.js +1 -1
- package/lib/chat/conversation.js.map +1 -1
- package/lib/chat/live-speech.d.ts +4 -2
- package/lib/chat/live-speech.d.ts.map +1 -1
- package/lib/chat/live-speech.js +43 -33
- package/lib/chat/live-speech.js.map +1 -1
- package/lib/chat/persona-delivery.d.ts.map +1 -1
- package/lib/chat/persona-delivery.js +18 -19
- package/lib/chat/persona-delivery.js.map +1 -1
- package/lib/chat/preferred-voice.d.ts +21 -0
- package/lib/chat/preferred-voice.d.ts.map +1 -0
- package/lib/chat/preferred-voice.js +75 -0
- package/lib/chat/preferred-voice.js.map +1 -0
- package/lib/chat/protocol.d.ts +4 -1
- package/lib/chat/protocol.d.ts.map +1 -1
- package/lib/chat/protocol.js.map +1 -1
- package/lib/chat/reply-completion.d.ts +3 -1
- package/lib/chat/reply-completion.d.ts.map +1 -1
- package/lib/chat/reply-completion.js +13 -5
- package/lib/chat/reply-completion.js.map +1 -1
- package/lib/chat/task-followup.d.ts +59 -0
- package/lib/chat/task-followup.d.ts.map +1 -0
- package/lib/chat/task-followup.js +111 -0
- package/lib/chat/task-followup.js.map +1 -0
- package/lib/chat/tools.d.ts +2 -1
- package/lib/chat/tools.d.ts.map +1 -1
- package/lib/chat/tools.js +35 -16
- package/lib/chat/tools.js.map +1 -1
- package/lib/client.activities.js +55 -1
- package/lib/client.js +49 -26
- package/lib/client.js.map +2 -2
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +1 -3
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/tool-discovery.d.ts +1 -1
- package/lib/collaboration/tool-discovery.d.ts.map +1 -1
- package/lib/collaboration/tool-discovery.js +4 -4
- package/lib/collaboration/tool-discovery.js.map +1 -1
- package/lib/companions/identity-tool.d.ts +3 -0
- package/lib/companions/identity-tool.d.ts.map +1 -1
- package/lib/companions/identity-tool.js +1 -1
- package/lib/companions/identity-tool.js.map +1 -1
- package/lib/conversation-history-recall.d.ts +7 -0
- package/lib/conversation-history-recall.d.ts.map +1 -1
- package/lib/conversation-history-recall.js +15 -7
- package/lib/conversation-history-recall.js.map +1 -1
- package/lib/execution/task-preamble.d.ts +3 -0
- package/lib/execution/task-preamble.d.ts.map +1 -1
- package/lib/execution/task-preamble.js +31 -1
- package/lib/execution/task-preamble.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-store.d.ts +1 -1
- package/lib/rolling-context.d.ts +1 -1
- package/lib/rolling-context.d.ts.map +1 -1
- package/lib/rolling-context.js +1 -1
- package/lib/rolling-context.js.map +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +13 -2
- package/lib/store.js.map +1 -1
- package/lib/ui/character-editor.js +1 -1
- package/lib/ui/character-editor.js.map +1 -1
- package/lib/ui/idle-contact-editor.d.ts.map +1 -1
- package/lib/ui/idle-contact-editor.js +1 -2
- package/lib/ui/idle-contact-editor.js.map +1 -1
- package/lib/ui/push-draft.d.ts +2 -2
- package/lib/ui/thoughts-panel.d.ts.map +1 -1
- package/lib/ui/thoughts-panel.js +24 -9
- package/lib/ui/thoughts-panel.js.map +1 -1
- package/lib/voice/audio-tail.d.ts +6 -0
- package/lib/voice/audio-tail.d.ts.map +1 -0
- package/lib/voice/audio-tail.js +72 -0
- package/lib/voice/audio-tail.js.map +1 -0
- package/lib/voice/synthesize.d.ts.map +1 -1
- package/lib/voice/synthesize.js +3 -1
- package/lib/voice/synthesize.js.map +1 -1
- package/lib/voice/tool.d.ts.map +1 -1
- package/lib/voice/tool.js +6 -4
- package/lib/voice/tool.js.map +1 -1
- package/package.json +9 -1
package/lib/ui/push-draft.d.ts
CHANGED
|
@@ -2,13 +2,13 @@ import type { PushChannelView } from '../notifications/push-domain.js';
|
|
|
2
2
|
export declare function pushDraft(channel: PushChannelView): {
|
|
3
3
|
targets: {
|
|
4
4
|
key: string;
|
|
5
|
-
name: string;
|
|
6
5
|
id: string;
|
|
6
|
+
name: string;
|
|
7
7
|
enabled: boolean;
|
|
8
8
|
configured: boolean;
|
|
9
9
|
}[];
|
|
10
|
-
name: string;
|
|
11
10
|
id: string;
|
|
11
|
+
name: string;
|
|
12
12
|
createdAt: number;
|
|
13
13
|
updatedAt: number;
|
|
14
14
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thoughts-panel.d.ts","sourceRoot":"","sources":["../../src/ui/thoughts-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"thoughts-panel.d.ts","sourceRoot":"","sources":["../../src/ui/thoughts-panel.tsx"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAGnF"}
|
package/lib/ui/thoughts-panel.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import activityCss from './activity-records.css';
|
|
2
3
|
import { summarizeActivities, activitySharingLabel } from '../character/activity-summary.js';
|
|
4
|
+
import { MAX_ACTIVE_THOUGHTS } from '../character/thought-budget.js';
|
|
3
5
|
import { useEffect, useState } from 'react';
|
|
4
6
|
import { loadPartner } from '../client-api.js';
|
|
5
7
|
import { errorMessage } from './workspace-components.js';
|
|
6
8
|
export function ThoughtsPanel({ companionId }) {
|
|
7
|
-
|
|
9
|
+
// Remount on identity changes: never display another companion's cached records.
|
|
10
|
+
return _jsxs(_Fragment, { children: [_jsx("style", { children: activityCss }), _jsx(ActivityRecords, { companionId: companionId }, companionId)] });
|
|
11
|
+
}
|
|
12
|
+
function ActivityRecords({ companionId }) {
|
|
13
|
+
const [snapshot, setSnapshot] = useState(), [error, setError] = useState('');
|
|
14
|
+
const [loading, setLoading] = useState(true), [revision, setRevision] = useState(0);
|
|
15
|
+
const [view, setView] = useState('activities');
|
|
16
|
+
const [visible, setVisible] = useState(6), [archivedVisible, setArchivedVisible] = useState(6);
|
|
17
|
+
const [copied, setCopied] = useState('');
|
|
8
18
|
useEffect(() => {
|
|
9
19
|
let alive = true, running = false;
|
|
10
20
|
const refresh = async () => {
|
|
@@ -29,16 +39,20 @@ export function ThoughtsPanel({ companionId }) {
|
|
|
29
39
|
setLoading(false);
|
|
30
40
|
}
|
|
31
41
|
};
|
|
42
|
+
const onVisible = () => { if (!document.hidden)
|
|
43
|
+
void refresh(); };
|
|
32
44
|
void refresh();
|
|
33
45
|
const timer = setInterval(() => void refresh(), 30000);
|
|
34
|
-
|
|
46
|
+
document.addEventListener('visibilitychange', onVisible);
|
|
47
|
+
return () => { alive = false; clearInterval(timer); document.removeEventListener('visibilitychange', onVisible); };
|
|
35
48
|
}, [companionId, revision]);
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
const journal = [...(snapshot?.companions.find(c => c.id === companionId)?.activityJournal ?? [])].reverse();
|
|
49
|
+
const companion = snapshot?.companions.find(c => c.id === companionId);
|
|
50
|
+
const plan = companion?.activityPlan;
|
|
51
|
+
const journal = [...(companion?.activityJournal ?? [])].reverse();
|
|
40
52
|
const stats = summarizeActivities(journal);
|
|
41
|
-
const thoughts = [...(
|
|
53
|
+
const thoughts = [...(companion?.thoughts ?? [])].sort((a, b) => b.updatedAt - a.updatedAt);
|
|
54
|
+
const open = thoughts.filter(t => t.status === 'open'), archived = thoughts.filter(t => t.status !== 'open');
|
|
55
|
+
const date = (at) => new Date(at).toLocaleString('zh-CN', { month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit' });
|
|
42
56
|
const label = (id) => {
|
|
43
57
|
const route = snapshot?.sessions.find(r => r.id === id);
|
|
44
58
|
if (!route)
|
|
@@ -48,6 +62,7 @@ export function ThoughtsPanel({ companionId }) {
|
|
|
48
62
|
const group = route.userId.match(/^group:(\d+):/);
|
|
49
63
|
return group ? `群 ${group[1]}` : `${snapshot?.channels.find(c => c.id === route.channelId)?.name ?? '渠道'} · ${snapshot?.pairings.find(p => p.channelId === route.channelId && p.userId === route.userId)?.displayName ?? route.userId}`;
|
|
50
64
|
};
|
|
51
|
-
|
|
65
|
+
const thoughtRow = (t) => _jsxs("details", { className: "dsh-partner-activity-row", children: [_jsxs("summary", { children: [_jsx("span", { className: "dsh-partner-activity-copy", children: t.text }), _jsx("small", { children: t.status === 'done' ? '已完成(自主标记)' : t.status === 'dismissed' ? t.capacityArchivedAt ? '容量整理 · 已放下' : '已放下' : '惦记中' })] }), _jsxs("div", { className: "dsh-partner-activity-detail", children: [_jsx("p", { children: t.why }), _jsxs("small", { children: ["\u6765\u81EA ", t.sourceRouteIds.map(label).join('、'), " \u00B7 ", date(t.sourceAt)] }), _jsxs("small", { children: ["\u60F3\u53BB ", label(t.targetRouteId), t.lastOutcome ? ` · ${{ considered: '已考虑', silent: '暂时安静', delivered: '已发送', failed: '未确认送达' }[t.lastOutcome]}` : ''] }), t.capacityArchivedAt && _jsxs("p", { children: ["\u8FBE\u5230 ", MAX_ACTIVE_THOUGHTS, " \u6761\u4E0A\u9650\u540E\u81EA\u52A8\u653E\u4E0B\uFF0C\u4E0D\u8868\u793A\u5DF2\u7ECF\u5B8C\u6210\u3002"] }), t.result && _jsx("p", { children: t.result }), _jsxs("details", { children: [_jsx("summary", { children: "\u6765\u6E90\u539F\u6587" }), _jsx("p", { className: "dsh-partner-activity-evidence", children: t.evidence })] })] })] }, t.id);
|
|
66
|
+
return _jsxs("section", { className: "dsh-partner-activity-board", "aria-label": "\u81EA\u4E3B\u6D3B\u52A8\u8BB0\u5F55", children: [_jsxs("div", { className: "dsh-partner-activity-toolbar", children: [_jsxs("div", { className: "dsh-partner-activity-switcher", role: "group", "aria-label": "\u8BB0\u5F55\u7C7B\u578B", children: [_jsxs("button", { type: "button", "aria-pressed": view === 'activities', onClick: () => setView('activities'), children: ["\u6700\u8FD1\u6D3B\u52A8", snapshot && _jsx("span", { children: journal.length })] }), _jsxs("button", { type: "button", "aria-pressed": view === 'thoughts', onClick: () => setView('thoughts'), children: ["\u60E6\u8BB0\u7684\u4E8B", snapshot && _jsxs("span", { children: [open.length, "/", MAX_ACTIVE_THOUGHTS] })] })] }), _jsx("button", { type: "button", className: "dsh-partner-activity-refresh", disabled: loading, onClick: () => setRevision(n => n + 1), children: loading ? '读取中…' : '刷新' })] }), error && _jsxs("p", { role: "alert", className: "dsh-partner-inline-error", children: [error, snapshot ? '(暂时显示上次读取的记录)' : ''] }), !snapshot && loading && _jsx("p", { role: "status", className: "dsh-partner-activity-empty", children: "\u6B63\u5728\u8BFB\u53D6\u6D3B\u52A8\u8BB0\u5F55\u2026" }), snapshot && view === 'activities' && _jsxs(_Fragment, { children: [plan && plan.status !== 'cancelled' && _jsxs("div", { className: "dsh-partner-activity-plan", children: [_jsxs("small", { children: ["\u4E0B\u4E00\u6B65 \u00B7 ", { waiting: '等本轮结束', pending: '等待唤起', claimed: '已唤起' }[plan.status]] }), _jsx("p", { children: plan.intention }), _jsxs("small", { children: [label(plan.targetRouteId), plan.status === 'pending' ? ` · ${date(plan.dueAt)}` : ''] })] }), _jsxs("div", { className: "dsh-partner-activity-overview", children: [_jsxs("span", { children: ["\u786E\u8BA4\u53D1\u9001 ", _jsx("b", { children: stats.confirmed })] }), _jsxs("span", { children: ["\u5F85\u786E\u8BA4 ", _jsx("b", { children: stats.pending })] }), _jsxs("span", { "data-warning": stats.failed > 0, children: ["\u542B\u5931\u8D25\u64CD\u4F5C ", _jsx("b", { children: stats.failed })] })] }), !journal.length && _jsx("p", { className: "dsh-partner-activity-empty", children: "\u8FD8\u6CA1\u6709\u81EA\u4E3B\u6D3B\u52A8\u3002\u5524\u8D77\u540E\u4E5F\u53EF\u4EE5\u9009\u62E9\u5B89\u9759\u5F85\u7740\u3002" }), _jsx("div", { "aria-label": "\u6D3B\u52A8\u65F6\u95F4\u7EBF", children: journal.slice(0, visible).map(a => _jsxs("details", { className: "dsh-partner-activity-row", children: [_jsxs("summary", { children: [_jsxs("span", { className: "dsh-partner-activity-meta", children: [_jsx("time", { dateTime: new Date(a.at).toISOString(), children: date(a.at) }), _jsx("span", { children: activitySharingLabel(a) }), a.tools.some(t => !t.ok) && _jsx("span", { className: "dsh-partner-activity-warning", children: "\u6709\u64CD\u4F5C\u5931\u8D25" })] }), _jsx("span", { className: "dsh-partner-activity-copy", children: a.summary }), _jsxs("small", { children: [a.artifacts.length ? `${a.artifacts.length} 项作品 · ` : '', "\u5C55\u5F00\u8BE6\u60C5"] })] }), _jsxs("div", { className: "dsh-partner-activity-detail", children: [a.artifacts.map(path => _jsxs("div", { className: "dsh-partner-activity-artifact", children: [_jsx("span", { title: path, children: path }), _jsx("button", { type: "button", onClick: () => { void navigator.clipboard.writeText(path).then(() => setCopied(path)).catch(() => setError('复制失败,请手动选择路径复制')); }, children: "\u590D\u5236\u8DEF\u5F84" })] }, path)), _jsxs("details", { children: [_jsxs("summary", { children: ["\u6267\u884C\u4F9D\u636E \u00B7 ", a.tools.length, " \u9879\u64CD\u4F5C"] }), _jsxs("p", { children: [a.silent ? '以安静结束收尾;此前可能已发送。' : '本轮已结束。', "\u53D1\u9001\u72B6\u6001\u4EC5\u4F9D\u636E\u5B9E\u9645\u56DE\u6267\u3002"] }), _jsx("ul", { children: a.tools.map((t, i) => _jsxs("li", { children: [t.name, " \u00B7 ", t.ok ? '成功' : '失败'] }, i)) }), !a.tools.length && _jsx("p", { children: "\u672A\u8BB0\u5F55\u5DE5\u5177\u64CD\u4F5C\u3002" })] })] })] }, a.sessionId + ':' + a.id)) }), visible < journal.length && _jsxs("button", { type: "button", className: "dsh-partner-activity-more", onClick: () => setVisible(v => v + 6), children: ["\u67E5\u770B\u66F4\u591A\u6D3B\u52A8\uFF08\u8FD8\u6709 ", journal.length - visible, " \u8F6E\uFF09"] }), _jsxs("details", { className: "dsh-partner-activity-footnote", children: [_jsx("summary", { children: "\u7EDF\u8BA1\u8303\u56F4\u4E0E\u6D3B\u52A8\u7C7B\u578B" }), _jsxs("p", { children: ["\u4EC5\u7EDF\u8BA1\u6700\u8FD1\u4FDD\u7559\u7684 ", stats.total, " \u8F6E\uFF1B\u7C7B\u578B\u53EF\u91CD\u53E0\uFF0C\u4E0D\u4EE3\u8868\u5168\u90E8\u5386\u53F2\u3002", stats.unknown ? `其中 ${stats.unknown} 轮的历史发送状态未知。` : ''] }), _jsx("p", { children: stats.categories.map(c => `${c.name} ${c.count}`).join(' · ') || '暂无操作记录' })] })] }), snapshot && view === 'thoughts' && _jsxs(_Fragment, { children: [_jsxs("p", { className: "dsh-partner-activity-note", children: ["\u6700\u591A\u540C\u65F6\u60E6\u8BB0 ", MAX_ACTIVE_THOUGHTS, " \u4EF6\u4E8B\uFF0C\u6240\u6709\u4F1A\u8BDD\u5171\u7528\u3002\u6EE1\u989D\u65F6\u4F18\u5148\u4FDD\u7559\u6B63\u5728\u505A\u3001\u5DF2\u5B89\u6392\u548C\u8F83\u65B0\u7684\u5FF5\u5934\uFF0C\u65E7\u5FF5\u5934\u653E\u4E0B\u540E\u4ECD\u53EF\u67E5\u770B\u8FD1\u671F\u8BB0\u5F55\u3002"] }), !open.length && _jsx("p", { className: "dsh-partner-activity-empty", children: "\u6682\u65F6\u6CA1\u6709\u60E6\u8BB0\u7684\u4E8B\uFF0C\u4E0D\u8981\u6C42\u6BCF\u6B21\u4E92\u52A8\u90FD\u7559\u4E0B\u5FF5\u5934\u3002" }), _jsx("div", { "aria-label": "\u5F53\u524D\u5FF5\u5934", children: open.map(thoughtRow) }), archived.length > 0 && _jsxs("details", { className: "dsh-partner-activity-archive", children: [_jsxs("summary", { children: ["\u5DF2\u5B8C\u6210\u4E0E\u5DF2\u653E\u4E0B \u00B7 ", archived.length] }), archived.slice(0, archivedVisible).map(thoughtRow), archivedVisible < archived.length && _jsx("button", { type: "button", className: "dsh-partner-activity-more", onClick: () => setArchivedVisible(n => n + 6), children: "\u67E5\u770B\u66F4\u591A\u65E7\u5FF5\u5934" }), _jsx("p", { className: "dsh-partner-activity-note", children: "\u4EC5\u4FDD\u7559\u8FD1\u671F\u8BB0\u5F55\uFF1B\u653E\u4E0B\u7684\u5FF5\u5934\u4E0D\u518D\u8FDB\u5165\u5F53\u524D\u6D3B\u52A8\u4E0A\u4E0B\u6587\u3002" })] })] }), _jsx("span", { className: "dsh-partner-activity-copy-status", role: "status", children: copied ? '路径已复制' : '' })] });
|
|
52
67
|
}
|
|
53
68
|
//# sourceMappingURL=thoughts-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thoughts-panel.js","sourceRoot":"","sources":["../../src/ui/thoughts-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"thoughts-panel.js","sourceRoot":"","sources":["../../src/ui/thoughts-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Preserve generated PCM samples and leave a half-second release at the end.
|
|
2
|
+
* Leave at least 250ms after audible samples even when QQ rounds duration to seconds.
|
|
3
|
+
* Compressed/unknown WAV layouts and user-supplied files are not rewritten.
|
|
4
|
+
*/
|
|
5
|
+
export declare function withSpeechTail(bytes: Buffer, maxBytes: number): Buffer;
|
|
6
|
+
//# sourceMappingURL=audio-tail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-tail.d.ts","sourceRoot":"","sources":["../../src/voice/audio-tail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+CtE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Preserve generated PCM samples and leave a half-second release at the end.
|
|
2
|
+
* Leave at least 250ms after audible samples even when QQ rounds duration to seconds.
|
|
3
|
+
* Compressed/unknown WAV layouts and user-supplied files are not rewritten.
|
|
4
|
+
*/
|
|
5
|
+
export function withSpeechTail(bytes, maxBytes) {
|
|
6
|
+
if (bytes.length < 44 || bytes.toString('ascii', 0, 4) !== 'RIFF' || bytes.toString('ascii', 8, 12) !== 'WAVE' || bytes.readUInt32LE(4) + 8 !== bytes.length)
|
|
7
|
+
return bytes;
|
|
8
|
+
let fmt = -1, data = -1, size = 0;
|
|
9
|
+
for (let offset = 12; offset + 8 <= bytes.length;) {
|
|
10
|
+
const length = bytes.readUInt32LE(offset + 4), end = offset + 8 + length + length % 2;
|
|
11
|
+
if (end > bytes.length)
|
|
12
|
+
return bytes;
|
|
13
|
+
const tag = bytes.toString('ascii', offset, offset + 4);
|
|
14
|
+
if (tag === 'fmt ') {
|
|
15
|
+
if (fmt !== -1 || length < 16)
|
|
16
|
+
return bytes;
|
|
17
|
+
fmt = offset + 8;
|
|
18
|
+
}
|
|
19
|
+
if (tag === 'data') {
|
|
20
|
+
if (data !== -1)
|
|
21
|
+
return bytes;
|
|
22
|
+
data = offset + 8;
|
|
23
|
+
size = length;
|
|
24
|
+
}
|
|
25
|
+
offset = end;
|
|
26
|
+
}
|
|
27
|
+
if (fmt < 0 || data < 0 || !size)
|
|
28
|
+
return bytes;
|
|
29
|
+
const format = bytes.readUInt16LE(fmt), channels = bytes.readUInt16LE(fmt + 2), rate = bytes.readUInt32LE(fmt + 4);
|
|
30
|
+
const align = bytes.readUInt16LE(fmt + 12), bits = bytes.readUInt16LE(fmt + 14), width = bits / 8;
|
|
31
|
+
if (format !== 1 || ![8, 16, 24, 32].includes(bits) || channels < 1 || channels > 32 || rate < 8000 || rate > 192000 || align !== channels * width || size % align || bytes.readUInt32LE(fmt + 8) !== rate * align)
|
|
32
|
+
return bytes;
|
|
33
|
+
const releaseFrames = Math.ceil(rate * 0.5), frames = size / align;
|
|
34
|
+
const threshold = 2 ** (bits - 1) * 0.001; // -60 dBFS; retain every original sample, including quieter ones.
|
|
35
|
+
let quietFrames = 0;
|
|
36
|
+
for (let frame = frames - 1; frame >= Math.max(0, frames - releaseFrames); frame--) {
|
|
37
|
+
let quiet = true;
|
|
38
|
+
for (let ch = 0; ch < channels; ch++) {
|
|
39
|
+
const offset = data + frame * align + ch * width;
|
|
40
|
+
const sample = bits === 8 ? bytes[offset] - 128 : bytes.readIntLE(offset, width);
|
|
41
|
+
if (Math.abs(sample) > threshold) {
|
|
42
|
+
quiet = false;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!quiet)
|
|
47
|
+
break;
|
|
48
|
+
quietFrames++;
|
|
49
|
+
}
|
|
50
|
+
const voicedFrames = frames - quietFrames;
|
|
51
|
+
// QQ's bridge rounds source duration. Crossing the half-second boundary keeps
|
|
52
|
+
// that advertised duration at least 250ms beyond the final audible sample.
|
|
53
|
+
const roundedSeconds = Math.ceil(voicedFrames / rate + 0.25);
|
|
54
|
+
const targetFrames = Math.max(voicedFrames + releaseFrames, Math.ceil((roundedSeconds - 0.5) * rate) + 1);
|
|
55
|
+
if (targetFrames <= frames)
|
|
56
|
+
return bytes;
|
|
57
|
+
const extra = (targetFrames - frames) * align, nextSize = size + extra;
|
|
58
|
+
const oldEnd = data + size + size % 2;
|
|
59
|
+
const total = bytes.length + extra + nextSize % 2 - size % 2;
|
|
60
|
+
if (total > maxBytes || total - 8 > 0xffffffff)
|
|
61
|
+
return bytes;
|
|
62
|
+
const result = Buffer.concat([
|
|
63
|
+
bytes.subarray(0, data + size),
|
|
64
|
+
Buffer.alloc(extra, bits === 8 ? 128 : 0),
|
|
65
|
+
Buffer.alloc(nextSize % 2),
|
|
66
|
+
bytes.subarray(oldEnd),
|
|
67
|
+
]);
|
|
68
|
+
result.writeUInt32LE(result.length - 8, 4);
|
|
69
|
+
result.writeUInt32LE(nextSize, data - 4);
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=audio-tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-tail.js","sourceRoot":"","sources":["../../src/voice/audio-tail.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/voice/synthesize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/voice/synthesize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAA;AAC3C,eAAO,MAAM,eAAe,QAAa,CAAA;AACzC,wBAAgB,SAAS,CAAC,KAAK,EAAC,MAAM,GAAE,WAAW,GAAC,YAAY,CAQ/D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,SAAQ,GAAE;IAAC,GAAG,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,OAAO,CAAA;CAAC,CAM3F;AAQD,wBAAsB,UAAU,CAAC,CAAC,EAAC,UAAU,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,GAAC,OAAO,KAAW,GAAE,OAAO,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAA;CAAC,CAAC,CAevK"}
|
package/lib/voice/synthesize.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withSpeechTail } from './audio-tail.js';
|
|
1
2
|
export const MAX_AUDIO_BYTES = 10 * 1024 * 1024;
|
|
2
3
|
export function audioType(bytes) {
|
|
3
4
|
if (bytes.length >= 44 && bytes.toString('ascii', 0, 4) === 'RIFF' && bytes.toString('ascii', 8, 12) === 'WAVE') {
|
|
@@ -92,6 +93,7 @@ export async function synthesize(p, key, text, voice, signal, fetcher = fetch) {
|
|
|
92
93
|
throw Error('TTS 响应不是音频类型');
|
|
93
94
|
if (bytes.length > MAX_AUDIO_BYTES)
|
|
94
95
|
throw Error('TTS 音频超过大小限制');
|
|
95
|
-
|
|
96
|
+
const mediaType = audioType(bytes);
|
|
97
|
+
return { data: mediaType === 'audio/wav' ? withSpeechTail(bytes, MAX_AUDIO_BYTES) : bytes, mediaType };
|
|
96
98
|
}
|
|
97
99
|
//# sourceMappingURL=synthesize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/voice/synthesize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/voice/synthesize.ts"],"names":[],"mappings":"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"}
|
package/lib/voice/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/voice/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/voice/tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,uBAAuB,CAAA;AAGpE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAM3D,wBAAgB,cAAc,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAC,UAAU,EAAC,IAAI,EAAC,YAAY,EAAC,SAAS,CAAC,EAAC,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,yBAAyB,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAC,MAAI,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC,GAAE,cAAc,CAiC/O"}
|
package/lib/voice/tool.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { taskFollowup, checkTaskReview, TASK_REVIEW_SCHEMA } from '../chat/task-followup.js';
|
|
1
2
|
import { supportsChannelTts } from './domain.js';
|
|
2
3
|
import { directReplyTarget } from '../channels/reply-access.js';
|
|
3
4
|
import { qqGroupPeer, qqSettings } from '../channels/qq/settings.js';
|
|
@@ -6,11 +7,11 @@ import { questionOrigin } from '../channels/question-origin.js';
|
|
|
6
7
|
import { isIdleContactNotice } from '../character/idle-contact.js';
|
|
7
8
|
import { OneBotApiError } from '../channels/qq/connection.js';
|
|
8
9
|
export function voiceReplyTool(owner, store, service, call, sendAudio) {
|
|
9
|
-
return { name: 'partner_voice_reply', description: '使用伙伴「渠道 → TTS」中配置并分配给当前渠道的通用服务向当前聊天对象说话,属于公开聊天回复能力。action=status 查看当前语音服务和可用音色;action=send_file 用 path 发送脚本已生成的当前会话目录内 WAV/MP3(最多10MB),不合成、不改音色、不要求开启或选择 TTS 服务;可 continueTurn:true 连续发送试听,比较和记录音色由你自行完成。action=speak 将按当前人物写好的 text 合成并发送音频(QQ 为语音条,微信、Matrix、Mattermost
|
|
10
|
-
output: { schema: { type: 'object' }, render: (_a, v) => [{ type: 'text', text: JSON.stringify(v) }], presentationMeta: (_a, v) => { const r = v; return r.status === 'confirmed' ? { kind: 'partner-chat-v1', parts: [], delivered: true, deliveryKind: '
|
|
10
|
+
return { name: 'partner_voice_reply', description: '使用伙伴「渠道 → TTS」中配置并分配给当前渠道的通用服务向当前聊天对象说话,属于公开聊天回复能力。action=status 查看当前语音服务和可用音色;action=send_file 用 path 发送脚本已生成的当前会话目录内 WAV/MP3(最多10MB),不合成、不改音色、不要求开启或选择 TTS 服务;可 continueTurn:true 连续发送试听,比较和记录音色由你自行完成。action=speak 将按当前人物写好的 text 合成并发送音频(QQ 为语音条,微信、Matrix、Mattermost 为音频附件),不重写语气。不能填写收件人、接口或密钥。有任务接续上下文时最终回复需 taskReview(与 partner_chat_reply 相同);默认送达后结束本轮;continueTurn:true 可接着执行或接话。成功后不重复发同样的文字;结果未知不能重试发送。未启用外部 TTS 时 QQ 原生语音仍可用 partner_qq_reply。', parameters: { type: 'object', additionalProperties: false, required: ['action'], properties: { taskReview: TASK_REVIEW_SCHEMA, action: { type: 'string', enum: ['status', 'speak', 'send_file'] }, path: { type: 'string', minLength: 1, maxLength: 4096, description: 'send_file 专用,本会话工作目录内已生成的音频路径' }, text: { type: 'string', minLength: 1, maxLength: 2000 }, voice: { type: 'string', maxLength: 200 }, continueTurn: { type: 'boolean' } } }, presentCall: () => ({ card: 'generic', title: '语音 TTS' }),
|
|
11
|
+
output: { schema: { type: 'object' }, render: (_a, v) => [{ type: 'text', text: JSON.stringify(v) }], presentationMeta: (_a, v) => { const r = v; return r.status === 'confirmed' ? { kind: 'partner-chat-v1', parts: [], delivered: true, deliveryKind: 'voice', originRouteId: r.originRouteId, ...(r.taskReview ? { taskReview: r.taskReview } : {}), inputMessageId: r.inputMessageId, spokenText: r.spokenText, ...(r.continueTurn ? { intermediate: true } : {}) } : null; } },
|
|
11
12
|
async execute(raw, exec) {
|
|
12
13
|
const a = raw;
|
|
13
|
-
if (!a || Object.keys(a).some(k => !['action', 'path', 'text', 'voice', 'continueTurn'].includes(k)) || !['status', 'speak', 'send_file'].includes(a.action) || a.continueTurn !== undefined && typeof a.continueTurn !== 'boolean')
|
|
14
|
+
if (!a || Object.keys(a).some(k => !['action', 'path', 'text', 'voice', 'continueTurn', 'taskReview'].includes(k)) || !['status', 'speak', 'send_file'].includes(a.action) || a.continueTurn !== undefined && typeof a.continueTurn !== 'boolean')
|
|
14
15
|
throw Error('语音参数无效');
|
|
15
16
|
const agent = exec.agent;
|
|
16
17
|
if (!agent)
|
|
@@ -44,6 +45,7 @@ export function voiceReplyTool(owner, store, service, call, sendAudio) {
|
|
|
44
45
|
throw Error('请提供有效的语音正文和音色');
|
|
45
46
|
if (!a.continueTurn && typeof exec.concludeTurn !== 'function')
|
|
46
47
|
throw Error('当前宿主不支持语音终结');
|
|
48
|
+
const taskReview = a.continueTurn ? undefined : checkTaskReview(taskFollowup(store.snapshot(), owner, agent.session.id, agent.session.snapshotEvents()), a.taskReview);
|
|
47
49
|
const input = { owner, channelId: c.id, routeId: route.id, inputId: initial.input, text: a.text?.trim() ?? '', voice: a.voice, signal: exec.signal, guard, send: async (data, signal, check, file) => {
|
|
48
50
|
if (c.platform !== 'qq') {
|
|
49
51
|
await sendAudio(agent.session.id, file, signal, route.id, check);
|
|
@@ -67,7 +69,7 @@ export function voiceReplyTool(owner, store, service, call, sendAudio) {
|
|
|
67
69
|
throw Error('本次语音' + (r.status === 'unknown' ? '结果未知' : '尚未确认送达') + ';不要自动重新合成或发送,请核对服务和渠道记录');
|
|
68
70
|
if (!a.continueTurn)
|
|
69
71
|
exec.concludeTurn();
|
|
70
|
-
return { status: r.status, messageId: r.messageId, originRouteId: route.id, inputMessageId: initial.input, spokenText: r.spokenText, continueTurn: a.continueTurn === true };
|
|
72
|
+
return { status: r.status, ...(taskReview ? { taskReview } : {}), messageId: r.messageId, originRouteId: route.id, inputMessageId: initial.input, spokenText: r.spokenText, continueTurn: a.continueTurn === true };
|
|
71
73
|
} };
|
|
72
74
|
}
|
|
73
75
|
//# sourceMappingURL=tool.js.map
|
package/lib/voice/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/voice/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/voice/tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemoncat7/dsh-partner",
|
|
3
|
-
"version": "2.25.
|
|
3
|
+
"version": "2.25.8",
|
|
4
4
|
"description": "Long-lived AI companions with QQ, WeChat, Matrix and Mattermost channels for DeepSeek Harness",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -31,6 +31,14 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
|
+
"docs/releases/2.25.8.md",
|
|
35
|
+
"docs/releases/2.25.7.md",
|
|
36
|
+
"docs/releases/2.25.6.md",
|
|
37
|
+
"docs/releases/2.25.5.md",
|
|
38
|
+
"docs/releases/2.25.4.md",
|
|
39
|
+
"docs/releases/2.25.3.md",
|
|
40
|
+
"docs/releases/2.25.2.md",
|
|
41
|
+
"docs/releases/2.25.1.md",
|
|
34
42
|
"docs/releases/2.25.0.md",
|
|
35
43
|
"docs/releases/2.25.0-rc.11.md",
|
|
36
44
|
"docs/releases/2.25.0-rc.5.md",
|