@trusty-squire/mcp 0.5.0 → 0.5.4

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.
@@ -7,29 +7,62 @@
7
7
  <!--
8
8
  Trusty Squire branded noVNC client. Served by websockify from a
9
9
  temp dir that also holds the installed noVNC `core/` (see
10
- google-login.ts loginHeadless). Deliberately uses ONLY noVNC's
10
+ google-login.ts runHeadlessChrome). Deliberately uses ONLY noVNC's
11
11
  stable RFB API — the `RFB` default export, its constructor, the
12
- `scaleViewport`/`resizeSession` properties, and the
13
- connect/disconnect/securityfailure events all stable across
14
- every noVNC 1.x release, so it survives whatever version the
15
- host distro's `novnc` package pinned.
12
+ `scaleViewport`/`resizeSession` properties, the
13
+ connect/disconnect/securityfailure events, and `rfb.focus()` (used
14
+ to pop the mobile soft keyboard) all stable across every noVNC
15
+ 1.x release, so this page survives whatever version the host
16
+ distro's `novnc` package pinned.
16
17
  -->
17
18
  <style>
18
19
  html, body { margin: 0; height: 100%; background: #0f1115; color: #e6e8ec;
19
20
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
20
- #bar { display: flex; align-items: center; gap: 8px; padding: 9px 13px;
21
- background: #171a21; border-bottom: 1px solid #272b35; font-size: 13px;
22
- line-height: 1.3; }
21
+ /* Flex column so the header takes whatever height it needs (a long
22
+ sub-line on narrow phones wraps to a second row instead of being
23
+ truncated by a hard-coded 39px), and #screen fills the rest. */
24
+ body { display: flex; flex-direction: column; overflow: hidden; }
25
+ #bar { flex: none; display: flex; align-items: center; gap: 8px;
26
+ padding: 10px 14px; background: #171a21; border-bottom: 1px solid #272b35;
27
+ font-size: 13px; line-height: 1.35; flex-wrap: wrap; }
23
28
  #bar b { color: #fff; }
24
29
  #bar span.sub { color: #9aa0ab; }
25
30
  #dot { width: 8px; height: 8px; border-radius: 50%; background: #e0a23a;
26
31
  flex: none; }
27
32
  #dot.ok { background: #3fb950; }
28
33
  #dot.err { background: #f85149; }
29
- #screen { position: absolute; top: 39px; left: 0; right: 0; bottom: 0;
30
- background: #0f1115; }
34
+ #screen { flex: 1; position: relative; background: #0f1115; min-height: 0; }
31
35
  #msg { position: absolute; top: 50%; left: 0; right: 0; text-align: center;
32
36
  transform: translateY(-50%); color: #9aa0ab; font-size: 14px; padding: 0 24px; }
37
+ /* Show-keyboard button. The remote VNC view is just pixels — the OS
38
+ can't tell there's a typeable field, so a normal tap inside the
39
+ remote Chrome doesn't pop the soft keyboard. This button focuses
40
+ the hidden #kbInput element below; the OS sees an actual editable
41
+ input gain focus and pops the keyboard. Each character the user
42
+ types into #kbInput is forwarded to the VNC stream via
43
+ rfb.sendKey() and the input is cleared, so the local input
44
+ never accumulates the user's password. */
45
+ #kb { position: absolute; right: 16px; bottom: 16px; width: 52px; height: 52px;
46
+ border-radius: 50%; border: none; background: #4f46e5; color: #fff;
47
+ font-size: 24px; line-height: 1; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
48
+ cursor: pointer; z-index: 10; display: none;
49
+ -webkit-tap-highlight-color: transparent; touch-action: manipulation;
50
+ }
51
+ #kb:active { transform: scale(0.96); }
52
+ /* Only show the button on touch-capable devices — desktops already
53
+ have a hardware keyboard and the button just clutters the view. */
54
+ @media (hover: none) and (pointer: coarse) {
55
+ #kb.ready { display: flex; align-items: center; justify-content: center; }
56
+ }
57
+ /* The hidden input the button focuses. Positioned in the viewport
58
+ so iOS scrolls to it on focus (off-screen positioning is known to
59
+ break focus() on iOS Safari), but visually neutered. */
60
+ #kbInput {
61
+ position: absolute; right: 16px; bottom: 16px; width: 52px; height: 52px;
62
+ opacity: 0; pointer-events: none; border: none; padding: 0; margin: 0;
63
+ caret-color: transparent; background: transparent; color: transparent;
64
+ z-index: 5;
65
+ }
33
66
  </style>
34
67
  </head>
35
68
  <body>
@@ -38,8 +71,16 @@
38
71
  <b>Trusty Squire</b>
39
72
  <span class="sub">— sign in to your account, then return to your terminal.</span>
40
73
  </div>
41
- <div id="screen"></div>
42
- <div id="msg">Connecting to the secure login window&hellip;</div>
74
+ <div id="screen">
75
+ <div id="msg">Connecting to the secure login window&hellip;</div>
76
+ <!-- inputmode=text + autocorrect/autocapitalize/spellcheck off so the
77
+ soft keyboard never offers autocomplete suggestions for a typed
78
+ password, and never enriches characters before we forward them. -->
79
+ <input id="kbInput" type="text" inputmode="text" autocomplete="off"
80
+ autocorrect="off" autocapitalize="off" spellcheck="false"
81
+ aria-hidden="true" tabindex="-1" />
82
+ <button id="kb" type="button" aria-label="Show keyboard">⌨</button>
83
+ </div>
43
84
  <script type="module">
44
85
  import RFB from "./core/rfb.js";
45
86
 
@@ -51,6 +92,8 @@
51
92
  const dot = document.getElementById("dot");
52
93
  const msg = document.getElementById("msg");
53
94
  const screen = document.getElementById("screen");
95
+ const kbBtn = document.getElementById("kb");
96
+ const kbInput = document.getElementById("kbInput");
54
97
 
55
98
  const wsUrl =
56
99
  (location.protocol === "https:" ? "wss://" : "ws://") +
@@ -71,6 +114,11 @@
71
114
  rfb.addEventListener("connect", () => {
72
115
  dot.className = "ok";
73
116
  msg.style.display = "none";
117
+ // Reveal the soft-keyboard button (CSS gates it to touch
118
+ // devices via the pointer:coarse media query). Connection
119
+ // success is the right moment — earlier and the button would
120
+ // suggest a typing target that isn't connected yet.
121
+ kbBtn.classList.add("ready");
74
122
  });
75
123
  rfb.addEventListener("disconnect", () => {
76
124
  dot.className = "err";
@@ -78,12 +126,78 @@
78
126
  msg.textContent =
79
127
  "Login window closed. If you finished signing in, return to " +
80
128
  "your terminal — you can close this tab.";
129
+ kbBtn.classList.remove("ready");
81
130
  });
82
131
  rfb.addEventListener("securityfailure", () => {
83
132
  dot.className = "err";
84
133
  msg.style.display = "";
85
134
  msg.textContent = "Could not authenticate to the login window.";
86
135
  });
136
+
137
+ // Tap → kbInput.focus() inside the click handler so the focus
138
+ // happens synchronously in response to a user gesture. iOS /
139
+ // Android browsers won't pop the soft keyboard for a programmatic
140
+ // focus outside a gesture, so this MUST stay inline. Focusing
141
+ // a real <input> is what triggers the OS keyboard — focusing
142
+ // the RFB div (rfb.focus() in noVNC 1.x) wouldn't.
143
+ kbBtn.addEventListener("click", (e) => {
144
+ e.preventDefault();
145
+ kbInput.value = "";
146
+ kbInput.focus();
147
+ });
148
+
149
+ // X11 keysyms for the keys mobile keyboards send that don't
150
+ // arrive as text in the `input` event. (Reference:
151
+ // https://github.com/novnc/noVNC/blob/master/core/input/keysym.js
152
+ // — these values are stable.)
153
+ const SPECIAL_KEYS = {
154
+ Backspace: 0xff08,
155
+ Tab: 0xff09,
156
+ Enter: 0xff0d,
157
+ Escape: 0xff1b,
158
+ ArrowLeft: 0xff51,
159
+ ArrowUp: 0xff52,
160
+ ArrowRight: 0xff53,
161
+ ArrowDown: 0xff54,
162
+ Delete: 0xffff,
163
+ };
164
+
165
+ // Forward typed characters. The `input` event fires once per
166
+ // commit (each char on most soft keyboards; sometimes batched
167
+ // when an IME finalizes). We diff against the previous value
168
+ // to handle paste / autocorrect insertions, send a press+release
169
+ // for each new character, then clear the input so it never
170
+ // accumulates the user's password.
171
+ let lastKbValue = "";
172
+ kbInput.addEventListener("input", () => {
173
+ const newValue = kbInput.value;
174
+ if (newValue.length > 0) {
175
+ for (const ch of newValue) {
176
+ const keysym = ch.charCodeAt(0);
177
+ rfb.sendKey(keysym, null, true);
178
+ rfb.sendKey(keysym, null, false);
179
+ }
180
+ } else if (lastKbValue.length > 0 && newValue.length === 0) {
181
+ // Soft keyboards sometimes fire `input` with an empty value
182
+ // when the user taps Backspace and there was only one char.
183
+ rfb.sendKey(SPECIAL_KEYS.Backspace, "Backspace", true);
184
+ rfb.sendKey(SPECIAL_KEYS.Backspace, "Backspace", false);
185
+ }
186
+ kbInput.value = "";
187
+ lastKbValue = "";
188
+ });
189
+
190
+ // Special keys come through as keydown events. preventDefault
191
+ // so the input doesn't try to act on them locally (e.g. Enter
192
+ // submitting a form that doesn't exist).
193
+ kbInput.addEventListener("keydown", (e) => {
194
+ const keysym = SPECIAL_KEYS[e.key];
195
+ if (keysym !== undefined) {
196
+ e.preventDefault();
197
+ rfb.sendKey(keysym, e.code, true);
198
+ rfb.sendKey(keysym, e.code, false);
199
+ }
200
+ });
87
201
  }
88
202
  </script>
89
203
  </body>
@@ -15,4 +15,13 @@ export declare function ensureOAuthSession(opts?: {
15
15
  profileDir?: string;
16
16
  timeoutMinutes?: number;
17
17
  }): Promise<LoginResult>;
18
+ export declare function openInstallConfirmInBotChrome(opts: {
19
+ confirmUrl: string;
20
+ pollUntilClaimed: () => Promise<boolean>;
21
+ profileDir?: string;
22
+ timeoutMinutes?: number;
23
+ }): Promise<{
24
+ status: "claimed" | "timeout" | "error";
25
+ detail?: string;
26
+ }>;
18
27
  //# sourceMappingURL=google-login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-login.d.ts","sourceRoot":"","sources":["../../src/bot/google-login.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAqE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+BD,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,aAAa,GACb,WAAW,GACX,YAAY,CAAC;AAEjB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAwCtF;AA+BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CA2BlE;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEjE;AAGD,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAWD,wBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAe9C;AAaD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AAsRD,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoBvB"}
1
+ {"version":3,"file":"google-login.d.ts","sourceRoot":"","sources":["../../src/bot/google-login.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAqE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmBD,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,aAAa,GACb,WAAW,GACX,YAAY,CAAC;AAEjB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAwCtF;AA+BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CA2BlE;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEjE;AAGD,wBAAgB,UAAU,IAAI,OAAO,CAapC;AAWD,wBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAe9C;AAaD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AA+SD,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCvB;AASD,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACxD,UAAU,EAAE,MAAM,CAAC;IAGnB,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BxE"}
@@ -64,7 +64,7 @@ const LOGIN_TARGETS = {
64
64
  const HEADLESS_W = 540;
65
65
  const HEADLESS_H = 960;
66
66
  // The Debian/Ubuntu `novnc` package installs its web assets here — the
67
- // `core/` RFB library our branded page reuses (see loginHeadless).
67
+ // `core/` RFB library our branded page reuses (see runHeadlessChrome).
68
68
  const NOVNC_INSTALL_DIR = "/usr/share/novnc";
69
69
  // Resolve a bundled login asset (the branded vnc.html / interstitial).
70
70
  // `../../assets/login/` from this module resolves to apps/mcp/assets/
@@ -78,14 +78,6 @@ async function hasProviderSession(context, target) {
78
78
  const cookies = await context.cookies(target.cookieOrigin);
79
79
  return cookies.some((c) => target.cookies.includes(c.name));
80
80
  }
81
- async function pollForSession(context, deadline, target) {
82
- while (Date.now() < deadline) {
83
- if (await hasProviderSession(context, target))
84
- return true;
85
- await new Promise((r) => setTimeout(r, 3000));
86
- }
87
- return false;
88
- }
89
81
  export function classifyGoogleAuthState(url, bodyText) {
90
82
  let parsed;
91
83
  try {
@@ -192,6 +184,17 @@ export function scopesAreBasic(scopes) {
192
184
  export function hasDisplay() {
193
185
  if (process.env.TRUSTY_SQUIRE_FORCE_HEADLESS === "true")
194
186
  return false;
187
+ // macOS (Aqua) and Windows (Win32) have native windowing — Chrome
188
+ // opens a real window without an X server. DISPLAY is a Unix concept
189
+ // they don't set, so a DISPLAY-only check would have wrongly routed
190
+ // every Mac/Windows install into the headless+noVNC+cloudflared rig
191
+ // (which needs Xvfb/x11vnc/etc. that aren't installed on those
192
+ // platforms).
193
+ if (process.platform === "darwin" || process.platform === "win32")
194
+ return true;
195
+ // Linux: a non-empty DISPLAY means there's an X server we can draw to.
196
+ // Headless boxes (Hetzner, Codespaces, Docker, SSH) won't have it
197
+ // and fall through to the noVNC path.
195
198
  return typeof process.env.DISPLAY === "string" && process.env.DISPLAY.length > 0;
196
199
  }
197
200
  // First :N (99..120) whose X socket is free.
@@ -231,44 +234,6 @@ export function binaryOnPath(bin) {
231
234
  const paths = (process.env.PATH ?? "").split(":");
232
235
  return paths.some((p) => p.length > 0 && existsSync(join(p, bin)));
233
236
  }
234
- // --- path 1: a display is available -----------------------------------
235
- async function loginWithDisplay(profileDir, deadline, target) {
236
- const chromium = resolveChromium();
237
- const context = await chromium.launchPersistentContext(profileDir, {
238
- channel: "chrome",
239
- headless: false,
240
- viewport: { width: 1280, height: 800 },
241
- args: ["--disable-blink-features=AutomationControlled", "--no-sandbox", "--disable-dev-shm-usage"],
242
- });
243
- try {
244
- if (await hasProviderSession(context, target)) {
245
- return { status: "already_valid" };
246
- }
247
- const page = context.pages()[0] ?? (await context.newPage());
248
- // Show a branded interstitial first — a tool opening a browser to
249
- // ask for a Google/GitHub password is the scariest moment of the
250
- // flow; the interstitial explains it before the user is asked to
251
- // trust it. Best-effort: any failure falls back to going straight
252
- // to the provider's login page.
253
- try {
254
- const interstitial = readFileSync(loginAssetPath("interstitial.html"), "utf8")
255
- .split("{{PROVIDER}}").join(target.label)
256
- .split("{{URL}}").join(target.loginUrl);
257
- await page.setContent(interstitial, { waitUntil: "domcontentloaded" });
258
- }
259
- catch {
260
- await page.goto(target.loginUrl, { waitUntil: "domcontentloaded" });
261
- }
262
- console.error(`\n[login] A Chrome window has opened. Log into your ${target.label} account there.\n`);
263
- const ok = await pollForSession(context, deadline, target);
264
- return ok
265
- ? { status: "logged_in" }
266
- : { status: "timeout", detail: "no login completed before the deadline" };
267
- }
268
- finally {
269
- await context.close();
270
- }
271
- }
272
237
  function spawnBg(cmd, args, env) {
273
238
  const child = spawn(cmd, args, {
274
239
  stdio: ["ignore", "pipe", "pipe"],
@@ -337,7 +302,44 @@ function buildVncWebDir() {
337
302
  writeFileSync(join(webDir, "vnc.html"), readFileSync(loginAssetPath("vnc.html"), "utf8"));
338
303
  return webDir;
339
304
  }
340
- async function loginHeadless(profileDir, deadline, target) {
305
+ // Open the bot's Chrome at `url`, on whichever platform path applies
306
+ // (with-display or headless+noVNC+cloudflared), and run `pollUntilDone`
307
+ // against the live context until it resolves true OR the deadline
308
+ // passes. Returns whether the poll succeeded.
309
+ //
310
+ // Extracted so both `mcp login` (poll for Google/GitHub cookies in the
311
+ // bot's profile) AND `install` (poll the API for the install claim)
312
+ // share the same browser-launch infrastructure — one Chrome instance,
313
+ // one Google login event for both use cases.
314
+ async function runInBotChrome(opts) {
315
+ if (hasDisplay()) {
316
+ return await runDisplayedChrome(opts);
317
+ }
318
+ return await runHeadlessChrome(opts);
319
+ }
320
+ async function runDisplayedChrome(opts) {
321
+ const chromium = resolveChromium();
322
+ const context = await chromium.launchPersistentContext(opts.profileDir, {
323
+ channel: "chrome",
324
+ headless: false,
325
+ viewport: { width: 1280, height: 800 },
326
+ args: ["--disable-blink-features=AutomationControlled", "--no-sandbox", "--disable-dev-shm-usage"],
327
+ });
328
+ try {
329
+ if (opts.preflight !== undefined && await opts.preflight(context)) {
330
+ return { status: "preflight_satisfied" };
331
+ }
332
+ const page = context.pages()[0] ?? (await context.newPage());
333
+ await page.goto(opts.url, { waitUntil: "domcontentloaded" });
334
+ console.error(`\n[login] A Chrome window has opened. ${opts.bannerLabel}\n`);
335
+ const ok = await pollUntil(opts.deadline, () => opts.pollUntilDone(context));
336
+ return { status: ok ? "completed" : "timeout" };
337
+ }
338
+ finally {
339
+ await context.close().catch(() => undefined);
340
+ }
341
+ }
342
+ async function runHeadlessChrome(opts) {
341
343
  requireBinaries(["Xvfb", "x11vnc", "websockify", "cloudflared"]);
342
344
  if (!existsSync("/usr/share/novnc")) {
343
345
  throw new Error("noVNC web assets not found at /usr/share/novnc — install the `novnc` package");
@@ -351,14 +353,10 @@ async function loginHeadless(profileDir, deadline, target) {
351
353
  // Playwright handle, closed via context.close(). Tracked here so the
352
354
  // signal handler can release the profile lock before exiting.
353
355
  let activeContext;
354
- // Ensure nothing is orphaned if the process dies mid-login. `exit`
356
+ // Ensure nothing is orphaned if the process dies mid-flow. `exit`
355
357
  // covers a normal return; SIGTERM/SIGINT cover an interrupted run —
356
358
  // once a signal listener is registered the default terminate is
357
- // suppressed, so the handler must clean up AND exit itself. Folding
358
- // login into `install` makes an interrupted run far more likely (a
359
- // backgrounded terminal, a dropped SSH session). The handler closes
360
- // the browser FIRST (releases the persistent-profile lock cleanly),
361
- // then tears down the rig, then exits.
359
+ // suppressed, so the handler must clean up AND exit itself.
362
360
  const onExit = () => teardown(rig);
363
361
  const onSignal = () => {
364
362
  const finish = () => {
@@ -386,7 +384,7 @@ async function loginHeadless(profileDir, deadline, target) {
386
384
  await new Promise((r) => setTimeout(r, 1500));
387
385
  // 2. Chrome on that display, persistent profile, window filling the display.
388
386
  const chromium = resolveChromium();
389
- const context = await chromium.launchPersistentContext(profileDir, {
387
+ const context = await chromium.launchPersistentContext(opts.profileDir, {
390
388
  channel: "chrome",
391
389
  headless: false,
392
390
  viewport: null, // use the real window size
@@ -401,11 +399,11 @@ async function loginHeadless(profileDir, deadline, target) {
401
399
  });
402
400
  activeContext = context;
403
401
  try {
404
- if (await hasProviderSession(context, target)) {
405
- return { status: "already_valid" };
402
+ if (opts.preflight !== undefined && await opts.preflight(context)) {
403
+ return { status: "preflight_satisfied" };
406
404
  }
407
405
  const page = context.pages()[0] ?? (await context.newPage());
408
- await page.goto(target.loginUrl, { waitUntil: "domcontentloaded" });
406
+ await page.goto(opts.url, { waitUntil: "domcontentloaded" });
409
407
  // 3. x11vnc on the display — localhost-only, password-gated, -noshm
410
408
  // (the box's X server lacks the shared-memory extension).
411
409
  rig.procs.push(spawnBg("x11vnc", [
@@ -438,14 +436,12 @@ async function loginHeadless(profileDir, deadline, target) {
438
436
  "[login] Open this on any device, any network:\n" +
439
437
  ` ${tunnelUrl}/vnc.html#password=${vncPassword}\n` +
440
438
  `[login] (if asked for a VNC password: ${vncPassword})\n` +
441
- `[login] You'll see a Chrome window — log into your ${target.label} account.\n` +
439
+ `[login] ${opts.bannerLabel}\n` +
442
440
  "=".repeat(64) + "\n");
443
- // 6. Wait for the login, then tear the whole stack down.
444
- const ok = await pollForSession(context, deadline, target);
441
+ // 6. Wait for the side effect, then tear the whole stack down.
442
+ const ok = await pollUntil(opts.deadline, () => opts.pollUntilDone(context));
445
443
  await context.close();
446
- return ok
447
- ? { status: "logged_in" }
448
- : { status: "timeout", detail: "no login completed before the deadline" };
444
+ return { status: ok ? "completed" : "timeout" };
449
445
  }
450
446
  finally {
451
447
  await context.close().catch(() => undefined);
@@ -460,6 +456,16 @@ async function loginHeadless(profileDir, deadline, target) {
460
456
  process.removeListener("SIGINT", onSignal);
461
457
  }
462
458
  }
459
+ // Shared timed-poll helper. `check` is invoked every 3s until it
460
+ // resolves true or the deadline passes.
461
+ async function pollUntil(deadline, check) {
462
+ while (Date.now() < deadline) {
463
+ if (await check())
464
+ return true;
465
+ await new Promise((r) => setTimeout(r, 3000));
466
+ }
467
+ return false;
468
+ }
463
469
  // --- public entry ------------------------------------------------------
464
470
  // Ensures `profileDir` holds a valid session for `provider`, doing
465
471
  // whichever login flow the environment calls for. Returns when the
@@ -473,18 +479,100 @@ export async function ensureOAuthSession(opts) {
473
479
  const timeoutMinutes = Math.max(1, opts?.timeoutMinutes ?? 15);
474
480
  const deadline = Date.now() + timeoutMinutes * 60 * 1000;
475
481
  try {
476
- const result = hasDisplay()
477
- ? await loginWithDisplay(profileDir, deadline, target)
478
- : await loginHeadless(profileDir, deadline, target);
482
+ const result = await runInBotChrome({
483
+ profileDir,
484
+ url: target.loginUrl,
485
+ deadline,
486
+ bannerLabel: `You'll see a Chrome window — log into your ${target.label} account.`,
487
+ preflight: (ctx) => hasProviderSession(ctx, target),
488
+ pollUntilDone: (ctx) => hasProviderSession(ctx, target),
489
+ });
490
+ // Map runInBotChrome's status set to ensureOAuthSession's contract.
491
+ let mapped;
492
+ if (result.status === "preflight_satisfied") {
493
+ mapped = { status: "already_valid" };
494
+ }
495
+ else if (result.status === "completed") {
496
+ mapped = { status: "logged_in" };
497
+ }
498
+ else {
499
+ mapped = { status: "timeout", detail: "no login completed before the deadline" };
500
+ }
479
501
  // A confirmed session — record it so the signup bot can auto-prefer
480
502
  // this provider's OAuth path without a probe round-trip.
481
- if (result.status === "logged_in" || result.status === "already_valid") {
503
+ if (mapped.status === "logged_in" || mapped.status === "already_valid") {
482
504
  markProviderLoggedIn(provider, profileDir);
483
505
  }
484
- return result;
506
+ return mapped;
507
+ }
508
+ catch (err) {
509
+ return { status: "error", detail: err instanceof Error ? err.message : String(err) };
510
+ }
511
+ }
512
+ // Public entry for the install flow: opens the trustysquire /install
513
+ // confirm URL in the bot's persistent Chrome profile, runs the
514
+ // user-supplied check until the install is claimed (or the deadline
515
+ // passes), then tears down. The user's Google/GitHub sign-in happens
516
+ // inside this Chrome instance — so the bot's profile gets a provider
517
+ // session as a free side effect, and there's no separate "log into
518
+ // Google for the bot" step after install.
519
+ export async function openInstallConfirmInBotChrome(opts) {
520
+ const profileDir = opts.profileDir ?? CHROME_PROFILE_DIR;
521
+ const timeoutMinutes = Math.max(1, opts.timeoutMinutes ?? 15);
522
+ const deadline = Date.now() + timeoutMinutes * 60 * 1000;
523
+ try {
524
+ const result = await runInBotChrome({
525
+ profileDir,
526
+ url: opts.confirmUrl,
527
+ deadline,
528
+ bannerLabel: `You'll see a Chrome window with the Trusty Squire install page. ` +
529
+ `Sign in there to connect this machine — you only sign in once.`,
530
+ pollUntilDone: () => opts.pollUntilClaimed(),
531
+ });
532
+ // The user's sign-in inside this Chrome leaves a provider session
533
+ // in the persistent profile — record both so the signup bot can
534
+ // ride either when the user later runs `provision_any_service`.
535
+ // (We don't know WHICH provider they used, so probe the profile
536
+ // by checking each target's cookies.)
537
+ if (result.status === "completed") {
538
+ // hasProviderSession needs a context, but the rig tore down
539
+ // already. Re-open headless quickly to probe. Cheaper than
540
+ // refactoring runInBotChrome to expose a post-close hook.
541
+ await markProvidersFromProfile(profileDir);
542
+ return { status: "claimed" };
543
+ }
544
+ return { status: "timeout", detail: "no install completed before the deadline" };
485
545
  }
486
546
  catch (err) {
487
547
  return { status: "error", detail: err instanceof Error ? err.message : String(err) };
488
548
  }
489
549
  }
550
+ // Probe the bot's profile to see which providers (Google, GitHub) have
551
+ // a live session after a completed install confirm — and mark each so
552
+ // the signup bot's auto-OAuth path uses it without a round-trip.
553
+ // Best-effort: probe failures are non-fatal.
554
+ async function markProvidersFromProfile(profileDir) {
555
+ let context;
556
+ try {
557
+ const chromium = resolveChromium();
558
+ context = await chromium.launchPersistentContext(profileDir, {
559
+ channel: "chrome",
560
+ headless: true,
561
+ args: ["--no-sandbox", "--disable-dev-shm-usage"],
562
+ });
563
+ for (const provider of ["google", "github"]) {
564
+ const target = LOGIN_TARGETS[provider];
565
+ if (await hasProviderSession(context, target)) {
566
+ markProviderLoggedIn(provider, profileDir);
567
+ }
568
+ }
569
+ }
570
+ catch {
571
+ // Probe failures are non-fatal — the user can rerun `mcp login`
572
+ // if the signup bot's OAuth-first path can't see the session.
573
+ }
574
+ finally {
575
+ await context?.close().catch(() => undefined);
576
+ }
577
+ }
490
578
  //# sourceMappingURL=google-login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-login.js","sourceRoot":"","sources":["../../src/bot/google-login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-login.js","sourceRoot":"","sources":["../../src/bot/google-login.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,13 @@
1
1
  import { type AgentTarget } from "./agents.js";
2
2
  import { type AsnInfo } from "../bot/index.js";
3
- import { type LoginResult } from "../bot/google-login.js";
4
- import { type OAuthProviderId } from "../bot/oauth-providers.js";
5
- type ProviderArg = "google" | "github" | "both";
3
+ type ProviderArg = "google" | "github";
6
4
  type Argv = {
7
5
  command: string;
8
6
  target?: AgentTarget;
9
7
  apiBase: string;
10
8
  proxyUrl?: string;
11
9
  providerArg?: ProviderArg;
12
- skipLogin: boolean;
10
+ skipBrowser: boolean;
13
11
  };
14
12
  declare function parseArgs(argv: string[]): Argv;
15
13
  declare function resolveServerLaunch(): {
@@ -18,9 +16,6 @@ declare function resolveServerLaunch(): {
18
16
  };
19
17
  export declare function runCli(argv: string[]): Promise<void>;
20
18
  declare function install(args: Argv): Promise<void>;
21
- export declare function runLoginStage(args: Argv, loginFn?: (opts: {
22
- provider: OAuthProviderId;
23
- }) => Promise<LoginResult>): Promise<void>;
24
19
  declare function logout(): Promise<void>;
25
20
  declare function login(args: Argv): Promise<void>;
26
21
  interface ClaimResult {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/install/cli.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAIhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,WAAW,CAAC,EAAE,WAAW,CAAC;IAG1B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqCvC;AAcD,iBAAS,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAMlE;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1D;AAED,iBAAe,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhD;AA0CD,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,CAAC,IAAI,EAAE;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B,KAAK,OAAO,CAAC,WAAW,CAAsB,GAC9C,OAAO,CAAC,IAAI,CAAC,CA4Cf;AA8DD,iBAAe,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAIrC;AASD,iBAAe,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9C;AAsBD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iBAAe,YAAY,CACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,MAAM,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,EAC3E,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAoB7B;AAKD,iBAAS,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAyB3C;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/install/cli.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAU1D,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvC,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAIhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,WAAW,CAAC,EAAE,WAAW,CAAC;IAM1B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAuCvC;AAcD,iBAAS,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAMlE;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1D;AAED,iBAAe,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGhD;AAqHD,iBAAe,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAIrC;AASD,iBAAe,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9C;AAsBD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iBAAe,YAAY,CACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,MAAM,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,EAC3E,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAoB7B;AAKD,iBAAS,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAyB3C;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,27 +1,31 @@
1
1
  // Setup CLI — install / logout / login subcommands.
2
2
  //
3
3
  // npx @trusty-squire/mcp install --target=claude-code
4
- // Issues a machine token, opens the browser to connect this machine
5
- // to your account, writes the MCP config, then runs the one-time
6
- // OAuth login (Google/GitHub) the signup bot rides. One command.
4
+ // Issues a machine token, then opens the trustysquire install-
5
+ // confirm page in the bot's own Chrome. The user signs in there
6
+ // once (Google or GitHub) that single sign-in does TWO things:
7
+ // (a) trustysquire claims the install and binds the machine to
8
+ // the user's account, and
9
+ // (b) the bot's Chrome profile gains a provider session it can
10
+ // ride on future signups (Resend, Postmark, etc.).
11
+ // One Google login, both jobs done.
7
12
  //
8
13
  // npx @trusty-squire/mcp login [--provider=google|github]
9
- // Re-runs the OAuth sign-in for the bot's persistent Chrome
10
- // profile. Different from the login stage inside `install` —
11
- // this one fails loud on timeout/error, so it's the right
12
- // command to use when you're explicitly retrying login.
14
+ // Add an additional provider session to the bot's profile. If you
15
+ // signed in to install with Google but want the bot to also sign
16
+ // you up via GitHub-only services, run this.
13
17
  //
14
18
  // npx @trusty-squire/mcp logout
15
19
  //
16
20
  // Flags:
17
- // --target=<agent> skip auto-detection
18
- // --api-base=<url> override the API base URL
19
- // --provider=google|github|both pick the OAuth identity to connect
20
- // during the install login stage
21
- // --skip-login skip the install login stage entirely
22
- // (CI / scripted installs)
23
- // --proxy-url=<url> bake a residential proxy into the MCP
24
- // config's env (UNIVERSAL_BOT_PROXY_URL)
21
+ // --target=<agent> skip auto-detection
22
+ // --api-base=<url> override the API base URL
23
+ // --provider=google|github choose provider for `login`
24
+ // --skip-browser don't launch the bot's Chrome; just print the
25
+ // confirm URL and expect the user to open it in
26
+ // their own browser (CI / scripted installs)
27
+ // --proxy-url=<url> bake a residential proxy into the MCP config's
28
+ // env (UNIVERSAL_BOT_PROXY_URL)
25
29
  //
26
30
  // Pure module — `runCli()` is invoked by bin.ts. No shebang, no
27
31
  // entrypoint guard, no top-level execution.
@@ -32,7 +36,7 @@ import { installInitiate, installPoll, issueMachineToken } from "../api-client.j
32
36
  import { openSessionStorage } from "../session.js";
33
37
  import { AGENTS, detectInstalledAgents } from "./agents.js";
34
38
  import { detectAsn } from "../bot/index.js";
35
- import { ensureOAuthSession } from "../bot/google-login.js";
39
+ import { ensureOAuthSession, openInstallConfirmInBotChrome, } from "../bot/google-login.js";
36
40
  import {} from "../bot/oauth-providers.js";
37
41
  import { VERSION } from "../version.js";
38
42
  const DEFAULT_API_BASE = process.env.TRUSTY_SQUIRE_API_BASE ?? "https://trusty-squire-api.fly.dev";
@@ -43,7 +47,7 @@ function parseArgs(argv) {
43
47
  let apiBase = DEFAULT_API_BASE;
44
48
  let proxyUrl;
45
49
  let providerArg;
46
- let skipLogin = false;
50
+ let skipBrowser = false;
47
51
  for (const arg of argv) {
48
52
  if (arg.startsWith("--target=")) {
49
53
  const t = arg.slice("--target=".length);
@@ -64,14 +68,16 @@ function parseArgs(argv) {
64
68
  }
65
69
  else if (arg.startsWith("--provider=")) {
66
70
  const p = arg.slice("--provider=".length);
67
- if (p === "google" || p === "github" || p === "both")
71
+ if (p === "google" || p === "github")
68
72
  providerArg = p;
69
73
  }
70
- else if (arg === "--skip-login") {
71
- skipLogin = true;
74
+ else if (arg === "--skip-browser" || arg === "--skip-login") {
75
+ // --skip-login kept as an alias for the 0.5.0 spelling so any
76
+ // scripted callers still work.
77
+ skipBrowser = true;
72
78
  }
73
79
  }
74
- const args = { command, apiBase, skipLogin };
80
+ const args = { command, apiBase, skipBrowser };
75
81
  if (target !== undefined)
76
82
  args.target = target;
77
83
  if (proxyUrl !== undefined && proxyUrl.length > 0)
@@ -144,16 +150,19 @@ async function install(args) {
144
150
  if (asn !== null) {
145
151
  printAsnWarning(asn);
146
152
  }
147
- // ── Browser confirm: bind this machine to the user's account
148
- // Opens a URL where the user signs in (Google/GitHub) and confirms
149
- // the machine. We poll for the agent_session_token and write it to
150
- // the local session alongside the machine_token.
153
+ // ── Browser confirm: bind this machine + seed the bot's Chrome
154
+ // The user signs into trustysquire from inside the bot's persistent
155
+ // Chrome profile (with display, or noVNC on a headless box). That
156
+ // single sign-in does TWO things: trustysquire claims the install
157
+ // (sets agent_session_token), AND the provider session lands in the
158
+ // bot's Chrome profile so future OAuth-based signups can ride it.
159
+ // No separate "log into Google for the bot" step afterwards.
151
160
  const baseSession = {
152
161
  api_base_url: args.apiBase,
153
162
  saved_at: new Date().toISOString(),
154
163
  machine_token: machine.machine_token,
155
164
  };
156
- const session = await runInstallClaim(args.apiBase, target, baseSession);
165
+ const session = await runInstallClaim(args.apiBase, target, baseSession, args.skipBrowser);
157
166
  if (session === null) {
158
167
  console.error("Install didn't complete — the browser confirm step never finished. " +
159
168
  "Try again with `npx @trusty-squire/mcp install`.");
@@ -193,131 +202,102 @@ async function install(args) {
193
202
  if (args.proxyUrl !== undefined) {
194
203
  console.warn(` Residential proxy baked in: ${args.proxyUrl}`);
195
204
  }
196
- // ── Connect the OAuth identity the signup bot rides ───────
197
- // Folded into `install` so the friction lands at setup time, not
198
- // mid-task on the user's first provision. Non-fatal by contract —
199
- // see runLoginStage; the MCP config above is the durable artifact.
200
- await runLoginStage(args);
205
+ if (args.skipBrowser) {
206
+ console.warn(``);
207
+ console.warn(`Note: --skip-browser was set, so the bot's Chrome didn't observe ` +
208
+ `your sign-in. Before your first OAuth-based signup, run:`);
209
+ console.warn(` npx @trusty-squire/mcp login [--provider=google|github]`);
210
+ }
201
211
  console.warn(``);
202
212
  console.warn(`You're done. Restart ${agent.display_name} to pick up the new tools.`);
203
213
  console.warn(``);
204
214
  console.warn(`Try it now — ask your agent:`);
205
215
  console.warn(` "sign me up for Resend"`);
206
216
  }
207
- // Runs the browser-based install confirm flow. Returns a session with
208
- // agent_session_token + account_id set on success, null on timeout/expiry.
209
- async function runInstallClaim(apiBase, target, baseSession) {
217
+ // Runs the browser-based install confirm flow.
218
+ //
219
+ // Default path (`skipBrowser=false`): opens the trustysquire confirm
220
+ // URL in the bot's OWN persistent Chrome profile. The user signs in
221
+ // once — that single sign-in claims the install AND seeds the bot's
222
+ // profile with a provider session for future OAuth signups. The
223
+ // pollUntilClaimed callback closes the Chrome window as soon as the
224
+ // API flips the install to claimed.
225
+ //
226
+ // Fallback (`skipBrowser=true`): prints the URL, attempts a best-
227
+ // effort `open()` to the user's default browser, polls the API for
228
+ // claim. The bot's Chrome never starts, so the bot won't have a
229
+ // provider session afterwards — the user must run `mcp login` before
230
+ // their first OAuth signup. This path is for CI / scripted installs.
231
+ async function runInstallClaim(apiBase, target, baseSession, skipBrowser) {
210
232
  console.warn(`Connecting this machine to your account…`);
211
233
  const initiate = await installInitiate(apiBase, target, baseSession.machine_token ?? null);
212
- console.warn(`Open this URL in your browser to sign in and confirm:`);
213
- console.warn(` ${initiate.confirm_url}`);
214
- try {
215
- const openMod = await import("open");
216
- await openMod.default(initiate.confirm_url);
217
- }
218
- catch {
219
- // ignore — user copies the URL
234
+ // Track the claimed token outside the poll closure so the in-Chrome
235
+ // flow's pollUntilClaimed can read it once the API reports claimed.
236
+ // Wrapper object so TS can narrow `state.value` after a `=== null`
237
+ // check at the call site — bare closure-captured `let` doesn't.
238
+ const state = { value: null };
239
+ const pollOnce = async () => {
240
+ if (state.value !== null)
241
+ return true;
242
+ const status = await installPoll(apiBase, initiate.setup_code);
243
+ if (status.status === "claimed" && status.agent_session_token !== undefined) {
244
+ state.value = {
245
+ token: status.agent_session_token,
246
+ account_id: status.account_id ?? "",
247
+ };
248
+ return true;
249
+ }
250
+ // Expired: also stop Chrome (returning true) — the outer check
251
+ // sees state.value === null and reports the install failed.
252
+ return status.status === "expired";
253
+ };
254
+ if (skipBrowser) {
255
+ // CI / scripted: best-effort open() into the user's default browser,
256
+ // poll the API directly. Bot Chrome stays unbothered. This is the
257
+ // ONLY branch that prints the trustysquire URL — in the default
258
+ // branch the bot's Chrome opens it for the user, and printing it
259
+ // here too would suggest "sign in here OR there" and the user
260
+ // would sign in twice (or sign in via their laptop, leaving the
261
+ // bot's Chrome profile empty — no Google session for future OAuth
262
+ // signups).
263
+ console.warn(`Open this URL in your browser to sign in and confirm:`);
264
+ console.warn(` ${initiate.confirm_url}`);
265
+ try {
266
+ const openMod = await import("open");
267
+ await openMod.default(initiate.confirm_url);
268
+ }
269
+ catch {
270
+ // ignore — user copies the URL
271
+ }
272
+ const ok = await pollForClaim(apiBase, initiate.setup_code);
273
+ if (ok === null)
274
+ return null;
275
+ return {
276
+ ...baseSession,
277
+ api_base_url: apiBase,
278
+ saved_at: new Date().toISOString(),
279
+ agent_session_token: ok.token,
280
+ account_id: ok.account_id,
281
+ };
220
282
  }
221
- const claim = await pollForClaim(apiBase, initiate.setup_code);
222
- if (claim === null)
283
+ // Default: run the confirm INSIDE the bot's Chrome. The user signs
284
+ // in there once; that sign-in does both the trustysquire claim AND
285
+ // the bot's provider-session seeding in one event.
286
+ const result = await openInstallConfirmInBotChrome({
287
+ confirmUrl: initiate.confirm_url,
288
+ pollUntilClaimed: pollOnce,
289
+ });
290
+ if (result.status !== "claimed" || state.value === null) {
223
291
  return null;
292
+ }
224
293
  return {
225
294
  ...baseSession,
226
295
  api_base_url: apiBase,
227
296
  saved_at: new Date().toISOString(),
228
- agent_session_token: claim.token,
229
- account_id: claim.account_id,
297
+ agent_session_token: state.value.token,
298
+ account_id: state.value.account_id,
230
299
  };
231
300
  }
232
- // The OAuth login stage of `install`. Non-fatal by contract: it never
233
- // throws and never exits the process — a timed-out, errored or skipped
234
- // login still leaves a working install (the MCP config is the durable
235
- // artifact). `loginFn` is injectable so the contract is unit-testable
236
- // without launching a real browser.
237
- export async function runLoginStage(args, loginFn = ensureOAuthSession) {
238
- if (args.skipLogin) {
239
- console.warn(``);
240
- console.warn(`Skipping the OAuth login (--skip-login).`);
241
- console.warn(`Run \`npx @trusty-squire/mcp login\` before your first provision — ` +
242
- `without it the bot can't sign you up via Google/GitHub.`);
243
- return;
244
- }
245
- const providers = await resolveLoginProviders(args);
246
- for (const provider of providers) {
247
- const label = provider === "github" ? "GitHub" : "Google";
248
- console.warn(``);
249
- console.warn(`Connecting your ${label} account…`);
250
- let result;
251
- try {
252
- result = await loginFn({ provider });
253
- }
254
- catch (err) {
255
- result = {
256
- status: "error",
257
- detail: err instanceof Error ? err.message : String(err),
258
- };
259
- }
260
- switch (result.status) {
261
- case "already_valid":
262
- console.warn(`✓ ${label} already connected.`);
263
- break;
264
- case "logged_in":
265
- console.warn(`✓ ${label} connected — the bot can now sign you up with it.`);
266
- break;
267
- case "timeout":
268
- console.warn(`⚠ ${label} login didn't finish in time. Install is otherwise complete.`);
269
- console.warn(` Finish it later: \`npx @trusty-squire/mcp login --provider=${provider}\``);
270
- break;
271
- case "error":
272
- console.warn(`⚠ ${label} login couldn't run: ${result.detail ?? "unknown error"}`);
273
- console.warn(` Install is otherwise complete. Retry: ` +
274
- `\`npx @trusty-squire/mcp login --provider=${provider}\``);
275
- break;
276
- }
277
- }
278
- }
279
- // Which providers `install` connects: an explicit --provider wins;
280
- // otherwise prompt on an interactive terminal, or default to Google
281
- // when there is no TTY (CI / scripted installs must never block).
282
- async function resolveLoginProviders(args) {
283
- if (args.providerArg === "both")
284
- return ["google", "github"];
285
- if (args.providerArg === "github")
286
- return ["github"];
287
- if (args.providerArg === "google")
288
- return ["google"];
289
- if (process.stdin.isTTY !== true)
290
- return ["google"];
291
- return promptProvider();
292
- }
293
- async function promptProvider() {
294
- console.warn(``);
295
- console.warn(`Trusty Squire signs you up to services by riding your Google or GitHub login.`);
296
- const answer = (await promptLine(`Connect which? [google] / github / both: `))
297
- .trim()
298
- .toLowerCase();
299
- if (answer === "github")
300
- return ["github"];
301
- if (answer === "both")
302
- return ["google", "github"];
303
- return ["google"];
304
- }
305
- // Read one line from stdin. The prompt goes to stderr so it never
306
- // pollutes stdout, which the host agent may parse.
307
- function promptLine(question) {
308
- const rl = createInterface({ input: process.stdin, output: process.stderr });
309
- return new Promise((resolve) => {
310
- // If stdin reaches EOF before an answer (closed or redirected
311
- // mid-run), resolve empty rather than hang forever — the caller
312
- // treats "" as the default. Promise resolve is idempotent, so the
313
- // question callback and this close handler cannot both win.
314
- rl.on("close", () => resolve(""));
315
- rl.question(question, (answer) => {
316
- rl.close();
317
- resolve(answer);
318
- });
319
- });
320
- }
321
301
  async function resolveTarget(explicit) {
322
302
  if (explicit !== undefined)
323
303
  return explicit;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/install/cli.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,wDAAwD;AACxD,wEAAwE;AACxE,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,4DAA4D;AAC5D,gEAAgE;AAChE,iEAAiE;AACjE,8DAA8D;AAC9D,4DAA4D;AAC5D,EAAE;AACF,kCAAkC;AAClC,EAAE;AACF,SAAS;AACT,qDAAqD;AACrD,2DAA2D;AAC3D,sEAAsE;AACtE,gEAAgE;AAChE,uEAAuE;AACvE,0DAA0D;AAC1D,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,gEAAgE;AAChE,4CAA4C;AAE5C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAoB,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAoB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAwB,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,mCAAmC,CAAC;AAqBnG,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC3C,IAAI,MAA+B,CAAC;IACpC,IAAI,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,QAA4B,CAAC;IACjC,IAAI,WAAoC,CAAC;IACzC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,+DAA+D;gBAC/D,gEAAgE;gBAChE,+DAA+D;gBAC/D,OAAO,CAAC,KAAK,CACX,qBAAqB,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YACD,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;gBAAE,WAAW,GAAG,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5E,IAAI,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,mEAAmE;IACnE,qEAAqE;IACrE,2BAA2B;IAC3B,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,CAAC;AAED,+DAA+D;AAC/D,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,oEAAoE;AACpE,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,SAAS;QACd,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,sBAAsB,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE;QAC7E,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,MAAM,EAAE,CAAC;YACf,OAAO;QACT,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO;QACT,KAAK,MAAM;YACT,SAAS,EAAE,CAAC;YACZ,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAU;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAE7B,6DAA6D;IAC7D,oEAAoE;IACpE,oEAAoE;IACpE,iDAAiD;IACjD,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAE9B,6DAA6D;IAC7D,iEAAiE;IACjE,oEAAoE;IACpE,mEAAmE;IACnE,qEAAqE;IACrE,gBAAgB;IAChB,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IAE/E,6DAA6D;IAC7D,qEAAqE;IACrE,kEAAkE;IAClE,gEAAgE;IAChE,qEAAqE;IACrE,aAAa;IACb,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,eAAe,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,gEAAgE;IAChE,mEAAmE;IACnE,mEAAmE;IACnE,iDAAiD;IACjD,MAAM,WAAW,GAAgB;QAC/B,YAAY,EAAE,IAAI,CAAC,OAAO;QAC1B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACzE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CACX,qEAAqE;YACnE,kDAAkD,CACrD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAE5D,6DAA6D;IAC7D,EAAE;IACF,oCAAoC;IACpC,yEAAyE;IACzE,sEAAsE;IACtE,oEAAoE;IACpE,iEAAiE;IACjE,EAAE;IACF,kEAAkE;IAClE,oEAAoE;IACpE,iDAAiD;IACjD,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,MAAM,GAAG,GAA2B;QAClC,4BAA4B,EAAE,MAAM;QACpC,0BAA0B,EAAE,MAAM;KACnC,CAAC;IACF,sEAAsE;IACtE,iEAAiE;IACjE,sDAAsD;IACtD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,CAAC,WAAW,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG;KACJ,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,YAAY,kBAAkB,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACpF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,6DAA6D;IAC7D,iEAAiE;IACjE,kEAAkE;IAClE,mEAAmE;IACnE,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,YAAY,4BAA4B,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAC5C,CAAC;AAED,sEAAsE;AACtE,2EAA2E;AAC3E,KAAK,UAAU,eAAe,CAC5B,OAAe,EACf,MAAmB,EACnB,WAAwB;IAExB,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,OAAO,EACP,MAAM,EACN,WAAW,CAAC,aAAa,IAAI,IAAI,CAClC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO;QACL,GAAG,WAAW;QACd,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,mBAAmB,EAAE,KAAK,CAAC,KAAK;QAChC,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,uEAAuE;AACvE,sEAAsE;AACtE,sEAAsE;AACtE,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,UAE6B,kBAAkB;IAE/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CACV,qEAAqE;YACnE,yDAAyD,CAC5D,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,mBAAmB,KAAK,WAAW,CAAC,CAAC;QAClD,IAAI,MAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG;gBACP,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACzD,CAAC;QACJ,CAAC;QACD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,eAAe;gBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,qBAAqB,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,mDAAmD,CAAC,CAAC;gBAC5E,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,8DAA8D,CAAC,CAAC;gBACvF,OAAO,CAAC,IAAI,CAAC,gEAAgE,QAAQ,IAAI,CAAC,CAAC;gBAC3F,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,wBAAwB,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;gBACnF,OAAO,CAAC,IAAI,CACV,0CAA0C;oBACxC,6CAA6C,QAAQ,IAAI,CAC5D,CAAC;gBACF,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,oEAAoE;AACpE,kEAAkE;AAClE,KAAK,UAAU,qBAAqB,CAAC,IAAU;IAC7C,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,2CAA2C,CAAC,CAAC;SAC3E,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC;AAED,kEAAkE;AAClE,mDAAmD;AACnD,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,8DAA8D;QAC9D,gEAAgE;QAChE,kEAAkE;QAClE,4DAA4D;QAC5D,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAiC;IAC5D,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAE,CAAC,YAAY,8BAA8B,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC5E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,oEAAoE;AACpE,kEAAkE;AAClE,gEAAgE;AAChE,oEAAoE;AACpE,uEAAuE;AACvE,sEAAsE;AACtE,gDAAgD;AAChD,KAAK,UAAU,KAAK,CAAC,IAAU;IAC7B,MAAM,QAAQ,GACZ,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtD,MAAM,KAAK,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,kBAAkB,KAAK,uBAAuB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,eAAe;YAClB,OAAO,CAAC,IAAI,CAAC,8DAA8D,KAAK,WAAW,CAAC,CAAC;YAC7F,OAAO;QACT,KAAK,WAAW;YACd,OAAO,CAAC,IAAI,CAAC,2DAA2D,KAAK,YAAY,CAAC,CAAC;YAC3F,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CACV,iGAAiG,CAClG,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACvF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACtF,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;AACpD,CAAC;AAOD,KAAK,UAAU,YAAY,CACzB,OAAe,EACf,SAAiB,EACjB,mBAAyE,EAAE,EAC3E,YAAqB;IAErB,MAAM,IAAI,GACR,OAAO,gBAAgB,KAAK,QAAQ;QAClC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE;QAC3D,CAAC,CAAC,gBAAgB,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC5E,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,mBAAmB;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;aACpC,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,mEAAmE;AACnE,wDAAwD;AACxD,SAAS,eAAe,CAAC,GAAY;IACnC,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,eAAe,CAAC;IAC9C,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO;QACT,KAAK,aAAa;YAChB,OAAO,CAAC,IAAI,CAAC,uBAAuB,UAAU,gDAAgD,CAAC,CAAC;YAChG,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,IAAI,CAAC,uBAAuB,UAAU,+CAA+C,CAAC,CAAC;YAC/F,OAAO;IACX,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/install/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trusty-squire/mcp",
3
- "version": "0.5.0",
3
+ "version": "0.5.4",
4
4
  "type": "module",
5
5
  "description": "Local MCP server vibe coding agents install. Thin relay to the Trusty Squire API, with the bundled universal signup bot.",
6
6
  "main": "./dist/server.js",