opencode-swarm 7.188.8 → 7.188.10
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/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/cli/{auto-checkpoint-cdcf7yeb.js → auto-checkpoint-c4nesm12.js} +5 -5
- package/dist/cli/{checkpoint-jpc3a69d.js → checkpoint-sfnz4843.js} +9 -9
- package/dist/cli/{coder-settlement-rmaypr7g.js → coder-settlement-y7wjm4w3.js} +3 -3
- package/dist/cli/{config-doctor-b5t9hrzb.js → config-doctor-d01gbn5x.js} +7 -7
- package/dist/cli/{core-ky5b3mh6.js → core-1ymsg83x.js} +1 -1
- package/dist/cli/{curator-bsafet3m.js → curator-5ynapye5.js} +27 -27
- package/dist/cli/{curator-drift-2dwkkykq.js → curator-drift-9tnm8jdz.js} +5 -5
- package/dist/cli/{curator-llm-factory-ajtxk3sm.js → curator-llm-factory-9z688c52.js} +27 -27
- package/dist/cli/{dispatch-qvcztbpf.js → dispatch-1pbmmj8z.js} +50 -225
- package/dist/cli/{doctor-knowledge-receipt-phase-id-mckkwm0c.js → doctor-knowledge-receipt-phase-id-tkkznw6t.js} +5 -5
- package/dist/cli/{evidence-summary-service-svrt4se9.js → evidence-summary-service-jsg0x7q1.js} +10 -10
- package/dist/cli/{gate-evidence-jcw4mvwr.js → gate-evidence-6r2qbk89.js} +2 -2
- package/dist/cli/{guardrail-explain-5j0cg165.js → guardrail-explain-7m0h7db3.js} +28 -28
- package/dist/cli/{guardrail-log-h6fc7rnv.js → guardrail-log-p6s1sbxh.js} +3 -3
- package/dist/cli/{guardrail-reset-kjmqnr5r.js → guardrail-reset-shvx8e8g.js} +27 -27
- package/dist/cli/{hive-promoter-edp5c7k2.js → hive-promoter-f5cd2d49.js} +27 -27
- package/dist/cli/{index-kwbgrb3y.js → index-14d4cyxj.js} +1 -1
- package/dist/cli/{index-chsaj89g.js → index-3ad6fs6v.js} +1 -1
- package/dist/cli/{index-r89wr177.js → index-3j27qc81.js} +1 -1
- package/dist/cli/{index-fbw4g7yh.js → index-53t4xt8f.js} +1 -1
- package/dist/cli/{index-d4vrpe06.js → index-562bdvys.js} +1 -1
- package/dist/cli/{index-8hf3rt47.js → index-6yrx7ggm.js} +4 -4
- package/dist/cli/{index-nyy3hpwg.js → index-7cxtwt5e.js} +6 -6
- package/dist/cli/{index-js2jykf9.js → index-8xxk1gv4.js} +1 -1
- package/dist/cli/{index-hsmvdecz.js → index-9cqw29er.js} +2 -2
- package/dist/cli/{index-b81wsm2s.js → index-b0jte72h.js} +1 -1
- package/dist/cli/{index-e69469z9.js → index-d7m9qhpe.js} +2 -2
- package/dist/cli/{index-qg3tx5az.js → index-drpz069k.js} +1 -1
- package/dist/cli/{index-f0kk9daj.js → index-e7t7b5xs.js} +3 -3
- package/dist/cli/{index-8gyt9j0a.js → index-gjjn069b.js} +1 -1
- package/dist/cli/{index-n8n94des.js → index-hjpspz6z.js} +27 -27
- package/dist/cli/{index-h93hm2ew.js → index-hxfsxkb8.js} +245 -177
- package/dist/cli/{index-wbjk8xq9.js → index-hzezk176.js} +2 -2
- package/dist/cli/{index-vx8a8w3b.js → index-j2vv0h13.js} +506 -211
- package/dist/cli/{index-11v15np0.js → index-jna86fsj.js} +2 -2
- package/dist/cli/{index-fqyd21v7.js → index-ks6s6pmk.js} +4 -4
- package/dist/cli/{index-vhqcqq73.js → index-mbqaxnsy.js} +1 -1
- package/dist/cli/{index-9m3pcjf2.js → index-n3h6rwpf.js} +2 -2
- package/dist/cli/{index-kbkk7vnh.js → index-pkhbd2t5.js} +2 -1
- package/dist/cli/{index-d1yjbjf9.js → index-qq95qr3b.js} +3 -3
- package/dist/cli/{index-pd9hkz4f.js → index-rpb18d3f.js} +3 -3
- package/dist/cli/{index-s55t0cdc.js → index-rrs4vj8e.js} +5 -5
- package/dist/cli/{index-kx0sr39t.js → index-scjtkt0e.js} +29 -29
- package/dist/cli/{index-0g7wya30.js → index-sjh07rja.js} +1 -1
- package/dist/cli/{index-gfqz06ra.js → index-tegqnetn.js} +2 -2
- package/dist/cli/{index-yyh5kegx.js → index-vz1ze26j.js} +1 -1
- package/dist/cli/{index-sarq27b9.js → index-w11m4vrb.js} +1 -1
- package/dist/cli/{index-mcnqpmw6.js → index-zwn2w04v.js} +2 -2
- package/dist/cli/index.js +28 -28
- package/dist/cli/{knowledge-escalator-ndsm1023.js → knowledge-escalator-rjwqcj4c.js} +8 -8
- package/dist/cli/{knowledge-events-pcbxvykz.js → knowledge-events-0f3tf23t.js} +6 -6
- package/dist/cli/{knowledge-store-00t92ypz.js → knowledge-store-azahpegn.js} +1 -1
- package/dist/cli/{knowledge-validator-f8mkzp37.js → knowledge-validator-9yvg7gn9.js} +2 -2
- package/dist/cli/{mcp-sawqgyk6.js → mcp-mxgxbdd2.js} +1 -1
- package/dist/cli/{model-preflight-7rrjh3wp.js → model-preflight-c9qb1630.js} +27 -27
- package/dist/cli/{pending-delegations-2161efex.js → pending-delegations-rm86drz1.js} +2 -2
- package/dist/cli/{pr-subscriptions-m47zghfv.js → pr-subscriptions-0y73v5dw.js} +1 -1
- package/dist/cli/{pr-workflow-gate-hmtae8gc.js → pr-workflow-gate-f1wr818p.js} +27 -27
- package/dist/cli/{scan-cursor-gdy1qjed.js → scan-cursor-abq3sdt6.js} +2 -2
- package/dist/cli/{schema-qaxjz2de.js → schema-0c4cddzy.js} +1 -1
- package/dist/cli/{scope-persistence-dnx61ybv.js → scope-persistence-f8ss7vna.js} +5 -5
- package/dist/cli/{server-6wmhhy81.js → server-bc0s1v3y.js} +27 -27
- package/dist/cli/{skill-generator-sgv3bdgt.js → skill-generator-2z0p2rjb.js} +9 -9
- package/dist/cli/{snapshot-coordination-init-qbtzxwga.js → snapshot-coordination-init-sn7red7a.js} +27 -27
- package/dist/cli/{speckit-checkoff-yepzgcmj.js → speckit-checkoff-t3pm0yn0.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-cswsfrj6.js → worktree-collision-ownership-g14dwsby.js} +2 -2
- package/dist/cli/{worktree-isolation-vj7egepy.js → worktree-isolation-av55nenq.js} +27 -27
- package/dist/commands/recover.d.ts +1 -1
- package/dist/commands/registry.d.ts +1 -1
- package/dist/config/evidence-schema.d.ts +3 -0
- package/dist/index.js +208 -208
- package/dist/lang/backend.d.ts +7 -0
- package/dist/lang/backends/java.d.ts +39 -0
- package/dist/lang/default-backend.d.ts +40 -0
- package/dist/tools/build-check.d.ts +13 -0
- package/dist/tools/test-runner.d.ts +31 -1
- package/dist/utils/windows-batch.d.ts +58 -0
- package/dist/workflow/session-view.d.ts +47 -0
- package/dist/workflow/stage-a-repair.d.ts +1 -0
- package/package.json +1 -1
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
protectedRoots,
|
|
9
9
|
redactDecisionLineForArchive,
|
|
10
10
|
stableCanonicalStringify
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-b0jte72h.js";
|
|
12
12
|
import {
|
|
13
13
|
detectStraySwarmDirs,
|
|
14
14
|
readDoctorArtifact,
|
|
15
15
|
removeStraySwarmDir,
|
|
16
16
|
resolvePlanParallelizationFlag,
|
|
17
17
|
runConfigDoctor
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-tegqnetn.js";
|
|
19
19
|
import {
|
|
20
20
|
archiveEvidence,
|
|
21
21
|
checkRequirementCoverage,
|
|
@@ -27,19 +27,27 @@ import {
|
|
|
27
27
|
sanitizeTaskId,
|
|
28
28
|
saveEvidence,
|
|
29
29
|
validateProjectRoot
|
|
30
|
-
} from "./index-
|
|
30
|
+
} from "./index-n3h6rwpf.js";
|
|
31
31
|
import {
|
|
32
32
|
JAVA_SYMBOL_GRAMMAR,
|
|
33
33
|
LANGUAGE_REGISTRY,
|
|
34
|
+
WINDOWS_BATCH_WRAPPER_EXTENSIONS,
|
|
34
35
|
_internals as _internals3,
|
|
35
36
|
_internals1 as _internals4,
|
|
37
|
+
buildGradleTestCommand,
|
|
38
|
+
buildMavenTestCommand,
|
|
36
39
|
buildNativeTargetCommand,
|
|
40
|
+
buildPhpVendorCommand,
|
|
41
|
+
buildWindowsBatchCommand,
|
|
37
42
|
getProfileForFile,
|
|
38
43
|
isCommandAvailable,
|
|
44
|
+
isWindowsCommandInterpreterLaunch,
|
|
39
45
|
maskCommentsAndLiterals,
|
|
40
46
|
parseJavaImports,
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
resolveContainedWindowsBatchCommand,
|
|
48
|
+
resolveLocalNodeTool,
|
|
49
|
+
resolveMavenWrapperCommand
|
|
50
|
+
} from "./index-j2vv0h13.js";
|
|
43
51
|
import {
|
|
44
52
|
captureWorkingTreeFingerprint,
|
|
45
53
|
createModelEvaluationExecutor,
|
|
@@ -81,7 +89,7 @@ import {
|
|
|
81
89
|
alreadyCuratedThisGeneration,
|
|
82
90
|
claimNextScanBatch,
|
|
83
91
|
resolveCohortId
|
|
84
|
-
} from "./index-
|
|
92
|
+
} from "./index-sjh07rja.js";
|
|
85
93
|
import {
|
|
86
94
|
CURATOR_CONSOLIDATION_PROMPT,
|
|
87
95
|
CURATOR_INIT_PROMPT,
|
|
@@ -100,13 +108,13 @@ import {
|
|
|
100
108
|
getGroupCommitWriter,
|
|
101
109
|
importLegacyJsonl,
|
|
102
110
|
readPriorDriftReports
|
|
103
|
-
} from "./index-
|
|
111
|
+
} from "./index-53t4xt8f.js";
|
|
104
112
|
import {
|
|
105
113
|
assertNoUnsettledCoderDispatch,
|
|
106
114
|
listCoderSettlementWalStates,
|
|
107
115
|
recoverCoderSettlement,
|
|
108
116
|
recoverStaleCoderSettlements
|
|
109
|
-
} from "./index-
|
|
117
|
+
} from "./index-e7t7b5xs.js";
|
|
110
118
|
import {
|
|
111
119
|
BUNDLED_PROJECT_SKILL_ROOT,
|
|
112
120
|
DEFAULT_SKILL_MIN_CONFIDENCE,
|
|
@@ -127,11 +135,11 @@ import {
|
|
|
127
135
|
retireSkill,
|
|
128
136
|
selectCandidateEntries,
|
|
129
137
|
syncBundledProjectSkillsIfMissingAsync
|
|
130
|
-
} from "./index-
|
|
138
|
+
} from "./index-qq95qr3b.js";
|
|
131
139
|
import {
|
|
132
140
|
buildEscalationBriefing,
|
|
133
141
|
readRecentEscalations
|
|
134
|
-
} from "./index-
|
|
142
|
+
} from "./index-7cxtwt5e.js";
|
|
135
143
|
import {
|
|
136
144
|
parsePorcelainV2Snapshot,
|
|
137
145
|
resolveCommitCountSince,
|
|
@@ -211,7 +219,7 @@ import {
|
|
|
211
219
|
resolveWorkingDirectory,
|
|
212
220
|
swarmOverwriteCandidates,
|
|
213
221
|
trackedDirtyCandidates
|
|
214
|
-
} from "./index-
|
|
222
|
+
} from "./index-rpb18d3f.js";
|
|
215
223
|
import {
|
|
216
224
|
MAX_TRANSIENT_RETRIES,
|
|
217
225
|
PlanRecoverySupersededError,
|
|
@@ -238,7 +246,7 @@ import {
|
|
|
238
246
|
transientBackoff,
|
|
239
247
|
updateTaskStatus,
|
|
240
248
|
withPlanLifecycleLock
|
|
241
|
-
} from "./index-
|
|
249
|
+
} from "./index-rrs4vj8e.js";
|
|
242
250
|
import {
|
|
243
251
|
containsControlChars,
|
|
244
252
|
containsPathTraversal,
|
|
@@ -254,7 +262,7 @@ import {
|
|
|
254
262
|
resolveSpeckitProjection,
|
|
255
263
|
validateSpeckit,
|
|
256
264
|
writeProjectedSpecSync
|
|
257
|
-
} from "./index-
|
|
265
|
+
} from "./index-14d4cyxj.js";
|
|
258
266
|
import {
|
|
259
267
|
clearWorktreeMergeStatus,
|
|
260
268
|
getAllWorktreeMergeFailures,
|
|
@@ -285,7 +293,7 @@ import {
|
|
|
285
293
|
transitionTaskWorkflowEvidenceWithStatus,
|
|
286
294
|
withTaskEvidenceTransaction,
|
|
287
295
|
writeWorkflowWalFile
|
|
288
|
-
} from "./index-
|
|
296
|
+
} from "./index-drpz069k.js";
|
|
289
297
|
import {
|
|
290
298
|
isPathUnderSwarmWorktreeBase,
|
|
291
299
|
listLiveLaneOwners,
|
|
@@ -294,7 +302,7 @@ import {
|
|
|
294
302
|
recordLiveLaneOwner,
|
|
295
303
|
removeWorktree,
|
|
296
304
|
resolveWorktreeBaseDir
|
|
297
|
-
} from "./index-
|
|
305
|
+
} from "./index-mbqaxnsy.js";
|
|
298
306
|
import {
|
|
299
307
|
DEFAULT_STALE_DELEGATION_TIMEOUT_MS,
|
|
300
308
|
DELEGATION_COMPACTION_HIGH_WATER_BYTES,
|
|
@@ -328,7 +336,7 @@ import {
|
|
|
328
336
|
scanBackgroundCoderReservationsForAdmission,
|
|
329
337
|
scanDelegationsForRecovery,
|
|
330
338
|
sweepStaleDelegations
|
|
331
|
-
} from "./index-
|
|
339
|
+
} from "./index-8xxk1gv4.js";
|
|
332
340
|
import {
|
|
333
341
|
MAX_EVENT_LOG_ENTRIES,
|
|
334
342
|
_internals,
|
|
@@ -340,7 +348,7 @@ import {
|
|
|
340
348
|
recordHiveKnowledgeEvent,
|
|
341
349
|
recordKnowledgeEvent,
|
|
342
350
|
resolveKnowledgeEventsPath
|
|
343
|
-
} from "./index-
|
|
351
|
+
} from "./index-jna86fsj.js";
|
|
344
352
|
import {
|
|
345
353
|
commitDisplayedMembership,
|
|
346
354
|
commitEmptyRetrieval,
|
|
@@ -353,7 +361,7 @@ import {
|
|
|
353
361
|
queryLiveMemberships,
|
|
354
362
|
reconcilePhaseClose,
|
|
355
363
|
recordPhaseCloseIntent
|
|
356
|
-
} from "./index-
|
|
364
|
+
} from "./index-zwn2w04v.js";
|
|
357
365
|
import {
|
|
358
366
|
sanitizeContextText
|
|
359
367
|
} from "./index-m9zzj4ee.js";
|
|
@@ -384,7 +392,7 @@ import {
|
|
|
384
392
|
validateActionableFields,
|
|
385
393
|
validateLesson,
|
|
386
394
|
validateSkillPath
|
|
387
|
-
} from "./index-
|
|
395
|
+
} from "./index-3j27qc81.js";
|
|
388
396
|
import {
|
|
389
397
|
MAX_CURATION_PROPOSALS,
|
|
390
398
|
authorizeCuration,
|
|
@@ -395,10 +403,10 @@ import {
|
|
|
395
403
|
} from "./index-rtry5xyf.js";
|
|
396
404
|
import {
|
|
397
405
|
resolveWorktreeIsolationConfig
|
|
398
|
-
} from "./index-
|
|
406
|
+
} from "./index-hzezk176.js";
|
|
399
407
|
import {
|
|
400
408
|
RetrospectiveEvidenceSchema
|
|
401
|
-
} from "./index-
|
|
409
|
+
} from "./index-pkhbd2t5.js";
|
|
402
410
|
import {
|
|
403
411
|
MAX_PENDING_SCOPE_BINDINGS,
|
|
404
412
|
canonicalWorkspaceIdentity,
|
|
@@ -407,7 +415,7 @@ import {
|
|
|
407
415
|
clearScopeBindings,
|
|
408
416
|
readAuthoritativeScopeBindingSet,
|
|
409
417
|
readDeclaredScopeFilesFromBindings
|
|
410
|
-
} from "./index-
|
|
418
|
+
} from "./index-w11m4vrb.js";
|
|
411
419
|
import {
|
|
412
420
|
clearPlanLedgerForReset,
|
|
413
421
|
computePlanStructureHash,
|
|
@@ -423,7 +431,7 @@ import {
|
|
|
423
431
|
replayFromLedgerWithStatus,
|
|
424
432
|
resolvePlanningProfile,
|
|
425
433
|
takeSnapshotEvent
|
|
426
|
-
} from "./index-
|
|
434
|
+
} from "./index-d7m9qhpe.js";
|
|
427
435
|
import {
|
|
428
436
|
CORE_EVENT_LOCKED,
|
|
429
437
|
appendCoreEventSync,
|
|
@@ -512,7 +520,7 @@ import {
|
|
|
512
520
|
transactFile,
|
|
513
521
|
transactKnowledge,
|
|
514
522
|
wordBigrams
|
|
515
|
-
} from "./index-
|
|
523
|
+
} from "./index-6yrx7ggm.js";
|
|
516
524
|
import {
|
|
517
525
|
readTailJsonl,
|
|
518
526
|
readTailJsonlDetailed,
|
|
@@ -593,7 +601,7 @@ import {
|
|
|
593
601
|
loadGateOverrides,
|
|
594
602
|
loadPluginConfig,
|
|
595
603
|
loadPluginConfigWithMeta
|
|
596
|
-
} from "./index-
|
|
604
|
+
} from "./index-vz1ze26j.js";
|
|
597
605
|
import {
|
|
598
606
|
addDeferredWarning,
|
|
599
607
|
advisoryWarn,
|
|
@@ -625,7 +633,7 @@ import {
|
|
|
625
633
|
resolveContextWindow,
|
|
626
634
|
resolveGeneratedAgentRole,
|
|
627
635
|
stripKnownSwarmPrefix
|
|
628
|
-
} from "./index-
|
|
636
|
+
} from "./index-562bdvys.js";
|
|
629
637
|
import {
|
|
630
638
|
AGENT_TOOL_MAP,
|
|
631
639
|
ALL_AGENT_NAMES,
|
|
@@ -3414,7 +3422,7 @@ async function importLegacyPrWorkflowGateStateIfNeeded(directory, sessionID, all
|
|
|
3414
3422
|
return null;
|
|
3415
3423
|
throw error2;
|
|
3416
3424
|
}
|
|
3417
|
-
const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-
|
|
3425
|
+
const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-f1wr818p.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
|
|
3418
3426
|
if (!legacy)
|
|
3419
3427
|
return null;
|
|
3420
3428
|
const namespace = workflowGateStateCoordinationNamespace(sessionID);
|
|
@@ -3501,7 +3509,7 @@ async function deleteStateWhileLocked(directory, sessionID, options = {}) {
|
|
|
3501
3509
|
let recoveryState = null;
|
|
3502
3510
|
if (!currentAuthoritative) {
|
|
3503
3511
|
if (options.allowSalvagedRead) {
|
|
3504
|
-
const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-
|
|
3512
|
+
const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-f1wr818p.js");
|
|
3505
3513
|
recoveryState = (await readPrWorkflowGateStateForRecovery(directory, normalizedSessionID))?.state ?? null;
|
|
3506
3514
|
}
|
|
3507
3515
|
if (!recoveryState) {
|
|
@@ -15074,7 +15082,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
|
|
|
15074
15082
|
return extracted === expectedSessionId;
|
|
15075
15083
|
}
|
|
15076
15084
|
async function inspectStandardWorktreeCollisionOwnership(identity) {
|
|
15077
|
-
const collisionOwnership = await import("./worktree-collision-ownership-
|
|
15085
|
+
const collisionOwnership = await import("./worktree-collision-ownership-g14dwsby.js");
|
|
15078
15086
|
return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
|
|
15079
15087
|
}
|
|
15080
15088
|
async function runRecoveryGit(directory, args, timeoutMs = 15000) {
|
|
@@ -15500,7 +15508,7 @@ async function precreateStandardWorktreeSession(args) {
|
|
|
15500
15508
|
const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
|
|
15501
15509
|
if (laneProfile) {
|
|
15502
15510
|
try {
|
|
15503
|
-
const { writeLaneProfileToDiskReal } = await import("./core-
|
|
15511
|
+
const { writeLaneProfileToDiskReal } = await import("./core-1ymsg83x.js");
|
|
15504
15512
|
await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
|
|
15505
15513
|
} catch {}
|
|
15506
15514
|
}
|
|
@@ -16479,7 +16487,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
|
|
|
16479
16487
|
}
|
|
16480
16488
|
clearWorktreeMergeStatus(statusKey);
|
|
16481
16489
|
try {
|
|
16482
|
-
const { removeLaneProfileFromDiskReal } = await import("./core-
|
|
16490
|
+
const { removeLaneProfileFromDiskReal } = await import("./core-1ymsg83x.js");
|
|
16483
16491
|
await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
|
|
16484
16492
|
} catch {}
|
|
16485
16493
|
const state = serializationStateBySessionID.get(dispatch.parentSessionID);
|
|
@@ -24117,7 +24125,7 @@ function clearCriticalShownIds(sessionID) {
|
|
|
24117
24125
|
async function rehydratePrSubscriptions(sessionID, directory) {
|
|
24118
24126
|
const map = new Map;
|
|
24119
24127
|
try {
|
|
24120
|
-
const { listActive: listActive2 } = await import("./pr-subscriptions-
|
|
24128
|
+
const { listActive: listActive2 } = await import("./pr-subscriptions-0y73v5dw.js");
|
|
24121
24129
|
const records = await listActive2(directory);
|
|
24122
24130
|
for (const record of records) {
|
|
24123
24131
|
if (record.sessionID !== sessionID)
|
|
@@ -40664,9 +40672,9 @@ function hashContent(content) {
|
|
|
40664
40672
|
return createHash27("sha1").update(content).digest("hex");
|
|
40665
40673
|
}
|
|
40666
40674
|
async function loadConfigForPolicyCurator(directory) {
|
|
40667
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
40675
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0c4cddzy.js");
|
|
40668
40676
|
try {
|
|
40669
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
40677
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ks6s6pmk.js");
|
|
40670
40678
|
const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
|
|
40671
40679
|
return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
|
|
40672
40680
|
} catch {
|
|
@@ -43724,7 +43732,7 @@ async function resolveCuratorLLMDelegate(directory, mode, sessionId) {
|
|
|
43724
43732
|
const seam = _internals38.createCuratorLLMDelegate;
|
|
43725
43733
|
if (seam)
|
|
43726
43734
|
return seam(directory, mode, sessionId);
|
|
43727
|
-
const { createCuratorLLMDelegate } = await import("./curator-llm-factory-
|
|
43735
|
+
const { createCuratorLLMDelegate } = await import("./curator-llm-factory-9z688c52.js");
|
|
43728
43736
|
return createCuratorLLMDelegate(directory, mode, sessionId);
|
|
43729
43737
|
}
|
|
43730
43738
|
async function reconcileCloseTerminalStateForPlan(directory, targetPlan, options) {
|
|
@@ -44119,7 +44127,7 @@ async function runFinalizeStage(ctx) {
|
|
|
44119
44127
|
}
|
|
44120
44128
|
}
|
|
44121
44129
|
try {
|
|
44122
|
-
const { CuratorConfigSchema: CCS } = await import("./schema-
|
|
44130
|
+
const { CuratorConfigSchema: CCS } = await import("./schema-0c4cddzy.js");
|
|
44123
44131
|
const { config: pmLoadedConfig } = _internals38.loadPluginConfigWithMeta(ctx.directory);
|
|
44124
44132
|
const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
|
|
44125
44133
|
if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
|
|
@@ -46356,7 +46364,7 @@ function serializeAgentSession(s) {
|
|
|
46356
46364
|
}
|
|
46357
46365
|
async function writeSnapshot(directory, state) {
|
|
46358
46366
|
try {
|
|
46359
|
-
const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-
|
|
46367
|
+
const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-sn7red7a.js");
|
|
46360
46368
|
await ensureSnapshotCoordinationReady(directory);
|
|
46361
46369
|
const snapshot = {
|
|
46362
46370
|
version: 3,
|
|
@@ -49366,7 +49374,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
|
|
|
49366
49374
|
};
|
|
49367
49375
|
}
|
|
49368
49376
|
async function sweepActiveNearDuplicates(directory, options = {}) {
|
|
49369
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
49377
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ks6s6pmk.js");
|
|
49370
49378
|
const { config } = loadPluginConfigWithMeta2(directory);
|
|
49371
49379
|
const sweepConfig = config.learning?.dedup_sweep;
|
|
49372
49380
|
if (sweepConfig?.enabled === false)
|
|
@@ -50490,7 +50498,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
|
|
|
50490
50498
|
}
|
|
50491
50499
|
if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
|
|
50492
50500
|
try {
|
|
50493
|
-
const skillModule = await import("./skill-generator-
|
|
50501
|
+
const skillModule = await import("./skill-generator-2z0p2rjb.js");
|
|
50494
50502
|
for (const cand of skillCandidates) {
|
|
50495
50503
|
if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
|
|
50496
50504
|
continue;
|
|
@@ -50962,7 +50970,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
|
|
|
50962
50970
|
} catch {}
|
|
50963
50971
|
}
|
|
50964
50972
|
if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
|
|
50965
|
-
const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-
|
|
50973
|
+
const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-rjwqcj4c.js");
|
|
50966
50974
|
for (const { id } of contradictedEntries) {
|
|
50967
50975
|
try {
|
|
50968
50976
|
await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
|
|
@@ -51794,7 +51802,7 @@ async function runCuratorPostMortem(directory, options = {}) {
|
|
|
51794
51802
|
warnings.push("Failed to collect knowledge summary.");
|
|
51795
51803
|
}
|
|
51796
51804
|
try {
|
|
51797
|
-
const { getScanStatus } = await import("./scan-cursor-
|
|
51805
|
+
const { getScanStatus } = await import("./scan-cursor-abq3sdt6.js");
|
|
51798
51806
|
const scanStatus = await getScanStatus(directory);
|
|
51799
51807
|
if (scanStatus.remaining_estimate > 0) {
|
|
51800
51808
|
warnings.push(`Fair scan: reviewed ${knowledgeSummary.length} entries this sweep (generation ${scanStatus.generation}); ${scanStatus.remaining_estimate} more eligible entries will be visited in future curation sweeps.`);
|
|
@@ -51966,9 +51974,9 @@ var _internals56 = {
|
|
|
51966
51974
|
verifyPostMortemKnowledgeActions,
|
|
51967
51975
|
repairPostMortemActions,
|
|
51968
51976
|
loadDefaultKnowledgeConfig: async (directory) => {
|
|
51969
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
51977
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0c4cddzy.js");
|
|
51970
51978
|
try {
|
|
51971
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
51979
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ks6s6pmk.js");
|
|
51972
51980
|
const loaded = loadPluginConfigWithMeta2(directory);
|
|
51973
51981
|
return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
|
|
51974
51982
|
} catch {
|
|
@@ -51976,11 +51984,11 @@ var _internals56 = {
|
|
|
51976
51984
|
}
|
|
51977
51985
|
},
|
|
51978
51986
|
applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
|
|
51979
|
-
const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-
|
|
51987
|
+
const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-5ynapye5.js");
|
|
51980
51988
|
return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
|
|
51981
51989
|
},
|
|
51982
51990
|
checkHivePromotions: async (entries2, knowledgeConfig, directory) => {
|
|
51983
|
-
const { checkHivePromotions } = await import("./hive-promoter-
|
|
51991
|
+
const { checkHivePromotions } = await import("./hive-promoter-f5cd2d49.js");
|
|
51984
51992
|
return checkHivePromotions(entries2, knowledgeConfig, directory);
|
|
51985
51993
|
},
|
|
51986
51994
|
applyProposalTriage: async (directory, triage) => {
|
|
@@ -51989,7 +51997,7 @@ var _internals56 = {
|
|
|
51989
51997
|
activateProposal,
|
|
51990
51998
|
listSkills: listSkills2,
|
|
51991
51999
|
sanitizeSlug
|
|
51992
|
-
} = await import("./skill-generator-
|
|
52000
|
+
} = await import("./skill-generator-2z0p2rjb.js");
|
|
51993
52001
|
const result = {
|
|
51994
52002
|
approved: [],
|
|
51995
52003
|
rejected: [],
|
|
@@ -52031,7 +52039,7 @@ var _internals56 = {
|
|
|
52031
52039
|
return result;
|
|
52032
52040
|
},
|
|
52033
52041
|
readPriorDriftReports: async (directory) => {
|
|
52034
|
-
const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-
|
|
52042
|
+
const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-9tnm8jdz.js");
|
|
52035
52043
|
return readPriorDriftReports2(directory);
|
|
52036
52044
|
},
|
|
52037
52045
|
readSwarmKnowledge: (directory) => readKnowledge(resolveSwarmKnowledgePath(directory))
|
|
@@ -61834,9 +61842,9 @@ var _internals66 = {
|
|
|
61834
61842
|
loadPluginConfigWithMeta,
|
|
61835
61843
|
loadCuratorDeps: async () => {
|
|
61836
61844
|
const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate }] = await Promise.all([
|
|
61837
|
-
import("./schema-
|
|
61838
|
-
import("./curator-
|
|
61839
|
-
import("./curator-llm-factory-
|
|
61845
|
+
import("./schema-0c4cddzy.js"),
|
|
61846
|
+
import("./curator-5ynapye5.js"),
|
|
61847
|
+
import("./curator-llm-factory-9z688c52.js")
|
|
61840
61848
|
]);
|
|
61841
61849
|
return { CuratorConfigSchema, curator, createCuratorLLMDelegate };
|
|
61842
61850
|
}
|
|
@@ -63522,6 +63530,33 @@ import { readdir as readdir5 } from "fs/promises";
|
|
|
63522
63530
|
init_path_identity();
|
|
63523
63531
|
init_logger();
|
|
63524
63532
|
|
|
63533
|
+
// src/workflow/session-view.ts
|
|
63534
|
+
function applySessionWorkflowView(session, taskId, workflow) {
|
|
63535
|
+
session.taskWorkflowStates.set(taskId, workflow.state);
|
|
63536
|
+
session.stageBCompletion?.delete(taskId);
|
|
63537
|
+
session.taskCouncilApproved?.delete(taskId);
|
|
63538
|
+
session.taskCouncilWorkflowGeneration?.delete(taskId);
|
|
63539
|
+
updateTaskWorkflowCache(session, taskId, workflow);
|
|
63540
|
+
}
|
|
63541
|
+
var STAGE_A_RECOVERED_STATES = [
|
|
63542
|
+
"pre_check_passed",
|
|
63543
|
+
"reviewer_run",
|
|
63544
|
+
"tests_run"
|
|
63545
|
+
];
|
|
63546
|
+
function isStageARecoveredState(state) {
|
|
63547
|
+
return STAGE_A_RECOVERED_STATES.includes(state);
|
|
63548
|
+
}
|
|
63549
|
+
function shouldRefreshStageARecoveryView(view, recoveredState) {
|
|
63550
|
+
if (view === undefined)
|
|
63551
|
+
return true;
|
|
63552
|
+
if (view === "rework_required" || view === "blocked")
|
|
63553
|
+
return true;
|
|
63554
|
+
if (view === "tests_run" || view === "closed" || view === "complete") {
|
|
63555
|
+
return false;
|
|
63556
|
+
}
|
|
63557
|
+
return compareTaskWorkflowStateRank(recoveredState, view) > 0;
|
|
63558
|
+
}
|
|
63559
|
+
|
|
63525
63560
|
// src/workflow/task-recovery-status.ts
|
|
63526
63561
|
init_path_identity();
|
|
63527
63562
|
function identitySuffix(status) {
|
|
@@ -63823,6 +63858,7 @@ async function scanWedgedStageA(directory, options) {
|
|
|
63823
63858
|
}
|
|
63824
63859
|
async function repairWedgedStageA(directory, options) {
|
|
63825
63860
|
const requested = options?.taskIds;
|
|
63861
|
+
const refreshSession = options?.sessionId ? getAgentSession(options.sessionId) : undefined;
|
|
63826
63862
|
const { selected, truncated } = await enumerateStageACandidates(directory, requested);
|
|
63827
63863
|
const { states: walStates } = await listCoderSettlementWalStates(directory);
|
|
63828
63864
|
const results = [];
|
|
@@ -63830,6 +63866,12 @@ async function repairWedgedStageA(directory, options) {
|
|
|
63830
63866
|
try {
|
|
63831
63867
|
const scan = await scanStageATask(directory, taskId, walStates);
|
|
63832
63868
|
if (scan.kind === "not_wedged") {
|
|
63869
|
+
if (refreshSession && isStageARecoveredState(scan.state)) {
|
|
63870
|
+
const snapshot = getTaskWorkflowSnapshot(await readTaskEvidence(directory, taskId));
|
|
63871
|
+
if (snapshot.authoritative && isStageARecoveredState(snapshot.state) && shouldRefreshStageARecoveryView(refreshSession.taskWorkflowStates.get(taskId), snapshot.state)) {
|
|
63872
|
+
applySessionWorkflowView(refreshSession, taskId, snapshot);
|
|
63873
|
+
}
|
|
63874
|
+
}
|
|
63833
63875
|
results.push({
|
|
63834
63876
|
taskId,
|
|
63835
63877
|
outcome: "skipped_not_wedged",
|
|
@@ -63846,12 +63888,18 @@ async function repairWedgedStageA(directory, options) {
|
|
|
63846
63888
|
continue;
|
|
63847
63889
|
}
|
|
63848
63890
|
const transitionId = `stage-a-repair:${taskId}:${scan.generation}`;
|
|
63849
|
-
const { duplicated } = await transitionTaskWorkflowEvidenceWithStatus(directory, taskId, {
|
|
63891
|
+
const { evidence: updatedEvidence, duplicated } = await transitionTaskWorkflowEvidenceWithStatus(directory, taskId, {
|
|
63850
63892
|
type: "stage_a_passed",
|
|
63851
63893
|
...scan.mode === "settlement_wedge" ? { settlementRecovery: true } : {},
|
|
63852
63894
|
expectedGeneration: scan.generation,
|
|
63853
63895
|
transitionId
|
|
63854
63896
|
});
|
|
63897
|
+
if (refreshSession) {
|
|
63898
|
+
const snapshot = getTaskWorkflowSnapshot(updatedEvidence);
|
|
63899
|
+
if (isStageARecoveredState(snapshot.state) && shouldRefreshStageARecoveryView(refreshSession.taskWorkflowStates.get(taskId), snapshot.state)) {
|
|
63900
|
+
applySessionWorkflowView(refreshSession, taskId, snapshot);
|
|
63901
|
+
}
|
|
63902
|
+
}
|
|
63855
63903
|
if (!duplicated) {
|
|
63856
63904
|
await appendStageARepairEvent(directory, {
|
|
63857
63905
|
action: "repaired",
|
|
@@ -64234,7 +64282,7 @@ async function computeCurationDiagnostics(directory, entries2) {
|
|
|
64234
64282
|
let scanCompleted = false;
|
|
64235
64283
|
let scanRemaining = 0;
|
|
64236
64284
|
try {
|
|
64237
|
-
const { getScanStatus } = await import("./scan-cursor-
|
|
64285
|
+
const { getScanStatus } = await import("./scan-cursor-abq3sdt6.js");
|
|
64238
64286
|
const status = await getScanStatus(directory);
|
|
64239
64287
|
scanGeneration = status.generation;
|
|
64240
64288
|
scanCompleted = status.completed;
|
|
@@ -64244,10 +64292,10 @@ async function computeCurationDiagnostics(directory, entries2) {
|
|
|
64244
64292
|
try {
|
|
64245
64293
|
const { isLinked: isLinked2 } = await import("./knowledge-link-h4pdcnya.js");
|
|
64246
64294
|
if (isLinked2(directory)) {
|
|
64247
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
64295
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0c4cddzy.js");
|
|
64248
64296
|
let config;
|
|
64249
64297
|
try {
|
|
64250
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
64298
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ks6s6pmk.js");
|
|
64251
64299
|
const loaded = loadPluginConfigWithMeta2(directory);
|
|
64252
64300
|
config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
|
|
64253
64301
|
} catch {
|
|
@@ -65703,7 +65751,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
65703
65751
|
const result = runConfigDoctor(config, directory, planParallelizationEnabled);
|
|
65704
65752
|
let output;
|
|
65705
65753
|
if (enableAutoFix && result.hasAutoFixableIssues) {
|
|
65706
|
-
const { runConfigDoctorWithFixes } = await import("./config-doctor-
|
|
65754
|
+
const { runConfigDoctorWithFixes } = await import("./config-doctor-d01gbn5x.js");
|
|
65707
65755
|
const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
|
|
65708
65756
|
applyLossy: true
|
|
65709
65757
|
});
|
|
@@ -65741,7 +65789,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
65741
65789
|
`;
|
|
65742
65790
|
}
|
|
65743
65791
|
try {
|
|
65744
|
-
const { runModelPreflight } = await import("./model-preflight-
|
|
65792
|
+
const { runModelPreflight } = await import("./model-preflight-c9qb1630.js");
|
|
65745
65793
|
const preflight = await runModelPreflight(config, swarmState.opencodeClient, { generatedAgentNames: swarmState.generatedAgentNames });
|
|
65746
65794
|
const missingSelection = preflight.resolutions.filter((resolution) => resolution.status === "missing-selection");
|
|
65747
65795
|
const unresolved = preflight.catalogAvailable ? preflight.resolutions.filter((resolution) => resolution.status === "unresolved") : [];
|
|
@@ -65775,7 +65823,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
65775
65823
|
}
|
|
65776
65824
|
} catch {}
|
|
65777
65825
|
try {
|
|
65778
|
-
const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-
|
|
65826
|
+
const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-tkkznw6t.js");
|
|
65779
65827
|
output += await renderKnowledgeReceiptPhaseIdSection(directory, enableAutoFix);
|
|
65780
65828
|
} catch {}
|
|
65781
65829
|
const strayDirs = detectStraySwarmDirs(directory);
|
|
@@ -66672,7 +66720,7 @@ async function handleEvidenceCommand(directory, args) {
|
|
|
66672
66720
|
return formatTaskEvidenceMarkdown(evidenceData);
|
|
66673
66721
|
}
|
|
66674
66722
|
async function handleEvidenceSummaryCommand(directory) {
|
|
66675
|
-
const { buildEvidenceSummary } = await import("./evidence-summary-service-
|
|
66723
|
+
const { buildEvidenceSummary } = await import("./evidence-summary-service-jsg0x7q1.js");
|
|
66676
66724
|
const artifact = await buildEvidenceSummary(directory);
|
|
66677
66725
|
if (!artifact) {
|
|
66678
66726
|
return "No plan found. Run `/swarm plan` to check plan status.";
|
|
@@ -91119,7 +91167,7 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
|
|
|
91119
91167
|
}
|
|
91120
91168
|
const sdkOpts = signal ? { signal } : {};
|
|
91121
91169
|
try {
|
|
91122
|
-
const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-
|
|
91170
|
+
const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-hjpspz6z.js");
|
|
91123
91171
|
const createResult = await client.session.create({
|
|
91124
91172
|
...sessionId ? {
|
|
91125
91173
|
body: {
|
|
@@ -93456,7 +93504,7 @@ async function cancelPrFeedbackLoopUnlocked(directory, sessionID, reason) {
|
|
|
93456
93504
|
clearedEvents: []
|
|
93457
93505
|
};
|
|
93458
93506
|
try {
|
|
93459
|
-
const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-
|
|
93507
|
+
const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-f1wr818p.js");
|
|
93460
93508
|
await cancelPrFeedbackPublication2(directory, sessionID, reason);
|
|
93461
93509
|
} catch (err) {
|
|
93462
93510
|
warn(`[pr-feedback-loop] cancelPrFeedbackPublication failed (fail-open): ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -94757,8 +94805,12 @@ var BIN_DIRECTORY = ".bin";
|
|
|
94757
94805
|
var MAX_PACKAGE_MANIFEST_BYTES = 256 * 1024;
|
|
94758
94806
|
var MAX_PATH_SHIM_BYTES = 64 * 1024;
|
|
94759
94807
|
var UNSAFE_SHELL_WRAPPER_EXTENSIONS = new Set([".bat", ".cmd", ".ps1"]);
|
|
94760
|
-
var
|
|
94761
|
-
|
|
94808
|
+
var lintWindowsBatchDeps = {
|
|
94809
|
+
platform: () => _internals106.platform(),
|
|
94810
|
+
comSpec: () => _internals106.comSpec(),
|
|
94811
|
+
realpathSync: (candidate2) => _internals106.realpathSync(candidate2),
|
|
94812
|
+
statSync: (candidate2) => _internals106.statSync(candidate2)
|
|
94813
|
+
};
|
|
94762
94814
|
var LINTER_PACKAGES = {
|
|
94763
94815
|
biome: "@biomejs/biome",
|
|
94764
94816
|
eslint: "eslint"
|
|
@@ -95184,62 +95236,17 @@ function resolveAdditionalExecutable(name) {
|
|
|
95184
95236
|
}
|
|
95185
95237
|
return resolveExecutableFromPath([`${name}.exe`], _internals106.pathEnv(), platform);
|
|
95186
95238
|
}
|
|
95187
|
-
function
|
|
95188
|
-
|
|
95189
|
-
if (!candidate2 || !path128.isAbsolute(candidate2) || path128.basename(candidate2).toLowerCase() !== "cmd.exe" || !isRegularFile(candidate2)) {
|
|
95190
|
-
return null;
|
|
95191
|
-
}
|
|
95192
|
-
try {
|
|
95193
|
-
const canonical = _internals106.realpathSync(candidate2);
|
|
95194
|
-
return path128.basename(canonical).toLowerCase() === "cmd.exe" ? canonical : null;
|
|
95195
|
-
} catch {
|
|
95196
|
-
return null;
|
|
95197
|
-
}
|
|
95198
|
-
}
|
|
95199
|
-
function buildWindowsBatchCommand(wrapperPath, args) {
|
|
95200
|
-
const interpreter = resolveWindowsCommandInterpreter();
|
|
95201
|
-
if (!interpreter)
|
|
95202
|
-
return null;
|
|
95203
|
-
let canonicalWrapper;
|
|
95204
|
-
try {
|
|
95205
|
-
canonicalWrapper = _internals106.realpathSync(wrapperPath);
|
|
95206
|
-
} catch {
|
|
95207
|
-
return null;
|
|
95208
|
-
}
|
|
95209
|
-
if (!isRegularFile(canonicalWrapper) || !WINDOWS_BATCH_WRAPPER_EXTENSIONS.includes(path128.extname(canonicalWrapper).toLowerCase())) {
|
|
95210
|
-
return null;
|
|
95211
|
-
}
|
|
95212
|
-
const tokens = [canonicalWrapper, ...args];
|
|
95213
|
-
if (tokens.some((token) => WINDOWS_CMD_UNSAFE_TOKEN.test(token)))
|
|
95214
|
-
return null;
|
|
95215
|
-
const command = `call ${tokens.map((token) => `"${token}"`).join(" ")}`;
|
|
95216
|
-
return [interpreter, "/d", "/s", "/v:off", "/c", command];
|
|
95239
|
+
function buildWindowsBatchCommand2(wrapperPath, args) {
|
|
95240
|
+
return buildWindowsBatchCommand(wrapperPath, args, lintWindowsBatchDeps);
|
|
95217
95241
|
}
|
|
95218
95242
|
function resolveWindowsBatchCommandFromPath(name, args) {
|
|
95219
95243
|
if (_internals106.platform() !== "win32")
|
|
95220
95244
|
return null;
|
|
95221
95245
|
const wrapper = resolveExecutableFromPath(WINDOWS_BATCH_WRAPPER_EXTENSIONS.map((extension) => `${name}${extension}`), _internals106.pathEnv(), "win32");
|
|
95222
|
-
return wrapper ?
|
|
95246
|
+
return wrapper ? buildWindowsBatchCommand2(wrapper, args) : null;
|
|
95223
95247
|
}
|
|
95224
|
-
function
|
|
95225
|
-
|
|
95226
|
-
return null;
|
|
95227
|
-
const candidate2 = path128.join(cwd, fileName);
|
|
95228
|
-
if (!isRegularFile(candidate2))
|
|
95229
|
-
return null;
|
|
95230
|
-
let canonicalCwd;
|
|
95231
|
-
let canonicalCandidate;
|
|
95232
|
-
try {
|
|
95233
|
-
canonicalCwd = _internals106.realpathSync(cwd);
|
|
95234
|
-
canonicalCandidate = _internals106.realpathSync(candidate2);
|
|
95235
|
-
} catch {
|
|
95236
|
-
return null;
|
|
95237
|
-
}
|
|
95238
|
-
const relative22 = path128.relative(canonicalCwd, canonicalCandidate);
|
|
95239
|
-
if (relative22 === "" || relative22.startsWith("..") || path128.isAbsolute(relative22)) {
|
|
95240
|
-
return null;
|
|
95241
|
-
}
|
|
95242
|
-
return buildWindowsBatchCommand(canonicalCandidate, args);
|
|
95248
|
+
function resolveContainedWindowsBatchCommand2(cwd, fileName, args) {
|
|
95249
|
+
return resolveContainedWindowsBatchCommand(cwd, fileName, args, lintWindowsBatchDeps);
|
|
95243
95250
|
}
|
|
95244
95251
|
function buildAdditionalCommand(name, args) {
|
|
95245
95252
|
const executable = resolveAdditionalExecutable(name);
|
|
@@ -95268,7 +95275,7 @@ function resolveCheckstyleCommand(cwd) {
|
|
|
95268
95275
|
const hasGradleSignal = hasCheckstyleGradleSignal(cwd);
|
|
95269
95276
|
if (hasGradleSignal) {
|
|
95270
95277
|
if (_internals106.platform() === "win32") {
|
|
95271
|
-
const gradlew =
|
|
95278
|
+
const gradlew = resolveContainedWindowsBatchCommand2(cwd, "gradlew.bat", [
|
|
95272
95279
|
"checkstyleMain"
|
|
95273
95280
|
]);
|
|
95274
95281
|
if (gradlew)
|
|
@@ -98062,6 +98069,7 @@ var MAX_SAFE_SOURCE_FILES = 1;
|
|
|
98062
98069
|
var MAX_RAW_FILE_ENTRIES = 512;
|
|
98063
98070
|
var MAX_FILE_PATH_LENGTH2 = 4096;
|
|
98064
98071
|
var MAX_GRAPH_FILE_BYTES = 4 * 1024 * 1024;
|
|
98072
|
+
var MAX_MAVEN_MODULE_PROBE_ENTRIES = 100;
|
|
98065
98073
|
var DEFAULT_LOAD_IMPACT_MAP = loadImpactMap;
|
|
98066
98074
|
async function estimateFanOut(sourceFiles, cwd) {
|
|
98067
98075
|
try {
|
|
@@ -98444,7 +98452,7 @@ var DISPATCH_FRAMEWORK_MAP = {
|
|
|
98444
98452
|
};
|
|
98445
98453
|
async function detectTestFrameworkViaDispatch(cwd) {
|
|
98446
98454
|
try {
|
|
98447
|
-
const { pickBackend } = await import("./dispatch-
|
|
98455
|
+
const { pickBackend } = await import("./dispatch-1pbmmj8z.js");
|
|
98448
98456
|
const backend = await pickBackend(cwd);
|
|
98449
98457
|
if (!backend?.selectTestFramework)
|
|
98450
98458
|
return "none";
|
|
@@ -98460,7 +98468,7 @@ async function buildTestCommandViaDispatch(framework, scope, files, coverage, ba
|
|
|
98460
98468
|
if (framework === "none")
|
|
98461
98469
|
return null;
|
|
98462
98470
|
try {
|
|
98463
|
-
const { pickBackend } = await import("./dispatch-
|
|
98471
|
+
const { pickBackend } = await import("./dispatch-1pbmmj8z.js");
|
|
98464
98472
|
const backend = await pickBackend(baseDir);
|
|
98465
98473
|
if (backend?.buildTestCommand) {
|
|
98466
98474
|
const cmd = backend.buildTestCommand(framework, files, baseDir, {
|
|
@@ -98482,7 +98490,7 @@ async function parseTestOutputViaDispatch(framework, output, baseDir) {
|
|
|
98482
98490
|
if (framework === "none")
|
|
98483
98491
|
return null;
|
|
98484
98492
|
try {
|
|
98485
|
-
const { pickBackend } = await import("./dispatch-
|
|
98493
|
+
const { pickBackend } = await import("./dispatch-1pbmmj8z.js");
|
|
98486
98494
|
const backend = await pickBackend(baseDir);
|
|
98487
98495
|
if (!backend?.parseTestOutput)
|
|
98488
98496
|
return null;
|
|
@@ -98502,7 +98510,82 @@ async function parseTestOutputViaDispatch(framework, output, baseDir) {
|
|
|
98502
98510
|
return null;
|
|
98503
98511
|
}
|
|
98504
98512
|
}
|
|
98505
|
-
|
|
98513
|
+
function relativeEscapesRoot(relative24) {
|
|
98514
|
+
return relative24 === ".." || relative24.startsWith(`..${path132.sep}`) || path132.isAbsolute(relative24);
|
|
98515
|
+
}
|
|
98516
|
+
function resolveMavenModuleDir(root, files) {
|
|
98517
|
+
const resolvedRoot = path132.resolve(root);
|
|
98518
|
+
let rootReal;
|
|
98519
|
+
const isContainedModuleDir = (dir) => {
|
|
98520
|
+
if (rootReal === undefined) {
|
|
98521
|
+
try {
|
|
98522
|
+
rootReal = _internals110.realpathSync(resolvedRoot);
|
|
98523
|
+
} catch {
|
|
98524
|
+
rootReal = null;
|
|
98525
|
+
}
|
|
98526
|
+
}
|
|
98527
|
+
if (rootReal === null)
|
|
98528
|
+
return false;
|
|
98529
|
+
let dirReal;
|
|
98530
|
+
try {
|
|
98531
|
+
dirReal = _internals110.realpathSync(dir);
|
|
98532
|
+
} catch {
|
|
98533
|
+
return false;
|
|
98534
|
+
}
|
|
98535
|
+
return !relativeEscapesRoot(path132.relative(rootReal, dirReal));
|
|
98536
|
+
};
|
|
98537
|
+
if (files && files.length > 0) {
|
|
98538
|
+
for (const file of files) {
|
|
98539
|
+
const resolvedFile = path132.resolve(resolvedRoot, file);
|
|
98540
|
+
const relativeToRoot = path132.relative(resolvedRoot, resolvedFile);
|
|
98541
|
+
if (relativeEscapesRoot(relativeToRoot)) {
|
|
98542
|
+
continue;
|
|
98543
|
+
}
|
|
98544
|
+
let current = path132.dirname(resolvedFile);
|
|
98545
|
+
while (true) {
|
|
98546
|
+
if (_internals110.existsSync(path132.join(current, "pom.xml")) && isContainedModuleDir(current)) {
|
|
98547
|
+
return current;
|
|
98548
|
+
}
|
|
98549
|
+
if (current === resolvedRoot)
|
|
98550
|
+
break;
|
|
98551
|
+
const parent = path132.dirname(current);
|
|
98552
|
+
if (parent === current)
|
|
98553
|
+
break;
|
|
98554
|
+
if (relativeEscapesRoot(path132.relative(resolvedRoot, parent))) {
|
|
98555
|
+
break;
|
|
98556
|
+
}
|
|
98557
|
+
current = parent;
|
|
98558
|
+
}
|
|
98559
|
+
}
|
|
98560
|
+
return null;
|
|
98561
|
+
}
|
|
98562
|
+
let entries2;
|
|
98563
|
+
try {
|
|
98564
|
+
entries2 = _internals110.readdirSync(resolvedRoot);
|
|
98565
|
+
} catch {
|
|
98566
|
+
return null;
|
|
98567
|
+
}
|
|
98568
|
+
entries2.sort((a, b) => a.localeCompare(b));
|
|
98569
|
+
let inspected = 0;
|
|
98570
|
+
for (const entry of entries2) {
|
|
98571
|
+
if (entry.startsWith(".") || entry === "node_modules")
|
|
98572
|
+
continue;
|
|
98573
|
+
if (inspected >= MAX_MAVEN_MODULE_PROBE_ENTRIES)
|
|
98574
|
+
break;
|
|
98575
|
+
inspected++;
|
|
98576
|
+
const candidate2 = path132.join(resolvedRoot, entry);
|
|
98577
|
+
if (_internals110.existsSync(path132.join(candidate2, "pom.xml")) && isContainedModuleDir(candidate2)) {
|
|
98578
|
+
return candidate2;
|
|
98579
|
+
}
|
|
98580
|
+
}
|
|
98581
|
+
return null;
|
|
98582
|
+
}
|
|
98583
|
+
function resolveNestedMavenModuleDir(root, files) {
|
|
98584
|
+
if (_internals110.existsSync(path132.join(root, "pom.xml")))
|
|
98585
|
+
return null;
|
|
98586
|
+
return resolveMavenModuleDir(root, files);
|
|
98587
|
+
}
|
|
98588
|
+
async function detectTestFramework(cwd, files) {
|
|
98506
98589
|
const baseDir = cwd;
|
|
98507
98590
|
try {
|
|
98508
98591
|
const packageJsonPath = path132.join(baseDir, "package.json");
|
|
@@ -98594,6 +98677,10 @@ async function detectTestFramework(cwd) {
|
|
|
98594
98677
|
return "rspec";
|
|
98595
98678
|
if (detectMinitest(baseDir))
|
|
98596
98679
|
return "minitest";
|
|
98680
|
+
const mavenModuleDir = resolveNestedMavenModuleDir(baseDir, files);
|
|
98681
|
+
if (mavenModuleDir && (_internals110.isCommandAvailable("mvn") || resolveMavenWrapperCommand(mavenModuleDir, ["test"]) !== null)) {
|
|
98682
|
+
return "maven";
|
|
98683
|
+
}
|
|
98597
98684
|
return "none";
|
|
98598
98685
|
}
|
|
98599
98686
|
function detectPhpTest(cwd) {
|
|
@@ -98985,30 +99072,10 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
|
|
|
98985
99072
|
return args;
|
|
98986
99073
|
}
|
|
98987
99074
|
case "maven": {
|
|
98988
|
-
|
|
98989
|
-
if (targets && targets.length > 0) {
|
|
98990
|
-
args.push(`-Dtest=${targets.join(",")}`);
|
|
98991
|
-
}
|
|
98992
|
-
return args;
|
|
99075
|
+
return buildMavenTestCommand(baseDir, targets);
|
|
98993
99076
|
}
|
|
98994
99077
|
case "gradle": {
|
|
98995
|
-
|
|
98996
|
-
const hasGradlewBat = fs68.existsSync(path132.join(baseDir, "gradlew.bat"));
|
|
98997
|
-
const hasGradlew = fs68.existsSync(path132.join(baseDir, "gradlew"));
|
|
98998
|
-
const args = [];
|
|
98999
|
-
if (hasGradlewBat && isWindows)
|
|
99000
|
-
args.push("gradlew.bat");
|
|
99001
|
-
else if (hasGradlew)
|
|
99002
|
-
args.push("./gradlew");
|
|
99003
|
-
else
|
|
99004
|
-
args.push("gradle");
|
|
99005
|
-
args.push("test");
|
|
99006
|
-
if (targets && targets.length > 0) {
|
|
99007
|
-
for (const target of targets) {
|
|
99008
|
-
args.push("--tests", target);
|
|
99009
|
-
}
|
|
99010
|
-
}
|
|
99011
|
-
return args;
|
|
99078
|
+
return buildGradleTestCommand(baseDir, targets);
|
|
99012
99079
|
}
|
|
99013
99080
|
case "dotnet-test": {
|
|
99014
99081
|
const args = ["dotnet", "test"];
|
|
@@ -99064,16 +99131,10 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
|
|
|
99064
99131
|
'Dir.glob("test/**/*_test.rb").sort.each { |f| require_relative f }'
|
|
99065
99132
|
];
|
|
99066
99133
|
case "pest": {
|
|
99067
|
-
|
|
99068
|
-
if (scope !== "all" && files.length > 0)
|
|
99069
|
-
args.push(...files);
|
|
99070
|
-
return args;
|
|
99134
|
+
return buildPhpVendorCommand(baseDir, "pest", scope !== "all" && files.length > 0 ? files : []);
|
|
99071
99135
|
}
|
|
99072
99136
|
case "phpunit": {
|
|
99073
|
-
|
|
99074
|
-
if (scope !== "all" && files.length > 0)
|
|
99075
|
-
args.push(...files);
|
|
99076
|
-
return args;
|
|
99137
|
+
return buildPhpVendorCommand(baseDir, "phpunit", scope !== "all" && files.length > 0 ? files : []);
|
|
99077
99138
|
}
|
|
99078
99139
|
case "php-artisan": {
|
|
99079
99140
|
const args = ["php", "artisan", "test"];
|
|
@@ -99085,9 +99146,6 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
|
|
|
99085
99146
|
return null;
|
|
99086
99147
|
}
|
|
99087
99148
|
}
|
|
99088
|
-
function phpVendorBin(name) {
|
|
99089
|
-
return path132.join("vendor", "bin", process.platform === "win32" ? `${name}.bat` : name);
|
|
99090
|
-
}
|
|
99091
99149
|
function mapFrameworkStatusToResult(status) {
|
|
99092
99150
|
if (typeof status !== "string")
|
|
99093
99151
|
return null;
|
|
@@ -99597,7 +99655,8 @@ async function runTests(framework, scope, files, coverage, timeout_ms, cwd, bail
|
|
|
99597
99655
|
stderr: "pipe",
|
|
99598
99656
|
cwd: executionCwd,
|
|
99599
99657
|
timeout: timeout_ms,
|
|
99600
|
-
killProcessTree: true
|
|
99658
|
+
killProcessTree: true,
|
|
99659
|
+
...isWindowsCommandInterpreterLaunch(command) ? { windowsVerbatimArguments: true } : {}
|
|
99601
99660
|
});
|
|
99602
99661
|
const stdoutPromise = readBoundedStream2(proc.stdout, MAX_OUTPUT_BYTES5);
|
|
99603
99662
|
const stderrPromise = readBoundedStream2(proc.stderr, MAX_OUTPUT_BYTES5);
|
|
@@ -99653,8 +99712,9 @@ async function runTests(framework, scope, files, coverage, timeout_ms, cwd, bail
|
|
|
99653
99712
|
totals.total = parsedTestCases.length;
|
|
99654
99713
|
}
|
|
99655
99714
|
const isTimeout = timedOutByDeadline;
|
|
99715
|
+
const spawnFailure = proc.spawnError;
|
|
99656
99716
|
const nativeTargetObserved = resolvedNativeTarget ? didExecuteNativeTarget(resolvedNativeTarget, output) : true;
|
|
99657
|
-
const testPassed = exitCode === 0 && !isTimeout && totals.failed === 0 && nativeTargetObserved;
|
|
99717
|
+
const testPassed = exitCode === 0 && !isTimeout && !spawnFailure && totals.failed === 0 && nativeTargetObserved;
|
|
99658
99718
|
if (testPassed) {
|
|
99659
99719
|
const result = {
|
|
99660
99720
|
success: true,
|
|
@@ -99683,9 +99743,9 @@ async function runTests(framework, scope, files, coverage, timeout_ms, cwd, bail
|
|
|
99683
99743
|
duration_ms,
|
|
99684
99744
|
totals,
|
|
99685
99745
|
rawOutput: output,
|
|
99686
|
-
error: isTimeout ? `Tests timed out after ${timeout_ms}ms` : !nativeTargetObserved ? `Native target "${resolvedNativeTarget?.name}" did not execute` : `Tests failed with ${totals.failed} failures`,
|
|
99687
|
-
message: isTimeout ? `${framework} tests timed out after ${timeout_ms}ms` : !nativeTargetObserved ? `${framework} did not report the exact requested native target; refusing a false-green 0/0 result` : `${framework} tests failed (${totals.failed}/${totals.total} failed)`,
|
|
99688
|
-
outcome: isTimeout ? "error" : "regression",
|
|
99746
|
+
error: spawnFailure ? `Test command failed to launch: ${spawnFailure.message}` : isTimeout ? `Tests timed out after ${timeout_ms}ms` : !nativeTargetObserved ? `Native target "${resolvedNativeTarget?.name}" did not execute` : `Tests failed with ${totals.failed} failures`,
|
|
99747
|
+
message: spawnFailure ? `${framework} test process could not be started: ${spawnFailure.message} \u2014 a launch failure (for example a missing executable or unusable working directory), not a test regression. Check the command, PATH, and cwd instead of the tests.` : isTimeout ? `${framework} tests timed out after ${timeout_ms}ms` : !nativeTargetObserved ? `${framework} did not report the exact requested native target; refusing a false-green 0/0 result` : `${framework} tests failed (${totals.failed}/${totals.total} failed)`,
|
|
99748
|
+
outcome: spawnFailure || isTimeout ? "error" : "regression",
|
|
99689
99749
|
testCases: parsedTestCases
|
|
99690
99750
|
};
|
|
99691
99751
|
if (coveragePercent !== undefined) {
|
|
@@ -99893,7 +99953,7 @@ var test_runner = createSwarmTool({
|
|
|
99893
99953
|
path: exports_external.string()
|
|
99894
99954
|
}).optional().describe('For scope "target": exact framework-native test name plus a workspace-relative package/build directory. Absolute paths, traversal, coverage, bail, and broad fallback are rejected.'),
|
|
99895
99955
|
files: exports_external.array(exports_external.string().min(1).max(MAX_FILE_PATH_LENGTH2)).max(MAX_RAW_FILE_ENTRIES).optional().describe('Specific files to test. For "convention", pass source files or direct test files. For "graph" and "impact", pass source files only.'),
|
|
99896
|
-
targets: exports_external.array(exports_external.string()).optional().describe("Framework-native test names or patterns to filter which tests run. Supported by cargo, go-test, maven, gradle, dotnet-test, ctest, and swift-test. Each entry is passed as-is to the framework's native filter flag."),
|
|
99956
|
+
targets: exports_external.array(exports_external.string()).optional().describe("Framework-native test names or patterns to filter which tests run. Supported by cargo, go-test, maven, gradle, dotnet-test, ctest, and swift-test. Each entry is passed as-is to the framework's native filter flag. Targets only filter a files-driven selection \u2014 provide a non-empty files array for the convention, graph, and impact scopes; targets alone cannot drive discovery."),
|
|
99897
99957
|
coverage: exports_external.boolean().optional().describe("Enable coverage reporting if supported"),
|
|
99898
99958
|
bail: exports_external.boolean().optional().describe("Stop running tests after the first failure. Default false. Note: coverage may be incomplete when bail=true with coverage=true."),
|
|
99899
99959
|
timeout_ms: exports_external.number().int().min(1).default(DEFAULT_TIMEOUT_MS3).describe("Timeout in milliseconds (default 60000, max 300000)"),
|
|
@@ -100000,13 +100060,13 @@ var test_runner = createSwarmTool({
|
|
|
100000
100060
|
return JSON.stringify(errorResult, null, 2);
|
|
100001
100061
|
}
|
|
100002
100062
|
}
|
|
100003
|
-
if ((scope === "convention" || scope === "graph" || scope === "impact") && (!args.files || args.files.length === 0)
|
|
100063
|
+
if ((scope === "convention" || scope === "graph" || scope === "impact") && (!args.files || args.files.length === 0)) {
|
|
100004
100064
|
const errorResult = {
|
|
100005
100065
|
success: false,
|
|
100006
100066
|
framework: "none",
|
|
100007
100067
|
scope,
|
|
100008
|
-
error: 'scope "convention", "graph", and "impact" require
|
|
100009
|
-
message: 'When using scope "convention", "graph", or "impact",
|
|
100068
|
+
error: 'scope "convention", "graph", and "impact" require a non-empty files array - targets only filter which tests run and cannot substitute for files (omitting files causes unsafe full-project discovery)',
|
|
100069
|
+
message: 'When using scope "convention", "graph", or "impact", provide at least one source or direct-test file in "files"; "targets" only filter which tests run within that selection and cannot drive discovery on their own. Example: { scope: "convention", files: ["tests/test_calc.py"] }',
|
|
100010
100070
|
outcome: "error",
|
|
100011
100071
|
resolution: makeResolution(scope, scope, [], [], "skip", workingDir)
|
|
100012
100072
|
};
|
|
@@ -100023,10 +100083,10 @@ var test_runner = createSwarmTool({
|
|
|
100023
100083
|
} else if (useDispatch) {
|
|
100024
100084
|
framework = await detectTestFrameworkViaDispatch(workingDir);
|
|
100025
100085
|
if (framework === "none") {
|
|
100026
|
-
framework = await detectTestFramework(workingDir);
|
|
100086
|
+
framework = await detectTestFramework(workingDir, _files);
|
|
100027
100087
|
}
|
|
100028
100088
|
} else {
|
|
100029
|
-
framework = await detectTestFramework(workingDir);
|
|
100089
|
+
framework = await detectTestFramework(workingDir, _files);
|
|
100030
100090
|
}
|
|
100031
100091
|
if (framework === "none") {
|
|
100032
100092
|
const result2 = {
|
|
@@ -100048,6 +100108,12 @@ var test_runner = createSwarmTool({
|
|
|
100048
100108
|
};
|
|
100049
100109
|
return JSON.stringify(result2, null, 2);
|
|
100050
100110
|
}
|
|
100111
|
+
if (scope !== "target" && framework === "maven") {
|
|
100112
|
+
const mavenModuleDir = resolveNestedMavenModuleDir(workingDir, _files);
|
|
100113
|
+
if (mavenModuleDir) {
|
|
100114
|
+
nativeExecutionDirectory = mavenModuleDir;
|
|
100115
|
+
}
|
|
100116
|
+
}
|
|
100051
100117
|
let testFiles = [];
|
|
100052
100118
|
let graphFallbackReason;
|
|
100053
100119
|
let effectiveScope = scope;
|
|
@@ -100055,14 +100121,14 @@ var test_runner = createSwarmTool({
|
|
|
100055
100121
|
let selectionCacheStatus;
|
|
100056
100122
|
let selectionSourceFiles = [];
|
|
100057
100123
|
if (scope === "target") {} else if (scope === "all") {} else if (scope === "convention") {
|
|
100058
|
-
const directTestFiles =
|
|
100059
|
-
const sourceFiles =
|
|
100124
|
+
const directTestFiles = _files.filter((file) => isConventionTestFilePath(file));
|
|
100125
|
+
const sourceFiles = _files.filter((file) => {
|
|
100060
100126
|
if (directTestFiles.includes(file))
|
|
100061
100127
|
return false;
|
|
100062
100128
|
const ext = path132.extname(file).toLowerCase();
|
|
100063
100129
|
return SOURCE_EXTENSIONS.has(ext);
|
|
100064
100130
|
});
|
|
100065
|
-
const invalidFiles =
|
|
100131
|
+
const invalidFiles = _files.filter((file) => !directTestFiles.includes(file) && !sourceFiles.includes(file));
|
|
100066
100132
|
if (directTestFiles.length === 0 && sourceFiles.length === 0) {
|
|
100067
100133
|
const errorResult = {
|
|
100068
100134
|
success: false,
|
|
@@ -100085,7 +100151,7 @@ var test_runner = createSwarmTool({
|
|
|
100085
100151
|
};
|
|
100086
100152
|
return JSON.stringify(errorResult, null, 2);
|
|
100087
100153
|
}
|
|
100088
|
-
selectionSourceFiles = normalizeSelectionFiles(
|
|
100154
|
+
selectionSourceFiles = normalizeSelectionFiles(_files, workingDir);
|
|
100089
100155
|
if (sourceFiles.length > MAX_SAFE_SOURCE_FILES) {
|
|
100090
100156
|
const errorResult = {
|
|
100091
100157
|
success: false,
|
|
@@ -100103,7 +100169,7 @@ var test_runner = createSwarmTool({
|
|
|
100103
100169
|
...getTestFilesFromConvention(sourceFiles, workingDir)
|
|
100104
100170
|
].filter((file, index, items) => items.indexOf(file) === index);
|
|
100105
100171
|
} else if (scope === "graph") {
|
|
100106
|
-
const sourceFiles = normalizeSelectionFiles(
|
|
100172
|
+
const sourceFiles = normalizeSelectionFiles(_files.filter((f) => {
|
|
100107
100173
|
if (isConventionTestFilePath(f)) {
|
|
100108
100174
|
return false;
|
|
100109
100175
|
}
|
|
@@ -100146,7 +100212,7 @@ var test_runner = createSwarmTool({
|
|
|
100146
100212
|
testFiles = getTestFilesFromConvention(sourceFiles, workingDir).slice(0, MAX_SAFE_TEST_FILES2 + 1);
|
|
100147
100213
|
}
|
|
100148
100214
|
} else if (scope === "impact") {
|
|
100149
|
-
const sourceFiles = normalizeSelectionFiles(
|
|
100215
|
+
const sourceFiles = normalizeSelectionFiles(_files.filter((f) => {
|
|
100150
100216
|
if (isConventionTestFilePath(f)) {
|
|
100151
100217
|
return false;
|
|
100152
100218
|
}
|
|
@@ -100316,6 +100382,7 @@ var _internals110 = {
|
|
|
100316
100382
|
existsSync: fs68.existsSync,
|
|
100317
100383
|
readdirSync: fs68.readdirSync,
|
|
100318
100384
|
readFileSync: fs68.readFileSync,
|
|
100385
|
+
realpathSync: fs68.realpathSync,
|
|
100319
100386
|
resolveLocalNodeTool,
|
|
100320
100387
|
bunSpawn,
|
|
100321
100388
|
buildNativeTargetCommand,
|
|
@@ -101442,7 +101509,7 @@ function renderStageARepairOutcome(outcome) {
|
|
|
101442
101509
|
return `\u274C Task ${outcome.taskId}: unknown repair outcome`;
|
|
101443
101510
|
}
|
|
101444
101511
|
}
|
|
101445
|
-
async function handleRecoverCommand(directory, args) {
|
|
101512
|
+
async function handleRecoverCommand(directory, args, sessionID) {
|
|
101446
101513
|
const force = args.includes("--force");
|
|
101447
101514
|
if (args.includes("--coordination")) {
|
|
101448
101515
|
try {
|
|
@@ -101499,7 +101566,8 @@ async function handleRecoverCommand(directory, args) {
|
|
|
101499
101566
|
}
|
|
101500
101567
|
try {
|
|
101501
101568
|
const { results: repairResults, truncated: repairTruncated } = await repairWedgedStageA(directory, {
|
|
101502
|
-
...taskId ? { taskIds: [taskId] } : {}
|
|
101569
|
+
...taskId ? { taskIds: [taskId] } : {},
|
|
101570
|
+
...sessionID ? { sessionId: sessionID } : {}
|
|
101503
101571
|
});
|
|
101504
101572
|
const repaired = repairResults.filter((r) => r.outcome === "repaired");
|
|
101505
101573
|
if (repairResults.length > 0) {
|
|
@@ -109830,7 +109898,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
109830
109898
|
async function handleHelpCommand(ctx) {
|
|
109831
109899
|
const targetCommand = ctx.args.join(" ");
|
|
109832
109900
|
if (!targetCommand) {
|
|
109833
|
-
const { buildHelpText } = await import("./index-
|
|
109901
|
+
const { buildHelpText } = await import("./index-scjtkt0e.js");
|
|
109834
109902
|
return buildHelpText();
|
|
109835
109903
|
}
|
|
109836
109904
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -109844,7 +109912,7 @@ async function handleHelpCommand(ctx) {
|
|
|
109844
109912
|
> Note: \`/swarm ${resolved.key}\` is a deprecated alias for \`/swarm ${aliasTarget}\`.` : detailed;
|
|
109845
109913
|
}
|
|
109846
109914
|
const similar = _internals27.findSimilarCommands(targetCommand);
|
|
109847
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
109915
|
+
const { buildHelpText: fullHelp } = await import("./index-scjtkt0e.js");
|
|
109848
109916
|
if (similar.length > 0) {
|
|
109849
109917
|
return `Command '/swarm ${targetCommand}' not found.
|
|
109850
109918
|
|
|
@@ -110172,7 +110240,7 @@ var COMMAND_REGISTRY = {
|
|
|
110172
110240
|
},
|
|
110173
110241
|
"guardrail explain": {
|
|
110174
110242
|
handler: async (ctx) => {
|
|
110175
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
110243
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-7m0h7db3.js");
|
|
110176
110244
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
110177
110245
|
},
|
|
110178
110246
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -110182,7 +110250,7 @@ var COMMAND_REGISTRY = {
|
|
|
110182
110250
|
},
|
|
110183
110251
|
"guardrail reset": {
|
|
110184
110252
|
handler: async (ctx) => {
|
|
110185
|
-
const { handleGuardrailReset } = await import("./guardrail-reset-
|
|
110253
|
+
const { handleGuardrailReset } = await import("./guardrail-reset-shvx8e8g.js");
|
|
110186
110254
|
return handleGuardrailReset(ctx.args, ctx.sessionID);
|
|
110187
110255
|
},
|
|
110188
110256
|
description: "Reset one exact active invocation/action circuit after repair",
|
|
@@ -110203,7 +110271,7 @@ var COMMAND_REGISTRY = {
|
|
|
110203
110271
|
},
|
|
110204
110272
|
"guardrail-log": {
|
|
110205
110273
|
handler: async (ctx) => {
|
|
110206
|
-
const { handleGuardrailLog } = await import("./guardrail-log-
|
|
110274
|
+
const { handleGuardrailLog } = await import("./guardrail-log-p6s1sbxh.js");
|
|
110207
110275
|
return handleGuardrailLog(ctx.directory, ctx.args);
|
|
110208
110276
|
},
|
|
110209
110277
|
description: "Read the guardrail decision log (use --blocks-only for blocks)",
|
|
@@ -110978,9 +111046,9 @@ Subcommands:
|
|
|
110978
111046
|
toolPolicy: "restricted"
|
|
110979
111047
|
},
|
|
110980
111048
|
recover: {
|
|
110981
|
-
handler: (ctx) => handleRecoverCommand(ctx.directory, ctx.args),
|
|
111049
|
+
handler: (ctx) => handleRecoverCommand(ctx.directory, ctx.args, ctx.sessionID),
|
|
110982
111050
|
description: "Recover wedged coder settlements [task_id] [--force]",
|
|
110983
|
-
details: "Settles stale coder-settlement WALs in .swarm/coder-settlements/ \u2014 the CODER_DISPATCH_IN_PROGRESS wedge where a dispatch's completion never fired (issue #2268). Safe mode recovers settlements whose owner process is gone. --force also releases ownership keys held by this process: use only when no dispatch is genuinely running (a late completion then reports CODER_SETTLEMENT_IDEMPOTENCY_CONFLICT, safe to ignore). Never interrupts another live OpenCode process. Also repairs tasks wedged at coder_delegated with unattributed green pre_check evidence \u2014 the post-reset TASK_WORKFLOW_STAGE_A_REQUIRED wedge \u2014 and the settlement-wedge class (issue #2828): a task whose workflow drifted to idle or blocked while a COMMITTED accepted coder settlement and green post-settlement pre-check evidence still justify Stage A gets the missing stage_a_passed written directly, with a settlementRecovery marker and a stage_a_repair audit event in .swarm/events.jsonl; the architect-side audited escape hatch for the same receipts is the recover_stage_a_task tool. Note that --force affects only in-process settlement-WAL ownership and does not override Stage A wedge-classification refusals. Pass [task_id] to scope both phases to one task. Diagnose and repair emit per-category status explanations (missing/stale/ambiguous/corrupt/live_wedge/settlement_wedge) with shell-correct invocation guidance per host \u2014 see docs/troubleshooting/recovery-runbook.md (#2665). Human-only.",
|
|
111051
|
+
details: "Settles stale coder-settlement WALs in .swarm/coder-settlements/ \u2014 the CODER_DISPATCH_IN_PROGRESS wedge where a dispatch's completion never fired (issue #2268). Safe mode recovers settlements whose owner process is gone. --force also releases ownership keys held by this process: use only when no dispatch is genuinely running (a late completion then reports CODER_SETTLEMENT_IDEMPOTENCY_CONFLICT, safe to ignore). Never interrupts another live OpenCode process. Also repairs tasks wedged at coder_delegated with unattributed green pre_check evidence \u2014 the post-reset TASK_WORKFLOW_STAGE_A_REQUIRED wedge \u2014 and the settlement-wedge class (issue #2828): a task whose workflow drifted to idle or blocked while a COMMITTED accepted coder settlement and green post-settlement pre-check evidence still justify Stage A gets the missing stage_a_passed written directly, with a settlementRecovery marker and a stage_a_repair audit event in .swarm/events.jsonl; the architect-side audited escape hatch for the same receipts is the recover_stage_a_task tool. Both recovery surfaces also refresh the invoking session's in-memory task workflow view, so a blocked-start wedge does not survive the recovery in the session that ran it (#3043). Note that --force affects only in-process settlement-WAL ownership and does not override Stage A wedge-classification refusals. Pass [task_id] to scope both phases to one task. Diagnose and repair emit per-category status explanations (missing/stale/ambiguous/corrupt/live_wedge/settlement_wedge) with shell-correct invocation guidance per host \u2014 see docs/troubleshooting/recovery-runbook.md (#2665). Human-only.",
|
|
110984
111052
|
args: "[task_id] [--force]",
|
|
110985
111053
|
category: "utility",
|
|
110986
111054
|
toolPolicy: "human-only"
|
|
@@ -114762,7 +114830,7 @@ EXECUTION BOUNDARY:
|
|
|
114762
114830
|
- scope: "all" is PROHIBITED for test_engineer \u2014 full-suite output can destabilize opencode's SSE streaming, and the architect handles regression sweeps separately via scope: "graph"
|
|
114763
114831
|
- If you need to verify tests beyond your assigned file, report the concern in your VERDICT and the architect will handle it
|
|
114764
114832
|
- If you wrote tests/foo.test.ts for src/foo.ts, you MUST run only tests/foo.test.ts
|
|
114765
|
-
- The test_runner convention scope recognises direct test files in supported locations/naming conventions: Python (test_*.py, *_test.py), Ruby (*_spec.rb), Java/Kotlin (*Test.*), C# (*Tests.cs), and PowerShell (*.Tests.ps1). For Go and CTest, use scope "target" with an exact framework-native name; never broaden to a package/build sweep. For target-based frameworks (cargo, maven, gradle, dotnet-test, swift-test), you may also pass framework-native test names or patterns in the \`targets\` array parameter alongside \`files
|
|
114833
|
+
- The test_runner convention scope recognises direct test files in supported locations/naming conventions: Python (test_*.py, *_test.py), Ruby (*_spec.rb), Java/Kotlin (*Test.*), C# (*Tests.cs), and PowerShell (*.Tests.ps1). For Go and CTest, use scope "target" with an exact framework-native name; never broaden to a package/build sweep. For target-based frameworks (cargo, maven, gradle, dotnet-test, swift-test), you may also pass framework-native test names or patterns in the \`targets\` array parameter alongside \`files\` (\`targets\` alone cannot drive discovery: the convention, graph, and impact scopes require a non-empty \`files\` array).
|
|
114766
114834
|
|
|
114767
114835
|
TOOL USAGE:
|
|
114768
114836
|
- Use \`test_runner\` tool for test execution
|