@sascha384/tic 2.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +32 -17
- package/dist/app.js +7 -2
- package/dist/app.js.map +1 -1
- package/dist/auth/ado.d.ts +31 -0
- package/dist/auth/ado.js +136 -0
- package/dist/auth/ado.js.map +1 -0
- package/dist/auth/gitlab.d.ts +37 -0
- package/dist/auth/gitlab.js +111 -0
- package/dist/auth/gitlab.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/backends/ado/api.d.ts +19 -0
- package/dist/backends/ado/api.js +110 -0
- package/dist/backends/ado/api.js.map +1 -0
- package/dist/backends/ado/index.d.ts +6 -12
- package/dist/backends/ado/index.js +201 -349
- package/dist/backends/ado/index.js.map +1 -1
- package/dist/backends/availability.js +1 -1
- package/dist/backends/availability.js.map +1 -1
- package/dist/backends/factory.js +2 -2
- package/dist/backends/factory.js.map +1 -1
- package/dist/backends/gitlab/api.d.ts +14 -0
- package/dist/backends/gitlab/api.js +53 -0
- package/dist/backends/gitlab/api.js.map +1 -0
- package/dist/backends/gitlab/index.d.ts +15 -13
- package/dist/backends/gitlab/index.js +425 -357
- package/dist/backends/gitlab/index.js.map +1 -1
- package/dist/backends/gitlab/mappers.d.ts +50 -28
- package/dist/backends/gitlab/mappers.js +30 -31
- package/dist/backends/gitlab/mappers.js.map +1 -1
- package/dist/backends/gitlab/remote.d.ts +7 -0
- package/dist/backends/gitlab/remote.js +32 -0
- package/dist/backends/gitlab/remote.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +5 -3
- package/dist/cli/commands/auth.js +61 -4
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/mcp.js +17 -17
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/index.js +5 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/components/AuthPrompt.d.ts +1 -0
- package/dist/components/AuthPrompt.js +37 -0
- package/dist/components/AuthPrompt.js.map +1 -0
- package/dist/components/Header.js +10 -2
- package/dist/components/Header.js.map +1 -1
- package/dist/components/HelpScreen.js +1 -2
- package/dist/components/HelpScreen.js.map +1 -1
- package/dist/components/OverlayPanel.d.ts +4 -1
- package/dist/components/OverlayPanel.js +5 -3
- package/dist/components/OverlayPanel.js.map +1 -1
- package/dist/components/StatusScreen.js +2 -1
- package/dist/components/StatusScreen.js.map +1 -1
- package/dist/components/WorkItemList.js +62 -51
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/stores/backendDataStore.d.ts +15 -0
- package/dist/stores/backendDataStore.js +97 -5
- package/dist/stores/backendDataStore.js.map +1 -1
- package/dist/stores/uiStore.d.ts +1 -3
- package/dist/stores/uiStore.js.map +1 -1
- package/package.json +1 -1
- package/dist/backends/ado/az.d.ts +0 -28
- package/dist/backends/ado/az.js +0 -162
- package/dist/backends/ado/az.js.map +0 -1
- package/dist/backends/gitlab/glab.d.ts +0 -6
- package/dist/backends/gitlab/glab.js +0 -43
- package/dist/backends/gitlab/glab.js.map +0 -1
- package/dist/backends/gitlab/group.d.ts +0 -1
- package/dist/backends/gitlab/group.js +0 -33
- package/dist/backends/gitlab/group.js.map +0 -1
|
@@ -30,8 +30,10 @@ export const defaultCapabilities = {
|
|
|
30
30
|
};
|
|
31
31
|
// Module-level references (not reactive state)
|
|
32
32
|
let currentBackend = null;
|
|
33
|
+
let currentCwd = null;
|
|
33
34
|
let initGeneration = 0;
|
|
34
35
|
async function createBackendAndSync(cwd) {
|
|
36
|
+
currentCwd = cwd;
|
|
35
37
|
const { Storage } = await import('../storage/index.js');
|
|
36
38
|
const primary = Storage.create(cwd);
|
|
37
39
|
// Set up stores with SQLite backing
|
|
@@ -40,18 +42,27 @@ async function createBackendAndSync(cwd) {
|
|
|
40
42
|
// Re-read config from DB (may have been loaded with defaults before DB was available)
|
|
41
43
|
await configStore.getState().init(cwd);
|
|
42
44
|
const config = configStore.getState().config;
|
|
45
|
+
const backendType = config.backend ?? 'none';
|
|
43
46
|
const { createRemoteBackend } = await import('../backends/factory.js');
|
|
44
47
|
let remote = null;
|
|
48
|
+
let authError = null;
|
|
45
49
|
try {
|
|
46
|
-
remote = await createRemoteBackend(cwd,
|
|
50
|
+
remote = await createRemoteBackend(cwd, backendType, {
|
|
47
51
|
skipAuth: true,
|
|
48
52
|
});
|
|
49
53
|
}
|
|
50
54
|
catch (err) {
|
|
51
55
|
// Auth errors are non-fatal — local backend still works, sync is just disabled
|
|
52
56
|
const { AuthError } = await import('../backends/shared/api-client.js');
|
|
53
|
-
if (
|
|
57
|
+
if (err instanceof AuthError) {
|
|
58
|
+
authError = {
|
|
59
|
+
backendType,
|
|
60
|
+
message: err.message,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
54
64
|
throw err;
|
|
65
|
+
}
|
|
55
66
|
}
|
|
56
67
|
let syncManager = null;
|
|
57
68
|
let queue = null;
|
|
@@ -61,7 +72,7 @@ async function createBackendAndSync(cwd) {
|
|
|
61
72
|
queue = new SyncQueue(primary.getDatabase());
|
|
62
73
|
syncManager = new SM(primary, remote, queue);
|
|
63
74
|
}
|
|
64
|
-
return { backend: primary, syncManager, queue };
|
|
75
|
+
return { backend: primary, syncManager, queue, authError };
|
|
65
76
|
}
|
|
66
77
|
export const backendDataStore = createStore((set, get) => ({
|
|
67
78
|
items: [],
|
|
@@ -76,6 +87,9 @@ export const backendDataStore = createStore((set, get) => ({
|
|
|
76
87
|
loading: false,
|
|
77
88
|
error: null,
|
|
78
89
|
syncStatus: null,
|
|
90
|
+
authPrompt: null,
|
|
91
|
+
authFlow: null,
|
|
92
|
+
authDismissed: false,
|
|
79
93
|
backend: null,
|
|
80
94
|
syncManager: null,
|
|
81
95
|
queue: null,
|
|
@@ -84,11 +98,11 @@ export const backendDataStore = createStore((set, get) => ({
|
|
|
84
98
|
const generation = ++initGeneration;
|
|
85
99
|
set({ loading: true });
|
|
86
100
|
void createBackendAndSync(cwd)
|
|
87
|
-
.then(({ backend, syncManager, queue }) => {
|
|
101
|
+
.then(({ backend, syncManager, queue, authError }) => {
|
|
88
102
|
if (generation !== initGeneration)
|
|
89
103
|
return;
|
|
90
104
|
currentBackend = backend;
|
|
91
|
-
set({ backend, syncManager, queue });
|
|
105
|
+
set({ backend, syncManager, queue, authPrompt: authError });
|
|
92
106
|
if (syncManager) {
|
|
93
107
|
syncManager.onStatusChange((status) => {
|
|
94
108
|
if (generation !== initGeneration)
|
|
@@ -182,6 +196,80 @@ export const backendDataStore = createStore((set, get) => ({
|
|
|
182
196
|
setSyncStatus(status) {
|
|
183
197
|
set({ syncStatus: status });
|
|
184
198
|
},
|
|
199
|
+
dismissAuthPrompt() {
|
|
200
|
+
set({ authPrompt: null, authFlow: null, authDismissed: true });
|
|
201
|
+
},
|
|
202
|
+
async startAuthFlow() {
|
|
203
|
+
const { authPrompt } = get();
|
|
204
|
+
if (!authPrompt || !currentCwd)
|
|
205
|
+
return;
|
|
206
|
+
set({ authFlow: { state: 'waiting' } });
|
|
207
|
+
try {
|
|
208
|
+
const onCode = (userCode, verificationUri) => {
|
|
209
|
+
set({
|
|
210
|
+
authFlow: {
|
|
211
|
+
state: 'code-ready',
|
|
212
|
+
userCode,
|
|
213
|
+
verificationUri,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
switch (authPrompt.backendType) {
|
|
218
|
+
case 'github': {
|
|
219
|
+
const { authenticateGitHub } = await import('../auth/github.js');
|
|
220
|
+
await authenticateGitHub({ onCode });
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case 'gitlab': {
|
|
224
|
+
const { authenticateGitLab } = await import('../auth/gitlab.js');
|
|
225
|
+
await authenticateGitLab({ onCode });
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case 'azure': {
|
|
229
|
+
const { authenticateAdo } = await import('../auth/ado.js');
|
|
230
|
+
await authenticateAdo({ onCode });
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
default:
|
|
234
|
+
throw new Error(`Unsupported auth provider: ${authPrompt.backendType}`);
|
|
235
|
+
}
|
|
236
|
+
// Auth succeeded — create remote backend and sync
|
|
237
|
+
const generation = initGeneration;
|
|
238
|
+
const { createRemoteBackend } = await import('../backends/factory.js');
|
|
239
|
+
const remote = await createRemoteBackend(currentCwd, authPrompt.backendType);
|
|
240
|
+
if (generation !== initGeneration || !remote || !currentBackend) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const { SyncManager: SM } = await import('../sync/SyncManager.js');
|
|
244
|
+
const { SyncQueue } = await import('../storage/syncQueue.js');
|
|
245
|
+
const primary = currentBackend;
|
|
246
|
+
const queue = new SyncQueue(primary.getDatabase());
|
|
247
|
+
const syncManager = new SM(primary, remote, queue);
|
|
248
|
+
syncManager.onStatusChange((status) => {
|
|
249
|
+
if (generation !== initGeneration)
|
|
250
|
+
return;
|
|
251
|
+
get().setSyncStatus(status);
|
|
252
|
+
if (status.state === 'idle') {
|
|
253
|
+
void get().refresh();
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
set({
|
|
257
|
+
syncManager,
|
|
258
|
+
queue,
|
|
259
|
+
authPrompt: null,
|
|
260
|
+
authFlow: null,
|
|
261
|
+
});
|
|
262
|
+
syncManager.sync().catch(() => { });
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
set({
|
|
266
|
+
authFlow: {
|
|
267
|
+
state: 'error',
|
|
268
|
+
error: err instanceof Error ? err.message : String(err),
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
},
|
|
185
273
|
destroy() {
|
|
186
274
|
++initGeneration;
|
|
187
275
|
// Null out store DB references before closing the connection
|
|
@@ -191,6 +279,7 @@ export const backendDataStore = createStore((set, get) => ({
|
|
|
191
279
|
currentBackend.destroy();
|
|
192
280
|
}
|
|
193
281
|
currentBackend = null;
|
|
282
|
+
currentCwd = null;
|
|
194
283
|
set({
|
|
195
284
|
items: [],
|
|
196
285
|
capabilities: { ...defaultCapabilities },
|
|
@@ -204,6 +293,9 @@ export const backendDataStore = createStore((set, get) => ({
|
|
|
204
293
|
loading: false,
|
|
205
294
|
error: null,
|
|
206
295
|
syncStatus: null,
|
|
296
|
+
authPrompt: null,
|
|
297
|
+
authFlow: null,
|
|
298
|
+
authDismissed: false,
|
|
207
299
|
backend: null,
|
|
208
300
|
syncManager: null,
|
|
209
301
|
queue: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendDataStore.js","sourceRoot":"","sources":["../../src/stores/backendDataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE;QACN,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;KACjB;IACD,SAAS,EAAE,KAAK;IAChB,cAAc,EAAE;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"backendDataStore.js","sourceRoot":"","sources":["../../src/stores/backendDataStore.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/uiStore.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiStore.js","sourceRoot":"","sources":["../../src/stores/uiStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"uiStore.js","sourceRoot":"","sources":["../../src/stores/uiStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuCnC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IAEX,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IACzD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAChD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1C,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IAC1E,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CACpE,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,UAAU,CAAI,QAAoC;IAChE,OAAO,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC;IACjD,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IAChE,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/** Sync variant — only for constructor use (account check, work item types). */
|
|
2
|
-
export declare function azSync<T>(args: string[], cwd: string): T;
|
|
3
|
-
/** Sync variant — only for constructor use. */
|
|
4
|
-
export declare function azExecSync(args: string[], cwd: string): string;
|
|
5
|
-
export declare function az<T>(args: string[], cwd: string): Promise<T>;
|
|
6
|
-
export declare function azExec(args: string[], cwd: string): Promise<string>;
|
|
7
|
-
export interface AzInvokeOptions {
|
|
8
|
-
area: string;
|
|
9
|
-
resource: string;
|
|
10
|
-
httpMethod?: string;
|
|
11
|
-
routeParameters?: string;
|
|
12
|
-
body?: unknown;
|
|
13
|
-
apiVersion?: string;
|
|
14
|
-
}
|
|
15
|
-
/** Sync variant — only for constructor use. */
|
|
16
|
-
export declare function azInvokeSync<T>(options: AzInvokeOptions, cwd: string): T;
|
|
17
|
-
export interface AzRestOptions {
|
|
18
|
-
url: string;
|
|
19
|
-
httpMethod?: string;
|
|
20
|
-
body?: unknown;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Call Azure DevOps REST APIs directly via `az rest`.
|
|
24
|
-
* Use this instead of azInvoke for preview APIs that
|
|
25
|
-
* `az devops invoke` cannot handle (it fails to parse preview version strings).
|
|
26
|
-
*/
|
|
27
|
-
export declare function azRest<T>(options: AzRestOptions, cwd: string): Promise<T>;
|
|
28
|
-
export declare function azInvoke<T>(options: AzInvokeOptions, cwd: string): Promise<T>;
|
package/dist/backends/ado/az.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { execFile, execFileSync } from 'node:child_process';
|
|
2
|
-
import { promisify } from 'node:util';
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import fsp from 'node:fs/promises';
|
|
5
|
-
import os from 'node:os';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
const execFileAsync = promisify(execFile);
|
|
8
|
-
const AZ_TIMEOUT_MS = 15_000;
|
|
9
|
-
const AZ_MAX_BUFFER = 10 * 1024 * 1024; // 10 MB
|
|
10
|
-
/** Sync variant — only for constructor use (account check, work item types). */
|
|
11
|
-
export function azSync(args, cwd) {
|
|
12
|
-
const result = execFileSync('az', [...args, '-o', 'json'], {
|
|
13
|
-
cwd,
|
|
14
|
-
encoding: 'utf-8',
|
|
15
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
-
timeout: AZ_TIMEOUT_MS,
|
|
17
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
18
|
-
});
|
|
19
|
-
return JSON.parse(result);
|
|
20
|
-
}
|
|
21
|
-
/** Sync variant — only for constructor use. */
|
|
22
|
-
export function azExecSync(args, cwd) {
|
|
23
|
-
return execFileSync('az', args, {
|
|
24
|
-
cwd,
|
|
25
|
-
encoding: 'utf-8',
|
|
26
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
27
|
-
timeout: AZ_TIMEOUT_MS,
|
|
28
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
export async function az(args, cwd) {
|
|
32
|
-
const { stdout } = await execFileAsync('az', [...args, '-o', 'json'], {
|
|
33
|
-
cwd,
|
|
34
|
-
encoding: 'utf-8',
|
|
35
|
-
timeout: AZ_TIMEOUT_MS,
|
|
36
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
37
|
-
});
|
|
38
|
-
return JSON.parse(stdout);
|
|
39
|
-
}
|
|
40
|
-
export async function azExec(args, cwd) {
|
|
41
|
-
const { stdout } = await execFileAsync('az', args, {
|
|
42
|
-
cwd,
|
|
43
|
-
encoding: 'utf-8',
|
|
44
|
-
timeout: AZ_TIMEOUT_MS,
|
|
45
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
46
|
-
});
|
|
47
|
-
return stdout;
|
|
48
|
-
}
|
|
49
|
-
/** Sync variant — only for constructor use. */
|
|
50
|
-
export function azInvokeSync(options, cwd) {
|
|
51
|
-
const args = [
|
|
52
|
-
'devops',
|
|
53
|
-
'invoke',
|
|
54
|
-
'--area',
|
|
55
|
-
options.area,
|
|
56
|
-
'--resource',
|
|
57
|
-
options.resource,
|
|
58
|
-
];
|
|
59
|
-
if (options.httpMethod) {
|
|
60
|
-
args.push('--http-method', options.httpMethod);
|
|
61
|
-
}
|
|
62
|
-
if (options.routeParameters) {
|
|
63
|
-
args.push('--route-parameters', options.routeParameters);
|
|
64
|
-
}
|
|
65
|
-
if (options.apiVersion) {
|
|
66
|
-
args.push('--api-version', options.apiVersion);
|
|
67
|
-
}
|
|
68
|
-
let tmpFile;
|
|
69
|
-
if (options.body) {
|
|
70
|
-
tmpFile = path.join(os.tmpdir(), `tic-az-${Date.now()}.json`);
|
|
71
|
-
fs.writeFileSync(tmpFile, JSON.stringify(options.body));
|
|
72
|
-
args.push('--in-file', tmpFile);
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
const result = execFileSync('az', [...args, '-o', 'json'], {
|
|
76
|
-
cwd,
|
|
77
|
-
encoding: 'utf-8',
|
|
78
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
79
|
-
timeout: AZ_TIMEOUT_MS,
|
|
80
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
81
|
-
});
|
|
82
|
-
return JSON.parse(result);
|
|
83
|
-
}
|
|
84
|
-
finally {
|
|
85
|
-
if (tmpFile) {
|
|
86
|
-
fs.unlinkSync(tmpFile);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Call Azure DevOps REST APIs directly via `az rest`.
|
|
92
|
-
* Use this instead of azInvoke for preview APIs that
|
|
93
|
-
* `az devops invoke` cannot handle (it fails to parse preview version strings).
|
|
94
|
-
*/
|
|
95
|
-
export async function azRest(options, cwd) {
|
|
96
|
-
const args = ['rest', '--uri', options.url];
|
|
97
|
-
if (options.httpMethod) {
|
|
98
|
-
args.push('--method', options.httpMethod);
|
|
99
|
-
}
|
|
100
|
-
let tmpFile;
|
|
101
|
-
if (options.body) {
|
|
102
|
-
tmpFile = path.join(os.tmpdir(), `tic-az-${Date.now()}.json`);
|
|
103
|
-
await fsp.writeFile(tmpFile, JSON.stringify(options.body));
|
|
104
|
-
args.push('--body', `@${tmpFile}`);
|
|
105
|
-
}
|
|
106
|
-
// Azure DevOps resource ID for authentication
|
|
107
|
-
args.push('--resource', '499b84ac-1321-427f-aa17-267ca6975798');
|
|
108
|
-
try {
|
|
109
|
-
const { stdout } = await execFileAsync('az', args, {
|
|
110
|
-
cwd,
|
|
111
|
-
encoding: 'utf-8',
|
|
112
|
-
timeout: AZ_TIMEOUT_MS,
|
|
113
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
114
|
-
});
|
|
115
|
-
return JSON.parse(stdout);
|
|
116
|
-
}
|
|
117
|
-
finally {
|
|
118
|
-
if (tmpFile) {
|
|
119
|
-
await fsp.unlink(tmpFile);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
export async function azInvoke(options, cwd) {
|
|
124
|
-
const args = [
|
|
125
|
-
'devops',
|
|
126
|
-
'invoke',
|
|
127
|
-
'--area',
|
|
128
|
-
options.area,
|
|
129
|
-
'--resource',
|
|
130
|
-
options.resource,
|
|
131
|
-
];
|
|
132
|
-
if (options.httpMethod) {
|
|
133
|
-
args.push('--http-method', options.httpMethod);
|
|
134
|
-
}
|
|
135
|
-
if (options.routeParameters) {
|
|
136
|
-
args.push('--route-parameters', options.routeParameters);
|
|
137
|
-
}
|
|
138
|
-
if (options.apiVersion) {
|
|
139
|
-
args.push('--api-version', options.apiVersion);
|
|
140
|
-
}
|
|
141
|
-
let tmpFile;
|
|
142
|
-
if (options.body) {
|
|
143
|
-
tmpFile = path.join(os.tmpdir(), `tic-az-${Date.now()}.json`);
|
|
144
|
-
await fsp.writeFile(tmpFile, JSON.stringify(options.body));
|
|
145
|
-
args.push('--in-file', tmpFile);
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
const { stdout } = await execFileAsync('az', [...args, '-o', 'json'], {
|
|
149
|
-
cwd,
|
|
150
|
-
encoding: 'utf-8',
|
|
151
|
-
timeout: AZ_TIMEOUT_MS,
|
|
152
|
-
maxBuffer: AZ_MAX_BUFFER,
|
|
153
|
-
});
|
|
154
|
-
return JSON.parse(stdout);
|
|
155
|
-
}
|
|
156
|
-
finally {
|
|
157
|
-
if (tmpFile) {
|
|
158
|
-
await fsp.unlink(tmpFile);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=az.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"az.js","sourceRoot":"","sources":["../../../src/backends/ado/az.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Sync variant — only for constructor use (auth check). */
|
|
2
|
-
export declare function glabSync<T>(args: string[], cwd: string): T;
|
|
3
|
-
/** Sync variant — only for constructor use (auth check). */
|
|
4
|
-
export declare function glabExecSync(args: string[], cwd: string): string;
|
|
5
|
-
export declare function glab<T>(args: string[], cwd: string): Promise<T>;
|
|
6
|
-
export declare function glabExec(args: string[], cwd: string): Promise<string>;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { execFile, execFileSync } from 'node:child_process';
|
|
2
|
-
import { promisify } from 'node:util';
|
|
3
|
-
const execFileAsync = promisify(execFile);
|
|
4
|
-
/** Sync variant — only for constructor use (auth check). */
|
|
5
|
-
export function glabSync(args, cwd) {
|
|
6
|
-
const result = execFileSync('glab', args, {
|
|
7
|
-
cwd,
|
|
8
|
-
encoding: 'utf-8',
|
|
9
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
10
|
-
});
|
|
11
|
-
const trimmed = result.trim();
|
|
12
|
-
if (!trimmed || (!trimmed.startsWith('[') && !trimmed.startsWith('{'))) {
|
|
13
|
-
return [];
|
|
14
|
-
}
|
|
15
|
-
return JSON.parse(trimmed);
|
|
16
|
-
}
|
|
17
|
-
/** Sync variant — only for constructor use (auth check). */
|
|
18
|
-
export function glabExecSync(args, cwd) {
|
|
19
|
-
return execFileSync('glab', args, {
|
|
20
|
-
cwd,
|
|
21
|
-
encoding: 'utf-8',
|
|
22
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
export async function glab(args, cwd) {
|
|
26
|
-
const { stdout } = await execFileAsync('glab', args, {
|
|
27
|
-
cwd,
|
|
28
|
-
encoding: 'utf-8',
|
|
29
|
-
});
|
|
30
|
-
const trimmed = stdout.trim();
|
|
31
|
-
if (!trimmed || (!trimmed.startsWith('[') && !trimmed.startsWith('{'))) {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
return JSON.parse(trimmed);
|
|
35
|
-
}
|
|
36
|
-
export async function glabExec(args, cwd) {
|
|
37
|
-
const { stdout } = await execFileAsync('glab', args, {
|
|
38
|
-
cwd,
|
|
39
|
-
encoding: 'utf-8',
|
|
40
|
-
});
|
|
41
|
-
return stdout;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=glab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"glab.js","sourceRoot":"","sources":["../../../src/backends/gitlab/glab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,4DAA4D;AAC5D,MAAM,UAAU,QAAQ,CAAI,IAAc,EAAE,GAAW;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE;QACxC,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,GAAW;IACtD,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE;QAChC,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAI,IAAc,EAAE,GAAW;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;QACnD,GAAG;QACH,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAW;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;QACnD,GAAG;QACH,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function detectGroup(cwd: string): string;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
|
-
export function detectGroup(cwd) {
|
|
3
|
-
const output = execSync('git remote -v', {
|
|
4
|
-
cwd,
|
|
5
|
-
encoding: 'utf-8',
|
|
6
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
7
|
-
});
|
|
8
|
-
const lines = output.split('\n');
|
|
9
|
-
for (const line of lines) {
|
|
10
|
-
// SSH: git@gitlab.com:group/subgroup/project.git
|
|
11
|
-
const sshMatch = line.match(/gitlab\.com:(.+?)\.git/);
|
|
12
|
-
if (sshMatch) {
|
|
13
|
-
const fullPath = sshMatch[1];
|
|
14
|
-
const segments = fullPath.split('/');
|
|
15
|
-
if (segments.length < 2) {
|
|
16
|
-
throw new Error(`Invalid GitLab remote path: ${fullPath} (expected group/project)`);
|
|
17
|
-
}
|
|
18
|
-
return segments.slice(0, -1).join('/');
|
|
19
|
-
}
|
|
20
|
-
// HTTPS: https://gitlab.com/group/subgroup/project.git
|
|
21
|
-
const httpsMatch = line.match(/gitlab\.com\/(.+?)\.git/);
|
|
22
|
-
if (httpsMatch) {
|
|
23
|
-
const fullPath = httpsMatch[1];
|
|
24
|
-
const segments = fullPath.split('/');
|
|
25
|
-
if (segments.length < 2) {
|
|
26
|
-
throw new Error(`Invalid GitLab remote path: ${fullPath} (expected group/project)`);
|
|
27
|
-
}
|
|
28
|
-
return segments.slice(0, -1).join('/');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
throw new Error('No GitLab remote found in git remotes');
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=group.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/backends/gitlab/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE;QACvC,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,2BAA2B,CACnE,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,uDAAuD;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,2BAA2B,CACnE,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC"}
|