easy-coding-harness 0.8.1 → 0.8.2-beta.0

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,12 @@
6
6
  - `y`:常规功能升级
7
7
  - `z`:日常 bug 修复
8
8
 
9
+ ## 0.8.2-beta.0
10
+
11
+ - 原生选择工具明确保证永久等待时,确认门禁用或省略 timeout / auto-resolution;有限超时不再视为“永久等待”。
12
+ - 无法确认永久等待时,Agent 会在调用原生选择前预先输出完整文本编号兜底,确保超时即使终止当前轮,用户仍可稍后直接回复编号;无效结果不再重试原生框。
13
+ - 恢复流程优先按现有 `pending_transition` 消费普通门 `1/2/3` 或特殊 IMPLEMENT 门 `1/2/3/4`,只有未匹配输入才重新展示门禁;workflow、analysis、主约束、文档和三平台安装测试同步固化该契约。
14
+
9
15
  ## 0.8.1
10
16
 
11
17
  - 正式发布原生确认门完整展示:存在待确认迁移时,Claude Code、Codex、Qoder 必须提供确认目标阶段、交接和 free-form Other,并安全处理取消、超时或无效选择。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-beta.0",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -275,13 +275,18 @@ tool when one is available. The visible branches are:
275
275
  2. Hand off to another agent
276
276
  3. Other — use the native free-form Other input for revisions or another instruction.
277
277
 
278
- If no native choice tool exists, render all three branches as a numbered text fallback. An empty,
279
- dismissed, timed-out, or unparseable result keeps the task in ANALYSIS with its pending edge and
280
- may retry the native choice at most once per assistant turn. If that retry also fails, stop the
281
- current turn and re-present the complete gate on the next user interaction. Never replace the gate
282
- with only "reply confirm", "confirm execution", or a statement that no valid choice was received,
283
- and never invoke native choice repeatedly in the same turn. Choosing handoff delegates to
284
- ec-workflow's existing target-less `handoff-task` flow; do not ask the user to name the next agent.
278
+ Before invoking the native tool, determine whether it explicitly guarantees an indefinite wait.
279
+ When it does, disable or omit any timeout or auto-resolution setting; a long finite timeout is not
280
+ equivalent. When that guarantee is absent or uncertain, render all three numbered branches as
281
+ normal assistant text before invoking the native tool once, labelled as the persistent timeout
282
+ fallback. This ensures the text survives even when timeout ends or suspends the turn. If no native
283
+ choice tool exists, render the same numbered fallback directly. An empty, dismissed, timed-out, or
284
+ unparseable result keeps the task in ANALYSIS with its pending edge. If the fallback is not already
285
+ visible, render it immediately when control returns; otherwise do not duplicate it. Tell the user
286
+ they may reply with its number later, do not invoke or retry native choice in that turn, and stop.
287
+ Never replace the gate with only "reply confirm", "confirm execution", or a statement that no
288
+ valid choice was received. Choosing handoff delegates to ec-workflow's existing target-less
289
+ `handoff-task` flow; do not ask the user to name the next agent.
285
290
 
286
291
  ## End state
287
292
 
@@ -158,20 +158,27 @@ it, routing matches, and switching happens again.
158
158
  input for revisions. Record REVIEW as the recommended pending edge first. If the user chooses
159
159
  VERIFICATION, cancel that edge, request IMPLEMENT -> VERIFICATION, and immediately confirm it
160
160
  because that selection is explicit confirmation of the alternate target.
161
- Plain-text numbered choices are fallback only: use them only when no native user-choice tool
162
- exists. An ordinary gate must list all three branches rather than collapsing to "reply confirm":
161
+ Before invoking a native choice tool, determine whether it explicitly guarantees an indefinite
162
+ wait. When it does, disable or omit any timeout or auto-resolution setting so the request waits
163
+ for explicit user input; a long finite timeout is not equivalent. When that guarantee is absent
164
+ or uncertain, render the matching complete numbered fallback as normal assistant text before
165
+ invoking the native tool once. Label it as the persistent fallback to use if the native choice
166
+ closes, so it remains available even when a timeout ends or suspends the current turn.
167
+ Plain-text numbered choices are fallback only: use them when no native user-choice tool exists,
168
+ pre-render them when an indefinite native wait is not guaranteed, or render them after an
169
+ unexpected invalid native result. An ordinary gate must list all three branches rather than
170
+ collapsing to "reply confirm":
163
171
  `1. Confirm entering/returning to <target-stage> (recommended)`,
164
172
  `2. Hand off to another agent`, `3. Other (describe revisions or another instruction)`.
165
173
  The code-task IMPLEMENT completion fallback must preserve its special branch set:
166
174
  `1. Enter REVIEW (recommended)`, `2. Skip REVIEW and enter VERIFICATION`,
167
175
  `3. Hand off to another agent`, `4. Other (describe revisions or another instruction)`.
168
176
  An empty, dismissed, timed-out, or unparseable choice result is not confirmation. Preserve the
169
- pending edge and re-present the complete native choice UI at most once per assistant turn. If
170
- that retry is also empty, dismissed, timed out, or unparseable, stop the current turn with the
171
- pending edge intact and re-present the gate on the next user interaction; never call the native
172
- choice tool repeatedly in the same turn. If native choice is no longer available, render the
173
- appropriate complete numbered fallback. Never report "no valid choice" and then show only a
174
- confirmation instruction. The runtime hook never mutates workflow state from user-prompt text.
177
+ pending edge. If no numbered fallback is already visible, render the matching complete fallback
178
+ immediately when control returns; otherwise do not duplicate it. State that the user may reply
179
+ with its number at any later time. Do not invoke or retry the native choice again in that turn.
180
+ Never report "no valid choice" and then show only a confirmation instruction. The runtime hook
181
+ never mutates workflow state from user-prompt text.
175
182
  Native choice results, numbered fallback replies, and every natural-language reply must be
176
183
  interpreted by you against the current task and stored target before calling
177
184
  `confirm-transition` explicitly.
@@ -262,8 +269,13 @@ Resuming an active task (whether from session restart, claim, handoff, or task s
262
269
  `[easy-coding:lite-review-bypass-required:IMPLEMENT->REVIEW]` before the generic pending-edge
263
270
  rule: call `cancel-transition`, then `auto-transition --stage VERIFICATION`. Otherwise compare
264
271
  the stored edge with `effective_confirm_mode`. If the edge is now automatic, call
265
- `auto-transition` for its stored target; otherwise re-present the confirmation/handoff/Other
266
- choices. For a read-only task in IMPLEMENT, cancel any stale REVIEW/VERIFICATION edge before
272
+ `auto-transition` for its stored target. Before re-presenting any manual gate, consume a
273
+ matching numbered fallback reply from the current user prompt against the stored target:
274
+ ordinary `1` confirms, `2` hands off, and `3` selects Other; the approve-mode code IMPLEMENT
275
+ gate maps `1` to REVIEW, `2` to VERIFICATION, `3` to handoff, and `4` to Other. A bare Other
276
+ number asks for the missing revision text with the pending edge intact; Other plus details
277
+ cancels the edge before revision. Only an unmatched prompt re-presents the complete gate.
278
+ For a read-only task in IMPLEMENT, cancel any stale REVIEW/VERIFICATION edge before
267
279
  the terminal check below. At an approve-mode IMPLEMENT boundary for a code task, re-present
268
280
  the special REVIEW / skip to VERIFICATION / handoff choices.
269
281
  5. If a read-only task resumes in IMPLEMENT with a valid successful result, output its complete
@@ -52,11 +52,14 @@ First run `ec-init`; daily work goes through `ec-workflow`.
52
52
  the complete gate. An ordinary gate offers "confirm entering/returning to the target stage"
53
53
  (recommended) and "hand off to another agent", with free-form Other for revisions. The special
54
54
  approve-mode code IMPLEMENT gate must instead preserve enter REVIEW, skip to VERIFICATION, and
55
- handoff, with free-form Other. Only when no native choice tool exists may you show the matching
56
- complete numbered fallback. Empty, dismissed, timed-out, or unparseable results preserve the
57
- pending edge and may retry native choice at most once per assistant turn; after a failed retry,
58
- stop the turn and re-present the gate on the next user interaction. Never degrade to only
59
- "reply confirm" or repeatedly invoke native choice in the same turn.
55
+ handoff, with free-form Other. Use a native choice without a text pre-fallback only when the tool
56
+ explicitly guarantees an indefinite wait; disable or omit automatic timeout/resolution in that
57
+ case. Otherwise pre-render the matching numbered fallback before invoking native choice once,
58
+ so timeout cannot remove the user's path forward. Empty, dismissed, timed-out, or unparseable
59
+ native results preserve the pending edge; show the fallback when control returns only if it is
60
+ not already visible, and never retry native choice in that turn. On resume, consume a matching
61
+ numbered reply against the stored edge before re-presenting the gate. Never degrade to only
62
+ "reply confirm".
60
63
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
61
64
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
62
65
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.
@@ -50,11 +50,14 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
50
50
  the complete gate. An ordinary gate offers "confirm entering/returning to the target stage"
51
51
  (recommended) and "hand off to another agent", with free-form Other for revisions. The special
52
52
  approve-mode code IMPLEMENT gate must instead preserve enter REVIEW, skip to VERIFICATION, and
53
- handoff, with free-form Other. Only when no native choice tool exists may you show the matching
54
- complete numbered fallback. Empty, dismissed, timed-out, or unparseable results preserve the
55
- pending edge and may retry native choice at most once per assistant turn; after a failed retry,
56
- stop the turn and re-present the gate on the next user interaction. Never degrade to only
57
- "reply confirm" or repeatedly invoke native choice in the same turn.
53
+ handoff, with free-form Other. Use a native choice without a text pre-fallback only when the tool
54
+ explicitly guarantees an indefinite wait; disable or omit automatic timeout/resolution in that
55
+ case. Otherwise pre-render the matching numbered fallback before invoking native choice once,
56
+ so timeout cannot remove the user's path forward. Empty, dismissed, timed-out, or unparseable
57
+ native results preserve the pending edge; show the fallback when control returns only if it is
58
+ not already visible, and never retry native choice in that turn. On resume, consume a matching
59
+ numbered reply against the stored edge before re-presenting the gate. Never degrade to only
60
+ "reply confirm".
58
61
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
59
62
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
60
63
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.