@openagt/skill-scheduler 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/SKILL.md +28 -0
- package/bin/scheduler +11 -0
- package/dist/automation-file.d.ts +61 -0
- package/dist/automation-file.d.ts.map +1 -0
- package/dist/automation-file.js +153 -0
- package/dist/automation-file.js.map +1 -0
- package/dist/automation.d.ts +189 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +237 -0
- package/dist/automation.js.map +1 -0
- package/dist/cleanup.d.ts +31 -0
- package/dist/cleanup.d.ts.map +1 -0
- package/dist/cleanup.js +20 -0
- package/dist/cleanup.js.map +1 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +416 -0
- package/dist/cli.js.map +1 -0
- package/dist/dashboard/dashboard.css +3 -0
- package/dist/dashboard/dashboard.js +2323 -0
- package/dist/hook-lines.d.ts +11 -0
- package/dist/hook-lines.d.ts.map +1 -0
- package/dist/hook-lines.js +12 -0
- package/dist/hook-lines.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +40 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +95 -0
- package/dist/init.js.map +1 -0
- package/dist/names.d.ts +83 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +89 -0
- package/dist/names.js.map +1 -0
- package/dist/pace.d.ts +86 -0
- package/dist/pace.d.ts.map +1 -0
- package/dist/pace.js +99 -0
- package/dist/pace.js.map +1 -0
- package/dist/quota-boundary.d.ts +123 -0
- package/dist/quota-boundary.d.ts.map +1 -0
- package/dist/quota-boundary.js +181 -0
- package/dist/quota-boundary.js.map +1 -0
- package/dist/records.d.ts +45 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +85 -0
- package/dist/records.js.map +1 -0
- package/dist/schedule.d.ts +241 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +379 -0
- package/dist/schedule.js.map +1 -0
- package/dist/scheduler.d.ts +75 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +244 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/start-point.d.ts +40 -0
- package/dist/start-point.d.ts.map +1 -0
- package/dist/start-point.js +88 -0
- package/dist/start-point.js.map +1 -0
- package/dist/state.d.ts +194 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +208 -0
- package/dist/state.js.map +1 -0
- package/dist/test-repo.d.ts +20 -0
- package/dist/test-repo.d.ts.map +1 -0
- package/dist/test-repo.js +56 -0
- package/dist/test-repo.js.map +1 -0
- package/dist/tick.d.ts +119 -0
- package/dist/tick.d.ts.map +1 -0
- package/dist/tick.js +311 -0
- package/dist/tick.js.map +1 -0
- package/dist/write-line.d.ts +38 -0
- package/dist/write-line.d.ts.map +1 -0
- package/dist/write-line.js +121 -0
- package/dist/write-line.js.map +1 -0
- package/package.json +65 -3
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.js","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { DriverQuota } from '@openagt/agent-driver';
|
|
2
|
+
import { type GitRunner } from '@openagt/agent-data';
|
|
3
|
+
import { type LastRun } from './records.js';
|
|
4
|
+
import { type Schedule, type ScheduledCommand } from './schedule.js';
|
|
5
|
+
import { type ListedCommand, type State, type TickRecord } from './state.js';
|
|
6
|
+
import { type StartedNow } from './tick.js';
|
|
7
|
+
/**
|
|
8
|
+
* Claude's quota for a project's ticks: a reading this process made less than {@link QUOTA_KEPT_MS}
|
|
9
|
+
* ago is used again, so a run waited for starts seconds sooner. A reading that could not be made
|
|
10
|
+
* is not kept: the next asks again.
|
|
11
|
+
*/
|
|
12
|
+
export declare function keepQuota(read: () => Promise<DriverQuota>, now?: () => number): () => Promise<DriverQuota>;
|
|
13
|
+
/**
|
|
14
|
+
* Start one run of a scheduled command now, for a person who asked ({@link startNow}). It needs no
|
|
15
|
+
* scheduler running: the run is started from here. Its check has less time than a tick gives one:
|
|
16
|
+
* whoever asked waits for the answer.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runNow(repo: string, command: ScheduledCommand, opts?: {
|
|
19
|
+
git?: GitRunner;
|
|
20
|
+
log?: (line: string) => void;
|
|
21
|
+
now?: () => Date;
|
|
22
|
+
}): Promise<StartedNow>;
|
|
23
|
+
/** One tick of the real project, and the state written with what it decided. */
|
|
24
|
+
export declare function tickProject(repo: string, opts?: {
|
|
25
|
+
git?: GitRunner;
|
|
26
|
+
log?: (line: string) => void;
|
|
27
|
+
now?: () => Date;
|
|
28
|
+
stopped?: () => boolean;
|
|
29
|
+
}): Promise<TickRecord>;
|
|
30
|
+
/**
|
|
31
|
+
* Between the minute's ticks, the rows of the real project that may be checked more often and are
|
|
32
|
+
* due again by `due`; what one of them started or resumed is a log line.
|
|
33
|
+
*/
|
|
34
|
+
export declare function glanceProject(repo: string, opts: {
|
|
35
|
+
due: (command: ScheduledCommand) => boolean;
|
|
36
|
+
git?: GitRunner;
|
|
37
|
+
log?: (line: string) => void;
|
|
38
|
+
now?: () => Date;
|
|
39
|
+
stopped?: () => boolean;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
/** `start`: the state on, and the scheduler's own process ticking until `stop`, unless this process is it. */
|
|
42
|
+
export declare function startScheduler(repo: string, opts?: {
|
|
43
|
+
foreground?: boolean;
|
|
44
|
+
everyMs?: number;
|
|
45
|
+
keepAlive?: boolean;
|
|
46
|
+
log?: (line: string) => void;
|
|
47
|
+
}): Promise<State>;
|
|
48
|
+
/**
|
|
49
|
+
* `stop`: the state off, and the scheduler's process asked to stop. Agents in flight run to the end.
|
|
50
|
+
* With `unlessKeepAlive`, a keep-alive scheduler is left as it is and the answer says `kept`: the
|
|
51
|
+
* one reader of keep-alive, meant for the line a dashboard runs when it closes.
|
|
52
|
+
*/
|
|
53
|
+
export declare function stopScheduler(repo: string, opts?: {
|
|
54
|
+
unlessKeepAlive?: boolean;
|
|
55
|
+
}): Promise<State & {
|
|
56
|
+
kept: boolean;
|
|
57
|
+
}>;
|
|
58
|
+
/** A command as `status` lists it: what its file says, and its last run when it has one. */
|
|
59
|
+
export type StatusCommand = ListedCommand & {
|
|
60
|
+
lastRun?: LastRun;
|
|
61
|
+
};
|
|
62
|
+
/** What `status` answers: the state, whether its process is alive, and the schedule as the project's files say it now. */
|
|
63
|
+
export type Status = State & {
|
|
64
|
+
running: boolean;
|
|
65
|
+
schedule: StatusCommand[];
|
|
66
|
+
unreadable: Schedule['unreadable'];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* `status`: the state, whether its process is alive, and the schedule read now, each command with
|
|
70
|
+
* its last run off the run records. Read from the files and the records, not off the last tick,
|
|
71
|
+
* so a command saved, changed, removed or started a moment ago is listed as it stands, also where
|
|
72
|
+
* no scheduler is running. Records that cannot be read list no last run and stop nothing.
|
|
73
|
+
*/
|
|
74
|
+
export declare function schedulerStatus(repo: string): Promise<Status>;
|
|
75
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { closeSync, mkdirSync, openSync } from 'node:fs';
|
|
3
|
+
import { hostname } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { readClaudeQuota } from '@openagt/agent-driver-claude';
|
|
7
|
+
import { isPidAlive, lockHolder, readyToRun, resumeDetached, runIdFrom, spawnResume, spawnRun, sweep, withdrawMarker, writeMarker } from '@openagt/agent-runner';
|
|
8
|
+
import { findRun } from '@openagt/skill-logs';
|
|
9
|
+
import { DATA_BRANCH, nodeGitRunner, pullFileBranch } from '@openagt/agent-data';
|
|
10
|
+
import { CHECK_TIMEOUT_MS, GLANCE_MS, NOW_CHECK_TIMEOUT_MS, QUOTA_KEPT_MS, SCHEDULER_LOG, TICK_MS } from './names.js';
|
|
11
|
+
import { inFlight, lastRuns, lastStart } from './records.js';
|
|
12
|
+
import { readSchedule } from './schedule.js';
|
|
13
|
+
import { isSwitchedOn, namesGivenUp, readState, stateDir, updateState, withoutListed, withoutName, withoutPid } from './state.js';
|
|
14
|
+
import { atStartOf } from './start-point.js';
|
|
15
|
+
import { glance, listed, runCheck, startNow, tick } from './tick.js';
|
|
16
|
+
/**
|
|
17
|
+
* The tool's process side (#1774): a tick wired to the real project, and the scheduler's own small
|
|
18
|
+
* process that ticks every minute between `start` and `stop`. A due command is a run of
|
|
19
|
+
* `agent-runner`, spawned in its own process. State in files throughout; the process holds nothing
|
|
20
|
+
* a restart would lose.
|
|
21
|
+
*/
|
|
22
|
+
/** This package's executable, for the scheduler's own process: the bin beside `dist/`. */
|
|
23
|
+
const BIN = fileURLToPath(new URL('../bin/scheduler', import.meta.url));
|
|
24
|
+
/**
|
|
25
|
+
* Claude's quota for a project's ticks: a reading this process made less than {@link QUOTA_KEPT_MS}
|
|
26
|
+
* ago is used again, so a run waited for starts seconds sooner. A reading that could not be made
|
|
27
|
+
* is not kept: the next asks again.
|
|
28
|
+
*/
|
|
29
|
+
export function keepQuota(read, now = Date.now) {
|
|
30
|
+
let kept;
|
|
31
|
+
return async () => {
|
|
32
|
+
if (kept && now() - kept.at < QUOTA_KEPT_MS)
|
|
33
|
+
return kept.quota;
|
|
34
|
+
const quota = await read();
|
|
35
|
+
kept = quota.available ? { at: now(), quota } : undefined;
|
|
36
|
+
return quota;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const quotaKeepers = new Map();
|
|
40
|
+
/** This process's keeper of Claude's quota for the project. */
|
|
41
|
+
function keptQuota(repo) {
|
|
42
|
+
let keeper = quotaKeepers.get(repo);
|
|
43
|
+
if (!keeper)
|
|
44
|
+
quotaKeepers.set(repo, (keeper = keepQuota(() => readClaudeQuota({ cwd: repo }))));
|
|
45
|
+
return keeper;
|
|
46
|
+
}
|
|
47
|
+
/** A tick's hands on the real project: its records, its checks, the coding agent, and a run of `agent-runner` per start. */
|
|
48
|
+
function projectDeps(repo, state, schedule, opts) {
|
|
49
|
+
const { git, log, now } = opts;
|
|
50
|
+
const host = hostname();
|
|
51
|
+
return {
|
|
52
|
+
state,
|
|
53
|
+
schedule,
|
|
54
|
+
host,
|
|
55
|
+
now,
|
|
56
|
+
pull: () => pullFileBranch(repo, DATA_BRANCH, { git, log }),
|
|
57
|
+
sweep: () => sweep(repo, { host, isAlive: isPidAlive, now, git, log, resume: resumeDetached(repo) }),
|
|
58
|
+
atStart: atStartOf(repo, git),
|
|
59
|
+
check: (shell, lastRun) => runCheck(repo, shell, opts.checkMs, lastRun),
|
|
60
|
+
stillOn: async (command) => isSwitchedOn(await readState(repo), command),
|
|
61
|
+
lastStart: command => lastStart(repo, command, schedule, host),
|
|
62
|
+
inFlight: command => inFlight(repo, command, schedule, host),
|
|
63
|
+
findRun: id => findRun(repo, id),
|
|
64
|
+
busy: async (id) => (await lockHolder(repo, id, isPidAlive)) !== undefined,
|
|
65
|
+
ready: agent => readyToRun(repo, agent),
|
|
66
|
+
quota: keptQuota(repo),
|
|
67
|
+
mint: () => runIdFrom(now().toISOString()),
|
|
68
|
+
writeMarker: card => writeMarker(repo, card),
|
|
69
|
+
withdrawMarker: id => withdrawMarker(repo, id),
|
|
70
|
+
spawn: run => spawnRun(repo, run),
|
|
71
|
+
resume: run => spawnResume(repo, run),
|
|
72
|
+
...(opts.stopped ? { stopped: opts.stopped } : {}),
|
|
73
|
+
log,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Start one run of a scheduled command now, for a person who asked ({@link startNow}). It needs no
|
|
78
|
+
* scheduler running: the run is started from here. Its check has less time than a tick gives one:
|
|
79
|
+
* whoever asked waits for the answer.
|
|
80
|
+
*/
|
|
81
|
+
export async function runNow(repo, command, opts = {}) {
|
|
82
|
+
const git = opts.git ?? nodeGitRunner();
|
|
83
|
+
return startNow(projectDeps(repo, await readState(repo), await readSchedule(repo), { git, log: opts.log ?? (() => { }), now: opts.now ?? (() => new Date()), checkMs: NOW_CHECK_TIMEOUT_MS }), command);
|
|
84
|
+
}
|
|
85
|
+
/** One tick of the real project, and the state written with what it decided. */
|
|
86
|
+
export async function tickProject(repo, opts = {}) {
|
|
87
|
+
const git = opts.git ?? nodeGitRunner();
|
|
88
|
+
const log = opts.log ?? (() => { });
|
|
89
|
+
const now = opts.now ?? (() => new Date());
|
|
90
|
+
const schedule = await readSchedule(repo);
|
|
91
|
+
// What an automation kept on this machine was given goes when it goes, and when a skill has its
|
|
92
|
+
// name too: a switch left under the name would start the skill's command unasked.
|
|
93
|
+
const givenUp = namesGivenUp((await readState(repo)).lastTick, schedule);
|
|
94
|
+
const state = givenUp.length ? await updateState(repo, s => givenUp.reduce(withoutName, s), git) : await readState(repo);
|
|
95
|
+
const decided = await tick(projectDeps(repo, state, schedule, { git, log, now, checkMs: CHECK_TIMEOUT_MS, ...(opts.stopped ? { stopped: opts.stopped } : {}) }));
|
|
96
|
+
let record = decided;
|
|
97
|
+
// A tick cut short by a stop records nothing: `stop` already took this scheduler off the state,
|
|
98
|
+
// and a write now would put the state file back after a clean-up removed it.
|
|
99
|
+
if (!opts.stopped?.()) {
|
|
100
|
+
// A command whose file went while the tick ran, removed by its person, is not on the record: what lists the record's commands would show it for another minute.
|
|
101
|
+
// An automation kept on this machine that went so is given up here: off the record, the next tick would not know it had been listed.
|
|
102
|
+
const there = new Set((await readSchedule(repo)).commands.map(c => c.name));
|
|
103
|
+
const gone = decided.schedule.filter(c => !there.has(c.command));
|
|
104
|
+
const written = await updateState(repo, s => gone.reduce((state, c) => withoutListed(c.onThisMachine ? withoutName(state, c.command) : state, c.command), { ...s, lastTick: decided }), git);
|
|
105
|
+
// What is answered and logged is the record as written.
|
|
106
|
+
record = written.lastTick ?? decided;
|
|
107
|
+
}
|
|
108
|
+
for (const line of describe(record))
|
|
109
|
+
log(line);
|
|
110
|
+
return record;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Between the minute's ticks, the rows of the real project that may be checked more often and are
|
|
114
|
+
* due again by `due`; what one of them started or resumed is a log line.
|
|
115
|
+
*/
|
|
116
|
+
export async function glanceProject(repo, opts) {
|
|
117
|
+
const schedule = await readSchedule(repo);
|
|
118
|
+
if (!schedule.commands.some(command => command.checkEvery))
|
|
119
|
+
return;
|
|
120
|
+
const log = opts.log ?? (() => { });
|
|
121
|
+
const decided = await glance(projectDeps(repo, await readState(repo), schedule, { git: opts.git ?? nodeGitRunner(), log, now: opts.now ?? (() => new Date()), checkMs: CHECK_TIMEOUT_MS, ...(opts.stopped ? { stopped: opts.stopped } : {}) }), opts.due);
|
|
122
|
+
for (const decision of decided)
|
|
123
|
+
if (decision.run !== undefined)
|
|
124
|
+
log(`[scheduler] between ticks: ${decision.command}: ${decision.outcome}`);
|
|
125
|
+
}
|
|
126
|
+
/** `start`: the state on, and the scheduler's own process ticking until `stop`, unless this process is it. */
|
|
127
|
+
export async function startScheduler(repo, opts = {}) {
|
|
128
|
+
const state = await updateState(repo, s => ({ ...s, on: true, ...(opts.keepAlive !== undefined ? { keepAlive: opts.keepAlive } : {}) }));
|
|
129
|
+
if (state.pid !== undefined && isPidAlive(state.pid) && state.pid !== process.pid)
|
|
130
|
+
return state;
|
|
131
|
+
if (opts.foreground) {
|
|
132
|
+
await loop(repo, opts.everyMs ?? TICK_MS, opts.log ?? (() => { }));
|
|
133
|
+
return readState(repo);
|
|
134
|
+
}
|
|
135
|
+
const logPath = join(stateDir(repo), SCHEDULER_LOG);
|
|
136
|
+
mkdirSync(stateDir(repo), { recursive: true });
|
|
137
|
+
const fd = openSync(logPath, 'a');
|
|
138
|
+
const child = spawn(process.execPath, [BIN, 'start', '--foreground'], { cwd: repo, detached: true, stdio: ['ignore', fd, fd] });
|
|
139
|
+
closeSync(fd);
|
|
140
|
+
child.unref();
|
|
141
|
+
await new Promise((resolve, reject) => {
|
|
142
|
+
child.once('spawn', resolve);
|
|
143
|
+
child.once('error', reject);
|
|
144
|
+
});
|
|
145
|
+
return updateState(repo, s => ({ ...s, pid: child.pid, startedAt: new Date().toISOString() }));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The scheduler's process: a tick now and every interval, until SIGINT or SIGTERM. The stop waits
|
|
149
|
+
* for the tick in flight, which starts nothing more and records nothing once the stop is in; and it
|
|
150
|
+
* clears only this process's pid from the state, writing nothing when the state names another: a
|
|
151
|
+
* dashboard's close hook stops this scheduler and its open hook starts the next one before this
|
|
152
|
+
* tick is over, and that one's pid must stay.
|
|
153
|
+
*/
|
|
154
|
+
async function loop(repo, everyMs, log) {
|
|
155
|
+
await updateState(repo, s => ({ ...s, pid: process.pid, startedAt: new Date().toISOString() }));
|
|
156
|
+
let stopped = false;
|
|
157
|
+
let inflight = Promise.resolve();
|
|
158
|
+
const once = () => {
|
|
159
|
+
inflight = inflight.then(() => tickProject(repo, { log, stopped: () => stopped })).catch(err => log(`[scheduler] tick failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
160
|
+
};
|
|
161
|
+
// Between ticks, the rows that may be checked more often, each when its own interval is over;
|
|
162
|
+
// one look at a time, after the tick in flight, and none queued while one waits.
|
|
163
|
+
const glanced = new Map();
|
|
164
|
+
const due = (command) => {
|
|
165
|
+
const at = glanced.get(command.name);
|
|
166
|
+
if (at !== undefined && Date.now() - at < command.checkEvery.ms)
|
|
167
|
+
return false;
|
|
168
|
+
glanced.set(command.name, Date.now());
|
|
169
|
+
return true;
|
|
170
|
+
};
|
|
171
|
+
let waiting = false;
|
|
172
|
+
const look = () => {
|
|
173
|
+
if (waiting)
|
|
174
|
+
return;
|
|
175
|
+
waiting = true;
|
|
176
|
+
inflight = inflight
|
|
177
|
+
.then(() => {
|
|
178
|
+
waiting = false;
|
|
179
|
+
return stopped ? undefined : glanceProject(repo, { due, log, stopped: () => stopped });
|
|
180
|
+
})
|
|
181
|
+
.catch(err => log(`[scheduler] look between ticks failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
182
|
+
};
|
|
183
|
+
const timer = setInterval(once, everyMs);
|
|
184
|
+
const glancer = setInterval(look, GLANCE_MS);
|
|
185
|
+
once();
|
|
186
|
+
await new Promise(resolve => {
|
|
187
|
+
const stop = () => {
|
|
188
|
+
if (stopped)
|
|
189
|
+
return;
|
|
190
|
+
stopped = true;
|
|
191
|
+
clearInterval(timer);
|
|
192
|
+
clearInterval(glancer);
|
|
193
|
+
resolve();
|
|
194
|
+
};
|
|
195
|
+
process.once('SIGINT', stop);
|
|
196
|
+
process.once('SIGTERM', stop);
|
|
197
|
+
});
|
|
198
|
+
await inflight;
|
|
199
|
+
// Written only when the state still names this process. After `stop` it does not, and a write
|
|
200
|
+
// then would only put the state file back, after a clean-up may have removed it.
|
|
201
|
+
if ((await readState(repo)).pid === process.pid)
|
|
202
|
+
await updateState(repo, s => withoutPid(s, process.pid));
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* `stop`: the state off, and the scheduler's process asked to stop. Agents in flight run to the end.
|
|
206
|
+
* With `unlessKeepAlive`, a keep-alive scheduler is left as it is and the answer says `kept`: the
|
|
207
|
+
* one reader of keep-alive, meant for the line a dashboard runs when it closes.
|
|
208
|
+
*/
|
|
209
|
+
export async function stopScheduler(repo, opts = {}) {
|
|
210
|
+
const state = await readState(repo);
|
|
211
|
+
if (opts.unlessKeepAlive && state.keepAlive)
|
|
212
|
+
return { ...state, kept: true };
|
|
213
|
+
if (state.pid !== undefined && isPidAlive(state.pid)) {
|
|
214
|
+
try {
|
|
215
|
+
process.kill(state.pid, 'SIGINT');
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// Gone between the probe and the signal.
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const stopped = await updateState(repo, s => {
|
|
222
|
+
const { pid: _pid, startedAt: _startedAt, ...rest } = s;
|
|
223
|
+
return { ...rest, on: false };
|
|
224
|
+
});
|
|
225
|
+
return { ...stopped, kept: false };
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* `status`: the state, whether its process is alive, and the schedule read now, each command with
|
|
229
|
+
* its last run off the run records. Read from the files and the records, not off the last tick,
|
|
230
|
+
* so a command saved, changed, removed or started a moment ago is listed as it stands, also where
|
|
231
|
+
* no scheduler is running. Records that cannot be read list no last run and stop nothing.
|
|
232
|
+
*/
|
|
233
|
+
export async function schedulerStatus(repo) {
|
|
234
|
+
const [state, schedule] = await Promise.all([readState(repo), readSchedule(repo)]);
|
|
235
|
+
const last = await lastRuns(repo, schedule, hostname()).catch(() => ({}));
|
|
236
|
+
return { ...state, running: state.pid !== undefined && isPidAlive(state.pid), schedule: schedule.commands.map((command) => ({ ...listed(command), ...(last[command.name] ? { lastRun: last[command.name] } : {}) })), unreadable: schedule.unreadable };
|
|
237
|
+
}
|
|
238
|
+
function describe(record) {
|
|
239
|
+
const lines = [`[scheduler] tick ${record.at}${record.note ? `: ${record.note}` : ''}`];
|
|
240
|
+
for (const d of record.decisions)
|
|
241
|
+
lines.push(`[scheduler] ${d.command}: ${d.outcome}`);
|
|
242
|
+
return lines;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAc,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5K,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAA;AAChG,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACrH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAwC,MAAM,eAAe,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAmD,MAAM,YAAY,CAAA;AAClL,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAkC,MAAM,WAAW,CAAA;AAEpG;;;;;GAKG;AAEH,0FAA0F;AAC1F,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEvE;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAgC,EAAE,GAAG,GAAiB,IAAI,CAAC,GAAG;IACtF,IAAI,IAAoD,CAAA;IACxD,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa;YAAE,OAAO,IAAI,CAAC,KAAK,CAAA;QAC9D,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAA;QAC1B,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACzD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;AACH,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsC,CAAA;AAElE,+DAA+D;AAC/D,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,MAAM;QAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/F,OAAO,MAAM,CAAA;AACf,CAAC;AAED,4HAA4H;AAC5H,SAAS,WAAW,CAAC,IAAY,EAAE,KAAY,EAAE,QAAkB,EAAE,IAAgH;IACnL,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAC9B,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAA;IACvB,OAAO;QACL,KAAK;QACL,QAAQ;QACR,IAAI;QACJ,GAAG;QACH,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3D,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACpG,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;QAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACvE,OAAO,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QACtE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC9D,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC5D,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,KAAK,SAAS;QACxE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;QACvC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;QAC5C,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG;KACJ,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,OAAyB,EAAE,IAAI,GAAwE,EAAE;IAClJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,aAAa,EAAE,CAAA;IACvC,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;AACxM,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,IAAI,GAAiG,EAAE;IACrJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,aAAa,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,gGAAgG;IAChG,kFAAkF;IAClF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACxH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAChK,IAAI,MAAM,GAAG,OAAO,CAAA;IACpB,gGAAgG;IAChG,6EAA6E;IAC7E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;QACtB,gKAAgK;QAChK,qIAAqI;QACrI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAChE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;QACnM,wDAAwD;QACxD,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAA;IACtC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,IAA+I;IAC/L,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAM;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACzP,KAAK,MAAM,QAAQ,IAAI,OAAO;QAAE,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,8BAA8B,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;AAC5I,CAAC;AAED,8GAA8G;AAC9G,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAI,GAAkG,EAAE;IACzJ,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxI,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAC/F,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAA;QACjE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAA;IACnD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;IAC/H,SAAS,CAAC,EAAE,CAAC,CAAA;IACb,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AACjG,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,OAAe,EAAE,GAA2B;IAC5E,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/F,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IAClD,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtL,CAAC,CAAA;IACD,8FAA8F;IAC9F,iFAAiF;IACjF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,MAAM,GAAG,GAAG,CAAC,OAAyB,EAAW,EAAE;QACjD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,UAAW,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;QAC9E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IACD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,QAAQ,GAAG,QAAQ;aAChB,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,GAAG,KAAK,CAAA;YACf,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QACxF,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0CAA0C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACpH,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC5C,IAAI,EAAE,CAAA;IACN,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,aAAa,CAAC,OAAO,CAAC,CAAA;YACtB,OAAO,EAAE,CAAA;QACX,CAAC,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,CAAA;IACd,8FAA8F;IAC9F,iFAAiF;IACjF,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QAAE,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3G,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,IAAI,GAAkC,EAAE;IACxF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC5E,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;QAC1C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAA;QACvD,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACpC,CAAC;AAQD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAA4B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClG,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAA;AACzQ,CAAC;AAED,SAAS,QAAQ,CAAC,MAAkB;IAClC,MAAM,KAAK,GAAG,CAAC,oBAAoB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACxF,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type GitRunner } from '@openagt/agent-data';
|
|
2
|
+
/**
|
|
3
|
+
* Where a scheduled run's checkout starts, and whether a command's skill is there. A run works in
|
|
4
|
+
* a fresh checkout made from origin's default branch, fetched first, or from HEAD in a repository
|
|
5
|
+
* with no remote: never from the files a person has in their own checkout. So a skill a person
|
|
6
|
+
* wrote and has not yet committed, or, with a remote, not yet brought onto its default branch, is
|
|
7
|
+
* no command there: an agent started for it would be told a command it does not know. The tick
|
|
8
|
+
* asks here once everything else says start, and starts nothing for a skill that is not there.
|
|
9
|
+
*/
|
|
10
|
+
/** The commit a run's checkout starts from, as the tick reads it. */
|
|
11
|
+
export interface StartPoint {
|
|
12
|
+
/** What a checkout starts from, as git names it: `origin/main`, or `HEAD` with no remote. */
|
|
13
|
+
ref: string;
|
|
14
|
+
/** Whether origin answered the fetch in time; true with no remote, where there is nothing to fetch. Not reached, the commit is the copy this clone last saw. */
|
|
15
|
+
reached: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The start point, brought up to date the way a run's checkout is: origin's default branch is
|
|
19
|
+
* fetched, waited for {@link START_POINT_FETCH_MS} at most. A fetch that fails (offline) or runs
|
|
20
|
+
* longer leaves the copy this clone has, and the start point says origin was not reached.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readStartPoint(repo: string, git: GitRunner): Promise<StartPoint>;
|
|
23
|
+
/**
|
|
24
|
+
* One tick's question, "is this file where a run's checkout starts": the start point is read, and
|
|
25
|
+
* so fetched, the first time it is asked and once only, however many commands are about to start.
|
|
26
|
+
* A commit that cannot be read says nothing: the file counts as there, the command is not held
|
|
27
|
+
* back, and its run says what is wrong.
|
|
28
|
+
*/
|
|
29
|
+
export declare function atStartOf(repo: string, git: GitRunner): (file: string) => Promise<StartPoint & {
|
|
30
|
+
there: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Whether a file is on a commit, as a checkout of that commit would have it: a link on the way,
|
|
34
|
+
* to a folder or to the file, is followed like the file system follows it (this repository keeps
|
|
35
|
+
* each skill in one folder and links it from the other; a project may link the whole skills
|
|
36
|
+
* folder). A link that leaves the repository, or whose target is not on the commit, leads nowhere.
|
|
37
|
+
* `undefined` when the commit itself cannot be read: nothing can be said, and nothing is held back.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isOnCommit(repo: string, ref: string, file: string, git: GitRunner): Promise<boolean | undefined>;
|
|
40
|
+
//# sourceMappingURL=start-point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-point.d.ts","sourceRoot":"","sources":["../src/start-point.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGzE;;;;;;;GAOG;AAEH,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,GAAG,EAAE,MAAM,CAAA;IACX,gKAAgK;IAChK,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAetF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAMlH;AAKD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAStH"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { posix } from 'node:path';
|
|
2
|
+
import { originDefaultBranch } from '@openagt/agent-data';
|
|
3
|
+
import { START_POINT_FETCH_MS } from './names.js';
|
|
4
|
+
/**
|
|
5
|
+
* The start point, brought up to date the way a run's checkout is: origin's default branch is
|
|
6
|
+
* fetched, waited for {@link START_POINT_FETCH_MS} at most. A fetch that fails (offline) or runs
|
|
7
|
+
* longer leaves the copy this clone has, and the start point says origin was not reached.
|
|
8
|
+
*/
|
|
9
|
+
export async function readStartPoint(repo, git) {
|
|
10
|
+
const origin = await originDefaultBranch(repo, git).catch(() => undefined);
|
|
11
|
+
if (origin === undefined)
|
|
12
|
+
return { ref: 'HEAD', reached: true };
|
|
13
|
+
const fetched = git(['fetch', '--quiet', '--no-write-fetch-head', 'origin', origin.slice('origin/'.length)], repo).then(() => true, () => false);
|
|
14
|
+
let timer;
|
|
15
|
+
const capped = new Promise(resolve => {
|
|
16
|
+
timer = setTimeout(() => resolve(false), START_POINT_FETCH_MS);
|
|
17
|
+
timer.unref();
|
|
18
|
+
});
|
|
19
|
+
const reached = await Promise.race([fetched, capped]);
|
|
20
|
+
clearTimeout(timer);
|
|
21
|
+
return { ref: origin, reached };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* One tick's question, "is this file where a run's checkout starts": the start point is read, and
|
|
25
|
+
* so fetched, the first time it is asked and once only, however many commands are about to start.
|
|
26
|
+
* A commit that cannot be read says nothing: the file counts as there, the command is not held
|
|
27
|
+
* back, and its run says what is wrong.
|
|
28
|
+
*/
|
|
29
|
+
export function atStartOf(repo, git) {
|
|
30
|
+
let start;
|
|
31
|
+
return async (file) => {
|
|
32
|
+
const point = await (start ??= readStartPoint(repo, git));
|
|
33
|
+
return { ...point, there: (await isOnCommit(repo, point.ref, file, git)) ?? true };
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** How many links one path may go through before it counts as not there: a link that points at itself ends here. */
|
|
37
|
+
const MAX_LINKS = 8;
|
|
38
|
+
/**
|
|
39
|
+
* Whether a file is on a commit, as a checkout of that commit would have it: a link on the way,
|
|
40
|
+
* to a folder or to the file, is followed like the file system follows it (this repository keeps
|
|
41
|
+
* each skill in one folder and links it from the other; a project may link the whole skills
|
|
42
|
+
* folder). A link that leaves the repository, or whose target is not on the commit, leads nowhere.
|
|
43
|
+
* `undefined` when the commit itself cannot be read: nothing can be said, and nothing is held back.
|
|
44
|
+
*/
|
|
45
|
+
export async function isOnCommit(repo, ref, file, git) {
|
|
46
|
+
if ((await git(['rev-parse', '--verify', '--quiet', `${ref}^{commit}`], repo).catch(() => undefined)) === undefined)
|
|
47
|
+
return undefined;
|
|
48
|
+
let path = file;
|
|
49
|
+
for (let links = 0; links <= MAX_LINKS; links++) {
|
|
50
|
+
const next = await followOne(repo, ref, path, git);
|
|
51
|
+
if (typeof next === 'boolean')
|
|
52
|
+
return next;
|
|
53
|
+
path = next;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/** Walk one path down the commit's tree: true for a file there, false for nothing there, or the path to go on with when a link was met. */
|
|
58
|
+
async function followOne(repo, ref, path, git) {
|
|
59
|
+
const parts = path.split('/');
|
|
60
|
+
for (let i = 0; i < parts.length; i++) {
|
|
61
|
+
const at = parts.slice(0, i + 1).join('/');
|
|
62
|
+
const entry = await treeEntry(repo, ref, at, git);
|
|
63
|
+
if (!entry)
|
|
64
|
+
return false;
|
|
65
|
+
const last = i === parts.length - 1;
|
|
66
|
+
if (entry.mode === '120000') {
|
|
67
|
+
const target = (await git(['cat-file', 'blob', entry.object], repo).catch(() => undefined))?.trim();
|
|
68
|
+
if (target === undefined || target === '' || posix.isAbsolute(target))
|
|
69
|
+
return false;
|
|
70
|
+
const resolved = posix.normalize(posix.join(posix.dirname(at), target, ...parts.slice(i + 1)));
|
|
71
|
+
return resolved === '..' || resolved.startsWith('../') ? false : resolved;
|
|
72
|
+
}
|
|
73
|
+
if (last)
|
|
74
|
+
return entry.type === 'blob';
|
|
75
|
+
// A submodule or a file where a folder should be: a checkout has nothing below it.
|
|
76
|
+
if (entry.type !== 'tree')
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
/** One entry of the commit's tree, by its exact path; nothing when there is none. */
|
|
82
|
+
async function treeEntry(repo, ref, path, git) {
|
|
83
|
+
// `:(literal)`: the path as written, never a pattern.
|
|
84
|
+
const listed = await git(['ls-tree', ref, '--', `:(literal)${path}`], repo).catch(() => '');
|
|
85
|
+
const read = /^(\d+) (\w+) ([0-9a-f]+)\t/.exec(listed);
|
|
86
|
+
return read ? { mode: read[1], type: read[2], object: read[3] } : undefined;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=start-point.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-point.js","sourceRoot":"","sources":["../src/start-point.ts"],"names":[],"mappings":"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"}
|