@tinyrack/devsync 1.5.0 → 1.6.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.
package/README.md CHANGED
@@ -71,6 +71,12 @@ Initialize a local sync repository:
71
71
  devsync init
72
72
  ```
73
73
 
74
+ Provide an existing age private key during setup:
75
+
76
+ ```bash
77
+ devsync init --key AGE-SECRET-KEY-...
78
+ ```
79
+
74
80
  Track a few configs:
75
81
 
76
82
  ```bash
@@ -115,6 +121,7 @@ Notes:
115
121
  - `push` updates the sync repository contents only; it does not create git commits or push to a remote.
116
122
  - `pull` updates local files only.
117
123
  - Secret paths are stored encrypted in the repository and require the configured `age` identity to decrypt on restore.
124
+ - `init` prompts for an age private key when `--key` is omitted. Submit an empty response to generate a new identity automatically.
118
125
 
119
126
  ## 4. Detailed docs
120
127
 
@@ -9,6 +9,7 @@ export default class SyncInit extends BaseCommand {
9
9
  static flags: {
10
10
  identity: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  recipient: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ key: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
13
  };
13
14
  run(): Promise<void>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,OAAuB,OAAO,SAA8C;IAE5E,OAAuB,WAAW,SAC8N;IAEhQ,OAAuB,QAAQ,WAI7B;IAEF,OAAuB,IAAI;;MAKzB;IAEF,OAAuB,KAAK;;;MAc1B;IAEoB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB3C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,OAAuB,OAAO,SAA8C;IAE5E,OAAuB,WAAW,SAC8N;IAEhQ,OAAuB,QAAQ,WAK7B;IAEF,OAAuB,IAAI;;MAKzB;IAEF,OAAuB,KAAK;;;;MAoB1B;IAEoB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsC3C"}
@@ -1,13 +1,17 @@
1
1
  import { Args, Flags } from "@oclif/core";
2
2
  import { BaseCommand } from "#app/cli/base-command.js";
3
+ import { promptForSecret } from "#app/cli/prompt.js";
4
+ import { resolveConfiguredAbsolutePath } from "#app/config/xdg.js";
3
5
  import { formatSyncInitResult } from "#app/lib/output.js";
4
- import { initializeSync } from "#app/services/init.js";
6
+ import { pathExists } from "#app/services/filesystem.js";
7
+ import { defaultSyncIdentityFile, initializeSync } from "#app/services/init.js";
5
8
  export default class SyncInit extends BaseCommand {
6
9
  static summary = "Initialize the git-backed sync directory";
7
10
  static description = "Create or connect the local devsync repository under your XDG config directory, then store the sync settings used by later pull and push operations. If you omit the repository argument, devsync initializes a local git repository in the sync directory.";
8
11
  static examples = [
9
12
  "<%= config.bin %> <%= command.id %>",
10
13
  "<%= config.bin %> <%= command.id %> https://example.com/my-sync-repo.git",
14
+ '<%= config.bin %> <%= command.id %> --key "AGE-SECRET-KEY-..."',
11
15
  '<%= config.bin %> <%= command.id %> --identity "$XDG_CONFIG_HOME/devsync/age/keys.txt" --recipient age1...',
12
16
  ];
13
17
  static args = {
@@ -28,10 +32,29 @@ export default class SyncInit extends BaseCommand {
28
32
  description: "Add an age recipient public key to manifest.json. Repeat this flag to encrypt secrets for multiple recipients during push operations.",
29
33
  multiple: true,
30
34
  }),
35
+ key: Flags.string({
36
+ helpValue: "age-private-key",
37
+ summary: "Persist an age private key into the identity file",
38
+ description: "Validate the provided age private key, write it to the configured identity file, and derive its recipient automatically.",
39
+ }),
31
40
  };
32
41
  async run() {
33
42
  const { args, flags } = await this.parse(SyncInit);
43
+ const requestedKey = flags.key?.trim();
44
+ const configuredIdentityFile = flags.identity?.trim() || defaultSyncIdentityFile;
45
+ const identityFile = resolveConfiguredAbsolutePath(configuredIdentityFile, process.env);
46
+ const shouldPrompt = requestedKey === undefined && !(await pathExists(identityFile));
47
+ const promptedKey = shouldPrompt
48
+ ? await promptForSecret("Enter an age private key (leave empty to generate a new one): ")
49
+ : undefined;
50
+ const trimmedPromptedKey = promptedKey?.trim();
34
51
  const output = formatSyncInitResult(await initializeSync({
52
+ ageIdentity: requestedKey !== undefined
53
+ ? requestedKey
54
+ : trimmedPromptedKey !== undefined && trimmedPromptedKey !== ""
55
+ ? trimmedPromptedKey
56
+ : undefined,
57
+ generateAgeIdentity: shouldPrompt && trimmedPromptedKey === "",
35
58
  identityFile: flags.identity,
36
59
  recipients: flags.recipient ?? [],
37
60
  repository: args.repository,
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IACxC,MAAM,CAAU,OAAO,GAAG,0CAA0C,CAAC;IAErE,MAAM,CAAU,WAAW,GAChC,6PAA6P,CAAC;IAEzP,MAAM,CAAU,QAAQ,GAAG;QAChC,qCAAqC;QACrC,0EAA0E;QAC1E,4GAA4G;KAC7G,CAAC;IAEK,MAAM,CAAU,IAAI,GAAG;QAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEK,MAAM,CAAU,KAAK,GAAG;QAC7B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EACT,gJAAgJ;SACnJ,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,qCAAqC;YAC9C,WAAW,EACT,uIAAuI;YACzI,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEc,KAAK,CAAC,GAAG;QACvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,oBAAoB,CACjC,MAAM,cAAc,CAClB;YACE,YAAY,EAAE,KAAK,CAAC,QAAQ;YAC5B,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,EACD,OAAO,CAAC,GAAG,CACZ,EACD,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAC3B,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const promptForSecret: (message: string) => Promise<string>;
2
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM,oBAoEpD,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { emitKeypressEvents } from "node:readline";
2
+ const readPipedSecret = async () => {
3
+ let buffer = "";
4
+ process.stdin.setEncoding("utf8");
5
+ for await (const chunk of process.stdin) {
6
+ buffer += chunk;
7
+ }
8
+ return buffer.replace(/\r?\n$/, "");
9
+ };
10
+ export const promptForSecret = async (message) => {
11
+ if (!process.stdin.isTTY || !process.stderr.isTTY) {
12
+ return await readPipedSecret();
13
+ }
14
+ const stdin = process.stdin;
15
+ const stderr = process.stderr;
16
+ const previousRawMode = stdin.isRaw ?? false;
17
+ let value = "";
18
+ emitKeypressEvents(stdin);
19
+ stdin.setEncoding("utf8");
20
+ stdin.setRawMode(true);
21
+ stdin.resume();
22
+ stderr.write(message);
23
+ return await new Promise((resolve, reject) => {
24
+ const cancelError = new Error("Age key prompt cancelled.");
25
+ const cleanup = () => {
26
+ stdin.removeListener("keypress", onKeypress);
27
+ stdin.setRawMode(previousRawMode);
28
+ stdin.pause();
29
+ stderr.write("\n");
30
+ };
31
+ const onKeypress = (character, key) => {
32
+ if (character === "\u0003" || character === "\u0004") {
33
+ cleanup();
34
+ reject(cancelError);
35
+ return;
36
+ }
37
+ if (key.name === "escape" ||
38
+ key.name === "tab" ||
39
+ key.name === "delete" ||
40
+ key.name === "up" ||
41
+ key.name === "down" ||
42
+ key.name === "left" ||
43
+ key.name === "right") {
44
+ return;
45
+ }
46
+ if (key.name === "return" || key.name === "enter") {
47
+ cleanup();
48
+ resolve(value);
49
+ return;
50
+ }
51
+ if (key.name === "backspace") {
52
+ if (value.length > 0) {
53
+ value = value.slice(0, -1);
54
+ stderr.write("\b \b");
55
+ }
56
+ return;
57
+ }
58
+ if (character >= " " && character !== "\u007f") {
59
+ value += character;
60
+ stderr.write("*");
61
+ }
62
+ };
63
+ stdin.on("keypress", onKeypress);
64
+ });
65
+ };
66
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,17 @@
1
+ export declare const resolveAgeIdentity: (identity: string) => Promise<{
2
+ identity: string;
3
+ recipient: string;
4
+ }>;
1
5
  export declare const readAgeIdentityLines: (identityFile: string) => Promise<string[]>;
2
6
  export declare const readAgeRecipientsFromIdentityFile: (identityFile: string) => Promise<string[]>;
3
7
  export declare const createAgeIdentityFile: (identityFile: string) => Promise<{
4
8
  identity: string;
5
9
  recipient: string;
6
10
  }>;
11
+ export declare const writeAgeIdentityFile: (identityFile: string, identity: string) => Promise<{
12
+ identity: string;
13
+ recipient: string;
14
+ }>;
7
15
  export declare const encryptSecretFile: (contents: Uint8Array, recipients: readonly string[]) => Promise<string>;
8
16
  export declare const decryptSecretFile: (armoredCiphertext: string, identityFile: string) => Promise<Uint8Array<ArrayBufferLike>>;
9
17
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,GAAU,cAAc,MAAM,sBAqB9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,cAAc,MAAM,sBAwBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,MAAM;;;EAW/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,UAAU,EACpB,YAAY,SAAS,MAAM,EAAE,oBAW9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,MAAM,EACzB,cAAc,MAAM,yCAkBrB,CAAC"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,kBAAkB,GAAU,UAAU,MAAM;;;EAqBxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,cAAc,MAAM,sBAqB9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,cAAc,MAAM,sBAwBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,MAAM;;;EAW/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,cAAc,MAAM,EACpB,UAAU,MAAM;;;EAYjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,UAAU,EACpB,YAAY,SAAS,MAAM,EAAE,oBAW9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,MAAM,EACzB,cAAc,MAAM,yCAkBrB,CAAC"}
@@ -3,6 +3,27 @@ import { dirname } from "node:path";
3
3
  import { armor, Decrypter, Encrypter, generateIdentity, identityToRecipient, } from "age-encryption";
4
4
  import { ensureTrailingNewline } from "#app/lib/string.js";
5
5
  import { DevsyncError, wrapUnknownError } from "#app/services/error.js";
6
+ export const resolveAgeIdentity = async (identity) => {
7
+ const normalizedIdentity = identity.trim();
8
+ if (normalizedIdentity === "") {
9
+ throw new DevsyncError("Age private key cannot be empty.", {
10
+ code: "AGE_IDENTITY_INVALID",
11
+ hint: "Provide a valid age private key starting with 'AGE-SECRET-KEY-'.",
12
+ });
13
+ }
14
+ try {
15
+ return {
16
+ identity: normalizedIdentity,
17
+ recipient: await identityToRecipient(normalizedIdentity),
18
+ };
19
+ }
20
+ catch (error) {
21
+ throw wrapUnknownError("Invalid age private key.", error, {
22
+ code: "AGE_IDENTITY_INVALID",
23
+ hint: "Provide a valid age private key starting with 'AGE-SECRET-KEY-'.",
24
+ });
25
+ }
26
+ };
6
27
  export const readAgeIdentityLines = async (identityFile) => {
7
28
  const contents = await readFile(identityFile, "utf8");
8
29
  const identities = contents
@@ -47,6 +68,12 @@ export const createAgeIdentityFile = async (identityFile) => {
47
68
  recipient,
48
69
  };
49
70
  };
71
+ export const writeAgeIdentityFile = async (identityFile, identity) => {
72
+ const resolvedIdentity = await resolveAgeIdentity(identity);
73
+ await mkdir(dirname(identityFile), { recursive: true });
74
+ await writeFile(identityFile, ensureTrailingNewline(resolvedIdentity.identity), "utf8");
75
+ return resolvedIdentity;
76
+ };
50
77
  export const encryptSecretFile = async (contents, recipients) => {
51
78
  const encrypter = new Encrypter();
52
79
  for (const recipient of recipients) {
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export type SyncInitRequest = Readonly<{
2
+ ageIdentity?: string;
3
+ generateAgeIdentity?: boolean;
2
4
  identityFile?: string;
3
5
  recipients: readonly string[];
4
6
  repository?: string;
@@ -14,5 +16,6 @@ export type SyncInitResult = Readonly<{
14
16
  recipientCount: number;
15
17
  syncDirectory: string;
16
18
  }>;
19
+ export declare const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
17
20
  export declare const initializeSync: (request: SyncInitRequest, environment: NodeJS.ProcessEnv) => Promise<SyncInitResult>;
18
21
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAqJH,eAAO,MAAM,cAAc,GACzB,SAAS,eAAe,EACxB,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,cAAc,CAoIxB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAiCA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AA0K/E,eAAO,MAAM,cAAc,GACzB,SAAS,eAAe,EACxB,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,cAAc,CAoIxB,CAAC"}
@@ -3,12 +3,12 @@ import { dirname } from "node:path";
3
3
  import { formatGlobalDevsyncConfig, readGlobalDevsyncConfig, resolveConfiguredIdentityFile, } from "#app/config/global-config.js";
4
4
  import { createInitialSyncConfig, formatSyncConfig, parseSyncConfig, readSyncConfig, resolveSyncArtifactsDirectoryPath, } from "#app/config/sync.js";
5
5
  import { resolveConfiguredAbsolutePath } from "#app/config/xdg.js";
6
- import { createAgeIdentityFile, readAgeRecipientsFromIdentityFile, } from "./crypto.js";
6
+ import { createAgeIdentityFile, readAgeRecipientsFromIdentityFile, writeAgeIdentityFile, } from "./crypto.js";
7
7
  import { DevsyncError, wrapUnknownError } from "./error.js";
8
8
  import { pathExists, writeTextFileAtomically } from "./filesystem.js";
9
9
  import { ensureRepository, initializeRepository } from "./git.js";
10
10
  import { ensureSyncRepository, resolveAgeFromSyncConfig, resolveSyncPaths, } from "./runtime.js";
11
- const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
11
+ export const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
12
12
  const normalizeRecipients = (recipients) => {
13
13
  return [
14
14
  ...new Set(recipients.map((recipient) => recipient.trim()).filter(Boolean)),
@@ -20,6 +20,14 @@ const resolveInitAgeBootstrap = async (request, environment) => {
20
20
  const configuredIdentityFile = request.identityFile?.trim() || defaultSyncIdentityFile;
21
21
  const identityFile = resolveConfiguredAbsolutePath(configuredIdentityFile, environment);
22
22
  const explicitRecipients = normalizeRecipients(request.recipients);
23
+ if (request.ageIdentity !== undefined) {
24
+ const { recipient } = await writeAgeIdentityFile(identityFile, request.ageIdentity);
25
+ return {
26
+ configuredIdentityFile,
27
+ generatedIdentity: false,
28
+ recipients: normalizeRecipients([...explicitRecipients, recipient]),
29
+ };
30
+ }
23
31
  if (explicitRecipients.length === 0) {
24
32
  if (await pathExists(identityFile)) {
25
33
  return {
@@ -35,6 +43,14 @@ const resolveInitAgeBootstrap = async (request, environment) => {
35
43
  recipients: [recipient],
36
44
  };
37
45
  }
46
+ if (request.generateAgeIdentity === true) {
47
+ const { recipient } = await createAgeIdentityFile(identityFile);
48
+ return {
49
+ configuredIdentityFile,
50
+ generatedIdentity: true,
51
+ recipients: normalizeRecipients([...explicitRecipients, recipient]),
52
+ };
53
+ }
38
54
  if (await pathExists(identityFile)) {
39
55
  return {
40
56
  configuredIdentityFile,
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinyrack/devsync",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "A personal CLI tool for git-backed configuration sync.",
5
5
  "type": "module",
6
6
  "license": "MIT",