@tokenoftrust/cli 1.4.0-rc.3 → 1.4.0-rc.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tokenoftrust/cli",
3
- "version": "1.4.0-rc.3",
3
+ "version": "1.4.0-rc.4",
4
4
  "description": "Token of Trust developer CLI — check out a tenant store, run it locally with save→reload, and submit it for preview. Installs the `tot` command.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Token of Trust",
@@ -57,6 +57,7 @@ import { CliError, fail, formatError, exitCodeFor } from "../errors.mjs";
57
57
  import { openBrowser, waitForServer, firstFreePort } from "../open.mjs";
58
58
  import { startProgress } from "../progress.mjs";
59
59
  import { defaultLastTenantPath, readLastTenant, writeLastTenant } from "../last-tenant.mjs";
60
+ import { readCredentials, defaultCredentialsPath } from "../token-store.mjs";
60
61
  import { collectChecks } from "./doctor.mjs";
61
62
  import { normalizeStores, storeListError, checkoutTenant } from "./checkout.mjs";
62
63
  import {
@@ -161,6 +162,24 @@ export function decideStartMode({ sampleFlag, hasSession }) {
161
162
  return hasSession ? "authed" : "sample";
162
163
  }
163
164
 
165
+ /**
166
+ * The MCP base URL the cached session was minted on — what `tot login` stored in the
167
+ * credentials file (honoring TOT_PROFILE via defaultCredentialsPath). Lets `tot start`
168
+ * (and callers) FOLLOW wherever the developer signed in rather than defaulting to prod,
169
+ * which would look up a session on the wrong MCP and report "not signed in". Returns
170
+ * null when there's no cached session or it can't be read (falls through to the default).
171
+ * @param {NodeJS.ProcessEnv} env
172
+ * @returns {string|null}
173
+ */
174
+ export function cachedMcpUrl(env) {
175
+ try {
176
+ const creds = readCredentials(defaultCredentialsPath(env));
177
+ return creds && typeof creds.mcpUrl === "string" && creds.mcpUrl ? creds.mcpUrl : null;
178
+ } catch {
179
+ return null;
180
+ }
181
+ }
182
+
164
183
  /** @param {string[]} argv @param {any} ctx */
165
184
  export async function run(argv, ctx) {
166
185
  const env = process.env;
@@ -178,7 +197,11 @@ export async function run(argv, ctx) {
178
197
  }
179
198
 
180
199
  try {
181
- const baseUrl = args.mcp || env.MCP_BASE_URL || env.TOT_MCP_URL || DEFAULT_MCP_URL;
200
+ // Resolve the MCP: an explicit flag / env wins, then the MCP the cached session was
201
+ // minted on (what `tot login` stored — so `start` FOLLOWS wherever you signed in
202
+ // instead of defaulting to prod and reporting "not signed in"), then the prod default.
203
+ const baseUrl =
204
+ args.mcp || env.MCP_BASE_URL || env.TOT_MCP_URL || cachedMcpUrl(env) || DEFAULT_MCP_URL;
182
205
  const client = createMcpClient(baseUrl);
183
206
 
184
207
  // Resolve a session, tolerating a no-session / no-network condition so we can