@bretwardjames/ghp-cli 0.1.6 → 0.1.8

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/dist/config.d.ts CHANGED
@@ -24,22 +24,95 @@ export interface Config {
24
24
  [name: string]: PlanShortcut;
25
25
  };
26
26
  }
27
+ /**
28
+ * Get the workspace config file path (in repo root)
29
+ */
30
+ export declare function getWorkspaceConfigPath(): string | null;
31
+ /**
32
+ * Load merged config: defaults → workspace → user
33
+ * User settings override workspace, workspace overrides defaults
34
+ */
27
35
  export declare function loadConfig(): Config;
28
- export declare function saveConfig(config: Partial<Config>): void;
36
+ export type ConfigScope = 'user' | 'workspace';
37
+ /**
38
+ * Save config to the specified scope
39
+ * @param config The config values to save
40
+ * @param scope 'user' (default) or 'workspace'
41
+ */
42
+ export declare function saveConfig(config: Partial<Config>, scope?: ConfigScope): void;
29
43
  export declare function getConfig<K extends keyof Config>(key: K): Config[K];
30
- export declare function setConfig<K extends keyof Config>(key: K, value: Config[K]): void;
44
+ export declare function setConfig<K extends keyof Config>(key: K, value: Config[K], scope?: ConfigScope): void;
31
45
  export declare function getShortcut(name: string): PlanShortcut | undefined;
32
46
  export declare function setShortcut(name: string, shortcut: PlanShortcut): void;
33
47
  export declare function deleteShortcut(name: string): void;
34
48
  export declare function listShortcuts(): Record<string, PlanShortcut>;
35
49
  export declare function getPlanDefaults(): PlanShortcut;
36
50
  export declare function setPlanDefaults(defaults: PlanShortcut): void;
37
- export declare function getConfigPath(): string;
51
+ export declare function getConfigPath(scope?: ConfigScope): string;
52
+ export declare function getUserConfigPath(): string;
38
53
  export declare function getAddIssueDefaults(): {
39
54
  template?: string;
40
55
  project?: string;
41
56
  status?: string;
42
57
  };
43
- export declare const CONFIG_KEYS: readonly ["mainBranch", "branchPattern", "startWorkingStatus", "doneStatus"];
58
+ export declare const CONFIG_KEYS: readonly ["mainBranch", "branchPattern", "startWorkingStatus", "doneStatus", "columns"];
59
+ export type ConfigSource = 'default' | 'workspace' | 'user';
60
+ export interface ConfigValueWithSource {
61
+ value: string | undefined;
62
+ source: ConfigSource;
63
+ }
44
64
  export declare function listConfig(): Record<string, string | undefined>;
65
+ /**
66
+ * List simple config values with their source (default, workspace, or user)
67
+ */
68
+ export declare function listConfigWithSources(): Record<string, ConfigValueWithSource>;
69
+ export interface FullConfigWithSources {
70
+ settings: Record<string, ConfigValueWithSource>;
71
+ defaults: {
72
+ plan: {
73
+ value: PlanShortcut;
74
+ source: ConfigSource;
75
+ };
76
+ addIssue: {
77
+ value: {
78
+ template?: string;
79
+ project?: string;
80
+ status?: string;
81
+ };
82
+ source: ConfigSource;
83
+ };
84
+ };
85
+ shortcuts: Record<string, {
86
+ value: PlanShortcut;
87
+ source: ConfigSource;
88
+ }>;
89
+ }
90
+ /**
91
+ * Get full config with sources for all sections
92
+ */
93
+ export declare function getFullConfigWithSources(): FullConfigWithSources;
94
+ export interface VSCodeSettingsResult {
95
+ workspace: Record<string, unknown>;
96
+ user: Record<string, unknown>;
97
+ errors: string[];
98
+ }
99
+ export interface SyncResult {
100
+ synced: Array<{
101
+ key: string;
102
+ value: string;
103
+ source: 'workspace' | 'user';
104
+ }>;
105
+ skipped: string[];
106
+ errors: string[];
107
+ editor: string;
108
+ }
109
+ /**
110
+ * Sync VS Code/Cursor settings to CLI config
111
+ */
112
+ export declare function syncFromVSCode(targetScope?: ConfigScope): SyncResult;
113
+ export declare function getVSCodeSettingsPaths(): {
114
+ workspace: string | null;
115
+ cursorUser: string;
116
+ codeUser: string;
117
+ };
45
118
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IAEnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,QAAQ,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACL,CAAC;IAGF,SAAS,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;KAChC,CAAC;CACL;AAWD,wBAAgB,UAAU,IAAI,MAAM,CAUnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CASxD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAGnE;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAItE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAG5D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAK5D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,mBAAmB,IAAI;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAG9F;AAED,eAAO,MAAM,WAAW,8EAA+E,CAAC;AAExG,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAQ/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IAEnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,QAAQ,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACL,CAAC;IAGF,SAAS,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;KAChC,CAAC;CACL;AAsBD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAItD;AA8DD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAOnC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,GAAE,WAAoB,GAAG,IAAI,CA2BrF;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAGnE;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,WAAoB,GAAG,IAAI,CAE7G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAItE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAG5D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAK5D;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAMzD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,mBAAmB,IAAI;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAG9F;AAED,eAAO,MAAM,WAAW,yFAA0F,CAAC;AAEnH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;CACxB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAQ/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAiB7E;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAChD,QAAQ,EAAE;QACN,IAAI,EAAE;YAAE,KAAK,EAAE,YAAY,CAAC;YAAC,MAAM,EAAE,YAAY,CAAA;SAAE,CAAC;QACpD,QAAQ,EAAE;YAAE,KAAK,EAAE;gBAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,MAAM,EAAE,YAAY,CAAA;SAAE,CAAC;KACvG,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAkDhE;AAuFD,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAuDD,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,GAAE,WAAoB,GAAG,UAAU,CA8D5E;AAED,wBAAgB,sBAAsB,IAAI;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAM3G"}
package/dist/config.js CHANGED
@@ -1,8 +1,13 @@
1
1
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
- import { homedir } from 'os';
2
+ import { homedir, platform } from 'os';
3
3
  import { join } from 'path';
4
- const CONFIG_DIR = join(homedir(), '.config', 'ghp-cli');
5
- const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
4
+ import { execSync } from 'child_process';
5
+ // User config (personal overrides)
6
+ const USER_CONFIG_DIR = join(homedir(), '.config', 'ghp-cli');
7
+ const USER_CONFIG_FILE = join(USER_CONFIG_DIR, 'config.json');
8
+ // Workspace config filename (in repo root)
9
+ const WORKSPACE_CONFIG_DIR = '.ghp';
10
+ const WORKSPACE_CONFIG_FILE = 'config.json';
6
11
  const DEFAULT_CONFIG = {
7
12
  mainBranch: 'main',
8
13
  branchPattern: '{user}/{number}-{title}',
@@ -11,32 +16,132 @@ const DEFAULT_CONFIG = {
11
16
  defaults: {},
12
17
  shortcuts: {},
13
18
  };
14
- export function loadConfig() {
19
+ /**
20
+ * Get the git repository root directory
21
+ */
22
+ function getRepoRoot() {
23
+ try {
24
+ return execSync('git rev-parse --show-toplevel', { encoding: 'utf-8' }).trim();
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Get the workspace config file path (in repo root)
32
+ */
33
+ export function getWorkspaceConfigPath() {
34
+ const repoRoot = getRepoRoot();
35
+ if (!repoRoot)
36
+ return null;
37
+ return join(repoRoot, WORKSPACE_CONFIG_DIR, WORKSPACE_CONFIG_FILE);
38
+ }
39
+ /**
40
+ * Load workspace config from .ghp/config.json in repo root
41
+ */
42
+ function loadWorkspaceConfig() {
43
+ const configPath = getWorkspaceConfigPath();
44
+ if (!configPath)
45
+ return {};
15
46
  try {
16
- if (existsSync(CONFIG_FILE)) {
17
- const data = readFileSync(CONFIG_FILE, 'utf-8');
18
- return { ...DEFAULT_CONFIG, ...JSON.parse(data) };
47
+ if (existsSync(configPath)) {
48
+ const data = readFileSync(configPath, 'utf-8');
49
+ return JSON.parse(data);
19
50
  }
20
51
  }
21
52
  catch {
22
- // Ignore errors, use defaults
53
+ // Ignore errors
23
54
  }
24
- return { ...DEFAULT_CONFIG };
55
+ return {};
25
56
  }
26
- export function saveConfig(config) {
27
- const current = loadConfig();
28
- const merged = { ...current, ...config };
29
- if (!existsSync(CONFIG_DIR)) {
30
- mkdirSync(CONFIG_DIR, { recursive: true });
57
+ /**
58
+ * Load user config from ~/.config/ghp-cli/config.json
59
+ */
60
+ function loadUserConfig() {
61
+ try {
62
+ if (existsSync(USER_CONFIG_FILE)) {
63
+ const data = readFileSync(USER_CONFIG_FILE, 'utf-8');
64
+ return JSON.parse(data);
65
+ }
66
+ }
67
+ catch {
68
+ // Ignore errors
69
+ }
70
+ return {};
71
+ }
72
+ /**
73
+ * Deep merge two config objects (right overwrites left, but nested objects are merged)
74
+ */
75
+ function deepMerge(base, override) {
76
+ const result = { ...base };
77
+ for (const [key, overrideValue] of Object.entries(override)) {
78
+ if (overrideValue === undefined)
79
+ continue;
80
+ const baseValue = result[key];
81
+ if (typeof overrideValue === 'object' &&
82
+ overrideValue !== null &&
83
+ !Array.isArray(overrideValue) &&
84
+ typeof baseValue === 'object' &&
85
+ baseValue !== null &&
86
+ !Array.isArray(baseValue)) {
87
+ // Deep merge nested objects (defaults, shortcuts)
88
+ result[key] = { ...baseValue, ...overrideValue };
89
+ }
90
+ else {
91
+ // Direct override for primitives and arrays
92
+ result[key] = overrideValue;
93
+ }
94
+ }
95
+ return result;
96
+ }
97
+ /**
98
+ * Load merged config: defaults → workspace → user
99
+ * User settings override workspace, workspace overrides defaults
100
+ */
101
+ export function loadConfig() {
102
+ const workspaceConfig = loadWorkspaceConfig();
103
+ const userConfig = loadUserConfig();
104
+ // Merge: defaults → workspace → user
105
+ const merged = deepMerge(deepMerge(DEFAULT_CONFIG, workspaceConfig), userConfig);
106
+ return merged;
107
+ }
108
+ /**
109
+ * Save config to the specified scope
110
+ * @param config The config values to save
111
+ * @param scope 'user' (default) or 'workspace'
112
+ */
113
+ export function saveConfig(config, scope = 'user') {
114
+ if (scope === 'workspace') {
115
+ const repoRoot = getRepoRoot();
116
+ if (!repoRoot) {
117
+ throw new Error('Not in a git repository');
118
+ }
119
+ const configDir = join(repoRoot, WORKSPACE_CONFIG_DIR);
120
+ const configPath = join(configDir, WORKSPACE_CONFIG_FILE);
121
+ // Load existing workspace config and merge
122
+ const existing = loadWorkspaceConfig();
123
+ const merged = deepMerge(existing, config);
124
+ if (!existsSync(configDir)) {
125
+ mkdirSync(configDir, { recursive: true });
126
+ }
127
+ writeFileSync(configPath, JSON.stringify(merged, null, 2));
128
+ }
129
+ else {
130
+ // User config
131
+ const existing = loadUserConfig();
132
+ const merged = deepMerge(existing, config);
133
+ if (!existsSync(USER_CONFIG_DIR)) {
134
+ mkdirSync(USER_CONFIG_DIR, { recursive: true });
135
+ }
136
+ writeFileSync(USER_CONFIG_FILE, JSON.stringify(merged, null, 2));
31
137
  }
32
- writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2));
33
138
  }
34
139
  export function getConfig(key) {
35
140
  const config = loadConfig();
36
141
  return config[key];
37
142
  }
38
- export function setConfig(key, value) {
39
- saveConfig({ [key]: value });
143
+ export function setConfig(key, value, scope = 'user') {
144
+ saveConfig({ [key]: value }, scope);
40
145
  }
41
146
  export function getShortcut(name) {
42
147
  const config = loadConfig();
@@ -68,14 +173,21 @@ export function setPlanDefaults(defaults) {
68
173
  defaults: { ...config.defaults, plan: defaults }
69
174
  });
70
175
  }
71
- export function getConfigPath() {
72
- return CONFIG_FILE;
176
+ export function getConfigPath(scope) {
177
+ if (scope === 'workspace') {
178
+ const path = getWorkspaceConfigPath();
179
+ return path || '(not in a git repository)';
180
+ }
181
+ return USER_CONFIG_FILE;
182
+ }
183
+ export function getUserConfigPath() {
184
+ return USER_CONFIG_FILE;
73
185
  }
74
186
  export function getAddIssueDefaults() {
75
187
  const config = loadConfig();
76
188
  return config.defaults?.addIssue || {};
77
189
  }
78
- export const CONFIG_KEYS = ['mainBranch', 'branchPattern', 'startWorkingStatus', 'doneStatus'];
190
+ export const CONFIG_KEYS = ['mainBranch', 'branchPattern', 'startWorkingStatus', 'doneStatus', 'columns'];
79
191
  export function listConfig() {
80
192
  const config = loadConfig();
81
193
  return {
@@ -85,4 +197,268 @@ export function listConfig() {
85
197
  doneStatus: config.doneStatus,
86
198
  };
87
199
  }
200
+ /**
201
+ * List simple config values with their source (default, workspace, or user)
202
+ */
203
+ export function listConfigWithSources() {
204
+ const userConfig = loadUserConfig();
205
+ const workspaceConfig = loadWorkspaceConfig();
206
+ const result = {};
207
+ for (const key of CONFIG_KEYS) {
208
+ if (userConfig[key] !== undefined) {
209
+ result[key] = { value: userConfig[key], source: 'user' };
210
+ }
211
+ else if (workspaceConfig[key] !== undefined) {
212
+ result[key] = { value: workspaceConfig[key], source: 'workspace' };
213
+ }
214
+ else {
215
+ result[key] = { value: DEFAULT_CONFIG[key], source: 'default' };
216
+ }
217
+ }
218
+ return result;
219
+ }
220
+ /**
221
+ * Get full config with sources for all sections
222
+ */
223
+ export function getFullConfigWithSources() {
224
+ const userConfig = loadUserConfig();
225
+ const workspaceConfig = loadWorkspaceConfig();
226
+ const mergedConfig = loadConfig();
227
+ // Simple settings
228
+ const settings = {};
229
+ for (const key of CONFIG_KEYS) {
230
+ if (userConfig[key] !== undefined) {
231
+ settings[key] = { value: userConfig[key], source: 'user' };
232
+ }
233
+ else if (workspaceConfig[key] !== undefined) {
234
+ settings[key] = { value: workspaceConfig[key], source: 'workspace' };
235
+ }
236
+ else {
237
+ settings[key] = { value: DEFAULT_CONFIG[key], source: 'default' };
238
+ }
239
+ }
240
+ // Defaults - plan
241
+ let planSource = 'default';
242
+ if (userConfig.defaults?.plan)
243
+ planSource = 'user';
244
+ else if (workspaceConfig.defaults?.plan)
245
+ planSource = 'workspace';
246
+ // Defaults - addIssue
247
+ let addIssueSource = 'default';
248
+ if (userConfig.defaults?.addIssue)
249
+ addIssueSource = 'user';
250
+ else if (workspaceConfig.defaults?.addIssue)
251
+ addIssueSource = 'workspace';
252
+ // Shortcuts - track source per shortcut
253
+ const shortcuts = {};
254
+ const allShortcutNames = new Set([
255
+ ...Object.keys(workspaceConfig.shortcuts || {}),
256
+ ...Object.keys(userConfig.shortcuts || {}),
257
+ ]);
258
+ for (const name of allShortcutNames) {
259
+ // User overrides workspace
260
+ if (userConfig.shortcuts?.[name]) {
261
+ shortcuts[name] = { value: userConfig.shortcuts[name], source: 'user' };
262
+ }
263
+ else if (workspaceConfig.shortcuts?.[name]) {
264
+ shortcuts[name] = { value: workspaceConfig.shortcuts[name], source: 'workspace' };
265
+ }
266
+ }
267
+ return {
268
+ settings,
269
+ defaults: {
270
+ plan: { value: mergedConfig.defaults?.plan || {}, source: planSource },
271
+ addIssue: { value: mergedConfig.defaults?.addIssue || {}, source: addIssueSource },
272
+ },
273
+ shortcuts,
274
+ };
275
+ }
276
+ // VS Code / Cursor settings paths
277
+ function getVSCodeUserSettingsPath(editor = 'code') {
278
+ const home = homedir();
279
+ const appName = editor === 'cursor' ? 'Cursor' : 'Code';
280
+ switch (platform()) {
281
+ case 'darwin':
282
+ return join(home, 'Library', 'Application Support', appName, 'User', 'settings.json');
283
+ case 'win32':
284
+ return join(process.env.APPDATA || join(home, 'AppData', 'Roaming'), appName, 'User', 'settings.json');
285
+ default: // linux
286
+ return join(home, '.config', appName, 'User', 'settings.json');
287
+ }
288
+ }
289
+ function getVSCodeWorkspaceSettingsPath() {
290
+ const repoRoot = getRepoRoot();
291
+ if (!repoRoot)
292
+ return null;
293
+ return join(repoRoot, '.vscode', 'settings.json');
294
+ }
295
+ /**
296
+ * Strip JSON comments (single-line // and multi-line) to parse JSONC
297
+ */
298
+ function stripJsonComments(jsonc) {
299
+ let result = '';
300
+ let inString = false;
301
+ let inSingleLineComment = false;
302
+ let inMultiLineComment = false;
303
+ for (let i = 0; i < jsonc.length; i++) {
304
+ const char = jsonc[i];
305
+ const next = jsonc[i + 1];
306
+ if (inSingleLineComment) {
307
+ if (char === '\n') {
308
+ inSingleLineComment = false;
309
+ result += char;
310
+ }
311
+ continue;
312
+ }
313
+ if (inMultiLineComment) {
314
+ if (char === '*' && next === '/') {
315
+ inMultiLineComment = false;
316
+ i++; // skip the /
317
+ }
318
+ continue;
319
+ }
320
+ if (inString) {
321
+ result += char;
322
+ if (char === '\\' && next) {
323
+ result += next;
324
+ i++;
325
+ }
326
+ else if (char === '"') {
327
+ inString = false;
328
+ }
329
+ continue;
330
+ }
331
+ if (char === '"') {
332
+ inString = true;
333
+ result += char;
334
+ continue;
335
+ }
336
+ if (char === '/' && next === '/') {
337
+ inSingleLineComment = true;
338
+ i++;
339
+ continue;
340
+ }
341
+ if (char === '/' && next === '*') {
342
+ inMultiLineComment = true;
343
+ i++;
344
+ continue;
345
+ }
346
+ result += char;
347
+ }
348
+ return result;
349
+ }
350
+ /**
351
+ * Read VS Code/Cursor settings and extract ghProjects.* values
352
+ */
353
+ function readVSCodeSettings(editor = 'code') {
354
+ const result = {
355
+ workspace: {},
356
+ user: {},
357
+ errors: [],
358
+ };
359
+ // Read workspace settings
360
+ const workspacePath = getVSCodeWorkspaceSettingsPath();
361
+ if (workspacePath && existsSync(workspacePath)) {
362
+ try {
363
+ const content = readFileSync(workspacePath, 'utf-8');
364
+ const parsed = JSON.parse(stripJsonComments(content));
365
+ for (const [key, value] of Object.entries(parsed)) {
366
+ if (key.startsWith('ghProjects.')) {
367
+ result.workspace[key.replace('ghProjects.', '')] = value;
368
+ }
369
+ }
370
+ }
371
+ catch (err) {
372
+ result.errors.push(`Failed to parse workspace settings: ${err instanceof Error ? err.message : 'Unknown error'}`);
373
+ }
374
+ }
375
+ // Read user settings
376
+ const userPath = getVSCodeUserSettingsPath(editor);
377
+ if (existsSync(userPath)) {
378
+ try {
379
+ const content = readFileSync(userPath, 'utf-8');
380
+ const parsed = JSON.parse(stripJsonComments(content));
381
+ for (const [key, value] of Object.entries(parsed)) {
382
+ if (key.startsWith('ghProjects.')) {
383
+ result.user[key.replace('ghProjects.', '')] = value;
384
+ }
385
+ }
386
+ }
387
+ catch (err) {
388
+ result.errors.push(`Failed to parse ${editor} user settings: ${err instanceof Error ? err.message : 'Unknown error'}`);
389
+ }
390
+ }
391
+ return result;
392
+ }
393
+ // Mapping from VS Code setting names to CLI config keys
394
+ const VSCODE_TO_CLI_MAP = {
395
+ 'mainBranch': 'mainBranch',
396
+ 'branchNamePattern': 'branchPattern',
397
+ 'startWorkingStatus': 'startWorkingStatus',
398
+ 'prMergedStatus': 'doneStatus',
399
+ };
400
+ /**
401
+ * Sync VS Code/Cursor settings to CLI config
402
+ */
403
+ export function syncFromVSCode(targetScope = 'user') {
404
+ // Try Cursor first, fall back to Code
405
+ let editor = 'cursor';
406
+ let vscodeSettings = readVSCodeSettings('cursor');
407
+ const allErrors = [...vscodeSettings.errors];
408
+ // If no Cursor settings found, try VS Code
409
+ if (Object.keys(vscodeSettings.workspace).length === 0 && Object.keys(vscodeSettings.user).length === 0) {
410
+ editor = 'code';
411
+ vscodeSettings = readVSCodeSettings('code');
412
+ allErrors.push(...vscodeSettings.errors);
413
+ }
414
+ const result = {
415
+ synced: [],
416
+ skipped: [],
417
+ errors: allErrors,
418
+ editor: editor === 'cursor' ? 'Cursor' : 'VS Code',
419
+ };
420
+ // Merge workspace and user (user overrides workspace, like VS Code does)
421
+ const merged = { ...vscodeSettings.workspace, ...vscodeSettings.user };
422
+ // Track sources for reporting
423
+ const sources = {};
424
+ for (const key of Object.keys(vscodeSettings.workspace)) {
425
+ sources[key] = 'workspace';
426
+ }
427
+ for (const key of Object.keys(vscodeSettings.user)) {
428
+ sources[key] = 'user';
429
+ }
430
+ // Map and save each setting
431
+ const configUpdates = {};
432
+ for (const [vscodeKey, cliKey] of Object.entries(VSCODE_TO_CLI_MAP)) {
433
+ if (merged[vscodeKey] !== undefined) {
434
+ const value = merged[vscodeKey];
435
+ if (typeof value === 'string') {
436
+ configUpdates[cliKey] = value;
437
+ result.synced.push({
438
+ key: cliKey,
439
+ value,
440
+ source: sources[vscodeKey],
441
+ });
442
+ }
443
+ }
444
+ }
445
+ // Report skipped settings (VS Code settings that don't map to CLI)
446
+ for (const key of Object.keys(merged)) {
447
+ if (!VSCODE_TO_CLI_MAP[key]) {
448
+ result.skipped.push(key);
449
+ }
450
+ }
451
+ // Save to CLI config
452
+ if (Object.keys(configUpdates).length > 0) {
453
+ saveConfig(configUpdates, targetScope);
454
+ }
455
+ return result;
456
+ }
457
+ export function getVSCodeSettingsPaths() {
458
+ return {
459
+ workspace: getVSCodeWorkspaceSettingsPath(),
460
+ cursorUser: getVSCodeUserSettingsPath('cursor'),
461
+ codeUser: getVSCodeUserSettingsPath('code'),
462
+ };
463
+ }
88
464
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,mCAAmC;AACnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAE9D,2CAA2C;AAC3C,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAqC5C,MAAM,cAAc,GAAW;IAC3B,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,yBAAyB;IACxC,kBAAkB,EAAE,aAAa;IACjC,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;CAChB,CAAC;AAEF;;GAEG;AACH,SAAS,WAAW;IAChB,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IACxB,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;IAC5C,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,IAAI,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,gBAAgB;IACpB,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACnB,IAAI,CAAC;QACD,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,gBAAgB;IACpB,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAAyB;IACtD,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,IAAI,aAAa,KAAK,SAAS;YAAE,SAAS;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IACI,OAAO,aAAa,KAAK,QAAQ;YACjC,aAAa,KAAK,IAAI;YACtB,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7B,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,KAAK,IAAI;YAClB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAC3B,CAAC;YACC,kDAAkD;YAClD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,SAAmB,EAAE,GAAG,aAAa,EAAE,CAAC;QAC/D,CAAC;aAAM,CAAC;YACJ,4CAA4C;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QAChC,CAAC;IACL,CAAC;IACD,OAAO,MAA2B,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACtB,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,qCAAqC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC;AAClB,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAuB,EAAE,QAAqB,MAAM;IAC3E,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAE1D,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAkB,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,cAAc;QACd,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAkB,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAyB,GAAM;IACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAyB,GAAM,EAAE,KAAgB,EAAE,QAAqB,MAAM;IACnG,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAsB;IAC5D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5D,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB;IAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,UAAU,CAAC;QACP,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;KACnD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC7C,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;QACtC,OAAO,IAAI,IAAI,2BAA2B,CAAC;IAC/C,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,SAAS,CAAU,CAAC;AASnH,MAAM,UAAU,UAAU;IACtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAE9C,MAAM,MAAM,GAA0C,EAAE,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACvE,CAAC;aAAM,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjF,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACpC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAElC,kBAAkB;IAClB,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACzE,CAAC;aAAM,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC5F,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,GAAiB,SAAS,CAAC;IACzC,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI;QAAE,UAAU,GAAG,MAAM,CAAC;SAC9C,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI;QAAE,UAAU,GAAG,WAAW,CAAC;IAElE,sBAAsB;IACtB,IAAI,cAAc,GAAiB,SAAS,CAAC;IAC7C,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ;QAAE,cAAc,GAAG,MAAM,CAAC;SACtD,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ;QAAE,cAAc,GAAG,WAAW,CAAC;IAE1E,wCAAwC;IACxC,MAAM,SAAS,GAAkE,EAAE,CAAC;IACpF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;QAC7B,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,CAAC;QAC/C,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7C,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAClC,2BAA2B;QAC3B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5E,CAAC;aAAM,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACtF,CAAC;IACL,CAAC;IAED,OAAO;QACH,QAAQ;QACR,QAAQ,EAAE;YACN,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YACtE,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;SACrF;QACD,SAAS;KACZ,CAAC;AACN,CAAC;AAED,kCAAkC;AAClC,SAAS,yBAAyB,CAAC,SAA4B,MAAM;IACjE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAExD,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACjB,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC1F,KAAK,OAAO;YACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC3G,SAAS,QAAQ;YACb,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B;IACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1B,IAAI,mBAAmB,EAAE,CAAC;YACtB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,MAAM,IAAI,IAAI,CAAC;YACnB,CAAC;YACD,SAAS;QACb,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACrB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC/B,kBAAkB,GAAG,KAAK,CAAC;gBAC3B,CAAC,EAAE,CAAC,CAAC,aAAa;YACtB,CAAC;YACD,SAAS;QACb,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,IAAI,CAAC;YACf,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,IAAI,CAAC;gBACf,CAAC,EAAE,CAAC;YACR,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACtB,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;YACD,SAAS;QACb,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,IAAI,IAAI,CAAC;YACf,SAAS;QACb,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC/B,mBAAmB,GAAG,IAAI,CAAC;YAC3B,CAAC,EAAE,CAAC;YACJ,SAAS;QACb,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC/B,kBAAkB,GAAG,IAAI,CAAC;YAC1B,CAAC,EAAE,CAAC;YACJ,SAAS;QACb,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAQD;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAA4B,MAAM;IAC1D,MAAM,MAAM,GAAyB;QACjC,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACb,CAAC;IAEF,0BAA0B;IAC1B,MAAM,aAAa,GAAG,8BAA8B,EAAE,CAAC;IACvD,IAAI,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC7D,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtH,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACxD,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3H,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,wDAAwD;AACxD,MAAM,iBAAiB,GAAiC;IACpD,YAAY,EAAE,YAAY;IAC1B,mBAAmB,EAAE,eAAe;IACpC,oBAAoB,EAAE,oBAAoB;IAC1C,gBAAgB,EAAE,YAAY;CACjC,CAAC;AASF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,cAA2B,MAAM;IAC5D,sCAAsC;IACtC,IAAI,MAAM,GAAsB,QAAQ,CAAC;IACzC,IAAI,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,SAAS,GAAa,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvD,2CAA2C;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtG,MAAM,GAAG,MAAM,CAAC;QAChB,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAe;QACvB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;IAEF,yEAAyE;IACzE,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;IAEvE,8BAA8B;IAC9B,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,4BAA4B;IAC5B,MAAM,aAAa,GAAoB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClE,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC3B,aAAyC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;gBAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,GAAG,EAAE,MAAM;oBACX,KAAK;oBACL,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;iBAC7B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB;IAClC,OAAO;QACH,SAAS,EAAE,8BAA8B,EAAE;QAC3C,UAAU,EAAE,yBAAyB,CAAC,QAAQ,CAAC;QAC/C,QAAQ,EAAE,yBAAyB,CAAC,MAAM,CAAC;KAC9C,CAAC;AACN,CAAC"}
@@ -4,6 +4,6 @@
4
4
  * For CLI usage, all functions use process.cwd() by default.
5
5
  * The core library accepts an optional { cwd } parameter for IDE integrations.
6
6
  */
7
- export { detectRepository, getCurrentBranch, hasUncommittedChanges, branchExists, createBranch, checkoutBranch, pullLatest, fetchOrigin, getCommitsBehind, getCommitsAhead, isGitRepository, getRepositoryRoot, sanitizeForBranchName, generateBranchName, getDefaultBranch, parseGitHubUrl, } from '@bretwardjames/ghp-core';
7
+ export { detectRepository, getCurrentBranch, hasUncommittedChanges, branchExists, createBranch, checkoutBranch, pullLatest, fetchOrigin, getCommitsBehind, getCommitsAhead, isGitRepository, getRepositoryRoot, sanitizeForBranchName, generateBranchName, getDefaultBranch, getLocalBranches, getRemoteBranches, getAllBranches, parseGitHubUrl, } from '@bretwardjames/ghp-core';
8
8
  export type { RepoInfo, GitOptions } from '@bretwardjames/ghp-core';
9
9
  //# sourceMappingURL=git-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/git-utils.js CHANGED
@@ -6,5 +6,5 @@
6
6
  */
7
7
  // Re-export all git utilities from core
8
8
  // These all use process.cwd() by default, which is correct for CLI usage
9
- export { detectRepository, getCurrentBranch, hasUncommittedChanges, branchExists, createBranch, checkoutBranch, pullLatest, fetchOrigin, getCommitsBehind, getCommitsAhead, isGitRepository, getRepositoryRoot, sanitizeForBranchName, generateBranchName, getDefaultBranch, parseGitHubUrl, } from '@bretwardjames/ghp-core';
9
+ export { detectRepository, getCurrentBranch, hasUncommittedChanges, branchExists, createBranch, checkoutBranch, pullLatest, fetchOrigin, getCommitsBehind, getCommitsAhead, isGitRepository, getRepositoryRoot, sanitizeForBranchName, generateBranchName, getDefaultBranch, getLocalBranches, getRemoteBranches, getAllBranches, parseGitHubUrl, } from '@bretwardjames/ghp-core';
10
10
  //# sourceMappingURL=git-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wCAAwC;AACxC,yEAAyE;AACzE,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACjB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wCAAwC;AACxC,yEAAyE;AACzE,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,GACjB,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ const program = new Command();
23
23
  program
24
24
  .name('ghp')
25
25
  .description('GitHub Projects CLI - manage project boards from your terminal')
26
- .version('0.1.6');
26
+ .version('0.1.7');
27
27
  // Authentication
28
28
  program
29
29
  .command('auth')
@@ -36,8 +36,10 @@ program
36
36
  .description('View or set configuration')
37
37
  .argument('[key]', 'Config key to get/set')
38
38
  .argument('[value]', 'Value to set')
39
- .option('-l, --list', 'List all config values')
40
- .option('-e, --edit', 'Open config file in editor (creates template if missing)')
39
+ .option('-s, --show', 'Show merged config from all sources')
40
+ .option('-e, --edit', 'Open config file in editor (explicit)')
41
+ .option('-w, --workspace', 'Target workspace config (.ghp/config.json)')
42
+ .option('-u, --user', 'Target user config (~/.config/ghp-cli/config.json)')
41
43
  .action(configCommand);
42
44
  // Main views
43
45
  program