@rishiqing/cli 0.1.4 → 0.1.6
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 +14 -6
- package/dist/cli.js +65 -22
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/rishiqing.openapi.json +2 -18
- package/skills/rsq-workflow-createFlowApplication/SKILL.md +36 -17
- package/skills/rsq-workflow-createFlowApplication/references/api-sequence.md +47 -10
- package/skills/rsq-workflow-createFlowApplication/references/field-types.md +28 -0
package/README.md
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
- Node.js `>= 20`
|
|
18
18
|
- 一个可用的 `X-Rsq-Api-key`(日事清->设置->开发者配置)
|
|
19
19
|
|
|
20
|
+
### 极速开始
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g @rishiqing/cli
|
|
24
|
+
rsq-cli install
|
|
25
|
+
rsq-cli config init
|
|
26
|
+
```
|
|
27
|
+
|
|
20
28
|
### 快速开始
|
|
21
29
|
|
|
22
30
|
#### 安装
|
|
@@ -47,12 +55,6 @@ rsq-cli install --dir ~/.my-agent/skills
|
|
|
47
55
|
rsq-cli install --dry-run --json
|
|
48
56
|
```
|
|
49
57
|
|
|
50
|
-
安装完成后确认命令可用:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
rsq-cli --help
|
|
54
|
-
```
|
|
55
|
-
|
|
56
58
|
#### 配置
|
|
57
59
|
|
|
58
60
|
先初始化用户级 API Key 配置:
|
|
@@ -67,6 +69,12 @@ rsq-cli config init
|
|
|
67
69
|
rsq-cli config path
|
|
68
70
|
```
|
|
69
71
|
|
|
72
|
+
查看常用命令:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
rsq-cli --help
|
|
76
|
+
```
|
|
77
|
+
|
|
70
78
|
## Agent 能力
|
|
71
79
|
|
|
72
80
|
`rsq-cli` 既提供内建的 agent contract,也保留了仓库内可复用的 skill。
|
package/dist/cli.js
CHANGED
|
@@ -11,7 +11,7 @@ import { stdin, stdout } from "process";
|
|
|
11
11
|
// package.json
|
|
12
12
|
var package_default = {
|
|
13
13
|
name: "@rishiqing/cli",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.6",
|
|
15
15
|
description: "Agent-oriented CLI for Rishiqing APIs",
|
|
16
16
|
license: "MIT",
|
|
17
17
|
type: "module",
|
|
@@ -1092,6 +1092,62 @@ function buildCustomCommands() {
|
|
|
1092
1092
|
];
|
|
1093
1093
|
}
|
|
1094
1094
|
|
|
1095
|
+
// src/workflow/field-enum.ts
|
|
1096
|
+
var workflowFieldTypeDefinitions = [
|
|
1097
|
+
{ type: 1 /* Content */, key: "Content", valueText: "Content", chineseName: "\u6587\u672C\u6846", aliases: ["\u6587\u672C\u6846", "\u6587\u672C", "\u5355\u884C\u6587\u672C", "content", "text"] },
|
|
1098
|
+
{ type: 2 /* Number */, key: "Number", valueText: "Number", chineseName: "\u6570\u5B57", aliases: ["\u6570\u5B57", "\u6570\u503C", "number", "numeric"] },
|
|
1099
|
+
{ type: 3 /* Selector */, key: "Selector", valueText: "Selector", chineseName: "\u9009\u9879", aliases: ["\u9009\u9879", "\u5355\u9009", "selector", "option"] },
|
|
1100
|
+
{ type: 4 /* Menu */, key: "Menu", valueText: "Menu", chineseName: "\u4E0B\u62C9\u83DC\u5355", aliases: ["\u4E0B\u62C9\u83DC\u5355", "\u4E0B\u62C9", "\u83DC\u5355", "menu", "dropdown"] },
|
|
1101
|
+
{ type: 5 /* Date */, key: "Date", valueText: "Date", chineseName: "\u65E5\u671F", aliases: ["\u65E5\u671F", "\u65F6\u95F4", "date", "datetime"] },
|
|
1102
|
+
{ type: 6 /* File */, key: "File", valueText: "File", chineseName: "\u9644\u4EF6", aliases: ["\u9644\u4EF6", "\u6587\u4EF6", "\u4E0A\u4F20\u9644\u4EF6", "file", "attachment"] },
|
|
1103
|
+
{ type: 7 /* Line */, key: "Line", valueText: "Line", chineseName: "\u5206\u5272\u7EBF", aliases: ["\u5206\u5272\u7EBF", "\u5206\u9694\u7EBF", "line", "divider"] },
|
|
1104
|
+
{ type: 8 /* WorkHour */, key: "WorkHour", valueText: "WorkHour", chineseName: "\u5DE5\u65F6", aliases: ["\u5DE5\u65F6", "workhour", "work hour"] },
|
|
1105
|
+
{ type: 9 /* Grade */, key: "Grade", valueText: "Grade", chineseName: "\u7B49\u7EA7", aliases: ["\u7B49\u7EA7", "\u8BC4\u5206\u7B49\u7EA7", "grade", "level"] },
|
|
1106
|
+
{ type: 10 /* FromProject */, key: "FromProject", valueText: "FromProject", chineseName: "\u6240\u5C5E\u8BA1\u5212", aliases: ["\u6240\u5C5E\u8BA1\u5212", "fromproject", "from project"] },
|
|
1107
|
+
{ type: 11 /* Confirm */, key: "Confirm", valueText: "Confirm", chineseName: "\u786E\u8BA4\u4EBA", aliases: ["\u786E\u8BA4\u4EBA", "\u786E\u8BA4\u6210\u5458", "confirm"] },
|
|
1108
|
+
{ type: 12 /* PerfScore */, key: "PerfScore", valueText: "PerfScore", chineseName: "\u7EE9\u6548\u5206", aliases: ["\u7EE9\u6548\u5206", "perfscore", "performance score"] },
|
|
1109
|
+
{ type: 13 /* Cost */, key: "Cost", valueText: "Cost", chineseName: "\u6210\u672C", aliases: ["\u6210\u672C", "cost"] },
|
|
1110
|
+
{ type: 14 /* Income */, key: "Income", valueText: "Income", chineseName: "\u6536\u5165", aliases: ["\u6536\u5165", "income"] },
|
|
1111
|
+
{ type: 15 /* RichText */, key: "RichText", valueText: "RichText", chineseName: "\u5BCC\u6587\u672C", aliases: ["\u5BCC\u6587\u672C", "richtext", "rich text", "html"] },
|
|
1112
|
+
{ type: 16 /* Count */, key: "Count", valueText: "Count", chineseName: "\u8BA1\u6570", aliases: ["\u8BA1\u6570", "count"] },
|
|
1113
|
+
{ type: 17 /* Phone */, key: "Phone", valueText: "Phone", chineseName: "\u624B\u673A", aliases: ["\u624B\u673A", "\u624B\u673A\u53F7", "\u7535\u8BDD", "phone", "mobile"] },
|
|
1114
|
+
{ type: 18 /* Email */, key: "Email", valueText: "Email", chineseName: "\u90AE\u7BB1", aliases: ["\u90AE\u7BB1", "\u90AE\u4EF6", "email", "mail"] },
|
|
1115
|
+
{ type: 19 /* Address */, key: "Address", valueText: "Address", chineseName: "\u5730\u5740", aliases: ["\u5730\u5740", "address"] },
|
|
1116
|
+
{ type: 20 /* Table */, key: "Table", valueText: "Table", chineseName: "\u8868\u683C", aliases: ["\u8868\u683C", "table"] },
|
|
1117
|
+
{ type: 21 /* Check */, key: "Check", valueText: "Check", chineseName: "\u68C0\u67E5\u9879", aliases: ["\u68C0\u67E5\u9879", "\u6838\u5BF9\u9879", "check", "checklist"] },
|
|
1118
|
+
{ type: 22 /* Member */, key: "Member", valueText: "Member", chineseName: "\u6210\u5458", aliases: ["\u6210\u5458", "\u4EBA\u5458", "member", "user"] },
|
|
1119
|
+
{ type: 23 /* Task */, key: "Task", valueText: "Task", chineseName: "\u4EFB\u52A1", aliases: ["\u4EFB\u52A1", "task"] },
|
|
1120
|
+
{ type: 24 /* Formula */, key: "Formula", valueText: "Formula", chineseName: "\u516C\u5F0F", aliases: ["\u516C\u5F0F", "\u8BA1\u7B97\u516C\u5F0F", "formula"] },
|
|
1121
|
+
{ type: 27 /* StartProcess */, key: "StartProcess", valueText: "StartProcess", chineseName: "\u53D1\u8D77\u6D41\u7A0B\u3001\u5173\u8054\u6D41\u7A0B", aliases: ["\u53D1\u8D77\u6D41\u7A0B", "\u5173\u8054\u6D41\u7A0B", "\u6D41\u7A0B\u5173\u8054", "startprocess", "start process"] },
|
|
1122
|
+
{ type: 28 /* Explanation */, key: "Explanation", valueText: "Explanation", chineseName: "\u6D41\u7A0B\u8BF4\u660E\u7EC4\u4EF6", aliases: ["\u6D41\u7A0B\u8BF4\u660E\u7EC4\u4EF6", "\u6D41\u7A0B\u8BF4\u660E", "\u8BF4\u660E\u7EC4\u4EF6", "explanation"] },
|
|
1123
|
+
{ type: 29 /* Quote */, key: "Quote", valueText: "Quote", chineseName: "\u5F15\u7528", aliases: ["\u5F15\u7528", "quote"] },
|
|
1124
|
+
{ type: 30 /* PublicArea */, key: "PublicArea", valueText: "PublicArea", chineseName: "\u516C\u5171\u533A", aliases: ["\u516C\u5171\u533A", "publicarea", "public area"] },
|
|
1125
|
+
{ type: 32 /* DataQuery */, key: "DataQuery", valueText: "DataQuery", chineseName: "\u6570\u636E\u67E5\u8BE2", aliases: ["\u6570\u636E\u67E5\u8BE2", "dataquery", "data query"] },
|
|
1126
|
+
{ type: 33 /* DataResult */, key: "DataResult", valueText: "DataResult", chineseName: "\u6570\u636E\u7ED3\u679C", aliases: ["\u6570\u636E\u7ED3\u679C", "dataresult", "data result"] },
|
|
1127
|
+
{ type: 34 /* QueryQuote */, key: "QueryQuote", valueText: "QueryQuote", chineseName: "\u67E5\u8BE2\u5F15\u7528", aliases: ["\u67E5\u8BE2\u5F15\u7528", "queryquote", "query quote"] },
|
|
1128
|
+
{ type: 35 /* DatasheetLink */, key: "DatasheetLink", valueText: "DatasheetLink", chineseName: "\u6570\u636E\u5173\u8054", aliases: ["\u6570\u636E\u5173\u8054", "\u8868\u5173\u8054", "datasheetlink", "datasheet link"] },
|
|
1129
|
+
{ type: 36 /* Dept */, key: "Dept", valueText: "Dept", chineseName: "\u90E8\u95E8", aliases: ["\u90E8\u95E8", "dept", "department"] },
|
|
1130
|
+
{ type: 37 /* UseRole */, key: "UseRole", valueText: "UseRole", chineseName: "\u4F7F\u7528\u89D2\u8272", aliases: ["\u4F7F\u7528\u89D2\u8272", "\u89D2\u8272", "userole", "use role"] },
|
|
1131
|
+
{ type: 38 /* Location */, key: "Location", valueText: "Location", chineseName: "\u5B9A\u4F4D", aliases: ["\u5B9A\u4F4D", "\u4F4D\u7F6E", "location"] },
|
|
1132
|
+
{ type: 39 /* ProcessInfoCreator */, key: "ProcessInfoCreator", valueText: "ProcessInfoCreator", chineseName: "\u53D1\u8D77\u4EBA", aliases: ["\u53D1\u8D77\u4EBA", "\u521B\u5EFA\u4EBA", "processinfocreator", "creator"] },
|
|
1133
|
+
{ type: 40 /* AlterationContent */, key: "AlterationContent", valueText: "AlterationContent", chineseName: "\u53D8\u66F4\u5185\u5BB9", aliases: ["\u53D8\u66F4\u5185\u5BB9", "alterationcontent", "alteration content"] },
|
|
1134
|
+
{ type: 41 /* AlterationReason */, key: "AlterationReason", valueText: "AlterationReason", chineseName: "\u53D8\u66F4\u539F\u56E0", aliases: ["\u53D8\u66F4\u539F\u56E0", "alterationreason", "alteration reason"] },
|
|
1135
|
+
{ type: 42 /* AlterationTask */, key: "AlterationTask", valueText: "AlterationTask", chineseName: "\u53D8\u66F4\u4EFB\u52A1", aliases: ["\u53D8\u66F4\u4EFB\u52A1", "alterationtask", "alteration task"] },
|
|
1136
|
+
{ type: 43 /* AlterationBelongProject */, key: "AlterationBelongProject", valueText: "AlterationBelongProject", chineseName: "\u53D8\u66F4\u6240\u5C5E\u9879\u76EE", aliases: ["\u53D8\u66F4\u6240\u5C5E\u9879\u76EE", "alterationbelongproject", "alteration belong project"] }
|
|
1137
|
+
];
|
|
1138
|
+
var workflowFieldTypeLookup = /* @__PURE__ */ new Map();
|
|
1139
|
+
for (const definition of workflowFieldTypeDefinitions) {
|
|
1140
|
+
for (const candidate of [definition.key, definition.valueText, definition.chineseName, ...definition.aliases]) {
|
|
1141
|
+
workflowFieldTypeLookup.set(normalizeFieldTypeKey(candidate), definition);
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
function listWorkflowFieldTypes() {
|
|
1145
|
+
return workflowFieldTypeDefinitions;
|
|
1146
|
+
}
|
|
1147
|
+
function normalizeFieldTypeKey(value) {
|
|
1148
|
+
return value.toLowerCase().replace(/[\s_\-::,,、/()()]+/g, "");
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1095
1151
|
// src/registry/skill-contract.ts
|
|
1096
1152
|
function getSkillContract() {
|
|
1097
1153
|
return {
|
|
@@ -1159,10 +1215,18 @@ function getSkillContract() {
|
|
|
1159
1215
|
"\u771F\u6B63\u6267\u884C API \u547D\u4EE4\u65F6\uFF0C\u4F18\u5148\u8D70 rsq-cli agent <module> <command> ...\uFF1Bdescribe/search \u7EE7\u7EED\u8D70\u539F\u5165\u53E3\u3002",
|
|
1160
1216
|
"\u6D89\u53CA\u521B\u5EFA\u3001\u66F4\u65B0\u3001\u7ED1\u5B9A\u3001\u5206\u914D\u7B49\u5199\u64CD\u4F5C\u65F6\uFF0C\u4F18\u5148\u4F7F\u7528 --dry-run --json \u9884\u89C8\u3002",
|
|
1161
1217
|
"\u53EA\u8981\u547D\u4EE4\u5E26 request body\uFF0C\u4F18\u5148\u628A JSON \u5199\u5165\u6587\u4EF6\u5E76\u901A\u8FC7 --body-file \u4F20\u5165\uFF0C\u4E0D\u8981\u9ED8\u8BA4\u62FC\u5185\u8054 --body\u3002",
|
|
1218
|
+
"\u521B\u5EFA workflow \u8868\u5355\u5B57\u6BB5\u524D\uFF0C\u5148\u6309 workflowFieldTypes \u91CC\u7684\u679A\u4E3E\u5B9A\u4E49\u8BC6\u522B fieldType\uFF0C\u4E0D\u8981\u51ED\u7ECF\u9A8C\u731C\u6D4B\u3002",
|
|
1162
1219
|
"\u6240\u6709 id \u5B57\u6BB5\u90FD\u5FC5\u987B\u4F20\u524D\u7F00+uuid\u98CE\u683C\u7684\u5B57\u7B26\u4E32\uFF0C\u4F8B\u5982 flowApp_019d6c0c2f03770b8b789ec313076e64\u3002",
|
|
1163
1220
|
"\u4E0D\u8981\u4F20\u6570\u5B57\u7C7B\u578B id\uFF0C\u4E5F\u4E0D\u8981\u4F20\u7EAF\u6570\u5B57\u5B57\u7B26\u4E32 id\u3002",
|
|
1164
1221
|
"\u8C03\u7528\u524D\u4F18\u5148\u9605\u8BFB\u53C2\u6570\u8BF4\u660E\u548C requestBodySchema \u4E2D\u7684\u5B57\u6BB5\u8BF4\u660E\uFF0C\u518D\u7EC4\u88C5\u53C2\u6570\u3002"
|
|
1165
1222
|
],
|
|
1223
|
+
workflowFieldTypes: listWorkflowFieldTypes().map((definition) => ({
|
|
1224
|
+
type: definition.type,
|
|
1225
|
+
key: definition.key,
|
|
1226
|
+
valueText: definition.valueText,
|
|
1227
|
+
chineseName: definition.chineseName,
|
|
1228
|
+
aliases: definition.aliases
|
|
1229
|
+
})),
|
|
1166
1230
|
tools: getRegistry().map((command) => ({
|
|
1167
1231
|
tool: `${command.module}.${command.aliases[0] ?? command.name}`,
|
|
1168
1232
|
canonical: `${command.module}.${command.name}`,
|
|
@@ -1715,29 +1779,8 @@ function sanitizeRequestBody(definition, body) {
|
|
|
1715
1779
|
if (body === void 0) {
|
|
1716
1780
|
return void 0;
|
|
1717
1781
|
}
|
|
1718
|
-
if (definition.module === "workflow" && definition.name === "createForm") {
|
|
1719
|
-
return sanitizeWorkflowCreateFormBody(body);
|
|
1720
|
-
}
|
|
1721
1782
|
return body;
|
|
1722
1783
|
}
|
|
1723
|
-
function sanitizeWorkflowCreateFormBody(body) {
|
|
1724
|
-
if (!isRecord(body)) {
|
|
1725
|
-
return body;
|
|
1726
|
-
}
|
|
1727
|
-
const sanitized = { ...body };
|
|
1728
|
-
delete sanitized.formId;
|
|
1729
|
-
if (Array.isArray(body.fields)) {
|
|
1730
|
-
sanitized.fields = body.fields.map((field) => {
|
|
1731
|
-
if (!isRecord(field)) {
|
|
1732
|
-
return field;
|
|
1733
|
-
}
|
|
1734
|
-
const sanitizedField = { ...field };
|
|
1735
|
-
delete sanitizedField.fieldId;
|
|
1736
|
-
return sanitizedField;
|
|
1737
|
-
});
|
|
1738
|
-
}
|
|
1739
|
-
return sanitized;
|
|
1740
|
-
}
|
|
1741
1784
|
function validateRequestBody(definition, body) {
|
|
1742
1785
|
if (!definition.hasRequestBody || body === void 0 || !definition.requestBodySchema) {
|
|
1743
1786
|
return;
|