@awcp/transport-git 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ import type { DelegatorTransportAdapter, TransportCapabilities, TransportPrepareParams, TransportHandle, TransportApplySnapshotParams } from '@awcp/core';
2
+ import type { GitDelegatorTransportConfig } from '../types.js';
3
+ export declare class GitDelegatorTransport implements DelegatorTransportAdapter {
4
+ readonly type: "git";
5
+ readonly capabilities: TransportCapabilities;
6
+ private config;
7
+ private tempDir;
8
+ private activeRepos;
9
+ constructor(config: GitDelegatorTransportConfig);
10
+ initialize(): Promise<void>;
11
+ shutdown(): Promise<void>;
12
+ prepare(params: TransportPrepareParams): Promise<TransportHandle>;
13
+ applySnapshot(params: TransportApplySnapshotParams): Promise<void>;
14
+ detach(_delegationId: string): Promise<void>;
15
+ release(delegationId: string): Promise<void>;
16
+ private cleanOrphanedRepos;
17
+ }
18
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/delegator/transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EAEf,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,2BAA2B,EAAmB,MAAM,aAAa,CAAC;AAGhF,qBAAa,qBAAsB,YAAW,yBAAyB;IACrE,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAG1C;IAEF,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA+D;gBAEtE,MAAM,EAAE,2BAA2B;IAKzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqCjE,aAAa,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlE,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAYpC,kBAAkB;CASjC"}
@@ -0,0 +1,88 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { applyResultToResources } from '@awcp/transport-archive';
5
+ import { execGit, configureAuth } from '../utils/index.js';
6
+ export class GitDelegatorTransport {
7
+ type = 'git';
8
+ capabilities = {
9
+ supportsSnapshots: true,
10
+ liveSync: false,
11
+ };
12
+ config;
13
+ tempDir;
14
+ activeRepos = new Map();
15
+ constructor(config) {
16
+ this.config = config;
17
+ this.tempDir = config.tempDir ?? path.join(os.tmpdir(), 'awcp-git');
18
+ }
19
+ async initialize() {
20
+ await fs.promises.mkdir(this.tempDir, { recursive: true });
21
+ await this.cleanOrphanedRepos();
22
+ }
23
+ async shutdown() {
24
+ await this.cleanOrphanedRepos();
25
+ }
26
+ async prepare(params) {
27
+ const { delegationId, exportPath } = params;
28
+ const gitWorkDir = path.join(this.tempDir, delegationId);
29
+ await fs.promises.mkdir(this.tempDir, { recursive: true });
30
+ // Clean up existing repo if resuming
31
+ await fs.promises.rm(gitWorkDir, { recursive: true, force: true });
32
+ // Copy workspace files (dereference symlinks)
33
+ await fs.promises.cp(exportPath, gitWorkDir, { recursive: true, dereference: true });
34
+ await fs.promises.rm(path.join(gitWorkDir, '.awcp'), { recursive: true, force: true });
35
+ // Initialize git and commit
36
+ await execGit(gitWorkDir, ['init']);
37
+ await execGit(gitWorkDir, ['add', '-A']);
38
+ await execGit(gitWorkDir, ['commit', '-m', `AWCP: Initial workspace for ${delegationId}`, '--allow-empty']);
39
+ const baseCommit = (await execGit(gitWorkDir, ['rev-parse', 'HEAD'])).trim();
40
+ // Configure remote and push
41
+ await configureAuth(gitWorkDir, this.config.auth);
42
+ await execGit(gitWorkDir, ['remote', 'add', 'origin', this.config.remoteUrl]);
43
+ await execGit(gitWorkDir, ['push', '-u', 'origin', 'main', '--force']);
44
+ this.activeRepos.set(delegationId, { workDir: gitWorkDir });
45
+ const handle = {
46
+ transport: 'git',
47
+ repoUrl: this.config.remoteUrl,
48
+ baseBranch: 'main',
49
+ baseCommit,
50
+ auth: this.config.auth,
51
+ };
52
+ return handle;
53
+ }
54
+ async applySnapshot(params) {
55
+ const { delegationId, snapshotData, resources } = params;
56
+ const snapshotInfo = JSON.parse(snapshotData);
57
+ const repo = this.activeRepos.get(delegationId);
58
+ if (!repo) {
59
+ throw new Error(`GitDelegatorTransport: no active repo for delegation ${delegationId}`);
60
+ }
61
+ await execGit(repo.workDir, ['fetch', 'origin', snapshotInfo.branch]);
62
+ await execGit(repo.workDir, ['merge', `origin/${snapshotInfo.branch}`, '--no-edit']);
63
+ await applyResultToResources(repo.workDir, resources);
64
+ // Remember task branch for remote cleanup in release()
65
+ repo.taskBranch = snapshotInfo.branch;
66
+ }
67
+ async detach(_delegationId) { }
68
+ async release(delegationId) {
69
+ const repo = this.activeRepos.get(delegationId);
70
+ if (!repo)
71
+ return;
72
+ if (this.config.deleteRemoteBranch !== false && repo.taskBranch) {
73
+ await execGit(repo.workDir, ['push', 'origin', '--delete', repo.taskBranch]).catch(() => { });
74
+ }
75
+ await fs.promises.rm(repo.workDir, { recursive: true, force: true });
76
+ this.activeRepos.delete(delegationId);
77
+ }
78
+ async cleanOrphanedRepos() {
79
+ const activeWorkDirs = new Set([...this.activeRepos.values()].map((r) => path.basename(r.workDir)));
80
+ const entries = await fs.promises.readdir(this.tempDir).catch(() => []);
81
+ for (const entry of entries) {
82
+ if (!activeWorkDirs.has(entry)) {
83
+ await fs.promises.rm(path.join(this.tempDir, entry), { recursive: true, force: true }).catch(() => { });
84
+ }
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/delegator/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ExecutorTransportAdapter, TransportCapabilities, TransportSetupParams, TransportReleaseParams, TransportCaptureSnapshotParams, TransportCaptureSnapshotResult, DependencyCheckResult } from '@awcp/core';
2
+ import type { GitExecutorTransportConfig } from '../types.js';
3
+ export declare class GitExecutorTransport implements ExecutorTransportAdapter {
4
+ readonly type: "git";
5
+ readonly capabilities: TransportCapabilities;
6
+ private tempDir;
7
+ private branchPrefix;
8
+ private activeSetups;
9
+ constructor(config?: GitExecutorTransportConfig);
10
+ initialize(): Promise<void>;
11
+ shutdown(): Promise<void>;
12
+ checkDependency(): Promise<DependencyCheckResult>;
13
+ setup(params: TransportSetupParams): Promise<string>;
14
+ captureSnapshot(params: TransportCaptureSnapshotParams): Promise<TransportCaptureSnapshotResult>;
15
+ detach(params: TransportReleaseParams): Promise<void>;
16
+ release(params: TransportReleaseParams): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/executor/transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,8BAA8B,EAC9B,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,0BAA0B,EAAmB,MAAM,aAAa,CAAC;AAG/E,qBAAa,oBAAqB,YAAW,wBAAwB;IACnE,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAG1C;IAEF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAiE;gBAEzE,MAAM,GAAE,0BAA+B;IAK7C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IASjD,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoCpD,eAAe,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAiChG,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAI7D"}
@@ -0,0 +1,96 @@
1
+ import * as path from 'node:path';
2
+ import * as os from 'node:os';
3
+ import * as fs from 'node:fs';
4
+ import { execGit, configureAuth, cleanupAuth } from '../utils/index.js';
5
+ export class GitExecutorTransport {
6
+ type = 'git';
7
+ capabilities = {
8
+ supportsSnapshots: true,
9
+ liveSync: false,
10
+ };
11
+ tempDir;
12
+ branchPrefix;
13
+ activeSetups = new Map();
14
+ constructor(config = {}) {
15
+ this.tempDir = config.tempDir ?? path.join(os.tmpdir(), 'awcp-git');
16
+ this.branchPrefix = config.branchPrefix ?? 'awcp/';
17
+ }
18
+ async initialize() {
19
+ await fs.promises.mkdir(this.tempDir, { recursive: true });
20
+ }
21
+ async shutdown() {
22
+ this.activeSetups.clear();
23
+ }
24
+ async checkDependency() {
25
+ try {
26
+ await execGit(null, ['--version']);
27
+ return { available: true };
28
+ }
29
+ catch {
30
+ return { available: false, hint: 'Git is not installed or not in PATH' };
31
+ }
32
+ }
33
+ async setup(params) {
34
+ const { delegationId, handle, localPath } = params;
35
+ if (handle.transport !== 'git') {
36
+ throw new Error(`GitExecutorTransport: unexpected transport type: ${handle.transport}`);
37
+ }
38
+ const gitHandle = handle;
39
+ // Clone repository
40
+ await execGit(null, [
41
+ 'clone',
42
+ '--branch', gitHandle.baseBranch,
43
+ '--single-branch',
44
+ gitHandle.repoUrl,
45
+ localPath,
46
+ ]);
47
+ // Configure auth for push
48
+ await configureAuth(localPath, gitHandle.auth);
49
+ // Create task branch
50
+ const taskBranch = `${this.branchPrefix}${delegationId}`;
51
+ await execGit(localPath, ['checkout', '-b', taskBranch]);
52
+ // Configure git user
53
+ await execGit(localPath, ['config', 'user.name', 'AWCP Executor']);
54
+ await execGit(localPath, ['config', 'user.email', 'executor@awcp.local']);
55
+ this.activeSetups.set(delegationId, {
56
+ baseCommit: gitHandle.baseCommit,
57
+ taskBranch,
58
+ });
59
+ return localPath;
60
+ }
61
+ async captureSnapshot(params) {
62
+ const { delegationId, localPath } = params;
63
+ const setup = this.activeSetups.get(delegationId);
64
+ if (!setup) {
65
+ throw new Error(`GitExecutorTransport: no active setup for delegation ${delegationId}`);
66
+ }
67
+ // Commit any uncommitted changes
68
+ const status = await execGit(localPath, ['status', '--porcelain']);
69
+ if (status.trim()) {
70
+ await execGit(localPath, ['add', '-A']);
71
+ await execGit(localPath, ['commit', '-m', `AWCP: Task completed for ${delegationId}`]);
72
+ }
73
+ // Push task branch
74
+ await execGit(localPath, ['push', '-u', 'origin', setup.taskBranch]);
75
+ // Build snapshot info
76
+ const commitHash = (await execGit(localPath, ['rev-parse', 'HEAD'])).trim();
77
+ const changedFilesOutput = await execGit(localPath, ['diff', '--name-only', setup.baseCommit, 'HEAD']);
78
+ const changedFiles = changedFilesOutput.trim().split('\n').filter(Boolean);
79
+ const snapshotInfo = {
80
+ branch: setup.taskBranch,
81
+ commitHash,
82
+ baseCommit: setup.baseCommit,
83
+ changedFiles,
84
+ };
85
+ return { snapshotBase64: JSON.stringify(snapshotInfo) };
86
+ }
87
+ async detach(params) {
88
+ await cleanupAuth(params.localPath).catch(() => { });
89
+ this.activeSetups.delete(params.delegationId);
90
+ }
91
+ async release(params) {
92
+ await cleanupAuth(params.localPath).catch(() => { });
93
+ this.activeSetups.delete(params.delegationId);
94
+ }
95
+ }
96
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/executor/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAY9B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,KAAc,CAAC;IACtB,YAAY,GAA0B;QAC7C,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEM,OAAO,CAAS;IAChB,YAAY,CAAS;IACrB,YAAY,GAAG,IAAI,GAAG,EAAsD,CAAC;IAErF,YAAY,SAAqC,EAAE;QACjD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YACnC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAA4B;QACtC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEnD,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oDAAoD,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,SAAS,GAAG,MAA4B,CAAC;QAE/C,mBAAmB;QACnB,MAAM,OAAO,CAAC,IAAI,EAAE;YAClB,OAAO;YACP,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,iBAAiB;YACjB,SAAS,CAAC,OAAO;YACjB,SAAS;SACV,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/C,qBAAqB;QACrB,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEzD,qBAAqB;QACrB,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE;YAClC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU;SACX,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAsC;QAC1D,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAElD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,4BAA4B,YAAY,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAErE,sBAAsB;QACtB,MAAM,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACvG,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3E,MAAM,YAAY,GAAoB;YACpC,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,UAAU;YACV,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY;SACb,CAAC;QAEF,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA8B;QACzC,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAA8B;QAC1C,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  * Git-based transport for AWCP workspace delegation.
5
5
  * Supports GitHub, GitLab, Gitea, and self-hosted Git servers.
6
6
  */
7
- export { GitTransport } from './git-transport.js';
8
- export type { GitTransportConfig, GitDelegatorConfig, GitExecutorConfig, GitSnapshotInfo, } from './types.js';
7
+ export { GitDelegatorTransport } from './delegator/transport.js';
8
+ export { GitExecutorTransport } from './executor/transport.js';
9
+ export type { GitDelegatorTransportConfig, GitExecutorTransportConfig } from './types.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,YAAY,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@
4
4
  * Git-based transport for AWCP workspace delegation.
5
5
  * Supports GitHub, GitLab, Gitea, and self-hosted Git servers.
6
6
  */
7
- export { GitTransport } from './git-transport.js';
7
+ export { GitDelegatorTransport } from './delegator/transport.js';
8
+ export { GitExecutorTransport } from './executor/transport.js';
8
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,20 +1,16 @@
1
+ /**
2
+ * Git Transport Configuration Types
3
+ */
1
4
  import type { GitCredential } from '@awcp/core';
2
- export type { GitWorkDirInfo, GitCredential } from '@awcp/core';
3
- export interface GitDelegatorConfig {
5
+ export interface GitDelegatorTransportConfig {
4
6
  remoteUrl: string;
5
7
  auth: GitCredential;
6
8
  tempDir?: string;
7
- branchPrefix?: string;
8
- cleanupRemoteBranch?: boolean;
9
+ deleteRemoteBranch?: boolean;
9
10
  }
10
- export interface GitExecutorConfig {
11
+ export interface GitExecutorTransportConfig {
11
12
  tempDir?: string;
12
- gitPath?: string;
13
- cloneTimeout?: number;
14
- }
15
- export interface GitTransportConfig {
16
- delegator?: GitDelegatorConfig;
17
- executor?: GitExecutorConfig;
13
+ branchPrefix?: string;
18
14
  }
19
15
  export interface GitSnapshotInfo {
20
16
  branch: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB"}
package/dist/types.js CHANGED
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Git Transport Configuration Types
3
+ */
1
4
  export {};
2
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awcp/transport-git",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "AWCP Git Transport - Git-based workspace transfer with version history",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,8 +22,8 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@awcp/core": "^0.0.16",
26
- "@awcp/transport-archive": "^0.0.16"
25
+ "@awcp/core": "^0.0.18",
26
+ "@awcp/transport-archive": "^0.0.18"
27
27
  },
28
28
  "keywords": [
29
29
  "awcp",
@@ -1,26 +0,0 @@
1
- /**
2
- * Git Transport Adapter
3
- *
4
- * Implements TransportAdapter interface for Git-based workspace transfer.
5
- * Supports GitHub, GitLab, Gitea, and self-hosted Git servers.
6
- */
7
- import type { TransportAdapter, TransportCapabilities, TransportPrepareParams, TransportPrepareResult, TransportSetupParams, TransportTeardownParams, TransportTeardownResult, TransportApplySnapshotParams, DependencyCheckResult } from '@awcp/core';
8
- import type { GitTransportConfig } from './types.js';
9
- export declare class GitTransport implements TransportAdapter {
10
- readonly type: "git";
11
- readonly capabilities: TransportCapabilities;
12
- private tempDir;
13
- private branchPrefix;
14
- private config;
15
- private activeRepos;
16
- private activeSetups;
17
- constructor(config?: GitTransportConfig);
18
- prepare(params: TransportPrepareParams): Promise<TransportPrepareResult>;
19
- applySnapshot(params: TransportApplySnapshotParams): Promise<void>;
20
- cleanup(delegationId: string): Promise<void>;
21
- shutdown(): Promise<void>;
22
- checkDependency(): Promise<DependencyCheckResult>;
23
- setup(params: TransportSetupParams): Promise<string>;
24
- teardown(params: TransportTeardownParams): Promise<TransportTeardownResult>;
25
- }
26
- //# sourceMappingURL=git-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-transport.d.ts","sourceRoot":"","sources":["../src/git-transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,YAAY,CAAC;AAGtE,qBAAa,YAAa,YAAW,gBAAgB;IACnD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAG1C;IAEF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA0D;IAC7E,OAAO,CAAC,YAAY,CAAgE;gBAExE,MAAM,GAAE,kBAAuB;IAQrC,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwCxE,aAAa,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQzB,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IASjD,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCpD,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAsClF"}
@@ -1,151 +0,0 @@
1
- /**
2
- * Git Transport Adapter
3
- *
4
- * Implements TransportAdapter interface for Git-based workspace transfer.
5
- * Supports GitHub, GitLab, Gitea, and self-hosted Git servers.
6
- */
7
- import * as fs from 'node:fs';
8
- import * as path from 'node:path';
9
- import * as os from 'node:os';
10
- import { applyResultToResources } from '@awcp/transport-archive';
11
- import { execGit, configureAuth, cleanupAuth } from './utils/index.js';
12
- export class GitTransport {
13
- type = 'git';
14
- capabilities = {
15
- supportsSnapshots: true,
16
- liveSync: false,
17
- };
18
- tempDir;
19
- branchPrefix;
20
- config;
21
- activeRepos = new Map();
22
- activeSetups = new Map();
23
- constructor(config = {}) {
24
- this.config = config;
25
- this.tempDir = config.delegator?.tempDir ?? config.executor?.tempDir ?? path.join(os.tmpdir(), 'awcp-git');
26
- this.branchPrefix = config.delegator?.branchPrefix ?? 'awcp/';
27
- }
28
- // ========== Delegator Side ==========
29
- async prepare(params) {
30
- const { delegationId, exportPath } = params;
31
- const delegatorConfig = this.config.delegator;
32
- if (!delegatorConfig?.remoteUrl) {
33
- throw new Error('GitTransport: delegator.remoteUrl is required');
34
- }
35
- await fs.promises.mkdir(this.tempDir, { recursive: true });
36
- const gitWorkDir = path.join(this.tempDir, delegationId);
37
- // Copy files (dereference symlinks)
38
- await fs.promises.cp(exportPath, gitWorkDir, { recursive: true, dereference: true });
39
- await fs.promises.rm(path.join(gitWorkDir, '.awcp'), { recursive: true, force: true });
40
- // Initialize git and commit
41
- await execGit(gitWorkDir, ['init']);
42
- await execGit(gitWorkDir, ['add', '-A']);
43
- await execGit(gitWorkDir, ['commit', '-m', `AWCP: Initial workspace for ${delegationId}`, '--allow-empty']);
44
- const baseCommit = (await execGit(gitWorkDir, ['rev-parse', 'HEAD'])).trim();
45
- // Configure remote and push
46
- await configureAuth(gitWorkDir, delegatorConfig.auth);
47
- await execGit(gitWorkDir, ['remote', 'add', 'origin', delegatorConfig.remoteUrl]);
48
- await execGit(gitWorkDir, ['push', '-u', 'origin', 'main', '--force']);
49
- this.activeRepos.set(delegationId, { workDir: gitWorkDir, branch: 'main' });
50
- const workDirInfo = {
51
- transport: 'git',
52
- repoUrl: delegatorConfig.remoteUrl,
53
- baseBranch: 'main',
54
- baseCommit,
55
- auth: delegatorConfig.auth,
56
- };
57
- return { workDirInfo };
58
- }
59
- async applySnapshot(params) {
60
- const { delegationId, snapshotData, resources } = params;
61
- const snapshotInfo = JSON.parse(snapshotData);
62
- const repo = this.activeRepos.get(delegationId);
63
- if (!repo) {
64
- throw new Error(`GitTransport: No active repo for delegation ${delegationId}`);
65
- }
66
- await execGit(repo.workDir, ['fetch', 'origin', snapshotInfo.branch]);
67
- await execGit(repo.workDir, ['merge', `origin/${snapshotInfo.branch}`, '--no-edit']);
68
- await applyResultToResources(repo.workDir, resources);
69
- }
70
- async cleanup(delegationId) {
71
- const repo = this.activeRepos.get(delegationId);
72
- if (!repo)
73
- return;
74
- if (this.config.delegator?.cleanupRemoteBranch !== false) {
75
- const taskBranch = `${this.branchPrefix}${delegationId}`;
76
- await execGit(repo.workDir, ['push', 'origin', '--delete', taskBranch]).catch(() => { });
77
- }
78
- await fs.promises.rm(repo.workDir, { recursive: true, force: true });
79
- this.activeRepos.delete(delegationId);
80
- }
81
- async shutdown() {
82
- for (const [delegationId] of this.activeRepos) {
83
- await this.cleanup(delegationId);
84
- }
85
- }
86
- // ========== Executor Side ==========
87
- async checkDependency() {
88
- try {
89
- await execGit(null, ['--version']);
90
- return { available: true };
91
- }
92
- catch {
93
- return { available: false, hint: 'Git is not installed or not in PATH' };
94
- }
95
- }
96
- async setup(params) {
97
- const { delegationId, workDirInfo, workDir } = params;
98
- if (workDirInfo.transport !== 'git') {
99
- throw new Error(`GitTransport: unexpected transport type: ${workDirInfo.transport}`);
100
- }
101
- const info = workDirInfo;
102
- // Clone repository
103
- await execGit(null, [
104
- 'clone',
105
- '--branch', info.baseBranch,
106
- '--single-branch',
107
- info.repoUrl,
108
- workDir,
109
- ]);
110
- // Configure auth for push
111
- await configureAuth(workDir, info.auth);
112
- // Create task branch
113
- const taskBranch = `${this.branchPrefix}${delegationId}`;
114
- await execGit(workDir, ['checkout', '-b', taskBranch]);
115
- // Configure git user
116
- await execGit(workDir, ['config', 'user.name', 'AWCP Executor']);
117
- await execGit(workDir, ['config', 'user.email', 'executor@awcp.local']);
118
- this.activeSetups.set(delegationId, { workDir, info });
119
- return workDir;
120
- }
121
- async teardown(params) {
122
- const { delegationId, workDir } = params;
123
- const setup = this.activeSetups.get(delegationId);
124
- if (!setup) {
125
- return {};
126
- }
127
- const taskBranch = `${this.branchPrefix}${delegationId}`;
128
- // Check for changes
129
- const status = await execGit(workDir, ['status', '--porcelain']);
130
- if (status.trim()) {
131
- await execGit(workDir, ['add', '-A']);
132
- await execGit(workDir, ['commit', '-m', `AWCP: Task completed for ${delegationId}`]);
133
- }
134
- // Push task branch
135
- await execGit(workDir, ['push', '-u', 'origin', taskBranch]);
136
- // Get snapshot info
137
- const commitHash = (await execGit(workDir, ['rev-parse', 'HEAD'])).trim();
138
- const changedFilesOutput = await execGit(workDir, ['diff', '--name-only', setup.info.baseCommit, 'HEAD']);
139
- const changedFiles = changedFilesOutput.trim().split('\n').filter(Boolean);
140
- this.activeSetups.delete(delegationId);
141
- await cleanupAuth(workDir);
142
- const snapshotInfo = {
143
- branch: taskBranch,
144
- commitHash,
145
- baseCommit: setup.info.baseCommit,
146
- changedFiles,
147
- };
148
- return { snapshotBase64: JSON.stringify(snapshotInfo) };
149
- }
150
- }
151
- //# sourceMappingURL=git-transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-transport.js","sourceRoot":"","sources":["../src/git-transport.ts"],"names":[],"mappings":"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"}