@kweaver-ai/kweaver-sdk 0.8.1 → 0.8.3
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 +40 -52
- package/README.zh.md +41 -46
- package/dist/agent-providers/index.d.ts +7 -0
- package/dist/agent-providers/index.js +5 -0
- package/dist/agent-providers/prompt-template.d.ts +62 -0
- package/dist/agent-providers/prompt-template.js +105 -0
- package/dist/agent-providers/prompts/rubric-judge-v1.prompt.md +51 -0
- package/dist/agent-providers/prompts/within-trace-synthesizer-v1.prompt.md +60 -0
- package/dist/agent-providers/providers/claude-code-subprocess.d.ts +74 -0
- package/dist/agent-providers/providers/claude-code-subprocess.js +259 -0
- package/dist/agent-providers/providers/stub.d.ts +47 -0
- package/dist/agent-providers/providers/stub.js +77 -0
- package/dist/agent-providers/registry.d.ts +45 -0
- package/dist/agent-providers/registry.js +77 -0
- package/dist/agent-providers/types.d.ts +91 -0
- package/dist/agent-providers/types.js +25 -0
- package/dist/api/agent-chat.js +8 -6
- package/dist/api/context-loader.d.ts +1 -0
- package/dist/api/resources.d.ts +94 -0
- package/dist/api/resources.js +166 -0
- package/dist/api/semantic-search.d.ts +5 -0
- package/dist/api/semantic-search.js +5 -0
- package/dist/api/skills.d.ts +75 -2
- package/dist/api/skills.js +108 -12
- package/dist/api/trace.d.ts +5 -0
- package/dist/api/trace.js +4 -0
- package/dist/cli.js +109 -15
- package/dist/client.d.ts +3 -3
- package/dist/client.js +5 -5
- package/dist/commands/agent/mode.d.ts +6 -0
- package/dist/commands/agent/mode.js +75 -0
- package/dist/commands/agent-members.js +27 -11
- package/dist/commands/agent.js +469 -286
- package/dist/commands/auth.js +184 -71
- package/dist/commands/bkn-metric.js +37 -16
- package/dist/commands/bkn-ops.js +164 -86
- package/dist/commands/bkn-query.js +99 -31
- package/dist/commands/bkn-schema.d.ts +3 -3
- package/dist/commands/bkn-schema.js +127 -86
- package/dist/commands/bkn.js +153 -114
- package/dist/commands/call.js +23 -13
- package/dist/commands/config.js +22 -12
- package/dist/commands/context-loader.js +625 -49
- package/dist/commands/dataflow.js +14 -6
- package/dist/commands/ds.js +52 -30
- package/dist/commands/explore.js +18 -15
- package/dist/commands/model.js +53 -42
- package/dist/commands/resource.d.ts +1 -0
- package/dist/commands/{dataview.js → resource.js} +62 -84
- package/dist/commands/skill.d.ts +21 -1
- package/dist/commands/skill.js +567 -43
- package/dist/commands/token.js +11 -0
- package/dist/commands/tool.js +46 -29
- package/dist/commands/toolbox.js +31 -15
- package/dist/commands/trace.d.ts +26 -1
- package/dist/commands/trace.js +515 -15
- package/dist/commands/vega.js +466 -250
- package/dist/help/format.d.ts +65 -0
- package/dist/help/format.js +141 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +3 -3
- package/dist/resources/bkn.d.ts +5 -0
- package/dist/resources/bkn.js +5 -0
- package/dist/resources/{dataviews.d.ts → resources.d.ts} +10 -11
- package/dist/resources/{dataviews.js → resources.js} +12 -13
- package/dist/resources/skills.d.ts +17 -1
- package/dist/resources/skills.js +32 -1
- package/dist/trace-ai/diagnose/agent-binding.d.ts +67 -0
- package/dist/trace-ai/diagnose/agent-binding.js +257 -0
- package/dist/trace-ai/diagnose/builtin-rules/tool-retry-intent-mismatch.yaml +68 -0
- package/dist/trace-ai/diagnose/index.d.ts +32 -0
- package/dist/trace-ai/diagnose/index.js +246 -0
- package/dist/trace-ai/diagnose/output-schema-converter.d.ts +24 -0
- package/dist/trace-ai/diagnose/output-schema-converter.js +81 -0
- package/dist/trace-ai/diagnose/query-extractor.d.ts +14 -0
- package/dist/trace-ai/diagnose/query-extractor.js +45 -0
- package/dist/trace-ai/diagnose/report-assembler.d.ts +31 -0
- package/dist/{trace-core → trace-ai}/diagnose/report-assembler.js +19 -9
- package/dist/trace-ai/diagnose/report-markdown.d.ts +18 -0
- package/dist/trace-ai/diagnose/report-markdown.js +192 -0
- package/dist/{trace-core → trace-ai}/diagnose/rule-loader.js +42 -8
- package/dist/{trace-core → trace-ai}/diagnose/schemas.d.ts +77 -2
- package/dist/trace-ai/diagnose/schemas.js +154 -0
- package/dist/trace-ai/diagnose/signal-probe.d.ts +17 -0
- package/dist/trace-ai/diagnose/signal-probe.js +39 -0
- package/dist/trace-ai/diagnose/synthesizer-agent.d.ts +40 -0
- package/dist/trace-ai/diagnose/synthesizer-agent.js +158 -0
- package/dist/{trace-core → trace-ai}/diagnose/trace-shaper.js +1 -0
- package/dist/{trace-core → trace-ai}/diagnose/types.d.ts +55 -6
- package/dist/trace-ai/eval-set/assertion-evaluator.d.ts +29 -0
- package/dist/trace-ai/eval-set/assertion-evaluator.js +100 -0
- package/dist/trace-ai/eval-set/builder.d.ts +36 -0
- package/dist/trace-ai/eval-set/builder.js +126 -0
- package/dist/trace-ai/eval-set/index.d.ts +15 -0
- package/dist/trace-ai/eval-set/index.js +10 -0
- package/dist/trace-ai/eval-set/output-writer.d.ts +27 -0
- package/dist/trace-ai/eval-set/output-writer.js +126 -0
- package/dist/trace-ai/eval-set/query-picker.d.ts +37 -0
- package/dist/trace-ai/eval-set/query-picker.js +147 -0
- package/dist/trace-ai/eval-set/redactor.d.ts +42 -0
- package/dist/trace-ai/eval-set/redactor.js +133 -0
- package/dist/trace-ai/eval-set/rubric-templates/answer-match-reference.prompt.md +19 -0
- package/dist/trace-ai/eval-set/schemas.d.ts +136 -0
- package/dist/trace-ai/eval-set/schemas.js +130 -0
- package/dist/trace-ai/eval-set/semantic-match-provider.d.ts +33 -0
- package/dist/trace-ai/eval-set/semantic-match-provider.js +51 -0
- package/dist/trace-ai/eval-set/test-runner.d.ts +34 -0
- package/dist/trace-ai/eval-set/test-runner.js +153 -0
- package/dist/trace-ai/eval-set/types.d.ts +46 -0
- package/dist/trace-ai/eval-set/types.js +8 -0
- package/dist/trace-ai/exp/bundle-writer.d.ts +10 -0
- package/dist/trace-ai/exp/bundle-writer.js +54 -0
- package/dist/trace-ai/exp/claude-binary.d.ts +5 -0
- package/dist/trace-ai/exp/claude-binary.js +30 -0
- package/dist/trace-ai/exp/coordinator.d.ts +45 -0
- package/dist/trace-ai/exp/coordinator.js +203 -0
- package/dist/trace-ai/exp/eval-runner.d.ts +14 -0
- package/dist/trace-ai/exp/eval-runner.js +47 -0
- package/dist/trace-ai/exp/exp-store/abort-signal.d.ts +3 -0
- package/dist/trace-ai/exp/exp-store/abort-signal.js +27 -0
- package/dist/trace-ai/exp/exp-store/candidate-lineage-yaml.d.ts +4 -0
- package/dist/trace-ai/exp/exp-store/candidate-lineage-yaml.js +37 -0
- package/dist/trace-ai/exp/exp-store/events-jsonl.d.ts +17 -0
- package/dist/trace-ai/exp/exp-store/events-jsonl.js +60 -0
- package/dist/trace-ai/exp/exp-store/exp-registry.d.ts +6 -0
- package/dist/trace-ai/exp/exp-store/exp-registry.js +41 -0
- package/dist/trace-ai/exp/exp-store/index.d.ts +46 -0
- package/dist/trace-ai/exp/exp-store/index.js +59 -0
- package/dist/trace-ai/exp/exp-store/lock.d.ts +3 -0
- package/dist/trace-ai/exp/exp-store/lock.js +73 -0
- package/dist/trace-ai/exp/exp-store/mission-md.d.ts +3 -0
- package/dist/trace-ai/exp/exp-store/mission-md.js +37 -0
- package/dist/trace-ai/exp/exp-store/readme-template.d.ts +5 -0
- package/dist/trace-ai/exp/exp-store/readme-template.js +25 -0
- package/dist/trace-ai/exp/exp-store/round-yaml.d.ts +3 -0
- package/dist/trace-ai/exp/exp-store/round-yaml.js +33 -0
- package/dist/trace-ai/exp/index.d.ts +8 -0
- package/dist/trace-ai/exp/index.js +238 -0
- package/dist/trace-ai/exp/info.d.ts +35 -0
- package/dist/trace-ai/exp/info.js +120 -0
- package/dist/trace-ai/exp/patch/agent-config.d.ts +1 -0
- package/dist/trace-ai/exp/patch/agent-config.js +26 -0
- package/dist/trace-ai/exp/patch/index.d.ts +2 -0
- package/dist/trace-ai/exp/patch/index.js +13 -0
- package/dist/trace-ai/exp/patch/skill.d.ts +1 -0
- package/dist/trace-ai/exp/patch/skill.js +24 -0
- package/dist/trace-ai/exp/providers/synthesizer-client.d.ts +14 -0
- package/dist/trace-ai/exp/providers/synthesizer-client.js +39 -0
- package/dist/trace-ai/exp/providers/triage-client.d.ts +19 -0
- package/dist/trace-ai/exp/providers/triage-client.js +51 -0
- package/dist/trace-ai/exp/schemas.d.ts +147 -0
- package/dist/trace-ai/exp/schemas.js +50 -0
- package/dist/trace-ai/exp/scoring.d.ts +2 -0
- package/dist/trace-ai/exp/scoring.js +46 -0
- package/dist/trace-ai/scan/aggregator.d.ts +20 -0
- package/dist/trace-ai/scan/aggregator.js +26 -0
- package/dist/trace-ai/scan/artifacts/paths.d.ts +12 -0
- package/dist/trace-ai/scan/artifacts/paths.js +18 -0
- package/dist/trace-ai/scan/artifacts/writer.d.ts +67 -0
- package/dist/trace-ai/scan/artifacts/writer.js +96 -0
- package/dist/trace-ai/scan/batched-rubric.d.ts +55 -0
- package/dist/trace-ai/scan/batched-rubric.js +159 -0
- package/dist/trace-ai/scan/cross-trace-synthesizer.d.ts +24 -0
- package/dist/trace-ai/scan/cross-trace-synthesizer.js +93 -0
- package/dist/trace-ai/scan/index.d.ts +31 -0
- package/dist/trace-ai/scan/index.js +390 -0
- package/dist/trace-ai/scan/prompts/builtin/cross-trace-synthesizer-v1.prompt.md +44 -0
- package/dist/trace-ai/scan/prompts/builtin/rubric-judge-batch-v1.prompt.md +44 -0
- package/dist/trace-ai/scan/runner.d.ts +25 -0
- package/dist/trace-ai/scan/runner.js +42 -0
- package/dist/trace-ai/scan/sampler.d.ts +18 -0
- package/dist/trace-ai/scan/sampler.js +81 -0
- package/dist/trace-ai/scan/scan-summary-markdown.d.ts +2 -0
- package/dist/trace-ai/scan/scan-summary-markdown.js +71 -0
- package/dist/trace-ai/scan/scan-summary-schema.d.ts +73 -0
- package/dist/trace-ai/scan/scan-summary-schema.js +61 -0
- package/dist/trace-ai/scan/single-agent-validator.d.ts +23 -0
- package/dist/trace-ai/scan/single-agent-validator.js +42 -0
- package/dist/trace-ai/scan/traces-list-parser.d.ts +15 -0
- package/dist/trace-ai/scan/traces-list-parser.js +46 -0
- package/package.json +2 -2
- package/dist/api/dataviews.d.ts +0 -117
- package/dist/api/dataviews.js +0 -265
- package/dist/commands/dataview.d.ts +0 -8
- package/dist/trace-core/diagnose/index.d.ts +0 -9
- package/dist/trace-core/diagnose/index.js +0 -104
- package/dist/trace-core/diagnose/report-assembler.d.ts +0 -12
- package/dist/trace-core/diagnose/schemas.js +0 -94
- package/dist/trace-core/diagnose/signal-probe.d.ts +0 -5
- package/dist/trace-core/diagnose/signal-probe.js +0 -21
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/excessive-tool-calls-per-turn.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/excessive-tool-calls-per-turn.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/excessive-tool-calls-per-turn.yaml +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/llm-response-truncated-no-continue.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/llm-response-truncated-no-continue.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/llm-response-truncated-no-continue.yaml +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/register.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/register.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/retrieval-empty-no-fallback.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/retrieval-empty-no-fallback.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/retrieval-empty-no-fallback.yaml +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-error-swallowed.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-error-swallowed.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-error-swallowed.yaml +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-loop-no-state-change.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-loop-no-state-change.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/builtin-rules/tool-loop-no-state-change.yaml +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/predicate-registry.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/predicate-registry.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/rule-loader.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/synthesizer-template.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/synthesizer-template.js +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/trace-shaper.d.ts +0 -0
- /package/dist/{trace-core → trace-ai}/diagnose/types.js +0 -0
package/dist/commands/skill.js
CHANGED
|
@@ -2,81 +2,267 @@ import { mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { basename, dirname, resolve } from "node:path";
|
|
3
3
|
import { ensureValidToken, formatHttpError, with401RefreshRetry } from "../auth/oauth.js";
|
|
4
4
|
import { resolveBusinessDomain } from "../config/store.js";
|
|
5
|
-
import { deleteSkill, downloadSkill, fetchSkillContent, fetchSkillFile, getSkill, getSkillContentIndex, installSkillArchive, listSkillMarket, listSkills, readSkillFile, registerSkillZip, updateSkillStatus, } from "../api/skills.js";
|
|
5
|
+
import { deleteSkill, downloadSkill, downloadSkillManagementArchive, fetchSkillContent, fetchSkillFile, getSkill, getSkillMarketDetail, getSkillContentIndex, getSkillManagementContent, installSkillArchive, listSkillMarket, listSkillHistory, listSkills, publishSkillHistory, readSkillFile, readSkillManagementFile, republishSkillHistory, registerSkillZip, updateSkillMetadata, updateSkillPackageContent, updateSkillPackageZip, updateSkillStatus, } from "../api/skills.js";
|
|
6
6
|
import { bundleSkillDirectoryToZip, bundleSkillFileToZip } from "../utils/skill-bundle.js";
|
|
7
|
+
import { renderHelp } from "../help/format.js";
|
|
8
|
+
const SKILL_HELP = renderHelp({
|
|
9
|
+
tagline: "Skill registry and market — register, market, content, lifecycle",
|
|
10
|
+
usage: "kweaver skill <subcommand> [flags]",
|
|
11
|
+
sections: [
|
|
12
|
+
{
|
|
13
|
+
title: "REGISTRY",
|
|
14
|
+
items: [
|
|
15
|
+
{ name: "list", desc: "List skills (filter by --name / --status / --source / --create-user)" },
|
|
16
|
+
{ name: "get", desc: "Get a skill by id" },
|
|
17
|
+
{ name: "register", desc: "Register a skill (--content-file <SKILL.md|dir> | --zip-file <path>)" },
|
|
18
|
+
{ name: "set-status", desc: "Change status: unpublish | published | offline" },
|
|
19
|
+
{ name: "delete", desc: "Delete a skill" },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: "MARKET",
|
|
24
|
+
items: [
|
|
25
|
+
{ name: "market", desc: "Browse the skill market" },
|
|
26
|
+
{ name: "market-get", desc: "Get a market skill by id" },
|
|
27
|
+
{ name: "download", desc: "Download a skill package archive" },
|
|
28
|
+
{ name: "install", desc: "Install a skill locally" },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: "CONTENT",
|
|
33
|
+
items: [
|
|
34
|
+
{ name: "content", desc: "Read SKILL.md content" },
|
|
35
|
+
{ name: "read-file", desc: "Read a file inside a skill (progressive)" },
|
|
36
|
+
{ name: "management-content", desc: "Read SKILL.md via management endpoint" },
|
|
37
|
+
{ name: "management-read-file", desc: "Read file inside skill via management endpoint" },
|
|
38
|
+
{ name: "management-download", desc: "Download via management endpoint" },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: "LIFECYCLE",
|
|
43
|
+
items: [
|
|
44
|
+
{ name: "update-metadata", desc: "Update metadata (name / description / category / source)" },
|
|
45
|
+
{ name: "update-package", desc: "Update package content or zip" },
|
|
46
|
+
{ name: "history", desc: "Show version history" },
|
|
47
|
+
{ name: "republish", desc: "Republish a specific historical version" },
|
|
48
|
+
{ name: "publish-history", desc: "Publish a historical version" },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
flags: [
|
|
53
|
+
{ name: "-bd, --biz-domain <s>", desc: "Business domain (default: bd_public)" },
|
|
54
|
+
{ name: "--pretty / --compact", desc: "JSON output style (default: pretty)" },
|
|
55
|
+
],
|
|
56
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
57
|
+
examples: [
|
|
58
|
+
"kweaver skill list --name kweaver",
|
|
59
|
+
"kweaver skill register --zip-file ./demo-skill.zip --source upload_zip",
|
|
60
|
+
"kweaver skill install skill-123 ./skills/demo-skill --force",
|
|
61
|
+
],
|
|
62
|
+
learnMore: ["Use `kweaver skill <subcommand> --help` for flag details"],
|
|
63
|
+
});
|
|
7
64
|
function printSkillHelp(subcommand) {
|
|
8
65
|
if (subcommand === "list") {
|
|
9
|
-
console.log(
|
|
10
|
-
|
|
66
|
+
console.log(renderHelp({
|
|
67
|
+
tagline: "List installed skills.",
|
|
68
|
+
usage: "kweaver skill list [--name kw] [--source src] [--status status] [--create-user user] [--page N] [--page-size N|--limit N] [--all] [-bd value] [--pretty|--compact]",
|
|
69
|
+
flags: [
|
|
70
|
+
{ name: "--name kw", desc: "Filter by name keyword." },
|
|
71
|
+
{ name: "--source src", desc: "Filter by source." },
|
|
72
|
+
{ name: "--status status", desc: "Filter by status." },
|
|
73
|
+
{ name: "--create-user user", desc: "Filter by creator." },
|
|
74
|
+
{ name: "--page N", desc: "Page number." },
|
|
75
|
+
{ name: "--page-size N", desc: "Page size (alias: --limit)." },
|
|
76
|
+
{ name: "--all", desc: "Fetch all pages." },
|
|
77
|
+
{ name: "-bd value", desc: "Override base URL." },
|
|
78
|
+
{ name: "--pretty|--compact", desc: "Toggle pretty JSON output." },
|
|
79
|
+
],
|
|
80
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
81
|
+
}));
|
|
11
82
|
return;
|
|
12
83
|
}
|
|
13
84
|
if (subcommand === "market") {
|
|
14
|
-
console.log(
|
|
15
|
-
|
|
85
|
+
console.log(renderHelp({
|
|
86
|
+
tagline: "Browse the skill marketplace.",
|
|
87
|
+
usage: "kweaver skill market [--name kw] [--source src] [--page N] [--page-size N|--limit N] [--all] [-bd value] [--pretty|--compact]",
|
|
88
|
+
flags: [
|
|
89
|
+
{ name: "--name kw", desc: "Filter by name keyword." },
|
|
90
|
+
{ name: "--source src", desc: "Filter by source." },
|
|
91
|
+
{ name: "--page N", desc: "Page number." },
|
|
92
|
+
{ name: "--page-size N", desc: "Page size (alias: --limit)." },
|
|
93
|
+
{ name: "--all", desc: "Fetch all pages." },
|
|
94
|
+
{ name: "-bd value", desc: "Override base URL." },
|
|
95
|
+
{ name: "--pretty|--compact", desc: "Toggle pretty JSON output." },
|
|
96
|
+
],
|
|
97
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
98
|
+
}));
|
|
16
99
|
return;
|
|
17
100
|
}
|
|
18
101
|
if (subcommand === "get") {
|
|
19
|
-
console.log(
|
|
102
|
+
console.log(renderHelp({
|
|
103
|
+
tagline: "Show installed skill details.",
|
|
104
|
+
usage: "kweaver skill get <skill-id> [-bd value] [--pretty|--compact]",
|
|
105
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
106
|
+
}));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (subcommand === "market-get") {
|
|
110
|
+
console.log(renderHelp({
|
|
111
|
+
tagline: "Show marketplace skill details.",
|
|
112
|
+
usage: "kweaver skill market-get <skill-id> [-bd value] [--pretty|--compact]",
|
|
113
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
114
|
+
}));
|
|
20
115
|
return;
|
|
21
116
|
}
|
|
22
117
|
if (subcommand === "register") {
|
|
23
|
-
console.log(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
118
|
+
console.log(renderHelp({
|
|
119
|
+
tagline: "Register a new skill (multipart zip upload).",
|
|
120
|
+
usage: "kweaver skill register (--content-file <path> | --zip-file <path>) [--source src] [--extend-info json] [-bd value] [--pretty|--compact]",
|
|
121
|
+
flags: [
|
|
122
|
+
{ name: "--content-file <path>", desc: "SKILL.md file or skill directory containing SKILL.md (auto-bundled into a zip)." },
|
|
123
|
+
{ name: "--zip-file <path>", desc: "Pre-built .zip with SKILL.md at the archive root." },
|
|
124
|
+
{ name: "--source src", desc: "Source tag." },
|
|
125
|
+
{ name: "--extend-info json", desc: "Extra metadata as JSON object." },
|
|
126
|
+
{ name: "-bd value", desc: "Override base URL." },
|
|
127
|
+
{ name: "--pretty|--compact", desc: "Toggle pretty JSON output." },
|
|
128
|
+
],
|
|
129
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
130
|
+
learnMore: [
|
|
131
|
+
"Both --content-file and --zip-file upload as multipart zip; the backend's",
|
|
132
|
+
"file_type=content registration is unreliable (publish-then-read returns 404)",
|
|
133
|
+
"so the CLI always goes through zip.",
|
|
134
|
+
],
|
|
135
|
+
}));
|
|
33
136
|
return;
|
|
34
137
|
}
|
|
35
138
|
if (subcommand === "set-status" || subcommand === "status") {
|
|
36
|
-
console.log(
|
|
139
|
+
console.log(renderHelp({
|
|
140
|
+
tagline: "Set skill publish status.",
|
|
141
|
+
usage: "kweaver skill set-status <skill-id> <unpublish|published|offline> [-bd value] [--pretty|--compact]",
|
|
142
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
143
|
+
}));
|
|
37
144
|
return;
|
|
38
145
|
}
|
|
39
146
|
if (subcommand === "delete") {
|
|
40
|
-
console.log(
|
|
147
|
+
console.log(renderHelp({
|
|
148
|
+
tagline: "Delete a skill.",
|
|
149
|
+
usage: "kweaver skill delete <skill-id> [-y|--yes] [-bd value] [--pretty|--compact]",
|
|
150
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
151
|
+
}));
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (subcommand === "update-metadata") {
|
|
155
|
+
console.log(renderHelp({
|
|
156
|
+
tagline: "Update skill metadata fields.",
|
|
157
|
+
usage: "kweaver skill update-metadata <skill-id> --name <name> --description <text> --category <other_category|system> [--source <custom|internal>] [--extend-info json] [-bd value] [--pretty|--compact]",
|
|
158
|
+
flags: [
|
|
159
|
+
{ name: "--name <name>", desc: "Skill name." },
|
|
160
|
+
{ name: "--description <text>", desc: "Skill description." },
|
|
161
|
+
{ name: "--category <other_category|system>", desc: "Skill category." },
|
|
162
|
+
{ name: "--source <custom|internal>", desc: "Source tag." },
|
|
163
|
+
{ name: "--extend-info json", desc: "Extra metadata as JSON object." },
|
|
164
|
+
{ name: "-bd value", desc: "Override base URL." },
|
|
165
|
+
{ name: "--pretty|--compact", desc: "Toggle pretty JSON output." },
|
|
166
|
+
],
|
|
167
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
168
|
+
}));
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (subcommand === "update-package") {
|
|
172
|
+
console.log(renderHelp({
|
|
173
|
+
tagline: "Replace skill package contents.",
|
|
174
|
+
usage: "kweaver skill update-package <skill-id> (--content-file <path> | --zip-file <path>) [-bd value] [--pretty|--compact]",
|
|
175
|
+
flags: [
|
|
176
|
+
{ name: "--content-file <path>", desc: "SKILL.md file or skill directory (auto-bundled into a zip)." },
|
|
177
|
+
{ name: "--zip-file <path>", desc: "Pre-built .zip with SKILL.md at the archive root." },
|
|
178
|
+
{ name: "-bd value", desc: "Override base URL." },
|
|
179
|
+
{ name: "--pretty|--compact", desc: "Toggle pretty JSON output." },
|
|
180
|
+
],
|
|
181
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
182
|
+
}));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (subcommand === "history") {
|
|
186
|
+
console.log(renderHelp({
|
|
187
|
+
tagline: "Show skill edit history.",
|
|
188
|
+
usage: "kweaver skill history <skill-id> [-bd value] [--pretty|--compact]",
|
|
189
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
190
|
+
}));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (subcommand === "republish") {
|
|
194
|
+
console.log(renderHelp({
|
|
195
|
+
tagline: "Republish a previous skill version.",
|
|
196
|
+
usage: "kweaver skill republish <skill-id> --version <version> [-bd value] [--pretty|--compact]",
|
|
197
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
198
|
+
}));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (subcommand === "publish-history") {
|
|
202
|
+
console.log(renderHelp({
|
|
203
|
+
tagline: "Show publish history for a version.",
|
|
204
|
+
usage: "kweaver skill publish-history <skill-id> --version <version> [-bd value] [--pretty|--compact]",
|
|
205
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
206
|
+
}));
|
|
41
207
|
return;
|
|
42
208
|
}
|
|
43
209
|
if (subcommand === "content") {
|
|
44
|
-
console.log(
|
|
210
|
+
console.log(renderHelp({
|
|
211
|
+
tagline: "Fetch installed skill SKILL.md content.",
|
|
212
|
+
usage: "kweaver skill content <skill-id> [--raw] [--output file] [-bd value] [--pretty|--compact]",
|
|
213
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
214
|
+
}));
|
|
45
215
|
return;
|
|
46
216
|
}
|
|
47
217
|
if (subcommand === "read-file") {
|
|
48
|
-
console.log(
|
|
218
|
+
console.log(renderHelp({
|
|
219
|
+
tagline: "Read a file from an installed skill.",
|
|
220
|
+
usage: "kweaver skill read-file <skill-id> <rel-path> [--raw] [--output file] [-bd value] [--pretty|--compact]",
|
|
221
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
222
|
+
}));
|
|
49
223
|
return;
|
|
50
224
|
}
|
|
51
225
|
if (subcommand === "download") {
|
|
52
|
-
console.log(
|
|
226
|
+
console.log(renderHelp({
|
|
227
|
+
tagline: "Download an installed skill package.",
|
|
228
|
+
usage: "kweaver skill download <skill-id> [--output file] [-bd value] [--pretty|--compact]",
|
|
229
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
230
|
+
}));
|
|
53
231
|
return;
|
|
54
232
|
}
|
|
55
233
|
if (subcommand === "install") {
|
|
56
|
-
console.log(
|
|
234
|
+
console.log(renderHelp({
|
|
235
|
+
tagline: "Install a skill locally.",
|
|
236
|
+
usage: "kweaver skill install <skill-id> [directory] [--force] [-bd value] [--pretty|--compact]",
|
|
237
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
238
|
+
}));
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (subcommand === "management-content") {
|
|
242
|
+
console.log(renderHelp({
|
|
243
|
+
tagline: "Fetch management-side skill SKILL.md content.",
|
|
244
|
+
usage: "kweaver skill management-content <skill-id> [--raw] [--response-mode url|content] [--output file] [-bd value] [--pretty|--compact]",
|
|
245
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
246
|
+
}));
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (subcommand === "management-read-file") {
|
|
250
|
+
console.log(renderHelp({
|
|
251
|
+
tagline: "Read a file via management API.",
|
|
252
|
+
usage: "kweaver skill management-read-file <skill-id> <rel-path> [--response-mode url|content] [--output file] [-bd value] [--pretty|--compact]",
|
|
253
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
254
|
+
}));
|
|
57
255
|
return;
|
|
58
256
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
delete <skill-id> [-y] [-bd value]
|
|
69
|
-
content <skill-id> [--raw] [--output file] [-bd value]
|
|
70
|
-
read-file <skill-id> <rel-path> [--raw] [--output file] [-bd value]
|
|
71
|
-
download <skill-id> [--output file] [-bd value]
|
|
72
|
-
install <skill-id> [directory] [--force] [-bd value]
|
|
73
|
-
|
|
74
|
-
Examples:
|
|
75
|
-
kweaver skill list --name kweaver
|
|
76
|
-
kweaver skill register --zip-file ./demo-skill.zip --source upload_zip
|
|
77
|
-
kweaver skill content skill-123 --raw
|
|
78
|
-
kweaver skill read-file skill-123 references/guide.md --output ./guide.md
|
|
79
|
-
kweaver skill install skill-123 ./skills/demo-skill --force`);
|
|
257
|
+
if (subcommand === "management-download") {
|
|
258
|
+
console.log(renderHelp({
|
|
259
|
+
tagline: "Download a skill via management API.",
|
|
260
|
+
usage: "kweaver skill management-download <skill-id> [--response-mode url|content] [--output file] [-bd value] [--pretty|--compact]",
|
|
261
|
+
inheritedFlags: "--base-url, --token, --user, --help",
|
|
262
|
+
}));
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
console.log(SKILL_HELP);
|
|
80
266
|
}
|
|
81
267
|
function format(value, pretty) {
|
|
82
268
|
return JSON.stringify(value, null, pretty ? 2 : 0);
|
|
@@ -276,6 +462,108 @@ function parseSkillGetArgs(args) {
|
|
|
276
462
|
}
|
|
277
463
|
return { ...base.opts, skillId };
|
|
278
464
|
}
|
|
465
|
+
export function parseSkillUpdateMetadataArgs(args) {
|
|
466
|
+
const skillId = args[0];
|
|
467
|
+
if (!skillId || skillId.startsWith("-"))
|
|
468
|
+
throw new Error("Missing skill-id");
|
|
469
|
+
let name;
|
|
470
|
+
let description;
|
|
471
|
+
let category;
|
|
472
|
+
let source;
|
|
473
|
+
let extendInfo;
|
|
474
|
+
const base = parseBaseArgs(args, 1);
|
|
475
|
+
for (let i = 1; i < base.args.length; i += 1) {
|
|
476
|
+
const arg = base.args[i];
|
|
477
|
+
if (arg === "--help" || arg === "-h")
|
|
478
|
+
throw new Error("help");
|
|
479
|
+
if (arg === "--name") {
|
|
480
|
+
name = base.args[i + 1];
|
|
481
|
+
i += 1;
|
|
482
|
+
continue;
|
|
483
|
+
}
|
|
484
|
+
if (arg === "--description") {
|
|
485
|
+
description = base.args[i + 1];
|
|
486
|
+
i += 1;
|
|
487
|
+
continue;
|
|
488
|
+
}
|
|
489
|
+
if (arg === "--category") {
|
|
490
|
+
const value = base.args[i + 1];
|
|
491
|
+
if (value !== "other_category" && value !== "system") {
|
|
492
|
+
throw new Error("Invalid --category. Expected other_category|system");
|
|
493
|
+
}
|
|
494
|
+
category = value;
|
|
495
|
+
i += 1;
|
|
496
|
+
continue;
|
|
497
|
+
}
|
|
498
|
+
if (arg === "--source") {
|
|
499
|
+
source = base.args[i + 1];
|
|
500
|
+
i += 1;
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
if (arg === "--extend-info") {
|
|
504
|
+
extendInfo = parseJsonFlag(base.args[i + 1], "--extend-info");
|
|
505
|
+
i += 1;
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
508
|
+
throw new Error(`Unsupported skill update-metadata argument: ${arg}`);
|
|
509
|
+
}
|
|
510
|
+
if (!name)
|
|
511
|
+
throw new Error("Missing --name");
|
|
512
|
+
if (!description)
|
|
513
|
+
throw new Error("Missing --description");
|
|
514
|
+
if (!category)
|
|
515
|
+
throw new Error("Missing --category");
|
|
516
|
+
return { ...base.opts, skillId, name, description, category, source, extendInfo };
|
|
517
|
+
}
|
|
518
|
+
export function parseSkillUpdatePackageArgs(args) {
|
|
519
|
+
const skillId = args[0];
|
|
520
|
+
if (!skillId || skillId.startsWith("-"))
|
|
521
|
+
throw new Error("Missing skill-id");
|
|
522
|
+
let contentFile;
|
|
523
|
+
let zipFile;
|
|
524
|
+
const base = parseBaseArgs(args, 1);
|
|
525
|
+
for (let i = 1; i < base.args.length; i += 1) {
|
|
526
|
+
const arg = base.args[i];
|
|
527
|
+
if (arg === "--help" || arg === "-h")
|
|
528
|
+
throw new Error("help");
|
|
529
|
+
if (arg === "--content-file") {
|
|
530
|
+
contentFile = base.args[i + 1];
|
|
531
|
+
i += 1;
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
534
|
+
if (arg === "--zip-file") {
|
|
535
|
+
zipFile = base.args[i + 1];
|
|
536
|
+
i += 1;
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
throw new Error(`Unsupported skill update-package argument: ${arg}`);
|
|
540
|
+
}
|
|
541
|
+
if ((contentFile ? 1 : 0) + (zipFile ? 1 : 0) !== 1) {
|
|
542
|
+
throw new Error("Use exactly one of --content-file or --zip-file");
|
|
543
|
+
}
|
|
544
|
+
return { ...base.opts, skillId, contentFile, zipFile };
|
|
545
|
+
}
|
|
546
|
+
export function parseSkillHistoryVersionArgs(args, commandName) {
|
|
547
|
+
const skillId = args[0];
|
|
548
|
+
if (!skillId || skillId.startsWith("-"))
|
|
549
|
+
throw new Error("Missing skill-id");
|
|
550
|
+
let version;
|
|
551
|
+
const base = parseBaseArgs(args, 1);
|
|
552
|
+
for (let i = 1; i < base.args.length; i += 1) {
|
|
553
|
+
const arg = base.args[i];
|
|
554
|
+
if (arg === "--help" || arg === "-h")
|
|
555
|
+
throw new Error("help");
|
|
556
|
+
if (arg === "--version") {
|
|
557
|
+
version = base.args[i + 1];
|
|
558
|
+
i += 1;
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
throw new Error(`Unsupported skill ${commandName} argument: ${arg}`);
|
|
562
|
+
}
|
|
563
|
+
if (!version)
|
|
564
|
+
throw new Error("Missing --version");
|
|
565
|
+
return { ...base.opts, skillId, version };
|
|
566
|
+
}
|
|
279
567
|
function parseSkillReadFileArgs(args) {
|
|
280
568
|
const skillId = args[0];
|
|
281
569
|
const relPath = args[1];
|
|
@@ -325,6 +613,101 @@ function parseSkillInstallArgs(args) {
|
|
|
325
613
|
}
|
|
326
614
|
return { ...base.opts, skillId, directory, force };
|
|
327
615
|
}
|
|
616
|
+
function parseManagementContentArgs(args) {
|
|
617
|
+
const skillId = args[0];
|
|
618
|
+
if (!skillId || skillId.startsWith("-"))
|
|
619
|
+
throw new Error("Missing skill-id");
|
|
620
|
+
let responseMode;
|
|
621
|
+
let fetchRaw = false;
|
|
622
|
+
let output;
|
|
623
|
+
const base = parseBaseArgs(args, 1);
|
|
624
|
+
for (let i = 1; i < base.args.length; i += 1) {
|
|
625
|
+
const arg = base.args[i];
|
|
626
|
+
if (arg === "--help" || arg === "-h")
|
|
627
|
+
throw new Error("help");
|
|
628
|
+
if (arg === "--raw") {
|
|
629
|
+
fetchRaw = true;
|
|
630
|
+
continue;
|
|
631
|
+
}
|
|
632
|
+
if (arg === "--response-mode") {
|
|
633
|
+
const value = base.args[i + 1];
|
|
634
|
+
if (value !== "url" && value !== "content") {
|
|
635
|
+
throw new Error("Invalid --response-mode. Expected url|content");
|
|
636
|
+
}
|
|
637
|
+
responseMode = value;
|
|
638
|
+
i += 1;
|
|
639
|
+
continue;
|
|
640
|
+
}
|
|
641
|
+
if (arg === "--output" || arg === "-o") {
|
|
642
|
+
output = base.args[i + 1];
|
|
643
|
+
i += 1;
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
throw new Error(`Unsupported skill management-content argument: ${arg}`);
|
|
647
|
+
}
|
|
648
|
+
return { ...base.opts, skillId, responseMode, fetchRaw, output };
|
|
649
|
+
}
|
|
650
|
+
function parseManagementReadFileArgs(args) {
|
|
651
|
+
const skillId = args[0];
|
|
652
|
+
const relPath = args[1];
|
|
653
|
+
if (!skillId || skillId.startsWith("-"))
|
|
654
|
+
throw new Error("Missing skill-id");
|
|
655
|
+
if (!relPath || relPath.startsWith("-"))
|
|
656
|
+
throw new Error("Missing rel-path");
|
|
657
|
+
let responseMode;
|
|
658
|
+
let output;
|
|
659
|
+
const base = parseBaseArgs(args, 2);
|
|
660
|
+
for (let i = 2; i < base.args.length; i += 1) {
|
|
661
|
+
const arg = base.args[i];
|
|
662
|
+
if (arg === "--help" || arg === "-h")
|
|
663
|
+
throw new Error("help");
|
|
664
|
+
if (arg === "--response-mode") {
|
|
665
|
+
const value = base.args[i + 1];
|
|
666
|
+
if (value !== "url" && value !== "content") {
|
|
667
|
+
throw new Error("Invalid --response-mode. Expected url|content");
|
|
668
|
+
}
|
|
669
|
+
responseMode = value;
|
|
670
|
+
i += 1;
|
|
671
|
+
continue;
|
|
672
|
+
}
|
|
673
|
+
if (arg === "--output" || arg === "-o") {
|
|
674
|
+
output = base.args[i + 1];
|
|
675
|
+
i += 1;
|
|
676
|
+
continue;
|
|
677
|
+
}
|
|
678
|
+
throw new Error(`Unsupported skill management-read-file argument: ${arg}`);
|
|
679
|
+
}
|
|
680
|
+
return { ...base.opts, skillId, relPath, responseMode, output };
|
|
681
|
+
}
|
|
682
|
+
function parseManagementDownloadArgs(args) {
|
|
683
|
+
const skillId = args[0];
|
|
684
|
+
if (!skillId || skillId.startsWith("-"))
|
|
685
|
+
throw new Error("Missing skill-id");
|
|
686
|
+
let responseMode;
|
|
687
|
+
let output;
|
|
688
|
+
const base = parseBaseArgs(args, 1);
|
|
689
|
+
for (let i = 1; i < base.args.length; i += 1) {
|
|
690
|
+
const arg = base.args[i];
|
|
691
|
+
if (arg === "--help" || arg === "-h")
|
|
692
|
+
throw new Error("help");
|
|
693
|
+
if (arg === "--response-mode") {
|
|
694
|
+
const value = base.args[i + 1];
|
|
695
|
+
if (value !== "url" && value !== "content") {
|
|
696
|
+
throw new Error("Invalid --response-mode. Expected url|content");
|
|
697
|
+
}
|
|
698
|
+
responseMode = value;
|
|
699
|
+
i += 1;
|
|
700
|
+
continue;
|
|
701
|
+
}
|
|
702
|
+
if (arg === "--output" || arg === "-o") {
|
|
703
|
+
output = base.args[i + 1];
|
|
704
|
+
i += 1;
|
|
705
|
+
continue;
|
|
706
|
+
}
|
|
707
|
+
throw new Error(`Unsupported skill management-download argument: ${arg}`);
|
|
708
|
+
}
|
|
709
|
+
return { ...base.opts, skillId, responseMode, output };
|
|
710
|
+
}
|
|
328
711
|
function parseStatusArgs(args) {
|
|
329
712
|
const skillId = args[0];
|
|
330
713
|
const status = args[1];
|
|
@@ -401,6 +784,16 @@ export async function runSkillCommand(args) {
|
|
|
401
784
|
console.log(format(result, opts.pretty));
|
|
402
785
|
return 0;
|
|
403
786
|
}
|
|
787
|
+
if (subcommand === "market-get") {
|
|
788
|
+
const opts = parseSkillGetArgs(rest);
|
|
789
|
+
const result = await getSkillMarketDetail({
|
|
790
|
+
...token,
|
|
791
|
+
businessDomain: opts.businessDomain,
|
|
792
|
+
skillId: opts.skillId,
|
|
793
|
+
});
|
|
794
|
+
console.log(format(result, opts.pretty));
|
|
795
|
+
return 0;
|
|
796
|
+
}
|
|
404
797
|
if (subcommand === "register") {
|
|
405
798
|
const opts = parseSkillRegisterArgs(rest);
|
|
406
799
|
if (opts.contentFile) {
|
|
@@ -463,6 +856,79 @@ export async function runSkillCommand(args) {
|
|
|
463
856
|
console.log(format(result, opts.pretty));
|
|
464
857
|
return 0;
|
|
465
858
|
}
|
|
859
|
+
if (subcommand === "update-metadata") {
|
|
860
|
+
const opts = parseSkillUpdateMetadataArgs(rest);
|
|
861
|
+
const result = await updateSkillMetadata({
|
|
862
|
+
...token,
|
|
863
|
+
businessDomain: opts.businessDomain,
|
|
864
|
+
skillId: opts.skillId,
|
|
865
|
+
name: opts.name,
|
|
866
|
+
description: opts.description,
|
|
867
|
+
category: opts.category,
|
|
868
|
+
source: opts.source,
|
|
869
|
+
extendInfo: opts.extendInfo,
|
|
870
|
+
});
|
|
871
|
+
console.log(format(result, opts.pretty));
|
|
872
|
+
return 0;
|
|
873
|
+
}
|
|
874
|
+
if (subcommand === "update-package") {
|
|
875
|
+
const opts = parseSkillUpdatePackageArgs(rest);
|
|
876
|
+
if (opts.contentFile) {
|
|
877
|
+
const content = readFileSync(resolve(opts.contentFile), "utf8");
|
|
878
|
+
const result = await updateSkillPackageContent({
|
|
879
|
+
...token,
|
|
880
|
+
businessDomain: opts.businessDomain,
|
|
881
|
+
skillId: opts.skillId,
|
|
882
|
+
content,
|
|
883
|
+
});
|
|
884
|
+
console.log(format(result, opts.pretty));
|
|
885
|
+
return 0;
|
|
886
|
+
}
|
|
887
|
+
if (opts.zipFile) {
|
|
888
|
+
const bytes = new Uint8Array(readFileSync(resolve(opts.zipFile)));
|
|
889
|
+
const result = await updateSkillPackageZip({
|
|
890
|
+
...token,
|
|
891
|
+
businessDomain: opts.businessDomain,
|
|
892
|
+
skillId: opts.skillId,
|
|
893
|
+
filename: basename(resolve(opts.zipFile)),
|
|
894
|
+
bytes,
|
|
895
|
+
});
|
|
896
|
+
console.log(format(result, opts.pretty));
|
|
897
|
+
return 0;
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
if (subcommand === "history") {
|
|
901
|
+
const opts = parseSkillGetArgs(rest);
|
|
902
|
+
const result = await listSkillHistory({
|
|
903
|
+
...token,
|
|
904
|
+
businessDomain: opts.businessDomain,
|
|
905
|
+
skillId: opts.skillId,
|
|
906
|
+
});
|
|
907
|
+
console.log(format(result, opts.pretty));
|
|
908
|
+
return 0;
|
|
909
|
+
}
|
|
910
|
+
if (subcommand === "republish") {
|
|
911
|
+
const opts = parseSkillHistoryVersionArgs(rest, "republish");
|
|
912
|
+
const result = await republishSkillHistory({
|
|
913
|
+
...token,
|
|
914
|
+
businessDomain: opts.businessDomain,
|
|
915
|
+
skillId: opts.skillId,
|
|
916
|
+
version: opts.version,
|
|
917
|
+
});
|
|
918
|
+
console.log(format(result, opts.pretty));
|
|
919
|
+
return 0;
|
|
920
|
+
}
|
|
921
|
+
if (subcommand === "publish-history") {
|
|
922
|
+
const opts = parseSkillHistoryVersionArgs(rest, "publish-history");
|
|
923
|
+
const result = await publishSkillHistory({
|
|
924
|
+
...token,
|
|
925
|
+
businessDomain: opts.businessDomain,
|
|
926
|
+
skillId: opts.skillId,
|
|
927
|
+
version: opts.version,
|
|
928
|
+
});
|
|
929
|
+
console.log(format(result, opts.pretty));
|
|
930
|
+
return 0;
|
|
931
|
+
}
|
|
466
932
|
if (subcommand === "content") {
|
|
467
933
|
const opts = parseSkillContentArgs(rest);
|
|
468
934
|
if (opts.fetchRaw || opts.output) {
|
|
@@ -533,6 +999,64 @@ export async function runSkillCommand(args) {
|
|
|
533
999
|
console.log(`Installed ${opts.skillId} to ${result.directory}`);
|
|
534
1000
|
return 0;
|
|
535
1001
|
}
|
|
1002
|
+
if (subcommand === "management-content") {
|
|
1003
|
+
const opts = parseManagementContentArgs(rest);
|
|
1004
|
+
if (opts.fetchRaw || opts.responseMode === "content" || opts.output) {
|
|
1005
|
+
const result = await getSkillManagementContent({
|
|
1006
|
+
...token,
|
|
1007
|
+
businessDomain: opts.businessDomain,
|
|
1008
|
+
skillId: opts.skillId,
|
|
1009
|
+
responseMode: opts.responseMode,
|
|
1010
|
+
});
|
|
1011
|
+
if (opts.output && result.content) {
|
|
1012
|
+
ensureDirectoryForFile(resolve(opts.output));
|
|
1013
|
+
writeFileSync(resolve(opts.output), result.content, "utf8");
|
|
1014
|
+
console.log(`Saved ${opts.skillId} management content to ${resolve(opts.output)}`);
|
|
1015
|
+
}
|
|
1016
|
+
else if (opts.fetchRaw && result.content) {
|
|
1017
|
+
process.stdout.write(result.content);
|
|
1018
|
+
if (!result.content.endsWith("\n"))
|
|
1019
|
+
process.stdout.write("\n");
|
|
1020
|
+
}
|
|
1021
|
+
else {
|
|
1022
|
+
console.log(format(result, opts.pretty));
|
|
1023
|
+
}
|
|
1024
|
+
return 0;
|
|
1025
|
+
}
|
|
1026
|
+
const result = await getSkillManagementContent({
|
|
1027
|
+
...token,
|
|
1028
|
+
businessDomain: opts.businessDomain,
|
|
1029
|
+
skillId: opts.skillId,
|
|
1030
|
+
responseMode: opts.responseMode,
|
|
1031
|
+
});
|
|
1032
|
+
console.log(format(result, opts.pretty));
|
|
1033
|
+
return 0;
|
|
1034
|
+
}
|
|
1035
|
+
if (subcommand === "management-read-file") {
|
|
1036
|
+
const opts = parseManagementReadFileArgs(rest);
|
|
1037
|
+
const result = await readSkillManagementFile({
|
|
1038
|
+
...token,
|
|
1039
|
+
businessDomain: opts.businessDomain,
|
|
1040
|
+
skillId: opts.skillId,
|
|
1041
|
+
relPath: opts.relPath,
|
|
1042
|
+
});
|
|
1043
|
+
console.log(format(result, opts.pretty));
|
|
1044
|
+
return 0;
|
|
1045
|
+
}
|
|
1046
|
+
if (subcommand === "management-download") {
|
|
1047
|
+
const opts = parseManagementDownloadArgs(rest);
|
|
1048
|
+
const result = await downloadSkillManagementArchive({
|
|
1049
|
+
...token,
|
|
1050
|
+
businessDomain: opts.businessDomain,
|
|
1051
|
+
skillId: opts.skillId,
|
|
1052
|
+
responseMode: opts.responseMode,
|
|
1053
|
+
});
|
|
1054
|
+
const output = resolve(opts.output ?? result.fileName);
|
|
1055
|
+
ensureDirectoryForFile(output);
|
|
1056
|
+
writeFileSync(output, result.bytes);
|
|
1057
|
+
console.log(`Saved ${opts.skillId} management archive to ${output}`);
|
|
1058
|
+
return 0;
|
|
1059
|
+
}
|
|
536
1060
|
console.error(`Unknown skill subcommand: ${subcommand}`);
|
|
537
1061
|
return 1;
|
|
538
1062
|
});
|