@agentteams/runner 0.0.108 → 0.0.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client.js +6 -0
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.js +21 -12
- package/dist/api-client.test.js.map +1 -1
- package/dist/handlers/trigger-handler.js +24 -4
- package/dist/handlers/trigger-handler.js.map +1 -1
- package/dist/handlers/trigger-handler.test.js +296 -13
- package/dist/handlers/trigger-handler.test.js.map +1 -1
- package/dist/runners/amp.js +2 -2
- package/dist/runners/amp.js.map +1 -1
- package/dist/runners/antigravity.d.ts +5 -2
- package/dist/runners/antigravity.js +30 -16
- package/dist/runners/antigravity.js.map +1 -1
- package/dist/runners/antigravity.test.js +9 -8
- package/dist/runners/antigravity.test.js.map +1 -1
- package/dist/runners/claude-code.js +2 -2
- package/dist/runners/claude-code.js.map +1 -1
- package/dist/runners/codex-json-parser.d.ts +17 -0
- package/dist/runners/codex-json-parser.js +207 -0
- package/dist/runners/codex-json-parser.js.map +1 -0
- package/dist/runners/codex-json-parser.test.d.ts +1 -0
- package/dist/runners/codex-json-parser.test.js +77 -0
- package/dist/runners/codex-json-parser.test.js.map +1 -0
- package/dist/runners/codex.js +25 -13
- package/dist/runners/codex.js.map +1 -1
- package/dist/runners/codex.test.js +6 -0
- package/dist/runners/codex.test.js.map +1 -1
- package/dist/runners/copilot-cli.js +22 -10
- package/dist/runners/copilot-cli.js.map +1 -1
- package/dist/runners/copilot-cli.test.js +20 -4
- package/dist/runners/copilot-cli.test.js.map +1 -1
- package/dist/runners/copilot-json-parser.d.ts +18 -0
- package/dist/runners/copilot-json-parser.js +154 -0
- package/dist/runners/copilot-json-parser.js.map +1 -0
- package/dist/runners/copilot-json-parser.test.d.ts +1 -0
- package/dist/runners/copilot-json-parser.test.js +59 -0
- package/dist/runners/copilot-json-parser.test.js.map +1 -0
- package/dist/runners/cursor-cli.js +2 -2
- package/dist/runners/cursor-cli.js.map +1 -1
- package/dist/runners/kimi-cli.js +1 -1
- package/dist/runners/kimi-cli.js.map +1 -1
- package/dist/runners/log-reporter.d.ts +2 -2
- package/dist/runners/log-reporter.js +19 -14
- package/dist/runners/log-reporter.js.map +1 -1
- package/dist/runners/log-reporter.test.js +49 -12
- package/dist/runners/log-reporter.test.js.map +1 -1
- package/dist/runners/opencode-json-parser.js +12 -4
- package/dist/runners/opencode-json-parser.js.map +1 -1
- package/dist/runners/opencode-json-parser.test.js +11 -6
- package/dist/runners/opencode-json-parser.test.js.map +1 -1
- package/dist/runners/opencode.js +2 -2
- package/dist/runners/opencode.js.map +1 -1
- package/dist/runners/stream-json-parser.d.ts +3 -0
- package/dist/runners/stream-json-parser.js +34 -10
- package/dist/runners/stream-json-parser.js.map +1 -1
- package/dist/runners/stream-json-parser.test.js +21 -10
- package/dist/runners/stream-json-parser.test.js.map +1 -1
- package/dist/runners/types.d.ts +3 -2
- package/dist/types.d.ts +3 -0
- package/dist/utils/machine-id.d.ts +32 -0
- package/dist/utils/machine-id.js +88 -0
- package/dist/utils/machine-id.js.map +1 -0
- package/dist/utils/machine-id.test.d.ts +1 -0
- package/dist/utils/machine-id.test.js +97 -0
- package/dist/utils/machine-id.test.js.map +1 -0
- package/dist/utils/working-directory.d.ts +27 -0
- package/dist/utils/working-directory.js +96 -0
- package/dist/utils/working-directory.js.map +1 -0
- package/dist/utils/working-directory.test.d.ts +1 -0
- package/dist/utils/working-directory.test.js +145 -0
- package/dist/utils/working-directory.test.js.map +1 -0
- package/native/bin/win32-x64/agentrunner-launcher.exe +0 -0
- package/native/bin/win32-x64/manifest.json +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-json-parser.test.js","sourceRoot":"","sources":["../../src/runners/stream-json-parser.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream-json-parser.test.js","sourceRoot":"","sources":["../../src/runners/stream-json-parser.test.ts"],"names":[],"mappings":"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"}
|
package/dist/runners/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TriggerLogCategory } from '../types.js';
|
|
1
2
|
export interface Runner {
|
|
2
3
|
run(opts: RunnerOptions): Promise<RunResult>;
|
|
3
4
|
}
|
|
@@ -16,8 +17,8 @@ export interface RunnerOptions {
|
|
|
16
17
|
fastMode?: boolean;
|
|
17
18
|
effort?: string | null;
|
|
18
19
|
signal?: AbortSignal;
|
|
19
|
-
onStdoutChunk?: (chunk: string) => void;
|
|
20
|
-
onStderrChunk?: (chunk: string) => void;
|
|
20
|
+
onStdoutChunk?: (chunk: string, category: TriggerLogCategory, toolName?: string) => void;
|
|
21
|
+
onStderrChunk?: (chunk: string, category: 'STDERR') => void;
|
|
21
22
|
}
|
|
22
23
|
export type RunResult = {
|
|
23
24
|
exitCode: number;
|
package/dist/types.d.ts
CHANGED
|
@@ -110,8 +110,11 @@ export type TriggerRuntimeAttachment = {
|
|
|
110
110
|
expiresInSeconds: number;
|
|
111
111
|
};
|
|
112
112
|
export type TriggerLogLevel = 'INFO' | 'WARN' | 'ERROR';
|
|
113
|
+
export type TriggerLogCategory = 'SYSTEM' | 'TEXT' | 'THINKING' | 'TOOL' | 'RESULT' | 'STDERR';
|
|
113
114
|
export type TriggerLogInput = {
|
|
114
115
|
level: TriggerLogLevel;
|
|
116
|
+
category?: TriggerLogCategory;
|
|
117
|
+
toolName?: string;
|
|
115
118
|
message: string;
|
|
116
119
|
};
|
|
117
120
|
export type DiscoveryRepository = {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 머신 단위 신원(machineId).
|
|
3
|
+
*
|
|
4
|
+
* 러너와 CLI가 **같은 파일**을 공유해, "이 에이전트는 어느 머신에 등록됐는가"와 "이 러너는 어느
|
|
5
|
+
* 머신에서 도는가"를 서버가 대조할 수 있게 한다. 비밀값이 아니며 인증/인가 판정에는 쓰지 않는다
|
|
6
|
+
* (토큰 인증 이후의 부가 식별 정보).
|
|
7
|
+
*
|
|
8
|
+
* 파일 위치는 러너 설정(`~/.agentteams/daemon.json`)과 같은 디렉터리이지만, 토큰과 달리
|
|
9
|
+
* 자격증명이 아니므로 러너 설정과 분리해 CLI도 읽을 수 있게 둔다.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getMachineIdPath: () => string;
|
|
12
|
+
export type MachineIdFileDependencies = {
|
|
13
|
+
path?: string;
|
|
14
|
+
readFile?: (path: string) => string;
|
|
15
|
+
writeFileExclusive?: (path: string, content: string) => void;
|
|
16
|
+
writeFileOverwrite?: (path: string, content: string) => void;
|
|
17
|
+
generateId?: () => string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* machineId 파일을 읽고, 없으면 생성해 반환한다.
|
|
21
|
+
*
|
|
22
|
+
* 같은 머신에서 러너와 CLI가 동시에 실행될 수 있으므로 생성은 배타 쓰기(`wx`)로 수행하고,
|
|
23
|
+
* 경쟁에서 진 쪽은 먼저 만들어진 값을 다시 읽어 같은 값을 반환한다. 어떤 이유로든 읽기·쓰기가
|
|
24
|
+
* 모두 실패하면 `null`을 반환해 호출자가 machineId 없이 계속 진행하게 한다(기능 저하만 발생).
|
|
25
|
+
*/
|
|
26
|
+
export declare const readOrCreateMachineId: (dependencies?: MachineIdFileDependencies) => string | null;
|
|
27
|
+
/**
|
|
28
|
+
* 프로세스 수명 동안 machineId를 한 번만 해석해 재사용한다(요청마다 파일 I/O를 하지 않는다).
|
|
29
|
+
*/
|
|
30
|
+
export declare const getMachineId: () => string | null;
|
|
31
|
+
/** 테스트 전용: 캐시를 비운다. */
|
|
32
|
+
export declare const resetMachineIdCache: () => void;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
/**
|
|
6
|
+
* 머신 단위 신원(machineId).
|
|
7
|
+
*
|
|
8
|
+
* 러너와 CLI가 **같은 파일**을 공유해, "이 에이전트는 어느 머신에 등록됐는가"와 "이 러너는 어느
|
|
9
|
+
* 머신에서 도는가"를 서버가 대조할 수 있게 한다. 비밀값이 아니며 인증/인가 판정에는 쓰지 않는다
|
|
10
|
+
* (토큰 인증 이후의 부가 식별 정보).
|
|
11
|
+
*
|
|
12
|
+
* 파일 위치는 러너 설정(`~/.agentteams/daemon.json`)과 같은 디렉터리이지만, 토큰과 달리
|
|
13
|
+
* 자격증명이 아니므로 러너 설정과 분리해 CLI도 읽을 수 있게 둔다.
|
|
14
|
+
*/
|
|
15
|
+
export const getMachineIdPath = () => join(homedir(), '.agentteams', 'machine-id');
|
|
16
|
+
const normalizeMachineId = (rawValue) => {
|
|
17
|
+
const normalized = rawValue.trim();
|
|
18
|
+
return normalized.length > 0 ? normalized : null;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* machineId 파일을 읽고, 없으면 생성해 반환한다.
|
|
22
|
+
*
|
|
23
|
+
* 같은 머신에서 러너와 CLI가 동시에 실행될 수 있으므로 생성은 배타 쓰기(`wx`)로 수행하고,
|
|
24
|
+
* 경쟁에서 진 쪽은 먼저 만들어진 값을 다시 읽어 같은 값을 반환한다. 어떤 이유로든 읽기·쓰기가
|
|
25
|
+
* 모두 실패하면 `null`을 반환해 호출자가 machineId 없이 계속 진행하게 한다(기능 저하만 발생).
|
|
26
|
+
*/
|
|
27
|
+
export const readOrCreateMachineId = (dependencies = {}) => {
|
|
28
|
+
const path = dependencies.path ?? getMachineIdPath();
|
|
29
|
+
const readFile = dependencies.readFile ?? ((target) => readFileSync(target, 'utf8'));
|
|
30
|
+
const generateId = dependencies.generateId ?? randomUUID;
|
|
31
|
+
const writeFile = (target, content, exclusive) => {
|
|
32
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
33
|
+
writeFileSync(target, content, { encoding: 'utf8', flag: exclusive ? 'wx' : 'w', mode: 0o600 });
|
|
34
|
+
// umask의 영향을 받지 않도록 권한을 명시적으로 고정한다.
|
|
35
|
+
chmodSync(target, 0o600);
|
|
36
|
+
};
|
|
37
|
+
const writeFileExclusive = dependencies.writeFileExclusive ?? ((target, content) => writeFile(target, content, true));
|
|
38
|
+
const writeFileOverwrite = dependencies.writeFileOverwrite ?? ((target, content) => writeFile(target, content, false));
|
|
39
|
+
try {
|
|
40
|
+
const existing = normalizeMachineId(readFile(path));
|
|
41
|
+
if (existing) {
|
|
42
|
+
return existing;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// 파일이 없거나 읽을 수 없으면 아래에서 생성을 시도한다.
|
|
47
|
+
}
|
|
48
|
+
const generated = generateId();
|
|
49
|
+
try {
|
|
50
|
+
writeFileExclusive(path, `${generated}\n`);
|
|
51
|
+
return generated;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// 배타 쓰기 실패는 두 경우다: (1) 다른 프로세스가 먼저 만들었다 → 그 값을 쓴다,
|
|
55
|
+
// (2) 파일은 있는데 비어 있다(중단된 쓰기 등) → 스스로 복구해 다시 채운다.
|
|
56
|
+
try {
|
|
57
|
+
const raced = normalizeMachineId(readFile(path));
|
|
58
|
+
if (raced) {
|
|
59
|
+
return raced;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
writeFileOverwrite(path, `${generated}\n`);
|
|
67
|
+
return generated;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
let cachedMachineId;
|
|
75
|
+
/**
|
|
76
|
+
* 프로세스 수명 동안 machineId를 한 번만 해석해 재사용한다(요청마다 파일 I/O를 하지 않는다).
|
|
77
|
+
*/
|
|
78
|
+
export const getMachineId = () => {
|
|
79
|
+
if (cachedMachineId === undefined) {
|
|
80
|
+
cachedMachineId = readOrCreateMachineId();
|
|
81
|
+
}
|
|
82
|
+
return cachedMachineId;
|
|
83
|
+
};
|
|
84
|
+
/** 테스트 전용: 캐시를 비운다. */
|
|
85
|
+
export const resetMachineIdCache = () => {
|
|
86
|
+
cachedMachineId = undefined;
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=machine-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-id.js","sourceRoot":"","sources":["../../src/utils/machine-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { mkdtemp, rm, readFile, stat, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { homedir, tmpdir } from 'node:os';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { getMachineId, getMachineIdPath, readOrCreateMachineId, resetMachineIdCache } from './machine-id.js';
|
|
7
|
+
const withTempDir = async (run) => {
|
|
8
|
+
const dir = await mkdtemp(join(tmpdir(), 'machine-id-test-'));
|
|
9
|
+
try {
|
|
10
|
+
await run(dir);
|
|
11
|
+
}
|
|
12
|
+
finally {
|
|
13
|
+
await rm(dir, { recursive: true, force: true });
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
test('getMachineIdPath points at the file shared by the runner and the CLI', () => {
|
|
17
|
+
assert.equal(getMachineIdPath(), join(homedir(), '.agentteams', 'machine-id'));
|
|
18
|
+
});
|
|
19
|
+
test('readOrCreateMachineId creates the file once and reuses the value afterwards', async () => {
|
|
20
|
+
await withTempDir(async (dir) => {
|
|
21
|
+
const path = join(dir, 'nested', 'machine-id');
|
|
22
|
+
const first = readOrCreateMachineId({ path });
|
|
23
|
+
assert.ok(first);
|
|
24
|
+
assert.match(first, /^[0-9a-f-]{36}$/);
|
|
25
|
+
const stored = await readFile(path, 'utf8');
|
|
26
|
+
assert.equal(stored.trim(), first);
|
|
27
|
+
const second = readOrCreateMachineId({ path });
|
|
28
|
+
assert.equal(second, first);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
test('readOrCreateMachineId writes the file with owner-only permissions', async (t) => {
|
|
32
|
+
if (process.platform === 'win32') {
|
|
33
|
+
t.skip('POSIX file mode is not meaningful on Windows');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await withTempDir(async (dir) => {
|
|
37
|
+
const path = join(dir, 'machine-id');
|
|
38
|
+
readOrCreateMachineId({ path });
|
|
39
|
+
const stats = await stat(path);
|
|
40
|
+
assert.equal(stats.mode & 0o777, 0o600);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
test('readOrCreateMachineId trims surrounding whitespace from an existing file', async () => {
|
|
44
|
+
await withTempDir(async (dir) => {
|
|
45
|
+
const path = join(dir, 'machine-id');
|
|
46
|
+
await writeFile(path, ' existing-machine-id\n', 'utf8');
|
|
47
|
+
assert.equal(readOrCreateMachineId({ path }), 'existing-machine-id');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
test('readOrCreateMachineId regenerates when the existing file is blank', async () => {
|
|
51
|
+
await withTempDir(async (dir) => {
|
|
52
|
+
const path = join(dir, 'machine-id');
|
|
53
|
+
await writeFile(path, '\n', 'utf8');
|
|
54
|
+
const resolved = readOrCreateMachineId({ path });
|
|
55
|
+
assert.ok(resolved);
|
|
56
|
+
assert.equal((await readFile(path, 'utf8')).trim(), resolved);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
test('readOrCreateMachineId returns the value written by a racing process', () => {
|
|
60
|
+
let fileContent = null;
|
|
61
|
+
const resolved = readOrCreateMachineId({
|
|
62
|
+
path: '/machine-id',
|
|
63
|
+
readFile: () => {
|
|
64
|
+
if (fileContent === null) {
|
|
65
|
+
// 첫 읽기는 파일이 없는 상태를 흉내낸다. 이후에는 경쟁 프로세스가 쓴 값이 보인다.
|
|
66
|
+
fileContent = 'winner-machine-id\n';
|
|
67
|
+
throw new Error('ENOENT');
|
|
68
|
+
}
|
|
69
|
+
return fileContent;
|
|
70
|
+
},
|
|
71
|
+
writeFileExclusive: () => {
|
|
72
|
+
throw new Error('EEXIST');
|
|
73
|
+
},
|
|
74
|
+
generateId: () => 'loser-machine-id',
|
|
75
|
+
});
|
|
76
|
+
assert.equal(resolved, 'winner-machine-id');
|
|
77
|
+
});
|
|
78
|
+
test('readOrCreateMachineId returns null when the file can be neither read nor written', () => {
|
|
79
|
+
const resolved = readOrCreateMachineId({
|
|
80
|
+
path: '/machine-id',
|
|
81
|
+
readFile: () => {
|
|
82
|
+
throw new Error('EACCES');
|
|
83
|
+
},
|
|
84
|
+
writeFileExclusive: () => {
|
|
85
|
+
throw new Error('EACCES');
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
assert.equal(resolved, null);
|
|
89
|
+
});
|
|
90
|
+
test('getMachineId caches the resolved value for the process lifetime', () => {
|
|
91
|
+
resetMachineIdCache();
|
|
92
|
+
const first = getMachineId();
|
|
93
|
+
const second = getMachineId();
|
|
94
|
+
assert.equal(second, first);
|
|
95
|
+
assert.ok(first);
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=machine-id.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-id.test.js","sourceRoot":"","sources":["../../src/utils/machine-id.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 러너가 실행 cwd로 쓰는 경로가 "그 머신에 실제로 존재하는 프로젝트"인지 판정한다.
|
|
3
|
+
*
|
|
4
|
+
* 러너는 실행 시작과 동시에 `<cwd>/.agentteams/runner/log`를 `mkdir(recursive)`로 만들기 때문에,
|
|
5
|
+
* 다른 머신에 등록된 에이전트의 authPath를 집어가면 빈 디렉터리를 새로 만들고 그 안에서 실행된다.
|
|
6
|
+
* 판정은 러너 진입 이전 단계에서 수행해야 하며(디렉터리 생성 전), 8종 러너 공통 경로인
|
|
7
|
+
* trigger handler 한 곳에서만 호출한다.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PROJECT_MARKER_RELATIVE_PATH: string;
|
|
10
|
+
export type WorkingDirectoryCheckDependencies = {
|
|
11
|
+
pathExists?: (path: string) => boolean;
|
|
12
|
+
isGitRepo?: (path: string) => boolean;
|
|
13
|
+
readProjectMarker?: (path: string) => string | null;
|
|
14
|
+
expectedProjectId?: string | null;
|
|
15
|
+
};
|
|
16
|
+
export type WorkingDirectoryCheckCode = 'MISSING_AUTH_PATH' | 'DIRECTORY_NOT_FOUND' | 'NOT_A_PROJECT_DIRECTORY' | 'PROJECT_MISMATCH';
|
|
17
|
+
export type WorkingDirectoryCheck = {
|
|
18
|
+
valid: true;
|
|
19
|
+
} | {
|
|
20
|
+
valid: false;
|
|
21
|
+
code: WorkingDirectoryCheckCode;
|
|
22
|
+
reason: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* 실행 직전 작업 디렉터리 검증. 부수 효과가 없는 순수 판정 함수다(디렉터리를 만들지 않는다).
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkRunnerWorkingDirectory(authPath: string | null | undefined, dependencies?: WorkingDirectoryCheckDependencies): WorkingDirectoryCheck;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { isGitRepo } from './git-worktree.js';
|
|
4
|
+
/**
|
|
5
|
+
* 러너가 실행 cwd로 쓰는 경로가 "그 머신에 실제로 존재하는 프로젝트"인지 판정한다.
|
|
6
|
+
*
|
|
7
|
+
* 러너는 실행 시작과 동시에 `<cwd>/.agentteams/runner/log`를 `mkdir(recursive)`로 만들기 때문에,
|
|
8
|
+
* 다른 머신에 등록된 에이전트의 authPath를 집어가면 빈 디렉터리를 새로 만들고 그 안에서 실행된다.
|
|
9
|
+
* 판정은 러너 진입 이전 단계에서 수행해야 하며(디렉터리 생성 전), 8종 러너 공통 경로인
|
|
10
|
+
* trigger handler 한 곳에서만 호출한다.
|
|
11
|
+
*/
|
|
12
|
+
export const PROJECT_MARKER_RELATIVE_PATH = join('.agentteams', 'config.json');
|
|
13
|
+
const defaultReadProjectMarker = (path) => {
|
|
14
|
+
try {
|
|
15
|
+
return readFileSync(path, 'utf8');
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
// 마커에서 projectId만 뽑는다. 형식이 깨졌거나 값이 없으면 null(=판정 불가).
|
|
22
|
+
const readMarkerProjectId = (raw) => {
|
|
23
|
+
if (!raw) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const parsed = JSON.parse(raw);
|
|
28
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const projectId = parsed.projectId;
|
|
32
|
+
return typeof projectId === 'string' && projectId.trim().length > 0 ? projectId.trim() : null;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const WRONG_MACHINE_HINT = 'Request the run on the runner installed on the machine where this agent was registered, ' +
|
|
39
|
+
'or re-register the agent on this machine.';
|
|
40
|
+
/**
|
|
41
|
+
* 실행 직전 작업 디렉터리 검증. 부수 효과가 없는 순수 판정 함수다(디렉터리를 만들지 않는다).
|
|
42
|
+
*/
|
|
43
|
+
export function checkRunnerWorkingDirectory(authPath, dependencies = {}) {
|
|
44
|
+
const pathExists = dependencies.pathExists ?? existsSync;
|
|
45
|
+
const checkIsGitRepo = dependencies.isGitRepo ?? isGitRepo;
|
|
46
|
+
const readProjectMarker = dependencies.readProjectMarker ?? defaultReadProjectMarker;
|
|
47
|
+
const expectedProjectId = dependencies.expectedProjectId?.trim() || null;
|
|
48
|
+
const normalizedAuthPath = typeof authPath === 'string' ? authPath.trim() : '';
|
|
49
|
+
if (normalizedAuthPath.length === 0) {
|
|
50
|
+
return {
|
|
51
|
+
valid: false,
|
|
52
|
+
code: 'MISSING_AUTH_PATH',
|
|
53
|
+
reason: 'Runner workspace path is not configured for this agent; run aborted before start. ' +
|
|
54
|
+
`Set the agent's workspace path first. ${WRONG_MACHINE_HINT}`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (!pathExists(normalizedAuthPath)) {
|
|
58
|
+
return {
|
|
59
|
+
valid: false,
|
|
60
|
+
code: 'DIRECTORY_NOT_FOUND',
|
|
61
|
+
reason: `Runner workspace ${normalizedAuthPath} does not exist on this runner, ` +
|
|
62
|
+
`so the run was aborted before start and the directory was not created. ${WRONG_MACHINE_HINT}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const markerPath = join(normalizedAuthPath, PROJECT_MARKER_RELATIVE_PATH);
|
|
66
|
+
const hasProjectMarker = pathExists(markerPath);
|
|
67
|
+
// 마커가 있고 양쪽 projectId를 모두 아는 경우에만 프로젝트 동일성을 판정한다. "존재하는 어떤 git
|
|
68
|
+
// 저장소"라도 통과시키면, 같은 사용자명·같은 디렉터리 배치를 쓰는 흔한 환경에서 다른 머신의
|
|
69
|
+
// 트리거가 무관한 저장소에 그대로 맞아떨어져 이 검증이 없애려던 조용한 오실행이 남는다.
|
|
70
|
+
if (hasProjectMarker && expectedProjectId) {
|
|
71
|
+
const markerProjectId = readMarkerProjectId(readProjectMarker(markerPath));
|
|
72
|
+
if (markerProjectId && markerProjectId !== expectedProjectId) {
|
|
73
|
+
return {
|
|
74
|
+
valid: false,
|
|
75
|
+
code: 'PROJECT_MISMATCH',
|
|
76
|
+
reason: `Runner workspace ${normalizedAuthPath} belongs to a different AgentTeams project ` +
|
|
77
|
+
`(${PROJECT_MARKER_RELATIVE_PATH} projectId ${markerProjectId} != ${expectedProjectId}); ` +
|
|
78
|
+
`run aborted before start. ${WRONG_MACHINE_HINT}`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (markerProjectId) {
|
|
82
|
+
return { valid: true };
|
|
83
|
+
}
|
|
84
|
+
// 마커를 읽지 못했거나 projectId가 없으면 판정 불가로 보고 아래 폴백으로 내려간다.
|
|
85
|
+
}
|
|
86
|
+
if (hasProjectMarker || checkIsGitRepo(normalizedAuthPath)) {
|
|
87
|
+
return { valid: true };
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
valid: false,
|
|
91
|
+
code: 'NOT_A_PROJECT_DIRECTORY',
|
|
92
|
+
reason: `Runner workspace ${normalizedAuthPath} exists on this runner but is neither a git repository nor an ` +
|
|
93
|
+
`AgentTeams project (no ${PROJECT_MARKER_RELATIVE_PATH}); run aborted before start. ${WRONG_MACHINE_HINT}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=working-directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-directory.js","sourceRoot":"","sources":["../../src/utils/working-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { checkRunnerWorkingDirectory } from './working-directory.js';
|
|
9
|
+
const withTempDir = async (run) => {
|
|
10
|
+
const dir = await mkdtemp(join(tmpdir(), 'working-directory-test-'));
|
|
11
|
+
try {
|
|
12
|
+
await run(dir);
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
await rm(dir, { recursive: true, force: true });
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
test('checkRunnerWorkingDirectory rejects a missing authPath', () => {
|
|
19
|
+
for (const value of [null, undefined, '', ' ']) {
|
|
20
|
+
const result = checkRunnerWorkingDirectory(value);
|
|
21
|
+
assert.equal(result.valid, false);
|
|
22
|
+
assert.equal(result.valid === false && result.code, 'MISSING_AUTH_PATH');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
test('checkRunnerWorkingDirectory rejects a path that does not exist on this runner', () => {
|
|
26
|
+
const result = checkRunnerWorkingDirectory('/missing/workspace', {
|
|
27
|
+
pathExists: () => false,
|
|
28
|
+
isGitRepo: () => true,
|
|
29
|
+
});
|
|
30
|
+
assert.equal(result.valid, false);
|
|
31
|
+
assert.equal(result.valid === false && result.code, 'DIRECTORY_NOT_FOUND');
|
|
32
|
+
assert.match(result.valid === false ? result.reason : '', /does not exist on this runner/);
|
|
33
|
+
assert.match(result.valid === false ? result.reason : '', /machine where this agent was registered/);
|
|
34
|
+
});
|
|
35
|
+
test('checkRunnerWorkingDirectory accepts a directory that has the AgentTeams project marker', () => {
|
|
36
|
+
const checkedPaths = [];
|
|
37
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
38
|
+
pathExists: (path) => {
|
|
39
|
+
checkedPaths.push(path);
|
|
40
|
+
return true;
|
|
41
|
+
},
|
|
42
|
+
isGitRepo: () => {
|
|
43
|
+
throw new Error('isGitRepo should not run once the project marker is found');
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
assert.deepEqual(result, { valid: true });
|
|
47
|
+
assert.deepEqual(checkedPaths, ['/workspace', join('/workspace', '.agentteams', 'config.json')]);
|
|
48
|
+
});
|
|
49
|
+
test('checkRunnerWorkingDirectory accepts a git repository without the project marker', () => {
|
|
50
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
51
|
+
pathExists: (path) => path === '/workspace',
|
|
52
|
+
isGitRepo: () => true,
|
|
53
|
+
});
|
|
54
|
+
assert.deepEqual(result, { valid: true });
|
|
55
|
+
});
|
|
56
|
+
test('checkRunnerWorkingDirectory rejects a directory that is neither a git repo nor a project', () => {
|
|
57
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
58
|
+
pathExists: (path) => path === '/workspace',
|
|
59
|
+
isGitRepo: () => false,
|
|
60
|
+
});
|
|
61
|
+
assert.equal(result.valid, false);
|
|
62
|
+
assert.equal(result.valid === false && result.code, 'NOT_A_PROJECT_DIRECTORY');
|
|
63
|
+
assert.match(result.valid === false ? result.reason : '', /\.agentteams[\\/]config\.json/);
|
|
64
|
+
});
|
|
65
|
+
test('checkRunnerWorkingDirectory rejects a marker that belongs to a different project', () => {
|
|
66
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
67
|
+
pathExists: () => true,
|
|
68
|
+
isGitRepo: () => {
|
|
69
|
+
throw new Error('the git fallback must not rescue a project mismatch');
|
|
70
|
+
},
|
|
71
|
+
readProjectMarker: () => JSON.stringify({ projectId: 'other-project' }),
|
|
72
|
+
expectedProjectId: 'this-project',
|
|
73
|
+
});
|
|
74
|
+
assert.equal(result.valid, false);
|
|
75
|
+
assert.equal(result.valid === false && result.code, 'PROJECT_MISMATCH');
|
|
76
|
+
assert.match(result.valid === false ? result.reason : '', /other-project/);
|
|
77
|
+
assert.match(result.valid === false ? result.reason : '', /this-project/);
|
|
78
|
+
});
|
|
79
|
+
test('checkRunnerWorkingDirectory accepts a marker whose projectId matches the trigger', () => {
|
|
80
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
81
|
+
pathExists: () => true,
|
|
82
|
+
isGitRepo: () => {
|
|
83
|
+
throw new Error('isGitRepo should not run once the project marker matches');
|
|
84
|
+
},
|
|
85
|
+
readProjectMarker: () => JSON.stringify({ projectId: 'this-project' }),
|
|
86
|
+
expectedProjectId: 'this-project',
|
|
87
|
+
});
|
|
88
|
+
assert.deepEqual(result, { valid: true });
|
|
89
|
+
});
|
|
90
|
+
test('checkRunnerWorkingDirectory falls back to the git check when the marker is unreadable', () => {
|
|
91
|
+
// 마커를 읽지 못하거나 projectId가 없으면 "다른 프로젝트"라고 단정할 수 없으므로 기존 판정으로 내려간다.
|
|
92
|
+
for (const marker of [null, 'not json', JSON.stringify({ teamId: 'team-1' })]) {
|
|
93
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
94
|
+
pathExists: () => true,
|
|
95
|
+
isGitRepo: () => false,
|
|
96
|
+
readProjectMarker: () => marker,
|
|
97
|
+
expectedProjectId: 'this-project',
|
|
98
|
+
});
|
|
99
|
+
assert.deepEqual(result, { valid: true }, `marker=${String(marker)}`);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
test('checkRunnerWorkingDirectory skips the project check when the trigger has no projectId', () => {
|
|
103
|
+
const result = checkRunnerWorkingDirectory('/workspace', {
|
|
104
|
+
pathExists: () => true,
|
|
105
|
+
isGitRepo: () => false,
|
|
106
|
+
readProjectMarker: () => JSON.stringify({ projectId: 'other-project' }),
|
|
107
|
+
expectedProjectId: null,
|
|
108
|
+
});
|
|
109
|
+
assert.deepEqual(result, { valid: true });
|
|
110
|
+
});
|
|
111
|
+
test('checkRunnerWorkingDirectory judges real directories without creating anything', async () => {
|
|
112
|
+
await withTempDir(async (dir) => {
|
|
113
|
+
const missing = join(dir, 'not-created');
|
|
114
|
+
const missingResult = checkRunnerWorkingDirectory(missing);
|
|
115
|
+
assert.equal(missingResult.valid, false);
|
|
116
|
+
assert.equal(missingResult.valid === false && missingResult.code, 'DIRECTORY_NOT_FOUND');
|
|
117
|
+
assert.equal(existsSync(missing), false);
|
|
118
|
+
const emptyDir = join(dir, 'empty');
|
|
119
|
+
await mkdir(emptyDir);
|
|
120
|
+
const emptyResult = checkRunnerWorkingDirectory(emptyDir);
|
|
121
|
+
assert.equal(emptyResult.valid, false);
|
|
122
|
+
assert.equal(emptyResult.valid === false && emptyResult.code, 'NOT_A_PROJECT_DIRECTORY');
|
|
123
|
+
const markerDir = join(dir, 'marker');
|
|
124
|
+
await mkdir(join(markerDir, '.agentteams'), { recursive: true });
|
|
125
|
+
await writeFile(join(markerDir, '.agentteams', 'config.json'), '{}\n', 'utf8');
|
|
126
|
+
assert.deepEqual(checkRunnerWorkingDirectory(markerDir), { valid: true });
|
|
127
|
+
const otherProjectDir = join(dir, 'other-project');
|
|
128
|
+
await mkdir(join(otherProjectDir, '.agentteams'), { recursive: true });
|
|
129
|
+
await writeFile(join(otherProjectDir, '.agentteams', 'config.json'), `${JSON.stringify({ projectId: 'project-b' })}\n`, 'utf8');
|
|
130
|
+
const mismatchResult = checkRunnerWorkingDirectory(otherProjectDir, { expectedProjectId: 'project-a' });
|
|
131
|
+
assert.equal(mismatchResult.valid, false);
|
|
132
|
+
assert.equal(mismatchResult.valid === false && mismatchResult.code, 'PROJECT_MISMATCH');
|
|
133
|
+
assert.deepEqual(checkRunnerWorkingDirectory(otherProjectDir, { expectedProjectId: 'project-b' }), {
|
|
134
|
+
valid: true,
|
|
135
|
+
});
|
|
136
|
+
const repoDir = join(dir, 'repo');
|
|
137
|
+
await mkdir(repoDir);
|
|
138
|
+
execFileSync('git', ['init'], { cwd: repoDir, stdio: 'ignore' });
|
|
139
|
+
assert.deepEqual(checkRunnerWorkingDirectory(repoDir), { valid: true });
|
|
140
|
+
const worktreeParent = join(repoDir, 'nested');
|
|
141
|
+
await mkdir(worktreeParent);
|
|
142
|
+
assert.deepEqual(checkRunnerWorkingDirectory(worktreeParent), { valid: true });
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=working-directory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-directory.test.js","sourceRoot":"","sources":["../../src/utils/working-directory.test.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|