@hyperdrive.bot/paseo-server 0.3.38 → 0.3.39

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.
Files changed (17) hide show
  1. package/dist/server/server/agent/providers/claude/agent.d.ts +10 -0
  2. package/dist/server/server/agent/providers/claude/agent.js +17 -0
  3. package/dist/server/server/agent/providers/claude/pty-session-launcher.d.ts +2 -0
  4. package/dist/server/server/agent/providers/claude/pty-session-launcher.js +1 -0
  5. package/dist/server/server/agent/providers/claude/transport/pty-query.d.ts +26 -0
  6. package/dist/server/server/agent/providers/claude/transport/pty-query.js +108 -6
  7. package/dist/server/web-ui/_expo/static/js/web/{index-56443c4ee726ad022938cfa50ba09aee.js → index-46b675f5daddb88c514f0eee26695f71.js} +5 -5
  8. package/dist/server/web-ui/_expo/static/js/web/index-46b675f5daddb88c514f0eee26695f71.js.br +0 -0
  9. package/dist/server/web-ui/_expo/static/js/web/index-46b675f5daddb88c514f0eee26695f71.js.gz +0 -0
  10. package/dist/server/web-ui/_expo/static/js/web/{index-56443c4ee726ad022938cfa50ba09aee.js.map.br → index-46b675f5daddb88c514f0eee26695f71.js.map.br} +0 -0
  11. package/dist/server/web-ui/_expo/static/js/web/{index-56443c4ee726ad022938cfa50ba09aee.js.map.gz → index-46b675f5daddb88c514f0eee26695f71.js.map.gz} +0 -0
  12. package/dist/server/web-ui/index.html +1 -1
  13. package/dist/server/web-ui/index.html.br +0 -0
  14. package/dist/server/web-ui/index.html.gz +0 -0
  15. package/package.json +6 -6
  16. package/dist/server/web-ui/_expo/static/js/web/index-56443c4ee726ad022938cfa50ba09aee.js.br +0 -0
  17. package/dist/server/web-ui/_expo/static/js/web/index-56443c4ee726ad022938cfa50ba09aee.js.gz +0 -0
@@ -296,6 +296,16 @@ export declare class ClaudeAgentSession implements AgentSession {
296
296
  * Scoped to questions on purpose: a plan dialog's options are the CLI's and version-
297
297
  * dependent, so guessing an index there could approve an implementation nobody chose.
298
298
  */
299
+ /**
300
+ * Surface a delivery-path notice to whoever sent the message.
301
+ *
302
+ * Uses the same synthetic-timeline-message channel executeRewindTurn() already uses, so
303
+ * this needs no protocol change and renders in every client that renders a turn today.
304
+ * The alternative, PtyQuery.emit(), is the SDK message stream, where the only shapes
305
+ * available are `result` messages -- and a result ENDS the turn, which is the opposite
306
+ * of what a "still queued" notice means.
307
+ */
308
+ private emitPtyNotice;
299
309
  private handlePtyDialogChange;
300
310
  /** Map the app's chosen answer back to the dialog's option index and press the keys. */
301
311
  private answerPtyDialogFromPermission;
@@ -2568,6 +2568,7 @@ export class ClaudeAgentSession {
2568
2568
  : undefined,
2569
2569
  logger: this.logger,
2570
2570
  onDialogChange: (dialog) => this.handlePtyDialogChange(dialog),
2571
+ onNotice: (text) => this.emitPtyNotice(text),
2571
2572
  });
2572
2573
  this.activeTransport = ptySession.transport;
2573
2574
  this.query = ptySession.query;
@@ -3660,6 +3661,22 @@ export class ClaudeAgentSession {
3660
3661
  * Scoped to questions on purpose: a plan dialog's options are the CLI's and version-
3661
3662
  * dependent, so guessing an index there could approve an implementation nobody chose.
3662
3663
  */
3664
+ /**
3665
+ * Surface a delivery-path notice to whoever sent the message.
3666
+ *
3667
+ * Uses the same synthetic-timeline-message channel executeRewindTurn() already uses, so
3668
+ * this needs no protocol change and renders in every client that renders a turn today.
3669
+ * The alternative, PtyQuery.emit(), is the SDK message stream, where the only shapes
3670
+ * available are `result` messages -- and a result ENDS the turn, which is the opposite
3671
+ * of what a "still queued" notice means.
3672
+ */
3673
+ emitPtyNotice(text) {
3674
+ this.notifySubscribers({
3675
+ type: "timeline",
3676
+ provider: "claude",
3677
+ item: { type: "assistant_message", text },
3678
+ });
3679
+ }
3663
3680
  handlePtyDialogChange(dialog) {
3664
3681
  if (!dialog) {
3665
3682
  const pendingId = this.ptyDialogRequestId;
@@ -25,6 +25,8 @@ export interface CreatePtySessionOptions {
25
25
  };
26
26
  /** Surfaces TUI question/plan dialogs so the provider can raise a permission request. */
27
27
  onDialogChange?: (dialog: PtyInteractiveDialog | null) => void;
28
+ /** Sender-facing notice from the delivery path (see PtyQueryOptions.onNotice). */
29
+ onNotice?: (text: string) => void;
28
30
  }
29
31
  export interface PtySession {
30
32
  transport: PtyTransport;
@@ -56,6 +56,7 @@ export async function createPtySession(opts) {
56
56
  sessionId: opts.sessionId,
57
57
  logger: opts.logger,
58
58
  ...(opts.onDialogChange ? { onDialogChange: opts.onDialogChange } : {}),
59
+ ...(opts.onNotice ? { onNotice: opts.onNotice } : {}),
59
60
  });
60
61
  opts.logger.debug({ pid: transport.context().pid, sessionId: opts.sessionId, transcriptPath }, "PTY claude session spawned");
61
62
  return { transport, query, transcriptPath, systemPromptFilePath };
@@ -31,6 +31,16 @@ export interface PtyQueryOptions {
31
31
  * the real options instead of an inert tool chip nobody can answer.
32
32
  */
33
33
  onDialogChange?: (dialog: PtyInteractiveDialog | null) => void;
34
+ /**
35
+ * Called with a short, sender-facing sentence when paseo knows something the person who
36
+ * sent the message cannot see. Today that is exactly one thing: the message was accepted
37
+ * but QUEUED behind a running turn, so the spinner they are looking at means "waiting in
38
+ * line", not "working on it".
39
+ *
40
+ * Everything PtyQuery already knew about this went to recordLine(), which appends to
41
+ * ~/.paseo/pty-recordings/<id>.log and reaches nobody.
42
+ */
43
+ onNotice?: (text: string) => void;
34
44
  }
35
45
  export declare class PtyQuery implements AsyncGenerator<SDKMessage, void> {
36
46
  private readonly transport;
@@ -40,6 +50,9 @@ export declare class PtyQuery implements AsyncGenerator<SDKMessage, void> {
40
50
  private readonly logger;
41
51
  private readonly reader;
42
52
  private readonly onDialogChange;
53
+ private readonly onNotice;
54
+ /** One queued notice per message, not one per retry. Reset by deliverPrompt(). */
55
+ private queuedNoticeSent;
43
56
  private readonly outQueue;
44
57
  private readonly outResolvers;
45
58
  private done;
@@ -192,6 +205,19 @@ export declare class PtyQuery implements AsyncGenerator<SDKMessage, void> {
192
205
  * pasted chip is dropped the same way. Best-effort: a transport that cannot take raw
193
206
  * keys just leaves the composer as it was.
194
207
  */
208
+ /**
209
+ * Is the TUI currently showing its "queued messages" footer?
210
+ *
211
+ * This reads a CLI STATUS LINE, not a rendering of our own text. The distinction matters
212
+ * because this file has (rightly) burned four incidents on trusting renderings as proof
213
+ * of DELIVERY -- bytes, then echoed text, then a raw probe, then a paste chip. Delivery
214
+ * is still proved by one thing only, a matching `user` record. The footer answers a
215
+ * different and much cheaper question: is a turn running right now. The CLI is the
216
+ * authority on that, and it prints the answer.
217
+ */
218
+ private queuedFooterVisible;
219
+ /** Tell the sender their message is in line, once per message. */
220
+ private notifyQueued;
195
221
  private clearComposer;
196
222
  /**
197
223
  * Deliver a prompt and prove it, or say it failed. See docs/pty-delivery.md.
@@ -102,6 +102,33 @@ const RECEIPT_EXACT_MATCH_BELOW_CHARS = 12;
102
102
  const RECEIPT_WINDOW_MS = 4000;
103
103
  /** A queued message can only land when the running turn ends, so wait far longer for it. */
104
104
  const QUEUED_RECEIPT_WINDOW_MS = 10 * 60000;
105
+ /**
106
+ * The TUI's own words for "your message is in the queue".
107
+ *
108
+ * A message typed while a turn is running is QUEUED by claude, and a queued message
109
+ * appends NO `user` record until the running turn ends -- so the one delivery oracle
110
+ * (receiptSince) cannot fire, by construction, for minutes at a time. The old test for
111
+ * "is a turn running" was `lastTranscriptAt > attemptStartedAt`, i.e. "did the transcript
112
+ * grow during my 4s window". That is a proxy, and it reads FALSE whenever the running
113
+ * turn is simply quiet for four seconds (thinking, or one slow tool call). When it reads
114
+ * false the loop concludes the terminal is deaf and retypes.
115
+ *
116
+ * Retyping a QUEUED message is not idempotent: the composer is empty (the text already
117
+ * left it), so Ctrl+U clears nothing and the retype either stacks a second queued copy or
118
+ * concatenates onto text the clear failed to kill. Observed live 2026-08-20 on session
119
+ * 0b1ec622, four retries logged at 18:28:13 / 18:29:59 / 18:30:06 / 18:30:14 / 18:30:27,
120
+ * producing these transcript records:
121
+ *
122
+ * mint another xpmint another xp
123
+ * a new one with another cpf: 76797678153, caixaa new one with another cpf: ...
124
+ *
125
+ * The terminal was stating the answer the whole time. Paseo's own turn heartbeat captured
126
+ * it at 18:30:15: `... Press up to edit queued messages - esc to interrupt`. This reads
127
+ * that footer instead of inferring it from file growth.
128
+ */
129
+ const QUEUED_FOOTER_RE = /Press up to edit queued messages/i;
130
+ /** How much of the tail to scan for the footer. It is repainted on every frame. */
131
+ const QUEUED_FOOTER_SCAN_CHARS = 2000;
105
132
  /** Backoff between retype attempts against a deaf terminal. */
106
133
  const DEAF_RETRY_INITIAL_MS = 2000;
107
134
  const DEAF_RETRY_MAX_MS = 60000;
@@ -211,6 +238,8 @@ function monotonicNowMs() {
211
238
  }
212
239
  export class PtyQuery {
213
240
  constructor(opts) {
241
+ /** One queued notice per message, not one per retry. Reset by deliverPrompt(). */
242
+ this.queuedNoticeSent = false;
214
243
  // output queue → async iterator
215
244
  this.outQueue = [];
216
245
  this.outResolvers = [];
@@ -270,6 +299,7 @@ export class PtyQuery {
270
299
  this.logger = opts.logger;
271
300
  this.stallTimeoutMs = opts.stallTimeoutMs ?? TURN_STALL_TIMEOUT_MS;
272
301
  this.onDialogChange = opts.onDialogChange ?? null;
302
+ this.onNotice = opts.onNotice ?? null;
273
303
  this.reader = new TranscriptSdkReader({
274
304
  transcriptPath: opts.transcriptPath,
275
305
  onMessage: (m) => this.onTranscriptMessage(m),
@@ -788,9 +818,60 @@ export class PtyQuery {
788
818
  * pasted chip is dropped the same way. Best-effort: a transport that cannot take raw
789
819
  * keys just leaves the composer as it was.
790
820
  */
821
+ /**
822
+ * Is the TUI currently showing its "queued messages" footer?
823
+ *
824
+ * This reads a CLI STATUS LINE, not a rendering of our own text. The distinction matters
825
+ * because this file has (rightly) burned four incidents on trusting renderings as proof
826
+ * of DELIVERY -- bytes, then echoed text, then a raw probe, then a paste chip. Delivery
827
+ * is still proved by one thing only, a matching `user` record. The footer answers a
828
+ * different and much cheaper question: is a turn running right now. The CLI is the
829
+ * authority on that, and it prints the answer.
830
+ */
831
+ queuedFooterVisible() {
832
+ return QUEUED_FOOTER_RE.test(this.terminalTail.slice(-QUEUED_FOOTER_SCAN_CHARS));
833
+ }
834
+ /** Tell the sender their message is in line, once per message. */
835
+ notifyQueued() {
836
+ if (this.queuedNoticeSent)
837
+ return;
838
+ this.queuedNoticeSent = true;
839
+ try {
840
+ this.onNotice?.("Your message was accepted and is queued behind the turn this session is already " +
841
+ "running. It will start as soon as that turn finishes.");
842
+ }
843
+ catch (err) {
844
+ this.logger.debug({ err }, "PtyQuery: queued notice callback threw");
845
+ }
846
+ }
791
847
  async clearComposer() {
792
848
  try {
793
- await this.transport.writeRaw?.("\u0015");
849
+ // Ctrl+E (end of line), Ctrl+U (kill to start), Ctrl+K (kill to end).
850
+ //
851
+ // Ctrl+U alone was not enough. In a readline-style buffer it kills from the CURSOR
852
+ // to the start of the line: it empties the composer only when the cursor already
853
+ // sits at the end, and it never touches what is after the cursor. Live 2026-08-20 a
854
+ // retype landed ON TOP of text a Ctrl+U was supposed to have killed, which is how
855
+ // session 0b1ec622 got these into its transcript:
856
+ //
857
+ // mint another xpmint another xp
858
+ // a new one with another cpf: 76797678153, caixaa new one with another cpf: ...
859
+ //
860
+ // This sequence is cursor-position independent and idempotent: all three keys are
861
+ // no-ops on an already empty composer, so it cannot damage the common case. Each
862
+ // gets its own beat, because the TUI only processes keys as fast as its input loop
863
+ // drains them.
864
+ //
865
+ // It makes the clear far more likely to succeed. It does NOT prove the composer is
866
+ // empty, and this file deliberately has no way to prove that: every signal for it is
867
+ // a rendering, and renderings are what four earlier incidents taught it not to
868
+ // trust. The real protection against duplication is not retyping at all once the
869
+ // text has demonstrably left the composer -- the queued-footer guard in
870
+ // deliverPrompt(), which removes the case behind every duplicate observed so far.
871
+ for (const key of ["\u0005", "\u0015", "\u000b"]) {
872
+ await this.transport.writeRaw?.(key);
873
+ await delay(60);
874
+ }
794
875
  await delay(120);
795
876
  }
796
877
  catch (err) {
@@ -809,6 +890,7 @@ export class PtyQuery {
809
890
  * running turn is never retyped - that is the one way to send it twice.
810
891
  */
811
892
  async deliverPrompt(text) {
893
+ this.queuedNoticeSent = false;
812
894
  const fingerprint = PtyQuery.fingerprint(text);
813
895
  const watermark = this.transcriptSize();
814
896
  const deadline = monotonicNowMs() + READY_BUSY_MAX_WAIT_MS;
@@ -833,15 +915,35 @@ export class PtyQuery {
833
915
  return "delivered";
834
916
  }
835
917
  // No receipt. Is a turn actually RUNNING (so our text is queued behind it), or was
836
- // the Enter simply swallowed? File growth cannot tell those apart: claude writes
837
- // `attachment` and other bookkeeping records on its own schedule, and treating that
838
- // as "queued" would sit here for ten minutes while the prompt was never submitted
839
- // (the 2026-08-01 bug, in reverse). Real SDK messages arriving IS a running turn.
840
- if (this.lastTranscriptAt > attemptStartedAt) {
918
+ // the Enter simply swallowed? Two independent signals, ORed on purpose:
919
+ //
920
+ // - the TUI's own queued footer, which is the CLI stating the fact outright, and
921
+ // - real SDK messages arriving during this attempt, the original heuristic.
922
+ //
923
+ // File growth alone cannot tell queued from swallowed: claude writes `attachment`
924
+ // and other bookkeeping records on its own schedule, and treating that as "queued"
925
+ // would sit here for ten minutes while the prompt was never submitted (the
926
+ // 2026-08-01 bug, in reverse). But it also misses the common case, a running turn
927
+ // that is quiet for the four-second receipt window, and the cost of missing it is a
928
+ // retype that corrupts the queued prompt. The footer settles that case directly.
929
+ if (this.queuedFooterVisible() || this.lastTranscriptAt > attemptStartedAt) {
841
930
  this.recordLine("--- no receipt yet; queued behind a running turn ---");
931
+ // Say so where the sender can see it. Once per message, not once per poll.
932
+ this.notifyQueued();
842
933
  const late = await pollUntil(() => this.receiptSince(watermark, fingerprint), QUEUED_RECEIPT_WINDOW_MS, 500);
843
934
  if (late)
844
935
  return "delivered";
936
+ // Queued, and still no receipt after the full window. Do NOT fall through to the
937
+ // retype: the text is demonstrably out of the composer, so retyping cannot undo
938
+ // anything and can only stack a duplicate.
939
+ //
940
+ // "unconfirmed", never "undelivered". They are not interchangeable here:
941
+ // `undelivered` makes the caller emit buildSubmitFailedResult(), whose text is
942
+ // "Nothing was sent, so please send it again" -- a lie about a message sitting in
943
+ // claude's queue, and an instruction that produces the exact duplicate this branch
944
+ // exists to prevent. `unconfirmed` means "accepted, start not observed", which is
945
+ // true, and the stall backstop is already the right net for it.
946
+ return "unconfirmed";
845
947
  }
846
948
  this.logger.warn({ sessionId: this.sessionId, attempt, nextRetryMs: backoff }, "PtyQuery: no delivery receipt for the prompt; retrying");
847
949
  this.recordLine(`--- no delivery receipt (attempt ${attempt}); retrying in ${Math.round(backoff / 1000)}s ---`);
@@ -1103,7 +1103,7 @@ __d(function(g,r,_i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?
1103
1103
  __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return N}}),Object.defineProperty(_e,"AppOwnership",{enumerable:!0,get:function(){return l.AppOwnership}}),Object.defineProperty(_e,"ExecutionEnvironment",{enumerable:!0,get:function(){return l.ExecutionEnvironment}}),Object.defineProperty(_e,"UserInterfaceIdiom",{enumerable:!0,get:function(){return l.UserInterfaceIdiom}});var n=e(r(d[0])),t=r(d[1]);r(d[2]);var u=e(r(d[3])),l=r(d[4]),o=e(r(d[5]));o.default||console.warn("No native ExponentConstants module found, are you sure the expo-constants's module is linked properly?");const s=(0,t.requireOptionalNativeModule)('ExpoUpdates');let f=null;if(s){let e;s.manifest?e=s.manifest:s.manifestString&&(e=JSON.parse(s.manifestString)),e&&Object.keys(e).length>0&&(f=e)}let c=null;if(u.default.EXDevLauncher){let e;u.default.EXDevLauncher.manifestString&&(e=JSON.parse(u.default.EXDevLauncher.manifestString)),e&&Object.keys(e).length>0&&(c=e)}let p=null;if(o.default&&o.default.manifest){const e=o.default.manifest;p='string'==typeof e?JSON.parse(e):e}let b=f??c??p;const E=o.default||{},{appOwnership:O}=E,x=(0,n.default)(E,["name","appOwnership"]),v=Object.assign({},x,{appOwnership:O??null});function _(e){return!h(e)}function h(e){return'metadata'in e}function S(e=!1){if(!b){const e=null===b?'null':'undefined';if(x.executionEnvironment,l.ExecutionEnvironment.Bare,x.executionEnvironment===l.ExecutionEnvironment.StoreClient||x.executionEnvironment===l.ExecutionEnvironment.Standalone)throw new t.CodedError('ERR_CONSTANTS_MANIFEST_UNAVAILABLE',`Constants.manifest is ${e}, must be an object.`)}return b}Object.defineProperties(v,{__unsafeNoWarnManifest:{get(){const e=S(!0);return e&&_(e)?e:null},enumerable:!1},__unsafeNoWarnManifest2:{get(){const e=S(!0);return e&&h(e)?e:null},enumerable:!1},manifest:{get(){const e=S();return e&&_(e)?e:null},enumerable:!0},manifest2:{get(){const e=S();return e&&h(e)?e:null},enumerable:!0},expoConfig:{get(){const e=S(!0);return e?s&&s.isEmbeddedLaunch?p:h(e)?e.extra?.expoClient??null:_(e)?e:null:null},enumerable:!0},expoGoConfig:{get(){const e=S(!0);return e?h(e)?e.extra?.expoGo??null:_(e)?e:null:null},enumerable:!0},easConfig:{get(){const e=S(!0);return e?h(e)?e.extra?.eas??null:_(e)?e:null:null},enumerable:!0},__rawManifest_TEST:{get:()=>b,set(e){b=e},enumerable:!1}});var N=v},1006,[35,4,25,1007,1008,1009]);
1104
1104
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return u}});var e,t=r(d[0]),u={UIManager:((e=t)&&e.__esModule?e:{default:e}).default}},1007,[159]);
1105
1105
  __d(function(g,r,i,a,m,e,d){"use strict";var t,n,o;Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"AppOwnership",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"ExecutionEnvironment",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"UserInterfaceIdiom",{enumerable:!0,get:function(){return o}}),(function(t){t.Expo="expo"})(t||(t={})),(function(t){t.Bare="bare",t.Standalone="standalone",t.StoreClient="storeClient"})(n||(n={})),(function(t){t.Handset="handset",t.Tablet="tablet",t.Desktop="desktop",t.TV="tv",t.Unsupported="unsupported"})(o||(o={}))},1008,[]);
1106
- __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return s}});var t=r(d[0]);const n=(Date.now()+'-'+Math.floor(1e9*Math.random())).toString();function o(){if('undefined'!=typeof navigator&&'string'==typeof navigator.userAgent){const t=navigator.userAgent.toLowerCase();if(t.includes('edge'))return'Edge';if(t.includes('edg'))return'Chromium Edge';if(t.includes('opr')&&'opr'in window&&window.opr)return'Opera';if(t.includes('chrome')&&'chrome'in window&&window.chrome)return'Chrome';if(t.includes('trident'))return'IE';if(t.includes('firefox'))return'Firefox';if(t.includes('safari'))return'Safari'}}var s={get appOwnership(){return null},get executionEnvironment(){return t.ExecutionEnvironment.Bare},get sessionId(){return n},get isHeadless(){return'undefined'==typeof navigator||/\bHeadlessChrome\//.test(navigator.userAgent)},get expoVersion(){return this.manifest.sdkVersion||null},get linkingUri(){return'undefined'!=typeof location?location.origin:''},get expoRuntimeVersion(){return this.expoVersion},get deviceName(){return o()},get systemFonts(){return[]},get statusBarHeight(){return 0},get deviceYearClass(){return null},get manifest(){return"{\"name\":\"Paseo\",\"slug\":\"paseo-hyperdrive\",\"version\":\"0.3.38\",\"orientation\":\"portrait\",\"icon\":\"./assets/images/icon.png\",\"scheme\":\"paseo\",\"userInterfaceStyle\":\"automatic\",\"newArchEnabled\":true,\"web\":{\"output\":\"single\",\"favicon\":\"./assets/images/favicon.png\",\"shortName\":\"Paseo\",\"orientation\":\"portrait\",\"name\":\"Paseo\"},\"autolinking\":{\"searchPaths\":[\"../../node_modules\",\"./node_modules\"]},\"experiments\":{\"typedRoutes\":true,\"reactCompiler\":true,\"autolinkingModuleResolution\":true},\"extra\":{\"router\":{},\"eas\":{\"build\":{\"experimental\":{\"ios\":{\"appExtensions\":[{\"bundleIdentifier\":\"bot.hyperdrive.paseo.AgentActivity\",\"targetName\":\"AgentActivity\"}]}}}}},\"sdkVersion\":\"54.0.0\",\"platforms\":[\"ios\",\"android\",\"web\"]}"},get manifest2(){return null},get experienceUrl(){return'undefined'!=typeof location?location.origin:''},get debugMode(){return!1},getWebViewUserAgentAsync:async()=>'undefined'!=typeof navigator?navigator.userAgent:null}},1009,[1008]);
1106
+ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return s}});var t=r(d[0]);const n=(Date.now()+'-'+Math.floor(1e9*Math.random())).toString();function o(){if('undefined'!=typeof navigator&&'string'==typeof navigator.userAgent){const t=navigator.userAgent.toLowerCase();if(t.includes('edge'))return'Edge';if(t.includes('edg'))return'Chromium Edge';if(t.includes('opr')&&'opr'in window&&window.opr)return'Opera';if(t.includes('chrome')&&'chrome'in window&&window.chrome)return'Chrome';if(t.includes('trident'))return'IE';if(t.includes('firefox'))return'Firefox';if(t.includes('safari'))return'Safari'}}var s={get appOwnership(){return null},get executionEnvironment(){return t.ExecutionEnvironment.Bare},get sessionId(){return n},get isHeadless(){return'undefined'==typeof navigator||/\bHeadlessChrome\//.test(navigator.userAgent)},get expoVersion(){return this.manifest.sdkVersion||null},get linkingUri(){return'undefined'!=typeof location?location.origin:''},get expoRuntimeVersion(){return this.expoVersion},get deviceName(){return o()},get systemFonts(){return[]},get statusBarHeight(){return 0},get deviceYearClass(){return null},get manifest(){return"{\"name\":\"Paseo\",\"slug\":\"paseo-hyperdrive\",\"version\":\"0.3.39\",\"orientation\":\"portrait\",\"icon\":\"./assets/images/icon.png\",\"scheme\":\"paseo\",\"userInterfaceStyle\":\"automatic\",\"newArchEnabled\":true,\"web\":{\"output\":\"single\",\"favicon\":\"./assets/images/favicon.png\",\"shortName\":\"Paseo\",\"orientation\":\"portrait\",\"name\":\"Paseo\"},\"autolinking\":{\"searchPaths\":[\"../../node_modules\",\"./node_modules\"]},\"experiments\":{\"typedRoutes\":true,\"reactCompiler\":true,\"autolinkingModuleResolution\":true},\"extra\":{\"router\":{},\"eas\":{\"build\":{\"experimental\":{\"ios\":{\"appExtensions\":[{\"bundleIdentifier\":\"bot.hyperdrive.paseo.AgentActivity\",\"targetName\":\"AgentActivity\"}]}}}}},\"sdkVersion\":\"54.0.0\",\"platforms\":[\"ios\",\"android\",\"web\"]}"},get manifest2(){return null},get experienceUrl(){return'undefined'!=typeof location?location.origin:''},get debugMode(){return!1},getWebViewUserAgentAsync:async()=>'undefined'!=typeof navigator?navigator.userAgent:null}},1009,[1008]);
1107
1107
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return u}});var e,t=r(d[0]),n=r(d[1]),o=(e=n)&&e.__esModule?e:{default:e};async function u(){if(!o.default.unregisterForNotificationsAsync)throw new t.UnavailabilityError('ExpoNotifications','unregisterForNotificationsAsync');return o.default.unregisterForNotificationsAsync()}},1010,[4,1011]);
1108
1108
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return n}}),r(d[0]);let t=!1;var n={addListener:()=>(t||(console.warn("[expo-notifications] Listening to push token changes is not yet fully supported on web. Adding a listener will have no effect."),t=!0),{remove:()=>{}}),removeListener:()=>{},removeAllListeners:()=>{},emit:()=>{},listenerCount:()=>0}},1011,[4]);
1109
1109
  __d(function(g,r,i,a,m,_e,_d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),Object.defineProperty(_e,"default",{enumerable:!0,get:function(){return u}});var t=(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach(function(o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}),t.default=e,t})(r(_d[0])),o=e(r(_d[1])),n=r(_d[2]),c=r(_d[3]),s=e(r(_d[4])),d=e(r(_d[5]));const p='https://exp.host/--/api/v2/';async function u(e={}){const s=e.devicePushToken||await(0,d.default)(),u=e.deviceId||await h(),R=e.projectId||o.default.easConfig?.projectId||o.default.expoConfig?.extra?.eas?.projectId;if(!R)throw new n.CodedError('ERR_NOTIFICATIONS_NO_EXPERIENCE_ID',"No \"projectId\" found. If \"projectId\" can't be inferred from the manifest (for instance, in bare workflow), you have to pass it in yourself.");const w=e.applicationId||t.applicationId;if(!w)throw new n.CodedError('ERR_NOTIFICATIONS_NO_APPLICATION_ID',"No \"applicationId\" found. If it can't be inferred from native configuration by expo-application, you have to pass it in yourself.");const O=e.type||y(s),_=e.development||await I(),v=e.baseUrl??p,N=e.url??`${v}push/getExpoPushToken`,x={type:O,deviceId:u.toLowerCase(),development:_,appId:w,deviceToken:E(s),projectId:R},T=await fetch(N,{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify(x)}).catch(e=>{throw new n.CodedError('ERR_NOTIFICATIONS_NETWORK_ERROR',`Error encountered while fetching Expo token: ${e}.`)});if(!T.ok){const e=T.statusText||T.status;let t;try{t=await T.text()}catch{}throw new n.CodedError('ERR_NOTIFICATIONS_SERVER_ERROR',`Error encountered while fetching Expo token, expected an OK response, received: ${e} (body: "${t}").`)}const b=l(await f(T));try{e.url||e.baseUrl?console.debug("[expo-notifications] Since the URL endpoint to register in has been customized in the options, expo-notifications won't try to auto-update the device push token on the server."):await(0,c.setAutoServerRegistrationEnabledAsync)(!0)}catch(e){console.warn('[expo-notifications] Could not enable automatically registering new device tokens with the Expo notification service',e)}return{type:'expo',data:b}}async function f(e){try{return await e.json()}catch{try{throw new n.CodedError('ERR_NOTIFICATIONS_SERVER_ERROR',`Expected a JSON response from server when fetching Expo token, received body: ${JSON.stringify(await e.text())}.`)}catch{throw new n.CodedError('ERR_NOTIFICATIONS_SERVER_ERROR',`Expected a JSON response from server when fetching Expo token, received response: ${JSON.stringify(e)}.`)}}}function l(e){if(!e||'object'!=typeof e||!e.data||'object'!=typeof e.data||!e.data.expoPushToken||'string'!=typeof e.data.expoPushToken)throw new n.CodedError('ERR_NOTIFICATIONS_SERVER_ERROR',`Malformed response from server, expected "{ data: { expoPushToken: string } }", received: ${JSON.stringify(e,null,2)}.`);return e.data.expoPushToken}async function h(){try{if(!s.default.getInstallationIdAsync)throw new n.UnavailabilityError('ExpoServerRegistrationModule','getInstallationIdAsync');return await s.default.getInstallationIdAsync()}catch(e){throw new n.CodedError('ERR_NOTIF_DEVICE_ID',`Could not have fetched installation ID of the application: ${e}.`)}}function E(e){return'string'==typeof e.data?e.data:JSON.stringify(e.data)}async function I(){return!1}function y(e){switch(e.type){case'ios':return'apns';case'android':return'fcm';default:return e.type}}},1012,[1013,1006,4,1016,1020,1005]);
@@ -15048,7 +15048,7 @@ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{v
15048
15048
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"decodeOfferFragmentPayload",{enumerable:!0,get:function(){return n.decodeOfferFragmentPayload}}),Object.defineProperty(e,"buildDaemonWebSocketUrl",{enumerable:!0,get:function(){return t.buildDaemonWebSocketUrl}}),Object.defineProperty(e,"deriveLabelFromEndpoint",{enumerable:!0,get:function(){return t.deriveLabelFromEndpoint}}),Object.defineProperty(e,"extractHostPortFromWebSocketUrl",{enumerable:!0,get:function(){return t.extractHostPortFromWebSocketUrl}}),Object.defineProperty(e,"normalizeHostPort",{enumerable:!0,get:function(){return t.normalizeHostPort}}),Object.defineProperty(e,"parseConnectionUri",{enumerable:!0,get:function(){return t.parseConnectionUri}}),Object.defineProperty(e,"parseHostPort",{enumerable:!0,get:function(){return t.parseHostPort}}),Object.defineProperty(e,"serializeConnectionUri",{enumerable:!0,get:function(){return t.serializeConnectionUri}}),Object.defineProperty(e,"serializeConnectionUriForStorage",{enumerable:!0,get:function(){return t.serializeConnectionUriForStorage}}),Object.defineProperty(e,"shouldUseTlsForDefaultHostedRelay",{enumerable:!0,get:function(){return t.shouldUseTlsForDefaultHostedRelay}}),e.buildRelayWebSocketUrl=function(n){return(0,t.buildRelayWebSocketUrl)(Object.assign({},n,{role:"client"}))};var t=r(d[0]),n=r(d[1])},3403,[3383,3404]);
15049
15049
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"ConnectionOfferV2Schema",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"ConnectionOfferSchema",{enumerable:!0,get:function(){return o}}),e.decodeOfferFragmentPayload=l,e.parseConnectionOfferFromUrl=function(n){const t=f(n);if(!t)return null;const c=l(t);return o.parse(c)};var n=r(d[0]);const t=n.z.object({v:n.z.literal(2),serverId:n.z.string().min(1),daemonPublicKeyB64:n.z.string().min(1),relay:n.z.object({endpoint:n.z.string().min(1),useTls:n.z.boolean().optional()})}),o=t;function c(n){const t=n.replace(/-/g,"+").replace(/_/g,"/"),o=t.padEnd(t.length+(4-t.length%4)%4,"="),c=globalThis.atob(o),l=Uint8Array.from(c,n=>n.charCodeAt(0));return new TextDecoder("utf-8",{fatal:!0}).decode(l)}function l(n){const t=c(n);return JSON.parse(t)}const u="#offer=";function f(n){const t=n.trim();if(!t)return null;const o=t.indexOf(u);if(-1===o)return null;const c=t.slice(o+u.length).trim();return c.length>0?c:null}},3404,[3282]);
15050
15050
  __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.resolveAppVersion=function(){const e=u(t.default?.version);if(e)return e;const o=u(n.default.expoConfig?.version);if(o)return o;const f=u(n.default.manifest?.version);if(f)return f;return null};var n=e(r(d[0])),t=e(r(d[1]));function u(e){if("string"!=typeof e)return null;const n=e.trim();return 0===n.length?null:n}},3405,[1006,3406]);
15051
- __d(function(e,t,r,a,o,i,n){o.exports={name:"@hyperdrive.bot/paseo-app",version:"0.3.38",private:!0,main:"index.ts",scripts:{start:"npm run start:expo","start:expo":"cross-env APP_VARIANT=development expo start","reset-project":"node ./scripts/reset-project.js","build:terminal-webview":"node ./scripts/build-terminal-webview-html.mjs","eas-build-post-install":"npm --prefix ../.. run build:app-deps && npm run build:terminal-webview",android:"npm run android:development","android:development":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=development expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=development expo run:android --variant=debug","android:production":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=production expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=production expo run:android --variant=release","android:release":"npm run android:production","android:clear":"node -e \"require('node:fs').rmSync('android', { recursive: true, force: true })\"",ios:"npm --prefix ../.. run build:client && expo run:ios","ios:release":"npm --prefix ../.. run build:client && expo run:ios --configuration Release",web:"npm --prefix ../.. run build:client && concurrently --kill-others --names protocol,client,expo --prefix-colors yellow,blue,magenta \"npm --prefix ../.. run watch:protocol\" \"npm --prefix ../.. run watch:client\" \"npm run web:expo\"","web:expo":"expo start --web",lint:"expo lint",typecheck:"tsgo --noEmit",test:"vitest run","test:browser":"vitest run --project browser","test:e2e":"playwright test --project='Desktop Chrome'","test:e2e:real":"cross-env E2E_FORK_PASEO_HOME_FROM=../../.dev/paseo-home playwright test --project=real-provider","test:e2e:ui":"playwright test --ui","test:coverage":"vitest run --project unit --coverage",build:"npm run build:web","build:web":"npm --prefix ../.. run build:app-deps && expo export --platform web --source-maps","profile:workspace-tabs":"node ./scripts/profile-workspace-tabs.mjs","deploy:web":"npm run build:web && wrangler pages deploy dist --project-name paseo-app --branch main"},dependencies:{"@bacons/apple-targets":"4.0.6","@datadog/browser-rum":"^6.23.0","@datadog/browser-rum-react":"^6.23.0","@datadog/mobile-react-native":"^2.7.0","@datadog/mobile-react-native-session-replay":"^2.14.8","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@expo/image-utils":"0.8.8","@expo/plist":"0.4.9","@expo/prebuild-config":"54.0.8","@floating-ui/react-native":"^0.10.7","@gorhom/bottom-sheet":"^5.2.14","@gorhom/portal":"^1.0.14","@hyperdrive.bot/paseo-client":"*","@hyperdrive.bot/paseo-expo-two-way-audio":"*","@hyperdrive.bot/paseo-extension-sdk":"*","@hyperdrive.bot/paseo-highlight":"*","@react-native-async-storage/async-storage":"2.2.0","@react-native-masked-view/masked-view":"^0.3.2","@react-native/normalize-colors":"^0.81.5","@react-navigation/native":"^7.1.8","@sentry/electron":"^6.11.0","@sentry/react-native":"^6.20.0","@tanstack/react-query":"^5.90.11","@tanstack/react-virtual":"^3.13.21","@xterm/addon-clipboard":"^0.3.0-beta.213","@xterm/addon-fit":"^0.12.0-beta.213","@xterm/addon-image":"^0.10.0-beta.213","@xterm/addon-ligatures":"0.11.0-beta.213","@xterm/addon-search":"^0.17.0-beta.213","@xterm/addon-unicode11":"^0.10.0-beta.213","@xterm/addon-web-links":"^0.13.0-beta.213","@xterm/addon-webgl":"^0.20.0-beta.212","@xterm/xterm":"^6.1.0-beta.213",buffer:"^6.0.3",expo:"^54.0.18","expo-asset":"~12.0.12","expo-audio":"~1.0.13","expo-background-fetch":"~14.0.9","expo-build-properties":"^1.0.9","expo-camera":"~17.0.10","expo-clipboard":"~8.0.7","expo-constants":"~18.0.9","expo-crypto":"^15.0.8","expo-dev-client":"^6.0.15","expo-document-picker":"~14.0.8","expo-file-system":"~19.0.17","expo-haptics":"~15.0.7","expo-image":"~3.0.10","expo-image-manipulator":"~14.0.8","expo-image-picker":"^17.0.8","expo-keep-awake":"^15.0.7","expo-linking":"~8.0.8","expo-localization":"~17.0.9","expo-notifications":"^0.32.16","expo-router":"~6.0.13","expo-sharing":"^14.0.8","expo-speech":"~14.0.8","expo-speech-recognition":"^56.0.1","expo-splash-screen":"~31.0.10","expo-system-ui":"~6.0.7","expo-task-manager":"~14.0.9","fast-deep-equal":"^3.1.3",htmlparser2:"^12.0.0",i18next:"^26.3.0","lucide-react-native":"^0.546.0","markdown-it":"^10.0.0","mnemonic-id":"^3.2.7",qrcode:"^1.5.4",react:"19.1.0","react-dom":"19.1.0","react-i18next":"^17.0.8","react-native":"0.81.5","react-native-draggable-flatlist":"^4.0.3","react-native-edge-to-edge":"^1.7.0","react-native-gesture-handler":"~2.28.0","react-native-keyboard-controller":"^1.21.7","react-native-markdown-display":"^7.0.2","react-native-nitro-modules":"0.35.5","react-native-reanimated":"~4.3.1","react-native-safe-area-context":"~5.6.0","react-native-screens":"~4.16.0","react-native-svg":"^15.14.0","react-native-uitextview":"^2.2.0","react-native-unistyles":"^3.2.4","react-native-web":"~0.21.0","react-native-webview":"^13.16.0","react-native-worklets":"~0.8.3","tiny-invariant":"^1.3.3","use-sync-external-store":"^1.6.0",zod:"^4.4.3",zustand:"^5.0.9"},devDependencies:{"@playwright/test":"^1.56.1","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.2","@types/chai":"^5.2.2","@types/markdown-it":"^14.1.2","@types/qrcode":"^1.5.6","@types/react":"~19.2.0","@types/ws":"^8.18.1","@vitest/browser":"^4.1.7","@vitest/browser-playwright":"^4.1.7","@vitest/coverage-v8":"^4.1.7","@xterm/headless":"^6.1.0-beta.213",dotenv:"^17.2.3",eslint:"^9.25.0","eslint-config-expo":"~10.0.0",jsdom:"^20.0.3","material-icon-theme":"^5.32.0",playwright:"^1.56.1","serve-sim":"^0.1.40",typescript:"~5.9.2",vitest:"^4.1.6",wrangler:"^4.105.0",ws:"^8.20.0"}}},3406,[]);
15051
+ __d(function(e,t,r,a,o,i,n){o.exports={name:"@hyperdrive.bot/paseo-app",version:"0.3.39",private:!0,main:"index.ts",scripts:{start:"npm run start:expo","start:expo":"cross-env APP_VARIANT=development expo start","reset-project":"node ./scripts/reset-project.js","build:terminal-webview":"node ./scripts/build-terminal-webview-html.mjs","eas-build-post-install":"npm --prefix ../.. run build:app-deps && npm run build:terminal-webview",android:"npm run android:development","android:development":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=development expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=development expo run:android --variant=debug","android:production":"npm --prefix ../.. run build:client && cross-env APP_VARIANT=production expo prebuild --platform android --non-interactive && cross-env APP_VARIANT=production expo run:android --variant=release","android:release":"npm run android:production","android:clear":"node -e \"require('node:fs').rmSync('android', { recursive: true, force: true })\"",ios:"npm --prefix ../.. run build:client && expo run:ios","ios:release":"npm --prefix ../.. run build:client && expo run:ios --configuration Release",web:"npm --prefix ../.. run build:client && concurrently --kill-others --names protocol,client,expo --prefix-colors yellow,blue,magenta \"npm --prefix ../.. run watch:protocol\" \"npm --prefix ../.. run watch:client\" \"npm run web:expo\"","web:expo":"expo start --web",lint:"expo lint",typecheck:"tsgo --noEmit",test:"vitest run","test:browser":"vitest run --project browser","test:e2e":"playwright test --project='Desktop Chrome'","test:e2e:real":"cross-env E2E_FORK_PASEO_HOME_FROM=../../.dev/paseo-home playwright test --project=real-provider","test:e2e:ui":"playwright test --ui","test:coverage":"vitest run --project unit --coverage",build:"npm run build:web","build:web":"npm --prefix ../.. run build:app-deps && expo export --platform web --source-maps","profile:workspace-tabs":"node ./scripts/profile-workspace-tabs.mjs","deploy:web":"npm run build:web && wrangler pages deploy dist --project-name paseo-app --branch main"},dependencies:{"@bacons/apple-targets":"4.0.6","@datadog/browser-rum":"^6.23.0","@datadog/browser-rum-react":"^6.23.0","@datadog/mobile-react-native":"^2.7.0","@datadog/mobile-react-native-session-replay":"^2.14.8","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@expo/image-utils":"0.8.8","@expo/plist":"0.4.9","@expo/prebuild-config":"54.0.8","@floating-ui/react-native":"^0.10.7","@gorhom/bottom-sheet":"^5.2.14","@gorhom/portal":"^1.0.14","@hyperdrive.bot/paseo-client":"*","@hyperdrive.bot/paseo-expo-two-way-audio":"*","@hyperdrive.bot/paseo-extension-sdk":"*","@hyperdrive.bot/paseo-highlight":"*","@react-native-async-storage/async-storage":"2.2.0","@react-native-masked-view/masked-view":"^0.3.2","@react-native/normalize-colors":"^0.81.5","@react-navigation/native":"^7.1.8","@sentry/electron":"^6.11.0","@sentry/react-native":"^6.20.0","@tanstack/react-query":"^5.90.11","@tanstack/react-virtual":"^3.13.21","@xterm/addon-clipboard":"^0.3.0-beta.213","@xterm/addon-fit":"^0.12.0-beta.213","@xterm/addon-image":"^0.10.0-beta.213","@xterm/addon-ligatures":"0.11.0-beta.213","@xterm/addon-search":"^0.17.0-beta.213","@xterm/addon-unicode11":"^0.10.0-beta.213","@xterm/addon-web-links":"^0.13.0-beta.213","@xterm/addon-webgl":"^0.20.0-beta.212","@xterm/xterm":"^6.1.0-beta.213",buffer:"^6.0.3",expo:"^54.0.18","expo-asset":"~12.0.12","expo-audio":"~1.0.13","expo-background-fetch":"~14.0.9","expo-build-properties":"^1.0.9","expo-camera":"~17.0.10","expo-clipboard":"~8.0.7","expo-constants":"~18.0.9","expo-crypto":"^15.0.8","expo-dev-client":"^6.0.15","expo-document-picker":"~14.0.8","expo-file-system":"~19.0.17","expo-haptics":"~15.0.7","expo-image":"~3.0.10","expo-image-manipulator":"~14.0.8","expo-image-picker":"^17.0.8","expo-keep-awake":"^15.0.7","expo-linking":"~8.0.8","expo-localization":"~17.0.9","expo-notifications":"^0.32.16","expo-router":"~6.0.13","expo-sharing":"^14.0.8","expo-speech":"~14.0.8","expo-speech-recognition":"^56.0.1","expo-splash-screen":"~31.0.10","expo-system-ui":"~6.0.7","expo-task-manager":"~14.0.9","fast-deep-equal":"^3.1.3",htmlparser2:"^12.0.0",i18next:"^26.3.0","lucide-react-native":"^0.546.0","markdown-it":"^10.0.0","mnemonic-id":"^3.2.7",qrcode:"^1.5.4",react:"19.1.0","react-dom":"19.1.0","react-i18next":"^17.0.8","react-native":"0.81.5","react-native-draggable-flatlist":"^4.0.3","react-native-edge-to-edge":"^1.7.0","react-native-gesture-handler":"~2.28.0","react-native-keyboard-controller":"^1.21.7","react-native-markdown-display":"^7.0.2","react-native-nitro-modules":"0.35.5","react-native-reanimated":"~4.3.1","react-native-safe-area-context":"~5.6.0","react-native-screens":"~4.16.0","react-native-svg":"^15.14.0","react-native-uitextview":"^2.2.0","react-native-unistyles":"^3.2.4","react-native-web":"~0.21.0","react-native-webview":"^13.16.0","react-native-worklets":"~0.8.3","tiny-invariant":"^1.3.3","use-sync-external-store":"^1.6.0",zod:"^4.4.3",zustand:"^5.0.9"},devDependencies:{"@playwright/test":"^1.56.1","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.2","@types/chai":"^5.2.2","@types/markdown-it":"^14.1.2","@types/qrcode":"^1.5.6","@types/react":"~19.2.0","@types/ws":"^8.18.1","@vitest/browser":"^4.1.7","@vitest/browser-playwright":"^4.1.7","@vitest/coverage-v8":"^4.1.7","@xterm/headless":"^6.1.0-beta.213",dotenv:"^17.2.3",eslint:"^9.25.0","eslint-config-expo":"~10.0.0",jsdom:"^20.0.3","material-icon-theme":"^5.32.0",playwright:"^1.56.1","serve-sim":"^0.1.40",typescript:"~5.9.2",vitest:"^4.1.6",wrangler:"^4.105.0",ws:"^8.20.0"}}},3406,[]);
15052
15052
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.shouldUseDesktopDaemon=function(){return(0,n.isElectronRuntime)()},e.getDesktopDaemonStatus=async function(){return c(await(0,t.invokeDesktopCommand)("desktop_daemon_status"))},e.startDesktopDaemon=async function(){return c(await(0,t.invokeDesktopCommand)("start_desktop_daemon"))},e.stopDesktopDaemon=async function(n="manual_ipc"){return c(await(0,t.invokeDesktopCommand)("stop_desktop_daemon",{reason:n}))},e.restartDesktopDaemon=async function(){return c(await(0,t.invokeDesktopCommand)("restart_desktop_daemon"))},e.getDesktopDaemonLogs=async function(){return p(await(0,t.invokeDesktopCommand)("desktop_daemon_logs"))},e.getDesktopDaemonPairing=async function(){return k(await(0,t.invokeDesktopCommand)("desktop_daemon_pairing"))},e.getCliDaemonStatus=async function(){const n=await(0,t.invokeDesktopCommand)("cli_daemon_status");if("string"!=typeof n)throw new Error("Unexpected CLI daemon status response.");return n},e.listenToLocalTransportEvents=async function(t){const u=(0,n.getDesktopHost)()?.events?.on;if("function"!=typeof u)throw new Error("Desktop events API is unavailable.");const c=await u("local-daemon-transport-event",n=>{o(n)&&t({sessionId:s(n.sessionId)??"",kind:s(n.kind)??"error",text:s(n.text),binaryBase64:s(n.binaryBase64),code:l(n.code),reason:s(n.reason),error:s(n.error)})});return"function"==typeof c?c:()=>{}},e.openLocalTransportSession=async function(n){const o=await(0,t.invokeDesktopCommand)("open_local_daemon_transport",n);if("string"!=typeof o||0===o.trim().length)throw new Error("Unexpected local transport session response.");return o},e.sendLocalTransportMessage=async function(n){await(0,t.invokeDesktopCommand)("send_local_daemon_transport_message",Object.assign({sessionId:n.sessionId},n.text?{text:n.text}:{},n.binaryBase64?{binaryBase64:n.binaryBase64}:{}))},e.closeLocalTransportSession=async function(n){await(0,t.invokeDesktopCommand)("close_local_daemon_transport",{sessionId:n})},e.getCliInstallStatus=async function(){return f(await(0,t.invokeDesktopCommand)("get_cli_install_status"))},e.installCli=async function(){return f(await(0,t.invokeDesktopCommand)("install_cli"))},e.getSkillsStatus=async function(){return y(await(0,t.invokeDesktopCommand)("get_skills_status"))},e.installSkills=async function(){return y(await(0,t.invokeDesktopCommand)("install_skills"))},e.updateSkills=async function(){return y(await(0,t.invokeDesktopCommand)("update_skills"))},e.uninstallSkills=async function(){return y(await(0,t.invokeDesktopCommand)("uninstall_skills"))};var n=r(d[0]),t=r(d[1]);function o(n){return"object"==typeof n&&null!==n}function s(n){return"string"==typeof n&&n.trim().length>0?n:null}function l(n){return"number"==typeof n&&Number.isFinite(n)?n:null}function u(n){const t=s(n)?.toLowerCase();switch(t){case"starting":return"starting";case"running":return"running";case"errored":case"error":return"errored";default:return"stopped"}}function c(n){if(!o(n))throw new Error("Unexpected desktop daemon status response.");return{serverId:s(n.serverId)??"",status:u(n.status),listen:s(n.listen),hostname:s(n.hostname),pid:l(n.pid),home:s(n.home)??"",version:s(n.version),desktopManaged:!0===n.desktopManaged,error:s(n.error)}}function p(n){if(!o(n))throw new Error("Unexpected desktop daemon logs response.");return{logPath:s(n.logPath)??"",contents:"string"==typeof n.contents?n.contents:""}}function k(n){if(!o(n))throw new Error("Unexpected desktop daemon pairing response.");return{relayEnabled:!0===n.relayEnabled,url:s(n.url),qr:s(n.qr)}}function f(n){if(!o(n))throw new Error("Unexpected install status response.");return{installed:!0===n.installed}}function w(n){switch(n){case"not-installed":case"up-to-date":case"drift":return n;default:throw new Error(`Unexpected skills status state: ${String(n)}`)}}function _(n){if(!o(n))throw new Error("Unexpected skill op response.");const t=s(n.name);if(!t)throw new Error("Skill op missing name.");switch(n.kind){case"add":return{kind:"add",name:t};case"update":return{kind:"update",name:t};case"delete":return{kind:"delete",name:t};default:throw new Error(`Unexpected skill op kind: ${String(n.kind)}`)}}function y(n){if(!o(n))throw new Error("Unexpected skills status response.");const t=Array.isArray(n.ops)?n.ops.map(_):[];return{state:w(n.state),ops:t}}},3407,[3408,3410]);
15053
15053
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.getDesktopHost=n,e.isElectronRuntime=o,e.isElectronRuntimeMac=function(){if(!o())return!1;if("undefined"==typeof navigator)return!1;const t=n()?.platform?.toLowerCase();if("darwin"===t||"mac"===t||"macos"===t)return!0;const u=navigator.userAgent;return u.includes("Mac OS")||u.includes("Macintosh")},r(d[0]);var t=r(d[1]);function n(){return(0,t.getElectronHost)()}function o(){return null!==n()}},3408,[25,3409]);
15054
15054
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.getElectronHost=function(){if("undefined"==typeof window)return null;const t=window.paseoDesktop;if(!t||"object"!=typeof t)return null;return t}},3409,[]);
@@ -15597,7 +15597,7 @@ __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',
15597
15597
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.OpenCodeIcon=function(e){const n=(0,o.c)(5),{size:u,color:s}=e,f=void 0===u?16:u,_=void 0===s?"currentColor":s;let h,v,H;n[0]===Symbol.for("react.memo_cache_sentinel")?(h=(0,c.jsx)(t.Path,{d:"M320 224V352H192V224H320Z",opacity:.4}),v=(0,c.jsx)(t.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M384 416H128V96H384V416ZM320 160H192V352H320V160Z"}),n[0]=h,n[1]=v):(h=n[0],v=n[1]);n[2]!==_||n[3]!==f?(H=(0,c.jsxs)(l.default,{width:f,height:f,viewBox:"96 64 288 384",fill:_,children:[h,v]}),n[2]=_,n[3]=f,n[4]=H):H=n[4];return H};var e,o=r(d[0]),t=r(d[1]),l=(e=t)&&e.__esModule?e:{default:e},c=r(d[2])},3942,[349,1604,279]);
15598
15598
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.OmpIcon=function(e){const n=(0,t.c)(6),{size:u,color:h}=e,s=void 0===u?16:u,v=void 0===h?"currentColor":h;let f,_;n[0]!==v?(f=(0,c.jsx)(o.Path,{d:"M10 14h44v9H43v33h-9V23h-9v22h-9V23H10z",fill:v}),n[0]=v,n[1]=f):f=n[1];n[2]!==v||n[3]!==s||n[4]!==f?(_=(0,c.jsx)(l.default,{width:s,height:s,viewBox:"0 0 64 64",fill:v,children:f}),n[2]=v,n[3]=s,n[4]=f,n[5]=_):_=n[5];return _};var e,t=r(d[0]),o=r(d[1]),l=(e=o)&&e.__esModule?e:{default:e},c=r(d[2])},3943,[349,1604,279]);
15599
15599
  __d(function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,'__esModule',{value:!0}),_e.PiIcon=function(e){const u=(0,l.c)(8),{size:c,color:s}=e,f=void 0===c?16:c,H=void 0===s?"currentColor":s;let h,v,V;u[0]!==H?(h=(0,n.jsx)(t.Path,{d:"M165.29 165.29 H517.36 V400 H400 V517.36 H282.65 V634.72 H165.29 Z M282.65 282.65 V400 H400 V282.65 Z",fill:H,fillRule:"evenodd"}),v=(0,n.jsx)(t.Path,{d:"M517.36 400 H634.72 V634.72 H517.36 Z",fill:H}),u[0]=H,u[1]=h,u[2]=v):(h=u[1],v=u[2]);u[3]!==H||u[4]!==f||u[5]!==h||u[6]!==v?(V=(0,n.jsxs)(o.default,{width:f,height:f,viewBox:"0 0 800 800",fill:H,children:[h,v]}),u[3]=H,u[4]=f,u[5]=h,u[6]=v,u[7]=V):V=u[7];return V};var e,l=r(d[0]),t=r(d[1]),o=(e=t)&&e.__esModule?e:{default:e},n=r(d[2])},3944,[349,1604,279]);
15600
- __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"ACP_PROVIDER_CATALOG",{enumerable:!0,get:function(){return o}});var n=r(d[0]);const o=[{id:"agoragentic-acp",title:"Agoragentic",description:"Agent marketplace with 174+ AI capabilities. Browse, invoke, and pay for agent services settled in USDC on Base L2.",version:"1.3.6",iconId:"agoragentic-acp",installLink:"https://agoragentic.com",command:["npx","-y","agoragentic-mcp@1.3.6","--acp"]},{id:"amp-acp",title:"Amp",description:"ACP wrapper for Amp - the frontier coding agent",version:"0.7.0",iconId:"amp-acp",installLink:"https://github.com/tao12345666333/amp-acp",command:["amp-acp"]},{id:"auggie",title:"Auggie CLI",description:"Augment Code's powerful software agent, backed by industry-leading context engine",version:"0.34.0",iconId:"auggie",installLink:"https://www.augmentcode.com/",command:["npx","-y","@augmentcode/auggie@0.34.0","--acp"],env:{AUGMENT_DISABLE_AUTO_UPDATE:"1"}},{id:"autohand",title:"Autohand Code",description:"Autohand Code - AI coding agent powered by Autohand AI",version:"0.2.1",iconId:"autohand",installLink:"https://www.autohand.ai/cli/",command:["npx","-y","@autohandai/autohand-acp@0.2.1"]},{id:"cline",title:"Cline",description:"Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more",version:"3.0.49",iconId:"cline",installLink:"https://cline.bot/cli",command:["npx","-y","cline@3.0.49","--acp"]},{id:"codebuddy-code",title:"Codebuddy Code",description:"Tencent Cloud's official intelligent coding tool",version:"2.132.0",iconId:"codebuddy-code",installLink:"https://www.codebuddy.cn/cli/",command:["npx","-y","@tencent-ai/codebuddy-code@2.132.0","--acp"]},{id:"codewhale",title:"CodeWhale",description:"Terminal coding agent for DeepSeek V4 and open models",version:"0.8.55",iconId:"codewhale",installLink:"https://codewhale.net/",command:["codewhale","serve","--acp"]},{id:"cortex-code",title:"Cortex Code",description:"Snowflake's Cortex Code coding agent",version:"1.0.73",iconId:"cortex-code",installLink:"https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli",command:["cortex","acp","serve"]},{id:"corust-agent",title:"Corust Agent",description:"Co-building with a seasoned Rust partner.",version:"0.5.1",iconId:"corust-agent",installLink:"https://github.com/Corust-ai/corust-agent-release/releases",command:["corust-agent-acp"]},{id:"crow-cli",title:"crow-cli",description:"Minimal ACP Native Coding Agent",version:"0.1.23",iconId:"crow-cli",installLink:"https://crow-ai.dev/",command:["crow-cli","acp"]},{id:"cursor",title:"Cursor",description:"Cursor's coding agent",version:"2026.03.30",iconId:"cursor",installLink:"https://docs.cursor.com/en/cli/overview",command:["cursor-agent","acp"]},{id:"deepagents",title:"DeepAgents",description:"Batteries-included AI coding and general purpose agent powered by LangChain.",version:"0.1.22",iconId:"deepagents",installLink:"https://docs.langchain.com/oss/javascript/deepagents/overview",command:["npx","-y","deepagents-acp@0.1.22"]},{id:"devin",title:"Devin CLI",description:"Cognition's Devin for Terminal via Agent Client Protocol",version:"manual",iconId:null,installLink:"https://cli.devin.ai/docs",command:["devin","acp"]},{id:"dimcode",title:"DimCode",description:"A coding agent that puts leading models at your command.",version:"0.3.1",iconId:"dimcode",installLink:"https://dimcode.dev/docs/acp.html",command:["npx","-y","dimcode@0.3.1","acp"]},{id:"dirac",title:"Dirac",description:"Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.",version:"0.4.32",iconId:"dirac",installLink:"https://dirac.run",command:["npx","-y","dirac-cli@0.4.32","--acp"]},{id:"factory-droid",title:"Factory Droid",description:"Factory Droid - AI coding agent powered by Factory AI",version:"0.186.0",iconId:"factory-droid",installLink:"https://factory.ai/product/cli",command:["npx","-y","droid@0.186.0","exec","--output-format","acp-daemon"],env:{DROID_DISABLE_AUTO_UPDATE:"true",FACTORY_DROID_AUTO_UPDATE_ENABLED:"false"},params:{supportsMcpServers:!1}},{id:"fast-agent",title:"fast-agent",description:"Code and build agents with comprehensive multi-provider support",version:"0.9.30",iconId:"fast-agent",installLink:"https://fast-agent.ai/acp/",command:["uvx","--from","fast-agent-acp==0.9.30","fast-agent-acp","-x"]},{id:"gemini",title:"Gemini CLI",description:"Google's official CLI for Gemini",version:"0.53.1",iconId:"gemini",installLink:"https://geminicli.com",command:["npx","-y","@google/gemini-cli@0.53.1","--acp"]},{id:"glm-acp-agent",title:"GLM Agent",description:"ACP agent powered by Zhipu AI's GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.",version:"1.3.0",iconId:"glm-acp-agent",installLink:"https://github.com/stefandevo/glm-acp-agent",command:["npx","-y","glm-acp-agent@1.3.0"]},{id:"goose",title:"goose",description:"A local, extensible, open source AI agent that automates engineering tasks",version:"1.33.1",iconId:"goose",installLink:"https://block.github.io/goose/",command:["goose","acp"]},{id:"grok",title:"Grok",description:"xAI's Grok Build agentic coding CLI with plan mode and parallel subagents. Requires a SuperGrok or X Premium+ subscription.",version:"0.2.11",iconId:"grok",installLink:"https://docs.x.ai/build/overview",command:["grok","agent","stdio"]},{id:"hermes",title:"Hermes",description:"Nous Research self-improving AI agent",version:"manual",iconId:null,installLink:"https://hermes-agent.nousresearch.com/docs/user-guide/features/acp",command:["hermes","acp"]},{id:"junie",title:"Junie",description:"AI Coding Agent by JetBrains",version:"1468.30.0",iconId:"junie",installLink:"https://junie.jetbrains.com/docs/junie-cli-acp.html",command:["junie","--acp","true"]},{id:"kilo",title:"Kilo",description:"The open source coding agent",version:"7.2.40",iconId:"kilo",installLink:"https://kilo.ai/docs/code-with-ai/platforms/cli",command:["kilo","acp"]},{id:"kiro",title:"Kiro CLI",description:"Amazon's AI coding agent with native ACP support",version:"manual",iconId:null,installLink:"https://kiro.dev/docs/cli/acp/",command:["kiro-cli","acp"]},{id:"kimi",title:"Kimi Code CLI",description:"Moonshot AI's open-source terminal coding agent",version:"0.11.0",iconId:"kimi",installLink:"https://github.com/MoonshotAI/kimi-code",command:["kimi","acp"]},{id:"minion-code",title:"Minion Code",description:"An enhanced AI code assistant built on the Minion framework with rich development tools",version:"0.1.44",iconId:"minion-code",installLink:"https://github.com/femto/minion-code",command:["uvx","--from","minion-code==0.1.44","minion-code","acp"]},{id:"mistral-vibe",title:"Mistral Vibe",description:"Mistral's open-source coding assistant",version:"2.9.3",iconId:"mistral-vibe",installLink:"https://github.com/mistralai/mistral-vibe",command:["vibe-acp"]},{id:"nova",title:"Nova",description:"Nova by Compass AI - a fully-fledged software engineer at your command",version:"1.1.31",iconId:"nova",installLink:"https://www.compassap.ai/portfolio/nova.html",command:["npx","-y","@compass-ai/nova@1.1.31","acp"]},{id:"poolside",title:"Poolside",description:"Poolside's coding agent",version:"1.0.0",iconId:"poolside",installLink:"https://docs.poolside.ai/cli/pool",command:["pool","acp"]},{id:"qoder",title:"Qoder CLI",description:"AI coding assistant with agentic capabilities",version:"1.1.12",iconId:"qoder",installLink:"https://qoder.com",command:["npx","-y","@qoder-ai/qodercli@1.1.12","--acp"]},{id:"qwen-code",title:"Qwen Code",description:"Alibaba's Qwen coding assistant",version:"0.21.3",iconId:"qwen-code",installLink:"https://qwenlm.github.io/qwen-code-docs/en/users/overview",command:["npx","-y","@qwen-code/qwen-code@0.21.3","--acp","--experimental-skills"]},{id:"sigit",title:"siGit Code",description:"Local-first coding agent. Runs entirely on your machine with optional on-device LLM inference via Onde.",version:"1.0.3",iconId:"sigit",installLink:"https://github.com/getsigit/sigit",command:["sigit"]},{id:"stakpak",title:"Stakpak",description:"Open-source DevOps agent in Rust with enterprise-grade security",version:"0.3.80",iconId:"stakpak",installLink:"https://stakpak.dev/",command:["stakpak","acp"]},{id:"traecli",title:"TRAE CLI",description:"ByteDance's official TRAE coding agent with native ACP support",version:"manual",iconId:"traecli",installLink:"https://docs.trae.cn/cli",command:["traecli","acp","serve"]},{id:"vtcode",title:"VT Code",description:"An open-source coding agent with LLM-native code understanding and robust shell safety. Supports multiple LLM providers with automatic failover and efficient context management.",version:"0.96.14",iconId:"vtcode",installLink:"https://github.com/vinhnx/VTCode/blob/main/docs/guides/zed-acp.md",command:["vtcode","acp"],env:{VT_ACP_ENABLED:"1",VT_ACP_ZED_ENABLED:"1"}}].map(o=>({id:o.id,title:o.title,description:o.description,version:o.version,installLink:o.installLink,command:o.command,env:"env"in o?o.env:void 0,params:"params"in o?o.params:void 0,iconSvg:o.iconId?n.ACP_PROVIDER_ICON_SVGS[o.iconId]??null:null}))},3945,[3946]);
15600
+ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"ACP_PROVIDER_CATALOG",{enumerable:!0,get:function(){return o}});var n=r(d[0]);const o=[{id:"agoragentic-acp",title:"Agoragentic",description:"Agent marketplace with 174+ AI capabilities. Browse, invoke, and pay for agent services settled in USDC on Base L2.",version:"1.3.6",iconId:"agoragentic-acp",installLink:"https://agoragentic.com",command:["npx","-y","agoragentic-mcp@1.3.6","--acp"]},{id:"amp-acp",title:"Amp",description:"ACP wrapper for Amp - the frontier coding agent",version:"0.7.0",iconId:"amp-acp",installLink:"https://github.com/tao12345666333/amp-acp",command:["amp-acp"]},{id:"auggie",title:"Auggie CLI",description:"Augment Code's powerful software agent, backed by industry-leading context engine",version:"0.35.0",iconId:"auggie",installLink:"https://www.augmentcode.com/",command:["npx","-y","@augmentcode/auggie@0.35.0","--acp"],env:{AUGMENT_DISABLE_AUTO_UPDATE:"1"}},{id:"autohand",title:"Autohand Code",description:"Autohand Code - AI coding agent powered by Autohand AI",version:"0.2.1",iconId:"autohand",installLink:"https://www.autohand.ai/cli/",command:["npx","-y","@autohandai/autohand-acp@0.2.1"]},{id:"cline",title:"Cline",description:"Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more",version:"3.0.55",iconId:"cline",installLink:"https://cline.bot/cli",command:["npx","-y","cline@3.0.55","--acp"]},{id:"codebuddy-code",title:"Codebuddy Code",description:"Tencent Cloud's official intelligent coding tool",version:"2.137.1",iconId:"codebuddy-code",installLink:"https://www.codebuddy.cn/cli/",command:["npx","-y","@tencent-ai/codebuddy-code@2.137.1","--acp"]},{id:"codewhale",title:"CodeWhale",description:"Terminal coding agent for DeepSeek V4 and open models",version:"0.8.55",iconId:"codewhale",installLink:"https://codewhale.net/",command:["codewhale","serve","--acp"]},{id:"cortex-code",title:"Cortex Code",description:"Snowflake's Cortex Code coding agent",version:"1.0.73",iconId:"cortex-code",installLink:"https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli",command:["cortex","acp","serve"]},{id:"corust-agent",title:"Corust Agent",description:"Co-building with a seasoned Rust partner.",version:"0.5.1",iconId:"corust-agent",installLink:"https://github.com/Corust-ai/corust-agent-release/releases",command:["corust-agent-acp"]},{id:"crow-cli",title:"crow-cli",description:"Minimal ACP Native Coding Agent",version:"0.1.23",iconId:"crow-cli",installLink:"https://crow-ai.dev/",command:["crow-cli","acp"]},{id:"cursor",title:"Cursor",description:"Cursor's coding agent",version:"2026.03.30",iconId:"cursor",installLink:"https://docs.cursor.com/en/cli/overview",command:["cursor-agent","acp"]},{id:"deepagents",title:"DeepAgents",description:"Batteries-included AI coding and general purpose agent powered by LangChain.",version:"0.1.26",iconId:"deepagents",installLink:"https://docs.langchain.com/oss/javascript/deepagents/overview",command:["npx","-y","deepagents-acp@0.1.26"]},{id:"devin",title:"Devin CLI",description:"Cognition's Devin for Terminal via Agent Client Protocol",version:"manual",iconId:null,installLink:"https://cli.devin.ai/docs",command:["devin","acp"]},{id:"dimcode",title:"DimCode",description:"A coding agent that puts leading models at your command.",version:"0.3.17",iconId:"dimcode",installLink:"https://dimcode.dev/docs/acp.html",command:["npx","-y","dimcode@0.3.17","acp"]},{id:"dirac",title:"Dirac",description:"Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.",version:"0.4.37",iconId:"dirac",installLink:"https://dirac.run",command:["npx","-y","dirac-cli@0.4.37","--acp"]},{id:"factory-droid",title:"Factory Droid",description:"Factory Droid - AI coding agent powered by Factory AI",version:"0.200.0",iconId:"factory-droid",installLink:"https://factory.ai/product/cli",command:["npx","-y","droid@0.200.0","exec","--output-format","acp-daemon"],env:{DROID_DISABLE_AUTO_UPDATE:"true",FACTORY_DROID_AUTO_UPDATE_ENABLED:"false"},params:{supportsMcpServers:!1}},{id:"fast-agent",title:"fast-agent",description:"Code and build agents with comprehensive multi-provider support",version:"0.10.9",iconId:"fast-agent",installLink:"https://fast-agent.ai/acp/",command:["uvx","--from","fast-agent-acp==0.10.9","fast-agent-acp","-x"]},{id:"gemini",title:"Gemini CLI",description:"Google's official CLI for Gemini",version:"0.56.0",iconId:"gemini",installLink:"https://geminicli.com",command:["npx","-y","@google/gemini-cli@0.56.0","--acp"]},{id:"glm-acp-agent",title:"GLM Agent",description:"ACP agent powered by Zhipu AI's GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.",version:"1.6.0",iconId:"glm-acp-agent",installLink:"https://github.com/stefandevo/glm-acp-agent",command:["npx","-y","glm-acp-agent@1.6.0"]},{id:"goose",title:"goose",description:"A local, extensible, open source AI agent that automates engineering tasks",version:"1.33.1",iconId:"goose",installLink:"https://block.github.io/goose/",command:["goose","acp"]},{id:"grok",title:"Grok",description:"xAI's Grok Build agentic coding CLI with plan mode and parallel subagents. Requires a SuperGrok or X Premium+ subscription.",version:"0.2.11",iconId:"grok",installLink:"https://docs.x.ai/build/overview",command:["grok","agent","stdio"]},{id:"hermes",title:"Hermes",description:"Nous Research self-improving AI agent",version:"manual",iconId:null,installLink:"https://hermes-agent.nousresearch.com/docs/user-guide/features/acp",command:["hermes","acp"]},{id:"junie",title:"Junie",description:"AI Coding Agent by JetBrains",version:"1468.30.0",iconId:"junie",installLink:"https://junie.jetbrains.com/docs/junie-cli-acp.html",command:["junie","--acp","true"]},{id:"kilo",title:"Kilo",description:"The open source coding agent",version:"7.2.40",iconId:"kilo",installLink:"https://kilo.ai/docs/code-with-ai/platforms/cli",command:["kilo","acp"]},{id:"kiro",title:"Kiro CLI",description:"Amazon's AI coding agent with native ACP support",version:"manual",iconId:null,installLink:"https://kiro.dev/docs/cli/acp/",command:["kiro-cli","acp"]},{id:"kimi",title:"Kimi Code CLI",description:"Moonshot AI's open-source terminal coding agent",version:"0.11.0",iconId:"kimi",installLink:"https://github.com/MoonshotAI/kimi-code",command:["kimi","acp"]},{id:"minion-code",title:"Minion Code",description:"An enhanced AI code assistant built on the Minion framework with rich development tools",version:"0.1.44",iconId:"minion-code",installLink:"https://github.com/femto/minion-code",command:["uvx","--from","minion-code==0.1.44","minion-code","acp"]},{id:"mistral-vibe",title:"Mistral Vibe",description:"Mistral's open-source coding assistant",version:"2.9.3",iconId:"mistral-vibe",installLink:"https://github.com/mistralai/mistral-vibe",command:["vibe-acp"]},{id:"nova",title:"Nova",description:"Nova by Compass AI - a fully-fledged software engineer at your command",version:"1.1.35",iconId:"nova",installLink:"https://www.compassap.ai/portfolio/nova.html",command:["npx","-y","@compass-ai/nova@1.1.35","acp"]},{id:"poolside",title:"Poolside",description:"Poolside's coding agent",version:"1.0.0",iconId:"poolside",installLink:"https://docs.poolside.ai/cli/pool",command:["pool","acp"]},{id:"qoder",title:"Qoder CLI",description:"AI coding assistant with agentic capabilities",version:"1.1.27",iconId:"qoder",installLink:"https://qoder.com",command:["npx","-y","@qoder-ai/qodercli@1.1.27","--acp"]},{id:"qwen-code",title:"Qwen Code",description:"Alibaba's Qwen coding assistant",version:"0.21.15",iconId:"qwen-code",installLink:"https://qwenlm.github.io/qwen-code-docs/en/users/overview",command:["npx","-y","@qwen-code/qwen-code@0.21.15","--acp","--experimental-skills"]},{id:"sigit",title:"siGit Code",description:"Local-first coding agent. Runs entirely on your machine with optional on-device LLM inference via Onde.",version:"1.0.3",iconId:"sigit",installLink:"https://github.com/getsigit/sigit",command:["sigit"]},{id:"stakpak",title:"Stakpak",description:"Open-source DevOps agent in Rust with enterprise-grade security",version:"0.3.80",iconId:"stakpak",installLink:"https://stakpak.dev/",command:["stakpak","acp"]},{id:"traecli",title:"TRAE CLI",description:"ByteDance's official TRAE coding agent with native ACP support",version:"manual",iconId:"traecli",installLink:"https://docs.trae.cn/cli",command:["traecli","acp","serve"]},{id:"vtcode",title:"VT Code",description:"An open-source coding agent with LLM-native code understanding and robust shell safety. Supports multiple LLM providers with automatic failover and efficient context management.",version:"0.96.14",iconId:"vtcode",installLink:"https://github.com/vinhnx/VTCode/blob/main/docs/guides/zed-acp.md",command:["vtcode","acp"],env:{VT_ACP_ENABLED:"1",VT_ACP_ZED_ENABLED:"1"}}].map(o=>({id:o.id,title:o.title,description:o.description,version:o.version,installLink:o.installLink,command:o.command,env:"env"in o?o.env:void 0,params:"params"in o?o.params:void 0,iconSvg:o.iconId?n.ACP_PROVIDER_ICON_SVGS[o.iconId]??null:null}))},3945,[3946]);
15601
15601
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"ACP_PROVIDER_ICON_SVGS",{enumerable:!0,get:function(){return c}});const c={agy:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd">\n <path d="M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z"/>\n</svg>\n',"agoragentic-acp":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">\n <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-width="1.5"/>\n <path d="M5.5 10.5L8 4L10.5 10.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="6.25" y1="8.75" x2="9.75" y2="8.75" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/>\n</svg>\n',"amp-acp":'<svg width="16" height="16" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M13.9197 13.61L17.3816 26.566L14.242 27.4049L11.2645 16.2643L0.119926 13.2906L0.957817 10.15L13.9197 13.61Z" fill="currentColor"/>\n<path d="M13.7391 16.0892L4.88169 24.9056L2.58872 22.6019L11.4461 13.7865L13.7391 16.0892Z" fill="currentColor"/>\n<path d="M18.9386 8.58315L22.4005 21.5392L19.2609 22.3781L16.2833 11.2374L5.13879 8.26381L5.97668 5.12318L18.9386 8.58315Z" fill="currentColor"/>\n<path d="M23.9803 3.55632L27.4422 16.5124L24.3025 17.3512L21.325 6.21062L10.1805 3.23698L11.0183 0.0963593L23.9803 3.55632Z" fill="currentColor"/>\n</svg>\n',auggie:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">\n <path fill="currentColor" d="M9.972 13.193h2.577q.187 0 .277-.09t.091-.294V10.47q0-.324.133-.59.135-.27.36-.424a1 1 0 0 1 .099-.06 1 1 0 0 1-.1-.058 1.1 1.1 0 0 1-.359-.424 1.3 1.3 0 0 1-.133-.59v-2.33q0-.202-.091-.293t-.277-.089H9.972a.38.38 0 0 1-.294-.124.4.4 0 0 1-.108-.281q.002-.176.131-.293a.46.46 0 0 1 .313-.111h2.775c.36 0 .642.097.836.288q.293.29.294.832V8.24q0 .39.152.562.148.168.555.178a.4.4 0 0 1 .27.128.41.41 0 0 1 .104.287.44.44 0 0 1-.1.282.34.34 0 0 1-.277.132c-.266.006-.452.066-.55.177q-.151.174-.152.573v2.318c0 .235-.043.44-.128.607a.85.85 0 0 1-.389.387 1.3 1.3 0 0 1-.534.124V14h-2.854a.45.45 0 0 1-.315-.118.38.38 0 0 1-.129-.286q0-.164.109-.282a.38.38 0 0 1 .293-.123zM1.103 9.108a.4.4 0 0 1 .276-.128q.4-.008.55-.177.15-.173.151-.562V5.923q.002-.543.294-.832c.195-.191.477-.288.836-.288h2.775q.188 0 .313.111a.37.37 0 0 1 .131.293.4.4 0 0 1-.108.281.38.38 0 0 1-.293.123H3.45q-.186 0-.277.09t-.092.292v2.33c0 .213-.044.413-.133.59a1.1 1.1 0 0 1-.359.424 1 1 0 0 1-.1.059 1 1 0 0 1 .1.059q.225.156.359.423t.133.59v2.34q0 .203.092.293.088.09.277.089h2.577a.38.38 0 0 1 .294.123q.108.12.108.281a.38.38 0 0 1-.13.286.45.45 0 0 1-.314.118l-2.775-.003a1.4 1.4 0 0 1-.613-.126.87.87 0 0 1-.388-.387 1.34 1.34 0 0 1-.129-.608v-2.318q0-.4-.151-.572-.151-.168-.55-.177a.35.35 0 0 1-.278-.132.42.42 0 0 1-.102-.28q0-.173.103-.287"/>\n <path fill="currentColor" d="M5.437 10.36a.986.986 0 0 1-.994-.975c0-.538.446-.976.994-.976s.994.438.994.976a.986.986 0 0 1-.994.976M10.562 8.41c.548 0 .994.437.994.975a.986.986 0 0 1-.994.976.986.986 0 0 1-.994-.976c0-.538.446-.976.994-.976M8.74 2c.37 0 .446.15.446.275v.034q0 .034-.009.201-.01.162-.017.549-.018.378-.044 1.06c0 .106-.065.233-.375.233-.311 0-.376-.126-.376-.23l-.07-1.835v-.003c0-.13.078-.284.446-.284M7.256 2c.369 0 .446.15.446.275v.034q0 .034-.01.201-.007.162-.017.549-.017.378-.043 1.06c0 .106-.065.233-.376.233-.31 0-.375-.126-.375-.23l-.07-1.835v-.003C6.81 2.154 6.887 2 7.256 2"/>\n</svg>\n',autohand:'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M4.66949 9.56637C4.66949 8.92122 4.13288 8.39823 3.47094 8.39823C2.809 8.39823 2.2724 8.92122 2.2724 9.56637C2.2724 10.2115 2.809 10.7345 3.47094 10.7345V11C2.65856 11 2 10.3581 2 9.56637C2 8.7746 2.65856 8.13274 3.47094 8.13274C4.28332 8.13274 4.94189 8.7746 4.94189 9.56637C4.94189 10.3581 4.28332 11 3.47094 11V10.7345C4.13288 10.7345 4.66949 10.2115 4.66949 9.56637Z" fill="currentColor"/>\n<path d="M3.90678 9.59292C3.90678 9.81286 3.72385 9.99115 3.49818 9.99115C3.27252 9.99115 3.08959 9.81286 3.08959 9.59292C3.08959 9.37298 3.27252 9.19469 3.49818 9.19469C3.72385 9.19469 3.90678 9.37298 3.90678 9.59292Z" fill="currentColor"/>\n<path d="M3.8523 9.59292C3.8523 9.40231 3.69376 9.24779 3.49818 9.24779C3.30261 9.24779 3.14407 9.40231 3.14407 9.59292C3.14407 9.78353 3.30261 9.93805 3.49818 9.93805V9.99115C3.27252 9.99115 3.08959 9.81286 3.08959 9.59292C3.08959 9.37298 3.27252 9.19469 3.49818 9.19469C3.72385 9.19469 3.90678 9.37298 3.90678 9.59292C3.90678 9.81286 3.72385 9.99115 3.49818 9.99115V9.93805C3.69376 9.93805 3.8523 9.78353 3.8523 9.59292Z" fill="currentColor"/>\n<path d="M4.66949 6.43363C4.66949 5.78848 4.13288 5.26549 3.47094 5.26549C2.809 5.26549 2.2724 5.78848 2.2724 6.43363C2.2724 7.07878 2.809 7.60177 3.47094 7.60177V7.86726C2.65856 7.86726 2 7.2254 2 6.43363C2 5.64186 2.65856 5 3.47094 5C4.28332 5 4.94189 5.64186 4.94189 6.43363C4.94189 7.2254 4.28332 7.86726 3.47094 7.86726V7.60177C4.13288 7.60177 4.66949 7.07878 4.66949 6.43363Z" fill="currentColor"/>\n<path d="M3.90678 6.46018C3.90678 6.68011 3.72385 6.85841 3.49818 6.85841C3.27252 6.85841 3.08959 6.68011 3.08959 6.46018C3.08959 6.24024 3.27252 6.06195 3.49818 6.06195C3.72385 6.06195 3.90678 6.24024 3.90678 6.46018Z" fill="currentColor"/>\n<path d="M3.8523 6.46018C3.8523 6.26957 3.69376 6.11504 3.49818 6.11504C3.30261 6.11504 3.14407 6.26957 3.14407 6.46018C3.14407 6.65079 3.30261 6.80531 3.49818 6.80531V6.85841C3.27252 6.85841 3.08959 6.68011 3.08959 6.46018C3.08959 6.24024 3.27252 6.06195 3.49818 6.06195C3.72385 6.06195 3.90678 6.24024 3.90678 6.46018C3.90678 6.68011 3.72385 6.85841 3.49818 6.85841V6.80531C3.69376 6.80531 3.8523 6.65079 3.8523 6.46018Z" fill="currentColor"/>\n<path d="M8.04722 9.56637C8.04722 8.92122 7.51061 8.39823 6.84867 8.39823C6.18673 8.39823 5.65012 8.92122 5.65012 9.56637C5.65012 10.2115 6.18673 10.7345 6.84867 10.7345V11C6.03629 11 5.37772 10.3581 5.37772 9.56637C5.37772 8.7746 6.03629 8.13274 6.84867 8.13274C7.66105 8.13274 8.31961 8.7746 8.31961 9.56637C8.31961 10.3581 7.66105 11 6.84867 11V10.7345C7.51061 10.7345 8.04722 10.2115 8.04722 9.56637Z" fill="currentColor"/>\n<path d="M7.2845 9.59292C7.2845 9.81286 7.10157 9.99115 6.87591 9.99115C6.65025 9.99115 6.46731 9.81286 6.46731 9.59292C6.46731 9.37298 6.65025 9.19469 6.87591 9.19469C7.10157 9.19469 7.2845 9.37298 7.2845 9.59292Z" fill="currentColor"/>\n<path d="M7.23002 9.59292C7.23002 9.40231 7.07148 9.24779 6.87591 9.24779C6.68033 9.24779 6.52179 9.40231 6.52179 9.59292C6.52179 9.78353 6.68033 9.93805 6.87591 9.93805V9.99115C6.65025 9.99115 6.46731 9.81286 6.46731 9.59292C6.46731 9.37298 6.65025 9.19469 6.87591 9.19469C7.10157 9.19469 7.2845 9.37298 7.2845 9.59292C7.2845 9.81286 7.10157 9.99115 6.87591 9.99115V9.93805C7.07148 9.93805 7.23002 9.78353 7.23002 9.59292Z" fill="currentColor"/>\n<path d="M8.04722 6.43363C8.04722 5.78848 7.51061 5.26549 6.84867 5.26549C6.18673 5.26549 5.65012 5.78848 5.65012 6.43363C5.65012 7.07878 6.18673 7.60177 6.84867 7.60177V7.86726C6.03629 7.86726 5.37772 7.2254 5.37772 6.43363C5.37772 5.64186 6.03629 5 6.84867 5C7.66105 5 8.31961 5.64186 8.31961 6.43363C8.31961 7.2254 7.66105 7.86726 6.84867 7.86726V7.60177C7.51061 7.60177 8.04722 7.07878 8.04722 6.43363Z" fill="currentColor"/>\n<path d="M7.2845 6.46018C7.2845 6.68011 7.10157 6.85841 6.87591 6.85841C6.65025 6.85841 6.46731 6.68011 6.46731 6.46018C6.46731 6.24024 6.65025 6.06195 6.87591 6.06195C7.10157 6.06195 7.2845 6.24024 7.2845 6.46018Z" fill="currentColor"/>\n<path d="M7.23002 6.46018C7.23002 6.26957 7.07148 6.11504 6.87591 6.11504C6.68033 6.11504 6.52179 6.26957 6.52179 6.46018C6.52179 6.65079 6.68033 6.80531 6.87591 6.80531V6.85841C6.65025 6.85841 6.46731 6.68011 6.46731 6.46018C6.46731 6.24024 6.65025 6.06195 6.87591 6.06195C7.10157 6.06195 7.2845 6.24024 7.2845 6.46018C7.2845 6.68011 7.10157 6.85841 6.87591 6.85841V6.80531C7.07148 6.80531 7.23002 6.65079 7.23002 6.46018Z" fill="currentColor"/>\n<path d="M11.207 9.56637C11.207 8.92122 10.6704 8.39823 10.0085 8.39823C9.34653 8.39823 8.80993 8.92122 8.80993 9.56637C8.80993 10.2115 9.34653 10.7345 10.0085 10.7345V11C9.19609 11 8.53753 10.3581 8.53753 9.56637C8.53753 8.7746 9.19609 8.13274 10.0085 8.13274C10.8209 8.13274 11.4794 8.7746 11.4794 9.56637C11.4794 10.3581 10.8209 11 10.0085 11V10.7345C10.6704 10.7345 11.207 10.2115 11.207 9.56637Z" fill="currentColor"/>\n<path d="M10.4443 9.59292C10.4443 9.81286 10.2614 9.99115 10.0357 9.99115C9.81005 9.99115 9.62712 9.81286 9.62712 9.59292C9.62712 9.37298 9.81005 9.19469 10.0357 9.19469C10.2614 9.19469 10.4443 9.37298 10.4443 9.59292Z" fill="currentColor"/>\n<path d="M10.3898 9.59292C10.3898 9.40231 10.2313 9.24779 10.0357 9.24779C9.84014 9.24779 9.6816 9.40231 9.6816 9.59292C9.6816 9.78353 9.84014 9.93805 10.0357 9.93805V9.99115C9.81005 9.99115 9.62712 9.81286 9.62712 9.59292C9.62712 9.37298 9.81005 9.19469 10.0357 9.19469C10.2614 9.19469 10.4443 9.37298 10.4443 9.59292C10.4443 9.81286 10.2614 9.99115 10.0357 9.99115V9.93805C10.2313 9.93805 10.3898 9.78353 10.3898 9.59292Z" fill="currentColor"/>\n<path d="M11.207 6.43363C11.207 5.78848 10.6704 5.26549 10.0085 5.26549C9.34653 5.26549 8.80993 5.78848 8.80993 6.43363C8.80993 7.07878 9.34653 7.60177 10.0085 7.60177V7.86726C9.19609 7.86726 8.53753 7.2254 8.53753 6.43363C8.53753 5.64186 9.19609 5 10.0085 5C10.8209 5 11.4794 5.64186 11.4794 6.43363C11.4794 7.2254 10.8209 7.86726 10.0085 7.86726V7.60177C10.6704 7.60177 11.207 7.07878 11.207 6.43363Z" fill="currentColor"/>\n<path d="M10.4443 6.46018C10.4443 6.68011 10.2614 6.85841 10.0357 6.85841C9.81005 6.85841 9.62712 6.68011 9.62712 6.46018C9.62712 6.24024 9.81005 6.06195 10.0357 6.06195C10.2614 6.06195 10.4443 6.24024 10.4443 6.46018Z" fill="currentColor"/>\n<path d="M10.3898 6.46018C10.3898 6.26957 10.2313 6.11504 10.0357 6.11504C9.84014 6.11504 9.6816 6.26957 9.6816 6.46018C9.6816 6.65079 9.84014 6.80531 10.0357 6.80531V6.85841C9.81005 6.85841 9.62712 6.68011 9.62712 6.46018C9.62712 6.24024 9.81005 6.06195 10.0357 6.06195C10.2614 6.06195 10.4443 6.24024 10.4443 6.46018C10.4443 6.68011 10.2614 6.85841 10.0357 6.85841V6.80531C10.2313 6.80531 10.3898 6.65079 10.3898 6.46018Z" fill="currentColor"/>\n<path d="M14.5847 9.56637C14.5847 8.92122 14.0481 8.39823 13.3862 8.39823C12.7243 8.39823 12.1877 8.92122 12.1877 9.56637C12.1877 10.2115 12.7243 10.7345 13.3862 10.7345V11C12.5738 11 11.9153 10.3581 11.9153 9.56637C11.9153 8.7746 12.5738 8.13274 13.3862 8.13274C14.1986 8.13274 14.8571 8.7746 14.8571 9.56637C14.8571 10.3581 14.1986 11 13.3862 11V10.7345C14.0481 10.7345 14.5847 10.2115 14.5847 9.56637Z" fill="currentColor"/>\n<path d="M13.822 9.59292C13.822 9.81286 13.6391 9.99115 13.4134 9.99115C13.1878 9.99115 13.0048 9.81286 13.0048 9.59292C13.0048 9.37298 13.1878 9.19469 13.4134 9.19469C13.6391 9.19469 13.822 9.37298 13.822 9.59292Z" fill="currentColor"/>\n<path d="M13.7676 9.59292C13.7676 9.40231 13.609 9.24779 13.4134 9.24779C13.2179 9.24779 13.0593 9.40231 13.0593 9.59292C13.0593 9.78353 13.2179 9.93805 13.4134 9.93805V9.99115C13.1878 9.99115 13.0048 9.81286 13.0048 9.59292C13.0048 9.37298 13.1878 9.19469 13.4134 9.19469C13.6391 9.19469 13.822 9.37298 13.822 9.59292C13.822 9.81286 13.6391 9.99115 13.4134 9.99115V9.93805C13.609 9.93805 13.7676 9.78353 13.7676 9.59292Z" fill="currentColor"/>\n<path d="M14.5847 6.43363C14.5847 5.78848 14.0481 5.26549 13.3862 5.26549C12.7243 5.26549 12.1877 5.78848 12.1877 6.43363C12.1877 7.07878 12.7243 7.60177 13.3862 7.60177V7.86726C12.5738 7.86726 11.9153 7.2254 11.9153 6.43363C11.9153 5.64186 12.5738 5 13.3862 5C14.1986 5 14.8571 5.64186 14.8571 6.43363C14.8571 7.2254 14.1986 7.86726 13.3862 7.86726V7.60177C14.0481 7.60177 14.5847 7.07878 14.5847 6.43363Z" fill="currentColor"/>\n<path d="M13.822 6.46018C13.822 6.68011 13.6391 6.85841 13.4134 6.85841C13.1878 6.85841 13.0048 6.68011 13.0048 6.46018C13.0048 6.24024 13.1878 6.06195 13.4134 6.06195C13.6391 6.06195 13.822 6.24024 13.822 6.46018Z" fill="currentColor"/>\n<path d="M13.7676 6.46018C13.7676 6.26957 13.609 6.11504 13.4134 6.11504C13.2179 6.11504 13.0593 6.26957 13.0593 6.46018C13.0593 6.65079 13.2179 6.80531 13.4134 6.80531V6.85841C13.1878 6.85841 13.0048 6.68011 13.0048 6.46018C13.0048 6.24024 13.1878 6.06195 13.4134 6.06195C13.6391 6.06195 13.822 6.24024 13.822 6.46018C13.822 6.68011 13.6391 6.85841 13.4134 6.85841V6.80531C13.609 6.80531 13.7676 6.65079 13.7676 6.46018Z" fill="currentColor"/>\n</svg>\n',"claude-acp":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 1200 1200">\n <path fill="currentColor" d="M 233.959793 800.214905 L 468.644287 668.536987 L 472.590637 657.100647 L 468.644287 650.738403 L 457.208069 650.738403 L 417.986633 648.322144 L 283.892639 644.69812 L 167.597321 639.865845 L 54.926208 633.825623 L 26.577238 627.785339 L 3.3e-05 592.751709 L 2.73832 575.27533 L 26.577238 559.248352 L 60.724873 562.228149 L 136.187973 567.382629 L 249.422867 575.194763 L 331.570496 580.026978 L 453.261841 592.671082 L 472.590637 592.671082 L 475.328857 584.859009 L 468.724915 580.026978 L 463.570557 575.194763 L 346.389313 495.785217 L 219.543671 411.865906 L 153.100723 363.543762 L 117.181267 339.060425 L 99.060455 316.107361 L 91.248367 266.01355 L 123.865784 230.093994 L 167.677887 233.073853 L 178.872513 236.053772 L 223.248367 270.201477 L 318.040283 343.570496 L 441.825592 434.738342 L 459.946411 449.798706 L 467.194672 444.64447 L 468.080597 441.020203 L 459.946411 427.409485 L 392.617493 305.718323 L 320.778564 181.932983 L 288.80542 130.630859 L 280.348999 99.865845 C 277.369171 87.221436 275.194641 76.590698 275.194641 63.624268 L 312.322174 13.20813 L 332.8591 6.604126 L 382.389313 13.20813 L 403.248352 31.328979 L 434.013519 101.71814 L 483.865753 212.537048 L 561.181274 363.221497 L 583.812134 407.919434 L 595.892639 449.315491 L 600.40271 461.959839 L 608.214783 461.959839 L 608.214783 454.711609 L 614.577271 369.825623 L 626.335632 265.61084 L 637.771851 131.516846 L 641.718201 93.745117 L 660.402832 48.483276 L 697.530334 24.000122 L 726.52356 37.852417 L 750.362549 72 L 747.060486 94.067139 L 732.886047 186.201416 L 705.100708 330.52356 L 686.979919 427.167847 L 697.530334 427.167847 L 709.61084 415.087341 L 758.496704 350.174561 L 840.644348 247.490051 L 876.885925 206.738342 L 919.167847 161.71814 L 946.308838 140.29541 L 997.61084 140.29541 L 1035.38269 196.429626 L 1018.469849 254.416199 L 965.637634 321.422852 L 921.825562 378.201538 L 859.006714 462.765259 L 819.785278 530.41626 L 823.409424 535.812073 L 832.75177 534.92627 L 974.657776 504.724915 L 1051.328979 490.872559 L 1142.818848 475.167786 L 1184.214844 494.496582 L 1188.724854 514.147644 L 1172.456421 554.335693 L 1074.604126 578.496765 L 959.838989 601.449829 L 788.939636 641.879272 L 786.845764 643.409485 L 789.261841 646.389343 L 866.255127 653.637634 L 899.194702 655.409424 L 979.812134 655.409424 L 1129.932861 666.604187 L 1169.154419 692.537109 L 1192.671265 724.268677 L 1188.724854 748.429688 L 1128.322144 779.194641 L 1046.818848 759.865845 L 856.590759 714.604126 L 791.355774 698.335754 L 782.335693 698.335754 L 782.335693 703.731567 L 836.69812 756.885986 L 936.322205 846.845581 L 1061.073975 962.81897 L 1067.436279 991.490112 L 1051.409424 1014.120911 L 1034.496704 1011.704712 L 924.885986 929.234924 L 882.604126 892.107544 L 786.845764 811.48999 L 780.483276 811.48999 L 780.483276 819.946289 L 802.550415 852.241699 L 919.087341 1027.409424 L 925.127625 1081.127686 L 916.671204 1098.604126 L 886.469849 1109.154419 L 853.288696 1103.114136 L 785.073914 1007.355835 L 714.684631 899.516785 L 657.906067 802.872498 L 650.979858 806.81897 L 617.476624 1167.704834 L 601.771851 1186.147705 L 565.530212 1200 L 535.328857 1177.046997 L 519.302124 1139.919556 L 535.328857 1066.550537 L 554.657776 970.792053 L 570.362488 894.68457 L 584.536926 800.134277 L 592.993347 768.724976 L 592.429626 766.630859 L 585.503479 767.516968 L 514.22821 865.369263 L 405.825531 1011.865906 L 320.053711 1103.677979 L 299.516815 1111.812256 L 263.919525 1093.369263 L 267.221497 1060.429688 L 287.114136 1031.114136 L 405.825531 880.107361 L 477.422913 786.52356 L 523.651062 732.483276 L 523.328918 724.671265 L 520.590698 724.671265 L 205.288605 929.395935 L 149.154434 936.644409 L 124.993355 914.01355 L 127.973183 876.885986 L 139.409409 864.80542 L 234.201385 799.570435 L 233.879227 799.8927 Z"/>\n</svg>\n',cline:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 92 96" fill="currentColor">\n <path d="M65.45 16.3c10.89 0 19.71 8.86 19.71 19.8v6.6l5.74 11.46a4.48 4.48 0 0 1-.01 3.6L85.16 69.1v6.6c0 10.94-8.83 19.8-19.71 19.8H26.02c-10.89 0-19.71-8.86-19.71-19.8v-6.6L.45 57.8a4.48 4.48 0 0 1-.01-3.67L6.31 42.7v-6.6c0-10.94 8.83-19.8 19.71-19.8h39.43zm-2.52 5.7H29.19c-9.32 0-16.87 7.56-16.87 16.88v5.62l-4.88 9.46a4.48 4.48 0 0 0 .01 3.68l4.87 9.36v5.62c0 9.32 7.55 16.88 16.87 16.88h33.74c9.32 0 16.87-7.55 16.87-16.88V67l4.77-9.39a4.48 4.48 0 0 0 0-3.61L79.8 44.5v-5.62C79.8 29.56 72.25 22 62.93 22z" fill-rule="nonzero"/>\n <circle cx="45.73" cy="11" r="11"/>\n <rect stroke="currentColor" stroke-width="8" x="31" y="44.5" width="5" height="22" rx="2.5"/>\n <rect stroke="currentColor" stroke-width="8" x="55" y="44.5" width="5" height="22" rx="2.5"/>\n</svg>\n',"codebuddy-code":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path fill="currentColor" d="M12.13 1.25c.15-.14.16-.14.28-.15.18 0 .36.08.64.34.68.62 1.61 1.89 2.2 2.97l.22.42.32.16c.3.16.81.48 1.02.65.09.08.11.08.21.04.45-.18 1.09.05 1.65.6.51.49 1 1.33 1.18 2.03.03.11.06.36.07.54.04.64-.16 1.14-.55 1.37-.08.04-.08.06-.08.26.02.95-.23 1.89-.74 2.82-.58 1.04-1.6 2.11-2.98 3.12-.74.55-2.5 1.58-3.3 1.95-1.9.86-3.43 1.2-4.76 1.03-.79-.09-1.69-.41-2.22-.77-.14-.1-.16-.1-.27-.07-.57.16-1.31-.18-1.94-.88-.25-.28-.66-.98-.79-1.35-.3-.87-.25-1.65.16-2.12.11-.12.09-.33.09-.33-.04-.33-.05-.82-.04-1.14v-.3l-.43-.79c-.68-1.23-1.12-2.25-1.28-3.04-.09-.43-.09-.62.02-.77.07-.09.28-.18.54-.22.66-.12 2.09-.01 3.69.27l.16.03.36-.32c.61-.54 1.01-.84 1.75-1.31.77-.48 1.64-.89 2.62-1.2l.32-.1.17-.46c.62-1.65 1.25-2.86 1.71-3.27h0Zm-5.19 8.45c-.7.41-1.05.61-1.3.84-1.04.93-1.43 2.39-.99 3.71.11.33.31.68.71 1.39.41.71.61 1.06.83 1.32.92 1.05 2.37 1.45 3.68 1 .32-.11.68-.31 1.38-.72l4.02-2.34c.7-.41 1.05-.61 1.3-.84 1.04-.93 1.43-2.39.99-3.71-.11-.33-.31-.68-.71-1.39s-.61-1.06-.83-1.32c-.92-1.05-2.37-1.45-3.68-1-.32.11-.67.31-1.38.72l-4.02 2.34Z"/>\n <path fill="currentColor" fill-opacity="0.4" d="M8.02 12.13c.38-.22.87-.09 1.09.29l.86 1.5c.22.38.09.88-.29 1.09-.38.22-.86.09-1.09-.29l-.86-1.5c-.22-.38-.09-.87.29-1.09Z"/>\n <path fill="currentColor" fill-opacity="0.4" d="M12.31 9.64c.38-.22.87-.09 1.09.29l.86 1.5c.22.38.09.87-.29 1.09s-.87.09-1.09-.29l-.86-1.5c-.22-.38-.09-.88.29-1.09Z"/>\n</svg>\n',"codex-acp":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24">\n <path fill="currentColor" d="M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.676l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855l-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023l-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135l-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.795.795 0 0 0-.393.681zm1.097-2.365l2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5z"/>\n</svg>\n',"cortex-code":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 362 362" overflow="hidden">\n <path fill="currentColor" fill-rule="evenodd" d="M1562.63,107.07h-4.18v5.15h4.18c1.94,0,3.21-.87,3.21-2.53,0-1.75-1.17-2.62-3.21-2.62ZM1553.3,102.31h9.42c5.15,0,8.55,2.82,8.55,7.19,0,2.72-1.36,4.76-3.4,6.02l3.69,5.34v1.07h-5.34l-3.59-5.15h-4.18v5.15h-5.15v-19.62ZM1579.63,112.51c0-10.49-6.99-18.46-17.68-18.46s-17.49,7.58-17.49,18.46,6.99,18.46,17.49,18.46,17.68-7.97,17.68-18.46ZM1584,112.51c0,12.34-8.26,22.63-22.05,22.63s-21.86-10.39-21.86-22.63,8.16-22.63,21.86-22.63,22.05,10.3,22.05,22.63ZM348.21,156.4l-42.55,24.61,42.55,24.54c10.75,6.22,14.42,19.9,8.21,30.67-6.2,10.7-19.92,14.37-30.63,8.18l-76.21-44c-5.08-2.96-8.61-7.59-10.18-12.8-.74-2.4-1.09-4.87-1-7.31.04-1.76.3-3.53.79-5.29,1.52-5.48,5.1-10.38,10.39-13.46l76.21-43.97c10.71-6.19,24.43-2.51,30.63,8.22,6.22,10.72,2.54,24.41-8.21,30.61ZM307.93,275.68l-76.19-43.94c-4.09-2.38-8.63-3.3-12.99-2.93-11.62.83-20.75,10.53-20.75,22.34v87.98c0,12.4,10,22.45,22.42,22.45s22.45-10.05,22.45-22.45v-49.21l42.66,24.63c10.72,6.23,24.43,2.54,30.61-8.17,6.17-10.74,2.53-24.5-8.21-30.7ZM220.01,189.61l-31.67,31.63c-.91.93-2.65,1.69-3.98,1.69h-9.31c-1.28,0-3.06-.76-3.98-1.69l-31.66-31.63c-.91-.89-1.64-2.68-1.64-3.94v-9.33c0-1.29.73-3.09,1.64-3.99l31.66-31.63c.92-.93,2.7-1.66,3.98-1.66h9.31c1.29,0,3.07.73,3.98,1.66l31.67,31.63c.9.9,1.63,2.7,1.63,3.99v9.33c0,1.26-.73,3.05-1.63,3.94ZM194.7,180.83c0-1.28-.77-3.06-1.68-4l-9.17-9.13c-.9-.9-2.68-1.65-3.96-1.65h-.36c-1.28,0-3.05.75-3.94,1.65l-9.17,9.13c-.92.95-1.62,2.73-1.62,4v.36c0,1.26.7,3.03,1.62,3.95l9.17,9.16c.9.9,2.67,1.65,3.94,1.65h.36c1.28,0,3.06-.75,3.96-1.65l9.17-9.16c.9-.92,1.68-2.68,1.68-3.95v-.36ZM51.48,86.28l76.21,43.99c4.09,2.35,8.64,3.29,13.01,2.93,11.6-.86,20.75-10.58,20.75-22.37V22.84c0-12.37-10.06-22.41-22.42-22.41s-22.45,10.05-22.45,22.41v49.23l-42.7-24.66c-10.71-6.2-24.4-2.53-30.61,8.2-6.19,10.76-2.53,24.47,8.2,30.67ZM218.75,133.19c4.36.36,8.9-.57,12.99-2.93l76.19-43.99c10.74-6.2,14.38-19.91,8.21-30.67-6.18-10.72-19.89-14.4-30.61-8.2l-42.66,24.66V22.84c0-12.37-10.03-22.41-22.45-22.41s-22.42,10.05-22.42,22.41v87.98c0,11.8,9.13,21.51,20.75,22.37ZM140.71,228.8c-4.38-.37-8.92.54-13.01,2.93l-76.21,43.94c-10.72,6.2-14.38,19.96-8.2,30.7,6.22,10.71,19.91,14.4,30.61,8.17l42.7-24.63v49.21c0,12.4,10.03,22.45,22.45,22.45s22.42-10.05,22.42-22.45v-87.98c0-11.81-9.16-21.51-20.75-22.34ZM120.04,187.6c.76-2.4,1.08-4.87,1.02-7.31-.09-1.76-.32-3.53-.82-5.29-1.51-5.48-5.08-10.38-10.44-13.46l-76.15-43.97c-10.75-6.19-24.45-2.51-30.63,8.22-6.23,10.72-2.55,24.41,8.2,30.61l42.55,24.61-42.55,24.54c-10.75,6.22-14.41,19.9-8.2,30.67,6.17,10.7,19.88,14.37,30.63,8.18l76.15-44c5.14-2.96,8.63-7.59,10.23-12.8Z"/>\n</svg>\n',"corust-agent":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 12 12">\n <g transform="matrix(0.00160555,0,0,-0.0014599,-0.26812129,11.08482)" fill="currentColor">\n <path d="m 297,6493 c -4,-3 -7,-1357 -7,-3008 0,-2390 3,-3005 12,-3012 13,-10 1199,-9 1224,1 11,4 13,61 10,295 -2,159 -7,294 -10,299 -4,7 -112,11 -312,11 -168,0 -309,3 -314,6 -12,7 -13,4775 -2,4792 6,10 85,13 317,15 l 310,3 v 600 l -611,3 c -336,1 -614,-1 -617,-5 z"/>\n <path d="m 6287,6493 c -4,-3 -7,-136 -7,-294 0,-219 3,-290 13,-296 6,-4 152,-10 322,-13 l 310,-5 3,-2394 c 1,-1545 -1,-2398 -8,-2405 -6,-6 -127,-9 -316,-7 -246,2 -309,0 -315,-11 -5,-7 -9,-145 -9,-305 V 470 l 23,-1 c 158,-4 1192,-2 1200,3 14,9 22,5964 7,6002 l -10,26 h -603 c -332,0 -607,-3 -610,-7 z"/>\n <g transform="matrix(1.0249,0,0,1.0566,-429.39,51.322)">\n <path d="m 2476.7,5111.6 c -64.95,-6.2305 -71.077,-28.66 -73.528,-325.23 -3.6765,-261.68 4.9018,-351.4 36.764,-371.34 7.3528,-4.9844 583.32,-12.461 1276.9,-16.199 l 1262.2,-6.2306 73.528,-34.891 c 191.17,-90.966 300.24,-292.84 284.31,-527.1 -15.931,-223.05 -134.8,-392.52 -314.95,-449.85 -61.274,-19.938 -133.58,-21.184 -727.93,-18.692 -607.83,3.7384 -661.75,2.4922 -682.59,-17.446 -22.058,-19.938 -23.284,-43.614 -23.284,-331.47 0,-190.65 4.9019,-320.25 12.255,-335.2 11.029,-21.184 26.96,-23.676 123.77,-23.676 h 110.29 l 66.176,-63.552 c 36.764,-34.891 125,-125.86 198.53,-201.87 72.303,-76.013 322.3,-333.96 555.14,-571.96 l 424.01,-434.89 519.6,3.7383 c 390.93,2.4922 520.83,7.4767 520.83,18.692 0,7.4766 -223.04,249.22 -496.32,534.58 -562.49,589.41 -666.66,701.56 -660.53,707.79 2.451,2.4922 52.695,8.7227 111.52,13.707 322.3,24.922 593.13,194.39 790.43,495.95 129.9,199.38 187.5,391.28 196.08,660.44 8.5783,245.48 -14.706,368.85 -116.42,600.63 -123.77,286.61 -328.43,492.21 -596.8,601.87 -232.84,95.95 -167.89,92.212 -1574.7,93.458 -691.17,1.2462 -1274.5,1.2462 -1295.3,-1.2461 z"/>\n <path d="m 2430.1,3942.7 c -24.509,-18.692 -24.509,-33.645 -24.509,-1254.8 0,-1163.9 1.2255,-1238.6 22.058,-1271 l 20.833,-33.645 h 337 c 289.21,0 338.23,2.4922 354.16,19.938 18.382,17.446 19.608,145.79 18.382,1267.3 -1.2255,1115.3 -2.4509,1251.1 -19.608,1271 -18.382,18.692 -50.244,21.184 -351.71,21.184 -276.96,-1.2461 -335.78,-3.7383 -356.61,-19.938 z"/>\n </g>\n </g>\n</svg>\n',"crow-cli":'<svg\n width="16"\n height="16"\n viewBox="0 0 366 368"\n xmlns="http://www.w3.org/2000/svg">\n <path\n fill="currentColor"\n d="m 26,275.93574 c 0.65,-9.32 8.46,-15.43 15,-20.96 15.43,-13.04 35.67,-21.92 53,-32.71 20.67,-12.88 61.58,-40.31 80,-55.03 0,0 21,-18.39 21,-18.39 0,0 28,-23.91 28,-23.91 10,-8.33 14.1,-11.65 25,-18.92 7.42,-4.94 19.07,-12.550001 24.52,-19.330001 7.17,-8.93 4.16,-18.82 -4.53,-25.45 -5.67,-4.32 -23.5,-8.94 -30.99,-10.66 -3.1,-0.72 -11.45,-1.57 -13.38,-3.62 -3.22,-3.43 1.67,-6.99 4.38,-8.45 6.61,-3.54 17.51,-5.73 25,-5.82 0,0 4,0 4,0 16.51,-0.2 18.85,-12.47 40,-11.99 9.26,0.21 21.16,2.48 29,7.54 7.87,5.07 12.2,11.73 17.05,19.45 6.31,10.05 12.35,21.16 14.49,33 1.42,7.88 -0.45,13.62 -0.54,21.000001 -0.28,24.26 6.68,37.92 -2.44,63 -5.9,16.24 -14.87,35.36 -23.98,50 -9.34,15 -20.81,30.64 -35.58,40.64 0,0 -16,9.36 -16,9.36 -3.3,1.9 -6.18,2.94 -6.64,7.04 -0.68,2.83 -0.16,7.11 0,9.96 0,0 1.29,8 1.29,8 1.62,5.16 8.51,12.15 12.35,16 3.36,3.37 6.84,7.82 12,7.89 4.2,0.06 8.14,-2.87 12,-4.44 5.24,-2.13 11.35,-3.55 17,-3.94 6.33,-0.43 17.05,1.85 14,10.49 -2.84,-3.54 -6.09,-6.36 -11,-5.57 -2.47,0.4 -10.06,3.6 -8.09,7.08 1.19,2.08 7.67,3.01 10.09,3.88 6.26,2.25 10.83,5.76 14,11.61 0,0 -17,-6.33 -17,-6.33 -9.74,-2.08 -18.73,0.62 -28,3.33 5.49,3.71 8.06,5.51 12,11 -8.23,-1.96 -13.6,-7.46 -26,-6.96 -9.64,0.39 -11.89,4.13 -27,3.96 -9.42,-0.11 -17.78,-4.36 -27,-3.96 -9.45,0.41 -13.16,5.64 -21,8.96 3.16,-14.88 19.73,-16 32,-16 -7.31,-10.21 -20.46,-18.11 -23.28,-26 -0.7,-1.97 -0.69,-3.94 -0.71,-6 0,0 0,-14 0,-14 0.23,-2.35 1.13,-5.62 0,-7.73 -1.66,-2.77 -8.94,-4.64 -12.01,-5.55 -20.1,-5.96 -24.58,-0.84 -43,2.01 0,0 -14,2.11 -14,2.11 -9.78,1.06 -18.83,0.92 -28,5.02 0,0 -15,7.88 -15,7.88 -16.76,8.6 -42.02,22.27 -59,27.93 -9.14,3.04 -16.2,6.24 -26,6.33 0,0 5,-10 5,-10 -3.92,0.18 -15.76,3.08 -17.92,-0.51 -2.44,-4.07 5.28,-9.01 7.92,-10.91 0,0 36,-24.58 36,-24.58 0,0 -19,3.25 -19,3.25 z m 227,1.75 c -2.98,0.84 -11.45,3.61 -12.96,6.27 -0.95,1.89 -0.18,5.54 0,7.73 0.04,2.47 -0.13,4.56 0.61,7 1.52,5.07 11.84,17.33 16.35,19.88 3.38,1.91 15.93,0.11 20,-0.88 -4.12,-8.71 -16.66,-15.05 -21.99,-24 -3.43,-5.75 -0.8,-10.06 -2.01,-16 z" />\n</svg>\n',cursor:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 466.73 532.09">\n <path fill="currentColor" d="M457.43,125.94L244.42,2.96c-6.84-3.95-15.28-3.95-22.12,0L9.3,125.94c-5.75,3.32-9.3,9.46-9.3,16.11v247.99c0,6.65,3.55,12.79,9.3,16.11l213.01,122.98c6.84,3.95,15.28,3.95,22.12,0l213.01-122.98c5.75-3.32,9.3-9.46,9.3-16.11v-247.99c0-6.65-3.55-12.79-9.3-16.11h-.01ZM444.05,151.99l-205.63,356.16c-1.39,2.4-5.06,1.42-5.06-1.36v-233.21c0-4.66-2.49-8.97-6.53-11.31L24.87,145.67c-2.4-1.39-1.42-5.06,1.36-5.06h411.26c5.84,0,9.49,6.33,6.57,11.39h-.01Z"/>\n</svg>\n',deepagents:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 128 128">\n <path fill="currentColor" d="M40.1024 85.0722C47.6207 77.5537 51.8469 67.3453 51.8469 56.7136C51.8469 46.0818 47.617 35.8734 40.1024 28.355L11.7446 0C4.22995 7.5185 0 17.7269 0 28.3586C0 38.9903 4.22995 49.1987 11.7446 56.7172L40.0987 85.0722H40.1024Z"/>\n <path fill="currentColor" d="M99.4385 87.698C91.9239 80.1832 81.7121 75.9531 71.0844 75.9531C60.4566 75.9531 50.2448 80.1832 42.7266 87.698L71.0844 116.057C78.599 123.571 88.8107 127.802 99.4421 127.802C110.074 127.802 120.282 123.571 127.8 116.057L99.4421 87.698H99.4385Z"/>\n <path fill="currentColor" d="M11.8146 115.987C19.3329 123.502 29.541 127.732 40.1724 127.732V87.6289H0.0664062C0.0700559 98.2606 4.29635 108.469 11.8146 115.987Z"/>\n <path fill="currentColor" d="M110.387 45.7684C102.869 38.2535 92.6608 34.0198 82.0258 34.0234C71.3943 34.0234 61.1863 38.2535 53.668 45.772L82.0258 74.1306L110.387 45.7684Z"/>\n</svg>\n',codewhale:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">\n <rect width="32" height="32" fill="currentColor" opacity="0.18"/>\n <text x="50%" y="55%" text-anchor="middle" dominant-baseline="middle" font-family="\'Noto Serif SC\', serif" font-weight="700" font-size="20" fill="currentColor">\u6df1</text>\n <rect x="0" y="29" width="32" height="3" fill="currentColor"/>\n</svg>\n',dimcode:'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M3.12109 11.0078H1.99902V5.49316H3.12109V11.0078ZM3.7041 5.49316C4.91979 5.49316 5.31142 5.57449 5.80762 5.7373C6.50208 5.97365 6.85299 6.40958 6.86133 7.04492V9.45605C6.86125 10.207 6.37767 10.6797 5.41016 10.874C4.95546 10.9633 4.69632 11.0078 3.7041 11.0078V10.6064C4.72131 10.6064 4.95994 10.5507 5.34863 10.4404C5.91072 10.2671 6.19576 9.93907 6.2041 9.45605V7.04492C6.20402 6.4883 5.83211 6.13886 5.08789 5.99707C4.74057 5.93405 4.58897 5.89978 3.7041 5.89453V5.49316ZM9.16797 5.49316V11.0078H8.0459V5.49316H9.16797ZM14 6.79297V11.0078H12.8779V8.0791L13.8877 6.79297H14ZM14 5.49316V5.7373L11.3594 8.97852H10.7852L9.74219 6.94531V6.07812H9.86719L11.0723 8.33203L13.4258 5.49316H14Z" fill="currentColor"/>\n</svg>\n',dirac:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor">\n <text x="8" y="10" text-anchor="middle" font-size="10.5" font-family="Georgia, serif" font-style="italic" fill="currentColor">\u03b4</text>\n <line x1="1" y1="14" x2="15" y2="14" stroke="currentColor" stroke-opacity="0.4" stroke-width="1" stroke-linecap="round"/>\n <line x1="8" y1="14" x2="8" y2="12" stroke="currentColor" stroke-width="1" stroke-linecap="round"/>\n <circle cx="8" cy="11.5" r="0.7" fill="currentColor"/>\n</svg>\n',"factory-droid":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 900 900" fill="none"><path fill="currentColor" d="M622.037 192.524a10.58 10.58 0 0 1-4.056-2.001 10.573 10.573 0 0 1-3.98-7.89 10.595 10.595 0 0 1 .804-4.452c20.214-49.194 29.134-88.555 14.74-105.033-38.123-43.716-191.004 43.219-239.75 72.663a10.596 10.596 0 0 1-10.841.041 10.576 10.576 0 0 1-4.396-5.07c-20.491-49.089-42.031-83.233-63.865-84.714-57.871-3.96-104.516 165.624-118.17 220.895a10.574 10.574 0 0 1-1.993 4.057 10.572 10.572 0 0 1-7.884 3.977 10.586 10.586 0 0 1-4.447-.802c-49.194-20.215-88.572-29.134-105.033-14.74-43.717 38.123 43.202 191.005 72.644 239.75a10.553 10.553 0 0 1 1.454 4.279 10.573 10.573 0 0 1-6.481 10.958c-49.072 20.491-83.216 42.031-84.715 63.864-3.944 57.871 165.624 104.516 220.913 118.171a10.566 10.566 0 0 1 5.658 3.601 10.57 10.57 0 0 1 2.355 6.281 10.58 10.58 0 0 1-.799 4.442c-20.214 49.194-29.134 88.572-14.739 105.033 38.121 43.717 191.021-43.202 239.767-72.644a10.566 10.566 0 0 1 15.238 5.027c20.489 49.072 42.013 83.216 63.862 84.715 57.871 3.944 104.516-165.624 118.153-220.913a10.603 10.603 0 0 1 9.895-8.021 10.566 10.566 0 0 1 4.449.808c49.193 20.214 88.553 29.116 105.032 14.738 43.718-38.121-43.219-191.022-72.663-239.767a10.602 10.602 0 0 1 1.326-12.655 10.604 10.604 0 0 1 3.703-2.582c49.089-20.49 83.233-42.031 84.714-63.863 3.96-57.871-165.624-104.516-220.895-118.153Zm-66.394-55.478c11.123 19.938-46.196 152.797-88.83 245.724a8.36 8.36 0 0 1-8.239 4.855 8.374 8.374 0 0 1-7.412-6.043c-17.219-60.42-36.899-131.411-57.957-191.675a10.557 10.557 0 0 1 4.924-12.759c52.586-28.721 142.568-66.86 157.514-40.102ZM303.635 153.49c21.953 6.233 75.365 140.709 110.92 236.564a8.364 8.364 0 0 1-2.394 9.249 8.364 8.364 0 0 1-9.504.978c-54.943-30.493-119.013-66.824-176.522-94.546a10.565 10.565 0 0 1-5.528-12.501c16.926-57.44 53.532-148.095 83.028-139.744ZM137.064 343.322c19.921-11.123 152.795 46.197 245.707 88.83a8.369 8.369 0 0 1-1.189 15.652c-60.401 17.219-131.411 36.899-191.675 57.957a10.552 10.552 0 0 1-12.742-4.925c-28.668-52.584-66.876-142.568-40.101-157.514Zm16.443 252.009c6.217-21.953 140.709-75.365 236.564-110.921a8.368 8.368 0 0 1 10.227 11.898c-30.511 54.945-66.842 119.014-94.563 176.507a10.548 10.548 0 0 1-5.229 5.075 10.544 10.544 0 0 1-7.271.468c-57.441-16.822-148.095-53.531-139.728-83.027ZM343.34 761.902c-11.14-19.922 46.197-152.796 88.829-245.707a8.383 8.383 0 0 1 5.713-4.66 8.38 8.38 0 0 1 7.182 1.664 8.371 8.371 0 0 1 2.758 4.184c17.217 60.403 36.898 131.412 57.957 191.675a10.558 10.558 0 0 1-4.942 12.743c-52.568 28.668-142.568 66.875-157.445 40.101h-.052Zm252.009-16.443c-21.971-6.216-75.383-140.709-110.939-236.564a8.37 8.37 0 0 1 11.916-10.228c54.926 30.494 119.014 66.842 176.506 94.563a10.538 10.538 0 0 1 5.527 12.502c-16.909 57.526-53.515 148.094-83.01 139.727Zm166.57-189.834c-19.938 11.141-152.796-46.197-245.724-88.83a8.367 8.367 0 0 1-2.993-12.892 8.378 8.378 0 0 1 4.182-2.759c60.419-17.218 131.41-36.899 191.675-57.958a10.577 10.577 0 0 1 12.758 4.943c28.652 52.568 66.86 142.569 40.102 157.496Zm-16.444-252.009c-6.232 21.971-140.709 75.383-236.562 110.94a8.371 8.371 0 0 1-10.229-11.917c30.495-54.926 66.825-119.012 94.547-176.505a10.555 10.555 0 0 1 12.5-5.528c57.441 16.909 148.096 53.516 139.744 83.01Z"/></svg>\n',"fast-agent":'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 360" width="16" height="16">\n <g fill="currentColor">\n <circle cx="100.50" cy="40.50" r="4.50"/>\n <circle cx="112.50" cy="40.50" r="4.50"/>\n <circle cx="124.50" cy="40.50" r="4.50"/>\n <circle cx="136.50" cy="40.50" r="4.50"/>\n <circle cx="148.50" cy="40.50" r="4.50"/>\n <circle cx="76.50" cy="52.50" r="4.50"/>\n <circle cx="88.50" cy="52.50" r="4.50"/>\n <circle cx="100.50" cy="52.50" r="4.50"/>\n <circle cx="136.50" cy="52.50" r="4.50"/>\n <circle cx="148.50" cy="52.50" r="4.50"/>\n <circle cx="160.50" cy="52.50" r="4.50"/>\n <circle cx="64.50" cy="64.50" r="4.50"/>\n <circle cx="76.50" cy="64.50" r="4.50"/>\n <circle cx="88.50" cy="64.50" r="4.50"/>\n <circle cx="100.50" cy="64.50" r="4.50"/>\n <circle cx="136.50" cy="64.50" r="4.50"/>\n <circle cx="148.50" cy="64.50" r="4.50"/>\n <circle cx="160.50" cy="64.50" r="4.50"/>\n <circle cx="172.50" cy="64.50" r="4.50"/>\n <circle cx="52.50" cy="76.50" r="4.50"/>\n <circle cx="64.50" cy="76.50" r="4.50"/>\n <circle cx="76.50" cy="76.50" r="4.50"/>\n <circle cx="88.50" cy="76.50" r="4.50"/>\n <circle cx="100.50" cy="76.50" r="4.50"/>\n <circle cx="136.50" cy="76.50" r="4.50"/>\n <circle cx="148.50" cy="76.50" r="4.50"/>\n <circle cx="160.50" cy="76.50" r="4.50"/>\n <circle cx="52.50" cy="88.50" r="4.50"/>\n <circle cx="64.50" cy="88.50" r="4.50"/>\n <circle cx="76.50" cy="88.50" r="4.50"/>\n <circle cx="88.50" cy="88.50" r="4.50"/>\n <circle cx="100.50" cy="88.50" r="4.50"/>\n <circle cx="148.50" cy="88.50" r="4.50"/>\n <circle cx="52.50" cy="100.50" r="4.50"/>\n <circle cx="64.50" cy="100.50" r="4.50"/>\n <circle cx="76.50" cy="100.50" r="4.50"/>\n <circle cx="88.50" cy="100.50" r="4.50"/>\n <circle cx="100.50" cy="100.50" r="4.50"/>\n <circle cx="52.50" cy="112.50" r="4.50"/>\n <circle cx="64.50" cy="112.50" r="4.50"/>\n <circle cx="76.50" cy="112.50" r="4.50"/>\n <circle cx="88.50" cy="112.50" r="4.50"/>\n <circle cx="100.50" cy="112.50" r="4.50"/>\n <circle cx="52.50" cy="124.50" r="4.50"/>\n <circle cx="64.50" cy="124.50" r="4.50"/>\n <circle cx="76.50" cy="124.50" r="4.50"/>\n <circle cx="88.50" cy="124.50" r="4.50"/>\n <circle cx="100.50" cy="124.50" r="4.50"/>\n <circle cx="232.50" cy="124.50" r="4.50"/>\n <circle cx="244.50" cy="124.50" r="4.50"/>\n <circle cx="256.50" cy="124.50" r="4.50"/>\n <circle cx="28.50" cy="136.50" r="4.50"/>\n <circle cx="40.50" cy="136.50" r="4.50"/>\n <circle cx="52.50" cy="136.50" r="4.50"/>\n <circle cx="64.50" cy="136.50" r="4.50"/>\n <circle cx="76.50" cy="136.50" r="4.50"/>\n <circle cx="88.50" cy="136.50" r="4.50"/>\n <circle cx="100.50" cy="136.50" r="4.50"/>\n <circle cx="112.50" cy="136.50" r="4.50"/>\n <circle cx="124.50" cy="136.50" r="4.50"/>\n <circle cx="196.50" cy="136.50" r="4.50"/>\n <circle cx="208.50" cy="136.50" r="4.50"/>\n <circle cx="220.50" cy="136.50" r="4.50"/>\n <circle cx="232.50" cy="136.50" r="4.50"/>\n <circle cx="244.50" cy="136.50" r="4.50"/>\n <circle cx="256.50" cy="136.50" r="4.50"/>\n <circle cx="268.50" cy="136.50" r="4.50"/>\n <circle cx="280.50" cy="136.50" r="4.50"/>\n <circle cx="28.50" cy="148.50" r="4.50"/>\n <circle cx="40.50" cy="148.50" r="4.50"/>\n <circle cx="52.50" cy="148.50" r="4.50"/>\n <circle cx="64.50" cy="148.50" r="4.50"/>\n <circle cx="76.50" cy="148.50" r="4.50"/>\n <circle cx="88.50" cy="148.50" r="4.50"/>\n <circle cx="100.50" cy="148.50" r="4.50"/>\n <circle cx="112.50" cy="148.50" r="4.50"/>\n <circle cx="124.50" cy="148.50" r="4.50"/>\n <circle cx="172.50" cy="148.50" r="4.50"/>\n <circle cx="184.50" cy="148.50" r="4.50"/>\n <circle cx="196.50" cy="148.50" r="4.50"/>\n <circle cx="256.50" cy="148.50" r="4.50"/>\n <circle cx="268.50" cy="148.50" r="4.50"/>\n <circle cx="280.50" cy="148.50" r="4.50"/>\n <circle cx="292.50" cy="148.50" r="4.50"/>\n <circle cx="52.50" cy="160.50" r="4.50"/>\n <circle cx="64.50" cy="160.50" r="4.50"/>\n <circle cx="76.50" cy="160.50" r="4.50"/>\n <circle cx="88.50" cy="160.50" r="4.50"/>\n <circle cx="100.50" cy="160.50" r="4.50"/>\n <circle cx="160.50" cy="160.50" r="4.50"/>\n <circle cx="172.50" cy="160.50" r="4.50"/>\n <circle cx="184.50" cy="160.50" r="4.50"/>\n <circle cx="196.50" cy="160.50" r="4.50"/>\n <circle cx="256.50" cy="160.50" r="4.50"/>\n <circle cx="268.50" cy="160.50" r="4.50"/>\n <circle cx="280.50" cy="160.50" r="4.50"/>\n <circle cx="292.50" cy="160.50" r="4.50"/>\n <circle cx="304.50" cy="160.50" r="4.50"/>\n <circle cx="52.50" cy="172.50" r="4.50"/>\n <circle cx="64.50" cy="172.50" r="4.50"/>\n <circle cx="76.50" cy="172.50" r="4.50"/>\n <circle cx="88.50" cy="172.50" r="4.50"/>\n <circle cx="100.50" cy="172.50" r="4.50"/>\n <circle cx="160.50" cy="172.50" r="4.50"/>\n <circle cx="172.50" cy="172.50" r="4.50"/>\n <circle cx="184.50" cy="172.50" r="4.50"/>\n <circle cx="196.50" cy="172.50" r="4.50"/>\n <circle cx="208.50" cy="172.50" r="4.50"/>\n <circle cx="256.50" cy="172.50" r="4.50"/>\n <circle cx="268.50" cy="172.50" r="4.50"/>\n <circle cx="280.50" cy="172.50" r="4.50"/>\n <circle cx="292.50" cy="172.50" r="4.50"/>\n <circle cx="304.50" cy="172.50" r="4.50"/>\n <circle cx="52.50" cy="184.50" r="4.50"/>\n <circle cx="64.50" cy="184.50" r="4.50"/>\n <circle cx="76.50" cy="184.50" r="4.50"/>\n <circle cx="88.50" cy="184.50" r="4.50"/>\n <circle cx="100.50" cy="184.50" r="4.50"/>\n <circle cx="160.50" cy="184.50" r="4.50"/>\n <circle cx="172.50" cy="184.50" r="4.50"/>\n <circle cx="184.50" cy="184.50" r="4.50"/>\n <circle cx="196.50" cy="184.50" r="4.50"/>\n <circle cx="208.50" cy="184.50" r="4.50"/>\n <circle cx="256.50" cy="184.50" r="4.50"/>\n <circle cx="268.50" cy="184.50" r="4.50"/>\n <circle cx="280.50" cy="184.50" r="4.50"/>\n <circle cx="292.50" cy="184.50" r="4.50"/>\n <circle cx="304.50" cy="184.50" r="4.50"/>\n <circle cx="52.50" cy="196.50" r="4.50"/>\n <circle cx="64.50" cy="196.50" r="4.50"/>\n <circle cx="76.50" cy="196.50" r="4.50"/>\n <circle cx="88.50" cy="196.50" r="4.50"/>\n <circle cx="100.50" cy="196.50" r="4.50"/>\n <circle cx="172.50" cy="196.50" r="4.50"/>\n <circle cx="184.50" cy="196.50" r="4.50"/>\n <circle cx="196.50" cy="196.50" r="4.50"/>\n <circle cx="256.50" cy="196.50" r="4.50"/>\n <circle cx="268.50" cy="196.50" r="4.50"/>\n <circle cx="280.50" cy="196.50" r="4.50"/>\n <circle cx="292.50" cy="196.50" r="4.50"/>\n <circle cx="304.50" cy="196.50" r="4.50"/>\n <circle cx="52.50" cy="208.50" r="4.50"/>\n <circle cx="64.50" cy="208.50" r="4.50"/>\n <circle cx="76.50" cy="208.50" r="4.50"/>\n <circle cx="88.50" cy="208.50" r="4.50"/>\n <circle cx="100.50" cy="208.50" r="4.50"/>\n <circle cx="244.50" cy="208.50" r="4.50"/>\n <circle cx="256.50" cy="208.50" r="4.50"/>\n <circle cx="268.50" cy="208.50" r="4.50"/>\n <circle cx="280.50" cy="208.50" r="4.50"/>\n <circle cx="292.50" cy="208.50" r="4.50"/>\n <circle cx="304.50" cy="208.50" r="4.50"/>\n <circle cx="52.50" cy="220.50" r="4.50"/>\n <circle cx="64.50" cy="220.50" r="4.50"/>\n <circle cx="76.50" cy="220.50" r="4.50"/>\n <circle cx="88.50" cy="220.50" r="4.50"/>\n <circle cx="100.50" cy="220.50" r="4.50"/>\n <circle cx="220.50" cy="220.50" r="4.50"/>\n <circle cx="232.50" cy="220.50" r="4.50"/>\n <circle cx="256.50" cy="220.50" r="4.50"/>\n <circle cx="268.50" cy="220.50" r="4.50"/>\n <circle cx="280.50" cy="220.50" r="4.50"/>\n <circle cx="292.50" cy="220.50" r="4.50"/>\n <circle cx="304.50" cy="220.50" r="4.50"/>\n <circle cx="52.50" cy="232.50" r="4.50"/>\n <circle cx="64.50" cy="232.50" r="4.50"/>\n <circle cx="76.50" cy="232.50" r="4.50"/>\n <circle cx="88.50" cy="232.50" r="4.50"/>\n <circle cx="100.50" cy="232.50" r="4.50"/>\n <circle cx="196.50" cy="232.50" r="4.50"/>\n <circle cx="208.50" cy="232.50" r="4.50"/>\n <circle cx="220.50" cy="232.50" r="4.50"/>\n <circle cx="256.50" cy="232.50" r="4.50"/>\n <circle cx="268.50" cy="232.50" r="4.50"/>\n <circle cx="280.50" cy="232.50" r="4.50"/>\n <circle cx="292.50" cy="232.50" r="4.50"/>\n <circle cx="304.50" cy="232.50" r="4.50"/>\n <circle cx="52.50" cy="244.50" r="4.50"/>\n <circle cx="64.50" cy="244.50" r="4.50"/>\n <circle cx="76.50" cy="244.50" r="4.50"/>\n <circle cx="88.50" cy="244.50" r="4.50"/>\n <circle cx="100.50" cy="244.50" r="4.50"/>\n <circle cx="184.50" cy="244.50" r="4.50"/>\n <circle cx="196.50" cy="244.50" r="4.50"/>\n <circle cx="208.50" cy="244.50" r="4.50"/>\n <circle cx="256.50" cy="244.50" r="4.50"/>\n <circle cx="268.50" cy="244.50" r="4.50"/>\n <circle cx="280.50" cy="244.50" r="4.50"/>\n <circle cx="292.50" cy="244.50" r="4.50"/>\n <circle cx="304.50" cy="244.50" r="4.50"/>\n <circle cx="52.50" cy="256.50" r="4.50"/>\n <circle cx="64.50" cy="256.50" r="4.50"/>\n <circle cx="76.50" cy="256.50" r="4.50"/>\n <circle cx="88.50" cy="256.50" r="4.50"/>\n <circle cx="100.50" cy="256.50" r="4.50"/>\n <circle cx="172.50" cy="256.50" r="4.50"/>\n <circle cx="184.50" cy="256.50" r="4.50"/>\n <circle cx="196.50" cy="256.50" r="4.50"/>\n <circle cx="208.50" cy="256.50" r="4.50"/>\n <circle cx="256.50" cy="256.50" r="4.50"/>\n <circle cx="268.50" cy="256.50" r="4.50"/>\n <circle cx="280.50" cy="256.50" r="4.50"/>\n <circle cx="292.50" cy="256.50" r="4.50"/>\n <circle cx="304.50" cy="256.50" r="4.50"/>\n <circle cx="52.50" cy="268.50" r="4.50"/>\n <circle cx="64.50" cy="268.50" r="4.50"/>\n <circle cx="76.50" cy="268.50" r="4.50"/>\n <circle cx="88.50" cy="268.50" r="4.50"/>\n <circle cx="100.50" cy="268.50" r="4.50"/>\n <circle cx="160.50" cy="268.50" r="4.50"/>\n <circle cx="172.50" cy="268.50" r="4.50"/>\n <circle cx="184.50" cy="268.50" r="4.50"/>\n <circle cx="196.50" cy="268.50" r="4.50"/>\n <circle cx="256.50" cy="268.50" r="4.50"/>\n <circle cx="268.50" cy="268.50" r="4.50"/>\n <circle cx="280.50" cy="268.50" r="4.50"/>\n <circle cx="292.50" cy="268.50" r="4.50"/>\n <circle cx="304.50" cy="268.50" r="4.50"/>\n <circle cx="52.50" cy="280.50" r="4.50"/>\n <circle cx="64.50" cy="280.50" r="4.50"/>\n <circle cx="76.50" cy="280.50" r="4.50"/>\n <circle cx="88.50" cy="280.50" r="4.50"/>\n <circle cx="100.50" cy="280.50" r="4.50"/>\n <circle cx="160.50" cy="280.50" r="4.50"/>\n <circle cx="172.50" cy="280.50" r="4.50"/>\n <circle cx="184.50" cy="280.50" r="4.50"/>\n <circle cx="196.50" cy="280.50" r="4.50"/>\n <circle cx="208.50" cy="280.50" r="4.50"/>\n <circle cx="256.50" cy="280.50" r="4.50"/>\n <circle cx="268.50" cy="280.50" r="4.50"/>\n <circle cx="280.50" cy="280.50" r="4.50"/>\n <circle cx="292.50" cy="280.50" r="4.50"/>\n <circle cx="304.50" cy="280.50" r="4.50"/>\n <circle cx="52.50" cy="292.50" r="4.50"/>\n <circle cx="64.50" cy="292.50" r="4.50"/>\n <circle cx="76.50" cy="292.50" r="4.50"/>\n <circle cx="88.50" cy="292.50" r="4.50"/>\n <circle cx="100.50" cy="292.50" r="4.50"/>\n <circle cx="160.50" cy="292.50" r="4.50"/>\n <circle cx="172.50" cy="292.50" r="4.50"/>\n <circle cx="184.50" cy="292.50" r="4.50"/>\n <circle cx="196.50" cy="292.50" r="4.50"/>\n <circle cx="208.50" cy="292.50" r="4.50"/>\n <circle cx="220.50" cy="292.50" r="4.50"/>\n <circle cx="232.50" cy="292.50" r="4.50"/>\n <circle cx="244.50" cy="292.50" r="4.50"/>\n <circle cx="256.50" cy="292.50" r="4.50"/>\n <circle cx="268.50" cy="292.50" r="4.50"/>\n <circle cx="280.50" cy="292.50" r="4.50"/>\n <circle cx="292.50" cy="292.50" r="4.50"/>\n <circle cx="304.50" cy="292.50" r="4.50"/>\n <circle cx="52.50" cy="304.50" r="4.50"/>\n <circle cx="64.50" cy="304.50" r="4.50"/>\n <circle cx="76.50" cy="304.50" r="4.50"/>\n <circle cx="88.50" cy="304.50" r="4.50"/>\n <circle cx="100.50" cy="304.50" r="4.50"/>\n <circle cx="160.50" cy="304.50" r="4.50"/>\n <circle cx="172.50" cy="304.50" r="4.50"/>\n <circle cx="184.50" cy="304.50" r="4.50"/>\n <circle cx="196.50" cy="304.50" r="4.50"/>\n <circle cx="208.50" cy="304.50" r="4.50"/>\n <circle cx="220.50" cy="304.50" r="4.50"/>\n <circle cx="232.50" cy="304.50" r="4.50"/>\n <circle cx="256.50" cy="304.50" r="4.50"/>\n <circle cx="268.50" cy="304.50" r="4.50"/>\n <circle cx="280.50" cy="304.50" r="4.50"/>\n <circle cx="292.50" cy="304.50" r="4.50"/>\n <circle cx="304.50" cy="304.50" r="4.50"/>\n <circle cx="316.50" cy="304.50" r="4.50"/>\n <circle cx="328.50" cy="304.50" r="4.50"/>\n <circle cx="28.50" cy="316.50" r="4.50"/>\n <circle cx="40.50" cy="316.50" r="4.50"/>\n <circle cx="52.50" cy="316.50" r="4.50"/>\n <circle cx="64.50" cy="316.50" r="4.50"/>\n <circle cx="76.50" cy="316.50" r="4.50"/>\n <circle cx="88.50" cy="316.50" r="4.50"/>\n <circle cx="100.50" cy="316.50" r="4.50"/>\n <circle cx="112.50" cy="316.50" r="4.50"/>\n <circle cx="124.50" cy="316.50" r="4.50"/>\n <circle cx="172.50" cy="316.50" r="4.50"/>\n <circle cx="184.50" cy="316.50" r="4.50"/>\n <circle cx="196.50" cy="316.50" r="4.50"/>\n <circle cx="208.50" cy="316.50" r="4.50"/>\n <circle cx="220.50" cy="316.50" r="4.50"/>\n <circle cx="268.50" cy="316.50" r="4.50"/>\n <circle cx="280.50" cy="316.50" r="4.50"/>\n <circle cx="292.50" cy="316.50" r="4.50"/>\n <circle cx="304.50" cy="316.50" r="4.50"/>\n <circle cx="316.50" cy="316.50" r="4.50"/>\n </g>\n</svg>\n',gemini:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24">\n <path fill="currentColor" d="M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"/>\n</svg>\n',"github-copilot-cli":'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99816 14.2779C12.0678 14.2779 14.9997 11.6274 14.9997 10.9574V9.3189C14.939 8.77306 14.4165 7.82349 13.6074 7.48636C13.5959 7.42498 13.5859 7.36153 13.5756 7.29542C13.5506 7.13548 13.5231 6.95977 13.4649 6.75954C13.6409 6.31508 13.6873 5.81187 13.6873 5.31135C13.6873 4.54947 13.5757 3.76321 13.0811 3.13712C12.5745 2.4959 11.7737 2.15372 10.6972 2.03411C9.64215 1.91688 8.71828 2.06409 8.12157 2.70342C8.07827 2.74981 8.0345 2.79812 7.99655 2.84746C7.95861 2.79812 7.91805 2.74981 7.87475 2.70342C7.27804 2.06409 6.35416 1.91688 5.29908 2.03411C4.22263 2.15372 3.42181 2.4959 2.91521 3.13712C2.42057 3.76321 2.30905 4.54947 2.30905 5.31135C2.30905 5.81187 2.35539 6.31508 2.53142 6.75954C2.47323 6.95977 2.44574 7.13542 2.42072 7.29536C2.41037 7.3615 2.40044 7.42496 2.38893 7.48636C1.57983 7.82349 1.05728 8.77306 0.996582 9.3189V10.9574C0.996582 11.6274 3.92849 14.2779 7.99816 14.2779ZM10.5523 3.33859C9.63863 3.23707 9.25001 3.41798 9.0811 3.59896C8.90273 3.79007 8.76738 4.19254 8.86971 5.0112C8.94909 5.64627 9.13423 6.08757 9.41018 6.36929C9.67188 6.63645 10.0966 6.8426 10.8435 6.8426C11.6506 6.8426 11.9631 6.66867 12.1051 6.51046C12.2619 6.33577 12.3748 6.00462 12.3748 5.31135C12.3748 4.64141 12.2675 4.22455 12.0513 3.95077C11.8469 3.69214 11.4446 3.43773 10.5523 3.33859ZM6.91639 3.59896C6.74748 3.41798 6.35886 3.23707 5.44518 3.33859C4.55289 3.43773 4.15058 3.69214 3.94624 3.95077C3.72994 4.22455 3.62271 4.64141 3.62271 5.31135C3.62271 6.00462 3.73563 6.33577 3.89239 6.51046C4.03436 6.66867 4.34693 6.8426 5.15396 6.8426C5.90092 6.8426 6.32561 6.63645 6.58731 6.36929C6.86326 6.08757 7.0484 5.64627 7.12778 5.0112C7.23011 4.19254 7.09476 3.79007 6.91639 3.59896ZM7.99818 12.9788C9.99307 12.9788 12.0088 12.0076 12.3748 11.7248V8.00133L12.3546 7.90026C11.9257 8.08369 11.4142 8.1551 10.8435 8.1551C9.84049 8.1551 9.04148 7.86851 8.47257 7.28773C8.28092 7.09208 8.12536 6.87308 7.99978 6.6378C7.8742 6.87308 7.71544 7.09208 7.52378 7.28773C6.95488 7.86851 6.15587 8.1551 5.15283 8.1551C4.58212 8.1551 4.07068 8.08369 3.6418 7.90026L3.62158 8.00133V11.7248C3.98755 12.0076 6.00329 12.9788 7.99818 12.9788Z" fill="currentColor"/>\n<path d="M6.46854 9.0301C6.83097 9.0301 7.12479 9.32391 7.12479 9.68635V10.9988C7.12479 11.3613 6.83097 11.6551 6.46854 11.6551C6.1061 11.6551 5.81229 11.3613 5.81229 10.9988V9.68635C5.81229 9.32391 6.1061 9.0301 6.46854 9.0301Z" fill="currentColor"/>\n<path d="M10.1873 9.68635C10.1873 9.32391 9.89347 9.0301 9.53104 9.0301C9.1686 9.0301 8.87479 9.32391 8.87479 9.68635V10.9988C8.87479 11.3613 9.1686 11.6551 9.53104 11.6551C9.89347 11.6551 10.1873 11.3613 10.1873 10.9988V9.68635Z" fill="currentColor"/>\n</svg>\n',"glm-acp-agent":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" fill-rule="evenodd"><title>Z.ai</title><path d="M8.07 1.333L6.618 3.302H.435L1.887 1.333h6.184zM15.503 12.699L14.052 14.667h-6.161l1.449-1.968h6.163zM16 1.333L6.176 14.667H0L9.824 1.333H16z"/></svg>\n',goose:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24">\n <path fill="currentColor" d="M20.9093 19.3861L19.5185 18.2413C18.7624 17.619 18.1189 16.8713 17.6157 16.0313C16.9205 14.8706 15.9599 13.8912 14.8133 13.1735L14.2533 12.8475C14.0614 12.7141 13.9276 12.5062 13.9086 12.2716C13.8963 12.1204 13.9326 11.9852 14.0171 11.8662C14.3087 11.4553 15.896 9.74698 16.1722 9.51845C16.528 9.22442 16.9243 8.97987 17.2921 8.69986C17.3443 8.66 17.3968 8.62035 17.4485 8.57989C17.4503 8.57808 17.4529 8.57668 17.4545 8.57508C17.5725 8.48195 17.6838 8.383 17.7724 8.26563C18.2036 7.76631 18.195 7.3443 18.195 7.3443C18.195 7.3443 18.1954 7.3439 18.1956 7.3437C18.1497 7.23133 17.9847 6.88163 17.6492 6.71759C17.9458 6.71178 18.2805 6.82294 18.4323 6.97156C18.6148 6.68534 18.7328 6.49967 18.9162 6.18762C18.9599 6.11352 18.9831 5.97652 18.8996 5.89981C18.8996 5.89981 18.8992 5.89981 18.8988 5.89981C18.8988 5.89981 18.8988 5.8994 18.8988 5.899C18.8972 5.8974 18.8952 5.8962 18.8936 5.8946C18.892 5.893 18.891 5.89119 18.8892 5.88939C18.8892 5.88939 18.8888 5.88939 18.8884 5.88939C18.8884 5.88939 18.8884 5.88899 18.8884 5.88859C18.885 5.88518 18.8812 5.88258 18.8776 5.87938C18.8754 5.87717 18.8736 5.87457 18.8716 5.87217C18.8692 5.87016 18.8665 5.86836 18.8643 5.86616C18.8609 5.86275 18.8587 5.85855 18.8551 5.85534C18.8551 5.85534 18.8545 5.85514 18.8543 5.85534C18.8543 5.85534 18.8543 5.85494 18.8543 5.85454C18.8527 5.85294 18.8507 5.85174 18.8491 5.85013C18.8475 5.84853 18.8463 5.84653 18.8447 5.84493C18.8447 5.84493 18.8441 5.84473 18.8439 5.84493C18.8439 5.84493 18.8439 5.84453 18.8439 5.84413C18.7672 5.7606 18.6302 5.78384 18.5561 5.8275C18.1503 6.06625 17.7555 6.32322 17.3996 6.54855C17.3996 6.54855 16.9778 6.53973 16.4783 6.97116C16.3607 7.05989 16.2618 7.17125 16.1688 7.28902C16.167 7.29082 16.1654 7.29322 16.164 7.29503C16.1234 7.3465 16.0837 7.39898 16.0441 7.45145C15.7639 7.81939 15.5195 8.21556 15.2255 8.57128C14.9971 8.84768 13.2887 10.4348 12.8777 10.7264C12.7587 10.8109 12.6237 10.8474 12.4723 10.835C12.2379 10.8161 12.0298 10.6821 11.8965 10.4903L11.5704 9.93024C10.8527 8.78318 9.87332 7.82299 8.71264 7.12778C7.87262 6.62466 7.12514 5.98092 6.50264 5.22503L5.35778 3.83421C5.3013 3.76571 5.19314 3.77693 5.15268 3.85585C5.02249 4.10941 4.77393 4.64479 4.58346 5.36483C4.57885 5.38186 4.58286 5.39988 4.59407 5.4135C4.83082 5.69952 5.37901 6.32983 6.03196 6.863C6.07742 6.90005 6.04017 6.97336 5.98369 6.95774C5.42047 6.80432 4.87288 6.55796 4.46308 6.34805C4.42964 6.33103 4.38918 6.35226 4.38437 6.38951C4.32068 6.89985 4.30425 7.46027 4.37155 8.05112C4.37355 8.07035 4.38577 8.08697 4.4036 8.09479C4.87088 8.29808 5.61816 8.59311 6.40269 8.78078C6.45958 8.7944 6.45777 8.87632 6.40029 8.88733C5.78941 9.0023 5.14968 9.02794 4.62973 9.02113C4.59327 9.02073 4.56643 9.05518 4.57625 9.09023C4.6806 9.45896 4.822 9.8339 5.00847 10.2115C5.08559 10.3811 5.16951 10.5475 5.25944 10.7104C5.27486 10.7382 5.3047 10.7548 5.33655 10.7534C5.76577 10.7324 6.28452 10.6871 6.80608 10.595C6.89501 10.5794 6.94268 10.6964 6.86757 10.7466C6.51345 10.9834 6.13571 11.1873 5.7844 11.3551C5.73733 11.3777 5.72211 11.4378 5.75315 11.4797C5.96186 11.7625 6.19139 12.0301 6.44075 12.2794C6.44075 12.2794 7.66853 13.5441 7.70198 13.6432C8.41841 12.9096 9.59612 12.0964 10.8966 11.3864C9.15488 12.8036 8.18387 13.8499 7.69517 14.4444L7.35447 14.9225C7.17742 15.1708 7.02379 15.4346 6.89541 15.7112C6.46579 16.6356 5.75756 18.5051 5.75756 18.5051C5.70328 18.6515 5.74754 18.7959 5.84168 18.89C5.84388 18.8922 5.84609 18.8944 5.84849 18.8964C5.85069 18.8986 5.8527 18.901 5.8549 18.9032C5.94924 18.9976 6.09345 19.0416 6.23986 18.9874C6.23986 18.9874 8.10897 18.2791 9.03371 17.8495C9.31031 17.7211 9.57429 17.5673 9.82245 17.3905L10.349 17.0153C10.6278 16.8166 11.0096 16.8483 11.2517 17.0904L12.4655 18.3042C12.7148 18.5535 12.9824 18.7831 13.2652 18.9918C13.3073 19.0226 13.3672 19.0076 13.3898 18.9605C13.5579 18.6094 13.7618 18.2313 13.9983 17.8774C14.0486 17.8022 14.1657 17.8501 14.1499 17.9388C14.0576 18.4606 14.0127 18.9794 13.9915 19.4084C13.9899 19.44 14.0067 19.4701 14.0345 19.4855C14.1972 19.5756 14.3636 19.6595 14.5335 19.7364C14.911 19.9229 15.2862 20.0645 15.6547 20.1687C15.6897 20.1785 15.7242 20.1516 15.7238 20.1152C15.7168 19.595 15.7424 18.9553 15.8576 18.3446C15.8684 18.2869 15.9503 18.2851 15.9641 18.3422C16.1516 19.127 16.4466 19.8742 16.6501 20.3413C16.6579 20.3591 16.6744 20.3712 16.6938 20.3734C17.2847 20.4407 17.8451 20.4242 18.3554 20.3606C18.3929 20.3559 18.4141 20.3155 18.3969 20.2818C18.187 19.872 17.9406 19.3241 17.7872 18.7612C17.7718 18.7046 17.8449 18.6675 17.8819 18.713C18.4151 19.3659 19.0454 19.9141 19.3314 20.1508C19.345 20.1621 19.3633 20.1659 19.3801 20.1615C20.1003 19.9712 20.6357 19.7226 20.8891 19.5922C20.968 19.5518 20.9792 19.4436 20.9107 19.3871L20.9093 19.3861Z"/>\n</svg>\n',grok:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 1024 1024" fill="none">\n <path fill="currentColor" d="M395.479 633.828L735.91 381.105C752.599 368.715 776.454 373.548 784.406 392.792C826.26 494.285 807.561 616.253 724.288 699.996C641.016 783.739 525.151 802.104 419.247 760.277L303.556 814.143C469.49 928.202 670.987 899.995 796.901 773.282C896.776 672.843 927.708 535.937 898.785 412.476L899.047 412.739C857.105 231.37 909.358 158.874 1016.4 10.6326C1018.93 7.11771 1021.47 3.60279 1024 0L883.144 141.651V141.212L395.392 633.916"/>\n <path fill="currentColor" d="M325.226 695.251C206.128 580.84 226.662 403.776 328.285 301.668C403.431 226.097 526.549 195.254 634.026 240.596L749.454 186.994C728.657 171.88 702.007 155.623 671.424 144.2C533.19 86.9942 367.693 115.465 255.323 228.382C147.234 337.081 113.244 504.215 171.613 646.833C215.216 753.423 143.739 828.818 71.7385 904.916C46.2237 931.893 20.6216 958.87 0 987.429L325.139 695.339"/>\n</svg>\n',junie:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 40 40" fill="none">\n <path d="M25 15H35V16.75C35 29 30.5001 35 16.5001 35H15V25H16.5001C22.6251 25 25 22.875 25 16.75V15Z" fill="currentColor"/>\n <rect x="5" y="15" width="10" height="10" fill="currentColor"/>\n <rect x="15" y="5" width="10" height="10" fill="currentColor"/>\n</svg>\n',kilo:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 40 40">\n <path fill="currentColor" d="M27.9998324,34.6666921h6.6666279v5.3333023h-8.3809037l-3.6190266-3.6190266v-8.3809037h5.3333023v6.6666279ZM39.9997627,26.2857884l-3.6190266-3.6190266h-8.3809037v5.3333023h6.6666279v6.6666279h5.3333023v-8.3809037ZM17.3332326,22.6667578h-5.3333023v5.3333023h5.3333023v-5.3333023ZM0,36.3809638l3.6190266,3.6190266h13.714206v-5.3333023H5.3333023v-11.9999302H0v13.714206ZM33.9600959,11.9999247V3.619021L30.3410693-.0000056h-7.6745392v5.3333023h5.9602634v6.6666279h-5.9602634v5.3333023h17.3332326v-5.3333023h-6.0396668ZM5.3333023,0H0v17.3332326h5.3333023v-5.9999651h6.6666279v5.9999651h5.3333023v-5.9999651l-5.3333023-5.3333023h-6.6666279V0ZM17.3332326,0h-5.3333023v5.9999651h5.3333023V0Z"/>\n</svg>\n',kimi:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24">\n <path fill="currentColor" d="M19.514 7.342C19.711 7.862 19.814 8.413 19.816 8.969C19.816 12.494 15.998 14.697 12.946 12.934C11.529 12.116 10.657 10.605 10.657 8.969C10.657 5.646 14.085 3.431 17.115 4.793C15.26 3.373 12.99 2.607 10.655 2.612C4.772 2.614 0.005 7.381 0 13.265C0.002 19.148 4.772 23.918 10.655 23.92C16.538 23.916 21.306 19.147 21.31 13.265C21.312 11.155 20.687 9.095 19.514 7.342ZM14.841 4.666C14.841 8.191 18.657 10.395 21.709 8.632C23.127 7.814 24 6.302 24 4.666C24 1.14 20.184-1.061 17.13 0.699C15.714 1.519 14.841 3.03 14.841 4.666"/>\n</svg>\n',"minion-code":'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <rect fill="none" stroke="currentColor" stroke-width="1.1" x="4.5" y="2.5" width="7" height="10" rx="3.5"/>\n <line stroke="currentColor" stroke-width="1" x1="3" y1="5.5" x2="13" y2="5.5"/>\n <circle fill="none" stroke="currentColor" stroke-width="1" cx="6.5" cy="5.5" r="1.6"/>\n <circle fill="none" stroke="currentColor" stroke-width="1" cx="9.5" cy="5.5" r="1.6"/>\n <circle fill="currentColor" cx="6.8" cy="5.6" r="0.55"/>\n <circle fill="currentColor" cx="9.8" cy="5.6" r="0.55"/>\n <path fill="none" stroke="currentColor" stroke-width="0.6" stroke-linecap="round" d="M7 8.3 Q8 9 9 8.3"/>\n <path fill="none" stroke="currentColor" stroke-width="0.9" stroke-linecap="round" d="M4.5 8 L3 9.5"/>\n <path fill="none" stroke="currentColor" stroke-width="0.9" stroke-linecap="round" d="M11.5 8 L13 9.5"/>\n <line stroke="currentColor" stroke-width="0.7" x1="5" y1="9.5" x2="11" y2="9.5"/>\n <line stroke="currentColor" stroke-width="0.9" x1="6.5" y1="12.5" x2="6.5" y2="14"/>\n <line stroke="currentColor" stroke-width="0.9" x1="9.5" y1="12.5" x2="9.5" y2="14"/>\n <line stroke="currentColor" stroke-width="0.9" stroke-linecap="round" x1="6.5" y1="14" x2="5.5" y2="14"/>\n <line stroke="currentColor" stroke-width="0.9" stroke-linecap="round" x1="9.5" y1="14" x2="10.5" y2="14"/>\n <line stroke="currentColor" stroke-width="0.7" stroke-linecap="round" x1="8" y1="2.5" x2="7.3" y2="0.8"/>\n <line stroke="currentColor" stroke-width="0.7" stroke-linecap="round" x1="8" y1="2.5" x2="8" y2="0.5"/>\n <line stroke="currentColor" stroke-width="0.7" stroke-linecap="round" x1="8" y1="2.5" x2="8.7" y2="0.8"/>\n</svg>\n',"mistral-vibe":'<svg width="16" height="16" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M8.8147 5.35803H5.35791V8.46914H8.8147V5.35803Z" fill="currentColor"/>\n<path d="M22.6419 5.35803H19.1851V8.46914H22.6419V5.35803Z" fill="currentColor"/>\n<path d="M15.7283 15.7284H12.2715V18.8395H15.7283V15.7284Z" fill="currentColor"/>\n<path d="M8.8147 15.7284H5.35791V18.8395H8.8147V15.7284Z" fill="currentColor"/>\n<path d="M22.6419 15.7284H19.1851V18.8395H22.6419V15.7284Z" fill="currentColor"/>\n<path d="M12.2715 8.81482H5.35791V11.9259H12.2715V8.81482Z" fill="currentColor"/>\n<path d="M12.2718 19.1852H1.90137V22.2963H12.2718V19.1852Z" fill="currentColor"/>\n<path d="M26.0989 19.1852H15.7285V22.2963H26.0989V19.1852Z" fill="currentColor"/>\n<path d="M22.6419 12.2716H5.35791V15.3827H22.6419V12.2716Z" fill="currentColor"/>\n<path d="M22.6421 8.81482H15.7285V11.9259H22.6421V8.81482Z" fill="currentColor"/>\n</svg>\n',nova:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1"/>\n <circle cx="8" cy="8" r="4.5" fill="none" stroke="currentColor" stroke-width="0.3" opacity="0.5"/>\n <line x1="8" y1="8" x2="13.5" y2="13.5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/>\n <polygon points="14.5,14.5 12.3,13.5 13.5,12.3" fill="currentColor"/>\n <line x1="8" y1="8" x2="2.5" y2="2.5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/>\n <polygon points="1.5,1.5 3.7,2.5 2.5,3.7" fill="currentColor"/>\n <circle cx="8" cy="8" r="1.3" fill="currentColor"/>\n <circle cx="8" cy="8" r="0.6" fill="none" stroke="currentColor" stroke-width="0.5" opacity="0.7"/>\n</svg>\n',opencode:'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path fill-rule="evenodd" clip-rule="evenodd" d="M13 14H3V2H13V14ZM10.5 4.4H5.5V11.6H10.5V4.4Z" fill="currentColor"/>\n</svg>\n',"pi-acp":'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M1 1H11.7692V7.9999H8.17942V11.4999H4.58982V15H1V1ZM4.58982 4.50005V7.9999H8.17942V4.50005H4.58982Z" fill="currentColor"/>\n<path d="M11.7692 7.46154H15V15H11.7692V7.46154Z" fill="currentColor"/>\n</svg>\n',poolside:'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M2.63653 5.50522L2.18735 5.28559C2.09852 5.46726 2.12787 5.68456 2.26172 5.83616C2.39558 5.98775 2.60757 6.04379 2.79884 5.97814L2.63653 5.50522ZM5.83578 6.94285L5.3732 7.13265L5.5645 7.59886L6.02919 7.40392L5.83578 6.94285ZM10.7441 9.44034L10.2614 9.57083L10.393 10.0573L10.8784 9.92198L10.7441 9.44034ZM2.5 8.24963C2.4998 7.97349 2.27577 7.74979 1.99963 7.75C1.72349 7.75021 1.4998 7.97423 1.5 8.25037L2.5 8.24963ZM13.4143 10.7751C12.0197 13.6273 8.57701 14.8089 5.72485 13.4143L5.28559 14.3126C8.63389 15.9498 12.6754 14.5627 14.3126 11.2144L13.4143 10.7751ZM3.08571 5.72485C4.48031 2.87269 7.92299 1.69111 10.7751 3.08571L11.2144 2.18735C7.86611 0.550151 3.82455 1.93728 2.18735 5.28559L3.08571 5.72485ZM10.7751 3.08571C13.6273 4.48031 14.8089 7.92299 13.4143 10.7751L14.3126 11.2144C15.9498 7.86611 14.5627 3.82455 11.2144 2.18735L10.7751 3.08571ZM2.79884 5.97814C3.02201 5.90155 3.54835 5.84926 4.09141 6.00587C4.61256 6.15616 5.10736 6.48476 5.3732 7.13265L6.29835 6.75304C5.89213 5.76303 5.11508 5.26032 4.3685 5.04503C3.64385 4.83605 2.9066 4.8839 2.47422 5.0323L2.79884 5.97814ZM6.02919 7.40392C6.25314 7.30998 6.55771 7.25841 6.85281 7.36034C7.13062 7.45631 7.49214 7.72014 7.78743 8.4398L8.71257 8.0602C8.3358 7.14195 7.79046 6.62626 7.17931 6.41515C6.58544 6.21001 6.01893 6.32381 5.64236 6.48177L6.02919 7.40392ZM6.26827 7.19375C6.80493 6.26869 8.18817 4.18684 11.1653 3.10654L10.8242 2.16652C7.53166 3.36127 5.99463 5.67263 5.40329 6.69195L6.26827 7.19375ZM14.3364 10.8325C14.1845 10.39 13.7564 9.79897 13.14 9.37995C12.504 8.94759 11.6302 8.67426 10.6099 8.9587L10.8784 9.92198C11.5634 9.73102 12.1368 9.90713 12.5779 10.207C13.0385 10.5201 13.3174 10.9441 13.3905 11.1571L14.3364 10.8325ZM11.2268 9.30984C11.1236 8.92833 10.8783 8.39265 10.3638 8.02453C9.82769 7.6409 9.08331 7.49864 8.11574 7.76836L8.38426 8.73164C9.1221 8.52595 9.53979 8.66454 9.78189 8.83777C10.0457 9.02651 10.1946 9.32371 10.2614 9.57083L11.2268 9.30984ZM11.216 9.60556C11.6225 8.44463 12.4244 5.47936 11.4712 2.48487L10.5183 2.78819C11.3726 5.47172 10.6545 8.18331 10.2722 9.27512L11.216 9.60556ZM7.80082 8.03037L5.05604 13.6438L5.9544 14.0831L8.69918 8.46963L7.80082 8.03037ZM5.72485 13.4143C3.68742 12.4181 2.50158 10.3763 2.5 8.24963L1.5 8.25037C1.50185 10.7441 2.89229 13.1424 5.28559 14.3126L5.72485 13.4143Z" fill="currentColor"/>\n</svg>\n',qoder:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path fill="currentColor" d="M8 1C4.134 1 1 4.134 1 8s3.134 7 7 7c1.5 0 2.9-.47 4.05-1.28l1.12 1.12a.75.75 0 1 0 1.06-1.06l-1.12-1.12A6.97 6.97 0 0 0 15 8c0-3.866-3.134-7-7-7Zm0 2c2.761 0 5 2.239 5 5s-2.239 5-5 5-5-2.239-5-5 2.239-5 5-5Z"/>\n</svg>\n',"qwen-code":'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 141.38 140" width="16" height="16"><path fill="currentColor" d="m140.93 85-16.35-28.33-1.93-3.34 8.66-15a3.323 3.323 0 0 0 0-3.34l-9.62-16.67c-.3-.51-.72-.93-1.22-1.22s-1.07-.45-1.67-.45H82.23l-8.66-15a3.33 3.33 0 0 0-2.89-1.67H51.43c-.59 0-1.17.16-1.66.45-.5.29-.92.71-1.22 1.22L32.19 29.98l-1.92 3.33H12.96c-.59 0-1.17.16-1.66.45-.5.29-.93.71-1.22 1.22L.45 51.66a3.323 3.323 0 0 0 0 3.34l18.28 31.67-8.66 15a3.32 3.32 0 0 0 0 3.34l9.62 16.67c.3.51.72.93 1.22 1.22s1.07.45 1.67.45h36.56l8.66 15a3.35 3.35 0 0 0 2.89 1.67h19.25a3.34 3.34 0 0 0 2.89-1.67l18.28-31.67h17.32c.6 0 1.17-.16 1.67-.45s.92-.71 1.22-1.22l9.62-16.67a3.323 3.323 0 0 0 0-3.34ZM51.44 3.33 61.07 20l-9.63 16.66h76.98l-9.62 16.66H45.67l-11.54-20zM57.21 120H22.58l9.63-16.67h19.25l-38.5-66.67h19.25l9.62 16.67L68.78 100l-11.55 20Zm61.59-33.34-9.62-16.67-38.49 66.67-9.63-16.67 9.63-16.66 26.94-46.67h23.1l17.32 30z"/></svg>\n',sigit:'<?xml version="1.0" standalone="no" ?>\n<svg\n version="1.0"\n xmlns="http://www.w3.org/2000/svg"\n width="16"\n height="16"\n viewBox="0 0 1024 1024"\n preserveAspectRatio="xMidYMid meet"\n>\n\n<g\n transform="translate(0,1024) scale(0.1,-0.1)"\n fill="currentColor"\n stroke="none"\n >\n<path\n d="M6428 6358 c-104 -8 -227 -38 -314 -78 -73 -33 -196 -115 -239 -160\n-18 -19 -39 -30 -56 -30 -26 0 -27 1 -18 32 5 18 9 52 9 76 0 34 -6 49 -34 80\nl-34 37 -319 3 c-412 3 -383 18 -447 -236 -20 -78 -36 -154 -36 -168 0 -14 -5\n-35 -12 -47 -6 -12 -21 -60 -33 -107 l-22 -85 -22 43 c-47 91 -179 184 -310\n218 -146 37 -375 34 -536 -7 -203 -51 -365 -175 -443 -339 -68 -143 -109 -304\n-114 -445 l-2 -70 -127 5 c-70 3 -125 2 -123 -1 5 -8 -27 -21 -34 -14 -3 3 0\n5 7 5 7 0 9 5 6 10 -4 6 -11 8 -16 5 -5 -4 -15 -3 -21 2 -7 4 -17 8 -23 8 -5\n0 -10 7 -10 15 0 13 -142 15 -1205 18 -663 1 -1212 -1 -1220 -5 -8 -3 -19 -5\n-25 -4 -5 1 1 -8 15 -21 13 -13 29 -22 34 -20 5 2 3 -4 -4 -14 -13 -15 -15\n-14 -24 5 -5 13 -15 20 -24 16 -7 -3 -157 -5 -333 -5 l-319 0 0 -2540 0 -2540\n5120 0 5120 0 0 2540 0 2540 -685 1 c-377 1 -689 2 -694 3 -16 2 -25 16 -10\n16 11 0 11 2 -1 10 -8 5 -10 10 -4 10 5 0 16 -6 23 -12 11 -10 13 -10 7 0 -5\n8 1 12 18 12 14 0 27 -1 29 -2 1 -2 13 7 27 20 13 12 30 22 37 22 8 0 11 5 8\n10 -3 6 -2 10 2 10 5 0 9 8 9 18 1 9 18 82 38 161 20 79 36 158 36 176 0 42\n-38 97 -75 109 -17 6 -31 11 -32 11 -1 1 5 23 13 50 20 68 20 137 -2 169 -27\n43 -64 56 -155 56 -73 0 -80 2 -74 18 4 9 9 42 12 72 3 44 0 62 -17 88 -38 61\n-57 63 -396 60 l-304 -3 0 38 c0 29 -8 46 -34 75 l-34 37 -313 3 c-215 2 -321\n-1 -340 -8 -50 -21 -68 -52 -100 -177 l-31 -121 -28 16 c-16 9 -35 30 -43 47\n-23 48 -102 130 -168 174 -132 88 -315 126 -531 109z m296 -148 c43 -11 101\n-32 129 -47 67 -37 145 -115 170 -172 41 -92 33 -253 -25 -493 l-21 -88 -275\n0 -274 0 4 23 c3 12 22 91 42 175 25 102 36 170 34 205 -3 51 -4 52 -39 61\n-57 14 -98 -15 -128 -89 -36 -89 -321 -1238 -328 -1321 -5 -66 -4 -72 18 -88\n54 -38 118 -7 159 78 28 58 122 403 113 419 -2 4 -27 7 -54 7 -43 0 -50 3 -46\n18 3 9 20 79 38 154 l33 137 75 7 c79 7 558 1 566 -8 3 -3 -58 -260 -136 -572\nl-141 -566 -174 0 -174 0 0 29 c0 15 -3 49 -6 74 l-7 46 -61 -55 c-33 -30 -94\n-72 -135 -92 -74 -37 -76 -37 -201 -37 -126 0 -126 0 -202 38 -203 100 -254\n266 -179 592 66 287 235 944 271 1050 72 215 132 298 289 403 144 97 262 130\n462 131 95 1 145 -4 203 -19z m-1046 -37 c-3 -10 -18 -71 -33 -135 l-29 -118\n-273 0 c-213 0 -271 3 -268 13 2 6 13 50 25 97 11 46 25 101 31 122 l10 38\n271 0 c253 0 270 -1 266 -17z m2240 0 c-3 -10 -18 -71 -33 -135 l-29 -118\n-273 0 c-213 0 -271 3 -268 13 2 6 13 50 25 97 11 46 25 101 31 122 l10 38\n271 0 c253 0 270 -1 266 -17z m722 -139 c0 -3 -13 -59 -30 -124 -16 -65 -30\n-126 -30 -134 0 -13 13 -16 65 -16 45 0 65 -4 65 -12 0 -13 -31 -146 -51 -220\nl-10 -38 -72 0 -73 0 -132 -532 c-73 -293 -132 -552 -132 -574 0 -47 11 -54\n93 -54 26 0 47 -3 47 -7 0 -5 -15 -66 -33 -138 l-33 -130 -165 -3 c-326 -6\n-421 26 -459 155 -17 55 2 146 155 761 69 277 125 508 125 513 0 5 -25 9 -55\n9 l-55 0 7 28 c3 15 18 74 33 132 l26 105 59 5 59 5 34 138 34 137 264 0 c145\n0 264 -3 264 -6z m-4147 -223 c137 -36 218 -93 257 -183 27 -63 24 -128 -12\n-278 l-24 -95 -232 -3 c-143 -1 -232 1 -232 7 0 5 9 47 20 93 35 145 26 178\n-49 178 -65 0 -117 -79 -128 -195 -9 -104 10 -126 222 -252 211 -127 273 -191\n290 -305 14 -94 -44 -332 -112 -458 -105 -195 -319 -301 -607 -300 -253 1\n-438 89 -476 225 -17 61 -8 193 21 318 l22 97 234 0 233 0 -5 -22 c-3 -13 -14\n-61 -25 -108 -11 -47 -20 -106 -20 -132 0 -40 4 -50 25 -64 31 -20 85 -12 120\n19 32 28 64 120 72 203 8 82 7 82 -202 224 -178 120 -243 177 -277 242 -72\n138 33 532 175 650 70 59 97 75 175 105 101 38 184 51 328 52 99 1 149 -4 207\n-18z m1087 -20 c0 -7 -408 -1652 -426 -1718 l-6 -23 -269 0 c-173 0 -269 4\n-269 10 0 6 97 399 216 875 l216 865 269 0 c148 0 269 -4 269 -9z m2240 -1 c0\n-5 -97 -397 -215 -871 -118 -474 -215 -863 -215 -865 0 -2 -121 -4 -270 -4\n-174 0 -270 4 -270 10 0 6 97 399 216 875 l216 865 269 0 c166 0 269 -4 269\n-10z m1040 -742 c0 -5 -5 -6 -11 -2 -8 4 -9 -1 -4 -17 4 -13 4 -21 0 -17 -4 4\n-9 21 -11 39 -3 27 -2 30 11 19 8 -7 15 -17 15 -22z m-8192 4 c2 -7 -5 -12\n-15 -11 -12 0 -14 2 -4 6 11 5 11 7 0 15 -12 8 -12 9 0 6 8 -3 17 -10 19 -16z\nm1840 -1329 c-311 -2 -824 -2 -1140 0 -315 1 -60 2 567 2 627 0 885 -1 573 -2z\nm619 1 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z"\n />\n<path\n d="M900 6270 c0 -11 6 -20 14 -20 7 0 16 -9 19 -20 5 -20 12 -20 1803\n-18 1731 3 1799 4 1802 21 3 12 -4 20 -17 24 -12 3 -21 12 -21 19 0 12 -274\n14 -1800 14 -1793 0 -1800 0 -1800 -20z"\n />\n<path\n d="M900 6005 c0 -15 6 -25 14 -25 7 0 16 -9 19 -20 5 -20 12 -20 1334\n-18 l1328 3 3 23 c3 17 -2 22 -17 22 -14 0 -21 6 -21 20 0 20 -7 20 -1330 20\nl-1330 0 0 -25z"\n />\n<path\n d="M737 5713 c-12 -12 -7 -43 7 -43 7 0 16 -9 19 -20 5 -20 12 -20 1323\n-18 1248 3 1319 4 1322 21 2 9 -4 20 -14 24 -10 3 -26 15 -35 24 -17 17 -83\n18 -1317 19 -714 0 -1302 -3 -1305 -7z"\n />\n<path\n d="M1953 5412 c-1265 -2 -1273 -2 -1273 -22 0 -11 6 -20 14 -20 7 0 16\n-9 19 -20 5 -20 12 -20 1298 -18 1242 3 1294 4 1297 21 3 12 -4 20 -17 24 -12\n3 -21 11 -21 18 0 7 -10 14 -22 16 -13 2 -596 3 -1295 1z"\n />\n<path d="M9010 5130 c-12 -7 -10 -9 7 -7 12 0 19 5 17 9 -6 10 -6 10 -24 -2z" />\n<path\n d="M3180 5109 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10\n-5 -10 -11z"\n />\n</g>\n</svg>\n',stakpak:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path fill="currentColor" d="M6.53 4.412h5.883v3.587H9.471v3.588H3.588V7.999H6.53Z"/>\n</svg>\n',traecli:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">\n <path fill-rule="evenodd" d="M2.4 4.8H21.6V19.2H2.4Z M5.92 7.52H19.2V15.36H5.92Z M10.08 9.6 11.92 11.44 10.08 13.28 8.24 11.44Z M15.04 9.6 16.88 11.44 15.04 13.28 13.2 11.44Z"/>\n</svg>\n',vtcode:'<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">\n <path d="M0.5 5.5L2.5 8 0.5 10.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <text x="3.2" y="11.5" font-family="\'SF Mono\', \'Fira Code\', \'Consolas\', monospace" font-size="10" font-weight="600" letter-spacing="-0.5" fill="currentColor">VT</text>\n</svg>\n'}},3946,[]);
15602
15602
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.resolveProviderIconName=function(n){if(t.has(n))return{kind:"builtin",id:n};if(o.has(n))return{kind:"catalog",id:n};return{kind:"bot"}};var n=r(d[0]);const t=new Set(n.BUILTIN_PROVIDER_ICON_NAMES),o=new Set(n.KNOWN_PROVIDER_ICON_NAMES)},3947,[3948]);
15603
15603
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"BUILTIN_PROVIDER_ICON_NAMES",{enumerable:!0,get:function(){return o}}),Object.defineProperty(e,"ACP_PROVIDER_ICON_NAMES",{enumerable:!0,get:function(){return t}}),Object.defineProperty(e,"TERMINAL_PROFILE_ICON_NAMES",{enumerable:!0,get:function(){return n}}),Object.defineProperty(e,"KNOWN_PROVIDER_ICON_NAMES",{enumerable:!0,get:function(){return c}});const o=["claude","codex","copilot","kiro","minimax","omp","opencode","pi"],t=["agoragentic-acp","amp-acp","auggie","autohand","cline","codebuddy-code","codewhale","cortex-code","corust-agent","crow-cli","cursor","deepagents","dimcode","dirac","factory-droid","fast-agent","gemini","glm-acp-agent","goose","grok","junie","kilo","kimi","minion-code","mistral-vibe","nova","poolside","qoder","qwen-code","sigit","stakpak","traecli","vtcode"],n=["agy"],c=[...o,...t,...n]},3948,[]);
@@ -16579,5 +16579,5 @@ __d(function(g,r,_i,a,_m,_e,d){"use strict";var e,t=r(d[0]),n=this&&this.__creat
16579
16579
  __r(975);
16580
16580
  __r(341);
16581
16581
  __r(0);
16582
- //# sourceMappingURL=/_expo/static/js/web/index-56443c4ee726ad022938cfa50ba09aee.js.map
16583
- //# debugId=b54ea861-9542-42e1-8d80-95f13785551c
16582
+ //# sourceMappingURL=/_expo/static/js/web/index-46b675f5daddb88c514f0eee26695f71.js.map
16583
+ //# debugId=7e8b1381-0e80-4e2b-9287-30070cb3b825
@@ -85,6 +85,6 @@
85
85
  <body>
86
86
  <noscript>You need to enable JavaScript to run this app.</noscript>
87
87
  <div id="root"></div>
88
- <script src="/_expo/static/js/web/index-56443c4ee726ad022938cfa50ba09aee.js" defer></script>
88
+ <script src="/_expo/static/js/web/index-46b675f5daddb88c514f0eee26695f71.js" defer></script>
89
89
  </body>
90
90
  </html>
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperdrive.bot/paseo-server",
3
- "version": "0.3.38",
3
+ "version": "0.3.39",
4
4
  "description": "Paseo backend server",
5
5
  "files": [
6
6
  "dist/server",
@@ -65,11 +65,11 @@
65
65
  "@agentclientprotocol/sdk": "^0.17.1",
66
66
  "@anthropic-ai/claude-agent-sdk": "^0.3.195",
67
67
  "@anthropic-ai/sdk": "^0.104.2",
68
- "@hyperdrive.bot/paseo-client": "0.3.38",
69
- "@hyperdrive.bot/paseo-extension-sdk": "0.3.38",
70
- "@hyperdrive.bot/paseo-highlight": "0.3.38",
71
- "@hyperdrive.bot/paseo-protocol": "0.3.38",
72
- "@hyperdrive.bot/paseo-relay": "0.3.38",
68
+ "@hyperdrive.bot/paseo-client": "0.3.39",
69
+ "@hyperdrive.bot/paseo-extension-sdk": "0.3.39",
70
+ "@hyperdrive.bot/paseo-highlight": "0.3.39",
71
+ "@hyperdrive.bot/paseo-protocol": "0.3.39",
72
+ "@hyperdrive.bot/paseo-relay": "0.3.39",
73
73
  "@isaacs/ttlcache": "^2.1.4",
74
74
  "@modelcontextprotocol/sdk": "^1.20.1",
75
75
  "@opencode-ai/sdk": "1.2.6",