@cleanslop/cli 0.1.0-beta.2 → 0.1.0-beta.21

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 (66) hide show
  1. package/README.md +5 -4
  2. package/assets/skill-core.md +25 -7
  3. package/dist/action.d.ts +4 -1
  4. package/dist/action.js +24 -0
  5. package/dist/action.js.map +1 -1
  6. package/dist/args.d.ts +1 -1
  7. package/dist/args.js +31 -9
  8. package/dist/args.js.map +1 -1
  9. package/dist/commands/credits.d.ts +30 -1
  10. package/dist/commands/credits.js +320 -43
  11. package/dist/commands/credits.js.map +1 -1
  12. package/dist/commands/email.js +22 -0
  13. package/dist/commands/email.js.map +1 -1
  14. package/dist/commands/link-login.js +4 -4
  15. package/dist/commands/link-login.js.map +1 -1
  16. package/dist/commands/login.d.ts +1 -0
  17. package/dist/commands/login.js +22 -8
  18. package/dist/commands/login.js.map +1 -1
  19. package/dist/commands/logout.d.ts +2 -1
  20. package/dist/commands/logout.js +48 -23
  21. package/dist/commands/logout.js.map +1 -1
  22. package/dist/commands/redeem.d.ts +7 -0
  23. package/dist/commands/redeem.js +33 -0
  24. package/dist/commands/redeem.js.map +1 -0
  25. package/dist/commands/scan-upload.js +48 -27
  26. package/dist/commands/scan-upload.js.map +1 -1
  27. package/dist/commands/scan.js +45 -4
  28. package/dist/commands/scan.js.map +1 -1
  29. package/dist/config.d.ts +3 -3
  30. package/dist/config.js +2 -2
  31. package/dist/config.js.map +1 -1
  32. package/dist/connect.d.ts +15 -0
  33. package/dist/connect.js +100 -0
  34. package/dist/connect.js.map +1 -0
  35. package/dist/credentials.d.ts +14 -0
  36. package/dist/credentials.js +25 -7
  37. package/dist/credentials.js.map +1 -1
  38. package/dist/done-question.d.ts +20 -0
  39. package/dist/done-question.js +25 -0
  40. package/dist/done-question.js.map +1 -0
  41. package/dist/exit.d.ts +29 -0
  42. package/dist/exit.js +12 -0
  43. package/dist/exit.js.map +1 -1
  44. package/dist/git.d.ts +8 -1
  45. package/dist/git.js +35 -1
  46. package/dist/git.js.map +1 -1
  47. package/dist/http.js +74 -4
  48. package/dist/http.js.map +1 -1
  49. package/dist/link.d.ts +52 -11
  50. package/dist/link.js +169 -43
  51. package/dist/link.js.map +1 -1
  52. package/dist/main.js +8 -3
  53. package/dist/main.js.map +1 -1
  54. package/dist/output.js +6 -1
  55. package/dist/output.js.map +1 -1
  56. package/dist/pack.d.ts +19 -3
  57. package/dist/pack.js +30 -2
  58. package/dist/pack.js.map +1 -1
  59. package/dist/skill.d.ts +1 -1
  60. package/dist/skill.js +2 -1
  61. package/dist/skill.js.map +1 -1
  62. package/dist/top-up.d.ts +8 -0
  63. package/dist/top-up.js +35 -0
  64. package/dist/top-up.js.map +1 -0
  65. package/dist/types.d.ts +18 -1
  66. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"link-login.js","sourceRoot":"","sources":["../../src/commands/link-login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link-login.js","sourceRoot":"","sources":["../../src/commands/link-login.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ import type { ParsedArgs } from "../types.js";
3
3
  /** Matches server DEVICE_EXTEND_TTL_MS — first /connect view extends the code. */
4
4
  export declare const DEVICE_POLL_GRACE_MS: number;
5
5
  export declare function devicePollDeadline(expiresAt: number): number;
6
+ export declare const GITHUB_RESUME_COMMAND = "cleanslop login --resume";
6
7
  export declare function runLogin(deps: CliDeps, args: ParsedArgs): Promise<number>;
@@ -1,5 +1,7 @@
1
1
  import { CLIENT_ID, DEVICE_GRANT_TYPE, PACKAGE_VERSION } from "../config.js";
2
2
  import { deletePendingLogin, peekStoredCreds, readPendingLogin, resolveOrigin, storeToken, writePendingLogin, } from "../credentials.js";
3
+ import { questionLines } from "../action.js";
4
+ import { doneQuestion } from "../done-question.js";
3
5
  import { actionError, CliError, EXIT_ACTION, EXIT_OK, EXIT_UNEXPECTED, usageError, } from "../exit.js";
4
6
  import { detectAgentHint, gitToplevel, parseGithubRemote } from "../git.js";
5
7
  import { asErrorBody, httpRequest } from "../http.js";
@@ -18,16 +20,28 @@ async function repoHint(deps) {
18
20
  return undefined;
19
21
  return parseGithubRemote(remote.stdout)?.fullName;
20
22
  }
21
- function printApproval(deps, device) {
22
- deps.io.stderr(`${device.verificationUriComplete}\n`);
23
- deps.io.stderr(`${device.userCode}\n`);
24
- deps.io.stderr([
23
+ export const GITHUB_RESUME_COMMAND = "cleanslop login --resume";
24
+ /** `--no-wait` exits after printing, so it also asks the human to say when they approved. */
25
+ function printApproval(deps, device, opts = {}) {
26
+ const url = device.verificationUriComplete;
27
+ const code = device.userCode;
28
+ deps.io.stderr(`${url}\n`);
29
+ deps.io.stderr(`${code}\n`);
30
+ const lines = [
25
31
  "CLEANSLOP_ACTION_REQUIRED: approve",
26
32
  "",
27
- `Ask the human to open ${device.verificationUriComplete} and confirm code ${device.userCode}.`,
33
+ `Ask the human to open ${url} and confirm code ${code}.`,
28
34
  "Do not open or approve it yourself.",
29
- "",
30
- ].join("\n"));
35
+ ];
36
+ if (opts.askDone) {
37
+ lines.push("", ...questionLines(doneQuestion({
38
+ id: "github_approval",
39
+ header: "Approve",
40
+ question: `Open ${url}, confirm code ${code}, and approve CleanSlop. Done?`,
41
+ then: { run: GITHUB_RESUME_COMMAND },
42
+ })));
43
+ }
44
+ deps.io.stderr(`${lines.join("\n")}\n`);
31
45
  }
32
46
  async function pollDeviceToken(deps, origin, device) {
33
47
  let intervalMs = Math.max(3, device.interval) * 1000;
@@ -174,7 +188,7 @@ export async function runLogin(deps, args) {
174
188
  printApproval(deps, {
175
189
  verificationUriComplete: device.verification_uri_complete,
176
190
  userCode: device.user_code,
177
- });
191
+ }, { askDone: args.noWait });
178
192
  if (args.noWait) {
179
193
  await writePendingLogin(deps, {
180
194
  version: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import type { CliDeps } from "../deps.js";
2
- export declare function runLogout(deps: CliDeps): Promise<number>;
2
+ import type { ParsedArgs } from "../types.js";
3
+ export declare function runLogout(deps: CliDeps, args: ParsedArgs): Promise<number>;
@@ -1,40 +1,65 @@
1
- import { deleteOriginCreds, deletePendingLogin, resolveOrigin, resolveToken, } from "../credentials.js";
1
+ import { deleteAllLocalState, deleteOriginCreds, deletePendingFor, readCredentialsFile, resolveOrigin, resolveToken, } from "../credentials.js";
2
2
  import { EXIT_OK, EXIT_UNEXPECTED } from "../exit.js";
3
3
  import { httpRequest } from "../http.js";
4
- export async function runLogout(deps) {
4
+ /** Revokes `token` at `origin`; prints why and returns false when it could not. */
5
+ async function revoke(deps, origin, token) {
6
+ try {
7
+ const result = await httpRequest(deps, origin, "POST", "/oauth/revoke", {
8
+ token,
9
+ body: { token },
10
+ });
11
+ if (result.status >= 200 && result.status < 300)
12
+ return true;
13
+ deps.io.stderr(`Could not revoke the token for ${origin} (HTTP ${result.status}).\n`);
14
+ }
15
+ catch (err) {
16
+ const message = err instanceof Error ? err.message : String(err);
17
+ deps.io.stderr(`Could not revoke the token for ${origin}: ${message}\n`);
18
+ }
19
+ return false;
20
+ }
21
+ const REVOKE_BY_HAND = "Revoke this agent under Account → Connected agents.";
22
+ export async function runLogout(deps, args) {
23
+ if (args.all)
24
+ return runLogoutAll(deps);
5
25
  const origin = resolveOrigin(deps);
6
26
  const creds = resolveToken(deps, origin);
7
- let revokeFailed = false;
8
- if (creds) {
9
- try {
10
- const result = await httpRequest(deps, origin, "POST", "/oauth/revoke", {
11
- token: creds.token,
12
- body: { token: creds.token },
13
- });
14
- if (result.status < 200 || result.status >= 300) {
15
- deps.io.stderr(`Could not revoke the token (HTTP ${result.status}).\n`);
16
- revokeFailed = true;
17
- }
18
- }
19
- catch (err) {
20
- const message = err instanceof Error ? err.message : String(err);
21
- deps.io.stderr(`Could not revoke the token: ${message}\n`);
22
- revokeFailed = true;
23
- }
24
- }
27
+ const revoked = creds ? await revoke(deps, origin, creds.token) : true;
25
28
  if (creds?.source !== "env") {
26
29
  await deleteOriginCreds(deps, origin);
27
30
  }
28
- deletePendingLogin(deps);
31
+ deletePendingFor(deps, origin);
29
32
  if (creds?.source === "env") {
30
33
  deps.io.stdout("Disconnected. File credentials were left in place because CLEANSLOP_TOKEN is set.\n");
31
34
  return EXIT_OK;
32
35
  }
33
- if (revokeFailed) {
34
- deps.io.stdout("Removed local credentials, but the server did not confirm revocation. Revoke this agent under Account → Connected agents.\n");
36
+ if (!revoked) {
37
+ deps.io.stdout(`Removed local credentials, but the server did not confirm revocation. ${REVOKE_BY_HAND}\n`);
35
38
  return EXIT_UNEXPECTED;
36
39
  }
37
40
  deps.io.stdout("Disconnected.\n");
38
41
  return EXIT_OK;
39
42
  }
43
+ /**
44
+ * Revokes every saved token at its own origin, then deletes every file the
45
+ * CLI keeps (credentials, pending GitHub login, pending Link payment). Link's
46
+ * own session and files are link-cli's; `link-cli auth logout` clears those.
47
+ */
48
+ async function runLogoutAll(deps) {
49
+ const failed = [];
50
+ for (const [origin, creds] of Object.entries(readCredentialsFile(deps).origins)) {
51
+ if (creds?.token && !(await revoke(deps, origin, creds.token)))
52
+ failed.push(origin);
53
+ }
54
+ deleteAllLocalState(deps);
55
+ const envNote = deps.env.get("CLEANSLOP_TOKEN")?.trim()
56
+ ? " CLEANSLOP_TOKEN is still set in this environment; unset it too."
57
+ : "";
58
+ if (failed.length > 0) {
59
+ deps.io.stdout(`Removed all local CleanSlop data, but ${failed.join(", ")} did not confirm revocation. ${REVOKE_BY_HAND}${envNote}\n`);
60
+ return EXIT_UNEXPECTED;
61
+ }
62
+ deps.io.stdout(`Disconnected everywhere and removed all local CleanSlop data.${envNote}\n`);
63
+ return EXIT_OK;
64
+ }
40
65
  //# sourceMappingURL=logout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;gBACtE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;aAC7B,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAChD,IAAI,CAAC,EAAE,CAAC,MAAM,CACZ,oCAAoC,MAAM,CAAC,MAAM,MAAM,CACxD,CAAC;gBACF,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,+BAA+B,OAAO,IAAI,CAAC,CAAC;YAC3D,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,MAAM,CACZ,qFAAqF,CACtF,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,MAAM,CACZ,6HAA6H,CAC9H,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CliDeps } from "../deps.js";
2
+ import type { ParsedArgs } from "../types.js";
3
+ /**
4
+ * `cleanslop redeem <code>`: redeem a promo (invite) code the human gave for
5
+ * free scans. One code per account.
6
+ */
7
+ export declare function runRedeem(deps: CliDeps, args: ParsedArgs): Promise<number>;
@@ -0,0 +1,33 @@
1
+ import { requireToken, resolveOrigin } from "../credentials.js";
2
+ import { EXIT_OK, usageError } from "../exit.js";
3
+ import { asRecord, httpRequest, requireOk } from "../http.js";
4
+ import { writeJson } from "../output.js";
5
+ /**
6
+ * `cleanslop redeem <code>`: redeem a promo (invite) code the human gave for
7
+ * free scans. One code per account.
8
+ */
9
+ export async function runRedeem(deps, args) {
10
+ const code = args.id?.trim();
11
+ if (!code)
12
+ throw usageError("Pass the promo code: cleanslop redeem <code>");
13
+ const origin = resolveOrigin(deps);
14
+ const creds = requireToken(deps, origin);
15
+ const result = await httpRequest(deps, origin, "POST", "/api/agent/v1/credits/redeem", {
16
+ token: creds.token,
17
+ body: { code },
18
+ });
19
+ requireOk(result);
20
+ const rec = asRecord(result.json);
21
+ const scans = typeof rec?.scanCredits === "number" ? rec.scanCredits : 0;
22
+ const reviews = typeof rec?.reviewCredits === "number" ? rec.reviewCredits : 0;
23
+ const balance = typeof rec?.credits === "number" ? rec.credits : null;
24
+ if (args.json) {
25
+ writeJson(deps, { redeemed: true, scanCredits: scans, reviewCredits: reviews, credits: balance });
26
+ return EXIT_OK;
27
+ }
28
+ const extra = reviews > 0 ? ` and ${reviews} review credits` : "";
29
+ const tail = balance == null ? "" : ` Balance: ${balance}.`;
30
+ deps.io.stdout(`Promo code applied: added ${scans} scan credits${extra}.${tail}\n`);
31
+ return EXIT_OK;
32
+ }
33
+ //# sourceMappingURL=redeem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redeem.js","sourceRoot":"","sources":["../../src/commands/redeem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa,EAAE,IAAgB;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,MAAM,UAAU,CAAC,8CAA8C,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B,EAAE;QACrF,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE;KACf,CAAC,CAAC;IACH,SAAS,CAAC,MAAM,CAAC,CAAC;IAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClG,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC;IAC5D,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,KAAK,gBAAgB,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -15,33 +15,11 @@ export async function runUploadScan(deps, args) {
15
15
  if (args.dryRun)
16
16
  return EXIT_OK;
17
17
  const archive = await writePackArchive(plan);
18
- const uploaded = await httpRequest(deps, origin, "POST", "/api/agent/v1/uploads", {
19
- token: creds.token,
20
- rawBody: new Uint8Array(archive.bytes),
21
- contentType: "application/gzip",
22
- headers: {
23
- "CleanSlop-Upload-Manifest": JSON.stringify(packManifest(plan, archive.sha256)),
24
- },
25
- });
26
- requireOk(uploaded);
27
- const rec = uploaded.json;
28
- if (!rec || typeof rec.uploadId !== "string") {
29
- throw new CliError("Upload response was missing uploadId.", EXIT_UNEXPECTED);
30
- }
31
- const headers = {};
32
- if (args.force)
33
- headers["Idempotency-Key"] = deps.randomId();
34
- const startBody = {
35
- uploadId: rec.uploadId,
36
- force: args.force || undefined,
37
- surface: "cli",
38
- };
39
- const postStart = () => httpRequest(deps, origin, "POST", "/api/agent/v1/scans", {
40
- token: creds.token,
41
- headers,
42
- body: startBody,
43
- });
44
- const started = await recoverOutOfScansIfOffered(deps, args, await postStart(), postStart);
18
+ const manifest = packManifest(plan, archive);
19
+ const reused = args.force
20
+ ? null
21
+ : await reuseScannedFiles(deps, origin, creds.token, manifest);
22
+ const started = reused ?? (await uploadAndStart(deps, args, origin, creds.token, archive.bytes, manifest));
45
23
  requireOk(started);
46
24
  const payload = started.json;
47
25
  if (!payload?.scan?.id) {
@@ -82,4 +60,47 @@ export async function runUploadScan(deps, args) {
82
60
  }
83
61
  return EXIT_OK;
84
62
  }
63
+ /**
64
+ * Asks whether these exact files were scanned in the last 24h or are
65
+ * scanning now. Returns that start response, or null to upload them.
66
+ * Servers without the pre-check answer non-2xx, which also means upload.
67
+ */
68
+ async function reuseScannedFiles(deps, origin, token, manifest) {
69
+ const res = await httpRequest(deps, origin, "POST", "/api/agent/v1/uploads/reuse", {
70
+ token,
71
+ body: { manifest, surface: "cli" },
72
+ });
73
+ const scanId = res.json?.scan?.id;
74
+ if (res.status !== 200 || typeof scanId !== "string")
75
+ return null;
76
+ deps.io.stderr(`Same files as scan ${scanId}; reusing it without uploading.\n`);
77
+ return res;
78
+ }
79
+ async function uploadAndStart(deps, args, origin, token, bytes, manifest) {
80
+ const uploaded = await httpRequest(deps, origin, "POST", "/api/agent/v1/uploads", {
81
+ token,
82
+ rawBody: new Uint8Array(bytes),
83
+ contentType: "application/gzip",
84
+ headers: { "CleanSlop-Upload-Manifest": JSON.stringify(manifest) },
85
+ });
86
+ requireOk(uploaded);
87
+ const rec = uploaded.json;
88
+ if (!rec || typeof rec.uploadId !== "string") {
89
+ throw new CliError("Upload response was missing uploadId.", EXIT_UNEXPECTED);
90
+ }
91
+ const headers = {};
92
+ if (args.force)
93
+ headers["Idempotency-Key"] = deps.randomId();
94
+ const startBody = {
95
+ uploadId: rec.uploadId,
96
+ force: args.force || undefined,
97
+ surface: "cli",
98
+ };
99
+ const postStart = () => httpRequest(deps, origin, "POST", "/api/agent/v1/scans", {
100
+ token,
101
+ headers,
102
+ body: startBody,
103
+ });
104
+ return recoverOutOfScansIfOffered(deps, args, await postStart(), postStart);
105
+ }
85
106
  //# sourceMappingURL=scan-upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan-upload.js","sourceRoot":"","sources":["../../src/commands/scan-upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan-upload.js","sourceRoot":"","sources":["../../src/commands/scan-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAa,EACb,IAAgB;IAEhB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,OAAO,GACX,MAAM,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7F,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAgC,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,CAAC,mCAAmC,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9C,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,IAAI,EACJ,MAAM,EACN,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EACzB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAC5B,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC7D,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,GAAG,CAAC,MAAM;gBAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAa,EACb,MAAc,EACd,KAAa,EACb,QAAiC;IAEjC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,EAAE;QACjF,KAAK;QACL,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;KACnC,CAAC,CAAC;IACH,MAAM,MAAM,GAAI,GAAG,CAAC,IAAkD,EAAE,IAAI,EAAE,EAAE,CAAC;IACjF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,MAAM,mCAAmC,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAa,EACb,IAAgB,EAChB,MAAc,EACd,KAAa,EACb,KAAa,EACb,QAAiC;IAEjC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE;QAChF,KAAK;QACL,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;QAC9B,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,EAAE,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;KACnE,CAAC,CAAC;IACH,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAoC,CAAC;IAC1D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,QAAQ,CAAC,uCAAuC,EAAE,eAAe,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9B,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE;QACvD,KAAK;QACL,OAAO;QACP,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IACL,OAAO,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { writeAction, writeResume } from "../action.js";
2
2
  import { requireToken, resolveOrigin, storeLastScanId, } from "../credentials.js";
3
- import { CliError, EXIT_OK, EXIT_RUNNING, EXIT_SCAN_FAILED, EXIT_UNEXPECTED, } from "../exit.js";
3
+ import { CliError, EXIT_OK, EXIT_POLICY, EXIT_RUNNING, EXIT_SCAN_FAILED, EXIT_SOURCE, EXIT_UNEXPECTED, } from "../exit.js";
4
4
  import { assertGithubReady, inspectGit } from "../git.js";
5
5
  import { recoverOutOfScansIfOffered } from "./credits.js";
6
6
  import { httpRequest, requireOk } from "../http.js";
@@ -8,6 +8,31 @@ import { writeJson, writeMarkdownReport, writeScanProgress } from "../output.js"
8
8
  import { fetchReport } from "./report.js";
9
9
  import { runUploadScan } from "./scan-upload.js";
10
10
  import { isScanFinal, waitForScan } from "../wait.js";
11
+ /** No git checkout or no origin: a GitHub grant that may upload uploads instead. */
12
+ async function inspectGitOrNull(deps) {
13
+ try {
14
+ return await inspectGit(deps);
15
+ }
16
+ catch (err) {
17
+ if (err instanceof CliError && err.exitCode === EXIT_SOURCE)
18
+ return null;
19
+ throw err;
20
+ }
21
+ }
22
+ /** The repo has no GitHub App install: also offer to upload the local files. */
23
+ function offerUploadOnInstall(err) {
24
+ const question = err instanceof CliError ? err.action?.question : undefined;
25
+ if (question?.id !== "github_install")
26
+ return err;
27
+ // After Done, before Not now.
28
+ question.options.splice(1, 0, {
29
+ value: "upload",
30
+ label: "Scan local files",
31
+ description: "Upload this folder's files instead",
32
+ next: "run the same cleanslop command again, adding --upload",
33
+ });
34
+ return err;
35
+ }
11
36
  export async function runScan(deps, args) {
12
37
  const origin = resolveOrigin(deps);
13
38
  const creds = requireToken(deps, origin);
@@ -16,11 +41,22 @@ export async function runScan(deps, args) {
16
41
  });
17
42
  requireOk(meRes);
18
43
  const me = (meRes.json ?? {});
44
+ const canUpload = me.uploadFallback === true;
19
45
  if (me.uploads === true) {
20
46
  return runUploadScan(deps, args);
21
47
  }
22
- const git = await inspectGit(deps);
23
- assertGithubReady(git);
48
+ if (args.upload) {
49
+ if (!canUpload) {
50
+ throw new CliError("This agent can't upload files. Run cleanslop login again to approve a new agent.", EXIT_POLICY);
51
+ }
52
+ return runUploadScan(deps, args);
53
+ }
54
+ const git = canUpload ? await inspectGitOrNull(deps) : await inspectGit(deps);
55
+ if (!git || (canUpload && !git.github)) {
56
+ deps.io.stderr("This folder has no GitHub origin; uploading its files instead.\n");
57
+ return runUploadScan(deps, args);
58
+ }
59
+ assertGithubReady(git, { canUpload });
24
60
  const headers = {};
25
61
  if (args.force) {
26
62
  headers["Idempotency-Key"] = deps.randomId();
@@ -38,7 +74,12 @@ export async function runScan(deps, args) {
38
74
  body: startBody,
39
75
  });
40
76
  const started = await recoverOutOfScansIfOffered(deps, args, await postStart(), postStart);
41
- requireOk(started);
77
+ try {
78
+ requireOk(started);
79
+ }
80
+ catch (err) {
81
+ throw canUpload ? offerUploadOnInstall(err) : err;
82
+ }
42
83
  const payload = started.json;
43
84
  if (!payload?.scan?.id) {
44
85
  throw new CliError("Scan create response was invalid.", EXIT_UNEXPECTED);
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export declare const PACKAGE_NAME = "@cleanslop/cli";
2
- export declare const PACKAGE_VERSION = "0.1.0-beta.2";
2
+ export declare const PACKAGE_VERSION = "0.1.0-beta.21";
3
3
  export declare const CLIENT_ID = "cleanslop-cli";
4
4
  export declare const DEFAULT_ORIGIN = "https://cleanslop.com";
5
5
  export declare const DEFAULT_WAIT_MS: number;
6
6
  export declare const MIN_POLL_MS = 3000;
7
7
  export declare const LONGPOLL_MAX_SEC = 45;
8
8
  export declare const DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
9
- export declare const USER_AGENT = "cleanslop-cli/0.1.0-beta.2";
9
+ export declare const USER_AGENT = "cleanslop-cli/0.1.0-beta.21";
10
10
  export declare const CREDENTIALS_FILE = "credentials.json";
11
11
  export declare const PENDING_LOGIN_FILE = "pending-login.json";
12
12
  export declare const PENDING_SPEND_FILE = "pending-spend-request.json";
@@ -17,7 +17,7 @@ export declare const TOKEN_RE: RegExp;
17
17
  export declare const TERMS_UPDATED_ON = "2026-10-09";
18
18
  export declare const LINK_CLI_TIMEOUT_MS = 15000;
19
19
  /** Used when `link-cli` is not on PATH. Pinned: the CLI parses its JSON. */
20
- export declare const LINK_CLI_PACKAGE = "@stripe/link-cli@0.27.3";
20
+ export declare const LINK_CLI_PACKAGE = "@stripe/link-cli@0.27.4";
21
21
  export declare const LINK_CLI_NPX_TIMEOUT_MS = 180000;
22
22
  export declare const PACK_MAX_FILE_BYTES: number;
23
23
  /** Same default as `AGENT_UPLOAD_MAX_COMPRESSED_BYTES` on the server. */
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const PACKAGE_NAME = "@cleanslop/cli";
2
- export const PACKAGE_VERSION = "0.1.0-beta.2";
2
+ export const PACKAGE_VERSION = "0.1.0-beta.21";
3
3
  export const CLIENT_ID = "cleanslop-cli";
4
4
  export const DEFAULT_ORIGIN = "https://cleanslop.com";
5
5
  export const DEFAULT_WAIT_MS = 8 * 60 * 1000;
@@ -17,7 +17,7 @@ export const TOKEN_RE = /cslop_(?:agt|mat|mrt)_[A-Za-z0-9]+/g;
17
17
  export const TERMS_UPDATED_ON = "2026-10-09";
18
18
  export const LINK_CLI_TIMEOUT_MS = 15_000;
19
19
  /** Used when `link-cli` is not on PATH. Pinned: the CLI parses its JSON. */
20
- export const LINK_CLI_PACKAGE = "@stripe/link-cli@0.27.3";
20
+ export const LINK_CLI_PACKAGE = "@stripe/link-cli@0.27.4";
21
21
  export const LINK_CLI_NPX_TIMEOUT_MS = 180_000;
22
22
  export const PACK_MAX_FILE_BYTES = 2 * 1024 * 1024;
23
23
  /** Same default as `AGENT_UPLOAD_MAX_COMPRESSED_BYTES` on the server. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAC5B,8CAA8C,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAC9D,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAExD,MAAM,UAAU,aAAa;IAC3B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACxE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACtD,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAC5B,8CAA8C,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAC9D,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAExD,MAAM,UAAU,aAAa;IAC3B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACxE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACtD,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CliDeps } from "./deps.js";
2
+ import { CliError, type ActionQuestion, type NotConnectedError } from "./exit.js";
3
+ export declare const LINK_LOGIN_COMMAND = "cleanslop login --link --no-wait";
4
+ export declare const GITHUB_LOGIN_COMMAND = "cleanslop login --no-wait";
5
+ export declare function connectQuestion(github: boolean, githubUploads?: boolean): ActionQuestion;
6
+ /**
7
+ * Not connected: ask Link (recommended) or GitHub when the server offers
8
+ * both; otherwise, or if the server cannot say, keep the plain login block.
9
+ */
10
+ export declare function withConnectChoice(deps: CliDeps, err: NotConnectedError): Promise<CliError>;
11
+ /**
12
+ * A link-cli failure during `login --link` (no action of its own) offers
13
+ * GitHub, since Link may simply be unavailable to this person.
14
+ */
15
+ export declare function offerGithubAfterLinkFailure(err: unknown): never;