instar 1.3.1344 → 1.3.1345
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/index.html +50 -0
- package/dashboard/pairing.js +179 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +28 -12
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
- package/dist/core/WriteDomainRegistry.js +7 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/scaffold/templates.js +2 -2
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +191 -28
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts +31 -0
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +68 -0
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/CredentialShareGate.d.ts +31 -10
- package/dist/threadline/CredentialShareGate.d.ts.map +1 -1
- package/dist/threadline/CredentialShareGate.js +29 -4
- package/dist/threadline/CredentialShareGate.js.map +1 -1
- package/dist/threadline/PairVerifyReceipt.d.ts +14 -2
- package/dist/threadline/PairVerifyReceipt.d.ts.map +1 -1
- package/dist/threadline/PairVerifyReceipt.js +49 -10
- package/dist/threadline/PairVerifyReceipt.js.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +13 -0
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/ThreadlineCrypto.d.ts +15 -0
- package/dist/threadline/ThreadlineCrypto.d.ts.map +1 -1
- package/dist/threadline/ThreadlineCrypto.js +105 -0
- package/dist/threadline/ThreadlineCrypto.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +17 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +25 -6
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/client/ThreadlineClient.d.ts +60 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
- package/dist/threadline/client/ThreadlineClient.js +179 -4
- package/dist/threadline/client/ThreadlineClient.js.map +1 -1
- package/dist/threadline/mcp-http-client.d.ts +11 -0
- package/dist/threadline/mcp-http-client.d.ts.map +1 -1
- package/dist/threadline/mcp-http-client.js +29 -0
- package/dist/threadline/mcp-http-client.js.map +1 -1
- package/dist/threadline/mcp-stdio-entry.js +5 -1
- package/dist/threadline/mcp-stdio-entry.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +2 -2
- package/upgrades/1.3.1345.md +38 -0
- package/upgrades/side-effects/threadline-verified-pairing-v2.md +141 -0
package/dashboard/index.html
CHANGED
|
@@ -1042,6 +1042,24 @@
|
|
|
1042
1042
|
.mnd-reason-cell { color: var(--text-dim); }
|
|
1043
1043
|
.mnd-audit-head { display: flex; gap: 12px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
|
|
1044
1044
|
.mnd-dim { font-size: 13px; color: var(--text-dim); }
|
|
1045
|
+
.pair-card { border: 1px solid var(--border); border-radius: 8px; padding: 12px; margin-top: 10px; }
|
|
1046
|
+
.pair-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
|
|
1047
|
+
.pair-state { font-size: 13px; color: var(--text-dim); }
|
|
1048
|
+
.pair-state-verification-failed { color: #f85149; }
|
|
1049
|
+
.pair-state-mutual-verified, .pair-state-identity-verified { color: #3fb950; }
|
|
1050
|
+
.pair-step { margin-top: 10px; }
|
|
1051
|
+
.pair-step-title { font-size: 13px; margin-bottom: 6px; }
|
|
1052
|
+
.pair-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 6px 0; }
|
|
1053
|
+
.pair-own-words { columns: 3; font-family: ui-monospace, monospace; font-size: 15px; margin: 6px 0; }
|
|
1054
|
+
.pair-words { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
|
|
1055
|
+
.pair-word { display: flex; align-items: center; gap: 4px; font-size: 12px; color: var(--text-dim); }
|
|
1056
|
+
.pair-word input { flex: 1; min-width: 0; padding: 6px; font-family: ui-monospace, monospace; font-size: 15px; }
|
|
1057
|
+
.pair-meta { font-size: 11px; color: var(--text-dim); margin-top: 8px; }
|
|
1058
|
+
@media (max-width: 640px) {
|
|
1059
|
+
.pair-own-words { columns: 2; }
|
|
1060
|
+
.pair-words { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
1061
|
+
.pair-row .mnd-pin, .pair-row .mnd-btn { flex: 1 1 100%; width: 100%; }
|
|
1062
|
+
}
|
|
1045
1063
|
/* Mobile-first (item 5): at phone width the 5-column audit table stacks into
|
|
1046
1064
|
labelled rows so the reason — the useful column — is never truncated. */
|
|
1047
1065
|
@media (max-width: 640px) {
|
|
@@ -4208,6 +4226,17 @@
|
|
|
4208
4226
|
<div id="tlBridgeError" style="color:var(--err, #c44);font-size:12px;display:none"></div>
|
|
4209
4227
|
</div>
|
|
4210
4228
|
|
|
4229
|
+
<!-- Verified pairing — the 12-word check (docs/specs/secure-a2a-verified-pairing.md §3.6) -->
|
|
4230
|
+
<div id="pairCard" class="mnd-card" style="border:1px solid var(--border);border-radius:8px;padding:16px">
|
|
4231
|
+
<div style="display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap">
|
|
4232
|
+
<strong>Verified pairing</strong>
|
|
4233
|
+
<button onclick="startPairingPanel()" class="mnd-btn mnd-btn-quiet" style="padding:6px 12px">Refresh</button>
|
|
4234
|
+
</div>
|
|
4235
|
+
<div class="mnd-hint">Confirm another agent is really who it says it is: compare 12 words with its operator before it can be sent credentials.</div>
|
|
4236
|
+
<div id="pairNotice" class="mnd-notice"></div>
|
|
4237
|
+
<div id="pairList"></div>
|
|
4238
|
+
</div>
|
|
4239
|
+
|
|
4211
4240
|
<!-- Conversation observability — threads list + message stream + search -->
|
|
4212
4241
|
<div style="border:1px solid var(--border);border-radius:8px;padding:0;display:flex;flex-direction:column;min-height:480px">
|
|
4213
4242
|
<!-- Toolbar -->
|
|
@@ -5990,6 +6019,7 @@
|
|
|
5990
6019
|
onActivate: () => {
|
|
5991
6020
|
if (typeof loadThreadlineBridgeConfig === 'function') loadThreadlineBridgeConfig();
|
|
5992
6021
|
if (typeof tlObsLoadThreads === 'function') tlObsLoadThreads();
|
|
6022
|
+
if (typeof startPairingPanel === 'function') startPairingPanel();
|
|
5993
6023
|
},
|
|
5994
6024
|
},
|
|
5995
6025
|
{
|
|
@@ -10413,6 +10443,26 @@
|
|
|
10413
10443
|
} catch { host.innerHTML = '<div style="opacity:.7">Throughput data is temporarily unavailable.</div>'; }
|
|
10414
10444
|
}
|
|
10415
10445
|
|
|
10446
|
+
// ── Verified pairing panel (Threadline tab; secure-a2a-verified-pairing §3.6) ──
|
|
10447
|
+
// Lazy-loaded like Mandates. The PIN typed here is sent once per action, never stored.
|
|
10448
|
+
let __pairController = null;
|
|
10449
|
+
let __pairModule = null;
|
|
10450
|
+
async function startPairingPanel() {
|
|
10451
|
+
if (!__pairModule) {
|
|
10452
|
+
try { __pairModule = await import('/dashboard/pairing.js'); }
|
|
10453
|
+
catch (e) { console.error('[pairing] module load failed', e); return; }
|
|
10454
|
+
}
|
|
10455
|
+
if (!__pairController) {
|
|
10456
|
+
const els = { list: document.getElementById('pairList'), notice: document.getElementById('pairNotice') };
|
|
10457
|
+
const fetchImpl = (url, opts = {}) => fetch(url, {
|
|
10458
|
+
...opts,
|
|
10459
|
+
headers: { 'Authorization': `Bearer ${token}`, ...(opts.headers || {}) },
|
|
10460
|
+
});
|
|
10461
|
+
__pairController = __pairModule.createController({ doc: document, els, fetchImpl });
|
|
10462
|
+
}
|
|
10463
|
+
__pairController.start();
|
|
10464
|
+
}
|
|
10465
|
+
|
|
10416
10466
|
// ── Mandates tab (coordination-mandate spec, decision 2A) ──
|
|
10417
10467
|
// Same lazy dynamic-import pattern as Process Health. The PIN typed in this
|
|
10418
10468
|
// tab is sent once per action and never stored anywhere.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pairing.js — the Verified Pairing panel on the dashboard's Threadline tab
|
|
3
|
+
* (docs/specs/secure-a2a-verified-pairing.md §3.6, Mobile-Complete operator action).
|
|
4
|
+
*
|
|
5
|
+
* The operator's surface for the 12-word check: list pairings; for a pending one,
|
|
6
|
+
* enter the dashboard PIN to see THIS side's 12 words, then type the 12 words the
|
|
7
|
+
* OTHER side shows and confirm (the server compares all 12 in order; any difference
|
|
8
|
+
* is a denial). A denied pairing can be cleared with the PIN. The PIN is typed at
|
|
9
|
+
* action time, sent once, and never stored (no localStorage, no module state).
|
|
10
|
+
*
|
|
11
|
+
* Same shape as mandates.js: pure renderers + createController({ doc, els, fetchImpl }).
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const REFRESH_MS = 30_000;
|
|
15
|
+
const WORD_COUNT = 12;
|
|
16
|
+
|
|
17
|
+
function esc(s) {
|
|
18
|
+
return String(s ?? '').replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const STATE_LABEL = {
|
|
22
|
+
'pending-verification': 'Waiting for you to compare the words',
|
|
23
|
+
'mutual-verified': 'Verified',
|
|
24
|
+
'identity-verified': 'Verified on another of my machines',
|
|
25
|
+
'verification-failed': 'Words did not match — blocked',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** One pairing card. Primary action first; the fingerprint is support metadata. */
|
|
29
|
+
export function renderPairing(p) {
|
|
30
|
+
const fp = esc(p.peerFp);
|
|
31
|
+
const name = esc(p.peerName || 'Unknown agent');
|
|
32
|
+
const state = p.state;
|
|
33
|
+
const label = esc(STATE_LABEL[state] || state || 'Unknown');
|
|
34
|
+
let actions = '';
|
|
35
|
+
if (state === 'pending-verification') {
|
|
36
|
+
const inputs = Array.from({ length: WORD_COUNT }, (_, i) =>
|
|
37
|
+
`<label class="pair-word"><span>${i + 1}</span><input type="text" autocomplete="off" autocapitalize="off" spellcheck="false" data-their-word="${fp}" data-idx="${i}" aria-label="Their word ${i + 1}" /></label>`).join('');
|
|
38
|
+
actions = `
|
|
39
|
+
<div class="pair-step">
|
|
40
|
+
<div class="pair-step-title">1. See the words on this side</div>
|
|
41
|
+
<div class="pair-row"><input type="password" class="mnd-pin" data-show-pin="${fp}" placeholder="Your PIN" autocomplete="off" />
|
|
42
|
+
<button class="mnd-btn mnd-btn-primary" data-show-words="${fp}">Show my words</button></div>
|
|
43
|
+
<ol class="pair-own-words" data-own-words="${fp}"></ol>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="pair-step">
|
|
46
|
+
<div class="pair-step-title">2. Type the 12 words the OTHER agent's operator sees</div>
|
|
47
|
+
<div class="pair-words">${inputs}</div>
|
|
48
|
+
<div class="pair-row"><input type="password" class="mnd-pin" data-confirm-pin="${fp}" placeholder="Your PIN" autocomplete="off" />
|
|
49
|
+
<button class="mnd-btn mnd-btn-primary" data-confirm="${fp}">Confirm they match</button></div>
|
|
50
|
+
<div class="mnd-hint">Compare over a call or in person, not through the agents. Any wrong word blocks this pairing.</div>
|
|
51
|
+
<button class="mnd-btn mnd-btn-quiet mnd-btn-danger" data-deny="${fp}">They don't match</button>
|
|
52
|
+
</div>`;
|
|
53
|
+
} else if (state === 'verification-failed') {
|
|
54
|
+
actions = `
|
|
55
|
+
<div class="pair-step">
|
|
56
|
+
<div class="mnd-hint">Clear this only once you know why the words were different.</div>
|
|
57
|
+
<div class="pair-row"><input type="password" class="mnd-pin" data-clear-pin="${fp}" placeholder="Your PIN" autocomplete="off" />
|
|
58
|
+
<button class="mnd-btn mnd-btn-quiet" data-clear="${fp}">Clear and start again</button></div>
|
|
59
|
+
</div>`;
|
|
60
|
+
}
|
|
61
|
+
return `<div class="pair-card" data-pairing="${fp}">
|
|
62
|
+
<div class="pair-head"><strong>${name}</strong> <span class="pair-state pair-state-${esc(state)}">${label}</span></div>
|
|
63
|
+
${actions}
|
|
64
|
+
<div class="pair-meta">Agent ${fp.slice(0, 12)}…</div>
|
|
65
|
+
</div>`;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function renderPairings(list) {
|
|
69
|
+
if (!Array.isArray(list) || list.length === 0) {
|
|
70
|
+
return '<div class="mnd-hint">No pairings yet. An agent starts one with <code>threadline_pair</code> start.</div>';
|
|
71
|
+
}
|
|
72
|
+
return list.map(renderPairing).join('');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Words typed into the 12 inputs for one pairing, in order. */
|
|
76
|
+
export function collectTypedWords(root, fp) {
|
|
77
|
+
const inputs = Array.from(root.querySelectorAll(`[data-their-word="${fp}"]`));
|
|
78
|
+
inputs.sort((a, b) => Number(a.dataset.idx) - Number(b.dataset.idx));
|
|
79
|
+
return inputs.map((i) => String(i.value || '').trim().toLowerCase());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function createController({ doc, els, fetchImpl }) {
|
|
83
|
+
let timer = null;
|
|
84
|
+
|
|
85
|
+
async function fetchJson(url, opts) {
|
|
86
|
+
const res = await fetchImpl(url, opts);
|
|
87
|
+
let body = null;
|
|
88
|
+
try { body = await res.json(); } catch { body = null; }
|
|
89
|
+
return { status: res.status, body };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function note(msg, kind) {
|
|
93
|
+
if (!els.notice) return;
|
|
94
|
+
els.notice.textContent = msg;
|
|
95
|
+
els.notice.className = kind === 'error' ? 'mnd-notice mnd-notice-err' : kind === 'success' ? 'mnd-notice mnd-notice-ok' : 'mnd-notice';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// A timed refresh must not wipe words or a PIN the operator is typing.
|
|
99
|
+
function operatorIsTyping() {
|
|
100
|
+
const inputs = els.list ? Array.from(els.list.querySelectorAll('input')) : [];
|
|
101
|
+
return inputs.some((i) => i.value);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async function load(opts = {}) {
|
|
105
|
+
if (opts.timed && operatorIsTyping()) return;
|
|
106
|
+
try {
|
|
107
|
+
const { status, body } = await fetchJson('/threadline/pairing');
|
|
108
|
+
if (status === 503) { els.list.innerHTML = '<div class="mnd-hint">Verified pairing is turned off on this agent.</div>'; return; }
|
|
109
|
+
if (status !== 200) { note(`Could not load pairings: ${body?.error ?? `HTTP ${status}`}`, 'error'); return; }
|
|
110
|
+
els.list.innerHTML = renderPairings(body?.pairings ?? []);
|
|
111
|
+
} catch (e) {
|
|
112
|
+
note(`Could not reach the agent: ${e?.message ?? e}`, 'error');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async function post(url, payload) {
|
|
117
|
+
return fetchJson(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) });
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async function onClick(ev) {
|
|
121
|
+
const t = ev.target;
|
|
122
|
+
if (!t || !t.dataset) return;
|
|
123
|
+
const root = els.list;
|
|
124
|
+
const take = (attr, fp) => { const el = root.querySelector(`[${attr}="${fp}"]`); const v = el ? el.value : ''; if (el) el.value = ''; return v; };
|
|
125
|
+
try {
|
|
126
|
+
if (t.dataset.showWords) {
|
|
127
|
+
const fp = t.dataset.showWords;
|
|
128
|
+
const pin = take('data-show-pin', fp);
|
|
129
|
+
if (!pin) { note('Enter your PIN to see the words.', 'error'); return; }
|
|
130
|
+
const res = await fetchImpl(`/threadline/pairing/${fp}`, { headers: { 'X-Dashboard-Pin': pin } });
|
|
131
|
+
const body = await res.json().catch(() => null);
|
|
132
|
+
const words = body?.pairing?.sasWords;
|
|
133
|
+
if (!Array.isArray(words)) { note(res.status === 200 ? 'The PIN was not accepted, or this pairing is no longer waiting.' : `Refused: ${body?.error ?? `HTTP ${res.status}`}`, 'error'); return; }
|
|
134
|
+
const ol = root.querySelector(`[data-own-words="${fp}"]`);
|
|
135
|
+
if (ol) ol.innerHTML = words.map((w) => `<li>${esc(w)}</li>`).join('');
|
|
136
|
+
note('These are the words on this side. Read them to the other operator and type theirs below.', 'info');
|
|
137
|
+
} else if (t.dataset.confirm) {
|
|
138
|
+
const fp = t.dataset.confirm;
|
|
139
|
+
const words = collectTypedWords(root, fp);
|
|
140
|
+
const pin = take('data-confirm-pin', fp);
|
|
141
|
+
if (words.some((w) => !w)) { note(`Type all ${WORD_COUNT} of the other side's words first.`, 'error'); return; }
|
|
142
|
+
if (!pin) { note('Enter your PIN to confirm.', 'error'); return; }
|
|
143
|
+
const { status, body } = await post(`/threadline/pairing/${fp}/verify`, { words, pin });
|
|
144
|
+
if (status !== 200) { note(`Not confirmed — the server refused: ${body?.error ?? `HTTP ${status}`}`, 'error'); return; }
|
|
145
|
+
note(body?.state === 'mutual-verified' ? 'Verified. Every word matched.' : 'The words did not match. This pairing is now blocked.', body?.state === 'mutual-verified' ? 'success' : 'error');
|
|
146
|
+
await load();
|
|
147
|
+
} else if (t.dataset.deny) {
|
|
148
|
+
const fp = t.dataset.deny;
|
|
149
|
+
const pin = take('data-confirm-pin', fp);
|
|
150
|
+
if (!pin) { note('Enter your PIN (in the field above) to record that the words did not match.', 'error'); return; }
|
|
151
|
+
const { status, body } = await post(`/threadline/pairing/${fp}/verify`, { match: false, pin });
|
|
152
|
+
if (status !== 200) { note(`Not recorded — the server refused: ${body?.error ?? `HTTP ${status}`}`, 'error'); return; }
|
|
153
|
+
note('Recorded: the words did not match. This pairing is blocked.', 'success');
|
|
154
|
+
await load();
|
|
155
|
+
} else if (t.dataset.clear) {
|
|
156
|
+
const fp = t.dataset.clear;
|
|
157
|
+
const pin = take('data-clear-pin', fp);
|
|
158
|
+
if (!pin) { note('Enter your PIN to clear this pairing.', 'error'); return; }
|
|
159
|
+
const { status, body } = await post(`/threadline/pairing/${fp}/start`, { clearFailed: true, pin });
|
|
160
|
+
if (status !== 200) { note(`Not cleared — the server refused: ${body?.error ?? `HTTP ${status}`}`, 'error'); return; }
|
|
161
|
+
note('Cleared. Compare the words again.', 'success');
|
|
162
|
+
await load();
|
|
163
|
+
}
|
|
164
|
+
} catch (e) {
|
|
165
|
+
note(`Could not reach the agent: ${e?.message ?? e}`, 'error');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return {
|
|
170
|
+
start() {
|
|
171
|
+
if (els.list && !els.list.__pairWired) { els.list.addEventListener('click', onClick); els.list.__pairWired = true; }
|
|
172
|
+
load();
|
|
173
|
+
if (!timer) timer = setInterval(() => load({ timed: true }), REFRESH_MS);
|
|
174
|
+
},
|
|
175
|
+
stop() { if (timer) { clearInterval(timer); timer = null; } },
|
|
176
|
+
load,
|
|
177
|
+
onClick,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -8171,19 +8171,35 @@ When I run on more than one machine and a dashboard polls several pool-scope tab
|
|
|
8171
8171
|
// (the threadline_pair MCP tool / the dashboard verify), and the load-bearing
|
|
8172
8172
|
// rule "never send a peer a secret until mutual-verified." Content-sniffed on a
|
|
8173
8173
|
// distinctive marker for idempotency.
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
8178
|
-
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8174
|
+
// Secure A2A Verified Pairing (spec docs/specs/secure-a2a-verified-pairing.md §5). The v2
|
|
8175
|
+
// section (12 words, a START step, typed comparison) REPLACES a v1 section in place rather
|
|
8176
|
+
// than appending a second block that contradicts it (Echo's review of #2173). Content-sniffed
|
|
8177
|
+
// on the start route, which only the v2 text names; idempotent.
|
|
8178
|
+
{
|
|
8179
|
+
const V1_HEADING = '### Verified Pairing — is my channel to a peer mutually verified before I share a secret?';
|
|
8180
|
+
const V2_MARKER = '/threadline/pairing/:peerFp/start';
|
|
8181
|
+
const verifiedPairingSection = `${V1_HEADING}
|
|
8182
|
+
|
|
8183
|
+
Before I send another agent a credential, that peer must be **mutually verified** out-of-band, not merely reachable. The relay proves an endpoint holds *a* key; it does NOT prove fingerprint \`63b1…\` belongs to the peer I actually trust (a relay could substitute keys). Verified pairing closes that with a **12-word check**: both sides derive the same 12 words from the two identity keys, a human compares them over a channel the relay cannot touch, and on a match the operator confirms. Ships DARK behind \`threadline.verifiedPairing.enabled\` (dev-agent gated; routes 503 when off); a credential to an unverified peer is REFUSED fail-closed.
|
|
8184
|
+
- **Is my channel to <peer> verified?** (Registry First): \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/threadline/pairing\` → \`{ peerFp, peerName, state, verifiedAt?, trustSource }\` (\`?scope=pool\` merges machines). \`GET /threadline/health\` carries \`mutualVerifiedCount\`.
|
|
8185
|
+
- **To pair:** START with \`threadline_pair\` \`action: "start"\` (or \`POST ${V2_MARKER}\` with my Bearer token); the peer starts from their side too. Each operator reads their own 12 words (\`GET /threadline/pairing/:peerFp\` with the dashboard PIN) and TYPES the other side's 12 words to confirm (\`POST /threadline/pairing/:peerFp/verify {words, pin}\`); any difference is a denial. The words are not secret; the comparison is the protection. My Bearer token cannot confirm.
|
|
8186
|
+
- **A denied match stays denied** until an operator clears it with the PIN (\`clearFailed: true\` on start). A rotated identity key resets a pairing to pending.
|
|
8187
|
+
- **The credential rule (load-bearing):** NEVER send a peer a secret until that peer is \`mutual-verified\`. The gate is enforced at the relay-send funnel and the credential-ingestion chokepoint, keyed on WHO the peer is, and it also refuses unless the encryption key is the one derived from the peer's verified identity key (\`encryption-key-not-bound\`).
|
|
8188
|
+
- **When to use** (PROACTIVE): the moment a credential needs to go agent-to-agent, FIRST check \`GET /threadline/pairing\`; if the peer is not verified, pair first — never paste the secret into an ordinary message. Spec: \`docs/specs/secure-a2a-verified-pairing.md\`.
|
|
8183
8189
|
`;
|
|
8184
|
-
content
|
|
8185
|
-
|
|
8186
|
-
|
|
8190
|
+
if (!content.includes(V2_MARKER)) {
|
|
8191
|
+
const at = content.indexOf(V1_HEADING);
|
|
8192
|
+
if (at >= 0) {
|
|
8193
|
+
const next = content.indexOf('\n### ', at + V1_HEADING.length);
|
|
8194
|
+
content = content.slice(0, at) + verifiedPairingSection + (next >= 0 ? content.slice(next + 1) : '');
|
|
8195
|
+
result.upgraded.push('CLAUDE.md: replaced the Verified Pairing section with v2 (12 words, start, typed comparison)');
|
|
8196
|
+
}
|
|
8197
|
+
else {
|
|
8198
|
+
content += '\n' + verifiedPairingSection;
|
|
8199
|
+
result.upgraded.push('CLAUDE.md: added Secure A2A Verified Pairing awareness section');
|
|
8200
|
+
}
|
|
8201
|
+
patched = true;
|
|
8202
|
+
}
|
|
8187
8203
|
}
|
|
8188
8204
|
// CMT-519 — Threadline hub topic + "open this"/bind guidance. Existing agents
|
|
8189
8205
|
// need to know threadline notices route parent-or-hub (never per-event topics)
|