@thinkingai/ae-cli 6.1.26 → 6.1.28

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 (122) hide show
  1. package/README.md +29 -3
  2. package/README.zh.md +29 -3
  3. package/dist/{auth-YHMC3GDH.js → auth-NKD5Z5BQ.js} +150 -38
  4. package/dist/{automation-NWWVLWG2.js → automation-K32V2NKP.js} +94 -38
  5. package/dist/{capability-3QLLIVFB.js → capability-4CGSL7PK.js} +9 -8
  6. package/dist/{chunk-CT7QDJS6.js → chunk-2IYIYSUO.js} +2 -2
  7. package/dist/{chunk-PLE722AJ.js → chunk-2UWS5CUP.js} +62 -35
  8. package/dist/{chunk-KFNMQTZI.js → chunk-ELCR235M.js} +26 -19
  9. package/dist/{chunk-D6ACFILC.js → chunk-GI5BMEZO.js} +1 -1
  10. package/dist/{chunk-FMNNGNYO.js → chunk-GTPWDLTE.js} +7 -6
  11. package/dist/chunk-JJJIP2XQ.js +105 -0
  12. package/dist/{chunk-5XJYLEVC.js → chunk-KHS64JZQ.js} +4 -4
  13. package/dist/{chunk-UQ77JXYH.js → chunk-LMCYSVVA.js} +12 -13
  14. package/dist/{chunk-7QXISROD.js → chunk-P6VFCH3P.js} +4 -2
  15. package/dist/{chunk-GIK6EDUG.js → chunk-P7KL7IOH.js} +41 -13
  16. package/dist/{chunk-AP7YP2NX.js → chunk-QSAR3GHY.js} +2 -2
  17. package/dist/{chunk-EOYSKMXN.js → chunk-QW3R6O7L.js} +14 -6
  18. package/dist/{chunk-S6M42KND.js → chunk-T44M3PLZ.js} +1 -1
  19. package/dist/{chunk-XCHAYMSF.js → chunk-UF244C5C.js} +3 -3
  20. package/dist/{chunk-KAEHZZH4.js → chunk-UJ7UPRXK.js} +3 -3
  21. package/dist/{chunk-HVHR4SCP.js → chunk-UUD5RB36.js} +3 -3
  22. package/dist/chunk-X7DRLE62.js +233 -0
  23. package/dist/{chunk-WNGFSIOB.js → chunk-ZW4VMY5H.js} +103 -6
  24. package/dist/{community-report-client-PEERQCX2.js → community-report-client-S2K3A3Q6.js} +1 -1
  25. package/dist/{config-AHPMEW5A.js → config-ASSAAIOI.js} +6 -5
  26. package/dist/{context-YAE3QXP3.js → context-6RWLVOM5.js} +4 -4
  27. package/dist/{data-integration-HESZET7E.js → data-integration-EXSUPUDZ.js} +6 -6
  28. package/dist/evaluation-5YT4QLCL.js +3714 -0
  29. package/dist/index.js +96 -52
  30. package/dist/{local-data-upload-client-TWMHFLUA.js → local-data-upload-client-7HCPGIS3.js} +1 -1
  31. package/dist/{memory-62BJOULV.js → memory-VCYLVPMI.js} +6 -6
  32. package/dist/{metadata-C7CEDHOJ.js → metadata-YGI5M6OF.js} +8 -8
  33. package/dist/{model-SBV2JFJI.js → model-DPJHSD73.js} +4 -4
  34. package/dist/{personal-semantic-preference-QECDPHND.js → personal-semantic-preference-76TBKAPY.js} +6 -6
  35. package/dist/{project-semantic-Z4QAMBWF.js → project-semantic-XOEBO2Q5.js} +6 -6
  36. package/dist/{sync-SU33KYX7.js → sync-7PP6KQ75.js} +7 -7
  37. package/dist/{te-agent-F5QBZSQA.js → te-agent-PJVAPKBD.js} +753 -94
  38. package/dist/{te-analysis-2ECAAIFK.js → te-analysis-OX62G5VD.js} +411 -79
  39. package/dist/{te-community-PFLDLPP4.js → te-community-QN3WMPNT.js} +6 -4
  40. package/dist/{te-dataops-FOQSRIAZ.js → te-dataops-UKD2XN3E.js} +8 -6
  41. package/dist/{te-engage-QKUGIWSR.js → te-engage-X3DIXPRA.js} +6 -6
  42. package/dist/{te-experiment-26PXR2UO.js → te-experiment-MEIIK3DP.js} +6 -6
  43. package/dist/{te-kb-MHDOST62.js → te-kb-73EWDFDF.js} +7 -7
  44. package/dist/{te-system-J2FQF5ER.js → te-system-IE7NCKC3.js} +10 -9
  45. package/dist/{te-team-5UOZPTU3.js → te-team-MGQ5CNRW.js} +63 -41
  46. package/dist/{things-VPPXXLHB.js → things-4JIBCA55.js} +7 -7
  47. package/dist/{update-EEUTEI6R.js → update-AX66IFMJ.js} +4 -4
  48. package/dist/{workspace-O3EEIYQM.js → workspace-Q5NMEKEN.js} +6 -6
  49. package/package.json +13 -8
  50. package/skills/ae-agent/SKILL.md +24 -3
  51. package/skills/ae-agent/references/command_index.md +8 -0
  52. package/skills/ae-agent/references/resource-package.md +53 -0
  53. package/skills/ae-analysis/SKILL.md +12 -3
  54. package/skills/ae-analysis/references/adhoc_export.md +1 -1
  55. package/skills/ae-analysis/references/agent_review_preflight.md +4 -0
  56. package/skills/ae-analysis/references/agent_review_submit_to_page.md +4 -0
  57. package/skills/ae-analysis/references/ai_models/event.md +58 -2
  58. package/skills/ae-analysis/references/ai_models/rank_list.md +1 -0
  59. package/skills/ae-analysis/references/ai_models/retention.md +2 -0
  60. package/skills/ae-analysis/references/ai_models/revenue.md +2 -0
  61. package/skills/ae-analysis/references/analysis_data_export.md +11 -1
  62. package/skills/ae-analysis/references/asset_batch_info_export.md +2 -2
  63. package/skills/ae-analysis/references/asset_batch_sql_export.md +2 -2
  64. package/skills/ae-analysis/references/asset_export.md +1 -1
  65. package/skills/ae-analysis/references/bi_panel_page_data_export.md +1 -1
  66. package/skills/ae-analysis/references/check_export.md +1 -1
  67. package/skills/ae-analysis/references/command_index.md +34 -25
  68. package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -0
  69. package/skills/ae-analysis/references/dashboard_report_get.md +6 -2
  70. package/skills/ae-analysis/references/dashboard_report_update.md +24 -5
  71. package/skills/ae-analysis/references/feedback_submit.md +1 -1
  72. package/skills/ae-analysis/references/governance_recommendation_export.md +10 -2
  73. package/skills/ae-analysis/references/live_data_export.md +1 -1
  74. package/skills/ae-analysis/references/metric_create.md +29 -0
  75. package/skills/ae-analysis/references/metric_get.md +2 -0
  76. package/skills/ae-analysis/references/metric_update.md +2 -0
  77. package/skills/ae-analysis/references/operation_record_export.md +1 -1
  78. package/skills/ae-analysis/references/plan_change_log_export.md +1 -1
  79. package/skills/ae-analysis/references/plan_export.md +1 -1
  80. package/skills/ae-analysis/references/project_info_get.md +4 -0
  81. package/skills/ae-analysis/references/project_member_group_add_members.md +35 -0
  82. package/skills/ae-analysis/references/project_member_group_create.md +25 -0
  83. package/skills/ae-analysis/references/project_member_group_delete.md +34 -0
  84. package/skills/ae-analysis/references/project_member_group_list.md +29 -0
  85. package/skills/ae-analysis/references/project_member_group_members.md +28 -0
  86. package/skills/ae-analysis/references/project_member_group_remove_members.md +35 -0
  87. package/skills/ae-analysis/references/project_member_group_rename.md +26 -0
  88. package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +6 -1
  89. package/skills/ae-analysis/references/report_data_export.md +1 -1
  90. package/skills/ae-analysis/references/scenario_append.md +25 -0
  91. package/skills/ae-analysis/references/scenario_collect.md +35 -0
  92. package/skills/ae-analysis/references/scenario_evaluation.md +30 -0
  93. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +73 -4
  94. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-schema.md +5 -1
  95. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/execution-contract.mjs +173 -0
  96. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +109 -64
  97. package/skills/ae-automation/SKILL.md +2 -2
  98. package/skills/ae-automation/references/cli.md +18 -1
  99. package/skills/ae-capability/SKILL.md +7 -3
  100. package/skills/ae-evaluation/SKILL.md +83 -0
  101. package/skills/ae-evaluation/references/access-and-members.md +55 -0
  102. package/skills/ae-evaluation/references/connections.md +78 -0
  103. package/skills/ae-evaluation/references/datasets.md +57 -0
  104. package/skills/ae-evaluation/references/evaluators.md +81 -0
  105. package/skills/ae-evaluation/references/files.md +33 -0
  106. package/skills/ae-evaluation/references/integrations.md +39 -0
  107. package/skills/ae-evaluation/references/runs.md +160 -0
  108. package/skills/ae-evaluation/references/schedules.md +31 -0
  109. package/skills/ae-kb/SKILL.md +1 -2
  110. package/skills/ae-metadata/SKILL.md +2 -1
  111. package/skills/ae-metadata/references/metadata_data_table_download.md +7 -1
  112. package/skills/ae-metadata/references/metadata_data_table_get.md +2 -0
  113. package/skills/ae-system/SKILL.md +1 -1
  114. package/skills/ae-team/SKILL.md +2 -2
  115. package/skills/ae-team/references/run-start.md +1 -0
  116. package/skills/ae-team/references/run-watch.md +7 -5
  117. package/skills/ae-things/SKILL.md +53 -51
  118. package/skills/ae-things/references/cli.md +56 -54
  119. package/skills/ae-things-progress/SKILL.md +20 -20
  120. package/skills/ae-things-review/SKILL.md +19 -19
  121. package/skills/ae-workspace/SKILL.md +1 -1
  122. package/dist/chunk-4655PUNX.js +0 -43
@@ -13,7 +13,8 @@ Domain: **TeamRun execution / read**
13
13
  - `--id` is required. Obtain the real run ID from a previous `+run-start` or `+run-chat` response.
14
14
  - Check the **exit code** to determine what happened — do not guess from output alone.
15
15
  - When exit code is `2` (`waiting_user`): read `pendingQuestion` from stdout, present it to the user, collect their answer, call `+run-reply`, then re-run `+run-watch`.
16
- - Network drops are handled automatically (up to 10 reconnects with 2s delay). Do NOT retry `+run-watch` on exit 1 unless you have confirmed the run itself failed via `+run-result`.
16
+ - Connection failures, premature EOF, and SSE read failures share a maximum of 10 reconnects, with a 2s delay before each retry. Reconnects carry the last complete log timestamp in `afterLog`; an incomplete event is discarded. HTTP rejections and SSE `error` events exit immediately without reconnecting.
17
+ - Exit 1 alone does not mean the server-side run failed. After a connection error or exhausted retries, check `+run-result --id <run_id>`. Resume watching the same run if it is still active; do not start a duplicate run merely because its stream disconnected.
17
18
 
18
19
  ## Command
19
20
  ```bash
@@ -37,16 +38,17 @@ ae-cli team +run-watch --id <run_id> --after-log <lastTimestamp>
37
38
  | Code | Meaning | Action |
38
39
  |---|---|---|
39
40
  | `0` | `completed` or `partial_success` | Proceed to `+run-artifacts` |
40
- | `1` | `failed`, `cancelled`, `stale`, or connection error | Inspect `errorMessage` in stdout JSON; report to user |
41
+ | `1` | `failed`, `cancelled`, `stale`, or connection error | Inspect the terminal entity or error; for connection errors, check the same run with `+run-result` |
41
42
  | `2` | `waiting_user` | Read `pendingQuestion` from stdout JSON, present to user, then `+run-reply` → re-run `+run-watch` |
42
43
 
43
44
  ## Output
44
- stdout always receives the final `TeamRunEntity` as a standard JSON envelope:
45
+ When a terminal or `waiting_user` event is received, stdout receives its `TeamRunEntity` as a standard JSON envelope:
45
46
  ```json
46
47
  { "ok": true, "data": { "id": "...", "status": "...", "pendingQuestion": "...", ... } }
47
48
  ```
48
49
  - Exit 0/1: the entity from the `final` SSE event (terminal state)
49
- - Exit 2: the entity from the `update` SSE event at the moment `waiting_user` was detected
50
+ - Exit 2: the entity from the `snapshot` or `update` SSE event at the moment `waiting_user` was detected
51
+ - Connection failures and SSE `error` events emit an error on stderr and may have no entity on stdout. A connection error does not cancel the run.
50
52
 
51
53
  stderr receives real-time log lines and status changes (suppressed with `--quiet`).
52
54
 
@@ -75,7 +77,7 @@ ae-cli team +run-watch --id <run_id>
75
77
 
76
78
  ## Next Steps on Failure
77
79
  - Exit 1 + `status = failed`: read `errorMessage` in the JSON output; ask user whether to retry with `+run-start`.
78
- - Connection drop before `final`: re-run `+run-watch --id <run_id> --after-log <lastTimestamp>`.
80
+ - Connection error before `final`: let automatic reconnects finish. If the command exits 1, check `+run-result --id <run_id>` first. For an active run, resume with `+run-watch --id <run_id> --after-log <lastTimestamp>`; omit `--after-log` if no cursor was retained.
79
81
 
80
82
  ## Recommended Chaining
81
83
  - `+run-start` → `+run-watch` → exit 0 → `+run-artifacts`
@@ -1,85 +1,87 @@
1
1
  ---
2
2
  name: ae-things
3
- description: "工作空间事项(things):在明确的 AgentSpace 中用 ae-cli things 创建、查询、更新和推进事项。当对话出现分工指派(谁负责什么)、要交付的产出、推进节奏、待办、下一步、里程碑或阶段计划时主动使用——不需要用户显式说「创建事项」。"
3
+ description: "Workspace Things: use ae-cli things to create, query, update and advance Things in an explicitly identified AgentSpace. Use proactively when the conversation includes assignments (who owns what), deliverables, a delivery cadence, to-dos, next steps, milestones or phased plans; an explicit request to create a Thing is not required."
4
4
  ---
5
5
 
6
- # 工作空间事项
6
+ # Workspace Things
7
7
 
8
- 使用 `ae-cli things` 操作当前明确指定的 TE 空间事项。先读 [CLI reference](references/cli.md),不猜 ID,不自动选择其他空间。
8
+ Use `ae-cli things` to manage Things in the explicitly identified current TE space. Read the [CLI reference](references/cli.md) first. Never guess IDs or automatically select another space. Use the user's language for replies and user-facing Thing content; keep commands, flags and field identifiers unchanged.
9
9
 
10
- ## 何时创建事项
10
+ <a id="何时创建事项"></a>
11
11
 
12
- **由你自己判断要不要建,不要等「帮我创建事项」这种显式指令。** 个人空间与共享空间一视同仁。
12
+ ## When to create Things
13
13
 
14
- 出现下列任一信号就直接创建,不必先问:
14
+ **Decide proactively whether to create Things; do not wait for an explicit request such as "create a Thing for me".** Apply the same rules to personal and shared spaces.
15
15
 
16
- - 出现「谁做什么」的分工指派,例如「让 A 梳理 X,B 梳理 Y」。
17
- - 出现要交付的产出加上推进意图,例如「输出一份最终方案」「按这个节奏推进」「安排一下」。
18
- - 出现承诺、待办、下一步、里程碑或多阶段计划。
19
- - 用户在复述已经定下来的事,并指向后续执行。
16
+ Create Things directly, without asking first, when any of these signals appears:
20
17
 
21
- 下列情况不要创建:
18
+ - An assignment identifies who does what, such as "Have A investigate X and B investigate Y."
19
+ - A deliverable is paired with intent to proceed, such as "produce a final proposal", "follow this cadence" or "schedule the work".
20
+ - The conversation contains commitments, to-dos, next steps, milestones or phased plans.
21
+ - The user restates an agreed decision and points toward execution.
22
22
 
23
- - 纯信息问答、概念解释、闲聊。
24
- - 还在比较方案、假设性推演,或用户明确说「先不定」。
25
- - 查重命中已有同义事项——指出已存在,不重复建。
26
- - 用户说过不要建。
23
+ Do not create Things in these cases:
27
24
 
28
- **不确定时,把拟建清单(标题、负责人、描述要点)在回复里列出来,一次性问用户确认。不允许什么都不做就把分工排版成清单交差。**
25
+ - Informational questions, conceptual explanations or casual conversation.
26
+ - Options are still being compared, the discussion is hypothetical, or the user explicitly says not to decide yet.
27
+ - Deduplication finds an existing equivalent Thing: point it out instead of creating a duplicate.
28
+ - The user has said not to create Things.
29
29
 
30
- ### 创建时的动作顺序
30
+ **When uncertain, present the proposed Things (titles, assignees and description outlines) in the reply and ask for confirmation once. Merely formatting assignments into a list without taking action is not sufficient.**
31
31
 
32
- 1. 确认已绑定明确的 AgentSpace;没有绑定就不创建。
33
- 2. `members` 取成员列表,把对话里提到的人名映射到成员 ID。唯一命中就直接作为 `--assignee-id`;命中 0 个或多个时该事项负责人留空(服务端默认当前用户),并在回复里点名待确认。
34
- 3. `list --query` 或 `options --query` 查重。
35
- 4. 逐个 `create`:标题写可交付物而不是原话复述,描述写清目标与验收要点,带 `--command-id` 保证重试幂等。
36
- 5. 需要时用 `conversation bind` 绑定主事项,或 `link-conversation` 建普通引用。
37
- 6. 在回复里报告已创建的事项编号、标题、负责人,以及哪些负责人待确认。
32
+ ### Creation sequence
38
33
 
39
- **粒度**:按「可独立交付、可独立负责」的单位建事项。没有子事项和分组,不要试图建层级。例如「A、B、C 各自梳理一块,然后合成一份总方案」对应 4 个事项,而不是 1 个,也不是每句话一个。
34
+ 1. Confirm that an explicit AgentSpace is bound. Without one, do not create Things.
35
+ 2. Use `members` to map names mentioned in the conversation to member IDs. Use a unique match as `--assignee-id`. With zero or multiple matches, omit the assignee (the server defaults to the current user) and identify the unresolved assignment in the reply.
36
+ 3. Deduplicate with `list --query` or `options --query`.
37
+ 4. Run `create` for each Thing: name the deliverable rather than repeating the user's words, describe the goal and acceptance criteria, and include `--command-id` for idempotent retries.
38
+ 5. When needed, use `conversation bind` to bind the primary Thing or `link-conversation` to add an ordinary reference.
39
+ 6. Report the created Thing numbers, titles and assignees, including assignments still awaiting confirmation.
40
40
 
41
- ### 授权边界
41
+ **Granularity:** create one Thing per independently deliverable unit with its own owner. Things have no sub-Things or groups; do not build a hierarchy. For example, "A, B and C each investigate one area, then combine the results into a final proposal" maps to four Things, not one and not one per sentence.
42
42
 
43
- 自主执行:创建新事项;为自己刚建的事项补第一条记录。
43
+ ### Authorization boundaries
44
44
 
45
- 用户已授权推进/完成的事项:直接追加或更新相应进展,并自动关联本次涉及的交付附件,按下节完成发布与回读。个人与共享空间一致,发布仍传 `--confirm-share`;授权事项交付即包含向该事项所在空间共享这些交付文件。
45
+ Act autonomously to create new Things and add the first entry to a Thing you just created.
46
46
 
47
- 其他已有事项改写、负责人变更、归档/恢复、解绑及永久删除仍需明确授权;历史绑定本身不是授权。不自动发消息或创建定时任务。
47
+ For Things the user has authorized you to advance or complete, append or update the relevant progress directly and automatically attach the deliverable files involved in this work. Complete publication and readback as described below. The same rule applies to personal and shared spaces; publication still requires `--confirm-share`. Authorization to deliver work for a Thing includes sharing those deliverable files with that Thing's space.
48
48
 
49
- ### 交付附件闭环
49
+ Other changes to existing Things, reassignment, archiving/restoring, unbinding and permanent deletion still require explicit authorization. A historical binding alone does not grant authorization. Do not automatically send messages or create scheduled tasks.
50
50
 
51
- 追加/更新进展时,逐个核对本次实际交付文件:
51
+ ### Deliverable attachment workflow
52
52
 
53
- 1. 用 `asset available` 查本空间文件并翻完分页。已登记文件按 assetId 关联,未登记文件按返回的相对 path 关联。
54
- 2. 尚未进入空间的新文件用 `asset publish`:本轮未登记产物使用 `--conversation-id --run-id --source-path`;已有产物使用 `--artifact-id` 或 `--file-token`。每个文件保存独立 commandId,重试原样复用。
55
- 3. `linked:false` 表示已发布未关联,只用返回 assetId 补 `asset link`,不重复复制。只发布本次交付文件,不发布临时文件或整个会话目录。
56
- 4. `asset list --id` 回读,核实每个附件存在且 availability=available,再回读进展记录。只有两者均成功才报告“进展和附件已更新”;失败明确区分已发布、已关联、待恢复。
53
+ When appending or updating progress, check each file actually delivered in this work:
57
54
 
58
- 附件使用上述文件关联接口;本地路径文本链接不能代替附件,仅复制文件也不算交付完成。完整参数见 CLI reference。
55
+ 1. Use `asset available` to inspect space files and follow all pages. Link registered files by assetId and unregistered files by the returned relative path.
56
+ 2. Use `asset publish` for new files not yet in the space: use `--conversation-id --run-id --source-path` for unregistered outputs from this run, or `--artifact-id` / `--file-token` for existing artifacts. Keep a separate commandId for each file and reuse it unchanged on retries.
57
+ 3. `linked:false` means the file was published but not linked. Use the returned assetId with `asset link` to complete the link without copying again. Publish only the deliverable files from this work, not temporary files or the entire conversation directory.
58
+ 4. Read back with `asset list --id`, verify that every attachment exists with availability=available, then read back the progress entry. Report "progress and attachments updated" only after both checks succeed. On failure, distinguish published files, linked files and work awaiting recovery.
59
59
 
60
- ## 当前会话绑定与执行快照
60
+ Use these file-linking APIs for attachments. A text link to a local path does not replace an attachment, and copying a file alone does not complete delivery. See the CLI reference for full parameters.
61
61
 
62
- 以本轮冻结的绑定声明确定本轮默认事项。涉及当前事项执行、审查、总结或更新前,按声明中的 `readCommand` 读取本次执行快照;普通聊天无需读取。运行中切换或解绑只立即改变会话归属,本轮(含等待、恢复、重试)仍用原快照;原先无事项则本轮继续无默认事项,下一次新 Run 才使用最新绑定。用户明确指定其他事项时仍按权限读取和操作,不将会话最新归属误认为本轮快照。
62
+ ## Current conversation binding and execution snapshots
63
63
 
64
- 用户明确要求将当前对话绑定到某事项时,唯一定位目标后执行 `conversation bind`,再用 `conversation primary` 回读确认;同名事项不能唯一确定时询问用户。成功说明「已绑定,事项上下文从下一轮生效」。解绑也须回读确认。不得将 `link-conversation` 普通引用当成主事项绑定成功的替代;接口失败应如实说明,不绕过权限。
64
+ Use the binding declaration frozen for this run to determine its default Thing. Before executing, reviewing, summarizing or updating that Thing, use the declaration's `readCommand` to read the execution snapshot; ordinary chat does not require this read. Switching or unbinding during a run changes the conversation's association immediately, but the current run (including waits, resumes and retries) keeps its original snapshot. If the run originally had no Thing, it still has no default Thing. Only a new Run uses the latest binding. If the user explicitly names another Thing, read and operate on it subject to permissions; do not confuse the conversation's latest association with this run's snapshot.
65
65
 
66
- `context --id <thing-id> --run-id <run-id>` 返回执行受理时的业务文本和版本。需要最新事实或写入前版本时额外读取不带 `--run-id` 的实时上下文,并明确区分采集时间与快照版本。读取失败时披露缺失,不凭标题猜测,也不自动改读实时数据。具体契约见 [CLI reference](references/cli.md#执行快照与实时上下文)。
66
+ When the user explicitly asks to bind the current conversation to a Thing, uniquely identify the target, run `conversation bind`, then verify with `conversation primary`. Ask the user when a name does not uniquely identify a Thing. On success, explain that the binding is saved and the Thing context takes effect from the next run. Verify unbinding by readback as well. An ordinary `link-conversation` reference does not substitute for a primary-Thing binding. Report API failures accurately without bypassing permissions.
67
67
 
68
- - 字段为标题、描述、标签、状态、负责人、协作者。状态 open/paused/done;归档与恢复是独立动作。新建描述必填,创建时省略负责人默认本人,显式 null 被拒绝。
69
- - 用 members/options 查询成员和事项候选;创建、编辑和协作者管理遵循服务端权限。修改前读最新 version,409 后比较变化,不仅替换版本号。
70
- - 记录使用 url/note/progress;省略类型时服务端将单个 HTTP(S) URL 保存为链接,其余为备注。更新进展用 entry append --type progress;修改记录用 entry update 和 expected-updated-at,支持单独修改标题、类型或正文;--clear-title 清空标题。
71
- - 从会话消息整理事项用 from-message,提供已核实的 conversation-id/message-id 和确认正文;按上面的创建信号判断是否该整理,不要求用户显式点名该命令。推断出来的内容先在会话中呈现建议;不使用已删除的持久化修改草稿命令。
72
- - 主事项使用 conversation primary/bind/unbind,普通引用用 link-conversation,conversations 查询关联。关联不改变会话隐私和权限。
73
- - 阶段成果使用进展记录;交接使用备注写清已完成内容、证据和下一步。负责人和协作者是唯一人员协作关系,不额外认领。
74
- - 文件使用 asset available/list/link/unlink/publish,遵循上面的授权边界与交付附件闭环;解除关联不删除文件。
75
- - 永久删除先读最新版本,解释不可恢复及会话/文件保留边界,明确确认后使用 delete --confirm-delete --yes。运行冲突时等待,不自动终止运行。
76
- - 已获明确授权的具体修改直接执行,不重复询问。
68
+ `context --id <thing-id> --run-id <run-id>` returns the business text and version captured when execution was accepted. When current facts or a version for a write are needed, explicitly read live context without `--run-id` as an additional step, distinguishing collection time from snapshot version. If the snapshot read fails, disclose the missing information rather than guessing from the title or automatically falling back to live data. See [Execution snapshots and live context](references/cli.md#execution-snapshots-and-live-context).
69
+
70
+ - Fields are title, description, tags, status, assignee and collaborators. Status is open/paused/done; archiving and restoring are separate actions. Creation requires a description. Omitting the assignee on creation defaults to the current user; explicit null is rejected.
71
+ - Use members/options to query member and Thing candidates. Creation, editing and collaborator management follow server permissions. Read the latest version before changes. After a 409, compare the changes instead of merely replacing the version number.
72
+ - Entries use url/note/progress. When type is omitted, the server stores a single HTTP(S) URL as a link and other content as a note. Append progress with entry append --type progress. Edit entries with entry update and expected-updated-at; title, type or body can be changed independently. --clear-title clears the title.
73
+ - Use from-message to turn conversation messages into Things, providing verified conversation-id/message-id values and confirmed body text. Apply the creation signals above without requiring the user to name this command explicitly. Present inferred content as a proposal in the conversation first. Do not use the removed persistent mutation-draft commands.
74
+ - Use conversation primary/bind/unbind for the primary Thing, link-conversation for ordinary references, and conversations to query associations. Linking does not change conversation privacy or permissions.
75
+ - Record interim deliverables as progress entries. Use notes for handoffs, stating completed work, evidence and next steps. Assignees and collaborators are the only people-related collaboration relationships; no separate claiming step is needed.
76
+ - Use asset available/list/link/unlink/publish for files, following the authorization boundaries and deliverable attachment workflow above. Unlinking does not delete a file.
77
+ - Before permanent deletion, read the latest version, explain that deletion is irreversible and which conversations/files remain, then use delete --confirm-delete --yes after explicit confirmation. Wait on active-run conflicts; do not automatically terminate runs.
78
+ - Execute specifically authorized changes directly without asking for the same permission again.
77
79
 
78
80
  ```bash
79
- ae-cli things create --agent-space-id <space-id> --title '接口验收' --description '验证权限与数据一致性' --format json
80
- ae-cli things entry append --agent-space-id <space-id> --id <thing-id> --type progress --content '已完成接口联调' --format json
81
+ ae-cli things create --agent-space-id <space-id> --title 'API acceptance' --description 'Verify permissions and data consistency' --format json
82
+ ae-cli things entry append --agent-space-id <space-id> --id <thing-id> --type progress --content 'Completed API integration checks' --format json
81
83
  ```
82
84
 
83
- 审查使用 [ae-things-review](../ae-things-review/SKILL.md),周期汇总使用 [ae-things-progress](../ae-things-progress/SKILL.md)。二者按完整采集事实归纳,保留未读文件、截断和非事务采集边界。
85
+ Use [ae-things-review](../ae-things-review/SKILL.md) for reviews and [ae-things-progress](../ae-things-progress/SKILL.md) for periodic summaries. Both synthesize fully collected facts while disclosing unread files, truncation and non-transactional collection limits.
84
86
 
85
87
  Use `things conversations` to list linked conversations and `things conversation get` to read one. Start new conversations from the workspace UI; Things CLI only manages thing links and primary-thing binding.
@@ -1,73 +1,73 @@
1
- # 工作空间事项 CLI reference
1
+ # Workspace Things CLI reference
2
2
 
3
- 本 reference 描述已实现命令,不重复维护权限和数据业务规则。[主 Spec](https://gitlab.thinkingdata.cn/te-ai/te-claude/-/blob/feat/workspace-issues-convergence/docs/specs/2026-09-17-workspace-issues-convergence/spec.md)。
3
+ This reference describes implemented commands without duplicating permission and business-data rules. See the [main spec](https://gitlab.thinkingdata.cn/te-ai/te-claude/-/blob/feat/workspace-issues-convergence/docs/specs/2026-09-17-workspace-issues-convergence/spec.md).
4
4
 
5
5
  Transition status: transitional
6
6
  Owning module: te-claude / src/lib/agent-space-things
7
7
  Current transport: TE REST /api/cli/things/v1; cli-token
8
8
  Gateway target: Capability Gateway things domain (TBD)
9
9
  Review after: 2026-10-14
10
- Exit condition: Gateway 提供等价空间校验、幂等、权限、分页和会话关联能力后迁移 transport。
10
+ Exit condition: Migrate the transport when Gateway provides equivalent space validation, idempotency, permissions, pagination and conversation associations.
11
11
 
12
- 事项尚未接入 Gateway。类型化 flags、JSON/stdin、正文脱敏 dry-run、默认值和目标一致性检查提供必要的 Transitional 入口。
12
+ Things is not yet integrated with Gateway. Typed flags, JSON/stdin, body-redacted dry-run, defaults and target-consistency checks provide the necessary Transitional entry point.
13
13
 
14
- ## 公共参数
14
+ ## Common parameters
15
15
 
16
- `--agent-space-id` 在会话外必填,会话内须与当前会话空间一致。`--id` 为事项 ID。写请求用 `--command-id <uuid>` 支持原样重试,省略时生成;编辑、归档和恢复须带 `--expected-version`。分页为 `--limit 1..100 --cursor <opaque>`,默认 50。通用 `--format json` 输出结构化结果;`--dry-run` 不请求业务 API、不读取文件/stdin、不泄露正文。主事项解除、删除资产关联或协作者属于 high-risk-write,已获授权的脚本使用 `--yes`。
16
+ `--agent-space-id` is required outside a conversation and must match the current conversation's space inside one. `--id` is the Thing ID. Writes use `--command-id <uuid>` for unchanged retries; one is generated when omitted. Editing, archiving and restoring require `--expected-version`. Pagination uses `--limit 1..100 --cursor <opaque>`, defaulting to 50. Global `--format json` produces structured output. `--dry-run` does not call business APIs, read files/stdin or expose body content. Unbinding the primary Thing, unlinking assets and removing collaborators are high-risk-write operations; explicitly authorized scripts use `--yes`.
17
17
 
18
- ## 字段和记录
18
+ ## Fields and entries
19
19
 
20
- 事项字段仅为 title、description、tags、status、assigneeId、collaboratorIds。新建标题 1–200 字符、描述 1–10000 字符必填。活跃状态 `open | paused | done`,归档和恢复使用独立动作。个人或共享空间创建时省略负责人均默认当前用户;更新省略保持不变,`null` 被拒绝。`--tags '["标签"]'`、`--collaborator-ids '["member-id"]'`,空数组清空。`--assignee-id` 只能指定有效空间成员。
20
+ Thing fields are limited to title, description, tags, status, assigneeId and collaboratorIds. Creation requires a title of 1–200 characters and a description of 1–10000 characters. Active statuses are `open | paused | done`; archiving and restoring are separate actions. In both personal and shared spaces, omitting the assignee on creation defaults to the current user. Omitting it on update leaves it unchanged; `null` is rejected. Use `--tags '["tag"]'` and `--collaborator-ids '["member-id"]'`; empty arrays clear these fields. `--assignee-id` must identify a valid space member.
21
21
 
22
- 新建/更新可用 `--file fields.json` 或 `--stdin` 读取 camelCase 字段对象,显式 flags 覆盖同名字段。失效的验收、优先级、分组、截止时间、进展快照、阻塞、下一步、父子事项字段被拒绝;group 和 draft 命令已移除。
22
+ Creation/update can read a camelCase field object with `--file fields.json` or `--stdin`; explicit flags override matching fields. Retired fields for acceptance criteria, priority, groups, due dates, progress snapshots, blockers, next steps and parent/child Things are rejected. The group and draft commands have been removed.
23
23
 
24
- | 命令 | 参数和结果 |
25
- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
26
- | `list` | `--query --status open\|paused\|done\|archived --assignee-id`;返回 items/nextCursor |
27
- | `get` | `--id`;字段、权限、version、协作者及 latestProgress |
28
- | `create` | `--title --description` 和可选业务字段 |
29
- | `update` | `--id --expected-version` 和业务字段 |
30
- | `archive/restore` | `--id --expected-version` |
31
- | `delete` | `--id --expected-version --confirm-delete --yes`;不可恢复,清理事项及所有关联,保留会话、消息、历史运行快照与空间文件;活动运行冲突返回 THING_RUNNING_CONFLICT |
32
- | `members/options` | 分页查询成员/事项候选;options 支持 `--query` |
33
- | `collaborator add/remove` | `--id --user-id` |
34
- | `entry list` | `--id` 和分页,按 createdAt、id 倒序 |
35
- | `entry append` | `--id --type url\|note\|progress`;省略时服务端自动识别链接或备注,可选 `--title`;`--content`、`--file`、`--stdin` 三选一 |
36
- | `entry update` | `--id --entry-id --expected-updated-at`;至少一个修改字段:`--title`、`--clear-title`、`--type note\|url\|progress` 或正文输入;可只改标题或类型,title 与 clear-title 互斥 |
37
- | `from-message` | `--conversation-id --message-id` 和正文;`--id` 追加或 `--title` 新建二选一;仅 `--id` 追加模式可选 `--entry-type note\|progress`,默认 note;`--title` 新建模式传入会报错,新建以正文作为描述,不生成额外进展记录 |
24
+ | Command | Parameters and results |
25
+ | --- | --- |
26
+ | `list` | `--query --status open\|paused\|done\|archived --assignee-id`; returns items/nextCursor |
27
+ | `get` | `--id`; fields, permissions, version, collaborators and latestProgress |
28
+ | `create` | `--title --description` and optional business fields |
29
+ | `update` | `--id --expected-version` and business fields |
30
+ | `archive/restore` | `--id --expected-version` |
31
+ | `delete` | `--id --expected-version --confirm-delete --yes`; irreversible, removes the Thing and all associations while retaining conversations, messages, historical run snapshots and space files; active-run conflicts return THING_RUNNING_CONFLICT |
32
+ | `members/options` | Paginated member/Thing candidates; options supports `--query` |
33
+ | `collaborator add/remove` | `--id --user-id` |
34
+ | `entry list` | `--id` and pagination; descending by createdAt, then id |
35
+ | `entry append` | `--id --type url\|note\|progress`; when type is omitted, the server detects a link or note; optional `--title`; exactly one of `--content`, `--file` or `--stdin` |
36
+ | `entry update` | `--id --entry-id --expected-updated-at`; at least one changed field: `--title`, `--clear-title`, `--type note\|url\|progress` or body input; title-only/type-only edits are allowed; title and clear-title are mutually exclusive |
37
+ | `from-message` | `--conversation-id --message-id` and body; choose either `--id` to append or `--title` to create; only append mode with `--id` accepts optional `--entry-type note\|progress`, defaulting to note; supplying it in create mode with `--title` is an error; creation uses the body as the description without an extra progress entry |
38
38
 
39
39
  ```bash
40
- ae-cli things create --agent-space-id <space-id> --title '验收事项' --description '验证成员操作与权限' --format json
41
- ae-cli things entry append --agent-space-id <space-id> --id <thing-id> --type progress --content '完成接口联调' --format json
40
+ ae-cli things create --agent-space-id <space-id> --title 'Acceptance checks' --description 'Verify member operations and permissions' --format json
41
+ ae-cli things entry append --agent-space-id <space-id> --id <thing-id> --type progress --content 'Completed API integration checks' --format json
42
42
  ```
43
43
 
44
- ## 会话
44
+ ## Conversations
45
45
 
46
- | 命令 | 参数和含义 |
47
- | -------------------------- | ----------------------------------------------------- |
48
- | `conversation get` | `--conversation-id`;读取可访问会话快照及当前模型投影 |
49
- | `conversation primary` | `--conversation-id`;读取主事项关联 |
50
- | `conversation bind/unbind` | `--conversation-id`;bind 额外需要 `--id` |
51
- | `conversations` | `--id` 和分页;关联会话 |
52
- | `link-conversation` | `--id --conversation-id`;追加引用,不替换主事项 |
46
+ | Command | Parameters and meaning |
47
+ | --- | --- |
48
+ | `conversation get` | `--conversation-id`; read an accessible conversation snapshot and its current model projection |
49
+ | `conversation primary` | `--conversation-id`; read the primary-Thing association |
50
+ | `conversation bind/unbind` | `--conversation-id`; bind also requires `--id` |
51
+ | `conversations` | `--id` and pagination; linked conversations |
52
+ | `link-conversation` | `--id --conversation-id`; append a reference without replacing the primary Thing |
53
53
 
54
- 关联不授予会话访问权;不能读取其他用户私有会话。会话排队、运行或等待交互时允许绑定/解绑,立即更新归属但不修改已受理 Run 的冻结上下文,下一次新 Run 生效。绑定后用 `conversation primary` 回读,不使用普通引用代替主事项绑定。
54
+ An association does not grant conversation access; other users' private conversations remain inaccessible. Binding/unbinding is allowed while a conversation is queued, running or waiting for interaction. It updates the association immediately without changing an accepted Run's frozen context, and takes effect for the next new Run. Read back with `conversation primary` after binding; an ordinary reference is not a substitute for a primary-Thing binding.
55
55
 
56
- ## 进展与汇总
56
+ ## Progress and summaries
57
57
 
58
- 阶段成果写 `entry append --type progress`;交接写 `--type note`,用标题和正文说明已完成内容、证据、下一步。人员关系使用负责人和协作者,不需要认领。
58
+ Record interim deliverables with `entry append --type progress`. Use `--type note` for handoffs, describing completed work, evidence and next steps in the title and body. People-related relationships are assignees and collaborators; no claiming step is needed.
59
59
 
60
- `+detail --id` 收集事项、全部可读 entries/assets 和实时 context。`+digest` 支持负责人筛选或 `--thing-ids id-a,id-b`,不能同时指定两种范围;可选 `--from --to --time-zone`,时间须带时区,窗口左闭右开。默认分别分页采集活动与归档事项,跨集合按 ID 去重。返回 open/paused/done 三态 counts、archivedCount、items 和采集边界。latestProgress 使用服务端最新 progress 记录;effectiveProgressCount 只统计 progress 记录,不代表模型已核实内容;status 时间线的 before/after 用于重建基线。
60
+ `+detail --id` collects the Thing, all readable entries/assets and live context. `+digest` supports an assignee filter or `--thing-ids id-a,id-b`, but not both scopes together. Optional `--from --to --time-zone` values define a start-inclusive, end-exclusive window; timestamps must include a timezone. By default, active and archived Things are paginated separately and deduplicated by ID across collections. Results include three-status open/paused/done counts, archivedCount, items and collection limits. latestProgress uses the server's latest progress entry. effectiveProgressCount counts progress entries only; it does not mean the model has verified their contents. The status timeline's before/after values support baseline reconstruction.
61
61
 
62
- 每链最多 100 页/10000 条。异常、重复游标、空页继续或达到上限标 truncated;重复 ID 不解释为完整。报告核对 fetchedCount、truncated、consistency、collectedAt。non_transactional 不是事务快照;changed_during_collection 或截断时 baseline 为 null。counts 是采集时状态,不能当周期末状态。未记录不等于未推进,附件可用不表示已读取或已验收。
62
+ Each chain is limited to 100 pages / 10000 items. Errors, repeated cursors, continuation after an empty page or reaching a limit set truncated. Duplicate IDs are not evidence of completeness. Reports must check fetchedCount, truncated, consistency and collectedAt. non_transactional is not a transactional snapshot; baseline is null for changed_during_collection or truncation. counts represent state at collection, not period-end state. No recorded update does not mean no progress was made, and an available attachment does not mean it was read or accepted.
63
63
 
64
- ## 错误与恢复
64
+ ## Errors and recovery
65
65
 
66
- THING_INVALID_INPUT 修正参数;THING_FORBIDDEN/THING_NOT_FOUND 不推断不可见资源;THING_READ_ONLY 表示资源只读:归档事项需恢复后编辑,不可用空间需先恢复空间可用性,操作日志不可编辑、应追加新记录;THING_VERSION_CONFLICT/记录时间戳冲突重读并比较,不能只换版本号;THING_COMMAND_CONFLICT 表示同 UUID 不同请求;THING_RATE_LIMITED 等待后用原 commandId 重试。主事项绑定不因运行中而拒绝;永久删除仍保留 THING_RUNNING_CONFLICT 活动运行保护。
66
+ For THING_INVALID_INPUT, correct the parameters. For THING_FORBIDDEN/THING_NOT_FOUND, do not infer facts about invisible resources. THING_READ_ONLY means the resource is read-only: restore archived Things before editing, restore space availability for unavailable spaces, and append a new record instead of editing an operation log. For THING_VERSION_CONFLICT/entry timestamp conflicts, reread and compare changes instead of merely replacing the version number. THING_COMMAND_CONFLICT means the same UUID was used for different requests. For THING_RATE_LIMITED, wait and retry with the original commandId. Primary-Thing binding is not rejected merely because a run is active; permanent deletion still retains the THING_RUNNING_CONFLICT active-run guard.
67
67
 
68
- ## 文件与交付物(阶段4)
68
+ ## Files and deliverables (phase 4)
69
69
 
70
- `asset available` 分页合并当前空间实际文件和登记元数据;已登记项返回稳定 `assetId`,未登记项 assetId=null、path 为相对路径。`asset link` 接受 `--asset-id` 或 `--path` 二选一,路径关联时校验、登记并关联,列表读取不登记。`asset list --id` 分页读取事项关联。核对 availability 及 scanStatus/scanReason;部分扫描不代表目录完整。
70
+ `asset available` paginates over actual files and registered metadata in the current space. Registered items return a stable `assetId`; unregistered items have assetId=null and a relative path. `asset link` accepts exactly one of `--asset-id` or `--path`. Linking by path validates, registers and links the file; listing does not register files. `asset list --id` paginates Thing associations. Check availability and scanStatus/scanReason; a partial scan does not establish directory completeness.
71
71
 
72
72
  ```bash
73
73
  ae-cli things asset available --agent-space-id <space-id> --limit 100 --format json
@@ -79,25 +79,27 @@ ae-cli things asset link --agent-space-id <space-id> --id <thing-id> --path <spa
79
79
  ae-cli things asset unlink --agent-space-id <space-id> --id <thing-id> --asset-id <asset-id> --command-id <uuid> --format json
80
80
  ```
81
81
 
82
- - `role` 仅接受 attachment(默认);deliverable 在正常执行与 dry-run 的参数校验阶段均被拒绝。同一事项与资产只有一个关联。
83
- - 发布传 `--confirm-share`,授权边界见 Skill。来源为 artifact-id、file-token、source-path 三选一;source-path 必须同时带 run-id,服务端验证执行归属、真实沙箱文件及会话 artifacts 目录边界。发布到空间后所有成员可见。
84
- - 发布使用既有会话产物发布器。发布回执与资产元数据同事务,使用原 commandId 重试不会再复制。返回 `linked:false, assetId, code:THING_ASSET_LINK_FAILED` 时文件已经共享,用 asset link 只补关联;不重复发布、不声称已交付。
85
- - 解除关联不删除文件、不恢复私有;被引用的资产删除返回 `AGENT_SPACE_ASSET_REFERENCED`,须先解除关联。
86
- - `THING_ASSET_UNAVAILABLE` 表示文件缺失或不能验证,`THING_ASSET_PUBLISH_FAILED` 表示发布未完成。文件引用只冻结 ID 和引用文本,不代表不可变正文。上下文最多选取前10份引用,超出会明确提示,完整文件列表按需读取。
82
+ - `role` accepts only attachment (the default). deliverable is rejected during argument validation in both normal execution and dry-run. Each Thing/asset pair has only one association.
83
+ - Pass `--confirm-share` for publication; see the Skill for authorization boundaries. Choose exactly one source: artifact-id, file-token or source-path. source-path also requires run-id. The server verifies run ownership, the actual sandbox file and the conversation artifacts directory boundary. Once published to the space, the file is visible to all members.
84
+ - Publication uses the existing conversation-artifact publisher. The publication receipt and asset metadata share a transaction; retrying with the original commandId does not copy again. When the response is `linked:false, assetId, code:THING_ASSET_LINK_FAILED`, the file is already shared. Complete only the association with asset link; do not republish or claim delivery is complete.
85
+ - Unlinking neither deletes the file nor makes it private again. Deleting a referenced asset returns `AGENT_SPACE_ASSET_REFERENCED`; unlink it first.
86
+ - `THING_ASSET_UNAVAILABLE` means the file is missing or cannot be verified. `THING_ASSET_PUBLISH_FAILED` means publication did not complete. File references freeze only the ID and reference text, not immutable body content. Context includes at most the first 10 references and explicitly reports overflow; read the full file list when needed.
87
87
 
88
- ## 执行快照与实时上下文
88
+ <a id="执行快照与实时上下文"></a>
89
+
90
+ ## Execution snapshots and live context
89
91
 
90
92
  ```bash
91
- # 本次执行使用的冻结事实;参数取自本轮绑定声明
93
+ # Frozen facts used by this run; take parameters from this run's binding declaration
92
94
  ae-cli things context --agent-space-id <space-id> --id <thing-id> --run-id <run-id> --format json
93
- # 显式读取当前事实;不带 run-id 的既有行为保持不变
95
+ # Explicitly read current facts; existing behavior without run-id is unchanged
94
96
  ae-cli things context --agent-space-id <space-id> --id <thing-id> --format json
95
97
  ```
96
98
 
97
- 带 `--run-id` 时请求现有 GET context 的 `runId` 参数,返回保存的快照及 `source: {kind: "run_snapshot", runId}`、`currentFiles`、`fileReferencePolicy`。`thing.version`/`capturedAt` 为受理时版本/时间,`currentFiles` 为当前可用路径;文件正文不保证版本冻结,使用前读取。原 `notices` 保留。无参数时返回原实时上下文;不从环境变量自动选择执行,`+detail`/`+digest` 也继续实时采集。
99
+ With `--run-id`, the existing GET context request includes the `runId` parameter and returns the saved snapshot with `source: {kind: "run_snapshot", runId}`, `currentFiles` and `fileReferencePolicy`. `thing.version`/`capturedAt` are the version/time at acceptance; `currentFiles` contains currently available paths. File body versions are not guaranteed to be frozen; read them before use. Existing `notices` remain. Without this parameter, the original live context is returned. A run is not selected automatically from environment variables, and `+detail`/`+digest` continue collecting live data.
98
100
 
99
- 执行、会话、空间及快照中的原事项必须匹配,且操作者仍有访问权限;执行 ID 不是授权。会话当前主事项可以已切换或解除,本轮等待/恢复/重试仍读取原快照。`THING_TARGET_CONFLICT` 表示快照与请求目标不一致,应重新确认目标;`THING_CONTEXT_UNAVAILABLE` 表示快照缺失或损坏,应重新发起执行,不自动降级实时读取。`THING_NOT_FOUND` 不区分不存在和不可见。归档或不可用文件沿用 `THING_READ_ONLY` / `THING_ASSET_UNAVAILABLE`。
101
+ The run, conversation, space and original Thing in the snapshot must match, and the caller must still have access; a run ID is not authorization. The conversation's current primary Thing may have changed or been unbound; waits/resumes/retries in this run still read the original snapshot. `THING_TARGET_CONFLICT` means the snapshot and requested target differ; reconfirm the target. `THING_CONTEXT_UNAVAILABLE` means the snapshot is missing or corrupt; start a new execution instead of automatically falling back to live reads. `THING_NOT_FOUND` does not distinguish nonexistent from invisible resources. Archived Things and unavailable files continue using `THING_READ_ONLY` / `THING_ASSET_UNAVAILABLE`.
100
102
 
101
- 切换或解绑保留历史和 provider session,只改变会话归属及下一新 Run 默认目标;不是遗忘或撤权。普通聊天无需查事项,具体事项工作先读快照;当前状态及写入前版本需额外显式实时读取。工具失败时披露缺失。**对已有事项的修改**只按用户明确授权或确认执行,不能因为历史关联过就默认回写;创建新事项不受此限,按 [SKILL 的创建信号](../SKILL.md#何时创建事项)自主判断。
103
+ Switching or unbinding retains history and the provider session. It changes only the conversation association and the next new Run's default target; it does not erase memory or revoke access. Ordinary chat does not need a Thing lookup; specific Thing work reads the snapshot first. Current state and pre-write versions require an additional explicit live read. Disclose missing information when tools fail. **Changes to existing Things** require explicit user authorization or confirmation; a historical association does not authorize writeback. Creating new Things is not subject to that restriction: decide proactively using the [Skill's creation signals](../SKILL.md#when-to-create-things).
102
104
 
103
- 维护模块沿用 Things Transitional transport;新增参数不创建同义命令或独立 Gateway 入口,迁移出口沿用本 reference 的收录记录。跨仓实施契约见 te-claude `docs/specs/2026-09-17-workspace-issues-convergence/spec.md`;应用与 CLI/Skill 配套交付。
105
+ The owning module continues using the Things Transitional transport. The added parameter does not create a synonymous command or a separate Gateway entry point; the migration exit condition remains the admission record in this reference. The cross-repository implementation contract is te-claude `docs/specs/2026-09-17-workspace-issues-convergence/spec.md`; deliver the application and CLI/Skill together.
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  name: ae-things-progress
3
- description: "工作空间事项进展、日报和周报:使用 ae-cli things 采集当前空间、负责人或显式事项集合的周期事实,由当前会话模型归纳并披露数据边界。"
3
+ description: "Workspace Thing progress, daily reports and weekly reports: use ae-cli things to collect period facts for the current space, an assignee or an explicit set of Things, then summarize them with the current conversation model and disclose data limitations."
4
4
  ---
5
5
 
6
- # 事项进展汇总
6
+ # Thing progress summaries
7
7
 
8
- 从 aha-links 的事实采集和输出契约适配;先读 [事项操作](../ae-things/SKILL.md) 和 [CLI reference](../ae-things/references/cli.md)。CLI 收事实,当前模型做归纳,不调用独立报告后台。
8
+ Adapt the fact-collection and output contracts from aha-links. Read [Thing operations](../ae-things/SKILL.md) and the [CLI reference](../ae-things/references/cli.md) first. The CLI collects facts and the current model summarizes them; do not call a separate reporting backend. Write reports and report titles in the user's language.
9
9
 
10
- 涉及本轮绑定事项时,先遵循 [执行快照与实时上下文](../ae-things/references/cli.md#执行快照与实时上下文) 读取本次执行快照,再按以下流程采集最新审查或周期事实;两种来源分开表述。无绑定时仅使用用户明确指定的范围。
10
+ When working with the Thing bound to this run, first read its execution snapshot as described in [Execution snapshots and live context](../ae-things/references/cli.md#execution-snapshots-and-live-context). Then collect the latest review or period facts using the workflow below, and describe these sources separately. Without a binding, use only the scope explicitly specified by the user.
11
11
 
12
- ## 范围和时间
12
+ ## Scope and time
13
13
 
14
14
  ```bash
15
15
  ae-cli things +digest --agent-space-id <space-id> --from 2026-09-07T00:00:00+08:00 --to 2026-09-14T00:00:00+08:00 --time-zone Asia/Shanghai --format json
@@ -17,27 +17,27 @@ ae-cli things +digest --agent-space-id <space-id> --assignee-id <member-id> --fo
17
17
  ae-cli things +digest --agent-space-id <space-id> --thing-ids <id-a>,<id-b> --format json
18
18
  ```
19
19
 
20
- 不猜 ID、不选择个人默认空间;不支持关注清单、群或跨空间汇总。日报按自然日,周报按周一 00:00 到下周一 00:00,默认 Asia/Shanghai。今日/本周的截止点用当前时刻,昨日/上周用完整周期。自定义区间必须明确;命令的 from/to 都必须含时区,区间为左闭右开。
20
+ Never guess IDs or select a personal default space. Watchlists, groups and cross-space summaries are unsupported. Daily reports cover calendar days; weekly reports run from Monday 00:00 to the next Monday 00:00, defaulting to Asia/Shanghai. For today/this week, use the current time as the cutoff; for yesterday/last week, use the complete period. Custom intervals must be explicit. Command from/to values must include a timezone, and intervals are start-inclusive and end-exclusive.
21
21
 
22
- 输出时将记录的 ISO 时间转换为报告时区,并在时间窗、采集时间和证据日期旁明确标注时区。例:`2026-09-10T04:50:00Z` 在 Asia/Shanghai 应展示为 `2026-09-10 12:50(Asia/Shanghai)`;不能删除 Z 后直接写成“上海时间 04:50”。无法可靠转换时保留原始 ISO 并标注 UTC,披露尚未转换,不能伪造本地时刻。
22
+ Convert recorded ISO timestamps to the report timezone and label the timezone beside the time window, collection time and evidence dates. For example, `2026-09-10T04:50:00Z` should appear as `2026-09-10 12:50 (Asia/Shanghai)` in Asia/Shanghai. Removing Z and calling 04:50 "Shanghai time" is incorrect. If reliable conversion is unavailable, retain the original ISO value, label it UTC and disclose that it has not been converted; never fabricate a local time.
23
23
 
24
- ## 证据和完整性
24
+ ## Evidence and completeness
25
25
 
26
- 核对 `fetchedCount`、`truncated`、`consistency`、`collectedAt`;显式集合再核对 `requestedCount` 和 `unreadable`。字段缺失停止生成全量结论。CLI 自动分页最多每链 100 页/10000 项,异常和上限会标记截断;不能换成单页 list 冒充完整采集。
26
+ Check `fetchedCount`, `truncated`, `consistency` and `collectedAt`; for explicit sets, also check `requestedCount` and `unreadable`. Stop making complete-coverage conclusions when fields are missing. The CLI automatically paginates up to 100 pages / 10000 items per chain and marks errors or limits as truncation. A single-page list is not a substitute for complete collection.
27
27
 
28
- - `thing` 是当前状态,`entries` 是时间窗内记录,`baseline` 是利用完整业务变更记录倒推的窗口前状态;没有基线或采集发生版本变化时不要补造。
29
- - `lastEffectiveRecordBeforeWindow` 供定位窗口前证据。当前状态不等于周期内变化,周期末状态也不能直接用当前状态代替。
30
- - 输出前比较 `collectedAt` 与窗口 `to`。当 `collectedAt < to`(包括用户指定尚未结束的完整自然周)时,报告必须注明“截至采集时刻的阶段汇总,周期尚未结束”;三态统计标为“采集时状态”,禁止写“周期末状态”或“无后续更新”。例:9月10日采集9月7日至14日的周报,不能断言9月14日状态与当前相同。即使窗口已经结束,也只有完整的窗口后变更证据支持时才能还原周期末状态。
31
- - open/paused/done 分别统计,归档另列;最新进展来自 thing.latestProgress,历史变化读取 progress/status 记录。
32
- - 备注和重复过程描述不算有效进展;`effectiveProgressCount` 是待核查候选,正文没有新信息时排除。
33
- - 没有记录只能说“未记录更新”。此约束同样适用于摘要和下一步建议;open 不能证明尚未开始,只能报告当前状态和未记录事实。附件未读、不可读取、截断及多次请求的非事务采集边界必须披露。`changed_during_collection` 时先重读;仍有变化则保留限制,不声称静态全量。
28
+ - `thing` is the current state, `entries` are records within the window, and `baseline` is the pre-window state reconstructed from complete business-change records. Do not invent a baseline when it is missing or versions changed during collection.
29
+ - `lastEffectiveRecordBeforeWindow` locates pre-window evidence. Current state is not a change within the period and cannot directly substitute for period-end state.
30
+ - Before output, compare `collectedAt` with the window's `to`. When `collectedAt < to` (including a user-specified full calendar week that has not ended), state that this is an interim summary as of collection time and the period is still open. Label three-status counts as "state at collection", not "period-end state" or "no later updates". For example, a September 7–14 weekly report collected on September 10 cannot claim that September 14 state equals current state. Even after a window ends, reconstruct period-end state only when complete post-window change evidence supports it.
31
+ - Count open/paused/done separately and report archived Things separately. The latest progress comes from thing.latestProgress; read progress/status records for historical changes.
32
+ - Notes and repeated process descriptions are not effective progress. `effectiveProgressCount` is a candidate count to verify; exclude records whose bodies add no new information.
33
+ - With no records, say only "no update recorded". Apply this constraint to summaries and next-step suggestions too. open does not prove work has not started; report only current status and the absence of recorded facts. Disclose unread or inaccessible attachments, truncation and non-transactional limits across multiple requests. For `changed_during_collection`, reread first; if changes continue, retain the limitation rather than claiming a static, complete collection.
34
34
 
35
- ## 输出与写回
35
+ ## Output and writeback
36
36
 
37
- 先写范围、时间窗、采集时间及覆盖边界,再给三态和归档统计、周期变化、阻塞、下一步。每个重要判断附事项来源和日期,区分事实、推断与建议。不默认展示内部记录 ID。
37
+ Start with the scope, time window, collection time and coverage limits. Then give three-status and archive counts, changes during the period, blockers and next steps. Attach Thing sources and dates to every significant judgment, distinguishing facts, inferences and recommendations. Do not display internal record IDs by default.
38
38
 
39
- 默认只输出到会话。明确要求写回时:用 `+detail` 完整读取目标事项的报告记录,检查同范围同周期标题,再用 `ae-cli things entry append --id <target-id> --type note --title "事项周报|起止日期|范围" --stdin --command-id <uuid> --format json` 写入最终正文。建议标题为 `事项周报|起止日期|范围`(日报同理)。已有同范围同周期报告时提示修订,不静默覆盖或重复追加;用户明确要求追加修订后才写新记录,保留原报告。写回已授权无需再问同一许可。
39
+ Output only in the conversation by default. When writeback is explicitly requested, use `+detail` to read all report entries on the target Thing and check for a title covering the same scope and period. Then write the final body with `ae-cli things entry append --id <target-id> --type note --title "Things weekly report | date range | scope" --stdin --command-id <uuid> --format json`. The suggested title pattern is `Things weekly report | date range | scope` (or daily report), localized to the user's language. If a report for the same scope and period already exists, propose a revision instead of silently overwriting or appending a duplicate. Append a new revision only when the user explicitly requests it, preserving the original report. Do not ask for the same writeback permission again once it is granted.
40
40
 
41
- 不自动发送消息、修改状态、指派负责人或建立定时任务。
41
+ Do not automatically send messages, change status, assign owners or create scheduled tasks.
42
42
 
43
- 文件证据:+detail/+digest 自动翻页收集资产关联,availability=missing 或 verification_failed 的文件不算可用交付;即使 available,也只代表引用可用,不代表已读取正文或验收通过。披露未读文件及非事务采集边界。私有会话来源只在当前用户有权时读取,报告引用共享事项事实,不能把私有历史自动公开。
43
+ File evidence: +detail/+digest automatically paginate asset associations. Files with availability=missing or verification_failed are not available deliverables. Even available only means the reference is available, not that its contents were read or acceptance passed. Disclose unread files and non-transactional collection limits. Read private conversation sources only when the current user has access. Cite shared Thing facts in the report; do not automatically disclose private history.
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  name: ae-things-review
3
- description: "工作空间事项审查:基于 ae-cli things 的标题、描述、状态与完整时间线,诊断范围漂移、未记录有效更新、拆解和责任、完成证据;默认只读。"
3
+ description: "Workspace Thing reviews: use ae-cli things titles, descriptions, statuses and complete timelines to assess scope drift, missing recorded effective updates, work breakdown, ownership and completion evidence. Read-only by default."
4
4
  ---
5
5
 
6
- # 事项推进审查
6
+ # Thing progress review
7
7
 
8
- 沿用 aha-links 的证据化审查方法,使用 TE 空间权限和三态及独立归档。先读 [事项操作](../ae-things/SKILL.md) 和 [采集契约](../ae-things/references/cli.md)。不猜事项、空间或负责人 ID。
8
+ Apply the evidence-based review method from aha-links using TE space permissions, three statuses and separate archiving. Read [Thing operations](../ae-things/SKILL.md) and the [collection contract](../ae-things/references/cli.md) first. Never guess Thing, space or assignee IDs. Write the review in the user's language.
9
9
 
10
- 涉及本轮绑定事项时,先遵循 [执行快照与实时上下文](../ae-things/references/cli.md#执行快照与实时上下文) 读取本次执行快照,再按以下流程采集最新审查或周期事实;两种来源分开表述。无绑定时仅使用用户明确指定的范围。
10
+ When working with the Thing bound to this run, first read its execution snapshot as described in [Execution snapshots and live context](../ae-things/references/cli.md#execution-snapshots-and-live-context). Then collect the latest review or period facts using the workflow below, and describe these sources separately. Without a binding, use only the scope explicitly specified by the user.
11
11
 
12
- ## 读取事实
12
+ ## Collect facts
13
13
 
14
14
  ```bash
15
15
  ae-cli things +detail --agent-space-id <space-id> --id <thing-id> --format json
@@ -17,26 +17,26 @@ ae-cli things +digest --agent-space-id <space-id> --format json
17
17
  ae-cli things +digest --agent-space-id <space-id> --thing-ids <id-a>,<id-b> --format json
18
18
  ```
19
19
 
20
- 范围只支持当前空间、负责人或显式事项集合。不要迁入关注清单和飞书群范围。大范围先筛查,再每批深审最多 20 项,披露筛查数和深审数。
20
+ Supported scopes are the current space, an assignee or an explicit set of Things. Do not import watchlist or Feishu-group scopes. Screen broad scopes first, then review at most 20 Things deeply per batch. Disclose both the screening count and the deep-review count.
21
21
 
22
- 必须核对 `fetchedCount`、`truncated`、`consistency`、`collectedAt`。缺字段视为契约不兼容。截断或不可读取时只对已覆盖事实下结论,不能把首 100 项称为全量。`changed_during_collection` 时重读受影响事项;`non_transactional` 仍不是某时刻的严格快照。未读附件、私有历史和缺失初始目标均明确披露。
22
+ Check `fetchedCount`, `truncated`, `consistency` and `collectedAt`. Missing fields indicate an incompatible contract. When collection is truncated or resources are unreadable, limit conclusions to the facts covered; the first 100 Things are not a complete collection. For `changed_during_collection`, reread affected Things. `non_transactional` still does not mean a strict snapshot at one instant. Explicitly disclose unread attachments, private history and missing original goals.
23
23
 
24
- ## 审查顺序
24
+ ## Review sequence
25
25
 
26
- 1. 目标与验收:是否明确、合理、可验证;用最早 `created` 记录对照当前目标。无法还原时只审当前目标。
27
- 2. 范围漂移:目标变更是否有明确记录;不把后来结论当作原目标。
28
- 3. 有效更新:结果、变化、阻塞或明确下一步才是进展。进展记录是待核查候选;占位、重复状态、备注和仅改标题不重置提醒节奏;采集的计数只是候选,模型仍需核查正文是否有效。
29
- 4. 责任:负责人和协作者是否可用,描述与进展中是否明确下一步。
30
- 5. 完成证据:产物是否可访问、是否符合验收;未读文件不能声称通过验收。
26
+ 1. Goal and acceptance: are they clear, reasonable and verifiable? Compare the current goal with the earliest `created` record. If the original goal cannot be reconstructed, review only the current goal.
27
+ 2. Scope drift: are goal changes explicitly recorded? Do not treat later conclusions as the original goal.
28
+ 3. Effective updates: progress requires a result, change, blocker or explicit next step. Progress entries are candidates to verify. Placeholders, repeated statuses, notes and title-only edits do not reset the reminder cadence. Collected counts are only candidates; the model must still check whether the body contains an effective update.
29
+ 4. Ownership: are the assignee and collaborators available, and do the description and progress identify the next step?
30
+ 5. Completion evidence: are outputs accessible and do they satisfy acceptance criteria? Unread files cannot be claimed to have passed acceptance.
31
31
 
32
- 优先采用明确约定的节奏。open 表示未完成,不区分尚未开始与进行中;没有约定时只报告最后记录时间,不臆造停滞。paused 检查记录中的暂停原因和恢复条件。只写“未记录更新”,不推断“没有推进”。
32
+ Prefer an explicitly agreed cadence. open means incomplete and does not distinguish not started from in progress. Without an agreed cadence, report only the last recorded time rather than inventing stagnation. For paused, check the recorded reason and conditions for resuming. Say "no update recorded", not "no progress made".
33
33
 
34
- 引用时刻必须注明时区;需要按 Asia/Shanghai 判断自然日时先正确转换 ISO 的 Z/偏移量,不能只删除后缀。例如 `2026-09-10T04:50:00Z` 对应上海时间 12:50。无法转换则保留 UTC 原值并披露限制。
34
+ Always identify the timezone when citing timestamps. To determine calendar days in Asia/Shanghai, correctly convert ISO timestamps with Z/offsets rather than removing the suffix. For example, `2026-09-10T04:50:00Z` corresponds to 12:50 in Shanghai. If conversion is unavailable, retain the original UTC value and disclose the limitation.
35
35
 
36
- ## 输出与边界
36
+ ## Output and boundaries
37
37
 
38
- 给出健康/需关注/高风险/信息不足,附目标基线、证据(事项链接和日期)、影响、置信度及最多三条优先动作。空间审查先共性问题,再逐项摘要;不评价个人绩效,不制造总分。
38
+ Classify each review as healthy / needs attention / high risk / insufficient information. Include the goal baseline, evidence (Thing links and dates), impact, confidence and at most three priority actions. For a space review, present common issues before per-Thing summaries. Do not evaluate individual performance or invent an overall score.
39
39
 
40
- 默认只诊断,不改状态或负责人。用户明确要求落实的具体修改重新读取版本后执行,不再重复索要相同授权;推断变化先给待确认建议。不要自动发消息或创建定时任务。
40
+ Diagnose only by default, without changing status or assignees. For specific changes the user explicitly asks you to implement, reread the version and execute without asking for the same authorization again. Present inferred changes as proposals awaiting confirmation. Do not automatically send messages or create scheduled tasks.
41
41
 
42
- 文件证据:+detail/+digest 自动翻页收集资产关联,availability=missing 或 verification_failed 的文件不算可用交付;即使 available,也只代表引用可用,不代表已读取正文或验收通过。披露未读文件及非事务采集边界。私有会话来源只在当前用户有权时读取,报告引用共享事项事实,不能把私有历史自动公开。
42
+ File evidence: +detail/+digest automatically paginate asset associations. Files with availability=missing or verification_failed are not available deliverables. Even available only means the reference is available, not that its contents were read or acceptance passed. Disclose unread files and non-transactional collection limits. Read private conversation sources only when the current user has access. Cite shared Thing facts in the report; do not automatically disclose private history.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-workspace
3
- version: 1.1.0
3
+ version: 1.1.2
4
4
  description: "Manage AE AgentSpaces with ae-cli: resolve current workspace context, list or update workspace profiles, transfer files, configure Agent/MCP/Skill/knowledge-base capabilities, manage shared-space members, inspect activities, or scope automations and archived conversations. Use for the new Workspace product; legacy sandbox Workspace sync/model behavior is separate."
5
5
  ---
6
6