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
package/dist/core/init.js CHANGED
@@ -3,14 +3,14 @@
3
3
  * 协调创建工作区、写入配置、初始化 flow.json、确保身份文件、
4
4
  * 生成 dev_core.md/current.md 模板。
5
5
  *
6
- * 注意:`.opencode/instructions/core.md` 由 update 命令创建(适配器层,
7
- * 非核心层),不在 init 阶段生成。
6
+ * 注意:框架约束 core.md 由 update 命令部署到全局
7
+ * `~/.config/opencode/openfeel/core.md`(适配器层,非核心层),不在 init 阶段生成。
8
8
  *
9
9
  * 变更摘要:
10
10
  * - stage-04: 新增 initDemo() 支持 --demo 标志
11
- * - stage-04 第二轮:移除了 .opencode/instructions/core.md 创建(移至 update.ts)
11
+ * - stage-37: deployOpencode 部署目标改为全局 ~/.config/opencode/,项目精简为 .openfeel/ + AGENTS.md + opencode.jsonc
12
12
  */
13
- import { writeFileSync, readFileSync, existsSync, mkdirSync } from 'node:fs';
13
+ import { readFileSync, existsSync, mkdirSync } from 'node:fs';
14
14
  import { resolve, dirname, join, basename } from 'node:path';
15
15
  import { createWorkspace } from './workspace/structure.js';
16
16
  import { ensureInfoJson, isFirstUse, getGlobalConfig, setGlobalConfig, DEFAULT_GLOBAL_CONFIG } from './workspace/identity.js';
@@ -19,6 +19,11 @@ import { FlowManager } from './flow-manager.js';
19
19
  import { getDevCoreTemplate, getCurrentTemplate, getDecisionsTemplate } from './templates.js';
20
20
  import { loadTemplate, loadOpencodeAgentTemplate, loadOpencodeSkillTemplate, loadOpencodeConfigTemplate, listOpencodeAgentIds, listOpencodeSkillNames } from './template-loader.js';
21
21
  import { t, getCliLang } from './i18n.js';
22
+ import { DEFAULT_STAGE_VERSION } from './plan/path.js';
23
+ import { atomicWriteFileSync } from './fs/atomic-write.js';
24
+ import { withFileLock, globalLockPath } from './fs/file-lock.js';
25
+ import { getGlobalAgentsDir, getGlobalSkillsDir, getGlobalCoreMdPath, getGlobalOpencodeJsoncPath } from './global-paths.js';
26
+ import { mergeGlobalOpencodeJsonc, buildProjectOpencodeJsoncObj } from './opencode-config.js';
22
27
  import readline from 'node:readline';
23
28
  /**
24
29
  * 提示用户选择语言
@@ -84,7 +89,7 @@ function writeLang(projectPath, lang) {
84
89
  const content = readFileSync(infoPath, 'utf-8');
85
90
  const info = JSON.parse(content);
86
91
  info.lang = lang;
87
- writeFileSync(infoPath, JSON.stringify(info, null, 2) + '\n', 'utf-8');
92
+ atomicWriteFileSync(infoPath, JSON.stringify(info, null, 2) + '\n');
88
93
  }
89
94
  catch {
90
95
  // 文件不存在或解析失败,忽略
@@ -146,13 +151,26 @@ function writeTemplateIfMissing(filePath, content) {
146
151
  if (!existsSync(parentDir)) {
147
152
  mkdirSync(parentDir, { recursive: true });
148
153
  }
149
- writeFileSync(filePath, content, 'utf-8');
154
+ atomicWriteFileSync(filePath, content);
150
155
  return { created: true };
151
156
  }
152
157
  /**
153
- * 部署 OpenCode 平台适配器到目标项目
154
- * 所有写入遵循"已存在不覆盖"原则
155
- * ⚠️ 不部署 package.json(REV-001)
158
+ * 全局文件写入:全局文件锁 + 原子写 + 已存在不覆盖
159
+ * 与 writeTemplateIfMissing 同语义,但针对跨项目共享的全局路径(~/.config/opencode/)。
160
+ */
161
+ function writeGlobalFileIfMissing(filePath, content) {
162
+ return withFileLock(globalLockPath('opencode-deploy'), () => {
163
+ if (existsSync(filePath)) {
164
+ return { created: false };
165
+ }
166
+ atomicWriteFileSync(filePath, content);
167
+ return { created: true };
168
+ });
169
+ }
170
+ /**
171
+ * 部署 OpenCode 平台适配器到全局 ~/.config/opencode/(D1 全局化)
172
+ * 全局文件遵循"已存在不覆盖";项目仅写最小 opencode.jsonc 覆盖。
173
+ * ⚠️ 不部署 package.json(REV-001);不部署 ADAPTER/.gitignore(已随 .opencode/ 废弃)。
156
174
  * 导出供测试直接调用(不依赖交互流程)
157
175
  */
158
176
  export function deployOpencode(projectPath, lang) {
@@ -164,33 +182,29 @@ export function deployOpencode(projectPath, lang) {
164
182
  else
165
183
  skipped++;
166
184
  };
167
- // 1. 部署 Agent 定义(9 个)
185
+ // 1. Agent 定义(9 个)→ 全局 agents 目录
168
186
  const agentIds = listOpencodeAgentIds(lang);
169
187
  for (const agentId of agentIds) {
170
- const content = loadOpencodeAgentTemplate(lang, agentId);
171
- const filePath = resolve(projectPath, '.opencode', 'agents', `${agentId}.md`);
172
- track(writeTemplateIfMissing(filePath, content));
188
+ track(writeGlobalFileIfMissing(join(getGlobalAgentsDir(), `${agentId}.md`), loadOpencodeAgentTemplate(lang, agentId)));
173
189
  }
174
- // 2. 部署 Skill 定义(14 个)
190
+ // 2. Skill 定义(14 个)→ 全局 skills 目录
175
191
  const skillNames = listOpencodeSkillNames();
176
192
  for (const skillName of skillNames) {
177
- const content = loadOpencodeSkillTemplate(skillName);
178
- const skillDir = resolve(projectPath, '.opencode', 'skills', skillName);
179
- const filePath = join(skillDir, 'SKILL.md');
180
- track(writeTemplateIfMissing(filePath, content));
181
- }
182
- // 3. 部署 instructions/core.md
183
- track(writeTemplateIfMissing(resolve(projectPath, '.opencode', 'instructions', 'core.md'), loadOpencodeConfigTemplate(lang, 'instructions')));
184
- // 4. 部署 opencode.jsonc(替换 {项目名称})
185
- const configContent = loadOpencodeConfigTemplate(lang, 'opencode_jsonc')
186
- .replace(/\{项目名称\}/g, basename(projectPath));
187
- track(writeTemplateIfMissing(resolve(projectPath, 'opencode.jsonc'), configContent));
188
- // 5. 部署 ADAPTER.{lang}.md(文件名保留语言后缀)
189
- const adapterSuffix = lang === 'en' ? 'en' : 'zh-CN';
190
- track(writeTemplateIfMissing(resolve(projectPath, '.opencode', `ADAPTER.${adapterSuffix}.md`), loadOpencodeConfigTemplate(lang, 'adapter')));
191
- // 6. 部署 .gitignore
192
- track(writeTemplateIfMissing(resolve(projectPath, '.opencode', '.gitignore'), loadOpencodeConfigTemplate(lang, 'gitignore')));
193
- // ⚠️ 不部署 package.json(REV-001)
193
+ track(writeGlobalFileIfMissing(join(getGlobalSkillsDir(), skillName, 'SKILL.md'), loadOpencodeSkillTemplate(skillName)));
194
+ }
195
+ // 3. 框架约束 core.md → 全局 ~/.config/opencode/openfeel/core.md
196
+ track(writeGlobalFileIfMissing(getGlobalCoreMdPath(), loadOpencodeConfigTemplate(lang, 'instructions')));
197
+ // 4. 全局 opencode.jsonc:不存在则写框架级内容(REV-605:已存在则跳过,合并归 op-003)
198
+ track(writeGlobalFileIfMissing(getGlobalOpencodeJsoncPath(), mergeGlobalOpencodeJsonc('{}\n')));
199
+ // 5. 项目 opencode.jsonc:最小覆盖(仅 $schema),写入项目根(项目内原子写)
200
+ const projectJsoncPath = resolve(projectPath, 'opencode.jsonc');
201
+ if (existsSync(projectJsoncPath)) {
202
+ track({ created: false });
203
+ }
204
+ else {
205
+ atomicWriteFileSync(projectJsoncPath, JSON.stringify(buildProjectOpencodeJsoncObj(), null, 2) + '\n');
206
+ track({ created: true });
207
+ }
194
208
  return { created, skipped };
195
209
  }
196
210
  /**
@@ -203,7 +217,7 @@ export async function initProject(projectPath, cliLang) {
203
217
  const updated = [];
204
218
  // 0. 确保全局配置存在(首次使用时交互选择语言)
205
219
  await ensureGlobalConfig();
206
- // 1. 创建 .openfeel/ 目录结构(含 plan/, stages/, roadmap/, dev/note/, 等)
220
+ // 1. 创建 .openfeel/ 目录结构(含 plan/, roadmap/, dev/note/, 等)
207
221
  const dirs = createWorkspace(projectPath);
208
222
  created.push(...dirs);
209
223
  // 1a. 语言选择:CLI --lang 参数 > 交互式选择 > 全局默认语言
@@ -314,7 +328,7 @@ export async function initProject(projectPath, cliLang) {
314
328
  const majorMatch = vitestVersion.match(/^(?:[\^~]?)(\d+)/);
315
329
  const majorVersion = majorMatch ? majorMatch[1] : '3';
316
330
  pkg.devDependencies['@vitest/coverage-v8'] = `^${majorVersion}.0.0`;
317
- writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
331
+ atomicWriteFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
318
332
  updated.push('package.json');
319
333
  }
320
334
  }
@@ -322,8 +336,8 @@ export async function initProject(projectPath, cliLang) {
322
336
  // 10. 重启提醒(仅在 opencode 首次部署时,且为交互模式)
323
337
  if (opencodeResult && opencodeResult.created > 0 && process.stdout.isTTY) {
324
338
  console.log(selectedLang === 'en'
325
- ? 'opencode configuration deployed. Please restart opencode to load the new configuration.'
326
- : 'opencode 配置已部署,请重启 opencode 以加载新配置。');
339
+ ? 'opencode global configuration deployed. Please restart opencode to load the new global agents/skills/constraints.'
340
+ : 'opencode 全局配置已部署,请重启 opencode 以加载新的全局 agent/skill/约束。');
327
341
  }
328
342
  return { created, updated, opencode: opencodeResult };
329
343
  }
@@ -344,7 +358,7 @@ export function initDemo(projectPath, lang = 'zh-CN') {
344
358
  if (!existsSync(parentDir)) {
345
359
  mkdirSync(parentDir, { recursive: true });
346
360
  }
347
- writeFileSync(fullPath, content, 'utf-8');
361
+ atomicWriteFileSync(fullPath, content);
348
362
  created.push(relPath);
349
363
  };
350
364
  // src/index.ts — 简单入口
@@ -359,21 +373,23 @@ export function initDemo(projectPath, lang = 'zh-CN') {
359
373
  ensureFile('vitest.config.ts', `import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n test: {\n include: ['test/**/*.test.ts'],\n },\n});\n`);
360
374
  // test/index.test.ts — 示例测试
361
375
  ensureFile('test/index.test.ts', `import { describe, it, expect } from 'vitest';\n\nfunction sum(a: number, b: number): number {\n return a + b;\n}\n\ndescribe('sum', () => {\n it('应正确计算两个正数之和', () => {\n expect(sum(1, 2)).toBe(3);\n });\n\n it('应正确计算负数', () => {\n expect(sum(-1, -2)).toBe(-3);\n });\n\n it('应处理零', () => {\n expect(sum(0, 5)).toBe(5);\n });\n});\n`);
362
- // .openfeel/plan/stage-01/status.md — 示例阶段(双语)
376
+ // .openfeel/plan/v1/stage-01/status.md — 示例阶段(双语)
377
+ // 示例阶段版本前缀抽为常量(path.ts DEFAULT_STAGE_VERSION),短名规范化与 init 保持一致
378
+ const demoStageId = `${DEFAULT_STAGE_VERSION}-stage-01`; // v1.0.0-stage-01
363
379
  const statusMdContent = lang === 'en'
364
- ? `# stage-01 Status\n\n- **Status**: planned\n- **Current Agent**: executor\n- **Previous Agent**: none\n- **Updated**: ${new Date().toISOString().substring(0, 16).replace('T', ' ')}\n\n## Current Task\n\nInitialize project skeleton, create basic file structure.\n\n## Status Log\n\n| Time | Agent | Status Change | Description |\n|------|-------|---------------|-------------|\n| - | - | - | Sample stage |\n`
365
- : `# stage-01 状态\n\n- **状态**:planned\n- **当前责任 Agent**:executor\n- **上一责任 Agent**:none\n- **更新时间**:${new Date().toISOString().substring(0, 16).replace('T', ' ')}\n\n## 当前任务\n\n初始化项目骨架,创建基础文件结构。\n\n## 状态记录\n\n| 时间 | Agent | 状态变化 | 说明 |\n|------|-------|----------|------|\n| - | - | - | 示例阶段 |\n`;
366
- ensureFile('.openfeel/plan/stage-01/status.md', statusMdContent);
380
+ ? `# ${demoStageId} Status\n\n- **Status**: planned\n- **Current Agent**: openfeel-executor\n- **Previous Agent**: none\n- **Updated**: ${new Date().toISOString().substring(0, 16).replace('T', ' ')}\n\n## Current Task\n\nInitialize project skeleton, create basic file structure.\n\n## Status Log\n\n| Time | Agent | Status Change | Description |\n|------|-------|---------------|-------------|\n| - | - | - | Sample stage |\n`
381
+ : `# ${demoStageId} 状态\n\n- **状态**:planned\n- **当前责任 Agent**:openfeel-executor\n- **上一责任 Agent**:none\n- **更新时间**:${new Date().toISOString().substring(0, 16).replace('T', ' ')}\n\n## 当前任务\n\n初始化项目骨架,创建基础文件结构。\n\n## 状态记录\n\n| 时间 | Agent | 状态变化 | 说明 |\n|------|-------|----------|------|\n| - | - | - | 示例阶段 |\n`;
382
+ ensureFile('.openfeel/plan/v1/stage-01/status.md', statusMdContent);
367
383
  // 确保 config.yaml 存在(含 models 节,根据语言)
368
384
  const configPath = join(projectPath, '.openfeel', 'config.yaml');
369
385
  if (!existsSync(configPath)) {
370
386
  writeDefaultConfig(projectPath, lang);
371
387
  created.push('.openfeel/config.yaml');
372
388
  }
373
- // 在 flow.json 中注册 stage-01
389
+ // 在 flow.json 中注册 v1.0.0-stage-01
374
390
  const flowMgr = new FlowManager(projectPath);
375
391
  if (flowMgr.isLoaded()) {
376
- flowMgr.registerStage('stage-01', []);
392
+ flowMgr.registerStage(demoStageId, []);
377
393
  flowMgr.save();
378
394
  }
379
395
  return { created, skipped };
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /** 受管文件类型(jsonc 仅作分派标记,合并逻辑在 opencode-config) */
2
+ export type ManagedFileType = 'markdown' | 'gitignore' | 'jsonc';
3
+ /** 控制区解析状态 */
4
+ export interface RegionParse {
5
+ /** ok=恰好 1 对完整标记;none=无标记;malformed=begin/end 数量不等或 >1 对 */
6
+ status: 'ok' | 'none' | 'malformed';
7
+ /** 区内内容(status=ok 时;trim 后正文) */
8
+ regionContent?: string;
9
+ }
10
+ /** 检测文件类型(.gitignore→gitignore;.jsonc→jsonc;其余→markdown;无法识别→null) */
11
+ export declare function detectFileType(filePath: string): ManagedFileType | null;
12
+ /** 行尾归一化(CRLF / CR → LF,见 kb 行尾归一化模式);导出供 update.ts skip 判定归一化比对(REV-1006) */
13
+ export declare function normalize(content: string): string;
14
+ /**
15
+ * 解析控制区:精确整行匹配 begin/end,计数判定 ok/none/malformed。
16
+ * CRLF 归一化后匹配;>1 对或数量不等 → malformed(REV-908)。
17
+ */
18
+ export declare function parseRegion(existing: string, type: 'markdown' | 'gitignore'): RegionParse;
19
+ /** 是否含完整成对标记(等价 parseRegion().status === 'ok') */
20
+ export declare function hasRegion(existing: string, type: 'markdown' | 'gitignore'): boolean;
21
+ /** 提取区内内容(trim 后正文);无标记或异常 → null */
22
+ export declare function extractRegion(existing: string, type: 'markdown' | 'gitignore'): string | null;
23
+ /**
24
+ * 包裹内容为受管区(正文 trim 后包裹,输出末尾单换行)。
25
+ * 产出格式:`{begin}\n{content}\n{end}\n`
26
+ */
27
+ export declare function wrapRegion(content: string, type: 'markdown' | 'gitignore'): string;
28
+ /**
29
+ * 替换区内内容(保留区外,含标记行本身);异常状态抛错由调用方决定降级。
30
+ * 输出:begin 行之前的区外前缀 + 新包裹正文 + end 行之后的区外后缀。
31
+ *
32
+ * 区外逐字符保留(含原文件末尾换行),使 `replaceRegion(x, extractRegion(x))` 与
33
+ * 归一化后的 x 完全一致,支撑 op-002 的 skip 判定(REV-901)。
34
+ */
35
+ export declare function replaceRegion(existing: string, incoming: string, type: 'markdown' | 'gitignore'): string;
36
+ /** frontmatter 与正文分割结果 */
37
+ export interface FrontmatterSplit {
38
+ frontmatter: Record<string, unknown>;
39
+ body: string;
40
+ }
41
+ /**
42
+ * 分割 YAML frontmatter 与正文。
43
+ * 仅当文件以 `---\n` 开头且存在闭合 `---\n` 时返回解析结果;否则返回 null。
44
+ * 解析失败(YAML 语法错误)→ 返回 null(调用方按「无 frontmatter」处理,降级不中断)。
45
+ */
46
+ export declare function splitFrontmatter(content: string): FrontmatterSplit | null;
47
+ /**
48
+ * 合并 frontmatter(REV-904:字段级白名单,浅合并)。
49
+ * incoming(框架模板字段)覆盖同名 existing 字段;existing 独有字段 passthrough 保留。
50
+ */
51
+ export declare function mergeFrontmatter(existing: Record<string, unknown>, incoming: Record<string, unknown>): Record<string, unknown>;
52
+ /** 序列化 frontmatter 为 `---\n{...}\n---\n`(yaml.stringify 输出,显式保证末尾换行) */
53
+ export declare function serializeFrontmatter(frontmatter: Record<string, unknown>): string;
54
+ //# sourceMappingURL=managed-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-region.d.ts","sourceRoot":"","sources":["../../src/core/managed-region.ts"],"names":[],"mappings":"AAiBA,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAQjE,cAAc;AACd,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;IACpC,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMvE;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAOD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CA2BzF;AAED,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAEnF;AAED,qCAAqC;AACrC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,IAAI,CAG7F;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAGlF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CA+BxG;AAED,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAqBzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKjF"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * 控制区标记工具
3
+ * 按文件类型提供受管区(managed region)的识别 / 包裹 / 替换原语,
4
+ * 供 openfeel update 三态部署使用:控制区标记包裹受管内容,更新只覆盖区内,
5
+ * 区外用户内容天然保留(D3 落地)。
6
+ *
7
+ * 四策略:
8
+ * - markdown:<!-- openfeel:begin --> … <!-- openfeel:end -->
9
+ * - gitignore:# openfeel:begin … # openfeel:end
10
+ * - frontmatter:无标记,结构化字段合并(框架字段覆盖 + 用户字段 passthrough)
11
+ * - jsonc:无标记,深度合并(复用 opencode-config.ts,本模块仅分派)
12
+ *
13
+ * 与 openfeel:generated(单行整文件声明,构建产物)不冲突、不统一(N6):
14
+ * generated 是单行信号,begin/end 是成对区间,两者 token 与形态均不同。
15
+ */
16
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
17
+ /** 标记 token(按类型) */
18
+ const MARKERS = {
19
+ markdown: { begin: '<!-- openfeel:begin -->', end: '<!-- openfeel:end -->' },
20
+ gitignore: { begin: '# openfeel:begin', end: '# openfeel:end' },
21
+ };
22
+ /** 检测文件类型(.gitignore→gitignore;.jsonc→jsonc;其余→markdown;无法识别→null) */
23
+ export function detectFileType(filePath) {
24
+ const base = filePath.split(/[\\/]/).pop() ?? '';
25
+ if (base === '.gitignore')
26
+ return 'gitignore';
27
+ if (base.endsWith('.jsonc'))
28
+ return 'jsonc';
29
+ if (base.endsWith('.md'))
30
+ return 'markdown';
31
+ return null;
32
+ }
33
+ /** 行尾归一化(CRLF / CR → LF,见 kb 行尾归一化模式);导出供 update.ts skip 判定归一化比对(REV-1006) */
34
+ export function normalize(content) {
35
+ return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
36
+ }
37
+ /** 取某类型的 begin/end 标记 token */
38
+ function markers(type) {
39
+ return MARKERS[type];
40
+ }
41
+ /**
42
+ * 解析控制区:精确整行匹配 begin/end,计数判定 ok/none/malformed。
43
+ * CRLF 归一化后匹配;>1 对或数量不等 → malformed(REV-908)。
44
+ */
45
+ export function parseRegion(existing, type) {
46
+ const { begin, end } = markers(type);
47
+ const lines = normalize(existing).split('\n');
48
+ let beginIndex = -1;
49
+ let endIndex = -1;
50
+ let beginCount = 0;
51
+ let endCount = 0;
52
+ for (let i = 0; i < lines.length; i++) {
53
+ const trimmed = lines[i].trim();
54
+ if (trimmed === begin) {
55
+ if (beginIndex === -1) {
56
+ beginIndex = i;
57
+ }
58
+ beginCount++;
59
+ }
60
+ if (trimmed === end) {
61
+ endIndex = i;
62
+ endCount++;
63
+ }
64
+ }
65
+ if (beginCount === 0 && endCount === 0) {
66
+ return { status: 'none' };
67
+ }
68
+ if (beginCount === 1 && endCount === 1 && beginIndex < endIndex) {
69
+ return { status: 'ok', regionContent: lines.slice(beginIndex + 1, endIndex).join('\n').trim() };
70
+ }
71
+ return { status: 'malformed' };
72
+ }
73
+ /** 是否含完整成对标记(等价 parseRegion().status === 'ok') */
74
+ export function hasRegion(existing, type) {
75
+ return parseRegion(existing, type).status === 'ok';
76
+ }
77
+ /** 提取区内内容(trim 后正文);无标记或异常 → null */
78
+ export function extractRegion(existing, type) {
79
+ const r = parseRegion(existing, type);
80
+ return r.status === 'ok' ? (r.regionContent ?? '') : null;
81
+ }
82
+ /**
83
+ * 包裹内容为受管区(正文 trim 后包裹,输出末尾单换行)。
84
+ * 产出格式:`{begin}\n{content}\n{end}\n`
85
+ */
86
+ export function wrapRegion(content, type) {
87
+ const { begin, end } = markers(type);
88
+ return `${begin}\n${content.trim()}\n${end}\n`;
89
+ }
90
+ /**
91
+ * 替换区内内容(保留区外,含标记行本身);异常状态抛错由调用方决定降级。
92
+ * 输出:begin 行之前的区外前缀 + 新包裹正文 + end 行之后的区外后缀。
93
+ *
94
+ * 区外逐字符保留(含原文件末尾换行),使 `replaceRegion(x, extractRegion(x))` 与
95
+ * 归一化后的 x 完全一致,支撑 op-002 的 skip 判定(REV-901)。
96
+ */
97
+ export function replaceRegion(existing, incoming, type) {
98
+ // 防误用:先 parseRegion 判态,非 ok(none / malformed)直接抛错,避免调用方误删用户内容(REV-1007 修订)
99
+ if (parseRegion(existing, type).status !== 'ok') {
100
+ throw new Error('managed-region: replaceRegion 要求恰好一对完整标记(parseRegion status=ok)');
101
+ }
102
+ const { begin, end } = markers(type);
103
+ const lines = normalize(existing).split('\n');
104
+ let beginIndex = -1;
105
+ let endIndex = -1;
106
+ for (let i = 0; i < lines.length; i++) {
107
+ const t = lines[i].trim();
108
+ if (t === begin && beginIndex === -1) {
109
+ beginIndex = i;
110
+ }
111
+ if (t === end) {
112
+ endIndex = i;
113
+ }
114
+ }
115
+ // parseRegion 已保证 begin/end 存在且 begin 在前;此处为防御性兜底
116
+ if (beginIndex === -1 || endIndex === -1 || beginIndex >= endIndex) {
117
+ throw new Error('managed-region: replaceRegion 要求恰好一对完整标记');
118
+ }
119
+ // 前缀:begin 行之前的整行(原样保留),join 后补回被 split 去掉的行尾换行
120
+ const prefixLines = lines.slice(0, beginIndex);
121
+ const prefix = prefixLines.length > 0 ? prefixLines.join('\n') + '\n' : '';
122
+ // 后缀:end 行之后的整行(原样保留,含原文件末尾换行,若有)
123
+ const suffixLines = lines.slice(endIndex + 1);
124
+ const suffix = suffixLines.join('\n');
125
+ const wrapped = `${begin}\n${incoming.trim()}\n${end}`;
126
+ // end 后存在后续行(含仅末尾空行)才补换行分隔;文件以 end 结尾且无尾换行时不追加,保证与 normalize 一致(REV-1102)
127
+ return suffixLines.length > 0 ? prefix + wrapped + '\n' + suffix : prefix + wrapped;
128
+ }
129
+ /**
130
+ * 分割 YAML frontmatter 与正文。
131
+ * 仅当文件以 `---\n` 开头且存在闭合 `---\n` 时返回解析结果;否则返回 null。
132
+ * 解析失败(YAML 语法错误)→ 返回 null(调用方按「无 frontmatter」处理,降级不中断)。
133
+ */
134
+ export function splitFrontmatter(content) {
135
+ const text = normalize(content);
136
+ if (!text.startsWith('---\n')) {
137
+ return null;
138
+ }
139
+ const end = text.indexOf('\n---\n', 3); // 从 3 开始:空 frontmatter(`---\n---\n`)的闭合 `\n` 在 index 3(REV-1005 修订)
140
+ if (end === -1) {
141
+ return null;
142
+ }
143
+ const fmRaw = text.slice(4, end);
144
+ try {
145
+ // 空 frontmatter(`---\n---\n`):parseYaml('') 返回 null,需特判为空对象
146
+ const parsed = fmRaw.trim() === '' ? {} : parseYaml(fmRaw);
147
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
148
+ return null;
149
+ }
150
+ return { frontmatter: parsed, body: text.slice(end + 5) }; // end+5 跳过 '\n---\n'
151
+ }
152
+ catch {
153
+ // YAML 语法错误:视为无 frontmatter,降级不中断
154
+ return null;
155
+ }
156
+ }
157
+ /**
158
+ * 合并 frontmatter(REV-904:字段级白名单,浅合并)。
159
+ * incoming(框架模板字段)覆盖同名 existing 字段;existing 独有字段 passthrough 保留。
160
+ */
161
+ export function mergeFrontmatter(existing, incoming) {
162
+ return { ...existing, ...incoming };
163
+ }
164
+ /** 序列化 frontmatter 为 `---\n{...}\n---\n`(yaml.stringify 输出,显式保证末尾换行) */
165
+ export function serializeFrontmatter(frontmatter) {
166
+ // 显式保证 yaml 末尾换行,避免 stringify 无尾换行时与闭合 `---` 粘连(REV-1008 修订)
167
+ const yaml = stringifyYaml(frontmatter);
168
+ const body = yaml.endsWith('\n') ? yaml : yaml + '\n';
169
+ return `---\n${body}---\n`;
170
+ }
171
+ //# sourceMappingURL=managed-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-region.js","sourceRoot":"","sources":["../../src/core/managed-region.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,iBAAiB;AACjB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAoBD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAIP,yCAAyC;IACzC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;IASlD,iBAAiB;IACjB,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,OAAO,GAAE,MAAU,GAClB,IAAI;IAqBP;;;OAGG;IACH,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,EAAE,GAAG,SAAS;IAO9E;;;OAGG;IACH,OAAO,IAAI,MAAM;IA2BjB,0BAA0B;IAC1B,OAAO,KAAK,WAAW,GAEtB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI;IAoBZ;;;OAGG;IACH,IAAI,IAAI,IAAI;CAcb"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,iBAAiB;AACjB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAoBD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAIP,yCAAyC;IACzC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;IASlD,iBAAiB;IACjB,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,OAAO,GAAE,MAAU,GAClB,IAAI;IAqBP;;;OAGG;IACH,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,EAAE,GAAG,SAAS;IAO9E;;;OAGG;IACH,OAAO,IAAI,MAAM;IA2BjB,0BAA0B;IAC1B,OAAO,KAAK,WAAW,GAEtB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI;IAoBZ;;;OAGG;IACH,IAAI,IAAI,IAAI;CAeb"}
@@ -3,8 +3,10 @@
3
3
  * 记录每个 Agent 的执行时间、成功率、重试次数
4
4
  * 数据持久化到 .openfeel/metrics.json(与 flow.json 同级)
5
5
  */
6
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
6
+ import { readFileSync, existsSync, mkdirSync } from 'node:fs';
7
7
  import { resolve } from 'node:path';
8
+ import { atomicWriteFileSync } from './fs/atomic-write.js';
9
+ import { normalizeAgentName } from './flow-manager.js';
8
10
  /** 创建默认的 AgentMetrics 初始值 */
9
11
  function createDefaultMetrics(agentName) {
10
12
  return {
@@ -87,7 +89,7 @@ export class MetricsStore {
87
89
  const successRate = m.totalRuns > 0
88
90
  ? `${((m.successfulRuns / m.totalRuns) * 100).toFixed(1)}%`
89
91
  : 'N/A';
90
- lines.push(`\n${m.agentName}`, ` 总执行次数: ${m.totalRuns}`, ` 成功 / 失败: ${m.successfulRuns} / ${m.failedRuns}`, ` 成功率: ${successRate}`, ` 总重试次数: ${m.totalRetries}`, ` 总耗时: ${m.totalDurationMs}ms`, ` 平均耗时: ${m.avgDurationMs}ms`);
92
+ lines.push(`\n${normalizeAgentName(m.agentName)}`, ` 总执行次数: ${m.totalRuns}`, ` 成功 / 失败: ${m.successfulRuns} / ${m.failedRuns}`, ` 成功率: ${successRate}`, ` 总重试次数: ${m.totalRetries}`, ` 总耗时: ${m.totalDurationMs}ms`, ` 平均耗时: ${m.avgDurationMs}ms`);
91
93
  }
92
94
  return lines.join('\n');
93
95
  }
@@ -131,7 +133,8 @@ export class MetricsStore {
131
133
  agents[name] = { ...metrics };
132
134
  }
133
135
  const data = { agents };
134
- writeFileSync(this.metricsPath, JSON.stringify(data, null, 2), 'utf-8');
136
+ // 指标写入:仅原子写,不加锁(低并发、非一致性关键路径)
137
+ atomicWriteFileSync(this.metricsPath, JSON.stringify(data, null, 2) + '\n');
135
138
  }
136
139
  }
137
140
  //# sourceMappingURL=metrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"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"}