easy-coding-harness 0.7.0 → 0.7.1-beta1

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/CHANGELOG.md CHANGED
@@ -6,6 +6,17 @@
6
6
  - `y`:常规功能升级
7
7
  - `z`:日常 bug 修复
8
8
 
9
+ ## 0.7.1-beta1
10
+
11
+ - 状态栏品牌名展示当前生效确认模式,例如 `**Easy Coding [Auto]**`;项目级 `behavior.confirm_mode` 与 session 覆盖仍沿用既有优先级,Ready、Waiting init、活动任务和 Handoff 使用同一格式。
12
+ - Claude/Codex/Qoder 主约束、安装测试、状态 API 回归测试和使用示例同步更新,机器 breadcrumb 与 no-harness 行为保持不变。
13
+
14
+ ## 0.7.1-beta0
15
+
16
+ - 修复裸唤起 `ec-task-management` 时只显示任务列表、未暴露 session 确认模式的问题:默认面板现在始终读取 session snapshot,并展示项目模式、session 覆盖和最终生效模式,即使没有未完成任务也不会省略。
17
+ - 面板明确提供通过对话设置 `approve`、`guard`、`auto` 或恢复项目默认值的入口;裸唤起保持只读,不会自动修改 session。
18
+ - Ready 状态、Claude/Codex/Qoder 主约束、安装测试和使用文档同步将 `ec-task-management` 标明为任务与 session 设置面板。
19
+
9
20
  ## 0.7.0
10
21
 
11
22
  - 新增 `behavior.confirm_mode`,提供 `approve`、`guard`(默认)和 `auto` 三种状态确认策略;session 中的覆盖值优先于项目配置。
package/README.md CHANGED
@@ -125,7 +125,7 @@ any stage --[user abort via ec-task-close]--> CLOSED
125
125
  | `ec-reviewing` | 多维度代码审查,输出 accept / fix / replan / blocked 结论 |
126
126
  | `ec-verification` | 执行 lint、typecheck、test 等验证硬门控,并处理验收修复循环 |
127
127
  | `ec-memory` | 写短期记忆,并在超过阈值时沉淀长期记忆 |
128
- | `ec-task-management` | 查看、创建、选择、恢复任务 |
128
+ | `ec-task-management` | 任务与 session 面板:查看、创建、选择、恢复任务并管理当前会话确认模式 |
129
129
  | `ec-task-close` | 用户主动中断任务并关闭 |
130
130
  | `ec-no-harness` | 当前会话仅旁路 Easy Coding Harness,使用原生 Agent 能力 |
131
131
  | `ec-git` | 约束 git diff、commit、push、跨仓库提交等交付动作 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.7.0",
3
+ "version": "0.7.1-beta1",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "type": "module",
14
14
  "bin": {
15
- "easy-coding": "./dist/cli.js"
15
+ "easy-coding": "dist/cli.js"
16
16
  },
17
17
  "files": [
18
18
  "CHANGELOG.md",
@@ -3,14 +3,32 @@ name: ec-task-management
3
3
  description: Task and session panel for Easy Coding. Use when the user runs {{skill_trigger}}ec-task-management, asks to see/create/continue/take over tasks, or asks to view or change the current session confirm mode.
4
4
  ---
5
5
 
6
- # ec-task-management — the task panel
6
+ # ec-task-management — the task and session panel
7
7
 
8
- A focused task panel: list unfinished tasks, create tasks, and let the user choose one task
9
- to continue or take over. Stage progression still belongs to ec-workflow; closure belongs
10
- to ec-task-close.
8
+ A combined task and session panel: list unfinished tasks, create tasks, let the user choose one
9
+ task to continue or take over, and manage the current session's confirm mode. Stage progression
10
+ still belongs to ec-workflow; closure belongs to ec-task-close.
11
11
 
12
12
  Communicate with the user in the user's language.
13
13
 
14
+ ## Default panel contract
15
+
16
+ A bare `{{skill_trigger}}ec-task-management` invocation means "show the full task and session
17
+ panel", not just the unfinished task list. On every invocation:
18
+
19
+ 1. Call `list-tasks --agent <agent-id>`.
20
+ 2. Call `snapshot --session-file <P>`.
21
+ 3. Show the unfinished tasks and a separate "Session confirm mode" section containing:
22
+ - `project_confirm_mode`
23
+ - `session_confirm_mode` (`project default` when null)
24
+ - `effective_confirm_mode`
25
+ 4. Show the supported conversational changes in the user's language: set this session to
26
+ `approve`, `guard`, or `auto`, and restore the project default.
27
+
28
+ Never omit the confirm-mode section, even when the unfinished task list is empty. A bare panel
29
+ invocation is read-only: do not set or clear the session override until the user explicitly asks
30
+ for a change.
31
+
14
32
  ## Capabilities
15
33
 
16
34
  ### List unfinished tasks
@@ -64,7 +82,7 @@ the current turn instead of older hook-injected status text.
64
82
 
65
83
  ### View or change this session's confirm mode
66
84
 
67
- Call `snapshot --session-file <P>` and show:
85
+ Use the snapshot already required by the default panel and show:
68
86
  - `project_confirm_mode`
69
87
  - `session_confirm_mode` (`project default` when null)
70
88
  - `effective_confirm_mode`
@@ -11,10 +11,13 @@ user in the user's language.
11
11
  Start every work reply with the single Markdown blockquote status line injected by the hook,
12
12
  then a blank line. Do not render the machine breadcrumbs to the user.
13
13
 
14
- - Ready: > **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to view tasks
15
- - Waiting init: > **Easy Coding** · Waiting init · Use `ec-init` to initialize
16
- - Active task: > **Easy Coding** · `{current-task}` · `{workflow-state}`
17
- - Handoff: > **Easy Coding** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
14
+ `{confirm-mode}` is the capitalized effective mode (`Approve`, `Guard`, or `Auto`); a session
15
+ override takes precedence over the project mode.
16
+
17
+ - Ready: > **Easy Coding [{confirm-mode}]** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
18
+ - Waiting init: > **Easy Coding [{confirm-mode}]** · Waiting init · Use `ec-init` to initialize
19
+ - Active task: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}`
20
+ - Handoff: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
18
21
 
19
22
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
20
23
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -28,7 +31,7 @@ Trigger Easy Coding skills with your platform prefix — Codex: `$ec-*`, Qoder:
28
31
  - `ec-brainstorming` — design exploration before building (hard design gate)
29
32
  - `ec-analysis` `ec-implementing` `ec-reviewing` `ec-verification` — workflow stages
30
33
  - `ec-memory` — short/long memory archive
31
- - `ec-task-management` — list/create tasks · `ec-task-close` — interrupt a task
34
+ - `ec-task-management` — task/session panel: list/create tasks and view/change the session confirm mode · `ec-task-close` — interrupt a task
32
35
  - `ec-no-harness` — bypass only Easy Coding for the current session
33
36
  - `ec-git` — git discipline · `ec-meta` — understand/customize the harness
34
37
 
@@ -11,10 +11,13 @@ user in the user's language.
11
11
  Start every work reply with the single Markdown blockquote status line injected by the hook,
12
12
  then a blank line. Do not render the machine breadcrumbs to the user.
13
13
 
14
- - Ready: > **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to view tasks
15
- - Waiting init: > **Easy Coding** · Waiting init · Use `ec-init` to initialize
16
- - Active task: > **Easy Coding** · `{current-task}` · `{workflow-state}`
17
- - Handoff: > **Easy Coding** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
14
+ `{confirm-mode}` is the capitalized effective mode (`Approve`, `Guard`, or `Auto`); a session
15
+ override takes precedence over the project mode.
16
+
17
+ - Ready: > **Easy Coding [{confirm-mode}]** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
18
+ - Waiting init: > **Easy Coding [{confirm-mode}]** · Waiting init · Use `ec-init` to initialize
19
+ - Active task: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}`
20
+ - Handoff: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
18
21
 
19
22
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
20
23
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -26,7 +29,7 @@ platform prefixes such as `/` or `$`. If no status line is injected, do not inve
26
29
  - `/ec-brainstorming` — design exploration before building (hard design gate)
27
30
  - `/ec-analysis` `/ec-implementing` `/ec-reviewing` `/ec-verification` — workflow stages
28
31
  - `/ec-memory` — short/long memory archive
29
- - `/ec-task-management` — list/create tasks · `/ec-task-close` — interrupt a task
32
+ - `/ec-task-management` — task/session panel: list/create tasks and view/change the session confirm mode · `/ec-task-close` — interrupt a task
30
33
  - `/ec-no-harness` — bypass only Easy Coding for the current session
31
34
  - `/ec-git` — git discipline · `/ec-meta` — understand/customize the harness
32
35
 
@@ -12,13 +12,10 @@ import sys
12
12
  TERMINAL_STATUSES = {"COMPLETE", "CLOSED"}
13
13
  HELP_SUFFIX = (
14
14
  "Use `ec-workflow` to start or resume a task, "
15
- "`ec-brainstorming` to brainstorm, or `ec-task-management` to view tasks"
15
+ "`ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings"
16
16
  )
17
- READY_LINE = (
18
- "> **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, "
19
- "`ec-brainstorming` to brainstorm, or `ec-task-management` to view tasks"
20
- )
21
- WAITING_INIT_LINE = "> **Easy Coding** · Waiting init · Use `ec-init` to initialize"
17
+ READY_LINE = f"Ready · {HELP_SUFFIX}"
18
+ WAITING_INIT_LINE = "Waiting init · Use `ec-init` to initialize"
22
19
 
23
20
  MANDATORY_DEV_SPEC_HEADERS: list[str] = [
24
21
  "## 技术方案",
@@ -1043,10 +1040,11 @@ def build_status_line(
1043
1040
  session_file: str | Path | None = None,
1044
1041
  ) -> str:
1045
1042
  state = snapshot_state(root, session_file, session)
1043
+ status_brand = f"> **Easy Coding [{str(state['effective_confirm_mode']).capitalize()}]**"
1046
1044
  task_id = state["current_task"]
1047
1045
  if task_id:
1048
1046
  status = str(state["status"])
1049
- line = f"> **Easy Coding** · `{task_id}` · `{status}`"
1047
+ line = f"{status_brand} · `{task_id}` · `{status}`"
1050
1048
  last_agent = state.get("last_agent")
1051
1049
  if agent and last_agent and last_agent != agent:
1052
1050
  line += f" · Handoff -> `{last_agent}`"
@@ -1055,16 +1053,16 @@ def build_status_line(
1055
1053
  return line
1056
1054
 
1057
1055
  if is_project_init_required(root):
1058
- return WAITING_INIT_LINE
1056
+ return f"{status_brand} · {WAITING_INIT_LINE}"
1059
1057
 
1060
1058
  pending = get_pending_init_version(root)
1061
1059
  if pending:
1062
1060
  return (
1063
- f"> **Easy Coding** · Waiting init · "
1061
+ f"{status_brand} · Waiting init · "
1064
1062
  f"Upgrade to v{pending} — run `ec-init` to adapt"
1065
1063
  )
1066
1064
 
1067
- return READY_LINE
1065
+ return f"{status_brand} · {READY_LINE}"
1068
1066
 
1069
1067
 
1070
1068
  def build_machine_breadcrumbs(