openfeel 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +41 -11
- package/README.md +8 -3
- package/README.zh-CN.md +42 -12
- package/bin/openfeel.js +5 -0
- package/dist/cli/index.d.ts +15 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +59 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output-encoding.d.ts +32 -0
- package/dist/cli/output-encoding.d.ts.map +1 -0
- package/dist/cli/output-encoding.js +120 -0
- package/dist/cli/output-encoding.js.map +1 -0
- package/dist/cli/repl.d.ts +2 -2
- package/dist/cli/repl.d.ts.map +1 -1
- package/dist/cli/repl.js +46 -25
- package/dist/cli/repl.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +56 -9
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/flow.d.ts.map +1 -1
- package/dist/commands/flow.js +827 -138
- package/dist/commands/flow.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +56 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge.d.ts.map +1 -1
- package/dist/commands/knowledge.js +69 -0
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +17 -5
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +6 -1
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +18 -1
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +185 -7
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/project.js +2 -2
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/roadmap.d.ts.map +1 -1
- package/dist/commands/roadmap.js +20 -5
- package/dist/commands/roadmap.js.map +1 -1
- package/dist/commands/setup.d.ts +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +8 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/shared/errors.d.ts +22 -0
- package/dist/commands/shared/errors.d.ts.map +1 -0
- package/dist/commands/shared/errors.js +45 -0
- package/dist/commands/shared/errors.js.map +1 -0
- package/dist/commands/stage.d.ts.map +1 -1
- package/dist/commands/stage.js +133 -23
- package/dist/commands/stage.js.map +1 -1
- package/dist/commands/view.d.ts +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +4 -26
- package/dist/commands/view.js.map +1 -1
- package/dist/core/archive/merge.d.ts.map +1 -1
- package/dist/core/archive/merge.js +9 -5
- package/dist/core/archive/merge.js.map +1 -1
- package/dist/core/artifact-graph/graph.d.ts +7 -2
- package/dist/core/artifact-graph/graph.d.ts.map +1 -1
- package/dist/core/artifact-graph/graph.js +25 -18
- package/dist/core/artifact-graph/graph.js.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +4 -33
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
- package/dist/core/backup.d.ts +28 -0
- package/dist/core/backup.d.ts.map +1 -0
- package/dist/core/backup.js +118 -0
- package/dist/core/backup.js.map +1 -0
- package/dist/core/config.d.ts +30 -19
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +86 -26
- package/dist/core/config.js.map +1 -1
- package/dist/core/flow-manager.d.ts +256 -5
- package/dist/core/flow-manager.d.ts.map +1 -1
- package/dist/core/flow-manager.js +908 -68
- package/dist/core/flow-manager.js.map +1 -1
- package/dist/core/fs/atomic-write.d.ts +3 -0
- package/dist/core/fs/atomic-write.d.ts.map +1 -1
- package/dist/core/fs/atomic-write.js +3 -0
- package/dist/core/fs/atomic-write.js.map +1 -1
- package/dist/core/fs/safe-read.d.ts +11 -0
- package/dist/core/fs/safe-read.d.ts.map +1 -0
- package/dist/core/fs/safe-read.js +31 -0
- package/dist/core/fs/safe-read.js.map +1 -0
- package/dist/core/global-paths.d.ts +16 -7
- package/dist/core/global-paths.d.ts.map +1 -1
- package/dist/core/global-paths.js +23 -8
- package/dist/core/global-paths.js.map +1 -1
- package/dist/core/i18n-data/en.d.ts +2 -0
- package/dist/core/i18n-data/en.d.ts.map +1 -1
- package/dist/core/i18n-data/en.js +259 -23
- package/dist/core/i18n-data/en.js.map +1 -1
- package/dist/core/i18n-data/zh-CN.d.ts +2 -0
- package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
- package/dist/core/i18n-data/zh-CN.js +265 -23
- package/dist/core/i18n-data/zh-CN.js.map +1 -1
- package/dist/core/i18n.d.ts +8 -0
- package/dist/core/i18n.d.ts.map +1 -1
- package/dist/core/i18n.js +14 -4
- package/dist/core/i18n.js.map +1 -1
- package/dist/core/init.d.ts +4 -2
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +38 -13
- package/dist/core/init.js.map +1 -1
- package/dist/core/managed-region.d.ts +1 -1
- package/dist/core/managed-region.js +1 -1
- package/dist/core/metrics.d.ts +16 -4
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +31 -11
- package/dist/core/metrics.js.map +1 -1
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +53 -19
- package/dist/core/migrate.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +4 -2
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/opencode-config.d.ts +4 -4
- package/dist/core/opencode-config.d.ts.map +1 -1
- package/dist/core/opencode-config.js +6 -5
- package/dist/core/opencode-config.js.map +1 -1
- package/dist/core/plan/path.d.ts +40 -0
- package/dist/core/plan/path.d.ts.map +1 -1
- package/dist/core/plan/path.js +108 -1
- package/dist/core/plan/path.js.map +1 -1
- package/dist/core/plan/roadmap.js +2 -2
- package/dist/core/plan/roadmap.js.map +1 -1
- package/dist/core/plan/scheme.d.ts +74 -2
- package/dist/core/plan/scheme.d.ts.map +1 -1
- package/dist/core/plan/scheme.js +311 -26
- package/dist/core/plan/scheme.js.map +1 -1
- package/dist/core/plan/stage.d.ts +34 -3
- package/dist/core/plan/stage.d.ts.map +1 -1
- package/dist/core/plan/stage.js +90 -6
- package/dist/core/plan/stage.js.map +1 -1
- package/dist/core/public-logger.d.ts +18 -5
- package/dist/core/public-logger.d.ts.map +1 -1
- package/dist/core/public-logger.js +62 -23
- package/dist/core/public-logger.js.map +1 -1
- package/dist/core/runtime-log.d.ts +25 -0
- package/dist/core/runtime-log.d.ts.map +1 -0
- package/dist/core/runtime-log.js +94 -0
- package/dist/core/runtime-log.js.map +1 -0
- package/dist/core/setup.d.ts.map +1 -1
- package/dist/core/setup.js +47 -19
- package/dist/core/setup.js.map +1 -1
- package/dist/core/template-loader.d.ts.map +1 -1
- package/dist/core/template-loader.js +672 -288
- package/dist/core/template-loader.js.map +1 -1
- package/dist/core/templates.d.ts +2 -2
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +13 -9
- package/dist/core/templates.js.map +1 -1
- package/dist/core/update-infos.d.ts +14 -3
- package/dist/core/update-infos.d.ts.map +1 -1
- package/dist/core/update-infos.js +67 -15
- package/dist/core/update-infos.js.map +1 -1
- package/dist/core/update-state.d.ts.map +1 -1
- package/dist/core/update-state.js +7 -4
- package/dist/core/update-state.js.map +1 -1
- package/dist/core/update.d.ts +2 -1
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +253 -61
- package/dist/core/update.js.map +1 -1
- package/dist/core/view/entry.d.ts +53 -1
- package/dist/core/view/entry.d.ts.map +1 -1
- package/dist/core/view/entry.js +71 -2
- package/dist/core/view/entry.js.map +1 -1
- package/dist/core/workspace/identity.d.ts.map +1 -1
- package/dist/core/workspace/identity.js +15 -5
- package/dist/core/workspace/identity.js.map +1 -1
- package/dist/core/workspace/knowledge.d.ts.map +1 -1
- package/dist/core/workspace/knowledge.js +125 -19
- package/dist/core/workspace/knowledge.js.map +1 -1
- package/dist/core/workspace/structure.d.ts.map +1 -1
- package/dist/core/workspace/structure.js +6 -2
- package/dist/core/workspace/structure.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/kb-dedup.d.ts +5 -1
- package/dist/utils/kb-dedup.d.ts.map +1 -1
- package/dist/utils/kb-dedup.js +11 -5
- package/dist/utils/kb-dedup.js.map +1 -1
- package/package.json +6 -6
- package/dist/utils/path.d.ts +0 -22
- package/dist/utils/path.d.ts.map +0 -1
- package/dist/utils/path.js +0 -37
- package/dist/utils/path.js.map +0 -1
- package/scripts/patch-inquirer.js +0 -70
package/dist/core/update.js
CHANGED
|
@@ -10,13 +10,15 @@ import { existsSync, readFileSync, mkdirSync } from 'node:fs';
|
|
|
10
10
|
import { resolve, dirname, join, basename, isAbsolute, relative } from 'node:path';
|
|
11
11
|
import { loadAgentTemplate, listAgentIds, loadTemplate } from './template-loader.js';
|
|
12
12
|
import { recordProjectLang } from './workspace/identity.js';
|
|
13
|
-
import { getCliLang } from './i18n.js';
|
|
13
|
+
import { t, getCliLang } from './i18n.js';
|
|
14
14
|
import { getOpencodeGlobalDir, getGlobalAgentsDir, getGlobalSkillsDir, getGlobalCoreMdPath, getGlobalAgentsMdPath, getGlobalOpencodeJsoncPath, getGlobalUpdateStatePath } from './global-paths.js';
|
|
15
15
|
import { mergeGlobalOpencodeJsonc, buildProjectOpencodeJsoncObj } from './opencode-config.js';
|
|
16
16
|
import { atomicWriteFileSync } from './fs/atomic-write.js';
|
|
17
17
|
import { withFileLock, globalLockPath } from './fs/file-lock.js';
|
|
18
18
|
import { detectFileType, normalize, splitFrontmatter, parseRegion, wrapRegion, replaceRegion, mergeFrontmatter, serializeFrontmatter } from './managed-region.js';
|
|
19
19
|
import { appendUpdateInfo } from './update-infos.js';
|
|
20
|
+
import { backupFileBeforeWrite, BackupError, notifyBackupIfTTY } from './backup.js';
|
|
21
|
+
import { readJsoncFile } from './fs/safe-read.js';
|
|
20
22
|
// 新增:update_state.json hash 比对与冲突检测(项目 state + 全局 state)
|
|
21
23
|
import { hashContent, loadUpdateState, saveUpdateState, createUpdateState, loadGlobalUpdateState, saveGlobalUpdateState, createGlobalUpdateState, updateFileHash, markFileConflict, getOpenfeelVersion, } from './update-state.js';
|
|
22
24
|
/** 当前支持部署的 AI 工具列表 */
|
|
@@ -63,7 +65,7 @@ export async function selectTools() {
|
|
|
63
65
|
export const SKILL_DEFINITIONS = {
|
|
64
66
|
'openfeel-agent-model-check': `---
|
|
65
67
|
name: openfeel-agent-model-check
|
|
66
|
-
description: Agent 模型检查与修复。当 Agent 报 "Model not found" 或需要排查模型配置时使用。涵盖 auth.json
|
|
68
|
+
description: Agent 模型检查与修复。当 Agent 报 "Model not found" 或需要排查模型配置时使用。涵盖 auth.json 校验(opencode 适配器)、provider key 匹配、模型能力确认、openfeel-vision 多模态专项指南。
|
|
67
69
|
---
|
|
68
70
|
|
|
69
71
|
# Skill: openfeel-agent-model-check
|
|
@@ -331,6 +333,130 @@ Skill 加载后,根据步骤 3 的匹配结果决定是否追加提示:
|
|
|
331
333
|
此提示确保 Agent 不会跳过知识库查询直接编码。
|
|
332
334
|
|
|
333
335
|
- **若步骤 3 无相关条目**:不追加强制提示,静默返回(已在步骤 4 输出"知识库中暂无相关记录,可继续执行")。
|
|
336
|
+
`,
|
|
337
|
+
'openfeel-cli-usage': `---
|
|
338
|
+
name: openfeel-cli-usage
|
|
339
|
+
description: OpenFeel CLI 命令用法参考:命令清单与关键参数、15 个 phase 枚举与转移表、stageId 命名与目录映射约定、v1.1.2 新增能力(自描述/可纠错、--json 结构化输出、health --fix、scheme draft、knowledge dedup、纠正清理侧命令面)。当需要查询 CLI 命令、参数、phase、stageId、阶段命名时加载。
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
# OpenFeel CLI 用法参考
|
|
343
|
+
|
|
344
|
+
## 说明
|
|
345
|
+
|
|
346
|
+
- 定位:**查询型参考手册**(只读,不自执行)。回答「命令是什么、参数怎么给、phase/stageId 规则如何」。
|
|
347
|
+
- 边界:**执行型交互向导**请用 \`openfeel-wizard\` skill(跑 \`openfeel flow wizard\` 推进流水线);本 skill 只承载静态知识查阅。
|
|
348
|
+
- 与 \`openfeel-tool-usage\` 协同:工具选择规范见该 skill;本 skill 补充 CLI 命令细节。
|
|
349
|
+
|
|
350
|
+
> 本文档为 v1.1.2 快照;命令/参数细节以 \`openfeel <cmd> --help\`(本仓执行)实时输出为准(CLI 演进后本文档可能滞后)。
|
|
351
|
+
>
|
|
352
|
+
> ⚠️ **本仓自举**:本仓(openfeel 源码仓库)开发/执行时请用 \`node bin/openfeel.js <cmd>\`;安装后使用 \`openfeel <cmd>\`。
|
|
353
|
+
|
|
354
|
+
## 命令速查
|
|
355
|
+
|
|
356
|
+
| 命令 | 用途 | 关键参数 |
|
|
357
|
+
|------|------|----------|
|
|
358
|
+
| \`openfeel init [path]\` | 初始化项目工作区 | \`--lang <zh-CN\\|en>\`、\`--demo\`、\`--workspace-only\`、\`--non-interactive\` |
|
|
359
|
+
| \`openfeel setup\` | 部署全局框架配置(不建项目 \`.openfeel/\`) | \`--lang <zh-CN\\|en>\` |
|
|
360
|
+
| \`openfeel update [path]\` | 部署适配文件到目标项目 | \`--lang\`、\`--force\` |
|
|
361
|
+
| \`openfeel migrate [path]\` | Legacy 布局迁移(检测/备份/迁移/回滚) | \`--dry-run\`、\`--remap-assignee\`、\`--clean-global-core-md\`;\`migrate rollback\` |
|
|
362
|
+
| \`openfeel flow ...\` | 流水线状态管理 | 见下「flow 子命令」 |
|
|
363
|
+
| \`openfeel plan stage add\\|list\` | 工作阶段管理 | \`add <name> --deps <ids...> --tasks <items...>\` |
|
|
364
|
+
| \`openfeel plan scheme create\\|publish\\|rename\\|list\\|remove\` | 操作方案管理 | \`create <stage> <title> [--draft]\`、\`publish <stage> <opId>\`、\`rename <stage> <opId> --title <text>\`、\`remove <stage> <opId> [--force] [--dry-run]\` |
|
|
365
|
+
| \`openfeel stage status\\|set\\|task\` | \`status.md\` 原子操作 | \`set <id> --status/--exec-mode/--auto-advance/--review-agent\`、\`task <id> [no] --add/--done/--undone\`(\`stage create\` 已弃用) |
|
|
366
|
+
| \`openfeel config ...\` | 配置管理 | \`get\\|set <key> <value> [--global]\`(支持全量 \`defaults.*\`)、\`get-lang\\|set-lang\`、\`list-projects\`、\`effective [key]\` |
|
|
367
|
+
| \`openfeel model set\\|get\\|list\` | 模型三层级配置 | \`set <agent> <model>\` |
|
|
368
|
+
| \`openfeel lint i18n\\|kb\` | 健康检查(i18n 键一致性 / kb 过期引用) | 发现问题**非 0 退出** |
|
|
369
|
+
| \`openfeel knowledge ...\` | 知识库管理 | \`list\` / \`add\` / \`search\` / \`index\` / \`dedup\` |
|
|
370
|
+
| \`openfeel archive <stage>\` | 归档指定阶段(汇总产出、生成摘要、提取知识) | \`<stage>\` |
|
|
371
|
+
| \`openfeel view list\\|accept\` | 审查条目验收(\`add\` 已移除,改用 \`flow review add\`) | — |
|
|
372
|
+
| \`openfeel project overview\` | 项目结构概览 | \`overview\`(无 \`list\`/\`info\` 子命令) |
|
|
373
|
+
| \`openfeel roadmap create\\|show\` | 分期大纲管理 | \`create <version>\`、\`show [version]\` |
|
|
374
|
+
| \`openfeel instructions <artifactId>\` | 为指定 artifact 生成结构化指令 | \`--change <name>\`、\`--schema <name>\`、\`--json\` |
|
|
375
|
+
|
|
376
|
+
**flow 子命令**:\`status\` / \`current\` / \`overview\` / \`phases\` / \`stage\` / \`metrics\` / \`advance\`(\`--stage <id> --to <phase>\`、\`--op\`、\`--force\`、\`--dry-run\`、\`--quiet\`)/ \`attempt\` / \`log\` / \`review\` / \`retry\` / \`repair\` / \`ops\` / \`migrate\` / \`checkpoint\` / \`health\` / \`recover\` / \`wizard\`。
|
|
377
|
+
|
|
378
|
+
**纠错/清理侧补充**:\`flow review add|resolve|update|remove\`;\`flow ops list [--stage <id>] [--json]\`(操作方案视图,draft 分组展示);\`flow repair [--prune-orphans]\`(默认只报告,\`--prune-orphans\` 仅清键孤儿,单向不删文件)。
|
|
379
|
+
|
|
380
|
+
> 命令职责分层:\`plan stage add\`(完整,推荐)> \`flow stage add\`(仅注册 \`flow.json\`,不建目录)> \`stage create\`(已弃用)。
|
|
381
|
+
|
|
382
|
+
## v1.1.2 新增能力(stage-41~55)
|
|
383
|
+
|
|
384
|
+
> 以下为 v1.1.2 相对上版的增量能力(分组摘要,细节以 \`<cmd> --help\` 为准)。
|
|
385
|
+
|
|
386
|
+
- **A. 自描述与可纠错(stage-41)**:\`flow phases [--json]\`(**5 键**:\`schemaVersion\`/\`phases\`/\`transitions\`/\`advanceAccepted\`/\`transitionsDiff\`)、\`flow stage remove [--force] [--dry-run] [--purge]\`、stageId 校验/冲突检测(\`validateStageId\` / \`suggestStageId\` / \`findStageDirConflict\`)、\`plan stage add --deps\`。
|
|
387
|
+
- **B. 状态与口径(stage-42)**:\`config effective [key]\`(有效值 + 生效来源 \`status.md > config.yaml > profile.yaml > builtin\`)、\`pipeline.phase\` 全量 done 判定、审计日志 \`register_stage\` / \`register_op\`。
|
|
388
|
+
- **C. 部署与备份(stage-46)**:覆盖写前自动备份 \`~/.openfeel/backup/{ts}/\` + \`update_infos.md\`「备份」类条目(Agent 按 \`feel.md\` 检查规则核对)。
|
|
389
|
+
- **D. 纠正/清理侧命令面(stage-51/52)**:\`plan scheme remove\`(仅删 \`flow.json\` 注册键,不删 op 文件;done/checkpoint 保护)、\`plan scheme rename --title\`(必填,空标题报错)、\`plan scheme publish\` + \`create --draft\`(draft→pending,空模板拒绝)、\`flow stage set --deps\`(覆盖写入;**不带 \`--deps\` 视为清空**)、\`flow review update|remove\`、\`stage set\`(**幂等**:同值 no-op + 同值不生成 \`.bak\`;\`--exec-mode <manual\\|auto>\` / \`--auto-advance <enabled\\|disabled>\` / \`--review-agent <agent>\`)、\`stage task --add|--done|--undone\`、\`plan stage add --tasks\`、\`flow repair --prune-orphans\`、\`flow health --fix [--dry-run]\`(默认只报告;\`--fix\` **仅回写 status.md「状态」字段**;\`--dry-run\` 预览零写盘)、\`flow ops list\`、\`flow advance --quiet\` + \`--to <远距 phase>\`(存在唯一路径时自动逐步;\`--dry-run\` 展示完整路径)、\`knowledge dedup\`(检索相似条目,**只读建议,不修改 kb**)。\`flow attempt\` 对 **draft op 拒绝**。
|
|
390
|
+
- **E. 输出/门禁/约定(stage-50/52)**:\`flow status/current/health/metrics/overview --json\`(纯 JSON 单文档,含 \`schemaVersion\`)、\`lint i18n\`/\`lint kb\` **非 0 退出**(门禁语义,无逃生阀)、\`config set/get\` 支持**全量 \`defaults.*\`**(Schema 驱动键白名单 + 值类型归一 + 枚举校验,非法报错不写盘)、\`view add\` **已移除**(改用 \`flow review add\`)、\`NO_COLOR\` 环境变量 / \`--no-color\`。
|
|
391
|
+
|
|
392
|
+
## phase 枚举与转移表
|
|
393
|
+
|
|
394
|
+
15 个 phase(\`plan_pending\` … \`done\`):
|
|
395
|
+
|
|
396
|
+
\`\`\`
|
|
397
|
+
plan_pending → plan_review → plan_passed → scheme_pending → scheme_review
|
|
398
|
+
→ scheme_passed → exec_running → review_pending → review_passed → test_pending
|
|
399
|
+
→ test_passed → archiving → done
|
|
400
|
+
\`\`\`
|
|
401
|
+
|
|
402
|
+
| phase | 合法目标 |
|
|
403
|
+
|-------|----------|
|
|
404
|
+
| \`plan_pending\` | \`plan_review\`, \`plan_passed\` |
|
|
405
|
+
| \`plan_review\` | \`plan_passed\`, \`plan_pending\` |
|
|
406
|
+
| \`plan_passed\` | \`scheme_pending\` |
|
|
407
|
+
| \`scheme_pending\` | \`scheme_review\`, \`scheme_passed\` |
|
|
408
|
+
| \`scheme_review\` | \`scheme_passed\`, \`scheme_pending\` |
|
|
409
|
+
| \`scheme_passed\` | \`exec_running\` |
|
|
410
|
+
| \`exec_running\` | \`review_pending\`, \`scheme_pending\` |
|
|
411
|
+
| \`review_pending\` | \`review_failed\`, \`review_passed\` |
|
|
412
|
+
| \`review_failed\` | \`review_pending\`, \`scheme_pending\` |
|
|
413
|
+
| \`review_passed\` | \`test_pending\` |
|
|
414
|
+
| \`test_pending\` | \`test_failed\`, \`test_passed\` |
|
|
415
|
+
| \`test_failed\` | \`test_pending\`, \`scheme_pending\` |
|
|
416
|
+
| \`test_passed\` | \`archiving\` |
|
|
417
|
+
| \`archiving\` | \`done\` |
|
|
418
|
+
| \`done\` | (终态) |
|
|
419
|
+
|
|
420
|
+
- 转移表以**运行时** \`.openfeel/pipeline.yaml\` 为准;\`openfeel flow phases\` 查看当前生效值。
|
|
421
|
+
- 推进:\`openfeel flow advance --stage <id> --to <phase>\`。**\`advanceAccepted\` = 内置 15 个 phase 的「推进白名单」**(\`flow advance\` 只接受这 15 个值),**不是**组合式条件键的替代品(旧文案曾误述,此处已更正)。**组合式条件差异**(如内置默认含 \`review_passed|test_passed\`,本仓 \`pipeline.yaml\` 未列)经 \`--json.transitionsDiff.missing\` **显式可见**(stage-50 裁定:**不补组合键**,改以 \`transitionsDiff\` 显式化)。
|
|
422
|
+
- 参考:\`.openfeel/manual/**\`(CLI/flow 模块文档)。
|
|
423
|
+
|
|
424
|
+
## stageId 命名与目录映射
|
|
425
|
+
|
|
426
|
+
| 格式 | 示例 | series / stageDir |
|
|
427
|
+
|------|------|-------------------|
|
|
428
|
+
| 完整四级 | \`v1.1.2-stage-43\` | \`v1\` / \`stage-43\` |
|
|
429
|
+
| 历史短版 | \`v4-stage-04\` | \`v4\` / \`stage-04\` |
|
|
430
|
+
| 短名 | \`stage-01\` | \`v1\`(默认)/ \`stage-01\` |
|
|
431
|
+
|
|
432
|
+
- \`series = v{MAJOR}\`;目录映射 \`.openfeel/plan/{series}/stage-{NN}/\`。
|
|
433
|
+
- 唯一性:\`(series, stageDir)\` 冲突(如 \`v4-stage-04\` 与 \`v4.0.0-stage-04\` 映射同目录)会被 \`findStageDirConflict\` 检出并阻止;非法输入由 \`validateStageId\` 报原因 + \`suggestStageId\` 给建议名(\`NN\` 限定在同 series 内 max+1)。
|
|
434
|
+
- 权威实现与三级回退:见 \`.openfeel/manual/core/plan-path.md\`。
|
|
435
|
+
|
|
436
|
+
## 典型场景
|
|
437
|
+
|
|
438
|
+
1. **落地新阶段**:\`openfeel plan stage add v1.1.2-stage-43\`(建目录 + 注册)→ \`openfeel flow advance --stage v1.1.2-stage-43 --to plan_pending\` 起步。
|
|
439
|
+
2. **声明依赖**:\`openfeel plan stage add v1.1.2-stage-43 --deps v1.1.2-stage-41 v1.1.2-stage-47\`(写入 \`overview.md\`「## 依赖」+ \`flow.json.stages[].deps\`)。
|
|
440
|
+
3. **纠错移除误建阶段**:\`openfeel flow stage remove v1.1.2-stage-43 --dry-run\` 预览 → 确认后 \`--force\`(必要时 \`--purge\` 删目录)。
|
|
441
|
+
4. **查询有效配置**:\`openfeel config effective auto_advance\`(来源优先级 \`status.md\` > \`config.yaml\` > \`profile.yaml\` > \`builtin\`)。
|
|
442
|
+
5. **部署前备份**:\`setup\`/\`update\`/\`init\`/\`migrate\` 覆盖写入前自动备份至 \`~/.openfeel/backup/{ts}/\`;\`update_infos.md\` 会新增「备份」类条目,Agent 须按 \`feel.md\` 检查规则核对(存在性 + 失败重跑)。
|
|
443
|
+
|
|
444
|
+
## 权限模型要点
|
|
445
|
+
|
|
446
|
+
- 9 个 agent 内联 \`permission:\` 白名单,均含 \`external_directory: "allow"\`(单一键,无读写粒度)。
|
|
447
|
+
- **合并语义**:agent \`.md\` frontmatter 与 \`opencode.jsonc\` 按权限键**深合并**,同名键以 agent \`.md\` 为准(配置文件无法覆盖已声明键)。
|
|
448
|
+
- **收紧入口**:项目根 \`.opencode/agent/<name>.md\` 覆盖全局同名 agent 并重写完整 \`permission\` 块;勿手改全局 agent frontmatter(会被 \`update\` 覆盖)。
|
|
449
|
+
- 详 \`.openfeel/manual/core/permission.md\`。
|
|
450
|
+
|
|
451
|
+
## 与 openfeel-wizard 的区别
|
|
452
|
+
|
|
453
|
+
| 维度 | \`openfeel-cli-usage\`(本 skill) | \`openfeel-wizard\` |
|
|
454
|
+
|------|--------------------------------|-------------------|
|
|
455
|
+
| 定位 | 查询型**参考手册**(只读静态知识) | 执行型**交互向导**(跑 \`openfeel flow wizard\`) |
|
|
456
|
+
| 动作 | 回答「命令/参数/phase/stageId 是什么」 | 逐步选择并推进阶段 phase |
|
|
457
|
+
| 前置 | 无 | 需交互式 TTY(非 TTY 用 \`flow advance --stage <id> --to <phase>\`) |
|
|
458
|
+
|
|
459
|
+
> wizard skill 正文已交叉引用本 skill;二者正文互引,边界为「查手册 vs 跑向导」。
|
|
334
460
|
`,
|
|
335
461
|
'openfeel-get-bugs': `---
|
|
336
462
|
name: openfeel-get-bugs
|
|
@@ -504,6 +630,8 @@ description: 加载流水线健康检查结果,供 Agent 判断 flow.json 与
|
|
|
504
630
|
|
|
505
631
|
# 流水线健康检查
|
|
506
632
|
|
|
633
|
+
> ⚠️ **本仓自举**:本仓(openfeel 源码仓库)开发/执行时请用 \`node bin/openfeel.js <cmd>\`;安装后使用 \`openfeel <cmd>\`。
|
|
634
|
+
|
|
507
635
|
## 输入
|
|
508
636
|
|
|
509
637
|
无
|
|
@@ -525,6 +653,8 @@ description: Feel 自检时检查所有 Agent 的模型配置状态,识别期
|
|
|
525
653
|
|
|
526
654
|
# 模型配置检查
|
|
527
655
|
|
|
656
|
+
> ⚠️ **本仓自举**:本仓(openfeel 源码仓库)开发/执行时请用 \`node bin/openfeel.js <cmd>\`;安装后使用 \`openfeel <cmd>\`。
|
|
657
|
+
|
|
528
658
|
## 触发时机
|
|
529
659
|
|
|
530
660
|
Feel Agent 在以下时机加载本 Skill:
|
|
@@ -540,7 +670,7 @@ Feel Agent 在以下时机加载本 Skill:
|
|
|
540
670
|
|
|
541
671
|
| 配置文件 | 平台 |
|
|
542
672
|
|----------|------|
|
|
543
|
-
| \`opencode.jsonc\` | OpenCode |
|
|
673
|
+
| \`opencode.jsonc\` | OpenCode(当前适配器) |
|
|
544
674
|
| \`kilo/kilo.json\` | Kilo |
|
|
545
675
|
| \`claude/claude.json\` | Claude |
|
|
546
676
|
|
|
@@ -637,7 +767,7 @@ models:
|
|
|
637
767
|
\`\`\`markdown
|
|
638
768
|
## 🔍 模型配置检查报告
|
|
639
769
|
|
|
640
|
-
**平台**:OpenCode
|
|
770
|
+
**平台**:OpenCode(当前适配器)
|
|
641
771
|
**配置文件**:.openfeel/config.yaml
|
|
642
772
|
**检查时间**:yyyy-mm-dd HH:MM
|
|
643
773
|
|
|
@@ -690,7 +820,7 @@ models:
|
|
|
690
820
|
# 或直接复制此文件到 .openfeel/ 并重命名为 config.yaml(需合并其他节)
|
|
691
821
|
#
|
|
692
822
|
# 最近配置时间:yyyy-mm-dd HH:MM
|
|
693
|
-
# 平台:OpenCode
|
|
823
|
+
# 平台:OpenCode(当前适配器)
|
|
694
824
|
|
|
695
825
|
models:
|
|
696
826
|
default:
|
|
@@ -717,7 +847,7 @@ models:
|
|
|
717
847
|
`,
|
|
718
848
|
'openfeel-model-config': `---
|
|
719
849
|
name: openfeel-model-config
|
|
720
|
-
description: 查找和配置 Agent 模型。当 Agent 报 "Model not found" 或需要调整/新增 Agent 模型时使用。覆盖 opencode.jsonc
|
|
850
|
+
description: 查找和配置 Agent 模型。当 Agent 报 "Model not found" 或需要调整/新增 Agent 模型时使用。覆盖 opencode.jsonc 配置(opencode 适配器)、模型名查找方法、多模态模型(openfeel-vision)特殊注意事项。
|
|
721
851
|
---
|
|
722
852
|
|
|
723
853
|
# Skill: openfeel-model-config
|
|
@@ -799,6 +929,8 @@ description: 跨会话上下文恢复,供 Agent 在会话启动时重建流水
|
|
|
799
929
|
|
|
800
930
|
# 跨会话上下文恢复
|
|
801
931
|
|
|
932
|
+
> ⚠️ **本仓自举**:本仓(openfeel 源码仓库)开发/执行时请用 \`node bin/openfeel.js <cmd>\`;安装后使用 \`openfeel <cmd>\`。
|
|
933
|
+
|
|
802
934
|
## 输入
|
|
803
935
|
|
|
804
936
|
无
|
|
@@ -806,9 +938,11 @@ description: 跨会话上下文恢复,供 Agent 在会话启动时重建流水
|
|
|
806
938
|
## 执行步骤
|
|
807
939
|
|
|
808
940
|
1. 运行 \`openfeel flow recover\` 获取全局状态、流水线阶段、当前操作、阻塞原因与待处理任务
|
|
809
|
-
2.
|
|
941
|
+
2. 读取**索引** \`.openfeel/users/{username}/dev_last.md\`(「用户偏好」「主题索引」「公共交接区」)→ **按需**再读主题文件(**文件名英文,如 \`decisions.md\`/\`pending.md\`**)恢复详情;**旧格式**(无 \`## 主题索引\` 节)→ 触发惰性迁移(按英文命名映射拆分生成 \`dev_last/\` + 索引,原文保留)
|
|
810
942
|
3. 将两者合并为当前会话起点
|
|
811
943
|
|
|
944
|
+
> **加锁提示(A9)**:恢复流程为**只读**,无需加锁;仅**会话末尾写入**走 \`withFileLock\` 临界区(见 agents-md「并发写加锁协议」)。
|
|
945
|
+
|
|
812
946
|
## 输出
|
|
813
947
|
|
|
814
948
|
恢复摘要:流水线状态 + 阻塞项 + 待处理任务列表
|
|
@@ -960,7 +1094,7 @@ description: 语义检索 .openfeel/kb/ 项目知识库。当精确匹配无结
|
|
|
960
1094
|
`,
|
|
961
1095
|
'openfeel-sync-status': `---
|
|
962
1096
|
name: openfeel-sync-status
|
|
963
|
-
description:
|
|
1097
|
+
description: 聚合所有成员的任务进度视图(各用户 dev_last 索引主题 + flow.json 阶段状态),供任意 Agent 快速了解项目整体协作状态。
|
|
964
1098
|
---
|
|
965
1099
|
|
|
966
1100
|
# Skill: openfeel-sync-status
|
|
@@ -969,63 +1103,57 @@ description: 聚合所有成员的任务进度视图,供任意 Agent 快速了
|
|
|
969
1103
|
|
|
970
1104
|
## 输入
|
|
971
1105
|
|
|
972
|
-
|
|
1106
|
+
无(**自动**:各用户 \`.openfeel/users/*/dev_last.md\` 索引「主题索引」+ \`flow.json\` 阶段状态 \`stages[].phase/status\`)
|
|
973
1107
|
|
|
974
1108
|
## 执行步骤
|
|
975
1109
|
|
|
976
|
-
### 1.
|
|
1110
|
+
### 1. 读取进度来源
|
|
977
1111
|
|
|
978
|
-
读取 \`.openfeel/
|
|
1112
|
+
读取 \`.openfeel/users/*/dev_last.md\` 的「主题索引」摘要 + \`flow.json\` 的 active stages;**按用户聚合**展示。
|
|
979
1113
|
|
|
980
|
-
### 2.
|
|
1114
|
+
### 2. 解析条目
|
|
981
1115
|
|
|
982
|
-
|
|
983
|
-
-
|
|
984
|
-
-
|
|
985
|
-
-
|
|
986
|
-
-
|
|
987
|
-
- **锁定**:若有 \`🔒\` 标记,列出锁定的文件
|
|
1116
|
+
对每个用户提取:
|
|
1117
|
+
- **成员**:用户目录名(\`.openfeel/users/{username}/\`)
|
|
1118
|
+
- **主题**:\`dev_last.md\`「主题索引」中的显示主题名(附英文文件名 \`dev_last/{english-name}.md\`)
|
|
1119
|
+
- **摘要**:各主题下 ≤5 条核心摘要(≤100 字)
|
|
1120
|
+
- **阶段**:\`flow.json\` 中与该用户相关的阶段 \`phase\` / \`status\`
|
|
988
1121
|
|
|
989
1122
|
### 3. 查漏补缺
|
|
990
1123
|
|
|
991
|
-
- 对比
|
|
1124
|
+
- 对比 **\`flow.json\` active stages** 与各用户 \`dev_last\` 索引覆盖的 stage,检查是否存在**无任何用户索引覆盖的活跃阶段**
|
|
992
1125
|
- 若有,标记为「未同步」
|
|
993
1126
|
|
|
994
1127
|
### 4. 格式化输出
|
|
995
1128
|
|
|
996
|
-
|
|
1129
|
+
按阶段/用户分组输出,格式:
|
|
997
1130
|
|
|
998
1131
|
\`\`\`
|
|
999
1132
|
📊 项目协作进度
|
|
1000
1133
|
|
|
1001
|
-
🟢
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
@bob [db] 数据库迁移脚本编写
|
|
1005
|
-
🔒 migrations/v2.sql
|
|
1006
|
-
|
|
1007
|
-
🟡 阻塞(M 人)
|
|
1008
|
-
@charlie [api] 等待第三方 OAuth 审批
|
|
1134
|
+
🟢 {stage-id} [{phase}]
|
|
1135
|
+
{username}
|
|
1136
|
+
- {主题显示名}(\`dev_last/{english-name}.md\`):{摘要(≤100 字)}
|
|
1009
1137
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1138
|
+
🟡 阻塞
|
|
1139
|
+
{username} — {阻塞原因(若 dev_last 索引标注)}
|
|
1012
1140
|
|
|
1013
|
-
⚪
|
|
1014
|
-
|
|
1141
|
+
⚪ 未同步
|
|
1142
|
+
{username} — 尚无主题索引条目
|
|
1143
|
+
{stage-id} — 无用户索引覆盖
|
|
1015
1144
|
\`\`\`
|
|
1016
1145
|
|
|
1017
1146
|
### 5. 偏离告警
|
|
1018
1147
|
|
|
1019
|
-
|
|
1148
|
+
若同一 stage 在 \`flow.json\` 标记为活跃,但**所有用户索引均未覆盖**,输出告警:
|
|
1020
1149
|
|
|
1021
1150
|
\`\`\`
|
|
1022
|
-
⚠️
|
|
1151
|
+
⚠️ 阶段 {stage_id} 处于活跃状态但无用户索引覆盖,请确认存在负责成员
|
|
1023
1152
|
\`\`\`
|
|
1024
1153
|
|
|
1025
1154
|
## 输出
|
|
1026
1155
|
|
|
1027
1156
|
格式化后的 Markdown 进度摘要,不含文件修改。
|
|
1028
|
-
|
|
1029
1157
|
`,
|
|
1030
1158
|
'openfeel-tool-usage': `---
|
|
1031
1159
|
name: openfeel-tool-usage
|
|
@@ -1041,10 +1169,10 @@ description: Agent 工具使用规范(todowrite/question/task/skill 四工具
|
|
|
1041
1169
|
## 执行步骤
|
|
1042
1170
|
|
|
1043
1171
|
### 1. todowrite — 任务列表管理
|
|
1044
|
-
|
|
1172
|
+
触发条件(任一即用):多个独立步骤(多文件改动、需跨会话跟踪等) / 多任务下达 / 跨文件修改。使用要求:执行前创建、单条 in_progress、完成即标 completed、新步骤追加末尾。
|
|
1045
1173
|
|
|
1046
1174
|
### 2. question — 向用户提问
|
|
1047
|
-
触发条件(任一必问):需求歧义 /
|
|
1175
|
+
触发条件(任一必问):需求歧义 / 多个同等合理方案 / 不可逆后果 / 架构决策。使用要求:(Recommended) 标记、选项附后果、≤3 选项、高风险含"取消"。禁止:模糊时自行假设、多方案不选直接实施。
|
|
1048
1176
|
|
|
1049
1177
|
### 3. task — 子 Agent 调度
|
|
1050
1178
|
触发条件:并行探索多代码区 / 复杂多步委托 general / 下游 Agent(经 Feel)。使用要求:并行一条消息多 task、prompt 含任务描述+期望返回、明确只读/可写。
|
|
@@ -1203,6 +1331,10 @@ description: 交互式流水线向导,供 Agent 在终端中逐步推进流水
|
|
|
1203
1331
|
向导推进结果:阶段 phase 变化(from → to),结束/退出提示
|
|
1204
1332
|
|
|
1205
1333
|
> 注:需交互式终端(TTY),非交互环境请改用 \`openfeel flow advance --stage <id> --to <phase>\`
|
|
1334
|
+
>
|
|
1335
|
+
> ⚠️ **本仓自举**:本仓(openfeel 源码仓库)开发/执行时请用 \`node bin/openfeel.js <cmd>\`;安装后使用 \`openfeel <cmd>\`。
|
|
1336
|
+
>
|
|
1337
|
+
> 静态命令/参数/phase/stageId 参考见 \`openfeel-cli-usage\` skill(本 skill 负责交互式执行推进)。
|
|
1206
1338
|
`,
|
|
1207
1339
|
'openfeel-workspace': `---
|
|
1208
1340
|
name: openfeel-workspace
|
|
@@ -1221,16 +1353,16 @@ description: 会话启动时检查并补齐 .openfeel/ 工作区目录结构与
|
|
|
1221
1353
|
读 \`.openfeel/.info.json\` 的 \`user\` 字段;缺失则 \`git config user.name\`。
|
|
1222
1354
|
|
|
1223
1355
|
### 2. 检查公共域目录(缺失则 mkdir -p)
|
|
1224
|
-
\`.openfeel/dev/note/\`、\`.openfeel/log/\`、\`.openfeel/code_review/\`、\`.openfeel/bugs/\`、\`.openfeel/plan/\`、\`.openfeel/kb/\`、\`.openfeel/tmp/\`
|
|
1356
|
+
\`.openfeel/dev/note/\`、\`.openfeel/dev/current_archive/\`、\`.openfeel/log/\`、\`.openfeel/code_review/\`、\`.openfeel/bugs/\`、\`.openfeel/plan/\`、\`.openfeel/kb/\`、\`.openfeel/tmp/\`
|
|
1225
1357
|
|
|
1226
1358
|
### 3. 检查公共域文件(缺失则创建空文件)
|
|
1227
1359
|
\`.openfeel/dev/dev_core.md\`、\`.openfeel/dev/current.md\`、\`.openfeel/dev/decisions.md\`、\`.openfeel/kb/index.md\`
|
|
1228
1360
|
|
|
1229
1361
|
### 4. 检查私域目录(基于 {username})
|
|
1230
|
-
\`.openfeel/users/{username}/log/\`、\`note/\`、\`code_review/\`、\`bugs/\`、\`tmp
|
|
1362
|
+
\`.openfeel/users/{username}/log/\`、\`note/\`、\`code_review/\`、\`bugs/\`、\`tmp/\`、\`dev_last/\`(主题记录目录;**主题文件名英文**,如 \`pending.md\`/\`decisions.md\`)
|
|
1231
1363
|
|
|
1232
1364
|
### 5. 检查私域文件
|
|
1233
|
-
\`.openfeel/users/{username}/dev_last.md\`
|
|
1365
|
+
\`.openfeel/users/{username}/dev_last.md\`(**索引**;同名目录 \`dev_last/\` 存主题文件,**文件名英文**)
|
|
1234
1366
|
|
|
1235
1367
|
### 6. 增量更新复核
|
|
1236
1368
|
检查 \`~/.openfeel/update_infos.md\`,若存在未修复条目(追加/异常),提醒用户重启会话或委托 Feel 处理;本 Agent 不自行修改该文件。
|
|
@@ -1253,7 +1385,7 @@ function composeManagedContent(content, type) {
|
|
|
1253
1385
|
* 分派依据 detectFileType;jsonc 不走本函数(调用方走深度合并)。
|
|
1254
1386
|
* target 供 update_infos 路径记录:全局资产 { isGlobal: true },项目资产 { isGlobal: false, projectRoot }。
|
|
1255
1387
|
*/
|
|
1256
|
-
function writeManagedFile(filePath, content, stateKey, updateState, target) {
|
|
1388
|
+
function writeManagedFile(filePath, content, stateKey, updateState, target, command) {
|
|
1257
1389
|
const type = detectFileType(filePath);
|
|
1258
1390
|
if (type === null || type === 'jsonc') {
|
|
1259
1391
|
// 无策略 / JSONC:不应到达(jsonc 由 updateProject 单独走深度合并)
|
|
@@ -1273,6 +1405,33 @@ function writeManagedFile(filePath, content, stateKey, updateState, target) {
|
|
|
1273
1405
|
const existingFm = existingSplit?.frontmatter ?? null;
|
|
1274
1406
|
const existingBody = existingSplit?.body ?? existing;
|
|
1275
1407
|
const region = parseRegion(existingBody, type);
|
|
1408
|
+
// 写前备份(B3):目标已存在且本次将实际改变内容时调用;备份失败 → 'skipped'(不覆盖)
|
|
1409
|
+
const runPreWriteBackup = () => {
|
|
1410
|
+
try {
|
|
1411
|
+
const backup = backupFileBeforeWrite(filePath, {
|
|
1412
|
+
command,
|
|
1413
|
+
projectPath: target.isGlobal ? undefined : target.projectRoot,
|
|
1414
|
+
});
|
|
1415
|
+
if (backup) {
|
|
1416
|
+
appendUpdateInfo('backed', target.isGlobal
|
|
1417
|
+
? { absolutePath: filePath, backupRel: backup.backupRel, command }
|
|
1418
|
+
: { projectRoot: target.projectRoot, relativePath: stateKey, backupRel: backup.backupRel, command });
|
|
1419
|
+
notifyBackupIfTTY(backup.backupRel); // B6:仅 TTY
|
|
1420
|
+
}
|
|
1421
|
+
return 'ok';
|
|
1422
|
+
}
|
|
1423
|
+
catch (err) {
|
|
1424
|
+
if (err instanceof BackupError) {
|
|
1425
|
+
// 备份失败 → 记可区分异常(REV-004)并跳过该文件写入,返回既有 'skipped'
|
|
1426
|
+
appendUpdateInfo('anomaly', target.isGlobal
|
|
1427
|
+
? { absolutePath: filePath, note: 'backup_failed' }
|
|
1428
|
+
: { projectRoot: target.projectRoot, relativePath: stateKey, note: 'backup_failed' });
|
|
1429
|
+
console.warn(t('update.fileWriteSkipTmpl', getCliLang(target.projectRoot ?? process.cwd()), { err: err.message }));
|
|
1430
|
+
return 'skipped';
|
|
1431
|
+
}
|
|
1432
|
+
throw err;
|
|
1433
|
+
}
|
|
1434
|
+
};
|
|
1276
1435
|
if (region.status === 'ok') {
|
|
1277
1436
|
// 含标记:frontmatter 合并 + 正文区内替换,全文比对(REV-901 skip 判定)
|
|
1278
1437
|
// incoming 无 frontmatter(如 core.md/AGENTS.md 模板)时保留用户已有 frontmatter,避免写入丢失(REV-1101)
|
|
@@ -1282,6 +1441,9 @@ function writeManagedFile(filePath, content, stateKey, updateState, target) {
|
|
|
1282
1441
|
if (newContent === normalize(existing)) {
|
|
1283
1442
|
return 'skipped';
|
|
1284
1443
|
}
|
|
1444
|
+
if (runPreWriteBackup() === 'skipped') {
|
|
1445
|
+
return 'skipped';
|
|
1446
|
+
}
|
|
1285
1447
|
atomicWriteFileSync(filePath, newContent);
|
|
1286
1448
|
return 'updated';
|
|
1287
1449
|
}
|
|
@@ -1290,12 +1452,18 @@ function writeManagedFile(filePath, content, stateKey, updateState, target) {
|
|
|
1290
1452
|
const fileState = updateState?.files[stateKey];
|
|
1291
1453
|
if (fileState && hashContent(existing) === fileState.hash) {
|
|
1292
1454
|
// adopt:存量框架文件未改 → 直接写带标记的新框架内容(等价 created 记为 updated)
|
|
1455
|
+
if (runPreWriteBackup() === 'skipped') {
|
|
1456
|
+
return 'skipped';
|
|
1457
|
+
}
|
|
1293
1458
|
atomicWriteFileSync(filePath, composeManagedContent(content, type));
|
|
1294
1459
|
return 'updated';
|
|
1295
1460
|
}
|
|
1296
1461
|
// 追加受管区(标记包裹正文,不触碰 frontmatter),并记录待会话启动复核
|
|
1297
1462
|
const appendedRegion = wrapRegion(incomingBody, type);
|
|
1298
1463
|
const sep = existing.endsWith('\n') ? '' : '\n';
|
|
1464
|
+
if (runPreWriteBackup() === 'skipped') {
|
|
1465
|
+
return 'skipped';
|
|
1466
|
+
}
|
|
1299
1467
|
atomicWriteFileSync(filePath, `${existing}${sep}${appendedRegion}`);
|
|
1300
1468
|
appendUpdateInfo('appended', target.isGlobal ? { absolutePath: filePath } : { projectRoot: target.projectRoot, relativePath: stateKey });
|
|
1301
1469
|
return 'appended';
|
|
@@ -1311,8 +1479,8 @@ function writeManagedFile(filePath, content, stateKey, updateState, target) {
|
|
|
1311
1479
|
* 即 stateKey = 绝对路径、target 为全局资产。
|
|
1312
1480
|
* @returns 动作分类,供调用方报告。
|
|
1313
1481
|
*/
|
|
1314
|
-
export function deployGlobalAsset(filePath, content, state) {
|
|
1315
|
-
return writeManagedFile(filePath, content, filePath, state, { isGlobal: true });
|
|
1482
|
+
export function deployGlobalAsset(filePath, content, state, command) {
|
|
1483
|
+
return writeManagedFile(filePath, content, filePath, state, { isGlobal: true }, command);
|
|
1316
1484
|
}
|
|
1317
1485
|
/** 将 writeManagedFile 的动作分发到对应结果数组 */
|
|
1318
1486
|
function pushAction(action, stateKey, created, updated, skipped, appended) {
|
|
@@ -1356,7 +1524,7 @@ export function updateProject(projectPath, selectedTools = ["opencode"], lang =
|
|
|
1356
1524
|
const legacyDirs = ['agents', 'skills', 'instructions']
|
|
1357
1525
|
.filter((d) => existsSync(resolve(projectPath, '.opencode', d)));
|
|
1358
1526
|
if (legacyDirs.length > 0) {
|
|
1359
|
-
console.warn(
|
|
1527
|
+
console.warn(t('update.legacyLayoutWarnTmpl', getCliLang(projectPath), { dirs: legacyDirs.join(',') }));
|
|
1360
1528
|
}
|
|
1361
1529
|
// 全局部署目标(D1)
|
|
1362
1530
|
const agentsDir = getGlobalAgentsDir();
|
|
@@ -1387,14 +1555,14 @@ export function updateProject(projectPath, selectedTools = ["opencode"], lang =
|
|
|
1387
1555
|
const agentsMdPath = getGlobalAgentsMdPath();
|
|
1388
1556
|
const agentsMdContent = loadTemplate(lang, 'agents-md');
|
|
1389
1557
|
{
|
|
1390
|
-
const action = deployGlobalAsset(agentsMdPath, agentsMdContent, newGlobalState);
|
|
1558
|
+
const action = deployGlobalAsset(agentsMdPath, agentsMdContent, newGlobalState, 'update');
|
|
1391
1559
|
pushAction(action, agentsMdPath, created, updated, skipped, appended);
|
|
1392
1560
|
}
|
|
1393
1561
|
// 1. 生成 Agent 定义文件到全局 agents 目录(绝对路径作 state key)
|
|
1394
1562
|
for (const name of listAgentIds(lang)) {
|
|
1395
1563
|
const content = loadAgentTemplate(lang, name);
|
|
1396
1564
|
const filePath = join(agentsDir, `${name}.md`);
|
|
1397
|
-
const action = deployGlobalAsset(filePath, content, newGlobalState);
|
|
1565
|
+
const action = deployGlobalAsset(filePath, content, newGlobalState, 'update');
|
|
1398
1566
|
pushAction(action, filePath, created, updated, skipped, appended);
|
|
1399
1567
|
}
|
|
1400
1568
|
// 2. 生成 Skill 定义文件到全局 skills 目录(每个 Skill 一个子目录,包含 SKILL.md)
|
|
@@ -1402,27 +1570,51 @@ export function updateProject(projectPath, selectedTools = ["opencode"], lang =
|
|
|
1402
1570
|
const skillSubDir = join(skillsDir, name);
|
|
1403
1571
|
mkdirSync(skillSubDir, { recursive: true });
|
|
1404
1572
|
const filePath = join(skillSubDir, 'SKILL.md');
|
|
1405
|
-
const action = deployGlobalAsset(filePath, content, newGlobalState);
|
|
1573
|
+
const action = deployGlobalAsset(filePath, content, newGlobalState, 'update');
|
|
1406
1574
|
pushAction(action, filePath, created, updated, skipped, appended);
|
|
1407
1575
|
}
|
|
1408
1576
|
// 3. 全局 opencode.jsonc:深度合并(保留用户字段),加全局锁 + 原子写
|
|
1409
1577
|
const globalJsoncPath = getGlobalOpencodeJsoncPath();
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
const
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
merged = mergeGlobalOpencodeJsonc(current);
|
|
1578
|
+
try {
|
|
1579
|
+
// 写前备份(B3):备份须在 jsonc 锁之外(之前)完成,避免 backup 锁与 jsonc 锁嵌套
|
|
1580
|
+
const globalJsoncBackup = backupFileBeforeWrite(globalJsoncPath, { command: 'update' });
|
|
1581
|
+
if (globalJsoncBackup) {
|
|
1582
|
+
appendUpdateInfo('backed', { absolutePath: globalJsoncPath, backupRel: globalJsoncBackup.backupRel, command: 'update' });
|
|
1583
|
+
notifyBackupIfTTY(globalJsoncBackup.backupRel);
|
|
1417
1584
|
}
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1585
|
+
// REV-1805:read-merge-write 全部置于锁内,消除与 model-config 锁内读写的 TOCTOU 竞态
|
|
1586
|
+
const globalJsoncNew = withFileLock(globalLockPath('global-opencode-jsonc'), () => {
|
|
1587
|
+
// 安全读取(T50):目录占位/不可读 → null,跳过合并与写入,按空配置继续
|
|
1588
|
+
const current = readJsoncFile(globalJsoncPath);
|
|
1589
|
+
if (current === null) {
|
|
1590
|
+
return null;
|
|
1591
|
+
}
|
|
1592
|
+
let merged;
|
|
1593
|
+
// 合并可能因块注释 parse 失败抛异常(parseJsonc 边界):降级为「跳过合并、保留原文件」并告警
|
|
1594
|
+
try {
|
|
1595
|
+
merged = mergeGlobalOpencodeJsonc(current);
|
|
1596
|
+
}
|
|
1597
|
+
catch (err) {
|
|
1598
|
+
console.warn(t('update.globalJsoncParseSkipTmpl', getCliLang(projectPath), { err: err.message }));
|
|
1599
|
+
merged = current;
|
|
1600
|
+
}
|
|
1601
|
+
atomicWriteFileSync(globalJsoncPath, merged);
|
|
1602
|
+
return merged;
|
|
1603
|
+
});
|
|
1604
|
+
if (globalJsoncNew !== null) {
|
|
1605
|
+
updateFileHash(newGlobalState, globalJsoncPath, globalJsoncNew);
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
catch (err) {
|
|
1609
|
+
if (err instanceof BackupError) {
|
|
1610
|
+
// 备份失败(REV-011-A):跳过全局 jsonc 写入、记 anomaly、继续其余步骤(对齐 B3 幂等语义)
|
|
1611
|
+
appendUpdateInfo('anomaly', { absolutePath: globalJsoncPath, note: 'backup_failed' });
|
|
1612
|
+
console.warn(t('update.globalJsoncWriteSkipTmpl', getCliLang(projectPath), { err: err.message }));
|
|
1421
1613
|
}
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1614
|
+
else {
|
|
1615
|
+
throw err; // 非备份错误照旧上抛(锁超时等不回退)
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1426
1618
|
// 4. 项目 opencode.jsonc:不存在则写最小 { $schema };已存在则保留(旧非法字段清理属 stage-39)
|
|
1427
1619
|
const projectJsoncPath = resolve(projectPath, 'opencode.jsonc');
|
|
1428
1620
|
if (!existsSync(projectJsoncPath)) {
|
package/dist/core/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACnM,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAClK,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,yDAAyD;AACzD,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,mBAAmB,CAAC;AAqB3B,sBAAsB;AACtB,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,IAAI;KACd;IACD,QAAQ;IACR,mGAAmG;IACnG,+EAA+E;CAChF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;YAC9B,OAAO,EAAE,yBAAyB;YAClC,OAAO;YACP,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AACD,mEAAmE;AAEnE,mEAAmE;AAEnE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,4BAA4B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH/B;IACC,yBAAyB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD5B;IACC,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGtB;IACC,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCtB;IACC,2BAA2B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+H9B;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;CAoBpB;IACC,sBAAsB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMzB;IACC,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4E1B;IACC,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;CAoBrB;IACC,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;CAoBrB;IACC,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HvB;IACC,sBAAsB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEzB;IACC,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCxB;IACC,8BAA8B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHjC;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBpB;IACC,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB;CACA,CAAC;AACF,wCAAwC;AAExC,kEAAkE;AAElE,2CAA2C;AAC3C,SAAS,qBAAqB,CAAC,OAAe,EAAE,IAA8B;IAC5E,MAAM,KAAK,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAKD;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,WAA+B,EAC/B,MAAmD;IAEnD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACtC,kDAAkD;QAClD,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,sEAAsE;IACtE,MAAM,aAAa,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,UAAU,GAAG,aAAa,EAAE,WAAW,IAAI,IAAI,CAAC;IACtD,MAAM,YAAY,GAAG,aAAa,EAAE,IAAI,IAAI,OAAO,CAAC;IAEpD,0CAA0C;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,MAAM,UAAU,GAAG,aAAa,EAAE,WAAW,IAAI,IAAI,CAAC;IACtD,MAAM,YAAY,GAAG,aAAa,EAAE,IAAI,IAAI,QAAQ,CAAC;IAErD,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,oDAAoD;QACpD,qFAAqF;QACrF,MAAM,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;QAC/G,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,IAAI,UAAU,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,kBAAkB;QAClB,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,uDAAuD;YACvD,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACpE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,2CAA2C;QAC3C,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,mBAAmB,CAAC,QAAQ,EAAE,GAAG,QAAQ,GAAG,GAAG,GAAG,cAAc,EAAE,CAAC,CAAC;QACpE,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzI,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gDAAgD;IAChD,oEAAoE;IACpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxI,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,OAAe,EACf,KAAkB;IAElB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,sCAAsC;AACtC,SAAS,UAAU,CACjB,MAAqB,EACrB,QAAgB,EAChB,OAAiB,EACjB,OAAiB,EACjB,OAAiB,EACjB,QAAkB;IAElB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM;QAC9C,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM;QAC9C,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM;QAC9C,KAAK,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM;IAClD,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,gBAA0B,CAAC,UAAU,CAAC,EACtC,OAAuB,OAAO,EAC9B,OAA2E;IAE3E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,qEAAqE;IACrE,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,cAAc;IACd,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,iCAAiC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC9G,CAAC;IAED,aAAa;IACb,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IAEvC,aAAa;IACb,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,gBAAgB;IAChB,2CAA2C;IAC3C,gDAAgD;IAChD,IAAI,CAAC;QACH,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;IAED,kDAAkD;IAClD,MAAM,cAAc,GAAgB,WAAW,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAE/E,6DAA6D;IAC7D,yFAAyF;IACzF,qDAAqD;IACrD,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC;QAClG,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7E,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,sDAAsD;IACtD,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;QACC,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAChF,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,iDAAiD;IACjD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACpE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,4DAA4D;IAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACpE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,+CAA+C;IAC/C,MAAM,eAAe,GAAG,0BAA0B,EAAE,CAAC;IACrD,oEAAoE;IACpE,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;QAChF,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9F,IAAI,MAAc,CAAC;QACnB,yDAAyD;QACzD,IAAI,CAAC;YACH,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,sDAAuD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;QACD,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAEhE,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAChD,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpF,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT,YAAY,KAAK,IAAI;YACnB,CAAC,CAAC,+FAA+F;YACjG,CAAC,CAAC,uCAAuC,CAC5C,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7C,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;YACrC,gFAAgF;YAChF,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,YAAY,CAAC,CAAC;gBACrE,4EAA4E;gBAC5E,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBAC7F,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;YACvH,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACnD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,+BAA+B;gBAC/B,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC/D,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM;IACN,qDAAqD;IACrD,mBAAmB;IACnB,0CAA0C;IAC1C,MAAM,QAAQ,GAAgB,KAAK,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE1E,yDAAyD;IACzD,8DAA8D;IAC9D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,cAAc,CAAC,cAAc,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,QAAQ;IACR,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,cAAc,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEtD,aAAa;IACb,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAEtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,WAAmB,EACnB,YAAoB,EACpB,cAAsB,EACtB,eAAuB,EACvB,eAAuB,EACvB,aAAsB;IAEtB,gEAAgE;IAChE,MAAM,IAAI,GAAG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACpF,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjD,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG;QACtB,yBAAyB;QACzB,cAAc;QACd,SAAS;QACT,eAAe;QACf,+BAA+B,eAAe,MAAM;KACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,mBAAmB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,YAAoB,EACpB,IAAoB;IAEpB,kCAAkC;IAClC,IAAI,YAAY,KAAK,qBAAqB,EAAE,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,gDAAgD;IAChD,IAAI,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,IAAI,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE,CAAC;QAC3F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7C,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,oBAAoB;IACpB,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,CAAC;IAED,mBAAmB;IACnB,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"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"}
|