@spinabot/brigade 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -72,6 +72,30 @@ export declare function upsertOAuthProfile(agentId: string, args: {
72
72
  clientSecret?: string;
73
73
  metadata?: Record<string, unknown>;
74
74
  }): string;
75
+ /**
76
+ * Persist a REFRESHED OAuth credential back into an existing oauth profile,
77
+ * in place. Pi's AuthStorage auto-refreshes an expired subscription token on
78
+ * use, and every provider that matters (Anthropic / OpenAI-Codex / Google)
79
+ * ROTATES the refresh token on each refresh — the response carries a NEW
80
+ * refresh token and invalidates the old one. If we never write the rotated
81
+ * token back, the next gateway boot re-reads the stale on-disk refresh token,
82
+ * the refresh 401s, and the login dies a day or two after onboarding. This is
83
+ * the write-back path that closes that gap, generically for any provider.
84
+ *
85
+ * Non-destructive: preserves the profile's clientSecret (sealed `key`), alias,
86
+ * refs we don't touch, and existing metadata; only the token fields are
87
+ * overwritten. Writing a literal token CLEARS any stale `accessRef`/`refreshRef`
88
+ * so the fresh literal wins on the next read (see `resolveRefValue`). Goes
89
+ * through the same mode-aware `writeProfiles` choke point, so convex mode seals
90
+ * the new access/refresh columns. Returns false when no oauth profile exists for
91
+ * `provider` (nothing to update — e.g. an env-only credential).
92
+ */
93
+ export declare function updateOAuthTokens(agentId: string, provider: string, tokens: {
94
+ access?: string;
95
+ refresh?: string;
96
+ expires?: number;
97
+ metadata?: Record<string, unknown>;
98
+ }): boolean;
75
99
  export declare function upsertApiKeyRefProfile(agentId: string, args: {
76
100
  provider: string;
77
101
  alias?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAkBD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAIpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAqBD;+DAC+D;AAC/D,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,aAAa,GACnB,IAAI,CAGN;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,iBAAiB;AACjB,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD;AA4CD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAiDtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAmB9D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAW3E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAuBxD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAOrE;AASD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC1F,MAAM,CAYR;AAQD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,MAAM,CAeR;AAKD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvG,MAAM,CAYR;AAID,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC5F,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzG,MAAM,CAYR"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC;AAkBD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAIpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAqBD;+DAC+D;AAC/D,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,aAAa,GACnB,IAAI,CAGN;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,iBAAiB;AACjB,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD;AA4CD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAiDtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAmB9D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAW3E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAuBxD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAOrE;AASD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC1F,MAAM,CAYR;AAQD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClG,OAAO,CAyBT;AAKD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvG,MAAM,CAYR;AAID,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC5F,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzG,MAAM,CAYR"}
@@ -229,6 +229,50 @@ export function upsertOAuthProfile(agentId, args) {
229
229
  writeProfiles(agentId, file);
230
230
  return id;
231
231
  }
232
+ /**
233
+ * Persist a REFRESHED OAuth credential back into an existing oauth profile,
234
+ * in place. Pi's AuthStorage auto-refreshes an expired subscription token on
235
+ * use, and every provider that matters (Anthropic / OpenAI-Codex / Google)
236
+ * ROTATES the refresh token on each refresh — the response carries a NEW
237
+ * refresh token and invalidates the old one. If we never write the rotated
238
+ * token back, the next gateway boot re-reads the stale on-disk refresh token,
239
+ * the refresh 401s, and the login dies a day or two after onboarding. This is
240
+ * the write-back path that closes that gap, generically for any provider.
241
+ *
242
+ * Non-destructive: preserves the profile's clientSecret (sealed `key`), alias,
243
+ * refs we don't touch, and existing metadata; only the token fields are
244
+ * overwritten. Writing a literal token CLEARS any stale `accessRef`/`refreshRef`
245
+ * so the fresh literal wins on the next read (see `resolveRefValue`). Goes
246
+ * through the same mode-aware `writeProfiles` choke point, so convex mode seals
247
+ * the new access/refresh columns. Returns false when no oauth profile exists for
248
+ * `provider` (nothing to update — e.g. an env-only credential).
249
+ */
250
+ export function updateOAuthTokens(agentId, provider, tokens) {
251
+ const file = readProfiles(agentId);
252
+ const matches = Object.entries(file.profiles).filter(([, p]) => p?.type === "oauth" && p?.provider === provider);
253
+ if (matches.length === 0)
254
+ return false;
255
+ // Prefer the default-alias profile; otherwise the first oauth profile found.
256
+ const defaultId = profileId(provider);
257
+ const [id, prof] = matches.find(([eid]) => eid === defaultId) ?? matches[0];
258
+ const next = { ...prof };
259
+ if (tokens.access !== undefined) {
260
+ next.access = tokens.access;
261
+ delete next.accessRef;
262
+ }
263
+ if (tokens.refresh !== undefined) {
264
+ next.refresh = tokens.refresh;
265
+ delete next.refreshRef;
266
+ }
267
+ if (tokens.expires !== undefined)
268
+ next.expires = tokens.expires;
269
+ if (tokens.metadata !== undefined) {
270
+ next.metadata = { ...(prof.metadata ?? {}), ...tokens.metadata };
271
+ }
272
+ file.profiles[id] = sanitizeProfileShape(next);
273
+ writeProfiles(agentId, file);
274
+ return true;
275
+ }
232
276
  // Ref-mode counterpart: stores a structured BrigadeSecretRef instead of the
233
277
  // literal key. The literal `key` field is NOT persisted — sanitizeProfileShape
234
278
  // drops it when keyRef is present.
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAkFrE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACxD,OAAO,GAAG,QAAQ,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,iEAAiE;AAEjE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC1D,IAAI,cAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEtD,SAAS,YAAY;IACnB,OAAO,oBAAoB,EAAE,EAAE,IAAI,KAAK,QAAQ,CAAC;AACnD,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,QAA0B,EAC1B,KAAoB;IAEpB,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,yBAAyB;IACvC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,IAAsB,EAAE,IAAsB;IAC1F,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QACrE,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAe,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,cAAc,GAAG,cAAc;SAC5B,IAAI,CAAC,KAAK,IAAI,EAAE;QACf,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,MAAM,EAAE,EAAE,CAAC;IACnC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CACX,uDAAuD,OAAO,OAAQ,GAAa,CAAC,OAAO,EAAE,CAC9F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAoB;IAC7D,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAuC,CAAC;IAC5E,cAAc,GAAG,cAAc;SAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;SACvE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CACX,qDAAqD,OAAO,OAAQ,GAAa,CAAC,OAAO,EAAE,CAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,kEAAkE;IAClE,oEAAoE;IACpE,2BAA2B;IAC3B,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC5B,OAAO,EAAE,eAAe;gBACxB,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,iBAAiB,CAAC,YAAY,EAAE;YAC9B,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,cAAc,CAAC,SAAS,EAAE;YACxB,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,aAAa,CACd,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACpE,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAqB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC3E,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAsB;IACnE,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;YAC/C,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAkB;YAC3B,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC;QACF,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAkB,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAmB;IAC7D,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,iEAAiE;AAEjE,qEAAqE;AACrE,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,qCAAqC;AACrC,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,IAA2F;IAE3F,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAgBC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,mCAAmC;AACnC,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,IAAwG;IAExG,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAA6F;IAE7F,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,IAA0G;IAE1G,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,0DAA0D;AAC1D,4EAA4E;AAC5E,+DAA+D;AAC/D,SAAS,oBAAoB,CAAC,OAAoB;IAChD,MAAM,GAAG,GAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IACxD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAC9D,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IACjE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACpE,IAAI,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB,EAAE,IAAsB;IACrE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,YAAY,MAAM,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAmB;IAC5D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,SAAS,MAAM,CAAC;IAC/B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAChC,CAAC;AAED,sEAAsE;AACtE,yEAAyE;AACzE,qBAAqB;AACrB,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAY;IAClD,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO;IACtC,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/auth/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAkFrE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACxD,OAAO,GAAG,QAAQ,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,iEAAiE;AAEjE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC1D,IAAI,cAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEtD,SAAS,YAAY;IACnB,OAAO,oBAAoB,EAAE,EAAE,IAAI,KAAK,QAAQ,CAAC;AACnD,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,QAA0B,EAC1B,KAAoB;IAEpB,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,yBAAyB;IACvC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,IAAsB,EAAE,IAAsB;IAC1F,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QACrE,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAe,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,cAAc,GAAG,cAAc;SAC5B,IAAI,CAAC,KAAK,IAAI,EAAE;QACf,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,MAAM,EAAE,EAAE,CAAC;IACnC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CACX,uDAAuD,OAAO,OAAQ,GAAa,CAAC,OAAO,EAAE,CAC9F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAoB;IAC7D,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAuC,CAAC;IAC5E,cAAc,GAAG,cAAc;SAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;SACvE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CACX,qDAAqD,OAAO,OAAQ,GAAa,CAAC,OAAO,EAAE,CAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,kEAAkE;IAClE,oEAAoE;IACpE,2BAA2B;IAC3B,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC5B,OAAO,EAAE,eAAe;gBACxB,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,iBAAiB,CAAC,YAAY,EAAE;YAC9B,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,cAAc,CAAC,SAAS,EAAE;YACxB,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,aAAa,CACd,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACpE,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAqB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC3E,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAsB;IACnE,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;YAC/C,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAkB;YAC3B,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC;QACF,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAkB,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAmB;IAC7D,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,iEAAiE;AAEjE,qEAAqE;AACrE,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,qCAAqC;AACrC,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,IAA2F;IAE3F,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAgBC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,QAAgB,EAChB,MAAmG;IAEnG,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAC3D,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,6EAA6E;IAC7E,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7E,MAAM,IAAI,GAAgB,EAAE,GAAG,IAAI,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,mCAAmC;AACnC,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,IAAwG;IAExG,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAA6F;IAE7F,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,IAA0G;IAE1G,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,0DAA0D;AAC1D,4EAA4E;AAC5E,+DAA+D;AAC/D,SAAS,oBAAoB,CAAC,OAAoB;IAChD,MAAM,GAAG,GAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IACxD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAC9D,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IACjE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACpE,IAAI,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB,EAAE,IAAsB;IACrE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,YAAY,MAAM,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAmB;IAC5D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,SAAS,MAAM,CAAC;IAC/B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAChC,CAAC;AAED,sEAAsE;AACtE,yEAAyE;AACzE,qBAAqB;AACrB,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAY;IAClD,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO;IACtC,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"builtAt":1782589728035,"head":"fa0363051abf78ec6be90b5a66212385c1558a78","version":"1.15.0"}
1
+ {"builtAt":1782663695479,"head":"527b9597022d11aafb612dcb14458cd5d8d1066f","version":"1.17.0"}
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAMN,GAAG,EACH,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAuBpD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,GAAG,IAAI,CAejF;AAED,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,KAAK,IAAI,OAAO,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACtC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,aAAa,CAAC,CAsHhG;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAClC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAw0ExB"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAMN,GAAG,EACH,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAuBpD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,GAAG,IAAI,CAejF;AAED,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,KAAK,IAAI,OAAO,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACtC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,aAAa,CAAC,CAsHhG;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAClC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CA86ExB"}
@@ -19,6 +19,7 @@
19
19
  * Ollama, BYO-endpoint) still need the full `brigade onboard` wizard.
20
20
  */
21
21
  import process from "node:process";
22
+ import { randomUUID } from "node:crypto";
22
23
  import { CancellableLoader, CombinedAutocompleteProvider, ProcessTerminal, Text, TUI, } from "@earendil-works/pi-tui";
23
24
  import { BrigadeEditor } from "../../ui/editor.js";
24
25
  import { PROVIDERS, findProvider } from "../../providers/catalog.js";
@@ -212,6 +213,16 @@ export async function wireConnectUi(tui, client, initialAgentId) {
212
213
  tui.addChild(header);
213
214
  const divider = new Text(brand.dim("─".repeat(80)), 0, 0);
214
215
  tui.addChild(divider);
216
+ // Persistent status FOOTER. Pi-TUI renders a viewport anchored to the
217
+ // focused editor at the bottom, so the top header (brand wordmark + this
218
+ // model/token line) scrolls ABOVE the viewport as soon as a streamed reply
219
+ // fills the screen — the operator loses sight of the model + token/cost
220
+ // readout exactly when a turn is running. The footer lives in the
221
+ // always-visible bottom region (added after the editor, alongside the hint
222
+ // lines), and `updateHeader` paints the same live status into it. Declared
223
+ // here so the first `updateHeader()` (before the editor is built) can target
224
+ // it; added to the tree below, right under the editor.
225
+ const footer = new Text("", 0, 0);
215
226
  // Cumulative usage — accumulated from state snapshots so a reconnect picks
216
227
  // up where we left off instead of zeroing the totals on the user's screen.
217
228
  let lastSnapshot = null;
@@ -296,13 +307,30 @@ export async function wireConnectUi(tui, client, initialAgentId) {
296
307
  // server-side subscribe (so we only drop frames that explicitly stamp a
297
308
  // DIFFERENT lane — frames with no stamp at all fall through, preserving
298
309
  // back-compat with older gateway builds that don't tag broadcasts yet).
299
- const isOffLane = (frameAgentId, frameSessionId) => {
310
+ const isOffLane = (frameAgentId, frameSessionId, subagentDepth) => {
300
311
  if (boundAgentId !== undefined && typeof frameAgentId === "string" && frameAgentId.length > 0) {
301
312
  if (frameAgentId !== boundAgentId)
302
313
  return true;
303
314
  }
315
+ // A SUB-AGENT of the bound agent is in-lane regardless of its session id.
316
+ // Sub-agent STREAMING pi frames carry a child Pi-session UUID (NOT the
317
+ // `…:subagent:…` descendant key), so the session-prefix check below can't
318
+ // catch them — the depth tag is the reliable signal. Without this, the
319
+ // operator watching the parent turn never sees the sub-agent working
320
+ // (only its approval prompts, which DO carry the descendant key, slipped
321
+ // through). The agent already matched above, so this can't leak another
322
+ // agent's sub-agents.
323
+ if (typeof subagentDepth === "number" && subagentDepth > 0)
324
+ return false;
304
325
  if (boundSessionKey !== undefined && typeof frameSessionId === "string" && frameSessionId.length > 0) {
305
- if (frameSessionId !== boundSessionKey)
326
+ // In-lane = the bound session OR a sub-agent DESCENDANT of it. A
327
+ // spawned sub-agent runs under a child key (`<bound>:subagent:<id>`),
328
+ // so its live frames + approval prompts belong to the operator
329
+ // watching this lane — without this they'd be dropped, the sub-agent's
330
+ // work would be invisible, and its `bash` approval prompt would never
331
+ // render (the turn hangs until the approval times out). Trailing ":"
332
+ // prevents a sibling (`…:main2`) from matching (`…:main`).
333
+ if (frameSessionId !== boundSessionKey && !frameSessionId.startsWith(`${boundSessionKey}:`))
306
334
  return true;
307
335
  }
308
336
  return false;
@@ -471,6 +499,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
471
499
  const sessionLabel = formatSessionLabel(lastSnapshot?.sessionKey);
472
500
  const sessionSegment = sessionLabel ? ` ${brand.dim(`· ${sessionLabel}`)}` : "";
473
501
  header.setText(` ${dot} 🦁 ${brand.white(personaLabel)}${crewSegment}${sessionSegment} ${brand.dim(`${provider} · ${modelId}${tokens}${cost}`)}${usageStr}${brand.dim(elapsed)}${brand.dim(tail)}`);
502
+ // Mirror the live model + token/cost/context readout into the bottom
503
+ // status footer so it survives the viewport scroll while a turn streams
504
+ // (the top header scrolls out of view; this stays pinned by the editor).
505
+ footer.setText(` ${dot} ${brand.dim(`${provider} · ${modelId}${tokens}${cost}`)}${usageStr}${brand.dim(elapsed)}${brand.dim(tail)}`);
474
506
  };
475
507
  /**
476
508
  * Tick the elapsed-time display every second while the agent is busy.
@@ -503,6 +535,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
503
535
  const editor = new BrigadeEditor(tui, editorTheme);
504
536
  tui.addChild(editor);
505
537
  tui.setFocus(editor);
538
+ // Pin the live status line directly under the editor — the bottom region
539
+ // Pi-TUI keeps in view (the hint lines below also live here). This is what
540
+ // keeps `provider · model · tokens · cost` visible while a reply streams.
541
+ tui.addChild(footer);
506
542
  // Slash-command autocomplete (Pi-TUI built-in). Connect-mode list omits
507
543
  // `/provider` (it can't run the wizard against the remote gateway's
508
544
  // filesystem) and `/clear` (chat-only). See chat.ts for the full set.
@@ -586,6 +622,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
586
622
  description: "show/bind the connection's active agent id",
587
623
  argumentHint: "[<agent-id>]",
588
624
  },
625
+ {
626
+ name: "new",
627
+ description: "start a fresh thread (new session, clean screen, no prior context)",
628
+ },
589
629
  {
590
630
  name: "session",
591
631
  description: "show/bind the connection's active session key",
@@ -616,7 +656,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
616
656
  // inline — the credential write happens on the GATEWAY side (`add-provider`
617
657
  // RPC), so it works from connect mode too. Subscription / local / custom
618
658
  // providers still need `brigade onboard` on the gateway machine.
619
- tui.addChild(new Text(brand.dim(" connect-mode: /agent /agents /sessions · /model /provider /thinking /reasoning · /abort /steer /compact · /usage /help"), 0, 0));
659
+ tui.addChild(new Text(brand.dim(" connect-mode: /new /agent /agents /session /sessions · /model /provider /thinking /reasoning · /abort /steer /compact · /usage /help"), 0, 0));
620
660
  tui.addChild(new Text(brand.dim(" Enter to send · Ctrl+C abort · /usage /abort /reasoning · /help for full list"), 0, 0));
621
661
  const insertBeforeEditor = (component) => {
622
662
  const children = tui.children;
@@ -924,6 +964,15 @@ export async function wireConnectUi(tui, client, initialAgentId) {
924
964
  // overlapping clears/rebuilds against the shared render maps.
925
965
  let resumeInFlight = false;
926
966
  let resumePending = false;
967
+ // Resume = ONE idempotent operation: "attach to the bound thread and render
968
+ // its current truth." It fires identically on initial connect AND on
969
+ // reconnect/resync — both land the operator in the SAME thread with its
970
+ // history, so the screen never disagrees with what the agent actually
971
+ // remembers (best-in-class default: ChatGPT/Claude.ai/Cursor/Hermes all land
972
+ // you in your thread WITH history). A genuinely clean slate is `/new` (a real
973
+ // empty thread), never a blanked view of a thread that's secretly full.
974
+ // The replay is BOUNDED server-side — the `resume` RPC caps how many
975
+ // transcript messages it ships — so a 10k-message thread stays snappy.
927
976
  const doResume = async () => {
928
977
  if (resumeInFlight) {
929
978
  resumePending = true;
@@ -946,8 +995,8 @@ export async function wireConnectUi(tui, client, initialAgentId) {
946
995
  renderTranscriptMessage(m);
947
996
  // Recover the non-transcript events too ("nothing lost"): recent
948
997
  // system-event notices, then any tool-approval prompts STILL pending
949
- // on this session — re-rendered answerable, so a prompt that arrived
950
- // or was missed during the disconnect doesn't strand the turn.
998
+ // on this session — re-rendered answerable so a prompt that arrived or
999
+ // was missed doesn't strand the turn.
951
1000
  for (const ev of snap.recentSystemEvents ?? [])
952
1001
  renderSystemEventLine(ev);
953
1002
  for (const appr of snap.pendingApprovals ?? [])
@@ -1040,9 +1089,10 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1040
1089
  // their own applySubscription() from their handlers below.
1041
1090
  if (!seededSubscription && (boundAgentId !== undefined || boundSessionKey !== undefined)) {
1042
1091
  seededSubscription = true;
1043
- // Subscribe to the bound lane, THEN resume to load this session's
1044
- // transcript (history) from the gateway's source of truth. Runs once
1045
- // per connection (the gate); reconnects drive their own resume below.
1092
+ // Subscribe to the bound lane, THEN resume to load this thread's
1093
+ // (bounded) history from the gateway's source of truth, so the operator
1094
+ // lands back where they left off the same operation reconnect/resync
1095
+ // use. Runs once per connection. `/new` is the path to a fresh thread.
1046
1096
  void applySubscription().finally(() => {
1047
1097
  void doResume();
1048
1098
  });
@@ -1062,7 +1112,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1062
1112
  // don't belong to the lane this TUI is bound to. Server-side subscribe
1063
1113
  // should already filter this, but a race between /agent rebind + the
1064
1114
  // next gated-tool frame can still leak a stale one here.
1065
- if (isOffLane(req.agentId, req.sessionId)) {
1115
+ if (isOffLane(req.agentId, req.sessionId, req.subagentDepth)) {
1066
1116
  return;
1067
1117
  }
1068
1118
  renderApprovalPrompt(req);
@@ -1074,7 +1124,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1074
1124
  // Wave N3 (bug #3) — defensive lane drop. Stamped log entries from
1075
1125
  // off-lane agents get silently dropped here, matching the same
1076
1126
  // filter the server's subscribe applies.
1077
- if (isOffLane(entry.agentId, entry.sessionId))
1127
+ if (isOffLane(entry.agentId, entry.sessionId, entry.subagentDepth))
1078
1128
  return;
1079
1129
  // Scrub the server-pushed log message before rendering (see
1080
1130
  // `scrubRenderable`) — these can carry forwarded model/tool text.
@@ -1097,7 +1147,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1097
1147
  client.on("system-event", (event) => {
1098
1148
  // Wave N3 (bug #3) — defensive lane drop. Cron-fired events stamped
1099
1149
  // for another agent shouldn't surface on this operator's connect TUI.
1100
- if (isOffLane(event.agentId, event.sessionId))
1150
+ if (isOffLane(event.agentId, event.sessionId, event.subagentDepth))
1101
1151
  return;
1102
1152
  renderSystemEventLine(event);
1103
1153
  });
@@ -1112,7 +1162,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1112
1162
  // filters via subscribe; this catches the gap between an /agent or
1113
1163
  // /session rebind and the gateway's next-frame view of the new
1114
1164
  // binding (or a legacy gateway that doesn't filter at all).
1115
- if (isOffLane(payload.agentId, payload.sessionId))
1165
+ if (isOffLane(payload.agentId, payload.sessionId, subagentDepth))
1116
1166
  return;
1117
1167
  const depth = typeof subagentDepth === "number" ? subagentDepth : 0;
1118
1168
  const subIndent = depth > 0 ? " ".repeat(depth) : "";
@@ -1219,6 +1269,24 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1219
1269
  insertBeforeEditor(indicator);
1220
1270
  break;
1221
1271
  }
1272
+ case "tool_execution_update": {
1273
+ // LIVE tool output. Pi streams a tool's accumulating result via
1274
+ // `onUpdate` (e.g. `bash` fires stdout/stderr as it runs); the
1275
+ // gateway forwards each as a `tool_execution_update`. Repaint the
1276
+ // ⚡ chip with the running preview so the operator watches the tool
1277
+ // work in real time instead of a static spinner. The repaint is
1278
+ // coalesced through the streaming debouncer so a chatty command
1279
+ // can't thrash the terminal.
1280
+ const liveIndicator = pendingTools.get(event.toolCallId);
1281
+ if (liveIndicator) {
1282
+ const summary = summarizeToolResult(event.partialResult, { preserveNewlines: false });
1283
+ const previewText = scrubRenderable(summary.preview);
1284
+ const tail = summary.hasContent ? ` ${brand.dim(`· ${previewText}`)}` : "";
1285
+ liveIndicator.setText(`${subIndent} ${brand.tool("⚡")} ${brand.tool(event.toolName)}${tail}`);
1286
+ scheduleStreamingRender();
1287
+ }
1288
+ break;
1289
+ }
1222
1290
  case "tool_execution_end": {
1223
1291
  const indicator = pendingTools.get(event.toolCallId);
1224
1292
  if (indicator) {
@@ -1463,6 +1531,7 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1463
1531
  `- ${chalk.bold("/abort")} — stop the in-flight turn\n` +
1464
1532
  `- ${chalk.bold("/usage")} — show token + cost totals for this session\n` +
1465
1533
  `- ${chalk.bold("/reasoning <on|off>")} — show/hide the model's thinking blocks before replies (default: off)\n` +
1534
+ `- ${chalk.bold("/new")} — start a fresh thread (new session, clean screen, no prior context)\n` +
1466
1535
  `- ${chalk.bold("/agent [<id>]")} — show/bind the connection's active agent\n` +
1467
1536
  `- ${chalk.bold("/session [<key>]")} — show/bind the connection's active session\n` +
1468
1537
  `- ${chalk.bold("/agents")} — list every agent the gateway knows about\n` +
@@ -1486,6 +1555,26 @@ export async function wireConnectUi(tui, client, initialAgentId) {
1486
1555
  // agent's `main` lane. With `/session agent:main:whatsapp:<jid>` an
1487
1556
  // operator can intervene in a runaway channel turn from the TUI.
1488
1557
  // No-arg form prints the current binding.
1558
+ // /new — start a genuinely fresh thread. Binds the connection to a NEW
1559
+ // session key under the current agent (the gateway opens a fresh
1560
+ // transcript on the first prompt, so the agent starts with NO prior
1561
+ // context), clears the screen, and re-subscribes. This is the ONE true
1562
+ // clean-slate affordance: a normal launch lands you back in your existing
1563
+ // thread WITH its (bounded) history — the best-in-class default — and
1564
+ // `/new` is how you deliberately start over. Mirrors OpenClaw's `/new` and
1565
+ // Claude.ai/ChatGPT "new chat"; `/sessions` lists threads, `/session <key>`
1566
+ // jumps back to one.
1567
+ if (trimmed === "/new") {
1568
+ editor.setText("");
1569
+ const agentForNew = boundAgentId ?? lastSnapshot?.agentId ?? "main";
1570
+ const freshKey = `agent:${agentForNew}:t-${randomUUID().slice(0, 8)}`;
1571
+ boundSessionKey = freshKey;
1572
+ clearTranscriptRegion();
1573
+ insertBeforeEditor(new Text(` ${brand.amber("✓")} ${brand.dim("new thread")} ${brand.amber(freshKey)}`, 0, 0));
1574
+ updateHeader();
1575
+ void applySubscription();
1576
+ return;
1577
+ }
1489
1578
  if (trimmed === "/session" || trimmed.startsWith("/session ")) {
1490
1579
  editor.setText("");
1491
1580
  const arg = trimmed === "/session" ? "" : trimmed.slice("/session ".length).trim();