openfeel 1.3.3 → 1.3.4

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.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/deploy-check-output.d.ts.map +1 -1
  3. package/dist/cli/deploy-check-output.js +7 -1
  4. package/dist/cli/deploy-check-output.js.map +1 -1
  5. package/dist/commands/setup.d.ts.map +1 -1
  6. package/dist/commands/setup.js +7 -0
  7. package/dist/commands/setup.js.map +1 -1
  8. package/dist/core/adapter-hash.d.ts +7 -0
  9. package/dist/core/adapter-hash.d.ts.map +1 -0
  10. package/dist/core/adapter-hash.js +64 -0
  11. package/dist/core/adapter-hash.js.map +1 -0
  12. package/dist/core/config.js +2 -2
  13. package/dist/core/deployment-check.d.ts +17 -4
  14. package/dist/core/deployment-check.d.ts.map +1 -1
  15. package/dist/core/deployment-check.js +59 -7
  16. package/dist/core/deployment-check.js.map +1 -1
  17. package/dist/core/global-paths.d.ts +5 -0
  18. package/dist/core/global-paths.d.ts.map +1 -1
  19. package/dist/core/global-paths.js +7 -0
  20. package/dist/core/global-paths.js.map +1 -1
  21. package/dist/core/i18n-data/en.d.ts.map +1 -1
  22. package/dist/core/i18n-data/en.js +2 -0
  23. package/dist/core/i18n-data/en.js.map +1 -1
  24. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
  25. package/dist/core/i18n-data/zh-CN.js +2 -0
  26. package/dist/core/i18n-data/zh-CN.js.map +1 -1
  27. package/dist/core/setup.d.ts.map +1 -1
  28. package/dist/core/setup.js +8 -3
  29. package/dist/core/setup.js.map +1 -1
  30. package/dist/core/template-loader.d.ts.map +1 -1
  31. package/dist/core/template-loader.js +15 -6
  32. package/dist/core/template-loader.js.map +1 -1
  33. package/dist/core/update-state.d.ts +20 -0
  34. package/dist/core/update-state.d.ts.map +1 -1
  35. package/dist/core/update-state.js +26 -0
  36. package/dist/core/update-state.js.map +1 -1
  37. package/dist/core/update.d.ts.map +1 -1
  38. package/dist/core/update.js +11 -2
  39. package/dist/core/update.js.map +1 -1
  40. package/dsh/ADAPTER.md +8 -3
  41. package/dsh/README.md +7 -2
  42. package/dsh/lib/adapters/host-state.js +111 -0
  43. package/dsh/lib/index.js +21 -0
  44. package/dsh/lib/tools/index.js +8 -3
  45. package/dsh/package.json +2 -2
  46. package/package.json +1 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  OpenFeel 是一个 TypeScript CLI 工具,为 AI Agent 开发提供端到端的流程治理。核心理念:**「提示词瘦身,流程入工具」** —— Agent 不靠读长文本理解流程,而是通过 `flow.json` 获取当前状态和下一步指令。
12
12
 
13
- > 📦 **最新版本 v1.3.3**(fast 模式结构性修复) — 修复反馈中 13 项结构性问题(12 次实测拒绝):审查条目可挂阶段(无 op 的 fast 场景)、fast 新增返工边 `review_passed → exec_running`、写入门禁按风险分层(空仓新增 / doc-note 放行)、`plan stage add` 原子聚焦、status.md 派生写、阶段 ID↔目录映射文档化。版本能力概览见 [docs/VERSIONS.md](docs/VERSIONS.md)。
13
+ > 📦 **最新版本 v1.3.4**(分发链路修复) — ① DSH `feel_flow review_add` 透传 `--stage`;② `setup --check` 新增 `restart-required` 三态,区分「适配器文件旧」与「文件已新但宿主未重启」,消除升级死循环;③ `setup --tools dsh` 在「已是最新、跳过」分支也刷新 `update_state.json` 部署标记与适配器指纹。版本能力概览见 [docs/VERSIONS.md](docs/VERSIONS.md)。
14
14
 
15
15
  > 📌 本项目基于 [AI_Prompt](https://github.com/Liuary/AI_Prompt) 开发,参考了 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 等工具的设计思路。
16
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-check-output.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-check-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAM1F,8BAA8B;AAC9B,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAgC9E"}
1
+ {"version":3,"file":"deploy-check-output.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-check-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAM1F,8BAA8B;AAC9B,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAuC9E"}
@@ -30,7 +30,7 @@ export function emitGlobalDeployCheck(options) {
30
30
  const check = options?.check ?? checkGlobalDeployment;
31
31
  const result = check();
32
32
  // ok / unknown → 静默(unknown 避免 Schema 演进误报,R-4)
33
- if (result.status !== 'mismatch' && result.status !== 'missing') {
33
+ if (result.status !== 'mismatch' && result.status !== 'missing' && result.status !== 'restart-required') {
34
34
  return;
35
35
  }
36
36
  const lang = options?.lang ?? getCliLang(process.cwd());
@@ -40,6 +40,12 @@ export function emitGlobalDeployCheck(options) {
40
40
  cli: result.cliVersion,
41
41
  }) + '\n');
42
42
  }
43
+ else if (result.status === 'restart-required') {
44
+ process.stderr.write(t('update.globalRestartRequiredWarnTmpl', lang, {
45
+ deployed: result.deployedVersion ?? '?',
46
+ loadedAt: result.adapter?.startedAt ?? '?',
47
+ }) + '\n');
48
+ }
43
49
  else {
44
50
  process.stderr.write(t('update.globalMissingWarnTmpl', lang) + '\n');
45
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-check-output.js","sourceRoot":"","sources":["../../src/cli/deploy-check-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oDAAoD;AACpD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAkBhC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAkC;IACtE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACxC,6CAA6C;QAC7C,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,qBAAqB,CAAC;QACtD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,gDAAgD;QAChD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC,CAAC,4BAA4B,EAAE,IAAI,EAAE;gBACpC,QAAQ,EAAE,MAAM,CAAC,eAAe,IAAI,GAAG;gBACvC,GAAG,EAAE,MAAM,CAAC,UAAU;aACvB,CAAC,GAAG,IAAI,CACV,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACvE,CAAC;QACD,iBAAiB;QACjB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deploy-check-output.js","sourceRoot":"","sources":["../../src/cli/deploy-check-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oDAAoD;AACpD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAkBhC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAkC;IACtE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACxC,6CAA6C;QAC7C,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,qBAAqB,CAAC;QACtD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,gDAAgD;QAChD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACxG,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC,CAAC,4BAA4B,EAAE,IAAI,EAAE;gBACpC,QAAQ,EAAE,MAAM,CAAC,eAAe,IAAI,GAAG;gBACvC,GAAG,EAAE,MAAM,CAAC,UAAU;aACvB,CAAC,GAAG,IAAI,CACV,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC,CAAC,sCAAsC,EAAE,IAAI,EAAE;gBAC9C,QAAQ,EAAE,MAAM,CAAC,eAAe,IAAI,GAAG;gBACvC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,GAAG;aAC3C,CAAC,GAAG,IAAI,CACV,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACvE,CAAC;QACD,iBAAiB;QACjB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoH3D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0H3D"}
@@ -68,6 +68,13 @@ export function registerSetupCommand(program) {
68
68
  else if (result.status === 'mismatch') {
69
69
  console.log(t('setup.checkMismatchTmpl', lang, { deployed: result.deployedVersion ?? '?', cli: result.cliVersion }));
70
70
  }
71
+ else if (result.status === 'restart-required') {
72
+ // v1.3.4:文件已新、宿主未重启——不再指引重跑 setup(消除死循环)
73
+ console.log(t('setup.checkRestartRequiredTmpl', lang, {
74
+ deployed: result.deployedVersion ?? '?',
75
+ loadedAt: result.adapter?.startedAt ?? '?',
76
+ }));
77
+ }
71
78
  else if (result.status === 'missing') {
72
79
  console.log(t('setup.checkMissingTmpl', lang));
73
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 计算适配器 `lib/` 目录指纹(v1.3.4)。
3
+ * @param adapterRoot 适配器根目录(含 `lib/`),如 `<pkg>/dsh`
4
+ * @returns 64 位 hex;不可读时返回空串
5
+ */
6
+ export declare function hashAdapterFiles(adapterRoot: string): string;
7
+ //# sourceMappingURL=adapter-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-hash.d.ts","sourceRoot":"","sources":["../../src/core/adapter-hash.ts"],"names":[],"mappings":"AAkCA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAyB5D"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 适配器文件指纹(v1.3.4)
3
+ *
4
+ * 用于回答「磁盘上的适配器是哪个版本」与「宿主进程实际加载的是不是这一份」。
5
+ * CLI 侧(本模块)与 DSH 适配器侧(`dsh/lib/adapters/host-state.js`)必须**逐字节同算法**:
6
+ *
7
+ * 1. 遍历 `<adapterRoot>/lib/**` 下全部普通文件(递归,路径按 POSIX `/` 归一);
8
+ * 2. 相对路径按字典序排序;
9
+ * 3. 每个文件内容做 CRLF→LF 归一后取 sha256(hex),拼成 `${relPath}\n${hex}\n`;
10
+ * 4. 对拼接结果再取 sha256(hex)作为目录指纹。
11
+ *
12
+ * 任何读取失败(权限/竞态删除)→ 返回空串(调用方降级为版本比较,不抛)。
13
+ */
14
+ import { createHash } from 'node:crypto';
15
+ import { readFileSync, readdirSync } from 'node:fs';
16
+ import { join, relative, sep } from 'node:path';
17
+ /** CRLF / CR → LF(与 update-state 的 hashContent 同语义) */
18
+ function normalizeEol(content) {
19
+ return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
20
+ }
21
+ /** 递归收集普通文件绝对路径(不跟随目录符号链接,防环) */
22
+ function collectFiles(dir, out) {
23
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
24
+ const full = join(dir, entry.name);
25
+ if (entry.isDirectory()) {
26
+ collectFiles(full, out);
27
+ }
28
+ else if (entry.isFile()) {
29
+ out.push(full);
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * 计算适配器 `lib/` 目录指纹(v1.3.4)。
35
+ * @param adapterRoot 适配器根目录(含 `lib/`),如 `<pkg>/dsh`
36
+ * @returns 64 位 hex;不可读时返回空串
37
+ */
38
+ export function hashAdapterFiles(adapterRoot) {
39
+ try {
40
+ const libDir = join(adapterRoot, 'lib');
41
+ const files = [];
42
+ collectFiles(libDir, files);
43
+ if (files.length === 0) {
44
+ return '';
45
+ }
46
+ const entries = files
47
+ .map((file) => ({
48
+ rel: relative(adapterRoot, file).split(sep).join('/'),
49
+ abs: file,
50
+ }))
51
+ .sort((a, b) => (a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0));
52
+ const sha = createHash('sha256');
53
+ for (const entry of entries) {
54
+ const content = normalizeEol(readFileSync(entry.abs, 'utf-8'));
55
+ const fileHash = createHash('sha256').update(content, 'utf-8').digest('hex');
56
+ sha.update(`${entry.rel}\n${fileHash}\n`, 'utf-8');
57
+ }
58
+ return sha.digest('hex');
59
+ }
60
+ catch {
61
+ return '';
62
+ }
63
+ }
64
+ //# sourceMappingURL=adapter-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-hash.js","sourceRoot":"","sources":["../../src/core/adapter-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhD,uDAAuD;AACvD,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,iCAAiC;AACjC,SAAS,YAAY,CAAC,GAAW,EAAE,GAAa;IAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,OAAO,GAAG,KAAK;aAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACrD,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -371,7 +371,7 @@ const CONFIG_TEMPLATE_ZH = `# .openfeel/config.yaml
371
371
  # 本文件为所有阶段提供默认值,status.md 可覆盖
372
372
 
373
373
  meta:
374
- version: 1.3.3
374
+ version: 1.3.4
375
375
  project: OpenFeel
376
376
  tech_stack: TypeScript
377
377
 
@@ -427,7 +427,7 @@ const CONFIG_TEMPLATE_EN = `# .openfeel/config.yaml
427
427
  # This file provides defaults for all stages; status.md can override
428
428
 
429
429
  meta:
430
- version: 1.3.3
430
+ version: 1.3.4
431
431
  project: OpenFeel
432
432
  tech_stack: TypeScript
433
433
 
@@ -1,19 +1,32 @@
1
- /** 全局部署一致性检测结果状态 */
2
- export type DeployCheckStatus = 'ok' | 'mismatch' | 'missing' | 'unknown';
1
+ /** 全局部署一致性检测结果状态(v1.3.4 增 restart-required) */
2
+ export type DeployCheckStatus = 'ok' | 'mismatch' | 'restart-required' | 'missing' | 'unknown';
3
3
  /** 全局部署一致性检测结果 */
4
4
  export interface DeployCheckResult {
5
- /** 四态判定 */
5
+ /** 五态判定 */
6
6
  status: DeployCheckStatus;
7
7
  /** 当前 CLI 版本(基准) */
8
8
  cliVersion: string;
9
9
  /** 全局 state 记录的已部署版本;缺失/损坏时为 null */
10
10
  deployedVersion: string | null;
11
+ /** DSH 适配器指纹详情(仅适配器部署场景出现;用于诊断,不参与 JSON 契约冻结键) */
12
+ adapter?: {
13
+ /** 部署时写入的适配器指纹(空串 = 计算失败,降级为版本比较) */
14
+ deployedHash: string;
15
+ /** 宿主启动时回写的已加载指纹(缺失 = 宿主未加载历史不可知) */
16
+ loadedHash: string | null;
17
+ /** 宿主启动时间(ISO;缺失为 null) */
18
+ startedAt: string | null;
19
+ } | null;
11
20
  }
12
21
  /**
13
22
  * 检测全局部署版本与当前 CLI 版本是否一致(只读、不写盘、不加锁)。
14
23
  * - 全局 state 文件缺失 → 'missing'
15
24
  * - 文件存在但 Schema 非法/解析失败(load 返回 null)→ 'unknown'(静默)
16
- * - 版本一致 → 'ok';不一致 → 'mismatch'
25
+ * - 版本不一致 → 'mismatch'(磁盘上的部署旧)
26
+ * - 版本一致且存在 `adapters.dsh`:
27
+ * - 宿主 marker 缺失或 `loaded_hash` ≠ 部署指纹 → 'restart-required'(文件已新但宿主未重启)
28
+ * - 指纹一致 → 'ok'
29
+ * - 版本一致且无适配器记录(opencode / claude)→ 'ok'
17
30
  * - 任何读取异常(权限/占用/EISDIR)→ 'unknown'(静默,不抛)
18
31
  * @param options.currentVersion 覆盖 CLI 版本基准(测试注入用;缺省取 getOpenfeelVersion())
19
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-check.d.ts","sourceRoot":"","sources":["../../src/core/deployment-check.ts"],"names":[],"mappings":"AAkBA,oBAAoB;AACpB,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1E,kBAAkB;AAClB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAsB9F;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAkBzE"}
1
+ {"version":3,"file":"deployment-check.d.ts","sourceRoot":"","sources":["../../src/core/deployment-check.ts"],"names":[],"mappings":"AAkBA,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/F,kBAAkB;AAClB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kDAAkD;IAClD,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,YAAY,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,2BAA2B;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;CACV;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAmD9F;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAkBzE"}
@@ -12,14 +12,37 @@
12
12
  * true = 允许输出被动提示;false = 静默
13
13
  * ────────────────────────────────────────────────────────────────
14
14
  */
15
- import { existsSync } from 'node:fs';
16
- import { getGlobalUpdateStatePath } from './global-paths.js';
15
+ import { existsSync, readFileSync } from 'node:fs';
16
+ import { getGlobalAdapterHostPath, getGlobalUpdateStatePath } from './global-paths.js';
17
17
  import { loadGlobalUpdateState, getOpenfeelVersion } from './update-state.js';
18
+ /** 读取宿主已加载适配器标记(只读;缺失/损坏 → null) */
19
+ function readHostMarker() {
20
+ try {
21
+ const markerPath = getGlobalAdapterHostPath();
22
+ if (!existsSync(markerPath)) {
23
+ return null;
24
+ }
25
+ const raw = JSON.parse(readFileSync(markerPath, 'utf-8'));
26
+ if (raw === null || typeof raw !== 'object') {
27
+ return null;
28
+ }
29
+ const loadedHash = typeof raw.loaded_hash === 'string' ? raw.loaded_hash : '';
30
+ const startedAt = typeof raw.started_at === 'string' ? raw.started_at : null;
31
+ return { loadedHash, startedAt };
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
18
37
  /**
19
38
  * 检测全局部署版本与当前 CLI 版本是否一致(只读、不写盘、不加锁)。
20
39
  * - 全局 state 文件缺失 → 'missing'
21
40
  * - 文件存在但 Schema 非法/解析失败(load 返回 null)→ 'unknown'(静默)
22
- * - 版本一致 → 'ok';不一致 → 'mismatch'
41
+ * - 版本不一致 → 'mismatch'(磁盘上的部署旧)
42
+ * - 版本一致且存在 `adapters.dsh`:
43
+ * - 宿主 marker 缺失或 `loaded_hash` ≠ 部署指纹 → 'restart-required'(文件已新但宿主未重启)
44
+ * - 指纹一致 → 'ok'
45
+ * - 版本一致且无适配器记录(opencode / claude)→ 'ok'
23
46
  * - 任何读取异常(权限/占用/EISDIR)→ 'unknown'(静默,不抛)
24
47
  * @param options.currentVersion 覆盖 CLI 版本基准(测试注入用;缺省取 getOpenfeelVersion())
25
48
  */
@@ -37,10 +60,39 @@ export function checkGlobalDeployment(options) {
37
60
  return { status: 'unknown', cliVersion, deployedVersion: null };
38
61
  }
39
62
  const deployedVersion = state.openfeel_version;
40
- // 版本一致 → ok;否则 mismatch(含降级:部署版本 > CLI 版本亦按 != 处理)
41
- return deployedVersion === cliVersion
42
- ? { status: 'ok', cliVersion, deployedVersion }
43
- : { status: 'mismatch', cliVersion, deployedVersion };
63
+ // 版本不一致 → mismatch(含降级:部署版本 > CLI 版本亦按 != 处理)
64
+ if (deployedVersion !== cliVersion) {
65
+ return { status: 'mismatch', cliVersion, deployedVersion };
66
+ }
67
+ // v1.3.4:版本一致时,若存在 DSH 适配器指纹,再判断「宿主是否加载了这一份」
68
+ const dsh = state.adapters?.dsh;
69
+ if (dsh === undefined) {
70
+ return { status: 'ok', cliVersion, deployedVersion };
71
+ }
72
+ const deployedHash = dsh.hash;
73
+ // 指纹计算失败(空串)→ 降级为版本比较(不误报 restart)
74
+ if (deployedHash === '') {
75
+ return { status: 'ok', cliVersion, deployedVersion, adapter: { deployedHash, loadedHash: null, startedAt: null } };
76
+ }
77
+ const host = readHostMarker();
78
+ if (host === null || host.loadedHash !== deployedHash) {
79
+ return {
80
+ status: 'restart-required',
81
+ cliVersion,
82
+ deployedVersion,
83
+ adapter: {
84
+ deployedHash,
85
+ loadedHash: host?.loadedHash ?? null,
86
+ startedAt: host?.startedAt ?? null,
87
+ },
88
+ };
89
+ }
90
+ return {
91
+ status: 'ok',
92
+ cliVersion,
93
+ deployedVersion,
94
+ adapter: { deployedHash, loadedHash: host.loadedHash, startedAt: host.startedAt },
95
+ };
44
96
  }
45
97
  catch {
46
98
  // 读取异常(权限/占用/目录占位等)→ unknown 静默,不抛
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-check.js","sourceRoot":"","sources":["../../src/core/deployment-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployment-check.js","sourceRoot":"","sources":["../../src/core/deployment-check.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,11 @@ export declare function getGlobalAgentsMdPath(): string;
19
19
  export declare function getGlobalUpdateStatePath(): string;
20
20
  /** 全局 update_infos.md 路径(~/.openfeel/update_infos.md;读写属 stage-38,本阶段仅解析路径) */
21
21
  export declare function getGlobalUpdateInfosPath(): string;
22
+ /**
23
+ * 宿主已加载适配器标记路径(~/.openfeel/adapter-host-dsh.json,v1.3.4)。
24
+ * 由 DSH 适配器在 `apply()`(宿主启动)时 best-effort 写入,`setup --check` 只读比对。
25
+ */
26
+ export declare function getGlobalAdapterHostPath(): string;
22
27
  /** 全局 auth.json 路径(opencode 适配器:~/.local/share/opencode/auth.json;模型 provider 校验依据,REV-1505) */
23
28
  export declare function getAuthJsonPath(): string;
24
29
  /** 全局锁文件路径(~/.openfeel/locks/{name}.lock;跨项目全局写入用,REV-1801) */
@@ -1 +1 @@
1
- {"version":3,"file":"global-paths.d.ts","sourceRoot":"","sources":["../../src/core/global-paths.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,gGAAgG;AAChG,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,uDAAuD;AACvD,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
1
+ {"version":3,"file":"global-paths.d.ts","sourceRoot":"","sources":["../../src/core/global-paths.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,gGAAgG;AAChG,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,uDAAuD;AACvD,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
@@ -45,6 +45,13 @@ export function getGlobalUpdateStatePath() {
45
45
  export function getGlobalUpdateInfosPath() {
46
46
  return join(homedir(), '.openfeel', 'update_infos.md');
47
47
  }
48
+ /**
49
+ * 宿主已加载适配器标记路径(~/.openfeel/adapter-host-dsh.json,v1.3.4)。
50
+ * 由 DSH 适配器在 `apply()`(宿主启动)时 best-effort 写入,`setup --check` 只读比对。
51
+ */
52
+ export function getGlobalAdapterHostPath() {
53
+ return join(homedir(), '.openfeel', 'adapter-host-dsh.json');
54
+ }
48
55
  /** 全局 auth.json 路径(opencode 适配器:~/.local/share/opencode/auth.json;模型 provider 校验依据,REV-1505) */
49
56
  export function getAuthJsonPath() {
50
57
  return join(homedir(), '.local', 'share', 'opencode', 'auth.json');
@@ -1 +1 @@
1
- {"version":3,"file":"global-paths.js","sourceRoot":"","sources":["../../src/core/global-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACzD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAClD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"global-paths.js","sourceRoot":"","sources":["../../src/core/global-paths.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/core/i18n-data/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,UA6BpB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UA8UlB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAyBlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UAkCpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA8CrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAqClB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,UAiCvB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAQrB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAAe,CAAC;AAGtC,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,UAAe,CAAC;AAG3C,eAAO,MAAM,IAAI,EAAE,UAclB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAqUlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UA+BpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA4BrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAqBnB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAUrB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,GAAG,EAAE,UA6EjB,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAsBlE,CAAC"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/core/i18n-data/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,UA6BpB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UA8UlB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAyBlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UAmCpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA8CrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAqClB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,UAiCvB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAQrB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAAe,CAAC;AAGtC,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,UAAe,CAAC;AAG3C,eAAO,MAAM,IAAI,EAAE,UAclB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAqUlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UA+BpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA4BrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAqBnB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAiCnB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAUrB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,GAAG,EAAE,UA6EjB,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAsBlE,CAAC"}
@@ -399,6 +399,7 @@ export const update = {
399
399
  'globalJsoncParseSkipTmpl': { key: 'update.globalJsoncParseSkipTmpl', zh: '', en: '[update] Failed to parse global opencode.jsonc (may contain block comments); skipping merge and keeping the original file: {err}' },
400
400
  'globalJsoncWriteSkipTmpl': { key: 'update.globalJsoncWriteSkipTmpl', zh: '', en: '[update] {err}; skipped global opencode.jsonc write, continuing with remaining steps' },
401
401
  'globalStaleWarnTmpl': { key: 'update.globalStaleWarnTmpl', zh: '', en: '[openfeel] Global OpenFeel deployment version {deployed} differs from CLI version {cli}; run `openfeel setup` and restart the harness to load the latest global configuration.' },
402
+ 'globalRestartRequiredWarnTmpl': { key: 'update.globalRestartRequiredWarnTmpl', zh: '', en: '[openfeel] Adapter files were updated ({deployed}), but the running host still has the old adapter loaded (host started at {loadedAt}); **fully quit and restart the host** (reloading the backend is not enough).' },
402
403
  'globalMissingWarnTmpl': { key: 'update.globalMissingWarnTmpl', zh: '', en: '[openfeel] No global OpenFeel deployment detected; run `openfeel setup` and restart the harness.' },
403
404
  'toolsInvalidTmpl': { key: 'update.toolsInvalidTmpl', zh: '', en: 'Invalid tool value(s): {tools} (valid: {valid})' },
404
405
  'nonInteractiveToolsTmpl': { key: 'update.nonInteractiveToolsTmpl', zh: '', en: '(Non-interactive environment; using the default tool list)' },
@@ -1002,6 +1003,7 @@ export const setup = {
1002
1003
  'complete': { key: 'setup.complete', zh: '', en: '? Global OpenFeel framework config deployed' },
1003
1004
  'checkOkTmpl': { key: 'setup.checkOkTmpl', zh: '', en: 'Global deployment version {deployed} (matches CLI version {cli})' },
1004
1005
  'checkMismatchTmpl': { key: 'setup.checkMismatchTmpl', zh: '', en: 'Global deployment version {deployed} != CLI version {cli}; run `openfeel setup` and restart the harness.' },
1006
+ 'checkRestartRequiredTmpl': { key: 'setup.checkRestartRequiredTmpl', zh: '', en: 'Adapter files are already {deployed}, but the running host still has the old adapter loaded (host started at {loadedAt}); **fully quit and restart the host** (reloading the backend is not enough).' },
1005
1007
  'checkMissingTmpl': { key: 'setup.checkMissingTmpl', zh: '', en: 'No global OpenFeel deployment detected; run `openfeel setup` and restart the harness.' },
1006
1008
  'checkUnknownTmpl': { key: 'setup.checkUnknownTmpl', zh: '', en: 'Global deployment status cannot be determined (update_state.json missing or corrupted); run `openfeel setup` to redeploy.' },
1007
1009
  'restartHarnessTmpl': { key: 'setup.restartHarnessTmpl', zh: '', en: 'Restart the harness ({harness}) to load the new global configuration.' },