@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.
Files changed (111) hide show
  1. package/dist/bin/internal-cli.js +0 -5
  2. package/dist/lib/decide.js +4 -41
  3. package/dist/lib/git/branch-worktree.js +45 -0
  4. package/dist/lib/internal/cli-route-inventory.js +0 -3
  5. package/dist/lib/internal/task-activity.js +7 -40
  6. package/dist/lib/internal/task-event.js +4 -37
  7. package/dist/lib/internal/task-finalization.js +9 -2
  8. package/dist/lib/internal/task-ledger.js +5 -43
  9. package/dist/lib/internal/task-lifecycle.js +1 -1
  10. package/dist/lib/internal/task-operation-registry.js +1 -4
  11. package/dist/lib/internal/task-review.js +5 -37
  12. package/dist/lib/internal/task-verify.js +3 -47
  13. package/dist/lib/internal/task-warning.js +4 -40
  14. package/dist/lib/platform/pr-summary.js +4 -23
  15. package/dist/lib/platform/verification-sync.js +12 -49
  16. package/dist/lib/sandbox/control/client.js +4 -1
  17. package/dist/lib/sandbox/control/executor.js +12 -4
  18. package/dist/lib/sandbox/control/protocol.js +2 -1
  19. package/dist/lib/sandbox/removal.js +15 -8
  20. package/dist/lib/task/activity-intent.js +1 -2
  21. package/dist/lib/task/artifact-operations.js +36 -2
  22. package/dist/lib/task/artifact-schema.js +7 -7
  23. package/dist/lib/task/control-authority.js +9 -166
  24. package/dist/lib/task/decision-intents.js +2 -4
  25. package/dist/lib/task/events.js +7 -28
  26. package/dist/lib/task/finalization-handoff.js +92 -0
  27. package/dist/lib/task/finalization.js +123 -12
  28. package/dist/lib/task/intermediate-cleanup.js +9 -148
  29. package/dist/lib/task/ledger-intents.js +3 -6
  30. package/dist/lib/task/lifecycle.js +50 -11
  31. package/dist/lib/task/local-artifact-finalization.js +13 -28
  32. package/dist/lib/task/review-command.js +1 -2
  33. package/dist/lib/task/review-finalization.js +1 -2
  34. package/dist/lib/task/snapshot.js +6 -6
  35. package/dist/lib/task/verification-engine.js +16 -11
  36. package/dist/lib/task/verification.js +1 -13
  37. package/dist/lib/task/workflow-warning-intents.js +2 -4
  38. package/dist/lib/task/write.js +1 -2
  39. package/dist/lifecycle-build-manifest.json +3 -3
  40. package/lib/decide.ts +5 -35
  41. package/lib/git/branch-worktree.ts +41 -0
  42. package/lib/internal/cli-route-inventory.ts +0 -2
  43. package/lib/internal/task-activity.ts +6 -34
  44. package/lib/internal/task-event.ts +4 -37
  45. package/lib/internal/task-finalization.ts +9 -2
  46. package/lib/internal/task-ledger.ts +5 -38
  47. package/lib/internal/task-lifecycle.ts +2 -2
  48. package/lib/internal/task-operation-registry.ts +1 -4
  49. package/lib/internal/task-review.ts +5 -31
  50. package/lib/internal/task-verify.ts +3 -39
  51. package/lib/internal/task-warning.ts +3 -32
  52. package/lib/platform/pr-summary.ts +4 -25
  53. package/lib/platform/verification-sync.ts +13 -53
  54. package/lib/sandbox/control/client.ts +5 -1
  55. package/lib/sandbox/control/executor.ts +13 -4
  56. package/lib/sandbox/control/protocol.ts +3 -2
  57. package/lib/sandbox/removal.ts +23 -7
  58. package/lib/task/activity-intent.ts +1 -2
  59. package/lib/task/artifact-operations.ts +58 -2
  60. package/lib/task/artifact-schema.ts +9 -7
  61. package/lib/task/control-authority.ts +14 -188
  62. package/lib/task/decision-intents.ts +2 -4
  63. package/lib/task/events.ts +8 -27
  64. package/lib/task/finalization-handoff.ts +104 -0
  65. package/lib/task/finalization.ts +120 -12
  66. package/lib/task/intermediate-cleanup.ts +9 -125
  67. package/lib/task/ledger-intents.ts +3 -6
  68. package/lib/task/lifecycle.ts +45 -13
  69. package/lib/task/local-artifact-finalization.ts +16 -35
  70. package/lib/task/review-command.ts +2 -5
  71. package/lib/task/review-finalization.ts +1 -4
  72. package/lib/task/snapshot.ts +6 -6
  73. package/lib/task/verification-engine.ts +20 -10
  74. package/lib/task/verification.ts +1 -15
  75. package/lib/task/workflow-warning-intents.ts +2 -4
  76. package/lib/task/write.ts +1 -4
  77. package/package.json +1 -1
  78. package/templates/.agents/skills/analyze-task/SKILL.en.md +11 -2
  79. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +11 -2
  80. package/templates/.agents/skills/code-task/reference/report-template.en.md +6 -6
  81. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +6 -6
  82. package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +2 -2
  83. package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +2 -2
  84. package/templates/.agents/skills/complete-manual-validation/reference/report-template.en.md +1 -3
  85. package/templates/.agents/skills/complete-manual-validation/reference/report-template.zh-CN.md +1 -3
  86. package/templates/.agents/skills/complete-task/config/verify.en.json +2 -2
  87. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +2 -2
  88. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +3 -3
  89. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +3 -3
  90. package/templates/.agents/skills/review-code/reference/report-template.en.md +3 -3
  91. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +3 -3
  92. package/templates/.agents/skills/review-plan/reference/report-template.en.md +3 -3
  93. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +3 -3
  94. package/templates/.agents/skills/review-pr/config/verify.en.json +3 -1
  95. package/templates/.agents/skills/review-pr/config/verify.zh-CN.json +3 -1
  96. package/templates/.agents/skills/review-pr/reference/report-template.en.md +3 -3
  97. package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +3 -3
  98. package/templates/.agents/skills/run-manual-validation/config/verify.en.json +2 -2
  99. package/templates/.agents/skills/run-manual-validation/config/verify.zh-CN.json +2 -2
  100. package/templates/.agents/skills/run-manual-validation/reference/report-template.en.md +2 -2
  101. package/templates/.agents/skills/run-manual-validation/reference/report-template.zh-CN.md +2 -2
  102. package/dist/lib/internal/task-override.js +0 -138
  103. package/dist/lib/task/artifact-recovery.js +0 -476
  104. package/dist/lib/task/artifact-repair-intent.js +0 -181
  105. package/dist/lib/task/guard-override.js +0 -31
  106. package/dist/lib/task/human-override.js +0 -1259
  107. package/lib/internal/task-override.ts +0 -144
  108. package/lib/task/artifact-recovery.ts +0 -572
  109. package/lib/task/artifact-repair-intent.ts +0 -227
  110. package/lib/task/guard-override.ts +0 -50
  111. package/lib/task/human-override.ts +0 -1522
@@ -29,8 +29,8 @@
29
29
  "Remaining Coverage",
30
30
  "Raw Evidence"
31
31
  ],
32
- "required_patterns": [
33
- "^\\$ "
32
+ "state_check_patterns": [
33
+ "agent-infra-internal[ \\t]+task-snapshot\\b"
34
34
  ]
35
35
  },
36
36
  "activity-log": {
@@ -29,8 +29,8 @@
29
29
  "尚未覆盖",
30
30
  "证据原文"
31
31
  ],
32
- "required_patterns": [
33
- "^\\$ "
32
+ "state_check_patterns": [
33
+ "agent-infra-internal[ \\t]+task-snapshot\\b"
34
34
  ]
35
35
  },
36
36
  "activity-log": {
@@ -10,7 +10,7 @@
10
10
  ## State Check
11
11
 
12
12
  ```text
13
- $ agent-infra-internal task-snapshot {task-id} --format text
13
+ agent-infra-internal task-snapshot {task-id} --format text
14
14
  {command-summary-and-key-result}
15
15
  ```
16
16
  > Follow `.agents/rules/evidence-reporting.md`: record command name, target scope, exit status, sanitized result, and coverage gap; do not paste complete argv or sensitive transcripts.
@@ -67,7 +67,7 @@ $ agent-infra-internal task-snapshot {task-id} --format text
67
67
  ## Raw Evidence
68
68
 
69
69
  ```text
70
- $ agent-infra-internal task-validate {task-ref} --scope {scope} --format json -- {redacted-command}
70
+ agent-infra-internal task-validate {task-ref} --scope {scope} --format json -- {redacted-command}
71
71
  {sanitized-result}
72
72
  ```
73
73
  > Keep only the allowed public command and sanitized structured result; complete successful stdout is not default report content.
@@ -10,7 +10,7 @@
10
10
  ## 状态核对
11
11
 
12
12
  ```text
13
- $ agent-infra-internal task-snapshot {task-id} --format text
13
+ agent-infra-internal task-snapshot {task-id} --format text
14
14
  {command-summary-and-key-result}
15
15
  ```
16
16
  > 按 `.agents/rules/evidence-reporting.md` 记录命令名称、目标范围、退出状态、sanitized result 和覆盖缺口;不得粘贴完整 argv 或敏感 transcript。
@@ -67,7 +67,7 @@ $ agent-infra-internal task-snapshot {task-id} --format text
67
67
  ## 证据原文
68
68
 
69
69
  ```text
70
- $ agent-infra-internal task-validate {task-ref} --scope {scope} --format json -- {redacted-command}
70
+ agent-infra-internal task-validate {task-ref} --scope {scope} --format json -- {redacted-command}
71
71
  {sanitized-result}
72
72
  ```
73
73
  > 仅保留允许公开的命令与脱敏结构化结果;完整成功 stdout 不属于默认报告内容。
@@ -1,138 +0,0 @@
1
- import { consumeHumanOverride, diagnoseHumanOverrideForTask, issueHumanOverride } from '../task/human-override.js';
2
- import { resolveTaskRef } from '../task/resolve-ref.js';
3
- import { TaskExecutionLockError, withTaskExecutionLock } from '../task/task-execution-lock.js';
4
- import { ensureInternalHandlerRoute, internalHandlerRoute } from './cli-route-inventory.js';
5
- const USAGE = `Usage: agent-infra-internal task-override <task-ref> <diagnose|issue|consume> [options]
6
-
7
- Options: --failure-id <id> --target <target> --operator <operator> --reason <reason> --scope <scope>
8
- --intent <lifecycle-intent> --alert-number <N> --issue-number <N> --staging-dir <path>
9
- --expires-at <timestamp> --ticket <ticket-id> --pr-number <N>
10
- `;
11
- const FLAGS = {
12
- '--failure-id': 'failureId',
13
- '--target': 'target',
14
- '--operator': 'operator',
15
- '--reason': 'reason',
16
- '--scope': 'scope',
17
- '--intent': 'intent',
18
- '--failure-digest': 'failureDigest',
19
- '--expires-at': 'expiresAt',
20
- '--ticket': 'ticketId',
21
- '--facts': 'observedFacts',
22
- '--alert-number': 'alertNumber',
23
- '--issue-number': 'issueNumber',
24
- '--pr-number': 'pullRequestNumber',
25
- '--staging-dir': 'stagingDir'
26
- };
27
- function usageFailure(message) {
28
- process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: 'OVERRIDE_PAYLOAD_INVALID', message } })}\n`);
29
- process.stderr.write(USAGE);
30
- process.exitCode = 1;
31
- }
32
- async function taskOverride(args = []) {
33
- if (!ensureInternalHandlerRoute('task-override', args))
34
- return;
35
- if (args[0] === '--help' || args[0] === '-h') {
36
- process.stdout.write(USAGE);
37
- return;
38
- }
39
- const [taskRef, operation] = args;
40
- if (!taskRef || !operation || ![
41
- internalHandlerRoute('task-override', 'diagnose', operation ?? ''),
42
- internalHandlerRoute('task-override', 'issue', operation ?? ''),
43
- internalHandlerRoute('task-override', 'consume', operation ?? '')
44
- ].some(Boolean)) {
45
- usageFailure('task ref and a valid operation are required');
46
- return;
47
- }
48
- const values = { taskRef };
49
- const seen = new Set();
50
- for (let index = 2; index < args.length; index += 1) {
51
- const flag = args[index];
52
- const key = FLAGS[flag];
53
- if (!key) {
54
- usageFailure(`unknown option '${flag}'`);
55
- return;
56
- }
57
- if (seen.has(flag)) {
58
- usageFailure(`duplicate option '${flag}'`);
59
- return;
60
- }
61
- const value = args[++index];
62
- if (value === undefined || value.startsWith('--')) {
63
- usageFailure(`option '${flag}' requires a value`);
64
- return;
65
- }
66
- seen.add(flag);
67
- values[key] = key === 'observedFacts' ? value.split(',').map((fact) => fact.trim()).filter(Boolean)
68
- : key === 'alertNumber' || key === 'issueNumber' || key === 'pullRequestNumber' ? Number(value) : value;
69
- }
70
- const required = {
71
- diagnose: [],
72
- issue: ['failureId', 'target', 'operator', 'reason', 'scope', 'expiresAt'],
73
- consume: ['failureId', 'target', 'scope', 'ticketId']
74
- };
75
- const missing = required[operation].find((key) => values[key] === undefined);
76
- if (missing) {
77
- usageFailure(`${operation} requires '--${missing.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}'`);
78
- return;
79
- }
80
- const resolved = resolveTaskRef(taskRef);
81
- if (!resolved.ok) {
82
- process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: resolved.code, message: resolved.message } })}\n`);
83
- process.exitCode = 1;
84
- return;
85
- }
86
- let result;
87
- try {
88
- if (internalHandlerRoute('task-override', 'diagnose', operation)) {
89
- result = await diagnoseHumanOverrideForTask(taskRef, values.failureId ? String(values.failureId) : undefined, values.target ? String(values.target) : undefined);
90
- }
91
- else if (internalHandlerRoute('task-override', 'issue', operation)) {
92
- result = await withTaskExecutionLock(resolved.repoRoot, resolved.taskId, 'task-override.issue', async () => issueHumanOverride({
93
- taskRef,
94
- failureId: String(values.failureId),
95
- target: String(values.target),
96
- operator: String(values.operator),
97
- reason: String(values.reason),
98
- scope: String(values.scope),
99
- expiresAt: String(values.expiresAt),
100
- ...(values.intent ? { intent: String(values.intent) } : {}),
101
- ...(values.alertNumber !== undefined ? { alertNumber: Number(values.alertNumber) } : {}),
102
- ...(values.issueNumber !== undefined ? { issueNumber: Number(values.issueNumber) } : {}),
103
- ...(values.pullRequestNumber !== undefined ? { pullRequestNumber: Number(values.pullRequestNumber) } : {}),
104
- ...(values.stagingDir ? { stagingDir: String(values.stagingDir) } : {}),
105
- ...(values.failureDigest ? { failureDigest: String(values.failureDigest) } : {})
106
- }));
107
- }
108
- else {
109
- result = await withTaskExecutionLock(resolved.repoRoot, resolved.taskId, 'task-override.consume', async () => consumeHumanOverride({
110
- taskRef,
111
- ticketId: String(values.ticketId),
112
- failureId: String(values.failureId),
113
- target: String(values.target),
114
- scope: String(values.scope),
115
- ...(values.intent ? { intent: String(values.intent) } : {}),
116
- ...(values.alertNumber !== undefined ? { alertNumber: Number(values.alertNumber) } : {}),
117
- ...(values.issueNumber !== undefined ? { issueNumber: Number(values.issueNumber) } : {}),
118
- ...(values.pullRequestNumber !== undefined ? { pullRequestNumber: Number(values.pullRequestNumber) } : {}),
119
- ...(values.stagingDir ? { stagingDir: String(values.stagingDir) } : {}),
120
- ...(values.failureDigest ? { failureDigest: String(values.failureDigest) } : {}),
121
- ...(values.observedFacts ? { observedFacts: values.observedFacts } : {})
122
- }));
123
- }
124
- }
125
- catch (cause) {
126
- if (cause instanceof TaskExecutionLockError) {
127
- process.stdout.write(`${JSON.stringify({ status: 'failed', changed: false, error: { code: cause.code, message: cause.message } })}\n`);
128
- process.exitCode = 1;
129
- return;
130
- }
131
- throw cause;
132
- }
133
- process.stdout.write(`${JSON.stringify(result)}\n`);
134
- if (result.status === 'failed')
135
- process.exitCode = 1;
136
- }
137
- export { taskOverride };
138
- //# sourceMappingURL=task-override.js.map