@lemoncat7/dsh-partner 2.7.3 → 2.7.4
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.md +1 -1
- package/docs/releases/2.7.4.md +12 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +9 -15
- package/lib/api.js.map +1 -1
- package/lib/channels/weixin/connect.d.ts +26 -0
- package/lib/channels/weixin/connect.d.ts.map +1 -0
- package/lib/channels/weixin/connect.js +52 -0
- package/lib/channels/weixin/connect.js.map +1 -0
- package/lib/channels/weixin/login.d.ts +4 -0
- package/lib/channels/weixin/login.d.ts.map +1 -1
- package/lib/channels/weixin/login.js +46 -5
- package/lib/channels/weixin/login.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +597 -526
- package/lib/client.js.map +4 -4
- package/lib/companions/removal.d.ts +1 -0
- package/lib/companions/removal.d.ts.map +1 -1
- package/lib/companions/removal.js +5 -1
- package/lib/companions/removal.js.map +1 -1
- package/lib/ui/companion-deletion.d.ts +8 -0
- package/lib/ui/companion-deletion.d.ts.map +1 -0
- package/lib/ui/companion-deletion.js +43 -0
- package/lib/ui/companion-deletion.js.map +1 -0
- package/lib/ui/identity-editor.d.ts +0 -2
- package/lib/ui/identity-editor.d.ts.map +1 -1
- package/lib/ui/identity-editor.js +6 -37
- package/lib/ui/identity-editor.js.map +1 -1
- package/package.json +2 -1
|
@@ -7,6 +7,7 @@ export interface CompanionRemovalLifecycle {
|
|
|
7
7
|
clearConcerns(id: string): Promise<void>;
|
|
8
8
|
validateDirectory?(id: string): Promise<void>;
|
|
9
9
|
removeDirectory?(id: string): Promise<void>;
|
|
10
|
+
removeChannels?(id: string): Promise<void>;
|
|
10
11
|
}
|
|
11
12
|
/** Serialize destructive lifecycle operations, including different targets. */
|
|
12
13
|
export declare class CompanionRemovalService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removal.d.ts","sourceRoot":"","sources":["../../src/companions/removal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,iBAAiB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,eAAe,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"removal.d.ts","sourceRoot":"","sources":["../../src/companions/removal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,iBAAiB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,eAAe,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,cAAc,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,+EAA+E;AAC/E,qBAAa,uBAAuB;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IADlC,OAAO,CAAC,IAAI,CAAmC;gBAClB,KAAK,EAAE,YAAY;IAEhD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;YAMzD,GAAG;YAKH,YAAY;CAqC3B"}
|
|
@@ -22,6 +22,7 @@ export class CompanionRemovalService {
|
|
|
22
22
|
async removeLocked(id, lifecycle) {
|
|
23
23
|
assertRemovable(this.store.snapshot(), id, lifecycle);
|
|
24
24
|
await lifecycle.validateDirectory?.(id);
|
|
25
|
+
await lifecycle.removeChannels?.(id);
|
|
25
26
|
// Fail registration cleanup before removing identity/session links.
|
|
26
27
|
await lifecycle.detachWorkspace(id);
|
|
27
28
|
assertRemovable(this.store.snapshot(), id, lifecycle);
|
|
@@ -37,6 +38,9 @@ export class CompanionRemovalService {
|
|
|
37
38
|
await this.store.update(state => {
|
|
38
39
|
assertRemovable(state, id, lifecycle);
|
|
39
40
|
state.companions = state.companions.filter(item => item.id !== id);
|
|
41
|
+
const channelIds = new Set(state.channels.filter(item => item.companionId === id).map(item => item.id));
|
|
42
|
+
state.channels = state.channels.filter(item => !channelIds.has(item.id));
|
|
43
|
+
state.pairings = state.pairings.filter(item => !channelIds.has(item.channelId));
|
|
40
44
|
state.sessions = state.sessions.filter(item => item.companionId !== id);
|
|
41
45
|
state.skillBindings = state.skillBindings.filter(item => item.companionId !== id);
|
|
42
46
|
if (state.mcpBindings)
|
|
@@ -78,7 +82,7 @@ function assertRemovable(state, id, lifecycle) {
|
|
|
78
82
|
throw failure(404, '伙伴不存在或已删除');
|
|
79
83
|
if (state.companions.length <= 1)
|
|
80
84
|
throw failure(409, '至少保留一个伙伴');
|
|
81
|
-
if (state.channels.some(item => item.companionId === id))
|
|
85
|
+
if (!lifecycle.removeChannels && state.channels.some(item => item.companionId === id))
|
|
82
86
|
throw failure(409, '请先删除或换绑该伙伴的微信渠道');
|
|
83
87
|
if (lifecycle.isBusy(id) || state.executionRuns.some(item => item.ownerCompanionId === id && item.status === 'running')
|
|
84
88
|
|| state.delegations.some(item => item.status === 'running' && (item.fromCompanionId === id || item.toCompanionId === id))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removal.js","sourceRoot":"","sources":["../../src/companions/removal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removal.js","sourceRoot":"","sources":["../../src/companions/removal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CompanionView } from '../client-api.js';
|
|
2
|
+
export declare function CompanionDeletion({ companion, count, channelCount, onRemoved }: {
|
|
3
|
+
companion: CompanionView;
|
|
4
|
+
count: number;
|
|
5
|
+
channelCount: number;
|
|
6
|
+
onRemoved(id: string): Promise<void>;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
//# sourceMappingURL=companion-deletion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-deletion.d.ts","sourceRoot":"","sources":["../../src/ui/companion-deletion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAG1D,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;IAC/E,SAAS,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpG,GAAG,GAAG,CAAC,OAAO,CAgCd"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { IconTrashOutlineRegular } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
import { api } from '../client-api.js';
|
|
5
|
+
import { WorkspaceDialog, errorMessage } from './workspace-components.js';
|
|
6
|
+
export function CompanionDeletion({ companion, count, channelCount, onRemoved }) {
|
|
7
|
+
const [open, setOpen] = useState(false);
|
|
8
|
+
const [busy, setBusy] = useState(false);
|
|
9
|
+
const [removed, setRemoved] = useState(false);
|
|
10
|
+
const [error, setError] = useState('');
|
|
11
|
+
const locked = useRef(false), alive = useRef(true);
|
|
12
|
+
useEffect(() => { alive.current = true; return () => { alive.current = false; }; }, []);
|
|
13
|
+
const remove = async () => {
|
|
14
|
+
if (!open || locked.current || removed || count <= 1)
|
|
15
|
+
return;
|
|
16
|
+
const id = companion.id;
|
|
17
|
+
locked.current = true;
|
|
18
|
+
setBusy(true);
|
|
19
|
+
setError('');
|
|
20
|
+
let committed = false;
|
|
21
|
+
try {
|
|
22
|
+
await api(`/companions/${encodeURIComponent(id)}?removeFiles=1`, { method: 'DELETE' });
|
|
23
|
+
committed = true;
|
|
24
|
+
if (alive.current) {
|
|
25
|
+
setRemoved(true);
|
|
26
|
+
setOpen(false);
|
|
27
|
+
}
|
|
28
|
+
await onRemoved(id);
|
|
29
|
+
}
|
|
30
|
+
catch (reason) {
|
|
31
|
+
if (alive.current)
|
|
32
|
+
setError(`${committed ? '伙伴已删除,页面刷新失败,请刷新页面:' : '删除失败:'}${errorMessage(reason)}`);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
locked.current = false;
|
|
36
|
+
if (alive.current)
|
|
37
|
+
setBusy(false);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return _jsxs("div", { className: "dsh-partner-overview-delete", children: [_jsxs("button", { type: "button", className: "is-danger", disabled: busy || removed || count <= 1, title: count <= 1 ? '至少保留一个伙伴' : undefined, onClick: () => { setError(''); setOpen(true); }, children: [_jsx(IconTrashOutlineRegular, { size: 16 }), "\u5220\u9664\u4F19\u4F34"] }), !open && error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error }), open && _jsxs(WorkspaceDialog, { title: `删除「${companion.name}」?`, detail: "\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\uFF0C\u53EA\u5220\u9664\u5F53\u524D\u786E\u8BA4\u7684\u4F19\u4F34\u3002", close: () => { if (!locked.current)
|
|
41
|
+
setOpen(false); }, children: [_jsx("p", { children: "\u5C06\u6E05\u7406\u8EAB\u4EFD\u3001\u8BB0\u5FC6\u3001\u6301\u7EED\u5173\u6CE8\u3001\u80FD\u529B\u7ED1\u5B9A\u3001\u5B9A\u65F6\u4EFB\u52A1\u53CA\u4E13\u5C5E\u76EE\u5F55\u4E2D\u7684\u5168\u90E8\u6587\u4EF6\u3002" }), _jsx("p", { children: channelCount ? `已绑定 ${channelCount} 个渠道。确认后会自动停止并删除这些渠道、登录凭据和联系人授权,无需先手动解绑。` : '该伙伴没有绑定渠道。' }), _jsx("p", { children: "DSH \u539F\u4F1A\u8BDD\u65E5\u5FD7\u7531\u5BBF\u4E3B\u7BA1\u7406\uFF0C\u4E0D\u5728\u6B64\u6B21\u5220\u9664\u8303\u56F4\u3002\u6B63\u5728\u6267\u884C\u7684\u4EFB\u52A1\u53CA\u5171\u4EAB\u6216\u5F02\u5E38\u76EE\u5F55\u4ECD\u4F1A\u62E6\u622A\u5220\u9664\u3002" }), error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-partner-form-actions", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => setOpen(false), children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "is-danger", disabled: busy, onClick: () => { void remove(); }, children: busy ? '正在删除…' : '确认删除' })] })] })] });
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=companion-deletion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-deletion.js","sourceRoot":"","sources":["../../src/ui/companion-deletion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { type CompanionView } from '../client-api.js';
|
|
2
2
|
interface Props {
|
|
3
3
|
companion: CompanionView;
|
|
4
|
-
count: number;
|
|
5
4
|
onChanged(): Promise<void>;
|
|
6
|
-
onRemoved(id: string): Promise<void>;
|
|
7
5
|
}
|
|
8
6
|
/** Identity-scoped lifetime prevents confirmations and late results crossing targets. */
|
|
9
7
|
export declare function IdentityEditor(props: Props): JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-editor.d.ts","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAK1D,UAAU,KAAK;IACb,SAAS,EAAE,aAAa,CAAA;IACxB,
|
|
1
|
+
{"version":3,"file":"identity-editor.d.ts","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAK1D,UAAU,KAAK;IACb,SAAS,EAAE,aAAa,CAAA;IACxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAAsE"}
|
|
@@ -1,33 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { IconCheckOutlineRegular as IconCheckOutline14
|
|
3
|
+
import { IconCheckOutlineRegular as IconCheckOutline14 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
4
|
import { api } from '../client-api.js';
|
|
5
5
|
import { companionDraft } from './companion-draft.js';
|
|
6
6
|
import { FormField as Field, SectionHeading as Section } from './partner-components.js';
|
|
7
7
|
import { errorMessage } from './workspace-components.js';
|
|
8
8
|
/** Identity-scoped lifetime prevents confirmations and late results crossing targets. */
|
|
9
9
|
export function IdentityEditor(props) { return _jsx(IdentityEditorForm, { ...props }, props.companion.id); }
|
|
10
|
-
function IdentityEditorForm({ companion,
|
|
10
|
+
function IdentityEditorForm({ companion, onChanged }) {
|
|
11
11
|
const [form, setForm] = useState(() => companionDraft(companion));
|
|
12
12
|
const [operation, setOperation] = useState();
|
|
13
13
|
const [saved, setSaved] = useState(false);
|
|
14
|
-
const [removed, setRemoved] = useState(false);
|
|
15
14
|
const [error, setError] = useState();
|
|
16
|
-
const [confirmationId, setConfirmationId] = useState();
|
|
17
15
|
const locked = useRef(false);
|
|
18
16
|
const alive = useRef(true);
|
|
19
17
|
useEffect(() => { alive.current = true; return () => { alive.current = false; }; }, []);
|
|
20
|
-
useEffect(() => { setForm(companionDraft(companion)); setSaved(false);
|
|
21
|
-
const
|
|
22
|
-
const busy = operation !== undefined || removed;
|
|
18
|
+
useEffect(() => { setForm(companionDraft(companion)); setSaved(false); }, [companion.updatedAt]);
|
|
19
|
+
const busy = operation !== undefined;
|
|
23
20
|
const submit = async (event) => {
|
|
24
21
|
event.preventDefault();
|
|
25
|
-
if (locked.current
|
|
22
|
+
if (locked.current)
|
|
26
23
|
return;
|
|
27
24
|
locked.current = true;
|
|
28
25
|
setOperation('save');
|
|
29
26
|
setError(undefined);
|
|
30
|
-
setConfirmationId(undefined);
|
|
31
27
|
let committed = false;
|
|
32
28
|
try {
|
|
33
29
|
await api(`/companions/${encodeURIComponent(companion.id)}`, { method: 'PUT', body: JSON.stringify({ companion: form }) });
|
|
@@ -46,33 +42,6 @@ function IdentityEditorForm({ companion, count, onChanged, onRemoved }) {
|
|
|
46
42
|
setOperation(undefined);
|
|
47
43
|
}
|
|
48
44
|
};
|
|
49
|
-
|
|
50
|
-
if (locked.current || removed || !confirming || count <= 1)
|
|
51
|
-
return;
|
|
52
|
-
const targetId = confirmationId;
|
|
53
|
-
locked.current = true;
|
|
54
|
-
setOperation('remove');
|
|
55
|
-
setError(undefined);
|
|
56
|
-
setConfirmationId(undefined);
|
|
57
|
-
let committed = false;
|
|
58
|
-
try {
|
|
59
|
-
await api(`/companions/${encodeURIComponent(targetId)}?removeFiles=1`, { method: 'DELETE' });
|
|
60
|
-
committed = true;
|
|
61
|
-
if (alive.current)
|
|
62
|
-
setRemoved(true);
|
|
63
|
-
// Always refresh the parent even if the user switched away during deletion.
|
|
64
|
-
await onRemoved(targetId);
|
|
65
|
-
}
|
|
66
|
-
catch (reason) {
|
|
67
|
-
if (alive.current)
|
|
68
|
-
setError(`${committed ? '伙伴已删除,但页面刷新失败,请刷新页面,不要再次删除:' : '删除失败:'}${errorMessage(reason)}`);
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
locked.current = false;
|
|
72
|
-
if (alive.current)
|
|
73
|
-
setOperation(undefined);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
return _jsxs("form", { id: "dsh-partner-identity-editor", className: "dsh-partner-form is-identity", "aria-busy": operation !== undefined, onSubmit: event => { void submit(event); }, children: [_jsx(Section, { eyebrow: "IDENTITY", title: "\u5DE5\u4F5C\u8EAB\u4EFD", detail: "\u5B83\u4E0D\u662F\u4E00\u6B21\u5BF9\u8BDD\u7684\u63D0\u793A\u8BCD\uFF0C\u800C\u662F\u8FD9\u4E2A\u4F19\u4F34\u5728\u684C\u9762\u548C\u5FAE\u4FE1\u4E2D\u7684\u957F\u671F\u884C\u4E3A\u57FA\u7EBF\u3002" }), _jsxs("section", { className: "dsh-partner-identity-card", "aria-label": "\u8EAB\u4EFD\u914D\u7F6E", children: [_jsxs("div", { className: "dsh-partner-fields two", children: [_jsx(Field, { label: "\u540D\u5B57", children: _jsx("input", { disabled: busy, required: true, maxLength: 60, value: form.name, onChange: event => setForm({ ...form, name: event.target.value }) }) }), _jsx(Field, { label: "\u89D2\u8272", children: _jsx("input", { disabled: busy, required: true, maxLength: 120, value: form.role, onChange: event => setForm({ ...form, role: event.target.value }) }) })] }), _jsx(Field, { label: "\u4E00\u53E5\u8BDD\u5B9A\u4F4D", hint: "\u7528\u4E8E\u540D\u518C\u8BC6\u522B\uFF0C\u4E0D\u4F1A\u66FF\u4EE3\u5B8C\u6574\u884C\u4E3A\u51C6\u5219\u3002", children: _jsx("textarea", { disabled: busy, rows: 2, maxLength: 500, value: form.description, onChange: event => setForm({ ...form, description: event.target.value }) }) }), _jsx(Field, { label: "\u957F\u671F\u884C\u4E3A\u51C6\u5219", hint: "\u5EFA\u8BAE\u5199\u804C\u8D23\u3001\u8868\u8FBE\u65B9\u5F0F\u4E0E\u8FB9\u754C\uFF1B\u6E20\u9053\u3001\u5DE5\u5177\u548C\u6388\u6743\u7531\u7CFB\u7EDF\u5355\u72EC\u63A7\u5236\u3002", children: _jsx("textarea", { disabled: busy, rows: 9, maxLength: 12000, value: form.instructions, onChange: event => setForm({ ...form, instructions: event.target.value }) }) }), error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-partner-form-actions", children: [_jsx("span", { role: "status", children: saved && _jsxs(_Fragment, { children: [_jsx(IconCheckOutline14, { size: 14 }), "\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u4E00\u8F6E\u5C06\u4F7F\u7528\u65B0\u8EAB\u4EFD"] }) }), _jsx("button", { disabled: busy, children: operation === 'save' ? '正在保存…' : '保存身份' })] })] }), _jsxs("div", { className: "dsh-partner-identity-danger", "data-confirming": confirming, children: [_jsxs("span", { children: [_jsx("strong", { children: removed ? '伙伴已删除' : confirming ? `确认删除「${companion.name}」?` : '删除伙伴' }), _jsx("small", { children: confirming ? '将删除该伙伴的配置、记忆、挂念、专属目录及其中全部文件,此操作不可撤销。共享或异常目录会拦截;DSH 原会话日志仍由宿主管理,不在此次清理范围内。' : '必须先解绑微信并结束运行中的任务。删除只针对本次确认的伙伴,不会转交联系人。' })] }), _jsxs("div", { children: [confirming && _jsx("button", { type: "button", disabled: busy, className: "is-secondary", onClick: () => setConfirmationId(undefined), children: "\u53D6\u6D88" }), _jsxs("button", { type: "button", className: confirming ? 'is-danger' : '', disabled: busy || count <= 1, onClick: () => confirming ? void remove() : setConfirmationId(companion.id), children: [_jsx(IconTrashOutline16, { size: 16 }), operation === 'remove' ? '正在删除…' : removed ? '已删除' : confirming ? '确认删除' : '删除'] })] })] })] });
|
|
45
|
+
return _jsxs("form", { id: "dsh-partner-identity-editor", className: "dsh-partner-form is-identity", "aria-busy": operation !== undefined, onSubmit: event => { void submit(event); }, children: [_jsx(Section, { eyebrow: "IDENTITY", title: "\u5DE5\u4F5C\u8EAB\u4EFD", detail: "\u5B83\u4E0D\u662F\u4E00\u6B21\u5BF9\u8BDD\u7684\u63D0\u793A\u8BCD\uFF0C\u800C\u662F\u8FD9\u4E2A\u4F19\u4F34\u5728\u684C\u9762\u548C\u5FAE\u4FE1\u4E2D\u7684\u957F\u671F\u884C\u4E3A\u57FA\u7EBF\u3002" }), _jsxs("section", { className: "dsh-partner-identity-card", "aria-label": "\u8EAB\u4EFD\u914D\u7F6E", children: [_jsxs("div", { className: "dsh-partner-fields two", children: [_jsx(Field, { label: "\u540D\u5B57", children: _jsx("input", { disabled: busy, required: true, maxLength: 60, value: form.name, onChange: event => setForm({ ...form, name: event.target.value }) }) }), _jsx(Field, { label: "\u89D2\u8272", children: _jsx("input", { disabled: busy, required: true, maxLength: 120, value: form.role, onChange: event => setForm({ ...form, role: event.target.value }) }) })] }), _jsx(Field, { label: "\u4E00\u53E5\u8BDD\u5B9A\u4F4D", hint: "\u7528\u4E8E\u540D\u518C\u8BC6\u522B\uFF0C\u4E0D\u4F1A\u66FF\u4EE3\u5B8C\u6574\u884C\u4E3A\u51C6\u5219\u3002", children: _jsx("textarea", { disabled: busy, rows: 2, maxLength: 500, value: form.description, onChange: event => setForm({ ...form, description: event.target.value }) }) }), _jsx(Field, { label: "\u957F\u671F\u884C\u4E3A\u51C6\u5219", hint: "\u5EFA\u8BAE\u5199\u804C\u8D23\u3001\u8868\u8FBE\u65B9\u5F0F\u4E0E\u8FB9\u754C\uFF1B\u6E20\u9053\u3001\u5DE5\u5177\u548C\u6388\u6743\u7531\u7CFB\u7EDF\u5355\u72EC\u63A7\u5236\u3002", children: _jsx("textarea", { disabled: busy, rows: 9, maxLength: 12000, value: form.instructions, onChange: event => setForm({ ...form, instructions: event.target.value }) }) }), error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-partner-form-actions", children: [_jsx("span", { role: "status", children: saved && _jsxs(_Fragment, { children: [_jsx(IconCheckOutline14, { size: 14 }), "\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u4E00\u8F6E\u5C06\u4F7F\u7528\u65B0\u8EAB\u4EFD"] }) }), _jsx("button", { disabled: busy, children: operation === 'save' ? '正在保存…' : '保存身份' })] })] })] });
|
|
77
46
|
}
|
|
78
47
|
//# sourceMappingURL=identity-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-editor.js","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,uBAAuB,IAAI,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"identity-editor.js","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"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.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "Long-lived AI companions with WeChat, Matrix and Mattermost channels for DeepSeek Harness",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"./package.json": "./package.json"
|
|
27
27
|
},
|
|
28
28
|
"files": [
|
|
29
|
+
"docs/releases/2.7.4.md",
|
|
29
30
|
"docs/releases/2.7.3.md",
|
|
30
31
|
"resources/skills/**/*",
|
|
31
32
|
"docs/director-skills.md",
|