@accelerator-mzq/forge 1.4.0 → 3.0.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/dist/cli/commands/archive.d.ts +73 -10
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +362 -89
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/legacy-bridge.d.ts +110 -0
- package/dist/cli/commands/legacy-bridge.d.ts.map +1 -1
- package/dist/cli/commands/legacy-bridge.js +1058 -438
- package/dist/cli/commands/legacy-bridge.js.map +1 -1
- package/dist/cli/commands/pause-capture.d.ts +24 -0
- package/dist/cli/commands/pause-capture.d.ts.map +1 -0
- package/dist/cli/commands/pause-capture.js +87 -0
- package/dist/cli/commands/pause-capture.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/ack-log.d.ts +17 -1
- package/dist/core/ack-log.d.ts.map +1 -1
- package/dist/core/ack-log.js.map +1 -1
- package/dist/core/archive/ack-log-consistency.d.ts.map +1 -1
- package/dist/core/archive/ack-log-consistency.js +2 -1
- package/dist/core/archive/ack-log-consistency.js.map +1 -1
- package/dist/core/archive/pause-decisions-fence.d.ts +24 -1
- package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -1
- package/dist/core/archive/pause-decisions-fence.js +260 -46
- package/dist/core/archive/pause-decisions-fence.js.map +1 -1
- package/dist/core/backlog/assets/backlog-readme.md +4 -2
- package/dist/core/backlog/index.d.ts +1 -1
- package/dist/core/backlog/index.d.ts.map +1 -1
- package/dist/core/backlog/index.js +27 -8
- package/dist/core/backlog/index.js.map +1 -1
- package/dist/core/backlog/render.d.ts +48 -3
- package/dist/core/backlog/render.d.ts.map +1 -1
- package/dist/core/backlog/render.js +151 -15
- package/dist/core/backlog/render.js.map +1 -1
- package/dist/core/legacy-bridge/extractor.d.ts +79 -0
- package/dist/core/legacy-bridge/extractor.d.ts.map +1 -0
- package/dist/core/legacy-bridge/extractor.js +374 -0
- package/dist/core/legacy-bridge/extractor.js.map +1 -0
- package/dist/core/legacy-bridge/indexer.d.ts +8 -2
- package/dist/core/legacy-bridge/indexer.d.ts.map +1 -1
- package/dist/core/legacy-bridge/indexer.js +61 -9
- package/dist/core/legacy-bridge/indexer.js.map +1 -1
- package/dist/core/legacy-bridge/legacy-requirements.d.ts +53 -0
- package/dist/core/legacy-bridge/legacy-requirements.d.ts.map +1 -0
- package/dist/core/legacy-bridge/legacy-requirements.js +114 -0
- package/dist/core/legacy-bridge/legacy-requirements.js.map +1 -0
- package/dist/core/legacy-bridge/llm-task.d.ts +54 -0
- package/dist/core/legacy-bridge/llm-task.d.ts.map +1 -0
- package/dist/core/legacy-bridge/llm-task.js +87 -0
- package/dist/core/legacy-bridge/llm-task.js.map +1 -0
- package/dist/core/legacy-bridge/mapper.d.ts +8 -9
- package/dist/core/legacy-bridge/mapper.d.ts.map +1 -1
- package/dist/core/legacy-bridge/mapper.js +24 -39
- package/dist/core/legacy-bridge/mapper.js.map +1 -1
- package/dist/core/legacy-bridge/quality-judge.d.ts +5 -0
- package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -1
- package/dist/core/legacy-bridge/quality-judge.js +25 -21
- package/dist/core/legacy-bridge/quality-judge.js.map +1 -1
- package/dist/core/legacy-bridge/regenerator.d.ts +21 -1
- package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -1
- package/dist/core/legacy-bridge/regenerator.js +132 -2
- package/dist/core/legacy-bridge/regenerator.js.map +1 -1
- package/dist/core/legacy-bridge/runners.d.ts +33 -0
- package/dist/core/legacy-bridge/runners.d.ts.map +1 -0
- package/dist/core/legacy-bridge/runners.js +77 -0
- package/dist/core/legacy-bridge/runners.js.map +1 -0
- package/dist/core/legacy-bridge/sync-check.d.ts +8 -0
- package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -1
- package/dist/core/legacy-bridge/sync-check.js +83 -0
- package/dist/core/legacy-bridge/sync-check.js.map +1 -1
- package/dist/core/legacy-bridge/types.d.ts +2 -0
- package/dist/core/legacy-bridge/types.d.ts.map +1 -1
- package/dist/core/markers/types.d.ts +5 -0
- package/dist/core/markers/types.d.ts.map +1 -1
- package/dist/core/parse/unified-diff.d.ts +26 -0
- package/dist/core/parse/unified-diff.d.ts.map +1 -0
- package/dist/core/parse/unified-diff.js +61 -0
- package/dist/core/parse/unified-diff.js.map +1 -0
- package/dist/core/templates/commands/apply.md +12 -3
- package/dist/core/templates/commands/archive.md +15 -0
- package/dist/core/templates/commands/verify.md +2 -0
- package/dist/core/templates/skills/legacy-bridge-fulfillment.md +22 -0
- package/dist/core/validate/marker-schema.d.ts.map +1 -1
- package/dist/core/validate/marker-schema.js +15 -0
- package/dist/core/validate/marker-schema.js.map +1 -1
- package/package.json +21 -20
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import type { SyncCheckInput } from '../../core/legacy-bridge/sync-check.js';
|
|
2
3
|
export declare function buildArchiveCommand(): Command;
|
|
3
4
|
/**
|
|
4
5
|
* preflight 结果 union — caller 在 try 块内根据 kind 手动 release + exit,
|
|
5
6
|
* 与 archive.ts 现有"business-rule fail 处理"convention 一致(line 154 / 160 等)。
|
|
6
7
|
*
|
|
7
|
-
* kind 'ok':可继续 archive(graceful skip
|
|
8
|
-
* kind 'ack-missing'
|
|
8
|
+
* kind 'ok':可继续 archive(graceful skip / 无 affected anchor / --api 跑完无 critical)
|
|
9
|
+
* kind 'ack-missing':ack 未就绪,caller 应 await release + exit 2
|
|
10
|
+
* kind 'critical-pending':**仅 --api 模式产生** —— 进程内跑 sync-check 后发现
|
|
11
|
+
* critical pending 差异,sync-state 已写,caller 应 await release + exit 2
|
|
12
|
+
* kind 'halted-for-fulfillment':**仅 agent 模式产生** —— emit manifest +
|
|
13
|
+
* 暂停态文件已写,archive 应 halt,caller await release + exit 2
|
|
9
14
|
*/
|
|
10
15
|
export type PreflightResult = {
|
|
11
16
|
kind: 'ok';
|
|
@@ -16,29 +21,87 @@ export type PreflightResult = {
|
|
|
16
21
|
kind: 'critical-pending';
|
|
17
22
|
criticalCount: number;
|
|
18
23
|
message: string;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'halted-for-fulfillment';
|
|
26
|
+
message: string;
|
|
19
27
|
};
|
|
20
28
|
/**
|
|
21
|
-
* Plan 7 §2.5:archive preflight — enforce_sync=true
|
|
29
|
+
* Plan 7 §2.5 + Task 6.3:archive preflight — enforce_sync=true 时拦截 sync 差异。
|
|
22
30
|
*
|
|
23
31
|
* Graceful skip 路径(全部返 {kind:'ok'}):
|
|
24
32
|
* 1. forge/config.yaml 不存在
|
|
25
33
|
* 2. legacy-anchors.yaml 不存在
|
|
26
34
|
* 3. legacy_bridge.allow_llm_calls != true
|
|
27
35
|
* 4. legacy_bridge.enforce_sync != true
|
|
36
|
+
* 5. 无受影响 anchor / 全部读取失败(buildSyncCheckTask 返 null)
|
|
37
|
+
*
|
|
38
|
+
* 双模式(ack 就绪后):
|
|
39
|
+
* - **agent 模式(默认,不带 --api)**:emit sync-check manifest 到 .cache +
|
|
40
|
+
* 写暂停态文件 → 返 {kind:'halted-for-fulfillment'},archive halt 等 agent fulfill。
|
|
41
|
+
* - **--api 模式**:进程内直连 Anthropic API 跑 sync-check + 写 sync-state →
|
|
42
|
+
* 含 critical pending 返 {kind:'critical-pending'};否则返 {kind:'ok'} 续跑 archive。
|
|
28
43
|
*
|
|
29
|
-
*
|
|
30
|
-
* - ack 不就绪 → 返 {kind:'ack-missing'}
|
|
31
|
-
* - 含 critical pending → sync-state 已写后返 {kind:'critical-pending'}
|
|
32
|
-
* - 全过 → 返 {kind:'ok'}
|
|
44
|
+
* ack 不就绪(两模式共有)→ 返 {kind:'ack-missing'}。
|
|
33
45
|
*
|
|
34
46
|
* **不再调 process.exit / console.error**:caller(archive 命令)负责打印消息 +
|
|
35
47
|
* release archive.lock + exit,避免本函数内 process.exit 跳过 caller finally
|
|
36
48
|
* 导致 archive.lock 文件残留。
|
|
37
49
|
*/
|
|
38
|
-
export declare function runArchivePreflight(forgeRoot: string, changeId: string
|
|
50
|
+
export declare function runArchivePreflight(forgeRoot: string, changeId: string, opts?: {
|
|
51
|
+
api: boolean;
|
|
52
|
+
}): Promise<PreflightResult>;
|
|
39
53
|
/**
|
|
40
|
-
* Plan 7 §2.5:post-archive hook — 不阻塞,仅在 enforce_sync=false 时跑(产报告)。
|
|
54
|
+
* Plan 7 §2.5 + Task 6.3:post-archive hook — 不阻塞,仅在 enforce_sync=false 时跑(产报告)。
|
|
41
55
|
* enforce_sync=true 已由 preflight 跑过;graceful skip 路径同 preflight。
|
|
56
|
+
*
|
|
57
|
+
* agent 模式:emit sync-check manifest(非阻塞,archive 已完成,fulfill 后跑 --apply 出报告)。
|
|
58
|
+
* --api 模式:进程内直连 API 跑 sync-check + 写 sync-state(非阻塞,直接出报告)。
|
|
59
|
+
*
|
|
60
|
+
* I-2:archiveDate 由 archive 主流程透传(不自己算 new Date(),避免跨午夜偏一天)。
|
|
61
|
+
*/
|
|
62
|
+
export declare function runArchivePostHook(forgeRoot: string, changeId: string, opts: {
|
|
63
|
+
archiveDate: string;
|
|
64
|
+
api: boolean;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* agent 模式:emit preflight sync-check manifest + 暂停态文件,halt archive(Task 6.3)。
|
|
68
|
+
*
|
|
69
|
+
* 调用前 gate 检查(config 存在 + allow_llm_calls + enforce_sync + anchors + ack)由
|
|
70
|
+
* runArchivePreflight 负责;本函数专注 emit 逻辑。
|
|
71
|
+
*
|
|
72
|
+
* @param ctx 已拼好的 SyncCheckInput(可选;不传则内部自拼,供测试直接调用)
|
|
42
73
|
*/
|
|
43
|
-
export declare function
|
|
74
|
+
export declare function emitPreflightSyncCheck(forgeRoot: string, changeId: string, ctx?: SyncCheckInput): Promise<{
|
|
75
|
+
kind: 'halted-for-fulfillment' | 'skip';
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* agent 模式:enforce_sync=false 时 post-archive emit sync-check manifest(非阻塞,无暂停态)(Task 6.3)。
|
|
79
|
+
*
|
|
80
|
+
* archive 已完成;fulfill 后跑 forge legacy-bridge sync-check --apply 出报告。
|
|
81
|
+
* 调用前 gate 检查由 runArchivePostHook 负责。
|
|
82
|
+
*
|
|
83
|
+
* @param ctx 已拼好的 SyncCheckInput(可选;不传则内部自拼,供测试直接调用)
|
|
84
|
+
*/
|
|
85
|
+
export declare function emitPostHookSyncCheck(forgeRoot: string, changeId: string, ctx?: SyncCheckInput): Promise<{
|
|
86
|
+
kind: 'emitted' | 'skip';
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Task 6.4:forge archive --resume 的 gate 复核。
|
|
90
|
+
*
|
|
91
|
+
* 复核两项:
|
|
92
|
+
* ① 产物绑定 — sync-state 的 produced_from 必须等于暂停态文件的 manifest_hash,
|
|
93
|
+
* 确保 sync-check --apply 产出的 sync-state 确实来自本次 preflight emit 的 manifest。
|
|
94
|
+
* ② critical 幂等重评 — sync-state 中不得有 severity=critical + status=pending 的差异;
|
|
95
|
+
* 若有,说明 agent 未完全 resolve,不可续跑 archive。
|
|
96
|
+
*
|
|
97
|
+
* @param forgeRoot forge/ 根目录路径
|
|
98
|
+
* @param changeId change id(e.g. 'add-pay')
|
|
99
|
+
* @returns { ok: true } 表示 gate 通过;{ ok: false, reason } 表示拒绝并附原因
|
|
100
|
+
*/
|
|
101
|
+
export declare function resumeArchiveGateCheck(forgeRoot: string, changeId: string): Promise<{
|
|
102
|
+
ok: true;
|
|
103
|
+
} | {
|
|
104
|
+
ok: false;
|
|
105
|
+
reason: string;
|
|
106
|
+
}>;
|
|
44
107
|
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAyD7E,wBAAgB,mBAAmB,IAAI,OAAO,CA6mB7C;AAkBD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAmB,GACtC,OAAO,CAAC,eAAe,CAAC,CAiF1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA6Df;AA0DD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAAA;CAAE,CAAC,CAgCtD;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,CAAC,CAevC;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+DvD"}
|