agent-embassy 1.0.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.
Files changed (145) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/CONTRIBUTING.md +122 -0
  3. package/LICENSE +21 -0
  4. package/README.md +185 -0
  5. package/README.zh-CN.md +185 -0
  6. package/SECURITY.md +224 -0
  7. package/assets/live-dashboard/app.css +1610 -0
  8. package/assets/mark-seal.svg +7 -0
  9. package/assets/mark.svg +7 -0
  10. package/assets/social-preview.png +0 -0
  11. package/assets/vendor/react/LICENSE +21 -0
  12. package/assets/vendor/react/react-dom.production.min.js +267 -0
  13. package/assets/vendor/react/react.production.min.js +31 -0
  14. package/dist/src/errors.d.ts +5 -0
  15. package/dist/src/errors.js +11 -0
  16. package/dist/src/errors.js.map +1 -0
  17. package/dist/src/gateway/claude-compatibility-scratch.d.ts +18 -0
  18. package/dist/src/gateway/claude-compatibility-scratch.js +158 -0
  19. package/dist/src/gateway/claude-compatibility-scratch.js.map +1 -0
  20. package/dist/src/gateway/claude-helper-client.d.ts +43 -0
  21. package/dist/src/gateway/claude-helper-client.js +212 -0
  22. package/dist/src/gateway/claude-helper-client.js.map +1 -0
  23. package/dist/src/gateway/claude-helper-protocol.d.ts +172 -0
  24. package/dist/src/gateway/claude-helper-protocol.js +373 -0
  25. package/dist/src/gateway/claude-helper-protocol.js.map +1 -0
  26. package/dist/src/gateway/claude-helper-supervisor.d.ts +74 -0
  27. package/dist/src/gateway/claude-helper-supervisor.js +497 -0
  28. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -0
  29. package/dist/src/gateway/claude-helper.d.ts +1 -0
  30. package/dist/src/gateway/claude-helper.js +269 -0
  31. package/dist/src/gateway/claude-helper.js.map +1 -0
  32. package/dist/src/gateway/claude-peer.d.ts +273 -0
  33. package/dist/src/gateway/claude-peer.js +2359 -0
  34. package/dist/src/gateway/claude-peer.js.map +1 -0
  35. package/dist/src/gateway/claude-runtime.d.ts +40 -0
  36. package/dist/src/gateway/claude-runtime.js +302 -0
  37. package/dist/src/gateway/claude-runtime.js.map +1 -0
  38. package/dist/src/gateway/cli-copy.d.ts +8 -0
  39. package/dist/src/gateway/cli-copy.en.d.ts +13 -0
  40. package/dist/src/gateway/cli-copy.en.js +43 -0
  41. package/dist/src/gateway/cli-copy.en.js.map +1 -0
  42. package/dist/src/gateway/cli-copy.js +19 -0
  43. package/dist/src/gateway/cli-copy.js.map +1 -0
  44. package/dist/src/gateway/cli-copy.zh-CN.d.ts +13 -0
  45. package/dist/src/gateway/cli-copy.zh-CN.js +43 -0
  46. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -0
  47. package/dist/src/gateway/cli.d.ts +44 -0
  48. package/dist/src/gateway/cli.js +969 -0
  49. package/dist/src/gateway/cli.js.map +1 -0
  50. package/dist/src/gateway/codex-app-server.d.ts +310 -0
  51. package/dist/src/gateway/codex-app-server.js +1746 -0
  52. package/dist/src/gateway/codex-app-server.js.map +1 -0
  53. package/dist/src/gateway/codex-local-transport.d.ts +81 -0
  54. package/dist/src/gateway/codex-local-transport.js +617 -0
  55. package/dist/src/gateway/codex-local-transport.js.map +1 -0
  56. package/dist/src/gateway/codex-registration-generation.d.ts +5 -0
  57. package/dist/src/gateway/codex-registration-generation.js +19 -0
  58. package/dist/src/gateway/codex-registration-generation.js.map +1 -0
  59. package/dist/src/gateway/codex-registration-succession.d.ts +209 -0
  60. package/dist/src/gateway/codex-registration-succession.js +588 -0
  61. package/dist/src/gateway/codex-registration-succession.js.map +1 -0
  62. package/dist/src/gateway/compatibility.d.ts +70 -0
  63. package/dist/src/gateway/compatibility.js +252 -0
  64. package/dist/src/gateway/compatibility.js.map +1 -0
  65. package/dist/src/gateway/config.d.ts +24 -0
  66. package/dist/src/gateway/config.js +130 -0
  67. package/dist/src/gateway/config.js.map +1 -0
  68. package/dist/src/gateway/control.d.ts +308 -0
  69. package/dist/src/gateway/control.js +1573 -0
  70. package/dist/src/gateway/control.js.map +1 -0
  71. package/dist/src/gateway/dashboard-copy.d.ts +7 -0
  72. package/dist/src/gateway/dashboard-copy.en.d.ts +506 -0
  73. package/dist/src/gateway/dashboard-copy.en.js +507 -0
  74. package/dist/src/gateway/dashboard-copy.en.js.map +1 -0
  75. package/dist/src/gateway/dashboard-copy.js +516 -0
  76. package/dist/src/gateway/dashboard-copy.js.map +1 -0
  77. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +506 -0
  78. package/dist/src/gateway/dashboard-copy.zh-CN.js +507 -0
  79. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -0
  80. package/dist/src/gateway/dashboard-model.d.ts +207 -0
  81. package/dist/src/gateway/dashboard-model.js +720 -0
  82. package/dist/src/gateway/dashboard-model.js.map +1 -0
  83. package/dist/src/gateway/dashboard.d.ts +26 -0
  84. package/dist/src/gateway/dashboard.js +941 -0
  85. package/dist/src/gateway/dashboard.js.map +1 -0
  86. package/dist/src/gateway/delivery-machine.d.ts +235 -0
  87. package/dist/src/gateway/delivery-machine.js +540 -0
  88. package/dist/src/gateway/delivery-machine.js.map +1 -0
  89. package/dist/src/gateway/instance-lease.d.ts +21 -0
  90. package/dist/src/gateway/instance-lease.js +549 -0
  91. package/dist/src/gateway/instance-lease.js.map +1 -0
  92. package/dist/src/gateway/live-dashboard-app/app.js +2914 -0
  93. package/dist/src/gateway/live-dashboard-assets.d.ts +10 -0
  94. package/dist/src/gateway/live-dashboard-assets.js +73 -0
  95. package/dist/src/gateway/live-dashboard-assets.js.map +1 -0
  96. package/dist/src/gateway/live-dashboard-bootstrap.d.ts +36 -0
  97. package/dist/src/gateway/live-dashboard-bootstrap.js +176 -0
  98. package/dist/src/gateway/live-dashboard-bootstrap.js.map +1 -0
  99. package/dist/src/gateway/live-dashboard-command.d.ts +54 -0
  100. package/dist/src/gateway/live-dashboard-command.js +324 -0
  101. package/dist/src/gateway/live-dashboard-command.js.map +1 -0
  102. package/dist/src/gateway/live-dashboard-http.d.ts +41 -0
  103. package/dist/src/gateway/live-dashboard-http.js +445 -0
  104. package/dist/src/gateway/live-dashboard-http.js.map +1 -0
  105. package/dist/src/gateway/live-dashboard-protocol.d.ts +38 -0
  106. package/dist/src/gateway/live-dashboard-protocol.js +156 -0
  107. package/dist/src/gateway/live-dashboard-protocol.js.map +1 -0
  108. package/dist/src/gateway/live-dashboard-server.d.ts +33 -0
  109. package/dist/src/gateway/live-dashboard-server.js +130 -0
  110. package/dist/src/gateway/live-dashboard-server.js.map +1 -0
  111. package/dist/src/gateway/live-dashboard-stream.d.ts +46 -0
  112. package/dist/src/gateway/live-dashboard-stream.js +233 -0
  113. package/dist/src/gateway/live-dashboard-stream.js.map +1 -0
  114. package/dist/src/gateway/live-dashboard.d.ts +31 -0
  115. package/dist/src/gateway/live-dashboard.js +190 -0
  116. package/dist/src/gateway/live-dashboard.js.map +1 -0
  117. package/dist/src/gateway/locale.d.ts +4 -0
  118. package/dist/src/gateway/locale.js +10 -0
  119. package/dist/src/gateway/locale.js.map +1 -0
  120. package/dist/src/gateway/progress-watch-machine.d.ts +97 -0
  121. package/dist/src/gateway/progress-watch-machine.js +172 -0
  122. package/dist/src/gateway/progress-watch-machine.js.map +1 -0
  123. package/dist/src/gateway/providers.d.ts +287 -0
  124. package/dist/src/gateway/providers.js +2451 -0
  125. package/dist/src/gateway/providers.js.map +1 -0
  126. package/dist/src/gateway/server.d.ts +57 -0
  127. package/dist/src/gateway/server.js +264 -0
  128. package/dist/src/gateway/server.js.map +1 -0
  129. package/dist/src/gateway/service.d.ts +449 -0
  130. package/dist/src/gateway/service.js +4831 -0
  131. package/dist/src/gateway/service.js.map +1 -0
  132. package/dist/src/gateway/store.d.ts +340 -0
  133. package/dist/src/gateway/store.js +4047 -0
  134. package/dist/src/gateway/store.js.map +1 -0
  135. package/dist/src/gateway/types.d.ts +514 -0
  136. package/dist/src/gateway/types.js +414 -0
  137. package/dist/src/gateway/types.js.map +1 -0
  138. package/dist/src/mutex.d.ts +4 -0
  139. package/dist/src/mutex.js +23 -0
  140. package/dist/src/mutex.js.map +1 -0
  141. package/docs/DESIGN.md +134 -0
  142. package/docs/GATEWAY-ARCHITECTURE.md +858 -0
  143. package/package.json +80 -0
  144. package/skills/embassy-peer/SKILL.md +198 -0
  145. package/skills/embassy-peer/agents/openai.yaml +4 -0
@@ -0,0 +1,507 @@
1
+ export const dashboardCopyEn = {
2
+ "meta.title": "Embassy — local exchange register",
3
+ skip: "Skip to Embassy status",
4
+ "language.label": "Language",
5
+ "language.en": "English",
6
+ "language.zhCn": "简体中文",
7
+ "brand.eyebrow": "Local agent exchange",
8
+ "brand.title": "Embassy",
9
+ "brand.subtitle": "A point-in-time, metadata-only register of routes between Claude Code and Codex.",
10
+ "snapshot.asOf": "Snapshot {time}",
11
+ "snapshot.static": "This file does not update itself. Run embassy refresh-dashboard, then reload — or run embassy dashboard --live for a streaming view.",
12
+ "overall.ready": "Exchange ready",
13
+ "overall.setup": "Setup incomplete",
14
+ "overall.attention": "Needs attention",
15
+ "exchange.eyebrow": "Exchange board",
16
+ "exchange.title": "Two directions, two explicit boundaries",
17
+ "exchange.note": "Each consent edge names one Claude session and one Codex task. Native discovery remains machine-wide; permission does not.",
18
+ "inbound.paired.badge": "Paired inbound",
19
+ "inbound.paired.body": "Each registered Codex task accepts messages only across its explicit Claude consent edges.",
20
+ "inbound.open.badge": "Open inbound",
21
+ "inbound.open.body": "Any live Claude session under this OS user may initiate inbound work; explicit Codex sends still require an edge.",
22
+ "inbound.noPair.body": "No ready consent edge exists; paired-mode endpoints refuse unpaired senders.",
23
+ "exchange.claude.title": "Claude sessions",
24
+ "exchange.claude.note": "Consent-edge endpoints",
25
+ "exchange.codex.title": "Codex tasks",
26
+ "exchange.codex.note": "Consent-edge endpoints",
27
+ "exchange.pouch.title": "Local pouch",
28
+ "exchange.pouch.empty": "Queue clear",
29
+ "exchange.pouch.queued": "{count} queued",
30
+ "exchange.pouch.oldest": "Oldest wait {age}",
31
+ "exchange.count.claude": "{ready} selected · {selectable} selectable · {total} discovered",
32
+ "exchange.count.codex": "{ready} ready · {total} registered",
33
+ "status.ready": "Ready",
34
+ "status.busy": "Busy",
35
+ "status.waiting": "Waiting",
36
+ "status.missing": "Not configured",
37
+ "status.attention": "Unavailable",
38
+ "status.selected": "Selected",
39
+ "status.available": "Available",
40
+ "status.notSelectable": "Not selectable",
41
+ "status.enabled": "Enabled",
42
+ "status.disabled": "Disabled",
43
+ "next.label": "Next",
44
+ "next.none": "No action needed.",
45
+ "next.discoverClaude": "Start or keep a Claude Code session running, then run embassy refresh-dashboard.",
46
+ "next.selectClaude": "Run embassy select-claude --alias <alias> to choose a visible session explicitly.",
47
+ "next.pairRoutes": "Create an explicit edge with embassy pair --claude <alias> --codex <alias>.",
48
+ "next.restoreClaude": "Refresh discovery, then explicitly select the current Claude alias if it is not restored.",
49
+ "next.repairClaude": "No compatible, live, collision-free session is selectable. Resolve the issue shown in Sessions & routes, then refresh discovery.",
50
+ "next.registerCodex": "Inside the Codex task, run embassy register-codex --alias codex-<name>@<host>.",
51
+ "next.restoreCodex": "Re-run embassy register-codex --alias <alias> inside that exact Codex task.",
52
+ "attention.eyebrow": "Needs attention",
53
+ "attention.title": "Resolve before sending",
54
+ "attention.count": "{count} active",
55
+ "attention.countVisible": "{count} shown",
56
+ "attention.projectionOnly": "Additional alert metadata was omitted before dashboard projection. Review the bounded-display note and run embassy status.",
57
+ "attention.scope": "Scope",
58
+ "severity.info": "Info",
59
+ "severity.warning": "Warning",
60
+ "severity.error": "Error",
61
+ "guidance.reobserveClaude.title": "Claude selection needs observation",
62
+ "guidance.reobserveClaude.body": "The saved route does not currently have a matching live endpoint proof.",
63
+ "guidance.reobserveClaude.action": "Refresh discovery and explicitly select the current Claude alias.",
64
+ "guidance.reobserveCodex.title": "Codex registration needs observation",
65
+ "guidance.reobserveCodex.body": "The saved route does not currently have a matching live endpoint proof.",
66
+ "guidance.reobserveCodex.action": "Re-run register-codex inside that exact Codex task.",
67
+ "guidance.claudeNotObserved.title": "Selected Claude session is not visible",
68
+ "guidance.claudeNotObserved.body": "The selected session is absent from current local discovery.",
69
+ "guidance.claudeNotObserved.action": "Keep Claude running with crossSessionInbound enabled, refresh, then select its current alias.",
70
+ "guidance.codexStale.title": "Codex route is stale",
71
+ "guidance.codexStale.body": "The registered Codex task no longer has a ready App Server connection.",
72
+ "guidance.codexStale.action": "Re-run register-codex with the same alias inside that exact Codex task. Do not unregister first.",
73
+ "guidance.connectorOffline.title": "A provider connector is offline",
74
+ "guidance.connectorOffline.body": "Embassy cannot currently reach the local provider connector.",
75
+ "guidance.connectorOffline.action": "Run embassy status. Restart only when queued messages and active deliveries are both zero; restarting abandons memory-only message bodies.",
76
+ "guidance.routeStale.title": "A route is stale",
77
+ "guidance.routeStale.body": "The route no longer has current endpoint proof.",
78
+ "guidance.routeStale.action": "Refresh and restore the matching selection or registration.",
79
+ "guidance.queueStalled.title": "Queued delivery is stalled",
80
+ "guidance.queueStalled.body": "The oldest accepted message remains queued past half of its delivery deadline.",
81
+ "guidance.queueStalled.action": "Run embassy status. Do not resend accepted work; Embassy still tracks it until settlement or expiry.",
82
+ "guidance.unconfirmed.title": "Delivery could not be confirmed",
83
+ "guidance.unconfirmed.body": "The local transport write completed, but terminal native evidence was unavailable when the attempt settled.",
84
+ "guidance.unconfirmed.action": "Inspect the recipient before retrying; a retry could duplicate the message.",
85
+ "guidance.degraded.title": "The exchange is degraded",
86
+ "guidance.degraded.body": "Embassy retained a normalized compatibility or connector warning.",
87
+ "guidance.degraded.action": "Run embassy status. Restart only when queued messages and active deliveries are both zero; restarting abandons memory-only message bodies.",
88
+ "guidance.generic.title": "Embassy reported a normalized alert",
89
+ "guidance.generic.body": "This safe code has no automatic repair mapped in the dashboard.",
90
+ "guidance.generic.action": "Review embassy status. Never automatically retry an ambiguous delivery.",
91
+ "guidance.codexSuccessionBusy.title": "Codex task change needs a quiet boundary",
92
+ "guidance.codexSuccessionBusy.body": "Embassy kept the current Codex registration because accepted or active work had not fully drained.",
93
+ "guidance.codexSuccessionBusy.action": "Let current work reach a terminal state, run embassy status, then retry the same register-codex --alias <new> --succeeds <old> command.",
94
+ "guidance.codexSuccessionRecovery.title": "Codex task change requires manual recovery",
95
+ "guidance.codexSuccessionRecovery.body": "The task change did not reach a safe active generation. Embassy keeps Codex registration offline instead of guessing which task owns the route.",
96
+ "guidance.codexSuccessionRecovery.action": "Do not send, retry the task change, or assume either task is active. Run embassy status and preserve the current state for manual recovery.",
97
+ "guidance.progressWatch.title": "A tracked conversation is quiet",
98
+ "guidance.progressWatch.body": "Embassy is supervising this owner-ended conversation and has observed a quiet episode or reduced route-only evidence.",
99
+ "guidance.progressWatch.action": "Check the worker route and recent watch history. The owner can end supervision with DONE: or embassy untrack --conversation <token>.",
100
+ "transit.eyebrow": "In transit",
101
+ "transit.title": "Queue posture",
102
+ "transit.queued": "Queued messages",
103
+ "transit.active": "Active deliveries",
104
+ "transit.oldest": "Oldest queue age",
105
+ "transit.empty": "No queued messages at snapshot time.",
106
+ "transit.unavailable": "Timestamp unavailable",
107
+ "count.atLeast": "At least {count}",
108
+ "watches.eyebrow": "Progress supervision",
109
+ "watches.title": "Active progress watches",
110
+ "watches.note": "Owner-ended watches only; message bodies and full conversation tokens are omitted.",
111
+ "watches.empty": "No conversation is being supervised.",
112
+ "watches.column.conversation": "Conversation",
113
+ "watches.column.parties": "Owner → worker",
114
+ "watches.column.phase": "Phase",
115
+ "watches.column.quietFor": "Quiet for",
116
+ "watches.column.nextAction": "Next check",
117
+ "watches.column.nudges": "Nudges",
118
+ "watches.column.capability": "Evidence",
119
+ "watches.phase.quiet": "Quiet window",
120
+ "watches.phase.episode": "Quiet episode",
121
+ "watches.capability.conversation": "Conversation anchored",
122
+ "watches.capability.route": "Route-only",
123
+ "watches.workerComplete": "Worker reported completion; owner confirmation is still required.",
124
+ "watches.history.title": "Recent watch settlements",
125
+ "watches.event.opened": "Opened",
126
+ "watches.event.nudge": "Nudged",
127
+ "watches.event.workerReportedComplete": "Worker reported complete",
128
+ "watches.event.capabilityDegraded": "Route-only evidence",
129
+ "watches.event.done": "Owner ended",
130
+ "watches.event.unresponsive": "Unresponsive",
131
+ "watches.event.endpointRetired": "Endpoint retired",
132
+ "watches.event.disabled": "Tracking disabled",
133
+ "activity.eyebrow": "Activity ledger",
134
+ "activity.title": "Recent delivery evidence",
135
+ "activity.note": "Bodies and provider internals are never included.",
136
+ "activity.empty": "No delivery metadata has been recorded yet.",
137
+ "activity.column.updated": "Updated",
138
+ "activity.column.route": "Route",
139
+ "activity.column.id": "ID",
140
+ "activity.column.result": "Result",
141
+ "activity.column.elapsed": "Elapsed",
142
+ "activity.column.size": "Size",
143
+ "activity.column.history": "Evidence",
144
+ "activity.history.one": "1 stage",
145
+ "activity.history.many": "{count} stages",
146
+ "activity.meaning.delivered": "Reached its terminal delivered state. This does not mean the model read or acted on it.",
147
+ "activity.meaning.delivered.codexToClaude": "Claude returned a terminal released receipt: the message entered the recipient queue. This does not mean the model read or acted on it.",
148
+ "activity.meaning.delivered.claudeToCodex": "Codex App Server accepted the turn. This does not mean the model completed or acted on it.",
149
+ "activity.meaning.unconfirmed": "The transport write completed, but terminal native evidence was unavailable. Inspect the recipient before retrying.",
150
+ "activity.meaning.ambiguous": "The outcome is unknown after an uncertain write. Do not retry automatically.",
151
+ "activity.meaning.other": "This is the latest normalized delivery state.",
152
+ "activity.meaning.queued": "Accepted and waiting in the local queue. Progress, not success.",
153
+ "activity.meaning.dispatching": "Being handed to the receiving connector. Progress, not success.",
154
+ "activity.meaning.transportWritten": "Written to the receiver's transport; the final receipt is still pending. Progress, not success.",
155
+ "activity.meaning.held": "The write landed; the receiver is holding it behind its own approval gate.",
156
+ "activity.meaning.duplicate": "A duplicate of an already-accepted message. This copy was never accepted.",
157
+ "activity.meaning.rejected": "Refused before acceptance — for example an invalid deadline or a full queue. It never entered the queue.",
158
+ "activity.meaning.senderNotPaired": "The configured pairing policy refused this sender; no message body was accepted.",
159
+ "activity.meaning.failed": "Settled as failed. The safe code names the cause; never retry an ambiguous delivery automatically.",
160
+ "activity.meaning.expired": "The delivery deadline passed before any transport write was observed.",
161
+ "activity.meaning.cancelled": "Cancelled by an explicit operation before settlement.",
162
+ "activity.meaning.abandoned.controllerRestarted": "The broker stopped before settlement — by design; nothing transfers across restarts.",
163
+ "activity.meaning.abandoned.transientBody": "The in-memory message body became unavailable before dispatch.",
164
+ "activity.meaning.abandoned.routeTerminated": "Its route was unregistered before the delivery settled.",
165
+ "activity.meaning.abandoned.generic": "Settled as abandoned before completion; see the safe code.",
166
+ "direction.claudeToCodex": "Claude → Codex",
167
+ "direction.codexToClaude": "Codex → Claude",
168
+ "delivery.queued": "Queued",
169
+ "delivery.duplicate": "Duplicate",
170
+ "delivery.dispatching": "Dispatching",
171
+ "delivery.transportWritten": "Transport written",
172
+ "delivery.held": "Held",
173
+ "delivery.delivered": "Delivered",
174
+ "delivery.unconfirmed": "Unconfirmed",
175
+ "delivery.failed": "Failed",
176
+ "delivery.ambiguous": "Ambiguous",
177
+ "delivery.expired": "Expired",
178
+ "delivery.cancelled": "Cancelled",
179
+ "delivery.abandoned": "Abandoned",
180
+ "delivery.rejected": "Rejected",
181
+ "sessions.eyebrow": "Sessions & routes",
182
+ "sessions.title": "Accreditation register",
183
+ "sessions.note": "Public aliases only; native identifiers are omitted.",
184
+ "sessions.peers.title": "Discovered Claude sessions",
185
+ "sessions.peers.empty": "No Claude sessions are visible in this snapshot.",
186
+ "sessions.peers.caption": "Discovered Claude sessions and selection state",
187
+ "sessions.routes.title": "Message routes",
188
+ "sessions.routes.empty": "No routes are registered or selected.",
189
+ "sessions.routes.caption": "Registered and selected message routes",
190
+ "column.alias": "Alias",
191
+ "column.host": "Host",
192
+ "column.provider": "Provider",
193
+ "column.state": "State",
194
+ "column.compatibility": "Compatibility",
195
+ "column.selection": "Selection",
196
+ "column.validation": "Validation",
197
+ "status.validated": "Validated",
198
+ "status.validationRejected": "Rejected",
199
+ "column.queue": "Queue",
200
+ "column.observed": "Observed",
201
+ "column.issue": "Issue",
202
+ "diagnostics.title": "Compatibility & system details",
203
+ "diagnostics.note": "Pinned protocols, counters, and bounded-display notes",
204
+ "diagnostics.connectors": "Connectors",
205
+ "diagnostics.connectors.empty": "No connector metadata is available.",
206
+ "diagnostics.connectors.caption": "Local provider connector status",
207
+ "diagnostics.compatibilityChecks": "Compatibility checks",
208
+ "diagnostics.compatibilityChecks.empty": "No compatibility check has been recorded.",
209
+ "diagnostics.compatibilityChecks.caption": "Bounded provider schema attestations",
210
+ "diagnostics.version": "Version",
211
+ "diagnostics.tier": "Tier",
212
+ "diagnostics.checkedAt": "Checked",
213
+ "diagnostics.certification": "Live certification",
214
+ "diagnostics.certifiedAt": "Certified",
215
+ "diagnostics.failedProbe": "Failed probe",
216
+ "compatibilityTier.certified": "Certified",
217
+ "compatibilityTier.schema_attested": "Schema-attested",
218
+ "compatibilityTier.incompatible": "Incompatible",
219
+ "diagnostics.protocol": "Protocol",
220
+ "diagnostics.health": "Health",
221
+ "diagnostics.accounting": "Accounting snapshot",
222
+ "diagnostics.accepted": "Accepted",
223
+ "diagnostics.duplicates": "Duplicates",
224
+ "diagnostics.delivered": "Delivered",
225
+ "diagnostics.unconfirmed": "Unconfirmed",
226
+ "diagnostics.ambiguous": "Ambiguous",
227
+ "diagnostics.failed": "Failed",
228
+ "diagnostics.expired": "Expired",
229
+ "diagnostics.cancelled": "Cancelled",
230
+ "diagnostics.abandoned": "Abandoned",
231
+ "diagnostics.rejected": "Rejected",
232
+ "diagnostics.bytesAccepted": "Bytes accepted",
233
+ "diagnostics.queuedBytes": "Bytes queued",
234
+ "diagnostics.omissions": "Bounded display",
235
+ "diagnostics.omissions.none": "Nothing omitted.",
236
+ "diagnostics.omissions.connectors": "{count} connectors",
237
+ "diagnostics.omissions.peers": "{count} sessions",
238
+ "diagnostics.omissions.routes": "{count} routes",
239
+ "diagnostics.omissions.pairs": "{count} consent edges",
240
+ "diagnostics.omissions.progressWatches": "{count} progress watches",
241
+ "diagnostics.omissions.upstreamProgressWatchEvents": "{count} watch events before dashboard projection",
242
+ "diagnostics.omissions.progressWatchEvents": "{count} watch history rows",
243
+ "diagnostics.omissions.upstreamMessageEvents": "{count} delivery events before dashboard projection",
244
+ "diagnostics.omissions.messageGroups": "{count} delivery groups",
245
+ "diagnostics.omissions.messageEvents": "{count} evidence rows",
246
+ "diagnostics.omissions.upstreamAlerts": "{count} alerts before dashboard projection",
247
+ "diagnostics.omissions.attentionItems": "{count} attention items",
248
+ "diagnostics.omissions.upstreamActivityEvents": "{count} operator-action rows before dashboard projection",
249
+ "diagnostics.omissions.activityEvents": "{count} operator-action rows",
250
+ "provider.claude": "Claude",
251
+ "provider.codex": "Codex",
252
+ "health.offline": "Offline",
253
+ "health.connecting": "Connecting",
254
+ "health.healthy": "Healthy",
255
+ "health.degraded": "Degraded",
256
+ "health.incompatible": "Incompatible",
257
+ "health.meaning.healthy": "Connected and exchanging heartbeats.",
258
+ "health.meaning.connecting": "Establishing the local connection.",
259
+ "health.meaning.degraded": "Connected with retained warnings.",
260
+ "health.meaning.offline": "Not reachable on this machine.",
261
+ "health.meaning.incompatible": "Version handshake failed.",
262
+ "compatibility.unknown": "Unknown",
263
+ "compatibility.compatible": "Compatible",
264
+ "compatibility.incompatible": "Incompatible",
265
+ "compatibility.expired": "Expired",
266
+ "compatibility.meaning.compatible": "Verified against the pinned range.",
267
+ "compatibility.meaning.unknown": "Not yet verified.",
268
+ "compatibility.meaning.expired": "Verification lapsed; re-observe.",
269
+ "compatibility.meaning.incompatible": "Outside the supported range.",
270
+ "route.stale": "Stale",
271
+ "route.idle": "Idle",
272
+ "route.busy": "Busy",
273
+ "route.awaitingApproval": "Awaiting approval",
274
+ "route.offline": "Offline",
275
+ "route.incompatible": "Incompatible",
276
+ "route.disabled": "Disabled",
277
+ "route.meaning.idle": "Enabled, compatible, and ready to carry messages.",
278
+ "route.meaning.busy": "Carrying a turn right now; new messages queue.",
279
+ "route.meaning.awaitingApproval": "Waiting on the provider's native approval.",
280
+ "route.meaning.stale": "No current endpoint proof; refresh and restore it.",
281
+ "route.meaning.offline": "The route's connector is unreachable.",
282
+ "route.meaning.incompatible": "Protocol versions do not match.",
283
+ "route.meaning.disabled": "Administratively disabled; not a fault.",
284
+ "peer.idle": "Idle",
285
+ "peer.busy": "Busy",
286
+ "peer.awaitingApproval": "Awaiting approval",
287
+ "peer.offline": "Offline",
288
+ "peer.incompatible": "Incompatible",
289
+ "peer.meaning.idle": "Live and selectable.",
290
+ "peer.meaning.busy": "Live but mid-turn.",
291
+ "peer.meaning.awaitingApproval": "Waiting on native approval.",
292
+ "peer.meaning.offline": "Discovered earlier, not currently live — a candidate, not an error.",
293
+ "peer.meaning.incompatible": "Cannot be selected: incompatible protocol.",
294
+ "peer.reason.aliasCollision": "Alias collision: rename one Claude session, then refresh discovery.",
295
+ "peer.reason.sessionCollision": "Session identity collision: close the duplicate session record, then refresh discovery.",
296
+ "peer.reason.discoveryIncomplete": "Discovery was incomplete. Refresh after Claude Code finishes publishing its session inventory.",
297
+ "peer.reason.incompatible": "This session is not compatible with the pinned Embassy protocol.",
298
+ "peer.reason.offline": "This session is not currently live.",
299
+ "time.atSnapshot": "At snapshot",
300
+ "time.beforeSnapshot": "{age} before snapshot",
301
+ "time.afterSnapshot": "{age} after snapshot",
302
+ "time.unavailable": "—",
303
+ "time.ago": "{duration} ago",
304
+ "live.title": "Embassy — live dashboard",
305
+ "live.noscript": "This live view requires JavaScript. The static gateway-dashboard.html in the state directory remains the offline floor.",
306
+ "live.label": "Live companion",
307
+ "live.mastheadSubtitle": "Live metadata stream with bounded route-consent controls. serve remains socket-only.",
308
+ "live.readonlyFooter": "This view can pair, unpair, and refresh Claude discovery — nothing else.",
309
+ "live.action.authorityLabel": "Bounded operator authority",
310
+ "live.action.authorityBody": "This view can pair or unpair named endpoints and refresh Claude discovery. It cannot register tasks, send, reply, approve, interrupt, or change settings.",
311
+ "live.action.sectionTitle": "Route consent actions",
312
+ "live.action.scope": "Pair or unpair named Claude and Codex endpoints. Refresh discovery is available here. Every action requires confirmation.",
313
+ "live.action.select": "Select session",
314
+ "live.action.unselect": "Unselect session",
315
+ "live.action.pair": "Pair endpoints",
316
+ "live.action.unpair": "Unpair endpoints",
317
+ "live.action.refresh": "Refresh discovery",
318
+ "live.action.confirm": "Confirm",
319
+ "live.action.cancel": "Cancel",
320
+ "live.action.pending": "Working…",
321
+ "live.action.succeeded": "Completed · {code}",
322
+ "live.action.failed": "Not completed · {code}",
323
+ "live.action.requiresConnected": "Reconnect to current broker state before using this action.",
324
+ "live.connection.connecting": "Connecting…",
325
+ "live.connection.connected": "Stream connected",
326
+ "live.connection.unavailable": "Observer unavailable — retrying",
327
+ "live.connection.disconnected": "Connection ended — use Reconnect",
328
+ "live.connection.fatal": "Dashboard session unavailable",
329
+ "live.connection.paused": "Updates paused",
330
+ "live.connection.stopped": "Dashboard stopped",
331
+ "live.control.pause": "Pause",
332
+ "live.control.reconnect": "Reconnect",
333
+ "live.control.refresh": "Read now",
334
+ "live.filter.placeholder": "Filter aliases and activity",
335
+ "live.metric.queued": "Queued",
336
+ "live.metric.active": "Active",
337
+ "live.attention.empty": "No active attention items.",
338
+ "live.activity.empty": "No delivery metadata yet.",
339
+ "live.sessions.title": "Sessions",
340
+ "live.diagnostics.title": "Diagnostics",
341
+ "live.metric.revision": "Stream revision",
342
+ "live.stream.reset": "Source restarted; view resynchronized.",
343
+ "live.bootstrap.title": "Open Embassy live dashboard",
344
+ "live.bootstrap.open": "Open Embassy live dashboard",
345
+ "live.http.badRequest": "Bad request.",
346
+ "live.http.forbidden": "Forbidden.",
347
+ "live.http.notFound": "Not found.",
348
+ "live.http.methodNotAllowed": "Method not allowed.",
349
+ "live.http.bodyTooLarge": "Request body too large.",
350
+ "live.http.targetTooLarge": "Request target too large.",
351
+ "live.http.unsupportedMediaType": "Unsupported media type.",
352
+ "live.http.tooManyStreams": "Too many live streams.",
353
+ "live.http.headersTooLarge": "Request headers too large.",
354
+ "live.http.snapshotUnavailable": "Dashboard snapshot unavailable.",
355
+ "live.http.requestFailed": "Request failed.",
356
+ "live.http.starting": "Dashboard is starting.",
357
+ "app.tab.overview": "Overview",
358
+ "app.tab.deliveries": "Deliveries",
359
+ "app.tab.routes": "Routes & Sessions",
360
+ "app.tab.activity": "Activity",
361
+ "app.tab.diagnostics": "Diagnostics",
362
+ "app.search.label": "Search aliases, message suffixes, and safe codes",
363
+ "app.search.placeholder": "Search — Enter opens Deliveries",
364
+ "app.asOf": "as of {time}",
365
+ "app.stale": "No new frame for {age}. What you see may no longer be current.",
366
+ "app.missedFrames": "Stream frames were missed. The view was re-read from the current snapshot.",
367
+ "app.lowerBound": "At least {count}; the display is bounded.",
368
+ "app.copy": "Copy",
369
+ "app.copied": "Copied",
370
+ "app.copyFailed": "Copy failed — select the text instead",
371
+ "app.staleQuiet": "Connected; nothing has changed for {age}.",
372
+ "app.notLanded.title": "Not in this build",
373
+ "app.notLanded.body": "The live contract does not carry this yet, so there is no control here to press. Use the command below instead.",
374
+ "app.show": "Show",
375
+ "app.hide": "Hide",
376
+ "app.overview.statusStrip": "System status",
377
+ "app.overview.broker": "Broker",
378
+ "app.overview.claudeConn": "Claude connector",
379
+ "app.overview.codexConn": "Codex connector",
380
+ "app.overview.compat": "Compatibility",
381
+ "app.overview.connectorMissing": "No connector reported",
382
+ "app.overview.node.claude.title": "claude",
383
+ "app.overview.node.claude.sub": "sessions",
384
+ "app.overview.node.codex.title": "codex",
385
+ "app.overview.node.codex.sub": "tasks",
386
+ "app.overview.count.codex": "{ready} ready · {total} registered · {monitorOnly} monitor-only",
387
+ "app.overview.noPair.title": "No ready consent edge",
388
+ "app.overview.noPair.body": "Paired inbound accepts only senders connected to a registered Codex task by an explicit edge; Codex routes only along explicit edges.",
389
+ "app.overview.queueC2x": "Claude → Codex",
390
+ "app.overview.queueX2c": "Claude ← Codex",
391
+ "app.overview.depth": "depth",
392
+ "app.overview.oldest": "oldest",
393
+ "app.overview.pulse.title": "Activity pulse — terminal states, last hour",
394
+ "app.overview.pulse.caption": "Counted from retained delivery groups only; older evidence has been dropped.",
395
+ "app.overview.pulse.empty": "No delivery settled in the last hour.",
396
+ "app.overview.viewIn": "View in Deliveries",
397
+ "app.deliveries.title": "Deliveries",
398
+ "app.deliveries.caption": "Retained delivery groups, most recent first",
399
+ "app.deliveries.dir.label": "Direction",
400
+ "app.deliveries.dir.all": "All",
401
+ "app.deliveries.dir.codexToClaude": "Claude ← Codex",
402
+ "app.deliveries.view.label": "View",
403
+ "app.deliveries.view.byRoute": "By route pair",
404
+ "app.deliveries.view.flat": "Flat list",
405
+ "app.deliveries.state.all": "All",
406
+ "app.deliveries.search": "Search suffix, alias, or safe code",
407
+ "app.deliveries.noMatch": "No delivery matches this filter. Send one with",
408
+ "app.deliveries.pickRow": "Select a delivery to trace its lifecycle.",
409
+ "app.deliveries.lifecycle": "Lifecycle",
410
+ "app.deliveries.frames": "Diagnostic frames",
411
+ "app.deliveries.noFrames": "No safe code was recorded for this delivery.",
412
+ "app.deliveries.raw": "raw",
413
+ "app.deliveries.hideRaw": "hide raw",
414
+ "app.deliveries.bodyLabel": "Message body",
415
+ "app.deliveries.bodiesNote": "Bodies are never retained — this is metadata only.",
416
+ "app.deliveries.noConv": "The live contract carries no conversation token, so deliveries are grouped by route pair instead of by thread.",
417
+ "app.deliveries.eventsTruncated": "{count} earlier transitions were dropped by the retention budget.",
418
+ "app.deliveries.earliestRetained": "Earliest retained event",
419
+ "app.routes.topology": "Consent topology",
420
+ "app.routes.candidates": "Candidates",
421
+ "app.routes.claudeSessions": "Claude sessions",
422
+ "app.routes.codexRoutes": "Codex tasks",
423
+ "app.routes.pairs": "Consent edges",
424
+ "app.routes.pairDescription": "{claude} paired with {codex}",
425
+ "app.routes.pairSummary": "{ready} ready of {total} consent edges",
426
+ "app.routes.unpairedSummary": "{claude} ready Claude endpoints and {codex} ready Codex endpoints have no ready edge.",
427
+ "app.routes.pairCmd.consequence": "Create consent only between {claude} and {codex}. Existing edges stay unchanged.",
428
+ "app.routes.unpairCmd.consequence": "Remove consent only between {claude} and {codex}. Work on adjacent edges stays active.",
429
+ "app.routes.selectCmd.title": "Create a consent edge",
430
+ "app.routes.selectCmd.consequence": "Create one consent edge between this Claude session and a Codex task. Other edges stay unchanged.",
431
+ "app.routes.selectCmd.consequenceOpen": "Create one outbound destination edge. Open inbound still accepts any live Claude session under this OS user.",
432
+ "app.routes.unselectCmd.consequence": "Remove only this consent edge. Work on adjacent edges stays active.",
433
+ "app.routes.unselectCmd.consequenceOpen": "Remove only this outbound edge. Open inbound remains enabled for every live Claude session under this OS user.",
434
+ "app.routes.refreshCmd": "Re-read local discovery and rewrite the static dashboard file.",
435
+ "app.routes.monitorOnlyReason": "Monitor only — writes are disabled for this route by CODEX_WRITES_DISABLED.",
436
+ "app.routes.noPeers": "No Claude session was discovered in this snapshot.",
437
+ "app.routes.noCodex": "No Codex task is registered.",
438
+ "app.routes.successions": "Succession history",
439
+ "app.routes.successions.empty": "No task change is in progress.",
440
+ "app.routes.successions.note": "A task change moves the alias to a new Codex task. Nothing transfers: queued work, history, and approvals stay with the old task.",
441
+ "app.routes.detail.absent": "Not carried by the live contract.",
442
+ "app.routes.expandDetails": "Expand details for {alias}",
443
+ "app.routes.collapseDetails": "Collapse details for {alias}",
444
+ "app.routes.queueDepth": "Queue depth",
445
+ "app.routes.counters": "Route counters",
446
+ "app.routes.registered": "registered",
447
+ "app.routes.monitorOnly": "monitor-only",
448
+ "app.routes.registerHint": "Registration is not a button: it must run inside the Codex task to inherit its identity. Ask your agent to run:",
449
+ "app.routes.noPairInline": "no consent edge — pair a Claude session with a Codex task",
450
+ "app.omitted.pairs": "{count} additional consent edges are omitted.",
451
+ "app.activity.title": "Event stream — bounded, most recent first",
452
+ "app.activity.kinds.all": "All kinds",
453
+ "app.activity.kinds.delivery": "Delivery",
454
+ "app.activity.kinds.operation": "Operator action",
455
+ "app.activity.kinds.alert": "Alert",
456
+ "app.activity.operation.discoveryRefreshed": "Discovery refreshed",
457
+ "app.activity.operation.claudeSelected": "Claude session selected",
458
+ "app.activity.operation.claudeUnselected": "Claude session unselected",
459
+ "app.activity.operation.codexRegistered": "Codex task registered",
460
+ "app.activity.operation.codexSucceeded": "Codex registration succeeded",
461
+ "app.activity.operation.codexUnregistered": "Codex task unregistered",
462
+ "app.activity.operation.routesPaired": "Consent edge paired",
463
+ "app.activity.operation.routesUnpaired": "Consent edge unpaired",
464
+ "app.activity.operation.watchEnded": "Progress watch ended",
465
+ "app.activity.operation.accepted": "accepted",
466
+ "app.activity.operation.rejected": "rejected",
467
+ "app.activity.limited": "The operator-action ledger lasts for this broker process. Delivery and alert retention are bounded separately; bodies and full capability tokens are never shown.",
468
+ "app.activity.empty": "Nothing in this window. Events appear as the broker produces them; try",
469
+ "app.diag.versions": "Connector protocols",
470
+ "app.diag.versions.caption": "Local connectors with protocol and compatibility state",
471
+ "app.diag.col.provider": "Provider",
472
+ "app.diag.col.host": "Host",
473
+ "app.diag.col.protocol": "Protocol",
474
+ "app.diag.col.version": "Version",
475
+ "app.diag.col.compat": "Compatibility",
476
+ "app.diag.versions.rangeAbsent": "The supported protocol range is not carried by the live contract, so only the compatibility verdict is shown.",
477
+ "app.diag.attestation.title": "Attestation",
478
+ "app.diag.attestation.absent": "Attestation is not carried by the live contract. Read the local posture with the command below.",
479
+ "app.diag.lease.title": "Lease / instance",
480
+ "app.diag.lease.absent": "Lease state is not carried by the live contract. Read the local posture with the command below.",
481
+ "app.diag.limits": "Limits & pressure",
482
+ "app.diag.limits.hint": "The configured value is not exposed by the live contract. Set the environment variable, then start embassy serve again.",
483
+ "app.diag.deadline.title": "Delivery deadline",
484
+ "app.diag.deadline.body": "{count} deliveries have expired since this broker started.",
485
+ "app.diag.deadline.retained": "Retained evidence: {terminal} terminal attempts, {expired} expired; configured deadline {deadline}.",
486
+ "app.diag.deadline.bucket.under1m": "under 1 minute",
487
+ "app.diag.deadline.bucket.1to5m": "1–5 minutes",
488
+ "app.diag.deadline.bucket.5to15m": "5–15 minutes",
489
+ "app.diag.deadline.bucket.15to60m": "15–60 minutes",
490
+ "app.diag.deadline.bucket.over60m": "over 60 minutes",
491
+ "app.diag.queue.title": "Queue depth",
492
+ "app.diag.queue.body": "{count} messages are queued right now.",
493
+ "app.diag.bytes.title": "Message byte budget",
494
+ "app.diag.bytes.body": "{queued} queued right now; {accepted} accepted since this broker started.",
495
+ "app.diag.steering.title": "Steering",
496
+ "app.diag.steering.absent": "STEER markers identify classified Claude-to-Codex delivery evidence. The operator kill-switch setting is not exposed by this metadata contract.",
497
+ "app.diag.deliveryNotices.title": "Delivery notices",
498
+ "app.diag.deliveryNotices.note": "Use merged (default), verbose, or quiet; restart embassy serve after changing it.",
499
+ "app.diag.editable.title": "Settings",
500
+ "app.diag.editable.note": "Settings are read from environment variables when embassy serve starts. This page cannot change them, so none of them is shown as an editable control.",
501
+ "app.diag.counters": "Accounting counters",
502
+ "app.diag.counters.caption": "Lifetime accounting counters for this broker process",
503
+ "app.diag.omissions": "Bounded display",
504
+ "app.diag.omissions.caption": "Rows omitted before display, by category",
505
+ footer: "Read-only metadata snapshot. No scripts, mutation controls, external assets, telemetry, or network requests.",
506
+ };
507
+ //# sourceMappingURL=dashboard-copy.en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-copy.en.js","sourceRoot":"","sources":["../../../src/gateway/dashboard-copy.en.ts"],"names":[],"mappings":"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"}