agent-coord-mcp 0.26.32 → 0.26.33
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/README.md +4 -2
- package/dist/capabilities.js +23 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/seat-identity.js +116 -0
- package/dist/seat-identity.js.map +1 -0
- package/package.json +1 -1
- package/scripts/coord-seat.mjs +90 -1
- package/scripts/coord-token.mjs +9 -62
- package/scripts/lib/seat-identity.mjs +14 -0
- package/src/capabilities.ts +24 -0
- package/src/seat-identity.ts +125 -0
package/README.md
CHANGED
|
@@ -418,7 +418,7 @@ AGENT_COORD_DIR=~/agent-coord \
|
|
|
418
418
|
agent-coord-mcp
|
|
419
419
|
```
|
|
420
420
|
|
|
421
|
-
Defaults to `127.0.0.1`. To bind to a LAN / overlay address (Tailscale, WireGuard, etc.) set `AGENT_COORD_BIND=10.x.y.z
|
|
421
|
+
Defaults to `127.0.0.1`. To bind to a LAN / overlay address (Tailscale, WireGuard, etc.) set `AGENT_COORD_BIND=127.0.0.1,10.x.y.z` (a list: it REPLACES the default, so keep loopback or the daemon's own host loses it); a non-loopback bind trips the fail-closed gate below — the server **refuses to start** (rather than warns) unless identity and transport are both secured. `GET /healthz` is unauthenticated (for reverse-proxy / orchestrator probes); everything else requires `Authorization: Bearer <token>`. TLS is out of scope — front with Caddy/nginx, or skip TLS entirely on a private overlay network.
|
|
422
422
|
|
|
423
423
|
The server can run as a long-lived daemon on one machine (the "host") while local agents on that host keep using stdio per-session; the two modes don't conflict — they're separate processes.
|
|
424
424
|
|
|
@@ -434,11 +434,13 @@ Mint the per-agent tokens with `coord-token` (below). Loopback binds are exempt
|
|
|
434
434
|
```bash
|
|
435
435
|
node scripts/coord-token.mjs add worker-2 # creates ~/agent-coord/tokens.json, prints the token
|
|
436
436
|
AGENT_COORD_HTTP_PORT=8765 \
|
|
437
|
-
AGENT_COORD_BIND=100.x.y.z \
|
|
437
|
+
AGENT_COORD_BIND=127.0.0.1,100.x.y.z \ # loopback FIRST, then this host's Tailscale IP (`tailscale ip -4`)
|
|
438
438
|
AGENT_COORD_INSECURE=1 \ # ack: WireGuard is the encryption layer
|
|
439
439
|
node dist/server.js
|
|
440
440
|
```
|
|
441
441
|
|
|
442
|
+
⟨q-0c5476ec⟩ **Keep `127.0.0.1` in the list.** The bind list replaces the default, it does not extend it, so a list holding only the overlay address leaves the daemon's OWN host unable to reach it on loopback — every local seat's config then points at an address that only answers from elsewhere. Loopback costs nothing here and is not a way around the gate: one non-loopback entry still requires `tokens.json` and the `AGENT_COORD_INSECURE=1` acknowledgement, which is what `bind-list.test.mjs` holds.
|
|
443
|
+
|
|
442
444
|
Remote nodes then reach it at `http://100.x.y.z:8765/mcp`. Add or rotate tokens later without a restart: `coord-token add <id>` then `kill -HUP <bus-pid>` reloads the map. `GET http://100.x.y.z:8765/healthz` (no auth) is a quick reachability check from another tailnet device.
|
|
443
445
|
|
|
444
446
|
### Joining from another machine
|
package/dist/capabilities.js
CHANGED
|
@@ -44,6 +44,7 @@ import { recordAuthorityFor } from "./roles.js";
|
|
|
44
44
|
// ⟨q-e5cb3538⟩ The renderer and the byte class live in hooks/, shared with both pushers.
|
|
45
45
|
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
46
46
|
import { injectLine } from "../hooks/tier.mjs";
|
|
47
|
+
import { identityProblem } from "./seat-identity.js";
|
|
47
48
|
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
48
49
|
import { findControlByte } from "../hooks/control-bytes.mjs";
|
|
49
50
|
// ⟨q-15d763dc⟩ The ready-box guard's profile, as this process read it from its own env at start.
|
|
@@ -697,6 +698,28 @@ const PROBES = [
|
|
|
697
698
|
};
|
|
698
699
|
},
|
|
699
700
|
},
|
|
701
|
+
{
|
|
702
|
+
// ⟨q-0c5476ec⟩ — a seat's identity is stated once, and the launcher refuses a config that states
|
|
703
|
+
// another seat. Probed through the function coord-seat itself calls, so a build whose launcher
|
|
704
|
+
// would start such a seat answers false here.
|
|
705
|
+
id: "seat-identity-stated-once",
|
|
706
|
+
since: "0.26.33",
|
|
707
|
+
run: () => {
|
|
708
|
+
const tokens = { "seat-a": "tk_probe_a", "seat-b": "tk_probe_b" };
|
|
709
|
+
const at = (token) => identityProblem({ agentId: "seat-a", configPath: "/p/.mcp.json", config: { token }, tokens, tokensPath: "/c/tokens.json" });
|
|
710
|
+
const foreign = at("tk_probe_b");
|
|
711
|
+
const rotated = at("tk_gone");
|
|
712
|
+
const agreeing = at("tk_probe_a");
|
|
713
|
+
const namesOther = !!foreign && /'seat-b'/.test(foreign.message) && /'seat-a'/.test(foreign.message);
|
|
714
|
+
const namesRotation = !!rotated && /rotated or revoked/.test(rotated.message);
|
|
715
|
+
const leaks = [foreign, rotated].some((p) => p && /tk_probe_b|tk_gone/.test(p.message));
|
|
716
|
+
const present = namesOther && namesRotation && agreeing === null && !leaks;
|
|
717
|
+
return {
|
|
718
|
+
present,
|
|
719
|
+
evidence: `another seat's bearer -> names both seats: ${namesOther} · unknown bearer -> named as rotated: ${namesRotation} · agreeing -> no problem: ${agreeing === null} · bearer in message: ${leaks} -> present=${present}`,
|
|
720
|
+
};
|
|
721
|
+
},
|
|
722
|
+
},
|
|
700
723
|
{
|
|
701
724
|
id: "record-authority",
|
|
702
725
|
since: "0.24.0",
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,yFAAyF;AACzF,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,6EAA6E;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,iGAAiG;AACjG,6EAA6E;AAC7E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7H,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AAavH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,KAA6B;IACzD,4EAA4E;IAC5E,iFAAiF;IACjF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAmE;IAC3G,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAqC;IAC3E,OAAO,QAAQ,CAAC,4CAA4C,CAAC,KAAK,KAAK,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACtJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAgE;IAC7G,OAAO,MAAM,CAAC,UAAU,KAAK,gBAAgB,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC;AAChH,CAAC;AAED;;;;GAIG;AACH,MAAM,MAAM,GAAY;IACtB;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,CAAC,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,CAAC;gBACpE,QAAQ,EAAE,oCAAoC,CAAC,CAAC,IAAI,mBAAmB,IAAI,GAAG;aAC/E,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAU,CAAC,CAAC,CAAC;YACzF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1E,CAAC;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB;gBAC1D,QAAQ,EAAE,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACrE,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,OAAO,GAAG,OAAO,IAAI,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAkB,CAAC,CAAC;YAC1F,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,uBAAuB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,CAAC,MAAM,aAAa;aACpI,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,mCAAmC;QACvC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,uEAAuE;YACvE,wEAAwE;YACxE,2DAA2D;YAC3D,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAW,CAAC;YAClJ,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,GAAI,IAAe,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,EAAW,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,GAAI,IAAe,EAAE,aAAa,EAAE,IAAI,EAAW,CAAC,CAAC;YAC5F,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,OAAO;gBAC5D,QAAQ,EAAE,qBAAqB,KAAK,CAAC,KAAK,wBAAwB,SAAS,CAAC,KAAK,GAAG;aACrF,CAAC;QACJ,CAAC;KACF;IACD;;;;;;;;;;;;;;OAcG;IACH;QACE,2EAA2E;QAC3E,0EAA0E;QAC1E,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC;YAC/E,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,mCAAmC,KAAK,CAAC,OAAO,CAAC,6BAA6B,KAAK,CAAC,cAAc,CAAC,gBAAgB,OAAO,EAAE;aACvI,CAAC;QACJ,CAAC;KACF;IACD;QACE,6EAA6E;QAC7E,yEAAyE;QACzE,8EAA8E;QAC9E,2DAA2D;QAC3D,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,CAAC,GAAG,cAAc,CAAC,wCAAwC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,8BAA8B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,eAAe,OAAO,EAAE;aAC/H,CAAC;QACJ,CAAC;KACF;IACD;QACE,uEAAuE;QACvE,0FAA0F;QAC1F,4EAA4E;QAC5E,4EAA4E;QAC5E,sEAAsE;QACtE,0EAA0E;QAC1E,qDAAqD;QACrD,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzG,MAAM,MAAM,GAAG,YAAY,CACzB,IAAI,CAAC,MAAM,CAAC,CAAC,wCAAwC,EAAE,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClG,CAAC;YACF,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACnD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO;gBACP,QAAQ,EACN,oCAAoC,IAAI,0CAA0C,KAAK,KAAK;oBAC5F,4CAA4C,QAAQ,eAAe,OAAO,EAAE;aAC/E,CAAC;QACJ,CAAC;KACF;IACD;QACE,0EAA0E;QAC1E,0EAA0E;QAC1E,oEAAoE;QACpE,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;YAC9E,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YACnF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YACzF,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG;gBACb,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK;gBACpD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK;gBAC7C,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK;aACpD,CAAC;YACF,MAAM,OAAO,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,sBAAsB,MAAM,CAAC,UAAU,mBAAmB,MAAM,CAAC,MAAM,mBAAmB,MAAM,CAAC,QAAQ,eAAe,OAAO,EAAE;aAC5I,CAAC;QACJ,CAAC;KACF;IACD;QACE,oFAAoF;QACpF,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,OAAO,GAAG,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YAC1D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,qCAAqC,OAAO,0CAA0C,MAAM,eAAe,OAAO,EAAE,EAAE,CAAC;QACrJ,CAAC;KACF;IACD;QACE,uFAAuF;QACvF,8FAA8F;QAC9F,6FAA6F;QAC7F,0FAA0F;QAC1F,6FAA6F;QAC7F,4FAA4F;QAC5F,2FAA2F;QAC3F,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,OAAO,GAAG,sBAAsB,OAAO,CAAC,GAAG,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAA8H,CAAC;YAC7J,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpI,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpI,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC9E,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gBAClE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBACxC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC7C,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/J,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC;gBAC5H,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,KAAK,CAAC,OAAO,0BAA0B,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,OAAO,uBAAuB,IAAI,WAAW,OAAO,SAAS,IAAI,aAAa,IAAI,CAAC,MAAM,uCAAuC,OAAO,eAAe,OAAO,EAAE,EAAE,CAAC;YACjS,CAAC;oBAAS,CAAC;gBACT,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;KACF;IACD;QACE,4FAA4F;QAC5F,4FAA4F;QAC5F,0FAA0F;QAC1F,+FAA+F;QAC/F,EAAE;QACF,yFAAyF;QACzF,8FAA8F;QAC9F,yFAAyF;QACzF,yFAAyF;QACzF,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,GAAG,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;gBAC1F,qFAAqF;gBACrF,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAgF,CAAC;gBAC/G,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,EAAE;oBAC3C,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;iBAChD,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,aAAa,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;gBAC1H,OAAO;oBACL,OAAO;oBACP,QAAQ,EAAE,4BAA4B,MAAM,CAAC,OAAO,gCAAgC,SAAS,CAAC,OAAO,4BAA4B,MAAM,CAAC,MAAM,YAAY,GAAG,yCAAyC,WAAW,CAAC,OAAO,YAAY,OAAO,eAAe,OAAO,EAAE;iBACrQ,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;KACF;IACD;QACE,mFAAmF;QACnF,8FAA8F;QAC9F,6FAA6F;QAC7F,4FAA4F;QAC5F,4FAA4F;QAC5F,wFAAwF;QACxF,EAAE;QACF,+FAA+F;QAC/F,sFAAsF;QACtF,2FAA2F;QAC3F,wFAAwF;QACxF,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5G,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,CAAwC,CAAC;YAEnH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,iCAAiC;YAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,iDAAiD;YAC1F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;YACjE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;YAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;YAEhE,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,IAAI,SAAS,IAAI,cAAc,IAAI,SAAS,CAAC;YAC9E,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,gCAAgC,QAAQ,gCAAgC,KAAK,0BAA0B,SAAS,sBAAsB,cAAc,gBAAgB,SAAS,eAAe,OAAO,EAAE;aAChN,CAAC;QACJ,CAAC;KACF;IACD;QACE,2FAA2F;QAC3F,iGAAiG;QACjG,2FAA2F;QAC3F,6EAA6E;QAC7E,EAAE;QACF,8FAA8F;QAC9F,8FAA8F;QAC9F,gGAAgG;QAChG,qDAAqD;QACrD,iGAAiG;QACjG,+FAA+F;QAC/F,wFAAwF;QACxF,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,6FAA6F;QAC7F,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAU,CAAC,CAAC,CAAC;YACtG,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,GAAG,CAAC,KAAoB,EAAE,IAAsC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5G,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAErC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7G,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5G,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC;YAC9G,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC;YAC5F,MAAM,cAAc,GAClB,SAAS,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;YACrJ,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;YAC7F,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;YAE/F,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,IAAI,cAAc,IAAI,WAAW,IAAI,WAAW,CAAC;YACjF,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,uBAAuB,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,OAAO,4BAA4B,KAAK,mCAAmC,cAAc,mCAAmC,WAAW,mBAAmB,WAAW,eAAe,OAAO,EAAE;aAC9P,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,oCAAoC;QACxC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,mFAAmF;YACnF,sFAAsF;YACtF,yFAAyF;YACzF,0FAA0F;YAC1F,qFAAqF;YACrF,uFAAuF;YACvF,yFAAyF;YACzF,wFAAwF;YACxF,yFAAyF;YACzF,EAAE;YACF,gFAAgF;YAChF,yFAAyF;YACzF,wFAAwF;YACxF,sFAAsF;YACtF,0BAA0B;YAC1B,MAAM,aAAa,GAAG,0BAA0B,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YACrH,MAAM,GAAG,GAAG,0BAA0B,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5G,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAU,CAAC;YAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAI,OAA6B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC;YAClC,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,6CAA6C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,iDAAiD,KAAK,iCAAiC,OAAO,eAAe,OAAO,EAAE;aACjR,CAAC;QACJ,CAAC;KACF;IACD;QACE,2FAA2F;QAC3F,+DAA+D;QAC/D,EAAE;QACF,6FAA6F;QAC7F,8FAA8F;QAC9F,uFAAuF;QACvF,0FAA0F;QAC1F,mFAAmF;QACnF,+FAA+F;QAC/F,gGAAgG;QAChG,0FAA0F;QAC1F,EAAE;QACF,2FAA2F;QAC3F,0EAA0E;QAC1E,EAAE;QACF,4FAA4F;QAC5F,sEAAsE;QACtE,EAAE,EAAE,yCAAyC;QAC7C,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,mFAAmF;YACnF,MAAM,aAAa,GAAG,kIAAkI,CAAC;YACzJ,6FAA6F;YAC7F,MAAM,YAAY,GAAG,+HAA+H,CAAC;YAErJ,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACtF,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1F,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAmD,EAAE,MAAM,EAAE,IAAI,KAAK,gBAAgB,CAAC;YACjH,qFAAqF;YACrF,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,KAAK,eAAe,CAAC;YAC9F,2FAA2F;YAC3F,2DAA2D;YAC3D,MAAM,mBAAmB,GACtB,OAAO,CAAC,IAAsE,EAAE,MAAM,KAAK,SAAS;gBACpG,OAAO,CAAC,IAAsE,EAAE,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;YAEhH,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC;YACtD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAC,KAAK,cAAc,CAAC;YAC1F,4FAA4F;YAC5F,MAAM,aAAa,GACjB,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,CAAC,KAAK,WAAW;gBACxE,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAC,KAAK,WAAW;gBACvE,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,WAAW,CAAC;YAElE,MAAM,OAAO,GAAG,QAAQ,IAAI,WAAW,IAAI,mBAAmB,IAAI,YAAY,IAAI,MAAM,IAAI,aAAa,CAAC;YAC1G,OAAO;gBACL,OAAO;gBACP,QAAQ,EACN,2CAA2C,QAAQ,4CAA4C,WAAW,KAAK;oBAC/G,yDAAyD,mBAAmB,KAAK;oBACjF,WAAW,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,mBAAmB,MAAM,iCAAiC,aAAa,eAAe,OAAO,EAAE;aAClK,CAAC;QACJ,CAAC;KACF;IACD;QACE,qFAAqF;QACrF,sFAAsF;QACtF,oFAAoF;QACpF,qFAAqF;QACrF,oFAAoF;QACpF,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAa,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxI,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAc,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnH,MAAM,KAAK,GAAG,OAAO,IAAI,cAAc,EAAE,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC,WAAW,KAAK,UAAU,CAAC;YAC5H,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC;YAC/E,MAAM,OAAO,GAAG,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,KAAK,EAAE,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC;YACxI,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,8BAA8B,OAAO,EAAE,GAAG,kBAAkB,IAAI,EAAE,GAAG,aAAa,IAAI,EAAE,QAAQ,6BAA6B,KAAK,EAAE,QAAQ,iCAAiC,KAAK,2BAA2B,cAAc,CAAC,IAAI,gBAAgB,OAAO,EAAE;aACpQ,CAAC;QACJ,CAAC;KACF;IACD;QACE,0FAA0F;QAC1F,0FAA0F;QAC1F,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;gBAClC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC7E,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC;gBACvM,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;aAChB,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC;YAChF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,QAAQ,CAAC,IAAI,4CAA4C,MAAM,6BAA6B,GAAG,CAAC,EAAE,eAAe,OAAO,EAAE,EAAE,CAAC;QAClL,CAAC;KACF;IACD;QACE,uFAAuF;QACvF,4FAA4F;QAC5F,4FAA4F;QAC5F,+FAA+F;QAC/F,+DAA+D;QAC/D,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,IAAI,GAAG,mCAAmC,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACnF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC;YAC3G,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,8CAA8C,MAAM,sCAAsC,OAAO,2CAA2C,OAAO,eAAe,OAAO,EAAE,EAAE,CAAC;QAC5M,CAAC;KACF;IACD;QACE,yFAAyF;QACzF,yFAAyF;QACzF,wEAAwE;QACxE,EAAE,EAAE,yCAAyC;QAC7C,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1G,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YAChD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;YAClD,MAAM,KAAK,GAAG,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,OAAO,GAAG,aAAa,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,0BAA0B,aAAa,kDAAkD,UAAU,+CAA+C,KAAK,eAAe,OAAO,EAAE,EAAE,CAAC;QAChN,CAAC;KACF;IACD;QACE,8FAA8F;QAC9F,0FAA0F;QAC1F,EAAE,EAAE,iCAAiC;QACrC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,GAAG,GAAG,0CAA0C,CAAC;YACvD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzJ,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,iEAAiE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YAC9H,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YACvF,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,4CAA4C,OAAO,iDAAiD,KAAK,eAAe,OAAO,EAAE,EAAE,CAAC;QAClK,CAAC;KACF;IACD;QACE,6FAA6F;QAC7F,0FAA0F;QAC1F,4FAA4F;QAC5F,4DAA4D;QAC5D,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzG,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;YACzJ,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC;YAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7H,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5I,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChH,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC;YACnG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,YAAY,IAAI,YAAY,6BAA6B,YAAY,gCAAgC,KAAK,EAAE,KAAK,IAAI,KAAK,eAAe,OAAO,EAAE,EAAE,CAAC;QAChM,CAAC;KACF;IACD;QACE,gGAAgG;QAChG,yFAAyF;QACzF,gGAAgG;QAChG,+FAA+F;QAC/F,wFAAwF;QACxF,EAAE,EAAE,sCAAsC;QAC1C,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YACrH,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjH,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YAC3F,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,mGAAmG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YAC/L,MAAM,OAAO,GACX,WAAW,CAAC,UAAU,KAAK,IAAI,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBACzE,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3H,WAAW,CAAC,UAAU,KAAK,KAAK,CAAC;YACnC,OAAO;gBACL,OAAO;gBACP,QAAQ,EACN,wCAAwC,WAAW,CAAC,UAAU,kBAAkB,WAAW,CAAC,aAAa,CAAC,MAAM,KAAK;oBACrH,2CAA2C,KAAK,CAAC,UAAU,wBAAwB,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;oBAChI,wCAAwC,WAAW,CAAC,UAAU,eAAe,OAAO,EAAE;aACzF,CAAC;QACJ,CAAC;KACF;IACD;QACE,6FAA6F;QAC7F,2FAA2F;QAC3F,0FAA0F;QAC1F,4FAA4F;QAC5F,8EAA8E;QAC9E,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,2EAA2E,CAAC;YAC3F,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,EAAE;gBAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAAE,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;oBAAE,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/H,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7J,CAAC,CAAC;YACF,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAqG,CAAC;YACpK,8GAA8G;YAC9G,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,UAAU;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,2BAA2B,OAAO,CAAC,CAAC,QAAQ,gBAAgB,OAAO,CAAC,CAAC,WAAW,uCAAuC,EAAE,CAAC;YAC1O,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,IAAI,GAAW,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1I,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;YACvI,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,KAAK,wBAAwB,OAAO,CAAC,KAAK,eAAe,OAAO,EAAE,EAAE,CAAC;QACrJ,CAAC;KACF;IACD;QACE,kGAAkG;QAClG,iGAAiG;QACjG,mGAAmG;QACnG,+FAA+F;QAC/F,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,IAAI,GAAG,QAAQ,CAAC;YACtB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAuB,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAuB,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAuB,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,CAAC;YAChF,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,4BAA4B,IAAI,IAAI,WAAW,mBAAmB,QAAQ,IAAI,WAAW,mCAAmC,WAAW,IAAI,WAAW,kCAAkC,OAAO,EAAE;aAC5M,CAAC;QACJ,CAAC;KACF;IACD;QACE,iGAAiG;QACjG,+FAA+F;QAC/F,8CAA8C;QAC9C,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;YAClE,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAC3B,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC9H,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrG,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,UAAU,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3E,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,8CAA8C,UAAU,0CAA0C,aAAa,8BAA8B,QAAQ,KAAK,IAAI,yBAAyB,KAAK,eAAe,OAAO,EAAE;aAC/N,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9C,QAAQ,EAAE,yBAAyB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACnE,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAiEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,UAAU,CAAC,MAAqB,EAAE,YAAoB;IAC7D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO;YACL,aAAa;YACb,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,KAAc;YACvB,OAAO,EACL,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,kCAAkC,IAAI;gBACrH,sEAAsE;SACzE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO;QACL,aAAa;QACb,OAAO,EAAE,YAAY;QACrB,OAAO;QACP,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,2DAA2D,aAAa,eAAe,YAAY,MAAM;gBACzG,wEAAwE;YAC1E,CAAC,CAAC,qBAAqB,aAAa,UAAU,YAAY,wCAAwC;gBAChG,KAAK,aAAa,yFAAyF;gBAC3G,8GAA8G;gBAC9G,6DAA6D;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAiD;IACjF,MAAM,MAAM,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,eAAe;YACf,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAiB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACxG,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,OAAO;QACL,QAAQ;QACR,UAAU,EAAE;YACV,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;YACtF,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC;QACD,MAAM;QACN,OAAO;QACP;;;;;;WAMG;QACH,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO;QAC5C,IAAI,EACF,6GAA6G;YAC7G,8GAA8G;YAC9G,4GAA4G;YAC5G,qHAAqH;YACrH,0FAA0F;KAC7F,CAAC;AACJ,CAAC;AAED,kFAAkF;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAW,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAEzC,2EAA2E;IAC3E,8EAA8E;IAC9E,kEAAkE;IAClE,MAAM,iBAAiB,GAA0C,EAAE,CAAC;IACpE,IAAI,CAAC;QACH,0EAA0E;QAC1E,6EAA6E;QAC7E,yEAAyE;QACzE,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,uBAAuB,EAAE,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACpE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,iBAAiB,CAAC,IAAI,CAAC;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE;iBACpF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,8DAA8D;IAChE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,IAAI;QACrB,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,gBAAgB,EAAE,IAAI,CAAC,MAAM;QAC7B,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IAChM,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,uBAAuB,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;IACzF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,EAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,OAAO;QACL,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;QACrJ,SAAS;QACT,KAAK;QACL,IAAI,EACF,wHAAwH;YACxH,6GAA6G;YAC7G,kHAAkH;YAClH,8HAA8H;KACjI,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,YAAY,EAA+D,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE,MAAM,EAAE,2FAA2F,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAClN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC;QACH,iGAAiG;QACjG,4FAA4F;QAC5F,sFAAsF;QACtF,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,EAAE,EAAE,CAAC;IAC7I,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,OAAO;YACL,GAAG,MAAM;YACT,cAAc,EAAE,0BAA2B,CAAW,CAAC,OAAO,EAAE;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// ⟨q-0c5476ec⟩ — A SEAT'S IDENTITY IS STATED ONCE, AND THE TWO HALVES CANNOT DISAGREE SILENTLY.
|
|
2
|
+
//
|
|
3
|
+
// A seat's identity was typed twice: as an agent id at launch, and as a bearer inside a config.
|
|
4
|
+
// Every HTTP identity failure so far is that duplication. Measured on the other machine: a seat
|
|
5
|
+
// launched WITHOUT `--strict-mcp-config` took the GLOBAL config's bearer and came back as whoever
|
|
6
|
+
// owned it — three times in two days on three seats, with no in-session recovery; and a config
|
|
7
|
+
// holding a token `tokens.json` had since rotated returned a bare 401, with nothing in the config
|
|
8
|
+
// saying it was stale.
|
|
9
|
+
//
|
|
10
|
+
// So the launcher derives BOTH halves from one statement (the agent id), and refuses before start
|
|
11
|
+
// when a config on disk disagrees, NAMING WHICH HALF disagreed. Refusing at launch is the point: a
|
|
12
|
+
// 401 later is the same fault read as a broken daemon.
|
|
13
|
+
//
|
|
14
|
+
// ⛔ NO SECRET IN ANY MESSAGE. Not the token, not a prefix, not a hash: a refusal a human pastes
|
|
15
|
+
// into a bus message must not carry the bearer. The messages name AGENTS and FILES, never bytes.
|
|
16
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
/** Must match store.ts ROOT/TOKENS_FILE resolution exactly, or we read a file the bus never wrote. */
|
|
20
|
+
export function coordRoot({ dir, env = process.env } = {}) {
|
|
21
|
+
return dir ?? env.AGENT_COORD_DIR ?? env.CLAUDE_COORD_DIR ?? path.join(homedir(), "agent-coord");
|
|
22
|
+
}
|
|
23
|
+
export const tokensFile = (opts) => path.join(coordRoot(opts), "tokens.json");
|
|
24
|
+
/** `{ "agent-id": "token" }`, or `{}` when absent. Throws on malformed, never on missing. */
|
|
25
|
+
export function loadTokens(file) {
|
|
26
|
+
if (!existsSync(file))
|
|
27
|
+
return {};
|
|
28
|
+
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
29
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
30
|
+
throw new Error(`${file} must be a JSON object of { "agent-id": "token" }`);
|
|
31
|
+
}
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Write a project-local `.mcp.json` (⟨q-8c23e5a3⟩ acceptance (a)) whose `agent-coord` entry embeds
|
|
36
|
+
* this seat's own token — never a shared default, so a project that gets its OWN config never
|
|
37
|
+
* depends on (or silently becomes) a global fallback. mode 600, same as tokens.json.
|
|
38
|
+
* `pane` is recorded under `_agentCoordPane`, a key no MCP client reads or writes: it exists so a
|
|
39
|
+
* re-run, or `coord-seat`, can recover the pane a config was minted for without re-asking.
|
|
40
|
+
*/
|
|
41
|
+
export function writeMcpConfig({ dir, agentId, server, token, pane }) {
|
|
42
|
+
mkdirSync(dir, { recursive: true });
|
|
43
|
+
const configPath = path.join(dir, ".mcp.json");
|
|
44
|
+
let existing = {};
|
|
45
|
+
if (existsSync(configPath)) {
|
|
46
|
+
try {
|
|
47
|
+
existing = JSON.parse(readFileSync(configPath, "utf8"));
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
throw new Error(`${configPath} exists and is not valid JSON (${e.message}) — refusing to overwrite blindly`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const config = {
|
|
54
|
+
...existing,
|
|
55
|
+
mcpServers: {
|
|
56
|
+
...(existing.mcpServers ?? {}),
|
|
57
|
+
"agent-coord": {
|
|
58
|
+
type: "http",
|
|
59
|
+
url: server,
|
|
60
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
61
|
+
...(pane ? { _agentCoordPane: pane } : {}),
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
|
|
66
|
+
chmodSync(configPath, 0o600);
|
|
67
|
+
return configPath;
|
|
68
|
+
}
|
|
69
|
+
export function readConfigIdentity(configPath) {
|
|
70
|
+
if (!existsSync(configPath))
|
|
71
|
+
return null;
|
|
72
|
+
let parsed;
|
|
73
|
+
try {
|
|
74
|
+
parsed = JSON.parse(readFileSync(configPath, "utf8"));
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
throw new Error(`${configPath} is not valid JSON (${e.message}) — refusing to read an identity out of it`);
|
|
78
|
+
}
|
|
79
|
+
const entry = parsed?.mcpServers?.["agent-coord"];
|
|
80
|
+
if (!entry)
|
|
81
|
+
return null;
|
|
82
|
+
const auth = String(entry.headers?.Authorization ?? "");
|
|
83
|
+
const m = /^Bearer\s+(.+)$/.exec(auth);
|
|
84
|
+
return { token: m ? m[1].trim() : null, url: entry.url ?? null, pane: entry._agentCoordPane ?? null };
|
|
85
|
+
}
|
|
86
|
+
export function identityProblem({ agentId, configPath, config, tokens, tokensPath }) {
|
|
87
|
+
const expected = tokens?.[agentId];
|
|
88
|
+
if (!config)
|
|
89
|
+
return null;
|
|
90
|
+
if (!config.token) {
|
|
91
|
+
return {
|
|
92
|
+
half: "config",
|
|
93
|
+
message: `${configPath} has an agent-coord entry with no bearer, so it states no identity, while the launch claims '${agentId}'. ` +
|
|
94
|
+
`Delete it and relaunch through coord-seat, which writes both halves from the one statement.`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (!expected) {
|
|
98
|
+
return {
|
|
99
|
+
half: "tokens",
|
|
100
|
+
message: `${tokensPath} holds no token for '${agentId}', so the launch identity cannot be honoured, while ${configPath} carries a bearer. ` +
|
|
101
|
+
`Mint one with \`coord-token add ${agentId}\` (it rotates if one exists) and relaunch, or launch the agent whose token that config holds.`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (config.token === expected)
|
|
105
|
+
return null;
|
|
106
|
+
const ownerOfConfigToken = Object.keys(tokens).find((a) => tokens[a] === config.token);
|
|
107
|
+
return {
|
|
108
|
+
half: "config",
|
|
109
|
+
message: ownerOfConfigToken
|
|
110
|
+
? `${configPath} carries the bearer of '${ownerOfConfigToken}', but the launch claims '${agentId}' — the two halves of this seat's identity disagree. ` +
|
|
111
|
+
`Launch '${ownerOfConfigToken}', or let coord-seat rewrite the config for '${agentId}'.`
|
|
112
|
+
: `${configPath} carries a bearer that ${tokensPath} does not know — it was rotated or revoked since the config was written, while the launch claims '${agentId}'. ` +
|
|
113
|
+
`Relaunch through coord-seat, which rewrites the config from the token '${agentId}' has now.`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=seat-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-identity.js","sourceRoot":"","sources":["../src/seat-identity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-coord-mcp",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.33",
|
|
4
4
|
"description": "File-backed MCP server for coordinating multiple AI coding agents (Claude Code, Cursor, Cline, etc.). Local stdio or networked over Streamable HTTP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/scripts/coord-seat.mjs
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
import { spawnSync } from "node:child_process";
|
|
26
26
|
import path from "node:path";
|
|
27
27
|
import { fileURLToPath } from "node:url";
|
|
28
|
+
import { identityProblem, loadTokens, readConfigIdentity, tokensFile, writeMcpConfig } from "./lib/seat-identity.mjs";
|
|
28
29
|
|
|
29
30
|
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
30
31
|
const COORD_TOKEN = path.join(HERE, "coord-token.mjs");
|
|
@@ -58,6 +59,86 @@ export function resolvePane(explicitPane, run) {
|
|
|
58
59
|
);
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
/**
|
|
63
|
+
* ⟨q-0c5476ec⟩ `coord-seat launch <agent-id> --dir <dir>` — THE SEAT'S IDENTITY, STATED ONCE.
|
|
64
|
+
*
|
|
65
|
+
* The agent id is the one statement. The bearer is derived from `tokens.json[agentId]`, the config
|
|
66
|
+
* is written from that same pair, and the child is ALWAYS started with `--strict-mcp-config`, which
|
|
67
|
+
* is the flag whose absence let three seats take the global config's bearer and come back as
|
|
68
|
+
* somebody else. A config already on disk that states a DIFFERENT identity is refused here, before
|
|
69
|
+
* the child starts, naming which half disagreed — never left to surface as a 401 mid-session.
|
|
70
|
+
*
|
|
71
|
+
* The token is READ, not rotated: rotating on every launch would invalidate the seat's other
|
|
72
|
+
* configs, which is the ⟨q-54adf191⟩ failure one step earlier. Minting happens only when the seat
|
|
73
|
+
* has no token at all, and only when `--server`/`--pane` say where the config should point.
|
|
74
|
+
*/
|
|
75
|
+
export function launch({
|
|
76
|
+
argv,
|
|
77
|
+
env = process.env,
|
|
78
|
+
spawn = (cmd, args, opts) => spawnSync(cmd, args, opts),
|
|
79
|
+
mintRun = (args) => spawnSync(process.execPath, [COORD_TOKEN, ...args], { encoding: "utf8" }),
|
|
80
|
+
fail = die,
|
|
81
|
+
} = {}) {
|
|
82
|
+
function opt(name, fallback) {
|
|
83
|
+
const i = argv.indexOf(name);
|
|
84
|
+
return i >= 0 ? argv[i + 1] : fallback;
|
|
85
|
+
}
|
|
86
|
+
const agentId = argv[0];
|
|
87
|
+
if (!agentId || agentId.startsWith("--")) return fail("usage: coord-seat launch <agent-id> --dir <project-dir> [--server <url>] [--pane <target>] [--cmd claude]");
|
|
88
|
+
const dir = opt("--dir");
|
|
89
|
+
if (!dir) return fail("--dir <project-dir> is required");
|
|
90
|
+
const cmd = opt("--cmd", "claude");
|
|
91
|
+
const tokensPath = tokensFile({ dir: opt("--tokens-dir"), env });
|
|
92
|
+
const configPath = path.join(dir, ".mcp.json");
|
|
93
|
+
|
|
94
|
+
let tokens, config;
|
|
95
|
+
try {
|
|
96
|
+
tokens = loadTokens(tokensPath);
|
|
97
|
+
config = readConfigIdentity(configPath);
|
|
98
|
+
} catch (e) {
|
|
99
|
+
return fail(e.message);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ⛔ REFUSE BEFORE THE CHILD STARTS. Both halves are named; neither message carries a bearer.
|
|
103
|
+
const problem = identityProblem({ agentId, configPath, config, tokens, tokensPath });
|
|
104
|
+
if (problem) {
|
|
105
|
+
return fail(
|
|
106
|
+
`refusing to launch '${agentId}': the ${problem.half} half of this seat's identity disagrees.\n ${problem.message}\n` +
|
|
107
|
+
` Nothing was started, and no file was changed.`,
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let token = tokens[agentId];
|
|
112
|
+
if (!token) {
|
|
113
|
+
// No token at all: mint one through coord-token, which also writes the config from the same pair.
|
|
114
|
+
const server = opt("--server");
|
|
115
|
+
const pane = opt("--pane");
|
|
116
|
+
if (!server || !pane) {
|
|
117
|
+
return fail(
|
|
118
|
+
`'${agentId}' has no token in ${tokensPath}, so there is nothing to launch with. ` +
|
|
119
|
+
`Pass --server <url> --pane <target> and coord-seat will mint one and write ${configPath} from it.`,
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
const minted = mintRun(["add", agentId, "--emit-mcp-config", dir, "--server", server, "--pane", pane]);
|
|
123
|
+
if (minted.status !== 0) return fail(`coord-token add failed:\n${minted.stderr ?? ""}`);
|
|
124
|
+
token = String(minted.stdout ?? "").trim();
|
|
125
|
+
if (!token) return fail("coord-token add printed no token");
|
|
126
|
+
} else if (!config) {
|
|
127
|
+
// The seat has a token but no config here: write one from the same statement rather than
|
|
128
|
+
// letting the child inherit a global entry.
|
|
129
|
+
const server = opt("--server", config?.url);
|
|
130
|
+
const pane = opt("--pane");
|
|
131
|
+
if (!server) return fail(`no config at ${configPath} and no --server <url> given, so there is nothing to point '${agentId}' at`);
|
|
132
|
+
writeMcpConfig({ dir, agentId, server, token, pane });
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// ⛔ ALWAYS --strict-mcp-config: without it the child reads the global config too, and the global
|
|
136
|
+
// entry answers as whoever owns its bearer. That is the measured failure this command exists for.
|
|
137
|
+
const args = ["--strict-mcp-config", "--mcp-config", configPath];
|
|
138
|
+
const r = spawn(cmd, args, { cwd: dir, stdio: "inherit", env });
|
|
139
|
+
return { agentId, dir, configPath, cmd, args, status: r?.status ?? null };
|
|
140
|
+
}
|
|
141
|
+
|
|
61
142
|
export function main(run = (args) => spawnSync("herdr", args, { encoding: "utf8" }), argv = process.argv.slice(2)) {
|
|
62
143
|
function opt(name, fallback) {
|
|
63
144
|
const i = argv.indexOf(name);
|
|
@@ -93,4 +174,12 @@ export function main(run = (args) => spawnSync("herdr", args, { encoding: "utf8"
|
|
|
93
174
|
return { pane, dir, agentId };
|
|
94
175
|
}
|
|
95
176
|
|
|
96
|
-
if (import.meta.url === `file://${process.argv[1]}`)
|
|
177
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
178
|
+
const argv = process.argv.slice(2);
|
|
179
|
+
if (argv[0] === "launch") {
|
|
180
|
+
const r = launch({ argv: argv.slice(1) });
|
|
181
|
+
process.exit(r?.status ?? 0);
|
|
182
|
+
} else {
|
|
183
|
+
main();
|
|
184
|
+
}
|
|
185
|
+
}
|
package/scripts/coord-token.mjs
CHANGED
|
@@ -32,15 +32,12 @@
|
|
|
32
32
|
// in what the OPERATOR (or the agent's own first tool call) is handed, not in `process.env`.
|
|
33
33
|
|
|
34
34
|
import { randomBytes } from "node:crypto";
|
|
35
|
-
import {
|
|
36
|
-
readFileSync,
|
|
37
|
-
writeFileSync,
|
|
38
|
-
existsSync,
|
|
39
|
-
chmodSync,
|
|
40
|
-
mkdirSync,
|
|
41
|
-
} from "node:fs";
|
|
42
|
-
import { homedir } from "node:os";
|
|
35
|
+
import { writeFileSync, chmodSync, mkdirSync } from "node:fs";
|
|
43
36
|
import path from "node:path";
|
|
37
|
+
// ⟨q-0c5476ec⟩ the store resolution and the config writer are SHARED with coord-seat, so the
|
|
38
|
+
// launcher cannot read a different tokens.json than the one this mints into.
|
|
39
|
+
import { coordRoot, loadTokens, tokensFile, writeMcpConfig } from "./lib/seat-identity.mjs";
|
|
40
|
+
export { writeMcpConfig };
|
|
44
41
|
|
|
45
42
|
const argv = process.argv.slice(2);
|
|
46
43
|
function opt(name) {
|
|
@@ -52,29 +49,17 @@ function die(msg) {
|
|
|
52
49
|
process.exit(1);
|
|
53
50
|
}
|
|
54
51
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const ROOT =
|
|
58
|
-
opt("--dir") ??
|
|
59
|
-
process.env.AGENT_COORD_DIR ??
|
|
60
|
-
process.env.CLAUDE_COORD_DIR ??
|
|
61
|
-
path.join(homedir(), "agent-coord");
|
|
62
|
-
const TOKENS_FILE = path.join(ROOT, "tokens.json");
|
|
52
|
+
const ROOT = coordRoot({ dir: opt("--dir") });
|
|
53
|
+
const TOKENS_FILE = tokensFile({ dir: opt("--dir") });
|
|
63
54
|
|
|
64
55
|
const AGENT_ID_RE = /^[a-zA-Z0-9._-]{1,64}$/;
|
|
65
56
|
|
|
66
57
|
function load() {
|
|
67
|
-
if (!existsSync(TOKENS_FILE)) return {};
|
|
68
|
-
let parsed;
|
|
69
58
|
try {
|
|
70
|
-
|
|
59
|
+
return loadTokens(TOKENS_FILE);
|
|
71
60
|
} catch (e) {
|
|
72
|
-
die(`${TOKENS_FILE} is not valid JSON: ${e.message}`);
|
|
61
|
+
die(e.message.startsWith(TOKENS_FILE) ? e.message : `${TOKENS_FILE} is not valid JSON: ${e.message}`);
|
|
73
62
|
}
|
|
74
|
-
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
75
|
-
die(`${TOKENS_FILE} must be a JSON object of { "agent-id": "token" }`);
|
|
76
|
-
}
|
|
77
|
-
return parsed;
|
|
78
63
|
}
|
|
79
64
|
|
|
80
65
|
function save(map) {
|
|
@@ -85,44 +70,6 @@ function save(map) {
|
|
|
85
70
|
chmodSync(TOKENS_FILE, 0o600); // enforce even when the file pre-existed looser
|
|
86
71
|
}
|
|
87
72
|
|
|
88
|
-
/**
|
|
89
|
-
* Write a project-local `.mcp.json` (⟨q-8c23e5a3⟩ acceptance (a)) whose `agent-coord`
|
|
90
|
-
* entry embeds this seat's own token in the `Authorization` header — never a shared
|
|
91
|
-
* default, so a project that gets its OWN config never depends on (or silently becomes)
|
|
92
|
-
* a global fallback. mode 600, same as tokens.json: a bearer token is a secret regardless
|
|
93
|
-
* of which file holds it. `pane` is recorded under `_agentCoordPane`, a key no MCP client
|
|
94
|
-
* reads or writes — it exists so a re-run of this script, or `coord-seat`, can recover the
|
|
95
|
-
* pane a config was minted for without re-asking the operator, and so a human reading the
|
|
96
|
-
* file sees the fact `attach_agent` will need, instead of it living only in scrollback.
|
|
97
|
-
*/
|
|
98
|
-
export function writeMcpConfig({ dir, agentId, server, token, pane }) {
|
|
99
|
-
mkdirSync(dir, { recursive: true });
|
|
100
|
-
const configPath = path.join(dir, ".mcp.json");
|
|
101
|
-
let existing = {};
|
|
102
|
-
if (existsSync(configPath)) {
|
|
103
|
-
try {
|
|
104
|
-
existing = JSON.parse(readFileSync(configPath, "utf8"));
|
|
105
|
-
} catch (e) {
|
|
106
|
-
die(`${configPath} exists and is not valid JSON (${e.message}) — refusing to overwrite blindly`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
const config = {
|
|
110
|
-
...existing,
|
|
111
|
-
mcpServers: {
|
|
112
|
-
...(existing.mcpServers ?? {}),
|
|
113
|
-
"agent-coord": {
|
|
114
|
-
type: "http",
|
|
115
|
-
url: server,
|
|
116
|
-
headers: { Authorization: `Bearer ${token}` },
|
|
117
|
-
...(pane ? { _agentCoordPane: pane } : {}),
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
|
|
122
|
-
chmodSync(configPath, 0o600);
|
|
123
|
-
return configPath;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
73
|
const positional = argv.filter((a) => !a.startsWith("--"));
|
|
127
74
|
const cmd = positional[0];
|
|
128
75
|
const id = positional[1];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// ⟨q-0c5476ec⟩ — the launcher's view of the identity module, which LIVES IN src/ and ships in dist/.
|
|
2
|
+
//
|
|
3
|
+
// It was here first, and `capabilities.ts` probes it: a probe in dist importing out of scripts/ breaks
|
|
4
|
+
// any install that carries dist without scripts. Measured — the REAL SERVERS test stages dist+hooks
|
|
5
|
+
// only, and every server spawned from that copy died at import. So the module moved to src/ and this
|
|
6
|
+
// file is the thin re-export the scripts keep using.
|
|
7
|
+
export {
|
|
8
|
+
coordRoot,
|
|
9
|
+
tokensFile,
|
|
10
|
+
loadTokens,
|
|
11
|
+
writeMcpConfig,
|
|
12
|
+
readConfigIdentity,
|
|
13
|
+
identityProblem,
|
|
14
|
+
} from "../../dist/seat-identity.js";
|
package/src/capabilities.ts
CHANGED
|
@@ -44,6 +44,7 @@ import { recordAuthorityFor } from "./roles.js";
|
|
|
44
44
|
// ⟨q-e5cb3538⟩ The renderer and the byte class live in hooks/, shared with both pushers.
|
|
45
45
|
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
46
46
|
import { injectLine } from "../hooks/tier.mjs";
|
|
47
|
+
import { identityProblem } from "./seat-identity.js";
|
|
47
48
|
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
48
49
|
import { findControlByte } from "../hooks/control-bytes.mjs";
|
|
49
50
|
// ⟨q-15d763dc⟩ The ready-box guard's profile, as this process read it from its own env at start.
|
|
@@ -734,6 +735,29 @@ const PROBES: Probe[] = [
|
|
|
734
735
|
};
|
|
735
736
|
},
|
|
736
737
|
},
|
|
738
|
+
{
|
|
739
|
+
// ⟨q-0c5476ec⟩ — a seat's identity is stated once, and the launcher refuses a config that states
|
|
740
|
+
// another seat. Probed through the function coord-seat itself calls, so a build whose launcher
|
|
741
|
+
// would start such a seat answers false here.
|
|
742
|
+
id: "seat-identity-stated-once",
|
|
743
|
+
since: "0.26.33",
|
|
744
|
+
run: () => {
|
|
745
|
+
const tokens = { "seat-a": "tk_probe_a", "seat-b": "tk_probe_b" };
|
|
746
|
+
const at = (token: string) =>
|
|
747
|
+
identityProblem({ agentId: "seat-a", configPath: "/p/.mcp.json", config: { token }, tokens, tokensPath: "/c/tokens.json" });
|
|
748
|
+
const foreign = at("tk_probe_b");
|
|
749
|
+
const rotated = at("tk_gone");
|
|
750
|
+
const agreeing = at("tk_probe_a");
|
|
751
|
+
const namesOther = !!foreign && /'seat-b'/.test(foreign.message) && /'seat-a'/.test(foreign.message);
|
|
752
|
+
const namesRotation = !!rotated && /rotated or revoked/.test(rotated.message);
|
|
753
|
+
const leaks = [foreign, rotated].some((p) => p && /tk_probe_b|tk_gone/.test(p.message));
|
|
754
|
+
const present = namesOther && namesRotation && agreeing === null && !leaks;
|
|
755
|
+
return {
|
|
756
|
+
present,
|
|
757
|
+
evidence: `another seat's bearer -> names both seats: ${namesOther} · unknown bearer -> named as rotated: ${namesRotation} · agreeing -> no problem: ${agreeing === null} · bearer in message: ${leaks} -> present=${present}`,
|
|
758
|
+
};
|
|
759
|
+
},
|
|
760
|
+
},
|
|
737
761
|
{
|
|
738
762
|
id: "record-authority",
|
|
739
763
|
since: "0.24.0",
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// ⟨q-0c5476ec⟩ — A SEAT'S IDENTITY IS STATED ONCE, AND THE TWO HALVES CANNOT DISAGREE SILENTLY.
|
|
2
|
+
//
|
|
3
|
+
// A seat's identity was typed twice: as an agent id at launch, and as a bearer inside a config.
|
|
4
|
+
// Every HTTP identity failure so far is that duplication. Measured on the other machine: a seat
|
|
5
|
+
// launched WITHOUT `--strict-mcp-config` took the GLOBAL config's bearer and came back as whoever
|
|
6
|
+
// owned it — three times in two days on three seats, with no in-session recovery; and a config
|
|
7
|
+
// holding a token `tokens.json` had since rotated returned a bare 401, with nothing in the config
|
|
8
|
+
// saying it was stale.
|
|
9
|
+
//
|
|
10
|
+
// So the launcher derives BOTH halves from one statement (the agent id), and refuses before start
|
|
11
|
+
// when a config on disk disagrees, NAMING WHICH HALF disagreed. Refusing at launch is the point: a
|
|
12
|
+
// 401 later is the same fault read as a broken daemon.
|
|
13
|
+
//
|
|
14
|
+
// ⛔ NO SECRET IN ANY MESSAGE. Not the token, not a prefix, not a hash: a refusal a human pastes
|
|
15
|
+
// into a bus message must not carry the bearer. The messages name AGENTS and FILES, never bytes.
|
|
16
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
|
|
20
|
+
/** Must match store.ts ROOT/TOKENS_FILE resolution exactly, or we read a file the bus never wrote. */
|
|
21
|
+
export function coordRoot({ dir, env = process.env }: { dir?: string; env?: NodeJS.ProcessEnv } = {}): string {
|
|
22
|
+
return dir ?? env.AGENT_COORD_DIR ?? env.CLAUDE_COORD_DIR ?? path.join(homedir(), "agent-coord");
|
|
23
|
+
}
|
|
24
|
+
export const tokensFile = (opts?: { dir?: string; env?: NodeJS.ProcessEnv }) => path.join(coordRoot(opts), "tokens.json");
|
|
25
|
+
|
|
26
|
+
/** `{ "agent-id": "token" }`, or `{}` when absent. Throws on malformed, never on missing. */
|
|
27
|
+
export function loadTokens(file: string): Record<string, string> {
|
|
28
|
+
if (!existsSync(file)) return {};
|
|
29
|
+
const parsed: unknown = JSON.parse(readFileSync(file, "utf8"));
|
|
30
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
31
|
+
throw new Error(`${file} must be a JSON object of { "agent-id": "token" }`);
|
|
32
|
+
}
|
|
33
|
+
return parsed as Record<string, string>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Write a project-local `.mcp.json` (⟨q-8c23e5a3⟩ acceptance (a)) whose `agent-coord` entry embeds
|
|
38
|
+
* this seat's own token — never a shared default, so a project that gets its OWN config never
|
|
39
|
+
* depends on (or silently becomes) a global fallback. mode 600, same as tokens.json.
|
|
40
|
+
* `pane` is recorded under `_agentCoordPane`, a key no MCP client reads or writes: it exists so a
|
|
41
|
+
* re-run, or `coord-seat`, can recover the pane a config was minted for without re-asking.
|
|
42
|
+
*/
|
|
43
|
+
export function writeMcpConfig({ dir, agentId, server, token, pane }: { dir: string; agentId: string; server: string; token: string; pane?: string | null }): string {
|
|
44
|
+
mkdirSync(dir, { recursive: true });
|
|
45
|
+
const configPath = path.join(dir, ".mcp.json");
|
|
46
|
+
let existing: Record<string, any> = {};
|
|
47
|
+
if (existsSync(configPath)) {
|
|
48
|
+
try {
|
|
49
|
+
existing = JSON.parse(readFileSync(configPath, "utf8"));
|
|
50
|
+
} catch (e) {
|
|
51
|
+
throw new Error(`${configPath} exists and is not valid JSON (${(e as Error).message}) — refusing to overwrite blindly`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const config: Record<string, any> = {
|
|
55
|
+
...existing,
|
|
56
|
+
mcpServers: {
|
|
57
|
+
...(existing.mcpServers ?? {}),
|
|
58
|
+
"agent-coord": {
|
|
59
|
+
type: "http",
|
|
60
|
+
url: server,
|
|
61
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
62
|
+
...(pane ? { _agentCoordPane: pane } : {}),
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
|
|
67
|
+
chmodSync(configPath, 0o600);
|
|
68
|
+
return configPath;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** The agent-coord entry a config states, or null when there is no config / no such entry. */
|
|
72
|
+
export type ConfigIdentity = { token: string | null; url: string | null; pane: string | null };
|
|
73
|
+
export function readConfigIdentity(configPath: string): ConfigIdentity | null {
|
|
74
|
+
if (!existsSync(configPath)) return null;
|
|
75
|
+
let parsed: any;
|
|
76
|
+
try {
|
|
77
|
+
parsed = JSON.parse(readFileSync(configPath, "utf8"));
|
|
78
|
+
} catch (e) {
|
|
79
|
+
throw new Error(`${configPath} is not valid JSON (${(e as Error).message}) — refusing to read an identity out of it`);
|
|
80
|
+
}
|
|
81
|
+
const entry = parsed?.mcpServers?.["agent-coord"];
|
|
82
|
+
if (!entry) return null;
|
|
83
|
+
const auth = String(entry.headers?.Authorization ?? "");
|
|
84
|
+
const m = /^Bearer\s+(.+)$/.exec(auth);
|
|
85
|
+
return { token: m ? m[1].trim() : null, url: entry.url ?? null, pane: entry._agentCoordPane ?? null };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Does the config on disk state the same seat the launch claims?
|
|
90
|
+
*
|
|
91
|
+
* Returns null when they agree (or when there is no config to disagree — the launcher writes one
|
|
92
|
+
* from the single statement). Otherwise `{ half, message }`, where `half` names the side that is
|
|
93
|
+
* wrong relative to `tokens.json`, which is the bus's own map and therefore the authority.
|
|
94
|
+
*/
|
|
95
|
+
export type IdentityProblem = { half: "config" | "tokens"; message: string };
|
|
96
|
+
export function identityProblem({ agentId, configPath, config, tokens, tokensPath }: { agentId: string; configPath: string; config: { token?: string | null } | null; tokens: Record<string, string>; tokensPath: string }): IdentityProblem | null {
|
|
97
|
+
const expected = tokens?.[agentId];
|
|
98
|
+
if (!config) return null;
|
|
99
|
+
if (!config.token) {
|
|
100
|
+
return {
|
|
101
|
+
half: "config",
|
|
102
|
+
message:
|
|
103
|
+
`${configPath} has an agent-coord entry with no bearer, so it states no identity, while the launch claims '${agentId}'. ` +
|
|
104
|
+
`Delete it and relaunch through coord-seat, which writes both halves from the one statement.`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (!expected) {
|
|
108
|
+
return {
|
|
109
|
+
half: "tokens",
|
|
110
|
+
message:
|
|
111
|
+
`${tokensPath} holds no token for '${agentId}', so the launch identity cannot be honoured, while ${configPath} carries a bearer. ` +
|
|
112
|
+
`Mint one with \`coord-token add ${agentId}\` (it rotates if one exists) and relaunch, or launch the agent whose token that config holds.`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (config.token === expected) return null;
|
|
116
|
+
const ownerOfConfigToken = Object.keys(tokens).find((a) => tokens[a] === config.token);
|
|
117
|
+
return {
|
|
118
|
+
half: "config",
|
|
119
|
+
message: ownerOfConfigToken
|
|
120
|
+
? `${configPath} carries the bearer of '${ownerOfConfigToken}', but the launch claims '${agentId}' — the two halves of this seat's identity disagree. ` +
|
|
121
|
+
`Launch '${ownerOfConfigToken}', or let coord-seat rewrite the config for '${agentId}'.`
|
|
122
|
+
: `${configPath} carries a bearer that ${tokensPath} does not know — it was rotated or revoked since the config was written, while the launch claims '${agentId}'. ` +
|
|
123
|
+
`Relaunch through coord-seat, which rewrites the config from the token '${agentId}' has now.`,
|
|
124
|
+
};
|
|
125
|
+
}
|