@qelos/aidev 0.5.0 → 0.5.2

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 (99) hide show
  1. package/.env.aidev.example +8 -0
  2. package/README.md +137 -2
  3. package/dist/cli.js +14 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/accepted.d.ts +7 -2
  6. package/dist/commands/accepted.d.ts.map +1 -1
  7. package/dist/commands/accepted.js +17 -2
  8. package/dist/commands/accepted.js.map +1 -1
  9. package/dist/commands/help.d.ts.map +1 -1
  10. package/dist/commands/help.js +13 -0
  11. package/dist/commands/help.js.map +1 -1
  12. package/dist/commands/run.d.ts +16 -1
  13. package/dist/commands/run.d.ts.map +1 -1
  14. package/dist/commands/run.js +408 -20
  15. package/dist/commands/run.js.map +1 -1
  16. package/dist/commands/tasks.d.ts +1 -0
  17. package/dist/commands/tasks.d.ts.map +1 -1
  18. package/dist/commands/tasks.js +29 -0
  19. package/dist/commands/tasks.js.map +1 -1
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +6 -0
  22. package/dist/config.js.map +1 -1
  23. package/dist/github.d.ts +2 -0
  24. package/dist/github.d.ts.map +1 -1
  25. package/dist/github.js +28 -0
  26. package/dist/github.js.map +1 -1
  27. package/dist/hooks.d.ts +16 -1
  28. package/dist/hooks.d.ts.map +1 -1
  29. package/dist/hooks.js +1 -0
  30. package/dist/hooks.js.map +1 -1
  31. package/dist/providers/linear.js +1 -1
  32. package/dist/providers/linear.js.map +1 -1
  33. package/dist/sessions.d.ts +20 -0
  34. package/dist/sessions.d.ts.map +1 -0
  35. package/dist/sessions.js +171 -0
  36. package/dist/sessions.js.map +1 -0
  37. package/dist/types.d.ts +2 -0
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/__tests__/ai-runners.test.d.ts +0 -2
  41. package/dist/__tests__/ai-runners.test.d.ts.map +0 -1
  42. package/dist/__tests__/ai-runners.test.js +0 -367
  43. package/dist/__tests__/ai-runners.test.js.map +0 -1
  44. package/dist/__tests__/clickup-format.test.d.ts +0 -2
  45. package/dist/__tests__/clickup-format.test.d.ts.map +0 -1
  46. package/dist/__tests__/clickup-format.test.js +0 -256
  47. package/dist/__tests__/clickup-format.test.js.map +0 -1
  48. package/dist/__tests__/config.test.d.ts +0 -2
  49. package/dist/__tests__/config.test.d.ts.map +0 -1
  50. package/dist/__tests__/config.test.js +0 -418
  51. package/dist/__tests__/config.test.js.map +0 -1
  52. package/dist/__tests__/git.test.d.ts +0 -2
  53. package/dist/__tests__/git.test.d.ts.map +0 -1
  54. package/dist/__tests__/git.test.js +0 -697
  55. package/dist/__tests__/git.test.js.map +0 -1
  56. package/dist/__tests__/github.test.d.ts +0 -2
  57. package/dist/__tests__/github.test.d.ts.map +0 -1
  58. package/dist/__tests__/github.test.js +0 -209
  59. package/dist/__tests__/github.test.js.map +0 -1
  60. package/dist/__tests__/help.test.d.ts +0 -2
  61. package/dist/__tests__/help.test.d.ts.map +0 -1
  62. package/dist/__tests__/help.test.js +0 -34
  63. package/dist/__tests__/help.test.js.map +0 -1
  64. package/dist/__tests__/hooks.test.d.ts +0 -2
  65. package/dist/__tests__/hooks.test.d.ts.map +0 -1
  66. package/dist/__tests__/hooks.test.js +0 -333
  67. package/dist/__tests__/hooks.test.js.map +0 -1
  68. package/dist/__tests__/init.test.d.ts +0 -2
  69. package/dist/__tests__/init.test.d.ts.map +0 -1
  70. package/dist/__tests__/init.test.js +0 -596
  71. package/dist/__tests__/init.test.js.map +0 -1
  72. package/dist/__tests__/local-provider.test.d.ts +0 -2
  73. package/dist/__tests__/local-provider.test.d.ts.map +0 -1
  74. package/dist/__tests__/local-provider.test.js +0 -631
  75. package/dist/__tests__/local-provider.test.js.map +0 -1
  76. package/dist/__tests__/lockfile.test.d.ts +0 -2
  77. package/dist/__tests__/lockfile.test.d.ts.map +0 -1
  78. package/dist/__tests__/lockfile.test.js +0 -144
  79. package/dist/__tests__/lockfile.test.js.map +0 -1
  80. package/dist/__tests__/permissions.test.d.ts +0 -2
  81. package/dist/__tests__/permissions.test.d.ts.map +0 -1
  82. package/dist/__tests__/permissions.test.js +0 -151
  83. package/dist/__tests__/permissions.test.js.map +0 -1
  84. package/dist/__tests__/platform.test.d.ts +0 -2
  85. package/dist/__tests__/platform.test.d.ts.map +0 -1
  86. package/dist/__tests__/platform.test.js +0 -329
  87. package/dist/__tests__/platform.test.js.map +0 -1
  88. package/dist/__tests__/providers.test.d.ts +0 -2
  89. package/dist/__tests__/providers.test.d.ts.map +0 -1
  90. package/dist/__tests__/providers.test.js +0 -925
  91. package/dist/__tests__/providers.test.js.map +0 -1
  92. package/dist/__tests__/run.test.d.ts +0 -2
  93. package/dist/__tests__/run.test.d.ts.map +0 -1
  94. package/dist/__tests__/run.test.js +0 -529
  95. package/dist/__tests__/run.test.js.map +0 -1
  96. package/dist/__tests__/schedule.test.d.ts +0 -2
  97. package/dist/__tests__/schedule.test.d.ts.map +0 -1
  98. package/dist/__tests__/schedule.test.js +0 -258
  99. package/dist/__tests__/schedule.test.js.map +0 -1
@@ -1,418 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const node_test_1 = require("node:test");
40
- const strict_1 = __importDefault(require("node:assert/strict"));
41
- const node_child_process_1 = require("node:child_process");
42
- const fs = __importStar(require("node:fs"));
43
- const os = __importStar(require("node:os"));
44
- const path = __importStar(require("node:path"));
45
- const config_1 = require("../config");
46
- // ─── mergeNullDelimited ────────────────────────────────────────────────────────
47
- (0, node_test_1.describe)('mergeNullDelimited', () => {
48
- (0, node_test_1.beforeEach)(() => {
49
- delete process.env['__TEST_MERGE_A'];
50
- delete process.env['__TEST_MERGE_B'];
51
- delete process.env['__TEST_MERGE_EXISTING'];
52
- });
53
- (0, node_test_1.afterEach)(() => {
54
- delete process.env['__TEST_MERGE_A'];
55
- delete process.env['__TEST_MERGE_B'];
56
- delete process.env['__TEST_MERGE_EXISTING'];
57
- });
58
- (0, node_test_1.it)('sets new variables from null-delimited env output', () => {
59
- (0, config_1.mergeNullDelimited)('__TEST_MERGE_A=hello\0__TEST_MERGE_B=world\0');
60
- strict_1.default.equal(process.env['__TEST_MERGE_A'], 'hello');
61
- strict_1.default.equal(process.env['__TEST_MERGE_B'], 'world');
62
- });
63
- (0, node_test_1.it)('does not overwrite variables already in process.env', () => {
64
- process.env['__TEST_MERGE_EXISTING'] = 'original';
65
- (0, config_1.mergeNullDelimited)('__TEST_MERGE_EXISTING=overwritten\0');
66
- strict_1.default.equal(process.env['__TEST_MERGE_EXISTING'], 'original');
67
- });
68
- (0, node_test_1.it)('handles values containing = signs', () => {
69
- (0, config_1.mergeNullDelimited)('__TEST_MERGE_A=a=b=c\0');
70
- strict_1.default.equal(process.env['__TEST_MERGE_A'], 'a=b=c');
71
- });
72
- (0, node_test_1.it)('skips entries with no = sign', () => {
73
- (0, config_1.mergeNullDelimited)('NOEQUALS\0__TEST_MERGE_A=ok\0');
74
- strict_1.default.equal(process.env['__TEST_MERGE_A'], 'ok');
75
- });
76
- (0, node_test_1.it)('handles empty string without throwing', () => {
77
- strict_1.default.doesNotThrow(() => (0, config_1.mergeNullDelimited)(''));
78
- });
79
- });
80
- // ─── sourceShellProfile ────────────────────────────────────────────────────────
81
- // These tests only run on POSIX (macOS / Linux) since Windows uses PowerShell + registry.
82
- const itPosix = process.platform === 'win32' ? node_test_1.it.skip : node_test_1.it;
83
- (0, node_test_1.describe)('sourceShellProfile', () => {
84
- let tmpDir;
85
- const testKey = '__AIDEV_PROFILE_TEST';
86
- const testKey2 = '__AIDEV_PROFILE_TEST2';
87
- (0, node_test_1.beforeEach)(() => {
88
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-profile-test-'));
89
- delete process.env[testKey];
90
- delete process.env[testKey2];
91
- });
92
- (0, node_test_1.afterEach)(() => {
93
- fs.rmSync(tmpDir, { recursive: true, force: true });
94
- delete process.env[testKey];
95
- delete process.env[testKey2];
96
- });
97
- itPosix('picks up an exported variable from the profile', () => {
98
- const rc = path.join(tmpDir, '.testrc');
99
- fs.writeFileSync(rc, `export ${testKey}=from_profile\n`);
100
- (0, config_1.sourceShellProfile)([rc]);
101
- strict_1.default.equal(process.env[testKey], 'from_profile');
102
- });
103
- itPosix('profile with alias definitions does not break env sourcing', () => {
104
- // Aliases are shell-internal and won't appear in process.env, but their
105
- // presence must not prevent exported variables from being captured.
106
- const rc = path.join(tmpDir, '.testrc');
107
- fs.writeFileSync(rc, `alias gst='git status'\nexport ${testKey}=alongside_alias\n`);
108
- (0, config_1.sourceShellProfile)([rc]);
109
- strict_1.default.equal(process.env[testKey], 'alongside_alias');
110
- // Aliases are not environment variables — they must not leak into process.env
111
- strict_1.default.equal(process.env['gst'], undefined);
112
- });
113
- itPosix('does not overwrite an already-set variable', () => {
114
- process.env[testKey] = 'existing';
115
- const rc = path.join(tmpDir, '.testrc');
116
- fs.writeFileSync(rc, `export ${testKey}=from_profile\n`);
117
- (0, config_1.sourceShellProfile)([rc]);
118
- strict_1.default.equal(process.env[testKey], 'existing');
119
- });
120
- itPosix('sources multiple profile files in order', () => {
121
- const rc1 = path.join(tmpDir, '.rc1');
122
- const rc2 = path.join(tmpDir, '.rc2');
123
- fs.writeFileSync(rc1, `export ${testKey}=from_rc1\n`);
124
- fs.writeFileSync(rc2, `export ${testKey2}=from_rc2\n`);
125
- (0, config_1.sourceShellProfile)([rc1, rc2]);
126
- strict_1.default.equal(process.env[testKey], 'from_rc1');
127
- strict_1.default.equal(process.env[testKey2], 'from_rc2');
128
- });
129
- itPosix('silently ignores non-existent profile files', () => {
130
- const missing = path.join(tmpDir, 'does_not_exist');
131
- const rc = path.join(tmpDir, '.testrc');
132
- fs.writeFileSync(rc, `export ${testKey}=still_works\n`);
133
- strict_1.default.doesNotThrow(() => (0, config_1.sourceShellProfile)([missing, rc]));
134
- strict_1.default.equal(process.env[testKey], 'still_works');
135
- });
136
- itPosix('exported variable propagates to child processes after sourcing', () => {
137
- const rc = path.join(tmpDir, '.testrc');
138
- fs.writeFileSync(rc, `export ${testKey}=child_test_value\n`);
139
- (0, config_1.sourceShellProfile)([rc]);
140
- strict_1.default.equal(process.env[testKey], 'child_test_value');
141
- // Simulate how aidev spawns AI runners (claude, cursor, etc.) — they inherit process.env
142
- const child = (0, node_child_process_1.spawnSync)(process.execPath, // node
143
- ['-e', `process.stdout.write(process.env['${testKey}'] || 'NOT_FOUND')`], { encoding: 'utf8', env: process.env });
144
- strict_1.default.equal(child.stdout, 'child_test_value');
145
- });
146
- itPosix('variable with special characters in value is captured correctly', () => {
147
- const rc = path.join(tmpDir, '.testrc');
148
- fs.writeFileSync(rc, `export ${testKey}="hello=world:path/to/thing"\n`);
149
- (0, config_1.sourceShellProfile)([rc]);
150
- strict_1.default.equal(process.env[testKey], 'hello=world:path/to/thing');
151
- });
152
- });
153
- // ─── applyEnvFiles (AIDEV_ENV_EXTEND) ─────────────────────────────────────────
154
- const EXT_A = '__AIDEV_EXT_A';
155
- const EXT_B = '__AIDEV_EXT_B';
156
- const EXT_C = '__AIDEV_EXT_C';
157
- const EXT_ALL = [EXT_A, EXT_B, EXT_C, 'AIDEV_ENV_EXTEND'];
158
- (0, node_test_1.describe)('applyEnvFiles', () => {
159
- let tmpDir;
160
- (0, node_test_1.beforeEach)(() => {
161
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-envfiles-'));
162
- EXT_ALL.forEach((k) => delete process.env[k]);
163
- });
164
- (0, node_test_1.afterEach)(() => {
165
- fs.rmSync(tmpDir, { recursive: true, force: true });
166
- EXT_ALL.forEach((k) => delete process.env[k]);
167
- });
168
- (0, node_test_1.it)('loads variables from a local env file', () => {
169
- const local = path.join(tmpDir, '.env.aidev');
170
- fs.writeFileSync(local, `${EXT_A}=from_local\n`);
171
- (0, config_1.applyEnvFiles)(local);
172
- strict_1.default.equal(process.env[EXT_A], 'from_local');
173
- });
174
- (0, node_test_1.it)('loads global extend file values as base', () => {
175
- const global = path.join(tmpDir, '.aidev.global');
176
- fs.writeFileSync(global, `${EXT_A}=from_global\n${EXT_B}=global_only\n`);
177
- const local = path.join(tmpDir, '.env.aidev');
178
- fs.writeFileSync(local, `${EXT_A}=from_local\n`);
179
- (0, config_1.applyEnvFiles)(local, global);
180
- // local wins over global for EXT_A
181
- strict_1.default.equal(process.env[EXT_A], 'from_local');
182
- // global-only key is still loaded
183
- strict_1.default.equal(process.env[EXT_B], 'global_only');
184
- });
185
- (0, node_test_1.it)('local .env.aidev AIDEV_ENV_EXTEND entry is used when no explicit path given', () => {
186
- const global = path.join(tmpDir, '.aidev.global');
187
- fs.writeFileSync(global, `${EXT_B}=from_global_via_local_ref\n`);
188
- const local = path.join(tmpDir, '.env.aidev');
189
- fs.writeFileSync(local, `AIDEV_ENV_EXTEND=${global}\n${EXT_A}=local_val\n`);
190
- (0, config_1.applyEnvFiles)(local);
191
- strict_1.default.equal(process.env[EXT_A], 'local_val');
192
- strict_1.default.equal(process.env[EXT_B], 'from_global_via_local_ref');
193
- });
194
- (0, node_test_1.it)('process.env variables override both local and global', () => {
195
- process.env[EXT_A] = 'shell_value';
196
- const global = path.join(tmpDir, '.aidev.global');
197
- fs.writeFileSync(global, `${EXT_A}=global_value\n`);
198
- const local = path.join(tmpDir, '.env.aidev');
199
- fs.writeFileSync(local, `${EXT_A}=local_value\n`);
200
- (0, config_1.applyEnvFiles)(local, global);
201
- strict_1.default.equal(process.env[EXT_A], 'shell_value');
202
- });
203
- (0, node_test_1.it)('explicit envExtend arg overrides AIDEV_ENV_EXTEND entry inside local file', () => {
204
- const globalA = path.join(tmpDir, 'global_a');
205
- fs.writeFileSync(globalA, `${EXT_A}=from_global_a\n`);
206
- const globalB = path.join(tmpDir, 'global_b');
207
- fs.writeFileSync(globalB, `${EXT_B}=from_global_b\n`);
208
- const local = path.join(tmpDir, '.env.aidev');
209
- // local points to globalA via AIDEV_ENV_EXTEND, but caller passes globalB explicitly
210
- fs.writeFileSync(local, `AIDEV_ENV_EXTEND=${globalA}\n`);
211
- (0, config_1.applyEnvFiles)(local, globalB);
212
- // globalB was used (explicit wins)
213
- strict_1.default.equal(process.env[EXT_B], 'from_global_b');
214
- // globalA was NOT used
215
- strict_1.default.equal(process.env[EXT_A], undefined);
216
- });
217
- (0, node_test_1.it)('silently skips a missing global file', () => {
218
- const missing = path.join(tmpDir, 'does_not_exist');
219
- const local = path.join(tmpDir, '.env.aidev');
220
- fs.writeFileSync(local, `${EXT_A}=still_works\n`);
221
- strict_1.default.doesNotThrow(() => (0, config_1.applyEnvFiles)(local, missing));
222
- strict_1.default.equal(process.env[EXT_A], 'still_works');
223
- });
224
- (0, node_test_1.it)('works when no local file exists', () => {
225
- const global = path.join(tmpDir, '.aidev.global');
226
- fs.writeFileSync(global, `${EXT_A}=global_only\n`);
227
- (0, config_1.applyEnvFiles)(undefined, global);
228
- strict_1.default.equal(process.env[EXT_A], 'global_only');
229
- });
230
- (0, node_test_1.it)('vars loaded from global file propagate to child processes', () => {
231
- const global = path.join(tmpDir, '.aidev.global');
232
- fs.writeFileSync(global, `${EXT_C}=child_sees_this\n`);
233
- (0, config_1.applyEnvFiles)(undefined, global);
234
- strict_1.default.equal(process.env[EXT_C], 'child_sees_this');
235
- const child = (0, node_child_process_1.spawnSync)(process.execPath, ['-e', `process.stdout.write(process.env['${EXT_C}'] || 'NOT_FOUND')`], { encoding: 'utf8', env: process.env });
236
- strict_1.default.equal(child.stdout, 'child_sees_this');
237
- });
238
- (0, node_test_1.it)('resolves AIDEV_ENV_EXTEND relative path against local file directory', () => {
239
- // global file sits alongside .env.aidev
240
- const global = path.join(tmpDir, '.aidev.global');
241
- fs.writeFileSync(global, `${EXT_B}=relative_global\n`);
242
- const local = path.join(tmpDir, '.env.aidev');
243
- // stored as a relative path in the local file
244
- fs.writeFileSync(local, `AIDEV_ENV_EXTEND=.aidev.global\n${EXT_A}=local_val\n`);
245
- (0, config_1.applyEnvFiles)(local);
246
- strict_1.default.equal(process.env[EXT_A], 'local_val');
247
- strict_1.default.equal(process.env[EXT_B], 'relative_global');
248
- });
249
- });
250
- // ─── resolveEnvPath ────────────────────────────────────────────────────────────
251
- (0, node_test_1.describe)('resolveEnvPath', () => {
252
- (0, node_test_1.it)('returns absolute paths unchanged', () => {
253
- strict_1.default.equal((0, config_1.resolveEnvPath)('/etc/aidev.global', '/any/base'), '/etc/aidev.global');
254
- });
255
- (0, node_test_1.it)('expands ~ to the home directory', () => {
256
- const result = (0, config_1.resolveEnvPath)('~/.aidev.global', '/any/base');
257
- strict_1.default.equal(result, path.join(os.homedir(), '.aidev.global'));
258
- });
259
- (0, node_test_1.it)('expands ~/subdir correctly', () => {
260
- const result = (0, config_1.resolveEnvPath)('~/conf/aidev.global', '/any/base');
261
- strict_1.default.equal(result, path.join(os.homedir(), 'conf/aidev.global'));
262
- });
263
- (0, node_test_1.it)('resolves relative paths against the supplied base', () => {
264
- const base = '/projects/myapp';
265
- const result = (0, config_1.resolveEnvPath)('.aidev.global', base);
266
- strict_1.default.equal(result, path.resolve(base, '.aidev.global'));
267
- });
268
- (0, node_test_1.it)('resolves ../ relative paths correctly', () => {
269
- const base = '/projects/myapp';
270
- const result = (0, config_1.resolveEnvPath)('../shared/aidev.global', base);
271
- strict_1.default.equal(result, path.resolve(base, '../shared/aidev.global'));
272
- });
273
- });
274
- // ─── loadConfig tag defaults ──────────────────────────────────────────────────
275
- (0, node_test_1.describe)('loadConfig tag defaults', () => {
276
- const envKeys = [
277
- 'CLICKUP_API_KEY', 'CLICKUP_TEAM_ID', 'CLICKUP_TAG',
278
- 'NON_CODE_TAG', 'JIRA_LABEL', 'PROVIDER',
279
- ];
280
- const saved = {};
281
- let tmpDir;
282
- let origCwd;
283
- (0, node_test_1.beforeEach)(() => {
284
- for (const k of envKeys) {
285
- saved[k] = process.env[k];
286
- delete process.env[k];
287
- }
288
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-tagdefault-'));
289
- origCwd = process.cwd();
290
- process.chdir(tmpDir);
291
- // Minimal .env.aidev with only required ClickUp fields
292
- fs.writeFileSync(path.join(tmpDir, '.env.aidev'), 'CLICKUP_API_KEY=pk_test\nCLICKUP_TEAM_ID=12345\n');
293
- });
294
- (0, node_test_1.afterEach)(() => {
295
- process.chdir(origCwd);
296
- fs.rmSync(tmpDir, { recursive: true, force: true });
297
- for (const k of envKeys) {
298
- if (saved[k] !== undefined)
299
- process.env[k] = saved[k];
300
- else
301
- delete process.env[k];
302
- }
303
- });
304
- (0, node_test_1.it)('defaults clickupTag to the folder name when CLICKUP_TAG is unset', () => {
305
- const config = (0, config_1.loadConfig)();
306
- const folderName = path.basename(tmpDir);
307
- strict_1.default.equal(config.clickupTag, folderName);
308
- });
309
- (0, node_test_1.it)('defaults nonCodeTag to folder-name + "-other" when NON_CODE_TAG is unset', () => {
310
- const config = (0, config_1.loadConfig)();
311
- const folderName = path.basename(tmpDir);
312
- strict_1.default.equal(config.nonCodeTag, `${folderName}-other`);
313
- });
314
- (0, node_test_1.it)('defaults jiraLabel to the folder name when JIRA_LABEL is unset', () => {
315
- const config = (0, config_1.loadConfig)();
316
- const folderName = path.basename(tmpDir);
317
- strict_1.default.equal(config.jiraLabel, folderName);
318
- });
319
- (0, node_test_1.it)('respects explicit CLICKUP_TAG when set', () => {
320
- process.env.CLICKUP_TAG = 'custom-tag';
321
- const config = (0, config_1.loadConfig)();
322
- strict_1.default.equal(config.clickupTag, 'custom-tag');
323
- delete process.env.CLICKUP_TAG;
324
- });
325
- (0, node_test_1.it)('respects explicit NON_CODE_TAG when set', () => {
326
- process.env.NON_CODE_TAG = 'my-noncode';
327
- const config = (0, config_1.loadConfig)();
328
- strict_1.default.equal(config.nonCodeTag, 'my-noncode');
329
- delete process.env.NON_CODE_TAG;
330
- });
331
- (0, node_test_1.it)('does not require CLICKUP_TAG in env', () => {
332
- strict_1.default.doesNotThrow(() => (0, config_1.loadConfig)());
333
- });
334
- });
335
- // ─── loadConfig AGENTS parsing ────────────────────────────────────────────────
336
- (0, node_test_1.describe)('loadConfig AGENTS parsing', () => {
337
- const envKeys = [
338
- 'CLICKUP_API_KEY', 'CLICKUP_TEAM_ID', 'AGENTS', 'PROVIDER',
339
- ];
340
- const saved = {};
341
- let tmpDir;
342
- let origCwd;
343
- (0, node_test_1.beforeEach)(() => {
344
- for (const k of envKeys) {
345
- saved[k] = process.env[k];
346
- delete process.env[k];
347
- }
348
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-agents-'));
349
- origCwd = process.cwd();
350
- process.chdir(tmpDir);
351
- });
352
- (0, node_test_1.afterEach)(() => {
353
- process.chdir(origCwd);
354
- fs.rmSync(tmpDir, { recursive: true, force: true });
355
- for (const k of envKeys) {
356
- if (saved[k] !== undefined)
357
- process.env[k] = saved[k];
358
- else
359
- delete process.env[k];
360
- }
361
- });
362
- function writeEnv(content) {
363
- fs.writeFileSync(path.join(tmpDir, '.env.aidev'), `CLICKUP_API_KEY=pk_test\nCLICKUP_TEAM_ID=12345\n${content}`);
364
- }
365
- (0, node_test_1.it)('defaults to claude,cursor when AGENTS is not set', () => {
366
- writeEnv('');
367
- const config = (0, config_1.loadConfig)();
368
- strict_1.default.deepEqual(config.agents, ['claude', 'cursor']);
369
- });
370
- (0, node_test_1.it)('parses AGENTS from env file and preserves order', () => {
371
- writeEnv('AGENTS=cursor,windsurf,claude');
372
- const config = (0, config_1.loadConfig)();
373
- strict_1.default.deepEqual(config.agents, ['cursor', 'windsurf', 'claude']);
374
- });
375
- (0, node_test_1.it)('parses AGENTS with reversed order', () => {
376
- writeEnv('AGENTS=claude,windsurf,cursor');
377
- const config = (0, config_1.loadConfig)();
378
- strict_1.default.deepEqual(config.agents, ['claude', 'windsurf', 'cursor']);
379
- });
380
- (0, node_test_1.it)('handles single agent', () => {
381
- writeEnv('AGENTS=cursor');
382
- const config = (0, config_1.loadConfig)();
383
- strict_1.default.deepEqual(config.agents, ['cursor']);
384
- });
385
- (0, node_test_1.it)('trims whitespace around agent names', () => {
386
- writeEnv('AGENTS= cursor , claude ');
387
- const config = (0, config_1.loadConfig)();
388
- strict_1.default.deepEqual(config.agents, ['cursor', 'claude']);
389
- });
390
- (0, node_test_1.it)('handles quoted value in env file (dotenv strips quotes)', () => {
391
- writeEnv('AGENTS="cursor,windsurf,claude"');
392
- const config = (0, config_1.loadConfig)();
393
- strict_1.default.deepEqual(config.agents, ['cursor', 'windsurf', 'claude']);
394
- });
395
- (0, node_test_1.it)('throws on invalid agent name', () => {
396
- writeEnv('AGENTS=cursor,invalid_agent');
397
- strict_1.default.throws(() => (0, config_1.loadConfig)(), /Invalid agent/);
398
- });
399
- (0, node_test_1.it)('falls back to default when AGENTS is empty string (falsy)', () => {
400
- process.env.AGENTS = '';
401
- writeEnv('');
402
- const config = (0, config_1.loadConfig)();
403
- strict_1.default.deepEqual(config.agents, ['claude', 'cursor']);
404
- });
405
- (0, node_test_1.it)('throws when AGENTS contains only commas (no valid agents)', () => {
406
- process.env.AGENTS = ',,,';
407
- writeEnv('');
408
- strict_1.default.throws(() => (0, config_1.loadConfig)(), /at least one agent/);
409
- });
410
- (0, node_test_1.it)('process.env AGENTS overrides env file value', () => {
411
- process.env.AGENTS = 'claude';
412
- writeEnv('AGENTS=cursor,windsurf,claude');
413
- const config = (0, config_1.loadConfig)();
414
- strict_1.default.deepEqual(config.agents, ['claude']);
415
- delete process.env.AGENTS;
416
- });
417
- });
418
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAgE;AAChE,gEAAwC;AACxC,2DAA+C;AAC/C,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAClC,sCAA8G;AAE9G,kFAAkF;AAElF,IAAA,oBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAA,sBAAU,EAAC,GAAG,EAAE;QACd,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC,GAAG,EAAE;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,IAAA,2BAAkB,EAAC,8CAA8C,CAAC,CAAC;QACnE,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,UAAU,CAAC;QAClD,IAAA,2BAAkB,EAAC,qCAAqC,CAAC,CAAC;QAC1D,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,IAAA,2BAAkB,EAAC,wBAAwB,CAAC,CAAC;QAC7C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAA,2BAAkB,EAAC,+BAA+B,CAAC,CAAC;QACpD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,gBAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,2BAAkB,EAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,kFAAkF;AAElF,0FAA0F;AAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAE,CAAC;AAE5D,IAAA,oBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,MAAc,CAAC;IACnB,MAAM,OAAO,GAAG,sBAAsB,CAAC;IACvC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;IAEzC,IAAA,sBAAU,EAAC,GAAG,EAAE;QACd,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC,GAAG,EAAE;QACb,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,OAAO,iBAAiB,CAAC,CAAC;QAEzD,IAAA,2BAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,kCAAkC,OAAO,oBAAoB,CAAC,CAAC;QAEpF,IAAA,2BAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtD,8EAA8E;QAC9E,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,OAAO,iBAAiB,CAAC,CAAC;QAEzD,IAAA,2BAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,OAAO,aAAa,CAAC,CAAC;QACtD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,QAAQ,aAAa,CAAC,CAAC;QAEvD,IAAA,2BAAkB,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAE/B,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,OAAO,gBAAgB,CAAC,CAAC;QAExD,gBAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,2BAAkB,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,OAAO,qBAAqB,CAAC,CAAC;QAC7D,IAAA,2BAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEvD,yFAAyF;QACzF,MAAM,KAAK,GAAG,IAAA,8BAAS,EACrB,OAAO,CAAC,QAAQ,EAAE,OAAO;QACzB,CAAC,IAAI,EAAE,qCAAqC,OAAO,oBAAoB,CAAC,EACxE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CACvC,CAAC;QACF,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC9E,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,OAAO,gCAAgC,CAAC,CAAC;QAExE,IAAA,2BAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,KAAK,GAAG,eAAe,CAAC;AAC9B,MAAM,KAAK,GAAG,eAAe,CAAC;AAC9B,MAAM,KAAK,GAAG,eAAe,CAAC;AAC9B,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;AAE1D,IAAA,oBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,MAAc,CAAC;IAEnB,IAAA,sBAAU,EAAC,GAAG,EAAE;QACd,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC,GAAG,EAAE;QACb,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC;QAEjD,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAC;QAErB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,iBAAiB,KAAK,gBAAgB,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC;QAEjD,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE7B,mCAAmC;QACnC,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;QAC/C,kCAAkC;QAClC,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,8BAA8B,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,oBAAoB,MAAM,KAAK,KAAK,cAAc,CAAC,CAAC;QAE5E,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAC;QAErB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,iBAAiB,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC;QAElD,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE7B,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,KAAK,kBAAkB,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,qFAAqF;QACrF,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,oBAAoB,OAAO,IAAI,CAAC,CAAC;QAEzD,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE9B,mCAAmC;QACnC,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;QAClD,uBAAuB;QACvB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC;QAElD,gBAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC;QAEnD,IAAA,sBAAa,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEjC,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAEvD,IAAA,sBAAa,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,IAAA,8BAAS,EACrB,OAAO,CAAC,QAAQ,EAChB,CAAC,IAAI,EAAE,qCAAqC,KAAK,oBAAoB,CAAC,EACtE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CACvC,CAAC;QACF,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,8CAA8C;QAC9C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,mCAAmC,KAAK,cAAc,CAAC,CAAC;QAEhF,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAC;QAErB,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,kFAAkF;AAElF,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,cAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,gBAAM,CAAC,KAAK,CAAC,IAAA,uBAAc,EAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC9D,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;QAClE,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,iBAAiB,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,iBAAiB,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAC9D,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,oBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,MAAM,OAAO,GAAG;QACd,iBAAiB,EAAE,iBAAiB,EAAE,aAAa;QACnD,cAAc,EAAE,YAAY,EAAE,UAAU;KACzC,CAAC;IACF,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,IAAI,MAAc,CAAC;IACnB,IAAI,OAAe,CAAC;IAEpB,IAAA,sBAAU,EAAC,GAAG,EAAE;QACd,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,uDAAuD;QACvD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,kDAAkD,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;gBACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC;QACvC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;QACxC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,gBAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAU,GAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,oBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG;QACd,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU;KAC3D,CAAC;IACF,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,IAAI,MAAc,CAAC;IACnB,IAAI,OAAe,CAAC;IAEpB,IAAA,sBAAU,EAAC,GAAG,EAAE;QACd,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACjE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;gBACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,QAAQ,CAAC,OAAe;QAC/B,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,mDAAmD,OAAO,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,IAAA,cAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,QAAQ,CAAC,iCAAiC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QACxC,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAU,GAAE,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAU,GAAE,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC9B,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=git.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/git.test.ts"],"names":[],"mappings":""}