@fenglimg/fabric-shared 1.5.0 → 1.5.2

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,
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import { AgentsLayer, AgentsTopologyType, AgentsMetaNode, HumanLockEntry, AgentsMeta, LedgerEntry } from './types/index.js';
1
+ import { AgentsMetaNode, AgentsIdentitySource, AgentsLayer, AgentsTopologyType, HumanLockEntry, AgentsMeta, LedgerEntry } from './types/index.js';
2
2
  export { AgentsActivationTier, AgentsMetaNodeActivation, AiLedgerEntry, AuditMode, ClientPaths, FabricConfig, HumanLedgerEntry } from './types/index.js';
3
3
  export { Locale, Messages, PROTECTED_TOKENS, ProtectedToken, TranslationKey, Translator, createTranslator, defaultMessages, detectNodeLocale, enMessages, normalizeLocale, zhCNMessages } from './i18n/index.js';
4
4
  import { z } from 'zod';
5
5
 
6
6
  declare const AGENTS_META_LAYERS: readonly ["L0", "L1", "L2"];
7
7
  declare const AGENTS_META_TOPOLOGY_TYPES: readonly ["mirror", "cross-cutting"];
8
+ declare const AGENTS_META_IDENTITY_SOURCES: readonly ["declared", "derived"];
8
9
  declare const agentsLayerSchema: z.ZodEnum<["L0", "L1", "L2"]>;
9
10
  declare const agentsTopologyTypeSchema: z.ZodEnum<["mirror", "cross-cutting"]>;
11
+ declare const agentsIdentitySourceSchema: z.ZodEnum<["declared", "derived"]>;
10
12
  type AgentsMetaNodeInput = Omit<AgentsMetaNode, "layer" | "topology_type"> & Partial<Pick<AgentsMetaNode, "layer" | "topology_type">>;
11
13
  declare const agentsMetaNodeSchema: z.ZodEffects<z.ZodObject<{
12
14
  file: z.ZodString;
@@ -16,6 +18,8 @@ declare const agentsMetaNodeSchema: z.ZodEffects<z.ZodObject<{
16
18
  layer: z.ZodEnum<["L0", "L1", "L2"]>;
17
19
  topology_type: z.ZodEnum<["mirror", "cross-cutting"]>;
18
20
  hash: z.ZodString;
21
+ stable_id: z.ZodOptional<z.ZodString>;
22
+ identity_source: z.ZodOptional<z.ZodEnum<["declared", "derived"]>>;
19
23
  activation: z.ZodOptional<z.ZodObject<{
20
24
  tier: z.ZodEnum<["always", "path", "description"]>;
21
25
  description: z.ZodOptional<z.ZodString>;
@@ -34,6 +38,8 @@ declare const agentsMetaNodeSchema: z.ZodEffects<z.ZodObject<{
34
38
  topology_type: "mirror" | "cross-cutting";
35
39
  scope_glob: string;
36
40
  deps: string[];
41
+ stable_id?: string | undefined;
42
+ identity_source?: "declared" | "derived" | undefined;
37
43
  activation?: {
38
44
  tier: "always" | "path" | "description";
39
45
  description?: string | undefined;
@@ -46,6 +52,8 @@ declare const agentsMetaNodeSchema: z.ZodEffects<z.ZodObject<{
46
52
  topology_type: "mirror" | "cross-cutting";
47
53
  scope_glob: string;
48
54
  deps: string[];
55
+ stable_id?: string | undefined;
56
+ identity_source?: "declared" | "derived" | undefined;
49
57
  activation?: {
50
58
  tier: "always" | "path" | "description";
51
59
  description?: string | undefined;
@@ -58,6 +66,8 @@ declare const agentsMetaNodeSchema: z.ZodEffects<z.ZodObject<{
58
66
  topology_type: "mirror" | "cross-cutting";
59
67
  scope_glob: string;
60
68
  deps: string[];
69
+ stable_id?: string | undefined;
70
+ identity_source?: "declared" | "derived" | undefined;
61
71
  activation?: {
62
72
  tier: "always" | "path" | "description";
63
73
  description?: string | undefined;
@@ -73,6 +83,8 @@ declare const agentsMetaSchema: z.ZodObject<{
73
83
  layer: z.ZodEnum<["L0", "L1", "L2"]>;
74
84
  topology_type: z.ZodEnum<["mirror", "cross-cutting"]>;
75
85
  hash: z.ZodString;
86
+ stable_id: z.ZodOptional<z.ZodString>;
87
+ identity_source: z.ZodOptional<z.ZodEnum<["declared", "derived"]>>;
76
88
  activation: z.ZodOptional<z.ZodObject<{
77
89
  tier: z.ZodEnum<["always", "path", "description"]>;
78
90
  description: z.ZodOptional<z.ZodString>;
@@ -91,6 +103,8 @@ declare const agentsMetaSchema: z.ZodObject<{
91
103
  topology_type: "mirror" | "cross-cutting";
92
104
  scope_glob: string;
93
105
  deps: string[];
106
+ stable_id?: string | undefined;
107
+ identity_source?: "declared" | "derived" | undefined;
94
108
  activation?: {
95
109
  tier: "always" | "path" | "description";
96
110
  description?: string | undefined;
@@ -103,6 +117,8 @@ declare const agentsMetaSchema: z.ZodObject<{
103
117
  topology_type: "mirror" | "cross-cutting";
104
118
  scope_glob: string;
105
119
  deps: string[];
120
+ stable_id?: string | undefined;
121
+ identity_source?: "declared" | "derived" | undefined;
106
122
  activation?: {
107
123
  tier: "always" | "path" | "description";
108
124
  description?: string | undefined;
@@ -115,6 +131,8 @@ declare const agentsMetaSchema: z.ZodObject<{
115
131
  topology_type: "mirror" | "cross-cutting";
116
132
  scope_glob: string;
117
133
  deps: string[];
134
+ stable_id?: string | undefined;
135
+ identity_source?: "declared" | "derived" | undefined;
118
136
  activation?: {
119
137
  tier: "always" | "path" | "description";
120
138
  description?: string | undefined;
@@ -130,6 +148,8 @@ declare const agentsMetaSchema: z.ZodObject<{
130
148
  topology_type: "mirror" | "cross-cutting";
131
149
  scope_glob: string;
132
150
  deps: string[];
151
+ stable_id?: string | undefined;
152
+ identity_source?: "declared" | "derived" | undefined;
133
153
  activation?: {
134
154
  tier: "always" | "path" | "description";
135
155
  description?: string | undefined;
@@ -140,6 +160,8 @@ declare const agentsMetaSchema: z.ZodObject<{
140
160
  nodes: Record<string, unknown>;
141
161
  }>;
142
162
  declare function withDerivedAgentsMetaNodeDefaults(node: AgentsMetaNodeInput): AgentsMetaNode;
163
+ declare function deriveAgentsMetaStableId(file: string): string;
164
+ declare function deriveAgentsMetaIdentitySource(node: Pick<AgentsMetaNode, "file"> & Partial<Pick<AgentsMetaNode, "stable_id" | "identity_source">>): AgentsIdentitySource;
143
165
  declare function deriveAgentsMetaLayer(file: string): AgentsLayer;
144
166
  declare function deriveAgentsMetaTopologyType(file: string): AgentsTopologyType;
145
167
 
@@ -1414,6 +1436,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1414
1436
  layer: z.ZodEnum<["L0", "L1", "L2"]>;
1415
1437
  topology_type: z.ZodEnum<["mirror", "cross-cutting"]>;
1416
1438
  hash: z.ZodString;
1439
+ stable_id: z.ZodOptional<z.ZodString>;
1440
+ identity_source: z.ZodOptional<z.ZodEnum<["declared", "derived"]>>;
1417
1441
  activation: z.ZodOptional<z.ZodObject<{
1418
1442
  tier: z.ZodEnum<["always", "path", "description"]>;
1419
1443
  description: z.ZodOptional<z.ZodString>;
@@ -1432,6 +1456,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1432
1456
  topology_type: "mirror" | "cross-cutting";
1433
1457
  scope_glob: string;
1434
1458
  deps: string[];
1459
+ stable_id?: string | undefined;
1460
+ identity_source?: "declared" | "derived" | undefined;
1435
1461
  activation?: {
1436
1462
  tier: "always" | "path" | "description";
1437
1463
  description?: string | undefined;
@@ -1444,6 +1470,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1444
1470
  topology_type: "mirror" | "cross-cutting";
1445
1471
  scope_glob: string;
1446
1472
  deps: string[];
1473
+ stable_id?: string | undefined;
1474
+ identity_source?: "declared" | "derived" | undefined;
1447
1475
  activation?: {
1448
1476
  tier: "always" | "path" | "description";
1449
1477
  description?: string | undefined;
@@ -1456,6 +1484,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1456
1484
  topology_type: "mirror" | "cross-cutting";
1457
1485
  scope_glob: string;
1458
1486
  deps: string[];
1487
+ stable_id?: string | undefined;
1488
+ identity_source?: "declared" | "derived" | undefined;
1459
1489
  activation?: {
1460
1490
  tier: "always" | "path" | "description";
1461
1491
  description?: string | undefined;
@@ -1471,6 +1501,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1471
1501
  topology_type: "mirror" | "cross-cutting";
1472
1502
  scope_glob: string;
1473
1503
  deps: string[];
1504
+ stable_id?: string | undefined;
1505
+ identity_source?: "declared" | "derived" | undefined;
1474
1506
  activation?: {
1475
1507
  tier: "always" | "path" | "description";
1476
1508
  description?: string | undefined;
@@ -1492,6 +1524,8 @@ declare const metaUpdatedEventSchema: z.ZodObject<{
1492
1524
  topology_type: "mirror" | "cross-cutting";
1493
1525
  scope_glob: string;
1494
1526
  deps: string[];
1527
+ stable_id?: string | undefined;
1528
+ identity_source?: "declared" | "derived" | undefined;
1495
1529
  activation?: {
1496
1530
  tier: "always" | "path" | "description";
1497
1531
  description?: string | undefined;
@@ -2234,6 +2268,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2234
2268
  layer: z.ZodEnum<["L0", "L1", "L2"]>;
2235
2269
  topology_type: z.ZodEnum<["mirror", "cross-cutting"]>;
2236
2270
  hash: z.ZodString;
2271
+ stable_id: z.ZodOptional<z.ZodString>;
2272
+ identity_source: z.ZodOptional<z.ZodEnum<["declared", "derived"]>>;
2237
2273
  activation: z.ZodOptional<z.ZodObject<{
2238
2274
  tier: z.ZodEnum<["always", "path", "description"]>;
2239
2275
  description: z.ZodOptional<z.ZodString>;
@@ -2252,6 +2288,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2252
2288
  topology_type: "mirror" | "cross-cutting";
2253
2289
  scope_glob: string;
2254
2290
  deps: string[];
2291
+ stable_id?: string | undefined;
2292
+ identity_source?: "declared" | "derived" | undefined;
2255
2293
  activation?: {
2256
2294
  tier: "always" | "path" | "description";
2257
2295
  description?: string | undefined;
@@ -2264,6 +2302,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2264
2302
  topology_type: "mirror" | "cross-cutting";
2265
2303
  scope_glob: string;
2266
2304
  deps: string[];
2305
+ stable_id?: string | undefined;
2306
+ identity_source?: "declared" | "derived" | undefined;
2267
2307
  activation?: {
2268
2308
  tier: "always" | "path" | "description";
2269
2309
  description?: string | undefined;
@@ -2276,6 +2316,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2276
2316
  topology_type: "mirror" | "cross-cutting";
2277
2317
  scope_glob: string;
2278
2318
  deps: string[];
2319
+ stable_id?: string | undefined;
2320
+ identity_source?: "declared" | "derived" | undefined;
2279
2321
  activation?: {
2280
2322
  tier: "always" | "path" | "description";
2281
2323
  description?: string | undefined;
@@ -2291,6 +2333,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2291
2333
  topology_type: "mirror" | "cross-cutting";
2292
2334
  scope_glob: string;
2293
2335
  deps: string[];
2336
+ stable_id?: string | undefined;
2337
+ identity_source?: "declared" | "derived" | undefined;
2294
2338
  activation?: {
2295
2339
  tier: "always" | "path" | "description";
2296
2340
  description?: string | undefined;
@@ -2312,6 +2356,8 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2312
2356
  topology_type: "mirror" | "cross-cutting";
2313
2357
  scope_glob: string;
2314
2358
  deps: string[];
2359
+ stable_id?: string | undefined;
2360
+ identity_source?: "declared" | "derived" | undefined;
2315
2361
  activation?: {
2316
2362
  tier: "always" | "path" | "description";
2317
2363
  description?: string | undefined;
@@ -3039,4 +3085,4 @@ declare const fabricEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3039
3085
  };
3040
3086
  }>]>;
3041
3087
 
3042
- export { AGENTS_META_LAYERS, AGENTS_META_TOPOLOGY_TYPES, AgentsLayer, AgentsMeta, AgentsMetaNode, AgentsTopologyType, type CandidateFileEntry, type CandidateFileFamily, type DriftDetectedEvent, type FabricEvent, type ForensicAssertion, type ForensicAssertionConfidence, type ForensicAssertionCoverage, type ForensicAssertionType, type ForensicCodeSample, type ForensicEntryPoint, type ForensicEvidenceAnchor, type ForensicFramework, type ForensicReadme, type ForensicReport, type ForensicSamplingBudget, type ForensicTopology, HumanLockEntry, type HumanLockFile, type InitContext, type InitContextDomainGroup, type InitContextFramework, type InitContextInterviewTrailEntry, type InitContextInvariant, type InitContextInvariantConfidenceSnapshot, type InitContextSourceEvidence, type LedgerAppendedEvent, LedgerEntry, type LockApprovedEvent, type LockDriftEvent, type MetaUpdatedEvent, agentsLayerSchema, agentsMetaNodeSchema, agentsMetaSchema, agentsTopologyTypeSchema, aiLedgerEntrySchema, annotateIntentRequestSchema, auditModeSchema, candidateFileEntrySchema, clientPathsSchema, deriveAgentsMetaLayer, deriveAgentsMetaTopologyType, driftDetectedEventSchema, fabricConfigSchema, fabricEventSchema, forensicAssertionCoverageSchema, forensicAssertionSchema, forensicCodeSampleSchema, forensicEntryPointSchema, forensicEvidenceAnchorSchema, forensicFrameworkSchema, forensicReadmeSchema, forensicReportSchema, forensicSamplingBudgetSchema, forensicTopologySchema, historyStateQuerySchema, humanLedgerEntrySchema, humanLockApproveRequestSchema, humanLockEntrySchema, humanLockFileParamsSchema, humanLockFileSchema, initContextDomainGroupSchema, initContextFrameworkSchema, initContextInterviewTrailEntrySchema, initContextInvariantConfidenceSnapshotSchema, initContextInvariantSchema, initContextSchema, initContextSourceEvidenceSchema, ledgerAppendedEventSchema, ledgerEntrySchema, ledgerQuerySchema, ledgerSourceSchema, lockApprovedEventSchema, lockDriftEventSchema, metaUpdatedEventSchema, withDerivedAgentsMetaNodeDefaults };
3088
+ export { AGENTS_META_IDENTITY_SOURCES, AGENTS_META_LAYERS, AGENTS_META_TOPOLOGY_TYPES, AgentsIdentitySource, AgentsLayer, AgentsMeta, AgentsMetaNode, AgentsTopologyType, type CandidateFileEntry, type CandidateFileFamily, type DriftDetectedEvent, type FabricEvent, type ForensicAssertion, type ForensicAssertionConfidence, type ForensicAssertionCoverage, type ForensicAssertionType, type ForensicCodeSample, type ForensicEntryPoint, type ForensicEvidenceAnchor, type ForensicFramework, type ForensicReadme, type ForensicReport, type ForensicSamplingBudget, type ForensicTopology, HumanLockEntry, type HumanLockFile, type InitContext, type InitContextDomainGroup, type InitContextFramework, type InitContextInterviewTrailEntry, type InitContextInvariant, type InitContextInvariantConfidenceSnapshot, type InitContextSourceEvidence, type LedgerAppendedEvent, LedgerEntry, type LockApprovedEvent, type LockDriftEvent, type MetaUpdatedEvent, agentsIdentitySourceSchema, agentsLayerSchema, agentsMetaNodeSchema, agentsMetaSchema, agentsTopologyTypeSchema, aiLedgerEntrySchema, annotateIntentRequestSchema, auditModeSchema, candidateFileEntrySchema, clientPathsSchema, deriveAgentsMetaIdentitySource, deriveAgentsMetaLayer, deriveAgentsMetaStableId, deriveAgentsMetaTopologyType, driftDetectedEventSchema, fabricConfigSchema, fabricEventSchema, forensicAssertionCoverageSchema, forensicAssertionSchema, forensicCodeSampleSchema, forensicEntryPointSchema, forensicEvidenceAnchorSchema, forensicFrameworkSchema, forensicReadmeSchema, forensicReportSchema, forensicSamplingBudgetSchema, forensicTopologySchema, historyStateQuerySchema, humanLedgerEntrySchema, humanLockApproveRequestSchema, humanLockEntrySchema, humanLockFileParamsSchema, humanLockFileSchema, initContextDomainGroupSchema, initContextFrameworkSchema, initContextInterviewTrailEntrySchema, initContextInvariantConfidenceSnapshotSchema, initContextInvariantSchema, initContextSchema, initContextSourceEvidenceSchema, ledgerAppendedEventSchema, ledgerEntrySchema, ledgerQuerySchema, ledgerSourceSchema, lockApprovedEventSchema, lockDriftEventSchema, metaUpdatedEventSchema, withDerivedAgentsMetaNodeDefaults };
package/dist/index.js CHANGED
@@ -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
  import "./chunk-LXNCAKJZ.js";
11
11
 
12
12
  // src/schemas/agents-meta.ts
@@ -14,8 +14,10 @@ import { z } from "zod";
14
14
  var FABRIC_AGENTS_PREFIX = ".fabric/agents/";
15
15
  var AGENTS_META_LAYERS = ["L0", "L1", "L2"];
16
16
  var AGENTS_META_TOPOLOGY_TYPES = ["mirror", "cross-cutting"];
17
+ var AGENTS_META_IDENTITY_SOURCES = ["declared", "derived"];
17
18
  var agentsLayerSchema = z.enum(AGENTS_META_LAYERS);
18
19
  var agentsTopologyTypeSchema = z.enum(AGENTS_META_TOPOLOGY_TYPES);
20
+ var agentsIdentitySourceSchema = z.enum(AGENTS_META_IDENTITY_SOURCES);
19
21
  var agentsMetaNodeBaseSchema = z.object({
20
22
  file: z.string(),
21
23
  scope_glob: z.string(),
@@ -24,6 +26,8 @@ var agentsMetaNodeBaseSchema = z.object({
24
26
  layer: agentsLayerSchema,
25
27
  topology_type: agentsTopologyTypeSchema,
26
28
  hash: z.string(),
29
+ stable_id: z.string().optional(),
30
+ identity_source: agentsIdentitySourceSchema.optional(),
27
31
  activation: z.object({
28
32
  tier: z.enum(["always", "path", "description"]),
29
33
  description: z.string().optional()
@@ -40,12 +44,30 @@ var agentsMetaSchema = z.object({
40
44
  nodes: z.record(agentsMetaNodeSchema)
41
45
  });
42
46
  function withDerivedAgentsMetaNodeDefaults(node) {
47
+ const stableId = node.stable_id ?? deriveAgentsMetaStableId(node.file);
48
+ const identitySource = deriveAgentsMetaIdentitySource(node);
43
49
  return {
44
50
  ...node,
45
51
  layer: node.layer ?? deriveAgentsMetaLayer(node.file),
46
- topology_type: node.topology_type ?? deriveAgentsMetaTopologyType(node.file)
52
+ topology_type: node.topology_type ?? deriveAgentsMetaTopologyType(node.file),
53
+ stable_id: stableId,
54
+ identity_source: identitySource
47
55
  };
48
56
  }
57
+ function deriveAgentsMetaStableId(file) {
58
+ const normalized = normalizePath(file);
59
+ if (normalized === "AGENTS.md" || normalized === ".fabric/bootstrap/README.md") {
60
+ return "bootstrap";
61
+ }
62
+ return getDepthSource(normalized).replace(/\.md$/u, "");
63
+ }
64
+ function deriveAgentsMetaIdentitySource(node) {
65
+ if (node.identity_source !== void 0) {
66
+ return node.identity_source;
67
+ }
68
+ const derivedStableId = deriveAgentsMetaStableId(node.file);
69
+ return node.stable_id !== void 0 && node.stable_id !== derivedStableId ? "declared" : "derived";
70
+ }
49
71
  function deriveAgentsMetaLayer(file) {
50
72
  const normalized = normalizePath(file);
51
73
  if (normalized === "AGENTS.md" || normalized === ".fabric/bootstrap/README.md") {
@@ -359,9 +381,11 @@ var fabricEventSchema = z8.discriminatedUnion("type", [
359
381
  driftDetectedEventSchema
360
382
  ]);
361
383
  export {
384
+ AGENTS_META_IDENTITY_SOURCES,
362
385
  AGENTS_META_LAYERS,
363
386
  AGENTS_META_TOPOLOGY_TYPES,
364
387
  PROTECTED_TOKENS,
388
+ agentsIdentitySourceSchema,
365
389
  agentsLayerSchema,
366
390
  agentsMetaNodeSchema,
367
391
  agentsMetaSchema,
@@ -373,7 +397,9 @@ export {
373
397
  clientPathsSchema,
374
398
  createTranslator,
375
399
  defaultMessages,
400
+ deriveAgentsMetaIdentitySource,
376
401
  deriveAgentsMetaLayer,
402
+ deriveAgentsMetaStableId,
377
403
  deriveAgentsMetaTopologyType,
378
404
  detectNodeLocale,
379
405
  driftDetectedEventSchema,
@@ -1,6 +1,7 @@
1
1
  type AgentsLayer = "L0" | "L1" | "L2";
2
2
  type AgentsTopologyType = "mirror" | "cross-cutting";
3
3
  type AgentsActivationTier = "always" | "path" | "description";
4
+ type AgentsIdentitySource = "declared" | "derived";
4
5
  interface AgentsMetaNodeActivation {
5
6
  tier: AgentsActivationTier;
6
7
  description?: string;
@@ -13,6 +14,8 @@ interface AgentsMetaNode {
13
14
  layer: AgentsLayer;
14
15
  topology_type: AgentsTopologyType;
15
16
  hash: string;
17
+ stable_id?: string;
18
+ identity_source?: AgentsIdentitySource;
16
19
  activation?: AgentsMetaNodeActivation;
17
20
  }
18
21
  interface AgentsMeta {
@@ -65,4 +68,4 @@ interface FabricConfig {
65
68
  audit_mode?: AuditMode;
66
69
  }
67
70
 
68
- export type { AgentsActivationTier, AgentsLayer, AgentsMeta, AgentsMetaNode, AgentsMetaNodeActivation, AgentsTopologyType, AiLedgerEntry, AuditMode, ClientPaths, FabricConfig, HumanLedgerEntry, HumanLockEntry, LedgerEntry };
71
+ export type { AgentsActivationTier, AgentsIdentitySource, AgentsLayer, AgentsMeta, AgentsMetaNode, AgentsMetaNodeActivation, AgentsTopologyType, AiLedgerEntry, AuditMode, ClientPaths, FabricConfig, HumanLedgerEntry, HumanLockEntry, LedgerEntry };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fenglimg/fabric-shared",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",