@comate/zulu 1.2.1-beta.2 → 1.3.0

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.
Files changed (169) hide show
  1. package/comate-engine/assets/skills/auto-commit-comate/SKILL.md +260 -0
  2. package/comate-engine/assets/skills/auto-commit-comate/references/data_structures.md +189 -0
  3. package/comate-engine/assets/skills/auto-commit-comate/references/new_version_instruction.md +209 -0
  4. package/comate-engine/assets/skills/auto-commit-comate/references/old_version_instruction.md +208 -0
  5. package/comate-engine/assets/skills/auto-commit-comate/scripts/git_diff_cli.py +196 -0
  6. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/git_utils.py +20 -10
  7. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/client.py +69 -40
  8. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/farseer.py +8 -9
  9. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/matching.py +65 -9
  10. package/comate-engine/assets/skills/auto-commit-comate/scripts/match_card_cli.py +37 -0
  11. package/comate-engine/assets/skills/cnap-comate/SKILL.md +157 -0
  12. package/comate-engine/assets/skills/cnap-comate/references/cases.md +198 -0
  13. package/comate-engine/assets/skills/cnap-comate/references/deploy-troubleshoot.md +15 -0
  14. package/comate-engine/assets/skills/cnap-comate/references/install.md +43 -0
  15. package/comate-engine/assets/skills/cnap-comate/references/kubectl.md +55 -0
  16. package/comate-engine/assets/skills/cnap-comate/references/login.md +125 -0
  17. package/comate-engine/assets/skills/cnap-comate/references/oncall.md +24 -0
  18. package/comate-engine/assets/skills/cnap-comate/scripts/install_cnap_cli.sh +36 -0
  19. package/comate-engine/assets/skills/code-security/SKILL.md +176 -0
  20. package/comate-engine/assets/skills/code-security/references/credential_hosting.md +102 -0
  21. package/comate-engine/assets/skills/code-security/references/vul_repair_sensitive.md +219 -0
  22. package/comate-engine/assets/skills/code-security/scripts/build_repair_info.py +0 -0
  23. package/comate-engine/assets/skills/code-security/scripts/credential_hosting.py +99 -0
  24. package/comate-engine/assets/skills/code-security/scripts/credential_poll.py +350 -0
  25. package/comate-engine/assets/skills/code-security/scripts/http_client.py +173 -0
  26. package/comate-engine/assets/skills/code-security/scripts/parse_scan_result.py +301 -0
  27. package/comate-engine/assets/skills/code-security/scripts/repair_vulnerability.py +261 -0
  28. package/comate-engine/assets/skills/code-security/scripts/report_chat.py +198 -0
  29. package/comate-engine/assets/skills/code-security/scripts/scan_vulnerability.py +316 -0
  30. package/comate-engine/assets/skills/code-security-comate/SKILL.md +219 -0
  31. package/comate-engine/assets/skills/code-security-comate/references/credential_hosting.md +102 -0
  32. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-go_sql_injection.md +399 -0
  33. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-java_sql_injection.md +591 -0
  34. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-php_sql_injection.md +318 -0
  35. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-python_sql_injection.md +198 -0
  36. package/comate-engine/assets/skills/code-security-comate/references/vul_repair_sensitive.md +219 -0
  37. package/comate-engine/assets/skills/code-security-comate/scripts/credential_hosting.py +87 -0
  38. package/comate-engine/assets/skills/code-security-comate/scripts/credential_poll.py +345 -0
  39. package/comate-engine/assets/skills/code-security-comate/scripts/http_client.py +173 -0
  40. package/comate-engine/assets/skills/code-security-comate/scripts/parse_scan_result.py +392 -0
  41. package/comate-engine/assets/skills/code-security-comate/scripts/repair_vulnerability.py +245 -0
  42. package/comate-engine/assets/skills/code-security-comate/scripts/report_chat.py +145 -0
  43. package/comate-engine/assets/skills/code-security-comate/scripts/scan_vulnerability.py +444 -0
  44. package/comate-engine/assets/skills/code-security-comate/scripts/utils.py +153 -0
  45. package/comate-engine/assets/skills/comate-docs-comate/SKILL.md +148 -0
  46. package/comate-engine/assets/skills/comate-docs-comate/references/doc-map-extended.md +78 -0
  47. package/comate-engine/assets/skills/comate-docs-comate/references/models-and-billing.md +51 -0
  48. package/comate-engine/assets/skills/comate-docs-comate/references/product-overview.md +73 -0
  49. package/comate-engine/assets/skills/comate-docs-comate/references/query_content.md +83 -0
  50. package/comate-engine/assets/skills/comate-docs-comate/references/query_repo.md +57 -0
  51. package/comate-engine/assets/skills/comate-docs-comate/scripts/ku_operator.py +1575 -0
  52. package/comate-engine/assets/skills/create-image-comate/SKILL.md +278 -0
  53. package/comate-engine/assets/skills/create-skill-comate/SKILL.md +308 -217
  54. package/comate-engine/assets/skills/create-skill-comate/agents/analyzer.md +274 -0
  55. package/comate-engine/assets/skills/create-skill-comate/agents/comparator.md +202 -0
  56. package/comate-engine/assets/skills/create-skill-comate/agents/grader.md +223 -0
  57. package/comate-engine/assets/skills/create-skill-comate/assets/eval_review.html +146 -0
  58. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/generate_review.py +489 -0
  59. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/viewer.html +1325 -0
  60. package/comate-engine/assets/skills/create-skill-comate/references/schemas.md +430 -0
  61. package/comate-engine/assets/skills/create-skill-comate/scripts/__init__.py +0 -0
  62. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  63. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/aggregate_benchmark.cpython-311.pyc +0 -0
  64. package/comate-engine/assets/skills/create-skill-comate/scripts/aggregate_benchmark.py +412 -0
  65. package/comate-engine/assets/skills/create-skill-comate/scripts/generate_report.py +334 -0
  66. package/comate-engine/assets/skills/create-skill-comate/scripts/package_skill.py +140 -0
  67. package/comate-engine/assets/skills/create-skill-comate/scripts/utils.py +53 -0
  68. package/comate-engine/assets/skills/find-skills-comate/SKILL.md +15 -12
  69. package/comate-engine/assets/skills/find-skills-comate/scripts/fetch_skills.py +32 -3
  70. package/comate-engine/assets/skills/get-ugate-token-comate/SKILL.md +159 -0
  71. package/comate-engine/assets/skills/get-ugate-token-comate/getUgateToken.py +150 -0
  72. package/comate-engine/assets/skills/icafe-comate/SKILL.md +240 -0
  73. package/comate-engine/assets/skills/icafe-comate/references/ai-workflows.md +233 -0
  74. package/comate-engine/assets/skills/icafe-comate/references/commands.md +1147 -0
  75. package/comate-engine/assets/skills/icafe-comate/references/error-handling.md +164 -0
  76. package/comate-engine/assets/skills/icafe-comate/references/git-auto-bindcard-workflow.md +201 -0
  77. package/comate-engine/assets/skills/icafe-comate/references/git-bindcard-workflow.md +327 -0
  78. package/comate-engine/assets/skills/icafe-comate/references/iql-syntax.md +327 -0
  79. package/comate-engine/assets/skills/icafe-comate/references/platform-concepts.md +317 -0
  80. package/comate-engine/assets/skills/icafe-comate/references/smart-create-workflow.md +171 -0
  81. package/comate-engine/assets/skills/icafe-comate/references/smart-find-workflow.md +127 -0
  82. package/comate-engine/assets/skills/icafe-comate/references/smart-update-workflow.md +118 -0
  83. package/comate-engine/assets/skills/icode-comate/SKILL.md +366 -0
  84. package/comate-engine/assets/skills/icode-comate/references/api/add_reviewers.md +44 -0
  85. package/comate-engine/assets/skills/icode-comate/references/api/build_fetch_command.md +89 -0
  86. package/comate-engine/assets/skills/icode-comate/references/api/check_repo_permission.md +89 -0
  87. package/comate-engine/assets/skills/icode-comate/references/api/create_branch.md +79 -0
  88. package/comate-engine/assets/skills/icode-comate/references/api/create_draft_comment.md +109 -0
  89. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_cr_result.md +190 -0
  90. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_review.md +97 -0
  91. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_content.md +92 -0
  92. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_file.md +88 -0
  93. package/comate-engine/assets/skills/icode-comate/references/api/get_machine_check.md +73 -0
  94. package/comate-engine/assets/skills/icode-comate/references/api/get_my_reviews.md +115 -0
  95. package/comate-engine/assets/skills/icode-comate/references/api/get_person_commit.md +89 -0
  96. package/comate-engine/assets/skills/icode-comate/references/api/get_person_repo.md +63 -0
  97. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_branch.md +62 -0
  98. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_config.md +91 -0
  99. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_members.md +118 -0
  100. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_reviews.md +91 -0
  101. package/comate-engine/assets/skills/icode-comate/references/api/get_review_comments.md +87 -0
  102. package/comate-engine/assets/skills/icode-comate/references/api/get_review_info.md +81 -0
  103. package/comate-engine/assets/skills/icode-comate/references/api/get_submit_settings.md +105 -0
  104. package/comate-engine/assets/skills/icode-comate/references/api/icode-api.md +86 -0
  105. package/comate-engine/assets/skills/icode-comate/references/api/publish_comments.md +72 -0
  106. package/comate-engine/assets/skills/icode-comate/references/api/set_review_score.md +58 -0
  107. package/comate-engine/assets/skills/icode-comate/references/api/start_ai_review.md +77 -0
  108. package/comate-engine/assets/skills/icode-comate/references/api/submit_review.md +50 -0
  109. package/comate-engine/assets/skills/icode-comate/references/api/trigger_ai_cr.md +63 -0
  110. package/comate-engine/assets/skills/icode-comate/references/feature/add-reviewer.md +92 -0
  111. package/comate-engine/assets/skills/icode-comate/references/feature/fix-machine-check.md +144 -0
  112. package/comate-engine/assets/skills/icode-comate/references/feature/merge-cr.md +100 -0
  113. package/comate-engine/assets/skills/icode-comate/references/feature/ssh-setup.md +106 -0
  114. package/comate-engine/assets/skills/icode-comate/references/feature/submit-acr.md +135 -0
  115. package/comate-engine/assets/skills/icode-comate/references/feature/submit-cr.md +123 -0
  116. package/comate-engine/assets/skills/icode-comate/references/git/clone.md +67 -0
  117. package/comate-engine/assets/skills/icode-comate/references/git/icode-git.md +68 -0
  118. package/comate-engine/assets/skills/icode-comate/references/git/push.md +64 -0
  119. package/comate-engine/assets/skills/icode-comate/references/git/push_cr.md +103 -0
  120. package/comate-engine/assets/skills/icode-comate/references/install.md +144 -0
  121. package/comate-engine/assets/skills/icode-comate/references/login.md +111 -0
  122. package/comate-engine/assets/skills/icode-comate/scripts/add-reviewer.sh +154 -0
  123. package/comate-engine/assets/skills/icode-comate/scripts/common.sh +145 -0
  124. package/comate-engine/assets/skills/icode-comate/scripts/fix-machine-check.sh +131 -0
  125. package/comate-engine/assets/skills/icode-comate/scripts/merge-cr.sh +105 -0
  126. package/comate-engine/assets/skills/icode-comate/scripts/ssh-setup.sh +159 -0
  127. package/comate-engine/assets/skills/icode-comate/scripts/submit-acr.sh +236 -0
  128. package/comate-engine/assets/skills/icode-comate/scripts/submit-cr.sh +104 -0
  129. package/comate-engine/assets/skills/icode-comate/scripts/test-preflight.sh +89 -0
  130. package/comate-engine/assets/skills/ku-operator-comate/SKILL.md +121 -0
  131. package/comate-engine/assets/skills/ku-operator-comate/examples.md +190 -0
  132. package/comate-engine/assets/skills/ku-operator-comate/references/add_member.md +49 -0
  133. package/comate-engine/assets/skills/ku-operator-comate/references/change_scope.md +38 -0
  134. package/comate-engine/assets/skills/ku-operator-comate/references/copy_doc.md +50 -0
  135. package/comate-engine/assets/skills/ku-operator-comate/references/create_doc.md +61 -0
  136. package/comate-engine/assets/skills/ku-operator-comate/references/delete_doc.md +31 -0
  137. package/comate-engine/assets/skills/ku-operator-comate/references/edit_content.md +568 -0
  138. package/comate-engine/assets/skills/ku-operator-comate/references/move_doc.md +45 -0
  139. package/comate-engine/assets/skills/ku-operator-comate/references/query_comment.md +79 -0
  140. package/comate-engine/assets/skills/ku-operator-comate/references/query_content.md +83 -0
  141. package/comate-engine/assets/skills/ku-operator-comate/references/query_flowchart.md +84 -0
  142. package/comate-engine/assets/skills/ku-operator-comate/references/query_permission.md +38 -0
  143. package/comate-engine/assets/skills/ku-operator-comate/references/query_recent_view.md +67 -0
  144. package/comate-engine/assets/skills/ku-operator-comate/references/query_repo.md +57 -0
  145. package/comate-engine/assets/skills/ku-operator-comate/references/query_user_info.md +37 -0
  146. package/comate-engine/assets/skills/ku-operator-comate/references/update_member.md +41 -0
  147. package/comate-engine/assets/skills/ku-operator-comate/references/upload_attachment.md +52 -0
  148. package/comate-engine/assets/skills/ku-operator-comate/scripts/ku_operator.py +1575 -0
  149. package/comate-engine/node_modules/better-sqlite3/node_modules/.bin/prebuild-install +2 -2
  150. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build +2 -2
  151. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-optional +2 -2
  152. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-test +2 -2
  153. package/comate-engine/package.json +2 -0
  154. package/comate-engine/server.js +263 -79
  155. package/dist/bundle/index.js +3 -3
  156. package/package.json +1 -1
  157. package/comate-engine/assets/skills/figma2code-comate/codeConnect.md +0 -37
  158. package/comate-engine/assets/skills/figma2code-comate/designToken.md +0 -3
  159. package/comate-engine/assets/skills/figma2code-comate/f2cMcp.md +0 -59
  160. package/comate-engine/assets/skills/smart-commit/SKILL.md +0 -646
  161. package/comate-engine/node_modules/@comate/plugin-host/dist/index-AZIho4HV.js +0 -1
  162. package/comate-engine/node_modules/@comate/plugin-host/dist/user-BIpzRUfb.js +0 -44
  163. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/issue_type_mapping.json +0 -0
  164. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/query_reference.md +0 -0
  165. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/compat.py +0 -0
  166. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/create_card_cli.py +0 -0
  167. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/__init__.py +0 -0
  168. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/logger.py +0 -0
  169. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/recognize_card_cli.py +0 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: get-ugate-token
3
+ description: 获取并缓存 ugate token,供其他 skill 依赖使用进行API调用(多用户版本,永久有效)
4
+ metadata:
5
+ enableWhen:
6
+ - isInternal
7
+ ---
8
+
9
+ # get-ugate-token Skill
10
+
11
+ ## 功能描述
12
+ 该 skill 用于获取并缓存 ugate token,供其他 skill 依赖使用进行API调用。支持多用户独立缓存,每个用户有独立的缓存文件。
13
+
14
+ **核心特性:**
15
+ - 所有 token 都是永久有效的
16
+ - 支持用户手动输入 token
17
+ - 用户名: ${COMATE_USERNAME}
18
+
19
+
20
+ ## 文件结构
21
+
22
+ ```
23
+ get-ugate-token/
24
+ ├── SKILL.md # 技能说明文档
25
+ └── getUgateToken.py # Python 主脚本
26
+ ```
27
+
28
+ ## 工作流程
29
+
30
+ ### 1. 手动输入 Token
31
+
32
+ **当用户发送格式为 `ugate token: xxxx` 或 `ugate token:xxxx`(中文冒号)的消息时:**
33
+
34
+ 1. **提取 token** - 从用户消息中提取 token 内容
35
+ 2. **保存到缓存** - 将 token 保存到用户的缓存文件
36
+ 3. **返回成功消息** - 输出 `TOKEN_SAVED:Token 已保存`
37
+
38
+ **示例:**
39
+
40
+ ```bash
41
+ # 用户发送消息:ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
42
+ USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 getUgateToken.py chenshouqin 2>&1
43
+ TOKEN_SAVED:Token 已保存
44
+ eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
45
+ ```
46
+
47
+ ### 2. 检查缓存的 token
48
+
49
+ - 检查文件 `~/.config/uuap/.eac_ugate_token_{username}` 是否存在
50
+ - 如果文件存在,直接返回缓存的 token(永久有效)
51
+
52
+ ### 3. 需要手动获取 token
53
+
54
+ 如果缓存不存在:
55
+
56
+ 1. **返回提示消息** - 输出到 stderr,格式为 `NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我`
57
+ 2. **退出码为 2** - 表示需要手动获取 token(区别于错误退出码 1)
58
+
59
+ 用户需要:
60
+ - 访问 https://uuap.baidu.com/agent/token
61
+ - 复制页面内容
62
+ - 将内容发送给技能调用者
63
+
64
+ ## 使用方法
65
+
66
+ ```bash
67
+ # 获取 ugate token(需要传入用户名)
68
+ python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
69
+
70
+ # 手动输入 token(通过 USER_MESSAGE 环境变量)
71
+ USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
72
+ ```
73
+
74
+ ## 输出格式
75
+
76
+ ### 成功场景(缓存有效)
77
+
78
+ ```bash
79
+ $ python3 getUgateToken.py chenshouqin
80
+ eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
81
+ ```
82
+
83
+ ### 手动输入 token 场景
84
+
85
+ ```bash
86
+ $ USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 getUgateToken.py chenshouqin 2>&1
87
+ TOKEN_SAVED:Token 已保存
88
+ eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
89
+ ```
90
+
91
+ ### 需要手动获取场景(缓存无效)
92
+
93
+ 脚本会输出到 stderr 并以退出码 2 退出:
94
+
95
+ ```bash
96
+ $ python3 getUgateToken.py chenshouqin 2>&1
97
+ NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我
98
+ ```
99
+
100
+ ## 强制刷新
101
+
102
+ 当用户消息中包含以下关键词时,会忽略缓存:
103
+
104
+ - 重新生成ugate
105
+ - 刷新ugate
106
+ - 重新生成 ugate
107
+ - 刷新 ugate
108
+ - 强制刷新
109
+ - 重新获取
110
+ - 重新生成token
111
+ - 刷新token
112
+ - 重新生成 token
113
+ - 刷新 token
114
+ - 强制刷新token
115
+ - 忽略缓存
116
+
117
+ **使用方式:** 在调用脚本时设置环境变量 `USER_MESSAGE`,例如:
118
+
119
+ ```bash
120
+ USER_MESSAGE="刷新ugate" python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
121
+ ```
122
+
123
+ ## 环境变量依赖
124
+
125
+ - `USER_MESSAGE` - 用户原始消息(可选,用于判断是否强制刷新或手动输入 token)
126
+
127
+ ## 缓存机制
128
+
129
+ - **缓存文件:** `~/.config/uuap/.eac_ugate_token_{username}`(多用户独立缓存)
130
+ - **缓存格式:** JSON
131
+ ```json
132
+ {
133
+ "token": "xxx",
134
+ "permanent": true
135
+ }
136
+ ```
137
+ - **缓存时长:** 永久有效
138
+
139
+ ## 多用户支持
140
+
141
+ 每个用户有独立的缓存文件,文件名格式为 `.eac_ugate_token_{username}`,例如:
142
+
143
+ - 用户 `chenshouqin` → `~/.config/uuap/.eac_ugate_token_chenshouqin`
144
+ - 用户 `zhangjianxing` → `~/.config/uuap/.eac_ugate_token_zhangjianxing`
145
+
146
+ 这样可以避免不同用户的 token 相互干扰。
147
+
148
+ ## 退出码说明
149
+
150
+ - **0**: 成功,token 已返回
151
+ - **1**: 错误(参数缺失等)
152
+ - **2**: 需要手动获取 token(缓存无效,请提示用户访问 https://uuap.baidu.com/agent/token)
153
+
154
+ ## 注意事项
155
+
156
+ - token 会缓存到本地文件中,避免重复获取
157
+ - 每个用户有独立的缓存文件,互不干扰
158
+ - 所有 token 都是永久有效的
159
+ - **手动输入 token 格式:** `ugate token: <token内容>` 或 `ugate token:<token内容>`(中文冒号)
@@ -0,0 +1,150 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ 获取并缓存 ugate token(多用户版本,永久有效)
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import json
10
+ import re
11
+ from pathlib import Path
12
+
13
+ # 配置常量
14
+ CACHE_DIR = Path.home() / ".config" / "uuap"
15
+
16
+ # 强制刷新的关键词
17
+ FORCE_REFRESH_KEYWORDS = [
18
+ "重新生成ugate",
19
+ "刷新ugate",
20
+ "重新生成 ugate",
21
+ "刷新 ugate",
22
+ "强制刷新",
23
+ "重新获取",
24
+ "重新生成token",
25
+ "刷新token",
26
+ "重新生成 token",
27
+ "刷新 token",
28
+ "强制刷新token",
29
+ "忽略缓存",
30
+ ]
31
+
32
+
33
+ def get_cache_file(username):
34
+ """根据用户名获取对应的缓存文件路径"""
35
+ return CACHE_DIR / f".eac_ugate_token_{username}"
36
+
37
+
38
+ def should_force_refresh(user_message):
39
+ """检查用户消息是否包含强制刷新的关键词"""
40
+ if not user_message:
41
+ return False
42
+
43
+ user_message_lower = user_message.lower()
44
+ return any(keyword in user_message_lower for keyword in FORCE_REFRESH_KEYWORDS)
45
+
46
+
47
+ def extract_manual_token(user_message):
48
+ """
49
+ 从用户消息中提取手动输入的 token
50
+ 支持格式:ugate token: xxxx 或 ugate token:xxxx(中文冒号)
51
+
52
+ Returns:
53
+ str: 提取到的 token,如果格式不匹配则返回 None
54
+ """
55
+ if not user_message:
56
+ return None
57
+
58
+ # 支持中英文冒号,支持大小写
59
+ pattern = r'ugate\s+token\s*[::]\s*(\S.+)'
60
+ match = re.search(pattern, user_message, re.IGNORECASE)
61
+
62
+ if match:
63
+ return match.group(1).strip()
64
+
65
+ return None
66
+
67
+
68
+ def get_cached_token(username):
69
+ """
70
+ 从缓存读取 token
71
+
72
+ 如果缓存文件中存在 expires_at 字段,则认为 token 无效,返回 None
73
+ """
74
+ cache_file = get_cache_file(username)
75
+
76
+ if not cache_file.exists():
77
+ return None
78
+
79
+ try:
80
+ with open(cache_file, 'r') as f:
81
+ data = json.load(f)
82
+
83
+ # 如果存在 expires_at 字段,认为 token 无效
84
+ if 'expires_at' in data:
85
+ return None
86
+
87
+ token = data.get('token')
88
+ if not token:
89
+ return None
90
+
91
+ return token
92
+ except (json.JSONDecodeError, KeyError):
93
+ pass
94
+
95
+ return None
96
+
97
+
98
+ def save_token_to_cache(token, username):
99
+ """
100
+ 将 token 保存到缓存(永久有效)
101
+ """
102
+ CACHE_DIR.mkdir(parents=True, exist_ok=True)
103
+ cache_file = get_cache_file(username)
104
+
105
+ with open(cache_file, 'w') as f:
106
+ cache_data = {
107
+ 'token': token,
108
+ 'permanent': True, # 所有 token 都是永久有效
109
+ }
110
+ json.dump(cache_data, f)
111
+
112
+
113
+ def main():
114
+ """主函数"""
115
+ # 从命令行参数获取用户名
116
+ if len(sys.argv) < 2:
117
+ print("请输入您的邮箱前缀(例如:chenshouqin)", file=sys.stderr)
118
+ sys.exit(1)
119
+
120
+ username = sys.argv[1]
121
+
122
+ # 获取用户消息(用于判断是否强制刷新或手动输入 token)
123
+ user_message = os.environ.get('USER_MESSAGE', '')
124
+
125
+ # 1. 检查用户是否手动输入了 token(格式:ugate token: xxxx)
126
+ manual_token = extract_manual_token(user_message)
127
+ if manual_token:
128
+ # 保存到缓存(永久有效)
129
+ save_token_to_cache(manual_token, username)
130
+ print(f"TOKEN_SAVED:Token 已保存", file=sys.stderr)
131
+ print(manual_token)
132
+ return
133
+
134
+ # 2. 检查是否需要强制刷新
135
+ force_refresh = should_force_refresh(user_message)
136
+
137
+ # 3. 尝试从缓存获取(除非强制刷新)
138
+ if not force_refresh:
139
+ cached_token = get_cached_token(username)
140
+ if cached_token:
141
+ print(cached_token)
142
+ return
143
+
144
+ # 4. 缓存不存在或强制刷新,提示用户手动获取 token
145
+ print(f"NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我", file=sys.stderr)
146
+ sys.exit(2)
147
+
148
+
149
+ if __name__ == "__main__":
150
+ main()
@@ -0,0 +1,240 @@
1
+ ---
2
+ name: icafe
3
+ description: |
4
+ 当用户涉及以下任何场景时,应使用此技能:
5
+ - 查询、创建、更新 iCafe 卡片 (Card/Issue),包括 Story、Bug、Task、Epic
6
+ - 管理卡片评论 (Comment),如新建评论、获取评论
7
+ - 查询卡片的流程状态 (Status)、操作历史和状态变更记录
8
+ - 查询空间 (Space) 信息、卡片类型、字段定义
9
+ - 管理迭代计划 (Plan)、里程碑 (Milestone)
10
+ - 查询研发数据链 (DevInfo): 代码评审、代码合入、部署等
11
+ - 使用 IQL 查询语言按条件筛选卡片
12
+ - 在 iCode (Git/Gerrit) 提交代码时需要绑定 iCafe 卡片
13
+ - 发起代码评审 (CR) 需要关联卡片信息
14
+ - 使用 AI 对卡片内容进行预审 (ai-pre-review)
15
+ - 使用 AI 根据卡片内容自动生成代码 (ai-codegen)
16
+ metadata:
17
+ cli_version: "0.1.0"
18
+ enableWhen:
19
+ - isInternal
20
+ allowed-tools:
21
+ - Bash(*icafe-cli *)
22
+ - Bash(*/.icafe-cli/bin/icafe-cli *)
23
+ - Bash(ICAFE_CLI_VERSION=* bash -c *)
24
+ - Bash(git log *)
25
+ - Bash(git rev-parse *)
26
+ - Bash(git remote *)
27
+ - Bash(git diff *)
28
+ - Bash(git status *)
29
+ - Bash(git branch *)
30
+ - Read(*icafe-official*)
31
+ - Read(*icafe-official/**)
32
+ - Read(*icafe-official/**/*)
33
+ ---
34
+
35
+ # iCafe CLI
36
+
37
+ iCafe Assistant 通过 `icafe-cli` 命令行工具与 iCafe 平台交互,支持卡片管理、计划管理、研发数据查询和 AI 预审/代码生成。
38
+
39
+ ## 安装与认证
40
+
41
+ ### 首次执行前检查(每次会话仅需一次)
42
+
43
+ ```bash
44
+ icafe-cli version
45
+ ```
46
+
47
+ - **command not found** → 尝试 `~/.icafe-cli/bin/icafe-cli version`,仍失败则安装:
48
+ ```bash
49
+ curl -fsSL https://issue-luigi-public.bj.bcebos.com/icafe-cli/install_icafe_cli.sh | ICAFE_CLI_VERSION=0.1.0 bash
50
+ ```
51
+ - **版本低于 `0.1.0`** → 执行上面安装命令覆盖升级
52
+ - **版本正常** → 后续直接使用
53
+ - **当前用户名**: ${COMATE_USERNAME},即`COMATE_USERNAME=${COMATE_USERNAME}`
54
+
55
+
56
+ ### 未登录错误 (auth_failed, exit code 1)
57
+
58
+ ```bash
59
+ icafe-cli login --token <ugate-token> # Token 获取: https://uuap.baidu.com/agent/token
60
+ icafe-cli login status # 查看登录状态
61
+ ```
62
+
63
+ ## 核心约束
64
+
65
+ 1. **涉及 Git/iCode/CR/Gerrit 时禁止问用户**: 当用户涉及 git commit、代码提交、发起评审 (CR)、iCode、Gerrit 等场景需要绑定卡片时,**必须全自动决策,禁止让用户选空间、选卡片、选类型**。**必须先调 `card smart-find` 搜索已有卡片,禁止跳过直接建卡**。详见 [零交互版 Git 绑定工作流](references/git-auto-bindcard-workflow.md)
66
+ 2. **space 不要猜**: 其他场景缺少空间时优先 `card smart-find` 推断,或 `space latest` 获取,或询问用户
67
+ 2. **space 用 prefixCode**: `--space myspace`(字符串),不是数字 ID
68
+ 3. **detail 必须 HTML**: `--detail "<p>内容</p>"`,Markdown 需先转换(见下方对照表)
69
+ 4. **字段名用中文**: `--fields "负责人=zhangsan,优先级=P1-High"`
70
+ 5. **card get/query 始终用 --brief**: 仅 `card get` 和 `card query` 支持 `--brief`,节省 70-90% 上下文。`smart-find` 本身已是精简输出,不支持也不需要 `--brief`
71
+ 6. **命令路径**: 如果 `icafe-cli` 报 command not found,改用完整路径 `~/.icafe-cli/bin/icafe-cli`(安装脚本的 PATH 配置仅在新终端生效)
72
+
73
+ ## 命令总览
74
+
75
+ ```
76
+ icafe-cli
77
+ ├── card 卡片管理
78
+ │ ├── get 获取卡片详情 (--space, --sequence, --brief)
79
+ │ ├── create 创建卡片 (--space, --title, --type)
80
+ │ ├── update 更新卡片 (--space, --sequence, +可选字段)
81
+ │ ├── query 查询卡片 (--space, --iql, --brief)
82
+ │ ├── next-statuses 可流转的目标状态 (--space, --sequence)
83
+ │ ├── current-status 当前流程状态 (--space, --sequence)
84
+ │ ├── history 全量操作历史 (--space, --sequences)
85
+ │ └── status-changes 状态流转历史 (--space, --sequences)
86
+ ├── comment 评论管理
87
+ │ ├── create 添加评论 (--space, --sequence, --content)
88
+ │ ├── get 获取评论 (--space, --sequence)
89
+ │ └── update 修改评论 (--space, --comment-id, --content)
90
+ ├── space 空间管理
91
+ │ ├── latest 最近访问的空间
92
+ │ ├── tree 空间树 (--username, --permission)
93
+ │ ├── issue-types 卡片类型列表 (--space)
94
+ │ ├── type-fields 类型字段定义 (--space, --type)
95
+ │ ├── type-statuses 类型流程状态 (--space, --type)
96
+ ├── plan 计划管理
97
+ │ ├── list / get / create / update-date / milestones
98
+ ├── devinfo 研发数据链
99
+ │ ├── card 卡片研发数据 (--space, --sequences)
100
+ │ └── active-cards 有研发活动的卡片 (--space)
101
+ ├── ai-pre-review 卡片预审 (AI)
102
+ │ ├── start 发起预审 (--space, --sequence; --rules 可选)
103
+ │ ├── result 查询结果 (--conversation-id 或 --space+--sequence)
104
+ │ └── rules 查询预审规则 (--space)
105
+ ├── ai-codegen 代码生成 (AI)
106
+ │ ├── start 发起生成 (--space, --sequence; --repo, --branch 可选)
107
+ │ └── result 查询结果 (--conversation-id 或 --space+--sequence)
108
+ ├── login / logout / cache clean / completion / version
109
+ ```
110
+
111
+ 每个命令的完整参数、返回 JSON 结构和字段说明 → [命令详细参考](references/commands.md)
112
+
113
+ ## 常用命令速查
114
+
115
+ ### 智能寻卡(不确定空间/卡片时首选)
116
+
117
+ ```bash
118
+ icafe-cli card smart-find # 返回活跃卡片 + stats.bySpace/bySpaceType 统计
119
+ ```
120
+
121
+ ### 查询卡片
122
+
123
+ ```bash
124
+ icafe-cli card get --space myspace --sequence 1001 --brief
125
+ icafe-cli card query --space myspace --iql "负责人 = currentUser AND 流程状态 != 已关闭" --brief
126
+ ```
127
+
128
+ ### 创建卡片
129
+
130
+ ```bash
131
+ icafe-cli card create --space myspace --title "修复登录Bug" --type Bug
132
+ icafe-cli card create --space myspace --title "新功能" --type Story \
133
+ --detail "<p>描述</p>" --priority P1-High --assignee zhangsan
134
+ ```
135
+
136
+ > 空间/类型不确定时 → 参考 [智能建卡工作流](references/smart-create-workflow.md)
137
+
138
+ ### 更新卡片
139
+
140
+ ```bash
141
+ icafe-cli card update --space myspace --sequence 1001 --status 开发中
142
+ icafe-cli card update --space myspace --sequence 1001 --assignee zhangsan --priority P1-High
143
+ ```
144
+
145
+ > 改状态前先 `card next-statuses` 确认可达状态。完整流程 → [智能改卡工作流](references/smart-update-workflow.md)
146
+
147
+ ### AI 预审 & 代码生成
148
+
149
+ ```bash
150
+ # 预审
151
+ icafe-cli ai-pre-review start --space myspace --sequence 1001
152
+ icafe-cli ai-pre-review result --space myspace --sequence 1001
153
+
154
+ # 代码生成 (在 git 仓库目录下自动检测 repo)
155
+ icafe-cli ai-codegen start --space myspace --sequence 1001
156
+ icafe-cli ai-codegen result --space myspace --sequence 1001
157
+ ```
158
+
159
+ > 完整的异步轮询流程 → [AI 预审与代码生成工作流](references/ai-workflows.md)
160
+
161
+ ### 空间与字段
162
+
163
+ ```bash
164
+ icafe-cli space latest # 最近访问的空间
165
+ icafe-cli space issue-types --space myspace # 卡片类型列表
166
+ icafe-cli space type-fields --space myspace --type Story # 字段定义和可选值
167
+ icafe-cli space type-statuses --space myspace --type Story # 流程状态列表
168
+ icafe-cli ai-pre-review rules --space myspace # 预审规则
169
+ ```
170
+
171
+ ## Markdown → HTML 对照表
172
+
173
+ | Markdown | HTML |
174
+ |----------|------|
175
+ | `**粗体**` | `<strong>粗体</strong>` |
176
+ | `*斜体*` | `<em>斜体</em>` |
177
+ | `# 标题` | `<h1>标题</h1>` |
178
+ | `- 列表` | `<ul><li>列表</li></ul>` |
179
+ | `1. 列表` | `<ol><li>列表</li></ol>` |
180
+ | `` `代码` `` | `<code>代码</code>` |
181
+ | `[链接](url)` | `<a href="url">链接</a>` |
182
+ | `换行` | `<br>` |
183
+
184
+ ## IQL 速查
185
+
186
+ 字段名用**中文**,详见 [IQL 语法参考](references/iql-syntax.md)。
187
+
188
+ ```
189
+ 负责人 = currentUser # 当前用户的卡片
190
+ 类型 = Bug AND 优先级 = P1-High # 高优 Bug
191
+ 标题 ~ 登录 # 标题含"登录"
192
+ 流程状态 in (新建, 开发中) # 多状态
193
+ 创建时间 > "2024-01-01" # 日期(不支持 >=)
194
+ ```
195
+
196
+ ## 错误处理
197
+
198
+ - **退出码**: `0` 成功 / `1` 未登录 / `2` 参数校验 / `4` HTTP 错误
199
+ - **业务成功判断**: `card get/update/query` 检查 `code=200`,`ai-pre-review/ai-codegen` 检查 `status="OK"`,其他检查 `status=200`
200
+ - 详见 [错误处理参考](references/error-handling.md)
201
+
202
+ ## 缓存
203
+
204
+ | 对象 | TTL |
205
+ |------|-----|
206
+ | space/plan 相关查询 | 20 分钟 |
207
+ | `card smart-find` 结果 | 10 分钟 |
208
+ | 最近访问空间列表 | 1 小时 |
209
+ | spaceId / issueId 映射 | 1 天 |
210
+
211
+ ```bash
212
+ icafe-cli cache clean # 清除所有缓存
213
+ icafe-cli space latest --no-cache # 跳过缓存
214
+ ```
215
+
216
+ ## 卡片 URL
217
+
218
+ ```
219
+ https://console.cloud.baidu-int.com/devops/icafe/issue/{space}-{sequence}/show
220
+ ```
221
+
222
+ ## 工作流参考
223
+
224
+ | 场景 | 参考文档 |
225
+ |------|---------|
226
+ | 不确定空间/卡片 → 智能定位 | [智能寻卡](references/smart-find-workflow.md) |
227
+ | 不确定空间/类型 → 智能创建 | [智能建卡](references/smart-create-workflow.md) |
228
+ | 修改字段/状态 → 安全更新 | [智能改卡](references/smart-update-workflow.md) |
229
+ | **Git 提交/评审 → 绑定卡片** | **默认使用 [零交互版](references/git-auto-bindcard-workflow.md)**(全自动决策,不问用户) |
230
+ | Git 绑定卡片(交互式) | [交互版](references/git-bindcard-workflow.md)(仅当用户明确要求"让我选卡片"时使用) |
231
+ | AI 预审 / 代码生成 | [AI 工作流](references/ai-workflows.md) |
232
+
233
+ ## 参考资料
234
+
235
+ | 文件 | 内容 |
236
+ |------|------|
237
+ | [命令详细参考](references/commands.md) | 所有命令的参数表、返回 JSON、字段类型格式 |
238
+ | [错误处理](references/error-handling.md) | 退出码、错误码、诊断方法 |
239
+ | [IQL 语法](references/iql-syntax.md) | 查询语言完整语法 |
240
+ | [平台概念](references/platform-concepts.md) | 空间、卡片、状态、计划等核心概念 |