openfeel 1.0.8 → 1.1.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.
Files changed (139) hide show
  1. package/README.en.md +11 -11
  2. package/README.md +2 -1
  3. package/README.zh-CN.md +13 -13
  4. package/bin/openfeel.js +2 -2
  5. package/dist/cli/index.d.ts +6 -0
  6. package/dist/cli/index.d.ts.map +1 -1
  7. package/dist/cli/index.js +26 -0
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/commands/archive.d.ts +1 -1
  10. package/dist/commands/flow.d.ts +1 -1
  11. package/dist/commands/flow.d.ts.map +1 -1
  12. package/dist/commands/flow.js +20 -8
  13. package/dist/commands/flow.js.map +1 -1
  14. package/dist/commands/migrate.d.ts +10 -0
  15. package/dist/commands/migrate.d.ts.map +1 -0
  16. package/dist/commands/migrate.js +97 -0
  17. package/dist/commands/migrate.js.map +1 -0
  18. package/dist/commands/model.d.ts +10 -0
  19. package/dist/commands/model.d.ts.map +1 -0
  20. package/dist/commands/model.js +135 -0
  21. package/dist/commands/model.js.map +1 -0
  22. package/dist/commands/plan.js +2 -2
  23. package/dist/commands/plan.js.map +1 -1
  24. package/dist/commands/stage.d.ts.map +1 -1
  25. package/dist/commands/stage.js +66 -47
  26. package/dist/commands/stage.js.map +1 -1
  27. package/dist/commands/update.d.ts.map +1 -1
  28. package/dist/commands/update.js +12 -0
  29. package/dist/commands/update.js.map +1 -1
  30. package/dist/commands/view.d.ts +1 -1
  31. package/dist/commands/view.d.ts.map +1 -1
  32. package/dist/commands/view.js +2 -1
  33. package/dist/commands/view.js.map +1 -1
  34. package/dist/core/archive/merge.d.ts.map +1 -1
  35. package/dist/core/archive/merge.js +5 -4
  36. package/dist/core/archive/merge.js.map +1 -1
  37. package/dist/core/artifact-graph/resolver.js +2 -2
  38. package/dist/core/artifact-graph/resolver.js.map +1 -1
  39. package/dist/core/config.d.ts +8 -8
  40. package/dist/core/config.d.ts.map +1 -1
  41. package/dist/core/config.js +22 -17
  42. package/dist/core/config.js.map +1 -1
  43. package/dist/core/flow-manager.d.ts +27 -6
  44. package/dist/core/flow-manager.d.ts.map +1 -1
  45. package/dist/core/flow-manager.js +152 -103
  46. package/dist/core/flow-manager.js.map +1 -1
  47. package/dist/core/fs/atomic-write.d.ts +31 -0
  48. package/dist/core/fs/atomic-write.d.ts.map +1 -0
  49. package/dist/core/fs/atomic-write.js +80 -0
  50. package/dist/core/fs/atomic-write.js.map +1 -0
  51. package/dist/core/fs/file-lock.d.ts +34 -0
  52. package/dist/core/fs/file-lock.d.ts.map +1 -0
  53. package/dist/core/fs/file-lock.js +142 -0
  54. package/dist/core/fs/file-lock.js.map +1 -0
  55. package/dist/core/fs/sequence.d.ts +42 -0
  56. package/dist/core/fs/sequence.d.ts.map +1 -0
  57. package/dist/core/fs/sequence.js +69 -0
  58. package/dist/core/fs/sequence.js.map +1 -0
  59. package/dist/core/global-paths.d.ts +25 -0
  60. package/dist/core/global-paths.d.ts.map +1 -0
  61. package/dist/core/global-paths.js +57 -0
  62. package/dist/core/global-paths.js.map +1 -0
  63. package/dist/core/i18n-data/en.d.ts +2 -0
  64. package/dist/core/i18n-data/en.d.ts.map +1 -1
  65. package/dist/core/i18n-data/en.js +69 -1
  66. package/dist/core/i18n-data/en.js.map +1 -1
  67. package/dist/core/i18n-data/zh-CN.d.ts +2 -0
  68. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
  69. package/dist/core/i18n-data/zh-CN.js +69 -1
  70. package/dist/core/i18n-data/zh-CN.js.map +1 -1
  71. package/dist/core/i18n.js +4 -4
  72. package/dist/core/i18n.js.map +1 -1
  73. package/dist/core/init.d.ts +3 -3
  74. package/dist/core/init.d.ts.map +1 -1
  75. package/dist/core/init.js +58 -42
  76. package/dist/core/init.js.map +1 -1
  77. package/dist/core/managed-region.d.ts +54 -0
  78. package/dist/core/managed-region.d.ts.map +1 -0
  79. package/dist/core/managed-region.js +171 -0
  80. package/dist/core/managed-region.js.map +1 -0
  81. package/dist/core/metrics.d.ts.map +1 -1
  82. package/dist/core/metrics.js +6 -3
  83. package/dist/core/metrics.js.map +1 -1
  84. package/dist/core/migrate.d.ts +103 -0
  85. package/dist/core/migrate.d.ts.map +1 -0
  86. package/dist/core/migrate.js +533 -0
  87. package/dist/core/migrate.js.map +1 -0
  88. package/dist/core/model-config.d.ts +62 -0
  89. package/dist/core/model-config.d.ts.map +1 -0
  90. package/dist/core/model-config.js +336 -0
  91. package/dist/core/model-config.js.map +1 -0
  92. package/dist/core/opencode-config.d.ts +17 -0
  93. package/dist/core/opencode-config.d.ts.map +1 -0
  94. package/dist/core/opencode-config.js +123 -0
  95. package/dist/core/opencode-config.js.map +1 -0
  96. package/dist/core/plan/path.d.ts +64 -0
  97. package/dist/core/plan/path.d.ts.map +1 -0
  98. package/dist/core/plan/path.js +150 -0
  99. package/dist/core/plan/path.js.map +1 -0
  100. package/dist/core/plan/roadmap.d.ts.map +1 -1
  101. package/dist/core/plan/roadmap.js +3 -2
  102. package/dist/core/plan/roadmap.js.map +1 -1
  103. package/dist/core/plan/scheme.d.ts +4 -3
  104. package/dist/core/plan/scheme.d.ts.map +1 -1
  105. package/dist/core/plan/scheme.js +113 -110
  106. package/dist/core/plan/scheme.js.map +1 -1
  107. package/dist/core/plan/stage.d.ts +2 -2
  108. package/dist/core/plan/stage.d.ts.map +1 -1
  109. package/dist/core/plan/stage.js +47 -32
  110. package/dist/core/plan/stage.js.map +1 -1
  111. package/dist/core/public-logger.d.ts +3 -3
  112. package/dist/core/public-logger.d.ts.map +1 -1
  113. package/dist/core/public-logger.js +36 -40
  114. package/dist/core/public-logger.js.map +1 -1
  115. package/dist/core/template-loader.d.ts +1 -1
  116. package/dist/core/template-loader.d.ts.map +1 -1
  117. package/dist/core/template-loader.js +2849 -2826
  118. package/dist/core/template-loader.js.map +1 -1
  119. package/dist/core/update-infos.d.ts +32 -0
  120. package/dist/core/update-infos.d.ts.map +1 -0
  121. package/dist/core/update-infos.js +153 -0
  122. package/dist/core/update-infos.js.map +1 -0
  123. package/dist/core/update-state.d.ts +18 -0
  124. package/dist/core/update-state.d.ts.map +1 -1
  125. package/dist/core/update-state.js +66 -3
  126. package/dist/core/update-state.js.map +1 -1
  127. package/dist/core/update.d.ts +12 -0
  128. package/dist/core/update.d.ts.map +1 -1
  129. package/dist/core/update.js +340 -485
  130. package/dist/core/update.js.map +1 -1
  131. package/dist/core/view/entry.js +4 -4
  132. package/dist/core/view/entry.js.map +1 -1
  133. package/dist/core/workspace/identity.d.ts.map +1 -1
  134. package/dist/core/workspace/identity.js +13 -10
  135. package/dist/core/workspace/identity.js.map +1 -1
  136. package/dist/core/workspace/knowledge.d.ts.map +1 -1
  137. package/dist/core/workspace/knowledge.js +24 -14
  138. package/dist/core/workspace/knowledge.js.map +1 -1
  139. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/core/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /** 三层级 scope */
2
+ export type ModelScope = 'default' | 'global' | 'project';
3
+ /** set 结果 */
4
+ export interface SetModelResult {
5
+ ok: boolean;
6
+ scope: ModelScope;
7
+ agentId: string;
8
+ model: string;
9
+ changedFiles: string[];
10
+ needsBuild?: boolean;
11
+ warning?: string;
12
+ }
13
+ /** get 结果 */
14
+ export interface GetModelResult {
15
+ agentId: string;
16
+ effective?: string;
17
+ byScope: Partial<Record<ModelScope, string | null>>;
18
+ inconsistent?: boolean;
19
+ }
20
+ /** 校验结果 */
21
+ export interface ModelValidation {
22
+ ok: boolean;
23
+ error?: string;
24
+ warning?: string;
25
+ providers?: string[];
26
+ }
27
+ /** 可注入路径(测试隔离用,REV-1506) */
28
+ export interface ModelConfigOptions {
29
+ /** project 层级定位用:项目根路径,默认 process.cwd() */
30
+ projectPath?: string;
31
+ /** default 层级定位用:框架源码根(含 src/core/templates-data 与 src/core/opencode-config.ts),默认由模块位置推导 */
32
+ frameworkRoot?: string;
33
+ }
34
+ /**
35
+ * 判断框架源码是否就位(default scope 预判用,REV-1703)。
36
+ * 路径推导复用 resolveFrameworkRoot(基于 MODULE_DIR),与 core 层落点一致,
37
+ * 避免 CLI 层用 process.cwd() 推导在子目录运行时误报。
38
+ */
39
+ export declare function isFrameworkSourceReady(opts?: ModelConfigOptions): boolean;
40
+ /** 读取 auth.json 顶层 provider key 集合;缺文件/解析失败返回 null(REV-1505) */
41
+ export declare function readAuthProviders(): string[] | null;
42
+ /**
43
+ * 校验模型名格式 + provider(对照 auth.json)。
44
+ * 格式:{provider}/{model-id},两者均非空、不含空白(provider 取自首个 `/` 之前,天然不含 `/`)。
45
+ * provider 硬校验(auth.json key);model-id 软校验(仅格式,提示以 Did you mean 为准)。
46
+ */
47
+ export declare function validateModel(model: string): ModelValidation;
48
+ /**
49
+ * 写指定 scope 的 agent model。
50
+ * default 层:4 有显式 model 的 agent 改 frontmatter 双语 +(vision/reviewer 额外)opencode-config.ts;
51
+ * 5 无显式 model 的 agent 抛错提示用 global/project。
52
+ * global 层:加锁 + 原子写;project 层:仅原子写。
53
+ */
54
+ export declare function setAgentModel(scope: ModelScope, agentIdRaw: string, model: string, opts?: ModelConfigOptions): SetModelResult;
55
+ /**
56
+ * 读 agent model。始终返回完整 byScope(三 scope 显式值)。
57
+ * scope 指定时 effective=该 scope 值;未指定时 effective=default > project > global 首个非空(修正链)。
58
+ */
59
+ export declare function getAgentModel(agentIdRaw: string, scope?: ModelScope, opts?: ModelConfigOptions): GetModelResult;
60
+ /** 列出所有 9 个 agent 的模型(REV-1507:始终返回完整 byScope,scope 仅透传给 get) */
61
+ export declare function listAgentModels(scope?: ModelScope, opts?: ModelConfigOptions): GetModelResult[];
62
+ //# sourceMappingURL=model-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"AAwCA,gBAAgB;AAChB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,WAAW;AACX,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,MAAM,CAAC;CAGxB;AAiCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAEzE;AAgBD,gEAAgE;AAChE,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,GAAG,IAAI,CAYnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAgC5D;AAgJD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,kBAAkB,GACxB,cAAc,CA0ChB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAiB/G;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAE/F"}
@@ -0,0 +1,336 @@
1
+ /**
2
+ * 模型配置核心模块(stage-40)
3
+ * 提供「工具默认 / 全局 / 当前项目」三层级 agent 模型的读写与校验,
4
+ * 供 CLI(openfeel model)与内部 API(Model not found 报错时自动修复)共用。
5
+ *
6
+ * 三层级落点:
7
+ * - default(工具默认):有显式 model 的 4 个 agent(executor/utility/reviewer/vision)
8
+ * 改 src/core/templates-data/opencode/agents/{zh-CN,en}/*.md frontmatter `model:`(双语);
9
+ * 其中 vision/reviewer 额外改 src/core/opencode-config.ts buildGlobalOpencodeFrameworkObj()
10
+ * 的 agent.<name>.model。无显式 model 的 5 个 agent(feel/planner/schemer/feel-tester/archiver)
11
+ * 报错提示改用 global/project,不新增框架默认条目。
12
+ * - global:~/.config/opencode/opencode.jsonc 的 agent.<name>.model(加锁 + 原子写,只改 model 键)
13
+ * - project:项目根 opencode.jsonc 的 agent.<name>.model(原子写,不加锁)
14
+ *
15
+ * ── 解析优先级(实测勘误,REV-1606)──
16
+ * plan.md §二原写「项目 jsonc > 全局 jsonc > frontmatter > 默认」,op-001 步骤 0 前置实测
17
+ * (隔离 HOME + opencode 1.18.30 `debug config`)推翻该结论。opencode 官方配置源优先级为
18
+ * 「project config < .opencode 目录(agents 等)」,故 agent markdown frontmatter 覆盖 jsonc:
19
+ * 项目 agents/*.md frontmatter > 全局 agents/*.md frontmatter >
20
+ * 项目 opencode.jsonc agent.model > 全局 opencode.jsonc agent.model > opencode 默认
21
+ * 本模块以框架默认源(templates-data frontmatter)代表 default 层(部署后落于全局 agents),
22
+ * 故 effective 解析修正为 `default > project > global`(取首个非空显式值),
23
+ * 且 default 层多源不一致时以 frontmatter 值生效(frontmatter 覆盖 opencode-config.ts 侧)。
24
+ *
25
+ * 本模块为纯函数,不直接 console 输出,返回结构化结果。
26
+ */
27
+ import { existsSync, readFileSync } from 'node:fs';
28
+ import { dirname, join, resolve } from 'node:path';
29
+ import { fileURLToPath } from 'node:url';
30
+ import { atomicWriteFileSync } from './fs/atomic-write.js';
31
+ import { withFileLock, globalLockPath } from './fs/file-lock.js';
32
+ import { getGlobalOpencodeJsoncPath, getAuthJsonPath } from './global-paths.js';
33
+ import { parseJsonc } from './opencode-config.js';
34
+ import { splitFrontmatter, mergeFrontmatter, serializeFrontmatter } from './managed-region.js';
35
+ import { listAgentIds } from './template-loader.js';
36
+ import { normalizeAgentName } from './flow-manager.js';
37
+ import { loadGlobalUpdateState, saveGlobalUpdateState, createGlobalUpdateState, updateFileHash } from './update-state.js';
38
+ // ─── 路径解析 ─────────────────────────────────────────────────────
39
+ /** 模块自身目录(src/core 或 dist/core) */
40
+ const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
41
+ /** default 层级框架源码根:默认由模块位置推导(src/core → 上溯两级到项目根) */
42
+ function resolveFrameworkRoot(opts) {
43
+ if (opts?.frameworkRoot) {
44
+ return resolve(opts.frameworkRoot);
45
+ }
46
+ // model-config 位于 <项目根>/src/core/ 下,框架源码根 = 上溯两级到项目根(含 src/core/templates-data、src/core/opencode-config.ts)
47
+ // 注意:编译到 dist/ 时本目录为 dist/core/,templates-data 不随 tsc 复制,故 default scope 仅在源码仓运行
48
+ // (REV-1601 修订:原 resolve(MODULE_DIR, '..') 只上溯一级到 <项目根>/src,导致拼出 src/src/core/... 双重 src)
49
+ return resolve(MODULE_DIR, '..', '..');
50
+ }
51
+ /** agent 模板目录(zh-CN/en 双语) */
52
+ function agentsTemplatesDir(opts) {
53
+ return join(resolveFrameworkRoot(opts), 'src', 'core', 'templates-data', 'opencode', 'agents');
54
+ }
55
+ /** 指定 agent 的模板文件路径(lang ∈ zh-CN | en) */
56
+ function agentTemplatePath(agentId, lang, opts) {
57
+ return join(agentsTemplatesDir(opts), lang, `${agentId}.md`);
58
+ }
59
+ /** opencode-config.ts 源码路径 */
60
+ function opencodeConfigTsPath(opts) {
61
+ return join(resolveFrameworkRoot(opts), 'src', 'core', 'opencode-config.ts');
62
+ }
63
+ /**
64
+ * 判断框架源码是否就位(default scope 预判用,REV-1703)。
65
+ * 路径推导复用 resolveFrameworkRoot(基于 MODULE_DIR),与 core 层落点一致,
66
+ * 避免 CLI 层用 process.cwd() 推导在子目录运行时误报。
67
+ */
68
+ export function isFrameworkSourceReady(opts) {
69
+ return existsSync(agentsTemplatesDir(opts));
70
+ }
71
+ // ─── agent 名归一化 ───────────────────────────────────────────────
72
+ /** 归一化 agent 名(旧名 → openfeel-* 新名;幂等) */
73
+ function normalizeAgentId(agentId) {
74
+ return normalizeAgentName(agentId);
75
+ }
76
+ /** 判断是否为纯对象 */
77
+ function isPlainObject(v) {
78
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
79
+ }
80
+ // ─── 校验 ─────────────────────────────────────────────────────────
81
+ /** 读取 auth.json 顶层 provider key 集合;缺文件/解析失败返回 null(REV-1505) */
82
+ export function readAuthProviders() {
83
+ const p = getAuthJsonPath();
84
+ if (!existsSync(p)) {
85
+ return null;
86
+ }
87
+ try {
88
+ const obj = JSON.parse(readFileSync(p, 'utf-8'));
89
+ return Array.isArray(obj) ? null : Object.keys(obj);
90
+ }
91
+ catch {
92
+ // auth.json 内容非法 JSON:视为无法核对 provider,降级返回 null
93
+ return null;
94
+ }
95
+ }
96
+ /**
97
+ * 校验模型名格式 + provider(对照 auth.json)。
98
+ * 格式:{provider}/{model-id},两者均非空、不含空白(provider 取自首个 `/` 之前,天然不含 `/`)。
99
+ * provider 硬校验(auth.json key);model-id 软校验(仅格式,提示以 Did you mean 为准)。
100
+ */
101
+ export function validateModel(model) {
102
+ if (typeof model !== 'string' || model.trim() === '') {
103
+ return { ok: false, error: '模型名不能为空,格式应为 {provider}/{model-id}' };
104
+ }
105
+ const m = model.trim();
106
+ const slashIdx = m.indexOf('/');
107
+ if (slashIdx <= 0 || slashIdx === m.length - 1) {
108
+ return { ok: false, error: `模型名格式非法:应为 {provider}/{model-id},实际为 "${m}"` };
109
+ }
110
+ const provider = m.slice(0, slashIdx);
111
+ const modelId = m.slice(slashIdx + 1);
112
+ // provider 取自第一个 "/" 之前,天然不含 "/",故仅需校验空白(REV-1704 移除冗余 includes 判断)
113
+ if (/\s/.test(provider)) {
114
+ return { ok: false, error: `provider 非法(含空白):"${provider}"` };
115
+ }
116
+ if (modelId.trim() === '' || /\s/.test(modelId)) {
117
+ return { ok: false, error: `model-id 非法(为空或含空白):"${modelId}"` };
118
+ }
119
+ // provider 硬校验
120
+ const providers = readAuthProviders();
121
+ if (providers !== null && !providers.includes(provider)) {
122
+ return {
123
+ ok: false,
124
+ error: `provider "${provider}" 不在 auth.json 中`,
125
+ providers,
126
+ };
127
+ }
128
+ const warning = 'model-id 无法离线核对,请以 "Model not found" 报错中的 Did you mean 建议为准';
129
+ if (providers === null) {
130
+ return { ok: true, warning: `${warning}(且未找到 auth.json,无法核对 provider)` };
131
+ }
132
+ return { ok: true, warning };
133
+ }
134
+ // ─── frontmatter 读写(default 层,双语) ─────────────────────────
135
+ /** 读取某语言模板的 frontmatter model;无 frontmatter / 无 model 返回 null */
136
+ function readFrontmatterModel(agentId, lang, opts) {
137
+ const p = agentTemplatePath(agentId, lang, opts);
138
+ if (!existsSync(p)) {
139
+ return null;
140
+ }
141
+ const split = splitFrontmatter(readFileSync(p, 'utf-8'));
142
+ if (!split) {
143
+ return null;
144
+ }
145
+ const v = split.frontmatter.model;
146
+ return typeof v === 'string' && v !== '' ? v : null;
147
+ }
148
+ /** 写某语言模板的 frontmatter model(保留其他字段与正文,REV-1501/控制区标记模式) */
149
+ function writeFrontmatterModel(agentId, lang, model, opts) {
150
+ const p = agentTemplatePath(agentId, lang, opts);
151
+ if (!existsSync(p)) {
152
+ throw new Error(`agent 模板不存在:${p}`);
153
+ }
154
+ const content = readFileSync(p, 'utf-8');
155
+ const split = splitFrontmatter(content);
156
+ if (!split) {
157
+ throw new Error(`agent 模板缺少 frontmatter:${p}`);
158
+ }
159
+ const merged = mergeFrontmatter(split.frontmatter, { model });
160
+ atomicWriteFileSync(p, serializeFrontmatter(merged) + split.body);
161
+ return p;
162
+ }
163
+ // ─── opencode-config.ts 读写(default 层,结构化定位) ────────────
164
+ /**
165
+ * 读 opencode-config.ts 源码中 agent.<name>.model(结构化定位,与写对称)。
166
+ * 用文件文本 + agent 键锚定(非 import 函数),保证写→读往返一致且支持测试隔离(REV-1506)。
167
+ * 无该 agent 条目返回 null。
168
+ */
169
+ function readOpencodeConfigAgentModel(agentId, opts) {
170
+ const p = opencodeConfigTsPath(opts);
171
+ if (!existsSync(p)) {
172
+ return null;
173
+ }
174
+ const text = readFileSync(p, 'utf-8');
175
+ const escaped = agentId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
176
+ const re = new RegExp(`['"]${escaped}['"]\\s*:\\s*\\{\\s*model\\s*:\\s*(['"])([^'"]*?)\\1`, 'g');
177
+ const m = re.exec(text);
178
+ return m ? m[2] : null;
179
+ }
180
+ /**
181
+ * 写 opencode-config.ts 的 agent.<name>.model(REV-1502 结构化定位)。
182
+ * 按 agent 键精确锚定 `'openfeel-vision': { model: '...' }` 条目行替换,避免裸正则误伤。
183
+ * 无该 agent 条目 → 抛错(本阶段 default scope 不新增 opencode-config 条目)。
184
+ */
185
+ function writeOpencodeConfigAgentModel(agentId, model, opts) {
186
+ const p = opencodeConfigTsPath(opts);
187
+ const text = readFileSync(p, 'utf-8');
188
+ const escaped = agentId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
189
+ const re = new RegExp(`(['"]${escaped}['"]\\s*:\\s*\\{\\s*model\\s*:\\s*)(['"])([^'"]*?)(\\2)`, 'g');
190
+ if (!re.test(text)) {
191
+ throw new Error(`opencode-config.ts 无 agent.${agentId}.model 条目,无法更新工具默认模型`);
192
+ }
193
+ re.lastIndex = 0;
194
+ // 用 replacer 函数避免 model 值中的 `$` 被 String.replace 解释为特殊引用
195
+ const updated = text.replace(re, (_match, prefix, q, _old, q2) => `${prefix}${q}${model}${q2}`);
196
+ atomicWriteFileSync(p, updated);
197
+ return p;
198
+ }
199
+ // ─── jsonc 读写(global / project 层) ────────────────────────────
200
+ /** 读 jsonc 的 agent.<name>.model;文件缺失/无条目/解析失败返回 null(REV-1603 修订:补 try/catch) */
201
+ function readJsoncAgentModel(filePath, agentId) {
202
+ if (!existsSync(filePath)) {
203
+ return null;
204
+ }
205
+ let obj;
206
+ try {
207
+ obj = parseJsonc(readFileSync(filePath, 'utf-8'));
208
+ }
209
+ catch {
210
+ // 解析失败(如含 /* */ 块注释)视为无条目,保护读取路径
211
+ return null;
212
+ }
213
+ const agentObj = isPlainObject(obj.agent) ? obj.agent : null;
214
+ if (!agentObj) {
215
+ return null;
216
+ }
217
+ const entry = agentObj[agentId];
218
+ if (!isPlainObject(entry)) {
219
+ return null;
220
+ }
221
+ const v = entry.model;
222
+ return typeof v === 'string' && v !== '' ? v : null;
223
+ }
224
+ /**
225
+ * 写 jsonc 的 agent.<name>.model(REV-1507 只改 model 键,保留同 agent 其他字段与其他 agent)。
226
+ * parse 失败抛错不写盘(保护用户文件,参照 migrate.ts 降级原则)。
227
+ */
228
+ function writeJsoncAgentModel(filePath, agentId, model) {
229
+ const raw = existsSync(filePath) ? readFileSync(filePath, 'utf-8') : '{}\n';
230
+ let obj;
231
+ try {
232
+ obj = parseJsonc(raw);
233
+ }
234
+ catch (err) {
235
+ throw new Error(`opencode.jsonc 解析失败(可能含 /* */ 块注释),已放弃写入保护原文件:${err.message}`);
236
+ }
237
+ const agentObj = isPlainObject(obj.agent) ? obj.agent : {};
238
+ const existing = isPlainObject(agentObj[agentId]) ? agentObj[agentId] : {};
239
+ agentObj[agentId] = { ...existing, model }; // 仅覆盖 model,保留其他字段(REV-1507)
240
+ obj.agent = agentObj;
241
+ atomicWriteFileSync(filePath, JSON.stringify(obj, null, 2) + '\n');
242
+ }
243
+ // ─── default 层读写编排 ───────────────────────────────────────────
244
+ /** 判定 agent 在 default 层是否可写;返回各源是否存在显式 model */
245
+ function defaultScopeSources(agentId, opts) {
246
+ const fmZh = readFrontmatterModel(agentId, 'zh-CN', opts);
247
+ const fmEn = readFrontmatterModel(agentId, 'en', opts);
248
+ const occ = readOpencodeConfigAgentModel(agentId, opts);
249
+ return { frontmatter: fmZh !== null || fmEn !== null, opencodeConfig: occ !== null };
250
+ }
251
+ /**
252
+ * 读取 default 层多源值(REV-1503 + REV-1606 修正链)。
253
+ * frontmatter(agent markdown)加载优先级高于 opencode.jsonc(opencode-config.ts 侧),
254
+ * 故不一致时以 frontmatter 值生效(原方案误以 opencode-config 值生效,实测勘误)。
255
+ */
256
+ function getDefaultScopeValue(agentId, opts) {
257
+ const fmZh = readFrontmatterModel(agentId, 'zh-CN', opts);
258
+ const fmEn = readFrontmatterModel(agentId, 'en', opts);
259
+ const occ = readOpencodeConfigAgentModel(agentId, opts);
260
+ const fm = fmZh ?? fmEn;
261
+ const inconsistent = (occ !== null && fm !== null && occ !== fm) || (fmZh !== fmEn);
262
+ return { value: fm ?? occ, inconsistent };
263
+ }
264
+ // ─── 公开 API ─────────────────────────────────────────────────────
265
+ /**
266
+ * 写指定 scope 的 agent model。
267
+ * default 层:4 有显式 model 的 agent 改 frontmatter 双语 +(vision/reviewer 额外)opencode-config.ts;
268
+ * 5 无显式 model 的 agent 抛错提示用 global/project。
269
+ * global 层:加锁 + 原子写;project 层:仅原子写。
270
+ */
271
+ export function setAgentModel(scope, agentIdRaw, model, opts) {
272
+ const agentId = normalizeAgentId(agentIdRaw);
273
+ const changedFiles = [];
274
+ const validation = validateModel(model);
275
+ if (!validation.ok) {
276
+ throw new Error(`${validation.error}${validation.providers ? `;可用 provider:${validation.providers.join(', ')}` : ''}`);
277
+ }
278
+ if (scope === 'default') {
279
+ const sources = defaultScopeSources(agentId, opts);
280
+ if (!sources.frontmatter && !sources.opencodeConfig) {
281
+ throw new Error(`agent "${agentId}" 无框架默认 model,请改用 --scope global(本机全局)或 --scope project(当前项目)`);
282
+ }
283
+ if (sources.frontmatter) {
284
+ changedFiles.push(writeFrontmatterModel(agentId, 'zh-CN', model, opts));
285
+ changedFiles.push(writeFrontmatterModel(agentId, 'en', model, opts));
286
+ }
287
+ if (sources.opencodeConfig) {
288
+ changedFiles.push(writeOpencodeConfigAgentModel(agentId, model, opts));
289
+ }
290
+ return { ok: true, scope, agentId, model, changedFiles, needsBuild: true, warning: validation.warning };
291
+ }
292
+ if (scope === 'global') {
293
+ const p = getGlobalOpencodeJsoncPath();
294
+ withFileLock(globalLockPath('global-opencode-jsonc'), () => writeJsoncAgentModel(p, agentId, model));
295
+ // REV-1803:与 update.ts 写盘后逻辑一致,同步全局 update_state 的 hash,
296
+ // 避免后续 update 将本次 model 变更误判为用户外部修改
297
+ const globalState = loadGlobalUpdateState() ?? createGlobalUpdateState({});
298
+ updateFileHash(globalState, p, readFileSync(p, 'utf-8'));
299
+ globalState.last_update = new Date().toISOString();
300
+ saveGlobalUpdateState(globalState);
301
+ changedFiles.push(p);
302
+ return { ok: true, scope, agentId, model, changedFiles, warning: validation.warning };
303
+ }
304
+ // project
305
+ const projectPath = resolve(opts?.projectPath ?? process.cwd());
306
+ const p = join(projectPath, 'opencode.jsonc');
307
+ writeJsoncAgentModel(p, agentId, model);
308
+ changedFiles.push(p);
309
+ return { ok: true, scope, agentId, model, changedFiles, warning: validation.warning };
310
+ }
311
+ /**
312
+ * 读 agent model。始终返回完整 byScope(三 scope 显式值)。
313
+ * scope 指定时 effective=该 scope 值;未指定时 effective=default > project > global 首个非空(修正链)。
314
+ */
315
+ export function getAgentModel(agentIdRaw, scope, opts) {
316
+ const agentId = normalizeAgentId(agentIdRaw);
317
+ const projectPath = resolve(opts?.projectPath ?? process.cwd());
318
+ const project = readJsoncAgentModel(join(projectPath, 'opencode.jsonc'), agentId);
319
+ const global = readJsoncAgentModel(getGlobalOpencodeJsoncPath(), agentId);
320
+ const def = getDefaultScopeValue(agentId, opts);
321
+ const byScope = {
322
+ project,
323
+ global,
324
+ default: def.value,
325
+ };
326
+ // 修正链(REV-1606):agent markdown frontmatter(default 层)> 项目 jsonc > 全局 jsonc
327
+ const effective = scope
328
+ ? (byScope[scope] ?? undefined)
329
+ : (def.value ?? project ?? global ?? undefined);
330
+ return { agentId, effective, byScope, inconsistent: def.inconsistent };
331
+ }
332
+ /** 列出所有 9 个 agent 的模型(REV-1507:始终返回完整 byScope,scope 仅透传给 get) */
333
+ export function listAgentModels(scope, opts) {
334
+ return listAgentIds('zh-CN').map((id) => getAgentModel(id, scope, opts));
335
+ }
336
+ //# sourceMappingURL=model-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/core/model-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** 框架级全局 opencode.jsonc 内容对象(N7;instructions 用绝对路径,见 op-000 结论) */
2
+ export declare function buildGlobalOpencodeFrameworkObj(): Record<string, unknown>;
3
+ /** 项目 opencode.jsonc 最小覆盖内容(N7:仅 $schema,不写 instructions/skills/default_agent) */
4
+ export declare function buildProjectOpencodeJsoncObj(): Record<string, unknown>;
5
+ /**
6
+ * 解析 JSONC 文本为对象(去 // 行注释后 JSON.parse)。
7
+ * 迁移自 update.ts 的 parseJsonc(op-003 删本地副本改 import 本函数)。
8
+ */
9
+ export declare function parseJsonc(text: string): Record<string, unknown>;
10
+ /**
11
+ * 深度合并两个 opencode 配置对象(overlay=框架 覆盖 base=用户)。
12
+ * 逐字段规则见 op-001 关键设计决策表;用户未知字段 passthrough 保留。
13
+ */
14
+ export declare function deepMergeJsonc(base: Record<string, unknown>, overlay: Record<string, unknown>): Record<string, unknown>;
15
+ /** 合并全局 opencode.jsonc:解析→深度合并→序列化(保留用户字段,注释不保留) */
16
+ export declare function mergeGlobalOpencodeJsonc(raw: string): string;
17
+ //# sourceMappingURL=opencode-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-config.d.ts","sourceRoot":"","sources":["../../src/core/opencode-config.ts"],"names":[],"mappings":"AAYA,mEAAmE;AACnE,wBAAgB,+BAA+B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzE;AAED,kFAAkF;AAClF,wBAAgB,4BAA4B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBhE;AAoBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAED,oDAAoD;AACpD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI5D"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * 全局 opencode 配置内容与合并逻辑
3
+ * 提供框架级全局 opencode.jsonc 的内容对象、项目最小覆盖内容,
4
+ * 以及 JSONC 解析 / 深度合并 / 序列化,供 init(首次写入)与 update(深度合并)共用。
5
+ */
6
+ import { getGlobalCoreMdPath } from './global-paths.js';
7
+ /** 判断是否为纯对象(排除数组/null) */
8
+ function isPlainObject(v) {
9
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
10
+ }
11
+ /** 框架级全局 opencode.jsonc 内容对象(N7;instructions 用绝对路径,见 op-000 结论) */
12
+ export function buildGlobalOpencodeFrameworkObj() {
13
+ return {
14
+ $schema: 'https://opencode.ai/config.json',
15
+ default_agent: 'feel',
16
+ instructions: [getGlobalCoreMdPath()],
17
+ agent: {
18
+ 'openfeel-vision': { model: 'deepseek/deepseek-flash' },
19
+ 'openfeel-reviewer': { model: 'zhipuai/glm-5.2' },
20
+ },
21
+ // N3:experimental.agent_manager_tool 已被移除(op-000 实测 schema 未定义 + 静默丢弃),故不写
22
+ };
23
+ }
24
+ /** 项目 opencode.jsonc 最小覆盖内容(N7:仅 $schema,不写 instructions/skills/default_agent) */
25
+ export function buildProjectOpencodeJsoncObj() {
26
+ return { $schema: 'https://opencode.ai/config.json' };
27
+ }
28
+ /**
29
+ * 解析 JSONC 文本为对象(去 // 行注释后 JSON.parse)。
30
+ * 迁移自 update.ts 的 parseJsonc(op-003 删本地副本改 import 本函数)。
31
+ */
32
+ export function parseJsonc(text) {
33
+ const normalized = text.replace(/\r/g, '');
34
+ let result = '';
35
+ let inString = false;
36
+ let inEscape = false;
37
+ let i = 0;
38
+ while (i < normalized.length) {
39
+ const ch = normalized[i];
40
+ const next = normalized[i + 1];
41
+ if (inEscape) {
42
+ result += ch;
43
+ inEscape = false;
44
+ i++;
45
+ continue;
46
+ }
47
+ if (ch === '\\' && inString) {
48
+ result += ch;
49
+ inEscape = true;
50
+ i++;
51
+ continue;
52
+ }
53
+ if (ch === '"') {
54
+ inString = !inString;
55
+ result += ch;
56
+ i++;
57
+ continue;
58
+ }
59
+ if (!inString && ch === '/' && next === '/') {
60
+ i += 2;
61
+ while (i < normalized.length && normalized[i] !== '\n') {
62
+ i++;
63
+ }
64
+ if (i < normalized.length && normalized[i] === '\n') {
65
+ result += '\n';
66
+ i++;
67
+ }
68
+ continue;
69
+ }
70
+ result += ch;
71
+ i++;
72
+ }
73
+ return JSON.parse(result);
74
+ }
75
+ /**
76
+ * 框架 agent 默认值合并(REV-703 修订:粒度为 agent 级)。
77
+ * 仅在用户完全未定义该 agent key 时补入整条 { model };用户定义了该 agent key
78
+ * 即视为完整自定义,框架不补、不覆盖其内部任何字段(如 model)。
79
+ * 与 stage-40 接口兼容:只增补缺失 agent,不重写既有 agent 内字段。
80
+ */
81
+ function mergeAgentDefaults(baseVal, overlayVal) {
82
+ const base = isPlainObject(baseVal) ? baseVal : {};
83
+ const result = { ...base };
84
+ for (const [name, agentOverlay] of Object.entries(overlayVal)) {
85
+ if (!(name in result)) {
86
+ result[name] = agentOverlay;
87
+ }
88
+ }
89
+ return result;
90
+ }
91
+ /**
92
+ * 深度合并两个 opencode 配置对象(overlay=框架 覆盖 base=用户)。
93
+ * 逐字段规则见 op-001 关键设计决策表;用户未知字段 passthrough 保留。
94
+ */
95
+ export function deepMergeJsonc(base, overlay) {
96
+ const result = { ...base };
97
+ for (const [key, overlayVal] of Object.entries(overlay)) {
98
+ if (key === 'instructions' && Array.isArray(overlayVal)) {
99
+ const baseVal = Array.isArray(base[key]) ? base[key] : [];
100
+ result[key] = Array.from(new Set([...overlayVal, ...baseVal]));
101
+ }
102
+ else if (key === 'agent' && isPlainObject(overlayVal)) {
103
+ result[key] = mergeAgentDefaults(base[key], overlayVal);
104
+ }
105
+ else if (key === 'skills') {
106
+ // 框架不写 skills(N6),保留用户已有(result.skills 不动)
107
+ }
108
+ else if (isPlainObject(overlayVal) && isPlainObject(base[key])) {
109
+ result[key] = deepMergeJsonc(base[key], overlayVal);
110
+ }
111
+ else {
112
+ result[key] = overlayVal;
113
+ }
114
+ }
115
+ return result;
116
+ }
117
+ /** 合并全局 opencode.jsonc:解析→深度合并→序列化(保留用户字段,注释不保留) */
118
+ export function mergeGlobalOpencodeJsonc(raw) {
119
+ const base = parseJsonc(raw);
120
+ const merged = deepMergeJsonc(base, buildGlobalOpencodeFrameworkObj());
121
+ return JSON.stringify(merged, null, 2) + '\n';
122
+ }
123
+ //# sourceMappingURL=opencode-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-config.js","sourceRoot":"","sources":["../../src/core/opencode-config.ts"],"names":[],"mappings":"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"}