@fenglimg/fabric-shared 2.3.0-rc.1 → 2.3.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-D7HUHWBI.js → chunk-7PS7LB5T.js} +20 -1
- package/dist/{chunk-2GLIAZ5M.js → chunk-ASS2KBB7.js} +30 -7
- package/dist/{chunk-SQKWD7X6.js → chunk-KFFBQRL5.js} +1 -1
- package/dist/{chunk-IFMFEX3V.js → chunk-UPYKUYHN.js} +251 -19
- package/dist/i18n/index.js +2 -2
- package/dist/index-C0cijMSw.d.ts +892 -0
- package/dist/index.d.ts +22 -236
- package/dist/index.js +94 -15
- package/dist/schemas/api-contracts.d.ts +73 -0
- package/dist/schemas/api-contracts.js +1 -1
- package/dist/templates/bootstrap-canonical.js +2 -2
- package/dist/theme.d.ts +2 -1
- package/dist/theme.js +7 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/index-BqsM1bzx.d.ts +0 -389
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveGlobalLocale
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ASS2KBB7.js";
|
|
4
4
|
|
|
5
5
|
// src/i18n/locales/en.ts
|
|
6
6
|
var enMessages = {
|
|
@@ -18,6 +18,12 @@ var enMessages = {
|
|
|
18
18
|
"cli.shared.none": "none",
|
|
19
19
|
"cli.shared.loading": "loading",
|
|
20
20
|
"cli.shared.refresh": "Refresh",
|
|
21
|
+
// flat-design-system Wave4 (TASK-004): gutter-free ✓/x receipt printed after a
|
|
22
|
+
// clack control (select/multiselect/confirm/text) resolves. The clack control
|
|
23
|
+
// stays native (C-006); the receipt is a separate flat line.
|
|
24
|
+
"cli.prompt.receipt.selected": "Selected",
|
|
25
|
+
"cli.prompt.receipt.set": "Set",
|
|
26
|
+
"cli.prompt.receipt.cancelled": "Cancelled",
|
|
21
27
|
"cli.shared.target-invalid": "Target must be an existing directory: {target}",
|
|
22
28
|
"cli.shared.target-invalid.action-hint": "Choose an existing project directory, or create it before running the command again.",
|
|
23
29
|
"cli.shared.template-not-found": "Template not found: {path}",
|
|
@@ -54,6 +60,9 @@ var enMessages = {
|
|
|
54
60
|
// Keys consumed by packages/cli/src/commands/config.ts (menu loop +
|
|
55
61
|
// per-field prompts) and by getPanelFields() (label_i18n_key references).
|
|
56
62
|
"cli.config.intro": "Fabric Configuration",
|
|
63
|
+
// flat-design-system Wave5 (TASK-005): B-横线 title above the flat key/value
|
|
64
|
+
// panel printed before the clack edit menu.
|
|
65
|
+
"cli.config.panel.title": "Current configuration",
|
|
57
66
|
"cli.config.outro": "Configuration saved.",
|
|
58
67
|
"cli.config.outro-no-changes": "No changes made.",
|
|
59
68
|
"cli.config.cancel": "Cancelled.",
|
|
@@ -96,12 +105,19 @@ var enMessages = {
|
|
|
96
105
|
"cli.config.fields.nudge_mode.label": "Nudge level",
|
|
97
106
|
"cli.config.fields.nudge_mode.description": "Preset for human-visible nudges (silent / minimal / normal / verbose). Governs only the human channel \u2014 never the knowledge injected to the AI.",
|
|
98
107
|
"cli.config.fields.embed_enabled.label": "Vector semantic search",
|
|
99
|
-
"cli.config.fields.embed_enabled.description": "Enable vector semantic recall (true / false). Note:
|
|
108
|
+
"cli.config.fields.embed_enabled.description": "Enable vector semantic recall (true / false). Note: true is just intent \u2014 it only takes effect when the running server can resolve the fastembed package AND the model is downloaded (auto-fetched to ~/.fabric/cache/embed on first recall). Check actual state with `fabric info recall`.",
|
|
109
|
+
"cli.config.fields.fusion.label": "Recall fusion strategy",
|
|
110
|
+
"cli.config.fields.fusion.description": "How the signals combine into one score: additive = weighted sum (BM25-led, small vector weight) / rrf = Reciprocal Rank Fusion (BM25 and vector on equal footing, so semantics actually count) / auto = adaptive (default: rrf when the vector channel is scoring, else additive \u2014 avoids degenerate single-channel rrf being worse).",
|
|
100
111
|
"cli.doctor.description": "Run Fabric target-state diagnostics (meta sync, knowledge index, bootstrap, events ledger, human-lock drift).\n\nExamples:\n fabric doctor read-only diagnostics report\n fabric doctor --fix repair derived state (meta + indexes)\n fabric doctor --fix-knowledge apply lint mutations (counter / archive / cache)\n fabric doctor --json machine-readable output",
|
|
101
112
|
"doctor.section.fixable": "Fixable errors:",
|
|
102
113
|
"doctor.section.manual": "Manual errors:",
|
|
103
114
|
"doctor.section.warnings": "Warnings:",
|
|
104
115
|
"doctor.section.fix-knowledge-mutations": "Fix-knowledge mutations:",
|
|
116
|
+
// flat-design-system Wave5 (TASK-005): C-圆点 group headers for the reskinned
|
|
117
|
+
// doctor surface (`● Store Health` / `● Checks`), replacing the old hardcoded
|
|
118
|
+
// sectionBar literals so the wording is localized in both locales.
|
|
119
|
+
"doctor.group.store-health": "Store Health",
|
|
120
|
+
"doctor.group.checks": "Checks",
|
|
105
121
|
// v2.0.0-rc.29 REVIEW (codex LOW-2): F2's payload-limit defaults reach the JSON
|
|
106
122
|
// envelope but never surfaced in the human renderer, so operators tuning
|
|
107
123
|
// `mcpPayloadLimits` had no fast `fabric doctor` confirmation that their config
|
|
@@ -557,6 +573,9 @@ var enMessages = {
|
|
|
557
573
|
"cli.install.args.dry-run.description": "Print the install plan without writing files or running follow-up stages",
|
|
558
574
|
"cli.install.args.enable-embed.description": "Opt in to vector semantic search (sets embed_enabled + embed_model; prints fastembed install steps)",
|
|
559
575
|
"cli.install.args.embed-model.description": "With --enable-embed: override the pinned embed model (default fast-bge-small-zh-v1.5)",
|
|
576
|
+
// TASK-004: --verbose expands the per-phase detail a collapsed re-install would
|
|
577
|
+
// fold, and prints the full per-client capability table.
|
|
578
|
+
"cli.install.args.verbose.description": "Show full detail: don't collapse an idempotent re-install into a health-check card, and print the per-client capability table",
|
|
560
579
|
// rc.35 TASK-08 (P0-5/6): --force-skills-only.
|
|
561
580
|
"cli.install.args.force-skills-only.description": "Skip bootstrap / MCP / hooks / settings; refresh ONLY the fabric Skill template copies (.claude/.codex/skills/*).",
|
|
562
581
|
"cli.install.force-skills-only.banner": "Refreshing fabric Skill templates only",
|
|
@@ -585,7 +604,26 @@ var enMessages = {
|
|
|
585
604
|
"cli.install.steps.bootstrap-claude": "Updated CLAUDE.md with @-import directives",
|
|
586
605
|
"cli.install.steps.bootstrap-codex": "Updated AGENTS.md with fabric:bootstrap managed block",
|
|
587
606
|
"cli.install.stages.mcp": "Configuring MCP clients...",
|
|
588
|
-
"cli.install.stages.hooks": "Installing
|
|
607
|
+
"cli.install.stages.hooks": "Installing hooks & skills...",
|
|
608
|
+
"cli.install.preflight.error.no-home": "Cannot determine home directory for global root",
|
|
609
|
+
"cli.install.preflight.error.not-dir": "Global Fabric root is not a directory: {path}",
|
|
610
|
+
"cli.install.preflight.error.parent-not-dir": "Global Fabric root parent is not a directory: {path}",
|
|
611
|
+
"cli.install.preflight.error.not-writable": "{label} is not writable: {path} ({reason})",
|
|
612
|
+
"cli.install.preflight.error.git-required": "git is required for --url installs but was not available: {reason}",
|
|
613
|
+
"cli.install.preflight.label.target": "Target",
|
|
614
|
+
"cli.install.preflight.label.global-root": "Global Fabric root",
|
|
615
|
+
"cli.install.preflight.label.global-root-parent": "Global Fabric root parent",
|
|
616
|
+
"cli.install.guidance.more": "More: docs/surfaces.md explains when to use CLI vs Skill vs MCP.",
|
|
617
|
+
"cli.install.validate.passed": "Validation passed \u2713 (config / hook paths / events all ready)",
|
|
618
|
+
"cli.install.validate.failed": "Validation failed: {count} error(s)",
|
|
619
|
+
"cli.install.validate.failed-item": " - {error}",
|
|
620
|
+
"cli.install.hooks.uptodate": "hooks & skills already up to date ({count} items)",
|
|
621
|
+
"cli.install.hooks.installed": "installed skill\xD7{skills} + hook\xD7{hooks}",
|
|
622
|
+
"cli.install.mcp.configured": "MCP configured: {clients}",
|
|
623
|
+
"cli.install.mcp.none": "no MCP clients to configure",
|
|
624
|
+
"cli.install.scan.finding.framework": "Detected: {framework} project",
|
|
625
|
+
"cli.install.scan.finding.scale": "Scale: {files} files \xB7 {entries} entry points",
|
|
626
|
+
"cli.install.rollback.feedback": "Rolled back {count} change(s); project left unchanged.",
|
|
589
627
|
"cli.install.stages.skipped": "skipped",
|
|
590
628
|
"cli.install.stages.completed": "completed",
|
|
591
629
|
"cli.install.stages.failed": "failed",
|
|
@@ -595,6 +633,29 @@ var enMessages = {
|
|
|
595
633
|
"cli.install.pipeline.title": "Fabric Install",
|
|
596
634
|
"cli.install.pipeline.complete": "Fabric Install Complete",
|
|
597
635
|
"cli.install.pipeline.running": "Running {count} stages...",
|
|
636
|
+
// TASK-002 (G1): summary-card completion + count words. Formerly hardcoded
|
|
637
|
+
// English in ConsoleOutputRenderer (Done! / succeeded / skipped / failed /
|
|
638
|
+
// "All steps completed successfully"); routed through t() + dual-locale tables
|
|
639
|
+
// so locale-parity.test.ts guards both en + zh-CN carry every key.
|
|
640
|
+
"cli.summary.done": "Done!",
|
|
641
|
+
"cli.summary.all-ok": "All steps completed successfully",
|
|
642
|
+
"cli.summary.n-failed": "{count} step(s) failed",
|
|
643
|
+
"cli.summary.n-of-total": "{done}/{total} steps completed",
|
|
644
|
+
"cli.summary.count.succeeded": "succeeded",
|
|
645
|
+
"cli.summary.count.skipped": "skipped",
|
|
646
|
+
"cli.summary.count.failed": "failed",
|
|
647
|
+
// TASK-004: a first-ever install gets an onboarding-tone intro; a re-install
|
|
648
|
+
// keeps the terse "Running N stages" line. {count} = total stages.
|
|
649
|
+
"cli.install.pipeline.intro.firstRun": "Welcome to Fabric \u2014 this is your first install. I'll walk you through a one-time setup ({count} stages); later runs skip anything already in place.",
|
|
650
|
+
// TASK-004: the single collapsed health-check card title for a fully-idempotent
|
|
651
|
+
// re-install. {count} = total stages. Detail is behind --verbose.
|
|
652
|
+
"cli.install.healthcheck.title": "\u2713 Fabric is up to date \xB7 {count} stages ready \xB7 no changes",
|
|
653
|
+
// TASK-003 (G2 root a): the per-stage summary-detail status word now branches on
|
|
654
|
+
// r.changed (not installed.length) — a no-change re-ensure says "up to date"
|
|
655
|
+
// instead of misreporting "N installed". installed-count is used only when the
|
|
656
|
+
// stage actually changed something.
|
|
657
|
+
"cli.install.stage.uptodate": "up to date",
|
|
658
|
+
"cli.install.stage.installed-count": "{count} installed",
|
|
598
659
|
"cli.install.pipeline.label.preflight": "Preflight check",
|
|
599
660
|
"cli.install.pipeline.label.env": "Environment setup",
|
|
600
661
|
"cli.install.pipeline.label.store": "Store configuration",
|
|
@@ -604,6 +665,10 @@ var enMessages = {
|
|
|
604
665
|
"cli.install.pipeline.label.guidance": "Next steps",
|
|
605
666
|
"cli.install.pipeline.desc.store": "Bind the current project's read/write store; refresh the resolved-bindings snapshot.",
|
|
606
667
|
"cli.install.next-step": "{label} {message}",
|
|
668
|
+
// TASK-002 (G6): a single golden-action anchor that closes the summary card.
|
|
669
|
+
// The verbose capability table is gated behind --verbose; this one line is the
|
|
670
|
+
// honest "what to do next" footer. {action} = the concrete next command.
|
|
671
|
+
"cli.install.next-step.anchor": "Next \u2192 {action}",
|
|
607
672
|
"cli.install.reason-message": "{label} {message}",
|
|
608
673
|
"cli.install.language.prompt": "Choose the Fabric language (used for both UI and knowledge; change later via `fabric config`):",
|
|
609
674
|
"cli.install.language.option.zh-CN": "\u7B80\u4F53\u4E2D\u6587 (zh-CN)",
|
|
@@ -631,6 +696,10 @@ var enMessages = {
|
|
|
631
696
|
"cli.install.wizard.stage.bootstrap": "Install bootstrap templates? [{defaultValue}]",
|
|
632
697
|
"cli.install.wizard.stage.mcp": "Configure MCP clients? [{defaultValue}]",
|
|
633
698
|
"cli.install.wizard.stage.hooks": "Install git hooks? [{defaultValue}]",
|
|
699
|
+
// flat-design-system Wave4 (TASK-004): short stage labels for the post-group ✓ receipt.
|
|
700
|
+
"cli.install.wizard.stage.bootstrap.short": "bootstrap templates",
|
|
701
|
+
"cli.install.wizard.stage.mcp.short": "MCP clients",
|
|
702
|
+
"cli.install.wizard.stage.hooks.short": "git hooks",
|
|
634
703
|
"cli.install.wizard.mcp-install": "MCP server install scope (global/local) [{defaultValue}]",
|
|
635
704
|
"cli.install.wizard.execute.confirm": "Execute this install plan now? [Y/n]",
|
|
636
705
|
"cli.install.wizard.outro": "Install plan accepted. Running Fabric install...",
|
|
@@ -638,6 +707,10 @@ var enMessages = {
|
|
|
638
707
|
"cli.install.wizard.invalid-select": "Invalid value. Use one of: {options}.",
|
|
639
708
|
"cli.install.wizard.cancelled": "Fabric install cancelled before execution.",
|
|
640
709
|
"cli.install.capabilities.title": "Client capability summary",
|
|
710
|
+
// C-006 (TASK-004): print a single one-line capability summary by default and
|
|
711
|
+
// let the summary card lead the closing impression; the full 4×6 per-client
|
|
712
|
+
// table only renders under --verbose. {count} = detected client count.
|
|
713
|
+
"cli.install.capabilities.summaryLine": "Detected {count} client(s) and configured their capabilities (run with --verbose for the per-client table).",
|
|
641
714
|
// v2.0.0-rc.37 NEW-22: post-install restart banner. The MCP server is
|
|
642
715
|
// spawned by the client; already-running Claude Code / Codex
|
|
643
716
|
// sessions won't pick up the new mcp config until they restart.
|
|
@@ -659,6 +732,25 @@ var enMessages = {
|
|
|
659
732
|
"cli.install.store.setup.prompt": "Set up a knowledge store for this project?",
|
|
660
733
|
"cli.install.store.setup.bind-label": "bind mounted: {alias}",
|
|
661
734
|
"cli.install.store.setup.already-bound": "already bound to this project: {aliases} \u2713",
|
|
735
|
+
// W2 dual-slot (TASK-002): personal slot + team slot status / prompt copy. The
|
|
736
|
+
// team slot is named by CATEGORY (team-class), and rows show the store's REAL
|
|
737
|
+
// alias — the copy MUST NOT imply the store has to be aliased literally `team`
|
|
738
|
+
// (KT-MOD-0001 naming-axis trap).
|
|
739
|
+
"cli.install.store.slot.personal.status": "Personal store (machine-wide): '{alias}' \u2713",
|
|
740
|
+
"cli.install.store.slot.personal.absent": "Personal store (machine-wide): not set up yet",
|
|
741
|
+
"cli.install.store.slot.personal.multi-none": "Personal store (machine-wide): {count} mounted, none active yet",
|
|
742
|
+
"cli.install.store.slot.personal.multi-prompt": "Pick this machine's active personal store:",
|
|
743
|
+
"cli.install.store.slot.personal.multi-active-label": "'{alias}' (current active)",
|
|
744
|
+
"cli.install.store.slot.personal.multi-switch-label": "switch to '{alias}'",
|
|
745
|
+
"cli.install.store.slot.personal.multi-new-label": "create a new local personal store",
|
|
746
|
+
"cli.install.store.slot.personal.multi-new-hint": "a fresh empty personal store, set as active",
|
|
747
|
+
"cli.install.store.slot.personal.new-alias": "alias for the new personal store:",
|
|
748
|
+
"cli.install.store.slot.personal.switched": "active personal store switched to '{alias}'",
|
|
749
|
+
"cli.install.store.slot.team.status": "Team store (team-class): '{alias}' \u2713",
|
|
750
|
+
"cli.install.store.slot.team.empty": "Team store (team-class): none bound yet",
|
|
751
|
+
"cli.install.store.slot.team.prompt": "Team store (team-class) for this project \u2014 pick one, or join/create/skip:",
|
|
752
|
+
"cli.install.store.slot.team.bound-label": "keep current: {alias}",
|
|
753
|
+
"cli.install.store.slot.team.switch-label": "switch to mounted: {alias}",
|
|
662
754
|
"cli.install.store.skip-label": "skip",
|
|
663
755
|
"cli.install.store.bind-mounted.skip-hint": "leave mounted stores unbound for now",
|
|
664
756
|
"cli.install.store.project-coordinate": "Project coordinate in store '{store}':",
|
|
@@ -680,6 +772,9 @@ var enMessages = {
|
|
|
680
772
|
"cli.install.store.unbound-note": "Note: The following stores are mounted but not bound to this project: {aliases}.",
|
|
681
773
|
"cli.install.store.unbound-hint": " Run 'fabric store bind {first}' to bind one.",
|
|
682
774
|
// C4: personal store clone-or-new.
|
|
775
|
+
// TASK-004: prefixed onto a first-install one-time prompt (language / personal
|
|
776
|
+
// store onboarding) so the user knows these questions only appear at first setup.
|
|
777
|
+
"cli.install.store.firstRunContext": "First-time setup \u2014 the following are one-time choices that appear only on first install:",
|
|
683
778
|
"cli.install.store.personal.prompt": "No personal store on this machine yet. Create a fresh one, or clone your existing one from a remote?",
|
|
684
779
|
"cli.install.store.personal.new-label": "create local (default)",
|
|
685
780
|
"cli.install.store.personal.new-hint": "a fresh empty personal store",
|
|
@@ -732,34 +827,58 @@ var enMessages = {
|
|
|
732
827
|
"cli.uninstall.args.target.description": "Target project path. Defaults to --target, then EXTERNAL_FIXTURE_PATH, then cwd.",
|
|
733
828
|
"cli.uninstall.args.debug.description": "Print target resolution details to stderr.",
|
|
734
829
|
"cli.uninstall.args.yes.description": "Accept the current uninstall plan and run without the TTY wizard.",
|
|
830
|
+
"cli.uninstall.args.verbose.description": "Show per-path detail counts for each stage instead of the condensed result line.",
|
|
831
|
+
"cli.uninstall.args.unbind-store.description": "Also unbind this project from its team store (clears the binding in .fabric/fabric-config.json). The global store under ~/.fabric/stores/ is never deleted.",
|
|
735
832
|
"cli.uninstall.args.dry-run.description": "Print the uninstall plan without removing files or running follow-up stages.",
|
|
736
833
|
"cli.uninstall.plan.title": "Fabric uninstall plan",
|
|
737
834
|
// C3: mirror install's phase banner ("Fabric install 将按 N 个阶段执行").
|
|
738
835
|
"cli.uninstall.plan.phase-banner": "Fabric uninstall runs in {total} phases",
|
|
739
836
|
"cli.uninstall.plan.target": "Target: {target}",
|
|
740
|
-
|
|
837
|
+
// flat-design-system Wave5 (TASK-004 G3): the plan preview speaks human action
|
|
838
|
+
// sentences, one per ENABLED stage, instead of the `key=yes/no` jargon line.
|
|
839
|
+
"cli.uninstall.plan.will-remove": "Will remove:",
|
|
840
|
+
"cli.uninstall.plan.will-keep": "Will keep:",
|
|
841
|
+
"cli.uninstall.plan.action.bootstrap": "client skills & hook scripts",
|
|
842
|
+
"cli.uninstall.plan.action.mcp": "MCP server registration",
|
|
843
|
+
"cli.uninstall.plan.action.scaffold": "project scaffold files",
|
|
844
|
+
"cli.uninstall.plan.action.store": "team store binding (this project)",
|
|
741
845
|
"cli.uninstall.plan.detected": "Detected clients: {clients}",
|
|
742
846
|
"cli.uninstall.plan.preserves": "Preserves:",
|
|
743
847
|
"cli.uninstall.plan.preserves.stores": "global knowledge stores, never deleted by project uninstall",
|
|
744
848
|
"cli.uninstall.plan.preview-title": "Fabric uninstall dry run",
|
|
745
|
-
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
746
849
|
"cli.uninstall.plan.scaffold-entries.title": "Scaffold entries:",
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
"cli.uninstall.
|
|
850
|
+
// W4: shared OutputRenderer pipeline — section bar title + per-stage labels,
|
|
851
|
+
// the symmetric inverse of cli.install.pipeline.*.
|
|
852
|
+
"cli.uninstall.pipeline.title": "Fabric Uninstall",
|
|
853
|
+
"cli.uninstall.pipeline.label.bootstrap": "Skills & hooks",
|
|
854
|
+
"cli.uninstall.pipeline.label.mcp": "MCP server",
|
|
855
|
+
"cli.uninstall.pipeline.label.store": "Store unbind",
|
|
856
|
+
"cli.uninstall.pipeline.label.scaffold": "Scaffold cleanup",
|
|
857
|
+
"cli.uninstall.pipeline.label.validate": "Verify cleared",
|
|
750
858
|
"cli.uninstall.stages.completed": "completed",
|
|
751
859
|
"cli.uninstall.stages.completed-with-errors": "completed with errors",
|
|
752
860
|
"cli.uninstall.stages.failed": "failed",
|
|
861
|
+
"cli.uninstall.stages.failed-hint": "Check the error details above. Run with --debug for more information.",
|
|
862
|
+
"cli.uninstall.stages.uptodate": "nothing to remove ({count} already absent)",
|
|
863
|
+
"cli.uninstall.stages.summary": "removed={removed} skipped={skipped} errors={errors}",
|
|
864
|
+
"cli.uninstall.stages.removed-count": "{count} removed",
|
|
865
|
+
// flat-design-system Wave5 (TASK-006 G3): human result words for the summary
|
|
866
|
+
// card detail rows, symmetric with install's `{count} installed` / `up to date`.
|
|
867
|
+
"cli.uninstall.stage.cleaned-count": "{count} cleaned",
|
|
868
|
+
"cli.uninstall.stage.already-clean": "already clean",
|
|
753
869
|
"cli.uninstall.summary.title": "Uninstall summary",
|
|
754
870
|
"cli.uninstall.summary.body": "removed={removed} skipped={skipped} errors={errors}",
|
|
871
|
+
"cli.uninstall.healthcheck.title": "\u2713 Fabric already absent \xB7 nothing to remove",
|
|
755
872
|
"cli.uninstall.wizard.intro": "Fabric uninstall",
|
|
756
873
|
"cli.uninstall.wizard.select.prompt": "What should be removed from {target}? (space to toggle / enter to confirm; global knowledge stores under ~/.fabric/stores/ are never deleted)",
|
|
757
874
|
"cli.uninstall.wizard.select.scaffold.label": "Scaffold artifacts",
|
|
758
875
|
"cli.uninstall.wizard.select.scaffold.hint": "Scaffolded files under .fabric/",
|
|
759
|
-
"cli.uninstall.wizard.select.bootstrap.label": "
|
|
760
|
-
"cli.uninstall.wizard.select.bootstrap.hint": "Per-client skills and
|
|
876
|
+
"cli.uninstall.wizard.select.bootstrap.label": "Skills & hooks",
|
|
877
|
+
"cli.uninstall.wizard.select.bootstrap.hint": "Per-client skills and hook scripts + config",
|
|
761
878
|
"cli.uninstall.wizard.select.mcp.label": "MCP client registration",
|
|
762
879
|
"cli.uninstall.wizard.select.mcp.hint": "Un-register the fabric MCP server from clients",
|
|
880
|
+
"cli.uninstall.wizard.select.store.label": "Unbind team store (this project)",
|
|
881
|
+
"cli.uninstall.wizard.select.store.hint": "Clears this project's store binding; the global store is never deleted",
|
|
763
882
|
"cli.uninstall.wizard.execute.confirm": "Execute this uninstall plan now? [Y/n]",
|
|
764
883
|
"cli.uninstall.wizard.outro": "Uninstall plan accepted. Running Fabric uninstall...",
|
|
765
884
|
"cli.uninstall.wizard.cancelled": "Fabric uninstall cancelled before execution.",
|
|
@@ -990,6 +1109,7 @@ var enMessages = {
|
|
|
990
1109
|
"cli.store.detached": "detached '{alias}' \u2014 on-disk store tree left intact (detach \u2260 delete)",
|
|
991
1110
|
"cli.store.bound": "bound required store '{id}' ({count} required)",
|
|
992
1111
|
"cli.store.switch-write": "active write store set to '{alias}' for this project",
|
|
1112
|
+
"cli.store.switch-personal": "active personal store set to '{alias}' for this machine",
|
|
993
1113
|
"cli.store.routed": "write route: scope '{scope}' \u2192 store '{alias}'",
|
|
994
1114
|
"cli.sync.deferred": "{count} store(s) offline \u2014 push deferred; re-run `fabric sync` when online",
|
|
995
1115
|
"cli.sync.paused": "sync paused on a conflict \u2014 resolve it, then run `fabric sync --continue` (or `--abort`)",
|
|
@@ -1032,6 +1152,11 @@ var zhCNMessages = {
|
|
|
1032
1152
|
"cli.shared.none": "\u65E0",
|
|
1033
1153
|
"cli.shared.loading": "\u52A0\u8F7D\u4E2D",
|
|
1034
1154
|
"cli.shared.refresh": "\u5237\u65B0",
|
|
1155
|
+
// flat-design-system Wave4 (TASK-004): clack 控件(select/multiselect/confirm/text)
|
|
1156
|
+
// 落定后打印的平铺无沟槽 ✓/x 回执行。控件保持原生(C-006),回执是独立的一行。
|
|
1157
|
+
"cli.prompt.receipt.selected": "\u5DF2\u9009",
|
|
1158
|
+
"cli.prompt.receipt.set": "\u5DF2\u8BBE\u7F6E",
|
|
1159
|
+
"cli.prompt.receipt.cancelled": "\u5DF2\u53D6\u6D88",
|
|
1035
1160
|
"cli.shared.target-invalid": "\u76EE\u6807\u5FC5\u987B\u662F\u5DF2\u5B58\u5728\u7684\u76EE\u5F55\uFF1A{target}",
|
|
1036
1161
|
"cli.shared.target-invalid.action-hint": "\u8BF7\u9009\u62E9\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684\u9879\u76EE\u76EE\u5F55\uFF0C\u6216\u5148\u521B\u5EFA\u8BE5\u76EE\u5F55\u540E\u518D\u91CD\u65B0\u8FD0\u884C\u547D\u4EE4\u3002",
|
|
1037
1162
|
"cli.shared.template-not-found": "\u672A\u627E\u5230\u6A21\u677F\uFF1A{path}",
|
|
@@ -1063,6 +1188,9 @@ var zhCNMessages = {
|
|
|
1063
1188
|
// 由 packages/cli/src/commands/config.ts(菜单循环 + 字段编辑)以及
|
|
1064
1189
|
// getPanelFields() 的 label_i18n_key 引用消费。
|
|
1065
1190
|
"cli.config.intro": "Fabric \u914D\u7F6E",
|
|
1191
|
+
// flat-design-system Wave5 (TASK-005): clack 编辑菜单前那块平铺键值面板的
|
|
1192
|
+
// B-横线标题。
|
|
1193
|
+
"cli.config.panel.title": "\u5F53\u524D\u914D\u7F6E",
|
|
1066
1194
|
"cli.config.outro": "\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002",
|
|
1067
1195
|
"cli.config.outro-no-changes": "\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\u3002",
|
|
1068
1196
|
"cli.config.cancel": "\u5DF2\u53D6\u6D88\u3002",
|
|
@@ -1105,12 +1233,18 @@ var zhCNMessages = {
|
|
|
1105
1233
|
"cli.config.fields.nudge_mode.label": "\u63D0\u793A\u6863\u4F4D",
|
|
1106
1234
|
"cli.config.fields.nudge_mode.description": "\u4EBA\u7C7B\u53EF\u89C1 nudge \u7684\u603B\u6863\u4F4D\uFF08silent \u9759\u9ED8 / minimal \u7CBE\u7B80 / normal \u6B63\u5E38 / verbose \u8BE6\u5C3D\uFF09\uFF1B\u4EC5\u63A7\u4EBA\u7C7B\u63D0\u793A\u901A\u9053\uFF0C\u4E0D\u5F71\u54CD\u6CE8\u5165\u7ED9 AI \u7684\u77E5\u8BC6\u3002",
|
|
1107
1235
|
"cli.config.fields.embed_enabled.label": "\u5411\u91CF\u8BED\u4E49\u68C0\u7D22",
|
|
1108
|
-
"cli.config.fields.embed_enabled.description": "\u662F\u5426\u542F\u7528\u5411\u91CF\u8BED\u4E49\u68C0\u7D22\uFF08true / false\uFF09\u3002\u6CE8\u610F\
|
|
1236
|
+
"cli.config.fields.embed_enabled.description": "\u662F\u5426\u542F\u7528\u5411\u91CF\u8BED\u4E49\u68C0\u7D22\uFF08true / false\uFF09\u3002\u6CE8\u610F\uFF1Atrue \u53EA\u662F\u610F\u56FE\u5F00\u5173\u2014\u2014\u771F\u6B63\u751F\u6548\u8FD8\u9700\u8FD0\u884C\u4E2D\u7684 server \u80FD\u89E3\u6790\u5230 fastembed \u5305\u3001\u4E14\u6A21\u578B\u5DF2\u4E0B\u8F7D\uFF08\u9996\u6B21\u53EC\u56DE\u65F6\u81EA\u52A8\u4E0B\u5230 ~/.fabric/cache/embed\uFF09\u3002\u7528 `fabric info recall` \u67E5\u5B9E\u9645\u72B6\u6001\u3002",
|
|
1237
|
+
"cli.config.fields.fusion.label": "\u53EC\u56DE\u878D\u5408\u7B56\u7565",
|
|
1238
|
+
"cli.config.fields.fusion.description": "\u591A\u4FE1\u53F7\u5408\u6210\u603B\u5206\u7684\u7B97\u6CD5\uFF1Aadditive \u52A0\u6743\u6C42\u548C\uFF08BM25 \u4E3B\u5BFC\uFF0C\u5411\u91CF\u6743\u91CD\u5C0F\uFF09/ rrf \u5012\u6570\u6392\u540D\u878D\u5408\uFF08BM25 \u4E0E\u5411\u91CF\u5E73\u8D77\u5E73\u5750\uFF0C\u8BED\u4E49\u624D\u771F\u6B63\u751F\u6548\uFF09/ auto \u81EA\u9002\u5E94\uFF08\u9ED8\u8BA4\uFF1A\u5411\u91CF\u5728\u51FA\u5206\u65F6\u7528 rrf\uFF0C\u5426\u5219\u56DE\u843D additive\u2014\u2014\u907F\u514D\u65E0\u5411\u91CF\u65F6 rrf \u9000\u5316\u53CD\u800C\u66F4\u5DEE\uFF09\u3002",
|
|
1109
1239
|
"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 fabric doctor \u53EA\u8BFB\u8BCA\u65AD\u62A5\u544A\n fabric doctor --fix \u4FEE\u590D\u6D3E\u751F\u72B6\u6001\uFF08meta + \u7D22\u5F15\uFF09\n fabric doctor --fix-knowledge \u5E94\u7528\u77E5\u8BC6\u5E93 lint \u53D8\u66F4\uFF08\u8BA1\u6570\u5668 / \u5F52\u6863 / \u7F13\u5B58\uFF09\n fabric doctor --json \u673A\u5668\u53EF\u8BFB\u8F93\u51FA",
|
|
1110
1240
|
"doctor.section.fixable": "\u53EF\u4FEE\u590D\u9519\u8BEF\uFF1A",
|
|
1111
1241
|
"doctor.section.manual": "\u9700\u624B\u52A8\u4FEE\u590D\uFF1A",
|
|
1112
1242
|
"doctor.section.warnings": "\u8B66\u544A\uFF1A",
|
|
1113
1243
|
"doctor.section.fix-knowledge-mutations": "Fix-knowledge \u53D8\u66F4\uFF1A",
|
|
1244
|
+
// flat-design-system Wave5 (TASK-005): 重排后的 doctor C-圆点分组标题
|
|
1245
|
+
// (`● 存储健康` / `● 检查项`),取代原硬编码 sectionBar 字面量。
|
|
1246
|
+
"doctor.group.store-health": "\u5B58\u50A8\u5065\u5EB7",
|
|
1247
|
+
"doctor.group.checks": "\u68C0\u67E5\u9879",
|
|
1114
1248
|
// v2.0.0-rc.29 REVIEW (codex LOW-2): F2 的 payload 阈值之前只出现在 JSON envelope,
|
|
1115
1249
|
// 人类输出看不到,导致改了 mcpPayloadLimits 之后没法用 `fabric doctor` 快速确认是否生效。
|
|
1116
1250
|
"doctor.section.payload-limits": "MCP payload \u9608\u503C\uFF1A",
|
|
@@ -1557,6 +1691,8 @@ var zhCNMessages = {
|
|
|
1557
1691
|
"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",
|
|
1558
1692
|
"cli.install.args.enable-embed.description": "\u542F\u7528\u5411\u91CF\u8BED\u4E49\u641C\u7D22 (\u8BBE embed_enabled + embed_model;\u6253\u5370 fastembed \u5B89\u88C5\u6B65\u9AA4)",
|
|
1559
1693
|
"cli.install.args.embed-model.description": "\u914D\u5408 --enable-embed:\u8986\u76D6\u56FA\u5B9A\u7684 embed \u6A21\u578B (\u9ED8\u8BA4 fast-bge-small-zh-v1.5)",
|
|
1694
|
+
// TASK-004: --verbose 展开重装折叠的逐 phase 明细 + 完整客户端能力表。
|
|
1695
|
+
"cli.install.args.verbose.description": "\u5C55\u5F00\u5B8C\u6574\u660E\u7EC6:\u91CD\u88C5\u5E42\u7B49\u65F6\u4E0D\u6298\u53E0\u4E3A\u4F53\u68C0\u5361\u7247,\u5E76\u6253\u5370\u9010\u5BA2\u6237\u7AEF\u80FD\u529B\u8868",
|
|
1560
1696
|
// rc.35 TASK-08 (P0-5/6): --force-skills-only。
|
|
1561
1697
|
"cli.install.args.force-skills-only.description": "\u8DF3\u8FC7 bootstrap / MCP / hooks / settings,\u53EA\u91CD\u65B0\u5237\u65B0 fabric Skill \u6A21\u677F (.claude/.codex/skills/*)\u3002",
|
|
1562
1698
|
"cli.install.force-skills-only.banner": "\u53EA\u5237\u65B0 fabric Skill \u6A21\u677F",
|
|
@@ -1585,7 +1721,26 @@ var zhCNMessages = {
|
|
|
1585
1721
|
"cli.install.steps.bootstrap-claude": "\u5DF2\u66F4\u65B0 CLAUDE.md \u7684 @-import \u5F15\u7528",
|
|
1586
1722
|
"cli.install.steps.bootstrap-codex": "\u5DF2\u66F4\u65B0 AGENTS.md \u7684 fabric:bootstrap managed block",
|
|
1587
1723
|
"cli.install.stages.mcp": "\u6B63\u5728\u914D\u7F6E MCP \u5BA2\u6237\u7AEF...",
|
|
1588
|
-
"cli.install.stages.hooks": "\u6B63\u5728\u5B89\u88C5
|
|
1724
|
+
"cli.install.stages.hooks": "\u6B63\u5728\u5B89\u88C5 hook \u4E0E skill...",
|
|
1725
|
+
"cli.install.preflight.error.no-home": "\u65E0\u6CD5\u786E\u5B9A global root \u7684 home \u76EE\u5F55",
|
|
1726
|
+
"cli.install.preflight.error.not-dir": "\u5168\u5C40 Fabric root \u4E0D\u662F\u76EE\u5F55: {path}",
|
|
1727
|
+
"cli.install.preflight.error.parent-not-dir": "\u5168\u5C40 Fabric root \u7684\u7236\u76EE\u5F55\u4E0D\u662F\u76EE\u5F55: {path}",
|
|
1728
|
+
"cli.install.preflight.error.not-writable": "{label} \u4E0D\u53EF\u5199: {path} ({reason})",
|
|
1729
|
+
"cli.install.preflight.error.git-required": "--url \u5B89\u88C5\u9700\u8981 git,\u4F46\u5F53\u524D\u4E0D\u53EF\u7528: {reason}",
|
|
1730
|
+
"cli.install.preflight.label.target": "\u76EE\u6807\u76EE\u5F55",
|
|
1731
|
+
"cli.install.preflight.label.global-root": "\u5168\u5C40 Fabric root",
|
|
1732
|
+
"cli.install.preflight.label.global-root-parent": "\u5168\u5C40 Fabric root \u7684\u7236\u76EE\u5F55",
|
|
1733
|
+
"cli.install.guidance.more": "\u66F4\u591A: docs/surfaces.md \u8BF4\u660E\u4F55\u65F6\u7528 CLI / Skill / MCP\u3002",
|
|
1734
|
+
"cli.install.validate.passed": "\u5B89\u88C5\u6821\u9A8C\u901A\u8FC7 \u2713(config / hooks \u8DEF\u5F84 / events \u5747\u5C31\u7EEA)",
|
|
1735
|
+
"cli.install.validate.failed": "\u5B89\u88C5\u6821\u9A8C\u5931\u8D25:{count} \u4E2A\u95EE\u9898",
|
|
1736
|
+
"cli.install.validate.failed-item": " - {error}",
|
|
1737
|
+
"cli.install.hooks.uptodate": "hook \u4E0E skill \u5DF2\u6700\u65B0,\u65E0\u9700\u6539\u52A8({count} \u9879)",
|
|
1738
|
+
"cli.install.hooks.installed": "\u5DF2\u88C5 skill\xD7{skills} + hook\xD7{hooks}",
|
|
1739
|
+
"cli.install.mcp.configured": "\u5DF2\u914D\u7F6E MCP:{clients}",
|
|
1740
|
+
"cli.install.mcp.none": "\u65E0\u9700\u914D\u7F6E MCP \u5BA2\u6237\u7AEF",
|
|
1741
|
+
"cli.install.scan.finding.framework": "\u68C0\u6D4B\u5230: {framework} \u9879\u76EE",
|
|
1742
|
+
"cli.install.scan.finding.scale": "\u89C4\u6A21: {files} \u6587\u4EF6 \xB7 {entries} \u4E2A\u5165\u53E3",
|
|
1743
|
+
"cli.install.rollback.feedback": "\u5DF2\u56DE\u6EDA {count} \u9879\u6539\u52A8,\u9879\u76EE\u4FDD\u6301\u539F\u72B6\u3002",
|
|
1589
1744
|
"cli.install.stages.skipped": "\u5DF2\u8DF3\u8FC7",
|
|
1590
1745
|
"cli.install.stages.completed": "\u5DF2\u5B8C\u6210",
|
|
1591
1746
|
"cli.install.stages.failed": "\u5931\u8D25",
|
|
@@ -1595,6 +1750,27 @@ var zhCNMessages = {
|
|
|
1595
1750
|
"cli.install.pipeline.title": "Fabric \u5B89\u88C5",
|
|
1596
1751
|
"cli.install.pipeline.complete": "Fabric \u5B89\u88C5\u5B8C\u6210",
|
|
1597
1752
|
"cli.install.pipeline.running": "\u5C06\u6309 {count} \u4E2A\u9636\u6BB5\u6267\u884C",
|
|
1753
|
+
// TASK-002 (G1):总结卡收尾 + 计数词。原先在 ConsoleOutputRenderer 中硬编码英文
|
|
1754
|
+
// (Done! / succeeded / skipped / failed / "All steps completed successfully"),
|
|
1755
|
+
// 全部收进 t() + 双语表,locale-parity.test.ts 守护 en + zh-CN 每个 key 齐备。
|
|
1756
|
+
"cli.summary.done": "\u5B8C\u6210!",
|
|
1757
|
+
"cli.summary.all-ok": "\u5168\u90E8\u6B65\u9AA4\u5DF2\u5B8C\u6210",
|
|
1758
|
+
"cli.summary.n-failed": "{count} \u4E2A\u6B65\u9AA4\u5931\u8D25",
|
|
1759
|
+
"cli.summary.n-of-total": "{done}/{total} \u6B65\u5DF2\u5B8C\u6210",
|
|
1760
|
+
"cli.summary.count.succeeded": "\u6210\u529F",
|
|
1761
|
+
"cli.summary.count.skipped": "\u8DF3\u8FC7",
|
|
1762
|
+
"cli.summary.count.failed": "\u5931\u8D25",
|
|
1763
|
+
// TASK-004: 首装走 onboarding 定调(欢迎语 + 一次性设置说明);重装保持简洁的
|
|
1764
|
+
// "将按 N 阶段执行"。{count} = 阶段总数。
|
|
1765
|
+
"cli.install.pipeline.intro.firstRun": "\u6B22\u8FCE\u4F7F\u7528 Fabric \u2014\u2014 \u8FD9\u662F\u9996\u6B21\u5B89\u88C5,\u6211\u4F1A\u5F15\u5BFC\u4F60\u5B8C\u6210\u4E00\u6B21\u6027\u8BBE\u7F6E(\u5171 {count} \u4E2A\u9636\u6BB5);\u4E4B\u540E\u518D\u8DD1\u4F1A\u81EA\u52A8\u8DF3\u8FC7\u5DF2\u5C31\u7EEA\u9879\u3002",
|
|
1766
|
+
// TASK-004: 重装且全程幂等(无任何 install)时折叠成的单张体检卡片标题。
|
|
1767
|
+
// {count} = 阶段总数。明细走 --verbose。
|
|
1768
|
+
"cli.install.healthcheck.title": "\u2713 Fabric \u5DF2\u662F\u6700\u65B0 \xB7 {count} \u9636\u6BB5\u5C31\u7EEA \xB7 \u65E0\u6539\u52A8",
|
|
1769
|
+
// TASK-003 (G2 root a):每阶段总结明细的状态词改按 r.changed 判定(不再用
|
|
1770
|
+
// installed.length)—— 无改动的重装走"已最新",不再误报"N 项已安装"。
|
|
1771
|
+
// installed-count 仅在该阶段确有改动时使用。
|
|
1772
|
+
"cli.install.stage.uptodate": "\u5DF2\u6700\u65B0",
|
|
1773
|
+
"cli.install.stage.installed-count": "{count} \u9879\u5DF2\u5B89\u88C5",
|
|
1598
1774
|
"cli.install.pipeline.label.preflight": "\u5168\u5C40\u4E0E\u9879\u76EE\u9884\u68C0",
|
|
1599
1775
|
"cli.install.pipeline.label.env": "\u9879\u76EE\u73AF\u5883\u521D\u59CB\u5316",
|
|
1600
1776
|
"cli.install.pipeline.label.store": "\u77E5\u8BC6\u5E93\u62D3\u6251",
|
|
@@ -1604,6 +1780,9 @@ var zhCNMessages = {
|
|
|
1604
1780
|
"cli.install.pipeline.label.guidance": "\u540E\u7EED\u6307\u5F15",
|
|
1605
1781
|
"cli.install.pipeline.desc.store": "\u7ED1\u5B9A\u5F53\u524D\u9879\u76EE\u7684 read/write store\uFF0C\u5237\u65B0 resolved-bindings snapshot\u3002",
|
|
1606
1782
|
"cli.install.next-step": "{label} {message}",
|
|
1783
|
+
// TASK-002 (G6): 收口总结卡的单一黄金动作锚点。能力明细表收进 --verbose,
|
|
1784
|
+
// 这一行才是诚实的「下一步做什么」。{action} = 具体下一条命令。
|
|
1785
|
+
"cli.install.next-step.anchor": "\u4E0B\u4E00\u6B65 \u2192 {action}",
|
|
1607
1786
|
"cli.install.reason-message": "{label} {message}",
|
|
1608
1787
|
"cli.install.language.prompt": "\u9009\u62E9 Fabric \u8BED\u8A00\uFF08\u754C\u9762\u4E0E\u77E5\u8BC6\u7EDF\u4E00\u4F7F\u7528\uFF0C\u4E4B\u540E\u53EF\u7528 fabric config \u4FEE\u6539\uFF09\uFF1A",
|
|
1609
1788
|
"cli.install.language.option.zh-CN": "\u7B80\u4F53\u4E2D\u6587 (zh-CN)",
|
|
@@ -1631,6 +1810,10 @@ var zhCNMessages = {
|
|
|
1631
1810
|
"cli.install.wizard.stage.bootstrap": "\u662F\u5426\u5B89\u88C5 bootstrap \u6A21\u677F\uFF1F[{defaultValue}]",
|
|
1632
1811
|
"cli.install.wizard.stage.mcp": "\u662F\u5426\u914D\u7F6E MCP \u5BA2\u6237\u7AEF\uFF1F[{defaultValue}]",
|
|
1633
1812
|
"cli.install.wizard.stage.hooks": "\u662F\u5426\u5B89\u88C5 git hooks\uFF1F[{defaultValue}]",
|
|
1813
|
+
// flat-design-system Wave4 (TASK-004): post-group ✓ 回执用的短阶段标签。
|
|
1814
|
+
"cli.install.wizard.stage.bootstrap.short": "bootstrap \u6A21\u677F",
|
|
1815
|
+
"cli.install.wizard.stage.mcp.short": "MCP \u5BA2\u6237\u7AEF",
|
|
1816
|
+
"cli.install.wizard.stage.hooks.short": "git hooks",
|
|
1634
1817
|
"cli.install.wizard.mcp-install": "MCP \u670D\u52A1\u7AEF\u5B89\u88C5\u8303\u56F4\uFF08global/local\uFF09[{defaultValue}]",
|
|
1635
1818
|
"cli.install.wizard.execute.confirm": "\u73B0\u5728\u6267\u884C\u8BE5\u5B89\u88C5\u8BA1\u5212\uFF1F[Y/n]",
|
|
1636
1819
|
"cli.install.wizard.outro": "\u5B89\u88C5\u8BA1\u5212\u5DF2\u786E\u8BA4\uFF0C\u5F00\u59CB\u6267\u884C Fabric install...",
|
|
@@ -1638,6 +1821,9 @@ var zhCNMessages = {
|
|
|
1638
1821
|
"cli.install.wizard.invalid-select": "\u65E0\u6548\u8F93\u5165\u3002\u53EF\u9009\u503C\uFF1A{options}\u3002",
|
|
1639
1822
|
"cli.install.wizard.cancelled": "Fabric \u5B89\u88C5\u5DF2\u5728\u6267\u884C\u524D\u53D6\u6D88\u3002",
|
|
1640
1823
|
"cli.install.capabilities.title": "\u5BA2\u6237\u7AEF\u80FD\u529B\u6458\u8981",
|
|
1824
|
+
// C-006 (TASK-004):默认只打一行能力摘要,让收尾的 summary card 主导收口印象;
|
|
1825
|
+
// 完整 4×6 能力表只在 --verbose 下展开。{count} = 检测到的客户端数。
|
|
1826
|
+
"cli.install.capabilities.summaryLine": "\u5DF2\u68C0\u6D4B\u5230 {count} \u4E2A\u5BA2\u6237\u7AEF\u5E76\u5B8C\u6210\u80FD\u529B\u914D\u7F6E(\u52A0 --verbose \u67E5\u770B\u9010\u5BA2\u6237\u7AEF\u660E\u7EC6\u8868)\u3002",
|
|
1641
1827
|
// v2.0.0-rc.37 NEW-22: post-install 重启提示。MCP server 在 client 启动
|
|
1642
1828
|
// 时 spawn, 已运行的 Claude Code / Codex session 不会自动加载
|
|
1643
1829
|
// 新 mcp config — 必须重启才能拿到 Fabric tools。
|
|
@@ -1659,6 +1845,24 @@ var zhCNMessages = {
|
|
|
1659
1845
|
"cli.install.store.setup.prompt": "\u4E3A\u672C\u9879\u76EE\u8BBE\u7F6E\u77E5\u8BC6 store\uFF1F",
|
|
1660
1846
|
"cli.install.store.setup.bind-label": "\u7ED1\u5B9A\u5DF2\u6302\u8F7D: {alias}",
|
|
1661
1847
|
"cli.install.store.setup.already-bound": "\u5DF2\u7ED1\u5B9A\u672C\u9879\u76EE: {aliases} \u2713",
|
|
1848
|
+
// W2 dual-slot (TASK-002): 个人库槽 + 团队库槽 的状态 / 提示文案。团队库槽按
|
|
1849
|
+
// 「类别」命名(team 类),候选项显示 store 的真实 alias —— 文案 MUST NOT 暗示
|
|
1850
|
+
// 该库必须叫 'team'(team 是类别非别名,守 KT-MOD-0001 命名撞轴)。
|
|
1851
|
+
"cli.install.store.slot.personal.status": "\u4E2A\u4EBA\u5E93(\u672C\u673A\u5168\u5C40): '{alias}' \u2713",
|
|
1852
|
+
"cli.install.store.slot.personal.absent": "\u4E2A\u4EBA\u5E93(\u672C\u673A\u5168\u5C40): \u5C1A\u672A\u5EFA\u7ACB",
|
|
1853
|
+
"cli.install.store.slot.personal.multi-none": "\u4E2A\u4EBA\u5E93(\u672C\u673A\u5168\u5C40): \u5DF2\u6302 {count} \u4E2A,\u5C1A\u672A\u9009\u5B9A active",
|
|
1854
|
+
"cli.install.store.slot.personal.multi-prompt": "\u9009\u62E9\u672C\u673A\u5F53\u524D\u8981\u7528\u7684 personal store(active):",
|
|
1855
|
+
"cli.install.store.slot.personal.multi-active-label": "'{alias}'(\u5F53\u524D active)",
|
|
1856
|
+
"cli.install.store.slot.personal.multi-switch-label": "\u5207\u5230 '{alias}'",
|
|
1857
|
+
"cli.install.store.slot.personal.multi-new-label": "\u65B0\u5EFA\u672C\u5730 personal store",
|
|
1858
|
+
"cli.install.store.slot.personal.multi-new-hint": "\u5168\u65B0\u7A7A personal store,\u5E76\u8BBE\u4E3A active",
|
|
1859
|
+
"cli.install.store.slot.personal.new-alias": "\u65B0 personal store \u7684\u522B\u540D:",
|
|
1860
|
+
"cli.install.store.slot.personal.switched": "\u5DF2\u5C06\u672C\u673A\u6D3B\u52A8 personal store \u5207\u5230 '{alias}'",
|
|
1861
|
+
"cli.install.store.slot.team.status": "\u56E2\u961F\u5E93(team \u7C7B): '{alias}' \u2713",
|
|
1862
|
+
"cli.install.store.slot.team.empty": "\u56E2\u961F\u5E93(team \u7C7B): \u5C1A\u672A\u7ED1\u5B9A",
|
|
1863
|
+
"cli.install.store.slot.team.prompt": "\u4E3A\u672C\u9879\u76EE\u6311\u9009\u56E2\u961F\u5E93(team \u7C7B) \u2014\u2014 \u9009\u4E00\u4E2A,\u6216\u52A0\u5165\u5DF2\u6709/\u65B0\u5EFA/\u8DF3\u8FC7:",
|
|
1864
|
+
"cli.install.store.slot.team.bound-label": "\u4FDD\u6301\u5F53\u524D: {alias}",
|
|
1865
|
+
"cli.install.store.slot.team.switch-label": "\u5207\u5230\u5DF2\u6302\u8F7D: {alias}",
|
|
1662
1866
|
"cli.install.store.skip-label": "\u8DF3\u8FC7",
|
|
1663
1867
|
"cli.install.store.bind-mounted.skip-hint": "\u6682\u4E0D\u7ED1\u5B9A\u5DF2\u6302\u8F7D\u7684 store",
|
|
1664
1868
|
"cli.install.store.project-coordinate": "\u5728 store '{store}' \u4E2D\u7684\u9879\u76EE\u5750\u6807 (project coordinate):",
|
|
@@ -1680,6 +1884,9 @@ var zhCNMessages = {
|
|
|
1680
1884
|
"cli.install.store.unbound-note": "\u6CE8\u610F: \u4EE5\u4E0B store \u5DF2\u6302\u8F7D\u4F46\u672A\u7ED1\u5B9A\u5230\u672C\u9879\u76EE: {aliases}\u3002",
|
|
1681
1885
|
"cli.install.store.unbound-hint": " \u8FD0\u884C 'fabric store bind {first}' \u7ED1\u5B9A\u5176\u4E00\u3002",
|
|
1682
1886
|
// C4: personal store clone-or-new。
|
|
1887
|
+
// TASK-004: 首装时为额外的一次性提问(语言 / 个人库 onboarding)加的语境前缀,
|
|
1888
|
+
// 让用户知道这些问题只在首次设置时出现。
|
|
1889
|
+
"cli.install.store.firstRunContext": "\u9996\u6B21\u8BBE\u7F6E\u4E2D \u2014\u2014 \u4EE5\u4E0B\u4E3A\u4EC5\u9996\u88C5\u51FA\u73B0\u7684\u4E00\u6B21\u6027\u9009\u62E9:",
|
|
1683
1890
|
"cli.install.store.personal.prompt": "\u672C\u673A\u8FD8\u6CA1\u6709 personal store (\u4E2A\u4EBA\u77E5\u8BC6\u5E93)\u3002\u65B0\u5EFA\u4E00\u4E2A\uFF0C\u8FD8\u662F\u4ECE remote \u514B\u9686\u4F60\u5DF2\u6709\u7684\uFF1F",
|
|
1684
1891
|
"cli.install.store.personal.new-label": "\u65B0\u5EFA\u672C\u5730 (\u9ED8\u8BA4)",
|
|
1685
1892
|
"cli.install.store.personal.new-hint": "\u5168\u65B0\u7A7A personal store",
|
|
@@ -1732,34 +1939,58 @@ var zhCNMessages = {
|
|
|
1732
1939
|
"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",
|
|
1733
1940
|
"cli.uninstall.args.debug.description": "\u5C06\u76EE\u6807\u89E3\u6790\u7EC6\u8282\u8F93\u51FA\u5230 stderr\u3002",
|
|
1734
1941
|
"cli.uninstall.args.yes.description": "\u63A5\u53D7\u5F53\u524D\u5378\u8F7D\u8BA1\u5212\u5E76\u8DF3\u8FC7 TTY \u5411\u5BFC\u76F4\u63A5\u6267\u884C\u3002",
|
|
1942
|
+
"cli.uninstall.args.verbose.description": "\u663E\u793A\u6BCF\u4E2A\u9636\u6BB5\u7684\u9010\u8DEF\u5F84\u660E\u7EC6\u8BA1\u6570\uFF0C\u800C\u975E\u7CBE\u7B80\u7ED3\u679C\u884C\u3002",
|
|
1943
|
+
"cli.uninstall.args.unbind-store.description": "\u540C\u65F6\u89E3\u7ED1\u672C\u9879\u76EE\u5BF9\u56E2\u961F store \u7684\u7ED1\u5B9A\uFF08\u6E05\u7A7A .fabric/fabric-config.json \u4E2D\u7684\u7ED1\u5B9A\uFF09\u3002~/.fabric/stores/ \u4E0B\u7684\u5168\u5C40 store \u6C38\u4E0D\u5220\u9664\u3002",
|
|
1735
1944
|
"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",
|
|
1736
1945
|
"cli.uninstall.plan.title": "Fabric \u5378\u8F7D\u8BA1\u5212",
|
|
1737
1946
|
// C3: 镜像 install 的阶段提示 (install 用 "Fabric install 将按 N 个阶段执行")。
|
|
1738
1947
|
"cli.uninstall.plan.phase-banner": "Fabric uninstall \u5C06\u6309 {total} \u4E2A\u9636\u6BB5\u6267\u884C",
|
|
1739
1948
|
"cli.uninstall.plan.target": "\u76EE\u6807\uFF1A{target}",
|
|
1740
|
-
|
|
1949
|
+
// flat-design-system Wave5 (TASK-004 G3): 计划预览用人话动作句,按启用的阶段逐条列,
|
|
1950
|
+
// 不再输出 `key=是/否` 黑话行。
|
|
1951
|
+
"cli.uninstall.plan.will-remove": "\u5C06\u79FB\u9664\uFF1A",
|
|
1952
|
+
"cli.uninstall.plan.will-keep": "\u5C06\u4FDD\u7559\uFF1A",
|
|
1953
|
+
"cli.uninstall.plan.action.bootstrap": "\u5BA2\u6237\u7AEF\u6280\u80FD\u4E0E hook \u811A\u672C",
|
|
1954
|
+
"cli.uninstall.plan.action.mcp": "MCP \u670D\u52A1\u6CE8\u518C",
|
|
1955
|
+
"cli.uninstall.plan.action.scaffold": "\u9879\u76EE\u811A\u624B\u67B6\u6587\u4EF6",
|
|
1956
|
+
"cli.uninstall.plan.action.store": "\u56E2\u961F store \u7ED1\u5B9A\uFF08\u672C\u9879\u76EE\uFF09",
|
|
1741
1957
|
"cli.uninstall.plan.detected": "\u68C0\u6D4B\u5230\u7684\u5BA2\u6237\u7AEF\uFF1A{clients}",
|
|
1742
1958
|
"cli.uninstall.plan.preserves": "\u4FDD\u7559\u9879\uFF1A",
|
|
1743
1959
|
"cli.uninstall.plan.preserves.stores": "\u5168\u5C40\u77E5\u8BC6 stores\uFF0C\u9879\u76EE\u5378\u8F7D\u6C38\u4E0D\u5220\u9664",
|
|
1744
1960
|
"cli.uninstall.plan.preview-title": "Fabric \u5378\u8F7D dry run",
|
|
1745
|
-
"cli.uninstall.plan.preview-result": "scaffold={scaffold} bootstrap={bootstrap} mcp={mcp}",
|
|
1746
1961
|
"cli.uninstall.plan.scaffold-entries.title": "Scaffold \u5F85\u6E05\u7406\u9879\uFF1A",
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
"cli.uninstall.
|
|
1962
|
+
// W4: 共享 OutputRenderer pipeline —— section bar 标题 + 各阶段标签,install
|
|
1963
|
+
// pipeline 的对称逆。
|
|
1964
|
+
"cli.uninstall.pipeline.title": "Fabric \u5378\u8F7D",
|
|
1965
|
+
"cli.uninstall.pipeline.label.bootstrap": "Skills \u4E0E hooks",
|
|
1966
|
+
"cli.uninstall.pipeline.label.mcp": "MCP server",
|
|
1967
|
+
"cli.uninstall.pipeline.label.store": "\u89E3\u7ED1 store",
|
|
1968
|
+
"cli.uninstall.pipeline.label.scaffold": "\u6E05\u7406\u811A\u624B\u67B6",
|
|
1969
|
+
"cli.uninstall.pipeline.label.validate": "\u6821\u9A8C\u5DF2\u6E05\u7406",
|
|
1750
1970
|
"cli.uninstall.stages.completed": "\u5DF2\u5B8C\u6210",
|
|
1751
1971
|
"cli.uninstall.stages.completed-with-errors": "\u5B8C\u6210\u4F46\u6709\u9519\u8BEF",
|
|
1752
1972
|
"cli.uninstall.stages.failed": "\u5931\u8D25",
|
|
1973
|
+
"cli.uninstall.stages.failed-hint": "\u67E5\u770B\u4E0A\u65B9\u9519\u8BEF\u8BE6\u60C5\u3002\u52A0 --debug \u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002",
|
|
1974
|
+
"cli.uninstall.stages.uptodate": "\u65E0\u53EF\u79FB\u9664\uFF08{count} \u9879\u5DF2\u4E0D\u5B58\u5728\uFF09",
|
|
1975
|
+
"cli.uninstall.stages.summary": "removed={removed} skipped={skipped} errors={errors}",
|
|
1976
|
+
"cli.uninstall.stages.removed-count": "\u5DF2\u79FB\u9664 {count} \u9879",
|
|
1977
|
+
// flat-design-system Wave5 (TASK-006 G3): 总结卡明细行的人话结果词,与 install 的
|
|
1978
|
+
// `已安装 {count} 项` / `已最新` 对称。
|
|
1979
|
+
"cli.uninstall.stage.cleaned-count": "\u5DF2\u6E05\u7406 {count} \u9879",
|
|
1980
|
+
"cli.uninstall.stage.already-clean": "\u5DF2\u662F\u5E72\u51C0",
|
|
1753
1981
|
"cli.uninstall.summary.title": "\u5378\u8F7D\u6458\u8981",
|
|
1754
1982
|
"cli.uninstall.summary.body": "removed={removed} skipped={skipped} errors={errors}",
|
|
1983
|
+
"cli.uninstall.healthcheck.title": "\u2713 Fabric \u5DF2\u4E0D\u5B58\u5728 \xB7 \u65E0\u53EF\u79FB\u9664",
|
|
1755
1984
|
"cli.uninstall.wizard.intro": "\u5378\u8F7D Fabric",
|
|
1756
1985
|
"cli.uninstall.wizard.select.prompt": "\u8981\u4ECE {target} \u5378\u8F7D\u54EA\u4E9B\u90E8\u5206\uFF1F(\u7A7A\u683C\u52FE\u9009 / \u56DE\u8F66\u786E\u8BA4\uFF1B~/.fabric/stores/ \u4E0B\u7684\u5168\u5C40\u77E5\u8BC6 store \u6C38\u4E0D\u5220\u9664)",
|
|
1757
1986
|
"cli.uninstall.wizard.select.scaffold.label": "scaffold \u4EA7\u7269",
|
|
1758
1987
|
"cli.uninstall.wizard.select.scaffold.hint": ".fabric/ \u4E0B\u7684\u811A\u624B\u67B6\u6587\u4EF6",
|
|
1759
|
-
"cli.uninstall.wizard.select.bootstrap.label": "
|
|
1760
|
-
"cli.uninstall.wizard.select.bootstrap.hint": "\u5404\u5BA2\u6237\u7AEF\u7684 skills \u4E0E
|
|
1988
|
+
"cli.uninstall.wizard.select.bootstrap.label": "Skills \u4E0E hooks",
|
|
1989
|
+
"cli.uninstall.wizard.select.bootstrap.hint": "\u5404\u5BA2\u6237\u7AEF\u7684 skills \u4E0E hook \u811A\u672C + \u914D\u7F6E",
|
|
1761
1990
|
"cli.uninstall.wizard.select.mcp.label": "MCP \u5BA2\u6237\u7AEF\u6CE8\u518C",
|
|
1762
1991
|
"cli.uninstall.wizard.select.mcp.hint": "\u4ECE\u5404\u5BA2\u6237\u7AEF\u53CD\u6CE8\u518C fabric MCP server",
|
|
1992
|
+
"cli.uninstall.wizard.select.store.label": "\u89E3\u7ED1\u56E2\u961F store\uFF08\u672C\u9879\u76EE\uFF09",
|
|
1993
|
+
"cli.uninstall.wizard.select.store.hint": "\u6E05\u7A7A\u672C\u9879\u76EE\u7684 store \u7ED1\u5B9A\uFF1B\u5168\u5C40 store \u6C38\u4E0D\u5220\u9664",
|
|
1763
1994
|
"cli.uninstall.wizard.execute.confirm": "\u73B0\u5728\u6267\u884C\u8BE5\u5378\u8F7D\u8BA1\u5212\uFF1F[Y/n]",
|
|
1764
1995
|
"cli.uninstall.wizard.outro": "\u5378\u8F7D\u8BA1\u5212\u5DF2\u786E\u8BA4\uFF0C\u5F00\u59CB\u6267\u884C Fabric uninstall...",
|
|
1765
1996
|
"cli.uninstall.wizard.cancelled": "Fabric \u5378\u8F7D\u5DF2\u5728\u6267\u884C\u524D\u53D6\u6D88\u3002",
|
|
@@ -1989,6 +2220,7 @@ var zhCNMessages = {
|
|
|
1989
2220
|
"cli.store.detached": "\u5DF2\u5206\u79BB '{alias}' \u2014\u2014 \u78C1\u76D8\u4E0A\u7684 store \u76EE\u5F55\u4FDD\u7559 (\u5206\u79BB \u2260 \u5220\u9664)",
|
|
1990
2221
|
"cli.store.bound": "\u5DF2\u7ED1\u5B9A\u5FC5\u9700 store '{id}' (\u5171 {count} \u4E2A\u5FC5\u9700)",
|
|
1991
2222
|
"cli.store.switch-write": "\u5DF2\u5C06\u672C\u9879\u76EE\u7684\u6D3B\u52A8\u5199\u5165 store \u8BBE\u4E3A '{alias}'",
|
|
2223
|
+
"cli.store.switch-personal": "\u5DF2\u5C06\u672C\u673A\u6D3B\u52A8 personal store \u8BBE\u4E3A '{alias}'",
|
|
1992
2224
|
"cli.store.routed": "\u5199\u5165\u8DEF\u7531:scope '{scope}' \u2192 store '{alias}'",
|
|
1993
2225
|
"cli.sync.deferred": "{count} \u4E2A store \u79BB\u7EBF \u2014\u2014 push \u5DF2\u5EF6\u540E; \u8054\u7F51\u540E\u91CD\u65B0\u8FD0\u884C `fabric sync`",
|
|
1994
2226
|
"cli.sync.paused": "sync \u56E0\u51B2\u7A81\u6682\u505C \u2014\u2014 \u89E3\u51B3\u540E\u8FD0\u884C `fabric sync --continue` (\u6216 `--abort`)",
|
package/dist/i18n/index.js
CHANGED
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
enMessages,
|
|
6
6
|
resolveFabricLocale,
|
|
7
7
|
zhCNMessages
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-UPYKUYHN.js";
|
|
9
9
|
import {
|
|
10
10
|
detectNodeLocale,
|
|
11
11
|
normalizeLocale,
|
|
12
12
|
resolveGlobalLocale
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-ASS2KBB7.js";
|
|
14
14
|
export {
|
|
15
15
|
PROTECTED_TOKENS,
|
|
16
16
|
createTranslator,
|