ftown-bridge 0.19.49 → 0.19.51

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.
@@ -24,7 +24,7 @@
24
24
  * exist.
25
25
  */
26
26
  /** Contract revision — bump on any material change (re-gauntlet required). */
27
- export declare const SOLO_CONTRACT_REVISION = 5;
27
+ export declare const SOLO_CONTRACT_REVISION = 6;
28
28
  /** Default public LAN port (--port overrides). Children NEVER use fixed
29
29
  * ports: hub and panel bind 127.0.0.1:0 (OS-assigned ephemeral), eliminating
30
30
  * child port collisions entirely. */
@@ -36,13 +36,13 @@ export declare const HUB_JWT_TTL_SECONDS: number;
36
36
  /** Fixed solo subject. Solo mode is single-user by definition. */
37
37
  export declare const SOLO_USER_ID = "solo";
38
38
  /**
39
- * Audience claim REQUIRED in every hub JWT and configured as token_audience
39
+ * Audience claim REQUIRED in every hub JWT and configured as client.token.audience
40
40
  * in the hub config. Minting without aud, or configuring a different value,
41
41
  * makes every WS handshake fail with an audience mismatch.
42
42
  */
43
43
  export declare const HUB_JWT_AUDIENCE = "ftown:centrifugo";
44
44
  /** Centrifugo release to download (pinned; checksums embedded below). */
45
- export declare const CENTRIFUGO_VERSION = "v5.4.9";
45
+ export declare const CENTRIFUGO_VERSION = "v6.10.2";
46
46
  /**
47
47
  * Embedded sha256 digests for the pinned centrifugo release assets, sourced
48
48
  * from the release's official checksums.txt at prep time (never fetched at
@@ -50,34 +50,11 @@ export declare const CENTRIFUGO_VERSION = "v5.4.9";
50
50
  * darwin-arm64, darwin-amd64, linux-amd64, linux-arm64.
51
51
  */
52
52
  export declare const CENTRIFUGO_SHA256: Readonly<Record<string, string>>;
53
- /**
54
- * Frozen top-level channel-option DEFAULTS — copied byte-for-byte from the
55
- * production hub config's top-level keys (centrifugo/config.json, the same
56
- * keys namespaces without their own override inherit). Several HUB_NAMESPACES
57
- * entries below (terminal-input, commands, events lacking force_recovery/
58
- * allow_history_for_subscriber, bridges lacking history_size/ttl/
59
- * force_recovery) rely on these top-level defaults for presence/join_leave/
60
- * history/recovery behavior — omitting them means those namespaces silently
61
- * fall back to Centrifugo's OWN stricter defaults instead of production's.
62
- * Deliberately excludes non-channel-option top-level keys (token secrets,
63
- * api/admin/address/port/allowed_origins, log/proxy settings) and the two
64
- * top-level publish/subscribe defaults (`allow_publish_for_subscriber:
65
- * false`, `allow_subscribe_for_client: false`) that every HUB_NAMESPACES
66
- * entry already overrides to true, so their top-level value never applies.
67
- */
53
+ /** Options for channels without a namespace. Named namespaces use only their
54
+ * own explicit options; these are not inherited by HUB_NAMESPACES. */
68
55
  export declare const HUB_CHANNEL_DEFAULTS: Readonly<Record<string, unknown>>;
69
- /**
70
- * Frozen Centrifugo `namespaces` block for the managed hub — copied
71
- * byte-for-byte (names + options) from the production hub config at
72
- * centrifugo/config.json, which targets the SAME pinned CENTRIFUGO_VERSION
73
- * (v5.4.9), so no key-format translation was needed. Every namespace prefix
74
- * used by a real channel (bridges:presence#solo, commands:rpc#solo,
75
- * sessions:*, terminal:*, terminal-input:*, events:*)
76
- * MUST have a matching entry here or Centrifugo rejects the subscribe with
77
- * code 102 "unknown channel" — this list existing at all is the fix for that
78
- * bug; hub-manager.test.ts drift-guards it against centrifugo/config.json so
79
- * the two can never silently diverge again.
80
- */
56
+ /** Explicit namespace options shared with centrifugo/config.json. Keep these
57
+ * values identical: each named namespace is independent of without_namespace. */
81
58
  export declare const HUB_NAMESPACES: ReadonlyArray<Readonly<Record<string, unknown>>>;
82
59
  /**
83
60
  * Panel (UI standalone) bundle source. Published as a GitHub release asset of
@@ -24,7 +24,7 @@
24
24
  * exist.
25
25
  */
26
26
  /** Contract revision — bump on any material change (re-gauntlet required). */
27
- export const SOLO_CONTRACT_REVISION = 5;
27
+ export const SOLO_CONTRACT_REVISION = 6;
28
28
  // ---------- Ports ----------
29
29
  /** Default public LAN port (--port overrides). Children NEVER use fixed
30
30
  * ports: hub and panel bind 127.0.0.1:0 (OS-assigned ephemeral), eliminating
@@ -59,13 +59,13 @@ export const HUB_JWT_TTL_SECONDS = 12 * 60 * 60;
59
59
  /** Fixed solo subject. Solo mode is single-user by definition. */
60
60
  export const SOLO_USER_ID = 'solo';
61
61
  /**
62
- * Audience claim REQUIRED in every hub JWT and configured as token_audience
62
+ * Audience claim REQUIRED in every hub JWT and configured as client.token.audience
63
63
  * in the hub config. Minting without aud, or configuring a different value,
64
64
  * makes every WS handshake fail with an audience mismatch.
65
65
  */
66
66
  export const HUB_JWT_AUDIENCE = 'ftown:centrifugo';
67
67
  /** Centrifugo release to download (pinned; checksums embedded below). */
68
- export const CENTRIFUGO_VERSION = 'v5.4.9';
68
+ export const CENTRIFUGO_VERSION = 'v6.10.2';
69
69
  /**
70
70
  * Embedded sha256 digests for the pinned centrifugo release assets, sourced
71
71
  * from the release's official checksums.txt at prep time (never fetched at
@@ -73,26 +73,13 @@ export const CENTRIFUGO_VERSION = 'v5.4.9';
73
73
  * darwin-arm64, darwin-amd64, linux-amd64, linux-arm64.
74
74
  */
75
75
  export const CENTRIFUGO_SHA256 = {
76
- 'darwin-arm64': 'b0bef645acffe29ae9eb07fd98e93ac14d9c1cdd26b568b6cf9b8f20c6f653f4',
77
- 'darwin-amd64': 'ab221e476f8e9abd69f9943c2d3e7fefc232b90c5c23ccff60b89cae82f3fd50',
78
- 'linux-amd64': '75d2fac2dcea005bb3cb1b4636b3825d98c97709c94d10755c892dbe1c9956c2',
79
- 'linux-arm64': 'ba6df455ee0064399dd13652575fbbefa3d00bbe647d0555cb3669c1060821e5',
76
+ 'darwin-arm64': 'ca1c7b02763280a97a4605a6a359ef90c831f6520727b48b09eab8281f07c792',
77
+ 'darwin-amd64': 'cdb1ce846103750cc2eb24b2998aeaacb97dc189a7584b00f11a9bcb7d7bc2b5',
78
+ 'linux-amd64': 'fea3767686d2bcc55df02094cc323268d9a02bb255eb60884d9e74ce4162eb45',
79
+ 'linux-arm64': '5bfaf520235db64ea1339247f4d6b14c0738979fedae187c57aa24c1861db5c2',
80
80
  };
81
- /**
82
- * Frozen top-level channel-option DEFAULTS — copied byte-for-byte from the
83
- * production hub config's top-level keys (centrifugo/config.json, the same
84
- * keys namespaces without their own override inherit). Several HUB_NAMESPACES
85
- * entries below (terminal-input, commands, events lacking force_recovery/
86
- * allow_history_for_subscriber, bridges lacking history_size/ttl/
87
- * force_recovery) rely on these top-level defaults for presence/join_leave/
88
- * history/recovery behavior — omitting them means those namespaces silently
89
- * fall back to Centrifugo's OWN stricter defaults instead of production's.
90
- * Deliberately excludes non-channel-option top-level keys (token secrets,
91
- * api/admin/address/port/allowed_origins, log/proxy settings) and the two
92
- * top-level publish/subscribe defaults (`allow_publish_for_subscriber:
93
- * false`, `allow_subscribe_for_client: false`) that every HUB_NAMESPACES
94
- * entry already overrides to true, so their top-level value never applies.
95
- */
81
+ /** Options for channels without a namespace. Named namespaces use only their
82
+ * own explicit options; these are not inherited by HUB_NAMESPACES. */
96
83
  export const HUB_CHANNEL_DEFAULTS = {
97
84
  allow_history_for_subscriber: true,
98
85
  presence: true,
@@ -103,18 +90,8 @@ export const HUB_CHANNEL_DEFAULTS = {
103
90
  history_ttl: '24h',
104
91
  force_recovery: true,
105
92
  };
106
- /**
107
- * Frozen Centrifugo `namespaces` block for the managed hub — copied
108
- * byte-for-byte (names + options) from the production hub config at
109
- * centrifugo/config.json, which targets the SAME pinned CENTRIFUGO_VERSION
110
- * (v5.4.9), so no key-format translation was needed. Every namespace prefix
111
- * used by a real channel (bridges:presence#solo, commands:rpc#solo,
112
- * sessions:*, terminal:*, terminal-input:*, events:*)
113
- * MUST have a matching entry here or Centrifugo rejects the subscribe with
114
- * code 102 "unknown channel" — this list existing at all is the fix for that
115
- * bug; hub-manager.test.ts drift-guards it against centrifugo/config.json so
116
- * the two can never silently diverge again.
117
- */
93
+ /** Explicit namespace options shared with centrifugo/config.json. Keep these
94
+ * values identical: each named namespace is independent of without_namespace. */
118
95
  export const HUB_NAMESPACES = [
119
96
  {
120
97
  name: 'terminal',
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/solo/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/solo/contract.ts"],"names":[],"mappings":"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"}
@@ -60,8 +60,8 @@ export function resolvePlatformTriple(platform = process.platform, arch = proces
60
60
  }
61
61
  export function assetUrl(version, triple) {
62
62
  const bare = version.startsWith('v') ? version.slice(1) : version;
63
- // Release assets use UNDERSCORES between parts (centrifugo_5.4.9_darwin_arm64.tar.gz)
64
- // while our platform triple is dashed — verified against the v5.4.9 checksums.txt.
63
+ // Release assets use UNDERSCORES between parts (centrifugo_6.10.2_darwin_arm64.tar.gz)
64
+ // while our platform triple is dashed — verified against the v6.10.2 checksums.txt.
65
65
  const assetTriple = triple.split('-').join('_');
66
66
  return `https://github.com/centrifugal/centrifugo/releases/download/${version}/centrifugo_${bare}_${assetTriple}.tar.gz`;
67
67
  }
@@ -198,69 +198,36 @@ export async function ensureHubBinary(opts) {
198
198
  }
199
199
  // ---------- Config write (frozen keys, S7) ----------
200
200
  /**
201
- * Frozen solo hub configuration. Security keys mirror the contract block
202
- * translated to actual centrifugo v5 flat key names (verified against the
203
- * v5.4.9 source defaults): `admin` disables the admin web UI, `api_disable`
204
- * disables the server HTTP API, `allow_anonymous_connect_without_token=false`
205
- * means no anonymous client connections. address/port are operational keys so
206
- * the child binds loopback on the ephemeral port the integrator assigned.
201
+ * Nested Centrifugo v6 configuration. Admin and server HTTP API stay disabled;
202
+ * the hub binds only loopback on the port assigned by the Solo integrator.
203
+ * Named namespaces retain their own explicit permission/retention settings;
204
+ * HUB_CHANNEL_DEFAULTS applies only to channels without a namespace.
207
205
  *
208
- * `...HUB_CHANNEL_DEFAULTS` spreads the production top-level channel-option
209
- * defaults (presence, join_leave, force_push_join_leave,
210
- * allow_presence_for_subscriber, history_size, history_ttl, force_recovery,
211
- * allow_history_for_subscriber) that several HUB_NAMESPACES entries below
212
- * have no per-namespace override for and therefore inherit — without this,
213
- * those namespaces would silently fall back to Centrifugo's own stricter
214
- * built-in defaults instead of production's.
215
- *
216
- * `namespaces: HUB_NAMESPACES` is the production namespace table (contract-
217
- * frozen, drift-guarded in hub-manager.test.ts against centrifugo/config.json)
218
- * — WITHOUT it every namespaced channel (bridges:presence#solo, commands:rpc
219
- * #solo, sessions:*, terminal:*, terminal-input:*,
220
- * events:*) is rejected by Centrifugo with code 102 "unknown channel", which
221
- * is why the panel could never see the bridge or create sessions in solo
222
- * mode. `allow_user_limited_channels: true` is required alongside it because
223
- * every one of those channels carries the `#solo` user-limited-channel
224
- * suffix. `client_channel_limit` / `client_queue_max_size` /
225
- * `client_stale_close_delay` / `websocket_message_size_limit` /
226
- * `ping_interval` / `pong_timeout` are carried over from production so a
227
- * single-user LAN client isn't held to defaults tuned for a multi-tenant
228
- * deployment. `websocket_compression` stays false (see below) even though
229
- * production enables it — that divergence is deliberate, not part of this
230
- * fix.
231
- *
232
- * `allowed_origins: []` is deliberate, not an oversight: centrifugo v5
233
- * rejects (403s) any handshake that carries an Origin header when this list
234
- * is empty. That's fine here because same-origin is enforced ourselves, one
235
- * hop earlier, in the front proxy (ws-proxy.ts `handleHubUpgrade` /
236
- * `isSameOrigin`), which also strips the Origin header before forwarding —
237
- * so centrifugo never sees one to judge. The hub additionally only ever
238
- * binds loopback (127.0.0.1, see `address` below), so it is never reachable
239
- * directly from a browser regardless. Do not "fix" this by populating
240
- * allowed_origins; that would just duplicate — and could drift from — the
241
- * check ws-proxy.ts already owns.
206
+ * Empty client.allowed_origins is deliberate: ws-proxy.ts enforces same-origin
207
+ * at the public front and strips Origin before forwarding to this private hub.
208
+ * WebSocket compression stays disabled for Solo, matching its previous policy.
242
209
  */
243
210
  function hubConfigObject(port, secret) {
244
211
  return {
245
- address: '127.0.0.1',
246
- port,
247
- token_hmac_secret_key: secret,
248
- token_audience: HUB_JWT_AUDIENCE,
249
- allowed_origins: [],
250
- websocket_compression: false,
251
- allow_anonymous_connect_without_token: false,
252
- admin: false,
253
- api_disable: true,
254
- health: true,
255
- ...HUB_CHANNEL_DEFAULTS,
256
- namespaces: HUB_NAMESPACES,
257
- allow_user_limited_channels: true,
258
- client_channel_limit: 256,
259
- client_queue_max_size: 67108864,
260
- client_stale_close_delay: '30s',
261
- websocket_message_size_limit: 33554432,
262
- ping_interval: '10s',
263
- pong_timeout: '5s',
212
+ http_server: { address: '127.0.0.1', port },
213
+ client: {
214
+ token: { hmac_secret_key: secret, audience: HUB_JWT_AUDIENCE },
215
+ allowed_origins: [],
216
+ allow_anonymous_connect_without_token: false,
217
+ channel_limit: 256,
218
+ queue_max_size: 67108864,
219
+ stale_close_delay: '30s',
220
+ ping_interval: '10s',
221
+ pong_timeout: '5s',
222
+ },
223
+ websocket: { compression: false, message_size_limit: 33554432 },
224
+ admin: { enabled: false },
225
+ http_api: { disabled: true },
226
+ health: { enabled: true },
227
+ channel: {
228
+ without_namespace: { ...HUB_CHANNEL_DEFAULTS, allow_user_limited_channels: true },
229
+ namespaces: HUB_NAMESPACES,
230
+ },
264
231
  };
265
232
  }
266
233
  export async function writeHubConfig(configPath, opts) {
@@ -333,8 +300,9 @@ export async function startHub(opts) {
333
300
  let secret;
334
301
  try {
335
302
  const parsed = JSON.parse(await readFile(opts.configPath, 'utf8'));
336
- port = Number(parsed.port);
337
- secret = typeof parsed.token_hmac_secret_key === 'string' ? parsed.token_hmac_secret_key : '';
303
+ port = Number(parsed.http_server?.port);
304
+ const configuredSecret = parsed.client?.token?.hmac_secret_key;
305
+ secret = typeof configuredSecret === 'string' ? configuredSecret : '';
338
306
  }
339
307
  catch (err) {
340
308
  throw new HubStartError(`cannot read hub config ${opts.configPath}: ${errorMessage(err)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"hub-manager.js","sourceRoot":"","sources":["../../src/solo/hub-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub-manager.js","sourceRoot":"","sources":["../../src/solo/hub-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAuBvC,MAAM,YAAY,GAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACzD,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAA+B,CAAC;AAElE,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,4DAA4D;AAE5D,MAAM,YAAY,GAAqC;IACrD,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,WAAmB,OAAO,CAAC,QAAQ,EACnC,OAAe,OAAO,CAAC,IAAI;IAE3B,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAoB,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,wBAAwB,CAAC,mCAAmC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAsB;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,uFAAuF;IACvF,oFAAoF;IACpF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,+DAA+D,OAAO,eAAe,IAAI,IAAI,WAAW,SAAS,CAAC;AAC3H,CAAC;AAED,2CAA2C;AAE3C,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAalC,SAAS,SAAS,CAAC,IAAgB;IACjC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,OAAO,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAwB,EAAE,YAA+B;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,kBAAkB,CAAC,sDAAsD,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,IAAI,kBAAkB,CAAC,kDAAkD,IAAI,IAAI,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,MAAM,IAAI,kBAAkB,CAAC,0CAA0C,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,aAAa,CACrB,iFAAiF,KAAK,CAAC,MAAM,EAAE,CAChG,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA4B;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC;IACnD,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,kDAAkD,MAAM,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;IAC1D,8EAA8E;IAC9E,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,aAAa,GAAG,GAAG,MAAM,SAAS,CAAC;IACzC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;QAC1C,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;QAChE,CAAC,CAAC,EAAE,CAAC;IACP,IACE,UAAU,CAAC,MAAM,CAAC;QAClB,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,WAAW,CAAC,EAC1E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,aAAa,CAAC,oCAAoC,GAAG,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,+EAA+E;QAC/E,MAAM,IAAI,aAAa,CACrB,qCAAqC,MAAM,qBAAqB,WAAW,SAAS,SAAS,yBAAyB,CACvH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,UAAU,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM;aACzE,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM;aAC5E,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,kBAAkB,CAAC,qCAAqC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACrF,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,GAAG,CAAC;YAC/D,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,MAAM,SAAS,CAAC,aAAa,EAAE,GAAG,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,uDAAuD;AAEvD;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,MAAc;IACnD,OAAO;QACL,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE;QAC3C,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE;YAC9D,eAAe,EAAE,EAAE;YACnB,qCAAqC,EAAE,KAAK;YAC5C,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,QAAQ;YACxB,iBAAiB,EAAE,KAAK;YACxB,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,IAAI;SACnB;QACD,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QAC/D,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACzB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5B,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACzB,OAAO,EAAE;YACP,iBAAiB,EAAE,EAAE,GAAG,oBAAoB,EAAE,2BAA2B,EAAE,IAAI,EAAE;YACjF,UAAU,EAAE,cAAc;SAC3B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,IAAsC;IAEtC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrF,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,gFAAgF;IAChF,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAuBD,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAC3C,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAsB;IACtD,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAED,4DAA4D;AAC5D,SAAS,YAAY,CAAC,IAAY,EAAE,MAAc;IAChD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,SAAiB,EAAE,SAAoB;IAC7E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO;IACjE,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAqB;IAClD,IAAI,IAAY,CAAC;IACjB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAGhE,CAAC;QACF,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC;QAC/D,MAAM,GAAG,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,aAAa,CAAC,0BAA0B,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,aAAa,CAAC,cAAc,IAAI,CAAC,UAAU,qBAAqB,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;IAC7C,IAAI,KAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,0CAA0C;QAC1C,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,aAAa,CAAC,+BAA+B,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,KAAK,GAEP,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAClC,KAAK,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,oBAAoB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,GAAG,IAAI,SAAS,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IAEzC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,MAAM,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1D,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,cAAc;YAC3B,CAAC,CAAC,0BAA0B,cAAc,CAAC,IAAI,YAAY,cAAc,CAAC,MAAM,GAAG;YACnF,CAAC,CAAC,qCAAqC,UAAU,IAAI,CAAC;QACxD,MAAM,IAAI,aAAa,CAAC,GAAG,MAAM,uBAAuB,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/types.d.ts CHANGED
@@ -42,6 +42,7 @@ export interface Session {
42
42
  museSessionId?: string;
43
43
  env?: Record<string, string>;
44
44
  parentSessionId?: string;
45
+ pullRequestUrl?: string;
45
46
  runtime?: SessionRuntime;
46
47
  errorReason?: string;
47
48
  loopId?: string;
@@ -43,6 +43,7 @@ export interface Session {
43
43
  shellType?: string;
44
44
  model?: string;
45
45
  parentSessionId?: string;
46
+ pullRequestUrl?: string;
46
47
  /** Historical automation provenance; new sessions cannot set it. */
47
48
  loopId?: string;
48
49
  usage?: SessionUsage;
@@ -1 +1 @@
1
- {"version":3,"file":"wire-types.js","sourceRoot":"","sources":["../src/wire-types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAwD1E,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAgB3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,0DAA0D,CAAC;AAErG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,UAAmB;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,CAAc;IAC9C,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"wire-types.js","sourceRoot":"","sources":["../src/wire-types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAyD1E,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAgB3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,0DAA0D,CAAC;AAErG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,UAAmB;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,CAAc;IAC9C,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ftown-bridge",
3
- "version": "0.19.49",
3
+ "version": "0.19.51",
4
4
  "description": "CLI bridge for ftown — generic PTY-over-Centrifugo relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,7 +32,7 @@
32
32
  "mcp": "tsx src/mcp-cli.ts"
33
33
  },
34
34
  "engines": {
35
- "node": ">=22"
35
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
36
36
  },
37
37
  "keywords": [
38
38
  "pty",
@@ -74,5 +74,5 @@
74
74
  "tsx": "^4.19.0",
75
75
  "typescript": "^5.7.0"
76
76
  },
77
- "gitHead": "5b3a8c1859fa03dbc871e0ede39bcd04708401ef"
77
+ "gitHead": "c2d5e7b453399931f75f6fcf5e83407aed6f822f"
78
78
  }
@@ -2,8 +2,9 @@
2
2
  name: ftown
3
3
  description: >-
4
4
  Control ftown sessions: create/list/read/drive sibling sessions, send ftown
5
- mail, and coordinate worker agents. Use for ftown sessions, child/sibling
6
- agents, bridge mail/inbox, or explicitly requested orchestration.
5
+ mail, request human attention, link session PRs, and coordinate worker agents.
6
+ Use for ftown sessions, child/sibling agents, bridge mail/inbox, or explicitly
7
+ requested orchestration.
7
8
  ---
8
9
 
9
10
  # ftown
@@ -39,6 +40,9 @@ entrypoint with `--repair`.
39
40
  ftown sessions list
40
41
  ftown sessions create --prompt "Review the auth module" --workdir "$PWD" --parent
41
42
  ftown sessions screen <session-id> --limit 200
43
+ ftown sessions attention --message "Please review the migration plan" --title "Review requested"
44
+ ftown sessions pr https://github.com/owner/repo/pull/123
45
+ ftown sessions pr --clear
42
46
  ftown harness mail send <session-id> --type task "review the API client"
43
47
  ftown harness mail read
44
48
  ftown env --help
@@ -66,6 +70,40 @@ Prefer mail for agent communication; use terminal key injection only when the
66
70
  task needs it. Inspect peers with `ftown sessions list` and
67
71
  `ftown sessions screen <id> --limit 100`.
68
72
 
73
+ ## Human attention and pull requests
74
+
75
+ Use `ftown sessions attention --message "..."` when you need human input. It
76
+ creates a durable attention record and uses the dashboard's existing notice flow;
77
+ it does not answer a prompt or guarantee a push notification. Push remains opt-in
78
+ and requires a supported hosted session. Repeating an unresolved request updates
79
+ its occurrence count; after an uncertain result, inspect the existing request
80
+ before retrying.
81
+
82
+ Attach one GitHub pull request with `ftown sessions pr <URL>`; another URL
83
+ replaces it and `--clear` removes it. This records a link without fetching GitHub
84
+ or creating a PR. Both commands target trimmed `$FTOWN_SESSION_ID` unless you
85
+ supply `--session-id <id>`; they never guess identity from the working directory.
86
+ Older bridges report `bridge_upgrade_required` before mutation.
87
+
88
+ Remote MCP callers use `attention_request` with explicit `machine` and
89
+ `sessionId`, or `sessions_update` with `pullRequestUrl` (string to set, null to
90
+ clear). Mutation tools require control access; remote callers have no automatic
91
+ local self identity. Keep the returned attention event ID for existing inbox,
92
+ acknowledge and resolve operations, which do not answer the agent's question.
93
+
94
+ For tasks performed in an FTown session, associate the task's GitHub PR when
95
+ created or updated, before the completion notice: use `ftown sessions pr <URL>`
96
+ or MCP `sessions_update.pullRequestUrl`. Omit this step for tasks without a PR;
97
+ never invent a PR or guess a session identity.
98
+
99
+ Once the task is complete, request user attention **once per completed task**,
100
+ before the final handoff, using `ftown sessions attention --title 'Work complete'
101
+ --message "<truthful outcome, checks and PR summary>"` or MCP `attention_request`.
102
+ Do not send a completion notice every turn; retain the uncertain-result guidance
103
+ above. Children must still report their result to the parent as assigned; user
104
+ attention does not replace that reporting. See the completion example in
105
+ `references/sessions.md`.
106
+
69
107
  ## Cleanup
70
108
 
71
109
  Session cleanup is an explicit user or orchestrator action. Reporting a result
@@ -51,6 +51,51 @@ ftown sessions archive
51
51
  ftown sessions revive <session-id>
52
52
  ```
53
53
 
54
+ ## Ask the human or associate a pull request
55
+
56
+ ```bash
57
+ # Request human input for this session (JSON {event} by default)
58
+ ftown sessions attention --message "Please review the migration plan" --title "Review requested"
59
+
60
+ # Set or replace this session's single GitHub PR link (JSON {session})
61
+ ftown sessions pr https://github.com/owner/repo/pull/123
62
+
63
+ # Clear the association
64
+ ftown sessions pr --clear
65
+
66
+ # Explicit target overrides FTOWN_SESSION_ID for either command
67
+ ftown sessions attention --session-id <id> --message "Which approach should I take?"
68
+ ftown sessions pr --session-id <id> https://github.com/owner/repo/pull/123
69
+ ```
70
+
71
+ Both commands use trimmed `FTOWN_SESSION_ID` when `--session-id` is omitted;
72
+ missing/invalid identity, empty/oversized text, malformed URLs and contradictory
73
+ arguments fail before transport. There is no working-directory or latest-session
74
+ fallback. Title is optional (default `Session needs your input`, max 200 characters);
75
+ message is required (max 2000). Controls and common credentials are sanitized.
76
+ `--plain` prints a concise success summary. `--help` is read-only.
77
+
78
+ Attention persists an `agent_needs_input` event, returns its exact ID and updates
79
+ the existing dashboard attention flow. Logical duplicate unresolved requests
80
+ coalesce while recording occurrences; resolving it permits a new incident.
81
+ Only creation triggers notification, and hosted push remains opt-in with existing
82
+ session/harness eligibility. Do not automatically retry an uncertain mutation.
83
+ Acknowledging/resolving an event never answers or approves a CLI prompt.
84
+
85
+ PR links accept only HTTPS GitHub `/owner/repo/pull/<positive-number>` URLs.
86
+ Outer whitespace, query/fragment and a trailing slash are normalized; credentials,
87
+ nondefault ports and other paths/hosts are rejected. No GitHub request is made.
88
+ Attaching/replacing/clearing is metadata-only; omitting it on an update preserves
89
+ its value. New sessions/children do not implicitly inherit a parent's PR.
90
+
91
+ New commands probe the exact bridge capability before writing; update old bridges
92
+ with the exact version setup command in their readiness hint. For remote MCP,
93
+ `attention_request` requires explicit `{machine, sessionId, message, title?}` and
94
+ returns `{machine, sessionId, event}`. `sessions_update` accepts `pullRequestUrl`
95
+ (string or null), alongside existing name/parent fields. A mixed PR+name update
96
+ rejects an old bridge before changing either field. Read-only MCP clients cannot
97
+ see these mutation tools; control authorization and machine ownership still apply.
98
+
54
99
  ## Messaging (mail)
55
100
 
56
101
  `tell` posts to the target session's **inbox**. Mail is delivered into the
@@ -117,6 +162,30 @@ ftown sessions screen <child-id> --limit 100
117
162
  ftown sessions grep <child-id> --pattern 'FAIL|Error'
118
163
  ```
119
164
 
165
+ ### Completion handoff
166
+
167
+ When the task creates or updates a GitHub PR, associate its actual URL with the
168
+ FTown session before the completion notice. Then request user attention once the
169
+ task is complete, before the final handoff. Replace the sample URL and summary
170
+ below with truthful outcomes and checks (including checks not run):
171
+
172
+ ```bash
173
+ ftown sessions pr https://github.com/owner/repo/pull/123
174
+ ftown sessions attention --title 'Work complete' \
175
+ --message 'Outcome: <actual result>. Checks: <actual results or not run>. PR: https://github.com/owner/repo/pull/123'
176
+ ```
177
+
178
+ For tasks without a PR, omit the PR command and PR summary. Use the verified
179
+ `FTOWN_SESSION_ID` or explicit `--session-id`; never guess a target. MCP callers
180
+ instead use `sessions_update` with `pullRequestUrl` when applicable, then
181
+ `attention_request` with title `Work complete` and the same truthful summary,
182
+ always supplying explicit `machine` and `sessionId`.
183
+
184
+ Send one completion request per completed task, not repeated per-turn notices.
185
+ Logical duplicate coalescing does not justify retries after an uncertain outcome;
186
+ inspect the existing request first, as described above. Child agents still send
187
+ their assigned result to the parent; the user attention request is additional.
188
+
120
189
  ## Environment
121
190
 
122
191
  Spawned ftown sessions receive:
@@ -145,7 +214,8 @@ The CLI wraps the loopback API. Raw access if needed:
145
214
  |--------|------|---------|
146
215
  | GET | `/api/sessions` | List |
147
216
  | POST | `/api/sessions` | Create |
148
- | PATCH | `/api/sessions/:id` | Rename and/or move (`{ name?, parentSessionId? }`; `null` moves to the root) |
217
+ | PATCH | `/api/sessions/:id` | Rename, move or associate a PR (`{ name?, parentSessionId?, pullRequestUrl? }`; `null` detaches/clears) |
218
+ | POST | `/api/sessions/:id/attention` | Request human input (`{ message, title? }`) → `{ event }` |
149
219
  | GET | `/api/sessions/:id/screen` | Terminal lines |
150
220
  | POST | `/api/sessions/:id/grep` | Search |
151
221
  | POST | `/api/sessions/:id/keys` | Send keys |