@somewhere-tech/cli 0.27.6 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,265 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import prompts from 'prompts';
3
+ import { ApiClient, LONG_CALL_TIMEOUT_MS } from '../lib/client.js';
4
+ import { getToken, loadProjectConfig } from '../lib/config.js';
5
+ import open from '../lib/open.js';
6
+ import { dim, error, info, printJson, success, teal } from '../lib/output.js';
7
+ const DASHBOARD = 'https://somewhere.tech/dashboard';
8
+ const INSTALL_TIMEOUT_MS = 5 * 60_000;
9
+ const DEPLOY_POLL_MS = 1500;
10
+ function sleep(ms) {
11
+ return new Promise((resolve) => setTimeout(resolve, ms));
12
+ }
13
+ function projectRef(explicit) {
14
+ if (explicit)
15
+ return explicit;
16
+ const config = loadProjectConfig();
17
+ if (config)
18
+ return config.project_id;
19
+ throw new Error('No project specified and no .somewhere.json found. Pass --project <id-or-slug>.');
20
+ }
21
+ function inferGitHubRepo() {
22
+ try {
23
+ const remote = execFileSync('git', ['remote', 'get-url', 'origin'], {
24
+ encoding: 'utf8',
25
+ stdio: ['ignore', 'pipe', 'ignore'],
26
+ }).trim();
27
+ const match = remote.match(/github\.com[/:]([^/]+)\/([^/]+?)(?:\.git)?$/i);
28
+ return match ? `${match[1]}/${match[2]}` : null;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ async function listInstallations(client) {
35
+ return client.call('GET', '/github/app/installations');
36
+ }
37
+ async function listChoices(client, installations) {
38
+ const batches = await Promise.all(installations.map(async (installation) => {
39
+ const repos = await client.call('GET', '/github/app/repos', undefined, { installation_id: installation.installation_id });
40
+ return repos.map((repo) => ({ installation, repo }));
41
+ }));
42
+ return batches.flat();
43
+ }
44
+ async function openInstaller(client, quiet) {
45
+ const start = await client.call('GET', '/github/app/install', undefined, { format: 'json', return_to: `${DASHBOARD}?github_cli=connected` });
46
+ if (!quiet)
47
+ info(`Opening GitHub to choose an account and repositories…`);
48
+ try {
49
+ await open(start.install_url);
50
+ }
51
+ catch {
52
+ if (!quiet)
53
+ info(`Open this link: ${start.install_url}`);
54
+ }
55
+ }
56
+ async function waitForChoices(client, repoName, quiet) {
57
+ const deadline = Date.now() + INSTALL_TIMEOUT_MS;
58
+ if (!quiet)
59
+ info('Waiting for GitHub authorization…');
60
+ while (Date.now() < deadline) {
61
+ const state = await listInstallations(client);
62
+ const choices = await listChoices(client, state.installations);
63
+ if (repoName) {
64
+ if (choices.some((choice) => choice.repo.name.toLowerCase() === repoName.toLowerCase()))
65
+ return choices;
66
+ }
67
+ else if (choices.length > 0) {
68
+ return choices;
69
+ }
70
+ await sleep(2000);
71
+ }
72
+ throw new Error('GitHub authorization was not completed within 5 minutes. Run `somewhere git connect` again.');
73
+ }
74
+ async function chooseRepo(client, requestedRepo, quiet) {
75
+ const app = await listInstallations(client);
76
+ if (!app.app_configured) {
77
+ throw new Error('GitHub App connect is not configured on this somewhere.tech environment.');
78
+ }
79
+ const inferredRepo = requestedRepo || inferGitHubRepo();
80
+ let choices = await listChoices(client, app.installations);
81
+ let match = inferredRepo
82
+ ? choices.find((choice) => choice.repo.name.toLowerCase() === inferredRepo.toLowerCase())
83
+ : undefined;
84
+ if (app.installations.length === 0 || (inferredRepo && !match) || choices.length === 0) {
85
+ await openInstaller(client, quiet);
86
+ choices = await waitForChoices(client, inferredRepo, quiet);
87
+ match = inferredRepo
88
+ ? choices.find((choice) => choice.repo.name.toLowerCase() === inferredRepo.toLowerCase())
89
+ : undefined;
90
+ }
91
+ if (match)
92
+ return match;
93
+ if (requestedRepo) {
94
+ throw new Error(`GitHub did not grant access to ${requestedRepo}. Rerun the command and select that repository.`);
95
+ }
96
+ if (!process.stdin.isTTY) {
97
+ throw new Error('No GitHub repository was specified. Pass owner/repo in a non-interactive shell.');
98
+ }
99
+ const answer = await prompts({
100
+ type: 'select',
101
+ name: 'choice',
102
+ message: 'Repository to deploy',
103
+ choices: choices.map((choice) => ({
104
+ title: `${choice.repo.name}${choice.repo.private ? ' (private)' : ''}`,
105
+ value: choice,
106
+ })),
107
+ });
108
+ if (!answer.choice)
109
+ throw new Error('GitHub connection cancelled.');
110
+ return answer.choice;
111
+ }
112
+ async function waitForDeploy(client, projectId, commitSha) {
113
+ const deadline = Date.now() + LONG_CALL_TIMEOUT_MS;
114
+ while (Date.now() < deadline) {
115
+ const connection = await client.call('GET', '/github/connection', undefined, { project_id: projectId });
116
+ if (connection.last_commit_sha === commitSha) {
117
+ if (connection.last_status === 'deployed')
118
+ return connection;
119
+ if (connection.last_status === 'failed') {
120
+ throw new Error(connection.last_error || `Deploy of ${commitSha.slice(0, 7)} failed.`);
121
+ }
122
+ }
123
+ await sleep(DEPLOY_POLL_MS);
124
+ }
125
+ throw new Error(`Deploy of ${commitSha.slice(0, 7)} is still running after 10 minutes. Check the project logs.`);
126
+ }
127
+ function urls(projectId, subdomain) {
128
+ return {
129
+ live_url: `https://${subdomain}.somewhere.tech`,
130
+ logs_url: `${DASHBOARD}/projects/${encodeURIComponent(projectId)}?tab=logs`,
131
+ };
132
+ }
133
+ export function registerGit(program) {
134
+ const git = program
135
+ .command('git')
136
+ .description('Connect a GitHub repository for push-to-deploy');
137
+ git
138
+ .command('connect [repo]')
139
+ .description('Connect a repository, deploy HEAD now, and deploy future pushes')
140
+ .option('-p, --project <id-or-slug>', 'Project ID or slug (defaults to .somewhere.json)')
141
+ .option('-b, --branch <branch>', 'Branch to deploy (defaults to the repository default branch)')
142
+ .option('--root <directory>', 'Repository subdirectory to deploy')
143
+ .option('--json', 'Print structured JSON')
144
+ .action(async (repo, opts) => {
145
+ try {
146
+ const client = new ApiClient(getToken());
147
+ const ref = projectRef(opts.project);
148
+ const project = await client.call('GET', `/projects/${encodeURIComponent(ref)}`);
149
+ const resolvedProjectId = project.id || ref;
150
+ const choice = await chooseRepo(client, repo, !!opts.json);
151
+ const branch = opts.branch || choice.repo.default_branch || 'main';
152
+ if (!opts.json)
153
+ info(`Deploying ${teal(choice.repo.name)}@${branch} to ${teal(project.name)}…`);
154
+ const started = await client.call('POST', '/github/connect', {
155
+ project_id: ref,
156
+ repo: choice.repo.name,
157
+ branch,
158
+ ...(opts.root ? { root_dir: opts.root } : {}),
159
+ installation_id: choice.installation.installation_id,
160
+ deploy_head: true,
161
+ });
162
+ const commitSha = started.initial_deploy?.commit_sha;
163
+ if (!commitSha)
164
+ throw new Error('GitHub connected, but the repository deploy did not start.');
165
+ const connection = await waitForDeploy(client, started.project_id || resolvedProjectId, commitSha);
166
+ const connectedProjectId = started.project_id || resolvedProjectId;
167
+ const links = urls(connectedProjectId, project.subdomain);
168
+ const result = {
169
+ connected: true,
170
+ project_id: connectedProjectId,
171
+ repo: connection.repo,
172
+ branch: connection.branch,
173
+ commit_sha: commitSha,
174
+ commit_message: connection.last_commit_message,
175
+ status: connection.last_status,
176
+ ...links,
177
+ };
178
+ if (opts.json) {
179
+ printJson(result);
180
+ }
181
+ else {
182
+ success(`Deployed ${connection.repo}@${commitSha.slice(0, 7)}`);
183
+ info(`Status: ${connection.last_status}`);
184
+ info(`Logs: ${dim(links.logs_url)}`);
185
+ info(`Live: ${teal(links.live_url)}`);
186
+ }
187
+ }
188
+ catch (err) {
189
+ error(err instanceof Error ? err.message : String(err));
190
+ process.exitCode = 1;
191
+ }
192
+ });
193
+ git
194
+ .command('status [project]')
195
+ .description('Show the repository, commit, deploy status, logs, and live URL')
196
+ .option('-p, --project <id-or-slug>', 'Project ID or slug (defaults to the positional project or .somewhere.json)')
197
+ .option('--json', 'Print structured JSON')
198
+ .action(async (project, opts) => {
199
+ try {
200
+ const client = new ApiClient(getToken());
201
+ const ref = projectRef(opts.project || project);
202
+ const [connection, summary] = await Promise.all([
203
+ client.call('GET', '/github/connection', undefined, { project_id: ref }),
204
+ client.call('GET', `/projects/${encodeURIComponent(ref)}`),
205
+ ]);
206
+ const links = urls(summary.id || connection.project_id || ref, summary.subdomain);
207
+ const result = { ...connection, ...links };
208
+ if (opts.json) {
209
+ printJson(result);
210
+ }
211
+ else if (!connection.connected) {
212
+ info('No GitHub repository is connected. Run `somewhere git connect`.');
213
+ }
214
+ else {
215
+ console.log(`\n Repository: ${teal(connection.repo || '')}`);
216
+ info(`Branch: ${connection.branch}`);
217
+ info(`Commit: ${connection.last_commit_sha ? `${connection.last_commit_sha.slice(0, 7)}${connection.last_commit_message ? ` · ${connection.last_commit_message}` : ''}` : 'none yet'}`);
218
+ info(`Status: ${connection.last_status || 'waiting for first deploy'}`);
219
+ if (connection.last_error)
220
+ info(`Error: ${connection.last_error}`);
221
+ info(`Logs: ${dim(links.logs_url)}`);
222
+ info(`Live: ${teal(links.live_url)}`);
223
+ console.log('');
224
+ }
225
+ }
226
+ catch (err) {
227
+ error(err instanceof Error ? err.message : String(err));
228
+ process.exitCode = 1;
229
+ }
230
+ });
231
+ git
232
+ .command('disconnect [project]')
233
+ .description('Stop GitHub push-to-deploy without changing the deployed site')
234
+ .option('-p, --project <id-or-slug>', 'Project ID or slug (defaults to the positional project or .somewhere.json)')
235
+ .option('-y, --yes', 'Disconnect without prompting')
236
+ .option('--json', 'Print structured JSON')
237
+ .action(async (project, opts) => {
238
+ try {
239
+ const client = new ApiClient(getToken());
240
+ const ref = projectRef(opts.project || project);
241
+ if (!opts.yes) {
242
+ if (!process.stdin.isTTY)
243
+ throw new Error('Pass --yes to disconnect in a non-interactive shell.');
244
+ const answer = await prompts({
245
+ type: 'confirm',
246
+ name: 'confirmed',
247
+ message: 'Disconnect GitHub? The current deployed site stays live.',
248
+ initial: false,
249
+ });
250
+ if (!answer.confirmed)
251
+ return;
252
+ }
253
+ await client.call('DELETE', '/github/connection', undefined, { project_id: ref });
254
+ if (opts.json)
255
+ printJson({ disconnected: true, project_id: ref });
256
+ else
257
+ success('GitHub disconnected. The current deployed site is unchanged.');
258
+ }
259
+ catch (err) {
260
+ error(err instanceof Error ? err.message : String(err));
261
+ process.exitCode = 1;
262
+ }
263
+ });
264
+ }
265
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/commands/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { callPlatformTool } from '../lib/platform-tools.js';
2
+ import { compactRecord, isRecord, resolveProjectRef, unwrapPlatformData, } from '../lib/platform-command.js';
3
+ import { error, printJson } from '../lib/output.js';
4
+ export function registerGrep(program) {
5
+ program
6
+ .command('grep <pattern>')
7
+ .description('Regex-search deployed project source and print file:line matches')
8
+ .option('-p, --project <project>', 'Project slug or ID; defaults to the linked project')
9
+ .option('-g, --glob <glob>', 'Limit matching paths, for example src/** or *.tsx')
10
+ .option('--env <env>', 'prod or dev', 'prod')
11
+ .option('--max-results <n>', 'Maximum matches, up to 1000', '100')
12
+ .option('-i, --ignore-case', 'Match case-insensitively')
13
+ .option('--json', 'Print the complete response as JSON')
14
+ .action(async (pattern, opts) => {
15
+ try {
16
+ const maxResults = Number(opts.maxResults);
17
+ if (!Number.isInteger(maxResults) || maxResults < 1 || maxResults > 1000) {
18
+ throw new Error('--max-results must be an integer from 1 to 1000.');
19
+ }
20
+ const value = await callPlatformTool('project_grep', compactRecord([
21
+ ['project_id', resolveProjectRef(opts.project)],
22
+ ['pattern', pattern],
23
+ ['glob', opts.glob],
24
+ ['env', opts.env],
25
+ ['max_results', maxResults],
26
+ ['case_insensitive', opts.ignoreCase],
27
+ ]), { allTools: true });
28
+ if (opts.json) {
29
+ printJson(value);
30
+ return;
31
+ }
32
+ const data = unwrapPlatformData(value);
33
+ if (!isRecord(data) || !Array.isArray(data.matches)) {
34
+ throw new Error('project_grep returned an unexpected response.');
35
+ }
36
+ for (const match of data.matches) {
37
+ if (!isRecord(match))
38
+ continue;
39
+ const path = typeof match.path === 'string' ? match.path : 'unknown';
40
+ const line = typeof match.line === 'number' ? match.line : 0;
41
+ const col = typeof match.col === 'number' ? `:${match.col}` : '';
42
+ const text = typeof match.text === 'string' ? match.text.trimEnd() : '';
43
+ process.stdout.write(`${path}:${line}${col}: ${text}\n`);
44
+ }
45
+ if (data.truncated === true) {
46
+ process.stderr.write('Results truncated. Narrow --glob or pattern, or raise --max-results.\n');
47
+ }
48
+ }
49
+ catch (err) {
50
+ error(err instanceof Error ? err.message : String(err));
51
+ process.exitCode = 1;
52
+ }
53
+ });
54
+ }
55
+ //# sourceMappingURL=grep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/commands/grep.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { spawnSync } from 'node:child_process';
2
2
  import { CURSOR_MCP_PATH, hasCursorMcpConfig, hasGlobalMcpConfig, loadConfig, saveCursorMcpConfig, saveGlobalMcpConfig, } from '../lib/config.js';
3
3
  import { ApiClient } from '../lib/client.js';
4
4
  import { dim, error, info, success, teal } from '../lib/output.js';
5
+ import { createPlatformMcpTransport, isMcpAuthRejection, mcpAccessExpiresSoon, refreshMcpAccessToken, } from '../lib/platform-tools.js';
5
6
  const UPSTREAM_URL = process.env.SOMEWHERE_MCP_URL?.replace(/\/$/, '') || 'https://mcp.somewhere.tech/mcp';
6
7
  const INSTALL_HOSTS = ['codex', 'claude-code', 'cursor'];
7
8
  const RESTART_HINT = 'MCP hosts load tools when a session starts. Open a NEW session (or restart the host), then look for tools named mcp__somewhere__*.';
@@ -46,19 +47,12 @@ async function runStdioBridge() {
46
47
  process.exit(1);
47
48
  }
48
49
  // Lazy-load the SDK only when the bridge actually runs (see import note above).
49
- const [{ StdioServerTransport }, { StreamableHTTPClientTransport, StreamableHTTPError }, { UnauthorizedError },] = await Promise.all([
50
- import('@modelcontextprotocol/sdk/server/stdio.js'),
51
- import('@modelcontextprotocol/sdk/client/streamableHttp.js'),
52
- import('@modelcontextprotocol/sdk/client/auth.js'),
53
- ]);
50
+ const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
54
51
  const stdioTransport = new StdioServerTransport();
55
- const apiClient = new ApiClient(config.token);
56
52
  let shuttingDown = false;
57
53
  let fatalInFlight = false;
58
54
  let refreshInFlight = null;
59
55
  let httpTransport;
60
- const isAuthRejection = (err) => err instanceof UnauthorizedError
61
- || (err instanceof StreamableHTTPError && err.code === 401);
62
56
  const shutdown = async () => {
63
57
  if (shuttingDown)
64
58
  return;
@@ -87,28 +81,17 @@ async function runStdioBridge() {
87
81
  transport.onerror = (err) => {
88
82
  // send() reports this same error to its caller; that path owns the
89
83
  // single-flight refresh + retry so it is not logged or handled twice.
90
- if (isAuthRejection(err))
84
+ if (isMcpAuthRejection(err))
91
85
  return;
92
86
  process.stderr.write(`[somewhere mcp] upstream error: ${String(err)}\n`);
93
87
  };
94
88
  };
95
- const createHttpTransport = (token) => {
96
- const transport = new StreamableHTTPClientTransport(new URL(UPSTREAM_URL), {
97
- requestInit: {
98
- headers: { Authorization: `Bearer ${token}` },
99
- },
100
- });
89
+ const createHttpTransport = async (token) => {
90
+ const transport = await createPlatformMcpTransport(token);
101
91
  bindHttpTransport(transport);
102
92
  return transport;
103
93
  };
104
- httpTransport = createHttpTransport(config.token);
105
- const accessExpiresSoon = () => {
106
- const current = loadConfig();
107
- if (!current?.refresh_token || !current.access_expires_at)
108
- return false;
109
- const expiresAt = Date.parse(current.access_expires_at);
110
- return Number.isFinite(expiresAt) && expiresAt <= Date.now() + 60_000;
111
- };
94
+ httpTransport = await createHttpTransport(config.token);
112
95
  const renewHttpTransport = async (preemptive = false) => {
113
96
  if (refreshInFlight)
114
97
  return refreshInFlight;
@@ -117,23 +100,9 @@ async function runStdioBridge() {
117
100
  // API confirms API_KEY_EXPIRED, or just before the server-provided access
118
101
  // expiry. Both paths rotate and persist the replacement smtr_ pair.
119
102
  // INVALID_API_KEY or a revoked refresh credential stays terminal.
120
- if (preemptive) {
121
- const refreshed = await apiClient.refreshAccessKey(10_000);
122
- if (!refreshed) {
123
- throw new Error('Session renewal returned an incomplete credential pair.');
124
- }
125
- }
126
- else {
127
- await apiClient.call('GET', '/auth/whoami', undefined, undefined, {
128
- timeoutMs: 10_000,
129
- });
130
- }
131
- const renewed = loadConfig();
132
- if (!renewed?.token) {
133
- throw new Error('Session renewal completed without a saved access key.');
134
- }
103
+ const renewedToken = await refreshMcpAccessToken(preemptive);
135
104
  const previous = httpTransport;
136
- const next = createHttpTransport(renewed.token);
105
+ const next = await createHttpTransport(renewedToken);
137
106
  await next.start();
138
107
  httpTransport = next;
139
108
  await previous.close();
@@ -149,7 +118,7 @@ async function runStdioBridge() {
149
118
  // New login configs carry the exact access expiry. Renew before forwarding
150
119
  // so a mutating MCP request is never replayed merely because it crossed
151
120
  // the 24-hour auth boundary. Older configs retain the 401 fallback below.
152
- if (accessExpiresSoon()) {
121
+ if (mcpAccessExpiresSoon()) {
153
122
  await renewHttpTransport(true);
154
123
  }
155
124
  try {
@@ -157,7 +126,7 @@ async function runStdioBridge() {
157
126
  return;
158
127
  }
159
128
  catch (err) {
160
- if (!isAuthRejection(err))
129
+ if (!isMcpAuthRejection(err))
161
130
  throw err;
162
131
  }
163
132
  await renewHttpTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { ApiClient } from '../lib/client.js';
2
2
  import { getToken, loadProjectConfig } from '../lib/config.js';
3
3
  import { dim, error, info, printJson, statusDot, teal, timeAgo } from '../lib/output.js';
4
+ import { callPlatformTool } from '../lib/platform-tools.js';
5
+ import { isRecord, unwrapPlatformData } from '../lib/platform-command.js';
4
6
  export function registerStatus(program) {
5
7
  program
6
8
  .command('status [project]')
@@ -20,6 +22,8 @@ export function registerStatus(program) {
20
22
  }
21
23
  let projectStatus = null;
22
24
  let projectError = null;
25
+ let deploymentStatus = null;
26
+ let deploymentError = null;
23
27
  let workspaceStatus = null;
24
28
  try {
25
29
  const p = await client.call('GET', `/projects/${encodeURIComponent(projectId)}`);
@@ -40,6 +44,36 @@ export function registerStatus(program) {
40
44
  error(`Project: ${projectError}`);
41
45
  process.exitCode = 1; // a failed status must not report success to a script
42
46
  }
47
+ try {
48
+ const deployment = unwrapPlatformData(await callPlatformTool('deploy_status', { project_id: projectId }, { allTools: true }));
49
+ if (!isRecord(deployment))
50
+ throw new Error('deploy_status returned an unexpected response.');
51
+ deploymentStatus = deployment;
52
+ if (!opts.json) {
53
+ const prodVersion = typeof deployment.prod_version === 'number'
54
+ ? deployment.prod_version
55
+ : typeof deployment.dev_version === 'number' && deployment.in_sync === true
56
+ ? deployment.dev_version
57
+ : null;
58
+ if (prodVersion !== null)
59
+ info(`Production version: ${teal(String(prodVersion))}`);
60
+ if (typeof deployment.active_release_id === 'string') {
61
+ info(`Active release: ${dim(deployment.active_release_id)}`);
62
+ }
63
+ if (deployment.dev_ahead === true) {
64
+ info(`Draft: ${deployment.files_changed ?? 'some'} file(s) ahead of production`);
65
+ }
66
+ else if (deployment.in_sync === true) {
67
+ info('Deploy state: dev and production are in sync');
68
+ }
69
+ }
70
+ }
71
+ catch (err) {
72
+ deploymentError = err instanceof Error ? err.message : String(err);
73
+ if (!opts.json)
74
+ error(`Deploy status: ${deploymentError}`);
75
+ process.exitCode = 1;
76
+ }
43
77
  try {
44
78
  const ws = await client.call('GET', '/hosted/status');
45
79
  workspaceStatus = ws;
@@ -62,8 +96,10 @@ export function registerStatus(program) {
62
96
  if (opts.json) {
63
97
  printJson({
64
98
  project: projectStatus,
99
+ deployment: deploymentStatus,
65
100
  workspace: workspaceStatus,
66
101
  project_error: projectError,
102
+ deployment_error: deploymentError,
67
103
  });
68
104
  }
69
105
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}