@godv61/dsh-task-engine 0.27.0 → 0.27.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/.acceptance.mjs +11 -6
- package/.assessment-batch1.mjs +14 -11
- package/.codex-project-test.mjs +80 -0
- package/.enforce-test.mjs +4 -5
- package/.evidence-test.mjs +3 -3
- package/.filter-test.mjs +6 -8
- package/.freeze-test.mjs +20 -11
- package/.p0-test.mjs +21 -24
- package/.roundtrip-test.mjs +16 -28
- package/.workflow-test.mjs +6 -8
- package/README.md +8 -6
- package/defaults/eng.json +1 -97
- package/docs/CHANGELOG.md +7 -0
- package/docs/configuration.md +12 -13
- package/docs/faq.md +1 -1
- package/docs/manual.html +16 -34
- package/docs/resource-install.md +5 -3
- package/hooks/commit-msg +4 -33
- package/lib/client.js +94 -108
- package/lib/client.js.map +3 -3
- package/lib/controller.d.ts +4 -3
- package/lib/controller.js +12 -6
- package/lib/controller.js.map +1 -1
- package/lib/dev-task.js +33 -27
- package/lib/dev-task.js.map +1 -1
- package/lib/engine.d.ts +2 -3
- package/lib/engine.js +2 -2
- package/lib/engine.js.map +1 -1
- package/lib/shipped-skills.d.ts +2 -4
- package/lib/shipped-skills.js +2 -4
- package/lib/shipped-skills.js.map +1 -1
- package/lib/skill-audit.d.ts +4 -4
- package/lib/skill-audit.js +19 -14
- package/lib/skill-audit.js.map +1 -1
- package/lib/workflows.d.ts +3 -4
- package/lib/workflows.js +2 -41
- package/lib/workflows.js.map +1 -1
- package/package.json +4 -4
- package/preset/agent.cordis.yml +1 -1
- package/preset/persona.md +1 -1
- package/scripts/verify-package.mjs +3 -1
- package/skills/eng-delivery/SKILL.md +4 -4
- package/rules/coding-conventions.md +0 -7
- package/rules/commit-conventions.md +0 -6
- package/rules/security-redlines.md +0 -6
- package/skills/code-commit/SKILL.md +0 -13
- package/skills/code-implement/SKILL.md +0 -24
- package/skills/code-review/SKILL.md +0 -13
- package/skills/code-verify/SKILL.md +0 -20
- package/skills/requirement-analysis/SKILL.md +0 -16
- package/skills/solution-design/SKILL.md +0 -19
package/lib/client.js
CHANGED
|
@@ -2,9 +2,11 @@ window.__ModuleLoader__.load({ id: "@godv61/dsh-task-engine", factory: (require)
|
|
|
2
2
|
var module = { exports: {} }; var exports = module.exports;
|
|
3
3
|
|
|
4
4
|
"use strict";
|
|
5
|
+
var __create = Object.create;
|
|
5
6
|
var __defProp = Object.defineProperty;
|
|
6
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
8
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
10
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
11
|
var __export = (target, all) => {
|
|
10
12
|
for (var name in all)
|
|
@@ -18,6 +20,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
20
|
}
|
|
19
21
|
return to;
|
|
20
22
|
};
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
24
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
25
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
26
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
27
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
28
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
29
|
+
mod
|
|
30
|
+
));
|
|
21
31
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
32
|
|
|
23
33
|
// src/client/index.ts
|
|
@@ -4088,7 +4098,7 @@ var commitSchema = external_exports.object({
|
|
|
4088
4098
|
checkpoints: external_exports.array(external_exports.string()),
|
|
4089
4099
|
file_scope: external_exports.boolean()
|
|
4090
4100
|
});
|
|
4091
|
-
var resourceRefSchema = external_exports.object({ source: external_exports.enum(["bundled", "project", "user"]), name: external_exports.string() });
|
|
4101
|
+
var resourceRefSchema = external_exports.object({ source: external_exports.enum(["bundled", "project", "codex-project", "user"]), name: external_exports.string() });
|
|
4092
4102
|
var evidenceSchema = external_exports.enum(["command", "artifact", "review", "manual", "none"]);
|
|
4093
4103
|
var skillProfileSchema = external_exports.object({ rules: external_exports.array(resourceRefSchema), evidence: evidenceSchema.optional() });
|
|
4094
4104
|
var skillBindingSchema = external_exports.object({
|
|
@@ -4189,7 +4199,7 @@ var writeResourceResultSchema = external_exports.object({
|
|
|
4189
4199
|
});
|
|
4190
4200
|
var readSkillRequestSchema = external_exports.object({
|
|
4191
4201
|
name: external_exports.string(),
|
|
4192
|
-
level: external_exports.enum(["project", "user", "bundled"]),
|
|
4202
|
+
level: external_exports.enum(["project", "codex-project", "user", "bundled"]),
|
|
4193
4203
|
path: external_exports.string().optional()
|
|
4194
4204
|
});
|
|
4195
4205
|
var readSkillResultSchema = external_exports.object({
|
|
@@ -4578,7 +4588,13 @@ var remote_default = TYPERT_REMOTE;
|
|
|
4578
4588
|
|
|
4579
4589
|
// src/client/Workbench.tsx
|
|
4580
4590
|
var import_react9 = require("react");
|
|
4581
|
-
var
|
|
4591
|
+
var import_dsh_client_ui_primitives6 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
4592
|
+
|
|
4593
|
+
// src/client/icons.ts
|
|
4594
|
+
var primitives = __toESM(require("@deepseek-ai/dsh-client-ui-primitives"), 1);
|
|
4595
|
+
var IconSettings = primitives.IconSettingsOutlineRegular ?? primitives.IconSettingsOutline16;
|
|
4596
|
+
var IconClose = primitives.IconCloseOutlineRegular ?? primitives.IconCloseOutline16;
|
|
4597
|
+
var IconCheck = primitives.IconCheckOutlineRegular ?? primitives.IconCheckOutline16;
|
|
4582
4598
|
|
|
4583
4599
|
// src/client/workbench-theme.ts
|
|
4584
4600
|
var workbenchTheme = `
|
|
@@ -4824,14 +4840,14 @@ var styles = {
|
|
|
4824
4840
|
|
|
4825
4841
|
// src/client/TaskEngineSection.tsx
|
|
4826
4842
|
var import_react3 = require("react");
|
|
4827
|
-
var
|
|
4843
|
+
var import_dsh_client_ui_primitives2 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
4828
4844
|
|
|
4829
4845
|
// src/engine.ts
|
|
4830
4846
|
function formatResourceRef(ref) {
|
|
4831
4847
|
return `${ref.source}:${ref.name}`;
|
|
4832
4848
|
}
|
|
4833
4849
|
function parseResourceRef(text2) {
|
|
4834
|
-
const match = /^(bundled|project|user):(.+)$/u.exec(text2);
|
|
4850
|
+
const match = /^(bundled|project|codex-project|user):(.+)$/u.exec(text2);
|
|
4835
4851
|
if (match === null) return void 0;
|
|
4836
4852
|
return { source: match[1], name: match[2] };
|
|
4837
4853
|
}
|
|
@@ -4901,7 +4917,7 @@ function validateWorkflow(config) {
|
|
|
4901
4917
|
problems.push(`stage_bindings "${stage}": skill ${index + 1} has no name`);
|
|
4902
4918
|
continue;
|
|
4903
4919
|
}
|
|
4904
|
-
if (!["bundled", "project", "user"].includes(entry.skill.source)) {
|
|
4920
|
+
if (!["bundled", "project", "codex-project", "user"].includes(entry.skill.source)) {
|
|
4905
4921
|
problems.push(`stage_bindings "${stage}": skill "${entry.skill.name}" has unknown source "${String(entry.skill.source)}"`);
|
|
4906
4922
|
}
|
|
4907
4923
|
const skillKey = formatResourceRef(entry.skill);
|
|
@@ -4953,10 +4969,6 @@ function validateWorkflow(config) {
|
|
|
4953
4969
|
}
|
|
4954
4970
|
|
|
4955
4971
|
// src/workflows.ts
|
|
4956
|
-
function bundled(skill, ...rules) {
|
|
4957
|
-
const ref = (name) => ({ source: "bundled", name });
|
|
4958
|
-
return { skill: ref(skill), rules: rules.map(ref) };
|
|
4959
|
-
}
|
|
4960
4972
|
var FLOW_OPTIONS = [
|
|
4961
4973
|
{ id: "standard", label: "\u5B8C\u6574\u7814\u53D1", description: "\u65B0\u529F\u80FD\u3001\u67B6\u6784\u6216\u8DE8\u6A21\u5757\u6539\u52A8\u3001\u9AD8\u98CE\u9669\u4EFB\u52A1\uFF1A\u9700\u6C42\u786E\u8BA4 \u2192 \u65B9\u6848\u786E\u8BA4 \u2192 \u5B9E\u73B0 \u2192 \u9A8C\u8BC1 \u2192 \u5BA1\u6838 \u2192 \u63D0\u4EA4" },
|
|
4962
4974
|
{ id: "agile", label: "\u65E5\u5E38\u8FED\u4EE3", description: "\u76EE\u6807\u660E\u786E\u7684\u5E38\u89C4\u529F\u80FD\u4E0E\u7F3A\u9677\u4FEE\u590D\uFF1A\u76EE\u6807\u4E0E\u9A8C\u6536 \u2192 \u5B9E\u73B0 \u2192 \u9A8C\u6536\u4E0E\u5BA1\u67E5 \u2192 \u63D0\u4EA4" },
|
|
@@ -4988,19 +5000,7 @@ var STANDARD_RECOMMENDATION = {
|
|
|
4988
5000
|
{ stage: "\u9700\u6C42\u8BC4\u5BA1", id: "requirement", name: "\u9700\u6C42\u8BF4\u660E", fields: ["scope", "acceptance_criteria"] },
|
|
4989
5001
|
{ stage: "\u8BBE\u8BA1", id: "design", name: "\u8BBE\u8BA1\u6587\u6863", fields: ["approach", "risks", "impact"] },
|
|
4990
5002
|
{ stage: "\u4EE3\u7801\u5BA1\u6838", id: "review", name: "\u8BC4\u5BA1\u8BB0\u5F55", fields: ["conclusion", "issues"] }
|
|
4991
|
-
]
|
|
4992
|
-
stage_bindings: {
|
|
4993
|
-
"\u9700\u6C42\u8BC4\u5BA1": { skills: [bundled("requirement-analysis", "security-redlines")] },
|
|
4994
|
-
"\u8BBE\u8BA1": { skills: [bundled("solution-design")] },
|
|
4995
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
4996
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-verify")] },
|
|
4997
|
-
"\u4EE3\u7801\u5BA1\u6838": {
|
|
4998
|
-
skills: [
|
|
4999
|
-
bundled("code-review", "coding-conventions", "security-redlines"),
|
|
5000
|
-
bundled("code-commit", "commit-conventions")
|
|
5001
|
-
]
|
|
5002
|
-
}
|
|
5003
|
-
}
|
|
5003
|
+
]
|
|
5004
5004
|
};
|
|
5005
5005
|
var AGILE = {
|
|
5006
5006
|
stages: ["\u9700\u6C42", "\u5F00\u53D1", "\u4EA4\u4ED8", "\u5BA1\u67E5"],
|
|
@@ -5034,18 +5034,9 @@ var AGILE_RECOMMENDATION = {
|
|
|
5034
5034
|
},
|
|
5035
5035
|
artifacts: [
|
|
5036
5036
|
{ stage: "\u9700\u6C42", id: "requirement", name: "\u9700\u6C42\u8BF4\u660E", fields: ["scope"] },
|
|
5037
|
-
//
|
|
5038
|
-
// `record artifact=review`. Declaring it keeps that binding executable: the
|
|
5039
|
-
// engine refuses an undeclared artifact, so a bound skill pointing at one would
|
|
5040
|
-
// be a contract the recommendation made impossible to satisfy.
|
|
5037
|
+
// Optional review record; the flow's review gate itself does not require a skill.
|
|
5041
5038
|
{ stage: "\u5BA1\u67E5", id: "review", name: "\u8BC4\u5BA1\u8BB0\u5F55", fields: ["conclusion", "issues"] }
|
|
5042
|
-
]
|
|
5043
|
-
stage_bindings: {
|
|
5044
|
-
"\u9700\u6C42": { skills: [bundled("requirement-analysis", "security-redlines")] },
|
|
5045
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
5046
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-verify"), bundled("code-commit", "commit-conventions")] },
|
|
5047
|
-
"\u5BA1\u67E5": { skills: [bundled("code-review", "coding-conventions", "security-redlines")] }
|
|
5048
|
-
}
|
|
5039
|
+
]
|
|
5049
5040
|
};
|
|
5050
5041
|
var MINIMAL = {
|
|
5051
5042
|
stages: ["\u5F00\u53D1", "\u4EA4\u4ED8"],
|
|
@@ -5061,11 +5052,7 @@ var MINIMAL_RECOMMENDATION = {
|
|
|
5061
5052
|
// A fast-change flow checks each change once, not twice under two headings a
|
|
5062
5053
|
// short change rarely distinguishes. The item still has to be reviewed — what
|
|
5063
5054
|
// drops is the duplicated verdict, which is where the weight actually was.
|
|
5064
|
-
review_depth: "single"
|
|
5065
|
-
stage_bindings: {
|
|
5066
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
5067
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-commit", "commit-conventions")] }
|
|
5068
|
-
}
|
|
5055
|
+
review_depth: "single"
|
|
5069
5056
|
};
|
|
5070
5057
|
function deriveCapabilities(config) {
|
|
5071
5058
|
const caps = [];
|
|
@@ -5251,12 +5238,11 @@ function describeError(error) {
|
|
|
5251
5238
|
|
|
5252
5239
|
// src/client/SkillRuleDialog.tsx
|
|
5253
5240
|
var import_react2 = require("react");
|
|
5254
|
-
var
|
|
5241
|
+
var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
5255
5242
|
|
|
5256
5243
|
// src/client/ResourceModal.tsx
|
|
5257
5244
|
var import_react = require("react");
|
|
5258
5245
|
var import_react_dom = require("react-dom");
|
|
5259
|
-
var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
5260
5246
|
var rootStyle = {
|
|
5261
5247
|
position: "fixed",
|
|
5262
5248
|
inset: 0,
|
|
@@ -5408,7 +5394,7 @@ function ResourceModal({ title, description, onClose, footer, children, placemen
|
|
|
5408
5394
|
(0, import_react.createElement)(
|
|
5409
5395
|
"button",
|
|
5410
5396
|
{ type: "button", style: closeBtnStyle, "aria-label": "\u5173\u95ED", onClick: onClose },
|
|
5411
|
-
(0, import_react.createElement)(
|
|
5397
|
+
(0, import_react.createElement)(IconClose, { size: 14 })
|
|
5412
5398
|
)
|
|
5413
5399
|
),
|
|
5414
5400
|
description !== void 0 && description !== "" ? (0, import_react.createElement)("p", { style: descStyle }, description) : null,
|
|
@@ -5475,8 +5461,8 @@ function SkillRuleDialog({ skill, profile, rules, description, saveLabel, onSave
|
|
|
5475
5461
|
onClose: close,
|
|
5476
5462
|
footer: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
5477
5463
|
error ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { role: "alert", className: "te-dialog-error", children: error }) : null,
|
|
5478
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
5479
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
5464
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "ghost", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
|
|
5465
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "primary", disabled: busy || !dirty, onClick: () => {
|
|
5480
5466
|
void save2();
|
|
5481
5467
|
}, children: busy ? "\u5904\u7406\u4E2D\u2026" : saveLabel ?? "\u4FDD\u5B58\u914D\u7F6E" })
|
|
5482
5468
|
] }),
|
|
@@ -5629,14 +5615,15 @@ function TaskEngineSection(props) {
|
|
|
5629
5615
|
setSavedAt("");
|
|
5630
5616
|
};
|
|
5631
5617
|
const adopt = () => {
|
|
5632
|
-
const adopted = adoptRecommendation(flow
|
|
5618
|
+
const adopted = adoptRecommendation(flow, {
|
|
5619
|
+
flow,
|
|
5620
|
+
stage_bindings: stageBindings,
|
|
5621
|
+
skill_profiles: skillProfiles,
|
|
5622
|
+
...commitRequired !== void 0 ? { commit_required: commitRequired } : {}
|
|
5623
|
+
});
|
|
5633
5624
|
if (adopted === void 0) return;
|
|
5634
|
-
if (dirty && !window.confirm("\u91C7\u7528\u63A8\u8350\
|
|
5635
|
-
setStageBindings({ ...adopted.stage_bindings ?? {} });
|
|
5636
|
-
setPendingAdoption(true);
|
|
5625
|
+
if (dirty && !window.confirm("\u91C7\u7528\u63A8\u8350\u7684\u63D0\u4EA4\u6587\u672C\u3001\u4EA7\u7269\u5B57\u6BB5\u548C\u8BC4\u5BA1\u6DF1\u5EA6\uFF1F\u73B0\u6709\u6280\u80FD\u4E0E\u89C4\u5219\u4F1A\u4FDD\u7559\u3002")) return;
|
|
5637
5626
|
setFlowNotice("");
|
|
5638
|
-
const adoptedFlow = resolveFlow(flow, adopted);
|
|
5639
|
-
setSkillProfiles(adoptedFlow.ok ? adoptedFlow.config.skill_profiles ?? {} : {});
|
|
5640
5627
|
setCommitRule(adopted.commit);
|
|
5641
5628
|
setArtifacts(adopted.artifacts);
|
|
5642
5629
|
setReviewDepth(adopted.review_depth);
|
|
@@ -5665,11 +5652,11 @@ function TaskEngineSection(props) {
|
|
|
5665
5652
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { style: styles.title, children: "\u5DE5\u7A0B\u6D41\u7A0B\u914D\u7F6E" }),
|
|
5666
5653
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.problems, children: [
|
|
5667
5654
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: styles.problemsTitle, children: [
|
|
5668
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5655
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: "error" }),
|
|
5669
5656
|
"\u8BFB\u53D6\u5931\u8D25"
|
|
5670
5657
|
] }),
|
|
5671
5658
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: styles.muted, children: loadError }),
|
|
5672
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5659
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.Button, { onClick: () => setLoadAttempt((n) => n + 1), children: "\u91CD\u8BD5" })
|
|
5673
5660
|
] })
|
|
5674
5661
|
] });
|
|
5675
5662
|
}
|
|
@@ -5684,27 +5671,27 @@ function TaskEngineSection(props) {
|
|
|
5684
5671
|
flowNotice && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { role: "status", className: "te-flow-notice", children: flowNotice }),
|
|
5685
5672
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.head, children: [
|
|
5686
5673
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { style: styles.title, children: "\u5DE5\u7A0B\u6D41\u7A0B\u914D\u7F6E" }),
|
|
5687
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: styles.muted, children: "\u6D41\u7A0B\u51B3\u5B9A\u5DE5\u4F5C\u600E\u4E48\u6D41\u8F6C\uFF08\u9636\u6BB5\u4E0E\u95E8\u7981\uFF09\uFF1B\u6280\u80FD\u3001\u89C4\u5219\u3001\u63D0\u4EA4\u683C\u5F0F\u548C\u4EA7\u7269\u5B57\u6BB5\u7531\u4F60\u81EA\u5DF1\u914D\u7F6E\u3002 \u9700\u8981\
|
|
5674
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: styles.muted, children: "\u6D41\u7A0B\u51B3\u5B9A\u5DE5\u4F5C\u600E\u4E48\u6D41\u8F6C\uFF08\u9636\u6BB5\u4E0E\u95E8\u7981\uFF09\uFF1B\u6280\u80FD\u3001\u89C4\u5219\u3001\u63D0\u4EA4\u683C\u5F0F\u548C\u4EA7\u7269\u5B57\u6BB5\u7531\u4F60\u81EA\u5DF1\u914D\u7F6E\u3002 \u9700\u8981\u63D0\u4EA4\u6587\u672C\u3001\u4EA7\u7269\u5B57\u6BB5\u548C\u8BC4\u5BA1\u6DF1\u5EA6\u7684\u8D77\u70B9\u65F6\uFF0C\u53EF\u4EE5\u300C\u91C7\u7528\u63A8\u8350\u914D\u7F6E\u300D\u3002\u6280\u80FD\u4E0E\u89C4\u5219\u8BF7\u6309\u9879\u76EE\u9700\u8981\u81EA\u884C\u521B\u5EFA\u5E76\u7ED1\u5B9A\u3002" })
|
|
5688
5675
|
] }),
|
|
5689
5676
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.adoptRow, children: [
|
|
5690
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
5677
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_dsh_client_ui_primitives2.Button, { size: "sm", onClick: adopt, children: [
|
|
5691
5678
|
"\u91C7\u7528\u300C",
|
|
5692
5679
|
FLOW_PRESETS[flow]?.label ?? flow,
|
|
5693
5680
|
"\u300D\u7684\u63A8\u8350\u914D\u7F6E"
|
|
5694
5681
|
] }),
|
|
5695
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.muted, children: "\
|
|
5682
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.muted, children: "\u4EC5\u5199\u5165\u53EF\u4FEE\u6539\u7684\u6587\u672C\u4E0E\u5B57\u6BB5\uFF0C\u4E0D\u589E\u5220\u73B0\u6709\u6280\u80FD\u548C\u89C4\u5219\u7ED1\u5B9A\u3002" })
|
|
5696
5683
|
] }),
|
|
5697
5684
|
hasBundledReferences && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.adoptRow, children: [
|
|
5698
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5685
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.Button, { size: "sm", onClick: () => {
|
|
5699
5686
|
setPendingAdoption(true);
|
|
5700
5687
|
setDirty(true);
|
|
5701
5688
|
setSavedAt("");
|
|
5702
5689
|
setFlowNotice("\u4FDD\u5B58\u540E\u4F1A\u628A\u5F53\u524D\u914D\u7F6E\u4E2D\u7684\u5185\u7F6E\u5F15\u7528\u590D\u5236\u5230\u9879\u76EE\uFF0C\u4FDD\u7559\u5DF2\u6709\u9879\u76EE\u526F\u672C\u53CA\u5176\u4ED6\u914D\u7F6E\u3002");
|
|
5703
5690
|
}, children: "\u628A\u5F53\u524D\u5185\u7F6E\u5F15\u7528\u8FC1\u79FB\u5230\u9879\u76EE" }),
|
|
5704
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.muted, children: "\
|
|
5691
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.muted, children: "\u5C06\u5F53\u524D\u5185\u7F6E\u5F15\u7528\u590D\u5236\u4E3A\u9879\u76EE\u8D44\u6E90\u3002" })
|
|
5705
5692
|
] }),
|
|
5706
5693
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.sourceRow, children: [
|
|
5707
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5694
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: source === "project" ? "done" : source === "invalid" ? "warning" : "ongoing" }),
|
|
5708
5695
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.sourceText, children: sourceText(source) })
|
|
5709
5696
|
] }),
|
|
5710
5697
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.field, children: [
|
|
@@ -5722,7 +5709,7 @@ function TaskEngineSection(props) {
|
|
|
5722
5709
|
style: { ...styles.flowOption, ...active ? styles.flowOptionActive : {} },
|
|
5723
5710
|
children: [
|
|
5724
5711
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: styles.flowOptionTitle, children: [
|
|
5725
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5712
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: active ? "done" : "ongoing", size: 8 }),
|
|
5726
5713
|
option.label
|
|
5727
5714
|
] }),
|
|
5728
5715
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: styles.flowOptionDesc, children: option.description })
|
|
@@ -5732,7 +5719,7 @@ function TaskEngineSection(props) {
|
|
|
5732
5719
|
);
|
|
5733
5720
|
}) })
|
|
5734
5721
|
] }),
|
|
5735
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SectionCard, { icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5722
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SectionCard, { icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconSettings, { size: 16 }), title: "\u9636\u6BB5\u6280\u80FD", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BindingEditor, { stages, stageBindings, setStageBindings: (next) => {
|
|
5736
5723
|
setStageBindings(next);
|
|
5737
5724
|
setDirty(true);
|
|
5738
5725
|
setSavedAt("");
|
|
@@ -5743,23 +5730,23 @@ function TaskEngineSection(props) {
|
|
|
5743
5730
|
}, skills, onConfigureSkill: setConfiguringSkill }) }),
|
|
5744
5731
|
problems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.problems, children: [
|
|
5745
5732
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: styles.problemsTitle, children: [
|
|
5746
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5733
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: "error" }),
|
|
5747
5734
|
"\u6709 ",
|
|
5748
5735
|
problems.length,
|
|
5749
5736
|
" \u4E2A\u95EE\u9898\uFF08\u4FDD\u5B58\u4F1A\u88AB\u62D2\u7EDD\uFF09"
|
|
5750
5737
|
] }),
|
|
5751
5738
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ul", { style: styles.problemsList, children: problems.map((p) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { children: p }, p)) })
|
|
5752
5739
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: styles.okText, children: [
|
|
5753
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5740
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: "done" }),
|
|
5754
5741
|
source === "project" ? "\u914D\u7F6E\u6709\u6548" : "\u4F7F\u7528\u7A7A\u767D\u6D41\u7A0B\u914D\u7F6E\uFF08\u5C1A\u672A\u4FDD\u5B58\uFF09"
|
|
5755
5742
|
] }),
|
|
5756
5743
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.actions, children: [
|
|
5757
5744
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5758
|
-
|
|
5745
|
+
import_dsh_client_ui_primitives2.Button,
|
|
5759
5746
|
{
|
|
5760
5747
|
variant: "primary",
|
|
5761
5748
|
size: "md",
|
|
5762
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5749
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconCheck, { size: 16 }),
|
|
5763
5750
|
disabled: problems.length > 0 || saving,
|
|
5764
5751
|
onClick: () => {
|
|
5765
5752
|
setSaving(true);
|
|
@@ -5778,7 +5765,7 @@ function TaskEngineSection(props) {
|
|
|
5778
5765
|
}
|
|
5779
5766
|
),
|
|
5780
5767
|
savedAt !== "" ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: styles.okText, children: [
|
|
5781
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5768
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.StateDot, { state: savedAt.startsWith("\u5DF2") ? "done" : "error" }),
|
|
5782
5769
|
savedAt
|
|
5783
5770
|
] }) : null
|
|
5784
5771
|
] })
|
|
@@ -5811,7 +5798,7 @@ function sourceText(source) {
|
|
|
5811
5798
|
function SectionCard({ icon, title, hint, children }) {
|
|
5812
5799
|
const [open, setOpen] = (0, import_react3.useState)(true);
|
|
5813
5800
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: styles.section, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5814
|
-
|
|
5801
|
+
import_dsh_client_ui_primitives2.DisclosureRow,
|
|
5815
5802
|
{
|
|
5816
5803
|
icon,
|
|
5817
5804
|
title,
|
|
@@ -5858,7 +5845,7 @@ function BindingEditor({ stages, stageBindings, setStageBindings, skillProfiles,
|
|
|
5858
5845
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.section, children: [
|
|
5859
5846
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: styles.field, children: [
|
|
5860
5847
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: styles.bindingLabel, children: "\u9009\u62E9\u8282\u70B9" }),
|
|
5861
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: styles.chips, children: stages.map((s) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
5848
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: styles.chips, children: stages.map((s) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.Pill, { active: s === currentStage, onClick: () => {
|
|
5862
5849
|
setStage(s);
|
|
5863
5850
|
}, children: s }, s)) })
|
|
5864
5851
|
] }),
|
|
@@ -5957,7 +5944,7 @@ async function save(remote, config, workspace, setSavedAt, setSource) {
|
|
|
5957
5944
|
|
|
5958
5945
|
// src/client/InitPanel.tsx
|
|
5959
5946
|
var import_react4 = require("react");
|
|
5960
|
-
var
|
|
5947
|
+
var import_dsh_client_ui_primitives3 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
5961
5948
|
var MD_LABELS = { code: { copyLabel: "\u590D\u5236", copiedLabel: "\u5DF2\u590D\u5236" }, footnotes: "\u811A\u6CE8" };
|
|
5962
5949
|
var INIT_TIMEOUT_S = 150;
|
|
5963
5950
|
var card = {
|
|
@@ -6048,7 +6035,7 @@ function InitPanel({ workspace, remote }) {
|
|
|
6048
6035
|
(0, import_react4.createElement)(
|
|
6049
6036
|
"div",
|
|
6050
6037
|
{ style: { display: "flex", alignItems: "center", gap: 8, flexWrap: "wrap" } },
|
|
6051
|
-
(0, import_react4.createElement)(
|
|
6038
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.StateDot, { state: exists ? "done" : "ongoing" }),
|
|
6052
6039
|
(0, import_react4.createElement)("span", { style: styles.bindingLabel }, exists ? `\u5DF2\u521D\u59CB\u5316 \xB7 ${view.lines} \u884C\uFF08\u4E0A\u9650 200\uFF09` : "\u672A\u521D\u59CB\u5316"),
|
|
6053
6040
|
view?.path !== void 0 ? (0, import_react4.createElement)("span", { style: styles.sourceBadge }, `\u5DF2\u5B9A\u4F4D\u5230 ${view.path}`) : null
|
|
6054
6041
|
),
|
|
@@ -6060,7 +6047,7 @@ function InitPanel({ workspace, remote }) {
|
|
|
6060
6047
|
exists && !editing && draft === null ? (0, import_react4.createElement)(
|
|
6061
6048
|
"div",
|
|
6062
6049
|
{ style: styles.mdPreview },
|
|
6063
|
-
(0, import_react4.createElement)(
|
|
6050
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.MarkdownText, { text: view.content, labels: MD_LABELS })
|
|
6064
6051
|
) : null,
|
|
6065
6052
|
draft !== null ? (0, import_react4.createElement)(
|
|
6066
6053
|
"div",
|
|
@@ -6068,13 +6055,13 @@ function InitPanel({ workspace, remote }) {
|
|
|
6068
6055
|
(0, import_react4.createElement)(
|
|
6069
6056
|
"div",
|
|
6070
6057
|
{ style: styles.sourceRow },
|
|
6071
|
-
(0, import_react4.createElement)(
|
|
6058
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.StateDot, { state: "ongoing", size: 8 }),
|
|
6072
6059
|
(0, import_react4.createElement)("span", { style: styles.sourceBadge }, `AI \u8349\u7A3F \xB7 ${draft.lines} \u884C \xB7 \u5C1A\u672A\u5199\u5165`)
|
|
6073
6060
|
),
|
|
6074
6061
|
(0, import_react4.createElement)(
|
|
6075
6062
|
"div",
|
|
6076
6063
|
{ style: styles.mdPreview },
|
|
6077
|
-
(0, import_react4.createElement)(
|
|
6064
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.MarkdownText, { text: draft.content, labels: MD_LABELS })
|
|
6078
6065
|
)
|
|
6079
6066
|
) : null,
|
|
6080
6067
|
editing ? (0, import_react4.createElement)("textarea", {
|
|
@@ -6094,7 +6081,7 @@ function InitPanel({ workspace, remote }) {
|
|
|
6094
6081
|
draft !== null ? (0, import_react4.createElement)(
|
|
6095
6082
|
"div",
|
|
6096
6083
|
{ style: styles.row },
|
|
6097
|
-
(0, import_react4.createElement)(
|
|
6084
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6098
6085
|
variant: "primary",
|
|
6099
6086
|
size: "md",
|
|
6100
6087
|
disabled: draft.lines > 200,
|
|
@@ -6104,13 +6091,13 @@ function InitPanel({ workspace, remote }) {
|
|
|
6104
6091
|
}
|
|
6105
6092
|
}, exists ? "\u4FDD\u5B58\u5E76\u8986\u76D6" : "\u4FDD\u5B58"),
|
|
6106
6093
|
draft.lines > 200 ? (0, import_react4.createElement)("span", { style: styles.sourceBadge }, `\u8349\u7A3F ${draft.lines} \u884C\u8D85\u9650\uFF0C\u8BF7\u70B9\u300C\u653E\u5F03\u300D\u540E\u91CD\u8BD5`) : null,
|
|
6107
|
-
(0, import_react4.createElement)(
|
|
6094
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, { variant: "ghost", size: "md", onClick: () => {
|
|
6108
6095
|
setDraft(null);
|
|
6109
6096
|
} }, "\u653E\u5F03")
|
|
6110
6097
|
) : editing ? (0, import_react4.createElement)(
|
|
6111
6098
|
"div",
|
|
6112
6099
|
{ style: styles.row },
|
|
6113
|
-
(0, import_react4.createElement)(
|
|
6100
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6114
6101
|
variant: "primary",
|
|
6115
6102
|
size: "md",
|
|
6116
6103
|
disabled: body2.trim() === "",
|
|
@@ -6119,13 +6106,13 @@ function InitPanel({ workspace, remote }) {
|
|
|
6119
6106
|
void write(body2, exists);
|
|
6120
6107
|
}
|
|
6121
6108
|
}, exists ? "\u4FDD\u5B58\u5E76\u8986\u76D6" : "\u4FDD\u5B58"),
|
|
6122
|
-
(0, import_react4.createElement)(
|
|
6109
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, { variant: "ghost", size: "md", onClick: () => {
|
|
6123
6110
|
setEditing(false);
|
|
6124
6111
|
} }, "\u53D6\u6D88")
|
|
6125
6112
|
) : (0, import_react4.createElement)(
|
|
6126
6113
|
"div",
|
|
6127
6114
|
{ style: styles.row },
|
|
6128
|
-
(0, import_react4.createElement)(
|
|
6115
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6129
6116
|
variant: "primary",
|
|
6130
6117
|
size: "md",
|
|
6131
6118
|
disabled: generating,
|
|
@@ -6134,7 +6121,7 @@ function InitPanel({ workspace, remote }) {
|
|
|
6134
6121
|
void generate();
|
|
6135
6122
|
}
|
|
6136
6123
|
}, exists ? "\u91CD\u65B0\u521D\u59CB\u5316\uFF08AI \u626B\u63CF\u8986\u76D6\uFF09" : "\u8BA9 AI \u521D\u59CB\u5316"),
|
|
6137
|
-
exists ? (0, import_react4.createElement)(
|
|
6124
|
+
exists ? (0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, { variant: "outline", size: "md", onClick: startEdit }, "\u624B\u52A8\u7F16\u8F91") : null
|
|
6138
6125
|
)
|
|
6139
6126
|
)
|
|
6140
6127
|
);
|
|
@@ -6145,10 +6132,10 @@ var import_react6 = require("react");
|
|
|
6145
6132
|
|
|
6146
6133
|
// src/client/ResourceManager.tsx
|
|
6147
6134
|
var import_react5 = require("react");
|
|
6148
|
-
var
|
|
6135
|
+
var import_dsh_client_ui_primitives4 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
6149
6136
|
var labels = { code: { copyLabel: "\u590D\u5236", copiedLabel: "\u5DF2\u590D\u5236" }, footnotes: "\u811A\u6CE8" };
|
|
6150
6137
|
var levelOf = (row) => row.source === "bundled" ? "bundled" : row.source.startsWith("user") ? "user" : "project";
|
|
6151
|
-
var sourceText2 = (source) => source === "bundled" ? "\u5185\u7F6E" : source.startsWith("user") ? "\u4E2A\u4EBA" : "\u9879\u76EE";
|
|
6138
|
+
var sourceText2 = (source) => source === "bundled" ? "\u5185\u7F6E" : source === "codex-project" ? "\u9879\u76EE \xB7 Codex" : source.startsWith("user") ? "\u4E2A\u4EBA" : "\u9879\u76EE";
|
|
6152
6139
|
var sizeText = (bytes) => bytes < 1024 ? `${bytes} B` : bytes < 1024 * 1024 ? `${(bytes / 1024).toFixed(1)} KB` : `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
6153
6140
|
var fail = (r) => describeError(r.error ?? "\u64CD\u4F5C\u5931\u8D25");
|
|
6154
6141
|
function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
@@ -6181,7 +6168,7 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6181
6168
|
const input = (0, import_react5.useRef)(null);
|
|
6182
6169
|
const fileEpoch = (0, import_react5.useRef)(0);
|
|
6183
6170
|
const browseEpoch = (0, import_react5.useRef)(0);
|
|
6184
|
-
const readonly = editing !== null && editing !== "new" && levelOf(editing) === "bundled";
|
|
6171
|
+
const readonly = editing !== null && editing !== "new" && (levelOf(editing) === "bundled" || editing.source === "codex-project");
|
|
6185
6172
|
(0, import_react5.useEffect)(() => {
|
|
6186
6173
|
let active = true;
|
|
6187
6174
|
setLoading(true);
|
|
@@ -6323,7 +6310,7 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6323
6310
|
setLevel(lvl === "user" ? "user" : "project");
|
|
6324
6311
|
setBusy(true);
|
|
6325
6312
|
try {
|
|
6326
|
-
const r = kind === "skill" ? await remote.readSkill({ name: row.name, level: lvl, path: workspace }) : await remote.readRule({ name: row.name, level: lvl, path: workspace });
|
|
6313
|
+
const r = kind === "skill" ? await remote.readSkill({ name: row.name, level: row.source === "codex-project" ? "codex-project" : lvl, path: workspace }) : await remote.readRule({ name: row.name, level: lvl, path: workspace });
|
|
6327
6314
|
if (!r.ok) throw new Error(fail(r));
|
|
6328
6315
|
if (!r.value.ok) throw new Error(r.value.error ?? "\u8BFB\u53D6\u5931\u8D25");
|
|
6329
6316
|
setBody(r.value.content);
|
|
@@ -6433,10 +6420,10 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6433
6420
|
(0, import_react5.createElement)("input", { type: "file", ref: input, hidden: true, "aria-label": kind === "skill" ? "\u9009\u62E9\u6280\u80FD\u6587\u4EF6\u5939" : "\u9009\u62E9\u89C4\u5219\u6587\u4EF6", ...kind === "skill" ? { webkitdirectory: "", multiple: true } : { accept: ".md,text/markdown" }, onChange: (e) => {
|
|
6434
6421
|
void selected(Array.from(e.target.files ?? []));
|
|
6435
6422
|
} }),
|
|
6436
|
-
(0, import_react5.createElement)("div", { className: "te-section-heading" }, (0, import_react5.createElement)("div", null, (0, import_react5.createElement)("h2", null, `${noun}\u5E93`), (0, import_react5.createElement)("p", null, kind === "skill" ? "\u628A\u53EF\u590D\u7528\u7684\u5DE5\u4F5C\u65B9\u6CD5\u5E26\u5165\u9879\u76EE\u3002" : "\u4E3A\u9879\u76EE\u660E\u786E\u7EA6\u5B9A\uFF0C\u8BA9\u6BCF\u6B21\u4EA4\u4ED8\u4FDD\u6301\u4E00\u81F4\u3002")), (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(
|
|
6423
|
+
(0, import_react5.createElement)("div", { className: "te-section-heading" }, (0, import_react5.createElement)("div", null, (0, import_react5.createElement)("h2", null, `${noun}\u5E93`), (0, import_react5.createElement)("p", null, kind === "skill" ? "\u628A\u53EF\u590D\u7528\u7684\u5DE5\u4F5C\u65B9\u6CD5\u5E26\u5165\u9879\u76EE\u3002" : "\u4E3A\u9879\u76EE\u660E\u786E\u7EA6\u5B9A\uFF0C\u8BA9\u6BCF\u6B21\u4EA4\u4ED8\u4FDD\u6301\u4E00\u81F4\u3002")), (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", onClick: () => {
|
|
6437
6424
|
void edit("new");
|
|
6438
|
-
} }, `\u65B0\u5EFA${noun}`), (0, import_react5.createElement)(
|
|
6439
|
-
(0, import_react5.createElement)("div", { className: "te-toolbar" }, (0, import_react5.createElement)("input", { className: "te-input", placeholder: `\u641C\u7D22${noun}\u540D\u79F0${kind === "skill" ? "\u6216\u63CF\u8FF0" : ""}`, value: query, onChange: (e) => setQuery(e.target.value) }), (0, import_react5.createElement)("select", { className: "te-input", "aria-label": "\u7B5B\u9009\u6765\u6E90", value: filter, onChange: (e) => setFilter(e.target.value) }, (0, import_react5.createElement)("option", { value: "all" }, `\u5168\u90E8\u6765\u6E90 \xB7 ${rows.length}`), (0, import_react5.createElement)("option", { value: "
|
|
6425
|
+
} }, `\u65B0\u5EFA${noun}`), (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "primary", onClick: choose }, `\u5B89\u88C5${noun}`))),
|
|
6426
|
+
(0, import_react5.createElement)("div", { className: "te-toolbar" }, (0, import_react5.createElement)("input", { className: "te-input", placeholder: `\u641C\u7D22${noun}\u540D\u79F0${kind === "skill" ? "\u6216\u63CF\u8FF0" : ""}`, value: query, onChange: (e) => setQuery(e.target.value) }), (0, import_react5.createElement)("select", { className: "te-input", "aria-label": "\u7B5B\u9009\u6765\u6E90", value: filter, onChange: (e) => setFilter(e.target.value) }, (0, import_react5.createElement)("option", { value: "all" }, `\u5168\u90E8\u6765\u6E90 \xB7 ${rows.length}`), (0, import_react5.createElement)("option", { value: "project" }, "\u9879\u76EE"), (0, import_react5.createElement)("option", { value: "user" }, "\u4E2A\u4EBA")), (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", onClick: () => refresh((n) => n + 1), disabled: loading }, "\u5237\u65B0")),
|
|
6440
6427
|
notice ? (0, import_react5.createElement)("div", { className: "te-success", role: "status" }, notice) : null,
|
|
6441
6428
|
!importing && !editing && !deleting ? status() : null,
|
|
6442
6429
|
loading ? (0, import_react5.createElement)("div", { className: "te-empty", role: "status" }, "\u6B63\u5728\u52A0\u8F7D\u2026") : visible.length === 0 ? (0, import_react5.createElement)("div", { className: "te-empty" }, (0, import_react5.createElement)("h3", null, query || filter !== "all" ? "\u6CA1\u6709\u5339\u914D\u7684\u7ED3\u679C" : `\u8FD8\u6CA1\u6709${noun}`), (0, import_react5.createElement)("p", null, "\u8C03\u6574\u7B5B\u9009\uFF0C\u6216\u4F7F\u7528\u53F3\u4E0A\u89D2\u6309\u94AE\u6DFB\u52A0\u3002")) : (0, import_react5.createElement)("div", { className: "te-resource-grid" }, ...visible.map((row) => (0, import_react5.createElement)(
|
|
@@ -6445,13 +6432,13 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6445
6432
|
(0, import_react5.createElement)("div", { className: "te-card-top" }, (0, import_react5.createElement)("span", { className: "te-resource-icon", "aria-hidden": true }, kind === "skill" ? "\u25C7" : "\u2261"), (0, import_react5.createElement)("span", { className: "te-badge" }, sourceText2(row.source))),
|
|
6446
6433
|
(0, import_react5.createElement)("h3", null, row.name),
|
|
6447
6434
|
(0, import_react5.createElement)("p", null, row.description || "\u9879\u76EE\u7EA6\u5B9A\u4E0E\u6267\u884C\u89C4\u5219"),
|
|
6448
|
-
(0, import_react5.createElement)("div", { className: "te-actions" }, kind === "skill" && onConfigureSkill ? (0, import_react5.createElement)(
|
|
6435
|
+
(0, import_react5.createElement)("div", { className: "te-actions" }, kind === "skill" && onConfigureSkill ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "primary", size: "sm", onClick: () => onConfigureSkill({ source: row.source === "codex-project" ? "codex-project" : levelOf(row), name: row.name }) }, "\u914D\u7F6E\u89C4\u5219") : null, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", size: "sm", onClick: () => {
|
|
6449
6436
|
void edit(row, true);
|
|
6450
|
-
} }, "\u67E5\u770B"), levelOf(row) === "bundled" ? (0, import_react5.createElement)(
|
|
6437
|
+
} }, "\u67E5\u770B"), levelOf(row) === "bundled" ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", size: "sm", disabled: busy, onClick: () => {
|
|
6451
6438
|
void copyTemplate(row);
|
|
6452
|
-
} }, "\u4EE5\u6B64\u4E3A\u6A21\u677F\u65B0\u5EFA") : (0, import_react5.createElement)(
|
|
6439
|
+
} }, "\u4EE5\u6B64\u4E3A\u6A21\u677F\u65B0\u5EFA") : row.source !== "codex-project" ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", size: "sm", onClick: () => {
|
|
6453
6440
|
void edit(row);
|
|
6454
|
-
} }, "\u7F16\u8F91"), levelOf(row) !== "bundled" ? (0, import_react5.createElement)("button", { className: "te-delete", onClick: () => {
|
|
6441
|
+
} }, "\u7F16\u8F91") : null, levelOf(row) !== "bundled" && row.source !== "codex-project" ? (0, import_react5.createElement)("button", { className: "te-delete", onClick: () => {
|
|
6455
6442
|
setDeleting(row);
|
|
6456
6443
|
setError("");
|
|
6457
6444
|
} }, "\u5220\u9664") : null)
|
|
@@ -6463,17 +6450,17 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6463
6450
|
} }, "\u9AD8\u7EA7\uFF1A\u4ECE Harness \u4E3B\u673A\u8DEF\u5F84\u5B89\u88C5") : null,
|
|
6464
6451
|
importing ? (0, import_react5.createElement)(
|
|
6465
6452
|
ResourceModal,
|
|
6466
|
-
{ title: `\u5B89\u88C5${noun}`, description: "\u5148\u68C0\u67E5\u5185\u5BB9\u548C\u5B89\u88C5\u4F4D\u7F6E\uFF0C\u786E\u8BA4\u540E\u624D\u4F1A\u5199\u5165\u3002", onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(
|
|
6453
|
+
{ title: `\u5B89\u88C5${noun}`, description: "\u5148\u68C0\u67E5\u5185\u5BB9\u548C\u5B89\u88C5\u4F4D\u7F6E\uFF0C\u786E\u8BA4\u540E\u624D\u4F1A\u5199\u5165\u3002", onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", disabled: busy, onClick: close }, "\u53D6\u6D88"), (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "primary", disabled: busy || !preview || preview.conflict, onClick: () => {
|
|
6467
6454
|
void install();
|
|
6468
6455
|
} }, busy ? "\u5904\u7406\u4E2D\u2026" : "\u786E\u8BA4\u5B89\u88C5")) },
|
|
6469
6456
|
targets(),
|
|
6470
|
-
(0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(
|
|
6457
|
+
(0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", disabled: busy, onClick: choose }, "\u91CD\u65B0\u9009\u62E9"), kind === "skill" ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", disabled: busy, onClick: () => setManual(!manual) }, manual ? "\u6536\u8D77\u9AD8\u7EA7\u65B9\u5F0F" : "\u4E3B\u673A\u8DEF\u5F84") : null),
|
|
6471
6458
|
manual ? (0, import_react5.createElement)("div", { className: "te-advanced" }, (0, import_react5.createElement)("p", null, "\u6B64\u8DEF\u5F84\u4F4D\u4E8E Harness \u4E3B\u673A\uFF1B\u6D4F\u89C8\u5668\u9009\u62E9\u5668\u8BFB\u53D6\u7684\u662F\u4F60\u5F53\u524D\u7535\u8111\u3002"), (0, import_react5.createElement)("div", { className: "te-toolbar" }, (0, import_react5.createElement)("input", { className: "te-input", "aria-label": "\u4E3B\u673A\u6280\u80FD\u76EE\u5F55", value: sourceDir, onChange: (e) => {
|
|
6472
6459
|
setSourceDir(e.target.value);
|
|
6473
6460
|
setRequest(null);
|
|
6474
|
-
} }), (0, import_react5.createElement)(
|
|
6461
|
+
} }), (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", onClick: () => {
|
|
6475
6462
|
void browse(sourceDir);
|
|
6476
|
-
} }, "\u6D4F\u89C8"), (0, import_react5.createElement)(
|
|
6463
|
+
} }, "\u6D4F\u89C8"), (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", disabled: busy || !sourceDir.trim(), onClick: () => setRequest({ kind, level, path: workspace, files: [], sourceDir }) }, "\u9884\u89C8\u76EE\u5F55")), (0, import_react5.createElement)("div", { className: "te-dir-list" }, browsePath ? (0, import_react5.createElement)("button", { onClick: () => {
|
|
6477
6464
|
void browse(browsePath.replace(/[\\/][^\\/]+[\\/]?$/u, "") || "/");
|
|
6478
6465
|
} }, "\u2191 \u4E0A\u7EA7\u76EE\u5F55") : null, ...dirs.map((d) => (0, import_react5.createElement)("button", { key: d.name, onClick: () => {
|
|
6479
6466
|
setRequest(null);
|
|
@@ -6481,21 +6468,21 @@ function ResourceManager({ workspace, remote, kind, onConfigureSkill }) {
|
|
|
6481
6468
|
} }, d.name + (d.hasSkill ? " \xB7 SKILL.md" : ""))))) : null,
|
|
6482
6469
|
busy ? (0, import_react5.createElement)("p", { role: "status" }, "\u6B63\u5728\u6821\u9A8C\u6587\u4EF6\uFF0C\u8BF7\u7A0D\u5019\u2026") : null,
|
|
6483
6470
|
status(),
|
|
6484
|
-
preview ? (0, import_react5.createElement)("div", { className: "te-preview" }, (0, import_react5.createElement)("h3", null, preview.name), (0, import_react5.createElement)("p", null, preview.description), (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)("span", { className: "te-badge" }, `${preview.files} \u4E2A\u6587\u4EF6`), (0, import_react5.createElement)("span", { className: "te-badge" }, sizeText(preview.bytes))), (0, import_react5.createElement)("code", { className: "te-path" }, preview.target), preview.conflict ? (0, import_react5.createElement)("div", { className: "te-alert", role: "alert" }, "\u5DF2\u6709\u540C\u540D\u8D44\u6E90\u3002\u8BF7\u53D6\u6D88\u5E76\u68C0\u67E5\u73B0\u6709\u5185\u5BB9\uFF0C\u5B89\u88C5\u4E0D\u4F1A\u8986\u76D6\u5B83\u3002") : null, (0, import_react5.createElement)("div", { className: "te-markdown" }, (0, import_react5.createElement)(
|
|
6471
|
+
preview ? (0, import_react5.createElement)("div", { className: "te-preview" }, (0, import_react5.createElement)("h3", null, preview.name), (0, import_react5.createElement)("p", null, preview.description), (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)("span", { className: "te-badge" }, `${preview.files} \u4E2A\u6587\u4EF6`), (0, import_react5.createElement)("span", { className: "te-badge" }, sizeText(preview.bytes))), (0, import_react5.createElement)("code", { className: "te-path" }, preview.target), preview.conflict ? (0, import_react5.createElement)("div", { className: "te-alert", role: "alert" }, "\u5DF2\u6709\u540C\u540D\u8D44\u6E90\u3002\u8BF7\u53D6\u6D88\u5E76\u68C0\u67E5\u73B0\u6709\u5185\u5BB9\uFF0C\u5B89\u88C5\u4E0D\u4F1A\u8986\u76D6\u5B83\u3002") : null, (0, import_react5.createElement)("div", { className: "te-markdown" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.MarkdownText, { text: preview.content, labels }))) : null
|
|
6485
6472
|
) : null,
|
|
6486
6473
|
editing ? (0, import_react5.createElement)(
|
|
6487
6474
|
ResourceModal,
|
|
6488
|
-
{ title: editing === "new" ? `\u65B0\u5EFA${noun}` : `${viewing ? "\u67E5\u770B" : "\u7F16\u8F91"}${noun} \xB7 ${name}`, onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(
|
|
6475
|
+
{ title: editing === "new" ? `\u65B0\u5EFA${noun}` : `${viewing ? "\u67E5\u770B" : "\u7F16\u8F91"}${noun} \xB7 ${name}`, onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "ghost", disabled: busy, onClick: close }, "\u5173\u95ED"), editing !== "new" && levelOf(editing) === "bundled" ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", disabled: busy, onClick: () => {
|
|
6489
6476
|
void copyTemplate(editing);
|
|
6490
|
-
} }, "\u4EE5\u6B64\u4E3A\u6A21\u677F\u65B0\u5EFA") : null, !readonly ? (0, import_react5.createElement)(
|
|
6477
|
+
} }, "\u4EE5\u6B64\u4E3A\u6A21\u677F\u65B0\u5EFA") : null, !readonly ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", disabled: busy, onClick: () => setViewing(!viewing) }, viewing ? "\u7F16\u8F91\u5185\u5BB9" : "\u9884\u89C8") : null, !readonly ? (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "primary", disabled: busy || !name.trim() || !body2.trim() || kind === "skill" && !description.trim(), onClick: () => {
|
|
6491
6478
|
void save2();
|
|
6492
6479
|
} }, busy ? "\u5904\u7406\u4E2D\u2026" : "\u4FDD\u5B58") : null) },
|
|
6493
|
-
!readonly ? targets() : (0, import_react5.createElement)("p", { className: "te-badge" }, "\u5185\u7F6E\u6837\u672C \xB7 \u53EA\u8BFB"),
|
|
6480
|
+
!readonly ? targets() : (0, import_react5.createElement)("p", { className: "te-badge" }, editing.source === "codex-project" ? "Codex \u9879\u76EE\u6280\u80FD \xB7 \u6B63\u6587\u8BF7\u5728\u539F\u76EE\u5F55\u7F16\u8F91" : "\u5185\u7F6E\u6837\u672C \xB7 \u53EA\u8BFB"),
|
|
6494
6481
|
templateSource ? (0, import_react5.createElement)("p", null, `\u4EE5\u300C${templateSource.name}\u300D\u4E3A\u6A21\u677F\u590D\u5236\u6B63\u6587\u3002\u65B0\u8D44\u6E90\u7684\u5B8C\u6210\u51ED\u8BC1\u3001\u89C4\u5219\u548C\u9636\u6BB5\u7ED1\u5B9A\u9700\u5355\u72EC\u914D\u7F6E\uFF0C\u4FDD\u5B58\u672C\u8EAB\u4E0D\u4F1A\u542F\u7528\u5B83\u3002`) : null,
|
|
6495
6482
|
status(),
|
|
6496
|
-
viewing ? (0, import_react5.createElement)("div", { className: "te-markdown" }, (0, import_react5.createElement)(
|
|
6483
|
+
viewing ? (0, import_react5.createElement)("div", { className: "te-markdown" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.MarkdownText, { text: body2, labels })) : (0, import_react5.createElement)("div", { className: "te-form" }, (0, import_react5.createElement)("label", null, "\u540D\u79F0", (0, import_react5.createElement)("input", { className: "te-input", value: name, disabled: editing !== "new" || busy, onChange: (e) => setName(e.target.value), placeholder: "\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26" })), kind === "skill" ? (0, import_react5.createElement)("label", null, "\u63CF\u8FF0", (0, import_react5.createElement)("input", { className: "te-input", value: description, disabled: busy, onChange: (e) => setDescription(e.target.value) })) : null, kind === "skill" ? (0, import_react5.createElement)("label", null, "\u4F7F\u7528\u65F6\u673A\uFF08\u53EF\u9009\uFF09", (0, import_react5.createElement)("input", { className: "te-input", value: whenToUse, disabled: busy, onChange: (e) => setWhenToUse(e.target.value) })) : null, (0, import_react5.createElement)("label", null, "Markdown \u6B63\u6587", (0, import_react5.createElement)("textarea", { className: "te-input te-editor", value: body2, disabled: busy, onChange: (e) => setBody(e.target.value) })))
|
|
6497
6484
|
) : null,
|
|
6498
|
-
deleting ? (0, import_react5.createElement)(ResourceModal, { title: `\u5220\u9664${noun}\u300C${deleting.name}\u300D\uFF1F`, description: levelOf(deleting) === "user" ? "\u8FD9\u662F\u4E2A\u4EBA\u5168\u5C40\u8D44\u6E90\uFF0C\u5220\u9664\u4F1A\u5F71\u54CD\u6B64\u4E3B\u673A\u4E0A\u7684\u6240\u6709\u9879\u76EE\u3002" : "\u5220\u9664\u5C06\u5F71\u54CD\u5F53\u524D\u9879\u76EE\u3002", onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(
|
|
6485
|
+
deleting ? (0, import_react5.createElement)(ResourceModal, { title: `\u5220\u9664${noun}\u300C${deleting.name}\u300D\uFF1F`, description: levelOf(deleting) === "user" ? "\u8FD9\u662F\u4E2A\u4EBA\u5168\u5C40\u8D44\u6E90\uFF0C\u5220\u9664\u4F1A\u5F71\u54CD\u6B64\u4E3B\u673A\u4E0A\u7684\u6240\u6709\u9879\u76EE\u3002" : "\u5220\u9664\u5C06\u5F71\u54CD\u5F53\u524D\u9879\u76EE\u3002", onClose: close, footer: (0, import_react5.createElement)("div", { className: "te-actions" }, (0, import_react5.createElement)(import_dsh_client_ui_primitives4.Button, { variant: "outline", disabled: busy, onClick: close }, "\u4FDD\u7559"), (0, import_react5.createElement)("button", { className: "te-danger-button", disabled: busy, onClick: () => {
|
|
6499
6486
|
void remove();
|
|
6500
6487
|
} }, busy ? "\u5220\u9664\u4E2D\u2026" : "\u786E\u8BA4\u6C38\u4E45\u5220\u9664")) }, (0, import_react5.createElement)("code", { className: "te-path" }, `${roots?.[levelOf(deleting) === "user" ? "user" : "project"] ?? "\u8D44\u6E90\u76EE\u5F55"}/${deleting.name}${kind === "rule" ? ".md" : ""}`), (0, import_react5.createElement)("p", null, "\u6B64\u64CD\u4F5C\u4E0D\u4F1A\u8FDB\u5165\u56DE\u6536\u7AD9\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u6709\u5907\u4EFD\u3002"), status()) : null
|
|
6501
6488
|
);
|
|
@@ -6580,7 +6567,7 @@ function RuleManager(props) {
|
|
|
6580
6567
|
|
|
6581
6568
|
// src/client/TaskLedger.tsx
|
|
6582
6569
|
var import_react8 = require("react");
|
|
6583
|
-
var
|
|
6570
|
+
var import_dsh_client_ui_primitives5 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
6584
6571
|
var card2 = {
|
|
6585
6572
|
display: "flex",
|
|
6586
6573
|
flexDirection: "column",
|
|
@@ -6618,10 +6605,10 @@ var badge = {
|
|
|
6618
6605
|
color: "var(--dsw-alias-label-secondary)"
|
|
6619
6606
|
};
|
|
6620
6607
|
function verdictDot(outcome) {
|
|
6621
|
-
return (0, import_react8.createElement)(
|
|
6608
|
+
return (0, import_react8.createElement)(import_dsh_client_ui_primitives5.StateDot, { state: outcome === "pass" ? "done" : "error" });
|
|
6622
6609
|
}
|
|
6623
6610
|
function itemStatusDot(status) {
|
|
6624
|
-
return (0, import_react8.createElement)(
|
|
6611
|
+
return (0, import_react8.createElement)(import_dsh_client_ui_primitives5.StateDot, { state: status === "done" ? "done" : "ongoing" });
|
|
6625
6612
|
}
|
|
6626
6613
|
function timeText(at) {
|
|
6627
6614
|
return at.slice(0, 19).replace("T", " ");
|
|
@@ -6702,7 +6689,7 @@ function TaskLedger({ workspace, remote }) {
|
|
|
6702
6689
|
{ style: headerRow },
|
|
6703
6690
|
(0, import_react8.createElement)("span", { style: styles.bindingLabel }, "\u4EFB\u52A1\u53F0\u8D26"),
|
|
6704
6691
|
(0, import_react8.createElement)("span", { style: styles.sourceBadge }, "\u53EA\u8BFB \xB7 \u6765\u81EA .dsh/task-*.json"),
|
|
6705
|
-
(0, import_react8.createElement)(
|
|
6692
|
+
(0, import_react8.createElement)(import_dsh_client_ui_primitives5.Button, { variant: "outline", size: "sm", disabled: loading, onClick: refresh }, loading ? "\u8BFB\u53D6\u4E2D\u2026" : "\u5237\u65B0")
|
|
6706
6693
|
),
|
|
6707
6694
|
loading ? (0, import_react8.createElement)("p", { role: "status" }, "\u6B63\u5728\u8BFB\u53D6\u4EFB\u52A1\u2026") : error !== "" ? (0, import_react8.createElement)("p", { style: styles.status }, error) : tasks.length === 0 ? (0, import_react8.createElement)("p", { style: styles.muted }, "\u5F53\u524D\u5DE5\u4F5C\u533A\u8FD8\u6CA1\u6709\u4EFB\u52A1\uFF1A\u5F00\u5DE5\u540E\uFF08dev_task create\uFF09\u4F1A\u5728\u8FD9\u91CC\u5217\u51FA\u6D3E\u53D1\u4E0E\u5BA1\u67E5\u7559\u75D5\u3002") : visible.length === 0 ? (0, import_react8.createElement)("div", { className: "te-empty" }, "\u6CA1\u6709\u5339\u914D\u7684\u4EFB\u52A1\uFF0C\u8BF7\u8C03\u6574\u7B5B\u9009\u3002") : (0, import_react8.createElement)(
|
|
6708
6695
|
"div",
|
|
@@ -6821,7 +6808,7 @@ function Workbench({ useStore, actions, useWorkspaces, remote }) {
|
|
|
6821
6808
|
(0, import_react9.createElement)(
|
|
6822
6809
|
"div",
|
|
6823
6810
|
{ style: headerBrand },
|
|
6824
|
-
(0, import_react9.createElement)(
|
|
6811
|
+
(0, import_react9.createElement)(IconSettings, { size: 18 }),
|
|
6825
6812
|
(0, import_react9.createElement)(
|
|
6826
6813
|
"div",
|
|
6827
6814
|
{ style: headerText },
|
|
@@ -6845,13 +6832,13 @@ function Workbench({ useStore, actions, useWorkspaces, remote }) {
|
|
|
6845
6832
|
event.currentTarget.style.background = "transparent";
|
|
6846
6833
|
}
|
|
6847
6834
|
},
|
|
6848
|
-
(0, import_react9.createElement)(
|
|
6835
|
+
(0, import_react9.createElement)(IconClose, { size: 16 })
|
|
6849
6836
|
)
|
|
6850
6837
|
),
|
|
6851
6838
|
(0, import_react9.createElement)(
|
|
6852
6839
|
"div",
|
|
6853
6840
|
{ style: tabbar },
|
|
6854
|
-
...TABS.map((t) => (0, import_react9.createElement)(
|
|
6841
|
+
...TABS.map((t) => (0, import_react9.createElement)(import_dsh_client_ui_primitives6.Pill, { key: t.id, active: tab === t.id, onClick: () => {
|
|
6855
6842
|
setTab(t.id);
|
|
6856
6843
|
} }, t.label)),
|
|
6857
6844
|
workspaces.length > 0 ? (0, import_react9.createElement)("select", {
|
|
@@ -6878,7 +6865,6 @@ function Workbench({ useStore, actions, useWorkspaces, remote }) {
|
|
|
6878
6865
|
|
|
6879
6866
|
// src/client/TriggerButton.tsx
|
|
6880
6867
|
var import_react10 = require("react");
|
|
6881
|
-
var import_dsh_client_ui_primitives8 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
6882
6868
|
var hover = "var(--dsw-alias-bg-layer-2)";
|
|
6883
6869
|
var label = "var(--dsw-alias-label-primary)";
|
|
6884
6870
|
function TriggerButton({ wide, actions }) {
|
|
@@ -6922,7 +6908,7 @@ function TriggerButton({ wide, actions }) {
|
|
|
6922
6908
|
transition: "background 120ms ease"
|
|
6923
6909
|
}
|
|
6924
6910
|
},
|
|
6925
|
-
(0, import_react10.createElement)(
|
|
6911
|
+
(0, import_react10.createElement)(IconSettings, { size: wide ? 16 : 18 }),
|
|
6926
6912
|
wide ? (0, import_react10.createElement)("span", { style: { fontSize: 14, lineHeight: "22px" } }, "\u5DE5\u7A0B\u6D41\u7A0B") : null
|
|
6927
6913
|
);
|
|
6928
6914
|
}
|