@ycodium-ai/plugin-team 0.2.3510 → 0.2.3566

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/locales/en.json CHANGED
@@ -19,11 +19,31 @@
19
19
  "memberBrief": "First step: read the handbook with wiki_read_handbook and call team_acknowledge_handbook for its currently required release; reading alone does not acknowledge it, and you cannot claim or start work until you have.",
20
20
  "leadBrief": "Read the handbook with wiki_read_handbook and explicitly acknowledge its currently required release with team_acknowledge_handbook before taking new work. Publish or revert it through team_publish_handbook or team_revert_handbook; publishing a release that requires acknowledgement also acknowledges it for you."
21
21
  },
22
+ "team": {
23
+ "openTool": "Turn this conversation into a team. Call it only after the person has agreed, in this conversation, to the team you proposed: who joins (members already in the project, including agents on other machines you can see with work_list_remote_agents) and which new members you will create after the team is open. A member that does not exist yet comes after this call: create it with team_create_member, then add it with team_set_members. This conversation becomes the team's lead and its group chat and is renamed to the team's name: the members you list are added to it, and each local agent member gets its own conversation under yours. Pass a new requestId, and reuse it only to retry the same call. name is the team's name (at most 80 characters); goal is a summary of what was agreed (at most 4000 characters); memberIds are the memberIds of the project members to bring in (not yourself; you are added as the lead); leadName optionally names you as a project member (1-40 characters). The call returns the team's work line, the members and whether each one is ready, and your brief. A conversation that already is a team, or belongs to one, cannot open another.",
24
+ "setMembersTool": "Change who is on this team (only the team's lead conversation can). add: memberIds of project members to bring in; remove: memberIds to take out. Work assigned to a removed member that has not reached it yet is taken back and given to you; work already in their hands stays with them until you decide. You cannot remove yourself, and you cannot change members or leads of other teams. Pass a new requestId, and reuse it only to retry the same call.",
25
+ "rosterOverviewTool": "Read everything you need to plan a team: every member of this project with their kind, machine, model, how their trial run stands (trial is none when no trial applies, such as a person; unverified for a remote agent whose machine you cannot test from here; pending until the trial passes; ready once it passed or was skipped; failed; invoked for the conversation that is itself the lead and needs no trial), and the teams they are in (with whether they lead it). Read it before you propose a team and before you create a member.",
26
+ "noProject": "This call is not tied to a project, so there is no team to open or change.",
27
+ "notLocal": "Only a conversation on this machine can open a team.",
28
+ "invalidInput": "Check the arguments: requestId is 1-64 letters, digits, underscores or hyphens; name is 1-80 characters; goal is 1-4000 characters; leadName, if given, is 1-40 characters.",
29
+ "alreadyATeam": "This conversation already is a team. Change its members with team_set_members, or ask the person to start a new conversation for a new team.",
30
+ "memberSession": "This conversation belongs to a team as a member, so it cannot open a team of its own.",
31
+ "requestConflict": "This requestId was already used for a different team change. Use a new requestId.",
32
+ "memberNotFound": "There is no member {{memberId}} in this project. List the members with team_roster_overview.",
33
+ "memberRemoved": "Member {{memberId}} was removed from the project. Restore them first with team_restore_member.",
34
+ "modelUnavailable": "The model chosen for member {{memberId}} is not available on this machine. Check list_providers and list_models, then change it with team_update_member.",
35
+ "noDefaultModel": "Member {{memberId}} has no model of its own and the project has no default model. Give them one with team_update_member.",
36
+ "duplicateTeamName": "A team named {{name}} already exists in this project. Choose another name and use a new requestId.",
37
+ "leadOnly": "Only the lead conversation of a team can change its members.",
38
+ "cannotRemoveLead": "You cannot remove yourself, the lead of this team.",
39
+ "teamArchived": "This team is archived. Ask the person to unarchive the conversation before changing it.",
40
+ "versionConflict": "The team was changed at the same moment. Read it again and retry with a new requestId."
41
+ },
22
42
  "coordinator": {
23
- "createTool": "Add an AI teammate to this project's team as the lead of the current goal. Pass a new requestId, and reuse it only to retry the same request. The member runs on this machine with the provider instanceId and model you give (both or neither); without them it uses the project's default model. The new member joins the current goal and gets its own conversation under yours, normally within moments (if that fails you are told why, and it is retried every couple of minutes); once it is ready you can assign work to it with work_update_item and assignees [{ \"kind\": \"member\", \"memberId\": <the memberId this tool returns> }]. At most {{limit}} agent members can be active. Check who is on the team first with work_list_members.",
43
+ "createTool": "Add an AI teammate to this project's team as the lead of the current goal. Pass a new requestId, and reuse it only to retry the same request. The member runs on this machine with the provider instanceId and model you give (both or neither); without them it uses the project's default model. The new member joins the current goal and gets its own conversation under yours, normally within moments (if that fails you are told why, and it is retried every couple of minutes); in a team opened with team_open, that starts once you add the member with team_set_members; once it is ready you can assign work to it with work_update_item and assignees [{ \"kind\": \"member\", \"memberId\": <the memberId this tool returns> }]. Check who is on the team first with work_list_members.",
24
44
  "updateTool": "Change a teammate as the lead of the current goal: name, title, responsibility, work instructions (an empty string clears them) or provider instanceId and model (both or neither); a new model applies to conversations opened afterwards, and a conversation already running keeps its model. Pass the member's version from work_read_member as expectedVersion; if it has changed you get stale-version, so read the member again. You cannot change your own provider or model. Reuse requestId only to retry the same request.",
25
45
  "removeTool": "Remove a teammate from the team as the lead of the current goal. The record is kept and the member can be restored. Work assigned to the member that has not reached it yet is taken back and you are told; work already in its hands stays with it until you decide. You cannot remove yourself. Reuse requestId only to retry the same request.",
26
- "restoreTool": "Bring a removed teammate back as the lead of the current goal. It counts against the limit of {{limit}} active agent members. Reuse requestId only to retry the same request.",
46
+ "restoreTool": "Bring a removed teammate back as the lead of the current goal. Reuse requestId only to retry the same request.",
27
47
  "noProject": "This call is not tied to a project, so there is no team to change.",
28
48
  "noGoal": "Start a goal before changing team members. Without a goal there is no lead.",
29
49
  "leadOnly": "Only the lead of the project's current goal can change team members.",
@@ -32,23 +52,12 @@
32
52
  "invalidAgent": "Give both instanceId and model, or neither.",
33
53
  "modelUnavailable": "That provider instance or model is not available on this machine. Check list_providers and list_models, then try again.",
34
54
  "noDefaultModel": "The project has no default model. Give instanceId and model.",
35
- "memberLimit": "The team already has {{limit}} active agent members. Remove one first.",
36
55
  "notAgentMember": "Only agent members can be changed with this tool.",
56
+ "memberInOtherTeam": "Another team is using this member. You can only change or remove members who are on no team, or only on yours. See which teams each member is on with team_roster_overview.",
37
57
  "memberNotFound": "No such member in this project. List the members with work_list_members.",
38
58
  "cannotRemoveLead": "You cannot remove yourself, the lead of the current goal.",
39
59
  "cannotReplaceLead": "You cannot change your own provider or model."
40
60
  },
41
- "tab": {
42
- "title": "Teams"
43
- },
44
- "page": {
45
- "project": "Project",
46
- "chooseProject": "Choose a project",
47
- "loadingProjects": "Loading projects…",
48
- "projectsFailed": "Projects could not be loaded. Try again.",
49
- "reloadProjects": "Reload projects",
50
- "noProjects": "There are no projects on this machine yet."
51
- },
52
61
  "board": {
53
62
  "title": "Project board",
54
63
  "newItem": "New work item",
@@ -92,7 +101,15 @@
92
101
  "memberUnavailable": "That member was removed or no longer exists, so nothing was assigned. Choose another member.",
93
102
  "invalidTitle": "Enter a title for the work item.",
94
103
  "reload": "Reload board",
95
- "truncated": "Showing the first 500 work items in this project."
104
+ "truncated": "Showing the first 500 work items in this project.",
105
+ "teamTitle": "Team board",
106
+ "lane": {
107
+ "unlined": "No team",
108
+ "archived": "Archived",
109
+ "openTeam": "Open team",
110
+ "openTeamFor": "Open team {{name}}"
111
+ },
112
+ "noTeamHint": "To start a team, agree on the plan in a conversation; the agent opens the team from there."
96
113
  },
97
114
  "detail": {
98
115
  "title": "Work item details",
@@ -104,7 +121,7 @@
104
121
  "noDescription": "(No description)",
105
122
  "blockedBy": "Blocked by these work items",
106
123
  "blocking": "Blocking these work items",
107
- "dependency": "#{{number}} {{title}} · {{state}}",
124
+ "dependency": "#{{number}} {{title}}, {{state}}",
108
125
  "comments": "Comments",
109
126
  "noComments": "No comments yet.",
110
127
  "deletedComment": "(This comment has been deleted)",
@@ -170,28 +187,6 @@
170
187
  "lead": "Lead: {{name}}",
171
188
  "unknownLead": "This member is no longer on the team",
172
189
  "openLead": "Open lead thread",
173
- "label": "Goal for the lead",
174
- "rosterRequired": "Add an agent member and choose a lead first.",
175
- "start": "Start",
176
- "startNew": "Start a new goal",
177
- "starting": "Starting…",
178
- "retry": "Retry",
179
- "reload": "Reload goal",
180
- "loading": "Loading goal…",
181
- "confirmTitle": "Start a new goal?",
182
- "confirmDescription": "Threads for the previous goal will keep running and remain in the thread list.",
183
- "confirmStart": "Start new goal",
184
- "cancel": "Cancel",
185
- "noRoster": "The project has no team yet. Add an agent member and choose a lead first.",
186
- "noDefaultModel": "The team didn't start: a member has no model set for this machine and the project has no default model. Choose a model for the member on the Teams page, or a default in the project settings under New threads → Model, then retry.",
187
- "modelUnavailable": "The team didn't start: a model it needs isn't available on this machine. Check the provider, then choose another model for the member on the Teams page or another default in the project settings under New threads → Model, and retry.",
188
- "leadNotReady": "The goal didn't start: the lead hasn't passed its trial run yet. Wait for the trial run to pass, or skip it on the Teams page under Members, then retry.",
189
- "leadNotReadyFailed": "The goal didn't start: the lead's trial run failed because {{category}}. Retry or skip the trial run on the Teams page under Members, then start the goal again.",
190
- "invalidPayload": "Check the goal fields and try again.",
191
- "invalidGoal": "The goal must be 1–4000 characters after trimming spaces.",
192
- "invalidRequestId": "The request ID must be 1–64 letters, numbers, underscores, or hyphens.",
193
- "loadFailed": "The current goal could not be loaded. Try reloading it.",
194
- "startFailed": "The goal could not be fully started. Retry to finish creating the threads and sending the lead's brief.",
195
190
  "remoteMembers": "Remote members:",
196
191
  "item": "Goal work item #{{number}}: {{state}}",
197
192
  "openItem": "Open details for goal work item #{{number}}"
@@ -275,7 +270,7 @@
275
270
  "saving": "Saving…",
276
271
  "adding": "Adding…",
277
272
  "problem": {
278
- "memberCount": "A team needs between 1 and {{limit}} agent members.",
273
+ "memberCount": "A team needs at least one agent member.",
279
274
  "leadNotMember": "Choose a lead from the agent members.",
280
275
  "leadRemote": "The lead must be a local member.",
281
276
  "duplicatePrincipal": "Each remote agent can be a member only once."
@@ -284,7 +279,6 @@
284
279
  "generic": "The change could not be saved. Try again.",
285
280
  "needsPerson": "Only a person using the app can make this change.",
286
281
  "invalidPayload": "Check the member fields and try again.",
287
- "memberLimit": "A team runs at most {{limit}} agent members. Remove one first.",
288
282
  "noDefaultModel": "This project has no default model. Choose one in the project settings under New threads → Model, then try again.",
289
283
  "modelUnavailable": "The project's default model isn't available on this machine. Check the provider, or choose another model in the project settings under New threads → Model.",
290
284
  "duplicateMember": "Another member already has this name or remote agent. Rename or remove that member first.",
@@ -315,6 +309,7 @@
315
309
  "passed": "Trial passed",
316
310
  "skipped": "Trial skipped",
317
311
  "remoteVerified": "Remote connection verified",
312
+ "invoked": "Lead conversation, no trial needed",
318
313
  "pending": "Trial run pending",
319
314
  "running": "Trial run in progress",
320
315
  "sent": "Trial run sent",
@@ -348,12 +343,13 @@
348
343
  "start-failed": "the trial run could not be started",
349
344
  "toolkit-off": "the board and project memory switches are not both on; turn them on, then retry"
350
345
  }
351
- }
346
+ },
347
+ "teams": "Teams: {{names}}",
348
+ "remoteApprovals": "Approvals are handled on their machine",
349
+ "teamsSeparator": ", "
352
350
  },
353
351
  "handbookPanel": {
354
352
  "title": "Handbook",
355
- "open": "View handbook",
356
- "close": "Close handbook",
357
353
  "current": "Current version {{version}}",
358
354
  "required": "Version {{version}} currently requires acknowledgement",
359
355
  "noCurrent": "No handbook has been published",
@@ -379,7 +375,7 @@
379
375
  "restoredFrom": "Restored from version {{version}}",
380
376
  "moreReleases": "Load older versions",
381
377
  "members": "Member acknowledgements",
382
- "noMembers": "No executing members yet. Start a goal to assign team seats.",
378
+ "noMembers": "No executing members yet. Open a team from a conversation to give it members.",
383
379
  "member": "Member {{id}}",
384
380
  "neverAck": "Has not acknowledged a version",
385
381
  "acked": "Acknowledged version {{version}}",
@@ -465,5 +461,10 @@
465
461
  "toolkit-off": "the project's board and project memory switches are not both on"
466
462
  },
467
463
  "leadOnlyRetry": "Only the lead of the project's current goal can ask for another trial run."
464
+ },
465
+ "views": {
466
+ "board": "Board",
467
+ "members": "Members",
468
+ "handbook": "Handbook"
468
469
  }
469
470
  }
@@ -19,11 +19,31 @@
19
19
  "memberBrief": "第一步:用 wiki_read_handbook 读手册,再用 team_acknowledge_handbook 确认当前要求确认的版本;只读不算确认,确认之前不能认领或开工。",
20
20
  "leadBrief": "先用 wiki_read_handbook 读手册,再用 team_acknowledge_handbook 明确确认当前要求确认的版本,才能领新活。用 team_publish_handbook 或 team_revert_handbook 发布或退回;发布要求确认的版本也会为你记下确认。"
21
21
  },
22
+ "team": {
23
+ "openTool": "把这条会话变成一个团队。只在人已经在这条会话里同意了你提的团队方案之后才调:谁加入(项目里已有的成员,包括用 work_list_remote_agents 看到的别的机器上的 agent)、团队开好之后要新建哪些成员。还不存在的成员在这次调用之后再来:先用 team_create_member 新建,再用 team_set_members 拉进来。这条会话从此是团队的负责人和群聊,并改名为团队名:你列的成员加进来,每个本机 agent 成员在你的会话名下得到自己的会话。requestId 要用新的,只有重试同一次调用时才沿用。name 是团队名(最多 80 字);goal 是谈妥内容的摘要(最多 4000 字);memberIds 是要拉进来的项目成员的 memberId(不含你自己,你会作为负责人加进来);leadName 可选,是你作为项目成员的名字(1-40 字)。返回团队的工作线、成员和每个成员是否就绪,以及你的开工说明。已经是团队、或属于某个团队的会话不能再开团队。",
24
+ "setMembersTool": "改这个团队里有谁(只有团队的负责人会话能调)。add:要拉进来的项目成员的 memberId;remove:要移出的 memberId。移出的成员名下还没到它手上的活会收回并交给你,已经在它手上的活留给它,由你决定。你不能移出自己,也不能动别的团队的成员和负责人。requestId 要用新的,只有重试同一次调用时才沿用。",
25
+ "rosterOverviewTool": "读出规划团队需要的全部信息:这个项目的每个成员,含种类、机器、模型、试跑进度(trial 取值:none 表示不适用,比如人;unverified 是别的机器上的 agent,从这里测不到;pending 是还没通过;ready 是已通过或已跳过;failed 是失败;invoked 是这条会话本身就是负责人,无需试跑),以及所在的团队(是不是那个团队的负责人)。提团队方案之前、新建成员之前先读它。",
26
+ "noProject": "这次调用不属于任何项目,没有可开或可改的团队。",
27
+ "notLocal": "只有这台机器上的会话能开团队。",
28
+ "invalidInput": "请检查参数:requestId 是 1-64 位字母、数字、下划线或连字符;name 1-80 字;goal 1-4000 字;leadName 若给出为 1-40 字。",
29
+ "alreadyATeam": "这条会话已经是一个团队。用 team_set_members 改它的成员,或请人另开会话来开新团队。",
30
+ "memberSession": "这条会话是某个团队的成员,不能自己再开团队。",
31
+ "requestConflict": "这个 requestId 已经用于另一次不同的团队改动,请换一个新的 requestId。",
32
+ "memberNotFound": "这个项目里没有成员 {{memberId}}。用 team_roster_overview 列出成员。",
33
+ "memberRemoved": "成员 {{memberId}} 已从项目里移除。先用 team_restore_member 把它请回来。",
34
+ "modelUnavailable": "给成员 {{memberId}} 选的模型在这台机器上用不了。查 list_providers 和 list_models,再用 team_update_member 改。",
35
+ "noDefaultModel": "成员 {{memberId}} 没有自己的模型,项目也没有默认模型。用 team_update_member 给它一个。",
36
+ "duplicateTeamName": "这个项目里已经有名为 {{name}} 的团队。换个名字,并用新的 requestId。",
37
+ "leadOnly": "只有团队的负责人会话能改它的成员。",
38
+ "cannotRemoveLead": "你是这个团队的负责人,不能移出自己。",
39
+ "teamArchived": "这个团队已归档。请人先取消归档这条会话再改。",
40
+ "versionConflict": "团队刚好同时被改了。重新读一遍,用新的 requestId 再试。"
41
+ },
22
42
  "coordinator": {
23
- "createTool": "以当前目标负责人的身份,给这个项目的团队添加一名 AI 成员。requestId 要用新的,只有重试同一个请求时才沿用。成员在这台机器上运行,用你给的 provider 实例 instanceId 和模型 model(要么都给,要么都不给);都不给就用项目的默认模型。新成员会加入当前目标,在你的会话名下得到自己的会话,通常很快就绪(没成功会告诉你原因,并每隔几分钟重试一次);会话就绪后,可以用 work_update_item 把活派给它,assignees 写 [{ \"kind\": \"member\", \"memberId\": <本工具返回的 memberId> }]。在队的 agent 成员最多 {{limit}} 名。先用 work_list_members 看团队里现在有谁。",
43
+ "createTool": "以当前目标负责人的身份,给这个项目的团队添加一名 AI 成员。requestId 要用新的,只有重试同一个请求时才沿用。成员在这台机器上运行,用你给的 provider 实例 instanceId 和模型 model(要么都给,要么都不给);都不给就用项目的默认模型。新成员会加入当前目标,在你的会话名下得到自己的会话,通常很快就绪(没成功会告诉你原因,并每隔几分钟重试一次);用 team_open 开的团队里,要等你用 team_set_members 把这名成员拉进团队才开始;会话就绪后,可以用 work_update_item 把活派给它,assignees 写 [{ \"kind\": \"member\", \"memberId\": <本工具返回的 memberId> }]。先用 work_list_members 看团队里现在有谁。",
24
44
  "updateTool": "以当前目标负责人的身份修改一名成员:名字、头衔、职责、工作说明(空字符串表示清空),或 provider 实例 instanceId 和模型 model(要么都给,要么都不给);新模型只对之后新开的会话生效,已在运行的会话保持原来的模型。expectedVersion 填 work_read_member 读到的成员版本;版本变了会返回 stale-version,重新读一遍再改。不能改自己的 provider 和模型。requestId 只有重试同一个请求时才沿用。",
25
45
  "removeTool": "以当前目标负责人的身份把一名成员移出团队。记录会保留,以后可以恢复。派给它、但还没到它手上的活会被收回并通知你;已经在它手上的活留在它那里,由你决定。不能移除自己。requestId 只有重试同一个请求时才沿用。",
26
- "restoreTool": "以当前目标负责人的身份把已移除的成员请回团队。恢复后也计入在队 agent 成员 {{limit}} 名的上限。requestId 只有重试同一个请求时才沿用。",
46
+ "restoreTool": "以当前目标负责人的身份把已移除的成员请回团队。requestId 只有重试同一个请求时才沿用。",
27
47
  "noProject": "这次调用不属于任何项目,没有可改的团队。",
28
48
  "noGoal": "先开始一个目标再改团队成员。没有目标就没有负责人。",
29
49
  "leadOnly": "只有项目当前目标的负责人可以改团队成员。",
@@ -32,23 +52,12 @@
32
52
  "invalidAgent": "instanceId 和 model 要么都给,要么都不给。",
33
53
  "modelUnavailable": "这台机器上没有这个 provider 实例或模型。先看 list_providers 和 list_models,再重试。",
34
54
  "noDefaultModel": "项目没有设默认模型,请给出 instanceId 和 model。",
35
- "memberLimit": "团队里已经有 {{limit}} 名在队的 agent 成员,请先移除一名。",
55
+ "memberInOtherTeam": "这个成员已在别的团队里。你只能修改或移除不在任何团队、或只在你这个团队里的成员。用 team_roster_overview 看每个成员在哪个团队。",
36
56
  "notAgentMember": "这个工具只能改 agent 成员。",
37
57
  "memberNotFound": "这个项目里没有这名成员。先用 work_list_members 列出成员。",
38
58
  "cannotRemoveLead": "不能移除自己(当前目标的负责人)。",
39
59
  "cannotReplaceLead": "不能改自己的 provider 和模型。"
40
60
  },
41
- "tab": {
42
- "title": "团队"
43
- },
44
- "page": {
45
- "project": "项目",
46
- "chooseProject": "选择项目",
47
- "loadingProjects": "正在加载项目…",
48
- "projectsFailed": "无法加载项目,请重试。",
49
- "reloadProjects": "重新加载项目",
50
- "noProjects": "这台机器上还没有项目。"
51
- },
52
61
  "board": {
53
62
  "title": "项目看板",
54
63
  "newItem": "新建工作项",
@@ -92,7 +101,15 @@
92
101
  "memberUnavailable": "这个成员已被移除或已不存在,没有指派成功。请选择其他成员。",
93
102
  "invalidTitle": "请填写工作项标题。",
94
103
  "reload": "重新载入看板",
95
- "truncated": "当前只显示这个项目的前 500 件工作项。"
104
+ "truncated": "当前只显示这个项目的前 500 件工作项。",
105
+ "teamTitle": "团队看板",
106
+ "lane": {
107
+ "unlined": "没分线",
108
+ "archived": "已归档",
109
+ "openTeam": "打开团队",
110
+ "openTeamFor": "打开团队「{{name}}」"
111
+ },
112
+ "noTeamHint": "要开团队,先在会话里谈妥,再由 agent 在会话里开团队。"
96
113
  },
97
114
  "detail": {
98
115
  "title": "工作项详情",
@@ -104,7 +121,7 @@
104
121
  "noDescription": "(没有说明)",
105
122
  "blockedBy": "被这些挡着",
106
123
  "blocking": "挡着这些",
107
- "dependency": "#{{number}} {{title}} · {{state}}",
124
+ "dependency": "#{{number}} {{title}},{{state}}",
108
125
  "comments": "评论",
109
126
  "noComments": "还没有评论",
110
127
  "deletedComment": "(这条评论已删除)",
@@ -170,28 +187,6 @@
170
187
  "lead": "负责人:{{name}}",
171
188
  "unknownLead": "这名成员已不在团队里",
172
189
  "openLead": "打开负责人会话",
173
- "label": "对负责人说一个目标",
174
- "rosterRequired": "先添加 agent 成员并选一名负责人。",
175
- "start": "开始",
176
- "startNew": "开始新目标",
177
- "starting": "正在开始…",
178
- "retry": "重试",
179
- "reload": "重新载入目标",
180
- "loading": "正在载入目标…",
181
- "confirmTitle": "确定要开始新目标吗?",
182
- "confirmDescription": "旧目标的会话不会停,会留在会话列表里。",
183
- "confirmStart": "开始新目标",
184
- "cancel": "取消",
185
- "noRoster": "项目还没有团队,请先添加 agent 成员并选一名负责人。",
186
- "noDefaultModel": "团队没起来:有成员没有为这台机器设置模型,项目也没设默认模型。到团队页给成员选一个模型,或到项目设置的「新会话 → 模型」选一个默认模型,再点重试。",
187
- "modelUnavailable": "团队没起来:有成员需要的模型在这台机器上用不了。检查一下 provider,再到团队页给成员换一个模型,或到项目设置的「新会话 → 模型」换一个默认模型,然后重试。",
188
- "leadNotReady": "目标没开始:负责人还没通过试跑。等试跑通过,或到团队页的成员里跳过试跑,然后重试。",
189
- "leadNotReadyFailed": "目标没开始:负责人的试跑出错了,原因:{{category}}。到团队页的成员里重新试跑或跳过试跑,然后再开始目标。",
190
- "invalidPayload": "请检查目标字段后重试。",
191
- "invalidGoal": "目标去掉首尾空白后需为 1 到 4000 个字符。",
192
- "invalidRequestId": "请求 ID 需为 1 到 64 个字母、数字、下划线或连字符。",
193
- "loadFailed": "未能载入当前目标,请重新载入。",
194
- "startFailed": "目标未能全部开始,请重试以补齐会话并给负责人发话。",
195
190
  "remoteMembers": "远端成员:",
196
191
  "item": "目标工作项 #{{number}}:{{state}}",
197
192
  "openItem": "打开目标工作项 #{{number}} 的详情"
@@ -275,7 +270,7 @@
275
270
  "saving": "保存中…",
276
271
  "adding": "正在添加…",
277
272
  "problem": {
278
- "memberCount": "团队需要 1 到 {{limit}} 名 agent 成员。",
273
+ "memberCount": "团队至少需要一名 agent 成员。",
279
274
  "leadNotMember": "请从 agent 成员里选一名负责人。",
280
275
  "leadRemote": "负责人必须是本机成员。",
281
276
  "duplicatePrincipal": "同一个远端 agent 只能是一名成员。"
@@ -284,7 +279,6 @@
284
279
  "generic": "未能保存改动,请重试。",
285
280
  "needsPerson": "这项改动要由用户在界面里亲自操作。",
286
281
  "invalidPayload": "请检查成员字段后重试。",
287
- "memberLimit": "团队最多 {{limit}} 名 agent 成员,请先移除一名。",
288
282
  "noDefaultModel": "这个项目没设默认模型。到项目设置的「新会话 → 模型」选一个,再重试。",
289
283
  "modelUnavailable": "这个项目的默认模型在这台机器上用不了。检查一下 provider,或到项目设置的「新会话 → 模型」换一个。",
290
284
  "duplicateMember": "已有成员用了这个名字或这个远端 agent,请先改名或移除它。",
@@ -315,6 +309,7 @@
315
309
  "passed": "试跑通过",
316
310
  "skipped": "已跳过试跑",
317
311
  "remoteVerified": "远端连通已验证",
312
+ "invoked": "负责人会话,无需试跑",
318
313
  "pending": "等待试跑",
319
314
  "running": "试跑中",
320
315
  "sent": "试跑已发出",
@@ -348,12 +343,13 @@
348
343
  "start-failed": "试跑没能开始",
349
344
  "toolkit-off": "项目的看板和项目记忆开关没有同时打开,打开后再重试"
350
345
  }
351
- }
346
+ },
347
+ "teams": "所属团队:{{names}}",
348
+ "remoteApprovals": "审批在对方机器处理",
349
+ "teamsSeparator": "、"
352
350
  },
353
351
  "handbookPanel": {
354
352
  "title": "手册",
355
- "open": "查看手册",
356
- "close": "收起手册",
357
353
  "current": "当前版本 {{version}}",
358
354
  "required": "当前要求确认的版本 {{version}}",
359
355
  "noCurrent": "还没有发布手册",
@@ -379,7 +375,7 @@
379
375
  "restoredFrom": "退回自第 {{version}} 版",
380
376
  "moreReleases": "加载更早版本",
381
377
  "members": "成员确认情况",
382
- "noMembers": "还没有执行成员,开始目标后才有团队席位",
378
+ "noMembers": "还没有执行成员,从会话开团队后才有团队席位",
383
379
  "member": "成员 {{id}}",
384
380
  "neverAck": "还没有确认过手册",
385
381
  "acked": "已确认到第 {{version}} 版",
@@ -465,5 +461,10 @@
465
461
  "toolkit-off": "项目的看板和项目记忆开关没有同时打开"
466
462
  },
467
463
  "leadOnlyRetry": "只有项目当前目标的负责人可以要求再试跑一次。"
464
+ },
465
+ "views": {
466
+ "board": "看板",
467
+ "members": "成员",
468
+ "handbook": "手册"
468
469
  }
469
470
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ycodium-ai/plugin-team",
3
- "version": "0.2.3510",
3
+ "version": "0.2.3566",
4
4
  "description": "A project team roster with members, a lead, and goals.",
5
5
  "keywords": [
6
6
  "teams",
@@ -34,7 +34,8 @@
34
34
  "tailwindcss": "^4.0.0",
35
35
  "typescript": "~6.0.3",
36
36
  "vite-plus": "0.2.2",
37
- "@ycodium-ai/plugin-api": "0.2.3510"
37
+ "@ycodium-ai/plugin-api": "0.2.3566",
38
+ "ycodium-system-text": "0.0.0"
38
39
  },
39
40
  "ycodium": {
40
41
  "plugin": "./dist/index.js",
@@ -48,12 +49,21 @@
48
49
  "thread.turn.start",
49
50
  "thread.worktree.prepare",
50
51
  "thread.turn-queue.resume",
52
+ "thread.turn-queue.pause",
53
+ "thread.meta.update",
54
+ "thread.native-mode.set",
55
+ "thread.unarchive",
56
+ "work.line.create",
57
+ "work.line.update",
58
+ "work.line.archive",
59
+ "work.line.restore",
51
60
  "work.item.create",
52
61
  "work.item.update",
53
62
  "work.comment.post",
54
63
  "wiki.handbook.publish",
55
64
  "wiki.handbook.revert",
56
65
  "communication.message.send",
66
+ "communication.delivery.bind",
57
67
  "member.create",
58
68
  "member.update",
59
69
  "member.remove",
@@ -62,6 +72,9 @@
62
72
  "thread.session.stop"
63
73
  ]
64
74
  },
75
+ {
76
+ "kind": "threads.user"
77
+ },
65
78
  {
66
79
  "kind": "work.read"
67
80
  },
@@ -83,22 +96,38 @@
83
96
  {
84
97
  "kind": "ui.seats",
85
98
  "seats": [
86
- "project.workbench.tab"
99
+ "team.view"
87
100
  ]
88
101
  }
89
102
  ],
90
103
  "ui": {
91
104
  "assets": "./assets",
92
105
  "entry": "ui.js",
93
- "pages": [
106
+ "teamViews": [
107
+ {
108
+ "key": "board",
109
+ "scopes": [
110
+ "team",
111
+ "project"
112
+ ],
113
+ "titleKey": "views.board",
114
+ "order": 10
115
+ },
116
+ {
117
+ "key": "members",
118
+ "scopes": [
119
+ "project"
120
+ ],
121
+ "titleKey": "views.members",
122
+ "order": 20
123
+ },
94
124
  {
95
- "id": "team",
96
- "titleKey": "tab.title",
97
- "icon": "./navigation.svg",
98
- "chrome": "host",
99
- "placements": [
100
- "mobile-home"
101
- ]
125
+ "key": "handbook",
126
+ "scopes": [
127
+ "project"
128
+ ],
129
+ "titleKey": "views.handbook",
130
+ "order": 30
102
131
  }
103
132
  ]
104
133
  }
@@ -1,7 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
2
- <style>:root { color: #707987; } @media (prefers-color-scheme: dark) { :root { color: #A6AEBA; } }</style>
3
- <g stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
4
- <circle cx="12" cy="7" r="3" stroke="#6FA397" fill="#6FA397" fill-opacity=".2"/>
5
- <path d="M6 21v-3a6 6 0 0 1 12 0v3M18 4a3 3 0 0 1 0 6M20 14a5 5 0 0 1 2 4v3M6 4a3 3 0 0 0 0 6M4 14a5 5 0 0 0-2 4v3"/>
6
- </g>
7
- </svg>