@dazitech/cli 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -14
- package/dist/clis/dazi-app.js +95 -14
- package/dist/clis/dazi-flow.js +602 -172
- package/dist/clis/dazi-onto.js +5 -3
- package/dist/clis/dazi.js +139 -38
- package/dist/docs/app/app-init.md +15 -15
- package/dist/docs/app/build-upload.md +13 -13
- package/dist/docs/app/release-guide.md +9 -9
- package/dist/docs/app//344/270/273/350/246/201/350/264/242/345/212/241/346/214/207/346/240/207/345/244/215/346/235/202/346/212/245/350/241/250/345/274/200/345/217/221/345/256/236/350/267/265.md +45 -41
- package/dist/docs/auth/auth-login.md +4 -4
- package/dist/docs/auth/token-management.md +5 -5
- package/dist/docs/data/cube-guide.md +2 -2
- package/dist/docs/data/data-spaces.md +4 -3
- package/dist/docs/data/table-preview.md +6 -6
- package/dist/docs/flow/ai-workflow-playbook.md +69 -0
- package/dist/docs/flow/flow-project-guide.md +92 -87
- package/dist/docs/flow/flows-guide.md +98 -94
- package/dist/docs/flow/local-files-spec.md +194 -0
- package/dist/docs/flow/node-code-guide.md +57 -55
- package/dist/docs/flow/run-guide.md +18 -18
- package/dist/docs/flow/variables-guide.md +61 -61
- package/dist/docs/flow//346/265/201/347/250/213/345/274/200/345/217/221/346/234/200/344/275/263/345/256/236/350/267/265-VS-flow0/346/241/210/344/276/213.md +31 -31
- package/dist/docs/guides/cli-invocation.md +30 -29
- package/dist/docs/guides/cli-reference.md +72 -71
- package/dist/docs/guides/flow-consistency-checklist.md +42 -0
- package/dist/docs/guides/mcp-setup.md +34 -34
- package/dist/docs/guides/migrate-v2-v3.md +6 -5
- package/dist/docs/guides/quickstart.md +8 -8
- package/dist/docs/guides/troubleshooting.md +40 -22
- package/dist/docs/guides/workspace-v3.md +17 -17
- package/dist/docs/index.json +19 -7
- package/dist/docs/onto/action-guide.md +4 -3
- package/dist/docs/onto/dazi_script_sdk_reference.md +20 -14
- package/dist/docs/onto/dazi_script_seed_data_guide.md +14 -14
- package/dist/docs/onto/function-guide.md +5 -5
- package/dist/docs/onto/rule-guide.md +7 -6
- package/dist/docs/onto/space-management.md +5 -3
- package/dist/docs/onto//346/234/254/344/275/223/350/204/232/346/234/254/347/274/226/345/206/231/346/214/207/345/215/227.md +35 -35
- package/dist/docs/onto//346/234/254/344/275/223/350/247/204/345/210/222/346/214/207/345/215/227.md +21 -21
- package/dist/docs/onto//350/247/204/345/210/222/347/244/272/344/276/213_/345/210/251/346/266/246/345/210/206/346/236/220/346/234/254/344/275/223/346/226/271/346/241/210.md +11 -11
- package/dist/examples/flow/minimal-excel-python/README.md +5 -0
- package/dist/examples/flow/minimal-excel-python/flow.json +48 -0
- package/dist/examples/flow/minimal-excel-python/flow.meta.json +23 -0
- package/dist/examples/flow/minimal-excel-python//350/212/202/347/202/271/Excel/347/244/272/344/276/213/code.py +7 -0
- package/dist/examples/flow/minimal-excel-python//350/212/202/347/202/271/Excel/347/244/272/344/276/213/node.info.json +14 -0
- package/dist/examples/index.json +7 -1
- package/dist/prompts/data/data-analysis.md +2 -2
- package/dist/prompts/flow/ai-workflow-playbook.md +69 -0
- package/dist/prompts/flow/flow-design.md +33 -19
- package/dist/prompts/flow/plan-generate.md +7 -7
- package/dist/prompts/flow/run-debug.md +15 -15
- package/dist/prompts/flow/run-fix-loop.md +20 -17
- package/dist/prompts/general/ask-dazi.md +6 -6
- package/dist/prompts/general/troubleshoot.md +4 -3
- package/dist/prompts/index.json +94 -15
- package/dist/prompts/onto/action-design.md +7 -5
- package/dist/prompts/onto/function-design.md +6 -4
- package/dist/prompts/onto/rule-seed.md +4 -2
- package/dist/prompts/onto/script-publish-run.md +19 -19
- package/package.json +1 -1
package/dist/clis/dazi-onto.js
CHANGED
|
@@ -3895,7 +3895,9 @@ function makeObjectCommand() {
|
|
|
3895
3895
|
function makeMcpCommand() {
|
|
3896
3896
|
const cmd = new Command("mcp").description("MCP \u670D\u52A1\uFF08\u672C\u4F53\u4FA7\uFF09");
|
|
3897
3897
|
cmd.command("serve").description("\u4EE5 stdio JSON-RPC \u6A21\u5F0F\u542F\u52A8\u672C\u4F53 MCP \u670D\u52A1").option("--space <spaceId>", "\u9ED8\u8BA4\u7A7A\u95F4 ID").action((opts) => {
|
|
3898
|
-
process.stderr.write(
|
|
3898
|
+
process.stderr.write(
|
|
3899
|
+
"[dazi-onto mcp serve] MCP stdio \u670D\u52A1 \u2014 Phase 5 \u5B8C\u6574\u5B9E\u73B0\n"
|
|
3900
|
+
);
|
|
3899
3901
|
process.stderr.write("\u5F53\u524D\u7248\u672C\u4EC5\u8F93\u51FA\u5360\u4F4D\u54CD\u5E94\n");
|
|
3900
3902
|
process.stdin.setEncoding("utf-8");
|
|
3901
3903
|
process.stdin.on("data", (data) => {
|
|
@@ -3911,7 +3913,7 @@ function makeMcpCommand() {
|
|
|
3911
3913
|
result: {
|
|
3912
3914
|
protocolVersion: "2024-11-05",
|
|
3913
3915
|
capabilities: { tools: {} },
|
|
3914
|
-
serverInfo: { name: "dazi-onto", version: "3.0.
|
|
3916
|
+
serverInfo: { name: "dazi-onto", version: "3.0.2" }
|
|
3915
3917
|
}
|
|
3916
3918
|
};
|
|
3917
3919
|
process.stdout.write(JSON.stringify(response) + "\n");
|
|
@@ -3934,7 +3936,7 @@ function makeMcpCommand() {
|
|
|
3934
3936
|
|
|
3935
3937
|
// cli/dazi-onto/src/index.ts
|
|
3936
3938
|
var program2 = new Command();
|
|
3937
|
-
program2.name("dazi-onto").description("\u642D\u5B50 Onto CLI \u2014 \u672C\u4F53\uFF08Ontology\uFF09\u7BA1\u7406").version("3.0.
|
|
3939
|
+
program2.name("dazi-onto").description("\u642D\u5B50 Onto CLI \u2014 \u672C\u4F53\uFF08Ontology\uFF09\u7BA1\u7406").version("3.0.2", "-v, --version");
|
|
3938
3940
|
program2.addCommand(makeSpaceCommand());
|
|
3939
3941
|
program2.addCommand(makeFunctionCommand());
|
|
3940
3942
|
program2.addCommand(makeActionCommand());
|
package/dist/clis/dazi.js
CHANGED
|
@@ -3959,7 +3959,7 @@ function makeEnvCommand() {
|
|
|
3959
3959
|
return new Command("env").description("\u663E\u793A\u73AF\u5883\u4FE1\u606F").action(() => {
|
|
3960
3960
|
const auth = tryLoadAuth();
|
|
3961
3961
|
const env = {
|
|
3962
|
-
version: "3.0.
|
|
3962
|
+
version: "3.0.2",
|
|
3963
3963
|
node: process.version,
|
|
3964
3964
|
platform: `${import_os5.default.type()} ${import_os5.default.arch()}`,
|
|
3965
3965
|
serverUrl: getServerUrl(),
|
|
@@ -5001,7 +5001,8 @@ function resolveCli(name) {
|
|
|
5001
5001
|
}
|
|
5002
5002
|
function callCli(cliName, args) {
|
|
5003
5003
|
const cliPath = resolveCli(cliName);
|
|
5004
|
-
if (!cliPath)
|
|
5004
|
+
if (!cliPath)
|
|
5005
|
+
return { error: `CLI ${cliName} \u672A\u627E\u5230\uFF0C\u8BF7\u786E\u8BA4 DAZI_BUNDLED_DIR \u5DF2\u8BBE\u7F6E` };
|
|
5005
5006
|
const result = (0, import_child_process.spawnSync)(process.execPath, [cliPath, ...args], {
|
|
5006
5007
|
encoding: "utf-8",
|
|
5007
5008
|
timeout: 3e4,
|
|
@@ -5077,7 +5078,10 @@ var MCP_TOOLS = [
|
|
|
5077
5078
|
inputSchema: {
|
|
5078
5079
|
type: "object",
|
|
5079
5080
|
properties: {
|
|
5080
|
-
id: {
|
|
5081
|
+
id: {
|
|
5082
|
+
type: "string",
|
|
5083
|
+
description: "\u6587\u6863 ID\uFF0C\u5982 guides/quickstart\u3001onto/function-guide"
|
|
5084
|
+
}
|
|
5081
5085
|
},
|
|
5082
5086
|
required: ["id"]
|
|
5083
5087
|
}
|
|
@@ -5103,7 +5107,10 @@ var MCP_TOOLS = [
|
|
|
5103
5107
|
inputSchema: {
|
|
5104
5108
|
type: "object",
|
|
5105
5109
|
properties: {
|
|
5106
|
-
id: {
|
|
5110
|
+
id: {
|
|
5111
|
+
type: "string",
|
|
5112
|
+
description: "\u63D0\u793A\u8BCD ID\uFF0C\u5982 onto/function-design"
|
|
5113
|
+
}
|
|
5107
5114
|
},
|
|
5108
5115
|
required: ["id"]
|
|
5109
5116
|
}
|
|
@@ -5186,7 +5193,10 @@ var MCP_TOOLS = [
|
|
|
5186
5193
|
type: "object",
|
|
5187
5194
|
properties: {
|
|
5188
5195
|
space_id: { type: "string" },
|
|
5189
|
-
script_type: {
|
|
5196
|
+
script_type: {
|
|
5197
|
+
type: "string",
|
|
5198
|
+
description: "\u811A\u672C\u7C7B\u578B\uFF08\u5982 ontology_function\uFF09"
|
|
5199
|
+
}
|
|
5190
5200
|
},
|
|
5191
5201
|
required: ["space_id"]
|
|
5192
5202
|
}
|
|
@@ -5210,7 +5220,10 @@ var MCP_TOOLS = [
|
|
|
5210
5220
|
type: "object",
|
|
5211
5221
|
properties: {
|
|
5212
5222
|
space_id: { type: "string", description: "\u6309\u7A7A\u95F4\u8FC7\u6EE4\uFF08\u53EF\u9009\uFF09" },
|
|
5213
|
-
status: {
|
|
5223
|
+
status: {
|
|
5224
|
+
type: "string",
|
|
5225
|
+
description: "\u6309\u72B6\u6001\u8FC7\u6EE4\uFF08active/draft/archived\uFF09"
|
|
5226
|
+
}
|
|
5214
5227
|
}
|
|
5215
5228
|
}
|
|
5216
5229
|
},
|
|
@@ -5233,7 +5246,10 @@ var MCP_TOOLS = [
|
|
|
5233
5246
|
properties: {
|
|
5234
5247
|
flow_id: { type: "string" },
|
|
5235
5248
|
limit: { type: "number", description: "\u6700\u591A\u8FD4\u56DE\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09" },
|
|
5236
|
-
status: {
|
|
5249
|
+
status: {
|
|
5250
|
+
type: "string",
|
|
5251
|
+
description: "\u6309\u72B6\u6001\u8FC7\u6EE4\uFF08running/success/failed\uFF09"
|
|
5252
|
+
}
|
|
5237
5253
|
},
|
|
5238
5254
|
required: ["flow_id"]
|
|
5239
5255
|
}
|
|
@@ -5257,7 +5273,10 @@ var MCP_TOOLS = [
|
|
|
5257
5273
|
type: "object",
|
|
5258
5274
|
properties: {
|
|
5259
5275
|
flow_id: { type: "string" },
|
|
5260
|
-
run_id: {
|
|
5276
|
+
run_id: {
|
|
5277
|
+
type: "string",
|
|
5278
|
+
description: "\u6307\u5B9A Run ID\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u6700\u8FD1\u4E00\u6B21\uFF09"
|
|
5279
|
+
}
|
|
5261
5280
|
},
|
|
5262
5281
|
required: ["flow_id"]
|
|
5263
5282
|
}
|
|
@@ -5366,27 +5385,33 @@ function handleToolCall(name, args) {
|
|
|
5366
5385
|
switch (name) {
|
|
5367
5386
|
case "list_docs": {
|
|
5368
5387
|
let docs = loadDocs();
|
|
5369
|
-
if (args.category)
|
|
5388
|
+
if (args.category)
|
|
5389
|
+
docs = docs.filter((d) => d.category === args.category);
|
|
5370
5390
|
return json(docs);
|
|
5371
5391
|
}
|
|
5372
5392
|
case "get_doc": {
|
|
5373
5393
|
const root = resolveBundledRoot();
|
|
5374
5394
|
if (!root) return err("DAZI_BUNDLED_DIR \u672A\u8BBE\u7F6E");
|
|
5375
5395
|
const entry = loadDocs().find((d) => d.id === String(args.id));
|
|
5376
|
-
if (!entry)
|
|
5396
|
+
if (!entry)
|
|
5397
|
+
return err(`\u6587\u6863\u672A\u627E\u5230: ${args.id}\uFF08\u4F7F\u7528 list_docs \u67E5\u770B\u53EF\u7528\u6587\u6863\uFF09`);
|
|
5377
5398
|
const content = readFile(import_path10.default.join(root, "docs", entry.file));
|
|
5378
5399
|
return content ? text(content) : err(`\u6587\u6863\u6587\u4EF6\u4E0D\u5B58\u5728: ${entry.file}`);
|
|
5379
5400
|
}
|
|
5380
5401
|
case "list_prompts": {
|
|
5381
5402
|
let prompts = loadPrompts();
|
|
5382
|
-
if (args.category)
|
|
5403
|
+
if (args.category)
|
|
5404
|
+
prompts = prompts.filter((p) => p.category === args.category);
|
|
5383
5405
|
return json(prompts);
|
|
5384
5406
|
}
|
|
5385
5407
|
case "get_prompt": {
|
|
5386
5408
|
const root = resolveBundledRoot();
|
|
5387
5409
|
if (!root) return err("DAZI_BUNDLED_DIR \u672A\u8BBE\u7F6E");
|
|
5388
5410
|
const entry = loadPrompts().find((p) => p.id === String(args.id));
|
|
5389
|
-
if (!entry)
|
|
5411
|
+
if (!entry)
|
|
5412
|
+
return err(
|
|
5413
|
+
`\u63D0\u793A\u8BCD\u672A\u627E\u5230: ${args.id}\uFF08\u4F7F\u7528 list_prompts \u67E5\u770B\u53EF\u7528\u63D0\u793A\u8BCD\uFF09`
|
|
5414
|
+
);
|
|
5390
5415
|
const content = readFile(import_path10.default.join(root, "prompts", entry.file));
|
|
5391
5416
|
return content ? text(content) : err(`\u63D0\u793A\u8BCD\u6587\u4EF6\u4E0D\u5B58\u5728: ${entry.file}`);
|
|
5392
5417
|
}
|
|
@@ -5399,11 +5424,22 @@ function handleToolCall(name, args) {
|
|
|
5399
5424
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5400
5425
|
}
|
|
5401
5426
|
case "onto_list_functions": {
|
|
5402
|
-
const data = callCli("dazi-onto", [
|
|
5427
|
+
const data = callCli("dazi-onto", [
|
|
5428
|
+
"function",
|
|
5429
|
+
"list",
|
|
5430
|
+
"--space",
|
|
5431
|
+
String(args.space_id)
|
|
5432
|
+
]);
|
|
5403
5433
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5404
5434
|
}
|
|
5405
5435
|
case "onto_get_function": {
|
|
5406
|
-
const data = callCli("dazi-onto", [
|
|
5436
|
+
const data = callCli("dazi-onto", [
|
|
5437
|
+
"function",
|
|
5438
|
+
"get",
|
|
5439
|
+
String(args.function_id),
|
|
5440
|
+
"--space",
|
|
5441
|
+
String(args.space_id)
|
|
5442
|
+
]);
|
|
5407
5443
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5408
5444
|
}
|
|
5409
5445
|
case "onto_run_function": {
|
|
@@ -5420,23 +5456,43 @@ function handleToolCall(name, args) {
|
|
|
5420
5456
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5421
5457
|
}
|
|
5422
5458
|
case "onto_list_actions": {
|
|
5423
|
-
const data = callCli("dazi-onto", [
|
|
5459
|
+
const data = callCli("dazi-onto", [
|
|
5460
|
+
"action",
|
|
5461
|
+
"list",
|
|
5462
|
+
"--space",
|
|
5463
|
+
String(args.space_id)
|
|
5464
|
+
]);
|
|
5424
5465
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5425
5466
|
}
|
|
5426
5467
|
case "onto_list_rules": {
|
|
5427
|
-
const ruleArgs = [
|
|
5468
|
+
const ruleArgs = [
|
|
5469
|
+
"rule",
|
|
5470
|
+
"list",
|
|
5471
|
+
"--space",
|
|
5472
|
+
String(args.space_id)
|
|
5473
|
+
];
|
|
5428
5474
|
if (args.rule_set) ruleArgs.push("--rule-set", String(args.rule_set));
|
|
5429
5475
|
const data = callCli("dazi-onto", ruleArgs);
|
|
5430
5476
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5431
5477
|
}
|
|
5432
5478
|
case "onto_list_scripts": {
|
|
5433
|
-
const scriptArgs = [
|
|
5479
|
+
const scriptArgs = [
|
|
5480
|
+
"script",
|
|
5481
|
+
"list",
|
|
5482
|
+
"--space",
|
|
5483
|
+
String(args.space_id)
|
|
5484
|
+
];
|
|
5434
5485
|
if (args.script_type) scriptArgs.push("--type", String(args.script_type));
|
|
5435
5486
|
const data = callCli("dazi-onto", scriptArgs);
|
|
5436
5487
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5437
5488
|
}
|
|
5438
5489
|
case "onto_space_snapshot": {
|
|
5439
|
-
const data = callCli("dazi-onto", [
|
|
5490
|
+
const data = callCli("dazi-onto", [
|
|
5491
|
+
"space",
|
|
5492
|
+
"snapshot",
|
|
5493
|
+
"--space-id",
|
|
5494
|
+
String(args.space_id)
|
|
5495
|
+
]);
|
|
5440
5496
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5441
5497
|
}
|
|
5442
5498
|
case "flow_list_flows": {
|
|
@@ -5464,7 +5520,13 @@ function handleToolCall(name, args) {
|
|
|
5464
5520
|
}
|
|
5465
5521
|
case "flow_start_run": {
|
|
5466
5522
|
const input = args.input ? JSON.stringify(args.input) : "{}";
|
|
5467
|
-
const data = callCli("dazi-flow", [
|
|
5523
|
+
const data = callCli("dazi-flow", [
|
|
5524
|
+
"run",
|
|
5525
|
+
"start",
|
|
5526
|
+
String(args.flow_id),
|
|
5527
|
+
"--input",
|
|
5528
|
+
input
|
|
5529
|
+
]);
|
|
5468
5530
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5469
5531
|
}
|
|
5470
5532
|
case "flow_debug_run": {
|
|
@@ -5486,17 +5548,31 @@ function handleToolCall(name, args) {
|
|
|
5486
5548
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5487
5549
|
}
|
|
5488
5550
|
case "flow_table_structure": {
|
|
5489
|
-
const strArgs = [
|
|
5551
|
+
const strArgs = [
|
|
5552
|
+
"source",
|
|
5553
|
+
"table-structure",
|
|
5554
|
+
String(args.source_id),
|
|
5555
|
+
String(args.table_name)
|
|
5556
|
+
];
|
|
5490
5557
|
if (args.schema) strArgs.push("--schema", String(args.schema));
|
|
5491
5558
|
const data = callCli("dazi-flow", strArgs);
|
|
5492
5559
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5493
5560
|
}
|
|
5494
5561
|
case "flow_snapshot_pull": {
|
|
5495
|
-
const data = callCli("dazi-flow", [
|
|
5562
|
+
const data = callCli("dazi-flow", [
|
|
5563
|
+
"snapshot",
|
|
5564
|
+
"pull",
|
|
5565
|
+
"--flow",
|
|
5566
|
+
String(args.flow_id)
|
|
5567
|
+
]);
|
|
5496
5568
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5497
5569
|
}
|
|
5498
5570
|
case "flow_plan_llm_guide": {
|
|
5499
|
-
const data = callCli("dazi-flow", [
|
|
5571
|
+
const data = callCli("dazi-flow", [
|
|
5572
|
+
"plan",
|
|
5573
|
+
"llm-guide",
|
|
5574
|
+
String(args.flow_id)
|
|
5575
|
+
]);
|
|
5500
5576
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5501
5577
|
}
|
|
5502
5578
|
case "data_list_spaces": {
|
|
@@ -5504,7 +5580,13 @@ function handleToolCall(name, args) {
|
|
|
5504
5580
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5505
5581
|
}
|
|
5506
5582
|
case "data_list_tables": {
|
|
5507
|
-
const data = callCli("dazi", [
|
|
5583
|
+
const data = callCli("dazi", [
|
|
5584
|
+
"data",
|
|
5585
|
+
"table",
|
|
5586
|
+
"list",
|
|
5587
|
+
"--space",
|
|
5588
|
+
String(args.space_id)
|
|
5589
|
+
]);
|
|
5508
5590
|
return "error" in data ? err(String(data.error)) : json(data);
|
|
5509
5591
|
}
|
|
5510
5592
|
case "data_table_schema": {
|
|
@@ -5547,7 +5629,7 @@ function dispatch(msg) {
|
|
|
5547
5629
|
result: {
|
|
5548
5630
|
protocolVersion: "2024-11-05",
|
|
5549
5631
|
capabilities: { tools: {} },
|
|
5550
|
-
serverInfo: { name: "dazi", version: "3.0.
|
|
5632
|
+
serverInfo: { name: "dazi", version: "3.0.2" }
|
|
5551
5633
|
}
|
|
5552
5634
|
};
|
|
5553
5635
|
case "initialized":
|
|
@@ -5561,7 +5643,11 @@ function dispatch(msg) {
|
|
|
5561
5643
|
const result = handleToolCall(toolName, toolArgs);
|
|
5562
5644
|
return { jsonrpc: "2.0", id, result };
|
|
5563
5645
|
} catch (e) {
|
|
5564
|
-
return {
|
|
5646
|
+
return {
|
|
5647
|
+
jsonrpc: "2.0",
|
|
5648
|
+
id,
|
|
5649
|
+
result: err(e instanceof Error ? e.message : String(e))
|
|
5650
|
+
};
|
|
5565
5651
|
}
|
|
5566
5652
|
}
|
|
5567
5653
|
case "ping":
|
|
@@ -5575,20 +5661,32 @@ function dispatch(msg) {
|
|
|
5575
5661
|
}
|
|
5576
5662
|
}
|
|
5577
5663
|
function makeMcpCommand() {
|
|
5578
|
-
const cmd = new Command("mcp").description(
|
|
5579
|
-
|
|
5664
|
+
const cmd = new Command("mcp").description(
|
|
5665
|
+
"MCP \u670D\u52A1\uFF08\u805A\u5408\uFF1Aonto + flow + data + docs + prompts\uFF09"
|
|
5666
|
+
);
|
|
5667
|
+
cmd.command("stdio").description(
|
|
5668
|
+
"\u4EE5 stdio JSON-RPC \u6A21\u5F0F\u542F\u52A8\u642D\u5B50\u805A\u5408 MCP\uFF08\u4F9B Cursor/Claude \u8C03\u7528\uFF09"
|
|
5669
|
+
).action(() => {
|
|
5580
5670
|
const docs = loadDocs().length;
|
|
5581
5671
|
const prompts = loadPrompts().length;
|
|
5582
|
-
process.stderr.write(
|
|
5583
|
-
`
|
|
5672
|
+
process.stderr.write(
|
|
5673
|
+
`[dazi mcp stdio] \u642D\u5B50\u805A\u5408 MCP \u5DF2\u542F\u52A8 \u2014 ${MCP_TOOLS.length} \u4E2A\u5DE5\u5177
|
|
5674
|
+
`
|
|
5675
|
+
);
|
|
5584
5676
|
process.stderr.write(` \u6587\u6863: ${docs} \u7BC7 \u63D0\u793A\u8BCD: ${prompts} \u7BC7
|
|
5585
5677
|
`);
|
|
5586
|
-
process.stderr.write(
|
|
5587
|
-
`)
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
process.stderr.write(
|
|
5591
|
-
`)
|
|
5678
|
+
process.stderr.write(
|
|
5679
|
+
` onto: ${MCP_TOOLS.filter((t) => t.name.startsWith("onto_")).length} \u4E2A\u5DE5\u5177
|
|
5680
|
+
`
|
|
5681
|
+
);
|
|
5682
|
+
process.stderr.write(
|
|
5683
|
+
` flow: ${MCP_TOOLS.filter((t) => t.name.startsWith("flow_")).length} \u4E2A\u5DE5\u5177
|
|
5684
|
+
`
|
|
5685
|
+
);
|
|
5686
|
+
process.stderr.write(
|
|
5687
|
+
` data: ${MCP_TOOLS.filter((t) => t.name.startsWith("data_")).length} \u4E2A\u5DE5\u5177
|
|
5688
|
+
`
|
|
5689
|
+
);
|
|
5592
5690
|
let buffer = "";
|
|
5593
5691
|
process.stdin.setEncoding("utf-8");
|
|
5594
5692
|
process.stdin.on("data", (chunk) => {
|
|
@@ -5615,7 +5713,8 @@ function makeMcpCommand() {
|
|
|
5615
5713
|
let tools = MCP_TOOLS;
|
|
5616
5714
|
if (opts.category) {
|
|
5617
5715
|
tools = tools.filter((t) => {
|
|
5618
|
-
if (opts.category === "docs")
|
|
5716
|
+
if (opts.category === "docs")
|
|
5717
|
+
return t.name.startsWith("list_docs") || t.name.startsWith("get_doc") || t.name.startsWith("list_prompts") || t.name.startsWith("get_prompt");
|
|
5619
5718
|
return t.name.startsWith(`${opts.category}_`);
|
|
5620
5719
|
});
|
|
5621
5720
|
}
|
|
@@ -5644,14 +5743,16 @@ function forwardToCli(cliName, extraArgs) {
|
|
|
5644
5743
|
const bundled = resolveBundledCli(cliName);
|
|
5645
5744
|
let result;
|
|
5646
5745
|
if (bundled) {
|
|
5647
|
-
result = (0, import_child_process2.spawnSync)(process.execPath, [bundled, ...extraArgs], {
|
|
5746
|
+
result = (0, import_child_process2.spawnSync)(process.execPath, [bundled, ...extraArgs], {
|
|
5747
|
+
stdio: "inherit"
|
|
5748
|
+
});
|
|
5648
5749
|
} else {
|
|
5649
5750
|
result = (0, import_child_process2.spawnSync)(cliName, extraArgs, { stdio: "inherit", shell: true });
|
|
5650
5751
|
}
|
|
5651
5752
|
process.exit(result.status ?? 1);
|
|
5652
5753
|
}
|
|
5653
5754
|
var program2 = new Command();
|
|
5654
|
-
program2.name("dazi").description("\u642D\u5B50 v3 \u2014 Onto / Flow / App \u7EDF\u4E00 CLI").version("3.0.
|
|
5755
|
+
program2.name("dazi").description("\u642D\u5B50 v3 \u2014 Onto / Flow / App \u7EDF\u4E00 CLI").version("3.0.2", "-v, --version");
|
|
5655
5756
|
program2.addCommand(makeAuthCommand());
|
|
5656
5757
|
program2.addCommand(makeDoctorCommand());
|
|
5657
5758
|
program2.addCommand(makeEnvCommand());
|
|
@@ -5,28 +5,28 @@
|
|
|
5
5
|
|
|
6
6
|
## 推荐:扩展创建
|
|
7
7
|
|
|
8
|
-
| 场景
|
|
9
|
-
|
|
10
|
-
| 新建 monorepo + 首个组件 | 侧栏 **新建项目** → **应用项目** → **新建应用项目**
|
|
11
|
-
| 已有项目加组件
|
|
8
|
+
| 场景 | 操作 |
|
|
9
|
+
| ------------------------ | -------------------------------------------------------------------- |
|
|
10
|
+
| 新建 monorepo + 首个组件 | 侧栏 **新建项目** → **应用项目** → **新建应用项目** |
|
|
11
|
+
| 已有项目加组件 | **新建项目** → **在已有项目下新建组件**,或 `dazi.app.component.new` |
|
|
12
12
|
|
|
13
13
|
生成目录:`项目/app_<名称>/apps/<app_id>/`(含 `manifest.json`、`src/`、`drap-assets/` 等)。
|
|
14
14
|
|
|
15
15
|
## CLI:从模板创建
|
|
16
16
|
|
|
17
|
-
**推荐**:在 **`dazi-work` 根目录**执行
|
|
17
|
+
**推荐**:在 **`dazi-work` 根目录**执行 `dazi app …`(脚本会自动设置 `DAZI_BUNDLED_DIR`,避免「未找到 bundled CLI」):
|
|
18
18
|
|
|
19
19
|
```powershell
|
|
20
20
|
cd D:\path\to\dazi-work
|
|
21
21
|
|
|
22
22
|
# 从模板创建(--dir 相对 dazi-work 根)
|
|
23
|
-
|
|
23
|
+
dazi app init <template-id> --space <space-id> --dir 项目/app_<名>/apps/<app-id>
|
|
24
24
|
|
|
25
25
|
# 查看可用模板(含平台「转为应用模板」的动态模板)
|
|
26
|
-
|
|
26
|
+
dazi app templates list --remote
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
**可选**:在**应用项目根**(`项目/app_<名称>/`,含 `sdk/`、`templates/`)使用 `pnpm run dazi-app -- …`。若报「未找到 bundled CLI」,需将 `DAZI_BUNDLED_DIR` 指向扩展或 `tools/dazi-clis` 下的 `bundled/clis`,或改用上方
|
|
29
|
+
**可选**:在**应用项目根**(`项目/app_<名称>/`,含 `sdk/`、`templates/`)使用 `pnpm run dazi-app -- …`。若报「未找到 bundled CLI」,需将 `DAZI_BUNDLED_DIR` 指向扩展或 `tools/dazi-clis` 下的 `bundled/clis`,或改用上方 `dazi app`。
|
|
30
30
|
|
|
31
31
|
`template-id` 对应 `templates/app-template-*` 目录短名(如 `alarm-center` → `app-template-alarm-center`)。
|
|
32
32
|
|
|
@@ -47,12 +47,12 @@ cd D:\path\to\dazi-work
|
|
|
47
47
|
|
|
48
48
|
`manifest.json` 定义应用与平台的绑定关系,常用字段:
|
|
49
49
|
|
|
50
|
-
| 字段
|
|
51
|
-
|
|
52
|
-
| `appId`
|
|
53
|
-
| `permissions`
|
|
54
|
-
| `data_sources[]` | 数据集 key + kind
|
|
55
|
-
| `mount`
|
|
50
|
+
| 字段 | 说明 |
|
|
51
|
+
| ---------------- | -------------------------- |
|
|
52
|
+
| `appId` | Registry 全局唯一 ID |
|
|
53
|
+
| `permissions` | 至少 `dataspace:<spaceId>` |
|
|
54
|
+
| `data_sources[]` | 数据集 key + kind |
|
|
55
|
+
| `mount` | `page` 或 `chat_result` |
|
|
56
56
|
|
|
57
57
|
扩展 **配置 manifest 数据源**(`dazi.app.editDataSources`)可图形化编辑 `data_sources`。
|
|
58
58
|
|
|
@@ -60,7 +60,7 @@ cd D:\path\to\dazi-work
|
|
|
60
60
|
|
|
61
61
|
```powershell
|
|
62
62
|
# 在 dazi-work 根
|
|
63
|
-
|
|
63
|
+
dazi app manifest validate --cwd 项目/app_<名>/apps/<app-id> --scan-src
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
## 相关文档
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
## 工作目录
|
|
7
7
|
|
|
8
|
-
| 操作
|
|
9
|
-
|
|
10
|
-
|
|
|
11
|
-
| `pnpm run dazi-app`(可选)
|
|
12
|
-
| `pnpm run dev` / `build`
|
|
13
|
-
| 扩展「构建并发布」
|
|
8
|
+
| 操作 | 目录 |
|
|
9
|
+
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
10
|
+
| `dazi app …`(init、upload、release 等) | **`dazi-work` 根**;路径用 `--cwd 项目/app_<名>/apps/<app_id>`(相对工作区根) |
|
|
11
|
+
| `pnpm run dazi-app`(可选) | **应用项目根**(含 `sdk/`、`templates/`);需正确设置 `DAZI_BUNDLED_DIR`,否则易报「未找到 bundled CLI」 |
|
|
12
|
+
| `pnpm run dev` / `build` | **应用组件目录** `apps/<app_id>/` |
|
|
13
|
+
| 扩展「构建并发布」 | 在侧栏选中**应用组件**节点,无需手填路径 |
|
|
14
14
|
|
|
15
15
|
发布前确认扩展登录与 **发布目标 API**(`dazi.serverUrl` / `~/.dazi/auth.json`)一致。
|
|
16
16
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
pnpm run dev
|
|
23
|
-
# 或(在 dazi-work
|
|
23
|
+
# 或(在 dazi-work 根):dazi app dev --cwd 项目/app_<名>/apps/<app_id>
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## 构建
|
|
@@ -39,13 +39,13 @@ pnpm run build
|
|
|
39
39
|
cd D:\path\to\dazi-work
|
|
40
40
|
|
|
41
41
|
# 上传到指定空间
|
|
42
|
-
|
|
42
|
+
dazi app upload --cwd 项目/app_<名>/apps/<app_id> --space <space-id>
|
|
43
43
|
|
|
44
44
|
# 上传并立即激活
|
|
45
|
-
|
|
45
|
+
dazi app upload --cwd 项目/app_<名>/apps/<app_id> --space <space-id> --activate
|
|
46
46
|
|
|
47
47
|
# 带更新日志
|
|
48
|
-
|
|
48
|
+
dazi app upload --cwd 项目/app_<名>/apps/<app_id> --space <space-id> --changelog "修复了 #123 问题"
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
等价写法(须在应用项目根且已配置 `DAZI_BUNDLED_DIR`):`pnpm run dazi-app -- upload --cwd apps/<app_id> --space <space-id>`。
|
|
@@ -55,9 +55,9 @@ cd D:\path\to\dazi-work
|
|
|
55
55
|
## 本地预览(上传前)
|
|
56
56
|
|
|
57
57
|
```powershell
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
dazi app preview all --cwd 项目/app_<名>/apps/<app_id>
|
|
59
|
+
dazi app preview sql --cwd 项目/app_<名>/apps/<app_id>
|
|
60
|
+
dazi app preview script --cwd 项目/app_<名>/apps/<app_id>
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
## 相关文档
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 应用发布管理
|
|
2
2
|
|
|
3
3
|
**文档 ID**: `app/release-guide`
|
|
4
|
-
**适用**:在 **`dazi-work` 根**通过
|
|
4
|
+
**适用**:在 **`dazi-work` 根**通过 `dazi app …` 管理发布;`--cwd` 指向 `项目/app_<名>/apps/<app_id>/`。
|
|
5
5
|
|
|
6
6
|
场景实践:[主要财务指标复杂报表开发实践](./主要财务指标复杂报表开发实践.md)(模板 `financial-indicators-complex-report`)。
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
cd D:\path\to\dazi-work
|
|
10
10
|
|
|
11
11
|
# 查看某应用的发布版本
|
|
12
|
-
|
|
12
|
+
dazi app release list <app-id> --cwd 项目/app_<名>/apps/<app-id>
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
扩展 **构建并发布** 会调用同一套 API;发布目标由 `dazi.serverUrl` / `~/.dazi/auth.json` 决定(见 §333)。
|
|
@@ -17,19 +17,19 @@ cd D:\path\to\dazi-work
|
|
|
17
17
|
## 查看发布版本
|
|
18
18
|
|
|
19
19
|
```powershell
|
|
20
|
-
|
|
20
|
+
dazi app release list <app-id> --cwd 项目/app_<名>/apps/<app-id>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## 激活指定版本
|
|
24
24
|
|
|
25
25
|
```powershell
|
|
26
|
-
|
|
26
|
+
dazi app release activate <app-id> --semver 1.2.0 --cwd 项目/app_<名>/apps/<app-id>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
## 撤回版本
|
|
30
30
|
|
|
31
31
|
```powershell
|
|
32
|
-
|
|
32
|
+
dazi app release revoke <app-id> --semver 1.2.0 --cwd 项目/app_<名>/apps/<app-id>
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## 版本号规范
|
|
@@ -43,9 +43,9 @@ cd D:\path\to\dazi-work
|
|
|
43
43
|
## 资源管理
|
|
44
44
|
|
|
45
45
|
```powershell
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
dazi app asset list --cwd 项目/app_<名>/apps/<app-id>
|
|
47
|
+
dazi app asset new-sql --cwd 项目/app_<名>/apps/<app-id>
|
|
48
|
+
dazi app asset new-script --cwd 项目/app_<名>/apps/<app-id>
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
> **说明**:亦可在应用项目根使用 `pnpm run dazi-app -- release list …` 等等价命令,但需先配置 `DAZI_BUNDLED_DIR`;推荐统一使用
|
|
51
|
+
> **说明**:亦可在应用项目根使用 `pnpm run dazi-app -- release list …` 等等价命令,但需先配置 `DAZI_BUNDLED_DIR`;推荐统一使用 `dazi app`。
|