@fenglimg/fabric-shared 2.0.0-rc.13 → 2.0.0-rc.21
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/dist/chunk-QZNUUIL3.js +39 -0
- package/dist/{chunk-WIH5HBKU.js → chunk-VKCXD6CI.js} +218 -114
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +305 -36
- package/dist/index.js +538 -339
- package/dist/templates/bootstrap-canonical.d.ts +56 -0
- package/dist/templates/bootstrap-canonical.js +18 -0
- package/dist/types/index.d.ts +0 -2
- package/package.json +7 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/i18n/locales/en.ts
|
|
2
2
|
var enMessages = {
|
|
3
|
-
"cli.main.description": "Fabric CLI - AI agent collaboration framework",
|
|
3
|
+
"cli.main.description": "Fabric CLI - AI agent collaboration framework.\n\nThree-step mental model:\n Install (\u88C5) - fab install one-shot project setup\n Configure (\u914D) - fab config interactive configuration panel\n Run (\u8DD1) - fab serve launch the local MCP HTTP service\n fab doctor run target-state diagnostics\n\nExamples:\n fab install install Fabric in the current project\n fab config open the interactive configuration panel\n fab serve --port 7373 start the MCP HTTP service\n fab doctor --fix repair derived Fabric state\n fab uninstall --dry-run preview uninstall without removing files",
|
|
4
4
|
"cli.shared.created": "Created",
|
|
5
5
|
"cli.shared.skipped": "Skipped",
|
|
6
6
|
"cli.shared.next": "Next",
|
|
@@ -38,7 +38,8 @@ var enMessages = {
|
|
|
38
38
|
"cli.bootstrap.install.skipped-header": "Skipped {path}: Fabric Bootstrap header already present.",
|
|
39
39
|
"cli.bootstrap.install.prepended": "Prepended {path}",
|
|
40
40
|
"cli.bootstrap.errors.unknown-client": 'Unknown client "{client}". Use a comma-separated list such as claude,cursor,codex.',
|
|
41
|
-
"cli.config.description": "
|
|
41
|
+
"cli.config.description": "Open the interactive Fabric configuration panel (language, knowledge layer, audit mode, hint windows, MCP client wiring, etc.).\n\nExamples:\n fab config open the interactive panel\n fab config --target /path edit configuration for a specific project",
|
|
42
|
+
"cli.config.args.target.description": "Target project directory (defaults to cwd).",
|
|
42
43
|
"cli.config.clients.claude": "Claude Code CLI",
|
|
43
44
|
"cli.config.install.description": "Install Fabric MCP server entries into detected client configs.",
|
|
44
45
|
"cli.config.install.args.clients.description": "Optional comma-separated client filter, for example cursor,codex.",
|
|
@@ -49,19 +50,86 @@ var enMessages = {
|
|
|
49
50
|
"cli.config.install.no-config-path": "Skipping {client}: no config path detected.",
|
|
50
51
|
"cli.config.install.dry-run": "[dry-run] {client}: would write {path}",
|
|
51
52
|
"cli.config.install.wrote": "{client}: wrote {path}",
|
|
52
|
-
|
|
53
|
+
// rc.16 TASK-006 (F1-panel): clack-driven `fab config` interactive panel.
|
|
54
|
+
// Keys consumed by packages/cli/src/commands/config.ts (menu loop +
|
|
55
|
+
// per-field prompts) and by getPanelFields() (label_i18n_key references).
|
|
56
|
+
"cli.config.intro": "Fabric Configuration",
|
|
57
|
+
"cli.config.outro": "Configuration saved.",
|
|
58
|
+
"cli.config.outro-no-changes": "No changes made.",
|
|
59
|
+
"cli.config.cancel": "Cancelled.",
|
|
60
|
+
"cli.config.non-tty-notice": "fab config requires an interactive terminal. Run it from a TTY to edit configuration fields.",
|
|
61
|
+
"cli.config.menu.field-select": "Select a field to edit:",
|
|
62
|
+
"cli.config.menu.exit": "Exit",
|
|
63
|
+
"cli.config.value.current": "current: {value}",
|
|
64
|
+
"cli.config.value.default-marker": "(default)",
|
|
65
|
+
"cli.config.prompt.select": "Choose a new value for {key} (current: {current}):",
|
|
66
|
+
"cli.config.prompt.text": "Enter a new value for {key} (current: {current}):",
|
|
67
|
+
"cli.config.write.success": "Saved {key} = {value}",
|
|
68
|
+
"cli.config.write.failure": "Failed to write fabric-config.json: {message}",
|
|
69
|
+
"cli.config.errors.uninit-workspace.message": "Workspace not initialized. Run `fab install` first.",
|
|
70
|
+
"cli.config.errors.invalid-int": "Must be a positive integer.",
|
|
71
|
+
"cli.config.errors.unknown-field": "Unknown field selection \u2014 skipping.",
|
|
72
|
+
"cli.config.errors.no-enum-options": "No enum options available for this field \u2014 skipping.",
|
|
73
|
+
// Per-field labels (11 total: 2 Group A + 8 Group B + 1 Group C).
|
|
74
|
+
"cli.config.fields.fabric_language.label": "Language",
|
|
75
|
+
"cli.config.fields.fabric_language.description": "Language used by Fabric hooks and Skills output.",
|
|
76
|
+
"cli.config.fields.default_layer_filter.label": "Default knowledge layer",
|
|
77
|
+
"cli.config.fields.default_layer_filter.description": "Default layer scope for knowledge listings (team / personal / both).",
|
|
78
|
+
"cli.config.fields.archive_hint_hours.label": "Archive hint window (hours)",
|
|
79
|
+
"cli.config.fields.archive_hint_hours.description": "Window (in hours) used by Signal A to detect frequent edits worth archiving.",
|
|
80
|
+
"cli.config.fields.archive_hint_cooldown_hours.label": "Archive hint cooldown (hours)",
|
|
81
|
+
"cli.config.fields.archive_hint_cooldown_hours.description": "Cooldown (in hours) before the same archive hint can fire again.",
|
|
82
|
+
"cli.config.fields.archive_edit_threshold.label": "Archive edit threshold",
|
|
83
|
+
"cli.config.fields.archive_edit_threshold.description": "Edit-count cutoff that triggers the Signal A archive hint.",
|
|
84
|
+
"cli.config.fields.underseed_node_threshold.label": "Underseed node threshold",
|
|
85
|
+
"cli.config.fields.underseed_node_threshold.description": "Minimum knowledge-node count below which Fabric flags the workspace as underseeded.",
|
|
86
|
+
"cli.config.fields.review_hint_pending_count.label": "Review pending count",
|
|
87
|
+
"cli.config.fields.review_hint_pending_count.description": "Pending-review count above which the review hint fires.",
|
|
88
|
+
"cli.config.fields.review_hint_pending_age_days.label": "Review pending age (days)",
|
|
89
|
+
"cli.config.fields.review_hint_pending_age_days.description": "Pending-review age (in days) above which the review hint fires.",
|
|
90
|
+
"cli.config.fields.maintenance_hint_days.label": "Maintenance hint window (days)",
|
|
91
|
+
"cli.config.fields.maintenance_hint_days.description": "Day window for Fabric to surface a knowledge-maintenance hint.",
|
|
92
|
+
"cli.config.fields.maintenance_hint_cooldown_days.label": "Maintenance hint cooldown (days)",
|
|
93
|
+
"cli.config.fields.maintenance_hint_cooldown_days.description": "Cooldown (in days) before the maintenance hint can fire again.",
|
|
94
|
+
"cli.config.fields.audit_mode.label": "Audit mode",
|
|
95
|
+
"cli.config.fields.audit_mode.description": "Audit verbosity for human-lock + drift detection (strict / warn / off).",
|
|
96
|
+
"cli.doctor.description": "Run Fabric target-state diagnostics (meta sync, knowledge index, bootstrap, events ledger, human-lock drift).\n\nExamples:\n fab doctor read-only diagnostics report\n fab doctor --fix repair derived state (meta + indexes)\n fab doctor --fix-knowledge apply lint mutations (demote / archive)\n fab doctor --json --strict machine-readable output, warnings as errors",
|
|
53
97
|
"doctor.section.fixable": "Fixable errors:",
|
|
54
98
|
"doctor.section.manual": "Manual errors:",
|
|
55
99
|
"doctor.section.warnings": "Warnings:",
|
|
56
|
-
"doctor.section.
|
|
57
|
-
|
|
58
|
-
"
|
|
100
|
+
"doctor.section.fix-knowledge-mutations": "Fix-knowledge mutations:",
|
|
101
|
+
// rc.20 TASK-07: cite-coverage human-readable formatter keys.
|
|
102
|
+
"doctor.section.cite-coverage": "Cite coverage:",
|
|
103
|
+
"doctor.cite.header": "Since {since} via marker {marker}",
|
|
104
|
+
"doctor.cite.warning.justActivated": "Cite policy activated on this run; no historical data yet.",
|
|
105
|
+
"doctor.cite.metric.editsTouched": "Edits touched",
|
|
106
|
+
"doctor.cite.metric.qualifyingCites": "Qualifying cites",
|
|
107
|
+
"doctor.cite.metric.recalledUnverified": "Recalled but not verified",
|
|
108
|
+
"doctor.cite.metric.expectedButMissed": "Expected cite missing",
|
|
109
|
+
"doctor.cite.metric.totalTurns": "Total turns",
|
|
110
|
+
"doctor.cite.section.perClient": "Per-client",
|
|
111
|
+
"doctor.cite.section.dismissedReasons": "Dismissed reasons",
|
|
112
|
+
"doctor.cite.dismissed.scope-mismatch": "Scope mismatch",
|
|
113
|
+
"doctor.cite.dismissed.outdated": "Outdated",
|
|
114
|
+
"doctor.cite.dismissed.not-applicable": "Not applicable",
|
|
115
|
+
"doctor.cite.dismissed.other": "Other",
|
|
116
|
+
"doctor.cite.dismissed.unspecified": "Unspecified",
|
|
117
|
+
"doctor.cite.status.skipped": "Cite policy not yet activated for this workspace.",
|
|
118
|
+
"cli.doctor.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
119
|
+
"cli.doctor.args.fix.description": "Repair derived Fabric state (meta + indexes).",
|
|
59
120
|
"cli.doctor.args.json.description": "Print the doctor report as JSON.",
|
|
60
121
|
"cli.doctor.args.strict.description": "Treat warnings as failures.",
|
|
61
|
-
"cli.doctor.args.
|
|
62
|
-
"cli.doctor.args.
|
|
63
|
-
"cli.doctor.args.yes.description": "Skip the --
|
|
64
|
-
"cli.doctor.errors.
|
|
122
|
+
"cli.doctor.args.fix-knowledge.description": "Apply knowledge lint mutations: demote orphaned canonical entries, archive stale drafts, and bump drifted index counters. Default doctor run remains report-only.",
|
|
123
|
+
"cli.doctor.args.rescan.description": "Re-run the init scan to rebuild .fabric/agents.meta.json forensic state before doctor checks.",
|
|
124
|
+
"cli.doctor.args.yes.description": "Skip the --fix-knowledge safety confirm. Required for non-tty invocations unless FABRIC_NONINTERACTIVE=1 is set in the environment.",
|
|
125
|
+
"cli.doctor.errors.fix-knowledge-fix-mutually-exclusive": "--fix-knowledge and --fix cannot be combined. --fix-knowledge mutates user knowledge state (demote/archive); --fix repairs derived state (meta/index). Run them separately.",
|
|
126
|
+
// rc.20 TASK-05: --cite-coverage report flags. Read-only; mutually exclusive with --fix/--fix-knowledge.
|
|
127
|
+
"cli.doctor.args.cite-coverage.description": "Generate cite policy adherence report (read-only; skips standard inspections)",
|
|
128
|
+
"cli.doctor.args.since.description": "Time window for cite coverage (e.g. 7d, 24h, 30m)",
|
|
129
|
+
"cli.doctor.args.client.description": "Filter cite coverage by client (cc|codex|cursor|all)",
|
|
130
|
+
"cli.doctor.errors.cite-coverage-mutex": "--cite-coverage cannot be combined with --fix or --fix-knowledge",
|
|
131
|
+
"cli.doctor.errors.invalid-since": "Invalid --since value: {input}. Expected duration like 7d, 24h, 30m or epoch ms.",
|
|
132
|
+
"cli.doctor.errors.invalid-client": "Invalid --client value: {input}. Expected cc, codex, cursor, or all.",
|
|
65
133
|
"cli.hooks.description": "Manage Fabric Git hook templates.",
|
|
66
134
|
"cli.hooks.install.description": "Install the Fabric Husky pre-commit hook template.",
|
|
67
135
|
"cli.hooks.install.args.target.description": "Target project path, default is the current working directory.",
|
|
@@ -77,33 +145,27 @@ var enMessages = {
|
|
|
77
145
|
"cli.human-lint.table.location": "Location",
|
|
78
146
|
"cli.human-lint.table.expected": "Expected",
|
|
79
147
|
"cli.human-lint.table.got": "Got",
|
|
80
|
-
"cli.install.description": "Install Fabric in the target project.",
|
|
81
|
-
"cli.install.args.target.description": "Target project path. Defaults to
|
|
148
|
+
"cli.install.description": "Install Fabric in the target project (scaffold .fabric/, bootstrap templates, MCP client wiring, git hooks).\n\nExamples:\n fab install interactive install in the current project\n fab install --yes accept defaults, skip the TTY wizard\n fab install --dry-run preview the install plan without writing files",
|
|
149
|
+
"cli.install.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
82
150
|
"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
151
|
"cli.install.args.yes.description": "Accept the current install plan and run without the TTY wizard",
|
|
85
|
-
"cli.install.args.
|
|
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",
|
|
152
|
+
"cli.install.args.dry-run.description": "Print the install plan without writing files or running follow-up stages",
|
|
91
153
|
"cli.install.mcp.install.global": "Using globally-installed @fenglimg/fabric-server",
|
|
92
154
|
"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
155
|
"cli.install.mcp.local.installing": "Running {manager} add -D @fenglimg/fabric-server...",
|
|
96
156
|
"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
157
|
"cli.install.mcp.scope.project": "Writes .mcp.json in project root (per Claude Code spec)",
|
|
100
158
|
"cli.install.mcp.scope.user": "Writes ~/.claude.json (user-scoped, applies to all projects)",
|
|
101
159
|
"cli.install.wizard.mcp-scope": "Claude MCP config scope (project/.mcp.json or user/~/.claude.json) [{defaultValue}]",
|
|
102
160
|
"cli.install.created-path": "{label} {path}",
|
|
103
161
|
"cli.install.skipped-existing-path": "{label} {path}: already exists.",
|
|
104
|
-
"cli.install.
|
|
105
|
-
"cli.install.force.warning": "--force will overwrite existing Fabric artifacts in {path}",
|
|
162
|
+
"cli.install.label.overwritten": "Overwritten",
|
|
106
163
|
"cli.install.stages.bootstrap": "Installing bootstrap templates...",
|
|
164
|
+
"cli.install.stages.bootstrap.snapshot.written": "Wrote .fabric/AGENTS.md snapshot",
|
|
165
|
+
"cli.install.stages.bootstrap.snapshot.skipped": "Skipped .fabric/AGENTS.md \u2014 already current",
|
|
166
|
+
"cli.install.steps.bootstrap-claude": "Updated CLAUDE.md with @-import directives",
|
|
167
|
+
"cli.install.steps.bootstrap-codex": "Updated AGENTS.md with fabric:bootstrap managed block",
|
|
168
|
+
"cli.install.steps.bootstrap-cursor": "Updated .cursor/rules/fabric-bootstrap.mdc",
|
|
107
169
|
"cli.install.stages.mcp": "Configuring MCP clients...",
|
|
108
170
|
"cli.install.stages.hooks": "Installing git hooks...",
|
|
109
171
|
"cli.install.stages.skipped": "skipped",
|
|
@@ -118,8 +180,6 @@ var enMessages = {
|
|
|
118
180
|
"cli.install.plan.title": "Fabric install plan",
|
|
119
181
|
"cli.install.plan.mode-banner.default": "[mode: apply] Standard install execution",
|
|
120
182
|
"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
183
|
"cli.install.plan.target": "Target: {target}",
|
|
124
184
|
"cli.install.plan.actions": "Plan: bootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
|
|
125
185
|
"cli.install.plan.detected": "Detected clients: {clients}",
|
|
@@ -127,14 +187,8 @@ var enMessages = {
|
|
|
127
187
|
"cli.install.plan.preview-title": "Fabric install dry run",
|
|
128
188
|
"cli.install.plan.preview-result": "Mode={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
|
|
129
189
|
"cli.install.mode.default": "default",
|
|
130
|
-
"cli.install.mode.reapply": "reapply",
|
|
131
190
|
"cli.install.mode.badge.default": "APPLY",
|
|
132
191
|
"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
192
|
"cli.install.wizard.title": "Fabric install wizard",
|
|
139
193
|
"cli.install.wizard.intro": "Fabric install",
|
|
140
194
|
"cli.install.wizard.overview.title": "Install overview",
|
|
@@ -185,27 +239,27 @@ var enMessages = {
|
|
|
185
239
|
"cli.install.claude-settings.invalid-hooks": '{label} {path}: "hooks" must be a JSON object.',
|
|
186
240
|
"cli.install.claude-settings.invalid-stop-array": '{label} {path}: "hooks.Stop" must be an array.',
|
|
187
241
|
"cli.install.errors.abort-existing": "ABORT: {path} already exists. fab install is non-destructive.",
|
|
188
|
-
"cli.
|
|
189
|
-
"cli.
|
|
242
|
+
"cli.install.diff.canonical": "Workspace already canonical ({count} files verified).",
|
|
243
|
+
"cli.install.diff.applying-missing": "Applying {count} missing pieces: {files}",
|
|
244
|
+
"cli.install.diff.drift-abort": "Drift detected in {path}. Run `fab doctor` to inspect, or `fab uninstall && fab install` to reset.",
|
|
245
|
+
"cli.install.diff.state.missing": "missing",
|
|
246
|
+
"cli.install.diff.state.present-canonical": "canonical",
|
|
247
|
+
"cli.install.diff.state.drifted": "drifted",
|
|
248
|
+
"cli.install.diff.state.user-modified": "user-modified",
|
|
249
|
+
"cli.uninstall.description": "Uninstall Fabric from the target project. .fabric/knowledge/ is always preserved; ~/.fabric/knowledge/ is never touched.\n\nExamples:\n fab uninstall interactive uninstall in the current project\n fab uninstall --yes accept defaults, skip the TTY wizard\n fab uninstall --dry-run preview the uninstall plan without removing files",
|
|
250
|
+
"cli.uninstall.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
190
251
|
"cli.uninstall.args.debug.description": "Print target resolution details to stderr.",
|
|
191
|
-
"cli.uninstall.args.force.description": "Run even if a serve process appears to hold the lock.",
|
|
192
252
|
"cli.uninstall.args.yes.description": "Accept the current uninstall plan and run without the TTY wizard.",
|
|
193
|
-
"cli.uninstall.args.
|
|
194
|
-
"cli.uninstall.flags.no-bootstrap": "Skip the bootstrap stage (Skills, hook scripts, hook-config un-merge).",
|
|
195
|
-
"cli.uninstall.flags.no-mcp": "Skip the MCP stage (per-client writer.remove for fabric).",
|
|
196
|
-
"cli.uninstall.flags.no-scaffold": "Skip the scaffold stage (.fabric/ state files and .gitkeep markers).",
|
|
197
|
-
"cli.uninstall.flags.interactive": "Run the interactive TTY wizard when available.",
|
|
198
|
-
"cli.uninstall.flags.purge": "Also remove .fabric/knowledge/ subdir contents and state files. Personal-root ~/.fabric/knowledge/ is never touched.",
|
|
199
|
-
"cli.uninstall.flags.clean-empties": "Cascade-remove empty arrays/objects when un-merging hook configs.",
|
|
253
|
+
"cli.uninstall.args.dry-run.description": "Print the uninstall plan without removing files or running follow-up stages.",
|
|
200
254
|
"cli.uninstall.plan.title": "Fabric uninstall plan",
|
|
201
255
|
"cli.uninstall.plan.target": "Target: {target}",
|
|
202
|
-
"cli.uninstall.plan.actions": "Plan: scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}
|
|
256
|
+
"cli.uninstall.plan.actions": "Plan: scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
203
257
|
"cli.uninstall.plan.detected": "Detected clients: {clients}",
|
|
204
258
|
"cli.uninstall.plan.preserves": "Preserves:",
|
|
205
|
-
"cli.uninstall.plan.preserves.knowledge": "team knowledge tree (
|
|
259
|
+
"cli.uninstall.plan.preserves.knowledge": "team knowledge tree (always preserved)",
|
|
206
260
|
"cli.uninstall.plan.preserves.personal": "personal root, never touched",
|
|
207
261
|
"cli.uninstall.plan.preview-title": "Fabric uninstall dry run",
|
|
208
|
-
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}
|
|
262
|
+
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
209
263
|
"cli.uninstall.plan.scaffold-entries.title": "Scaffold entries:",
|
|
210
264
|
"cli.uninstall.stages.scaffold": "Removing scaffold artifacts...",
|
|
211
265
|
"cli.uninstall.stages.bootstrap": "Removing bootstrap (Skills + hooks)...",
|
|
@@ -217,7 +271,7 @@ var enMessages = {
|
|
|
217
271
|
"cli.uninstall.summary.body": "removed={removed} skipped={skipped} errors={errors}",
|
|
218
272
|
"cli.uninstall.wizard.intro": "Fabric uninstall",
|
|
219
273
|
"cli.uninstall.wizard.overview.title": "Uninstall overview",
|
|
220
|
-
"cli.uninstall.wizard.overview.body": "Target: {target}\nThis wizard only reshapes the uninstall plan; execution still runs through the existing Fabric uninstall stages.\n.fabric/knowledge/ is preserved
|
|
274
|
+
"cli.uninstall.wizard.overview.body": "Target: {target}\nThis wizard only reshapes the uninstall plan; execution still runs through the existing Fabric uninstall stages.\n.fabric/knowledge/ is always preserved. ~/.fabric/knowledge/ is never touched.",
|
|
221
275
|
"cli.uninstall.wizard.step.target": "Confirm target",
|
|
222
276
|
"cli.uninstall.wizard.step.plan": "Shape uninstall plan",
|
|
223
277
|
"cli.uninstall.wizard.step.review": "Review final plan",
|
|
@@ -225,8 +279,6 @@ var enMessages = {
|
|
|
225
279
|
"cli.uninstall.wizard.stage.scaffold": "Remove scaffold artifacts? [{defaultValue}]",
|
|
226
280
|
"cli.uninstall.wizard.stage.bootstrap": "Remove bootstrap (Skills + hooks)? [{defaultValue}]",
|
|
227
281
|
"cli.uninstall.wizard.stage.mcp": "Un-register MCP clients? [{defaultValue}]",
|
|
228
|
-
"cli.uninstall.wizard.purge": "Purge .fabric/knowledge/ subdir contents too? ~/.fabric/knowledge/ stays untouched. [{defaultValue}]",
|
|
229
|
-
"cli.uninstall.wizard.clean-empties": "Cascade-remove empty arrays/objects in hook configs? [{defaultValue}]",
|
|
230
282
|
"cli.uninstall.wizard.execute.confirm": "Execute this uninstall plan now? [Y/n]",
|
|
231
283
|
"cli.uninstall.wizard.outro": "Uninstall plan accepted. Running Fabric uninstall...",
|
|
232
284
|
"cli.uninstall.wizard.cancelled": "Fabric uninstall cancelled before execution.",
|
|
@@ -242,7 +294,7 @@ var enMessages = {
|
|
|
242
294
|
"cli.pre-commit.args.target.description": "Project root directory, defaults to cwd or EXTERNAL_FIXTURE_PATH.",
|
|
243
295
|
"cli.pre-commit.run-failed": "fabric pre-commit: {name} failed - {message}",
|
|
244
296
|
"cli.scan.description": "Scan the project to detect Fabric bootstrap candidates.",
|
|
245
|
-
"cli.scan.args.target.description": "Target absolute path. Defaults to
|
|
297
|
+
"cli.scan.args.target.description": "Target absolute path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
246
298
|
"cli.scan.args.debug.description": "Print detection evidence in formatted output.",
|
|
247
299
|
"cli.scan.args.json.description": "Print the diagnostic report as JSON.",
|
|
248
300
|
"cli.scan.error.missing-forensic": "forensic.json not found at {path}; run `fabric install` first to produce the deterministic project snapshot.",
|
|
@@ -260,22 +312,22 @@ var enMessages = {
|
|
|
260
312
|
"cli.scan.report.recommendations": "Recommendations:",
|
|
261
313
|
"cli.scan.readme-quality.ok": "ok",
|
|
262
314
|
"cli.scan.readme-quality.stub": "stub",
|
|
263
|
-
"cli.scan.recommendation.init": "L0: Run fab install to scaffold
|
|
315
|
+
"cli.scan.recommendation.init": "L0: Run fab install to scaffold `.fabric/AGENTS.md` with the canonical Fabric bootstrap content.",
|
|
264
316
|
"cli.scan.recommendation.readme": "L0: Expand README.md before promoting project facts into Fabric references.",
|
|
265
317
|
"cli.scan.recommendation.contributing": "L0: Add CONTRIBUTING.md or leave a bootstrap TODO reference for contribution flow.",
|
|
266
318
|
"cli.scan.recommendation.unknown-framework": "L1: Add tech-stack TODOs manually because no framework marker was detected.",
|
|
267
319
|
"cli.scan.recommendation.framework-dirs": "L1: Review {framework} directories for future scoped Fabric rule files.",
|
|
268
|
-
"cli.serve.description": "Start the local Fabric MCP HTTP service.
|
|
320
|
+
"cli.serve.description": "Start the local Fabric MCP HTTP service.\n\nExamples:\n fab serve bind 127.0.0.1:7373 (default)\n fab serve --port 8787 use a custom port\n FABRIC_AUTH_TOKEN=<token> fab serve --host 0.0.0.0 bind non-loopback with Bearer auth",
|
|
269
321
|
"cli.serve.args.port.description": "Listen port, default 7373.",
|
|
270
|
-
"cli.serve.args.host.description": "Listen host, default 127.0.0.1.
|
|
271
|
-
"cli.serve.args.target.description": "Target project path. Defaults to
|
|
322
|
+
"cli.serve.args.host.description": "Listen host, default 127.0.0.1. Non-loopback hosts (e.g. 0.0.0.0) require FABRIC_AUTH_TOKEN to enable Bearer auth, otherwise serve falls back to 127.0.0.1.",
|
|
323
|
+
"cli.serve.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
272
324
|
"cli.serve.args.debug.description": "Print target resolution details to stderr.",
|
|
273
|
-
"cli.serve.args.force.description": "Force-acquire the serve lock even if another serve process appears to be running.",
|
|
274
325
|
"cli.serve.ready.title": "Fabric Dashboard",
|
|
275
|
-
"cli.serve.
|
|
326
|
+
"cli.serve.lock-held.action-hint": "A `fab serve` instance (PID {pid}) is holding the workspace lock. Stop it (Ctrl-C in that terminal or `kill {pid}`) before running this command.",
|
|
327
|
+
"cli.serve.warning.host-fallback": "--host {host} requires FABRIC_AUTH_TOKEN for non-loopback exposure; falling back to 127.0.0.1. To bind {host}, run: FABRIC_AUTH_TOKEN=<token> fab serve --host {host}",
|
|
276
328
|
"cli.serve.error.port-in-use": "Port {port} in use - try --port {nextPort}",
|
|
277
329
|
"cli.update.description": "Refresh MCP host configuration and git hooks without re-creating Fabric files.",
|
|
278
|
-
"cli.update.args.target.description": "Target project path. Defaults to
|
|
330
|
+
"cli.update.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
279
331
|
"cli.update.args.no-mcp.description": "Skip re-configuring MCP clients",
|
|
280
332
|
"cli.update.args.no-hooks.description": "Skip re-installing git hooks",
|
|
281
333
|
"cli.sync-meta.description": "Sync Fabric metadata from internal rule files.",
|
|
@@ -488,7 +540,7 @@ var enMessages = {
|
|
|
488
540
|
|
|
489
541
|
// src/i18n/locales/zh-CN.ts
|
|
490
542
|
var zhCNMessages = {
|
|
491
|
-
"cli.main.description": "Fabric CLI - AI \u667A\u80FD\u4F53\u534F\u4F5C\u6846\u67B6",
|
|
543
|
+
"cli.main.description": "Fabric CLI - AI \u667A\u80FD\u4F53\u534F\u4F5C\u6846\u67B6\u3002\n\n\u4E09\u6B65\u5FC3\u667A\u6A21\u578B\uFF1A\n \u88C5 (install) - fab install \u4E00\u952E\u5B8C\u6210\u9879\u76EE\u521D\u59CB\u5316\n \u914D (config) - fab config \u6253\u5F00\u4EA4\u4E92\u5F0F\u914D\u7F6E\u9762\u677F\n \u8DD1 (run) - fab serve \u542F\u52A8\u672C\u5730 MCP HTTP \u670D\u52A1\n fab doctor \u8FD0\u884C\u76EE\u6807\u6001\u8BCA\u65AD\n\n\u793A\u4F8B\uFF1A\n fab install \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u5B89\u88C5 Fabric\n fab config \u6253\u5F00\u4EA4\u4E92\u5F0F\u914D\u7F6E\u9762\u677F\n fab serve --port 7373 \u542F\u52A8 MCP HTTP \u670D\u52A1\n fab doctor --fix \u4FEE\u590D Fabric \u6D3E\u751F\u72B6\u6001\n fab uninstall --dry-run \u9884\u89C8\u5378\u8F7D\uFF0C\u4E0D\u5220\u9664\u6587\u4EF6",
|
|
492
544
|
"cli.shared.created": "\u5DF2\u521B\u5EFA",
|
|
493
545
|
"cli.shared.skipped": "\u5DF2\u8DF3\u8FC7",
|
|
494
546
|
"cli.shared.next": "\u4E0B\u4E00\u6B65",
|
|
@@ -526,7 +578,8 @@ var zhCNMessages = {
|
|
|
526
578
|
"cli.bootstrap.install.skipped-header": "\u5DF2\u8DF3\u8FC7 {path}\uFF1AFabric Bootstrap \u5934\u90E8\u5DF2\u5B58\u5728\u3002",
|
|
527
579
|
"cli.bootstrap.install.prepended": "\u5DF2\u524D\u7F6E\u5199\u5165 {path}",
|
|
528
580
|
"cli.bootstrap.errors.unknown-client": "\u672A\u77E5\u5BA2\u6237\u7AEF\u201C{client}\u201D\u3002\u8BF7\u4F7F\u7528\u9017\u53F7\u5206\u9694\u5217\u8868\uFF0C\u4F8B\u5982 claude,cursor,codex\u3002",
|
|
529
|
-
"cli.config.description": "\
|
|
581
|
+
"cli.config.description": "\u6253\u5F00 Fabric \u4EA4\u4E92\u5F0F\u914D\u7F6E\u9762\u677F\uFF08\u8BED\u8A00\u3001\u77E5\u8BC6\u5C42\u3001\u5BA1\u8BA1\u6A21\u5F0F\u3001\u63D0\u793A\u7A97\u53E3\u3001MCP \u5BA2\u6237\u7AEF\u914D\u7F6E\u7B49\uFF09\u3002\n\n\u793A\u4F8B\uFF1A\n fab config \u6253\u5F00\u4EA4\u4E92\u5F0F\u9762\u677F\n fab config --target /path \u7F16\u8F91\u6307\u5B9A\u9879\u76EE\u7684\u914D\u7F6E",
|
|
582
|
+
"cli.config.args.target.description": "\u76EE\u6807\u9879\u76EE\u76EE\u5F55\uFF08\u9ED8\u8BA4\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\uFF09\u3002",
|
|
530
583
|
"cli.config.clients.claude": "Claude Code CLI",
|
|
531
584
|
"cli.config.install.description": "\u5C06 Fabric MCP \u670D\u52A1\u7AEF\u6761\u76EE\u5B89\u88C5\u5230\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\u914D\u7F6E\u4E2D\u3002",
|
|
532
585
|
"cli.config.install.args.clients.description": "\u53EF\u9009\u7684\u9017\u53F7\u5206\u9694\u5BA2\u6237\u7AEF\u8FC7\u6EE4\u5668\uFF0C\u4F8B\u5982 cursor,codex\u3002",
|
|
@@ -537,19 +590,86 @@ var zhCNMessages = {
|
|
|
537
590
|
"cli.config.install.no-config-path": "\u8DF3\u8FC7 {client}\uFF1A\u672A\u68C0\u6D4B\u5230\u914D\u7F6E\u8DEF\u5F84\u3002",
|
|
538
591
|
"cli.config.install.dry-run": "[dry-run] {client}\uFF1A\u5C06\u5199\u5165 {path}",
|
|
539
592
|
"cli.config.install.wrote": "{client}\uFF1A\u5DF2\u5199\u5165 {path}",
|
|
540
|
-
|
|
593
|
+
// rc.16 TASK-006 (F1-panel): clack 驱动的 `fab config` 交互式面板。
|
|
594
|
+
// 由 packages/cli/src/commands/config.ts(菜单循环 + 字段编辑)以及
|
|
595
|
+
// getPanelFields() 的 label_i18n_key 引用消费。
|
|
596
|
+
"cli.config.intro": "Fabric \u914D\u7F6E",
|
|
597
|
+
"cli.config.outro": "\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002",
|
|
598
|
+
"cli.config.outro-no-changes": "\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\u3002",
|
|
599
|
+
"cli.config.cancel": "\u5DF2\u53D6\u6D88\u3002",
|
|
600
|
+
"cli.config.non-tty-notice": "fab config \u9700\u8981\u5728\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u4E2D\u8FD0\u884C\u3002\u8BF7\u5728 TTY \u4E2D\u6267\u884C\u4EE5\u7F16\u8F91\u914D\u7F6E\u5B57\u6BB5\u3002",
|
|
601
|
+
"cli.config.menu.field-select": "\u9009\u62E9\u8981\u7F16\u8F91\u7684\u5B57\u6BB5\uFF1A",
|
|
602
|
+
"cli.config.menu.exit": "\u9000\u51FA",
|
|
603
|
+
"cli.config.value.current": "\u5F53\u524D\uFF1A{value}",
|
|
604
|
+
"cli.config.value.default-marker": "\uFF08\u9ED8\u8BA4\uFF09",
|
|
605
|
+
"cli.config.prompt.select": "\u4E3A {key} \u9009\u62E9\u65B0\u503C\uFF08\u5F53\u524D\uFF1A{current}\uFF09\uFF1A",
|
|
606
|
+
"cli.config.prompt.text": "\u4E3A {key} \u8F93\u5165\u65B0\u503C\uFF08\u5F53\u524D\uFF1A{current}\uFF09\uFF1A",
|
|
607
|
+
"cli.config.write.success": "\u5DF2\u4FDD\u5B58 {key} = {value}",
|
|
608
|
+
"cli.config.write.failure": "\u5199\u5165 fabric-config.json \u5931\u8D25\uFF1A{message}",
|
|
609
|
+
"cli.config.errors.uninit-workspace.message": "\u5DE5\u4F5C\u533A\u5C1A\u672A\u521D\u59CB\u5316\u3002\u8BF7\u5148\u8FD0\u884C `fab install`\u3002",
|
|
610
|
+
"cli.config.errors.invalid-int": "\u5FC5\u987B\u662F\u6B63\u6574\u6570\u3002",
|
|
611
|
+
"cli.config.errors.unknown-field": "\u672A\u77E5\u5B57\u6BB5\u9009\u62E9 \u2014 \u5DF2\u8DF3\u8FC7\u3002",
|
|
612
|
+
"cli.config.errors.no-enum-options": "\u8BE5\u5B57\u6BB5\u6CA1\u6709\u53EF\u9009\u679A\u4E3E\u503C \u2014 \u5DF2\u8DF3\u8FC7\u3002",
|
|
613
|
+
// 11 个面板字段标签(A 组 2 个 + B 组 8 个 + C 组 1 个)。
|
|
614
|
+
"cli.config.fields.fabric_language.label": "\u8BED\u8A00",
|
|
615
|
+
"cli.config.fields.fabric_language.description": "Fabric \u94A9\u5B50\u4E0E Skill \u8F93\u51FA\u4F7F\u7528\u7684\u8BED\u8A00\u3002",
|
|
616
|
+
"cli.config.fields.default_layer_filter.label": "\u9ED8\u8BA4\u77E5\u8BC6\u5C42",
|
|
617
|
+
"cli.config.fields.default_layer_filter.description": "\u77E5\u8BC6\u5217\u8868\u7684\u9ED8\u8BA4\u5C42\u7EA7\u8303\u56F4\uFF08team / personal / both\uFF09\u3002",
|
|
618
|
+
"cli.config.fields.archive_hint_hours.label": "\u5F52\u6863\u63D0\u793A\u7A97\u53E3\uFF08\u5C0F\u65F6\uFF09",
|
|
619
|
+
"cli.config.fields.archive_hint_hours.description": "Signal A \u7528\u4E8E\u68C0\u6D4B\u9891\u7E41\u7F16\u8F91\u7684\u65F6\u95F4\u7A97\u53E3\uFF08\u5C0F\u65F6\uFF09\u3002",
|
|
620
|
+
"cli.config.fields.archive_hint_cooldown_hours.label": "\u5F52\u6863\u63D0\u793A\u51B7\u5374\uFF08\u5C0F\u65F6\uFF09",
|
|
621
|
+
"cli.config.fields.archive_hint_cooldown_hours.description": "\u540C\u4E00\u5F52\u6863\u63D0\u793A\u518D\u6B21\u89E6\u53D1\u524D\u7684\u51B7\u5374\u65F6\u95F4\uFF08\u5C0F\u65F6\uFF09\u3002",
|
|
622
|
+
"cli.config.fields.archive_edit_threshold.label": "\u5F52\u6863\u7F16\u8F91\u9608\u503C",
|
|
623
|
+
"cli.config.fields.archive_edit_threshold.description": "\u89E6\u53D1 Signal A \u5F52\u6863\u63D0\u793A\u6240\u9700\u7684\u7F16\u8F91\u6B21\u6570\u9608\u503C\u3002",
|
|
624
|
+
"cli.config.fields.underseed_node_threshold.label": "\u77E5\u8BC6\u8282\u70B9\u4E0D\u8DB3\u9608\u503C",
|
|
625
|
+
"cli.config.fields.underseed_node_threshold.description": "\u77E5\u8BC6\u8282\u70B9\u6570\u4F4E\u4E8E\u8BE5\u9608\u503C\u65F6\uFF0CFabric \u89C6\u4E3A\u77E5\u8BC6\u5E93\u5C1A\u672A\u5145\u5B9E\u3002",
|
|
626
|
+
"cli.config.fields.review_hint_pending_count.label": "\u5F85\u5BA1\u6761\u76EE\u6570\u9608\u503C",
|
|
627
|
+
"cli.config.fields.review_hint_pending_count.description": "\u5F85\u5BA1\u6761\u76EE\u6570\u8D85\u8FC7\u8BE5\u9608\u503C\u65F6\u89E6\u53D1\u5BA1\u6838\u63D0\u793A\u3002",
|
|
628
|
+
"cli.config.fields.review_hint_pending_age_days.label": "\u5F85\u5BA1\u6761\u76EE\u5E74\u9F84\uFF08\u5929\uFF09",
|
|
629
|
+
"cli.config.fields.review_hint_pending_age_days.description": "\u5F85\u5BA1\u6761\u76EE\u5B58\u7559\u5929\u6570\u8D85\u8FC7\u8BE5\u9608\u503C\u65F6\u89E6\u53D1\u5BA1\u6838\u63D0\u793A\u3002",
|
|
630
|
+
"cli.config.fields.maintenance_hint_days.label": "\u7EF4\u62A4\u63D0\u793A\u7A97\u53E3\uFF08\u5929\uFF09",
|
|
631
|
+
"cli.config.fields.maintenance_hint_days.description": "Fabric \u89E6\u53D1\u77E5\u8BC6\u7EF4\u62A4\u63D0\u793A\u7684\u65F6\u95F4\u7A97\u53E3\uFF08\u5929\uFF09\u3002",
|
|
632
|
+
"cli.config.fields.maintenance_hint_cooldown_days.label": "\u7EF4\u62A4\u63D0\u793A\u51B7\u5374\uFF08\u5929\uFF09",
|
|
633
|
+
"cli.config.fields.maintenance_hint_cooldown_days.description": "\u7EF4\u62A4\u63D0\u793A\u518D\u6B21\u89E6\u53D1\u524D\u7684\u51B7\u5374\u65F6\u95F4\uFF08\u5929\uFF09\u3002",
|
|
634
|
+
"cli.config.fields.audit_mode.label": "\u5BA1\u8BA1\u6A21\u5F0F",
|
|
635
|
+
"cli.config.fields.audit_mode.description": "human-lock \u4E0E\u6F02\u79FB\u68C0\u6D4B\u7684\u5BA1\u8BA1\u7C92\u5EA6\uFF08strict / warn / off\uFF09\u3002",
|
|
636
|
+
"cli.doctor.description": "\u8FD0\u884C Fabric \u76EE\u6807\u6001\u8BCA\u65AD\uFF08meta \u540C\u6B65\u3001\u77E5\u8BC6\u7D22\u5F15\u3001bootstrap\u3001events ledger\u3001human-lock \u6F02\u79FB\uFF09\u3002\n\n\u793A\u4F8B\uFF1A\n fab doctor \u53EA\u8BFB\u8BCA\u65AD\u62A5\u544A\n fab doctor --fix \u4FEE\u590D\u6D3E\u751F\u72B6\u6001\uFF08meta + \u7D22\u5F15\uFF09\n fab doctor --fix-knowledge \u5E94\u7528\u77E5\u8BC6\u5E93 lint \u53D8\u66F4\uFF08\u964D\u7EA7 / \u5F52\u6863\uFF09\n fab doctor --json --strict \u673A\u5668\u53EF\u8BFB\u8F93\u51FA\uFF0Cwarning \u89C6\u4E3A\u5931\u8D25",
|
|
541
637
|
"doctor.section.fixable": "\u53EF\u4FEE\u590D\u9519\u8BEF\uFF1A",
|
|
542
638
|
"doctor.section.manual": "\u9700\u624B\u52A8\u4FEE\u590D\uFF1A",
|
|
543
639
|
"doctor.section.warnings": "\u8B66\u544A\uFF1A",
|
|
544
|
-
"doctor.section.
|
|
545
|
-
|
|
546
|
-
"
|
|
640
|
+
"doctor.section.fix-knowledge-mutations": "Fix-knowledge \u53D8\u66F4\uFF1A",
|
|
641
|
+
// rc.20 TASK-07: cite-coverage 人类可读格式化键。
|
|
642
|
+
"doctor.section.cite-coverage": "Cite \u8986\u76D6\u7387:",
|
|
643
|
+
"doctor.cite.header": "\u8D77\u59CB {since} (\u653F\u7B56\u6FC0\u6D3B\u65F6\u95F4 {marker})",
|
|
644
|
+
"doctor.cite.warning.justActivated": "\u672C\u6B21\u9996\u6B21\u6FC0\u6D3B Cite policy,\u6682\u65E0\u5386\u53F2\u6570\u636E\u3002",
|
|
645
|
+
"doctor.cite.metric.editsTouched": "Edit \u89E6\u8FBE\u6570",
|
|
646
|
+
"doctor.cite.metric.qualifyingCites": "\u5408\u683C cite",
|
|
647
|
+
"doctor.cite.metric.recalledUnverified": "recalled \u4F46\u672A\u9A8C\u8BC1",
|
|
648
|
+
"doctor.cite.metric.expectedButMissed": "\u5E94\u67E5\u6CA1\u67E5",
|
|
649
|
+
"doctor.cite.metric.totalTurns": "\u603B\u56DE\u5408\u6570",
|
|
650
|
+
"doctor.cite.section.perClient": "\u6309\u5BA2\u6237\u7AEF\u62C6\u5206",
|
|
651
|
+
"doctor.cite.section.dismissedReasons": "\u9A73\u56DE\u539F\u56E0\u5206\u5E03",
|
|
652
|
+
"doctor.cite.dismissed.scope-mismatch": "\u8303\u56F4\u4E0D\u7B26",
|
|
653
|
+
"doctor.cite.dismissed.outdated": "\u5DF2\u8FC7\u671F",
|
|
654
|
+
"doctor.cite.dismissed.not-applicable": "\u4E0D\u9002\u7528",
|
|
655
|
+
"doctor.cite.dismissed.other": "\u5176\u4ED6",
|
|
656
|
+
"doctor.cite.dismissed.unspecified": "\u672A\u6CE8\u660E",
|
|
657
|
+
"doctor.cite.status.skipped": "\u672C\u5DE5\u4F5C\u533A Cite policy \u5C1A\u672A\u6FC0\u6D3B\u3002",
|
|
658
|
+
"cli.doctor.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
659
|
+
"cli.doctor.args.fix.description": "\u4FEE\u590D Fabric \u6D3E\u751F\u72B6\u6001\uFF08meta + \u7D22\u5F15\uFF09\u3002",
|
|
547
660
|
"cli.doctor.args.json.description": "\u4EE5 JSON \u8F93\u51FA doctor \u62A5\u544A\u3002",
|
|
548
661
|
"cli.doctor.args.strict.description": "\u5C06 warning \u4E5F\u89C6\u4E3A\u5931\u8D25\u3002",
|
|
549
|
-
"cli.doctor.args.
|
|
550
|
-
"cli.doctor.args.
|
|
551
|
-
"cli.doctor.args.yes.description": "\u8DF3\u8FC7 --
|
|
552
|
-
"cli.doctor.errors.
|
|
662
|
+
"cli.doctor.args.fix-knowledge.description": "\u5E94\u7528\u77E5\u8BC6\u5E93 lint \u53D8\u66F4\uFF1A\u964D\u7EA7\u5B64\u7ACB\u7684\u89C4\u8303\u6761\u76EE\u3001\u5F52\u6863\u9648\u65E7 draft\u3001\u4FEE\u6B63\u6F02\u79FB\u7684\u7D22\u5F15\u8BA1\u6570\u5668\u3002\u9ED8\u8BA4 doctor \u8FD0\u884C\u4ECD\u7136\u53EA\u8BFB\u3002",
|
|
663
|
+
"cli.doctor.args.rescan.description": "\u5728 doctor \u68C0\u67E5\u4E4B\u524D\u91CD\u65B0\u8FD0\u884C init scan\uFF0C\u4EE5\u91CD\u5EFA .fabric/agents.meta.json \u7684\u53D6\u8BC1\u72B6\u6001\u3002",
|
|
664
|
+
"cli.doctor.args.yes.description": "\u8DF3\u8FC7 --fix-knowledge \u7684\u5B89\u5168\u786E\u8BA4\uFF1B\u975E tty \u8C03\u7528\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E\u8BE5\u6807\u8BB0\uFF0C\u6216\u5728\u73AF\u5883\u53D8\u91CF\u4E2D\u8BBE\u7F6E FABRIC_NONINTERACTIVE=1\u3002",
|
|
665
|
+
"cli.doctor.errors.fix-knowledge-fix-mutually-exclusive": "--fix-knowledge \u4E0E --fix \u4E0D\u53EF\u540C\u65F6\u4F7F\u7528\u3002--fix-knowledge \u4FEE\u6539\u7528\u6237\u77E5\u8BC6\u72B6\u6001\uFF08\u964D\u7EA7/\u5F52\u6863\uFF09\uFF1B--fix \u4FEE\u590D\u6D3E\u751F\u72B6\u6001\uFF08meta/\u7D22\u5F15\uFF09\u3002\u8BF7\u5206\u522B\u8FD0\u884C\u3002",
|
|
666
|
+
// rc.20 TASK-05: --cite-coverage 报告参数;只读,与 --fix/--fix-knowledge 互斥。
|
|
667
|
+
"cli.doctor.args.cite-coverage.description": "Cite \u653F\u7B56\u5408\u89C4\u62A5\u544A(\u53EA\u8BFB;\u8DF3\u8FC7\u6807\u51C6\u68C0\u67E5)",
|
|
668
|
+
"cli.doctor.args.since.description": "Cite \u8986\u76D6\u7387\u7EDF\u8BA1\u7A97\u53E3(\u5982 7d, 24h, 30m)",
|
|
669
|
+
"cli.doctor.args.client.description": "\u6309\u5BA2\u6237\u7AEF\u8FC7\u6EE4(cc|codex|cursor|all)",
|
|
670
|
+
"cli.doctor.errors.cite-coverage-mutex": "--cite-coverage \u4E0D\u80FD\u4E0E --fix \u6216 --fix-knowledge \u540C\u65F6\u4F7F\u7528",
|
|
671
|
+
"cli.doctor.errors.invalid-since": "--since \u53D6\u503C\u65E0\u6548: {input}\u3002\u9884\u671F\u683C\u5F0F 7d / 24h / 30m \u6216 epoch ms\u3002",
|
|
672
|
+
"cli.doctor.errors.invalid-client": "--client \u53D6\u503C\u65E0\u6548: {input}\u3002\u9884\u671F cc / codex / cursor / all\u3002",
|
|
553
673
|
"cli.hooks.description": "\u7BA1\u7406 Fabric Git \u94A9\u5B50\u6A21\u677F\u3002",
|
|
554
674
|
"cli.hooks.install.description": "\u5B89\u88C5 Fabric Husky pre-commit \u94A9\u5B50\u6A21\u677F\u3002",
|
|
555
675
|
"cli.hooks.install.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\uFF0C\u9ED8\u8BA4\u4E3A\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u3002",
|
|
@@ -565,33 +685,27 @@ var zhCNMessages = {
|
|
|
565
685
|
"cli.human-lint.table.location": "\u4F4D\u7F6E",
|
|
566
686
|
"cli.human-lint.table.expected": "\u9884\u671F",
|
|
567
687
|
"cli.human-lint.table.got": "\u5B9E\u9645",
|
|
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
|
|
688
|
+
"cli.install.description": "\u5728\u76EE\u6807\u9879\u76EE\u4E2D\u5B89\u88C5 Fabric\uFF08\u811A\u624B\u67B6 .fabric/\u3001bootstrap \u6A21\u677F\u3001MCP \u5BA2\u6237\u7AEF\u914D\u7F6E\u3001git hooks\uFF09\u3002\n\n\u793A\u4F8B\uFF1A\n fab install \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u4EE5\u4EA4\u4E92\u6A21\u5F0F\u5B89\u88C5\n fab install --yes \u63A5\u53D7\u9ED8\u8BA4\u503C\uFF0C\u8DF3\u8FC7 TTY \u5411\u5BFC\n fab install --dry-run \u4EC5\u9884\u89C8\u5B89\u88C5\u8BA1\u5212\uFF0C\u4E0D\u5199\u5165\u6587\u4EF6",
|
|
689
|
+
"cli.install.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
570
690
|
"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
691
|
"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.
|
|
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",
|
|
692
|
+
"cli.install.args.dry-run.description": "\u4EC5\u8F93\u51FA\u5B89\u88C5\u8BA1\u5212\uFF0C\u4E0D\u5199\u6587\u4EF6\u4E5F\u4E0D\u6267\u884C\u540E\u7EED\u9636\u6BB5",
|
|
579
693
|
"cli.install.mcp.install.global": "\u4F7F\u7528\u5168\u5C40\u5B89\u88C5\u7684 @fenglimg/fabric-server",
|
|
580
694
|
"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
695
|
"cli.install.mcp.local.installing": "\u6B63\u5728\u8FD0\u884C {manager} add -D @fenglimg/fabric-server...",
|
|
584
696
|
"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
697
|
"cli.install.mcp.scope.project": "\u5199\u5165\u9879\u76EE\u6839\u76EE\u5F55\u7684 .mcp.json\uFF08\u7B26\u5408 Claude Code \u89C4\u8303\uFF09",
|
|
588
698
|
"cli.install.mcp.scope.user": "\u5199\u5165 ~/.claude.json\uFF08\u7528\u6237\u8303\u56F4\uFF0C\u9002\u7528\u4E8E\u6240\u6709\u9879\u76EE\uFF09",
|
|
589
699
|
"cli.install.wizard.mcp-scope": "Claude MCP \u914D\u7F6E\u8303\u56F4\uFF08project/.mcp.json \u6216 user/~/.claude.json\uFF09[{defaultValue}]",
|
|
590
700
|
"cli.install.created-path": "{label} {path}",
|
|
591
701
|
"cli.install.skipped-existing-path": "{label} {path}\uFF1A\u5DF2\u5B58\u5728\u3002",
|
|
592
|
-
"cli.install.
|
|
593
|
-
"cli.install.force.warning": "--force \u5C06\u8986\u76D6 {path} \u4E2D\u73B0\u6709\u7684 Fabric \u4EA7\u7269",
|
|
702
|
+
"cli.install.label.overwritten": "\u5DF2\u8986\u76D6",
|
|
594
703
|
"cli.install.stages.bootstrap": "\u6B63\u5728\u5B89\u88C5 bootstrap \u6A21\u677F...",
|
|
704
|
+
"cli.install.stages.bootstrap.snapshot.written": "\u5DF2\u5199\u5165 .fabric/AGENTS.md \u5FEB\u7167",
|
|
705
|
+
"cli.install.stages.bootstrap.snapshot.skipped": "\u5DF2\u8DF3\u8FC7 .fabric/AGENTS.md \u2014 \u5DF2\u662F\u6700\u65B0",
|
|
706
|
+
"cli.install.steps.bootstrap-claude": "\u5DF2\u66F4\u65B0 CLAUDE.md \u7684 @-import \u5F15\u7528",
|
|
707
|
+
"cli.install.steps.bootstrap-codex": "\u5DF2\u66F4\u65B0 AGENTS.md \u7684 fabric:bootstrap managed block",
|
|
708
|
+
"cli.install.steps.bootstrap-cursor": "\u5DF2\u66F4\u65B0 .cursor/rules/fabric-bootstrap.mdc",
|
|
595
709
|
"cli.install.stages.mcp": "\u6B63\u5728\u914D\u7F6E MCP \u5BA2\u6237\u7AEF...",
|
|
596
710
|
"cli.install.stages.hooks": "\u6B63\u5728\u5B89\u88C5 git hooks...",
|
|
597
711
|
"cli.install.stages.skipped": "\u5DF2\u8DF3\u8FC7",
|
|
@@ -606,8 +720,6 @@ var zhCNMessages = {
|
|
|
606
720
|
"cli.install.plan.title": "Fabric \u5B89\u88C5\u8BA1\u5212",
|
|
607
721
|
"cli.install.plan.mode-banner.default": "[mode: apply] \u6807\u51C6\u5B89\u88C5\u6267\u884C",
|
|
608
722
|
"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
723
|
"cli.install.plan.target": "\u76EE\u6807\uFF1A{target}",
|
|
612
724
|
"cli.install.plan.actions": "\u8BA1\u5212\uFF1Abootstrap={bootstrap} mcp={mcp} hooks={hooks} mcp-install={mcpInstall}",
|
|
613
725
|
"cli.install.plan.detected": "\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\uFF1A{clients}",
|
|
@@ -615,14 +727,8 @@ var zhCNMessages = {
|
|
|
615
727
|
"cli.install.plan.preview-title": "Fabric \u5B89\u88C5 dry run",
|
|
616
728
|
"cli.install.plan.preview-result": "\u6A21\u5F0F={mode} bootstrap={bootstrap} mcp={mcp} hooks={hooks}",
|
|
617
729
|
"cli.install.mode.default": "default",
|
|
618
|
-
"cli.install.mode.reapply": "reapply",
|
|
619
730
|
"cli.install.mode.badge.default": "APPLY",
|
|
620
731
|
"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
732
|
"cli.install.wizard.title": "Fabric \u5B89\u88C5\u5411\u5BFC",
|
|
627
733
|
"cli.install.wizard.intro": "Fabric install",
|
|
628
734
|
"cli.install.wizard.overview.title": "\u5B89\u88C5\u6982\u89C8",
|
|
@@ -673,27 +779,27 @@ var zhCNMessages = {
|
|
|
673
779
|
"cli.install.claude-settings.invalid-hooks": '{label} {path}\uFF1A"hooks" \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u3002',
|
|
674
780
|
"cli.install.claude-settings.invalid-stop-array": '{label} {path}\uFF1A"hooks.Stop" \u5FC5\u987B\u662F\u6570\u7EC4\u3002',
|
|
675
781
|
"cli.install.errors.abort-existing": "\u4E2D\u6B62\uFF1A{path} \u5DF2\u5B58\u5728\u3002fab install \u662F\u975E\u7834\u574F\u6027\u7684\u3002",
|
|
676
|
-
"cli.
|
|
677
|
-
"cli.
|
|
782
|
+
"cli.install.diff.canonical": "\u5DE5\u4F5C\u533A\u5DF2\u662F\u89C4\u8303\u72B6\u6001\uFF08\u5DF2\u6821\u9A8C {count} \u4E2A\u6587\u4EF6\uFF09\u3002",
|
|
783
|
+
"cli.install.diff.applying-missing": "\u6B63\u5728\u8865\u9F50 {count} \u4E2A\u7F3A\u5931\u9879\uFF1A{files}",
|
|
784
|
+
"cli.install.diff.drift-abort": "\u68C0\u6D4B\u5230 {path} \u5DF2\u88AB\u4FEE\u6539\u3002\u8FD0\u884C `fab doctor` \u8FDB\u884C\u68C0\u67E5\uFF0C\u6216 `fab uninstall && fab install` \u8FDB\u884C\u91CD\u7F6E\u3002",
|
|
785
|
+
"cli.install.diff.state.missing": "\u7F3A\u5931",
|
|
786
|
+
"cli.install.diff.state.present-canonical": "\u89C4\u8303",
|
|
787
|
+
"cli.install.diff.state.drifted": "\u6F02\u79FB",
|
|
788
|
+
"cli.install.diff.state.user-modified": "\u7528\u6237\u4FEE\u6539",
|
|
789
|
+
"cli.uninstall.description": "\u4ECE\u76EE\u6807\u9879\u76EE\u4E2D\u5378\u8F7D Fabric\u3002.fabric/knowledge/ \u59CB\u7EC8\u4FDD\u7559\uFF1B~/.fabric/knowledge/ \u6C38\u4E0D\u53D7\u5F71\u54CD\u3002\n\n\u793A\u4F8B\uFF1A\n fab uninstall \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u4EE5\u4EA4\u4E92\u6A21\u5F0F\u5378\u8F7D\n fab uninstall --yes \u63A5\u53D7\u9ED8\u8BA4\u503C\uFF0C\u8DF3\u8FC7 TTY \u5411\u5BFC\n fab uninstall --dry-run \u4EC5\u9884\u89C8\u5378\u8F7D\u8BA1\u5212\uFF0C\u4E0D\u5220\u9664\u6587\u4EF6",
|
|
790
|
+
"cli.uninstall.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
678
791
|
"cli.uninstall.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
|
|
679
|
-
"cli.uninstall.args.force.description": "\u5373\u4F7F serve \u8FDB\u7A0B\u6301\u6709\u9501\uFF0C\u4E5F\u5F3A\u5236\u8FD0\u884C\u3002",
|
|
680
792
|
"cli.uninstall.args.yes.description": "\u63A5\u53D7\u5F53\u524D\u5378\u8F7D\u8BA1\u5212\u5E76\u8DF3\u8FC7 TTY \u5411\u5BFC\u76F4\u63A5\u6267\u884C\u3002",
|
|
681
|
-
"cli.uninstall.args.
|
|
682
|
-
"cli.uninstall.flags.no-bootstrap": "\u8DF3\u8FC7 bootstrap \u9636\u6BB5\uFF08Skills\u3001hook \u811A\u672C\u3001hook \u914D\u7F6E\u53CD\u5408\u5E76\uFF09\u3002",
|
|
683
|
-
"cli.uninstall.flags.no-mcp": "\u8DF3\u8FC7 MCP \u9636\u6BB5\uFF08\u6309\u5BA2\u6237\u7AEF\u6267\u884C writer.remove('fabric')\uFF09\u3002",
|
|
684
|
-
"cli.uninstall.flags.no-scaffold": "\u8DF3\u8FC7 scaffold \u9636\u6BB5\uFF08.fabric/ \u72B6\u6001\u6587\u4EF6\u4E0E .gitkeep \u6807\u8BB0\uFF09\u3002",
|
|
685
|
-
"cli.uninstall.flags.interactive": "\u5728 TTY \u53EF\u7528\u65F6\u8FD0\u884C\u4EA4\u4E92\u5F0F\u5411\u5BFC\u3002",
|
|
686
|
-
"cli.uninstall.flags.purge": "\u540C\u65F6\u5220\u9664 .fabric/knowledge/ \u5B50\u76EE\u5F55\u5185\u5BB9\u53CA\u72B6\u6001\u6587\u4EF6\uFF1B~/.fabric/knowledge/ \u4E2A\u4EBA\u6839\u6C38\u4E0D\u53D7\u5F71\u54CD\u3002",
|
|
687
|
-
"cli.uninstall.flags.clean-empties": "\u53CD\u5408\u5E76\u94A9\u5B50\u914D\u7F6E\u65F6\u7EA7\u8054\u6E05\u7406\u7A7A\u6570\u7EC4/\u5BF9\u8C61\u3002",
|
|
793
|
+
"cli.uninstall.args.dry-run.description": "\u4EC5\u8F93\u51FA\u5378\u8F7D\u8BA1\u5212\uFF0C\u4E0D\u5220\u9664\u6587\u4EF6\u4E5F\u4E0D\u6267\u884C\u540E\u7EED\u9636\u6BB5\u3002",
|
|
688
794
|
"cli.uninstall.plan.title": "Fabric \u5378\u8F7D\u8BA1\u5212",
|
|
689
795
|
"cli.uninstall.plan.target": "\u76EE\u6807\uFF1A{target}",
|
|
690
|
-
"cli.uninstall.plan.actions": "\u8BA1\u5212\uFF1Ascaffold={scaffold} bootstrap={bootstrap} mcp={mcp}
|
|
796
|
+
"cli.uninstall.plan.actions": "\u8BA1\u5212\uFF1Ascaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
691
797
|
"cli.uninstall.plan.detected": "\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\uFF1A{clients}",
|
|
692
798
|
"cli.uninstall.plan.preserves": "\u4FDD\u7559\u9879\uFF1A",
|
|
693
|
-
"cli.uninstall.plan.preserves.knowledge": "\u56E2\u961F\u77E5\u8BC6\u6811\uFF08\
|
|
799
|
+
"cli.uninstall.plan.preserves.knowledge": "\u56E2\u961F\u77E5\u8BC6\u6811\uFF08\u59CB\u7EC8\u4FDD\u7559\uFF09",
|
|
694
800
|
"cli.uninstall.plan.preserves.personal": "\u4E2A\u4EBA\u6839\u76EE\u5F55\uFF0C\u6C38\u4E0D\u89E6\u78B0",
|
|
695
801
|
"cli.uninstall.plan.preview-title": "Fabric \u5378\u8F7D dry run",
|
|
696
|
-
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}
|
|
802
|
+
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
697
803
|
"cli.uninstall.plan.scaffold-entries.title": "Scaffold \u5F85\u6E05\u7406\u9879\uFF1A",
|
|
698
804
|
"cli.uninstall.stages.scaffold": "\u6B63\u5728\u6E05\u7406 scaffold \u4EA7\u7269...",
|
|
699
805
|
"cli.uninstall.stages.bootstrap": "\u6B63\u5728\u79FB\u9664 bootstrap\uFF08Skills + hooks\uFF09...",
|
|
@@ -705,7 +811,7 @@ var zhCNMessages = {
|
|
|
705
811
|
"cli.uninstall.summary.body": "removed={removed} skipped={skipped} errors={errors}",
|
|
706
812
|
"cli.uninstall.wizard.intro": "\u5378\u8F7D Fabric",
|
|
707
813
|
"cli.uninstall.wizard.overview.title": "\u5378\u8F7D\u6982\u89C8",
|
|
708
|
-
"cli.uninstall.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u8C03\u6574\u5378\u8F7D\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric uninstall \u9636\u6BB5\u3002\n
|
|
814
|
+
"cli.uninstall.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u8C03\u6574\u5378\u8F7D\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric uninstall \u9636\u6BB5\u3002\n.fabric/knowledge/ \u59CB\u7EC8\u4FDD\u7559\uFF1B~/.fabric/knowledge/ \u6C38\u4E0D\u53D7\u5F71\u54CD\u3002",
|
|
709
815
|
"cli.uninstall.wizard.step.target": "\u786E\u8BA4\u76EE\u6807",
|
|
710
816
|
"cli.uninstall.wizard.step.plan": "\u914D\u7F6E\u5378\u8F7D\u8BA1\u5212",
|
|
711
817
|
"cli.uninstall.wizard.step.review": "\u590D\u6838\u6700\u7EC8\u8BA1\u5212",
|
|
@@ -713,8 +819,6 @@ var zhCNMessages = {
|
|
|
713
819
|
"cli.uninstall.wizard.stage.scaffold": "\u662F\u5426\u6E05\u7406 scaffold \u4EA7\u7269\uFF1F[{defaultValue}]",
|
|
714
820
|
"cli.uninstall.wizard.stage.bootstrap": "\u662F\u5426\u79FB\u9664 bootstrap\uFF08Skills + hooks\uFF09\uFF1F[{defaultValue}]",
|
|
715
821
|
"cli.uninstall.wizard.stage.mcp": "\u662F\u5426\u53CD\u6CE8\u518C MCP \u5BA2\u6237\u7AEF\uFF1F[{defaultValue}]",
|
|
716
|
-
"cli.uninstall.wizard.purge": "\u662F\u5426\u4E00\u5E76\u6E05\u7406 .fabric/knowledge/ \u5B50\u76EE\u5F55\u5185\u5BB9\uFF1F~/.fabric/knowledge/ \u4E0D\u53D7\u5F71\u54CD\u3002[{defaultValue}]",
|
|
717
|
-
"cli.uninstall.wizard.clean-empties": "\u53CD\u5408\u5E76\u94A9\u5B50\u914D\u7F6E\u65F6\u7EA7\u8054\u6E05\u7406\u7A7A\u6570\u7EC4/\u5BF9\u8C61\uFF1F[{defaultValue}]",
|
|
718
822
|
"cli.uninstall.wizard.execute.confirm": "\u73B0\u5728\u6267\u884C\u8BE5\u5378\u8F7D\u8BA1\u5212\uFF1F[Y/n]",
|
|
719
823
|
"cli.uninstall.wizard.outro": "\u5378\u8F7D\u8BA1\u5212\u5DF2\u786E\u8BA4\uFF0C\u5F00\u59CB\u6267\u884C Fabric uninstall...",
|
|
720
824
|
"cli.uninstall.wizard.cancelled": "Fabric \u5378\u8F7D\u5DF2\u5728\u6267\u884C\u524D\u53D6\u6D88\u3002",
|
|
@@ -730,7 +834,7 @@ var zhCNMessages = {
|
|
|
730
834
|
"cli.pre-commit.args.target.description": "\u9879\u76EE\u6839\u76EE\u5F55\uFF0C\u9ED8\u8BA4\u53D6\u5F53\u524D\u76EE\u5F55\u6216 EXTERNAL_FIXTURE_PATH\u3002",
|
|
731
835
|
"cli.pre-commit.run-failed": "fabric pre-commit\uFF1A{name} \u5931\u8D25 - {message}",
|
|
732
836
|
"cli.scan.description": "\u626B\u63CF\u9879\u76EE\u4EE5\u68C0\u6D4B Fabric \u5F15\u5BFC\u5019\u9009\u6A21\u5757\u3002",
|
|
733
|
-
"cli.scan.args.target.description": "\u76EE\u6807\u7EDD\u5BF9\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528
|
|
837
|
+
"cli.scan.args.target.description": "\u76EE\u6807\u7EDD\u5BF9\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
734
838
|
"cli.scan.args.debug.description": "\u4EE5\u683C\u5F0F\u5316\u8F93\u51FA\u6253\u5370\u68C0\u6D4B\u8BC1\u636E\u3002",
|
|
735
839
|
"cli.scan.args.json.description": "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u8BCA\u65AD\u62A5\u544A\u3002",
|
|
736
840
|
"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",
|
|
@@ -748,22 +852,22 @@ var zhCNMessages = {
|
|
|
748
852
|
"cli.scan.report.recommendations": "\u5EFA\u8BAE\uFF1A",
|
|
749
853
|
"cli.scan.readme-quality.ok": "\u826F\u597D",
|
|
750
854
|
"cli.scan.readme-quality.stub": "\u8349\u7A3F",
|
|
751
|
-
"cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab install\uFF0C\u5728 .fabric/
|
|
855
|
+
"cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab install\uFF0C\u5728 .fabric/AGENTS.md \u751F\u6210 Fabric \u5F15\u5BFC\u89C4\u8303\u5185\u5BB9\u3002",
|
|
752
856
|
"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",
|
|
753
857
|
"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",
|
|
754
858
|
"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",
|
|
755
859
|
"cli.scan.recommendation.framework-dirs": "L1\uFF1A\u68C0\u67E5 {framework} \u76EE\u5F55\uFF0C\u540E\u7EED\u4E3A\u5176\u8865\u5145\u5BF9\u5E94\u4F5C\u7528\u57DF\u7684 Fabric \u89C4\u5219\u6587\u4EF6\u3002",
|
|
756
|
-
"cli.serve.description": "\u542F\u52A8\u672C\u5730 Fabric MCP HTTP \u670D\u52A1\u3002\
|
|
860
|
+
"cli.serve.description": "\u542F\u52A8\u672C\u5730 Fabric MCP HTTP \u670D\u52A1\u3002\n\n\u793A\u4F8B\uFF1A\n fab serve \u7ED1\u5B9A 127.0.0.1:7373\uFF08\u9ED8\u8BA4\uFF09\n fab serve --port 8787 \u4F7F\u7528\u81EA\u5B9A\u4E49\u7AEF\u53E3\n FABRIC_AUTH_TOKEN=<token> fab serve --host 0.0.0.0 \u7ED1\u5B9A\u975E loopback \u5E76\u542F\u7528 Bearer \u9274\u6743",
|
|
757
861
|
"cli.serve.args.port.description": "\u76D1\u542C\u7AEF\u53E3\uFF0C\u9ED8\u8BA4 7373\u3002",
|
|
758
|
-
"cli.serve.args.host.description": "\u76D1\u542C\u4E3B\u673A\uFF0C\u9ED8\u8BA4 127.0.0.1\u3002\
|
|
759
|
-
"cli.serve.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528
|
|
862
|
+
"cli.serve.args.host.description": "\u76D1\u542C\u4E3B\u673A\uFF0C\u9ED8\u8BA4 127.0.0.1\u3002\u7ED1\u5B9A\u975E loopback \u4E3B\u673A\uFF08\u5982 0.0.0.0\uFF09\u5FC5\u987B\u8BBE\u7F6E FABRIC_AUTH_TOKEN \u542F\u7528 Bearer \u9274\u6743\uFF0C\u5426\u5219\u5C06\u81EA\u52A8\u56DE\u9000\u5230 127.0.0.1\u3002",
|
|
863
|
+
"cli.serve.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
760
864
|
"cli.serve.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
|
|
761
|
-
"cli.serve.args.force.description": "\u5373\u4F7F\u53E6\u4E00\u4E2A serve \u8FDB\u7A0B\u6B63\u5728\u8FD0\u884C\uFF0C\u4E5F\u5F3A\u5236\u83B7\u53D6 serve \u9501\u3002",
|
|
762
865
|
"cli.serve.ready.title": "Fabric \u4EEA\u8868\u76D8",
|
|
763
|
-
"cli.serve.
|
|
866
|
+
"cli.serve.lock-held.action-hint": "\u53E6\u4E00\u4E2A `fab serve` \u8FDB\u7A0B (PID {pid}) \u6B63\u5360\u7528\u5DE5\u4F5C\u533A\u9501\u3002\u8BF7\u5148\u505C\u6B62\u5B83 (\u5728\u8BE5\u7EC8\u7AEF\u6309 Ctrl-C \u6216\u8FD0\u884C `kill {pid}`) \u518D\u6267\u884C\u6B64\u547D\u4EE4\u3002",
|
|
867
|
+
"cli.serve.warning.host-fallback": "--host {host} \u9700\u8981\u8BBE\u7F6E FABRIC_AUTH_TOKEN \u624D\u80FD\u5BF9\u5916\u66B4\u9732\uFF1B\u5DF2\u56DE\u9000\u5230 127.0.0.1\u3002\u5982\u9700\u7ED1\u5B9A {host}\uFF0C\u8BF7\u8FD0\u884C\uFF1AFABRIC_AUTH_TOKEN=<token> fab serve --host {host}",
|
|
764
868
|
"cli.serve.error.port-in-use": "\u7AEF\u53E3 {port} \u5DF2\u88AB\u5360\u7528\uFF0C\u53EF\u5C1D\u8BD5 --port {nextPort}",
|
|
765
869
|
"cli.update.description": "\u5237\u65B0 MCP \u4E3B\u673A\u914D\u7F6E\u548C git hooks\uFF0C\u4E0D\u91CD\u65B0\u521B\u5EFA Fabric \u6587\u4EF6\u3002",
|
|
766
|
-
"cli.update.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528
|
|
870
|
+
"cli.update.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 --target\u3001EXTERNAL_FIXTURE_PATH\u3001\u5F53\u524D\u76EE\u5F55\u3002",
|
|
767
871
|
"cli.update.args.no-mcp.description": "\u8DF3\u8FC7\u91CD\u65B0\u914D\u7F6E MCP \u5BA2\u6237\u7AEF",
|
|
768
872
|
"cli.update.args.no-hooks.description": "\u8DF3\u8FC7\u91CD\u65B0\u5B89\u88C5 git hooks",
|
|
769
873
|
"cli.sync-meta.description": "\u4ECE\u5185\u90E8\u89C4\u5219\u6587\u4EF6\u540C\u6B65 Fabric \u5143\u6570\u636E\u3002",
|