instar 1.3.601 → 1.3.603
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +50 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +36 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/CoherenceJournal.d.ts +1 -1
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +12 -2
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/LiveTestSlackCaller.d.ts +72 -0
- package/dist/core/LiveTestSlackCaller.d.ts.map +1 -0
- package/dist/core/LiveTestSlackCaller.js +114 -0
- package/dist/core/LiveTestSlackCaller.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +25 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/ThreadlinePairingReplicatedStore.d.ts +285 -0
- package/dist/core/ThreadlinePairingReplicatedStore.d.ts.map +1 -0
- package/dist/core/ThreadlinePairingReplicatedStore.js +462 -0
- package/dist/core/ThreadlinePairingReplicatedStore.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +5 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +22 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +6 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +363 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts +201 -1
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +395 -2
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/CredentialShareGate.d.ts +66 -0
- package/dist/threadline/CredentialShareGate.d.ts.map +1 -0
- package/dist/threadline/CredentialShareGate.js +82 -0
- package/dist/threadline/CredentialShareGate.js.map +1 -0
- package/dist/threadline/InboundMessageGate.d.ts +46 -1
- package/dist/threadline/InboundMessageGate.d.ts.map +1 -1
- package/dist/threadline/InboundMessageGate.js +105 -0
- package/dist/threadline/InboundMessageGate.js.map +1 -1
- package/dist/threadline/PairVerifyReceipt.d.ts +69 -0
- package/dist/threadline/PairVerifyReceipt.d.ts.map +1 -0
- package/dist/threadline/PairVerifyReceipt.js +151 -0
- package/dist/threadline/PairVerifyReceipt.js.map +1 -0
- package/dist/threadline/PairingPendingStore.d.ts +55 -0
- package/dist/threadline/PairingPendingStore.d.ts.map +1 -0
- package/dist/threadline/PairingPendingStore.js +110 -0
- package/dist/threadline/PairingPendingStore.js.map +1 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts +11 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +5 -0
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/ThreadlineCrypto.d.ts +28 -0
- package/dist/threadline/ThreadlineCrypto.d.ts.map +1 -1
- package/dist/threadline/ThreadlineCrypto.js +100 -0
- package/dist/threadline/ThreadlineCrypto.js.map +1 -1
- package/dist/threadline/ThreadlineEndpoints.d.ts +8 -0
- package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
- package/dist/threadline/ThreadlineEndpoints.js +5 -0
- package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +3 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +107 -1
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/client/ThreadlineClient.d.ts +10 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
- package/dist/threadline/client/ThreadlineClient.js +13 -0
- package/dist/threadline/client/ThreadlineClient.js.map +1 -1
- package/package.json +2 -1
- package/scripts/check-e2e-pairing.cjs +4 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/data/state-coherence-registry.json +26 -0
- package/src/scaffold/templates.ts +6 -0
- package/src/threadline/data/sas-wordlist-en.json +1 -0
- package/upgrades/{1.3.601.md → 1.3.602.md} +49 -0
- package/upgrades/1.3.603.md +39 -0
- package/upgrades/side-effects/secure-a2a-verified-pairing.md +116 -0
- package/upgrades/side-effects/xoxc-slack-caller.md +99 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveTestSlackCaller — a credential adapter implementing the `SlackCaller` seam that
|
|
3
|
+
* `SlackLiveSender` consumes (see src/core/SlackLiveSender.ts), built for the
|
|
4
|
+
* live-test harness (docs/specs/live-user-channel-proof-standard.md §5.4).
|
|
5
|
+
*
|
|
6
|
+
* THE PROBLEM IT SOLVES: the only DISTINCT non-Echo Slack senders we have captured in
|
|
7
|
+
* the demo workspace are real test-USER identities authenticated the way a browser is —
|
|
8
|
+
* an `xoxc-…` web-client token PLUS the user's `d` session cookie. Those are NOT Bearer
|
|
9
|
+
* (xoxp/xoxb) tokens, so `SlackApiClient` (which only knows `Authorization: Bearer`)
|
|
10
|
+
* cannot post AS one of those users. Without this adapter the harness's Slack arm could
|
|
11
|
+
* never drive a REAL channel as a REAL member — defeating the whole point of the
|
|
12
|
+
* gold-standard live-test (drive real channels as a real user).
|
|
13
|
+
*
|
|
14
|
+
* THE MECHANISM (mirrors .instar/slack-live-test/post-as.mjs):
|
|
15
|
+
* - `chat.postMessage` (POST AS THE MEMBER) → Slack web-client auth: the `xoxc` token
|
|
16
|
+
* goes in the x-www-form-urlencoded BODY (`token=<xoxc>`), and the member's `d`
|
|
17
|
+
* session cookie goes in a `Cookie: d=<value>` header, against the workspace host
|
|
18
|
+
* `https://<workspaceHost>/api/chat.postMessage`. This is exactly how the real Slack
|
|
19
|
+
* web client authenticates a message send, so the bot sees a genuine distinct-principal
|
|
20
|
+
* message over the live adapter.
|
|
21
|
+
* - every OTHER method (e.g. `conversations.history`) → the normal bot-token path:
|
|
22
|
+
* `Authorization: Bearer <botToken>` against `https://slack.com/api/<method>`. Reading
|
|
23
|
+
* history does not need to be done AS the member, and the bot token is a clean Bearer.
|
|
24
|
+
*
|
|
25
|
+
* Pure transport over an injected `fetch` (defaults to the global) so it is fully
|
|
26
|
+
* unit-testable with a fake fetch. No silent fallbacks: a missing credential for the
|
|
27
|
+
* path a call needs throws loudly (the harness records a real driver-error FAIL), never
|
|
28
|
+
* a fabricated reply.
|
|
29
|
+
*/
|
|
30
|
+
export class LiveTestSlackCaller {
|
|
31
|
+
d;
|
|
32
|
+
constructor(deps) {
|
|
33
|
+
// Inline, loud validation (no silent fallbacks). Each credential is required for the
|
|
34
|
+
// path it serves; an empty one is a wiring error, not something to paper over.
|
|
35
|
+
if (!deps.workspaceHost) {
|
|
36
|
+
throw new Error('LiveTestSlackCaller: workspaceHost is required (the demo workspace host for web-client posts)');
|
|
37
|
+
}
|
|
38
|
+
if (!deps.xoxcToken) {
|
|
39
|
+
throw new Error('LiveTestSlackCaller: xoxcToken is required (the member web-client token for chat.postMessage)');
|
|
40
|
+
}
|
|
41
|
+
if (!deps.dCookie) {
|
|
42
|
+
throw new Error('LiveTestSlackCaller: dCookie is required (the member `d` session cookie for chat.postMessage)');
|
|
43
|
+
}
|
|
44
|
+
if (!deps.botToken) {
|
|
45
|
+
throw new Error('LiveTestSlackCaller: botToken is required (the Bearer token for history/other reads)');
|
|
46
|
+
}
|
|
47
|
+
this.d = deps;
|
|
48
|
+
}
|
|
49
|
+
log(m) {
|
|
50
|
+
this.d.logger?.(`[live-test-slack-caller] ${m}`);
|
|
51
|
+
}
|
|
52
|
+
fetch() {
|
|
53
|
+
return this.d.fetchImpl ?? ((url, init) => fetch(url, init));
|
|
54
|
+
}
|
|
55
|
+
async call(method, params = {}) {
|
|
56
|
+
if (method === 'chat.postMessage') {
|
|
57
|
+
return this.postAsMember(params);
|
|
58
|
+
}
|
|
59
|
+
return this.callAsBot(method, params);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* POST AS THE MEMBER — Slack web-client auth: xoxc token in the form body + `d` cookie
|
|
63
|
+
* in the Cookie header, against the workspace host.
|
|
64
|
+
*/
|
|
65
|
+
async postAsMember(params) {
|
|
66
|
+
const form = new URLSearchParams();
|
|
67
|
+
form.set('token', this.d.xoxcToken);
|
|
68
|
+
// Slack web-client send envelope (matches post-as.mjs).
|
|
69
|
+
form.set('_x_reason', 'webapp_message_send');
|
|
70
|
+
form.set('_x_mode', 'online');
|
|
71
|
+
for (const [k, v] of Object.entries(params)) {
|
|
72
|
+
if (v === undefined)
|
|
73
|
+
continue; // skip undefined params (never serialize "undefined")
|
|
74
|
+
form.set(k, typeof v === 'string' ? v : String(v));
|
|
75
|
+
}
|
|
76
|
+
const url = `https://${this.d.workspaceHost}/api/chat.postMessage`;
|
|
77
|
+
const res = await this.fetch()(url, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: {
|
|
80
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
81
|
+
Cookie: `d=${this.d.dCookie}`,
|
|
82
|
+
},
|
|
83
|
+
body: form.toString(),
|
|
84
|
+
});
|
|
85
|
+
const json = (await res.json());
|
|
86
|
+
this.log(`chat.postMessage AS member → ok=${json.ok} ts=${json.ts ?? ''}`);
|
|
87
|
+
return json;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Every other method goes over the clean Bearer bot-token path at slack.com — a JSON
|
|
91
|
+
* body, `Authorization: Bearer <botToken>`.
|
|
92
|
+
*/
|
|
93
|
+
async callAsBot(method, params) {
|
|
94
|
+
const body = {};
|
|
95
|
+
for (const [k, v] of Object.entries(params)) {
|
|
96
|
+
if (v === undefined)
|
|
97
|
+
continue; // skip undefined params
|
|
98
|
+
body[k] = v;
|
|
99
|
+
}
|
|
100
|
+
const url = `https://slack.com/api/${method}`;
|
|
101
|
+
const res = await this.fetch()(url, {
|
|
102
|
+
method: 'POST',
|
|
103
|
+
headers: {
|
|
104
|
+
Authorization: `Bearer ${this.d.botToken}`,
|
|
105
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
106
|
+
},
|
|
107
|
+
body: JSON.stringify(body),
|
|
108
|
+
});
|
|
109
|
+
const json = (await res.json());
|
|
110
|
+
this.log(`${method} (bot) → ok=${json.ok}`);
|
|
111
|
+
return json;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=LiveTestSlackCaller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveTestSlackCaller.js","sourceRoot":"","sources":["../../src/core/LiveTestSlackCaller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA0CH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAIjC;;;;;;GAMG;AACH,wBAAgB,4CAA4C,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAcjF;AAuBD,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAYnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wCAAwC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUjG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQ/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wCAAwC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAgBjG;AAaD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAsB5F;AAgBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAwBzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAoB5F;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAiC;gBAEvC,MAAM,EAAE,cAAc;IAIlC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAItC;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAIjC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,IAAI,eAAe;IAwE1B,OAAO,CAAC,gCAAgC;IAwCxC,OAAO,CAAC,8BAA8B;IAkFtC,OAAO,CAAC,6BAA6B;IA4DrC,OAAO,CAAC,yCAAyC;IA8DjD,OAAO,CAAC,0BAA0B;IAsFlC,OAAO,CAAC,wBAAwB;IAiFhC,OAAO,CAAC,sCAAsC;IAmE9C;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,uCAAuC;IAqC/C;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,0BAA0B;IAmFlC,OAAO,CAAC,0BAA0B;IAmDlC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAwH1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,kCAAkC;IA8C1C;;;;;;;;OAQG;IACH,OAAO,CAAC,kCAAkC;IA2B1C,OAAO,CAAC,uBAAuB;IAwE/B,OAAO,CAAC,4CAA4C;IA+CpD;;;;;;;OAOG;IACH,OAAO,CAAC,iCAAiC;IA0BzC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oCAAoC;IAmB5C;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yCAAyC;IAWjD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kCAAkC;IAW1C,OAAO,CAAC,yBAAyB;IA6FjC;;;;;;;;;;OAUG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;YA4BhC,uBAAuB;IAkGrC,OAAO,CAAC,0BAA0B;IAkGlC,OAAO,CAAC,0BAA0B;IAoElC,OAAO,CAAC,oBAAoB;IAuH5B,OAAO,CAAC,8BAA8B;IA2EtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;;;;;;OASG;IACH,OAAO,CAAC,wCAAwC;IAuBhD;;;;;;;;OAQG;IACH,OAAO,CAAC,2CAA2C;IAuBnD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,kCAAkC;IAuB1C;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mCAAmC;IAmK3C;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,yBAAyB;IA4HjC;6EACyE;IACzE,OAAO,CAAC,wBAAwB;IAShC;sDACkD;IAClD,OAAO,CAAC,wBAAwB;IAQhC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAgRpB;;;;;;;;OAQG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IA6CvE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkEzB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAoEhC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA8BnC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAyIhC;;;;;;OAMG;IACH,OAAO,CAAC,8BAA8B;IAwDtC,OAAO,CAAC,0BAA0B;IAiElC;;;OAGG;IACH,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4330,6 +4330,26 @@ When I run on more than one machine and a dashboard polls several pool-scope tab
|
|
|
4330
4330
|
patched = true;
|
|
4331
4331
|
result.upgraded.push('CLAUDE.md: added WS4.4(f) shared pool-cache section');
|
|
4332
4332
|
}
|
|
4333
|
+
// Secure A2A Verified Pairing (docs/specs/secure-a2a-verified-pairing.md §5,
|
|
4334
|
+
// Migration Parity P5): existing agents must learn the verified-pairing
|
|
4335
|
+
// capability — how to check whether a peer is mutually verified, how to pair
|
|
4336
|
+
// (the threadline_pair MCP tool / the dashboard verify), and the load-bearing
|
|
4337
|
+
// rule "never send a peer a secret until mutual-verified." Content-sniffed on a
|
|
4338
|
+
// distinctive marker for idempotency.
|
|
4339
|
+
if (!content.includes('Verified Pairing — is my channel to a peer mutually verified')) {
|
|
4340
|
+
const verifiedPairingSection = `
|
|
4341
|
+
### Verified Pairing — is my channel to a peer mutually verified before I share a secret?
|
|
4342
|
+
|
|
4343
|
+
Before I send another agent a credential, that peer must be **mutually verified** out-of-band — not merely handshaked. The handshake proves the endpoint holds *a* private key; it does NOT prove fingerprint \`63b1…\` belongs to the *peer you actually trust* (a malicious relay could substitute keys). Verified pairing closes that with a mutual **Short Authentication String (SAS)**: each side renders 6 words locally, a human compares them out-of-band, and on match the operator confirms — binding the fingerprint to a human-verified identity (\`mutual-verified\` trust source). Ships DARK behind \`threadline.verifiedPairing.enabled\` (dev-agent gated; routes 503 when off); a credential to an unverified peer is REFUSED fail-closed from day one.
|
|
4344
|
+
- **Is my channel to <peer> mutually verified?** (Registry First — read it, never guess): \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/threadline/pairing\` → pairings \`{ peerFp, peerName, state, verifiedAt?, trustSource }\` (\`?scope=pool\` merges across machines). \`GET /threadline/health\` carries \`mutualVerifiedCount\`. The SAS words show ONLY via \`GET /threadline/pairing/:peerFp\` to a dashboard-PIN-authed operator request while \`pending-verification\` — never on the list, never to a bearer-only request.
|
|
4345
|
+
- **To pair / verify:** drive the \`threadline_pair\` MCP tool (\`status\`/\`verify\`/\`deny\`) or the dashboard Threadline-tab pairing panel (renders the pending SAS + verify/deny buttons — the operator never curls a SAS). The verify route (\`POST /threadline/pairing/:peerFp/verify {match:true|false}\`) REQUIRES the dashboard PIN (FD7) — my Bearer token is structurally insufficient to confirm a pairing; the local human SAS comparison is the load-bearing gate.
|
|
4346
|
+
- **The credential rule (load-bearing):** NEVER send a peer a secret until that peer is \`mutual-verified\`. The credential-share gate is enforced at the relay-send funnel and the inbound credential-ingestion chokepoint, keyed on WHO the peer is (trust source) — never on message labels or content. A credential is also refused over the plaintext-only fallback (it must traverse the encrypted+signed path). This is the structural answer to "Dawn declined to send me a secret because she couldn't prove my identity."
|
|
4347
|
+
- **When to use** (PROACTIVE — this is the trigger): the moment I (or a peer) need to share a credential agent-to-agent, FIRST check \`GET /threadline/pairing\`; if the peer is not \`mutual-verified\`, drive \`threadline_pair\` / the dashboard verify to pair before sending — do not paste the secret into an ordinary message to route around the gate. Spec: \`docs/specs/secure-a2a-verified-pairing.md\`.
|
|
4348
|
+
`;
|
|
4349
|
+
content += '\n' + verifiedPairingSection;
|
|
4350
|
+
patched = true;
|
|
4351
|
+
result.upgraded.push('CLAUDE.md: added Secure A2A Verified Pairing awareness section');
|
|
4352
|
+
}
|
|
4333
4353
|
// CMT-519 — Threadline hub topic + "open this"/bind guidance. Existing agents
|
|
4334
4354
|
// need to know threadline notices route parent-or-hub (never per-event topics)
|
|
4335
4355
|
// and that "open this" / "tie this to X" in the hub means calling the bind
|
|
@@ -6659,6 +6679,11 @@ Create worktrees for collaborator repos with \`instar worktree create <branch>\`
|
|
|
6659
6679
|
// migrateClaudeMd's H3); each CLAUDE.md contains exactly one, so the other no-ops.
|
|
6660
6680
|
'**One Memory (replicated stores)',
|
|
6661
6681
|
'### One Memory (replicated stores)',
|
|
6682
|
+
// Secure A2A Verified Pairing — reaches Codex/Gemini agents so they also know
|
|
6683
|
+
// never to send a peer a credential until it shows mutual-verified. Two variants
|
|
6684
|
+
// cover the template's bold heading and migrateClaudeMd's H3.
|
|
6685
|
+
'**Verified Pairing — is my channel to a peer mutually verified',
|
|
6686
|
+
'### Verified Pairing — is my channel to a peer mutually verified',
|
|
6662
6687
|
];
|
|
6663
6688
|
for (const shadowName of ['AGENTS.md', 'GEMINI.md']) {
|
|
6664
6689
|
const shadowPath = path.join(this.config.projectDir, shadowName);
|