teamai-cli 0.16.2 → 0.16.4
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 +160 -159
- package/README.zh-CN.md +326 -0
- package/dist/index.js +98 -96
- package/package.json +2 -2
- package/README.en.md +0 -325
package/README.md
CHANGED
|
@@ -1,140 +1,141 @@
|
|
|
1
|
-
# TeamAI —
|
|
1
|
+
# TeamAI — The team harness for AI agents
|
|
2
2
|
|
|
3
|
-
> [English](README.
|
|
3
|
+
> [English](README.md) | [简体中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
5
|
[](https://github.com/Tencent/teamai-cli/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/teamai-cli)
|
|
7
7
|
[](https://www.npmjs.com/package/teamai-cli)
|
|
8
|
-
[](https://nodejs.org)
|
|
9
8
|
[](LICENSE)
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
Make every AI coding agent work by the same harness.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
支持的 git 托管平台:**GitHub**、腾讯工蜂 TGit(`git.woa.com`),根据 repo URL 或安装来源自动识别。
|
|
12
|
+
Git-native management of skills, rules, and docs across 20+ AI tools — for you or your whole team.
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
> 📚 **Provider 说明**:[docs/providers.md](docs/providers.md) — GitHub / TGit 差异与认证配置。
|
|
14
|
+
**Supports:** Claude Code, Codex, Cursor, CodeBuddy IDE, as well as Gemini CLI, Windsurf, Trae, Aider, Amp, OpenClaw, and 20+ other AI coding tools (skills sync).
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
> 📖 **Full usage guide:** [docs/usage-guide.md](docs/usage-guide.md) — covers everything from team creation to day-to-day use.
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
> 📚 **Provider notes:** [docs/providers.md](docs/providers.md) — GitHub / TGit differences and auth setup.
|
|
19
|
+
|
|
20
|
+
Questions or suggestions are welcome — please open a PR or an Issue and help build this project together.
|
|
21
|
+
|
|
22
|
+
## Install
|
|
22
23
|
|
|
23
24
|
```bash
|
|
24
25
|
npm install -g teamai-cli
|
|
25
26
|
```
|
|
26
27
|
|
|
27
28
|
<details>
|
|
28
|
-
<summary
|
|
29
|
+
<summary>Tencent internal users: install <code>@tencent/teamai-cli</code> via tnpm</summary>
|
|
29
30
|
|
|
30
31
|
```bash
|
|
31
32
|
npm install -g @tencent/teamai-cli --registry=http://r.tnpm.oa.com
|
|
32
33
|
```
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
The two packages share identical source code; `@tencent/teamai-cli` is just the internal mirror of the public `teamai-cli`.
|
|
35
36
|
</details>
|
|
36
37
|
|
|
37
|
-
##
|
|
38
|
+
## Quick Start
|
|
38
39
|
|
|
39
|
-
###
|
|
40
|
+
### Team members
|
|
40
41
|
|
|
41
42
|
```bash
|
|
42
|
-
#
|
|
43
|
+
# User-scope init (default, resources installed under ~/)
|
|
43
44
|
teamai init --repo yourteam/yourproject
|
|
44
45
|
|
|
45
|
-
#
|
|
46
|
+
# Project-scope init (resources installed under the project directory)
|
|
46
47
|
cd /path/to/my-project
|
|
47
48
|
teamai init --repo yourteam/yourproject --scope project
|
|
48
49
|
|
|
49
|
-
#
|
|
50
|
+
# Non-interactive mode (for CI/CD or AI-agent automation)
|
|
50
51
|
teamai init --repo yourteam/yourproject --scope user --role hai_dev --force
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
###
|
|
54
|
+
### Admins
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
First create the shared-experience repo on your git host (GitHub by default; TGit also supported) and grant write access to every team member.
|
|
56
57
|
|
|
57
|
-
- **GitHub
|
|
58
|
-
- **TGit
|
|
58
|
+
- **GitHub:** create with `gh repo create yourorg/yourproject --private` or via the UI. Then use Settings → Collaborators to add members, and set `master`/`main` as the default branch.
|
|
59
|
+
- **TGit (Tencent Gongfeng):** create on [git.woa.com](https://git.woa.com/) and grant master permissions in bulk via user groups.
|
|
59
60
|
|
|
60
|
-
CLI
|
|
61
|
+
The CLI picks a provider automatically from the repo URL:
|
|
61
62
|
|
|
62
|
-
- `yourorg/yourrepo`
|
|
63
|
+
- `yourorg/yourrepo` or `https://github.com/yourorg/yourrepo` → GitHub
|
|
63
64
|
- `https://git.woa.com/yourteam/yourrepo` → TGit
|
|
64
65
|
|
|
65
|
-
##
|
|
66
|
-
|
|
67
|
-
|
|
|
68
|
-
|
|
69
|
-
| `teamai init [--scope <user\|project>] [--role <id>] [--force]` |
|
|
70
|
-
| `teamai push [--all] [--role <id>]` |
|
|
71
|
-
| `teamai pull [--silent]` |
|
|
72
|
-
| `teamai status` |
|
|
73
|
-
| `teamai list [type] [--source repo\|local\|all] [--agent <id>]` |
|
|
74
|
-
| `teamai skill [list\|show <name>]` |
|
|
75
|
-
| `teamai members` |
|
|
76
|
-
| `teamai remove <type> <name>` |
|
|
77
|
-
| `teamai roles` |
|
|
78
|
-
| `teamai source` |
|
|
79
|
-
| `teamai contribute --file <path> [--scope <user\|project>]` |
|
|
80
|
-
| `teamai recall <query>` |
|
|
81
|
-
| `teamai digest` |
|
|
82
|
-
| `teamai hooks` |
|
|
83
|
-
| `teamai uninstall [--force]` |
|
|
84
|
-
| `teamai doctor` |
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
- `--dry-run` —
|
|
88
|
-
- `--verbose, -v` —
|
|
89
|
-
|
|
90
|
-
##
|
|
66
|
+
## Commands
|
|
67
|
+
|
|
68
|
+
| Command | Description |
|
|
69
|
+
|---------|-------------|
|
|
70
|
+
| `teamai init [--scope <user\|project>] [--role <id>] [--force]` | Initialize (auto-installs gf CLI, OAuth login, links repo, registers member, configures reviewers, injects hooks) |
|
|
71
|
+
| `teamai push [--all] [--role <id>]` | Push local new resources to a dedicated branch and open a Merge Request; new skills prompt interactively for a target namespace (override with `--role`) |
|
|
72
|
+
| `teamai pull [--silent]` | Pull team resources and inject them into local AI tools (both scopes pulled sequentially) |
|
|
73
|
+
| `teamai status` | Show the diff between local and the team repo |
|
|
74
|
+
| `teamai list [type] [--source repo\|local\|all] [--agent <id>]` | List resources (skills\|rules\|docs\|env\|wiki). With `--source local` or `all`, scans skills directories of installed AI agents and tags each skill's origin (`[team]` / `[builtin]` / `[source:<name>]` / `[local-only]`) |
|
|
75
|
+
| `teamai skill [list\|show <name>]` | List all skills by default; `show <name>` prints the skill's origin, contributors, installed-agent list, and description summary |
|
|
76
|
+
| `teamai members` | List registered team members |
|
|
77
|
+
| `teamai remove <type> <name>` | Remove a resource from both the team repo and local, then open an MR (skills\|rules\|wiki) |
|
|
78
|
+
| `teamai roles` | Manage team roles (`init`/`list`/`set`/`add`/`remove`/`update`) |
|
|
79
|
+
| `teamai source` | Manage cross-team skill subscription sources (`add`/`remove`/`list`/`browse`) |
|
|
80
|
+
| `teamai contribute --file <path> [--scope <user\|project>]` | Push an AI-generated experience document to the team repo |
|
|
81
|
+
| `teamai recall <query>` | Search the team knowledge base, automatically merging user + project scope results |
|
|
82
|
+
| `teamai digest` | Generate a team AI usage weekly digest (skill leaderboard, new/updated skills, session summaries) |
|
|
83
|
+
| `teamai hooks` | Manage AI-tool hooks (list / inject / remove) |
|
|
84
|
+
| `teamai uninstall [--force]` | Uninstall teamai: remove hooks, rules, skills, env, docs, and `~/.teamai/` |
|
|
85
|
+
| `teamai doctor` | Diagnose configuration problems |
|
|
86
|
+
|
|
87
|
+
Global options:
|
|
88
|
+
- `--dry-run` — preview mode, no real changes
|
|
89
|
+
- `--verbose, -v` — verbose output
|
|
90
|
+
|
|
91
|
+
## How It Works
|
|
91
92
|
|
|
92
93
|
```
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
Member A Member B
|
|
95
|
+
create skill / write rules same
|
|
95
96
|
│ │
|
|
96
97
|
▼ ▼
|
|
97
98
|
teamai push teamai push
|
|
98
99
|
│ │
|
|
99
100
|
▼ ▼
|
|
100
|
-
|
|
101
|
+
create branch + MR create branch + MR
|
|
101
102
|
│ │
|
|
102
|
-
└──────►
|
|
103
|
+
└──────► team git repo ◄─────────────┘
|
|
103
104
|
│ ▲
|
|
104
|
-
│ │ reviewer
|
|
105
|
+
│ │ reviewer approves + merges MR
|
|
105
106
|
▼
|
|
106
107
|
SessionStart hook → teamai pull
|
|
107
|
-
|
|
108
|
+
auto-synced to every member's local
|
|
108
109
|
```
|
|
109
110
|
|
|
110
|
-
- `teamai push`
|
|
111
|
-
- `teamai init`
|
|
112
|
-
- `teamai init`
|
|
113
|
-
- Skills
|
|
114
|
-
- Rules
|
|
115
|
-
- Knowledge
|
|
116
|
-
- Learnings
|
|
117
|
-
- Culture
|
|
111
|
+
- `teamai push` creates a dedicated branch (`teamai/push/<user>/<timestamp>`), pushes it, then opens a Merge Request and assigns reviewers automatically.
|
|
112
|
+
- `teamai init` lets you configure default reviewers (stored in the `reviewers` field of `teamai.yaml`).
|
|
113
|
+
- `teamai init` injects hooks tailored to each tool's format (`SessionStart`, `Stop`, `PostToolUse`, `UserPromptSubmit`, etc.). During sessions the hooks run `teamai pull`, `teamai update`, tracking, dashboard updates, and so on (supports Claude Code, Codex, Claude Code Internal, Codex Internal, Cursor, CodeBuddy IDE, OpenClaw, WorkBuddy).
|
|
114
|
+
- Skills sync to `~/.claude/skills/`, `~/.codex/skills/`, `~/.codex-internal/skills/`, `~/.claude-internal/skills/`, `~/.cursor/skills/`, `~/.codebuddy/skills/`.
|
|
115
|
+
- Rules sync to each tool's rules directory and are merged into `CLAUDE.md` via marker comments (supported for claude, claude-internal, codebuddy).
|
|
116
|
+
- Knowledge syncs to `~/.teamai/docs/`.
|
|
117
|
+
- Learnings sync to `~/.teamai/learnings/` and back the recall index (shared team-wide, not partitioned by role).
|
|
118
|
+
- Culture syncs the team culture file (`culture.md`): its frontmatter and body are compiled and injected into every AI tool's `CLAUDE.md`.
|
|
118
119
|
|
|
119
|
-
##
|
|
120
|
+
## Role-scoped Skills
|
|
120
121
|
|
|
121
|
-
|
|
122
|
+
When the team resource repo enables role-scoped directories, skills are organized under role namespaces. During `teamai init`, the CLI asks you to pick a `primaryRole` and optional `additionalRoles` and writes them to your local `config.yaml`.
|
|
122
123
|
|
|
123
|
-
|
|
124
|
+
Remote repo layout convention:
|
|
124
125
|
|
|
125
126
|
```text
|
|
126
|
-
manifest/roles.yaml
|
|
127
|
-
skills/<namespace>/<skill>/
|
|
128
|
-
rules/
|
|
127
|
+
manifest/roles.yaml # role definitions
|
|
128
|
+
skills/<namespace>/<skill>/ # skills organized by namespace
|
|
129
|
+
rules/ # global, not role-scoped
|
|
129
130
|
```
|
|
130
131
|
|
|
131
|
-
- `teamai pull`
|
|
132
|
-
- Skills
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
- `rules
|
|
132
|
+
- `teamai pull` reads `manifest/roles.yaml` and only syncs skills under `primaryRole + additionalRoles` namespaces (unioned with tag-filter results).
|
|
133
|
+
- Skills install flat from `skills/<namespace>/<skill-name>/` into `<tool>/skills/<skill-name>/` — the namespace layout is invisible to users.
|
|
134
|
+
- If two activated namespaces contain a skill with the same name, `pull` fails outright to prevent silent overrides.
|
|
135
|
+
- Skills outside both activated namespaces and tag-filter results are cleaned up automatically.
|
|
136
|
+
- `rules/`, `docs/`, `learnings/` keep their original behavior and are not role-scoped (learnings are shared team-wide).
|
|
136
137
|
|
|
137
|
-
|
|
138
|
+
Example config:
|
|
138
139
|
|
|
139
140
|
```yaml
|
|
140
141
|
primaryRole: hai
|
|
@@ -143,37 +144,37 @@ additionalRoles:
|
|
|
143
144
|
resourceProfileVersion: 1
|
|
144
145
|
```
|
|
145
146
|
|
|
146
|
-
|
|
147
|
+
This syncs every skill from `skills/common/`, `skills/hai/`, and `skills/pm/`.
|
|
147
148
|
|
|
148
|
-
##
|
|
149
|
+
## Role-scoped Pushing
|
|
149
150
|
|
|
150
|
-
|
|
151
|
+
In a role-scoped repo, when you push a new skill the CLI auto-detects available namespaces and prompts:
|
|
151
152
|
|
|
152
153
|
```bash
|
|
153
|
-
#
|
|
154
|
+
# Interactive namespace selection (recommended)
|
|
154
155
|
teamai push
|
|
155
|
-
#
|
|
156
|
+
# Output:
|
|
156
157
|
# Which namespace should new skills be pushed to?
|
|
157
158
|
# 1. common
|
|
158
159
|
# 2. hai
|
|
159
160
|
# 3. pm
|
|
160
161
|
# Choose namespace [1-3] (default: 1 = common):
|
|
161
162
|
|
|
162
|
-
#
|
|
163
|
+
# Explicit target namespace
|
|
163
164
|
teamai push --role pm
|
|
164
165
|
```
|
|
165
166
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
- `--role <id>`
|
|
170
|
-
-
|
|
167
|
+
- With a `primaryRole`, the list expands from `manifest/roles.yaml`.
|
|
168
|
+
- Without a `primaryRole`, namespaces are discovered by scanning the team repo's directory structure.
|
|
169
|
+
- When only one namespace exists, it's selected automatically — no prompt.
|
|
170
|
+
- `--role <id>` temporarily overrides the target namespace.
|
|
171
|
+
- Modifying an existing skill keeps its original namespace — no reselection needed.
|
|
171
172
|
|
|
172
|
-
|
|
173
|
+
On push, the CLI checks `SKILL.md`'s YAML frontmatter (`name`/`description`) and auto-fills anything missing, so you don't have to maintain it by hand.
|
|
173
174
|
|
|
174
|
-
##
|
|
175
|
+
## Team Culture
|
|
175
176
|
|
|
176
|
-
|
|
177
|
+
Create `culture.md` at the root of the team repo. Use YAML frontmatter for company/team info and the body for cultural guidelines:
|
|
177
178
|
|
|
178
179
|
```markdown
|
|
179
180
|
---
|
|
@@ -191,135 +192,135 @@ team:
|
|
|
191
192
|
- Improve test coverage
|
|
192
193
|
---
|
|
193
194
|
|
|
194
|
-
##
|
|
195
|
+
## Coding Guidelines
|
|
195
196
|
|
|
196
|
-
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
197
|
+
- Every PR needs at least one reviewer approval
|
|
198
|
+
- Direct pushes to master are forbidden
|
|
199
|
+
- Test coverage must stay above 80%
|
|
199
200
|
```
|
|
200
201
|
|
|
201
|
-
`teamai pull`
|
|
202
|
+
`teamai pull` compiles `culture.md` into structured content and injects it into every AI tool's `CLAUDE.md` (between `<!-- [teamai:culture:start] -->` and `<!-- [teamai:culture:end] -->`). AI coding assistants pick up the team culture on every session.
|
|
202
203
|
|
|
203
|
-
##
|
|
204
|
+
## Cross-team Skill Subscription
|
|
204
205
|
|
|
205
|
-
|
|
206
|
+
Use `teamai source` to subscribe to other teams' public skill repos. Their skills sync automatically on `pull`:
|
|
206
207
|
|
|
207
208
|
```bash
|
|
208
|
-
#
|
|
209
|
-
teamai source add https://
|
|
209
|
+
# Add a subscription source
|
|
210
|
+
teamai source add https://github.com/other-team/teamai-public.git --name other-team
|
|
210
211
|
|
|
211
|
-
#
|
|
212
|
+
# List subscribed sources
|
|
212
213
|
teamai source list
|
|
213
214
|
|
|
214
|
-
#
|
|
215
|
+
# Browse skills from a source
|
|
215
216
|
teamai source browse other-team
|
|
216
217
|
|
|
217
|
-
#
|
|
218
|
+
# Remove a subscription (and clean up its skills)
|
|
218
219
|
teamai source remove other-team
|
|
219
220
|
```
|
|
220
221
|
|
|
221
|
-
|
|
222
|
+
Subscribed skills sync to your local machine on `teamai pull` and coexist with your own team's skills.
|
|
222
223
|
|
|
223
|
-
## Scope
|
|
224
|
+
## Scope
|
|
224
225
|
|
|
225
|
-
TeamAI
|
|
226
|
+
TeamAI supports two scopes that can coexist:
|
|
226
227
|
|
|
227
|
-
|
|
|
228
|
-
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
228
|
+
| Dimension | User Scope (default) | Project Scope |
|
|
229
|
+
|-----------|---------------------|---------------|
|
|
230
|
+
| **Install location** | under `~/` (e.g. `~/.claude/skills/`) | under the project (e.g. `<project>/.claude/skills/`) |
|
|
231
|
+
| **Config file** | `~/.teamai/config.yaml` | `<project>/.teamai/config.yaml` |
|
|
232
|
+
| **Use case** | general team norms, cross-project skills | project-specific skills and rules |
|
|
233
|
+
| **Init** | `teamai init --repo <group>/<repo>` | `cd <project> && teamai init --repo <group>/<repo> --scope project` |
|
|
233
234
|
|
|
234
|
-
|
|
235
|
-
- `teamai pull`
|
|
236
|
-
- `teamai contribute --scope user/project`
|
|
237
|
-
- `teamai recall`
|
|
238
|
-
-
|
|
235
|
+
**Dual-scope cooperation:**
|
|
236
|
+
- `teamai pull` pulls user and project scopes sequentially; they don't conflict.
|
|
237
|
+
- `teamai contribute --scope user/project` lets you pick which repo to push to.
|
|
238
|
+
- `teamai recall` merges knowledge bases from both scopes into a single ranking and tags each result with its origin `[user]` / `[project]`.
|
|
239
|
+
- The `scope` field in the remote `teamai.yaml` locks the repo's type; member init must match.
|
|
239
240
|
|
|
240
|
-
##
|
|
241
|
+
## Automatic Experience Sharing
|
|
241
242
|
|
|
242
|
-
|
|
243
|
+
When an AI coding session ends, the Stop hook evaluates session value and prompts you to share:
|
|
243
244
|
|
|
244
245
|
```
|
|
245
|
-
AI coding session (
|
|
246
|
+
AI coding session (ongoing...)
|
|
246
247
|
│
|
|
247
|
-
▼ PostToolUse hook
|
|
248
|
+
▼ PostToolUse hook continuously tracks tool calls and skill usage
|
|
248
249
|
│
|
|
249
|
-
▼
|
|
250
|
+
▼ session ends (Stop hook fires)
|
|
250
251
|
│
|
|
251
|
-
├─
|
|
252
|
-
│
|
|
252
|
+
├─ Smart scoring: tool-call count + tool diversity + skill usage + error retries + session duration
|
|
253
|
+
│ (extracted from dashboard events.jsonl, one-shot, out of 100)
|
|
253
254
|
│
|
|
254
|
-
├─
|
|
255
|
+
├─ Score < 35 → stay silent (too few or too uniform calls, not worth summarizing)
|
|
255
256
|
│
|
|
256
|
-
▼
|
|
257
|
+
▼ Score ≥ 35
|
|
257
258
|
│
|
|
258
|
-
AI
|
|
259
|
+
AI: "This session was productive — consider running /teamai-share-learnings to share."
|
|
259
260
|
│
|
|
260
|
-
▼
|
|
261
|
+
▼ user accepts
|
|
261
262
|
│
|
|
262
263
|
/teamai-share-learnings (AI sub-agent)
|
|
263
|
-
├─ AI
|
|
264
|
-
├─
|
|
265
|
-
└─ teamai contribute --file <path> →
|
|
264
|
+
├─ AI summarizes the session's lessons
|
|
265
|
+
├─ Generates a Markdown document
|
|
266
|
+
└─ teamai contribute --file <path> → pushes directly to the team repo's learnings/
|
|
266
267
|
```
|
|
267
268
|
|
|
268
|
-
- `/teamai-share-learnings`
|
|
269
|
-
-
|
|
270
|
-
-
|
|
269
|
+
- `/teamai-share-learnings` is a built-in CLI skill, deployed locally by `teamai pull/init`.
|
|
270
|
+
- Each session is prompted at most once (de-duplicated); you can always ignore it.
|
|
271
|
+
- The document lands directly in `learnings/` and is visible to teammates on their next `pull`.
|
|
271
272
|
|
|
272
|
-
##
|
|
273
|
+
## Team Knowledge Recall
|
|
273
274
|
|
|
274
|
-
`teamai recall`
|
|
275
|
+
`teamai recall` implements the "read" side of the knowledge flywheel — the AI can search across accumulated team experience docs:
|
|
275
276
|
|
|
276
277
|
```
|
|
277
|
-
contribute(
|
|
278
|
+
contribute (write) → pull (sync + index) → recall (search) → upvote (vote) → better ranking
|
|
278
279
|
```
|
|
279
280
|
|
|
280
281
|
```bash
|
|
281
|
-
$ teamai recall "fuse
|
|
282
|
-
[1/2] MR
|
|
282
|
+
$ teamai recall "fuse port"
|
|
283
|
+
[1/2] MR review caught a FUSE port-conflict bug ★1 [user]
|
|
283
284
|
Author: jeffyxu | Score: 18.5 | Tags: troubleshooting, fuse, k8s
|
|
284
285
|
|
|
285
|
-
[2/2] FUSE
|
|
286
|
+
[2/2] FUSE deployment configuration best practices [project]
|
|
286
287
|
Author: alice | Score: 12.0 | Tags: fuse, deploy
|
|
287
288
|
```
|
|
288
289
|
|
|
289
|
-
-
|
|
290
|
-
- Hybrid
|
|
291
|
-
-
|
|
292
|
-
-
|
|
290
|
+
- **Dual-scope merged search:** automatically merges user and project scope knowledge bases, each result tagged with its origin.
|
|
291
|
+
- Hybrid CJK + English search (Intl.Segmenter + CJK bigrams).
|
|
292
|
+
- Searches implicitly upvote matched docs; good docs naturally float up over time.
|
|
293
|
+
- Votes are written to each scope's own repo, so attribution stays correct.
|
|
293
294
|
|
|
294
|
-
##
|
|
295
|
+
## Update
|
|
295
296
|
|
|
296
297
|
```bash
|
|
297
|
-
teamai update
|
|
298
|
-
npm update -g teamai-cli #
|
|
298
|
+
teamai update # auto-detect and upgrade to latest
|
|
299
|
+
npm update -g teamai-cli # or trigger an npm upgrade manually
|
|
299
300
|
```
|
|
300
301
|
|
|
301
|
-
`teamai update`
|
|
302
|
+
`teamai update` picks the registry based on the installed package name:
|
|
302
303
|
|
|
303
|
-
- `teamai-cli` →
|
|
304
|
-
- `@tencent/teamai-cli` →
|
|
304
|
+
- `teamai-cli` → public npm (`https://registry.npmjs.org`)
|
|
305
|
+
- `@tencent/teamai-cli` → internal tnpm (`http://r.tnpm.oa.com`)
|
|
305
306
|
|
|
306
|
-
|
|
307
|
+
To override the registry manually, set `TEAMAI_NPM_REGISTRY=<url>`.
|
|
307
308
|
|
|
308
|
-
###
|
|
309
|
+
### Auto-update Control
|
|
309
310
|
|
|
310
|
-
|
|
311
|
+
Auto-update runs on the Stop hook at the end of a session. It can be controlled at two layers:
|
|
311
312
|
|
|
312
|
-
|
|
|
313
|
-
|
|
314
|
-
|
|
|
315
|
-
|
|
|
313
|
+
| Layer | File | Field | Allowed values |
|
|
314
|
+
|-------|------|-------|----------------|
|
|
315
|
+
| Team default | `teamai.yaml` | `autoUpdate` | `true` (default) / `false` |
|
|
316
|
+
| User override | `~/.teamai/config.yaml` | `updatePolicy` | `auto` / `prompt` / `skip` |
|
|
316
317
|
|
|
317
|
-
|
|
318
|
+
The user-level `updatePolicy` always wins over the team-level `autoUpdate`.
|
|
318
319
|
|
|
319
|
-
##
|
|
320
|
+
## License
|
|
320
321
|
|
|
321
322
|
[MIT](LICENSE)
|
|
322
323
|
|
|
323
|
-
##
|
|
324
|
+
## Contributing
|
|
324
325
|
|
|
325
|
-
|
|
326
|
+
PRs are welcome! Please read [CONTRIBUTING.md](.github/CONTRIBUTING.md) first.
|