@dungsil/dsh-plugin-ui-setting-skills 0.0.0-stage → 0.1.0
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/cordis.patch.yml +3 -0
- package/dist/client.js +206 -0
- package/dist/index.js +71 -0
- package/locale/en.json +16 -0
- package/locale/ko.json +16 -0
- package/locale/zh.json +16 -0
- package/package.json +88 -3
- package/README.md +0 -3
package/cordis.patch.yml
ADDED
package/dist/client.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({ id: "@dungsil/dsh-plugin-ui-setting-skills", factory(require) { const module = { exports: {} }; const exports = module.exports;
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
// locale/en.json
|
|
7
|
+
var en_default = {
|
|
8
|
+
meta: {
|
|
9
|
+
"title": "Skills Settings",
|
|
10
|
+
"description": "View loaded user skills in settings."
|
|
11
|
+
},
|
|
12
|
+
ui: {
|
|
13
|
+
"nav": "Skills",
|
|
14
|
+
"description": "Skills loaded from your shared agent and DSH skill directories. Same-name skills are listed separately for each source.",
|
|
15
|
+
"agents": "Shared agent skills",
|
|
16
|
+
"dsh": "DSH skills",
|
|
17
|
+
"loading": "Loading skills…",
|
|
18
|
+
"empty": "No loaded skills from this source.",
|
|
19
|
+
"error": "Could not load skills. Close and reopen this settings section to try again.",
|
|
20
|
+
"incomplete": "Some skill sources could not be loaded. This list may be incomplete."
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
// locale/ko.json
|
|
24
|
+
var ko_default = {
|
|
25
|
+
meta: {
|
|
26
|
+
"title": "스킬 설정",
|
|
27
|
+
"description": "설정 화면에서 로드된 사용자 스킬을 확인합니다."
|
|
28
|
+
},
|
|
29
|
+
ui: {
|
|
30
|
+
"nav": "스킬",
|
|
31
|
+
"description": "공용 에이전트 및 DSH 스킬 경로에서 불러온 스킬을 표시합니다. 이름이 같은 스킬도 출처별로 각각 표시합니다.",
|
|
32
|
+
"agents": "공용 에이전트 스킬",
|
|
33
|
+
"dsh": "DSH 스킬",
|
|
34
|
+
"loading": "스킬을 불러오는 중입니다…",
|
|
35
|
+
"empty": "이 경로에서 로드된 스킬이 없습니다.",
|
|
36
|
+
"error": "스킬을 불러오지 못했습니다. 이 설정 항목을 닫았다가 다시 열어 주세요.",
|
|
37
|
+
"incomplete": "일부 스킬 소스를 불러오지 못해 목록이 완전하지 않을 수 있습니다."
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
// locale/zh.json
|
|
41
|
+
var zh_default = {
|
|
42
|
+
meta: {
|
|
43
|
+
"title": "技能设置",
|
|
44
|
+
"description": "在设置中查看已加载的用户技能。"
|
|
45
|
+
},
|
|
46
|
+
ui: {
|
|
47
|
+
"nav": "技能",
|
|
48
|
+
"description": "显示从共享代理和 DSH 技能目录加载的技能。同名技能按来源分别列出。",
|
|
49
|
+
"agents": "共享代理技能",
|
|
50
|
+
"dsh": "DSH 技能",
|
|
51
|
+
"loading": "正在加载技能…",
|
|
52
|
+
"empty": "未从此目录加载任何技能。",
|
|
53
|
+
"error": "无法加载技能。请关闭并重新打开此设置项后重试。",
|
|
54
|
+
"incomplete": "部分技能源无法加载,列表可能不完整。"
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
// src/protocol.ts
|
|
58
|
+
const channel = "/api";
|
|
59
|
+
const method = "dungsil-ui-setting-skills/list";
|
|
60
|
+
// src/client.tsx
|
|
61
|
+
const name = "dungsil-ui-setting-skills";
|
|
62
|
+
const inject = [
|
|
63
|
+
"connection",
|
|
64
|
+
"locale",
|
|
65
|
+
"slots"
|
|
66
|
+
];
|
|
67
|
+
const localizedCopy = (language) => (language.startsWith("ko") ? ko_default : language.startsWith("zh") ? zh_default : en_default).ui;
|
|
68
|
+
const styles = `
|
|
69
|
+
.dsh-skills-settings { container-type: inline-size; color: var(--dsw-alias-label-primary); font: 14px/22px var(--dsw-font-family, system-ui); }
|
|
70
|
+
.dsh-skills-settings p { margin: 4px 0; }
|
|
71
|
+
.dsh-skills-settings-tabs { margin: 20px 0 12px; }
|
|
72
|
+
.dsh-skills-settings .dsh-skills-muted { color: var(--dsw-alias-label-secondary); }
|
|
73
|
+
.dsh-skills-settings ul { list-style: none; margin: 0; padding: 0; }
|
|
74
|
+
.dsh-skills-settings code { font-size: 12px; overflow-wrap: anywhere; }
|
|
75
|
+
.dsh-skills-settings [role=alert] { color: var(--dsw-alias-state-error-primary, #b54424); }
|
|
76
|
+
.dsh-skills-settings details { border-bottom: .5px solid var(--dsw-alias-border-l2); }
|
|
77
|
+
.dsh-skills-settings summary { display: flex; align-items: center; gap: 12px; padding: 16px 0; list-style: none; cursor: pointer; border-radius: var(--dsw-radius-md); }
|
|
78
|
+
.dsh-skills-settings summary::-webkit-details-marker { display: none; }
|
|
79
|
+
.dsh-skills-settings summary:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
80
|
+
.dsh-skills-settings summary:focus-visible { outline: 2px solid var(--dsw-alias-brand-primary-new-colorprimary-new-color); outline-offset: 2px; }
|
|
81
|
+
.dsh-skills-settings summary svg { flex: none; }
|
|
82
|
+
.dsh-skills-settings details[open] summary svg { transform: rotate(90deg); }
|
|
83
|
+
.dsh-skills-summary-text { display: flex; align-items: baseline; gap: 16px; min-width: 0; flex: 1; }
|
|
84
|
+
.dsh-skills-summary-text strong { max-width: 50%; overflow-wrap: anywhere; }
|
|
85
|
+
.dsh-skills-preview { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
86
|
+
.dsh-skills-settings details[open] .dsh-skills-preview { display: none; }
|
|
87
|
+
.dsh-skills-settings details[open] .dsh-skills-summary-text strong { max-width: 100%; }
|
|
88
|
+
.dsh-skills-detail { padding: 0 0 16px 28px; overflow-wrap: anywhere; }
|
|
89
|
+
@container (max-width: 480px) {
|
|
90
|
+
.dsh-skills-summary-text { align-items: stretch; flex-direction: column; gap: 2px; }
|
|
91
|
+
.dsh-skills-summary-text strong { max-width: 100%; }
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
function SkillsSettings({ ctx }) {
|
|
95
|
+
const locale = (0, react.useSyncExternalStore)((listener) => ctx.locale.subscribe(listener), () => ctx.locale.getSnapshot());
|
|
96
|
+
const text = localizedCopy(locale.active);
|
|
97
|
+
const id = (0, react.useId)();
|
|
98
|
+
const connection = ctx.get("connection");
|
|
99
|
+
const [view, setView] = (0, react.useState)();
|
|
100
|
+
const [error, setError] = (0, react.useState)(false);
|
|
101
|
+
const [source, setSource] = (0, react.useState)("user-agents");
|
|
102
|
+
const groups = ["user-agents", "user-dsh"].map((value) => ({
|
|
103
|
+
value,
|
|
104
|
+
label: value === "user-agents" ? text.agents : text.dsh,
|
|
105
|
+
skills: view?.skills.filter((skill) => skill.source === value) ?? []
|
|
106
|
+
}));
|
|
107
|
+
(0, react.useEffect)(() => {
|
|
108
|
+
const controller = new AbortController();
|
|
109
|
+
setView(void 0);
|
|
110
|
+
setError(false);
|
|
111
|
+
(async () => {
|
|
112
|
+
try {
|
|
113
|
+
const result = await connection.rpc.call(channel, method, {}, controller.signal);
|
|
114
|
+
if (controller.signal.aborted) return;
|
|
115
|
+
if (!result.ok) throw new Error("Could not load skills");
|
|
116
|
+
setView(result.value);
|
|
117
|
+
} catch {
|
|
118
|
+
if (!controller.signal.aborted) setError(true);
|
|
119
|
+
}
|
|
120
|
+
})();
|
|
121
|
+
return () => controller.abort();
|
|
122
|
+
}, [connection]);
|
|
123
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
124
|
+
className: "dsh-skills-settings",
|
|
125
|
+
"aria-label": text.nav,
|
|
126
|
+
"aria-busy": !view && !error,
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
129
|
+
className: "dsh-skills-muted",
|
|
130
|
+
children: text.description
|
|
131
|
+
}),
|
|
132
|
+
!view && !error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
133
|
+
role: "status",
|
|
134
|
+
children: text.loading
|
|
135
|
+
}),
|
|
136
|
+
error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
137
|
+
role: "alert",
|
|
138
|
+
children: text.error
|
|
139
|
+
}),
|
|
140
|
+
view && !view.complete && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
141
|
+
role: "alert",
|
|
142
|
+
children: text.incomplete
|
|
143
|
+
}),
|
|
144
|
+
view && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.SegmentedControl, {
|
|
145
|
+
id,
|
|
146
|
+
className: "dsh-skills-settings-tabs",
|
|
147
|
+
value: source,
|
|
148
|
+
options: groups.map((group) => ({
|
|
149
|
+
value: group.value,
|
|
150
|
+
label: `${group.label} ${group.skills.length}`
|
|
151
|
+
})),
|
|
152
|
+
onChange: setSource,
|
|
153
|
+
label: text.nav
|
|
154
|
+
}), groups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
155
|
+
id: `${id}-${group.value}-panel`,
|
|
156
|
+
role: "tabpanel",
|
|
157
|
+
"aria-labelledby": `${id}-${group.value}`,
|
|
158
|
+
hidden: source !== group.value,
|
|
159
|
+
tabIndex: 0,
|
|
160
|
+
children: group.skills.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
161
|
+
className: "dsh-skills-muted",
|
|
162
|
+
children: text.empty
|
|
163
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", { children: group.skills.map((skill) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", {
|
|
164
|
+
"aria-label": skill.name,
|
|
165
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, {
|
|
166
|
+
size: 16,
|
|
167
|
+
"aria-hidden": "true"
|
|
168
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
169
|
+
className: "dsh-skills-summary-text",
|
|
170
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: skill.name }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
171
|
+
className: "dsh-skills-preview dsh-skills-muted",
|
|
172
|
+
"aria-hidden": "true",
|
|
173
|
+
children: skill.description
|
|
174
|
+
})]
|
|
175
|
+
})]
|
|
176
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
177
|
+
className: "dsh-skills-detail",
|
|
178
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: skill.description }), skill.path && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
179
|
+
className: "dsh-skills-muted",
|
|
180
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: skill.path })
|
|
181
|
+
})]
|
|
182
|
+
})] }) }, skill.path ?? skill.name)) })
|
|
183
|
+
}, group.value))] })
|
|
184
|
+
]
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function apply(ctx) {
|
|
188
|
+
ctx.effect(() => {
|
|
189
|
+
const style = document.createElement("style");
|
|
190
|
+
style.textContent = styles;
|
|
191
|
+
document.head.append(style);
|
|
192
|
+
return () => style.remove();
|
|
193
|
+
}, "ui-setting-skills: styles");
|
|
194
|
+
ctx.slots.inject("settings.section", () => ctx.slots.register({
|
|
195
|
+
name: "settings.section",
|
|
196
|
+
id: name,
|
|
197
|
+
order: 16,
|
|
198
|
+
label: () => localizedCopy(ctx.locale.getSnapshot().active).nav,
|
|
199
|
+
inject: () => ({ ctx })
|
|
200
|
+
}, SkillsSettings));
|
|
201
|
+
}
|
|
202
|
+
exports.apply = apply;
|
|
203
|
+
exports.inject = inject;
|
|
204
|
+
exports.name = name;
|
|
205
|
+
|
|
206
|
+
return module.exports; } });
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { clientRequestSchema } from "@deepseek-ai/dsh-client-connection";
|
|
2
|
+
import { FileSystemSkillProvider } from "@deepseek-ai/dsh-skill-filesystem";
|
|
3
|
+
// src/protocol.ts
|
|
4
|
+
const channel = "/api";
|
|
5
|
+
const method = "dungsil-ui-setting-skills/list";
|
|
6
|
+
// src/index.ts
|
|
7
|
+
const name = "dungsil-ui-setting-skills";
|
|
8
|
+
const inject = ["connection"];
|
|
9
|
+
function apply(ctx) {
|
|
10
|
+
const lifetime = new AbortController();
|
|
11
|
+
const provider = new FileSystemSkillProvider(ctx, {
|
|
12
|
+
signal: lifetime.signal,
|
|
13
|
+
invalidate() {}
|
|
14
|
+
}, { watch: false });
|
|
15
|
+
ctx.effect(() => async () => {
|
|
16
|
+
lifetime.abort();
|
|
17
|
+
await provider.dispose();
|
|
18
|
+
}, "ui-setting-skills: dispose discovery");
|
|
19
|
+
ctx.effect(() => ctx.connection.fetch.register({
|
|
20
|
+
path: `${channel}/${method}`,
|
|
21
|
+
methods: ["POST"],
|
|
22
|
+
requestBody: "buffered",
|
|
23
|
+
async fetch(request) {
|
|
24
|
+
let body;
|
|
25
|
+
try {
|
|
26
|
+
body = clientRequestSchema.safeParse(await request.json());
|
|
27
|
+
} catch {
|
|
28
|
+
return new Response("Invalid request", { status: 400 });
|
|
29
|
+
}
|
|
30
|
+
if (!body.success || body.data.method !== "dungsil-ui-setting-skills/list") return new Response("Invalid request", { status: 400 });
|
|
31
|
+
let result;
|
|
32
|
+
try {
|
|
33
|
+
const signal = AbortSignal.any([
|
|
34
|
+
request.signal,
|
|
35
|
+
lifetime.signal,
|
|
36
|
+
AbortSignal.timeout(15e3)
|
|
37
|
+
]);
|
|
38
|
+
const observation = await provider.list({ signal });
|
|
39
|
+
signal.throwIfAborted();
|
|
40
|
+
const skills = "candidates" in observation ? observation.candidates : observation;
|
|
41
|
+
result = {
|
|
42
|
+
ok: true,
|
|
43
|
+
value: {
|
|
44
|
+
complete: "candidates" in observation ? observation.complete : true,
|
|
45
|
+
skills: skills.flatMap((skill) => skill.source === "user-agents" || skill.source === "user-dsh" ? [{
|
|
46
|
+
name: skill.name,
|
|
47
|
+
description: skill.description,
|
|
48
|
+
source: skill.source === "user-agents" ? "user-agents" : "user-dsh",
|
|
49
|
+
path: skill.path
|
|
50
|
+
}] : [])
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
} catch {
|
|
54
|
+
result = {
|
|
55
|
+
ok: false,
|
|
56
|
+
error: {
|
|
57
|
+
code: "load_failed",
|
|
58
|
+
message: "Could not load skills.",
|
|
59
|
+
details: {}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return Response.json({
|
|
64
|
+
type: "server-response",
|
|
65
|
+
rpcId: body.data.rpcId,
|
|
66
|
+
result
|
|
67
|
+
}, { headers: { "Cache-Control": "no-store" } });
|
|
68
|
+
}
|
|
69
|
+
}), "ui-setting-skills: owner-only list");
|
|
70
|
+
}
|
|
71
|
+
export { apply, inject, name };
|
package/locale/en.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Skills Settings",
|
|
4
|
+
"description": "View loaded user skills in settings."
|
|
5
|
+
},
|
|
6
|
+
"ui": {
|
|
7
|
+
"nav": "Skills",
|
|
8
|
+
"description": "Skills loaded from your shared agent and DSH skill directories. Same-name skills are listed separately for each source.",
|
|
9
|
+
"agents": "Shared agent skills",
|
|
10
|
+
"dsh": "DSH skills",
|
|
11
|
+
"loading": "Loading skills…",
|
|
12
|
+
"empty": "No loaded skills from this source.",
|
|
13
|
+
"error": "Could not load skills. Close and reopen this settings section to try again.",
|
|
14
|
+
"incomplete": "Some skill sources could not be loaded. This list may be incomplete."
|
|
15
|
+
}
|
|
16
|
+
}
|
package/locale/ko.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "스킬 설정",
|
|
4
|
+
"description": "설정 화면에서 로드된 사용자 스킬을 확인합니다."
|
|
5
|
+
},
|
|
6
|
+
"ui": {
|
|
7
|
+
"nav": "스킬",
|
|
8
|
+
"description": "공용 에이전트 및 DSH 스킬 경로에서 불러온 스킬을 표시합니다. 이름이 같은 스킬도 출처별로 각각 표시합니다.",
|
|
9
|
+
"agents": "공용 에이전트 스킬",
|
|
10
|
+
"dsh": "DSH 스킬",
|
|
11
|
+
"loading": "스킬을 불러오는 중입니다…",
|
|
12
|
+
"empty": "이 경로에서 로드된 스킬이 없습니다.",
|
|
13
|
+
"error": "스킬을 불러오지 못했습니다. 이 설정 항목을 닫았다가 다시 열어 주세요.",
|
|
14
|
+
"incomplete": "일부 스킬 소스를 불러오지 못해 목록이 완전하지 않을 수 있습니다."
|
|
15
|
+
}
|
|
16
|
+
}
|
package/locale/zh.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "技能设置",
|
|
4
|
+
"description": "在设置中查看已加载的用户技能。"
|
|
5
|
+
},
|
|
6
|
+
"ui": {
|
|
7
|
+
"nav": "技能",
|
|
8
|
+
"description": "显示从共享代理和 DSH 技能目录加载的技能。同名技能按来源分别列出。",
|
|
9
|
+
"agents": "共享代理技能",
|
|
10
|
+
"dsh": "DSH 技能",
|
|
11
|
+
"loading": "正在加载技能…",
|
|
12
|
+
"empty": "未从此目录加载任何技能。",
|
|
13
|
+
"error": "无法加载技能。请关闭并重新打开此设置项后重试。",
|
|
14
|
+
"incomplete": "部分技能源无法加载,列表可能不完整。"
|
|
15
|
+
}
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dungsil/dsh-plugin-ui-setting-skills",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "View loaded user skills in DeepSeek Harness settings.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/dungsil/dsh-plugins.git",
|
|
9
|
+
"directory": "packages/ui-setting-skills"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"locale",
|
|
14
|
+
"cordis.patch.yml"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": "./dist/index.js",
|
|
19
|
+
"./client": "./dist/client.js",
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
"./locale/*.json": "./locale/*.json"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@deepseek-ai/cordis": "4.0.5",
|
|
28
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-rc.5",
|
|
29
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.5",
|
|
30
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.5",
|
|
31
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.5",
|
|
32
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.5",
|
|
33
|
+
"@deepseek-ai/dsh-credentials-local": "0.2.1-rc.5",
|
|
34
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.5",
|
|
35
|
+
"@dungsil/dsh-tsconfig": "0.0.0",
|
|
36
|
+
"@dungsil/dsh-tsdown": "0.0.0",
|
|
37
|
+
"@types/react": "18.3.31",
|
|
38
|
+
"react": "18.3.1",
|
|
39
|
+
"tsdown": "0.23.4"
|
|
40
|
+
},
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"@deepseek-ai/cordis": "^4.0.5",
|
|
43
|
+
"@deepseek-ai/dsh-client-connection": "^0.2.1-rc.5",
|
|
44
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.2.1-rc.5",
|
|
45
|
+
"@deepseek-ai/dsh-skill-filesystem": "^0.2.1-rc.5"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"dsh": "^0.2.1-rc.5",
|
|
49
|
+
"node": ">=24.9.0"
|
|
50
|
+
},
|
|
51
|
+
"dsh": {
|
|
52
|
+
"bundle": {
|
|
53
|
+
"patch": "./cordis.patch.yml"
|
|
54
|
+
},
|
|
55
|
+
"client": {
|
|
56
|
+
"platform": "web",
|
|
57
|
+
"immediately": true,
|
|
58
|
+
"inject": [
|
|
59
|
+
"@deepseek-ai/dsh-client-connection",
|
|
60
|
+
"@deepseek-ai/dsh-client-locale",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
62
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"market": {
|
|
67
|
+
"order": 7.2,
|
|
68
|
+
"title": {
|
|
69
|
+
"en": "Skills Settings",
|
|
70
|
+
"ko": "스킬 설정",
|
|
71
|
+
"zh": "技能设置"
|
|
72
|
+
},
|
|
73
|
+
"description": {
|
|
74
|
+
"en": "View loaded skills from your shared agent and DSH skill directories in settings.",
|
|
75
|
+
"ko": "설정 화면에서 공용 에이전트 및 DSH 스킬 경로에 로드된 스킬을 확인합니다.",
|
|
76
|
+
"zh": "在设置中查看从共享代理和 DSH 技能目录加载的技能。"
|
|
77
|
+
},
|
|
78
|
+
"category": "ui",
|
|
79
|
+
"labels": [],
|
|
80
|
+
"keywords": [
|
|
81
|
+
"skills",
|
|
82
|
+
"settings",
|
|
83
|
+
"ui"
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"scripts": {
|
|
87
|
+
"build": "tsdown",
|
|
88
|
+
"typecheck": "tsc --noEmit",
|
|
89
|
+
"test": "node --test test/*.test.mjs"
|
|
90
|
+
}
|
|
6
91
|
}
|
package/README.md
DELETED