opencode-swarm 7.141.2 → 7.142.1
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/cli/{config-doctor-weqs97sa.js → config-doctor-2a3qmp5p.js} +2 -2
- package/dist/cli/{core-zg7fqfsm.js → core-h9z49ant.js} +1 -1
- package/dist/cli/{curation-policy-j1fbc3ry.js → curation-policy-pkb2eeb1.js} +6 -6
- package/dist/cli/curator-drift-49p3jnte.js +1 -1
- package/dist/cli/{curator-llm-factory-8p86mgye.js → curator-llm-factory-9fr243kj.js} +29 -29
- package/dist/cli/{curator-v1tnrt93.js → curator-mtz194wy.js} +29 -29
- package/dist/cli/{evidence-summary-service-a4w0yc8h.js → evidence-summary-service-fgckng0a.js} +13 -11
- package/dist/cli/{gate-evidence-rt9034ft.js → gate-evidence-ppna7em4.js} +9 -5
- package/dist/cli/{guardrail-explain-8yrznk98.js → guardrail-explain-ejdvvnjz.js} +30 -30
- package/dist/cli/{guardrail-log-7hj4x9yt.js → guardrail-log-adjs25ye.js} +4 -4
- package/dist/cli/{hive-promoter-6zcnyh1j.js → hive-promoter-jejme31e.js} +29 -29
- package/dist/cli/{index-vts5e84g.js → index-0r4qs243.js} +31 -31
- package/dist/cli/index-2mb5y2w1.js +1372 -0
- package/dist/cli/{index-nse60anv.js → index-7c4bxgdh.js} +1 -1
- package/dist/cli/{index-qskz8j2z.js → index-82m5kwtd.js} +1 -1
- package/dist/cli/{index-6bp1jecx.js → index-9kf3mj08.js} +4 -4
- package/dist/cli/{index-szrcxvr7.js → index-9wmx9ca8.js} +6 -6
- package/dist/cli/{index-76651erq.js → index-ajfa2wmj.js} +9 -9
- package/dist/cli/{index-jpt07f2k.js → index-bb4pcn58.js} +2 -2
- package/dist/cli/{index-qa50yyeh.js → index-bkkxxwcd.js} +1 -1
- package/dist/cli/{index-c2hczjhp.js → index-erfnw81g.js} +3 -3
- package/dist/cli/{index-why8n7cr.js → index-gtkk5rx7.js} +137 -36
- package/dist/cli/{index-73sxchez.js → index-h7ye3bzp.js} +4127 -2558
- package/dist/cli/{index-hwxcdrv9.js → index-j02ez59y.js} +9 -9
- package/dist/cli/{index-h3vk67wp.js → index-k1xsjzm3.js} +3 -3
- package/dist/cli/{index-zbj3yrrd.js → index-k31en0ja.js} +3 -3
- package/dist/cli/{index-q4vaar2b.js → index-k92cagmt.js} +2 -2
- package/dist/cli/{index-p5y72gtj.js → index-kbshtwha.js} +3 -3
- package/dist/cli/{index-r6pdts5c.js → index-ktazgjqw.js} +2 -2
- package/dist/cli/{index-mxtt4x8r.js → index-myav90y6.js} +212 -10
- package/dist/cli/{index-kkn2jxda.js → index-rthq1a6w.js} +1 -1
- package/dist/cli/{index-9d4gck4e.js → index-s2rcz51a.js} +59 -35
- package/dist/cli/{index-y6k6x197.js → index-sdqtecsd.js} +1 -1
- package/dist/cli/{index-v250345n.js → index-tq5s07ta.js} +1 -1
- package/dist/cli/{index-zf5nkkdd.js → index-vefjxxmb.js} +1 -1
- package/dist/cli/{index-bxjhn3t3.js → index-vy11zjvh.js} +2 -2
- package/dist/cli/{index-kq5p3nm3.js → index-w7x7qxz2.js} +1 -1
- package/dist/cli/{index-mqqmant3.js → index-we279je2.js} +1 -1
- package/dist/cli/{index-xx0q37xb.js → index-xah70t2t.js} +1 -1
- package/dist/cli/{index-aqzvjhb7.js → index-xfhe29z3.js} +5 -5
- package/dist/cli/{index-f1hsrgw1.js → index-y9h2vqf6.js} +1 -1
- package/dist/cli/index.js +42 -29
- package/dist/cli/{knowledge-escalator-xjkbek46.js → knowledge-escalator-0b80ryka.js} +12 -12
- package/dist/cli/{knowledge-events-hsdx5prn.js → knowledge-events-8x2wt562.js} +10 -10
- package/dist/cli/{knowledge-link-x86ebng8.js → knowledge-link-fn5j3r4q.js} +5 -5
- package/dist/cli/{knowledge-store-vt059r81.js → knowledge-store-d0xj6wht.js} +6 -6
- package/dist/cli/{knowledge-validator-jr5694jb.js → knowledge-validator-ewfj679a.js} +8 -8
- package/dist/cli/{pending-delegations-7xsagjy5.js → pending-delegations-0hb97ps1.js} +4 -4
- package/dist/cli/{pr-subscriptions-r6cdsa3t.js → pr-subscriptions-b63t252j.js} +4 -4
- package/dist/cli/{runner-nm3baddf.js → runner-hrg7h2h4.js} +6 -6
- package/dist/cli/{scan-cursor-6nrkcfbr.js → scan-cursor-hfyz7zpw.js} +7 -7
- package/dist/cli/{schema-f6pt0zjy.js → schema-ney3c685.js} +1 -1
- package/dist/cli/{scope-persistence-jc0mtp7g.js → scope-persistence-dbfgs7gh.js} +6 -6
- package/dist/cli/{skill-generator-4vp33gjb.js → skill-generator-p651jex5.js} +14 -14
- package/dist/cli/{telemetry-zex3zv3v.js → telemetry-xyfb5vm8.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-n41qw3n8.js → worktree-collision-ownership-ymdxetnn.js} +4 -4
- package/dist/cli/{worktree-isolation-a3hkz665.js → worktree-isolation-513vx61s.js} +29 -29
- package/dist/commands/close.d.ts +20 -2
- package/dist/commands/hive-quarantine.d.ts +23 -0
- package/dist/commands/registry.d.ts +9 -0
- package/dist/gate-evidence.d.ts +24 -1
- package/dist/hooks/hive-transaction.d.ts +41 -0
- package/dist/index.js +491 -478
- package/dist/knowledge/hive-quarantine.d.ts +156 -0
- package/dist/observability/catalog.d.ts +2 -2
- package/dist/plan/ledger.d.ts +31 -1
- package/dist/plan/manager.d.ts +1 -0
- package/dist/state.d.ts +1 -1
- package/dist/telemetry.d.ts +1 -1
- package/dist/workflow/close-terminal.d.ts +22 -0
- package/dist/workflow/coder-settlement.d.ts +0 -23
- package/dist/workflow/task-repair.d.ts +1 -0
- package/dist/workflow/task-terminal.d.ts +18 -23
- package/dist/workflow/workflow-wal-file.d.ts +20 -0
- package/dist/workflow/workflow-wal-schema.d.ts +67 -0
- package/dist/worktree/merge.d.ts +17 -0
- package/package.json +1 -1
- package/dist/cli/index-3d13jkzq.js +0 -623
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
authorizeCuration
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-tq5s07ta.js";
|
|
5
5
|
import {
|
|
6
6
|
findNearDuplicate,
|
|
7
7
|
inferTags,
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
resolveSwarmKnowledgePath,
|
|
10
10
|
resolveSwarmRejectedPath,
|
|
11
11
|
transactKnowledge
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-j02ez59y.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveKnowledgeStoreDir
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-w7x7qxz2.js";
|
|
16
16
|
import {
|
|
17
17
|
atomicWriteFile
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-erfnw81g.js";
|
|
19
19
|
import {
|
|
20
20
|
require_proper_lockfile
|
|
21
21
|
} from "./index-7g4c7s5r.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import {
|
|
3
|
-
unsafePathTextReason
|
|
4
|
-
} from "./index-556ja8an.js";
|
|
5
2
|
import {
|
|
6
3
|
computePlanStructureHash,
|
|
7
4
|
derivePlanId
|
|
8
|
-
} from "./index-
|
|
5
|
+
} from "./index-myav90y6.js";
|
|
6
|
+
import {
|
|
7
|
+
unsafePathTextReason
|
|
8
|
+
} from "./index-556ja8an.js";
|
|
9
9
|
import {
|
|
10
10
|
assertProjectRoot
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-k31en0ja.js";
|
|
12
12
|
import {
|
|
13
13
|
require_proper_lockfile
|
|
14
14
|
} from "./index-7g4c7s5r.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./index-4nt52yr9.js";
|
|
18
18
|
import {
|
|
19
19
|
PlanSchema
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-sdqtecsd.js";
|
|
21
21
|
import {
|
|
22
22
|
__toESM
|
|
23
23
|
} from "./index-a76rekgs.js";
|
|
@@ -7,19 +7,22 @@ import {
|
|
|
7
7
|
} from "./index-ae75rja9.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveKnowledgeStoreDir
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-w7x7qxz2.js";
|
|
11
11
|
import {
|
|
12
12
|
atomicWriteFile
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-erfnw81g.js";
|
|
14
14
|
import {
|
|
15
15
|
assertProjectRoot
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-k31en0ja.js";
|
|
17
17
|
import {
|
|
18
18
|
require_proper_lockfile
|
|
19
19
|
} from "./index-7g4c7s5r.js";
|
|
20
|
+
import {
|
|
21
|
+
emit
|
|
22
|
+
} from "./index-s2rcz51a.js";
|
|
20
23
|
import {
|
|
21
24
|
loadPluginConfigWithMeta
|
|
22
|
-
} from "./index-
|
|
25
|
+
} from "./index-sdqtecsd.js";
|
|
23
26
|
import {
|
|
24
27
|
init_logger,
|
|
25
28
|
warn
|
|
@@ -27,10 +30,7 @@ import {
|
|
|
27
30
|
import {
|
|
28
31
|
KnowledgeConfigSchema,
|
|
29
32
|
init_schema
|
|
30
|
-
} from "./index-
|
|
31
|
-
import {
|
|
32
|
-
emit
|
|
33
|
-
} from "./index-9d4gck4e.js";
|
|
33
|
+
} from "./index-we279je2.js";
|
|
34
34
|
import {
|
|
35
35
|
__require,
|
|
36
36
|
__toESM
|
|
@@ -2545,7 +2545,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
|
|
|
2545
2545
|
}
|
|
2546
2546
|
let bumps = 0;
|
|
2547
2547
|
if (deltas.length > 0) {
|
|
2548
|
-
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-
|
|
2548
|
+
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-d0xj6wht.js");
|
|
2549
2549
|
bumps = await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
|
|
2550
2550
|
}
|
|
2551
2551
|
return {
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
detectPosixWrites,
|
|
13
13
|
detectWindowsWrites,
|
|
14
14
|
resolveWriteTargets
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-h7ye3bzp.js";
|
|
16
16
|
import {
|
|
17
17
|
checkFileAuthority,
|
|
18
18
|
classifyFile,
|
|
19
19
|
isInDeclaredScope,
|
|
20
20
|
redactPath,
|
|
21
21
|
redactShellCommand
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-rthq1a6w.js";
|
|
23
23
|
|
|
24
24
|
// src/services/guardrail-explain-service.ts
|
|
25
25
|
import path from "path";
|
|
@@ -86,7 +86,7 @@ var _internals = {
|
|
|
86
86
|
symlinkSync: fs.symlinkSync
|
|
87
87
|
},
|
|
88
88
|
writeScopeToDisk: async (directory, taskId, files) => {
|
|
89
|
-
const { writeScopeToDisk: realWrite } = await import("./scope-persistence-
|
|
89
|
+
const { writeScopeToDisk: realWrite } = await import("./scope-persistence-dbfgs7gh.js");
|
|
90
90
|
return realWrite(directory, taskId, files);
|
|
91
91
|
},
|
|
92
92
|
writeLaneProfileToDisk: async (_worktreePath, _laneIndex, _envOverrides) => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import {
|
|
3
|
-
withEvidenceLock
|
|
4
|
-
} from "./index-zbj3yrrd.js";
|
|
5
2
|
import {
|
|
6
3
|
invalidateCachedArtifact
|
|
7
4
|
} from "./index-ed5ykebp.js";
|
|
5
|
+
import {
|
|
6
|
+
withEvidenceLock
|
|
7
|
+
} from "./index-k31en0ja.js";
|
|
8
8
|
import {
|
|
9
9
|
bunWrite
|
|
10
10
|
} from "./index-4nt52yr9.js";
|
|
@@ -6,30 +6,10 @@ import {
|
|
|
6
6
|
EvaluationRunV1Schema,
|
|
7
7
|
GateAuditResultV1Schema,
|
|
8
8
|
getProtectedEvaluationRunIds
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-k92cagmt.js";
|
|
10
10
|
import {
|
|
11
11
|
readEffectiveSpecSync
|
|
12
12
|
} from "./index-9ss2m4rs.js";
|
|
13
|
-
import {
|
|
14
|
-
LedgerStaleWriterError,
|
|
15
|
-
appendLedgerEvent,
|
|
16
|
-
computeCurrentPlanHash,
|
|
17
|
-
computePlanHash,
|
|
18
|
-
derivePlanId,
|
|
19
|
-
derivePlanIdentityHash,
|
|
20
|
-
getLatestLedgerSeq,
|
|
21
|
-
initLedger,
|
|
22
|
-
ledgerExists,
|
|
23
|
-
loadLastApprovedPlan,
|
|
24
|
-
normalizeExecutionProfileForHash,
|
|
25
|
-
readLedgerEvents,
|
|
26
|
-
readLedgerEventsWithIntegrity,
|
|
27
|
-
replaceTruncatedLedgerWithRecoveryRoot,
|
|
28
|
-
replayFromLedger,
|
|
29
|
-
replayFromLedgerWithStatus,
|
|
30
|
-
takeSnapshotEvent,
|
|
31
|
-
takeSnapshotWithRetry
|
|
32
|
-
} from "./index-mxtt4x8r.js";
|
|
33
13
|
import {
|
|
34
14
|
getWorktreeMergeFailure
|
|
35
15
|
} from "./index-zsrtt42s.js";
|
|
@@ -38,7 +18,7 @@ import {
|
|
|
38
18
|
readTaskEvidence,
|
|
39
19
|
readTaskEvidenceRaw,
|
|
40
20
|
sanitizeTaskId
|
|
41
|
-
} from "./index-
|
|
21
|
+
} from "./index-2mb5y2w1.js";
|
|
42
22
|
import {
|
|
43
23
|
_internals,
|
|
44
24
|
buildDefaultPolicy,
|
|
@@ -50,37 +30,57 @@ import {
|
|
|
50
30
|
readSwarmFileAsync,
|
|
51
31
|
validateSwarmPath
|
|
52
32
|
} from "./index-k46me75h.js";
|
|
33
|
+
import {
|
|
34
|
+
invalidateCachedArtifact,
|
|
35
|
+
readCachedParsedFile
|
|
36
|
+
} from "./index-ed5ykebp.js";
|
|
37
|
+
import {
|
|
38
|
+
EVIDENCE_MAX_JSON_BYTES,
|
|
39
|
+
EvidenceBundleSchema,
|
|
40
|
+
EvidenceSchema
|
|
41
|
+
} from "./index-gprxjmm7.js";
|
|
42
|
+
import {
|
|
43
|
+
LedgerStaleWriterError,
|
|
44
|
+
appendLedgerEvent,
|
|
45
|
+
computeCurrentPlanHash,
|
|
46
|
+
computePlanHash,
|
|
47
|
+
derivePlanId,
|
|
48
|
+
derivePlanIdentityHash,
|
|
49
|
+
getLatestLedgerSeq,
|
|
50
|
+
initLedger,
|
|
51
|
+
ledgerExists,
|
|
52
|
+
loadLastApprovedPlan,
|
|
53
|
+
normalizeExecutionProfileForHash,
|
|
54
|
+
readLedgerEvents,
|
|
55
|
+
readLedgerEventsWithIntegrity,
|
|
56
|
+
replaceTruncatedLedgerWithRecoveryRoot,
|
|
57
|
+
replayFromLedger,
|
|
58
|
+
replayFromLedgerWithStatus,
|
|
59
|
+
takeSnapshotEvent,
|
|
60
|
+
takeSnapshotWithRetry
|
|
61
|
+
} from "./index-myav90y6.js";
|
|
53
62
|
import {
|
|
54
63
|
assertProjectRoot,
|
|
55
64
|
tryAcquireLock,
|
|
56
65
|
withEvidenceLock
|
|
57
|
-
} from "./index-
|
|
66
|
+
} from "./index-k31en0ja.js";
|
|
58
67
|
import {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
} from "./index-ed5ykebp.js";
|
|
68
|
+
emit
|
|
69
|
+
} from "./index-s2rcz51a.js";
|
|
62
70
|
import {
|
|
63
71
|
bunHash,
|
|
64
72
|
bunWrite,
|
|
65
73
|
mergeEnvForChild
|
|
66
74
|
} from "./index-4nt52yr9.js";
|
|
67
|
-
import {
|
|
68
|
-
EVIDENCE_MAX_JSON_BYTES,
|
|
69
|
-
EvidenceBundleSchema,
|
|
70
|
-
EvidenceSchema
|
|
71
|
-
} from "./index-gprxjmm7.js";
|
|
72
75
|
import {
|
|
73
76
|
PlanSchema
|
|
74
|
-
} from "./index-
|
|
77
|
+
} from "./index-sdqtecsd.js";
|
|
75
78
|
import {
|
|
76
79
|
criticalWarn,
|
|
77
80
|
error,
|
|
78
81
|
init_logger,
|
|
79
82
|
warn
|
|
80
83
|
} from "./index-zgwm4ryv.js";
|
|
81
|
-
import {
|
|
82
|
-
emit
|
|
83
|
-
} from "./index-9d4gck4e.js";
|
|
84
84
|
import {
|
|
85
85
|
ZodError,
|
|
86
86
|
init_zod
|
|
@@ -3841,6 +3841,107 @@ ${markdown}`;
|
|
|
3841
3841
|
} catch {}
|
|
3842
3842
|
}
|
|
3843
3843
|
}
|
|
3844
|
+
async function updateTaskStatus(directory, taskId, status, options) {
|
|
3845
|
+
assertProjectRoot(directory);
|
|
3846
|
+
const derivePhaseStatusFromTasks = (tasks) => {
|
|
3847
|
+
if (tasks.length > 0 && tasks.every((task) => task.status === "completed")) {
|
|
3848
|
+
return "complete";
|
|
3849
|
+
}
|
|
3850
|
+
if (tasks.some((task) => task.status === "in_progress")) {
|
|
3851
|
+
return "in_progress";
|
|
3852
|
+
}
|
|
3853
|
+
if (tasks.some((task) => task.status === "blocked")) {
|
|
3854
|
+
return "blocked";
|
|
3855
|
+
}
|
|
3856
|
+
return "pending";
|
|
3857
|
+
};
|
|
3858
|
+
{
|
|
3859
|
+
const currentPlan = await _internals9.loadPlanJsonOnly(directory);
|
|
3860
|
+
if (currentPlan) {
|
|
3861
|
+
const currentTask = currentPlan.phases.flatMap((p) => p.tasks).find((t) => t.id === taskId);
|
|
3862
|
+
const settled = currentTask && currentTask.status !== "pending" && currentTask.status !== "in_progress";
|
|
3863
|
+
const auditedRepair = status === "in_progress" && options?.force === true;
|
|
3864
|
+
if (settled && status !== currentTask.status && !auditedRepair && options?.terminalReconciliation !== true) {
|
|
3865
|
+
warn(`[updateTaskStatus] refusing backward transition of settled task ${taskId} (${currentTask.status}) to ${status} without audited repair`);
|
|
3866
|
+
return currentPlan;
|
|
3867
|
+
}
|
|
3868
|
+
}
|
|
3869
|
+
}
|
|
3870
|
+
const MAX_OUTER_RETRIES = 1;
|
|
3871
|
+
for (let attempt = 0;attempt <= MAX_OUTER_RETRIES; attempt++) {
|
|
3872
|
+
const plan = await _internals9.loadPlan(directory);
|
|
3873
|
+
if (plan === null) {
|
|
3874
|
+
throw new Error(`Plan not found in directory: ${directory}`);
|
|
3875
|
+
}
|
|
3876
|
+
let taskFound = false;
|
|
3877
|
+
const updatedPhases = plan.phases.map((phase) => {
|
|
3878
|
+
const updatedTasks = phase.tasks.map((task) => {
|
|
3879
|
+
if (task.id === taskId) {
|
|
3880
|
+
taskFound = true;
|
|
3881
|
+
return { ...task, status };
|
|
3882
|
+
}
|
|
3883
|
+
return task;
|
|
3884
|
+
});
|
|
3885
|
+
return {
|
|
3886
|
+
...phase,
|
|
3887
|
+
status: derivePhaseStatusFromTasks(updatedTasks),
|
|
3888
|
+
tasks: updatedTasks
|
|
3889
|
+
};
|
|
3890
|
+
});
|
|
3891
|
+
if (!taskFound) {
|
|
3892
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
3893
|
+
}
|
|
3894
|
+
const updatedPlan = { ...plan, phases: updatedPhases };
|
|
3895
|
+
try {
|
|
3896
|
+
await savePlan(directory, updatedPlan, {
|
|
3897
|
+
preserveCompletedStatuses: false,
|
|
3898
|
+
planLockAlreadyHeld: options?.planLockAlreadyHeld
|
|
3899
|
+
});
|
|
3900
|
+
if (status === "completed" || status === "blocked") {
|
|
3901
|
+
const recordedTask = updatedPlan.phases.flatMap((phase) => phase.tasks).find((candidate) => candidate.id === taskId);
|
|
3902
|
+
try {
|
|
3903
|
+
await _internals9.recordTaskAttempt(directory, {
|
|
3904
|
+
taskId,
|
|
3905
|
+
agent: "plan-status",
|
|
3906
|
+
outcome: status === "completed" ? "pass" : "fail",
|
|
3907
|
+
failureReason: status === "blocked" ? recordedTask?.blocked_reason ?? "task marked blocked (no blocked_reason recorded)" : undefined,
|
|
3908
|
+
fileTargets: recordedTask?.files_touched ?? []
|
|
3909
|
+
});
|
|
3910
|
+
} catch (err) {
|
|
3911
|
+
warn(`[plan/manager] run-memory record for ${taskId} failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
3912
|
+
}
|
|
3913
|
+
}
|
|
3914
|
+
if (status === "completed" && _internals9.isGitRepo(directory) && _internals9.isEpicModeActiveForProject(directory)) {
|
|
3915
|
+
const mergeFailure = _internals9.getWorktreeMergeFailure(taskId);
|
|
3916
|
+
if (mergeFailure) {
|
|
3917
|
+
criticalWarn(`[plan/manager] Rule 2 auto-commit SKIPPED for ${taskId}: worktree merge-back ${mergeFailure.outcome} at stage '${mergeFailure.stage}'. The task's changes are NOT in the main tree, so no completion marker is written (Rule 3 must not treat this task as satisfied). Resolve the preserved worktree, then re-run the task. Detail: ${mergeFailure.message}`);
|
|
3918
|
+
return updatedPlan;
|
|
3919
|
+
}
|
|
3920
|
+
try {
|
|
3921
|
+
let taskDescription;
|
|
3922
|
+
for (const phase of updatedPlan.phases) {
|
|
3923
|
+
const found = phase.tasks.find((t) => t.id === taskId);
|
|
3924
|
+
if (found) {
|
|
3925
|
+
taskDescription = found.description;
|
|
3926
|
+
break;
|
|
3927
|
+
}
|
|
3928
|
+
}
|
|
3929
|
+
const canonicalScope = _internals9.readTaskScopes(directory, taskId);
|
|
3930
|
+
await _internals9.commitTaskCompletion(directory, taskId, taskDescription, canonicalScope ?? undefined);
|
|
3931
|
+
} catch (commitErr) {
|
|
3932
|
+
criticalWarn(`[plan/manager] Rule 2 auto-commit for ${taskId} threw (non-fatal): ${commitErr instanceof Error ? commitErr.message : String(commitErr)}`);
|
|
3933
|
+
}
|
|
3934
|
+
}
|
|
3935
|
+
return updatedPlan;
|
|
3936
|
+
} catch (error2) {
|
|
3937
|
+
if (error2 instanceof PlanConcurrentModificationError && attempt < MAX_OUTER_RETRIES) {
|
|
3938
|
+
continue;
|
|
3939
|
+
}
|
|
3940
|
+
throw error2;
|
|
3941
|
+
}
|
|
3942
|
+
}
|
|
3943
|
+
throw new Error("updateTaskStatus: unexpected loop exit");
|
|
3944
|
+
}
|
|
3844
3945
|
function derivePlanMarkdown(plan) {
|
|
3845
3946
|
const statusMap = {
|
|
3846
3947
|
pending: "PENDING",
|
|
@@ -5008,4 +5109,4 @@ function mergeDurableGateEntriesFromEvidence(taskId, entries, evidence) {
|
|
|
5008
5109
|
return merged;
|
|
5009
5110
|
}
|
|
5010
5111
|
|
|
5011
|
-
export { projectDbExists, getProjectDb, closeProjectDb, buildTaskCompletionDescriptor, ensureTaskCheckpointReceipt, updateTaskCheckpointReceipt, isValidEnvKey, getExecutor, init_executor, MAX_TRANSIENT_RETRIES, isTransientSpawnError, transientBackoff, getGitRepositoryStatus, isGitRepo, getDefaultBaseBranch, detectDefaultRemoteBranch, resetToRemoteBranch, resetToMainAfterMerge, containsPathTraversal, containsControlChars, isStateUnreadable, loadEpicSessionState, isEpicModeActive, enableEpicMode, disableEpicMode, normalizePath, pathsConflict, isGlobalFile, isProtectedPath, readTaskScopes, loadPlanJsonOnly, loadPlan, savePlan, closePlanTerminalState, derivePlanMarkdown, isValidEvidenceType, sanitizeTaskId2 as sanitizeTaskId, validateProjectRoot, saveEvidence, loadEvidence, listEvidenceTaskIds, checkRequirementCoverage, archiveEvidence, readDurableGateEvidence, getDurableGateEvidenceStatus, getDurableGateEvidenceStatusForTask, mergeDurableGateEntriesFromEvidence };
|
|
5112
|
+
export { projectDbExists, getProjectDb, closeProjectDb, buildTaskCompletionDescriptor, ensureTaskCheckpointReceipt, updateTaskCheckpointReceipt, isValidEnvKey, getExecutor, init_executor, MAX_TRANSIENT_RETRIES, isTransientSpawnError, transientBackoff, getGitRepositoryStatus, isGitRepo, getDefaultBaseBranch, detectDefaultRemoteBranch, resetToRemoteBranch, resetToMainAfterMerge, containsPathTraversal, containsControlChars, isStateUnreadable, loadEpicSessionState, isEpicModeActive, enableEpicMode, disableEpicMode, normalizePath, pathsConflict, isGlobalFile, isProtectedPath, readTaskScopes, loadPlanJsonOnly, loadPlan, savePlan, closePlanTerminalState, updateTaskStatus, derivePlanMarkdown, isValidEvidenceType, sanitizeTaskId2 as sanitizeTaskId, validateProjectRoot, saveEvidence, loadEvidence, listEvidenceTaskIds, checkRequirementCoverage, archiveEvidence, readDurableGateEvidence, getDurableGateEvidenceStatus, getDurableGateEvidenceStatusForTask, mergeDurableGateEntriesFromEvidence };
|