@fenglimg/fabric-shared 1.5.0 → 1.6.0

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.
@@ -51,6 +51,7 @@ var enMessages = {
51
51
  "cli.doctor.description": "Run Fabric doctor checks and optional compliance audit reporting.",
52
52
  "cli.doctor.args.target.description": "Target project path. Defaults to CLI arg, EXTERNAL_FIXTURE_PATH, fabric.config.json, then cwd.",
53
53
  "cli.doctor.args.audit.description": "Print fab_get_rules compliance violations for AI edit intents.",
54
+ "cli.doctor.args.fix.description": "Migrate the legacy root ledger into .fabric/.intent-ledger.jsonl when needed.",
54
55
  "cli.doctor.args.window-minutes.description": "Audit lookback window in minutes for matching fab_get_rules calls. Default 5.",
55
56
  "cli.doctor.errors.invalid-window": "Invalid audit window: {value}",
56
57
  "cli.doctor.audit.preview-only": "auditMode is off in fabric.config.json; running fab doctor --audit as a manual preview only.",
@@ -125,7 +126,7 @@ var enMessages = {
125
126
  "cli.init.mode.badge.plan": "PLAN",
126
127
  "cli.init.mode.badge.reapply": "REAPPLY",
127
128
  "cli.init.mode.badge.plan-reapply": "PLAN + REAPPLY",
128
- "cli.init.compat.plan": "Using canonical --plan mode: no files will be written.",
129
+ "cli.init.compat.plan": "Using standard --plan mode: no files will be written.",
129
130
  "cli.init.compat.interactive": "Compatibility: --interactive=false disables the TTY wizard.",
130
131
  "cli.init.compat.legacy-stage-flags": "Compatibility: legacy --no-* flags are being mapped into the init plan.",
131
132
  "cli.init.wizard.title": "Fabric init wizard",
@@ -230,32 +231,32 @@ var enMessages = {
230
231
  "cli.sync-meta.updated": "{label} {path}",
231
232
  "dashboard.app.nav.aria-label": "Dashboard views",
232
233
  "dashboard.app.nav.module-a.label": "Rule Topology",
233
- "dashboard.app.nav.module-a.label-bilingual": "\u6A21\u5757 A Rule Topology",
234
+ "dashboard.app.nav.module-a.label-bilingual": "\u89C4\u5219\u547D\u4E2D Rule Topology",
234
235
  "dashboard.app.nav.module-a.subtitle": "coverage + hit reasons",
235
236
  "dashboard.app.nav.module-b.label": "Cognitive Forensic",
236
- "dashboard.app.nav.module-b.label-bilingual": "\u6A21\u5757 B Cognitive Forensic",
237
+ "dashboard.app.nav.module-b.label-bilingual": "\u8BA4\u77E5\u626B\u63CF Cognitive Forensic",
237
238
  "dashboard.app.nav.module-b.subtitle": "placeholder",
238
239
  "dashboard.app.nav.module-c.label": "Semantic Timeline",
239
- "dashboard.app.nav.module-c.label-bilingual": "\u6A21\u5757 C Semantic Timeline",
240
+ "dashboard.app.nav.module-c.label-bilingual": "\u8BED\u4E49\u65F6\u95F4\u7EBF Semantic Timeline",
240
241
  "dashboard.app.nav.module-c.subtitle": "placeholder",
241
242
  "dashboard.app.nav.module-d.label": "Historical Ledger",
242
- "dashboard.app.nav.module-d.label-bilingual": "\u6A21\u5757 D Historical Ledger",
243
+ "dashboard.app.nav.module-d.label-bilingual": "\u5386\u53F2\u8BB0\u5F55 Historical Ledger",
243
244
  "dashboard.app.nav.module-d.subtitle": "placeholder",
244
245
  "dashboard.app.nav.rules.label": "Rules Tree",
245
246
  "dashboard.app.nav.rules.label-bilingual": "\u89C4\u5219\u6811 Rules Tree",
246
- "dashboard.app.nav.rules.subtitle": "meta graph",
247
+ "dashboard.app.nav.rules.subtitle": "rule structure",
247
248
  "dashboard.app.nav.locks.label": "Human Lock",
248
- "dashboard.app.nav.locks.label-bilingual": "\u4EBA\u5DE5\u9501 Human Lock",
249
+ "dashboard.app.nav.locks.label-bilingual": "\u4EBA\u5DE5\u4FDD\u62A4 Human Lock",
249
250
  "dashboard.app.nav.locks.subtitle": "protected regions",
250
251
  "dashboard.app.nav.timeline.label": "Intent Timeline",
251
252
  "dashboard.app.nav.timeline.label-bilingual": "\u610F\u56FE\u65F6\u95F4\u7EBF Intent Timeline",
252
- "dashboard.app.nav.timeline.subtitle": "ledger stream",
253
+ "dashboard.app.nav.timeline.subtitle": "change log",
253
254
  "dashboard.app.nav.history.label": "History Replay",
254
255
  "dashboard.app.nav.history.label-bilingual": "\u5386\u53F2\u56DE\u653E History Replay",
255
256
  "dashboard.app.nav.history.subtitle": "time travel",
256
257
  "dashboard.app.nav.doctor.label": "Doctor",
257
258
  "dashboard.app.nav.doctor.label-bilingual": "\u8BCA\u65AD\u53F0 Doctor",
258
- "dashboard.app.nav.doctor.subtitle": "fab diagnostics",
259
+ "dashboard.app.nav.doctor.subtitle": "health checks",
259
260
  "dashboard.app.nav.section.modules-status": "Module Status",
260
261
  "dashboard.app.nav.section.diagnostics": "Diagnostics",
261
262
  "dashboard.app.nav.drift-check": "Drift Check",
@@ -273,12 +274,12 @@ var enMessages = {
273
274
  "dashboard.app.breadcrumb.history": "history-replay",
274
275
  "dashboard.app.breadcrumb.doctor": "doctor",
275
276
  "dashboard.rule-topology.title": "Rule Topology",
276
- "dashboard.rule-topology.subtitle": "Module A \xB7 scope heatmap + activation evidence \xB7 read-only",
277
+ "dashboard.rule-topology.subtitle": "See which rules match the current path and why",
277
278
  "dashboard.rule-topology.path.placeholder": "Sample path for rules context",
278
279
  "dashboard.rule-topology.path.aria-label": "Rules context sample path",
279
- "dashboard.rule-topology.status.sample": "sample {path}",
280
+ "dashboard.rule-topology.status.sample": "current path {path}",
280
281
  "dashboard.rule-topology.status.hits": "{count} hits",
281
- "dashboard.rule-topology.status.revision": "rev {revision}",
282
+ "dashboard.rule-topology.status.revision": "version {revision}",
282
283
  "dashboard.rule-topology.heatmap.title": "Coverage Heatmap",
283
284
  "dashboard.rule-topology.heatmap.subtitle": "Heuristic directory coverage derived from scope_glob patterns",
284
285
  "dashboard.rule-topology.heatmap.aria-label": "Directory coverage heatmap",
@@ -289,7 +290,7 @@ var enMessages = {
289
290
  "dashboard.rule-topology.heatmap.density.full": "covered",
290
291
  "dashboard.rule-topology.heatmap.density.partial": "partial",
291
292
  "dashboard.rule-topology.heatmap.density.none": "uncovered",
292
- "dashboard.rule-topology.hit-reason.title": "Hit Reason Panel",
293
+ "dashboard.rule-topology.hit-reason.title": "Hit Reasons",
293
294
  "dashboard.rule-topology.hit-reason.subtitle": "Why each rule was loaded for the current sample path",
294
295
  "dashboard.rule-topology.hit-reason.aria-label": "Rule hit reasons",
295
296
  "dashboard.rule-topology.hit-reason.count": "{count} reasons",
@@ -298,21 +299,21 @@ var enMessages = {
298
299
  "dashboard.rule-topology.hit-reason.tier.always": "Always-on",
299
300
  "dashboard.rule-topology.hit-reason.tier.path": "Glob",
300
301
  "dashboard.rule-topology.hit-reason.tier.description": "Description",
301
- "dashboard.module-placeholder.coming-soon": "Module placeholder",
302
- "dashboard.module-placeholder.read-only": "Reserved for future read-only dashboard batches.",
302
+ "dashboard.module-placeholder.coming-soon": "Reserved",
303
+ "dashboard.module-placeholder.read-only": "Reserved for future read-only dashboard capabilities.",
303
304
  "dashboard.module-placeholder.forensic.title": "Cognitive Forensic",
304
- "dashboard.module-placeholder.forensic.subtitle": "Module B placeholder",
305
+ "dashboard.module-placeholder.forensic.subtitle": "Coming later",
305
306
  "dashboard.module-placeholder.semantic.title": "Semantic Timeline",
306
- "dashboard.module-placeholder.semantic.subtitle": "Module C placeholder",
307
+ "dashboard.module-placeholder.semantic.subtitle": "Coming later",
307
308
  "dashboard.module-placeholder.ledger.title": "Historical Ledger",
308
- "dashboard.module-placeholder.ledger.subtitle": "Module D placeholder",
309
- "dashboard.rules-tree.title": "Rules Tree Browser",
310
- "dashboard.rules-tree.subtitle": ".fabric/agents.meta.json \xB7 L0/L1/L2 hierarchy \xB7 hash drift aware",
309
+ "dashboard.module-placeholder.ledger.subtitle": "Coming later",
310
+ "dashboard.rules-tree.title": "Rules Tree",
311
+ "dashboard.rules-tree.subtitle": "Browse the rule structure, hierarchy, and sync state from .fabric/agents.meta.json",
311
312
  "dashboard.rules-tree.filter.placeholder": "Filter by file, glob, priority, hash...",
312
313
  "dashboard.rules-tree.filter.aria-label": "Filter rules tree",
313
314
  "dashboard.rules-tree.status.loading": "loading rules",
314
- "dashboard.rules-tree.status.nodes": "{count} nodes \xB7 rev {revision}",
315
- "dashboard.rules-tree.status.locks": "{count} human locks",
315
+ "dashboard.rules-tree.status.nodes": "{count} nodes \xB7 version {revision}",
316
+ "dashboard.rules-tree.status.locks": "{count} protected regions",
316
317
  "dashboard.rules-tree.empty": "No matching rules found.",
317
318
  "dashboard.rules-tree.tree.aria-label": "Fabric rules tree",
318
319
  "dashboard.rules-tree.detail.title": "Node Detail",
@@ -322,8 +323,8 @@ var enMessages = {
322
323
  "dashboard.rules-tree.detail.priority": "priority",
323
324
  "dashboard.rules-tree.detail.hash": "hash",
324
325
  "dashboard.rules-tree.detail.no-deps": "no deps",
325
- "dashboard.human-lock.title": "Human Lock Vault",
326
- "dashboard.human-lock.subtitle": "Protected regions awaiting approval \xB7 ritual writes only",
326
+ "dashboard.human-lock.title": "Human Protection",
327
+ "dashboard.human-lock.subtitle": "Review protected regions that require human confirmation",
327
328
  "dashboard.human-lock.filters.aria-label": "Human lock filters",
328
329
  "dashboard.human-lock.filters.all": "all",
329
330
  "dashboard.human-lock.filters.drift": "drift",
@@ -331,7 +332,7 @@ var enMessages = {
331
332
  "dashboard.human-lock.summary": "{drift} drift \xB7 {approved} confirmed",
332
333
  "dashboard.human-lock.empty": "No human lock entries for this filter.",
333
334
  "dashboard.intent-timeline.title": "Intent Timeline",
334
- "dashboard.intent-timeline.subtitle": ".intent-ledger.jsonl \xB7 dual-column AI | Human \xB7 sorted by timestamp desc",
335
+ "dashboard.intent-timeline.subtitle": "Review AI and human change records in reverse chronological order",
335
336
  "dashboard.intent-timeline.filter.label": "Source",
336
337
  "dashboard.intent-timeline.filter.all": "All",
337
338
  "dashboard.intent-timeline.summary": "AI {aiCount} \xB7 Human {humanCount}",
@@ -342,7 +343,7 @@ var enMessages = {
342
343
  "dashboard.intent-timeline.empty": "No ledger entries found.",
343
344
  "dashboard.intent-timeline.annotate.missing-id": "Cannot annotate a ledger entry without an id.",
344
345
  "dashboard.history-replay.title": "History Replay",
345
- "dashboard.history-replay.subtitle": "Time-travel through ledger commits and rehydrate the rules tree at any recorded point",
346
+ "dashboard.history-replay.subtitle": "Review the rules tree state at any recorded point in history",
346
347
  "dashboard.history-replay.toolbar.scrub": "Scrub",
347
348
  "dashboard.history-replay.toolbar.latest": "Latest",
348
349
  "dashboard.history-replay.selected.none": "No historical entry selected",
@@ -350,10 +351,10 @@ var enMessages = {
350
351
  "dashboard.history-replay.status.entries-applied": "{count} entries applied",
351
352
  "dashboard.history-replay.empty.entries": "No ledger entries found for replay.",
352
353
  "dashboard.history-replay.state.title": "Viewing state as of {label}",
353
- "dashboard.history-replay.state.meta": "ledger {ledgerId} \xB7 commit {commit} \xB7 {mode}",
354
+ "dashboard.history-replay.state.meta": "record {ledgerId} \xB7 commit {commit} \xB7 {mode}",
354
355
  "dashboard.history-replay.status.loading": "loading snapshot",
355
356
  "dashboard.history-replay.status.nodes": "{count} nodes",
356
- "dashboard.history-replay.status.unknown-revision": "unknown revision",
357
+ "dashboard.history-replay.status.unknown-revision": "unknown version",
357
358
  "dashboard.history-replay.tree.aria-label": "Historical Fabric rules tree",
358
359
  "dashboard.history-replay.empty.loading": "Loading historical snapshot...",
359
360
  "dashboard.history-replay.empty.select": "Select a timeline entry to replay its state.",
@@ -361,7 +362,7 @@ var enMessages = {
361
362
  "dashboard.history-replay.meta.pending": "pending",
362
363
  "dashboard.history-replay.meta.na": "n/a",
363
364
  "dashboard.doctor.title": "Doctor Console",
364
- "dashboard.doctor.subtitle": "fab doctor surface \xB7 framework, entry points, revision drift, protected paths",
365
+ "dashboard.doctor.subtitle": "Check framework, entry points, version drift, and protected paths",
365
366
  "dashboard.doctor.toolbar.overall": "Overall",
366
367
  "dashboard.doctor.toolbar.no-summary": "No summary yet",
367
368
  "dashboard.doctor.toolbar.entry-points-summary": "{framework} \xB7 {count} entry points",
@@ -370,7 +371,7 @@ var enMessages = {
370
371
  "dashboard.doctor.summary.framework": "Framework",
371
372
  "dashboard.doctor.summary.protected-paths": "Protected paths",
372
373
  "dashboard.doctor.summary.intent-ledger": "Intent ledger",
373
- "dashboard.doctor.summary.no-meta-revision": "No meta revision yet",
374
+ "dashboard.doctor.summary.no-meta-revision": "No metadata version yet",
374
375
  "dashboard.doctor.summary.tracked-paths.none": "No tracked paths",
375
376
  "dashboard.doctor.summary.tracked-paths.some": "{count} tracked",
376
377
  "dashboard.doctor.summary.hashes-intact": "All approved hashes intact",
@@ -482,6 +483,7 @@ var zhCNMessages = {
482
483
  "cli.doctor.description": "\u8FD0\u884C Fabric doctor \u68C0\u67E5\uFF0C\u5E76\u53EF\u9009\u8F93\u51FA\u5408\u89C4\u5BA1\u8BA1\u62A5\u544A\u3002",
483
484
  "cli.doctor.args.target.description": "\u76EE\u6807\u9879\u76EE\u8DEF\u5F84\u3002\u9ED8\u8BA4\u4F9D\u6B21\u4F7F\u7528 CLI \u53C2\u6570\u3001EXTERNAL_FIXTURE_PATH\u3001fabric.config.json\u3001\u5F53\u524D\u76EE\u5F55\u3002",
484
485
  "cli.doctor.args.audit.description": "\u8F93\u51FA AI \u7F16\u8F91\u610F\u56FE\u7F3A\u5C11 fab_get_rules \u524D\u7F6E\u8C03\u7528\u7684\u8FDD\u89C4\u9879\u3002",
486
+ "cli.doctor.args.fix.description": "\u9700\u8981\u65F6\u5C06\u65E7\u7684\u6839\u76EE\u5F55 ledger \u8FC1\u79FB\u5230 .fabric/.intent-ledger.jsonl\u3002",
485
487
  "cli.doctor.args.window-minutes.description": "\u5339\u914D fab_get_rules \u8C03\u7528\u7684\u56DE\u770B\u65F6\u95F4\u7A97\u53E3\uFF0C\u5355\u4F4D\u4E3A\u5206\u949F\u3002\u9ED8\u8BA4 5 \u5206\u949F\u3002",
486
488
  "cli.doctor.errors.invalid-window": "\u65E0\u6548\u7684\u5BA1\u8BA1\u65F6\u95F4\u7A97\u53E3\uFF1A{value}",
487
489
  "cli.doctor.audit.preview-only": "fabric.config.json \u4E2D auditMode \u4E3A off\uFF1B\u5F53\u524D fab doctor --audit \u4EC5\u6267\u884C\u624B\u52A8\u9884\u89C8\uFF0C\u4E0D\u4F1A\u6539\u53D8\u9000\u51FA\u7801\u3002",
@@ -556,13 +558,13 @@ var zhCNMessages = {
556
558
  "cli.init.mode.badge.plan": "PLAN",
557
559
  "cli.init.mode.badge.reapply": "REAPPLY",
558
560
  "cli.init.mode.badge.plan-reapply": "PLAN + REAPPLY",
559
- "cli.init.compat.plan": "\u5DF2\u542F\u7528 canonical --plan \u6A21\u5F0F\uFF1A\u4E0D\u4F1A\u5199\u5165\u4EFB\u4F55\u6587\u4EF6\u3002",
561
+ "cli.init.compat.plan": "\u5DF2\u542F\u7528\u6807\u51C6 --plan \u6A21\u5F0F\uFF1A\u4E0D\u4F1A\u5199\u5165\u4EFB\u4F55\u6587\u4EF6\u3002",
560
562
  "cli.init.compat.interactive": "\u517C\u5BB9\u63D0\u793A\uFF1A--interactive=false \u4F1A\u7981\u7528 TTY \u5411\u5BFC\u3002",
561
563
  "cli.init.compat.legacy-stage-flags": "\u517C\u5BB9\u63D0\u793A\uFF1A\u65E7\u7684 --no-* \u6807\u5FD7\u6B63\u5728\u6620\u5C04\u5230\u521D\u59CB\u5316\u8BA1\u5212\u4E2D\u3002",
562
564
  "cli.init.wizard.title": "Fabric \u521D\u59CB\u5316\u5411\u5BFC",
563
565
  "cli.init.wizard.intro": "Fabric init",
564
566
  "cli.init.wizard.overview.title": "\u5B89\u88C5\u6982\u89C8",
565
- "cli.init.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u6A21\u5F0F\uFF1A{mode}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u91CD\u5851\u521D\u59CB\u5316\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric init \u9636\u6BB5\u3002",
567
+ "cli.init.wizard.overview.body": "\u76EE\u6807\uFF1A{target}\n\u6A21\u5F0F\uFF1A{mode}\n\u8FD9\u4E2A\u5411\u5BFC\u53EA\u8D1F\u8D23\u8C03\u6574\u521D\u59CB\u5316\u8BA1\u5212\uFF1B\u771F\u6B63\u6267\u884C\u4ECD\u7136\u8D70\u73B0\u6709\u7684 Fabric init \u9636\u6BB5\u3002",
566
568
  "cli.init.wizard.step.target": "\u786E\u8BA4\u76EE\u6807",
567
569
  "cli.init.wizard.step.plan": "\u914D\u7F6E\u521D\u59CB\u5316\u8BA1\u5212",
568
570
  "cli.init.wizard.step.review": "\u590D\u6838\u6700\u7EC8\u8BA1\u5212",
@@ -637,11 +639,11 @@ var zhCNMessages = {
637
639
  "cli.scan.report.recommendations": "\u5EFA\u8BAE\uFF1A",
638
640
  "cli.scan.readme-quality.ok": "\u826F\u597D",
639
641
  "cli.scan.readme-quality.stub": "\u8349\u7A3F",
640
- "cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab init\uFF0C\u5728 .fabric/bootstrap/README.md \u751F\u6210\u5E26 TODO \u6807\u8BB0\u7684\u521D\u59CB\u9AA8\u67B6\u3002",
641
- "cli.scan.recommendation.readme": "L0\uFF1A\u5148\u8865\u5145 README.md\uFF0C\u518D\u628A\u9879\u76EE\u4E8B\u5B9E\u6C89\u6DC0\u5230 Fabric \u5F15\u7528\u4E2D\u3002",
642
- "cli.scan.recommendation.contributing": "L0\uFF1A\u6DFB\u52A0 CONTRIBUTING.md\uFF0C\u6216\u5728 bootstrap \u4E2D\u7559\u4E0B\u8D21\u732E\u6D41\u7A0B\u7684 TODO \u5F15\u7528\u3002",
643
- "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 TODO\u3002",
644
- "cli.scan.recommendation.framework-dirs": "L1\uFF1A\u68C0\u67E5 {framework} \u76EE\u5F55\uFF0C\u540E\u7EED\u4E3A\u5176\u8865\u5145\u4F5C\u7528\u57DF\u5316 Fabric \u89C4\u5219\u6587\u4EF6\u3002",
642
+ "cli.scan.recommendation.init": "L0\uFF1A\u8FD0\u884C fab init\uFF0C\u5728 .fabric/bootstrap/README.md \u751F\u6210\u5E26 TODO \u6807\u8BB0\u7684\u521D\u59CB\u8BF4\u660E\u3002",
643
+ "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",
644
+ "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",
645
+ "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",
646
+ "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",
645
647
  "cli.serve.description": "\u542F\u52A8\u672C\u5730 Fabric MCP HTTP \u670D\u52A1\u3002\u82E5\u9700\u7ED1\u5B9A\u5230\u975E localhost\uFF0C\u8BF7\u8BBE\u7F6E FABRIC_AUTH_TOKEN \u4EE5\u542F\u7528 Bearer \u9274\u6743\u3002",
646
648
  "cli.serve.args.port.description": "\u76D1\u542C\u7AEF\u53E3\uFF0C\u9ED8\u8BA4 7373\u3002",
647
649
  "cli.serve.args.host.description": "\u76D1\u542C\u4E3B\u673A\uFF0C\u9ED8\u8BA4 127.0.0.1\u3002\u82E5\u9700\u7ED1\u5B9A\u5230\u975E localhost\uFF0C\u8BF7\u8BBE\u7F6E FABRIC_AUTH_TOKEN \u4EE5\u542F\u7528 Bearer \u9274\u6743\u3002",
@@ -661,32 +663,32 @@ var zhCNMessages = {
661
663
  "cli.sync-meta.updated": "{label} {path}",
662
664
  "dashboard.app.nav.aria-label": "\u4EEA\u8868\u76D8\u89C6\u56FE\u5BFC\u822A",
663
665
  "dashboard.app.nav.module-a.label": "\u89C4\u5219\u62D3\u6251",
664
- "dashboard.app.nav.module-a.label-bilingual": "\u6A21\u5757 A Rule Topology",
666
+ "dashboard.app.nav.module-a.label-bilingual": "\u89C4\u5219\u547D\u4E2D Rule Topology",
665
667
  "dashboard.app.nav.module-a.subtitle": "\u8986\u76D6\u70ED\u529B\u56FE + \u547D\u4E2D\u539F\u56E0",
666
- "dashboard.app.nav.module-b.label": "\u8BA4\u77E5\u53D6\u8BC1",
667
- "dashboard.app.nav.module-b.label-bilingual": "\u6A21\u5757 B Cognitive Forensic",
668
+ "dashboard.app.nav.module-b.label": "\u8BA4\u77E5\u626B\u63CF",
669
+ "dashboard.app.nav.module-b.label-bilingual": "\u8BA4\u77E5\u626B\u63CF Cognitive Forensic",
668
670
  "dashboard.app.nav.module-b.subtitle": "\u5360\u4F4D",
669
671
  "dashboard.app.nav.module-c.label": "\u8BED\u4E49\u65F6\u95F4\u7EBF",
670
- "dashboard.app.nav.module-c.label-bilingual": "\u6A21\u5757 C Semantic Timeline",
672
+ "dashboard.app.nav.module-c.label-bilingual": "\u8BED\u4E49\u65F6\u95F4\u7EBF Semantic Timeline",
671
673
  "dashboard.app.nav.module-c.subtitle": "\u5360\u4F4D",
672
- "dashboard.app.nav.module-d.label": "\u5386\u53F2\u8D26\u672C",
673
- "dashboard.app.nav.module-d.label-bilingual": "\u6A21\u5757 D Historical Ledger",
674
+ "dashboard.app.nav.module-d.label": "\u5386\u53F2\u8BB0\u5F55",
675
+ "dashboard.app.nav.module-d.label-bilingual": "\u5386\u53F2\u8BB0\u5F55 Historical Ledger",
674
676
  "dashboard.app.nav.module-d.subtitle": "\u5360\u4F4D",
675
677
  "dashboard.app.nav.rules.label": "\u89C4\u5219\u6811",
676
678
  "dashboard.app.nav.rules.label-bilingual": "\u89C4\u5219\u6811 Rules Tree",
677
- "dashboard.app.nav.rules.subtitle": "\u5143\u56FE",
678
- "dashboard.app.nav.locks.label": "\u4EBA\u5DE5\u9501",
679
- "dashboard.app.nav.locks.label-bilingual": "\u4EBA\u5DE5\u9501 Human Lock",
679
+ "dashboard.app.nav.rules.subtitle": "\u89C4\u5219\u7ED3\u6784",
680
+ "dashboard.app.nav.locks.label": "\u4EBA\u5DE5\u4FDD\u62A4",
681
+ "dashboard.app.nav.locks.label-bilingual": "\u4EBA\u5DE5\u4FDD\u62A4 Human Lock",
680
682
  "dashboard.app.nav.locks.subtitle": "\u53D7\u4FDD\u62A4\u533A\u57DF",
681
683
  "dashboard.app.nav.timeline.label": "\u610F\u56FE\u65F6\u95F4\u7EBF",
682
684
  "dashboard.app.nav.timeline.label-bilingual": "\u610F\u56FE\u65F6\u95F4\u7EBF Intent Timeline",
683
- "dashboard.app.nav.timeline.subtitle": "\u65E5\u5FD7\u6D41",
685
+ "dashboard.app.nav.timeline.subtitle": "\u53D8\u66F4\u8BB0\u5F55",
684
686
  "dashboard.app.nav.history.label": "\u5386\u53F2\u56DE\u653E",
685
687
  "dashboard.app.nav.history.label-bilingual": "\u5386\u53F2\u56DE\u653E History Replay",
686
688
  "dashboard.app.nav.history.subtitle": "\u65F6\u95F4\u56DE\u6EAF",
687
689
  "dashboard.app.nav.doctor.label": "\u8BCA\u65AD\u53F0",
688
690
  "dashboard.app.nav.doctor.label-bilingual": "\u8BCA\u65AD\u53F0 Doctor",
689
- "dashboard.app.nav.doctor.subtitle": "fab \u8BCA\u65AD",
691
+ "dashboard.app.nav.doctor.subtitle": "\u72B6\u6001\u68C0\u67E5",
690
692
  "dashboard.app.nav.section.modules-status": "\u6A21\u5757\u72B6\u6001",
691
693
  "dashboard.app.nav.section.diagnostics": "\u8BCA\u65AD",
692
694
  "dashboard.app.nav.drift-check": "\u6F02\u79FB\u68C0\u67E5",
@@ -703,13 +705,13 @@ var zhCNMessages = {
703
705
  "dashboard.app.breadcrumb.timeline": "intent-timeline",
704
706
  "dashboard.app.breadcrumb.history": "history-replay",
705
707
  "dashboard.app.breadcrumb.doctor": "doctor",
706
- "dashboard.rule-topology.title": "\u89C4\u5219\u62D3\u6251",
707
- "dashboard.rule-topology.subtitle": "\u6A21\u5757 A \xB7 \u4F5C\u7528\u57DF\u70ED\u529B\u56FE + \u6FC0\u6D3B\u8BC1\u636E \xB7 \u53EA\u8BFB",
708
+ "dashboard.rule-topology.title": "\u89C4\u5219\u547D\u4E2D",
709
+ "dashboard.rule-topology.subtitle": "\u67E5\u770B\u5F53\u524D\u8DEF\u5F84\u4F1A\u547D\u4E2D\u54EA\u4E9B\u89C4\u5219\uFF0C\u4EE5\u53CA\u4E3A\u4EC0\u4E48\u4F1A\u547D\u4E2D",
708
710
  "dashboard.rule-topology.path.placeholder": "\u7528\u4E8E\u89C4\u5219\u4E0A\u4E0B\u6587\u7684\u6837\u672C\u8DEF\u5F84",
709
711
  "dashboard.rule-topology.path.aria-label": "\u89C4\u5219\u4E0A\u4E0B\u6587\u6837\u672C\u8DEF\u5F84",
710
- "dashboard.rule-topology.status.sample": "\u6837\u672C {path}",
712
+ "dashboard.rule-topology.status.sample": "\u5F53\u524D\u8DEF\u5F84 {path}",
711
713
  "dashboard.rule-topology.status.hits": "{count} \u6761\u547D\u4E2D",
712
- "dashboard.rule-topology.status.revision": "rev {revision}",
714
+ "dashboard.rule-topology.status.revision": "\u7248\u672C {revision}",
713
715
  "dashboard.rule-topology.heatmap.title": "\u8986\u76D6\u70ED\u529B\u56FE",
714
716
  "dashboard.rule-topology.heatmap.subtitle": "\u57FA\u4E8E scope_glob \u6A21\u5F0F\u63A8\u5BFC\u7684\u76EE\u5F55\u8986\u76D6\u60C5\u51B5",
715
717
  "dashboard.rule-topology.heatmap.aria-label": "\u76EE\u5F55\u8986\u76D6\u70ED\u529B\u56FE",
@@ -720,7 +722,7 @@ var zhCNMessages = {
720
722
  "dashboard.rule-topology.heatmap.density.full": "\u5DF2\u8986\u76D6",
721
723
  "dashboard.rule-topology.heatmap.density.partial": "\u90E8\u5206\u8986\u76D6",
722
724
  "dashboard.rule-topology.heatmap.density.none": "\u672A\u8986\u76D6",
723
- "dashboard.rule-topology.hit-reason.title": "\u547D\u4E2D\u539F\u56E0\u9762\u677F",
725
+ "dashboard.rule-topology.hit-reason.title": "\u547D\u4E2D\u539F\u56E0",
724
726
  "dashboard.rule-topology.hit-reason.subtitle": "\u663E\u793A\u5F53\u524D\u6837\u672C\u8DEF\u5F84\u4E3A\u4F55\u547D\u4E2D\u8FD9\u4E9B\u89C4\u5219",
725
727
  "dashboard.rule-topology.hit-reason.aria-label": "\u89C4\u5219\u547D\u4E2D\u539F\u56E0",
726
728
  "dashboard.rule-topology.hit-reason.count": "{count} \u6761\u539F\u56E0",
@@ -729,21 +731,21 @@ var zhCNMessages = {
729
731
  "dashboard.rule-topology.hit-reason.tier.always": "\u5E38\u9A7B",
730
732
  "dashboard.rule-topology.hit-reason.tier.path": "Glob",
731
733
  "dashboard.rule-topology.hit-reason.tier.description": "\u63CF\u8FF0",
732
- "dashboard.module-placeholder.coming-soon": "\u6A21\u5757\u5360\u4F4D",
733
- "dashboard.module-placeholder.read-only": "\u4E3A\u540E\u7EED\u53EA\u8BFB\u4EEA\u8868\u76D8\u6279\u6B21\u9884\u7559\u3002",
734
- "dashboard.module-placeholder.forensic.title": "\u8BA4\u77E5\u53D6\u8BC1",
735
- "dashboard.module-placeholder.forensic.subtitle": "\u6A21\u5757 B \u5360\u4F4D",
734
+ "dashboard.module-placeholder.coming-soon": "\u529F\u80FD\u9884\u7559",
735
+ "dashboard.module-placeholder.read-only": "\u4E3A\u540E\u7EED\u53EA\u8BFB\u4EEA\u8868\u76D8\u80FD\u529B\u9884\u7559\u3002",
736
+ "dashboard.module-placeholder.forensic.title": "\u8BA4\u77E5\u626B\u63CF",
737
+ "dashboard.module-placeholder.forensic.subtitle": "\u540E\u7EED\u8865\u5145",
736
738
  "dashboard.module-placeholder.semantic.title": "\u8BED\u4E49\u65F6\u95F4\u7EBF",
737
- "dashboard.module-placeholder.semantic.subtitle": "\u6A21\u5757 C \u5360\u4F4D",
738
- "dashboard.module-placeholder.ledger.title": "\u5386\u53F2\u8D26\u672C",
739
- "dashboard.module-placeholder.ledger.subtitle": "\u6A21\u5757 D \u5360\u4F4D",
740
- "dashboard.rules-tree.title": "\u89C4\u5219\u6811\u6D4F\u89C8\u5668",
741
- "dashboard.rules-tree.subtitle": ".fabric/agents.meta.json \xB7 L0/L1/L2 \u5C42\u7EA7 \xB7 \u611F\u77E5\u54C8\u5E0C\u6F02\u79FB",
742
- "dashboard.rules-tree.filter.placeholder": "\u6309\u6587\u4EF6\u3001glob\u3001\u4F18\u5148\u7EA7\u3001\u54C8\u5E0C\u8FC7\u6EE4...",
739
+ "dashboard.module-placeholder.semantic.subtitle": "\u540E\u7EED\u8865\u5145",
740
+ "dashboard.module-placeholder.ledger.title": "\u5386\u53F2\u8BB0\u5F55",
741
+ "dashboard.module-placeholder.ledger.subtitle": "\u540E\u7EED\u8865\u5145",
742
+ "dashboard.rules-tree.title": "\u89C4\u5219\u6811",
743
+ "dashboard.rules-tree.subtitle": "\u67E5\u770B .fabric/agents.meta.json \u4E2D\u7684\u89C4\u5219\u7ED3\u6784\u3001\u5C42\u7EA7\u548C\u540C\u6B65\u72B6\u6001",
744
+ "dashboard.rules-tree.filter.placeholder": "\u6309\u6587\u4EF6\u3001\u4F5C\u7528\u57DF\u3001\u4F18\u5148\u7EA7\u3001\u54C8\u5E0C\u8FC7\u6EE4...",
743
745
  "dashboard.rules-tree.filter.aria-label": "\u8FC7\u6EE4\u89C4\u5219\u6811",
744
746
  "dashboard.rules-tree.status.loading": "\u89C4\u5219\u52A0\u8F7D\u4E2D",
745
- "dashboard.rules-tree.status.nodes": "{count} \u4E2A\u8282\u70B9 \xB7 rev {revision}",
746
- "dashboard.rules-tree.status.locks": "{count} \u4E2A\u4EBA\u5DE5\u9501",
747
+ "dashboard.rules-tree.status.nodes": "{count} \u4E2A\u8282\u70B9 \xB7 \u7248\u672C {revision}",
748
+ "dashboard.rules-tree.status.locks": "{count} \u4E2A\u53D7\u4FDD\u62A4\u533A\u57DF",
747
749
  "dashboard.rules-tree.empty": "\u6CA1\u6709\u5339\u914D\u7684\u89C4\u5219\u3002",
748
750
  "dashboard.rules-tree.tree.aria-label": "Fabric \u89C4\u5219\u6811",
749
751
  "dashboard.rules-tree.detail.title": "\u8282\u70B9\u8BE6\u60C5",
@@ -753,16 +755,16 @@ var zhCNMessages = {
753
755
  "dashboard.rules-tree.detail.priority": "\u4F18\u5148\u7EA7",
754
756
  "dashboard.rules-tree.detail.hash": "\u54C8\u5E0C",
755
757
  "dashboard.rules-tree.detail.no-deps": "\u65E0\u4F9D\u8D56",
756
- "dashboard.human-lock.title": "\u4EBA\u5DE5\u9501\u4ED3\u5E93",
757
- "dashboard.human-lock.subtitle": "\u7B49\u5F85\u6279\u51C6\u7684\u53D7\u4FDD\u62A4\u533A\u57DF \xB7 \u4EC5\u5141\u8BB8\u4EEA\u5F0F\u5316\u5199\u5165",
758
- "dashboard.human-lock.filters.aria-label": "\u4EBA\u5DE5\u9501\u8FC7\u6EE4\u5668",
758
+ "dashboard.human-lock.title": "\u4EBA\u5DE5\u4FDD\u62A4",
759
+ "dashboard.human-lock.subtitle": "\u67E5\u770B\u9700\u8981\u4EBA\u5DE5\u786E\u8BA4\u7684\u53D7\u4FDD\u62A4\u533A\u57DF",
760
+ "dashboard.human-lock.filters.aria-label": "\u4EBA\u5DE5\u4FDD\u62A4\u8FC7\u6EE4\u5668",
759
761
  "dashboard.human-lock.filters.all": "\u5168\u90E8",
760
762
  "dashboard.human-lock.filters.drift": "\u6F02\u79FB",
761
763
  "dashboard.human-lock.filters.approved": "\u5DF2\u6279\u51C6",
762
764
  "dashboard.human-lock.summary": "{drift} \u5904\u6F02\u79FB \xB7 {approved} \u9879\u5DF2\u786E\u8BA4",
763
- "dashboard.human-lock.empty": "\u5F53\u524D\u8FC7\u6EE4\u6761\u4EF6\u4E0B\u6CA1\u6709\u4EBA\u5DE5\u9501\u8BB0\u5F55\u3002",
765
+ "dashboard.human-lock.empty": "\u5F53\u524D\u8FC7\u6EE4\u6761\u4EF6\u4E0B\u6CA1\u6709\u53D7\u4FDD\u62A4\u8BB0\u5F55\u3002",
764
766
  "dashboard.intent-timeline.title": "\u610F\u56FE\u65F6\u95F4\u7EBF",
765
- "dashboard.intent-timeline.subtitle": ".intent-ledger.jsonl \xB7 AI | Human \u53CC\u5217 \xB7 \u6309\u65F6\u95F4\u5012\u5E8F",
767
+ "dashboard.intent-timeline.subtitle": "\u67E5\u770B AI \u4E0E\u4EBA\u5DE5\u7559\u4E0B\u7684\u53D8\u66F4\u8BB0\u5F55\uFF0C\u6309\u65F6\u95F4\u5012\u5E8F\u6392\u5217",
766
768
  "dashboard.intent-timeline.filter.label": "\u6765\u6E90",
767
769
  "dashboard.intent-timeline.filter.all": "\u5168\u90E8",
768
770
  "dashboard.intent-timeline.summary": "AI {aiCount} \xB7 Human {humanCount}",
@@ -773,7 +775,7 @@ var zhCNMessages = {
773
775
  "dashboard.intent-timeline.empty": "\u6CA1\u6709\u627E\u5230\u65E5\u5FD7\u8BB0\u5F55\u3002",
774
776
  "dashboard.intent-timeline.annotate.missing-id": "\u7F3A\u5C11 id\uFF0C\u65E0\u6CD5\u4E3A\u8FD9\u6761\u65E5\u5FD7\u6DFB\u52A0\u6CE8\u91CA\u3002",
775
777
  "dashboard.history-replay.title": "\u5386\u53F2\u56DE\u653E",
776
- "dashboard.history-replay.subtitle": "\u7A7F\u8D8A\u65E5\u5FD7\u63D0\u4EA4\uFF0C\u5728\u4EFB\u610F\u8BB0\u5F55\u70B9\u91CD\u65B0\u8FD8\u539F\u89C4\u5219\u6811\u72B6\u6001",
778
+ "dashboard.history-replay.subtitle": "\u6309\u5386\u53F2\u8BB0\u5F55\u56DE\u770B\u5F53\u65F6\u7684\u89C4\u5219\u6811\u72B6\u6001",
777
779
  "dashboard.history-replay.toolbar.scrub": "\u62D6\u52A8",
778
780
  "dashboard.history-replay.toolbar.latest": "\u6700\u65B0",
779
781
  "dashboard.history-replay.selected.none": "\u5C1A\u672A\u9009\u62E9\u5386\u53F2\u8BB0\u5F55",
@@ -781,10 +783,10 @@ var zhCNMessages = {
781
783
  "dashboard.history-replay.status.entries-applied": "\u5DF2\u5E94\u7528 {count} \u6761\u8BB0\u5F55",
782
784
  "dashboard.history-replay.empty.entries": "\u6CA1\u6709\u53EF\u7528\u4E8E\u56DE\u653E\u7684\u65E5\u5FD7\u8BB0\u5F55\u3002",
783
785
  "dashboard.history-replay.state.title": "\u67E5\u770B {label} \u65F6\u523B\u7684\u72B6\u6001",
784
- "dashboard.history-replay.state.meta": "ledger {ledgerId} \xB7 commit {commit} \xB7 {mode}",
786
+ "dashboard.history-replay.state.meta": "\u8BB0\u5F55 {ledgerId} \xB7 \u63D0\u4EA4 {commit} \xB7 {mode}",
785
787
  "dashboard.history-replay.status.loading": "\u5FEB\u7167\u52A0\u8F7D\u4E2D",
786
788
  "dashboard.history-replay.status.nodes": "{count} \u4E2A\u8282\u70B9",
787
- "dashboard.history-replay.status.unknown-revision": "\u672A\u77E5 revision",
789
+ "dashboard.history-replay.status.unknown-revision": "\u672A\u77E5\u7248\u672C",
788
790
  "dashboard.history-replay.tree.aria-label": "\u5386\u53F2 Fabric \u89C4\u5219\u6811",
789
791
  "dashboard.history-replay.empty.loading": "\u6B63\u5728\u52A0\u8F7D\u5386\u53F2\u5FEB\u7167...",
790
792
  "dashboard.history-replay.empty.select": "\u8BF7\u9009\u62E9\u4E00\u6761\u65F6\u95F4\u7EBF\u8BB0\u5F55\u4EE5\u56DE\u653E\u5176\u72B6\u6001\u3002",
@@ -792,7 +794,7 @@ var zhCNMessages = {
792
794
  "dashboard.history-replay.meta.pending": "\u7B49\u5F85\u4E2D",
793
795
  "dashboard.history-replay.meta.na": "\u65E0",
794
796
  "dashboard.doctor.title": "\u8BCA\u65AD\u63A7\u5236\u53F0",
795
- "dashboard.doctor.subtitle": "fab doctor \u9762\u677F \xB7 \u6846\u67B6\u3001\u5165\u53E3\u70B9\u3001revision \u6F02\u79FB\u3001\u53D7\u4FDD\u62A4\u8DEF\u5F84",
797
+ "dashboard.doctor.subtitle": "\u67E5\u770B\u6846\u67B6\u3001\u5165\u53E3\u70B9\u3001\u7248\u672C\u6F02\u79FB\u548C\u53D7\u4FDD\u62A4\u8DEF\u5F84\u7684\u72B6\u6001",
796
798
  "dashboard.doctor.toolbar.overall": "\u6574\u4F53\u72B6\u6001",
797
799
  "dashboard.doctor.toolbar.no-summary": "\u6682\u65E0\u6458\u8981",
798
800
  "dashboard.doctor.toolbar.entry-points-summary": "{framework} \xB7 {count} \u4E2A\u5165\u53E3\u70B9",
@@ -801,7 +803,7 @@ var zhCNMessages = {
801
803
  "dashboard.doctor.summary.framework": "\u6846\u67B6",
802
804
  "dashboard.doctor.summary.protected-paths": "\u53D7\u4FDD\u62A4\u8DEF\u5F84",
803
805
  "dashboard.doctor.summary.intent-ledger": "\u610F\u56FE\u65E5\u5FD7",
804
- "dashboard.doctor.summary.no-meta-revision": "\u6682\u65E0 meta revision",
806
+ "dashboard.doctor.summary.no-meta-revision": "\u6682\u65E0\u5143\u6570\u636E\u7248\u672C",
805
807
  "dashboard.doctor.summary.tracked-paths.none": "\u6CA1\u6709\u8DDF\u8E2A\u8DEF\u5F84",
806
808
  "dashboard.doctor.summary.tracked-paths.some": "\u5DF2\u8DDF\u8E2A {count} \u9879",
807
809
  "dashboard.doctor.summary.hashes-intact": "\u6240\u6709\u5DF2\u6279\u51C6\u54C8\u5E0C\u5747\u5B8C\u597D",
@@ -924,7 +926,7 @@ var PROTECTED_TOKENS = [
924
926
  ".fabric/human-lock.json",
925
927
  ".fabric/init-context.json",
926
928
  ".fabric/forensic.json",
927
- ".intent-ledger.jsonl",
929
+ ".fabric/.intent-ledger.jsonl",
928
930
  "@HUMAN",
929
931
  "shadow constraints",
930
932
  "Shadow Mirroring",
@@ -12,7 +12,7 @@ declare function detectNodeLocale(): Locale;
12
12
 
13
13
  declare function normalizeLocale(raw: string | null | undefined): Locale;
14
14
 
15
- declare const PROTECTED_TOKENS: readonly ["fab_get_rules", "fab_append_intent", "fab_update_registry", "fabric_rules", "ledger_entry", "ledger_entry_id", "agent_meta", "AGENTS.md", "FABRIC.md", ".fabric/agents/", ".fabric/agents/_cross/", ".fabric/agents.meta.json", ".fabric/human-lock.json", ".fabric/init-context.json", ".fabric/forensic.json", ".intent-ledger.jsonl", "@HUMAN", "shadow constraints", "Shadow Mirroring", "CORE RULES", "DO NOT TRANSLATE", "MUST", "NEVER"];
15
+ declare const PROTECTED_TOKENS: readonly ["fab_get_rules", "fab_append_intent", "fab_update_registry", "fabric_rules", "ledger_entry", "ledger_entry_id", "agent_meta", "AGENTS.md", "FABRIC.md", ".fabric/agents/", ".fabric/agents/_cross/", ".fabric/agents.meta.json", ".fabric/human-lock.json", ".fabric/init-context.json", ".fabric/forensic.json", ".fabric/.intent-ledger.jsonl", "@HUMAN", "shadow constraints", "Shadow Mirroring", "CORE RULES", "DO NOT TRANSLATE", "MUST", "NEVER"];
16
16
  type ProtectedToken = (typeof PROTECTED_TOKENS)[number];
17
17
 
18
18
  declare const enMessages: Messages;
@@ -6,7 +6,7 @@ import {
6
6
  enMessages,
7
7
  normalizeLocale,
8
8
  zhCNMessages
9
- } from "../chunk-3W2DKFJZ.js";
9
+ } from "../chunk-KNZIX6IL.js";
10
10
  export {
11
11
  PROTECTED_TOKENS,
12
12
  createTranslator,