charness 3.8.0 → 3.9.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/CHANGELOG.md +12 -0
- package/DEVELOPMENT.md +3 -1
- package/SETUP.md +4 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -5
- package/dist/cli.js.map +1 -1
- package/dist/connectors/jira/inbound.d.ts +25 -1
- package/dist/connectors/jira/inbound.d.ts.map +1 -1
- package/dist/connectors/jira/inbound.js +74 -2
- package/dist/connectors/jira/inbound.js.map +1 -1
- package/dist/connectors/jira/issueContext.d.ts +11 -2
- package/dist/connectors/jira/issueContext.d.ts.map +1 -1
- package/dist/connectors/jira/issueContext.js +22 -2
- package/dist/connectors/jira/issueContext.js.map +1 -1
- package/dist/connectors/jira/prompt.d.ts +12 -2
- package/dist/connectors/jira/prompt.d.ts.map +1 -1
- package/dist/connectors/jira/prompt.js +59 -5
- package/dist/connectors/jira/prompt.js.map +1 -1
- package/dist/connectors/telegram/commands/runners.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/runners.js +64 -26
- package/dist/connectors/telegram/commands/runners.js.map +1 -1
- package/dist/connectors/telegram/runnerPairingMessages.d.ts +7 -5
- package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -1
- package/dist/connectors/telegram/runnerPairingMessages.js +17 -10
- package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -1
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/de.js +6 -4
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +6 -4
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +6 -4
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +6 -4
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +6 -4
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +6 -4
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +6 -4
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +6 -4
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +6 -4
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +6 -4
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +6 -4
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +6 -4
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/remoteRun/pairedRunners.js +1 -1
- package/dist/remoteRun/pairedRunners.js.map +1 -1
- package/dist/remoteRun/runnerSummary.js +1 -1
- package/dist/remoteRun/runnerSummary.js.map +1 -1
- package/dist/remoteRun/runners.d.ts +8 -1
- package/dist/remoteRun/runners.d.ts.map +1 -1
- package/dist/remoteRun/runners.js +14 -2
- package/dist/remoteRun/runners.js.map +1 -1
- package/dist/remoteRun/runnersConfig.d.ts +2 -0
- package/dist/remoteRun/runnersConfig.d.ts.map +1 -1
- package/dist/remoteRun/runnersConfig.js.map +1 -1
- package/dist/requests/requestHeader.d.ts +2 -1
- package/dist/requests/requestHeader.d.ts.map +1 -1
- package/dist/requests/requestHeader.js +6 -2
- package/dist/requests/requestHeader.js.map +1 -1
- package/dist/requests/storedPromptRefresh.d.ts +16 -0
- package/dist/requests/storedPromptRefresh.d.ts.map +1 -0
- package/dist/requests/storedPromptRefresh.js +36 -0
- package/dist/requests/storedPromptRefresh.js.map +1 -0
- package/dist/runnerUtility/adminCheck.d.ts +7 -0
- package/dist/runnerUtility/adminCheck.d.ts.map +1 -1
- package/dist/runnerUtility/adminCheck.js +5 -4
- package/dist/runnerUtility/adminCheck.js.map +1 -1
- package/dist/runnerUtility/adminService.d.ts +22 -0
- package/dist/runnerUtility/adminService.d.ts.map +1 -0
- package/dist/runnerUtility/adminService.js +145 -0
- package/dist/runnerUtility/adminService.js.map +1 -0
- package/dist/runnerUtility/hubClient.d.ts +2 -2
- package/dist/runnerUtility/hubClient.d.ts.map +1 -1
- package/dist/runnerUtility/hubClient.js +1 -1
- package/dist/runnerUtility/hubClient.js.map +1 -1
- package/dist/runnerUtility/linkLoop.d.ts +0 -8
- package/dist/runnerUtility/linkLoop.d.ts.map +1 -1
- package/dist/runnerUtility/linkLoop.js +3 -10
- package/dist/runnerUtility/linkLoop.js.map +1 -1
- package/dist/runnerUtility/pairArgs.d.ts +16 -0
- package/dist/runnerUtility/pairArgs.d.ts.map +1 -0
- package/dist/runnerUtility/pairArgs.js +17 -0
- package/dist/runnerUtility/pairArgs.js.map +1 -0
- package/dist/runnerUtility/rootServiceCli.d.ts +8 -0
- package/dist/runnerUtility/rootServiceCli.d.ts.map +1 -0
- package/dist/runnerUtility/rootServiceCli.js +31 -0
- package/dist/runnerUtility/rootServiceCli.js.map +1 -0
- package/dist/runnerUtility/runnerCli.js +29 -23
- package/dist/runnerUtility/runnerCli.js.map +1 -1
- package/dist/runnerUtility/runnerCommands.d.ts +13 -4
- package/dist/runnerUtility/runnerCommands.d.ts.map +1 -1
- package/dist/runnerUtility/runnerCommands.js +58 -12
- package/dist/runnerUtility/runnerCommands.js.map +1 -1
- package/dist/runnerUtility/serviceCommon.d.ts +97 -0
- package/dist/runnerUtility/serviceCommon.d.ts.map +1 -0
- package/dist/runnerUtility/serviceCommon.js +209 -0
- package/dist/runnerUtility/serviceCommon.js.map +1 -0
- package/dist/runnerUtility/serviceManager.d.ts +14 -17
- package/dist/runnerUtility/serviceManager.d.ts.map +1 -1
- package/dist/runnerUtility/serviceManager.js +132 -201
- package/dist/runnerUtility/serviceManager.js.map +1 -1
- package/dist/runnerUtility/serviceUnits.d.ts +3 -1
- package/dist/runnerUtility/serviceUnits.d.ts.map +1 -1
- package/dist/runnerUtility/serviceUnits.js +26 -6
- package/dist/runnerUtility/serviceUnits.js.map +1 -1
- package/dist/runners/bootstrapLine.d.ts +10 -1
- package/dist/runners/bootstrapLine.d.ts.map +1 -1
- package/dist/runners/bootstrapLine.js +102 -17
- package/dist/runners/bootstrapLine.js.map +1 -1
- package/dist/runners/gate.d.ts.map +1 -1
- package/dist/runners/gate.js +9 -0
- package/dist/runners/gate.js.map +1 -1
- package/dist/runners/gateProtocol.d.ts +7 -1
- package/dist/runners/gateProtocol.d.ts.map +1 -1
- package/dist/runners/gateProtocol.js +5 -3
- package/dist/runners/gateProtocol.js.map +1 -1
- package/dist/runners/hubPairing.d.ts +7 -0
- package/dist/runners/hubPairing.d.ts.map +1 -1
- package/dist/runners/hubPairing.js +16 -0
- package/dist/runners/hubPairing.js.map +1 -1
- package/dist/runners/hubPaths.d.ts +4 -0
- package/dist/runners/hubPaths.d.ts.map +1 -1
- package/dist/runners/hubPaths.js +2 -0
- package/dist/runners/hubPaths.js.map +1 -1
- package/dist/runners/hubRegistry.d.ts +23 -1
- package/dist/runners/hubRegistry.d.ts.map +1 -1
- package/dist/runners/hubRegistry.js +48 -2
- package/dist/runners/hubRegistry.js.map +1 -1
- package/dist/runners/linkControl.d.ts +12 -1
- package/dist/runners/linkControl.d.ts.map +1 -1
- package/dist/runners/linkControl.js +56 -9
- package/dist/runners/linkControl.js.map +1 -1
- package/dist/runners/removalTiming.d.ts +13 -0
- package/dist/runners/removalTiming.d.ts.map +1 -0
- package/dist/runners/removalTiming.js +17 -0
- package/dist/runners/removalTiming.js.map +1 -0
- package/dist/runners/runnerRemoval.d.ts.map +1 -1
- package/dist/runners/runnerRemoval.js +12 -0
- package/dist/runners/runnerRemoval.js.map +1 -1
- package/dist/runners/runnerServiceKind.d.ts +10 -0
- package/dist/runners/runnerServiceKind.d.ts.map +1 -0
- package/dist/runners/runnerServiceKind.js +13 -0
- package/dist/runners/runnerServiceKind.js.map +1 -0
- package/dist/runners/runnersCli.d.ts +11 -2
- package/dist/runners/runnersCli.d.ts.map +1 -1
- package/dist/runners/runnersCli.js +39 -14
- package/dist/runners/runnersCli.js.map +1 -1
- package/dist/runners/runnersList.d.ts +6 -9
- package/dist/runners/runnersList.d.ts.map +1 -1
- package/dist/runners/runnersList.js +9 -7
- package/dist/runners/runnersList.js.map +1 -1
- package/dist/runners/runnersOverview.d.ts.map +1 -1
- package/dist/runners/runnersOverview.js +2 -1
- package/dist/runners/runnersOverview.js.map +1 -1
- package/dist/selfUpdate/selfCheck.d.ts +13 -0
- package/dist/selfUpdate/selfCheck.d.ts.map +1 -1
- package/dist/selfUpdate/selfCheck.js +9 -3
- package/dist/selfUpdate/selfCheck.js.map +1 -1
- package/dist/stt/sttInstallEntry.js +7 -4
- package/dist/stt/sttInstallEntry.js.map +1 -1
- package/dist/utils/runnersScreenPlan.d.ts +18 -7
- package/dist/utils/runnersScreenPlan.d.ts.map +1 -1
- package/dist/utils/runnersScreenPlan.js +22 -7
- package/dist/utils/runnersScreenPlan.js.map +1 -1
- package/package.json +1 -1
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.probeAllTimeoutMs = void 0;
|
|
37
37
|
exports.readLastProbe = readLastProbe;
|
|
38
|
+
exports.removeLastProbe = removeLastProbe;
|
|
38
39
|
exports.probeRunner = probeRunner;
|
|
39
40
|
exports.probeRunners = probeRunners;
|
|
40
41
|
exports.formatRunnersView = formatRunnersView;
|
|
@@ -60,17 +61,28 @@ const millisecondsPerSecond = 1000;
|
|
|
60
61
|
function getStoredProbePath(cacheDir, runnerName) {
|
|
61
62
|
return path.join(cacheDir, `${runnerName}${probeFileSuffix}`);
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
/**
|
|
65
|
+
* @description The last report of runner `runnerName`, `null` if there is none. The file is named by the runner's NAME, and a name outlives
|
|
66
|
+
* the machine: one that was removed hands it on to the next that gets it. A paired runner therefore passes the moment it was paired as
|
|
67
|
+
* `notBeforeMs`, and a report taken before that is not its own and is not read.
|
|
68
|
+
*/
|
|
69
|
+
function readLastProbe(cacheDir, runnerName, notBeforeMs = 0) {
|
|
64
70
|
try {
|
|
65
71
|
const stored = JSON.parse(fs.readFileSync(getStoredProbePath(cacheDir, runnerName), 'utf8'));
|
|
66
72
|
if (typeof stored.seenAtMs !== 'number' || typeof stored.text !== 'string')
|
|
67
73
|
return null;
|
|
74
|
+
if (stored.seenAtMs < notBeforeMs)
|
|
75
|
+
return null;
|
|
68
76
|
return { seenAtMs: stored.seenAtMs, probe: (0, probe_1.parseProbeOutput)(stored.text) };
|
|
69
77
|
}
|
|
70
78
|
catch {
|
|
71
79
|
return null;
|
|
72
80
|
}
|
|
73
81
|
}
|
|
82
|
+
/** @description Forget the last report of `runnerName` (a removed runner's: the name is free for the next machine). A report that is not there is nothing to forget. */
|
|
83
|
+
function removeLastProbe(cacheDir, runnerName) {
|
|
84
|
+
fs.rmSync(getStoredProbePath(cacheDir, runnerName), { force: true });
|
|
85
|
+
}
|
|
74
86
|
function writeLastProbe(cacheDir, runnerName, text, seenAtMs) {
|
|
75
87
|
const stored = { seenAtMs, text };
|
|
76
88
|
fs.writeFileSync(getStoredProbePath(cacheDir, runnerName), JSON.stringify(stored), { mode: 0o600 });
|
|
@@ -85,7 +97,7 @@ async function probeRunner(client, nowMs = Date.now(), signal, deadlineMs = expo
|
|
|
85
97
|
const groupLimits = { ...(runner.groups ?? {}) };
|
|
86
98
|
const isPausedByHub = runner.paired?.isPausedByHub ?? false;
|
|
87
99
|
const offline = (reason, linkLastSeenMs = null) => {
|
|
88
|
-
const last = readLastProbe(client.cacheDir, runner.name);
|
|
100
|
+
const last = readLastProbe(client.cacheDir, runner.name, runner.paired?.pairedAtMs);
|
|
89
101
|
return {
|
|
90
102
|
name: runner.name,
|
|
91
103
|
status: 'offline',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/remoteRun/runners.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/remoteRun/runners.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,sCASC;AAGD,0CAEC;AAYD,kCAgCC;AAOD,oCASC;AAKD,8CAEC;AA4BD,gCAqBC;AAOD,oDAIC;AAGD,0CAIC;AA/LD,uCAAyB;AACzB,2CAA6B;AAC7B,wDAA6D;AAC7D,mCAQiB;AACjB,qDAA0E;AAC1E,2CAAiD;AACjD,iDAA2F;AAG3F;;;;GAIG;AAEH,oIAAoI;AACvH,QAAA,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAQnC,SAAS,kBAAkB,CAAC,QAAgB,EAAE,UAAkB;IAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,eAAe,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,UAAkB,EAAE,cAAsB,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,MAAM,GAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1G,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACxF,IAAI,MAAM,CAAC,QAAQ,GAAG,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAA,wBAAgB,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,wKAAwK;AACxK,SAAgB,eAAe,CAAC,QAAgB,EAAE,UAAkB;IAClE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,IAAY,EAAE,QAAgB;IAC1F,MAAM,MAAM,GAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,MAAoB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,MAAoB,EAAE,aAAqB,yBAAiB;IAC9I,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,WAAW,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI,KAAK,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,iBAAgC,IAAI,EAAgB,EAAE;QACrF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAClH,qIAAqI;YACrI,YAAY,EAAE,cAAc,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI;YACtD,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI;YAC9B,WAAW;YACX,aAAa;SACd,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,iIAAiI;QACjI,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,iCAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uCAAsB;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,IAAA,iCAAkB,EAAC,MAAM,CAAC,CAAC,CAAC;IACtE,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAA,wBAAgB,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AACrH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,OAAgC,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,aAAqB,yBAAiB,EAAE,IAAkB;IACzJ,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAID,oEAAoE;AACpE,SAAgB,iBAAiB,CAAC,OAAgC;IAChE,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,aAAa,CAAC,MAAoB;IACzC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAA,2BAAmB,EAAC,MAAM,CAAC,CAAC;AAC1G,CAAC;AAED,uFAAuF;AACvF,SAAS,aAAa,CAAC,MAAoB;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3E,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,4CAA4C,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,gKAAgK;AAChK,SAAS,qBAAqB,CAAC,OAAgC,EAAE,KAA8B;IAC7F,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CAAC,CAAC,MAAM,EAAyD,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,IAAA,2BAAmB,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACzO,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,MAAqB,EAAE,OAAgC,EAAE,MAAiE;IACnJ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,oBAAoB,MAAM,CAAC,MAAM,kBAAkB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAClL,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,MAAM,MAAM,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/L,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,MAAM,8DAA8D,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QAChO,IAAI,IAAA,2BAAmB,EAAC,MAAM,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,MAAM,eAAe,aAAa,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QACpM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,KAAK,MAAM,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9J,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAAE,SAAS;QAC7D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5H,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,KAAK,GAAG,CAAC;IAC3G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAChK,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAqB,EAAE,KAAoB,EAAE,cAA6B;IAC7G,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxF,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,2CAA2C,cAAc,0GAA0G,EAAE,CAAC;AACzM,CAAC;AAED,oHAAoH;AACpH,SAAgB,eAAe,CAAC,MAAqB,EAAE,UAAkB;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACjF,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,+BAAc,CAAC,8BAA8B,UAAU,gFAAgF,CAAC,CAAC;IAC7K,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -30,6 +30,8 @@ export interface PairedRunnerLink {
|
|
|
30
30
|
isPausedByHub: boolean;
|
|
31
31
|
/** The OS the runner reported at pairing (`macOS 15.1`) — text from the runner machine, to be cleaned before it is shown to an agent. */
|
|
32
32
|
os: string;
|
|
33
|
+
/** When it was paired: a saved report of its name older than this belongs to an earlier machine of that name (`readLastProbe`). */
|
|
34
|
+
pairedAtMs: number;
|
|
33
35
|
}
|
|
34
36
|
/** @name RunnerConfig @description One runner: an entry of the file, or a paired runner built from the hub's registry. */
|
|
35
37
|
export type RunnerConfig = z.infer<typeof runnerSchema> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runnersConfig.d.ts","sourceRoot":"","sources":["../../src/remoteRun/runnersConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAkB/E,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,QAA+B,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,uHAAuH;AACvH,eAAO,MAAM,mBAAmB,aAA2K,CAAC;AAE5M,QAAA,MAAM,YAAY;;;;;;;;;;kBAOhB,CAAC;AAMH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mIAAmI;IACnI,MAAM,EAAE,MAAM,CAAC;IACf,2HAA2H;IAC3H,aAAa,EAAE,OAAO,CAAC;IACvB,yIAAyI;IACzI,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"runnersConfig.d.ts","sourceRoot":"","sources":["../../src/remoteRun/runnersConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAkB/E,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,QAA+B,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,uHAAuH;AACvH,eAAO,MAAM,mBAAmB,aAA2K,CAAC;AAE5M,QAAA,MAAM,YAAY;;;;;;;;;;kBAOhB,CAAC;AAMH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mIAAmI;IACnI,MAAM,EAAE,MAAM,CAAC;IACf,2HAA2H;IAC3H,aAAa,EAAE,OAAO,CAAC;IACvB,yIAAyI;IACzI,EAAE,EAAE,MAAM,CAAC;IACX,mIAAmI;IACnI,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,0HAA0H;AAC1H,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC;AACxF,kJAAkJ;AAClJ,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,qJAAqJ;AACrJ,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAE3E;AAYD,8KAA8K;AAC9K,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,CAEnF;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAqB,GAAG,cAAc,CAAC,aAAa,CAAC,CAE/F;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,0NAA0N;AAC1N,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAExE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runnersConfig.js","sourceRoot":"","sources":["../../src/remoteRun/runnersConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runnersConfig.js","sourceRoot":"","sources":["../../src/remoteRun/runnersConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,8 @@ export interface WakeUpMessage {
|
|
|
43
43
|
/**
|
|
44
44
|
* @description The request's own prompt while the session never took it in — its
|
|
45
45
|
* post failed, a restart came first, a usage-limit wait held it (R21); `undefined`
|
|
46
|
-
* once it was taken in, or when the request keeps no prompt.
|
|
46
|
+
* once it was taken in, or when the request keeps no prompt. Brought up to date as it is read
|
|
47
|
+
* (`refreshStoredPrompt`): it may have waited hours.
|
|
47
48
|
*/
|
|
48
49
|
export declare function getPromptNotTakenIn(request: OpenRequestState | null | undefined): string | undefined;
|
|
49
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHeader.d.ts","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requestHeader.d.ts","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,yGAAyG;AACzG,wBAAgB,2BAA2B,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM3F;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAaxE;AAUD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGpG;AAKD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAItG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,MAAM,CAQvG"}
|
|
@@ -7,6 +7,7 @@ exports.joinPromptsNotTakenIn = joinPromptsNotTakenIn;
|
|
|
7
7
|
exports.getWakeUpMessage = getWakeUpMessage;
|
|
8
8
|
exports.buildWakeUpReminder = buildWakeUpReminder;
|
|
9
9
|
const answerStyle_1 = require("./answerStyle");
|
|
10
|
+
const storedPromptRefresh_1 = require("./storedPromptRefresh");
|
|
10
11
|
/** @description The header's line naming the requests this one replaced; empty when it replaced none. */
|
|
11
12
|
function buildSupersededRequestsLine(supersededRequestIds) {
|
|
12
13
|
if (supersededRequestIds.length === 0)
|
|
@@ -42,10 +43,13 @@ const wakeUpReasonLines = {
|
|
|
42
43
|
/**
|
|
43
44
|
* @description The request's own prompt while the session never took it in — its
|
|
44
45
|
* post failed, a restart came first, a usage-limit wait held it (R21); `undefined`
|
|
45
|
-
* once it was taken in, or when the request keeps no prompt.
|
|
46
|
+
* once it was taken in, or when the request keeps no prompt. Brought up to date as it is read
|
|
47
|
+
* (`refreshStoredPrompt`): it may have waited hours.
|
|
46
48
|
*/
|
|
47
49
|
function getPromptNotTakenIn(request) {
|
|
48
|
-
|
|
50
|
+
if (request?.isPromptTakenIn === true || request?.prompt === undefined)
|
|
51
|
+
return undefined;
|
|
52
|
+
return (0, storedPromptRefresh_1.refreshStoredPrompt)(request.prompt);
|
|
49
53
|
}
|
|
50
54
|
/** Between two requests' prompts re-posted in one message (each prompt ends with its own text, not a blank line). */
|
|
51
55
|
const joinedPromptsSeparator = '\n\n';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHeader.js","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"requestHeader.js","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A request's prompt is stored when the request opens (R21), and may be delivered hours later — behind a
|
|
3
|
+
* running turn, through a usage-limit wait, in a wake-up's resend. A connector whose prompt says something that can
|
|
4
|
+
* change in the meantime (the Jira mention note names the hand-over requests that are open) registers ONE refresher: it
|
|
5
|
+
* gets a stored prompt as it is about to be delivered and returns the text to deliver instead — the same text when it
|
|
6
|
+
* knows nothing better, which is every prompt it did not build itself. Every place that turns a stored prompt into
|
|
7
|
+
* delivered text goes through {@link refreshStoredPrompt}.
|
|
8
|
+
*/
|
|
9
|
+
export type StoredPromptRefresher = (promptText: string) => string;
|
|
10
|
+
/** @description Register `refresher`, replacing the previous one (a process has one connector that needs it). */
|
|
11
|
+
export declare function setStoredPromptRefresher(refresher: StoredPromptRefresher): void;
|
|
12
|
+
/** @description Drop `refresher` — only when it is still the registered one, so a stopped older connector never removes a newer one's. */
|
|
13
|
+
export declare function clearStoredPromptRefresher(refresher: StoredPromptRefresher): void;
|
|
14
|
+
/** @description `promptText` as it should be delivered now. Never throws: a refresher that fails leaves the stored text. */
|
|
15
|
+
export declare function refreshStoredPrompt(promptText: string): string;
|
|
16
|
+
//# sourceMappingURL=storedPromptRefresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storedPromptRefresh.d.ts","sourceRoot":"","sources":["../../src/requests/storedPromptRefresh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;AAInE,iHAAiH;AACjH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAE/E;AAED,0IAA0I;AAC1I,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAEjF;AAED,4HAA4H;AAC5H,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ9D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description A request's prompt is stored when the request opens (R21), and may be delivered hours later — behind a
|
|
4
|
+
* running turn, through a usage-limit wait, in a wake-up's resend. A connector whose prompt says something that can
|
|
5
|
+
* change in the meantime (the Jira mention note names the hand-over requests that are open) registers ONE refresher: it
|
|
6
|
+
* gets a stored prompt as it is about to be delivered and returns the text to deliver instead — the same text when it
|
|
7
|
+
* knows nothing better, which is every prompt it did not build itself. Every place that turns a stored prompt into
|
|
8
|
+
* delivered text goes through {@link refreshStoredPrompt}.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.setStoredPromptRefresher = setStoredPromptRefresher;
|
|
12
|
+
exports.clearStoredPromptRefresher = clearStoredPromptRefresher;
|
|
13
|
+
exports.refreshStoredPrompt = refreshStoredPrompt;
|
|
14
|
+
let currentRefresher = null;
|
|
15
|
+
/** @description Register `refresher`, replacing the previous one (a process has one connector that needs it). */
|
|
16
|
+
function setStoredPromptRefresher(refresher) {
|
|
17
|
+
currentRefresher = refresher;
|
|
18
|
+
}
|
|
19
|
+
/** @description Drop `refresher` — only when it is still the registered one, so a stopped older connector never removes a newer one's. */
|
|
20
|
+
function clearStoredPromptRefresher(refresher) {
|
|
21
|
+
if (currentRefresher === refresher)
|
|
22
|
+
currentRefresher = null;
|
|
23
|
+
}
|
|
24
|
+
/** @description `promptText` as it should be delivered now. Never throws: a refresher that fails leaves the stored text. */
|
|
25
|
+
function refreshStoredPrompt(promptText) {
|
|
26
|
+
if (!currentRefresher)
|
|
27
|
+
return promptText;
|
|
28
|
+
try {
|
|
29
|
+
return currentRefresher(promptText);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.warn(`[storedPromptRefresh] kept the stored prompt: ${error instanceof Error ? error.message : String(error)}`);
|
|
33
|
+
return promptText;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=storedPromptRefresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storedPromptRefresh.js","sourceRoot":"","sources":["../../src/requests/storedPromptRefresh.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAOH,4DAEC;AAGD,gEAEC;AAGD,kDAQC;AArBD,IAAI,gBAAgB,GAAiC,IAAI,CAAC;AAE1D,iHAAiH;AACjH,SAAgB,wBAAwB,CAAC,SAAgC;IACvE,gBAAgB,GAAG,SAAS,CAAC;AAC/B,CAAC;AAED,0IAA0I;AAC1I,SAAgB,0BAA0B,CAAC,SAAgC;IACzE,IAAI,gBAAgB,KAAK,SAAS;QAAE,gBAAgB,GAAG,IAAI,CAAC;AAC9D,CAAC;AAED,4HAA4H;AAC5H,SAAgB,mBAAmB,CAAC,UAAkB;IACpD,IAAI,CAAC,gBAAgB;QAAE,OAAO,UAAU,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxH,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Is the account that runs the jobs an admin one? The agents' code runs with its rights, so a runner on an account that can
|
|
3
|
+
* `sudo` (or is root) gets a warning at pairing: make a standard user for it. macOS: member of the `admin` group; Linux: uid 0 or a
|
|
4
|
+
* member of `sudo`, `wheel` or `admin`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const linuxAdminGroups: readonly string[];
|
|
7
|
+
export declare const macAdminGroup = "admin";
|
|
1
8
|
export interface AccountFacts {
|
|
2
9
|
platform: NodeJS.Platform;
|
|
3
10
|
uid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminCheck.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/adminCheck.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adminCheck.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/adminCheck.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAA+B,CAAC;AAC9E,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAGlE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAG5C;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAE/C;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAKhE"}
|
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.macAdminGroup = exports.linuxAdminGroups = void 0;
|
|
36
37
|
exports.checkIsAdminAccount = checkIsAdminAccount;
|
|
37
38
|
exports.readAccountGroups = readAccountGroups;
|
|
38
39
|
exports.readAccountFacts = readAccountFacts;
|
|
@@ -44,12 +45,12 @@ const os = __importStar(require("os"));
|
|
|
44
45
|
* `sudo` (or is root) gets a warning at pairing: make a standard user for it. macOS: member of the `admin` group; Linux: uid 0 or a
|
|
45
46
|
* member of `sudo`, `wheel` or `admin`.
|
|
46
47
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
exports.linuxAdminGroups = ['sudo', 'wheel', 'admin'];
|
|
49
|
+
exports.macAdminGroup = 'admin';
|
|
49
50
|
function checkIsAdminAccount(account) {
|
|
50
51
|
if (account.platform === 'darwin')
|
|
51
|
-
return account.groups.includes(macAdminGroup);
|
|
52
|
-
return account.uid === 0 || account.groups.some((group) => linuxAdminGroups.includes(group));
|
|
52
|
+
return account.groups.includes(exports.macAdminGroup);
|
|
53
|
+
return account.uid === 0 || account.groups.some((group) => exports.linuxAdminGroups.includes(group));
|
|
53
54
|
}
|
|
54
55
|
/** @description The account's group names (`id -Gn`), empty when it cannot be asked. */
|
|
55
56
|
function readAccountGroups() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminCheck.js","sourceRoot":"","sources":["../../src/runnerUtility/adminCheck.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adminCheck.js","sourceRoot":"","sources":["../../src/runnerUtility/adminCheck.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,kDAGC;AAGD,8CAGC;AAED,4CAEC;AAED,gDAKC;AAtCD,iDAA0C;AAC1C,uCAAyB;AAEzB;;;;GAIG;AAEU,QAAA,gBAAgB,GAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjE,QAAA,aAAa,GAAG,OAAO,CAAC;AAQrC,SAAgB,mBAAmB,CAAC,OAAqB;IACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAa,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,wFAAwF;AACxF,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC7F,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,OAAO;QACL,MAAM,WAAW,oEAAoE;QACrF,4GAA4G;KAC7G,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type CommandRunner } from '../selfUpdate/commandRunner';
|
|
2
|
+
import { type ServiceResult, type TargetAccount } from './serviceCommon';
|
|
3
|
+
export interface AdminServiceDeps {
|
|
4
|
+
runner: CommandRunner;
|
|
5
|
+
platform: NodeJS.Platform;
|
|
6
|
+
/** The uid of this process: the step is root's. */
|
|
7
|
+
uid: number;
|
|
8
|
+
/** The folder of the `node` that runs this step: the daemons' `PATH` starts with it, like the account's own services. */
|
|
9
|
+
nodeDir: string;
|
|
10
|
+
/** Where LaunchDaemons live (`/Library/LaunchDaemons`; a test's own folder). */
|
|
11
|
+
launchDaemonsDir: string;
|
|
12
|
+
/** Give a definition to root:wheel without following a link (`fs.lchownSync`; a test is not root). */
|
|
13
|
+
giveToRoot: (filePath: string, uid: number, gid: number) => void;
|
|
14
|
+
/** Who the account is, from the passwd database (never from the account's files); `null` when there is no such account. */
|
|
15
|
+
resolveAccount: (name: string) => Promise<TargetAccount | null>;
|
|
16
|
+
/** Wait between two looks at a starting user manager (a test does not wait). */
|
|
17
|
+
sleep: (ms: number) => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createAdminServiceDeps(): AdminServiceDeps;
|
|
20
|
+
/** @description Install the always-on service of `accountName`, an account that is already paired. Needs root; touches nothing of the account's but through the account. */
|
|
21
|
+
export declare function installServiceForAccount(accountName: string, deps: AdminServiceDeps): Promise<ServiceResult>;
|
|
22
|
+
//# sourceMappingURL=adminService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminService.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/adminService.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EASL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AA6BzB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,yHAAyH;IACzH,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,sGAAsG;IACtG,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,2HAA2H;IAC3H,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAChE,gFAAgF;IAChF,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAWzD;AAkDD,4KAA4K;AAC5K,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOlH"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createAdminServiceDeps = createAdminServiceDeps;
|
|
37
|
+
exports.installServiceForAccount = installServiceForAccount;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const commandRunner_1 = require("../selfUpdate/commandRunner");
|
|
42
|
+
const serviceCommon_1 = require("./serviceCommon");
|
|
43
|
+
const runnerHome_1 = require("./runnerHome");
|
|
44
|
+
const serviceUnits_1 = require("./serviceUnits");
|
|
45
|
+
/**
|
|
46
|
+
* @description The ROOT step of the admin pairing line: install the always-on service of a runner account that the line has just paired.
|
|
47
|
+
* It runs from a root-owned copy of the package (`rootServiceCli.ts`, which has no dependencies — hence Node built-ins only here), never
|
|
48
|
+
* from the account's files: the account runs the agents' code, so root must not exec, read through or write into anything the account can
|
|
49
|
+
* change. Everything of the account's — Pueue, its configuration, the service record, the user service's own units — is therefore done by
|
|
50
|
+
* the account's OWN program run AS the account (`sudo -u <account> -H`); root only
|
|
51
|
+
*
|
|
52
|
+
* macOS writes the two LaunchDaemon definitions into `/Library/LaunchDaemons` (a folder only root can write), `chown`s them with
|
|
53
|
+
* `lchown`, and calls `launchctl`. The definitions are rendered here from the account's name and home alone — the account's
|
|
54
|
+
* answer to `system-step prepare` decides nothing about their text — and they run as the account (`UserName`), with no extra rights
|
|
55
|
+
* Linux switches lingering on for the account (`loginctl enable-linger`), waits for its user manager, and has the account install its
|
|
56
|
+
* own user service — the same install it would run itself
|
|
57
|
+
*
|
|
58
|
+
* An account's tree is read by nobody here, so a planted link in it reaches nothing of root's.
|
|
59
|
+
*/
|
|
60
|
+
/** The install run as the account starts two services and may wait for each. */
|
|
61
|
+
const installAsAccountTimeoutMs = 120 * 1000;
|
|
62
|
+
/** After `enable-linger` the user manager takes a moment to come up: it is asked once a second, for this many tries. */
|
|
63
|
+
const userManagerPollMs = 1000;
|
|
64
|
+
const userManagerPollAttempts = 20;
|
|
65
|
+
/** What `systemctl --user is-system-running` prints once the manager can take units (`degraded`: up, with some unit failed). */
|
|
66
|
+
const userManagerReadyStates = ['running', 'degraded'];
|
|
67
|
+
const freshLineText = 'paste a fresh admin line from /runners (it finds the account paired and only installs the service)';
|
|
68
|
+
function createAdminServiceDeps() {
|
|
69
|
+
return {
|
|
70
|
+
runner: commandRunner_1.runCommand,
|
|
71
|
+
platform: process.platform,
|
|
72
|
+
uid: os.userInfo().uid,
|
|
73
|
+
nodeDir: path.dirname(process.execPath),
|
|
74
|
+
launchDaemonsDir: '/Library/LaunchDaemons',
|
|
75
|
+
giveToRoot: fs.lchownSync,
|
|
76
|
+
resolveAccount: (name) => (process.platform === 'darwin' ? (0, serviceCommon_1.resolveMacAccount)(name, commandRunner_1.runCommand) : (0, serviceCommon_1.resolveLinuxAccount)(name, commandRunner_1.runCommand)),
|
|
77
|
+
sleep: (ms) => new Promise((resolve) => { setTimeout(resolve, ms); }),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** The arguments of `sudo` that run the account's own launcher AS the account. */
|
|
81
|
+
function asAccountArgs(account) {
|
|
82
|
+
return ['-u', account.name, '-H'];
|
|
83
|
+
}
|
|
84
|
+
async function installDaemons(account, deps) {
|
|
85
|
+
const paths = (0, runnerHome_1.getRunnerHomePaths)(account.homeDir);
|
|
86
|
+
const stepArgs = (step) => [...asAccountArgs(account), paths.launcher, 'service', 'system-step', step];
|
|
87
|
+
const prepared = await deps.runner('sudo', stepArgs('prepare'), { timeoutMs: installAsAccountTimeoutMs });
|
|
88
|
+
const answer = (0, serviceCommon_1.parseSystemStepAnswer)(prepared.stdout);
|
|
89
|
+
if (answer === null)
|
|
90
|
+
return (0, serviceCommon_1.fail)(`The account ${account.name} gave no answer to its preparation (${(0, commandRunner_1.getOutputTail)(prepared, 2) || 'no output'}).`);
|
|
91
|
+
if (!answer.ok)
|
|
92
|
+
return (0, serviceCommon_1.fail)(...answer.lines);
|
|
93
|
+
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
94
|
+
const accountJobs = (0, serviceUnits_1.planLaunchdJobs)(paths, names, account.name, deps.nodeDir, account.name);
|
|
95
|
+
const result = await (0, serviceCommon_1.installLaunchdJobs)({
|
|
96
|
+
runner: deps.runner,
|
|
97
|
+
domain: 'system',
|
|
98
|
+
files: (0, serviceCommon_1.getLaunchdFiles)(true, account.homeDir, names, deps.launchDaemonsDir),
|
|
99
|
+
names,
|
|
100
|
+
jobs: accountJobs,
|
|
101
|
+
hadService: answer.hadService,
|
|
102
|
+
isLogDirMade: false,
|
|
103
|
+
giveToRoot: deps.giveToRoot,
|
|
104
|
+
forgetFirstInstall: async () => { await deps.runner('sudo', stepArgs('abandon'), { timeoutMs: serviceCommon_1.commandTimeoutMs }); },
|
|
105
|
+
retryText: freshLineText,
|
|
106
|
+
render: serviceUnits_1.renderLaunchdPlist,
|
|
107
|
+
});
|
|
108
|
+
if (!result.ok)
|
|
109
|
+
return result;
|
|
110
|
+
return { ok: true, lines: [`Installed two LaunchDaemons (${names.launchdLink}, ${names.launchdPueued}) that run as ${account.name}: always on, also logged out.`] };
|
|
111
|
+
}
|
|
112
|
+
async function installUserServiceFor(account, deps) {
|
|
113
|
+
const paths = (0, runnerHome_1.getRunnerHomePaths)(account.homeDir);
|
|
114
|
+
const asAccount = [...asAccountArgs(account), 'env', `XDG_RUNTIME_DIR=/run/user/${account.uid}`];
|
|
115
|
+
const linger = await deps.runner('loginctl', ['enable-linger', account.name], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
116
|
+
if (!linger.ok)
|
|
117
|
+
return (0, serviceCommon_1.fail)(`\`loginctl enable-linger ${account.name}\` failed: ${(0, commandRunner_1.getOutputTail)(linger, 1) || 'no answer'}`);
|
|
118
|
+
for (let attempt = 1; attempt <= userManagerPollAttempts; attempt += 1) {
|
|
119
|
+
const state = await deps.runner('sudo', [...asAccount, 'systemctl', '--user', 'is-system-running'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
120
|
+
if (userManagerReadyStates.includes(state.stdout.trim()))
|
|
121
|
+
break;
|
|
122
|
+
if (attempt === userManagerPollAttempts)
|
|
123
|
+
return (0, serviceCommon_1.fail)(`The user manager of ${account.name} did not come up within ${(userManagerPollAttempts * userManagerPollMs) / 1000} s after lingering was switched on.`);
|
|
124
|
+
await deps.sleep(userManagerPollMs);
|
|
125
|
+
}
|
|
126
|
+
const installed = await deps.runner('sudo', [...asAccount, paths.launcher, 'service', 'install'], { timeoutMs: installAsAccountTimeoutMs });
|
|
127
|
+
const lines = installed.stdout.split('\n').map((line) => line.trim()).filter((line) => line !== '');
|
|
128
|
+
if (installed.ok)
|
|
129
|
+
return { ok: true, lines };
|
|
130
|
+
return (0, serviceCommon_1.fail)(...lines, ...(lines.length === 0 ? [(0, commandRunner_1.getOutputTail)(installed) || 'the install gave no output'] : []));
|
|
131
|
+
}
|
|
132
|
+
/** @description Install the always-on service of `accountName`, an account that is already paired. Needs root; touches nothing of the account's but through the account. */
|
|
133
|
+
async function installServiceForAccount(accountName, deps) {
|
|
134
|
+
if (deps.platform !== 'linux' && deps.platform !== 'darwin')
|
|
135
|
+
return (0, serviceCommon_1.fail)(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
|
|
136
|
+
if (deps.uid !== serviceCommon_1.rootUid)
|
|
137
|
+
return (0, serviceCommon_1.fail)('This step is root\'s: it is started by the admin pairing line from /runners, which asks for sudo.');
|
|
138
|
+
const account = await deps.resolveAccount(accountName);
|
|
139
|
+
if (account === null)
|
|
140
|
+
return (0, serviceCommon_1.fail)(`There is no account named «${accountName}», or its home folder cannot be read from the directory service.`);
|
|
141
|
+
if (account.uid === serviceCommon_1.rootUid)
|
|
142
|
+
return (0, serviceCommon_1.fail)('The service must run as a standard account, not as root.');
|
|
143
|
+
return deps.platform === 'darwin' ? installDaemons(account, deps) : installUserServiceFor(account, deps);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=adminService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminService.js","sourceRoot":"","sources":["../../src/runnerUtility/adminService.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,6 @@ export interface GateAnswer {
|
|
|
25
25
|
export declare function callGate(client: Client, request: GateRequest, body: string | null): Promise<GateAnswer | null>;
|
|
26
26
|
/** @description Everything the channel still sends, as text. */
|
|
27
27
|
export declare function readChannelText(channel: ClientChannel): Promise<string>;
|
|
28
|
-
/** @description A gate request whose answer is one JSON line (`redeem`, `identity`, `unpair`), parsed with `schema`. */
|
|
29
|
-
export declare function requestGateJson<TReply>(client: Client, request: 'redeem' | 'unpair' | 'identity', body: string | null, schema: z.ZodType<TReply>): Promise<TReply>;
|
|
28
|
+
/** @description A gate request whose answer is one JSON line (`redeem`, `cancel`, `identity`, `unpair`), parsed with `schema`. */
|
|
29
|
+
export declare function requestGateJson<TReply>(client: Client, request: 'redeem' | 'cancel' | 'unpair' | 'identity', body: string | null, schema: z.ZodType<TReply>): Promise<TReply>;
|
|
30
30
|
//# sourceMappingURL=hubClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubClient.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/hubClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAA+B,MAAM,MAAM,CAAC;AAC/E,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAuB,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAejG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAElE,kLAAkL;AAClL,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAE3B,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAK3D;AAiBD,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BvF;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,2FAA2F;IAC3F,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,oOAAoO;AACpO,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAkB9G;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7E;AAED,
|
|
1
|
+
{"version":3,"file":"hubClient.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/hubClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAA+B,MAAM,MAAM,CAAC;AAC/E,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAuB,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAejG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAElE,kLAAkL;AAClL,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAE3B,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAK3D;AAiBD,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BvF;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,2FAA2F;IAC3F,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,oOAAoO;AACpO,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAkB9G;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7E;AAED,kIAAkI;AAClI,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAanL"}
|
|
@@ -106,7 +106,7 @@ async function readChannelText(channel) {
|
|
|
106
106
|
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
107
107
|
return Buffer.concat(chunks).toString('utf8');
|
|
108
108
|
}
|
|
109
|
-
/** @description A gate request whose answer is one JSON line (`redeem`, `identity`, `unpair`), parsed with `schema`. */
|
|
109
|
+
/** @description A gate request whose answer is one JSON line (`redeem`, `cancel`, `identity`, `unpair`), parsed with `schema`. */
|
|
110
110
|
async function requestGateJson(client, request, body, schema) {
|
|
111
111
|
const answer = await callGate(client, request, body ?? '');
|
|
112
112
|
if (answer === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubClient.js","sourceRoot":"","sources":["../../src/runnerUtility/hubClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hubClient.js","sourceRoot":"","sources":["../../src/runnerUtility/hubClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,14 +7,6 @@ import type { RunnerServers } from './runnerServers';
|
|
|
7
7
|
export declare const removedRetryMs: number;
|
|
8
8
|
/** How long after the first refusal of the key a second one confirms that the runner was removed. */
|
|
9
9
|
export declare const removalConfirmMs: number;
|
|
10
|
-
/**
|
|
11
|
-
* How long the hub must have been refusing the key, without ever saying «this runner is not paired», before the runner takes the refusal
|
|
12
|
-
* for a removal worth killing its jobs for. A refused key alone is also what a hub with a locked home folder, a changed file mode or an
|
|
13
|
-
* edited sshd setting looks like, and those last hours (a night, until someone unlocks the volume); killing a long run for them is the
|
|
14
|
-
* wrong mistake. A hub that removes an ONLINE runner stops its jobs itself over the link (`runners/runnerRemoval.ts`), and a hub that can
|
|
15
|
-
* answer says so (`identity`), so this only covers a machine that was off when it was removed.
|
|
16
|
-
*/
|
|
17
|
-
export declare const unconfirmedRemovalStopAfterMs: number;
|
|
18
10
|
/** @description The wait before attempt number `failures + 1` (0 failures: the first retry); `random` is in [0, 1). */
|
|
19
11
|
export declare function computeBackoffMs(failures: number, random: number): number;
|
|
20
12
|
export interface LinkLoopDeps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkLoop.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/linkLoop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,aAAa,EAAsB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"linkLoop.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/linkLoop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,aAAa,EAAsB,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAY,YAAY,EAAyD,MAAM,aAAa,CAAC;AAE5G,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAsBrD,eAAO,MAAM,cAAc,QAAiB,CAAC;AAC7C,qGAAqG;AACrG,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAE1C,uHAAuH;AACvH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6HAA6H;IAC7H,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,OAAO,YAAY,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,+GAA+G;IAC/G,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,sFAAsF;IACtF,uBAAuB,EAAE,MAAM,IAAI,CAAC;CACrC;AAoBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAuMjE"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.removalConfirmMs = exports.removedRetryMs = void 0;
|
|
4
4
|
exports.computeBackoffMs = computeBackoffMs;
|
|
5
5
|
exports.createLinkLoop = createLinkLoop;
|
|
6
6
|
const appInstall_1 = require("./appInstall");
|
|
7
7
|
const appUpdate_1 = require("./appUpdate");
|
|
8
8
|
const gateProtocol_1 = require("../runners/gateProtocol");
|
|
9
|
+
const removalTiming_1 = require("../runners/removalTiming");
|
|
9
10
|
const hubClient_1 = require("./hubClient");
|
|
10
11
|
const versionPollTiming_1 = require("./versionPollTiming");
|
|
11
12
|
const runnerConfig_1 = require("./runnerConfig");
|
|
@@ -31,14 +32,6 @@ const stableLinkMs = 30 * 1000;
|
|
|
31
32
|
exports.removedRetryMs = 60 * 60 * 1000;
|
|
32
33
|
/** How long after the first refusal of the key a second one confirms that the runner was removed. */
|
|
33
34
|
exports.removalConfirmMs = 15 * 1000;
|
|
34
|
-
/**
|
|
35
|
-
* How long the hub must have been refusing the key, without ever saying «this runner is not paired», before the runner takes the refusal
|
|
36
|
-
* for a removal worth killing its jobs for. A refused key alone is also what a hub with a locked home folder, a changed file mode or an
|
|
37
|
-
* edited sshd setting looks like, and those last hours (a night, until someone unlocks the volume); killing a long run for them is the
|
|
38
|
-
* wrong mistake. A hub that removes an ONLINE runner stops its jobs itself over the link (`runners/runnerRemoval.ts`), and a hub that can
|
|
39
|
-
* answer says so (`identity`), so this only covers a machine that was off when it was removed.
|
|
40
|
-
*/
|
|
41
|
-
exports.unconfirmedRemovalStopAfterMs = 12 * 60 * 60 * 1000;
|
|
42
35
|
/** @description The wait before attempt number `failures + 1` (0 failures: the first retry); `random` is in [0, 1). */
|
|
43
36
|
function computeBackoffMs(failures, random) {
|
|
44
37
|
const base = Math.min(maxBackoffMs, initialBackoffMs * 2 ** Math.max(0, failures));
|
|
@@ -68,7 +61,7 @@ function createLinkLoop(deps) {
|
|
|
68
61
|
const log = deps.log ?? (() => undefined);
|
|
69
62
|
const versionPollMs = deps.versionPollMs ?? (0, versionPollTiming_1.readRunnerVersionPollMs)(process.env);
|
|
70
63
|
const confirmMs = deps.removalConfirmMs ?? exports.removalConfirmMs;
|
|
71
|
-
const stopAfterMs = deps.unconfirmedRemovalStopAfterMs ??
|
|
64
|
+
const stopAfterMs = deps.unconfirmedRemovalStopAfterMs ?? removalTiming_1.unconfirmedRemovalStopAfterMs;
|
|
72
65
|
const endpoint = { host: deps.config.hub.host, port: deps.config.hub.port, user: deps.config.hub.user, hostKey: deps.config.hub.hostKey };
|
|
73
66
|
let installedPackageId = deps.config.packageId;
|
|
74
67
|
let state = 'connecting';
|