Skip to content

Commit a49a072

Browse files
committed
Merge remote-tracking branch 'origin/main' into work778
2 parents 36eba3b + 39b26e5 commit a49a072

433 files changed

Lines changed: 40077 additions & 1106 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.claude/skills/translate-zh-to-en/glossary.md‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ string to preserve verbatim when generating Chinese translations.
174174
Style rule: when a DNT term appears mid-sentence in Chinese, surround it with
175175
a single half-width space on either side (e.g., `管理你的 Routines`, not
176176
`管理你的Routines`). For multi-word terms, keep them together verbatim
177-
(e.g., `创建 Knowledge Pack`).
177+
(e.g., `创建 A2A Agent`).
178178

179179
| Term | Notes |
180180
|------|-------|
@@ -186,12 +186,10 @@ a single half-width space on either side (e.g., `管理你的 Routines`, not
186186
| Automation | User-defined automation trigger + action |
187187
| Runner | Agent execution backend (e.g., `flashduty-runner`) |
188188
| A2A | Agent-to-Agent protocol |
189-
| Knowledge Pack | A curated knowledge bundle attached to an Agent |
190189
| Tool call | A single tool invocation inside an Agent turn |
191190
| Slash command | UI slash-prefixed command (e.g., `/help`) |
192191
| Reasoning | The reasoning / chain-of-thought block of a model response |
193192
| Connector | Integration with an external system (Slack, GitHub, etc.) |
194-
| Environment | Execution environment for runners (env vars, credentials) |
195193
| Todo | The Todo list shown in agent UI |
196194
| Mermaid | Mermaid diagram syntax |
197195
| Prompt | System or user prompt sent to a model |
@@ -201,6 +199,14 @@ Translatable companions (do NOT belong in DNT — translate to Chinese):
201199
| English | Chinese |
202200
|---------|---------|
203201
| Artifact / Artifacts | 产物 |
202+
| Knowledge | 知识 — the DUTY.md-rooted file tree an account or team maintains for AI SRE. Formerly "Knowledge Pack"; do not use that name in copy. Running text uses lowercase "knowledge" (e.g., "team knowledge"); API identifiers such as `pack_id` and `knowledge-pack-*` CLI commands stay unchanged |
203+
| Memory | 记忆 |
204+
| Context | 上下文 — the Customize group holding Knowledge and Memory |
205+
| Customize | 自定义 — the AI SRE sidebar entry that opens Context, Plugins, and Environments |
206+
| Plugins | 插件 |
207+
| Environment / Environments | 环境 |
208+
| Self-hosted | 自托管 |
209+
| Cloud | 云端 |
204210

205211
## Intentional Variants (per-context wording)
206212

@@ -217,7 +223,6 @@ Translators: pick the variant whose context matches.
217223
| 成功 | Succeeded (run-status filter) / OK (compact badge) |
218224
| 对话 | Chat (singular) / Chats (section header, plural) |
219225
| 环境 | Environment (field label) / Environments (nav or page title, plural) |
220-
| 知识库 | Knowledge Pack (singular) / Knowledge Packs (page title, plural) |
221226
| 产物 | Artifact (singular) / Artifacts (plural) |
222227
| 文档 | Document (artifact kind) / Documentation (docs link) |
223228
| 邮件 | Email (channel label, pairs with "SMS") / Email us (CTA, pairs with "Call us") |

‎.github/workflows/integration-docs-upload.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ on:
2424
- development
2525
- production
2626

27+
# Runs for one branch upload the same zh.js/en.js objects. Run them one at a time so an
28+
# older run that finishes late cannot overwrite the files of a newer one.
29+
concurrency:
30+
group: integration-docs-upload-${{ github.ref }}
31+
cancel-in-progress: false
32+
2733
jobs:
2834
build-check:
2935
runs-on: ubuntu-latest

‎.github/workflows/openapi-lint.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ on:
1010
paths:
1111
- 'api-reference/*.json'
1212
- 'scripts/lint_openapi.py'
13+
- 'scripts/api_path_redirects.py'
14+
- 'docs.json'
1315
- '.github/workflows/openapi-lint.yml'
1416
push:
1517
branches: [main]
1618
paths:
1719
- 'api-reference/*.json'
1820
- 'scripts/lint_openapi.py'
21+
- 'scripts/api_path_redirects.py'
22+
- 'docs.json'
1923
- '.github/workflows/openapi-lint.yml'
2024

2125
jobs:
@@ -26,3 +30,5 @@ jobs:
2630
- uses: actions/setup-python@v5
2731
- name: Lint specs
2832
run: python3 scripts/lint_openapi.py
33+
- name: Check API path redirects in docs.json
34+
run: python3 scripts/api_path_redirects.py --check

‎api-reference/on-call.openapi.en.json‎

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32600,7 +32600,26 @@
3260032600
"type": "integer",
3260132601
"format": "int64"
3260232602
},
32603-
"description": "Member IDs of the current assignees. Never null; an empty array means unassigned."
32603+
"description": "Member IDs of the current person assignees. AI SRE is not included. Never null; an empty array means no person assignee."
32604+
},
32605+
"assignees": {
32606+
"description": "Current assignees. Each entry is `{type, id?}`. `type` is `person` or `ai_sre`; an `ai_sre` entry omits `id`. Never null; an empty array means unassigned. `assignee_ids` is the person-only subset of this list.",
32607+
"items": {
32608+
"$ref": "#/components/schemas/WorkItemAssignee"
32609+
},
32610+
"type": "array"
32611+
},
32612+
"agent_session_id": {
32613+
"description": "ID of the AI SRE session executing this item. Omitted when no session is recorded.",
32614+
"type": "string"
32615+
},
32616+
"agent_session_venue": {
32617+
"description": "Where that AI SRE session runs: `web` or `im`. Omitted when no session is recorded.",
32618+
"enum": [
32619+
"web",
32620+
"im"
32621+
],
32622+
"type": "string"
3260432623
},
3260532624
"created_by": {
3260632625
"type": "integer",
@@ -32740,7 +32759,15 @@
3274032759
"assignee_id": {
3274132760
"type": "integer",
3274232761
"format": "int64",
32743-
"description": "Restrict results to items assigned to this member ID. Listing by assignee alone requires being that assignee or an account admin."
32762+
"description": "Restrict results to items assigned to this member ID. Listing by assignee alone requires being that assignee or an account admin. Ignored when `assignee_type` is `ai_sre`."
32763+
},
32764+
"assignee_type": {
32765+
"description": "Filter by assignee type: `person` or `ai_sre`. `ai_sre` returns items assigned to AI SRE (an AI caller uses this to list its own tasks) and does not require `assignee_id`. `person` together with `assignee_id` restricts results to that member. Omitted with a positive `assignee_id` means `person`.",
32766+
"enum": [
32767+
"person",
32768+
"ai_sre"
32769+
],
32770+
"type": "string"
3274432771
},
3274532772
"cursor": {
3274632773
"type": "string",
@@ -32809,7 +32836,15 @@
3280932836
"type": "integer",
3281032837
"format": "int64"
3281132838
},
32812-
"description": "Initial assignee member IDs. Assignees must be active members who can already read the anchor; assignment never grants access."
32839+
"description": "Legacy alias for the initial assignees. Equivalent to `assignees` with every entry `type` `person`. Mutually exclusive with `assignees`: sending both returns an error. Assignees must be active members who can already read the anchor; assignment never grants access."
32840+
},
32841+
"assignees": {
32842+
"description": "Initial assignees. Each entry is `{type, id?}`. `type` is `person` or `ai_sre`; an `ai_sre` entry omits `id`. Mutually exclusive with `assignee_ids`: sending both returns an error. `assignee_ids` is the legacy alias and is equivalent to an all-`person` list. At most 20 entries. Person assignees must be active members who can already read the anchor; assignment never grants access.",
32843+
"items": {
32844+
"$ref": "#/components/schemas/WorkItemAssignee"
32845+
},
32846+
"maxItems": 20,
32847+
"type": "array"
3281332848
},
3281432849
"idempotency_key": {
3281532850
"type": "string",
@@ -32983,7 +33018,15 @@
3298333018
"type": "integer",
3298433019
"format": "int64"
3298533020
},
32986-
"description": "New assignee member IDs, replacing the current set. An empty array clears all assignees."
33021+
"description": "Legacy alias for the replacement assignee set. Equivalent to `assignees` with every entry `type` `person`. Mutually exclusive with `assignees`: sending both returns an error. An empty array clears all assignees."
33022+
},
33023+
"assignees": {
33024+
"description": "Replacement assignee set. Each entry is `{type, id?}`. `type` is `person` or `ai_sre`; an `ai_sre` entry omits `id`. Mutually exclusive with `assignee_ids`: sending both returns an error. `assignee_ids` is the legacy alias and is equivalent to an all-`person` list. At most 20 entries. An empty array clears all assignees.",
33025+
"items": {
33026+
"$ref": "#/components/schemas/WorkItemAssignee"
33027+
},
33028+
"maxItems": 20,
33029+
"type": "array"
3298733030
}
3298833031
}
3298933032
},
@@ -33637,6 +33680,28 @@
3363733680
"format": "int64"
3363833681
}
3363933682
}
33683+
},
33684+
"WorkItemAssignee": {
33685+
"description": "One assignee on a work item.",
33686+
"properties": {
33687+
"id": {
33688+
"description": "Member ID. Required when `type` is `person`. Omitted when `type` is `ai_sre`.",
33689+
"format": "int64",
33690+
"type": "integer"
33691+
},
33692+
"type": {
33693+
"description": "Assignee kind: `person` (a member) or `ai_sre` (the account AI SRE).",
33694+
"enum": [
33695+
"person",
33696+
"ai_sre"
33697+
],
33698+
"type": "string"
33699+
}
33700+
},
33701+
"required": [
33702+
"type"
33703+
],
33704+
"type": "object"
3364033705
}
3364133706
}
3364233707
}

‎api-reference/on-call.openapi.zh.json‎

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32600,7 +32600,26 @@
3260032600
"type": "integer",
3260132601
"format": "int64"
3260232602
},
32603-
"description": "当前负责人的成员 ID 列表。不会为 null;空数组表示未指派。"
32603+
"description": "当前人员负责人的成员 ID。不含 AI SRE。不会为 null;空数组表示没有人员负责人。"
32604+
},
32605+
"assignees": {
32606+
"description": "当前负责人。每项为 `{type, id?}`。`type` 取 `person` 或 `ai_sre`;`ai_sre` 不带 `id`。不会为 null;空数组表示未指派。`assignee_ids` 是其中仅含 `person` 的子集。",
32607+
"items": {
32608+
"$ref": "#/components/schemas/WorkItemAssignee"
32609+
},
32610+
"type": "array"
32611+
},
32612+
"agent_session_id": {
32613+
"description": "执行该事项的 AI SRE 会话 ID。没有会话时省略。",
32614+
"type": "string"
32615+
},
32616+
"agent_session_venue": {
32617+
"description": "该 AI SRE 会话所在位置:`web` 或 `im`。没有会话时省略。",
32618+
"enum": [
32619+
"web",
32620+
"im"
32621+
],
32622+
"type": "string"
3260432623
},
3260532624
"created_by": {
3260632625
"type": "integer",
@@ -32740,7 +32759,15 @@
3274032759
"assignee_id": {
3274132760
"type": "integer",
3274232761
"format": "int64",
32743-
"description": "按负责人成员 ID 过滤结果。仅按负责人查询时,须为本人或账户管理员。"
32762+
"description": "按负责人成员 ID 过滤结果。仅按负责人查询时,须为本人或账户管理员。`assignee_type` 为 `ai_sre` 时忽略本字段。"
32763+
},
32764+
"assignee_type": {
32765+
"description": "按负责人类型过滤:`person` 或 `ai_sre`。`ai_sre` 返回指派给 AI SRE 的事项(AI 用它查询自己的任务),不需要 `assignee_id`。`person` 与 `assignee_id` 一起使用时,只返回该成员负责的事项。省略本字段且 `assignee_id` 为正数时,按 `person` 过滤。",
32766+
"enum": [
32767+
"person",
32768+
"ai_sre"
32769+
],
32770+
"type": "string"
3274432771
},
3274532772
"cursor": {
3274632773
"type": "string",
@@ -32809,7 +32836,15 @@
3280932836
"type": "integer",
3281032837
"format": "int64"
3281132838
},
32812-
"description": "初始负责人成员 ID 列表。负责人须为已能查看锚定对象的活跃成员;指派不会授予访问权限。"
32839+
"description": "初始负责人的旧版别名,等价于全部为 `person` 的 `assignees`。与 `assignees` 互斥,同时出现会报错。负责人须为已能查看锚定对象的活跃成员;指派不会授予访问权限。"
32840+
},
32841+
"assignees": {
32842+
"description": "初始负责人列表。每项为 `{type, id?}`。`type` 取 `person` 或 `ai_sre`;`ai_sre` 不带 `id`。与 `assignee_ids` 互斥,同时出现会报错。`assignee_ids` 是旧版别名,等价于全部为 `person`。最多 20 项。`person` 须为已能查看锚定对象的活跃成员;指派不会授予访问权限。",
32843+
"items": {
32844+
"$ref": "#/components/schemas/WorkItemAssignee"
32845+
},
32846+
"maxItems": 20,
32847+
"type": "array"
3281332848
},
3281432849
"idempotency_key": {
3281532850
"type": "string",
@@ -32983,7 +33018,15 @@
3298333018
"type": "integer",
3298433019
"format": "int64"
3298533020
},
32986-
"description": "新的负责人成员 ID 列表,整体替换当前集合。空数组表示清空所有负责人。"
33021+
"description": "替换后负责人集合的旧版别名,等价于全部为 `person` 的 `assignees`。与 `assignees` 互斥,同时出现会报错。空数组表示清空所有负责人。"
33022+
},
33023+
"assignees": {
33024+
"description": "替换后的负责人集合。每项为 `{type, id?}`。`type` 取 `person` 或 `ai_sre`;`ai_sre` 不带 `id`。与 `assignee_ids` 互斥,同时出现会报错。`assignee_ids` 是旧版别名,等价于全部为 `person`。最多 20 项。空数组表示清空所有负责人。",
33025+
"items": {
33026+
"$ref": "#/components/schemas/WorkItemAssignee"
33027+
},
33028+
"maxItems": 20,
33029+
"type": "array"
3298733030
}
3298833031
}
3298933032
},
@@ -33637,6 +33680,28 @@
3363733680
"format": "int64"
3363833681
}
3363933682
}
33683+
},
33684+
"WorkItemAssignee": {
33685+
"description": "跟进事项的一名负责人。",
33686+
"properties": {
33687+
"id": {
33688+
"description": "成员 ID。`type` 为 `person` 时必填;`type` 为 `ai_sre` 时省略。",
33689+
"format": "int64",
33690+
"type": "integer"
33691+
},
33692+
"type": {
33693+
"description": "负责人类型:`person` 为成员,`ai_sre` 为账户的 AI SRE。",
33694+
"enum": [
33695+
"person",
33696+
"ai_sre"
33697+
],
33698+
"type": "string"
33699+
}
33700+
},
33701+
"required": [
33702+
"type"
33703+
],
33704+
"type": "object"
3364033705
}
3364133706
}
3364233707
}

0 commit comments

Comments
 (0)