@godv61/dsh-task-engine 0.30.0 → 0.30.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/.adaptive-test.mjs +38 -1
- package/README.md +199 -20
- package/docs/manual.html +5 -5
- package/lib/client.js +234 -26
- package/lib/client.js.map +1 -1
- package/lib/controller.d.ts +33 -0
- package/lib/controller.js +228 -0
- package/lib/controller.js.map +1 -1
- package/lib/dev-task.js +1 -28
- package/lib/dev-task.js.map +1 -1
- package/lib/project-init.d.ts +11 -0
- package/lib/project-init.js +32 -1
- package/lib/project-init.js.map +1 -1
- package/package.json +2 -2
package/lib/client.js
CHANGED
|
@@ -4309,6 +4309,35 @@ var initDraftSchema = external_exports.object({
|
|
|
4309
4309
|
lines: external_exports.number(),
|
|
4310
4310
|
error: external_exports.string().optional()
|
|
4311
4311
|
});
|
|
4312
|
+
var projectInitResourceSchema = external_exports.object({
|
|
4313
|
+
kind: external_exports.enum(["skill", "rule"]),
|
|
4314
|
+
name: external_exports.string(),
|
|
4315
|
+
description: external_exports.string().optional(),
|
|
4316
|
+
content: external_exports.string(),
|
|
4317
|
+
meta_skills: external_exports.array(external_exports.string()).optional(),
|
|
4318
|
+
rules: external_exports.array(external_exports.string()).optional()
|
|
4319
|
+
});
|
|
4320
|
+
var projectInitInventorySchema = external_exports.object({
|
|
4321
|
+
project_name: external_exports.string(),
|
|
4322
|
+
root_entries: external_exports.array(external_exports.string()),
|
|
4323
|
+
modules: external_exports.array(external_exports.object({ path: external_exports.string(), entries: external_exports.array(external_exports.string()) })),
|
|
4324
|
+
manifests: external_exports.array(external_exports.object({ path: external_exports.string(), facts: external_exports.array(external_exports.string()) })),
|
|
4325
|
+
suggestions: external_exports.array(external_exports.object({ name: external_exports.string(), kind: external_exports.enum(["skill", "rule"]), meta_skills: external_exports.array(external_exports.string()), why: external_exports.string() })),
|
|
4326
|
+
caution: external_exports.string()
|
|
4327
|
+
});
|
|
4328
|
+
var projectInitPreviewRequestSchema = external_exports.object({ path: external_exports.string(), resources: external_exports.array(projectInitResourceSchema) });
|
|
4329
|
+
var projectInitPreviewSchema = external_exports.object({
|
|
4330
|
+
ok: external_exports.boolean(),
|
|
4331
|
+
inventory: projectInitInventorySchema,
|
|
4332
|
+
resources: external_exports.array(projectInitResourceSchema),
|
|
4333
|
+
files_to_create: external_exports.array(external_exports.string()),
|
|
4334
|
+
project_map_coverage: external_exports.array(external_exports.string()),
|
|
4335
|
+
existing_hash: external_exports.string(),
|
|
4336
|
+
expected_hash: external_exports.string(),
|
|
4337
|
+
error: external_exports.string().optional()
|
|
4338
|
+
});
|
|
4339
|
+
var projectInitApplyRequestSchema = projectInitPreviewRequestSchema.extend({ expected_hash: external_exports.string(), existing_hash: external_exports.string() });
|
|
4340
|
+
var projectInitApplyResultSchema = external_exports.object({ ok: external_exports.boolean(), created: external_exports.array(external_exports.string()), error: external_exports.string().optional() });
|
|
4312
4341
|
var resourceRequestSchema = external_exports.object({
|
|
4313
4342
|
kind: external_exports.enum(["skill", "rule"]),
|
|
4314
4343
|
level: external_exports.enum(["project", "user"]),
|
|
@@ -4740,6 +4769,48 @@ var TYPERT_REMOTE = {
|
|
|
4740
4769
|
}
|
|
4741
4770
|
],
|
|
4742
4771
|
result: { mode: "strict", typeSymbol: `${PACKAGE}/types#InitDraft`, create: () => initDraftSchema, schema: initDraftSchema }
|
|
4772
|
+
},
|
|
4773
|
+
{
|
|
4774
|
+
id: `${PACKAGE}#task-engine/generateProjectInit`,
|
|
4775
|
+
service: "taskEngineController",
|
|
4776
|
+
namespace: "task-engine",
|
|
4777
|
+
method: "generateProjectInit",
|
|
4778
|
+
invocation: { kind: "direct" },
|
|
4779
|
+
parameters: [{
|
|
4780
|
+
name: "request",
|
|
4781
|
+
wire: "request",
|
|
4782
|
+
source: "json",
|
|
4783
|
+
codec: { mode: "strict", typeSymbol: `${PACKAGE}/types#InitGenerateRequest`, create: () => initGenerateRequestSchema, schema: initGenerateRequestSchema }
|
|
4784
|
+
}],
|
|
4785
|
+
result: { mode: "strict", typeSymbol: `${PACKAGE}/types#ProjectInitPreview`, create: () => projectInitPreviewSchema, schema: projectInitPreviewSchema }
|
|
4786
|
+
},
|
|
4787
|
+
{
|
|
4788
|
+
id: `${PACKAGE}#task-engine/previewProjectInit`,
|
|
4789
|
+
service: "taskEngineController",
|
|
4790
|
+
namespace: "task-engine",
|
|
4791
|
+
method: "previewProjectInit",
|
|
4792
|
+
invocation: { kind: "direct" },
|
|
4793
|
+
parameters: [{
|
|
4794
|
+
name: "request",
|
|
4795
|
+
wire: "request",
|
|
4796
|
+
source: "json",
|
|
4797
|
+
codec: { mode: "strict", typeSymbol: `${PACKAGE}/types#ProjectInitPreviewRequest`, create: () => projectInitPreviewRequestSchema, schema: projectInitPreviewRequestSchema }
|
|
4798
|
+
}],
|
|
4799
|
+
result: { mode: "strict", typeSymbol: `${PACKAGE}/types#ProjectInitPreview`, create: () => projectInitPreviewSchema, schema: projectInitPreviewSchema }
|
|
4800
|
+
},
|
|
4801
|
+
{
|
|
4802
|
+
id: `${PACKAGE}#task-engine/applyProjectInit`,
|
|
4803
|
+
service: "taskEngineController",
|
|
4804
|
+
namespace: "task-engine",
|
|
4805
|
+
method: "applyProjectInit",
|
|
4806
|
+
invocation: { kind: "direct" },
|
|
4807
|
+
parameters: [{
|
|
4808
|
+
name: "request",
|
|
4809
|
+
wire: "request",
|
|
4810
|
+
source: "json",
|
|
4811
|
+
codec: { mode: "strict", typeSymbol: `${PACKAGE}/types#ProjectInitApplyRequest`, create: () => projectInitApplyRequestSchema, schema: projectInitApplyRequestSchema }
|
|
4812
|
+
}],
|
|
4813
|
+
result: { mode: "strict", typeSymbol: `${PACKAGE}/types#ProjectInitApplyResult`, create: () => projectInitApplyResultSchema, schema: projectInitApplyResultSchema }
|
|
4743
4814
|
}
|
|
4744
4815
|
]
|
|
4745
4816
|
};
|
|
@@ -5773,7 +5844,6 @@ var card2 = {
|
|
|
5773
5844
|
borderRadius: 8,
|
|
5774
5845
|
padding: "12px 14px"
|
|
5775
5846
|
};
|
|
5776
|
-
var projectInitPrompt = (workspace) => `\u8BF7\u5728\u5F53\u524D\u9879\u76EE\u6839\u5DE5\u4F5C\u533A ${workspace} \u4F7F\u7528\u5DE5\u7A0B\u5316\u5F00\u53D1\u5F15\u64CE\u521D\u59CB\u5316\u9879\u76EE Skill \u548C Rule\u3002\u5148\u8C03\u7528 dev_task init_project\uFF08phase=inspect\uFF09\uFF0C\u7ED3\u5408\u4EE3\u8868\u6027\u6E90\u7801\u3001\u6784\u5EFA\u6587\u4EF6\u3001\u6D4B\u8BD5\u548C\u5DF2\u6709\u89C4\u8303\u6838\u5B9E\u626B\u63CF\u7ED3\u679C\u3002\u6309\u9879\u76EE\u5B9E\u9645\u60C5\u51B5\u62DF\u5B9A\u9879\u76EE\u7ED3\u6784\u5730\u56FE\u3001\u6280\u672F\u6808\u3001\u7F16\u7801\u65B9\u6CD5\u7B49 Skill \u548C\u5FC5\u8981\u7684 Rule\uFF0C\u5E76\u6807\u660E\u9002\u7528\u7684\u5143\u6280\u80FD\u3002\u9879\u76EE\u5730\u56FE\u5FC5\u987B\u603B\u7ED3\u6574\u4E2A\u4ED3\u5E93\u7684\u6A21\u5757\u804C\u8D23\u3001\u4F9D\u8D56\u548C\u901A\u7528\u4EE3\u7801\u5165\u53E3\uFF0C\u80FD\u591F\u4F9B\u4E0D\u540C\u9700\u6C42\u590D\u7528\uFF1B\u4E0D\u8981\u628A\u5F53\u524D\u4F1A\u8BDD\u7684\u9700\u6C42\u3001\u4E13\u5C5E\u8C03\u7528\u94FE\u6216\u5B9E\u73B0\u65B9\u6848\u5199\u6210\u9879\u76EE\u5730\u56FE\uFF0C\u76F8\u5173\u5185\u5BB9\u5E94\u8FDB\u5165\u8BE5\u4EFB\u52A1\u4EA7\u7269\u6216\u5355\u72EC\u7684\u9886\u57DF Skill\u3002\u8C03\u7528 phase=propose \u5C55\u793A\u62DF\u521B\u5EFA\u7684\u6587\u4EF6\u3001\u5185\u5BB9\u548C\u6302\u8F7D\u5173\u7CFB\uFF1B\u7B49\u6211\u5BA1\u9605\u786E\u8BA4\u540E\u518D\u8C03\u7528 phase=apply\u3002\u4E0D\u8981\u8986\u76D6\u540C\u540D\u8D44\u6E90\uFF0C\u4E5F\u4E0D\u8981\u628A\u5076\u53D1\u4EE3\u7801\u5199\u6CD5\u5F53\u6210\u56E2\u961F\u89C4\u8303\u3002`;
|
|
5777
5847
|
function InitPanel({ workspace, remote }) {
|
|
5778
5848
|
const [view, setView] = (0, import_react4.useState)(null);
|
|
5779
5849
|
const [generating, setGenerating] = (0, import_react4.useState)(false);
|
|
@@ -5783,8 +5853,11 @@ function InitPanel({ workspace, remote }) {
|
|
|
5783
5853
|
const [body2, setBody] = (0, import_react4.useState)("");
|
|
5784
5854
|
const [msg, setMsg] = (0, import_react4.useState)("");
|
|
5785
5855
|
const [projectInitMsg, setProjectInitMsg] = (0, import_react4.useState)("");
|
|
5856
|
+
const [projectBusy, setProjectBusy] = (0, import_react4.useState)(false);
|
|
5857
|
+
const [projectDraft, setProjectDraft] = (0, import_react4.useState)(null);
|
|
5858
|
+
const [projectResources, setProjectResources] = (0, import_react4.useState)([]);
|
|
5786
5859
|
(0, import_react4.useEffect)(() => {
|
|
5787
|
-
if (!generating) {
|
|
5860
|
+
if (!generating && !projectBusy) {
|
|
5788
5861
|
setElapsed(0);
|
|
5789
5862
|
return;
|
|
5790
5863
|
}
|
|
@@ -5796,7 +5869,73 @@ function InitPanel({ workspace, remote }) {
|
|
|
5796
5869
|
return () => {
|
|
5797
5870
|
clearInterval(timer);
|
|
5798
5871
|
};
|
|
5799
|
-
}, [generating]);
|
|
5872
|
+
}, [generating, projectBusy]);
|
|
5873
|
+
(0, import_react4.useEffect)(() => {
|
|
5874
|
+
setProjectDraft(null);
|
|
5875
|
+
setProjectResources([]);
|
|
5876
|
+
setProjectInitMsg("");
|
|
5877
|
+
}, [workspace]);
|
|
5878
|
+
const generateProject = async () => {
|
|
5879
|
+
setProjectBusy(true);
|
|
5880
|
+
setProjectDraft(null);
|
|
5881
|
+
setProjectResources([]);
|
|
5882
|
+
setProjectInitMsg("");
|
|
5883
|
+
try {
|
|
5884
|
+
const result = await remote.generateProjectInit({ path: workspace });
|
|
5885
|
+
if (!result.ok) throw new Error(describeError(result.error));
|
|
5886
|
+
if (!result.value.ok) throw new Error(result.value.error ?? "\u9879\u76EE\u521D\u59CB\u5316\u63D0\u6848\u65E0\u6548");
|
|
5887
|
+
setProjectDraft(result.value);
|
|
5888
|
+
setProjectResources(result.value.resources);
|
|
5889
|
+
setProjectInitMsg("\u63D0\u6848\u5DF2\u751F\u6210\u5E76\u6821\u9A8C\u3002\u8BF7\u9010\u9879\u5BA1\u9605\u5185\u5BB9\u4E0E\u6302\u8F7D\u5173\u7CFB\uFF0C\u786E\u8BA4\u540E\u518D\u5199\u5165\u3002");
|
|
5890
|
+
} catch (error) {
|
|
5891
|
+
setProjectInitMsg(`\u751F\u6210\u5931\u8D25\uFF1A${error instanceof Error ? error.message : String(error)}`);
|
|
5892
|
+
} finally {
|
|
5893
|
+
setProjectBusy(false);
|
|
5894
|
+
}
|
|
5895
|
+
};
|
|
5896
|
+
const updateProjectResource = (index, change) => {
|
|
5897
|
+
setProjectResources((current) => current.map((resource, at) => at === index ? { ...resource, ...change } : resource));
|
|
5898
|
+
setProjectDraft(null);
|
|
5899
|
+
setProjectInitMsg("\u63D0\u6848\u5DF2\u4FEE\u6539\u3002\u8BF7\u5148\u70B9\u51FB\u201C\u68C0\u67E5\u4FEE\u6539\u201D\uFF0C\u901A\u8FC7\u540E\u624D\u80FD\u5199\u5165\u3002");
|
|
5900
|
+
};
|
|
5901
|
+
const checkProject = async () => {
|
|
5902
|
+
setProjectBusy(true);
|
|
5903
|
+
setProjectInitMsg("");
|
|
5904
|
+
try {
|
|
5905
|
+
const result = await remote.previewProjectInit({ path: workspace, resources: projectResources });
|
|
5906
|
+
if (!result.ok) throw new Error(describeError(result.error));
|
|
5907
|
+
if (!result.value.ok) throw new Error(result.value.error ?? "\u63D0\u6848\u6821\u9A8C\u5931\u8D25");
|
|
5908
|
+
setProjectDraft(result.value);
|
|
5909
|
+
setProjectInitMsg("\u63D0\u6848\u68C0\u67E5\u901A\u8FC7\uFF0C\u53EF\u4EE5\u786E\u8BA4\u5199\u5165\u3002");
|
|
5910
|
+
} catch (error) {
|
|
5911
|
+
setProjectDraft(null);
|
|
5912
|
+
setProjectInitMsg(`\u68C0\u67E5\u5931\u8D25\uFF1A${error instanceof Error ? error.message : String(error)}`);
|
|
5913
|
+
} finally {
|
|
5914
|
+
setProjectBusy(false);
|
|
5915
|
+
}
|
|
5916
|
+
};
|
|
5917
|
+
const applyProject = async () => {
|
|
5918
|
+
if (projectDraft === null || !window.confirm(`\u786E\u8BA4\u5728 ${workspace} \u521B\u5EFA ${projectDraft.files_to_create.length} \u4E2A Skill / Rule \u6587\u4EF6\u5E76\u66F4\u65B0 .dsh/meta.json\uFF1F`)) return;
|
|
5919
|
+
setProjectBusy(true);
|
|
5920
|
+
setProjectInitMsg("");
|
|
5921
|
+
try {
|
|
5922
|
+
const result = await remote.applyProjectInit({
|
|
5923
|
+
path: workspace,
|
|
5924
|
+
resources: projectDraft.resources,
|
|
5925
|
+
expected_hash: projectDraft.expected_hash,
|
|
5926
|
+
existing_hash: projectDraft.existing_hash
|
|
5927
|
+
});
|
|
5928
|
+
if (!result.ok) throw new Error(describeError(result.error));
|
|
5929
|
+
if (!result.value.ok) throw new Error(result.value.error ?? "\u5199\u5165\u5931\u8D25");
|
|
5930
|
+
setProjectInitMsg(`\u5DF2\u521B\u5EFA ${result.value.created.length} \u4E2A\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\uFF1A${result.value.created.join("\u3001")}`);
|
|
5931
|
+
setProjectDraft(null);
|
|
5932
|
+
setProjectResources([]);
|
|
5933
|
+
} catch (error) {
|
|
5934
|
+
setProjectInitMsg(`\u5199\u5165\u5931\u8D25\uFF1A${error instanceof Error ? error.message : String(error)}\u3002\u82E5\u5DF2\u6709\u90E8\u5206\u6587\u4EF6\uFF0C\u8BF7\u5237\u65B0\u5E76\u68C0\u67E5\u3002`);
|
|
5935
|
+
} finally {
|
|
5936
|
+
setProjectBusy(false);
|
|
5937
|
+
}
|
|
5938
|
+
};
|
|
5800
5939
|
const refresh = (0, import_react4.useCallback)(() => {
|
|
5801
5940
|
void remote.readInit(workspace).then((r) => {
|
|
5802
5941
|
if (r.ok) setView(r.value);
|
|
@@ -5856,39 +5995,108 @@ function InitPanel({ workspace, remote }) {
|
|
|
5856
5995
|
(0, import_react4.createElement)(
|
|
5857
5996
|
"p",
|
|
5858
5997
|
{ style: styles.muted },
|
|
5859
|
-
"\u626B\u63CF\
|
|
5998
|
+
"\u5728\u6B64\u626B\u63CF\u4ED3\u5E93\u5E76\u751F\u6210\u9879\u76EE Skill / Rule \u63D0\u6848\u3002\u9879\u76EE\u5730\u56FE\u8986\u76D6\u6574\u4E2A\u4ED3\u5E93\uFF0C\u5F53\u524D\u9700\u6C42\u7684\u4E13\u5C5E\u4FE1\u606F\u5E94\u5199\u5165\u4EFB\u52A1\u4EA7\u7269\u3002\u9010\u9879\u5BA1\u9605\u540E\u786E\u8BA4\u5199\u5165\uFF1B\u5DF2\u6709\u540C\u540D\u8D44\u6E90\u4E0D\u4F1A\u88AB\u8986\u76D6\u3002"
|
|
5860
5999
|
),
|
|
5861
6000
|
(0, import_react4.createElement)(
|
|
5862
6001
|
"p",
|
|
5863
6002
|
{ style: styles.muted },
|
|
5864
6003
|
"\u56E2\u961F\u5171\u4EAB\u65F6\uFF0C\u8BF7\u5C06\u751F\u6210\u7684 .dsh/skills\u3001.dsh/rules \u548C .dsh/meta.json \u7EB3\u5165 Git\uFF1B\u5BA1\u6838\u62A5\u544A\u53EF\u4FDD\u7559\u5728\u672C\u5730\u3002"
|
|
5865
6004
|
),
|
|
5866
|
-
(0, import_react4.createElement)(
|
|
5867
|
-
"p",
|
|
5868
|
-
{ style: styles.muted },
|
|
5869
|
-
"\u4F7F\u7528\u65B9\u6CD5\uFF1A\u5173\u95ED\u6B64\u9762\u677F\uFF0C\u5728\u5F53\u524D\u9879\u76EE\u6839\u5DE5\u4F5C\u533A\u9009\u62E9\u201C\u5DE5\u7A0B\u5316\u5F00\u53D1\u5F15\u64CE\u201D\uFF0C\u628A\u4E0B\u9762\u7684\u8BF7\u6C42\u53D1\u7ED9\u65B0\u4F1A\u8BDD\u3002"
|
|
5870
|
-
),
|
|
5871
|
-
(0, import_react4.createElement)("textarea", {
|
|
5872
|
-
style: { ...styles.textarea, minHeight: 100 },
|
|
5873
|
-
readOnly: true,
|
|
5874
|
-
"aria-label": "\u9879\u76EE Skill \u548C Rule \u521D\u59CB\u5316\u8BF7\u6C42",
|
|
5875
|
-
value: projectInitPrompt(workspace)
|
|
5876
|
-
}),
|
|
5877
6005
|
(0, import_react4.createElement)(
|
|
5878
6006
|
"div",
|
|
5879
6007
|
{ style: styles.row },
|
|
5880
|
-
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
5881
|
-
|
|
5882
|
-
|
|
5883
|
-
|
|
6008
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6009
|
+
variant: "primary",
|
|
6010
|
+
size: "md",
|
|
6011
|
+
disabled: projectBusy,
|
|
6012
|
+
onClick: () => {
|
|
6013
|
+
void generateProject();
|
|
5884
6014
|
}
|
|
5885
|
-
|
|
5886
|
-
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
6015
|
+
}, projectBusy ? "\u626B\u63CF\u4E0E\u751F\u6210\u4E2D\u2026" : "\u626B\u63CF\u5E76\u751F\u6210\u63D0\u6848"),
|
|
6016
|
+
projectBusy ? (0, import_react4.createElement)("span", { style: styles.status }, `\u5DF2\u8017\u65F6 ${elapsed} \u79D2`) : null
|
|
6017
|
+
),
|
|
6018
|
+
projectResources.length > 0 ? (0, import_react4.createElement)(
|
|
6019
|
+
"div",
|
|
6020
|
+
{ style: styles.section },
|
|
6021
|
+
(0, import_react4.createElement)(
|
|
6022
|
+
"p",
|
|
6023
|
+
{ style: styles.muted },
|
|
6024
|
+
`\u9879\u76EE\uFF1A${workspace}\u3002\u63D0\u6848\u5305\u542B ${projectResources.length} \u4E2A Skill / Rule\uFF1B\u9879\u76EE\u5730\u56FE\u9700\u8986\u76D6\uFF1A${projectDraft?.project_map_coverage.join("\u3001") ?? "\u68C0\u67E5\u4FEE\u6539\u540E\u663E\u793A"}\u3002`
|
|
6025
|
+
),
|
|
6026
|
+
...projectResources.map((resource, index) => (0, import_react4.createElement)(
|
|
6027
|
+
"div",
|
|
6028
|
+
{ key: `${resource.kind}-${resource.name}`, style: card2 },
|
|
6029
|
+
(0, import_react4.createElement)(
|
|
6030
|
+
"div",
|
|
6031
|
+
{ style: styles.row },
|
|
6032
|
+
(0, import_react4.createElement)("strong", null, `${resource.kind === "skill" ? "Skill" : "Rule"} \xB7 ${resource.name}`),
|
|
6033
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6034
|
+
variant: "ghost",
|
|
6035
|
+
size: "sm",
|
|
6036
|
+
disabled: projectBusy,
|
|
6037
|
+
onClick: () => {
|
|
6038
|
+
setProjectResources((current) => current.filter((_, at) => at !== index));
|
|
6039
|
+
setProjectDraft(null);
|
|
6040
|
+
setProjectInitMsg("\u5DF2\u79FB\u9664\u5EFA\u8BAE\u3002\u8BF7\u91CD\u65B0\u68C0\u67E5\u63D0\u6848\u3002");
|
|
6041
|
+
}
|
|
6042
|
+
}, "\u79FB\u9664\u5EFA\u8BAE")
|
|
6043
|
+
),
|
|
6044
|
+
resource.kind === "skill" ? (0, import_react4.createElement)(
|
|
6045
|
+
"div",
|
|
6046
|
+
{ style: styles.section },
|
|
6047
|
+
(0, import_react4.createElement)("label", null, "\u7B80\u4ECB", (0, import_react4.createElement)("input", {
|
|
6048
|
+
style: styles.input,
|
|
6049
|
+
value: resource.description ?? "",
|
|
6050
|
+
onChange: (event) => {
|
|
6051
|
+
updateProjectResource(index, { description: event.target.value });
|
|
6052
|
+
}
|
|
6053
|
+
})),
|
|
6054
|
+
(0, import_react4.createElement)("label", null, "\u6302\u8F7D\u5143\u6280\u80FD\uFF08\u9017\u53F7\u5206\u9694\uFF09", (0, import_react4.createElement)("input", {
|
|
6055
|
+
style: styles.input,
|
|
6056
|
+
value: (resource.meta_skills ?? []).join(", "),
|
|
6057
|
+
onChange: (event) => {
|
|
6058
|
+
updateProjectResource(index, { meta_skills: event.target.value.split(",").map((item) => item.trim()).filter(Boolean) });
|
|
6059
|
+
}
|
|
6060
|
+
})),
|
|
6061
|
+
(0, import_react4.createElement)("label", null, "\u5173\u8054 Rule\uFF08\u9017\u53F7\u5206\u9694\uFF09", (0, import_react4.createElement)("input", {
|
|
6062
|
+
style: styles.input,
|
|
6063
|
+
value: (resource.rules ?? []).join(", "),
|
|
6064
|
+
onChange: (event) => {
|
|
6065
|
+
updateProjectResource(index, { rules: event.target.value.split(",").map((item) => item.trim()).filter(Boolean) });
|
|
6066
|
+
}
|
|
6067
|
+
}))
|
|
6068
|
+
) : null,
|
|
6069
|
+
(0, import_react4.createElement)("label", null, "\u5185\u5BB9", (0, import_react4.createElement)("textarea", {
|
|
6070
|
+
style: { ...styles.textarea, minHeight: 180 },
|
|
6071
|
+
value: resource.content,
|
|
6072
|
+
onChange: (event) => {
|
|
6073
|
+
updateProjectResource(index, { content: event.target.value });
|
|
6074
|
+
}
|
|
6075
|
+
}))
|
|
6076
|
+
)),
|
|
6077
|
+
(0, import_react4.createElement)(
|
|
6078
|
+
"div",
|
|
6079
|
+
{ style: styles.row },
|
|
6080
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6081
|
+
variant: "outline",
|
|
6082
|
+
size: "md",
|
|
6083
|
+
disabled: projectBusy,
|
|
6084
|
+
onClick: () => {
|
|
6085
|
+
void checkProject();
|
|
6086
|
+
}
|
|
6087
|
+
}, "\u68C0\u67E5\u4FEE\u6539"),
|
|
6088
|
+
(0, import_react4.createElement)(import_dsh_client_ui_primitives3.Button, {
|
|
6089
|
+
variant: "primary",
|
|
6090
|
+
size: "md",
|
|
6091
|
+
disabled: projectBusy || projectDraft === null,
|
|
6092
|
+
onClick: () => {
|
|
6093
|
+
void applyProject();
|
|
6094
|
+
}
|
|
6095
|
+
}, "\u786E\u8BA4\u5199\u5165\u9879\u76EE")
|
|
6096
|
+
),
|
|
6097
|
+
projectDraft !== null ? (0, import_react4.createElement)("p", { style: styles.muted }, `\u5C06\u521B\u5EFA\uFF1A${projectDraft.files_to_create.join("\u3001")}\uFF0C\u5E76\u66F4\u65B0 .dsh/meta.json`) : null
|
|
6098
|
+
) : null,
|
|
6099
|
+
projectInitMsg ? (0, import_react4.createElement)("p", { role: "status", style: styles.status }, projectInitMsg) : null
|
|
5892
6100
|
),
|
|
5893
6101
|
(0, import_react4.createElement)(
|
|
5894
6102
|
"div",
|