@qodalis/cli-server-plugin-jobs 1.0.0-beta.14 → 1.0.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -2
- package/dist/cli-job-execution-context.d.ts +6 -0
- package/dist/cli-job-execution-context.d.ts.map +1 -1
- package/dist/cli-job-execution-context.js +10 -0
- package/dist/cli-job-execution-context.js.map +1 -1
- package/dist/cli-job-scheduler.d.ts +51 -4
- package/dist/cli-job-scheduler.d.ts.map +1 -1
- package/dist/cli-job-scheduler.js +103 -16
- package/dist/cli-job-scheduler.js.map +1 -1
- package/dist/cli-jobs-builder.d.ts +3 -1
- package/dist/cli-jobs-builder.d.ts.map +1 -1
- package/dist/cli-jobs-builder.js +2 -1
- package/dist/cli-jobs-builder.js.map +1 -1
- package/dist/cli-jobs-controller.d.ts +1 -0
- package/dist/cli-jobs-controller.d.ts.map +1 -1
- package/dist/cli-jobs-controller.js +52 -5
- package/dist/cli-jobs-controller.js.map +1 -1
- package/dist/in-memory-job-storage-provider.d.ts +8 -1
- package/dist/in-memory-job-storage-provider.d.ts.map +1 -1
- package/dist/in-memory-job-storage-provider.js +33 -0
- package/dist/in-memory-job-storage-provider.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package-info.d.ts +4 -0
- package/dist/package-info.d.ts.map +1 -0
- package/dist/package-info.js +10 -0
- package/dist/package-info.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,12 +51,14 @@ await jobsPlugin.scheduler.start();
|
|
|
51
51
|
|
|
52
52
|
| Option | Type | Default | Description |
|
|
53
53
|
|--------|------|---------|-------------|
|
|
54
|
+
| `id` | `string?` | Name | Stable id for the API, history and saved state (`name-2`, `name-3`, ... for duplicate names; a duplicate explicit id throws) |
|
|
54
55
|
| `name` | `string?` | Class name | Job display name |
|
|
55
56
|
| `description` | `string?` | Name | Human-readable description |
|
|
56
57
|
| `group` | `string?` | — | Logical grouping |
|
|
57
58
|
| `schedule` | `string?` | — | Cron expression (5-field) |
|
|
58
|
-
| `interval` | `string?` | — | Fixed interval (`30s`, `5m`, `1h`, `1d`) |
|
|
59
|
-
| `
|
|
59
|
+
| `interval` | `string?` | — | Fixed interval (`30s`, `5m`, `1h`, `1d`); the next run is the last run plus the interval, across restarts and pauses (right away when that has passed) |
|
|
60
|
+
| `runOnStart` | `boolean` | `false` | Run once right after the scheduler starts (not for paused or stopped jobs) |
|
|
61
|
+
| `enabled` | `boolean` | `true` | Whether the job starts active. `false` keeps it stopped whatever state was saved; otherwise a saved pause or stop (made from the API) is kept across restarts |
|
|
60
62
|
| `maxRetries` | `number` | `0` | Retry count on failure |
|
|
61
63
|
| `timeout` | `string?` | — | Max execution duration (same format as interval) |
|
|
62
64
|
| `overlapPolicy` | `string` | `skip` | `skip`, `queue`, or `cancel` |
|
|
@@ -68,6 +70,7 @@ All endpoints are mounted at the plugin's built-in prefix (`/api/v1/qcli/jobs`).
|
|
|
68
70
|
| Method | Endpoint | Description |
|
|
69
71
|
|--------|----------|-------------|
|
|
70
72
|
| GET | `/` | List all jobs |
|
|
73
|
+
| GET | `/executions` | Executions across jobs, newest first: `?job=a,b` (repeatable), `group=`, `status=`, `since=` (ISO 8601), `limit=` (1-100), `offset=` → `{ items, total, limit, offset }` |
|
|
71
74
|
| GET | `/:id` | Get job details |
|
|
72
75
|
| POST | `/:id/trigger` | Trigger immediate execution |
|
|
73
76
|
| POST | `/:id/pause` | Pause scheduled execution |
|
|
@@ -78,6 +81,22 @@ All endpoints are mounted at the plugin's built-in prefix (`/api/v1/qcli/jobs`).
|
|
|
78
81
|
| GET | `/:id/history` | Paginated execution history |
|
|
79
82
|
| GET | `/:id/history/:execId` | Execution detail with logs |
|
|
80
83
|
|
|
84
|
+
## Inside a job
|
|
85
|
+
|
|
86
|
+
The execution context has a `logger`, the run's own `properties` (saved with the execution whatever its outcome, returned by the history API, `/executions` and the `jobs_history` MCP tool) and `discard()`, which leaves a completed run out of the history (a frequent job that found nothing to do; failed runs are always kept):
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
class DigestJob implements ICliJob {
|
|
90
|
+
async executeAsync(context: ICliJobExecutionContext, signal: AbortSignal) {
|
|
91
|
+
const due = await findDueDigests();
|
|
92
|
+
if (due.length === 0) return context.discard();
|
|
93
|
+
context.properties.sent = await sendAll(due, signal);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`plugin.scheduler` (`ICliJobScheduler`) is for the host's own code: `jobs` (the registrations by id), `triggerAsync`, `pauseAsync`, `resumeAsync`, `stopJobAsync`, `cancelCurrentAsync`, `updateOptionsAsync` and `queryExecutions`.
|
|
99
|
+
|
|
81
100
|
## Custom Storage
|
|
82
101
|
|
|
83
102
|
By default, execution history is stored in memory. Provide a custom `ICliJobStorageProvider` for persistence:
|
|
@@ -89,6 +108,8 @@ const plugin = new CliJobsBuilder()
|
|
|
89
108
|
.build();
|
|
90
109
|
```
|
|
91
110
|
|
|
111
|
+
Besides the required methods, a storage may implement `queryExecutions(query)` (listing across jobs in one query; without it the scheduler merges the per-job listings), `prune(before)` (delete old executions; call it on a schedule, e.g. `pruneJobExecutions(storage, new Date(Date.now() - 30 * 86_400_000))`) and `deleteExecution(id)` (used by `discard()`; without it discarded runs are kept). The in-memory storage implements all three.
|
|
112
|
+
|
|
92
113
|
## License
|
|
93
114
|
|
|
94
115
|
MIT
|
|
@@ -2,8 +2,14 @@ import { ICliJobExecutionContext, ICliJobLogger } from '@qodalis/cli-server-abst
|
|
|
2
2
|
/** Concrete execution context provided to each job run, wrapping a logger for capturing output. */
|
|
3
3
|
export declare class CliJobExecutionContext implements ICliJobExecutionContext {
|
|
4
4
|
readonly logger: ICliJobLogger;
|
|
5
|
+
readonly properties: Record<string, unknown>;
|
|
5
6
|
private readonly _jobLogger;
|
|
7
|
+
private _discarded;
|
|
6
8
|
constructor();
|
|
9
|
+
/** Leaves this run out of the history when it completes (failed runs are kept). */
|
|
10
|
+
discard(): void;
|
|
11
|
+
/** Whether the job asked to leave this run out of the history. */
|
|
12
|
+
get discarded(): boolean;
|
|
7
13
|
/** Returns the collected log entries from the job execution. */
|
|
8
14
|
get logEntries(): import("@qodalis/cli-server-abstractions").JobLogEntry[];
|
|
9
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-job-execution-context.d.ts","sourceRoot":"","sources":["../cli-job-execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAG1F,mGAAmG;AACnG,qBAAa,sBAAuB,YAAW,uBAAuB;IAClE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-job-execution-context.d.ts","sourceRoot":"","sources":["../cli-job-execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAG1F,mGAAmG;AACnG,qBAAa,sBAAuB,YAAW,uBAAuB;IAClE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAElD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,UAAU,CAAS;;IAO3B,mFAAmF;IACnF,OAAO,IAAI,IAAI;IAIf,kEAAkE;IAClE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gEAAgE;IAChE,IAAI,UAAU,6DAEb;CACJ"}
|
|
@@ -5,11 +5,21 @@ const cli_job_logger_1 = require("./cli-job-logger");
|
|
|
5
5
|
/** Concrete execution context provided to each job run, wrapping a logger for capturing output. */
|
|
6
6
|
class CliJobExecutionContext {
|
|
7
7
|
logger;
|
|
8
|
+
properties = {};
|
|
8
9
|
_jobLogger;
|
|
10
|
+
_discarded = false;
|
|
9
11
|
constructor() {
|
|
10
12
|
this._jobLogger = new cli_job_logger_1.CliJobLogger();
|
|
11
13
|
this.logger = this._jobLogger;
|
|
12
14
|
}
|
|
15
|
+
/** Leaves this run out of the history when it completes (failed runs are kept). */
|
|
16
|
+
discard() {
|
|
17
|
+
this._discarded = true;
|
|
18
|
+
}
|
|
19
|
+
/** Whether the job asked to leave this run out of the history. */
|
|
20
|
+
get discarded() {
|
|
21
|
+
return this._discarded;
|
|
22
|
+
}
|
|
13
23
|
/** Returns the collected log entries from the job execution. */
|
|
14
24
|
get logEntries() {
|
|
15
25
|
return this._jobLogger.entries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-job-execution-context.js","sourceRoot":"","sources":["../cli-job-execution-context.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,mGAAmG;AACnG,MAAa,sBAAsB;IACtB,MAAM,CAAgB;
|
|
1
|
+
{"version":3,"file":"cli-job-execution-context.js","sourceRoot":"","sources":["../cli-job-execution-context.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,mGAAmG;AACnG,MAAa,sBAAsB;IACtB,MAAM,CAAgB;IACtB,UAAU,GAA4B,EAAE,CAAC;IAEjC,UAAU,CAAe;IAClC,UAAU,GAAG,KAAK,CAAC;IAE3B;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAY,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,mFAAmF;IACnF,OAAO;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,gEAAgE;IAChE,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACnC,CAAC;CACJ;AA1BD,wDA0BC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICliJob, CliJobOptions, ICliJobStorageProvider, JobStatus } from '@qodalis/cli-server-abstractions';
|
|
1
|
+
import { ICliJob, CliJobOptions, ICliJobStorageProvider, JobExecution, JobStatus, JobExecutionQuery } from '@qodalis/cli-server-abstractions';
|
|
2
2
|
/** Internal state for a registered job, including timers and execution queue. */
|
|
3
3
|
export interface JobRegistration {
|
|
4
4
|
id: string;
|
|
@@ -40,11 +40,39 @@ export interface JobDto {
|
|
|
40
40
|
lastRunDuration?: number;
|
|
41
41
|
}
|
|
42
42
|
type BroadcastFn = (message: Record<string, unknown>) => void;
|
|
43
|
+
/** Options of a job that `updateOptionsAsync` may change. */
|
|
44
|
+
export type CliJobOptionsUpdate = Partial<Pick<CliJobOptions, 'description' | 'group' | 'schedule' | 'interval' | 'maxRetries' | 'retryDelay' | 'retryStrategy' | 'timeout' | 'overlapPolicy'>>;
|
|
45
|
+
/**
|
|
46
|
+
* The scheduler that runs the jobs registered in this process: their
|
|
47
|
+
* registrations and the actions on them. Use it (`jobsPlugin.scheduler`) to act on
|
|
48
|
+
* a job from the host's own code, e.g. run a job when something happened.
|
|
49
|
+
*/
|
|
50
|
+
export interface ICliJobScheduler {
|
|
51
|
+
/** The registered jobs keyed by job id, in registration order. */
|
|
52
|
+
readonly jobs: ReadonlyMap<string, JobRegistration>;
|
|
53
|
+
/** Runs the job now; throws a {@link JobError} (409) when it is running and may not overlap. */
|
|
54
|
+
triggerAsync(id: string): Promise<void>;
|
|
55
|
+
/** Pauses the job's schedule. */
|
|
56
|
+
pauseAsync(id: string): Promise<void>;
|
|
57
|
+
/** Resumes a paused job's schedule. */
|
|
58
|
+
resumeAsync(id: string): Promise<void>;
|
|
59
|
+
/** Stops the job: cancels a running execution and disables its schedule. */
|
|
60
|
+
stopJobAsync(id: string): Promise<void>;
|
|
61
|
+
/** Cancels the job's running execution. */
|
|
62
|
+
cancelCurrentAsync(id: string): Promise<void>;
|
|
63
|
+
/** Changes the job's options and restarts its schedule. */
|
|
64
|
+
updateOptionsAsync(id: string, updates: CliJobOptionsUpdate): Promise<void>;
|
|
65
|
+
/** The executions of several jobs (`query.jobIds`) or of every job, newest first. */
|
|
66
|
+
queryExecutions(query: JobExecutionQuery): Promise<{
|
|
67
|
+
items: JobExecution[];
|
|
68
|
+
total: number;
|
|
69
|
+
}>;
|
|
70
|
+
}
|
|
43
71
|
/**
|
|
44
72
|
* Manages job registration, scheduling (cron / interval), execution with
|
|
45
73
|
* retry logic, overlap policies, and state persistence.
|
|
46
74
|
*/
|
|
47
|
-
export declare class CliJobScheduler {
|
|
75
|
+
export declare class CliJobScheduler implements ICliJobScheduler {
|
|
48
76
|
private readonly _registrations;
|
|
49
77
|
private readonly _storage;
|
|
50
78
|
private _broadcastFn;
|
|
@@ -57,13 +85,27 @@ export declare class CliJobScheduler {
|
|
|
57
85
|
*
|
|
58
86
|
* @param job - The job implementation.
|
|
59
87
|
* @param options - Scheduling and retry configuration.
|
|
60
|
-
* @returns The
|
|
88
|
+
* @returns The job ID: `options.id`, else the name (`name-2`, `name-3`, ... for
|
|
89
|
+
* further jobs of the same name). Stable across restarts, so saved state and
|
|
90
|
+
* history find the job again.
|
|
91
|
+
* @throws {Error} When `options.id` is empty, has `/`, `\\`, `?` or `#` (it is part of the jobs API's URLs; a
|
|
92
|
+
* default id replaces them with `-`), or is already registered.
|
|
61
93
|
*/
|
|
62
94
|
register(job: ICliJob, options: CliJobOptions): string;
|
|
63
95
|
/** Load persisted job states and start timers for all active jobs. */
|
|
64
96
|
start(): Promise<void>;
|
|
65
97
|
/** Stop all timers, cancel running executions, and persist final states. */
|
|
66
98
|
stop(): Promise<void>;
|
|
99
|
+
/** The registered jobs keyed by job id, in registration order. */
|
|
100
|
+
get jobs(): ReadonlyMap<string, JobRegistration>;
|
|
101
|
+
/**
|
|
102
|
+
* The executions of several jobs (`query.jobIds`) or of every registered job,
|
|
103
|
+
* newest first: the storage's own `queryExecutions`, else its per-job listings merged.
|
|
104
|
+
*/
|
|
105
|
+
queryExecutions(query: JobExecutionQuery): Promise<{
|
|
106
|
+
items: JobExecution[];
|
|
107
|
+
total: number;
|
|
108
|
+
}>;
|
|
67
109
|
/** Return DTOs for all registered jobs. */
|
|
68
110
|
getAll(): JobDto[];
|
|
69
111
|
/** Return the DTO for a single job, or `undefined` if not found. */
|
|
@@ -85,7 +127,7 @@ export declare class CliJobScheduler {
|
|
|
85
127
|
/** Cancel the currently running execution of a job without changing its schedule. */
|
|
86
128
|
cancelCurrentAsync(id: string): Promise<void>;
|
|
87
129
|
/** Update mutable job options (schedule, retry policy, etc.) and restart timers if active. */
|
|
88
|
-
updateOptionsAsync(id: string, updates:
|
|
130
|
+
updateOptionsAsync(id: string, updates: CliJobOptionsUpdate): Promise<void>;
|
|
89
131
|
get storage(): ICliJobStorageProvider;
|
|
90
132
|
private _toDto;
|
|
91
133
|
private _startTimer;
|
|
@@ -94,6 +136,11 @@ export declare class CliJobScheduler {
|
|
|
94
136
|
private _handleTimerFire;
|
|
95
137
|
private _executeJobAsync;
|
|
96
138
|
private _stopTimer;
|
|
139
|
+
/**
|
|
140
|
+
* Saves the finished run, or deletes a discarded one (failed runs are always kept). When the store refuses the
|
|
141
|
+
* run's properties (a value that does not serialize), the run is saved without them, so it never stays "running".
|
|
142
|
+
*/
|
|
143
|
+
private _saveFinished;
|
|
97
144
|
private _persistState;
|
|
98
145
|
private _broadcast;
|
|
99
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-job-scheduler.d.ts","sourceRoot":"","sources":["../cli-job-scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,OAAO,EACP,aAAa,EACb,sBAAsB,
|
|
1
|
+
{"version":3,"file":"cli-job-scheduler.d.ts","sourceRoot":"","sources":["../cli-job-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.JobError = exports.CliJobScheduler = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
5
|
const cron_parser_1 = require("cron-parser");
|
|
6
|
+
const cli_server_abstractions_1 = require("@qodalis/cli-server-abstractions");
|
|
6
7
|
const cli_job_execution_context_1 = require("./cli-job-execution-context");
|
|
7
8
|
const interval_parser_1 = require("./interval-parser");
|
|
9
|
+
/** Characters a job id may not have: it is part of the jobs API's URLs. */
|
|
10
|
+
const UNSAFE_ID_CHARS = /[/\\?#]/;
|
|
8
11
|
/**
|
|
9
12
|
* Manages job registration, scheduling (cron / interval), execution with
|
|
10
13
|
* retry logic, overlap policies, and state persistence.
|
|
@@ -26,15 +29,35 @@ class CliJobScheduler {
|
|
|
26
29
|
*
|
|
27
30
|
* @param job - The job implementation.
|
|
28
31
|
* @param options - Scheduling and retry configuration.
|
|
29
|
-
* @returns The
|
|
32
|
+
* @returns The job ID: `options.id`, else the name (`name-2`, `name-3`, ... for
|
|
33
|
+
* further jobs of the same name). Stable across restarts, so saved state and
|
|
34
|
+
* history find the job again.
|
|
35
|
+
* @throws {Error} When `options.id` is empty, has `/`, `\\`, `?` or `#` (it is part of the jobs API's URLs; a
|
|
36
|
+
* default id replaces them with `-`), or is already registered.
|
|
30
37
|
*/
|
|
31
38
|
register(job, options) {
|
|
32
|
-
const
|
|
39
|
+
const name = options.name ?? (job.constructor?.name && job.constructor.name !== 'Object' ? job.constructor.name : 'job');
|
|
40
|
+
let id;
|
|
41
|
+
if (options.id !== undefined) {
|
|
42
|
+
if (!options.id.trim() || UNSAFE_ID_CHARS.test(options.id)) {
|
|
43
|
+
throw new Error(`Job id '${options.id}' must be non-empty and may not contain '/', '\\', '?' or '#' (it is part of the jobs API's URLs)`);
|
|
44
|
+
}
|
|
45
|
+
if (this._registrations.has(options.id)) {
|
|
46
|
+
throw new Error(`A job with id '${options.id}' is already registered`);
|
|
47
|
+
}
|
|
48
|
+
id = options.id;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const baseId = name.replace(new RegExp(UNSAFE_ID_CHARS.source, 'g'), '-');
|
|
52
|
+
id = baseId;
|
|
53
|
+
for (let n = 2; this._registrations.has(id); n++)
|
|
54
|
+
id = `${baseId}-${n}`;
|
|
55
|
+
}
|
|
33
56
|
const enabled = options.enabled !== false;
|
|
34
57
|
const reg = {
|
|
35
58
|
id,
|
|
36
59
|
job,
|
|
37
|
-
options: { ...options, enabled },
|
|
60
|
+
options: { ...options, name, enabled },
|
|
38
61
|
status: enabled ? 'active' : 'stopped',
|
|
39
62
|
queue: [],
|
|
40
63
|
};
|
|
@@ -47,13 +70,21 @@ class CliJobScheduler {
|
|
|
47
70
|
// Load persisted states
|
|
48
71
|
const states = await this._storage.getAllJobStates();
|
|
49
72
|
for (const [id, reg] of this._registrations) {
|
|
73
|
+
// Restore the last run, and a pause or stop made at run time; a job the code disables
|
|
74
|
+
// (enabled: false) stays stopped whatever was saved.
|
|
50
75
|
const persisted = states.get(id);
|
|
51
76
|
if (persisted) {
|
|
52
|
-
reg.status = persisted.status;
|
|
53
77
|
reg.lastRunAt = persisted.lastRunAt;
|
|
78
|
+
if (reg.options.enabled !== false)
|
|
79
|
+
reg.status = persisted.status;
|
|
54
80
|
}
|
|
55
81
|
if (reg.status === 'active') {
|
|
56
|
-
|
|
82
|
+
// An interval job runs on start through its timer (due now), so the two never overlap
|
|
83
|
+
const runNow = !!reg.options.runOnStart && !reg.options.schedule && !!reg.options.interval;
|
|
84
|
+
this._startTimer(reg, runNow);
|
|
85
|
+
if (reg.options.runOnStart && !runNow) {
|
|
86
|
+
this._handleTimerFire(reg).catch(() => undefined);
|
|
87
|
+
}
|
|
57
88
|
}
|
|
58
89
|
}
|
|
59
90
|
}
|
|
@@ -74,6 +105,20 @@ class CliJobScheduler {
|
|
|
74
105
|
});
|
|
75
106
|
}
|
|
76
107
|
}
|
|
108
|
+
/** The registered jobs keyed by job id, in registration order. */
|
|
109
|
+
get jobs() {
|
|
110
|
+
return this._registrations;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The executions of several jobs (`query.jobIds`) or of every registered job,
|
|
114
|
+
* newest first: the storage's own `queryExecutions`, else its per-job listings merged.
|
|
115
|
+
*/
|
|
116
|
+
async queryExecutions(query) {
|
|
117
|
+
if (this._storage.queryExecutions)
|
|
118
|
+
return this._storage.queryExecutions(query);
|
|
119
|
+
const jobIds = query.jobIds ?? Array.from(this._registrations.keys());
|
|
120
|
+
return (0, cli_server_abstractions_1.mergeJobExecutions)(query, jobIds, (jobId, limit, status) => this._storage.getExecutions(jobId, { limit, offset: 0, status }));
|
|
121
|
+
}
|
|
77
122
|
/** Return DTOs for all registered jobs. */
|
|
78
123
|
getAll() {
|
|
79
124
|
return Array.from(this._registrations.values()).map((reg) => this._toDto(reg));
|
|
@@ -250,12 +295,12 @@ class CliJobScheduler {
|
|
|
250
295
|
lastRunDuration: reg.lastRunDuration,
|
|
251
296
|
};
|
|
252
297
|
}
|
|
253
|
-
_startTimer(reg) {
|
|
298
|
+
_startTimer(reg, runNow = false) {
|
|
254
299
|
if (reg.options.schedule) {
|
|
255
300
|
this._startCronTimer(reg);
|
|
256
301
|
}
|
|
257
302
|
else if (reg.options.interval) {
|
|
258
|
-
this._startIntervalTimer(reg);
|
|
303
|
+
this._startIntervalTimer(reg, runNow);
|
|
259
304
|
}
|
|
260
305
|
}
|
|
261
306
|
_startCronTimer(reg) {
|
|
@@ -282,18 +327,32 @@ class CliJobScheduler {
|
|
|
282
327
|
};
|
|
283
328
|
scheduleNext();
|
|
284
329
|
}
|
|
285
|
-
_startIntervalTimer(reg) {
|
|
330
|
+
_startIntervalTimer(reg, runNow = false) {
|
|
286
331
|
const ms = (0, interval_parser_1.parseInterval)(reg.options.interval);
|
|
287
332
|
if (ms === null)
|
|
288
333
|
return;
|
|
289
|
-
|
|
290
|
-
|
|
334
|
+
// Keep the rhythm across restarts and pauses: due one interval after the last run
|
|
335
|
+
const now = Date.now();
|
|
336
|
+
const lastRun = reg.lastRunAt ? new Date(reg.lastRunAt).getTime() : NaN;
|
|
337
|
+
let due = Number.isNaN(lastRun) ? now + ms : lastRun + ms;
|
|
338
|
+
if (due < now || runNow)
|
|
339
|
+
due = now;
|
|
340
|
+
reg.nextRunAt = new Date(due).toISOString();
|
|
341
|
+
const fire = async () => {
|
|
291
342
|
if (reg.status !== 'active' || !this._running)
|
|
292
343
|
return;
|
|
293
|
-
await this._handleTimerFire(reg);
|
|
294
344
|
reg.nextRunAt = new Date(Date.now() + ms).toISOString();
|
|
295
|
-
|
|
296
|
-
|
|
345
|
+
await this._handleTimerFire(reg);
|
|
346
|
+
};
|
|
347
|
+
reg.timer = setTimeout(() => {
|
|
348
|
+
if (reg.status !== 'active' || !this._running)
|
|
349
|
+
return;
|
|
350
|
+
// Then every interval from this run on
|
|
351
|
+
reg.timer = setInterval(fire, ms);
|
|
352
|
+
reg.timerType = 'interval';
|
|
353
|
+
fire().catch(() => undefined);
|
|
354
|
+
}, due - now);
|
|
355
|
+
reg.timerType = 'cron'; // a one-off timeout until the first run
|
|
297
356
|
}
|
|
298
357
|
async _handleTimerFire(reg) {
|
|
299
358
|
if (reg.currentExecutionId) {
|
|
@@ -325,6 +384,7 @@ class CliJobScheduler {
|
|
|
325
384
|
startedAt: new Date().toISOString(),
|
|
326
385
|
logs: [],
|
|
327
386
|
retryAttempt,
|
|
387
|
+
properties: {},
|
|
328
388
|
};
|
|
329
389
|
await this._storage.saveExecution(execution);
|
|
330
390
|
this._broadcast({
|
|
@@ -373,14 +433,15 @@ class CliJobScheduler {
|
|
|
373
433
|
execution.duration = duration;
|
|
374
434
|
execution.error = error;
|
|
375
435
|
execution.logs = context.logEntries;
|
|
376
|
-
|
|
436
|
+
execution.properties = { ...context.properties };
|
|
437
|
+
await this._saveFinished(execution, context.discarded);
|
|
377
438
|
reg.currentExecutionId = undefined;
|
|
378
439
|
reg.currentAbortController = undefined;
|
|
379
440
|
reg.lastRunAt = execution.startedAt;
|
|
380
441
|
reg.lastRunStatus = finalStatus;
|
|
381
442
|
reg.lastRunDuration = duration;
|
|
382
|
-
// Persist state
|
|
383
|
-
await this._persistState(reg);
|
|
443
|
+
// Persist state; a store failure must not leave the job looking busy or stop its retries
|
|
444
|
+
await this._persistState(reg).catch((err) => console.error(`Saving the state of job ${reg.id} failed:`, err));
|
|
384
445
|
// Broadcast completion event
|
|
385
446
|
if (finalStatus === 'completed') {
|
|
386
447
|
this._broadcast({ type: 'job:completed', jobId: reg.id, executionId, duration });
|
|
@@ -433,6 +494,32 @@ class CliJobScheduler {
|
|
|
433
494
|
}
|
|
434
495
|
reg.nextRunAt = undefined;
|
|
435
496
|
}
|
|
497
|
+
/**
|
|
498
|
+
* Saves the finished run, or deletes a discarded one (failed runs are always kept). When the store refuses the
|
|
499
|
+
* run's properties (a value that does not serialize), the run is saved without them, so it never stays "running".
|
|
500
|
+
*/
|
|
501
|
+
async _saveFinished(execution, discard) {
|
|
502
|
+
try {
|
|
503
|
+
const discarded = discard && execution.status === 'completed' && (await (0, cli_server_abstractions_1.deleteJobExecution)(this._storage, execution.id));
|
|
504
|
+
if (!discarded)
|
|
505
|
+
await this._storage.saveExecution(execution);
|
|
506
|
+
}
|
|
507
|
+
catch (err) {
|
|
508
|
+
if (!execution.properties || Object.keys(execution.properties).length === 0)
|
|
509
|
+
throw err;
|
|
510
|
+
console.error(`Saving execution ${execution.id} of job ${execution.jobId} failed; saving it without its properties:`, err);
|
|
511
|
+
execution.properties = {};
|
|
512
|
+
execution.logs = [
|
|
513
|
+
...(execution.logs ?? []),
|
|
514
|
+
{
|
|
515
|
+
timestamp: new Date().toISOString(),
|
|
516
|
+
level: 'error',
|
|
517
|
+
message: `The run's properties could not be saved: ${err instanceof Error ? err.message : String(err)}`,
|
|
518
|
+
},
|
|
519
|
+
];
|
|
520
|
+
await this._storage.saveExecution(execution);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
436
523
|
async _persistState(reg) {
|
|
437
524
|
await this._storage.saveJobState(reg.id, {
|
|
438
525
|
status: reg.status,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-job-scheduler.js","sourceRoot":"","sources":["../cli-job-scheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-job-scheduler.js","sourceRoot":"","sources":["../cli-job-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICliJob, CliJobOptions, ICliJobStorageProvider } from '@qodalis/cli-server-abstractions';
|
|
1
|
+
import { ICliJob, CliJobOptions, ICliJobStorageProvider, CliInstalledPlugin } from '@qodalis/cli-server-abstractions';
|
|
2
2
|
import { Router } from 'express';
|
|
3
3
|
import { CliJobScheduler } from './cli-job-scheduler';
|
|
4
4
|
export interface CliJobsPluginResult {
|
|
@@ -8,6 +8,8 @@ export interface CliJobsPluginResult {
|
|
|
8
8
|
router: Router;
|
|
9
9
|
/** The job scheduler instance. Call `start()` / `stop()` to manage its lifecycle. */
|
|
10
10
|
scheduler: CliJobScheduler;
|
|
11
|
+
/** This package, listed among the server's installed plugins by `mountPlugin`. */
|
|
12
|
+
installedPlugin: CliInstalledPlugin;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* Fluent builder for configuring the jobs plugin independently of the core CLI server.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-jobs-builder.d.ts","sourceRoot":"","sources":["../cli-jobs-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-jobs-builder.d.ts","sourceRoot":"","sources":["../cli-jobs-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,WAAW,mBAAmB;IAChC,4CAA4C;IAC5C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,SAAS,EAAE,eAAe,CAAC;IAC3B,kFAAkF;IAClF,eAAe,EAAE,kBAAkB,CAAC;CACvC;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;IAC7E,OAAO,CAAC,gBAAgB,CAAC,CAAyB;IAElD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc;IAK5D;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,cAAc;IAKpE;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,mBAAmB;CAgBvF"}
|
package/dist/cli-jobs-builder.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.CliJobsBuilder = void 0;
|
|
|
4
4
|
const cli_job_scheduler_1 = require("./cli-job-scheduler");
|
|
5
5
|
const in_memory_job_storage_provider_1 = require("./in-memory-job-storage-provider");
|
|
6
6
|
const cli_jobs_controller_1 = require("./cli-jobs-controller");
|
|
7
|
+
const package_info_1 = require("./package-info");
|
|
7
8
|
/**
|
|
8
9
|
* Fluent builder for configuring the jobs plugin independently of the core CLI server.
|
|
9
10
|
*
|
|
@@ -52,7 +53,7 @@ class CliJobsBuilder {
|
|
|
52
53
|
scheduler.setBroadcastFn(broadcastFn);
|
|
53
54
|
}
|
|
54
55
|
const router = (0, cli_jobs_controller_1.createCliJobsController)(scheduler, storage);
|
|
55
|
-
return { prefix: '/api/v1/qcli/jobs', router, scheduler };
|
|
56
|
+
return { prefix: '/api/v1/qcli/jobs', router, scheduler, installedPlugin: package_info_1.jobsInstalledPlugin };
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
exports.CliJobsBuilder = CliJobsBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-jobs-builder.js","sourceRoot":"","sources":["../cli-jobs-builder.ts"],"names":[],"mappings":";;;AAEA,2DAAsD;AACtD,qFAA8E;AAC9E,+DAAgE;
|
|
1
|
+
{"version":3,"file":"cli-jobs-builder.js","sourceRoot":"","sources":["../cli-jobs-builder.ts"],"names":[],"mappings":";;;AAEA,2DAAsD;AACtD,qFAA8E;AAC9E,+DAAgE;AAChE,iDAAqD;AAarD;;;;;;;;;;;;;;GAcG;AACH,MAAa,cAAc;IACN,KAAK,GAAoD,EAAE,CAAC;IACrE,gBAAgB,CAA0B;IAElD;;OAEG;IACH,MAAM,CAAC,GAAY,EAAE,OAAsB;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,QAAgC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAwD;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,2DAA0B,EAAE,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,mCAAe,CAAC,OAAO,CAAC,CAAC;QAE/C,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,6CAAuB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3D,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,kCAAmB,EAAE,CAAC;IACpG,CAAC;CACJ;AA1CD,wCA0CC"}
|
|
@@ -6,6 +6,7 @@ import { ICliJobStorageProvider } from '@qodalis/cli-server-abstractions';
|
|
|
6
6
|
*
|
|
7
7
|
* Routes (relative to mount point):
|
|
8
8
|
* - GET / - list all jobs
|
|
9
|
+
* - GET /executions - executions across jobs (?job=a,b&group=&status=&since=&limit=&offset=)
|
|
9
10
|
* - GET /:id - single job details
|
|
10
11
|
* - POST /:id/trigger - trigger immediate execution
|
|
11
12
|
* - POST /:id/pause - pause scheduled execution
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-jobs-controller.d.ts","sourceRoot":"","sources":["../cli-jobs-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAY,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"cli-jobs-controller.d.ts","sourceRoot":"","sources":["../cli-jobs-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAY,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAoC,MAAM,kCAAkC,CAAC;AAE5G;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,sBAAsB,GAChC,MAAM,CA+JR"}
|