nolo-cli 0.54.0 → 0.61.0-alpha.2
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/README.md +3 -3
- package/{_executeModel-OPTKYHJA.js → _executeModel-CKT6RGTL.js} +48 -45
- package/{action-ORXWW2ZG.js → action-76JX3JX3.js} +7 -6
- package/{addContentAction-53BZ34AE.js → addContentAction-V3NAZRTJ.js} +6 -5
- package/{addDialogAgentAction-JRYUS54Y.js → addDialogAgentAction-RZOAF46K.js} +5 -4
- package/{agentDeleteCommand-FJIWU2BS.js → agentDeleteCommand-VN7NPXQ4.js} +30 -27
- package/{agentEmailCommands-CE32L43B.js → agentEmailCommands-F2TNAV4A.js} +59 -56
- package/{agentGrantCommands-2LEZDADN.js → agentGrantCommands-R3VQEZJR.js} +1 -1
- package/{agentListCommands-VJNKULIK.js → agentListCommands-OSM2ANI3.js} +61 -31
- package/{agentMachineCommands-HCJ3WQXL.js → agentMachineCommands-MTPWYVRV.js} +31 -28
- package/{agentPullCommand-M552CYSI.js → agentPullCommand-N7L2CT7L.js} +2 -2
- package/{agentRecordCommands-QFWERED4.js → agentRecordCommands-VWAWTVVC.js} +57 -54
- package/{agentRunCommand-G3GQMUNN.js → agentRunCommand-PLZOBNVK.js} +61 -58
- package/{agentRunControl-INKFDXDA.js → agentRunControl-WECMOO6O.js} +11 -6
- package/{agentRuntimeLocal-K327ELSL.js → agentRuntimeLocal-XCJLRWQE.js} +26 -23
- package/{agentSlice-ODKF4J6M.js → agentSlice-F6DOP4IW.js} +8 -7
- package/{appDeleteCommands-XUXMFDI4.js → appDeleteCommands-3BCFTRFJ.js} +30 -27
- package/{appDeployCommands-37F4GPCU.js → appDeployCommands-B4GMHCYA.js} +30 -27
- package/{appDeployStatusCommands-WSPU7TUK.js → appDeployStatusCommands-4MN36WIG.js} +30 -27
- package/{appGetCommands-YLOBA3EM.js → appGetCommands-4GJIEUAX.js} +30 -27
- package/{appListCommands-UD62R5ME.js → appListCommands-CHU53GSX.js} +30 -27
- package/{authCommand-OK6HLHGS.js → authCommand-WOTWLJNF.js} +35 -29
- package/{authCommands-2DUIUEMT.js → authCommands-ILTBI6JV.js} +7 -5
- package/{chatQueueReduxAdapter-TV2TUOQS.js → chatQueueReduxAdapter-HNSQXNIR.js} +20 -18
- package/{chunk-HPW5MNDQ.js → chunk-22BTGNSP.js} +113 -57
- package/{chunk-TR4DXUYX.js → chunk-2HPRMEEZ.js} +1180 -736
- package/{chunk-UNZDCI3O.js → chunk-2KDR4CWE.js} +35 -4
- package/{chunk-3ZTR7ZO4.js → chunk-2PGGC63K.js} +1 -1
- package/{chunk-JXIP6ZWH.js → chunk-37QVS7BU.js} +18 -5
- package/{chunk-EA5OYZVD.js → chunk-37XDGCY7.js} +1 -1
- package/chunk-3BLB7QKO.js +433 -0
- package/{chunk-CS6TCJ7E.js → chunk-3JQ2NRYU.js} +30 -7
- package/{chunk-RHMDMTDK.js → chunk-3JWKQDA4.js} +2 -2
- package/{chunk-3LKZRP7E.js → chunk-3QGUVVX5.js} +2 -2
- package/{chunk-SSXTSPSG.js → chunk-45YO6H7P.js} +71 -30
- package/{chunk-EJE33XNR.js → chunk-4C4ST2YE.js} +1521 -565
- package/{chunk-YLCUU3WM.js → chunk-4NJEIGBQ.js} +5 -5
- package/{chunk-K4NISKOR.js → chunk-5ZYA4JJ3.js} +47 -17
- package/{chunk-3Y2K5O2R.js → chunk-7A3RRUCQ.js} +125 -40
- package/{chunk-5FCIPEKT.js → chunk-7O7KH4X5.js} +1051 -926
- package/{chunk-6HDYSFLO.js → chunk-7UF7CQ6B.js} +3 -3
- package/{chunk-SUEIAK5N.js → chunk-AQMVUA7N.js} +1 -0
- package/{chunk-WQHGJHAL.js → chunk-AVE2YR4F.js} +732 -726
- package/{chunk-6COJEAYH.js → chunk-B7DXRX7F.js} +44 -37
- package/chunk-BFU6C242.js +66 -0
- package/{chunk-IA3A5373.js → chunk-C3FZR5EC.js} +1 -1
- package/{chunk-IWUMSAQF.js → chunk-CJCJF5XB.js} +26 -3
- package/{chunk-UGBHDMHI.js → chunk-CP7VIDZ7.js} +1 -1
- package/{chunk-JON2PHYT.js → chunk-CTCW7U7N.js} +1 -1
- package/{chunk-YBFJQC2M.js → chunk-D5XKNNUV.js} +65 -42
- package/{chunk-7NYDJAQ7.js → chunk-DNNSCSA2.js} +5 -5
- package/{chunk-NI2BS6UD.js → chunk-DWUCB2A3.js} +1 -1
- package/{chunk-AA564GBL.js → chunk-DZZL7UBV.js} +1 -1
- package/{chunk-75MSWWUE.js → chunk-E6RGHPDR.js} +5 -3
- package/chunk-EDKF7RX4.js +30 -0
- package/{chunk-FJHMLRDQ.js → chunk-ES6CVKVD.js} +21 -27
- package/{chunk-SYYUU7EV.js → chunk-FHAGENAS.js} +2 -3
- package/{chunk-NJUQBYFJ.js → chunk-FKFMIBTT.js} +3 -1
- package/{chunk-INZZJSQF.js → chunk-FZGV4FGK.js} +24 -12
- package/{chunk-YQBXOHE6.js → chunk-GAL47RNP.js} +1 -1
- package/{chunk-UOWXD4VN.js → chunk-HBPV76EK.js} +335 -243
- package/{chunk-MLEZPE3U.js → chunk-HLU5Q2GV.js} +4 -4
- package/{chunk-TC6P4NDR.js → chunk-HQP7HJDL.js} +6 -6
- package/{chunk-7FAS3NEF.js → chunk-IYCUMIYS.js} +19 -15
- package/{chunk-AUVFJGPC.js → chunk-JX5PJCWS.js} +7 -5
- package/{chunk-LYGNQHUW.js → chunk-JYYZCK2Z.js} +2 -4
- package/{chunk-XOJRZUPF.js → chunk-KWSQR2KK.js} +14 -29
- package/{chunk-2WBFJHQA.js → chunk-L7B47JXR.js} +34 -39
- package/{chunk-EICIFHVS.js → chunk-LAFC3B2I.js} +1 -1
- package/{chunk-N4JKMCY3.js → chunk-LJKICKVC.js} +2 -2
- package/chunk-M3JEW6N6.js +193 -0
- package/{chunk-LRGKOI5Y.js → chunk-MBOEV4L2.js} +7 -3
- package/{chunk-SVDMVX4G.js → chunk-MMZ6ZTVO.js} +112 -73
- package/{chunk-JDSUTNYY.js → chunk-MP64VFGD.js} +2 -2
- package/{chunk-NFLA6GSU.js → chunk-MXUDQZXQ.js} +44 -5
- package/chunk-N4G4PKQ6.js +23 -0
- package/{chunk-KXKQO4Q6.js → chunk-NTW5GWDM.js} +58 -1
- package/chunk-ONXOABJR.js +215 -0
- package/{chunk-TY3ADTX5.js → chunk-OZX2IPKM.js} +7 -2
- package/{chunk-Q4XZVZPN.js → chunk-P7OOB7QP.js} +1 -1
- package/{chunk-XIJZOCSP.js → chunk-PEZJEQAO.js} +1 -1
- package/{chunk-SWJGJMTW.js → chunk-PQDIDWGX.js} +1 -1
- package/chunk-PSCNXBYA.js +11 -0
- package/{chunk-BY2FF2C4.js → chunk-QEFJJS2I.js} +55 -73
- package/{chunk-BG7J6Y5X.js → chunk-QEW2MFDQ.js} +1 -1
- package/{chunk-KLIBF3BY.js → chunk-RDBARW6T.js} +8 -3
- package/{chunk-ZVOHVJI3.js → chunk-RJ2SAFB5.js} +82 -35
- package/{chunk-MYMBBB6Q.js → chunk-RVWRKFUB.js} +5 -3
- package/{chunk-43CXXVJD.js → chunk-RXX4GDIH.js} +1 -1
- package/chunk-SEJ5OS6F.js +49 -0
- package/{chunk-SAJSBPI2.js → chunk-SOJM57FX.js} +5 -2
- package/{chunk-EKLRRZIN.js → chunk-SPAQ4PVV.js} +0 -5
- package/{chunk-L7NG2M6H.js → chunk-TRV2MIDW.js} +89 -74
- package/{chunk-5UAYZEXO.js → chunk-UZPQSVM6.js} +1 -1
- package/{chunk-SVC3GGUA.js → chunk-VMWYBIXG.js} +7 -5
- package/{chunk-ZHXJ6M7T.js → chunk-W7XHHYWM.js} +4 -0
- package/{chunk-UR66XPVF.js → chunk-XAVSS3KE.js} +21 -3
- package/{chunk-A65UV3M5.js → chunk-XOKOSO35.js} +10 -19
- package/{chunk-VZMUOPYG.js → chunk-XTJTN3RW.js} +46 -3
- package/{chunk-T5HJEUQN.js → chunk-YCDWJX45.js} +1 -1
- package/{chunk-BBTN4NQD.js → chunk-Z4QSJILV.js} +85 -13
- package/{chunk-O5FLGN2L.js → chunk-ZRSJ3JEH.js} +6 -2
- package/{cliExecutor-BBUVQU4L.js → cliExecutor-HG3S345O.js} +1 -1
- package/{codingSkills-BCQXRZOI.js → codingSkills-VDXQYWX4.js} +2 -2
- package/{contentThunks-KNI6VXLT.js → contentThunks-7YG2ZYQC.js} +21 -19
- package/{cooldownCommands-GI5NNWGL.js → cooldownCommands-BSCH2W7P.js} +2 -2
- package/{createAgentAutomationAction-OK4L33KF.js → createAgentAutomationAction-PJQSCAIO.js} +23 -21
- package/{createDialogAction-JDSMY4AY.js → createDialogAction-SFEJX6SP.js} +23 -21
- package/{createPageAction-T7RA3HCG.js → createPageAction-B7WRHOQO.js} +24 -22
- package/{dbSlice-TVX6SN2T.js → dbSlice-IBVOBVMS.js} +5 -4
- package/{deleteFile-JYKRT7C3.js → deleteFile-FWP2PSBG.js} +3 -2
- package/{dialogCommands-UQZYWOOV.js → dialogCommands-VL2X22QC.js} +30 -27
- package/{dialogSlice-TYW2G7IL.js → dialogSlice-ANMACABO.js} +20 -18
- package/{docCreateCommands-OA6HZBWO.js → docCreateCommands-ITLGZ5YI.js} +29 -26
- package/{docDeleteCommands-KBB3YQI2.js → docDeleteCommands-LH3YNL4C.js} +30 -27
- package/{docReadCommands-ZLMFVC67.js → docReadCommands-YAJ77F36.js} +29 -26
- package/{docStore-2URPBVCS.js → docStore-D4HGHPWI.js} +6 -5
- package/{docUpdateCommands-HMH5KUON.js → docUpdateCommands-DQBOMH2G.js} +29 -26
- package/{getPricing-RFOPUWHY.js → getPricing-NM3NUTAS.js} +4 -4
- package/handleSendMessageAction-DF2OABGW.js +675 -0
- package/index.js +79 -88
- package/{lib-2ZTNRXR4.js → lib-FRRS27KN.js} +63 -28
- package/{localRuntimeAuthority-KQDAE64E.js → localRuntimeAuthority-R5UBODT3.js} +6 -4
- package/{localRuntimeDb-PF7CFKDL.js → localRuntimeDb-P37ZTX55.js} +1 -1
- package/{machineCommands-RK6L7ZWL.js → machineCommands-JXDYQ5LB.js} +296 -79
- package/{machineWsRunDispatch-3X64DW2Z.js → machineWsRunDispatch-3QHI7JX5.js} +55 -52
- package/{memberThunks-THZYZFSN.js → memberThunks-VZI6G7YZ.js} +10 -8
- package/{models-JVKUEER5.js → models-FAMINFZ7.js} +2 -2
- package/package.json +3 -2
- package/{read-K4JU4MQC.js → read-2BYWW7AA.js} +3 -2
- package/{readDocTool-LQGR6FUN.js → readDocTool-LC3A7QTB.js} +1 -1
- package/{readlineWorkspace-XUFJV3RS.js → readlineWorkspace-KVZTEAHB.js} +4365 -2795
- package/{removeDialogAgentAction-ECHCFB7N.js → removeDialogAgentAction-SFYZXHNK.js} +8 -7
- package/{runAgentClientLoop-24GQ2AW6.js → runAgentClientLoop-KGTEL7ZP.js} +49 -45
- package/{runtimeDoctorCommands-JKTTN723.js → runtimeDoctorCommands-CROTMULY.js} +7 -5
- package/{setDialogExtraReferencesAction-KCVJNGMB.js → setDialogExtraReferencesAction-Q32RGFTA.js} +6 -5
- package/{setPrimaryDialogAgentAction-VDOBOMKC.js → setPrimaryDialogAgentAction-BFYJHUJS.js} +8 -7
- package/{settingSlice-VR2IJSXC.js → settingSlice-IRUU4VFB.js} +6 -5
- package/{skillDiscovery-2QTZINON.js → skillDiscovery-NTRLM6KP.js} +1 -1
- package/{spaceCommands-S5YJJXL7.js → spaceCommands-KNAYWMCZ.js} +33 -215
- package/{streamAgentChatTurn-QHKP3ABO.js → streamAgentChatTurn-FLYPTXKZ.js} +105 -73
- package/{switchDialogAgentAction-5L4UP7VI.js → switchDialogAgentAction-L2KOKCGG.js} +5 -4
- package/{tableCommands-R6WFRDYF.js → tableCommands-SUNTHAYX.js} +1 -1
- package/{toolApiClient-53U4UDFF.js → toolApiClient-VGYUB4P5.js} +2 -1
- package/{tools-SSXSTC3O.js → tools-CVLUXK6P.js} +37 -34
- package/{tuiSummaryLlmCaller-URFJHFC5.js → tuiSummaryLlmCaller-F3DPFFZM.js} +15 -13
- package/{updateCommands-IYKLF3JX.js → updateCommands-AJYSD73Y.js} +2 -2
- package/{updateDialogTitleAction-YFYAEW3T.js → updateDialogTitleAction-HWJIZEIV.js} +23 -21
- package/agentSuperviseCommands-5AR3DKNN.js +0 -640
- package/chunk-6IGD47IC.js +0 -19
- package/chunk-FD36SCCD.js +0 -105
- package/chunk-GRFK2XP4.js +0 -230
- package/chunk-HJTAGT3W.js +0 -370
- package/handleSendMessageAction-GO53TY7U.js +0 -409
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isAgentRunTerminalStatus
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NTW5GWDM.js";
|
|
4
4
|
import {
|
|
5
5
|
isCompiledBinary,
|
|
6
6
|
resolveCliEntrypointPath
|
|
@@ -335,12 +335,6 @@ async function popQueueMessages(queuePath, depsOrFs = {}) {
|
|
|
335
335
|
const entries = await popAllQueueEntries(queuePath, depsOrFs);
|
|
336
336
|
return entries.map((e) => e.text);
|
|
337
337
|
}
|
|
338
|
-
function resolveRunReportPath(runId, env, homedir = nodeHomedir) {
|
|
339
|
-
return join(resolveRunsDir(env, homedir), `${runId}.report.md`);
|
|
340
|
-
}
|
|
341
|
-
function resolveRunReportJsonPath(runId, env, homedir = nodeHomedir) {
|
|
342
|
-
return join(resolveRunsDir(env, homedir), `${runId}.report.json`);
|
|
343
|
-
}
|
|
344
338
|
function defaultGenerateRunId() {
|
|
345
339
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
346
340
|
const random = Math.random().toString(36).slice(2, 8);
|
|
@@ -602,8 +596,6 @@ async function gcRunRecords(deps = {}, options = {}) {
|
|
|
602
596
|
const jsonPath = resolveRunRecordPath(record.runId, deps.env, deps.homedir);
|
|
603
597
|
const logPath = resolveRunLogPath(record.runId, deps.env, deps.homedir);
|
|
604
598
|
const queuePath = record.queuePath ?? resolveRunQueuePath(record.runId, deps.env, deps.homedir);
|
|
605
|
-
const reportPath = resolveRunReportPath(record.runId, deps.env, deps.homedir);
|
|
606
|
-
const reportJsonPath = resolveRunReportJsonPath(record.runId, deps.env, deps.homedir);
|
|
607
599
|
const msgPath = record.msgFile ?? join(resolveRunsDir(deps.env, deps.homedir), `${record.runId}.msg.md`);
|
|
608
600
|
const logOk = tryUnlinkFile(fs, logPath);
|
|
609
601
|
const msgOk = tryUnlinkFile(fs, msgPath);
|
|
@@ -617,8 +609,9 @@ async function gcRunRecords(deps = {}, options = {}) {
|
|
|
617
609
|
queueOk = false;
|
|
618
610
|
}
|
|
619
611
|
}
|
|
620
|
-
|
|
621
|
-
tryUnlinkFile(fs,
|
|
612
|
+
const runsDirForLegacy = resolveRunsDir(deps.env, deps.homedir);
|
|
613
|
+
tryUnlinkFile(fs, join(runsDirForLegacy, `${record.runId}.report.md`));
|
|
614
|
+
tryUnlinkFile(fs, join(runsDirForLegacy, `${record.runId}.report.json`));
|
|
622
615
|
if (!logOk || !msgOk || !queueOk) {
|
|
623
616
|
failedIds.push(record.runId);
|
|
624
617
|
continue;
|
|
@@ -897,21 +890,60 @@ function releaseRunRecordAck(runId, token, deps = {}) {
|
|
|
897
890
|
writeRunRecord(record, deps);
|
|
898
891
|
});
|
|
899
892
|
}
|
|
900
|
-
function
|
|
901
|
-
withRunRecordLock(runId, deps, () => {
|
|
902
|
-
const
|
|
903
|
-
if (!
|
|
893
|
+
function transitionRunToTerminal(runId, update, deps = {}, options = {}) {
|
|
894
|
+
const settled = withRunRecordLock(runId, deps, () => {
|
|
895
|
+
const record2 = readRunRecord(runId, deps);
|
|
896
|
+
if (!record2) return { kind: "not_found" };
|
|
897
|
+
const orphanCorrection = options.allowOverOrphaned === true && record2.status === "orphaned" && (update.status === "done" || update.status === "failed");
|
|
898
|
+
if (isAgentRunTerminalStatus(record2.status) && !orphanCorrection) {
|
|
899
|
+
return { kind: "kept", record: record2 };
|
|
900
|
+
}
|
|
904
901
|
const now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
905
|
-
|
|
906
|
-
if (typeof update.exitCode === "number")
|
|
907
|
-
if (update.dialogId)
|
|
902
|
+
record2.status = update.status;
|
|
903
|
+
if (typeof update.exitCode === "number") record2.exitCode = update.exitCode;
|
|
904
|
+
if (update.dialogId) record2.dialogId = update.dialogId;
|
|
908
905
|
if (typeof update.credits === "number" && Number.isFinite(update.credits)) {
|
|
909
|
-
|
|
906
|
+
record2.credits = update.credits;
|
|
910
907
|
}
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
908
|
+
if (update.dodResults && update.dodResults.length > 0) {
|
|
909
|
+
record2.dodResults = update.dodResults;
|
|
910
|
+
}
|
|
911
|
+
record2.endedAt = now().toISOString();
|
|
912
|
+
if (typeof update.note === "string" && update.note.trim()) {
|
|
913
|
+
record2.note = update.note.trim();
|
|
914
|
+
}
|
|
915
|
+
if (record2.note?.startsWith("orphaned:")) record2.note = void 0;
|
|
916
|
+
writeRunRecord(record2, deps);
|
|
917
|
+
return { kind: "transitioned", record: record2 };
|
|
918
|
+
}, { strict: true });
|
|
919
|
+
if (settled !== void 0) return settled;
|
|
920
|
+
const record = readRunRecord(runId, deps);
|
|
921
|
+
if (!record) return { kind: "not_found" };
|
|
922
|
+
if (isAgentRunTerminalStatus(record.status)) return { kind: "kept", record };
|
|
923
|
+
return { kind: "contended", record };
|
|
924
|
+
}
|
|
925
|
+
var AUTHORITATIVE_SETTLE_MAX_ATTEMPTS = 4;
|
|
926
|
+
var AUTHORITATIVE_SETTLE_RETRY_DELAY_MS = 15;
|
|
927
|
+
async function settleRunTerminalAuthoritatively(runId, update, deps = {}, transition = transitionRunToTerminal) {
|
|
928
|
+
const attempt = () => transition(runId, update, deps, { allowOverOrphaned: true });
|
|
929
|
+
let result = attempt();
|
|
930
|
+
for (let attemptNo = 1; result?.kind === "contended" && attemptNo < AUTHORITATIVE_SETTLE_MAX_ATTEMPTS; attemptNo += 1) {
|
|
931
|
+
await (deps.sleep ?? defaultSleep)(AUTHORITATIVE_SETTLE_RETRY_DELAY_MS);
|
|
932
|
+
result = attempt();
|
|
933
|
+
}
|
|
934
|
+
if (result?.kind === "contended") {
|
|
935
|
+
console.error(
|
|
936
|
+
`[nolo] authoritative settlement for run ${runId} lost the record lock ${AUTHORITATIVE_SETTLE_MAX_ATTEMPTS} times; durable record still ${result.record.status} \u2014 terminal status pending reconcile, child outcome (exitCode/dialogId/credits/DoD) may be lost`
|
|
937
|
+
);
|
|
938
|
+
} else if (result?.kind === "kept" && result.record.status !== update.status) {
|
|
939
|
+
console.warn(
|
|
940
|
+
`[nolo] run ${runId} already terminal (${result.record.status}); keeping the durable outcome over intended ${update.status}`
|
|
941
|
+
);
|
|
942
|
+
}
|
|
943
|
+
return result ?? { kind: "not_found" };
|
|
944
|
+
}
|
|
945
|
+
function finalizeRunRecord(runId, update, deps = {}) {
|
|
946
|
+
transitionRunToTerminal(runId, update, deps);
|
|
915
947
|
}
|
|
916
948
|
function isPidGone(pid, deps = {}) {
|
|
917
949
|
const kill = deps.kill ?? ((p, s) => process.kill(p, s));
|
|
@@ -1349,12 +1381,18 @@ async function runSignalCommand(args, signal, verb, deps) {
|
|
|
1349
1381
|
`);
|
|
1350
1382
|
return 1;
|
|
1351
1383
|
}
|
|
1352
|
-
|
|
1353
|
-
|
|
1384
|
+
const reconciled = checkStaleRun(record.runId, deps) ?? record;
|
|
1385
|
+
if (isAgentRunTerminalStatus(reconciled.status)) {
|
|
1386
|
+
deps.output.write(`Run ${reconciled.runId} is already ${reconciled.status}.
|
|
1387
|
+
`);
|
|
1388
|
+
return 0;
|
|
1389
|
+
}
|
|
1390
|
+
if (typeof reconciled.pid !== "number") {
|
|
1391
|
+
deps.output.write(`Run has no pid: ${reconciled.runId}
|
|
1354
1392
|
`);
|
|
1355
1393
|
return 1;
|
|
1356
1394
|
}
|
|
1357
|
-
const confirmed = await terminateRunProcess(
|
|
1395
|
+
const confirmed = await terminateRunProcess(reconciled, signal, deps);
|
|
1358
1396
|
if (!confirmed) {
|
|
1359
1397
|
deps.output.write(
|
|
1360
1398
|
`Failed to ${verb} ${record.runId} (pid ${record.pid}): process still alive after SIGKILL.
|
|
@@ -1362,9 +1400,10 @@ async function runSignalCommand(args, signal, verb, deps) {
|
|
|
1362
1400
|
);
|
|
1363
1401
|
return 1;
|
|
1364
1402
|
}
|
|
1365
|
-
|
|
1403
|
+
const transition = transitionRunToTerminal(reconciled.runId, { status: "killed" }, deps);
|
|
1366
1404
|
deps.output.write(
|
|
1367
|
-
`Stopped ${
|
|
1405
|
+
transition.kind === "contended" ? `Stopped ${reconciled.runId} (pid ${reconciled.pid}): process group confirmed gone; terminal status pending reconcile.
|
|
1406
|
+
` : `Stopped ${reconciled.runId} (pid ${reconciled.pid}): process group confirmed gone.
|
|
1368
1407
|
`
|
|
1369
1408
|
);
|
|
1370
1409
|
return 0;
|
|
@@ -1404,8 +1443,6 @@ export {
|
|
|
1404
1443
|
popAllQueueEntries,
|
|
1405
1444
|
popSingleQueueMessage,
|
|
1406
1445
|
popQueueMessages,
|
|
1407
|
-
resolveRunReportPath,
|
|
1408
|
-
resolveRunReportJsonPath,
|
|
1409
1446
|
defaultGenerateRunId,
|
|
1410
1447
|
defaultGenerateBatchId,
|
|
1411
1448
|
writeRunRecord,
|
|
@@ -1432,6 +1469,10 @@ export {
|
|
|
1432
1469
|
claimRunRecord,
|
|
1433
1470
|
commitRunRecordClaim,
|
|
1434
1471
|
releaseRunRecordAck,
|
|
1472
|
+
transitionRunToTerminal,
|
|
1473
|
+
AUTHORITATIVE_SETTLE_MAX_ATTEMPTS,
|
|
1474
|
+
AUTHORITATIVE_SETTLE_RETRY_DELAY_MS,
|
|
1475
|
+
settleRunTerminalAuthoritatively,
|
|
1435
1476
|
finalizeRunRecord,
|
|
1436
1477
|
isPidGone,
|
|
1437
1478
|
defaultGetProcessStartTime,
|