yidaconnector 2026.6.11
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/LICENSE +21 -0
- package/README.md +383 -0
- package/bin/yida.js +670 -0
- package/lib/app/form-navigation.js +58 -0
- package/lib/app/get-schema.js +538 -0
- package/lib/auth/auth.js +294 -0
- package/lib/auth/cdp-browser-login.js +390 -0
- package/lib/auth/codex-login.js +71 -0
- package/lib/auth/login.js +475 -0
- package/lib/auth/org.js +363 -0
- package/lib/auth/qr-login.js +1563 -0
- package/lib/core/chalk.js +384 -0
- package/lib/core/check-update.js +82 -0
- package/lib/core/cli-error.js +39 -0
- package/lib/core/command-manifest.js +106 -0
- package/lib/core/env-cmd.js +545 -0
- package/lib/core/env-manager.js +601 -0
- package/lib/core/env.js +287 -0
- package/lib/core/i18n.js +177 -0
- package/lib/core/locales/ar.js +805 -0
- package/lib/core/locales/de.js +805 -0
- package/lib/core/locales/en.js +1623 -0
- package/lib/core/locales/es.js +805 -0
- package/lib/core/locales/fr.js +805 -0
- package/lib/core/locales/hi.js +805 -0
- package/lib/core/locales/ja.js +1197 -0
- package/lib/core/locales/ko.js +807 -0
- package/lib/core/locales/pt.js +805 -0
- package/lib/core/locales/vi.js +805 -0
- package/lib/core/locales/zh-HK.js +1233 -0
- package/lib/core/locales/zh.js +1584 -0
- package/lib/core/query-data.js +781 -0
- package/lib/core/redact.js +100 -0
- package/lib/core/utils.js +799 -0
- package/lib/core/yida-client.js +117 -0
- package/package.json +94 -0
- package/project/config.json +4 -0
- package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
- package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
- package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
- package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
- package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
- package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
- package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
- package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
- package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
- package/project/prd/demo-birthday-game.md +39 -0
- package/project/prd/demo-crm.md +463 -0
- package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
- package/project/prd/demo-future-vision-2026.md +78 -0
- package/project/prd/demo-salary-calculator.md +101 -0
- package/scripts/build-skills-package.js +406 -0
- package/scripts/check-syntax.js +59 -0
- package/scripts/demo-dws.sh +106 -0
- package/scripts/e2e-real/cleanup.js +67 -0
- package/scripts/e2e-real/fixtures/form-fields.json +18 -0
- package/scripts/e2e-real/full-runner.js +1566 -0
- package/scripts/e2e-real/runner.js +293 -0
- package/scripts/e2e-real/skill-coverage.js +115 -0
- package/scripts/generate-command-docs.js +109 -0
- package/scripts/nightly-smoke.js +134 -0
- package/scripts/postinstall.js +545 -0
- package/scripts/solution-center-runner.js +368 -0
- package/scripts/validate-ci.sh +50 -0
- package/scripts/validate-command-manifest.js +119 -0
- package/scripts/validate-package-size.js +78 -0
- package/scripts/validate-skills.js +247 -0
- package/scripts/validate-structure.js +66 -0
- package/yida-skills/SKILL.md +163 -0
- package/yida-skills/references/yida-api.md +1309 -0
- package/yida-skills/skills/large-file-write/SKILL.md +91 -0
- package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
- package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
- package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
- package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
- package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
- package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
- package/yida-skills/skills/yida-login/SKILL.md +159 -0
- package/yida-skills/skills/yida-logout/SKILL.md +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alibaba Group Holding Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
# YidaConnector
|
|
6
|
+
|
|
7
|
+
**宜搭数据查询与登录态管理 CLI。**
|
|
8
|
+
|
|
9
|
+
YidaConnector 让 AI 编程助手(悟空 / Claude Code / Codex / Cursor / OpenCode 等)和宜搭低代码平台对接,专注于表单、流程、任务、子表单数据的查询与变更,以及登录态、多组织、多环境的管理。
|
|
10
|
+
|
|
11
|
+
[Quick Start](#quick-start) · [Data Command](#data-command) · [CLI Reference](#cli-reference) · [Contributing](./CONTRIBUTING.md) · [Changelog](./CHANGELOG.md)
|
|
12
|
+
|
|
13
|
+
[](https://www.npmjs.com/package/yidaconnector)
|
|
14
|
+
[](https://www.npmjs.com/package/yidaconnector)
|
|
15
|
+
[](https://github.com/bunnyrui/yidaconnector/actions/workflows/ci.yml)
|
|
16
|
+
[](./LICENSE)
|
|
17
|
+
[](https://nodejs.org)
|
|
18
|
+
|
|
19
|
+
**Documentation:** [GitHub README](https://github.com/bunnyrui/yidaconnector#readme)
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
### 1. Install
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g yidaconnector
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
YidaConnector requires Node.js 18 or later. The package exposes both `yidaconnector` and `yida` commands.
|
|
34
|
+
|
|
35
|
+
### 2. Check Your Environment
|
|
36
|
+
|
|
37
|
+
Run this from the AI coding workspace where you want YidaConnector to operate:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
yidaconnector env
|
|
41
|
+
yidaconnector env --json
|
|
42
|
+
yidaconnector commands --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
YidaConnector detects the active agent environment, workspace path, login state, and organization context. Use `--json` when an agent needs a stable machine-readable snapshot.
|
|
46
|
+
`yidaconnector commands --json` emits the command manifest used by the CLI help, so agents can inspect available routes without scraping terminal output.
|
|
47
|
+
|
|
48
|
+
### 3. Log In
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
yidaconnector login
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
In Codex, QoderWork, Qoder, Wukong, Claude Code, OpenCode, Cursor, and other detected AI tools, YidaConnector first tries local Chrome/Edge/Chromium CDP when no valid cached login exists. If local CDP is unavailable, it falls back to an AI-dialog QR handoff. The explicit `yidaconnector login --browser` command still prefers CDP first and uses Playwright as an optional browser fallback.
|
|
55
|
+
|
|
56
|
+
When the user names a target Yida entry URL, pass it to the login command so YidaConnector can select the matching environment and cookie file. For example, Alibaba intranet Yida:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
yidaconnector login https://yida-group.alibaba-inc.com/
|
|
60
|
+
yidaconnector login --alibaba
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
For terminal QR login, use:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
yidaconnector login --qr
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 4. Query Data
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# 查询表单数据(分页)
|
|
73
|
+
yidaconnector data query form APP_XXX FORM_XXX --page 1 --size 20
|
|
74
|
+
|
|
75
|
+
# 查询全部表单数据(自动翻页)
|
|
76
|
+
yidaconnector data query form APP_XXX FORM_XXX --all
|
|
77
|
+
|
|
78
|
+
# 按条件查询
|
|
79
|
+
yidaconnector data query form APP_XXX FORM_XXX --search-json '[{"key":"radioField_xxx","op":"Equal","value":"合格"}]'
|
|
80
|
+
|
|
81
|
+
# 获取单条表单实例
|
|
82
|
+
yidaconnector data get form APP_XXX --inst-id FORM_INST_XXX
|
|
83
|
+
|
|
84
|
+
# 查询流程实例
|
|
85
|
+
yidaconnector data query process APP_XXX FORM_XXX --page 1 --size 10
|
|
86
|
+
|
|
87
|
+
# 查询待办任务
|
|
88
|
+
yidaconnector data query tasks APP_XXX --type todo
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## What YidaConnector Does
|
|
92
|
+
|
|
93
|
+
| Area | What you can do |
|
|
94
|
+
|------|-----------------|
|
|
95
|
+
| **Form data** | Query / get / create / update form instances; query subform rows |
|
|
96
|
+
| **Process data** | Query / get / create / update process instances; query operation records |
|
|
97
|
+
| **Task operations** | Query todo / done / submitted / cc tasks; execute (approve/reject) tasks |
|
|
98
|
+
| **Login state** | Login (CDP / QR / browser handoff), logout, refresh, status check |
|
|
99
|
+
| **Organization** | List and switch organizations (multi-org accounts) |
|
|
100
|
+
| **Environment** | Detect AI tool environment; manage public / private deployment profiles |
|
|
101
|
+
|
|
102
|
+
All data operations respect the current Yida login user's data permissions — YidaConnector never bypasses platform security controls.
|
|
103
|
+
|
|
104
|
+
## Data Command
|
|
105
|
+
|
|
106
|
+
`yidaconnector data` is the unified entry point for all data operations. The syntax is `data <action> <resource> [args] [options]`.
|
|
107
|
+
|
|
108
|
+
### Form Operations
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# 查询表单数据(分页 / 全量 / 按条件)
|
|
112
|
+
yidaconnector data query form <appType> <formUuid> [--page N] [--size N] [--all]
|
|
113
|
+
yidaconnector data query form <appType> <formUuid> --search-file .cache/yidaconnector/search.json
|
|
114
|
+
|
|
115
|
+
# 获取单条表单实例
|
|
116
|
+
yidaconnector data get form <appType> --inst-id <formInstId> [--form-uuid <formUuid>]
|
|
117
|
+
|
|
118
|
+
# 新建表单实例
|
|
119
|
+
yidaconnector data create form <appType> <formUuid> --data-file .cache/yidaconnector/data.json
|
|
120
|
+
|
|
121
|
+
# 更新表单实例
|
|
122
|
+
yidaconnector data update form <appType> --inst-id <formInstId> --data-file .cache/yidaconnector/data.json
|
|
123
|
+
|
|
124
|
+
# 查询子表单明细
|
|
125
|
+
yidaconnector data query subform <appType> <formUuid> --inst-id <formInstId> --table-field-id <fieldId>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Process Operations
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# 查询流程实例
|
|
132
|
+
yidaconnector data query process <appType> <formUuid> [--page N] [--size N]
|
|
133
|
+
|
|
134
|
+
# 获取单个流程实例
|
|
135
|
+
yidaconnector data get process <appType> --process-inst-id <processInstanceId>
|
|
136
|
+
|
|
137
|
+
# 发起流程
|
|
138
|
+
yidaconnector data create process <appType> <formUuid> --process-code <processCode> --data-file .cache/yidaconnector/data.json
|
|
139
|
+
|
|
140
|
+
# 更新流程表单数据
|
|
141
|
+
yidaconnector data update process <appType> --process-inst-id <processInstanceId> --data-file .cache/yidaconnector/data.json
|
|
142
|
+
|
|
143
|
+
# 查询操作记录
|
|
144
|
+
yidaconnector data query operation-records <appType> --process-inst-id <processInstanceId>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Task Operations
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# 查询任务列表(todo=待办 / done=已处理 / submitted=我发起的 / cc=抄送)
|
|
151
|
+
yidaconnector data query tasks <appType> --type <todo|done|submitted|cc> [--keyword <text>] [--page N] [--size N]
|
|
152
|
+
|
|
153
|
+
# 执行审批任务(同意/驳回)
|
|
154
|
+
yidaconnector data execute task <appType> \
|
|
155
|
+
--task-id <taskId> \
|
|
156
|
+
--process-inst-id <processInstanceId> \
|
|
157
|
+
--out-result <AGREE|DISAGREE> \
|
|
158
|
+
--remark "审批意见"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Data Command Notes
|
|
162
|
+
|
|
163
|
+
- **Component aliases**: Add `--resolve-aliases` to use field aliases (like `phone`) instead of raw field IDs (like `textField_xxx`) in `--data-json` / `--search-json`.
|
|
164
|
+
- **Date fields**: Yida date fields require 13-digit millisecond timestamps (e.g. `1719705600000`), not `YYYY-MM-DD` strings.
|
|
165
|
+
- **Page size**: Max 100 per page; `--all` auto-paginates; `--max-pages` caps the total pages fetched.
|
|
166
|
+
- **Temporary files**: Write query results, search JSON, and import data to `.cache/yidaconnector/` to keep the repository root clean.
|
|
167
|
+
|
|
168
|
+
## Login & Environment
|
|
169
|
+
|
|
170
|
+
### Login Modes
|
|
171
|
+
|
|
172
|
+
| Command | Behavior |
|
|
173
|
+
|---------|----------|
|
|
174
|
+
| `yidaconnector login` | Cache first; falls back to CDP, then QR handoff |
|
|
175
|
+
| `yidaconnector login --browser` | Force local browser (CDP, Playwright fallback) |
|
|
176
|
+
| `yidaconnector login --qr` | Force terminal QR code |
|
|
177
|
+
| `yidaconnector login --agent-qr` | Force AI-dialog QR handoff |
|
|
178
|
+
| `yidaconnector login --codex` / `--qoder` / `--wukong` | Tool-specific browser handoff |
|
|
179
|
+
| `yidaconnector login --check-only` | Read-only login state check, no login triggered |
|
|
180
|
+
| `yidaconnector login <url>` | Login to a specific Yida entry URL |
|
|
181
|
+
|
|
182
|
+
### Environment Management
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# 查看当前环境(AI 工具、登录态、base URL)
|
|
186
|
+
yidaconnector env
|
|
187
|
+
yidaconnector env --json
|
|
188
|
+
|
|
189
|
+
# 多环境管理(公有云 / 国际版 / 阿里内部 / 私有化)
|
|
190
|
+
yidaconnector env list
|
|
191
|
+
yidaconnector env switch <name>
|
|
192
|
+
yidaconnector env add <name>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Organization Switching
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
yidaconnector org list
|
|
199
|
+
yidaconnector org switch --corp-id <corpId>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## How It Works
|
|
203
|
+
|
|
204
|
+
```mermaid
|
|
205
|
+
flowchart LR
|
|
206
|
+
A["AI coding agent"] --> B["YidaConnector CLI"]
|
|
207
|
+
B --> C["Environment detection"]
|
|
208
|
+
B --> D["Login & org context"]
|
|
209
|
+
B --> E["Yida data API"]
|
|
210
|
+
E --> F["Form / process / task data"]
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
YidaConnector keeps platform-specific behavior inside the CLI, while agents interact with predictable commands and project files.
|
|
214
|
+
|
|
215
|
+
## Project Layout
|
|
216
|
+
|
|
217
|
+
```text
|
|
218
|
+
yidaconnector/
|
|
219
|
+
├── bin/yida.js # CLI entry and command routing
|
|
220
|
+
├── lib/
|
|
221
|
+
│ ├── app/ # Form schema helpers (get-schema, form-navigation)
|
|
222
|
+
│ ├── auth/ # Login (CDP / QR / Codex), auth state, org switch
|
|
223
|
+
│ └── core/ # Environment detection, i18n, data commands, HTTP client
|
|
224
|
+
├── project/ # Default workspace template
|
|
225
|
+
├── yida-skills/ # Source skill docs and Yida API references
|
|
226
|
+
└── scripts/ # CI, packaging, and installation helpers
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## CLI Reference
|
|
230
|
+
|
|
231
|
+
Run `yidaconnector --help` or `yidaconnector <command> --help` for detailed usage.
|
|
232
|
+
|
|
233
|
+
<!-- YIDACONNECTOR_COMMANDS_START -->
|
|
234
|
+
<!-- This section is generated by `npm run docs:commands`. Do not edit command rows by hand. -->
|
|
235
|
+
|
|
236
|
+
### Auth & Environment
|
|
237
|
+
|
|
238
|
+
| Command | Description |
|
|
239
|
+
|---------|-------------|
|
|
240
|
+
| `yidaconnector login [target-url] [--qr\|--agent-qr\|--codex\|--browser] [--env <name>\|--intl\|--overseas\|--global\|--yidaapps\|--alibaba] [--corp-id <corpId>]` | Login (cache first, --browser or --agent-qr when needed) |
|
|
241
|
+
| `yidaconnector logout` | Logout / switch account |
|
|
242
|
+
| `yidaconnector auth <status\|login\|refresh\|logout>` | Login state management |
|
|
243
|
+
| `yidaconnector org <list\|switch>` | Organization management (list / switch) |
|
|
244
|
+
| `yidaconnector env [--json]` | Detect AI tool environment & login state |
|
|
245
|
+
| `yidaconnector env <setup\|list\|show\|switch\|add\|remove>` | Manage public/private Yida environment profiles |
|
|
246
|
+
|
|
247
|
+
### Data & Permissions
|
|
248
|
+
|
|
249
|
+
| Command | Description |
|
|
250
|
+
|---------|-------------|
|
|
251
|
+
| `yidaconnector data <action> <resource> [args]` | Unified data management (form/process/task/subform) |
|
|
252
|
+
|
|
253
|
+
### Utility
|
|
254
|
+
|
|
255
|
+
| Command | Description |
|
|
256
|
+
|---------|-------------|
|
|
257
|
+
| `yidaconnector commands [--json]` | Output machine-readable command manifest |
|
|
258
|
+
|
|
259
|
+
<!-- YIDACONNECTOR_COMMANDS_END -->
|
|
260
|
+
|
|
261
|
+
### CLI Notes
|
|
262
|
+
|
|
263
|
+
#### Environment and Localization
|
|
264
|
+
|
|
265
|
+
Environment selectors such as `--env intl`, `--intl`, `--overseas`, `--global`, and `--yidaapps` can be used on login to choose the target Yida environment for that run. The `intl` preset uses `https://www.yidaapps.com` as the built-in Global YiDA entrypoint and DingTalk International OAuth at `https://login.dingtalk.io`.
|
|
266
|
+
|
|
267
|
+
#### Component Aliases
|
|
268
|
+
|
|
269
|
+
Yida form fields can have aliases (e.g. `phone` instead of `textField_xxx`). Use `yidaconnector data ... --resolve-aliases` to accept aliases in `--data-json` / `--search-json` inputs; YidaConnector translates them to field IDs before sending requests.
|
|
270
|
+
|
|
271
|
+
## Agent Skills
|
|
272
|
+
|
|
273
|
+
The `yida-skills/` directory is the source skill library. Release assets for Wukong are generated by `npm run build:skills`: the expanded package is written to `dist/skills/yidaconnector/`, and the upload-ready zip is written to `yidaconnector-skills.zip`.
|
|
274
|
+
|
|
275
|
+
| Skill | Purpose |
|
|
276
|
+
|------|---------|
|
|
277
|
+
| `yida-data-management` | Form / subform / process / task data query and mutation |
|
|
278
|
+
| `yida-login` | Login state management (usually auto-triggered) |
|
|
279
|
+
| `yida-logout` | Logout / switch account |
|
|
280
|
+
| `large-file-write` | Reliable large file write helper |
|
|
281
|
+
|
|
282
|
+
For Wukong manual import, upload the generated `yidaconnector-skills.zip`. For Codex, `npm install -g yidaconnector` additionally creates a local plugin marketplace under `~/.yidaconnector/codex-plugin`.
|
|
283
|
+
|
|
284
|
+
## Wukong Installation
|
|
285
|
+
|
|
286
|
+
Wukong uses manual skill package installation instead of npm:
|
|
287
|
+
|
|
288
|
+
1. Download the latest `.zip` skill package from [GitHub Releases](https://github.com/bunnyrui/yidaconnector/releases).
|
|
289
|
+
2. Open Wukong.
|
|
290
|
+
3. Go to **Skill Center** > **Upload Skill** and select the downloaded package.
|
|
291
|
+
|
|
292
|
+
For Wukong terminal work, make sure its bundled Node.js path is active before running `node`, `npm`, or `npx` commands:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
export PATH="$HOME/.real/.bin/node/bin:$PATH"
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Supported AI Coding Tools
|
|
299
|
+
|
|
300
|
+
| Tool | Support |
|
|
301
|
+
|------|---------|
|
|
302
|
+
| [Codex](https://openai.com/codex/) | Full support |
|
|
303
|
+
| [Claude Code](https://claude.ai/code) | Full support |
|
|
304
|
+
| [Aone Copilot](https://copilot.code.alibaba-inc.com) | Full support |
|
|
305
|
+
| [OpenCode](https://opencode.ai) | Full support |
|
|
306
|
+
| [Cursor](https://cursor.com/) | Full support |
|
|
307
|
+
| [Visual Studio Code](https://code.visualstudio.com/) | Full support |
|
|
308
|
+
| [QoderWork](https://qoder.com) | Full support |
|
|
309
|
+
| [Qoder](https://qoder.com) | Full support |
|
|
310
|
+
| [Wukong](https://dingtalk.com/wukong) | Full support |
|
|
311
|
+
|
|
312
|
+
## Development
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
git clone https://github.com/bunnyrui/yidaconnector.git
|
|
316
|
+
cd yidaconnector
|
|
317
|
+
npm install
|
|
318
|
+
npm run check:ci
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Useful checks:
|
|
322
|
+
|
|
323
|
+
| Command | Purpose |
|
|
324
|
+
|---------|---------|
|
|
325
|
+
| `npm test` | Run Jest tests |
|
|
326
|
+
| `npm run lint` | Run ESLint |
|
|
327
|
+
| `npm run check:quick` | Run structure, manifest, syntax, and lint checks |
|
|
328
|
+
| `npm run check:commands` | Validate router, command manifest, and README alignment |
|
|
329
|
+
| `npm run docs:commands` | Regenerate the README command index from the manifest |
|
|
330
|
+
| `npm run check:docs` | Verify generated README command docs are current |
|
|
331
|
+
| `npm run check:syntax` | Validate JavaScript syntax |
|
|
332
|
+
| `npm run check:skills` | Validate agent skills structure and links |
|
|
333
|
+
|
|
334
|
+
When adding new CLI commands, register the route in `bin/yida.js`, add it to `lib/core/command-manifest.js`, regenerate the README command index with `npm run docs:commands`, and keep agent skills in `yida-skills/` aligned. `npm run check:commands` fails if the router, manifest, or README drift apart.
|
|
335
|
+
|
|
336
|
+
## Security and Configuration
|
|
337
|
+
|
|
338
|
+
- Login cookies are cached locally and should never be hard-coded into source files.
|
|
339
|
+
- Private deployment environments are managed through `lib/core/env-manager.js`.
|
|
340
|
+
- Yida API requests use the active environment base URL and authenticated cookies.
|
|
341
|
+
- For multi-organization accounts, prefer explicit `--corp-id` values in non-interactive automation.
|
|
342
|
+
|
|
343
|
+
## Community
|
|
344
|
+
|
|
345
|
+
Scan the QR code to join the YidaConnector DingTalk user group for updates and support.
|
|
346
|
+
|
|
347
|
+

|
|
348
|
+
|
|
349
|
+
## Contributors
|
|
350
|
+
|
|
351
|
+
Thanks to everyone who has contributed to YidaConnector. Read the [Contributing Guide](./CONTRIBUTING.md) to get involved.
|
|
352
|
+
|
|
353
|
+
Latest contributors: [DDlixin1](https://github.com/DDlixin1), [fcloud](https://github.com/fcloud).
|
|
354
|
+
|
|
355
|
+
<!-- yidaconnector-contributors:start -->
|
|
356
|
+
|
|
357
|
+
<p>
|
|
358
|
+
<a href="https://github.com/yize"><img src="https://github.com/yize.png?size=48" width="48" height="48" alt="九神" title="九神" /></a>
|
|
359
|
+
<a href="https://github.com/alex-mm"><img src="https://github.com/alex-mm.png?size=48" width="48" height="48" alt="天晟" title="天晟" /></a>
|
|
360
|
+
<a href="https://github.com/DDlixin1"><img src="https://github.com/DDlixin1.png?size=48" width="48" height="48" alt="DDlixin1" title="DDlixin1" /></a>
|
|
361
|
+
<a href="https://github.com/fcloud"><img src="https://github.com/fcloud.png?size=48" width="48" height="48" alt="Aiden Wu (fcloud)" title="Aiden Wu (fcloud)" /></a>
|
|
362
|
+
<a href="https://github.com/nicky1108"><img src="https://github.com/nicky1108.png?size=48" width="48" height="48" alt="nicky1108" title="nicky1108" /></a>
|
|
363
|
+
<a href="https://github.com/angelinheys"><img src="https://github.com/angelinheys.png?size=48" width="48" height="48" alt="angelinheys" title="angelinheys" /></a>
|
|
364
|
+
<a href="https://github.com/yipengmu"><img src="https://github.com/yipengmu.png?size=48" width="48" height="48" alt="yipengmu" title="yipengmu" /></a>
|
|
365
|
+
<a href="https://github.com/Waawww"><img src="https://github.com/Waawww.png?size=48" width="48" height="48" alt="Waawww" title="Waawww" /></a>
|
|
366
|
+
<a href="https://github.com/kangjiano"><img src="https://github.com/kangjiano.png?size=48" width="48" height="48" alt="kangjiano" title="kangjiano" /></a>
|
|
367
|
+
<a href="https://github.com/ElZe98"><img src="https://github.com/ElZe98.png?size=48" width="48" height="48" alt="ElZe98" title="ElZe98" /></a>
|
|
368
|
+
<a href="https://github.com/OAHyuhao"><img src="https://github.com/OAHyuhao.png?size=48" width="48" height="48" alt="OAHyuhao" title="OAHyuhao" /></a>
|
|
369
|
+
<a href="https://github.com/xiaofu704"><img src="https://github.com/xiaofu704.png?size=48" width="48" height="48" alt="xiaofu704" title="xiaofu704" /></a>
|
|
370
|
+
<a href="https://github.com/guchenglin111"><img src="https://github.com/guchenglin111.png?size=48" width="48" height="48" alt="guchenglin111" title="guchenglin111" /></a>
|
|
371
|
+
<a href="https://github.com/liug0911"><img src="https://github.com/liug0911.png?size=48" width="48" height="48" alt="LIUG" title="LIUG" /></a>
|
|
372
|
+
<a href="https://github.com/sunliz-xiuli"><img src="https://github.com/sunliz-xiuli.png?size=48" width="48" height="48" alt="sunliz-xiuli" title="sunliz-xiuli" /></a>
|
|
373
|
+
<a href="https://github.com/M12REDX"><img src="https://github.com/M12REDX.png?size=48" width="48" height="48" alt="M12REDX" title="M12REDX" /></a>
|
|
374
|
+
<a href="https://github.com/key-668"><img src="https://github.com/key-668.png?size=48" width="48" height="48" alt="再不喝汽水" title="再不喝汽水" /></a>
|
|
375
|
+
<a href="https://github.com/dongbeixiaohuo"><img src="https://github.com/dongbeixiaohuo.png?size=48" width="48" height="48" alt="dongbeixiaohuo" title="dongbeixiaohuo" /></a>
|
|
376
|
+
<a href="https://github.com/nandanadileep"><img src="https://github.com/nandanadileep.png?size=48" width="48" height="48" alt="nandanadileep" title="nandanadileep" /></a>
|
|
377
|
+
</p>
|
|
378
|
+
|
|
379
|
+
<!-- yidaconnector-contributors:end -->
|
|
380
|
+
|
|
381
|
+
## License
|
|
382
|
+
|
|
383
|
+
[MIT](./LICENSE) © 2026 Alibaba Group Holding Limited
|