@fenglimg/fabric-cli 2.0.1 → 2.2.0-rc.1

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 (40) hide show
  1. package/dist/{chunk-PWLW3B57.js → chunk-2CY4BMTH.js} +5 -1
  2. package/dist/{chunk-D25XJ4BC.js → chunk-2R55HNVD.js} +105 -5
  3. package/dist/chunk-4R2CYEA4.js +116 -0
  4. package/dist/{chunk-BATF4PEJ.js → chunk-AOE6AYI7.js} +2 -2
  5. package/dist/{chunk-WWNXR34K.js → chunk-BO4XIZWZ.js} +8 -1
  6. package/dist/chunk-L4Q55UC4.js +52 -0
  7. package/dist/chunk-LFIKMVY7.js +27 -0
  8. package/dist/chunk-RYAFBNES.js +33 -0
  9. package/dist/chunk-T5RPGCCM.js +40 -0
  10. package/dist/chunk-WU6GAPKH.js +36 -0
  11. package/dist/{chunk-MF3OTILQ.js → chunk-XC5RUHLK.js} +29 -8
  12. package/dist/{config-XJIPZNUP.js → config-XYRBZJDU.js} +3 -3
  13. package/dist/{doctor-EJDSEJSS.js → doctor-YONYXDX6.js} +147 -24
  14. package/dist/index.js +58 -10
  15. package/dist/{install-EKWMFLUU.js → install-74ANPCCP.js} +320 -75
  16. package/dist/{metrics-ACEQFPDU.js → metrics-RER6NLFC.js} +22 -9
  17. package/dist/{onboard-coverage-MFCAEBDO.js → onboard-coverage-JWQWDZW7.js} +1 -1
  18. package/dist/scope-explain-CDIZESP5.js +37 -0
  19. package/dist/status-GLQWLWH6.js +23 -0
  20. package/dist/store-XB3ADT65.js +144 -0
  21. package/dist/sync-UJ4BBCZJ.js +251 -0
  22. package/dist/{uninstall-MH7ZIB6M.js → uninstall-C3QXKOO6.js} +47 -7
  23. package/dist/whoami-2MLO4Y37.js +36 -0
  24. package/package.json +3 -3
  25. package/templates/hooks/fabric-hint.cjs +139 -7
  26. package/templates/hooks/knowledge-hint-broad.cjs +204 -9
  27. package/templates/hooks/knowledge-hint-narrow.cjs +49 -4
  28. package/templates/hooks/lib/bindings-snapshot-reader.cjs +81 -0
  29. package/templates/hooks/lib/cite-contract-reminder.cjs +15 -9
  30. package/templates/hooks/lib/cite-line-parser.cjs +48 -26
  31. package/templates/hooks/lib/injection-log.cjs +91 -0
  32. package/templates/hooks/lib/state-store.cjs +30 -11
  33. package/templates/skills/fabric-archive/SKILL.md +4 -0
  34. package/templates/skills/fabric-audit/SKILL.md +53 -0
  35. package/templates/skills/fabric-connect/SKILL.md +48 -0
  36. package/templates/skills/fabric-import/SKILL.md +4 -0
  37. package/templates/skills/fabric-review/SKILL.md +6 -0
  38. package/templates/skills/fabric-review/ref/cite-contract.md +56 -0
  39. package/templates/skills/fabric-store/SKILL.md +44 -0
  40. package/templates/skills/fabric-sync/SKILL.md +46 -0
@@ -0,0 +1,56 @@
1
+ # Cite-contract + 裁决阶梯参考 (v2.2 SK5)
2
+
3
+ > 本文是 cite policy 与裁决(adjudication)的**权威详参**,从 bootstrap (`.fabric/AGENTS.md`) 下沉至此,避免 bootstrap 随治理细节膨胀。bootstrap 只留**可执行 core**(cite 行格式 + 验证义务 + operator 例),完整 enum 词典 / 类型路由 / 稽核 / backward-compat / 裁决阶梯看这里。`fabric doctor --cite-coverage` 的稽核口径以本文为准。
4
+
5
+ ## 1. Cite 行格式 (回顾)
6
+
7
+ edit / decide / propose plan 之前,**回复首行**:
8
+
9
+ ```
10
+ KB: <id> (<≤8字 用法>) [applied|dismissed:<reason>]
11
+ KB: none [<reason>]
12
+ ```
13
+
14
+ - `[applied]` 前必须先 `fab_recall`(或 `fab_plan_context` → `fab_get_knowledge_sections`)实际抓 KB body —— 防编造 id。验证不通过 = 不能 cite。
15
+ - **store 前缀** (多 store):read-set 含多 store 且同一 local id 跨 store shadow 时,cite 必须 store-qualified:`KB: <store-alias>:<id> ...`(如 `KB: team:KT-DEC-0001 (auth) [applied]`)。单 store / 无歧义时裸 `KB: <id>` 仍 valid。personal-only 条目 cite 进团队产物 = 强 warning(防泄漏 R5#3)。
16
+
17
+ ## 2. Contract 语法 (decisions/pitfalls 类 `[applied]`)
18
+
19
+ cite 尾段加 contract:`→ <operator> [<operator> ...]`
20
+
21
+ | operator | 含义 |
22
+ |---|---|
23
+ | `edit:<glob>` | 本 cite 承诺会改的文件范围 |
24
+ | `!edit:<glob>` | 承诺**不**改的范围 |
25
+ | `require:<symbol>` | 实现必须含某 symbol |
26
+ | `forbid:<symbol>` | 实现必须不含某 symbol |
27
+ | `skip:<reason>` | 本条 applied 但某 operator 跳过,附理由 |
28
+
29
+ 例:`KB: K-001 (auth) [applied] → edit:src/auth/**/*.ts !edit:src/legacy/**`
30
+
31
+ ## 3. 枚举词典
32
+
33
+ - **skip reason**:`sequencing | conditional | semantic | aesthetic | architectural | other:<text>`
34
+ - **dismissed reason**:`scope-mismatch | outdated | not-applicable | other:<text>`
35
+ - **`KB: none` sentinel**:`[no-relevant]`(已调 recall/plan_context 但无可用条目) / `[not-applicable]`(当前动作不在 cite 范围:纯探索 / Bash 只读 / 用户问答)。裸 `KB: none` 仍 valid,归 `[unspecified]`(legacy 兼容)。
36
+
37
+ ## 4. 类型路由
38
+
39
+ - `models` 类引用 = reference cite,**不需 contract**。
40
+ - `guidelines` / `processes` 类暂不强制 contract,推后 LLM-judge。
41
+ - `decisions` / `pitfalls` 类 `[applied]` **需** contract。
42
+
43
+ ## 5. 稽核 + Backward compat
44
+
45
+ - 稽核:`fabric doctor --cite-coverage [--since=7d] [--client=cc|codex|all]` 输出覆盖率,含 `KB: none` sentinel 拆分。不阻断工作,只记录。
46
+ - Backward compat:解析器同时接受老 4-state tags(`planned` / `recalled` / `chained-from <id>`),都映射到 `[applied]` 语义;旧 session cite 仍计入 cite-coverage。
47
+
48
+ ## 6. 裁决阶梯 (adjudication ladder)
49
+
50
+ 执行中遇到**需要拍板**的分歧(plan 选型 / review 取舍 / cross-LLM 不一致),按三级阶梯收口,**只有真正属于 human 的决定才阻塞**:
51
+
52
+ 1. **AI 自决** — 已有清晰证据 + 明确推荐时,直接执行,记 rationale。不为有默认值的选择拆 sub-question。
53
+ 2. **多-LLM 评审(含 ≥1 零上下文冷评)** — 主观 / 高风险 / 跨 LLM 分歧时,maestro delegate ≥2 LLM(至少一个零上下文,防执行者自我合理化)。一致 PASS 自动闭;一致 BLOCK + fix verbatim 采纳重跑。
54
+ 3. **非阻塞队列** — 仍分歧 / 主观 / 不可逆 / 属 frame 级(只有 human 能挑战 frame)→ 升 `needs_adjudication` 非阻塞队列,带两方理由 + AI 倾向裁决,继续推进不卡死。
55
+
56
+ **Anchor**:critic 只能 frame 内审计;多-LLM 收敛 ≠ 正确,frame 级判断留给 human。cross-LLM 给 suggested fix 时直接 verbatim 采纳(+ trade-off 注释)。
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: fabric-store
3
+ description: 知识 store 运维门面 — 创建 / 挂载 / 绑定 / 列出 / 切换写目标。CLI `fabric store …` 做事,本 skill 按用户意图选命令。NOT for git-managing 用户自己的产品仓。Triggers 创建 store/挂载 store/绑定知识库/store 列表/切换写库/set up knowledge store.
4
+ ---
5
+
6
+ # fabric-store — 知识 store 运维
7
+
8
+ 每个「知识 store」操作的对话入口。CLI (`fabric store …`) 是引擎;本 skill 按用户意图挑命令。*store* 是 `~/.fabric/stores/<uuid>/` 下的平行 git 仓 —— 与用户的产品仓不同。同步 (pull+push) 见姊妹 skill `fabric-sync`。
9
+
10
+ ## When to use
11
+
12
+ - 「创建团队 store」「建个人知识 store」
13
+ - 「挂载团队 store」「这个项目要绑团队 store」
14
+ - 「列出挂了哪些 store?」「我的共享决策写到哪个 store?」
15
+
16
+ ## When NOT to use
17
+
18
+ - git 同步用户自己的产品仓 (那是普通 `git`)。
19
+ - 同步知识 store (pull/push 冲突解决) → 用 `fabric-sync` skill。
20
+ - 写知识条目 → 用 `fabric-archive` / `fabric-review`。
21
+
22
+ ## 意图 → 命令映射
23
+
24
+ | 意图 | 命令 |
25
+ |---|---|
26
+ | 创建全新本地 store | `fabric store create --alias <a> [--remote <url>]` |
27
+ | 挂载已存在的磁盘 store | `fabric store add --uuid <u> --alias <a> [--remote <url>]` |
28
+ | 本项目声明需要某 store | `fabric store bind <alias-or-uuid>` |
29
+ | 列出挂载的 store | `fabric store list` |
30
+ | 设置非 personal scope 的写目标 | `fabric store switch-write <alias>` |
31
+ | 解释某 alias 如何解析 | `fabric store explain <alias>` |
32
+ | 同步 (pull+push) | 见 `fabric-sync` skill |
33
+
34
+ ## Precondition
35
+
36
+ 已 `fabric install --global` (存在 `~/.fabric` + 全局 store registry)。无全局配置 → 提示先 `fabric install --global`,停止。
37
+
38
+ ## Constraints
39
+
40
+ - `store remove` 是 *detach ≠ delete*:从 registry 卸载但 MUST 保留磁盘 git 树。
41
+ - `store add` MUST 拒绝磁盘无 store 树的 uuid (无「幽灵挂载」) —— 先 clone (`fabric install --global --url <remote>`) 或 `store create`。
42
+ - 知识条目写在各 store 的 `.fabric/knowledge/` 下;本 skill 只管 store 生命周期,不写条目。
43
+ - Personal-scope 写永远落在隐式 personal store,与 active write store 无关。
44
+ - Hook/skill NEVER 直接解析 store 或执行 store 内文件 (S65 RCE 防线:store 是数据-only);所有 store 状态 MUST 经 CLI JSON 输出获取。
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: fabric-sync
3
+ description: 多 store git 同步辅助 — 遍历挂载的知识 store, pull --rebase + push, AI 辅助解冲突。Triggers 同步知识库/sync stores/fabric-sync/解决 store 冲突/rebase 冲突.
4
+ ---
5
+
6
+ # fabric-sync
7
+
8
+ 跨多个挂载知识 store 的 git 同步辅助 (v2.1, S46)。CLI `fabric sync` 是事务/状态机引擎;本 skill 是它的 AI 辅助外层:遍历 store、解释每个 store 的同步结果、在 rebase 冲突时辅助用户决断 continue/abort。
9
+
10
+ ## Precondition
11
+
12
+ - 已 `fabric install --global` (存在 `~/.fabric` + 全局 store registry)。无全局配置 → 提示先装,停止。
13
+ - 本 skill 不直接读 `~/.fabric` store 树;所有 store 状态经 `fabric sync` / `fabric store list` / `fabric scope-explain` 的 JSON 输出获取 (hook/skill 不自解析 store)。
14
+
15
+ ## Phase 0 — Enumerate stores
16
+
17
+ `fabric store list` 拿到挂载的 store (alias / uuid / remote)。仅 remote-backed store 参与同步;local-only store 跳过 (无可推/拉),但提示「local-only — 加 remote 备份」(R5#5)。
18
+
19
+ ## Phase 1 — Run sync
20
+
21
+ 执行 `fabric sync`。逐 store 渲染结果 (NOT 聚合成一坨):
22
+ - `synced` — 干净 rebase + push 完成。
23
+ - `offline` — 网络不可达;本地已提交,push 已 defer (S17 offline-first),下次 online 重试。**不报错**。
24
+ - `conflict` — rebase 冲突,sync 暂停并持久化 session。进入 Phase 2。
25
+
26
+ ## Phase 2 — AI-assisted conflict resolution (仅冲突时)
27
+
28
+ 冲突 store 的工作区停在 rebase 中途。辅助用户:
29
+ 1. 展示冲突文件 (store 知识树 `.fabric/knowledge/<type>/*.md` 中的 `<<<<<<<`/`=======`/`>>>>>>>` 段)。
30
+ 2. 对每个冲突,MUST 解释两侧 (ours = 本地草稿/晋升, theirs = 远端协作者) 并给出**合并建议**(知识条目通常可并存或取更成熟 maturity)。NEVER 擅自丢弃任一侧未经用户确认。
31
+ 3. 用户解决后 → `fabric sync --continue` (git rebase --continue + 恢复遍历剩余 store)。
32
+ 4. 用户选择放弃该 store → `fabric sync --abort` (git rebase --abort,该 store 留未同步,继续遍历其余)。
33
+
34
+ ## Phase 3 — Settle
35
+
36
+ 所有 store settled (无 pending/conflict) 后:CLI 自动清 session 并重生 `~/.fabric/state/bindings/<id>_resolved.json` 快照 (P3→P4 链)。汇报:已同步 store 数、deferred (offline) store 数、aborted store 数。
37
+
38
+ ## UX i18n Policy
39
+
40
+ 按 `.fabric/fabric-config.json` 的 `fabric_language` 渲染用户可见文案。Protected tokens (`fabric sync`, `--continue`, `--abort`, `git rebase`, store alias, enum) NEVER translate。
41
+
42
+ ## Constraints
43
+
44
+ - Hook/skill **绝不**直接解析 store 或执行 store 内任何文件 (S65 RCE 防线:store 是数据-only)。
45
+ - 冲突合并建议是辅助,最终由用户拍板;不静默丢弃知识。
46
+ - promotion/CR 经普通 git commit,不跨 store 搬运条目。