getmyenv 0.3.2 → 0.3.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.
Files changed (45) hide show
  1. package/README.md +9 -9
  2. package/dist/bin.js +23 -0
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +9 -23
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/backup.d.ts.map +1 -1
  8. package/dist/commands/backup.js +9 -14
  9. package/dist/commands/backup.js.map +1 -1
  10. package/dist/commands/link.d.ts +2 -2
  11. package/dist/commands/link.d.ts.map +1 -1
  12. package/dist/commands/link.js +40 -13
  13. package/dist/commands/link.js.map +1 -1
  14. package/dist/commands/restore.d.ts.map +1 -1
  15. package/dist/commands/restore.js +6 -11
  16. package/dist/commands/restore.js.map +1 -1
  17. package/dist/commands/run.d.ts.map +1 -1
  18. package/dist/commands/run.js +10 -17
  19. package/dist/commands/run.js.map +1 -1
  20. package/dist/commands/token.d.ts +13 -13
  21. package/dist/commands/token.d.ts.map +1 -1
  22. package/dist/commands/token.js +105 -144
  23. package/dist/commands/token.js.map +1 -1
  24. package/dist/commands/whoami.d.ts.map +1 -1
  25. package/dist/commands/whoami.js +9 -20
  26. package/dist/commands/whoami.js.map +1 -1
  27. package/dist/lib/api.d.ts +12 -12
  28. package/dist/lib/api.d.ts.map +1 -1
  29. package/dist/lib/api.js +40 -81
  30. package/dist/lib/api.js.map +1 -1
  31. package/dist/lib/bootstrap.d.ts +6 -5
  32. package/dist/lib/bootstrap.d.ts.map +1 -1
  33. package/dist/lib/bootstrap.js +15 -19
  34. package/dist/lib/bootstrap.js.map +1 -1
  35. package/dist/lib/credentials.d.ts +14 -62
  36. package/dist/lib/credentials.d.ts.map +1 -1
  37. package/dist/lib/credentials.js +40 -256
  38. package/dist/lib/credentials.js.map +1 -1
  39. package/dist/lib/fs.js +2 -2
  40. package/dist/lib/fs.js.map +1 -1
  41. package/dist/lib/pek.d.ts +1 -1
  42. package/dist/lib/pek.d.ts.map +1 -1
  43. package/dist/lib/pek.js +1 -1
  44. package/dist/lib/pek.js.map +1 -1
  45. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACL,eAAe,GAIhB,MAAM,kBAAkB,CAAC;AAE1B,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAU9C,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,WAAoB,EAAE,KAAe;IACjE,IAAI,WAAW,EAAE,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,KAAK,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,OAAO,SAAS;IAEV;IACA;IAFV,YACU,OAAe,EACf,KAAc;QADd,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAS;IACrB,CAAC;IAEI,OAAO,CAAC,KAA8B;QAC5C,MAAM,CAAC,GAA2B;YAChC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,wBAAwB,EAAE,WAAW;YACrC,GAAG,KAAK;SACT,CAAC;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,CAAC,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAc,EACd,IAAY,EACZ,IAAc,EACd,YAAqC;QAErC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YACnE,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YACnC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC5D,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;gBACtD,IAAI,IAAI,CAAC,KAAK;oBAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAC9C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,OAAO,eAAe,EAAE,EAAE,KAAK,CAAC;AAClC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAe;IAEf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAEpB,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IAEpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC9D,MAAM,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,+DAA+D;AAC/D,KAAK,EAAE,CAAC;AACR,KAAM,EAAkB,CAAC"}
@@ -1,14 +1,15 @@
1
- import { type WhoamiResponse } from "../lib/api.js";
1
+ import { type WhoamiResponse } from "./api.js";
2
2
  export type BootstrapOpts = {
3
3
  apiUrl?: string;
4
4
  /** Skip confirm when linking (e.g. push --create). */
5
5
  forceLink?: boolean;
6
- /** Verb for confirm copy: "push" | "pull". */
7
- action: "push" | "pull";
6
+ /** Verb for confirm copy. */
7
+ action: "push" | "pull" | "run" | "backup" | "restore";
8
8
  };
9
9
  /**
10
- * Ensure a CLI token exists (TTY runs token), then ensure this folder is linked
11
- * to the token project (TTY confirms + link). Returns whoami + linked ids.
10
+ * Ensure this folder is authorized (token) and linked to a project.
11
+ * TTY-only bootstrap; CI passes GETMYENV_TOKEN and either commits
12
+ * `.getmyenv/project.json` or runs `link --force` first.
12
13
  */
13
14
  export declare function ensureTokenAndLink(opts: BootstrapOpts): Promise<{
14
15
  who: WhoamiResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IACrE,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAkED"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACxD,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IACrE,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CA+DD"}
@@ -1,37 +1,34 @@
1
- import { promptConfirm, readProjectMeta, } from "../lib/fs.js";
2
- import { ApiClient, ensureSessionToken, getSessionToken, resolveApiUrl, } from "../lib/api.js";
1
+ import { promptConfirm, readProjectMeta } from "./fs.js";
2
+ import { ApiClient, ensureSessionToken, hasSessionToken, resolveApiUrl, } from "./api.js";
3
3
  import { linkCommand } from "../commands/link.js";
4
4
  import { tokenCommand } from "../commands/token.js";
5
5
  /**
6
- * Ensure a CLI token exists (TTY runs token), then ensure this folder is linked
7
- * to the token project (TTY confirms + link). Returns whoami + linked ids.
6
+ * Ensure this folder is authorized (token) and linked to a project.
7
+ * TTY-only bootstrap; CI passes GETMYENV_TOKEN and either commits
8
+ * `.getmyenv/project.json` or runs `link --force` first.
8
9
  */
9
10
  export async function ensureTokenAndLink(opts) {
10
- if (!getSessionToken()) {
11
+ if (!hasSessionToken()) {
11
12
  if (!process.stdin.isTTY) {
12
- throw new Error("No CLI token. Run: npx getmyenv token");
13
+ throw new Error("No CLI token in this folder. Set GETMYENV_TOKEN for CI, or run in a TTY.");
13
14
  }
14
- await tokenCommand({
15
- apiUrl: opts.apiUrl,
16
- skipLinkOffer: true,
17
- });
15
+ await tokenCommand({ apiUrl: opts.apiUrl, skipLinkOffer: true });
18
16
  }
19
17
  let meta = readProjectMeta();
20
- let token = await ensureSessionToken(meta?.projectId);
21
- const apiUrl = resolveApiUrl(opts.apiUrl, meta?.projectId);
18
+ let token = await ensureSessionToken();
19
+ const apiUrl = resolveApiUrl(opts.apiUrl);
22
20
  const client = new ApiClient(apiUrl, token);
23
21
  const who = await client.request("GET", "/api/cli/whoami");
24
22
  if (meta?.projectId && String(meta.projectId) !== String(who.projectId)) {
25
23
  throw new Error([
26
- `Linked project (${meta.projectName ?? meta.projectId}) does not match this token (${who.projectName}, ${who.projectId}).`,
27
- "Run: npx getmyenv link --force",
28
- "Or create a CLI token for this project on /cli.",
24
+ `Linked project (${meta.projectName ?? meta.projectId}) does not match this folder's token (${who.projectName}, ${who.projectId}).`,
25
+ "Run: npx getmyenv link --clear (then re-run this command)",
29
26
  ].join("\n"));
30
27
  }
31
28
  if (!meta?.projectId) {
32
29
  if (opts.forceLink || process.stdin.isTTY) {
33
30
  if (!opts.forceLink && process.stdin.isTTY) {
34
- const ok = await promptConfirm(`Folder is not linked. Link to token project and ${opts.action}?`, { defaultYes: true });
31
+ const ok = await promptConfirm(`Folder is not linked to ${who.projectName}. Link and ${opts.action}?`, { defaultYes: true });
35
32
  if (!ok) {
36
33
  throw new Error("Run: npx getmyenv link first");
37
34
  }
@@ -43,14 +40,13 @@ export async function ensureTokenAndLink(opts) {
43
40
  skipPushOffer: true,
44
41
  });
45
42
  meta = readProjectMeta();
46
- token = await ensureSessionToken(meta?.projectId);
43
+ token = await ensureSessionToken();
47
44
  }
48
45
  }
49
46
  if (!meta?.projectId) {
50
47
  throw new Error([
51
48
  "No project is linked to this folder.",
52
- "Create a project in the dashboard (/projects/new), create a CLI token,",
53
- "then: npx getmyenv token && npx getmyenv link",
49
+ "Run: npx getmyenv link",
54
50
  ].join("\n"));
55
51
  }
56
52
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAUpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAmB;IAO1D,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,YAAY,CAAC;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAiB,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE3E,IAAI,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb;YACE,mBAAmB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,gCAAgC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,IAAI;YAC1H,gCAAgC;YAChC,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,MAAM,aAAa,CAC5B,mDAAmD,IAAI,CAAC,MAAM,GAAG,EACjE,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;gBACF,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,MAAM,WAAW,CAAC,SAAS,EAAE;gBAC3B,MAAM;gBACN,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,GAAG,CAAC,QAAQ;gBACjB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,IAAI,GAAG,eAAe,EAAE,CAAC;YACzB,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb;YACE,sCAAsC;YACtC,wEAAwE;YACxE,+CAA+C;SAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM;QACN,KAAK;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,GAEd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAUpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAmB;IAO1D,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAiB,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE3E,IAAI,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb;YACE,mBAAmB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,yCAAyC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,IAAI;YACnI,6DAA6D;SAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,MAAM,aAAa,CAC5B,2BAA2B,GAAG,CAAC,WAAW,cAAc,IAAI,CAAC,MAAM,GAAG,EACtE,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;gBACF,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,MAAM,WAAW,CAAC,SAAS,EAAE;gBAC3B,MAAM;gBACN,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,GAAG,CAAC,QAAQ;gBACjB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,IAAI,GAAG,eAAe,EAAE,CAAC;YACzB,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb;YACE,sCAAsC;YACtC,wBAAwB;SACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM;QACN,KAAK;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;KACjD,CAAC;AACJ,CAAC"}
@@ -1,70 +1,22 @@
1
1
  export type CliScope = "development" | "production";
2
- export type TokenEntry = {
2
+ /**
3
+ * Per-folder token stored in `.getmyenv/token.json`.
4
+ * One folder = one project = one token. No machine-global store.
5
+ */
6
+ export type FolderToken = {
7
+ version: 1;
3
8
  token: string;
9
+ cliScope: CliScope;
4
10
  apiUrl?: string;
11
+ projectId: string;
5
12
  projectName: string;
6
- cliScope: CliScope;
13
+ label?: string;
7
14
  addedAt: string;
8
15
  };
9
- /** Credentials file format v2: one token per project. */
10
- export type CredentialsV2 = {
11
- version: 2;
12
- tokens: Record<string, TokenEntry>;
13
- /** Default project id (string or number from older writes). */
14
- default?: number | string;
15
- };
16
- /** Legacy single-token file. */
17
- export type CredentialsV1 = {
18
- token: string;
19
- apiUrl?: string;
20
- };
21
- export declare function credentialsFilePath(): string;
22
- export declare function readCredentialsV2(): CredentialsV2 | null;
23
- /** Legacy v1 blob, if present and not yet migrated. */
24
- export declare function readCredentialsV1(): CredentialsV1 | null;
25
- export declare function writeCredentialsV2(creds: CredentialsV2): string;
26
- export declare function upsertTokenEntry(projectId: string | number, entry: Omit<TokenEntry, "addedAt"> & {
16
+ export declare function tokenFilePath(cwd?: string): string;
17
+ export declare function readFolderToken(cwd?: string): FolderToken | null;
18
+ export declare function writeFolderToken(entry: Omit<FolderToken, "version" | "addedAt"> & {
27
19
  addedAt?: string;
28
- }, opts?: {
29
- setDefault?: boolean;
30
- }): string;
31
- export declare function removeTokenEntry(projectId: string | number): boolean;
32
- export declare function clearAllCredentials(): boolean;
33
- export declare function setDefaultProject(projectId: string | number): boolean;
34
- export declare function findTokenByNameOrId(nameOrId: string): {
35
- projectId: string;
36
- entry: TokenEntry;
37
- } | null;
38
- export type ResolvedToken = {
39
- token: string;
40
- apiUrl?: string;
41
- projectId?: string;
42
- entry?: TokenEntry;
43
- source: "env" | "linked" | "default" | "v1" | "single";
44
- };
45
- /**
46
- * Selection: GETMYENV_TOKEN > linked projectId entry > default > single entry > v1.
47
- */
48
- export declare function resolveStoredToken(linkedProjectId?: string | number | null): ResolvedToken | null;
49
- /**
50
- * Migrate a v1 credentials file into v2 using whoami metadata.
51
- * Returns the new store, or null if nothing to migrate / whoami failed.
52
- */
53
- export declare function migrateV1ToV2(meta: {
54
- projectId: string | number;
55
- projectName: string;
56
- cliScope: CliScope;
57
- apiUrl?: string;
58
- }): CredentialsV2 | null;
59
- /** @deprecated Prefer resolveStoredToken / readCredentialsV2. */
60
- export declare function readCredentials(): {
61
- token: string;
62
- apiUrl?: string;
63
- } | null;
64
- /** @deprecated Prefer upsertTokenEntry. */
65
- export declare function writeCredentials(creds: {
66
- token: string;
67
- apiUrl?: string;
68
- }): string;
69
- export declare function clearCredentials(): boolean;
20
+ }, cwd?: string): string;
21
+ export declare function clearFolderToken(cwd?: string): boolean;
70
22
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAyBD,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CA+BxD;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAUxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAqB/D;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACzD,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,MAAM,CAgBR;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAepE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAK7C;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAQrE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GACf;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAiBjD;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GACvC,aAAa,GAAG,IAAI,CAsDtB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,aAAa,GAAG,IAAI,CAmBvB;AAED,iEAAiE;AACjE,wBAAgB,eAAe,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI3E;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAsBT;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAgB,GAAG,WAAW,GAAG,IAAI,CAoCvE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,GAAG,SAAgB,GAClB,MAAM,CAiBR;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAK7D"}
@@ -1,285 +1,69 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { getConfigDir } from "./fs.js";
4
- function credentialsPath() {
5
- return path.join(getConfigDir(), "credentials.json");
3
+ import { getGetenvDir } from "./fs.js";
4
+ export function tokenFilePath(cwd = process.cwd()) {
5
+ return path.join(getGetenvDir(cwd), "token.json");
6
6
  }
7
- export function credentialsFilePath() {
8
- return credentialsPath();
9
- }
10
- function readRaw() {
11
- const file = credentialsPath();
7
+ export function readFolderToken(cwd = process.cwd()) {
8
+ const file = tokenFilePath(cwd);
12
9
  if (!fs.existsSync(file))
13
10
  return null;
11
+ let raw;
14
12
  try {
15
- return JSON.parse(fs.readFileSync(file, "utf8"));
13
+ raw = JSON.parse(fs.readFileSync(file, "utf8"));
16
14
  }
17
15
  catch {
18
16
  return null;
19
17
  }
20
- }
21
- function isV2(data) {
22
- if (!data || typeof data !== "object")
23
- return false;
24
- const d = data;
25
- return d.version === 2 && d.tokens != null && typeof d.tokens === "object";
26
- }
27
- function isV1(data) {
28
- if (!data || typeof data !== "object")
29
- return false;
30
- const d = data;
31
- if (d.version === 2)
32
- return false;
33
- return typeof d.token === "string" && d.token.trim().length > 0;
34
- }
35
- export function readCredentialsV2() {
36
- const raw = readRaw();
37
- if (!isV2(raw))
18
+ if (!raw || typeof raw !== "object")
38
19
  return null;
39
- const tokens = {};
40
- for (const [id, entry] of Object.entries(raw.tokens)) {
41
- if (!entry || typeof entry !== "object")
42
- continue;
43
- const e = entry;
44
- if (!e.token || typeof e.token !== "string")
45
- continue;
46
- const scope = e.cliScope === "production" ? "production" : "development";
47
- tokens[String(id)] = {
48
- token: e.token.trim(),
49
- apiUrl: typeof e.apiUrl === "string" && e.apiUrl.trim()
50
- ? e.apiUrl.trim()
51
- : undefined,
52
- projectName: typeof e.projectName === "string" && e.projectName.trim()
53
- ? e.projectName.trim()
54
- : String(id),
55
- cliScope: scope,
56
- addedAt: typeof e.addedAt === "string" && e.addedAt
57
- ? e.addedAt
58
- : new Date().toISOString(),
59
- };
60
- }
61
- return {
62
- version: 2,
63
- tokens,
64
- default: raw.default != null ? raw.default : undefined,
65
- };
66
- }
67
- /** Legacy v1 blob, if present and not yet migrated. */
68
- export function readCredentialsV1() {
69
- const raw = readRaw();
70
- if (!isV1(raw))
20
+ const d = raw;
21
+ if (typeof d.token !== "string" || !d.token.trim())
22
+ return null;
23
+ if (typeof d.projectId !== "string" && typeof d.projectId !== "number") {
71
24
  return null;
25
+ }
26
+ const scope = d.cliScope === "production" ? "production" : "development";
72
27
  return {
73
- token: raw.token.trim(),
74
- apiUrl: typeof raw.apiUrl === "string" && raw.apiUrl.trim()
75
- ? raw.apiUrl.trim()
28
+ version: 1,
29
+ token: d.token.trim(),
30
+ cliScope: scope,
31
+ apiUrl: typeof d.apiUrl === "string" && d.apiUrl.trim()
32
+ ? d.apiUrl.trim()
76
33
  : undefined,
34
+ projectId: String(d.projectId),
35
+ projectName: typeof d.projectName === "string" && d.projectName.trim()
36
+ ? d.projectName.trim()
37
+ : String(d.projectId),
38
+ label: typeof d.label === "string" && d.label.trim() ? d.label.trim() : undefined,
39
+ addedAt: typeof d.addedAt === "string" && d.addedAt
40
+ ? d.addedAt
41
+ : new Date().toISOString(),
77
42
  };
78
43
  }
79
- export function writeCredentialsV2(creds) {
80
- const file = credentialsPath();
81
- const tokens = {};
82
- for (const [id, entry] of Object.entries(creds.tokens)) {
83
- tokens[String(id)] = {
84
- token: entry.token.trim(),
85
- projectName: entry.projectName,
86
- cliScope: entry.cliScope,
87
- addedAt: entry.addedAt,
88
- ...(entry.apiUrl?.trim() ? { apiUrl: entry.apiUrl.trim() } : {}),
89
- };
90
- }
44
+ export function writeFolderToken(entry, cwd = process.cwd()) {
45
+ const file = tokenFilePath(cwd);
46
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
91
47
  const payload = {
92
- version: 2,
93
- tokens,
94
- ...(creds.default != null ? { default: creds.default } : {}),
48
+ version: 1,
49
+ token: entry.token.trim(),
50
+ cliScope: entry.cliScope,
51
+ projectId: String(entry.projectId),
52
+ projectName: entry.projectName,
53
+ ...(entry.apiUrl?.trim() ? { apiUrl: entry.apiUrl.trim() } : {}),
54
+ ...(entry.label?.trim() ? { label: entry.label.trim() } : {}),
55
+ addedAt: entry.addedAt ?? new Date().toISOString(),
95
56
  };
96
57
  fs.writeFileSync(file, JSON.stringify(payload, null, 2) + "\n", {
97
58
  mode: 0o600,
98
59
  });
99
60
  return file;
100
61
  }
101
- export function upsertTokenEntry(projectId, entry, opts) {
102
- const id = String(projectId);
103
- const existing = readCredentialsV2() ?? { version: 2, tokens: {} };
104
- existing.tokens[id] = {
105
- token: entry.token.trim(),
106
- projectName: entry.projectName,
107
- cliScope: entry.cliScope,
108
- addedAt: entry.addedAt ?? new Date().toISOString(),
109
- ...(entry.apiUrl?.trim() ? { apiUrl: entry.apiUrl.trim() } : {}),
110
- };
111
- if (opts?.setDefault !== false) {
112
- existing.default = id;
113
- }
114
- else if (existing.default == null) {
115
- existing.default = id;
116
- }
117
- return writeCredentialsV2(existing);
118
- }
119
- export function removeTokenEntry(projectId) {
120
- const store = readCredentialsV2();
121
- if (!store)
122
- return false;
123
- const id = String(projectId);
124
- if (!store.tokens[id])
125
- return false;
126
- delete store.tokens[id];
127
- if (String(store.default) === id) {
128
- const remaining = Object.keys(store.tokens);
129
- store.default = remaining[0];
130
- }
131
- if (Object.keys(store.tokens).length === 0) {
132
- return clearAllCredentials();
133
- }
134
- writeCredentialsV2(store);
135
- return true;
136
- }
137
- export function clearAllCredentials() {
138
- const file = credentialsPath();
62
+ export function clearFolderToken(cwd = process.cwd()) {
63
+ const file = tokenFilePath(cwd);
139
64
  if (!fs.existsSync(file))
140
65
  return false;
141
66
  fs.unlinkSync(file);
142
67
  return true;
143
68
  }
144
- export function setDefaultProject(projectId) {
145
- const store = readCredentialsV2();
146
- if (!store)
147
- return false;
148
- const id = String(projectId);
149
- if (!store.tokens[id])
150
- return false;
151
- store.default = id;
152
- writeCredentialsV2(store);
153
- return true;
154
- }
155
- export function findTokenByNameOrId(nameOrId) {
156
- const store = readCredentialsV2();
157
- if (!store)
158
- return null;
159
- const needle = nameOrId.trim().toLowerCase();
160
- if (store.tokens[nameOrId.trim()]) {
161
- return { projectId: nameOrId.trim(), entry: store.tokens[nameOrId.trim()] };
162
- }
163
- const matches = Object.entries(store.tokens).filter(([id, e]) => id === nameOrId.trim() ||
164
- e.projectName.toLowerCase() === needle ||
165
- e.projectName.toLowerCase().includes(needle));
166
- if (matches.length === 1) {
167
- return { projectId: matches[0][0], entry: matches[0][1] };
168
- }
169
- return null;
170
- }
171
- /**
172
- * Selection: GETMYENV_TOKEN > linked projectId entry > default > single entry > v1.
173
- */
174
- export function resolveStoredToken(linkedProjectId) {
175
- const fromEnv = process.env.GETMYENV_TOKEN?.trim();
176
- if (fromEnv) {
177
- return { token: fromEnv, source: "env" };
178
- }
179
- const store = readCredentialsV2();
180
- if (store) {
181
- if (linkedProjectId != null) {
182
- const id = String(linkedProjectId);
183
- const entry = store.tokens[id];
184
- if (entry) {
185
- return {
186
- token: entry.token,
187
- apiUrl: entry.apiUrl,
188
- projectId: id,
189
- entry,
190
- source: "linked",
191
- };
192
- }
193
- }
194
- if (store.default != null) {
195
- const id = String(store.default);
196
- const entry = store.tokens[id];
197
- if (entry) {
198
- return {
199
- token: entry.token,
200
- apiUrl: entry.apiUrl,
201
- projectId: id,
202
- entry,
203
- source: "default",
204
- };
205
- }
206
- }
207
- const ids = Object.keys(store.tokens);
208
- if (ids.length === 1) {
209
- const id = ids[0];
210
- const entry = store.tokens[id];
211
- return {
212
- token: entry.token,
213
- apiUrl: entry.apiUrl,
214
- projectId: id,
215
- entry,
216
- source: "single",
217
- };
218
- }
219
- return null;
220
- }
221
- const v1 = readCredentialsV1();
222
- if (v1) {
223
- return { token: v1.token, apiUrl: v1.apiUrl, source: "v1" };
224
- }
225
- return null;
226
- }
227
- /**
228
- * Migrate a v1 credentials file into v2 using whoami metadata.
229
- * Returns the new store, or null if nothing to migrate / whoami failed.
230
- */
231
- export function migrateV1ToV2(meta) {
232
- const v1 = readCredentialsV1();
233
- if (!v1)
234
- return null;
235
- const id = String(meta.projectId);
236
- const store = {
237
- version: 2,
238
- tokens: {
239
- [id]: {
240
- token: v1.token,
241
- apiUrl: meta.apiUrl ?? v1.apiUrl,
242
- projectName: meta.projectName,
243
- cliScope: meta.cliScope,
244
- addedAt: new Date().toISOString(),
245
- },
246
- },
247
- default: id,
248
- };
249
- writeCredentialsV2(store);
250
- return store;
251
- }
252
- /** @deprecated Prefer resolveStoredToken / readCredentialsV2. */
253
- export function readCredentials() {
254
- const resolved = resolveStoredToken();
255
- if (!resolved)
256
- return null;
257
- return { token: resolved.token, apiUrl: resolved.apiUrl };
258
- }
259
- /** @deprecated Prefer upsertTokenEntry. */
260
- export function writeCredentials(creds) {
261
- const existing = readCredentialsV2();
262
- if (existing && Object.keys(existing.tokens).length > 0) {
263
- const id = String(existing.default ?? Object.keys(existing.tokens)[0] ?? "unknown");
264
- const prev = existing.tokens[id];
265
- return upsertTokenEntry(id, {
266
- token: creds.token,
267
- apiUrl: creds.apiUrl ?? prev?.apiUrl,
268
- projectName: prev?.projectName ?? id,
269
- cliScope: prev?.cliScope ?? "development",
270
- });
271
- }
272
- // Write a temporary v1-shaped file until whoami upgrades it.
273
- const file = credentialsPath();
274
- const payload = { token: creds.token.trim() };
275
- if (creds.apiUrl?.trim())
276
- payload.apiUrl = creds.apiUrl.trim();
277
- fs.writeFileSync(file, JSON.stringify(payload, null, 2) + "\n", {
278
- mode: 0o600,
279
- });
280
- return file;
281
- }
282
- export function clearCredentials() {
283
- return clearAllCredentials();
284
- }
285
69
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
package/dist/lib/fs.js CHANGED
@@ -156,8 +156,8 @@ export function requireLinkedProject(meta) {
156
156
  if (!meta?.projectId) {
157
157
  throw new Error([
158
158
  "No project is linked to this folder.",
159
- "Create a project at https://getmyenv.com/projects/new, create a CLI token,",
160
- "then: npx getmyenv token && npx getmyenv link",
159
+ "Run any verb (push / run) in a TTY and it will authorize + link on first use,",
160
+ "or run: npx getmyenv link",
161
161
  ].join("\n"));
162
162
  }
163
163
  }