awb-agent-manager 1.6.28 → 1.6.30
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/lib/dispatch-preflight.d.ts +33 -0
- package/dist/lib/dispatch-preflight.js +73 -0
- package/dist/lib/dispatch-preflight.js.map +1 -0
- package/dist/lib/environment-provisioner.d.ts +10 -0
- package/dist/lib/environment-provisioner.js +55 -9
- package/dist/lib/environment-provisioner.js.map +1 -1
- package/dist/lib/event-dispatcher.d.ts +8 -0
- package/dist/lib/event-dispatcher.js +78 -8
- package/dist/lib/event-dispatcher.js.map +1 -1
- package/dist/lib/instance-heartbeat.d.ts +2 -0
- package/dist/lib/instance-heartbeat.js +9 -0
- package/dist/lib/instance-heartbeat.js.map +1 -1
- package/dist/lib/subagent-manager.js +14 -10
- package/dist/lib/subagent-manager.js.map +1 -1
- package/dist/lib/worktree-manager.d.ts +8 -0
- package/dist/lib/worktree-manager.js +207 -20
- package/dist/lib/worktree-manager.js.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare function isGitAuthFailure(stderr: string | undefined | null): boolean;
|
|
2
|
+
export interface PushReadinessProbe {
|
|
3
|
+
ran: boolean;
|
|
4
|
+
ok?: boolean;
|
|
5
|
+
stderr?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PushReadinessInput {
|
|
8
|
+
isHttps: boolean;
|
|
9
|
+
probe?: PushReadinessProbe;
|
|
10
|
+
}
|
|
11
|
+
export interface PushReadinessDecision {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
reason?: string;
|
|
14
|
+
detail?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function decidePushReadiness(input: PushReadinessInput): PushReadinessDecision;
|
|
17
|
+
export interface WorktreeOutcome {
|
|
18
|
+
isWorktree?: boolean;
|
|
19
|
+
reason?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DispatchGateDecision {
|
|
22
|
+
blocked: boolean;
|
|
23
|
+
kind?: string;
|
|
24
|
+
reason?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function classifyWorktreeOutcome(res: WorktreeOutcome | null | undefined): DispatchGateDecision;
|
|
27
|
+
export declare class DispatchBlockerTracker {
|
|
28
|
+
#private;
|
|
29
|
+
shouldComment(ticketId: string | undefined, kind: string): boolean;
|
|
30
|
+
clear(ticketId: string | undefined): void;
|
|
31
|
+
activeKind(ticketId: string | undefined): string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export declare function firstLine(text: string | undefined | null): string;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const GIT_AUTH_FAILURE_SIGNATURES = [
|
|
2
|
+
'could not read username',
|
|
3
|
+
'could not read password',
|
|
4
|
+
'authentication failed',
|
|
5
|
+
'terminal prompts disabled',
|
|
6
|
+
'invalid username or password',
|
|
7
|
+
'incorrect username or password',
|
|
8
|
+
'support for password authentication was removed',
|
|
9
|
+
'access denied',
|
|
10
|
+
'403 forbidden',
|
|
11
|
+
'fatal: unauthorized',
|
|
12
|
+
'remote: permission to',
|
|
13
|
+
'repository not found',
|
|
14
|
+
];
|
|
15
|
+
export function isGitAuthFailure(stderr) {
|
|
16
|
+
if (!stderr)
|
|
17
|
+
return false;
|
|
18
|
+
const s = stderr.toLowerCase();
|
|
19
|
+
return GIT_AUTH_FAILURE_SIGNATURES.some((sig) => s.includes(sig));
|
|
20
|
+
}
|
|
21
|
+
export function decidePushReadiness(input) {
|
|
22
|
+
if (!input.isHttps)
|
|
23
|
+
return { ok: true };
|
|
24
|
+
const probe = input.probe;
|
|
25
|
+
if (!probe || !probe.ran)
|
|
26
|
+
return { ok: true };
|
|
27
|
+
if (probe.ok)
|
|
28
|
+
return { ok: true };
|
|
29
|
+
if (isGitAuthFailure(probe.stderr)) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
reason: 'push_credential_unavailable',
|
|
33
|
+
detail: firstLine(probe.stderr) || 'push credential unavailable',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return { ok: true };
|
|
37
|
+
}
|
|
38
|
+
export function classifyWorktreeOutcome(res) {
|
|
39
|
+
if (res?.isWorktree)
|
|
40
|
+
return { blocked: false };
|
|
41
|
+
const reason = res?.reason;
|
|
42
|
+
if (!reason || reason === 'disabled')
|
|
43
|
+
return { blocked: false };
|
|
44
|
+
return { blocked: true, kind: `worktree:${reason}`, reason };
|
|
45
|
+
}
|
|
46
|
+
export class DispatchBlockerTracker {
|
|
47
|
+
#byTicket = new Map();
|
|
48
|
+
shouldComment(ticketId, kind) {
|
|
49
|
+
if (!ticketId)
|
|
50
|
+
return true;
|
|
51
|
+
const prev = this.#byTicket.get(ticketId);
|
|
52
|
+
this.#byTicket.set(ticketId, kind);
|
|
53
|
+
return prev !== kind;
|
|
54
|
+
}
|
|
55
|
+
clear(ticketId) {
|
|
56
|
+
if (ticketId)
|
|
57
|
+
this.#byTicket.delete(ticketId);
|
|
58
|
+
}
|
|
59
|
+
activeKind(ticketId) {
|
|
60
|
+
return ticketId ? this.#byTicket.get(ticketId) : undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function firstLine(text) {
|
|
64
|
+
if (!text)
|
|
65
|
+
return '';
|
|
66
|
+
for (const raw of text.split('\n')) {
|
|
67
|
+
const t = raw.trim();
|
|
68
|
+
if (t)
|
|
69
|
+
return t;
|
|
70
|
+
}
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=dispatch-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-preflight.js","sourceRoot":"","sources":["../../src/lib/dispatch-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,15 @@ export interface ResolvedEnvironmentConfig {
|
|
|
12
12
|
setup_timeout_seconds: number;
|
|
13
13
|
version: number;
|
|
14
14
|
}
|
|
15
|
+
export type RepositoryCredentialResolver = (resourceId: string, agentId: string) => Promise<{
|
|
16
|
+
username?: string;
|
|
17
|
+
token: string;
|
|
18
|
+
} | null>;
|
|
15
19
|
export interface ProvisionArgs {
|
|
16
20
|
agentId: string;
|
|
17
21
|
config: ResolvedEnvironmentConfig;
|
|
18
22
|
ticketId?: string;
|
|
23
|
+
resolveCredential?: RepositoryCredentialResolver;
|
|
19
24
|
}
|
|
20
25
|
export interface ProvisionResult {
|
|
21
26
|
ok: boolean;
|
|
@@ -30,3 +35,8 @@ export declare class EnvironmentProvisioner {
|
|
|
30
35
|
#private;
|
|
31
36
|
provision(args: ProvisionArgs): Promise<ProvisionResult>;
|
|
32
37
|
}
|
|
38
|
+
export declare function authenticatedUrl(url: string, cred: {
|
|
39
|
+
username?: string;
|
|
40
|
+
token: string;
|
|
41
|
+
} | null | undefined): string;
|
|
42
|
+
export declare function redactToken(text: string, token?: string): string;
|
|
@@ -88,7 +88,7 @@ export class EnvironmentProvisioner {
|
|
|
88
88
|
try {
|
|
89
89
|
await fsp.mkdir(envDir, { recursive: true });
|
|
90
90
|
for (const repo of args.config.repositories || []) {
|
|
91
|
-
await this.#prepareRepo(repo, agentDir, env, timeoutMs, steps);
|
|
91
|
+
await this.#prepareRepo(repo, agentDir, env, timeoutMs, steps, args.agentId, args.resolveCredential);
|
|
92
92
|
}
|
|
93
93
|
for (const cmd of args.config.setup_commands || []) {
|
|
94
94
|
log(`[env-provision] setup: ${cmd} (agent=${args.agentId.slice(0, 8)})`);
|
|
@@ -117,34 +117,44 @@ export class EnvironmentProvisioner {
|
|
|
117
117
|
return { ok: false, skipped: false, fingerprint, steps, error };
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
async #prepareRepo(repo, agentDir, env, timeoutMs, steps) {
|
|
120
|
+
async #prepareRepo(repo, agentDir, env, timeoutMs, steps, agentId, resolveCredential) {
|
|
121
121
|
const dest = join(agentDir, repo.target_dir);
|
|
122
122
|
const gitDir = join(dest, '.git');
|
|
123
123
|
let fresh = false;
|
|
124
|
+
const cred = repo.resource_id && resolveCredential
|
|
125
|
+
? await resolveCredential(repo.resource_id, agentId)
|
|
126
|
+
: null;
|
|
127
|
+
const token = cred?.token;
|
|
124
128
|
if (await pathExists(gitDir)) {
|
|
129
|
+
await this.#installCloneCredential(dest, repo.url, cred, timeoutMs);
|
|
125
130
|
const fetched = await gitRaw(['-C', dest, 'fetch', '--all', '--prune'], undefined, timeoutMs);
|
|
126
|
-
steps.push(`fetch ${repo.target_dir} → ${fetched.ok ? 'ok' : `FAIL: ${tail(fetched.stderr)}`}`);
|
|
131
|
+
steps.push(`fetch ${repo.target_dir} → ${fetched.ok ? 'ok' : `FAIL: ${redactToken(tail(fetched.stderr), token)}`}`);
|
|
127
132
|
if (!fetched.ok) {
|
|
128
|
-
throw new Error(`git fetch failed for ${repo.target_dir}: ${tail(fetched.stderr)}`);
|
|
133
|
+
throw new Error(`git fetch failed for ${repo.target_dir}: ${redactToken(tail(fetched.stderr), token)}`);
|
|
129
134
|
}
|
|
130
135
|
if (repo.branch) {
|
|
131
136
|
const co = await gitRaw(['-C', dest, 'checkout', repo.branch], undefined, timeoutMs);
|
|
132
|
-
steps.push(`checkout ${repo.branch} in ${repo.target_dir} → ${co.ok ? 'ok' : `skip: ${tail(co.stderr)}`}`);
|
|
137
|
+
steps.push(`checkout ${repo.branch} in ${repo.target_dir} → ${co.ok ? 'ok' : `skip: ${redactToken(tail(co.stderr), token)}`}`);
|
|
133
138
|
}
|
|
134
139
|
const pulled = await gitRaw(['-C', dest, 'pull', '--ff-only'], undefined, timeoutMs);
|
|
135
|
-
steps.push(`pull --ff-only ${repo.target_dir} → ${pulled.ok ? 'ok' : `non-ff (left as-is): ${tail(pulled.stderr)}`}`);
|
|
140
|
+
steps.push(`pull --ff-only ${repo.target_dir} → ${pulled.ok ? 'ok' : `non-ff (left as-is): ${redactToken(tail(pulled.stderr), token)}`}`);
|
|
136
141
|
}
|
|
137
142
|
else {
|
|
138
143
|
await fsp.mkdir(dirname(dest), { recursive: true });
|
|
144
|
+
const cloneUrl = authenticatedUrl(repo.url, cred);
|
|
139
145
|
const args = ['clone'];
|
|
140
146
|
if (repo.branch)
|
|
141
147
|
args.push('--branch', repo.branch);
|
|
142
|
-
args.push(
|
|
148
|
+
args.push('--', cloneUrl, dest);
|
|
143
149
|
log(`[env-provision] clone ${repo.url} → ${repo.target_dir}`);
|
|
144
150
|
const cloned = await gitRaw(args, undefined, timeoutMs);
|
|
145
|
-
steps.push(`clone ${repo.url} → ${repo.target_dir} ${cloned.ok ? 'ok' : `FAIL: ${tail(cloned.stderr)}`}`);
|
|
151
|
+
steps.push(`clone ${repo.url} → ${repo.target_dir} ${cloned.ok ? 'ok' : `FAIL: ${redactToken(tail(cloned.stderr), token)}`}`);
|
|
146
152
|
if (!cloned.ok) {
|
|
147
|
-
throw new Error(`git clone failed for ${repo.url}: ${tail(cloned.stderr)}`);
|
|
153
|
+
throw new Error(`git clone failed for ${repo.url}: ${redactToken(tail(cloned.stderr), token)}`);
|
|
154
|
+
}
|
|
155
|
+
if (token) {
|
|
156
|
+
await gitRaw(['-C', dest, 'remote', 'set-url', 'origin', repo.url], undefined, timeoutMs);
|
|
157
|
+
await this.#installCloneCredential(dest, repo.url, cred, timeoutMs);
|
|
148
158
|
}
|
|
149
159
|
fresh = true;
|
|
150
160
|
}
|
|
@@ -159,6 +169,24 @@ export class EnvironmentProvisioner {
|
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
171
|
}
|
|
172
|
+
async #installCloneCredential(dest, url, cred, timeoutMs) {
|
|
173
|
+
if (!cred?.token || !/^https?:\/\//i.test(url))
|
|
174
|
+
return;
|
|
175
|
+
try {
|
|
176
|
+
const gitDirRes = await gitRaw(['-C', dest, 'rev-parse', '--absolute-git-dir'], undefined, timeoutMs);
|
|
177
|
+
const gitDir = gitDirRes.ok ? gitDirRes.stdout.trim() : '';
|
|
178
|
+
if (!gitDir)
|
|
179
|
+
return;
|
|
180
|
+
const credentialFile = join(gitDir, 'awb-credentials');
|
|
181
|
+
const u = new URL(url);
|
|
182
|
+
u.username = cred.username || 'x-access-token';
|
|
183
|
+
u.password = cred.token;
|
|
184
|
+
await fsp.writeFile(credentialFile, `${u.toString()}\n`, { mode: 0o600 });
|
|
185
|
+
await gitRaw(['-C', dest, 'config', 'credential.helper', `store --file=${JSON.stringify(credentialFile)}`], undefined, timeoutMs);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
}
|
|
189
|
+
}
|
|
162
190
|
async #readRecentFailure(failedPath) {
|
|
163
191
|
try {
|
|
164
192
|
const raw = await fsp.readFile(failedPath, 'utf8');
|
|
@@ -179,4 +207,22 @@ function tail(s, n = 1500) {
|
|
|
179
207
|
const t = (s || '').trim();
|
|
180
208
|
return t.length > n ? `…${t.slice(-n)}` : t;
|
|
181
209
|
}
|
|
210
|
+
export function authenticatedUrl(url, cred) {
|
|
211
|
+
if (!cred?.token || !/^https?:\/\//i.test(url))
|
|
212
|
+
return url;
|
|
213
|
+
try {
|
|
214
|
+
const u = new URL(url);
|
|
215
|
+
u.username = cred.username || 'x-access-token';
|
|
216
|
+
u.password = cred.token;
|
|
217
|
+
return u.toString();
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return url;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
export function redactToken(text, token) {
|
|
224
|
+
if (!token)
|
|
225
|
+
return text;
|
|
226
|
+
return text.split(token).join('***');
|
|
227
|
+
}
|
|
182
228
|
//# sourceMappingURL=environment-provisioner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-provisioner.js","sourceRoot":"","sources":["../../src/lib/environment-provisioner.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAuCnC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAUzC,SAAS,MAAM,CAAC,IAAc,EAAE,GAAuB,EAAE,SAAiB;IACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,KAAK,EACL,IAAI,EACJ,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAC1E,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,OAAO,CAAC;gBACN,EAAE,EAAE,CAAC,GAAG;gBACR,IAAI,EAAG,GAAW,EAAE,IAAI,IAAI,CAAC;gBAC7B,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,CAAC,MAAM,IAAK,GAAW,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC3D,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,SAAS,QAAQ,CACf,OAAe,EACf,GAAW,EACX,GAA2B,EAC3B,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CACF,OAAO,EACP,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAChF,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,OAAO,CAAC;gBACN,EAAE,EAAE,CAAC,GAAG;gBACR,IAAI,EAAG,GAAW,EAAE,IAAI,IAAI,CAAC;gBAC7B,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,CAAC,MAAM,IAAK,GAAW,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC3D,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAID,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiC;IACtE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,OAAO,sBAAsB;IAIjC,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;IAExD,KAAK,CAAC,SAAS,CAAC,IAAmB;QACjC,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAmB,EAAE,WAAmB;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,cAAc,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;QAG3B,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACzD,CAAC;QAKD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,CACD,6CAA6C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,aAAa,GAAG,CACtI,CAAC;YACF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,KAAK;gBACd,WAAW;gBACX,KAAK;gBACL,KAAK,EAAE,8DAA8D,aAAa,EAAE;gBACpF,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;QACxE,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAA4B,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;gBACnD,GAAG,CAAC,0BAA0B,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBACzE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,IAAI,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC,SAAS,CACjB,UAAU,EACV,IAAI,CAAC,SAAS,CACZ;gBACE,WAAW;gBACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;aACxE,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1D,GAAG,CACD,gCAAgC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAC7L,CAAC;YACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;YAC1C,GAAG,CAAC,iCAAiC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;YACzG,MAAM,GAAG;iBACN,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;iBAClH,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,IAAmC,EACnC,QAAgB,EAChB,GAA2B,EAC3B,SAAiB,EACjB,KAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAE7B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9F,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAChG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACrF,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7G,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,yBAAyB,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1G,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAGD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,CAAC;gBACjD,GAAG,CAAC,+BAA+B,IAAI,CAAC,UAAU,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,kBAAkB;gBAAE,OAAO,IAAI,CAAC;YAC5D,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,eAAe,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,SAAS,IAAI,CAAC,CAAS,EAAE,CAAC,GAAG,IAAI;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"environment-provisioner.js","sourceRoot":"","sources":["../../src/lib/environment-provisioner.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,14 @@ export declare function resolveBootstrapRepository(baseRepo: unknown, baseBranch
|
|
|
14
14
|
branch: string;
|
|
15
15
|
} | null;
|
|
16
16
|
export declare function parseWorktreeMode(raw: unknown): WorktreeMode | undefined;
|
|
17
|
+
export declare function validateWorktreeProvisioningInputs(args: {
|
|
18
|
+
mode: WorktreeMode | undefined;
|
|
19
|
+
hasAgentContext: boolean;
|
|
20
|
+
hasManager: boolean;
|
|
21
|
+
ticketId?: string;
|
|
22
|
+
role?: string;
|
|
23
|
+
repositoryResourceId?: string;
|
|
24
|
+
}): string | null;
|
|
17
25
|
export interface AgentExecutionContext {
|
|
18
26
|
agent_id: string;
|
|
19
27
|
api_key: string;
|
|
@@ -4,6 +4,7 @@ import { fetchTicketContext, fetchChatRoomHistory, fetchAgentRecord, fetchReposi
|
|
|
4
4
|
import { recordEvent } from './event-log-recorder.js';
|
|
5
5
|
import { prepareChatAttachments } from './chat-attachment-prep.js';
|
|
6
6
|
import { injectWorkFolder } from './prompts.js';
|
|
7
|
+
import { DispatchBlockerTracker, classifyWorktreeOutcome } from './dispatch-preflight.js';
|
|
7
8
|
import { createAdapter, ADAPTER_CAPABILITIES } from './cli-adapters/index.js';
|
|
8
9
|
import { parseRunProvision, provisionRunWorkspace, reconcileRunBaseWorkingDir, resolveRunFolder, } from './run-provisioner.js';
|
|
9
10
|
import { FolderMutex } from './run-execution-lock.js';
|
|
@@ -165,6 +166,21 @@ export function resolveBootstrapRepository(baseRepo, baseBranch, environment) {
|
|
|
165
166
|
export function parseWorktreeMode(raw) {
|
|
166
167
|
return raw === 'per_ticket' || raw === 'shared' ? raw : undefined;
|
|
167
168
|
}
|
|
169
|
+
export function validateWorktreeProvisioningInputs(args) {
|
|
170
|
+
if (args.mode !== 'per_ticket')
|
|
171
|
+
return null;
|
|
172
|
+
if (!args.hasAgentContext)
|
|
173
|
+
return 'missing_agent_context';
|
|
174
|
+
if (!args.hasManager)
|
|
175
|
+
return 'missing_worktree_manager';
|
|
176
|
+
if (!args.ticketId)
|
|
177
|
+
return 'missing_ticket_id';
|
|
178
|
+
if (!args.role)
|
|
179
|
+
return 'missing_role';
|
|
180
|
+
if (!args.repositoryResourceId)
|
|
181
|
+
return 'missing_repository_resource';
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
168
184
|
const AGENT_CHAIN_DEPTH_CAP = 3;
|
|
169
185
|
export class EventDispatcher {
|
|
170
186
|
#config;
|
|
@@ -177,6 +193,7 @@ export class EventDispatcher {
|
|
|
177
193
|
#managedAgentContexts;
|
|
178
194
|
#worktreeManager;
|
|
179
195
|
#environmentProvisioner;
|
|
196
|
+
#dispatchBlockers = new DispatchBlockerTracker();
|
|
180
197
|
#runExecLock = new FolderMutex();
|
|
181
198
|
constructor(config, deps = {}) {
|
|
182
199
|
this.#config = config;
|
|
@@ -191,10 +208,20 @@ export class EventDispatcher {
|
|
|
191
208
|
this.#environmentProvisioner = deps.environmentProvisioner ?? null;
|
|
192
209
|
}
|
|
193
210
|
async #applyWorktreeCwd(agentContext, ticketId, role, mode, poolSize, bootstrapRepo) {
|
|
211
|
+
const requiredError = validateWorktreeProvisioningInputs({
|
|
212
|
+
mode,
|
|
213
|
+
hasAgentContext: Boolean(agentContext),
|
|
214
|
+
hasManager: Boolean(this.#worktreeManager),
|
|
215
|
+
ticketId,
|
|
216
|
+
role,
|
|
217
|
+
repositoryResourceId: bootstrapRepo?.resourceId,
|
|
218
|
+
});
|
|
219
|
+
if (requiredError)
|
|
220
|
+
return { ok: false, reason: requiredError, blockerKind: `worktree:${requiredError}` };
|
|
194
221
|
if (!agentContext || !this.#worktreeManager || !ticketId || !role)
|
|
195
|
-
return;
|
|
222
|
+
return { ok: true };
|
|
196
223
|
if (this.#config?.delegation?.worktreeIsolation === false)
|
|
197
|
-
return;
|
|
224
|
+
return { ok: true };
|
|
198
225
|
try {
|
|
199
226
|
const res = await this.#worktreeManager.resolveCwd({
|
|
200
227
|
baseWorkingDir: agentContext.cwd,
|
|
@@ -207,13 +234,19 @@ export class EventDispatcher {
|
|
|
207
234
|
if (res.isWorktree) {
|
|
208
235
|
log(`[worktree] ticket=${ticketId.slice(0, 8)} role=${role} agent=${agentContext.agent_id.slice(0, 8)} mode=${res.mode ?? mode ?? 'per_ticket'} cwd=${res.cwd}${res.reused ? ' (reused)' : ' (new)'}`);
|
|
209
236
|
agentContext.cwd = res.cwd;
|
|
237
|
+
return { ok: true };
|
|
210
238
|
}
|
|
211
|
-
|
|
212
|
-
|
|
239
|
+
const gate = classifyWorktreeOutcome(res);
|
|
240
|
+
if (gate.blocked) {
|
|
241
|
+
log(`[worktree] isolation provisioning failed for ticket=${ticketId.slice(0, 8)} role=${role}: ${gate.reason}`);
|
|
242
|
+
return { ok: false, reason: gate.reason, blockerKind: gate.kind };
|
|
213
243
|
}
|
|
244
|
+
return { ok: true };
|
|
214
245
|
}
|
|
215
246
|
catch (err) {
|
|
216
|
-
|
|
247
|
+
const reason = err?.message ?? String(err);
|
|
248
|
+
log(`[worktree] resolveCwd failed (${reason})`);
|
|
249
|
+
return { ok: false, reason, blockerKind: 'worktree:error' };
|
|
217
250
|
}
|
|
218
251
|
}
|
|
219
252
|
async #cleanupTerminalTicketWorktrees(ticketId) {
|
|
@@ -238,6 +271,7 @@ export class EventDispatcher {
|
|
|
238
271
|
total += await this.#worktreeManager.removeTicketWorktrees({
|
|
239
272
|
baseWorkingDir: ctx.working_dir,
|
|
240
273
|
ticketId,
|
|
274
|
+
repositoryResourceId: ticket.base_repo?.id,
|
|
241
275
|
});
|
|
242
276
|
}
|
|
243
277
|
if (total > 0) {
|
|
@@ -248,7 +282,7 @@ export class EventDispatcher {
|
|
|
248
282
|
log(`[worktree] terminal cleanup failed for ticket=${ticketId.slice(0, 8)}: ${err?.message ?? err}`);
|
|
249
283
|
}
|
|
250
284
|
}
|
|
251
|
-
async #cleanupArchivedTicketWorkspace(ticketId) {
|
|
285
|
+
async #cleanupArchivedTicketWorkspace(ticketId, repositoryResourceId) {
|
|
252
286
|
if (!this.#worktreeManager || !this.#worktreeManager.enabled)
|
|
253
287
|
return;
|
|
254
288
|
if (this.#config?.delegation?.worktreeIsolation === false)
|
|
@@ -268,6 +302,7 @@ export class EventDispatcher {
|
|
|
268
302
|
worktrees += await this.#worktreeManager.removeTicketWorktrees({
|
|
269
303
|
baseWorkingDir: ctx.working_dir,
|
|
270
304
|
ticketId,
|
|
305
|
+
repositoryResourceId,
|
|
271
306
|
});
|
|
272
307
|
if (await this.#worktreeManager.removeTicketRunWorkspace({
|
|
273
308
|
baseWorkingDir: ctx.working_dir,
|
|
@@ -410,9 +445,43 @@ export class EventDispatcher {
|
|
|
410
445
|
const repoCredential = selectedRepo?.resourceId && agentContext?.agent_id
|
|
411
446
|
? await fetchRepositoryCredential(this.#config, selectedRepo.resourceId, agentContext.agent_id)
|
|
412
447
|
: null;
|
|
413
|
-
await this.#applyWorktreeCwd(agentContext, ev.ticket_id, ev.action, parseWorktreeMode(ev.worktree_mode), typeof ev.max_concurrent_tickets_per_agent === 'number'
|
|
448
|
+
const worktreeProvision = await this.#applyWorktreeCwd(agentContext, ev.ticket_id, ev.action, parseWorktreeMode(ev.worktree_mode), typeof ev.max_concurrent_tickets_per_agent === 'number'
|
|
414
449
|
? ev.max_concurrent_tickets_per_agent
|
|
415
450
|
: undefined, selectedRepo ? { ...selectedRepo, credential: repoCredential } : null);
|
|
451
|
+
if (!worktreeProvision.ok) {
|
|
452
|
+
const blockerKind = worktreeProvision.blockerKind || `worktree:${worktreeProvision.reason || 'unknown'}`;
|
|
453
|
+
if (ev.ticket_id && this.#dispatchBlockers.shouldComment(ev.ticket_id, blockerKind)) {
|
|
454
|
+
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
455
|
+
ticket_id: ev.ticket_id,
|
|
456
|
+
content: `⚠️ **티켓 worktree 프로비저닝 실패** — 공유 작업 폴더에서 에이전트를 실행하지 않고 디스패치를 중단했습니다.\n\n` +
|
|
457
|
+
`원인: \`${worktreeProvision.reason || 'unknown error'}\`\n\n` +
|
|
458
|
+
`agent working_dir, repository resource와 \`.awb/wt\` 경로를 확인한 뒤 다시 트리거하세요.`,
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
log(`Trigger aborted — ticket worktree provisioning failed: ticket=${ev.ticket_id} reason=${worktreeProvision.reason || 'unknown'} blocker=${blockerKind}`);
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
if (ev.action === 'assignee'
|
|
465
|
+
&& ev.ticket_id && selectedRepo?.url && this.#worktreeManager && agentContext?.cwd) {
|
|
466
|
+
const readiness = await this.#worktreeManager.verifyPushReadiness(agentContext.cwd, selectedRepo.url);
|
|
467
|
+
if (!readiness.ok) {
|
|
468
|
+
const blockerKind = readiness.reason || 'push_credential_unavailable';
|
|
469
|
+
if (this.#dispatchBlockers.shouldComment(ev.ticket_id, blockerKind)) {
|
|
470
|
+
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
471
|
+
ticket_id: ev.ticket_id,
|
|
472
|
+
content: `⚠️ **Git push 자격 증명 미확인** — 원격 인증이 준비되지 않아 작업을 시작하지 않고 디스패치를 중단했습니다.\n\n` +
|
|
473
|
+
`원격: \`${selectedRepo.url}\`\n` +
|
|
474
|
+
`원인: \`${readiness.detail || 'push credential unavailable'}\`\n\n` +
|
|
475
|
+
`이 repository resource 에 GitHub 자격 증명(토큰)을 설정하거나 push 가능한 환경으로 전환한 뒤 다시 트리거하세요. ` +
|
|
476
|
+
`(Merging 단계의 push 실패로 CLI 세션을 낭비하지 않도록 dispatch 전에 검증합니다.)`,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
log(`Trigger aborted — push credential unavailable: ticket=${ev.ticket_id} detail=${readiness.detail || ''}`);
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
if (ev.ticket_id)
|
|
484
|
+
this.#dispatchBlockers.clear(ev.ticket_id);
|
|
416
485
|
if (ev.worktree_rel_path && ev.column_prompt && typeof ev.column_prompt.content === 'string') {
|
|
417
486
|
const workFolder = agentContext?.cwd || ev.worktree_rel_path;
|
|
418
487
|
ev.column_prompt = {
|
|
@@ -442,6 +511,7 @@ export class EventDispatcher {
|
|
|
442
511
|
agentId: provisionAgentId,
|
|
443
512
|
config: envConfig,
|
|
444
513
|
ticketId: ev.ticket_id,
|
|
514
|
+
resolveCredential: (resourceId, credAgentId) => fetchRepositoryCredential(this.#config, resourceId, credAgentId),
|
|
445
515
|
});
|
|
446
516
|
if (!result.ok) {
|
|
447
517
|
if (!result.reported && ev.ticket_id) {
|
|
@@ -702,7 +772,7 @@ export class EventDispatcher {
|
|
|
702
772
|
void this.#cleanupTerminalTicketWorktrees(ev.ticket_id);
|
|
703
773
|
}
|
|
704
774
|
if (ev.entity_type === 'ticket' && ev.action === 'archived' && ev.ticket_id) {
|
|
705
|
-
void this.#cleanupArchivedTicketWorkspace(ev.ticket_id);
|
|
775
|
+
void this.#cleanupArchivedTicketWorkspace(ev.ticket_id, ev.repository_resource_id);
|
|
706
776
|
}
|
|
707
777
|
if (this.#ticketSessionManager && ev.ticket_id) {
|
|
708
778
|
const forwarded = this.#ticketSessionManager.forwardBoardUpdate(ev.ticket_id, ev);
|