@fitlab-ai/agent-infra 0.11.4 → 0.11.5
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/bin/internal-cli.js +0 -5
- package/dist/lib/decide.js +4 -41
- package/dist/lib/git/branch-worktree.js +45 -0
- package/dist/lib/internal/cli-route-inventory.js +0 -3
- package/dist/lib/internal/task-activity.js +7 -40
- package/dist/lib/internal/task-event.js +4 -37
- package/dist/lib/internal/task-finalization.js +9 -2
- package/dist/lib/internal/task-ledger.js +5 -43
- package/dist/lib/internal/task-lifecycle.js +1 -1
- package/dist/lib/internal/task-operation-registry.js +1 -4
- package/dist/lib/internal/task-review.js +5 -37
- package/dist/lib/internal/task-verify.js +3 -47
- package/dist/lib/internal/task-warning.js +4 -40
- package/dist/lib/platform/pr-summary.js +4 -23
- package/dist/lib/platform/verification-sync.js +12 -49
- package/dist/lib/sandbox/control/client.js +4 -1
- package/dist/lib/sandbox/control/executor.js +12 -4
- package/dist/lib/sandbox/control/protocol.js +2 -1
- package/dist/lib/sandbox/removal.js +15 -8
- package/dist/lib/task/activity-intent.js +1 -2
- package/dist/lib/task/artifact-operations.js +36 -2
- package/dist/lib/task/artifact-schema.js +7 -7
- package/dist/lib/task/control-authority.js +9 -166
- package/dist/lib/task/decision-intents.js +2 -4
- package/dist/lib/task/events.js +7 -28
- package/dist/lib/task/finalization-handoff.js +92 -0
- package/dist/lib/task/finalization.js +123 -12
- package/dist/lib/task/intermediate-cleanup.js +9 -148
- package/dist/lib/task/ledger-intents.js +3 -6
- package/dist/lib/task/lifecycle.js +50 -11
- package/dist/lib/task/local-artifact-finalization.js +13 -28
- package/dist/lib/task/review-command.js +1 -2
- package/dist/lib/task/review-finalization.js +1 -2
- package/dist/lib/task/snapshot.js +6 -6
- package/dist/lib/task/verification-engine.js +16 -11
- package/dist/lib/task/verification.js +1 -13
- package/dist/lib/task/workflow-warning-intents.js +2 -4
- package/dist/lib/task/write.js +1 -2
- package/dist/lifecycle-build-manifest.json +3 -3
- package/lib/decide.ts +5 -35
- package/lib/git/branch-worktree.ts +41 -0
- package/lib/internal/cli-route-inventory.ts +0 -2
- package/lib/internal/task-activity.ts +6 -34
- package/lib/internal/task-event.ts +4 -37
- package/lib/internal/task-finalization.ts +9 -2
- package/lib/internal/task-ledger.ts +5 -38
- package/lib/internal/task-lifecycle.ts +2 -2
- package/lib/internal/task-operation-registry.ts +1 -4
- package/lib/internal/task-review.ts +5 -31
- package/lib/internal/task-verify.ts +3 -39
- package/lib/internal/task-warning.ts +3 -32
- package/lib/platform/pr-summary.ts +4 -25
- package/lib/platform/verification-sync.ts +13 -53
- package/lib/sandbox/control/client.ts +5 -1
- package/lib/sandbox/control/executor.ts +13 -4
- package/lib/sandbox/control/protocol.ts +3 -2
- package/lib/sandbox/removal.ts +23 -7
- package/lib/task/activity-intent.ts +1 -2
- package/lib/task/artifact-operations.ts +58 -2
- package/lib/task/artifact-schema.ts +9 -7
- package/lib/task/control-authority.ts +14 -188
- package/lib/task/decision-intents.ts +2 -4
- package/lib/task/events.ts +8 -27
- package/lib/task/finalization-handoff.ts +104 -0
- package/lib/task/finalization.ts +120 -12
- package/lib/task/intermediate-cleanup.ts +9 -125
- package/lib/task/ledger-intents.ts +3 -6
- package/lib/task/lifecycle.ts +45 -13
- package/lib/task/local-artifact-finalization.ts +16 -35
- package/lib/task/review-command.ts +2 -5
- package/lib/task/review-finalization.ts +1 -4
- package/lib/task/snapshot.ts +6 -6
- package/lib/task/verification-engine.ts +20 -10
- package/lib/task/verification.ts +1 -15
- package/lib/task/workflow-warning-intents.ts +2 -4
- package/lib/task/write.ts +1 -4
- package/package.json +1 -1
- package/templates/.agents/skills/analyze-task/SKILL.en.md +11 -2
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +11 -2
- package/templates/.agents/skills/code-task/reference/report-template.en.md +6 -6
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +6 -6
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +2 -2
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +2 -2
- package/templates/.agents/skills/complete-manual-validation/reference/report-template.en.md +1 -3
- package/templates/.agents/skills/complete-manual-validation/reference/report-template.zh-CN.md +1 -3
- package/templates/.agents/skills/complete-task/config/verify.en.json +2 -2
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +2 -2
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +3 -3
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +3 -3
- package/templates/.agents/skills/review-code/reference/report-template.en.md +3 -3
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +3 -3
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +3 -3
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +3 -3
- package/templates/.agents/skills/review-pr/config/verify.en.json +3 -1
- package/templates/.agents/skills/review-pr/config/verify.zh-CN.json +3 -1
- package/templates/.agents/skills/review-pr/reference/report-template.en.md +3 -3
- package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +3 -3
- package/templates/.agents/skills/run-manual-validation/config/verify.en.json +2 -2
- package/templates/.agents/skills/run-manual-validation/config/verify.zh-CN.json +2 -2
- package/templates/.agents/skills/run-manual-validation/reference/report-template.en.md +2 -2
- package/templates/.agents/skills/run-manual-validation/reference/report-template.zh-CN.md +2 -2
- package/dist/lib/internal/task-override.js +0 -138
- package/dist/lib/task/artifact-recovery.js +0 -476
- package/dist/lib/task/artifact-repair-intent.js +0 -181
- package/dist/lib/task/guard-override.js +0 -31
- package/dist/lib/task/human-override.js +0 -1259
- package/lib/internal/task-override.ts +0 -144
- package/lib/task/artifact-recovery.ts +0 -572
- package/lib/task/artifact-repair-intent.ts +0 -227
- package/lib/task/guard-override.ts +0 -50
- package/lib/task/human-override.ts +0 -1522
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
consumeHumanOverride,
|
|
3
|
-
diagnoseHumanOverrideForTask,
|
|
4
|
-
issueHumanOverride
|
|
5
|
-
} from '../task/human-override.ts';
|
|
6
|
-
import type { ConsumeHumanOverrideRequest, HumanOverrideRequest } from '../task/human-override.ts';
|
|
7
|
-
import { resolveTaskRef } from '../task/resolve-ref.ts';
|
|
8
|
-
import { TaskExecutionLockError, withTaskExecutionLock } from '../task/task-execution-lock.ts';
|
|
9
|
-
import { ensureInternalHandlerRoute, internalHandlerRoute } from './cli-route-inventory.ts';
|
|
10
|
-
|
|
11
|
-
const USAGE = `Usage: agent-infra-internal task-override <task-ref> <diagnose|issue|consume> [options]
|
|
12
|
-
|
|
13
|
-
Options: --failure-id <id> --target <target> --operator <operator> --reason <reason> --scope <scope>
|
|
14
|
-
--intent <lifecycle-intent> --alert-number <N> --issue-number <N> --staging-dir <path>
|
|
15
|
-
--expires-at <timestamp> --ticket <ticket-id> --pr-number <N>
|
|
16
|
-
`;
|
|
17
|
-
|
|
18
|
-
const FLAGS: Record<string, string> = {
|
|
19
|
-
'--failure-id': 'failureId',
|
|
20
|
-
'--target': 'target',
|
|
21
|
-
'--operator': 'operator',
|
|
22
|
-
'--reason': 'reason',
|
|
23
|
-
'--scope': 'scope',
|
|
24
|
-
'--intent': 'intent',
|
|
25
|
-
'--failure-digest': 'failureDigest',
|
|
26
|
-
'--expires-at': 'expiresAt',
|
|
27
|
-
'--ticket': 'ticketId',
|
|
28
|
-
'--facts': 'observedFacts',
|
|
29
|
-
'--alert-number': 'alertNumber',
|
|
30
|
-
'--issue-number': 'issueNumber',
|
|
31
|
-
'--pr-number': 'pullRequestNumber',
|
|
32
|
-
'--staging-dir': 'stagingDir'
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
function usageFailure(message: string): void {
|
|
36
|
-
process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: 'OVERRIDE_PAYLOAD_INVALID', message } })}\n`);
|
|
37
|
-
process.stderr.write(USAGE);
|
|
38
|
-
process.exitCode = 1;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function taskOverride(args: string[] = []): Promise<void> {
|
|
42
|
-
if (!ensureInternalHandlerRoute('task-override', args)) return;
|
|
43
|
-
if (args[0] === '--help' || args[0] === '-h') { process.stdout.write(USAGE); return; }
|
|
44
|
-
const [taskRef, operation] = args;
|
|
45
|
-
if (!taskRef || !operation || ![
|
|
46
|
-
internalHandlerRoute('task-override', 'diagnose', operation ?? ''),
|
|
47
|
-
internalHandlerRoute('task-override', 'issue', operation ?? ''),
|
|
48
|
-
internalHandlerRoute('task-override', 'consume', operation ?? '')
|
|
49
|
-
].some(Boolean)) {
|
|
50
|
-
usageFailure('task ref and a valid operation are required');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const values: Record<string, unknown> = { taskRef };
|
|
54
|
-
const seen = new Set<string>();
|
|
55
|
-
for (let index = 2; index < args.length; index += 1) {
|
|
56
|
-
const flag = args[index]!;
|
|
57
|
-
const key = FLAGS[flag];
|
|
58
|
-
if (!key) { usageFailure(`unknown option '${flag}'`); return; }
|
|
59
|
-
if (seen.has(flag)) { usageFailure(`duplicate option '${flag}'`); return; }
|
|
60
|
-
const value = args[++index];
|
|
61
|
-
if (value === undefined || value.startsWith('--')) { usageFailure(`option '${flag}' requires a value`); return; }
|
|
62
|
-
seen.add(flag);
|
|
63
|
-
values[key] = key === 'observedFacts' ? value.split(',').map((fact) => fact.trim()).filter(Boolean)
|
|
64
|
-
: key === 'alertNumber' || key === 'issueNumber' || key === 'pullRequestNumber' ? Number(value) : value;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const required: Record<string, string[]> = {
|
|
68
|
-
diagnose: [],
|
|
69
|
-
issue: ['failureId', 'target', 'operator', 'reason', 'scope', 'expiresAt'],
|
|
70
|
-
consume: ['failureId', 'target', 'scope', 'ticketId']
|
|
71
|
-
};
|
|
72
|
-
const missing = required[operation]!.find((key) => values[key] === undefined);
|
|
73
|
-
if (missing) { usageFailure(`${operation} requires '--${missing.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}'`); return; }
|
|
74
|
-
|
|
75
|
-
const resolved = resolveTaskRef(taskRef);
|
|
76
|
-
if (!resolved.ok) {
|
|
77
|
-
process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: resolved.code, message: resolved.message } })}\n`);
|
|
78
|
-
process.exitCode = 1;
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
let result;
|
|
83
|
-
try {
|
|
84
|
-
if (internalHandlerRoute('task-override', 'diagnose', operation)) {
|
|
85
|
-
result = await diagnoseHumanOverrideForTask(
|
|
86
|
-
taskRef,
|
|
87
|
-
values.failureId ? String(values.failureId) : undefined,
|
|
88
|
-
values.target ? String(values.target) : undefined
|
|
89
|
-
);
|
|
90
|
-
} else if (internalHandlerRoute('task-override', 'issue', operation)) {
|
|
91
|
-
result = await withTaskExecutionLock(
|
|
92
|
-
resolved.repoRoot,
|
|
93
|
-
resolved.taskId,
|
|
94
|
-
'task-override.issue',
|
|
95
|
-
async () => issueHumanOverride({
|
|
96
|
-
taskRef,
|
|
97
|
-
failureId: String(values.failureId),
|
|
98
|
-
target: String(values.target),
|
|
99
|
-
operator: String(values.operator),
|
|
100
|
-
reason: String(values.reason),
|
|
101
|
-
scope: String(values.scope),
|
|
102
|
-
expiresAt: String(values.expiresAt),
|
|
103
|
-
...(values.intent ? { intent: String(values.intent) as HumanOverrideRequest['intent'] } : {}),
|
|
104
|
-
...(values.alertNumber !== undefined ? { alertNumber: Number(values.alertNumber) } : {}),
|
|
105
|
-
...(values.issueNumber !== undefined ? { issueNumber: Number(values.issueNumber) } : {}),
|
|
106
|
-
...(values.pullRequestNumber !== undefined ? { pullRequestNumber: Number(values.pullRequestNumber) } : {}),
|
|
107
|
-
...(values.stagingDir ? { stagingDir: String(values.stagingDir) } : {}),
|
|
108
|
-
...(values.failureDigest ? { failureDigest: String(values.failureDigest) } : {})
|
|
109
|
-
} satisfies HumanOverrideRequest)
|
|
110
|
-
);
|
|
111
|
-
} else {
|
|
112
|
-
result = await withTaskExecutionLock(
|
|
113
|
-
resolved.repoRoot,
|
|
114
|
-
resolved.taskId,
|
|
115
|
-
'task-override.consume',
|
|
116
|
-
async () => consumeHumanOverride({
|
|
117
|
-
taskRef,
|
|
118
|
-
ticketId: String(values.ticketId),
|
|
119
|
-
failureId: String(values.failureId),
|
|
120
|
-
target: String(values.target),
|
|
121
|
-
scope: String(values.scope),
|
|
122
|
-
...(values.intent ? { intent: String(values.intent) as ConsumeHumanOverrideRequest['intent'] } : {}),
|
|
123
|
-
...(values.alertNumber !== undefined ? { alertNumber: Number(values.alertNumber) } : {}),
|
|
124
|
-
...(values.issueNumber !== undefined ? { issueNumber: Number(values.issueNumber) } : {}),
|
|
125
|
-
...(values.pullRequestNumber !== undefined ? { pullRequestNumber: Number(values.pullRequestNumber) } : {}),
|
|
126
|
-
...(values.stagingDir ? { stagingDir: String(values.stagingDir) } : {}),
|
|
127
|
-
...(values.failureDigest ? { failureDigest: String(values.failureDigest) } : {}),
|
|
128
|
-
...(values.observedFacts ? { observedFacts: values.observedFacts as string[] } : {})
|
|
129
|
-
} satisfies ConsumeHumanOverrideRequest)
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
} catch (cause) {
|
|
133
|
-
if (cause instanceof TaskExecutionLockError) {
|
|
134
|
-
process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: cause.code, message: cause.message } })}\n`);
|
|
135
|
-
process.exitCode = 1;
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
throw cause;
|
|
139
|
-
}
|
|
140
|
-
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
141
|
-
if (result.status === 'failed') process.exitCode = 1;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export { taskOverride };
|