@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 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.4",
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;