@fenglimg/fabric-shared 2.0.0-rc.10 → 2.0.0-rc.13

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.
@@ -278,6 +278,23 @@ var _FabExtractKnowledgeInputBaseSchema = z.object({
278
278
  // empty placeholders; cap is soft (no max), Skill caps at ~600 chars.
279
279
  session_context: z.string().min(20, { message: "session_context must be \u226520 chars (3-5 lines describing goal + turning point)" }).describe(
280
280
  "3-5 line markdown blob \u2014 session goal + key turning point. Reviewed by future-self without transcript access."
281
+ ),
282
+ // v2.0.0-rc.8 A1 (skill-contract-fix): relevance scope/paths on the
283
+ // creation surface. Mirrors `_fabReviewModifyChangesSchema.relevance_*`
284
+ // (L518-533) verbatim so callers can declare scope at archive time
285
+ // instead of waiting for a fab_review.modify follow-up. Both fields are
286
+ // optional — when omitted, the pending file omits the YAML lines entirely
287
+ // (knowledge-meta-builder defaults to broad + [] at parse time, see
288
+ // L1007-1021). Personal + narrow is silently degraded to broad + [] at
289
+ // service entry, mirroring the rc.5 review.ts:725-739 behaviour, and emits
290
+ // a `knowledge_scope_degraded` event keyed by `pending:<idempotency_key>`.
291
+ // NOTE: these fields MUST NOT be part of the idempotency hash inputs at
292
+ // extract-knowledge.ts:78 — preserves rc.5→rc.7 collision detection.
293
+ relevance_scope: z.enum(["narrow", "broad"]).optional().describe(
294
+ "Optional relevance scope. 'narrow' restricts plan-context-hint surfacing to relevance_paths; 'broad' always surfaces. Omit to let the meta-builder default to 'broad'. Personal + narrow is silently degraded to broad + []."
295
+ ),
296
+ relevance_paths: z.array(z.string()).optional().describe(
297
+ "Optional path anchors for narrow scope. Workspace-relative globs or paths. Omit to let the meta-builder default to []. Ignored when scope is broad (server preserves the array for audit)."
281
298
  )
282
299
  });
283
300
  var FabExtractKnowledgeInputSchema = _FabExtractKnowledgeInputBaseSchema.superRefine(
@@ -77,113 +77,114 @@ var enMessages = {
77
77
  "cli.human-lint.table.location": "Location",
78
78
  "cli.human-lint.table.expected": "Expected",
79
79
  "cli.human-lint.table.got": "Got",
80
- "cli.init.description": "Initialize Fabric in the target project.",
81
- "cli.init.args.target.description": "Target project path. Defaults to CLI arg, EXTERNAL_FIXTURE_PATH, fabric.config.json, then cwd.",
82
- "cli.init.args.debug.description": "Print target resolution details to stderr.",
83
- "cli.init.args.force.description": "Overwrite existing files (bypass non-destructive guard)",
84
- "cli.init.args.yes.description": "Accept the current init plan and run without the TTY wizard",
85
- "cli.init.args.plan.description": "Print the init plan without writing files or running follow-up stages",
86
- "cli.init.args.reapply.description": "Reapply Fabric-managed files and stage installers over an existing setup",
87
- "cli.init.args.no-bootstrap.description": "Compatibility flag: remove bootstrap from the init plan",
88
- "cli.init.args.no-mcp.description": "Compatibility flag: remove MCP configuration from the init plan",
89
- "cli.init.args.no-hooks.description": "Compatibility flag: remove git hooks from the init plan",
90
- "cli.init.args.interactive.description": "Compatibility flag: disable the TTY wizard and use direct execution",
91
- "cli.init.mcp.install.global": "Using globally-installed @fenglimg/fabric-server",
92
- "cli.init.mcp.install.local": "Installing @fenglimg/fabric-server to project devDependencies",
93
- "cli.init.mcp.install.prompt": "MCP server install scope (global|local)",
94
- "cli.init.mcp.install.invalid": 'Invalid --mcp-install value "{value}" \u2014 falling back to global',
95
- "cli.init.mcp.local.installing": "Running {manager} add -D @fenglimg/fabric-server...",
96
- "cli.init.mcp.local.installed": "Installed to devDependencies",
97
- "cli.init.mcp.scope.description": "Claude MCP config scope: project (writes .mcp.json) or user (writes ~/.claude.json)",
98
- "cli.init.mcp.scope.invalid": 'Invalid --scope value "{value}" \u2014 falling back to project',
99
- "cli.init.mcp.scope.project": "Writes .mcp.json in project root (per Claude Code spec)",
100
- "cli.init.mcp.scope.user": "Writes ~/.claude.json (user-scoped, applies to all projects)",
101
- "cli.init.wizard.mcp-scope": "Claude MCP config scope (project/.mcp.json or user/~/.claude.json) [{defaultValue}]",
102
- "cli.init.created-path": "{label} {path}",
103
- "cli.init.skipped-existing-path": "{label} {path}: already exists.",
104
- "cli.init.force.overwritten": "Overwritten",
105
- "cli.init.force.warning": "--force will overwrite existing Fabric artifacts in {path}",
106
- "cli.init.stages.bootstrap": "Installing bootstrap templates...",
107
- "cli.init.stages.mcp": "Configuring MCP clients...",
108
- "cli.init.stages.hooks": "Installing git hooks...",
109
- "cli.init.stages.skipped": "skipped",
110
- "cli.init.stages.completed": "completed",
111
- "cli.init.stages.failed": "failed",
112
- "cli.init.stages.summary.ran": "ran",
113
- "cli.init.stages.summary.skipped": "skipped",
114
- "cli.init.stages.summary.failed": "failed",
115
- "cli.init.next-step": "{label} {message}",
116
- "cli.init.reason-message": "{label} {message}",
117
- "cli.init.plan.title": "Fabric init plan",
118
- "cli.init.plan.mode-banner.default": "[mode: apply] Standard init execution",
119
- "cli.init.plan.mode-banner.plan": "[mode: plan] Dry run only, no files will be written",
120
- "cli.init.plan.mode-banner.reapply": "[mode: reapply] Force reapplying Fabric-managed assets",
121
- "cli.init.plan.mode-banner.plan-reapply": "[mode: plan+reapply] Previewing a forced reapply without writing files",
122
- "cli.init.plan.target": "Target: {target}",
123
- "cli.init.plan.actions": "Plan: bootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
124
- "cli.init.plan.detected": "Detected clients: {clients}",
125
- "cli.init.plan.writes": "Core writes:",
126
- "cli.init.plan.preview-title": "Fabric init dry run",
127
- "cli.init.plan.preview-result": "Mode={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
128
- "cli.init.mode.default": "default",
129
- "cli.init.mode.reapply": "reapply",
130
- "cli.init.mode.badge.default": "APPLY",
131
- "cli.init.mode.badge.plan": "PLAN",
132
- "cli.init.mode.badge.reapply": "REAPPLY",
133
- "cli.init.mode.badge.plan-reapply": "PLAN + REAPPLY",
134
- "cli.init.compat.plan": "Using standard --plan mode: no files will be written.",
135
- "cli.init.compat.interactive": "Compatibility: --interactive=false disables the TTY wizard.",
136
- "cli.init.compat.legacy-stage-flags": "Compatibility: legacy --no-* flags are being mapped into the init plan.",
137
- "cli.init.wizard.title": "Fabric init wizard",
138
- "cli.init.wizard.intro": "Fabric init",
139
- "cli.init.wizard.overview.title": "Install overview",
140
- "cli.init.wizard.overview.body": "Target: {target}\nMode: {mode}\nThis wizard only reshapes the init plan; execution still runs through the existing Fabric init stages.",
141
- "cli.init.wizard.step.target": "Confirm target",
142
- "cli.init.wizard.step.plan": "Shape init plan",
143
- "cli.init.wizard.step.review": "Review final plan",
144
- "cli.init.wizard.target.confirm": "Continue initializing Fabric in {target}? [Y/n]",
145
- "cli.init.wizard.stage.bootstrap": "Install bootstrap templates? [{defaultValue}]",
146
- "cli.init.wizard.stage.mcp": "Configure MCP clients? [{defaultValue}]",
147
- "cli.init.wizard.stage.hooks": "Install git hooks? [{defaultValue}]",
148
- "cli.init.wizard.mcp-install": "MCP server install scope (global/local) [{defaultValue}]",
149
- "cli.init.wizard.execute.confirm": "Execute this init plan now? [Y/n]",
150
- "cli.init.wizard.outro": "Init plan accepted. Running Fabric init...",
151
- "cli.init.wizard.invalid-yes-no": "Please answer yes or no.",
152
- "cli.init.wizard.invalid-select": "Invalid value. Use one of: {options}.",
153
- "cli.init.wizard.cancelled": "Fabric init cancelled before execution.",
154
- "cli.init.capabilities.title": "Client capability summary",
155
- "cli.init.capabilities.none": "No supported client was detected for bootstrap or MCP follow-up.",
156
- "cli.init.capabilities.header.client": "Client",
157
- "cli.init.capabilities.header.bootstrap": "Bootstrap",
158
- "cli.init.capabilities.header.mcp": "MCP",
159
- "cli.init.capabilities.header.hook": "Hook",
160
- "cli.init.capabilities.header.skill": "Skill",
161
- "cli.init.capabilities.header.follow-up": "Follow-up",
162
- "cli.init.capabilities.status.ready": "ready",
163
- "cli.init.capabilities.status.installed": "installed",
164
- "cli.init.capabilities.status.supported": "supported",
165
- "cli.init.capabilities.status.manual": "manual",
166
- "cli.init.capabilities.status.skipped": "skipped",
167
- "cli.init.capabilities.status.failed": "failed",
168
- "cli.init.capabilities.status.na": "n/a",
169
- "cli.init.capabilities.follow-up.ready": "continue in client",
170
- "cli.init.capabilities.follow-up.install": "install client assets",
171
- "cli.init.capabilities.follow-up.manual": "manual step required",
172
- "cli.init.next-step.message": "run fab hooks install to add the Day 4 pre-commit pipeline.",
173
- "cli.init.reason-message.installable-body": ".fabric/forensic.json is ready; some detected clients support Fabric follow-up but still need client assets installed.",
174
- "cli.init.reason-message.manual-body": ".fabric/forensic.json is ready; some detected clients still need manual follow-up because no Fabric skill is installed for them yet.",
175
- "cli.init.codex-hooks.created": "{label} {path} with Codex hooks config (requires features.codex_hooks = true).",
176
- "cli.init.codex-hooks.updated": "{label} {path} with Codex hooks config (requires features.codex_hooks = true).",
177
- "cli.init.codex-hooks.skipped": "{label} {path}: Codex hooks config already present.",
178
- "cli.init.claude-settings.created": "{label} {path} with Claude Stop hook.",
179
- "cli.init.claude-settings.updated": "{label} {path} with Claude Stop hook.",
180
- "cli.init.claude-settings.skipped": "{label} {path}: Claude Stop hook already present.",
181
- "cli.init.claude-settings.skipped-invalid": "{label} {path}: unable to merge Claude Stop hook.",
182
- "cli.init.claude-settings.invalid-object": "{label} {path}: expected a JSON object.",
183
- "cli.init.claude-settings.invalid-json": "{label} {path}: invalid JSON ({reason}).",
184
- "cli.init.claude-settings.invalid-hooks": '{label} {path}: "hooks" must be a JSON object.',
185
- "cli.init.claude-settings.invalid-stop-array": '{label} {path}: "hooks.Stop" must be an array.',
186
- "cli.init.errors.abort-existing": "ABORT: {path} already exists. fab init is non-destructive.",
80
+ "cli.install.description": "Install Fabric in the target project.",
81
+ "cli.install.args.target.description": "Target project path. Defaults to CLI arg, EXTERNAL_FIXTURE_PATH, fabric.config.json, then cwd.",
82
+ "cli.install.args.debug.description": "Print target resolution details to stderr.",
83
+ "cli.install.args.force.description": "Overwrite existing files (bypass non-destructive guard)",
84
+ "cli.install.args.yes.description": "Accept the current install plan and run without the TTY wizard",
85
+ "cli.install.args.plan.description": "Print the install plan without writing files or running follow-up stages",
86
+ "cli.install.args.reapply.description": "Reapply Fabric-managed files and stage installers over an existing setup",
87
+ "cli.install.args.no-bootstrap.description": "Compatibility flag: remove bootstrap from the install plan",
88
+ "cli.install.args.no-mcp.description": "Compatibility flag: remove MCP configuration from the install plan",
89
+ "cli.install.args.no-hooks.description": "Compatibility flag: remove git hooks from the install plan",
90
+ "cli.install.args.interactive.description": "Compatibility flag: disable the TTY wizard and use direct execution",
91
+ "cli.install.mcp.install.global": "Using globally-installed @fenglimg/fabric-server",
92
+ "cli.install.mcp.install.local": "Installing @fenglimg/fabric-server to project devDependencies",
93
+ "cli.install.mcp.install.prompt": "MCP server install scope (global|local)",
94
+ "cli.install.mcp.install.invalid": 'Invalid --mcp-install value "{value}" \u2014 falling back to global',
95
+ "cli.install.mcp.local.installing": "Running {manager} add -D @fenglimg/fabric-server...",
96
+ "cli.install.mcp.local.installed": "Installed to devDependencies",
97
+ "cli.install.mcp.scope.description": "Claude MCP config scope: project (writes .mcp.json) or user (writes ~/.claude.json)",
98
+ "cli.install.mcp.scope.invalid": 'Invalid --scope value "{value}" \u2014 falling back to project',
99
+ "cli.install.mcp.scope.project": "Writes .mcp.json in project root (per Claude Code spec)",
100
+ "cli.install.mcp.scope.user": "Writes ~/.claude.json (user-scoped, applies to all projects)",
101
+ "cli.install.wizard.mcp-scope": "Claude MCP config scope (project/.mcp.json or user/~/.claude.json) [{defaultValue}]",
102
+ "cli.install.created-path": "{label} {path}",
103
+ "cli.install.skipped-existing-path": "{label} {path}: already exists.",
104
+ "cli.install.force.overwritten": "Overwritten",
105
+ "cli.install.force.warning": "--force will overwrite existing Fabric artifacts in {path}",
106
+ "cli.install.stages.bootstrap": "Installing bootstrap templates...",
107
+ "cli.install.stages.mcp": "Configuring MCP clients...",
108
+ "cli.install.stages.hooks": "Installing git hooks...",
109
+ "cli.install.stages.skipped": "skipped",
110
+ "cli.install.stages.completed": "completed",
111
+ "cli.install.stages.failed": "failed",
112
+ "cli.install.stages.summary.ran": "ran",
113
+ "cli.install.stages.summary.skipped": "skipped",
114
+ "cli.install.stages.summary.failed": "failed",
115
+ "cli.install.next-step": "{label} {message}",
116
+ "cli.install.reason-message": "{label} {message}",
117
+ "cli.install.language_preference_hint": "Fabric language preference: {value}. To change, edit `fabric_language` in `.fabric/fabric-config.json` (values: match-existing | zh-CN | en | zh-CN-hybrid).",
118
+ "cli.install.plan.title": "Fabric install plan",
119
+ "cli.install.plan.mode-banner.default": "[mode: apply] Standard install execution",
120
+ "cli.install.plan.mode-banner.plan": "[mode: plan] Dry run only, no files will be written",
121
+ "cli.install.plan.mode-banner.reapply": "[mode: reapply] Force reapplying Fabric-managed assets",
122
+ "cli.install.plan.mode-banner.plan-reapply": "[mode: plan+reapply] Previewing a forced reapply without writing files",
123
+ "cli.install.plan.target": "Target: {target}",
124
+ "cli.install.plan.actions": "Plan: bootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
125
+ "cli.install.plan.detected": "Detected clients: {clients}",
126
+ "cli.install.plan.writes": "Core writes:",
127
+ "cli.install.plan.preview-title": "Fabric install dry run",
128
+ "cli.install.plan.preview-result": "Mode={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
129
+ "cli.install.mode.default": "default",
130
+ "cli.install.mode.reapply": "reapply",
131
+ "cli.install.mode.badge.default": "APPLY",
132
+ "cli.install.mode.badge.plan": "PLAN",
133
+ "cli.install.mode.badge.reapply": "REAPPLY",
134
+ "cli.install.mode.badge.plan-reapply": "PLAN + REAPPLY",
135
+ "cli.install.compat.plan": "Using standard --plan mode: no files will be written.",
136
+ "cli.install.compat.interactive": "Compatibility: --interactive=false disables the TTY wizard.",
137
+ "cli.install.compat.legacy-stage-flags": "Compatibility: legacy --no-* flags are being mapped into the install plan.",
138
+ "cli.install.wizard.title": "Fabric install wizard",
139
+ "cli.install.wizard.intro": "Fabric install",
140
+ "cli.install.wizard.overview.title": "Install overview",
141
+ "cli.install.wizard.overview.body": "Target: {target}\nMode: {mode}\nThis wizard only reshapes the install plan; execution still runs through the existing Fabric install stages.",
142
+ "cli.install.wizard.step.target": "Confirm target",
143
+ "cli.install.wizard.step.plan": "Shape install plan",
144
+ "cli.install.wizard.step.review": "Review final plan",
145
+ "cli.install.wizard.target.confirm": "Continue installing Fabric in {target}? [Y/n]",
146
+ "cli.install.wizard.stage.bootstrap": "Install bootstrap templates? [{defaultValue}]",
147
+ "cli.install.wizard.stage.mcp": "Configure MCP clients? [{defaultValue}]",
148
+ "cli.install.wizard.stage.hooks": "Install git hooks? [{defaultValue}]",
149
+ "cli.install.wizard.mcp-install": "MCP server install scope (global/local) [{defaultValue}]",
150
+ "cli.install.wizard.execute.confirm": "Execute this install plan now? [Y/n]",
151
+ "cli.install.wizard.outro": "Install plan accepted. Running Fabric install...",
152
+ "cli.install.wizard.invalid-yes-no": "Please answer yes or no.",
153
+ "cli.install.wizard.invalid-select": "Invalid value. Use one of: {options}.",
154
+ "cli.install.wizard.cancelled": "Fabric install cancelled before execution.",
155
+ "cli.install.capabilities.title": "Client capability summary",
156
+ "cli.install.capabilities.none": "No supported client was detected for bootstrap or MCP follow-up.",
157
+ "cli.install.capabilities.header.client": "Client",
158
+ "cli.install.capabilities.header.bootstrap": "Bootstrap",
159
+ "cli.install.capabilities.header.mcp": "MCP",
160
+ "cli.install.capabilities.header.hook": "Hook",
161
+ "cli.install.capabilities.header.skill": "Skill",
162
+ "cli.install.capabilities.header.follow-up": "Follow-up",
163
+ "cli.install.capabilities.status.ready": "ready",
164
+ "cli.install.capabilities.status.installed": "installed",
165
+ "cli.install.capabilities.status.supported": "supported",
166
+ "cli.install.capabilities.status.manual": "manual",
167
+ "cli.install.capabilities.status.skipped": "skipped",
168
+ "cli.install.capabilities.status.failed": "failed",
169
+ "cli.install.capabilities.status.na": "n/a",
170
+ "cli.install.capabilities.follow-up.ready": "continue in client",
171
+ "cli.install.capabilities.follow-up.install": "install client assets",
172
+ "cli.install.capabilities.follow-up.manual": "manual step required",
173
+ "cli.install.next-step.message": "run fab hooks install to add the Day 4 pre-commit pipeline.",
174
+ "cli.install.reason-message.installable-body": ".fabric/forensic.json is ready; some detected clients support Fabric follow-up but still need client assets installed.",
175
+ "cli.install.reason-message.manual-body": ".fabric/forensic.json is ready; some detected clients still need manual follow-up because no Fabric skill is installed for them yet.",
176
+ "cli.install.codex-hooks.created": "{label} {path} with Codex hooks config (requires features.codex_hooks = true).",
177
+ "cli.install.codex-hooks.updated": "{label} {path} with Codex hooks config (requires features.codex_hooks = true).",
178
+ "cli.install.codex-hooks.skipped": "{label} {path}: Codex hooks config already present.",
179
+ "cli.install.claude-settings.created": "{label} {path} with Claude Stop hook.",
180
+ "cli.install.claude-settings.updated": "{label} {path} with Claude Stop hook.",
181
+ "cli.install.claude-settings.skipped": "{label} {path}: Claude Stop hook already present.",
182
+ "cli.install.claude-settings.skipped-invalid": "{label} {path}: unable to merge Claude Stop hook.",
183
+ "cli.install.claude-settings.invalid-object": "{label} {path}: expected a JSON object.",
184
+ "cli.install.claude-settings.invalid-json": "{label} {path}: invalid JSON ({reason}).",
185
+ "cli.install.claude-settings.invalid-hooks": '{label} {path}: "hooks" must be a JSON object.',
186
+ "cli.install.claude-settings.invalid-stop-array": '{label} {path}: "hooks.Stop" must be an array.',
187
+ "cli.install.errors.abort-existing": "ABORT: {path} already exists. fab install is non-destructive.",
187
188
  "cli.uninstall.description": "Uninstall Fabric from the target project.",
188
189
  "cli.uninstall.args.target.description": "Target project path. Defaults to CLI arg, EXTERNAL_FIXTURE_PATH, fabric.config.json, then cwd.",
189
190
  "cli.uninstall.args.debug.description": "Print target resolution details to stderr.",
@@ -244,7 +245,7 @@ var enMessages = {
244
245
  "cli.scan.args.target.description": "Target absolute path. Defaults to CLI arg, EXTERNAL_FIXTURE_PATH, fabric.config.json, then cwd.",
245
246
  "cli.scan.args.debug.description": "Print detection evidence in formatted output.",
246
247
  "cli.scan.args.json.description": "Print the diagnostic report as JSON.",
247
- "cli.scan.error.missing-forensic": "forensic.json not found at {path}; run `fabric init` first to produce the deterministic project snapshot.",
248
+ "cli.scan.error.missing-forensic": "forensic.json not found at {path}; run `fabric install` first to produce the deterministic project snapshot.",
248
249
  "cli.scan.summary.created": "Wrote {count} knowledge entries to .fabric/knowledge/.",
249
250
  "cli.scan.summary.skipped": "No changes detected; {count} entries already up-to-date.",
250
251
  "cli.scan.report.title": "Fabric scan report",
@@ -259,7 +260,7 @@ var enMessages = {
259
260
  "cli.scan.report.recommendations": "Recommendations:",
260
261
  "cli.scan.readme-quality.ok": "ok",
261
262
  "cli.scan.readme-quality.stub": "stub",
262
- "cli.scan.recommendation.init": "L0: Run fab init to scaffold .fabric/bootstrap/README.md with TODO markers.",
263
+ "cli.scan.recommendation.init": "L0: Run fab install to scaffold .fabric/bootstrap/README.md with TODO markers.",
263
264
  "cli.scan.recommendation.readme": "L0: Expand README.md before promoting project facts into Fabric references.",
264
265
  "cli.scan.recommendation.contributing": "L0: Add CONTRIBUTING.md or leave a bootstrap TODO reference for contribution flow.",
265
266
  "cli.scan.recommendation.unknown-framework": "L1: Add tech-stack TODOs manually because no framework marker was detected.",
@@ -564,113 +565,114 @@ var zhCNMessages = {
564
565
  "cli.human-lint.table.location": "\u4F4D\u7F6E",
565
566
  "cli.human-lint.table.expected": "\u9884\u671F",
566
567
  "cli.human-lint.table.got": "\u5B9E\u9645",
567
- "cli.init.description": "\u5728\u76EE\u6807\u9879\u76EE\u4E2D\u521D\u59CB\u5316 Fabric\u3002",
568
- "cli.init.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 CLI \u53C2\u6570\u3001EXTERNAL_FIXTURE_PATH\u3001fabric.config.json\u3001\u5F53\u524D\u76EE\u5F55\u3002",
569
- "cli.init.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
570
- "cli.init.args.force.description": "\u8986\u76D6\u73B0\u6709\u6587\u4EF6\uFF08\u7ED5\u8FC7\u975E\u7834\u574F\u6027\u4FDD\u62A4\uFF09",
571
- "cli.init.args.yes.description": "\u63A5\u53D7\u5F53\u524D\u521D\u59CB\u5316\u8BA1\u5212\u5E76\u8DF3\u8FC7 TTY \u5411\u5BFC\u76F4\u63A5\u6267\u884C",
572
- "cli.init.args.plan.description": "\u4EC5\u8F93\u51FA\u521D\u59CB\u5316\u8BA1\u5212\uFF0C\u4E0D\u5199\u6587\u4EF6\u4E5F\u4E0D\u6267\u884C\u540E\u7EED\u9636\u6BB5",
573
- "cli.init.args.reapply.description": "\u5728\u5DF2\u6709 setup \u4E0A\u91CD\u65B0\u5E94\u7528 Fabric \u7BA1\u7406\u7684\u6587\u4EF6\u548C\u9636\u6BB5\u5B89\u88C5\u5668",
574
- "cli.init.args.no-bootstrap.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u521D\u59CB\u5316\u8BA1\u5212\u4E2D\u79FB\u9664 bootstrap",
575
- "cli.init.args.no-mcp.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u521D\u59CB\u5316\u8BA1\u5212\u4E2D\u79FB\u9664 MCP \u914D\u7F6E",
576
- "cli.init.args.no-hooks.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u521D\u59CB\u5316\u8BA1\u5212\u4E2D\u79FB\u9664 git hooks",
577
- "cli.init.args.interactive.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u7981\u7528 TTY \u5411\u5BFC\u5E76\u76F4\u63A5\u6267\u884C",
578
- "cli.init.mcp.install.global": "\u4F7F\u7528\u5168\u5C40\u5B89\u88C5\u7684 @fenglimg/fabric-server",
579
- "cli.init.mcp.install.local": "\u5C06 @fenglimg/fabric-server \u5B89\u88C5\u5230\u9879\u76EE devDependencies",
580
- "cli.init.mcp.install.prompt": "MCP \u670D\u52A1\u7AEF\u5B89\u88C5\u8303\u56F4\uFF08global|local\uFF09",
581
- "cli.init.mcp.install.invalid": "\u65E0\u6548\u7684 --mcp-install \u503C\u201C{value}\u201D\uFF0C\u5C06\u56DE\u9000\u5230 global",
582
- "cli.init.mcp.local.installing": "\u6B63\u5728\u8FD0\u884C {manager} add -D @fenglimg/fabric-server...",
583
- "cli.init.mcp.local.installed": "\u5DF2\u5B89\u88C5\u5230 devDependencies",
584
- "cli.init.mcp.scope.description": "Claude MCP \u914D\u7F6E\u8303\u56F4\uFF1Aproject\uFF08\u5199\u5165 .mcp.json\uFF09\u6216 user\uFF08\u5199\u5165 ~/.claude.json\uFF09",
585
- "cli.init.mcp.scope.invalid": "\u65E0\u6548\u7684 --scope \u503C\u201C{value}\u201D\uFF0C\u5C06\u56DE\u9000\u5230 project",
586
- "cli.init.mcp.scope.project": "\u5199\u5165\u9879\u76EE\u6839\u76EE\u5F55\u7684 .mcp.json\uFF08\u7B26\u5408 Claude Code \u89C4\u8303\uFF09",
587
- "cli.init.mcp.scope.user": "\u5199\u5165 ~/.claude.json\uFF08\u7528\u6237\u8303\u56F4\uFF0C\u9002\u7528\u4E8E\u6240\u6709\u9879\u76EE\uFF09",
588
- "cli.init.wizard.mcp-scope": "Claude MCP \u914D\u7F6E\u8303\u56F4\uFF08project/.mcp.json \u6216 user/~/.claude.json\uFF09[{defaultValue}]",
589
- "cli.init.created-path": "{label} {path}",
590
- "cli.init.skipped-existing-path": "{label} {path}\uFF1A\u5DF2\u5B58\u5728\u3002",
591
- "cli.init.force.overwritten": "\u5DF2\u8986\u76D6",
592
- "cli.init.force.warning": "--force \u5C06\u8986\u76D6 {path} \u4E2D\u73B0\u6709\u7684 Fabric \u4EA7\u7269",
593
- "cli.init.stages.bootstrap": "\u6B63\u5728\u5B89\u88C5 bootstrap \u6A21\u677F...",
594
- "cli.init.stages.mcp": "\u6B63\u5728\u914D\u7F6E MCP \u5BA2\u6237\u7AEF...",
595
- "cli.init.stages.hooks": "\u6B63\u5728\u5B89\u88C5 git hooks...",
596
- "cli.init.stages.skipped": "\u5DF2\u8DF3\u8FC7",
597
- "cli.init.stages.completed": "\u5DF2\u5B8C\u6210",
598
- "cli.init.stages.failed": "\u5931\u8D25",
599
- "cli.init.stages.summary.ran": "\u5DF2\u6267\u884C",
600
- "cli.init.stages.summary.skipped": "\u5DF2\u8DF3\u8FC7",
601
- "cli.init.stages.summary.failed": "\u5931\u8D25",
602
- "cli.init.next-step": "{label} {message}",
603
- "cli.init.reason-message": "{label} {message}",
604
- "cli.init.plan.title": "Fabric \u521D\u59CB\u5316\u8BA1\u5212",
605
- "cli.init.plan.mode-banner.default": "[mode: apply] \u6807\u51C6\u521D\u59CB\u5316\u6267\u884C",
606
- "cli.init.plan.mode-banner.plan": "[mode: plan] \u4EC5\u9884\u89C8\uFF0C\u4E0D\u4F1A\u5199\u5165\u6587\u4EF6",
607
- "cli.init.plan.mode-banner.reapply": "[mode: reapply] \u5C06\u5F3A\u5236\u91CD\u65B0\u5E94\u7528 Fabric \u7BA1\u7406\u8D44\u4EA7",
608
- "cli.init.plan.mode-banner.plan-reapply": "[mode: plan+reapply] \u6B63\u5728\u9884\u89C8\u4E00\u6B21\u5F3A\u5236 reapply\uFF0C\u4E0D\u4F1A\u5199\u5165\u6587\u4EF6",
609
- "cli.init.plan.target": "\u76EE\u6807\uFF1A{target}",
610
- "cli.init.plan.actions": "\u8BA1\u5212\uFF1Abootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
611
- "cli.init.plan.detected": "\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\uFF1A{clients}",
612
- "cli.init.plan.writes": "\u6838\u5FC3\u5199\u5165\uFF1A",
613
- "cli.init.plan.preview-title": "Fabric \u521D\u59CB\u5316 dry run",
614
- "cli.init.plan.preview-result": "\u6A21\u5F0F={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
615
- "cli.init.mode.default": "default",
616
- "cli.init.mode.reapply": "reapply",
617
- "cli.init.mode.badge.default": "APPLY",
618
- "cli.init.mode.badge.plan": "PLAN",
619
- "cli.init.mode.badge.reapply": "REAPPLY",
620
- "cli.init.mode.badge.plan-reapply": "PLAN + REAPPLY",
621
- "cli.init.compat.plan": "\u5DF2\u542F\u7528\u6807\u51C6 --plan \u6A21\u5F0F\uFF1A\u4E0D\u4F1A\u5199\u5165\u4EFB\u4F55\u6587\u4EF6\u3002",
622
- "cli.init.compat.interactive": "\u517C\u5BB9\u63D0\u793A\uFF1A--interactive=false \u4F1A\u7981\u7528 TTY \u5411\u5BFC\u3002",
623
- "cli.init.compat.legacy-stage-flags": "\u517C\u5BB9\u63D0\u793A\uFF1A\u65E7\u7684 --no-* \u6807\u5FD7\u6B63\u5728\u6620\u5C04\u5230\u521D\u59CB\u5316\u8BA1\u5212\u4E2D\u3002",
624
- "cli.init.wizard.title": "Fabric \u521D\u59CB\u5316\u5411\u5BFC",
625
- "cli.init.wizard.intro": "Fabric init",
626
- "cli.init.wizard.overview.title": "\u5B89\u88C5\u6982\u89C8",
627
- "cli.init.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u6A21\u5F0F\uFF1A{mode}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u8C03\u6574\u521D\u59CB\u5316\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric init \u9636\u6BB5\u3002",
628
- "cli.init.wizard.step.target": "\u786E\u8BA4\u76EE\u6807",
629
- "cli.init.wizard.step.plan": "\u914D\u7F6E\u521D\u59CB\u5316\u8BA1\u5212",
630
- "cli.init.wizard.step.review": "\u590D\u6838\u6700\u7EC8\u8BA1\u5212",
631
- "cli.init.wizard.target.confirm": "\u786E\u8BA4\u5728 {target} \u4E2D\u7EE7\u7EED\u521D\u59CB\u5316 Fabric\uFF1F[Y/n]",
632
- "cli.init.wizard.stage.bootstrap": "\u662F\u5426\u5B89\u88C5 bootstrap \u6A21\u677F\uFF1F[{defaultValue}]",
633
- "cli.init.wizard.stage.mcp": "\u662F\u5426\u914D\u7F6E MCP \u5BA2\u6237\u7AEF\uFF1F[{defaultValue}]",
634
- "cli.init.wizard.stage.hooks": "\u662F\u5426\u5B89\u88C5 git hooks\uFF1F[{defaultValue}]",
635
- "cli.init.wizard.mcp-install": "MCP \u670D\u52A1\u7AEF\u5B89\u88C5\u8303\u56F4\uFF08global/local\uFF09[{defaultValue}]",
636
- "cli.init.wizard.execute.confirm": "\u73B0\u5728\u6267\u884C\u8BE5\u521D\u59CB\u5316\u8BA1\u5212\uFF1F[Y/n]",
637
- "cli.init.wizard.outro": "\u521D\u59CB\u5316\u8BA1\u5212\u5DF2\u786E\u8BA4\uFF0C\u5F00\u59CB\u6267\u884C Fabric init...",
638
- "cli.init.wizard.invalid-yes-no": "\u8BF7\u8F93\u5165 yes \u6216 no\u3002",
639
- "cli.init.wizard.invalid-select": "\u65E0\u6548\u8F93\u5165\u3002\u53EF\u9009\u503C\uFF1A{options}\u3002",
640
- "cli.init.wizard.cancelled": "Fabric \u521D\u59CB\u5316\u5DF2\u5728\u6267\u884C\u524D\u53D6\u6D88\u3002",
641
- "cli.init.capabilities.title": "\u5BA2\u6237\u7AEF\u80FD\u529B\u6458\u8981",
642
- "cli.init.capabilities.none": "\u6CA1\u6709\u68C0\u6D4B\u5230\u53EF\u7528\u4E8E bootstrap \u6216 MCP \u540E\u7EED\u63A5\u529B\u7684\u53D7\u652F\u6301\u5BA2\u6237\u7AEF\u3002",
643
- "cli.init.capabilities.header.client": "\u5BA2\u6237\u7AEF",
644
- "cli.init.capabilities.header.bootstrap": "Bootstrap",
645
- "cli.init.capabilities.header.mcp": "MCP",
646
- "cli.init.capabilities.header.hook": "Hook",
647
- "cli.init.capabilities.header.skill": "Skill",
648
- "cli.init.capabilities.header.follow-up": "\u540E\u7EED\u52A8\u4F5C",
649
- "cli.init.capabilities.status.ready": "\u5DF2\u5C31\u7EEA",
650
- "cli.init.capabilities.status.installed": "\u5DF2\u5B89\u88C5",
651
- "cli.init.capabilities.status.supported": "\u5DF2\u652F\u6301",
652
- "cli.init.capabilities.status.manual": "\u624B\u52A8\u5904\u7406",
653
- "cli.init.capabilities.status.skipped": "\u5DF2\u8DF3\u8FC7",
654
- "cli.init.capabilities.status.failed": "\u5931\u8D25",
655
- "cli.init.capabilities.status.na": "\u4E0D\u9002\u7528",
656
- "cli.init.capabilities.follow-up.ready": "\u53EF\u5728\u5BA2\u6237\u7AEF\u7EE7\u7EED",
657
- "cli.init.capabilities.follow-up.install": "\u5B89\u88C5\u5BA2\u6237\u7AEF\u8D44\u4EA7",
658
- "cli.init.capabilities.follow-up.manual": "\u9700\u8981\u624B\u52A8\u540E\u7EED\u5904\u7406",
659
- "cli.init.next-step.message": "\u8FD0\u884C fab hooks install \u4EE5\u6DFB\u52A0\u7B2C 4 \u5929\u7684 pre-commit \u6D41\u6C34\u7EBF\u3002",
660
- "cli.init.reason-message.installable-body": ".fabric/forensic.json \u5DF2\u5C31\u7EEA\uFF1B\u90E8\u5206\u5DF2\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\u5DF2\u652F\u6301 Fabric \u540E\u7EED\u63A5\u529B\uFF0C\u4F46\u4ECD\u9700\u5B89\u88C5\u5BA2\u6237\u7AEF\u8D44\u4EA7\u3002",
661
- "cli.init.reason-message.manual-body": ".fabric/forensic.json \u5DF2\u5C31\u7EEA\uFF1B\u90E8\u5206\u5DF2\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\u5C1A\u672A\u5B89\u88C5 Fabric skill\uFF0C\u9700\u8981\u624B\u52A8\u5B8C\u6210\u540E\u7EED\u521D\u59CB\u5316\u3002",
662
- "cli.init.codex-hooks.created": "{label} {path}\uFF0C\u5E76\u5199\u5165 Codex hooks \u914D\u7F6E\uFF08\u9700\u542F\u7528 features.codex_hooks = true\uFF09\u3002",
663
- "cli.init.codex-hooks.updated": "{label} {path}\uFF0C\u5E76\u5199\u5165 Codex hooks \u914D\u7F6E\uFF08\u9700\u542F\u7528 features.codex_hooks = true\uFF09\u3002",
664
- "cli.init.codex-hooks.skipped": "{label} {path}\uFF1ACodex hooks \u914D\u7F6E\u5DF2\u5B58\u5728\u3002",
665
- "cli.init.claude-settings.created": "{label} {path}\uFF0C\u5E76\u5199\u5165 Claude Stop hook\u3002",
666
- "cli.init.claude-settings.updated": "{label} {path}\uFF0C\u5E76\u5199\u5165 Claude Stop hook\u3002",
667
- "cli.init.claude-settings.skipped": "{label} {path}\uFF1AClaude Stop hook \u5DF2\u5B58\u5728\u3002",
668
- "cli.init.claude-settings.skipped-invalid": "{label} {path}\uFF1A\u65E0\u6CD5\u5408\u5E76 Claude Stop hook\u3002",
669
- "cli.init.claude-settings.invalid-object": "{label} {path}\uFF1A\u9884\u671F\u4E3A JSON \u5BF9\u8C61\u3002",
670
- "cli.init.claude-settings.invalid-json": "{label} {path}\uFF1AJSON \u65E0\u6548\uFF08{reason}\uFF09\u3002",
671
- "cli.init.claude-settings.invalid-hooks": '{label} {path}\uFF1A"hooks" \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u3002',
672
- "cli.init.claude-settings.invalid-stop-array": '{label} {path}\uFF1A"hooks.Stop" \u5FC5\u987B\u662F\u6570\u7EC4\u3002',
673
- "cli.init.errors.abort-existing": "\u4E2D\u6B62\uFF1A{path} \u5DF2\u5B58\u5728\u3002fab init \u662F\u975E\u7834\u574F\u6027\u7684\u3002",
568
+ "cli.install.description": "\u5728\u76EE\u6807\u9879\u76EE\u4E2D\u5B89\u88C5 Fabric\u3002",
569
+ "cli.install.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 CLI \u53C2\u6570\u3001EXTERNAL_FIXTURE_PATH\u3001fabric.config.json\u3001\u5F53\u524D\u76EE\u5F55\u3002",
570
+ "cli.install.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
571
+ "cli.install.args.force.description": "\u8986\u76D6\u73B0\u6709\u6587\u4EF6\uFF08\u7ED5\u8FC7\u975E\u7834\u574F\u6027\u4FDD\u62A4\uFF09",
572
+ "cli.install.args.yes.description": "\u63A5\u53D7\u5F53\u524D\u5B89\u88C5\u8BA1\u5212\u5E76\u8DF3\u8FC7 TTY \u5411\u5BFC\u76F4\u63A5\u6267\u884C",
573
+ "cli.install.args.plan.description": "\u4EC5\u8F93\u51FA\u5B89\u88C5\u8BA1\u5212\uFF0C\u4E0D\u5199\u6587\u4EF6\u4E5F\u4E0D\u6267\u884C\u540E\u7EED\u9636\u6BB5",
574
+ "cli.install.args.reapply.description": "\u5728\u5DF2\u6709 setup \u4E0A\u91CD\u65B0\u5E94\u7528 Fabric \u7BA1\u7406\u7684\u6587\u4EF6\u548C\u9636\u6BB5\u5B89\u88C5\u5668",
575
+ "cli.install.args.no-bootstrap.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u5B89\u88C5\u8BA1\u5212\u4E2D\u79FB\u9664 bootstrap",
576
+ "cli.install.args.no-mcp.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u5B89\u88C5\u8BA1\u5212\u4E2D\u79FB\u9664 MCP \u914D\u7F6E",
577
+ "cli.install.args.no-hooks.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u4ECE\u5B89\u88C5\u8BA1\u5212\u4E2D\u79FB\u9664 git hooks",
578
+ "cli.install.args.interactive.description": "\u517C\u5BB9\u6807\u5FD7\uFF1A\u7981\u7528 TTY \u5411\u5BFC\u5E76\u76F4\u63A5\u6267\u884C",
579
+ "cli.install.mcp.install.global": "\u4F7F\u7528\u5168\u5C40\u5B89\u88C5\u7684 @fenglimg/fabric-server",
580
+ "cli.install.mcp.install.local": "\u5C06 @fenglimg/fabric-server \u5B89\u88C5\u5230\u9879\u76EE devDependencies",
581
+ "cli.install.mcp.install.prompt": "MCP \u670D\u52A1\u7AEF\u5B89\u88C5\u8303\u56F4\uFF08global|local\uFF09",
582
+ "cli.install.mcp.install.invalid": "\u65E0\u6548\u7684 --mcp-install \u503C\u201C{value}\u201D\uFF0C\u5C06\u56DE\u9000\u5230 global",
583
+ "cli.install.mcp.local.installing": "\u6B63\u5728\u8FD0\u884C {manager} add -D @fenglimg/fabric-server...",
584
+ "cli.install.mcp.local.installed": "\u5DF2\u5B89\u88C5\u5230 devDependencies",
585
+ "cli.install.mcp.scope.description": "Claude MCP \u914D\u7F6E\u8303\u56F4\uFF1Aproject\uFF08\u5199\u5165 .mcp.json\uFF09\u6216 user\uFF08\u5199\u5165 ~/.claude.json\uFF09",
586
+ "cli.install.mcp.scope.invalid": "\u65E0\u6548\u7684 --scope \u503C\u201C{value}\u201D\uFF0C\u5C06\u56DE\u9000\u5230 project",
587
+ "cli.install.mcp.scope.project": "\u5199\u5165\u9879\u76EE\u6839\u76EE\u5F55\u7684 .mcp.json\uFF08\u7B26\u5408 Claude Code \u89C4\u8303\uFF09",
588
+ "cli.install.mcp.scope.user": "\u5199\u5165 ~/.claude.json\uFF08\u7528\u6237\u8303\u56F4\uFF0C\u9002\u7528\u4E8E\u6240\u6709\u9879\u76EE\uFF09",
589
+ "cli.install.wizard.mcp-scope": "Claude MCP \u914D\u7F6E\u8303\u56F4\uFF08project/.mcp.json \u6216 user/~/.claude.json\uFF09[{defaultValue}]",
590
+ "cli.install.created-path": "{label} {path}",
591
+ "cli.install.skipped-existing-path": "{label} {path}\uFF1A\u5DF2\u5B58\u5728\u3002",
592
+ "cli.install.force.overwritten": "\u5DF2\u8986\u76D6",
593
+ "cli.install.force.warning": "--force \u5C06\u8986\u76D6 {path} \u4E2D\u73B0\u6709\u7684 Fabric \u4EA7\u7269",
594
+ "cli.install.stages.bootstrap": "\u6B63\u5728\u5B89\u88C5 bootstrap \u6A21\u677F...",
595
+ "cli.install.stages.mcp": "\u6B63\u5728\u914D\u7F6E MCP \u5BA2\u6237\u7AEF...",
596
+ "cli.install.stages.hooks": "\u6B63\u5728\u5B89\u88C5 git hooks...",
597
+ "cli.install.stages.skipped": "\u5DF2\u8DF3\u8FC7",
598
+ "cli.install.stages.completed": "\u5DF2\u5B8C\u6210",
599
+ "cli.install.stages.failed": "\u5931\u8D25",
600
+ "cli.install.stages.summary.ran": "\u5DF2\u6267\u884C",
601
+ "cli.install.stages.summary.skipped": "\u5DF2\u8DF3\u8FC7",
602
+ "cli.install.stages.summary.failed": "\u5931\u8D25",
603
+ "cli.install.next-step": "{label} {message}",
604
+ "cli.install.reason-message": "{label} {message}",
605
+ "cli.install.language_preference_hint": "Fabric \u8BED\u8A00\u504F\u597D\uFF1A{value}\u3002\u5982\u9700\u8C03\u6574\uFF0C\u8BF7\u7F16\u8F91 .fabric/fabric-config.json \u4E2D\u7684 fabric_language \u5B57\u6BB5\uFF08\u53EF\u9009\u503C\uFF1Amatch-existing | zh-CN | en | zh-CN-hybrid\uFF09\u3002",
606
+ "cli.install.plan.title": "Fabric \u5B89\u88C5\u8BA1\u5212",
607
+ "cli.install.plan.mode-banner.default": "[mode: apply] \u6807\u51C6\u5B89\u88C5\u6267\u884C",
608
+ "cli.install.plan.mode-banner.plan": "[mode: plan] \u4EC5\u9884\u89C8\uFF0C\u4E0D\u4F1A\u5199\u5165\u6587\u4EF6",
609
+ "cli.install.plan.mode-banner.reapply": "[mode: reapply] \u5C06\u5F3A\u5236\u91CD\u65B0\u5E94\u7528 Fabric \u7BA1\u7406\u8D44\u4EA7",
610
+ "cli.install.plan.mode-banner.plan-reapply": "[mode: plan+reapply] \u6B63\u5728\u9884\u89C8\u4E00\u6B21\u5F3A\u5236 reapply\uFF0C\u4E0D\u4F1A\u5199\u5165\u6587\u4EF6",
611
+ "cli.install.plan.target": "\u76EE\u6807\uFF1A{target}",
612
+ "cli.install.plan.actions": "\u8BA1\u5212\uFF1Abootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
613
+ "cli.install.plan.detected": "\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\uFF1A{clients}",
614
+ "cli.install.plan.writes": "\u6838\u5FC3\u5199\u5165\uFF1A",
615
+ "cli.install.plan.preview-title": "Fabric \u5B89\u88C5 dry run",
616
+ "cli.install.plan.preview-result": "\u6A21\u5F0F={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
617
+ "cli.install.mode.default": "default",
618
+ "cli.install.mode.reapply": "reapply",
619
+ "cli.install.mode.badge.default": "APPLY",
620
+ "cli.install.mode.badge.plan": "PLAN",
621
+ "cli.install.mode.badge.reapply": "REAPPLY",
622
+ "cli.install.mode.badge.plan-reapply": "PLAN + REAPPLY",
623
+ "cli.install.compat.plan": "\u5DF2\u542F\u7528\u6807\u51C6 --plan \u6A21\u5F0F\uFF1A\u4E0D\u4F1A\u5199\u5165\u4EFB\u4F55\u6587\u4EF6\u3002",
624
+ "cli.install.compat.interactive": "\u517C\u5BB9\u63D0\u793A\uFF1A--interactive=false \u4F1A\u7981\u7528 TTY \u5411\u5BFC\u3002",
625
+ "cli.install.compat.legacy-stage-flags": "\u517C\u5BB9\u63D0\u793A\uFF1A\u65E7\u7684 --no-* \u6807\u5FD7\u6B63\u5728\u6620\u5C04\u5230\u5B89\u88C5\u8BA1\u5212\u4E2D\u3002",
626
+ "cli.install.wizard.title": "Fabric \u5B89\u88C5\u5411\u5BFC",
627
+ "cli.install.wizard.intro": "Fabric install",
628
+ "cli.install.wizard.overview.title": "\u5B89\u88C5\u6982\u89C8",
629
+ "cli.install.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u6A21\u5F0F\uFF1A{mode}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u8C03\u6574\u5B89\u88C5\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric install \u9636\u6BB5\u3002",
630
+ "cli.install.wizard.step.target": "\u786E\u8BA4\u76EE\u6807",
631
+ "cli.install.wizard.step.plan": "\u914D\u7F6E\u5B89\u88C5\u8BA1\u5212",
632
+ "cli.install.wizard.step.review": "\u590D\u6838\u6700\u7EC8\u8BA1\u5212",
633
+ "cli.install.wizard.target.confirm": "\u786E\u8BA4\u5728 {target} \u4E2D\u7EE7\u7EED\u5B89\u88C5 Fabric\uFF1F[Y/n]",
634
+ "cli.install.wizard.stage.bootstrap": "\u662F\u5426\u5B89\u88C5 bootstrap \u6A21\u677F\uFF1F[{defaultValue}]",
635
+ "cli.install.wizard.stage.mcp": "\u662F\u5426\u914D\u7F6E MCP \u5BA2\u6237\u7AEF\uFF1F[{defaultValue}]",
636
+ "cli.install.wizard.stage.hooks": "\u662F\u5426\u5B89\u88C5 git hooks\uFF1F[{defaultValue}]",
637
+ "cli.install.wizard.mcp-install": "MCP \u670D\u52A1\u7AEF\u5B89\u88C5\u8303\u56F4\uFF08global/local\uFF09[{defaultValue}]",
638
+ "cli.install.wizard.execute.confirm": "\u73B0\u5728\u6267\u884C\u8BE5\u5B89\u88C5\u8BA1\u5212\uFF1F[Y/n]",
639
+ "cli.install.wizard.outro": "\u5B89\u88C5\u8BA1\u5212\u5DF2\u786E\u8BA4\uFF0C\u5F00\u59CB\u6267\u884C Fabric install...",
640
+ "cli.install.wizard.invalid-yes-no": "\u8BF7\u8F93\u5165 yes \u6216 no\u3002",
641
+ "cli.install.wizard.invalid-select": "\u65E0\u6548\u8F93\u5165\u3002\u53EF\u9009\u503C\uFF1A{options}\u3002",
642
+ "cli.install.wizard.cancelled": "Fabric \u5B89\u88C5\u5DF2\u5728\u6267\u884C\u524D\u53D6\u6D88\u3002",
643
+ "cli.install.capabilities.title": "\u5BA2\u6237\u7AEF\u80FD\u529B\u6458\u8981",
644
+ "cli.install.capabilities.none": "\u6CA1\u6709\u68C0\u6D4B\u5230\u53EF\u7528\u4E8E bootstrap \u6216 MCP \u540E\u7EED\u63A5\u529B\u7684\u53D7\u652F\u6301\u5BA2\u6237\u7AEF\u3002",
645
+ "cli.install.capabilities.header.client": "\u5BA2\u6237\u7AEF",
646
+ "cli.install.capabilities.header.bootstrap": "Bootstrap",
647
+ "cli.install.capabilities.header.mcp": "MCP",
648
+ "cli.install.capabilities.header.hook": "Hook",
649
+ "cli.install.capabilities.header.skill": "Skill",
650
+ "cli.install.capabilities.header.follow-up": "\u540E\u7EED\u52A8\u4F5C",
651
+ "cli.install.capabilities.status.ready": "\u5DF2\u5C31\u7EEA",
652
+ "cli.install.capabilities.status.installed": "\u5DF2\u5B89\u88C5",
653
+ "cli.install.capabilities.status.supported": "\u5DF2\u652F\u6301",
654
+ "cli.install.capabilities.status.manual": "\u624B\u52A8\u5904\u7406",
655
+ "cli.install.capabilities.status.skipped": "\u5DF2\u8DF3\u8FC7",
656
+ "cli.install.capabilities.status.failed": "\u5931\u8D25",
657
+ "cli.install.capabilities.status.na": "\u4E0D\u9002\u7528",
658
+ "cli.install.capabilities.follow-up.ready": "\u53EF\u5728\u5BA2\u6237\u7AEF\u7EE7\u7EED",
659
+ "cli.install.capabilities.follow-up.install": "\u5B89\u88C5\u5BA2\u6237\u7AEF\u8D44\u4EA7",
660
+ "cli.install.capabilities.follow-up.manual": "\u9700\u8981\u624B\u52A8\u540E\u7EED\u5904\u7406",
661
+ "cli.install.next-step.message": "\u8FD0\u884C fab hooks install \u4EE5\u6DFB\u52A0\u7B2C 4 \u5929\u7684 pre-commit \u6D41\u6C34\u7EBF\u3002",
662
+ "cli.install.reason-message.installable-body": ".fabric/forensic.json \u5DF2\u5C31\u7EEA\uFF1B\u90E8\u5206\u5DF2\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\u5DF2\u652F\u6301 Fabric \u540E\u7EED\u63A5\u529B\uFF0C\u4F46\u4ECD\u9700\u5B89\u88C5\u5BA2\u6237\u7AEF\u8D44\u4EA7\u3002",
663
+ "cli.install.reason-message.manual-body": ".fabric/forensic.json \u5DF2\u5C31\u7EEA\uFF1B\u90E8\u5206\u5DF2\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\u5C1A\u672A\u5B89\u88C5 Fabric skill\uFF0C\u9700\u8981\u624B\u52A8\u5B8C\u6210\u540E\u7EED\u5B89\u88C5\u3002",
664
+ "cli.install.codex-hooks.created": "{label} {path}\uFF0C\u5E76\u5199\u5165 Codex hooks \u914D\u7F6E\uFF08\u9700\u542F\u7528 features.codex_hooks = true\uFF09\u3002",
665
+ "cli.install.codex-hooks.updated": "{label} {path}\uFF0C\u5E76\u5199\u5165 Codex hooks \u914D\u7F6E\uFF08\u9700\u542F\u7528 features.codex_hooks = true\uFF09\u3002",
666
+ "cli.install.codex-hooks.skipped": "{label} {path}\uFF1ACodex hooks \u914D\u7F6E\u5DF2\u5B58\u5728\u3002",
667
+ "cli.install.claude-settings.created": "{label} {path}\uFF0C\u5E76\u5199\u5165 Claude Stop hook\u3002",
668
+ "cli.install.claude-settings.updated": "{label} {path}\uFF0C\u5E76\u5199\u5165 Claude Stop hook\u3002",
669
+ "cli.install.claude-settings.skipped": "{label} {path}\uFF1AClaude Stop hook \u5DF2\u5B58\u5728\u3002",
670
+ "cli.install.claude-settings.skipped-invalid": "{label} {path}\uFF1A\u65E0\u6CD5\u5408\u5E76 Claude Stop hook\u3002",
671
+ "cli.install.claude-settings.invalid-object": "{label} {path}\uFF1A\u9884\u671F\u4E3A JSON \u5BF9\u8C61\u3002",
672
+ "cli.install.claude-settings.invalid-json": "{label} {path}\uFF1AJSON \u65E0\u6548\uFF08{reason}\uFF09\u3002",
673
+ "cli.install.claude-settings.invalid-hooks": '{label} {path}\uFF1A"hooks" \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u3002',
674
+ "cli.install.claude-settings.invalid-stop-array": '{label} {path}\uFF1A"hooks.Stop" \u5FC5\u987B\u662F\u6570\u7EC4\u3002',
675
+ "cli.install.errors.abort-existing": "\u4E2D\u6B62\uFF1A{path} \u5DF2\u5B58\u5728\u3002fab install \u662F\u975E\u7834\u574F\u6027\u7684\u3002",
674
676
  "cli.uninstall.description": "\u4ECE\u76EE\u6807\u9879\u76EE\u4E2D\u5378\u8F7D Fabric\u3002",
675
677
  "cli.uninstall.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 CLI \u53C2\u6570\u3001EXTERNAL_FIXTURE_PATH\u3001fabric.config.json\u3001\u5F53\u524D\u76EE\u5F55\u3002",
676
678
  "cli.uninstall.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
@@ -731,7 +733,7 @@ var zhCNMessages = {
731
733
  "cli.scan.args.target.description": "\u76EE\u6807\u7EDD\u5BF9\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 CLI \u53C2\u6570\u3001EXTERNAL_FIXTURE_PATH\u3001fabric.config.json\u3001\u5F53\u524D\u76EE\u5F55\u3002",
732
734
  "cli.scan.args.debug.description": "\u4EE5\u683C\u5F0F\u5316\u8F93\u51FA\u6253\u5370\u68C0\u6D4B\u8BC1\u636E\u3002",
733
735
  "cli.scan.args.json.description": "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u8BCA\u65AD\u62A5\u544A\u3002",
734
- "cli.scan.error.missing-forensic": "\u672A\u627E\u5230 forensic.json\uFF08\u8DEF\u5F84 {path}\uFF09\uFF1B\u8BF7\u5148\u8FD0\u884C `fabric init` \u751F\u6210\u9879\u76EE\u5FEB\u7167\u3002",
736
+ "cli.scan.error.missing-forensic": "\u672A\u627E\u5230 forensic.json\uFF08\u8DEF\u5F84 {path}\uFF09\uFF1B\u8BF7\u5148\u8FD0\u884C `fabric install` \u751F\u6210\u9879\u76EE\u5FEB\u7167\u3002",
735
737
  "cli.scan.summary.created": "\u5DF2\u5199\u5165 {count} \u6761\u77E5\u8BC6\u6761\u76EE\u81F3 .fabric/knowledge/\u3002",
736
738
  "cli.scan.summary.skipped": "\u65E0\u5DEE\u5F02\uFF1B{count} \u6761\u5DF2\u5B58\u5728\u7684\u6761\u76EE\u4FDD\u6301\u4E0D\u53D8\u3002",
737
739
  "cli.scan.report.title": "Fabric \u626B\u63CF\u62A5\u544A",
@@ -746,7 +748,7 @@ var zhCNMessages = {
746
748
  "cli.scan.report.recommendations": "\u5EFA\u8BAE\uFF1A",
747
749
  "cli.scan.readme-quality.ok": "\u826F\u597D",
748
750
  "cli.scan.readme-quality.stub": "\u8349\u7A3F",
749
- "cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab init\uFF0C\u5728 .fabric/bootstrap/README.md \u751F\u6210\u5E26 TODO \u6807\u8BB0\u7684\u521D\u59CB\u8BF4\u660E\u3002",
751
+ "cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab install\uFF0C\u5728 .fabric/bootstrap/README.md \u751F\u6210\u5E26 TODO \u6807\u8BB0\u7684\u521D\u59CB\u8BF4\u660E\u3002",
750
752
  "cli.scan.recommendation.readme": "L0\uFF1A\u5148\u8865\u5145 README.md\uFF0C\u518D\u628A\u9879\u76EE\u4E8B\u5B9E\u6574\u7406\u5230 Fabric \u53C2\u8003\u6587\u4EF6\u4E2D\u3002",
751
753
  "cli.scan.recommendation.contributing": "L0\uFF1A\u6DFB\u52A0 CONTRIBUTING.md\uFF0C\u6216\u5728 bootstrap \u4E2D\u7559\u4E0B\u8D21\u732E\u6D41\u7A0B\u7684 TODO \u8BF4\u660E\u3002",
752
754
  "cli.scan.recommendation.unknown-framework": "L1\uFF1A\u5F53\u524D\u672A\u68C0\u6D4B\u5230\u6846\u67B6\u6807\u8BB0\uFF0C\u9700\u8981\u624B\u52A8\u8865\u5145\u6280\u672F\u6808\u8BF4\u660E\u3002",
@@ -1036,6 +1038,23 @@ var PROTECTED_TOKENS = [
1036
1038
  ".fabric/knowledge/",
1037
1039
  // Event types templates reference verbatim
1038
1040
  "knowledge_proposed",
1041
+ // fabric-archive Phase 1.5 contract surface (rc.9 — bare `scope` was renamed)
1042
+ "relevance_scope",
1043
+ "relevance_paths",
1044
+ // Phase 1.5 scope enum values (rc.9 — TASK-008 D1)
1045
+ "narrow",
1046
+ "broad",
1047
+ // v2.0.0-rc.7 T5/T6 fab_extract_knowledge contract fields (TASK-008 D1)
1048
+ "source_sessions",
1049
+ "proposed_reason",
1050
+ "session_context",
1051
+ // Layer enum values + pending output path key (TASK-008 D1)
1052
+ "layer",
1053
+ "team",
1054
+ "personal",
1055
+ "pending_path",
1056
+ // Server event emitted when personal layer auto-degrades narrow → broad (TASK-008 D1)
1057
+ "knowledge_scope_degraded",
1039
1058
  // Human-lock marker
1040
1059
  "@HUMAN",
1041
1060
  // Hard-rule keywords AI clients rely on for compliance