@channelfactory/cliend 0.3.1 → 0.4.1

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,17 @@
1
+ export interface StoredSecrets {
2
+ anthropicApiKey?: string;
3
+ openaiApiKey?: string;
4
+ atlassianClientId?: string;
5
+ atlassianClientSecret?: string;
6
+ }
7
+ export declare class SecretsStore {
8
+ private readonly encryptedPath;
9
+ constructor();
10
+ getSecrets(): Promise<StoredSecrets | null>;
11
+ setSecrets(secrets: StoredSecrets): Promise<void>;
12
+ hasSecrets(): Promise<boolean>;
13
+ private getEncryptionKey;
14
+ private encrypt;
15
+ private decrypt;
16
+ }
17
+ //# sourceMappingURL=secrets-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-store.d.ts","sourceRoot":"","sources":["../../../src/auth/secrets-store.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;;IAMjC,UAAU,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAqB3C,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;CAWhB"}
@@ -0,0 +1,87 @@
1
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join, dirname } from 'node:path';
4
+ import { homedir } from 'node:os';
5
+ import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'node:crypto';
6
+ const SERVICE_NAME = 'cliend';
7
+ const ACCOUNT_NAME = 'api-secrets';
8
+ const ALGORITHM = 'aes-256-gcm';
9
+ export class SecretsStore {
10
+ encryptedPath;
11
+ constructor() {
12
+ this.encryptedPath = join(homedir(), '.cliend', 'secrets.enc');
13
+ }
14
+ async getSecrets() {
15
+ // Try keytar first (OS keychain)
16
+ try {
17
+ const keytar = await import('keytar');
18
+ const raw = await keytar.getPassword(SERVICE_NAME, ACCOUNT_NAME);
19
+ if (raw)
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ // keytar not available, fall through to encrypted file
24
+ }
25
+ // Fallback: encrypted file
26
+ if (!existsSync(this.encryptedPath))
27
+ return null;
28
+ try {
29
+ const encrypted = await readFile(this.encryptedPath, 'utf-8');
30
+ const decrypted = this.decrypt(encrypted);
31
+ return JSON.parse(decrypted);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ async setSecrets(secrets) {
38
+ const json = JSON.stringify(secrets);
39
+ // Try keytar first
40
+ try {
41
+ const keytar = await import('keytar');
42
+ await keytar.setPassword(SERVICE_NAME, ACCOUNT_NAME, json);
43
+ return;
44
+ }
45
+ catch {
46
+ // keytar not available, fall through
47
+ }
48
+ // Fallback: encrypted file
49
+ const dir = dirname(this.encryptedPath);
50
+ if (!existsSync(dir)) {
51
+ await mkdir(dir, { recursive: true });
52
+ }
53
+ const encrypted = this.encrypt(json);
54
+ await writeFile(this.encryptedPath, encrypted, 'utf-8');
55
+ }
56
+ async hasSecrets() {
57
+ const secrets = await this.getSecrets();
58
+ if (!secrets)
59
+ return false;
60
+ return !!(secrets.anthropicApiKey || secrets.openaiApiKey);
61
+ }
62
+ getEncryptionKey() {
63
+ const seed = `${homedir()}-${process.env.USER ?? 'cliend'}`;
64
+ return scryptSync(seed, 'cliend-salt', 32);
65
+ }
66
+ encrypt(plaintext) {
67
+ const key = this.getEncryptionKey();
68
+ const iv = randomBytes(16);
69
+ const cipher = createCipheriv(ALGORITHM, key, iv);
70
+ let encrypted = cipher.update(plaintext, 'utf-8', 'hex');
71
+ encrypted += cipher.final('hex');
72
+ const authTag = cipher.getAuthTag().toString('hex');
73
+ return `${iv.toString('hex')}:${authTag}:${encrypted}`;
74
+ }
75
+ decrypt(ciphertext) {
76
+ const [ivHex, authTagHex, encrypted] = ciphertext.split(':');
77
+ const key = this.getEncryptionKey();
78
+ const iv = Buffer.from(ivHex, 'hex');
79
+ const authTag = Buffer.from(authTagHex, 'hex');
80
+ const decipher = createDecipheriv(ALGORITHM, key, iv);
81
+ decipher.setAuthTag(authTag);
82
+ let decrypted = decipher.update(encrypted, 'hex', 'utf-8');
83
+ decrypted += decipher.final('utf-8');
84
+ return decrypted;
85
+ }
86
+ }
87
+ //# sourceMappingURL=secrets-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-store.js","sourceRoot":"","sources":["../../../src/auth/secrets-store.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class ConfigManager {
4
4
  private readonly projectConfigPath;
5
5
  constructor(projectDir?: string);
6
6
  load(): Promise<AppConfig>;
7
+ private readSecrets;
7
8
  private readEnv;
8
9
  private readJsonFile;
9
10
  private deepMerge;
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAE/B,UAAU,CAAC,EAAE,MAAM;IAKzB,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IAqBhC,OAAO,CAAC,OAAO;YAgDD,YAAY;IAU1B,OAAO,CAAC,SAAS;CAuBlB"}
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAE/B,UAAU,CAAC,EAAE,MAAM;IAKzB,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;YAuBlB,WAAW;IAmCzB,OAAO,CAAC,OAAO;YAgDD,YAAY;IAU1B,OAAO,CAAC,SAAS;CAuBlB"}
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { homedir } from 'node:os';
5
5
  import { appConfigSchema } from './config.schema.js';
6
6
  import { DEFAULT_CONFIG } from './defaults.js';
7
+ import { SecretsStore } from '../auth/secrets-store.js';
7
8
  export class ConfigManager {
8
9
  globalConfigPath;
9
10
  projectConfigPath;
@@ -14,15 +15,49 @@ export class ConfigManager {
14
15
  async load() {
15
16
  const globalOverrides = await this.readJsonFile(this.globalConfigPath);
16
17
  const projectOverrides = await this.readJsonFile(this.projectConfigPath);
18
+ const secretsOverrides = await this.readSecrets();
17
19
  const envOverrides = this.readEnv();
18
- // Merge layers: defaults < global < project < env
19
- const merged = this.deepMerge(DEFAULT_CONFIG, globalOverrides, projectOverrides, envOverrides);
20
+ // Merge layers: defaults < global < project < secrets < env
21
+ const merged = this.deepMerge(DEFAULT_CONFIG, globalOverrides, projectOverrides, secretsOverrides, envOverrides);
20
22
  const parsed = appConfigSchema.safeParse(merged);
21
23
  if (!parsed.success) {
22
24
  return merged;
23
25
  }
24
26
  return parsed.data;
25
27
  }
28
+ async readSecrets() {
29
+ try {
30
+ const store = new SecretsStore();
31
+ const secrets = await store.getSecrets();
32
+ if (!secrets)
33
+ return {};
34
+ const config = {};
35
+ if (secrets.anthropicApiKey) {
36
+ config.providers = {
37
+ ...(config.providers ?? {}),
38
+ claude: { apiKey: secrets.anthropicApiKey },
39
+ };
40
+ }
41
+ if (secrets.openaiApiKey) {
42
+ config.providers = {
43
+ ...(config.providers ?? {}),
44
+ codex: { apiKey: secrets.openaiApiKey },
45
+ chatgpt: { apiKey: secrets.openaiApiKey },
46
+ };
47
+ }
48
+ if (secrets.atlassianClientId || secrets.atlassianClientSecret) {
49
+ config.atlassian = {
50
+ ...(config.atlassian ?? {}),
51
+ ...(secrets.atlassianClientId ? { clientId: secrets.atlassianClientId } : {}),
52
+ ...(secrets.atlassianClientSecret ? { clientSecret: secrets.atlassianClientSecret } : {}),
53
+ };
54
+ }
55
+ return config;
56
+ }
57
+ catch {
58
+ return {};
59
+ }
60
+ }
26
61
  readEnv() {
27
62
  const env = process.env;
28
63
  const config = {};
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAc,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,MAAM,CAA0B;gBAGrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAG3B,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;YAsCT,WAAW;IA2FzB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;CAiBrB"}
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAc,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,MAAM,CAA0B;gBAGrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAG3B,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;YAsCT,WAAW;IA6FzB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;CAiBrB"}
@@ -83,7 +83,9 @@ Respond ONLY with valid JSON matching this schema:
83
83
  .map((block) => block.text)
84
84
  .join('');
85
85
  try {
86
- const parsed = JSON.parse(text);
86
+ // Strip markdown code fences if the model wraps JSON in them
87
+ const cleaned = text.replace(/^```(?:json)?\s*\n?/m, '').replace(/\n?```\s*$/m, '').trim();
88
+ const parsed = JSON.parse(cleaned);
87
89
  const scores = parsed.scores.map((s) => ({
88
90
  ...s,
89
91
  totalScore: this.computeTotal(s),
@@ -1 +1 @@
1
- {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAK1C,MAAM,OAAO,KAAK;IAIG;IACA;IACA;IALX,MAAM,GAAqB,IAAI,CAAC;IAExC,YACmB,MAAmB,EACnB,MAAc,EACd,MAAc;QAFd,WAAM,GAAN,MAAM,CAAa;QACnB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,QAAQ,CACZ,eAAuB,EACvB,SAA+B;QAE/B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QAElE,qCAAqC;QACrC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE;oBACN;wBACE,YAAY,EAAE,MAAM,CAAC,YAAY;wBACjC,WAAW,EAAE,CAAC;wBACd,WAAW,EAAE,CAAC;wBACd,SAAS,EAAE,CAAC;wBACZ,YAAY,EAAE,CAAC;wBACf,QAAQ,EAAE,CAAC;wBACX,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,4CAA4C;qBACxD;iBACF;gBACD,MAAM,EAAE,MAAM,CAAC,YAAY;gBAC3B,aAAa,EAAE,MAAM,CAAC,MAAO;gBAC7B,OAAO,EAAE,GAAG,MAAM,CAAC,YAAY,wCAAwC;aACxE,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBACjE,OAAO,EAAE,8CAA8C;aACxD,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,eAAuB,EACvB,SAA+B;QAE/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE9B,MAAM,YAAY,GAAG;;8BAEK,CAAC,CAAC,WAAW;8BACb,CAAC,CAAC,WAAW;4BACf,CAAC,CAAC,SAAS;+BACR,CAAC,CAAC,YAAY;2BAClB,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;EAgBnC,CAAC;QAEC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SACnD,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;aAC1B,MAAM,CAAC,CAAC,KAAK,EAAgC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACtE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAWhC,CAAC;YAEF,MAAM,MAAM,GAAiB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC;gBACJ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aACjC,CAAC,CAAC,CAAC;YAEJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC;YAE5E,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,UAAU;gBAClB,aAAa,EAAE,cAAc,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;gBACtE,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,gCAAgC,CAAC,CAAC;YAC/E,+CAA+C;YAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,QAAQ,CAAC,YAAY;gBAC7B,aAAa,EAAE,QAAQ,CAAC,MAAO;gBAC/B,OAAO,EAAE,wDAAwD;aAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,eAAuB,EACvB,SAA+B;QAE/B,MAAM,KAAK,GAAG,CAAC,YAAY,eAAe,IAAI,CAAC,CAAC;QAEhD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,YAAY,CAAC,MAMpB;QACC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;YACjC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;YAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;YAC9B,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;YACpC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC7B,EAAE,CACL,CAAC;IACJ,CAAC;CACF"}
package/dist/src/index.js CHANGED
@@ -6,7 +6,7 @@ import { createLogger } from './ui/logger.js';
6
6
  import { needsSetup, runSetupWizard } from './ui/setup-wizard.js';
7
7
  export async function main(argv) {
8
8
  // First-run setup wizard
9
- if (needsSetup()) {
9
+ if (await needsSetup()) {
10
10
  await runSetupWizard();
11
11
  }
12
12
  const logger = createLogger();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,yBAAyB;IACzB,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,MAAM;QACN,WAAW;QACX,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,yBAAyB;IACzB,IAAI,MAAM,UAAU,EAAE,EAAE,CAAC;QACvB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,MAAM;QACN,WAAW;QACX,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export declare function runSetupWizard(): Promise<void>;
2
- export declare function needsSetup(): boolean;
2
+ export declare function needsSetup(): Promise<boolean>;
3
3
  //# sourceMappingURL=setup-wizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../../src/ui/setup-wizard.ts"],"names":[],"mappings":"AAmEA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDpD;AAwCD,wBAAgB,UAAU,IAAI,OAAO,CAGpC"}
1
+ {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../../src/ui/setup-wizard.ts"],"names":[],"mappings":"AAoEA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4DpD;AAgCD,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnD"}
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { homedir } from 'node:os';
5
5
  import { existsSync } from 'node:fs';
6
6
  import chalk from 'chalk';
7
+ import { SecretsStore } from '../auth/secrets-store.js';
7
8
  function ask(rl, question, opts) {
8
9
  const defaultHint = opts?.defaultValue ? chalk.dim(` [${opts.defaultValue}]`) : '';
9
10
  const prefix = chalk.cyan(' ? ');
@@ -55,7 +56,7 @@ export async function runSetupWizard() {
55
56
  const configPath = join(configDir, 'config.json');
56
57
  console.log('');
57
58
  console.log(chalk.bold.cyan(' Welcome to cliend! Let\'s set you up.\n'));
58
- console.log(chalk.dim(' Your config will be saved to ~/.cliend/config.json'));
59
+ console.log(chalk.dim(' Secrets are encrypted locally (AES-256-GCM)'));
59
60
  console.log(chalk.dim(' You can re-run this anytime with /config setup\n'));
60
61
  const rl = readline.createInterface({
61
62
  input: process.stdin,
@@ -84,8 +85,18 @@ export async function runSetupWizard() {
84
85
  bitbucketRepoSlug,
85
86
  obsidianPath,
86
87
  };
88
+ // Save secrets to encrypted store
89
+ const secretsStore = new SecretsStore();
90
+ await secretsStore.setSecrets({
91
+ anthropicApiKey: answers.anthropicApiKey,
92
+ openaiApiKey: answers.openaiApiKey,
93
+ atlassianClientId: answers.atlassianClientId,
94
+ atlassianClientSecret: answers.atlassianClientSecret,
95
+ });
96
+ // Save non-secret config to config.json
87
97
  await saveConfig(configDir, configPath, answers);
88
98
  console.log('');
99
+ console.log(chalk.green(' ✓ Secrets encrypted and saved securely'));
89
100
  console.log(chalk.green(' ✓ Config saved to ~/.cliend/config.json'));
90
101
  console.log(chalk.dim(' Run /auth to connect your Atlassian account.\n'));
91
102
  }
@@ -109,17 +120,9 @@ async function saveConfig(configDir, configPath, answers) {
109
120
  // Ignore parse errors, start fresh
110
121
  }
111
122
  }
123
+ // Only non-secret values go into config.json
112
124
  const config = {
113
125
  ...existing,
114
- providers: {
115
- claude: { apiKey: answers.anthropicApiKey },
116
- codex: { apiKey: answers.openaiApiKey },
117
- chatgpt: { apiKey: answers.openaiApiKey },
118
- },
119
- atlassian: {
120
- clientId: answers.atlassianClientId,
121
- clientSecret: answers.atlassianClientSecret,
122
- },
123
126
  bitbucket: {
124
127
  workspace: answers.bitbucketWorkspace,
125
128
  repoSlug: answers.bitbucketRepoSlug,
@@ -128,8 +131,8 @@ async function saveConfig(configDir, configPath, answers) {
128
131
  };
129
132
  await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
130
133
  }
131
- export function needsSetup() {
132
- const configPath = join(homedir(), '.cliend', 'config.json');
133
- return !existsSync(configPath);
134
+ export async function needsSetup() {
135
+ const secretsStore = new SecretsStore();
136
+ return !(await secretsStore.hasSecrets());
134
137
  }
135
138
  //# sourceMappingURL=setup-wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/ui/setup-wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/ui/setup-wizard.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import { basename } from 'node:path';
3
3
  export function showWelcome(projectDir) {
4
- const version = '0.3.1';
4
+ const version = '0.4.1';
5
5
  const project = basename(projectDir);
6
6
  console.log('');
7
7
  console.log(chalk.cyan(' ╭──────────────────────────────────────────╮'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channelfactory/cliend",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "Internal CLI tool",
5
5
  "private-note": "Unlisted — do not add keywords for discoverability",
6
6
  "type": "module",