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 +11 -0
- package/README.md +1 -1
- package/package.json +2 -2
- package/templates/common/skills/ec-task-management/SKILL.md +23 -5
- package/templates/main-constraint/AGENTS.md.tpl +8 -5
- package/templates/main-constraint/CLAUDE.md.tpl +8 -5
- package/templates/shared-hooks/easy_coding_state.py +8 -10
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.
|
|
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": "
|
|
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
|
|
9
|
-
to continue or take over
|
|
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
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
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
|
|
15
|
+
"`ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings"
|
|
16
16
|
)
|
|
17
|
-
READY_LINE =
|
|
18
|
-
|
|
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"
|
|
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"
|
|
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(
|