@untangle-code/jobs 0.0.0-stage → 0.1.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/LICENSE +661 -0
- package/NOTICE +90 -0
- package/README.md +138 -2
- package/THIRD_PARTY_LICENSES.md +24 -0
- package/dist/abort.d.ts +14 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +35 -0
- package/dist/abort.js.map +1 -0
- package/dist/bounded-queue.d.ts +200 -0
- package/dist/bounded-queue.d.ts.map +1 -0
- package/dist/bounded-queue.js +338 -0
- package/dist/bounded-queue.js.map +1 -0
- package/dist/checkpoint-store.d.ts +30 -0
- package/dist/checkpoint-store.d.ts.map +1 -0
- package/dist/checkpoint-store.js +131 -0
- package/dist/checkpoint-store.js.map +1 -0
- package/dist/events.d.ts +29 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +66 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/resume.d.ts +45 -0
- package/dist/resume.d.ts.map +1 -0
- package/dist/resume.js +60 -0
- package/dist/resume.js.map +1 -0
- package/dist/runner.d.ts +148 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +686 -0
- package/dist/runner.js.map +1 -0
- package/dist/stages.d.ts +146 -0
- package/dist/stages.d.ts.map +1 -0
- package/dist/stages.js +2 -0
- package/dist/stages.js.map +1 -0
- package/dist/state-machine.d.ts +52 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +114 -0
- package/dist/state-machine.js.map +1 -0
- package/package.json +61 -3
- package/src/abort.ts +37 -0
- package/src/bounded-queue.ts +462 -0
- package/src/checkpoint-store.ts +171 -0
- package/src/events.ts +71 -0
- package/src/index.ts +37 -0
- package/src/resume.ts +106 -0
- package/src/runner.ts +916 -0
- package/src/stages.ts +167 -0
- package/src/state-machine.ts +132 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/stages.d.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrow stage interfaces of the index pipeline (architecture.md §13.1).
|
|
3
|
+
*
|
|
4
|
+
* This package builds the pipeline MECHANICS — state machine, queues,
|
|
5
|
+
* backpressure, checkpoints, resume, cancellation, generation commit. The
|
|
6
|
+
* domain-specific stages (scanner, parser, chunker, embedder, stores) are
|
|
7
|
+
* INJECTED behind these interfaces; `@untangle-code/core` wires the real
|
|
8
|
+
* implementations later, tests wire deterministic fakes from
|
|
9
|
+
* `@untangle-code/testkit` ports.
|
|
10
|
+
*
|
|
11
|
+
* Every method takes trailing `PortCallOptions` and must respect
|
|
12
|
+
* `options.signal` (spec.md §22); the runner additionally only ever acts on
|
|
13
|
+
* results at safe batch boundaries (architecture.md §21.3).
|
|
14
|
+
*/
|
|
15
|
+
import type { ParseQuality, PortCallOptions } from "@untangle-code/domain";
|
|
16
|
+
/** One file the discovery stage planned for (re)indexing. */
|
|
17
|
+
export interface PlannedFileV1 {
|
|
18
|
+
fileId: string;
|
|
19
|
+
/** "/"-normalized repo-relative path. */
|
|
20
|
+
filePath: string;
|
|
21
|
+
/** Content hash — source of truth for change detection (spec.md §12.1). */
|
|
22
|
+
contentHash: string;
|
|
23
|
+
}
|
|
24
|
+
/** Result of the discovery stage (scanner + manifest comparison). */
|
|
25
|
+
export interface DiscoveryResultV1 {
|
|
26
|
+
/** Files that need work in this run (changed or new). */
|
|
27
|
+
planned: PlannedFileV1[];
|
|
28
|
+
/**
|
|
29
|
+
* Every currently searchable source file, including unchanged files.
|
|
30
|
+
* This is kept separate from the resume checkpoint manifest: the latter
|
|
31
|
+
* proves confirmed writes, while this snapshot identifies the corpus the
|
|
32
|
+
* completed generation represents.
|
|
33
|
+
*/
|
|
34
|
+
corpusManifestHashes: Record<string, string>;
|
|
35
|
+
totalFiles: number;
|
|
36
|
+
unchangedFiles: number;
|
|
37
|
+
ignoredFiles: number;
|
|
38
|
+
}
|
|
39
|
+
/** Ensures Qdrant/Ollama/collections are ready (spec.md §11.1 stage 2). */
|
|
40
|
+
export interface InfrastructureStage {
|
|
41
|
+
ensureReady(options?: PortCallOptions): Promise<{
|
|
42
|
+
/** Effective endpoints with secrets redacted (spec.md §3.2). */
|
|
43
|
+
endpoints: Record<string, string>;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
export interface DiscoveryStage {
|
|
47
|
+
discover(options?: PortCallOptions): Promise<DiscoveryResultV1>;
|
|
48
|
+
}
|
|
49
|
+
/** One prepared text ready for embedding, keyed by its future point id. */
|
|
50
|
+
export interface PreparedTextV1 {
|
|
51
|
+
pointId: string;
|
|
52
|
+
text: string;
|
|
53
|
+
payload?: Record<string, unknown>;
|
|
54
|
+
}
|
|
55
|
+
/** Parse + chunk + metrics output for one file (stages 4–5 of spec.md §11.1). */
|
|
56
|
+
export interface AnalyzedFileV1 {
|
|
57
|
+
file: PlannedFileV1;
|
|
58
|
+
parseQuality: ParseQuality;
|
|
59
|
+
chunkCount: number;
|
|
60
|
+
symbolCount: number;
|
|
61
|
+
preparedTexts: PreparedTextV1[];
|
|
62
|
+
/** Estimated in-memory size — feeds the queue byte budget (§13.2). */
|
|
63
|
+
estimatedBytes: number;
|
|
64
|
+
}
|
|
65
|
+
export interface AnalysisStage {
|
|
66
|
+
analyze(file: PlannedFileV1, options?: PortCallOptions): Promise<AnalyzedFileV1>;
|
|
67
|
+
}
|
|
68
|
+
/** One embedded point ready for upsert. */
|
|
69
|
+
export interface EmbeddedPointV1 {
|
|
70
|
+
pointId: string;
|
|
71
|
+
fileId: string;
|
|
72
|
+
vector: number[];
|
|
73
|
+
payload?: Record<string, unknown>;
|
|
74
|
+
}
|
|
75
|
+
/** Result of embedding one file batch. */
|
|
76
|
+
export interface EmbeddedBatchV1 {
|
|
77
|
+
files: PlannedFileV1[];
|
|
78
|
+
points: EmbeddedPointV1[];
|
|
79
|
+
cacheHits: number;
|
|
80
|
+
truncatedCount: number;
|
|
81
|
+
/** Estimated in-memory size — feeds the queue byte budget (§13.2). */
|
|
82
|
+
estimatedBytes: number;
|
|
83
|
+
}
|
|
84
|
+
export interface EmbeddingStage {
|
|
85
|
+
embedBatch(batch: AnalyzedFileV1[], options?: PortCallOptions): Promise<EmbeddedBatchV1>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Confirmation of one CONFIRMED upsert. The runner persists a checkpoint
|
|
89
|
+
* only after receiving this (spec.md §10.5) — a storage stage must therefore
|
|
90
|
+
* resolve only once the store acknowledged the write.
|
|
91
|
+
*/
|
|
92
|
+
export interface UpsertConfirmationV1 {
|
|
93
|
+
collection: string;
|
|
94
|
+
pointCount: number;
|
|
95
|
+
serializedBytes: number;
|
|
96
|
+
/** Confirmed point ids per file id — recorded in the checkpoint (§13.3). */
|
|
97
|
+
storedPointIdsByFile: Record<string, string[]>;
|
|
98
|
+
}
|
|
99
|
+
export interface StorageStage {
|
|
100
|
+
upsertBatch(batch: EmbeddedBatchV1, options?: PortCallOptions): Promise<UpsertConfirmationV1>;
|
|
101
|
+
}
|
|
102
|
+
/** Result of building/patching one graph (stage `building_graphs`). */
|
|
103
|
+
export interface GraphBuildResultV1 {
|
|
104
|
+
graph: "file" | "symbol";
|
|
105
|
+
nodeCount: number;
|
|
106
|
+
edgeCount: number;
|
|
107
|
+
}
|
|
108
|
+
export interface GraphStage {
|
|
109
|
+
buildGraphs(options?: PortCallOptions): Promise<GraphBuildResultV1[]>;
|
|
110
|
+
}
|
|
111
|
+
/** Optional context-artifact indexing (stage `indexing_context`). */
|
|
112
|
+
export interface ContextStage {
|
|
113
|
+
indexContext(options?: PortCallOptions): Promise<void>;
|
|
114
|
+
}
|
|
115
|
+
/** Input the runner hands to the generation commit (architecture.md §13.4). */
|
|
116
|
+
export interface GenerationCommitInputV1 {
|
|
117
|
+
jobId: string;
|
|
118
|
+
generationId: string;
|
|
119
|
+
workspaceId: string;
|
|
120
|
+
repoId: string;
|
|
121
|
+
refId: string;
|
|
122
|
+
effectiveProfileId: string;
|
|
123
|
+
plannedFileIds: string[];
|
|
124
|
+
confirmedFileIds: string[];
|
|
125
|
+
storedGraphs: string[];
|
|
126
|
+
}
|
|
127
|
+
export interface GenerationCommitResultV1 {
|
|
128
|
+
/** Must be "completed" for the job to finish as completed (§13.4). */
|
|
129
|
+
metadataStatus: string;
|
|
130
|
+
}
|
|
131
|
+
export interface GenerationCommitStage {
|
|
132
|
+
commit(input: GenerationCommitInputV1, options?: PortCallOptions): Promise<GenerationCommitResultV1>;
|
|
133
|
+
}
|
|
134
|
+
/** The full injected stage set of one index job. */
|
|
135
|
+
export interface IndexJobStages {
|
|
136
|
+
infrastructure: InfrastructureStage;
|
|
137
|
+
discovery: DiscoveryStage;
|
|
138
|
+
analysis: AnalysisStage;
|
|
139
|
+
embedding: EmbeddingStage;
|
|
140
|
+
storage: StorageStage;
|
|
141
|
+
graphs: GraphStage;
|
|
142
|
+
/** Optional — a workspace without context artifacts skips the stage's work. */
|
|
143
|
+
context?: ContextStage;
|
|
144
|
+
commit: GenerationCommitStage;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=stages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"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"}
|
package/dist/stages.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stages.js","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full-index job state machine — exactly the stages and transitions of
|
|
3
|
+
* spec.md §11.1, including the error states `failed`, `cancel_requested`
|
|
4
|
+
* and `cancelled`. Illegal transitions are REJECTED with a typed error,
|
|
5
|
+
* never silently ignored.
|
|
6
|
+
*/
|
|
7
|
+
import { type IndexJobStage } from "@untangle-code/domain";
|
|
8
|
+
/**
|
|
9
|
+
* The linear pipeline chain of spec.md §11.1 (`queued` → … → `completed`).
|
|
10
|
+
* Derived from domain's `INDEX_JOB_STAGES` (the first twelve entries are the
|
|
11
|
+
* pipeline in order; the last three are the error states).
|
|
12
|
+
*/
|
|
13
|
+
export declare const JOB_PIPELINE_STAGES: readonly IndexJobStage[];
|
|
14
|
+
/** Terminal stages: no transition leaves them. */
|
|
15
|
+
export declare const TERMINAL_JOB_STAGES: readonly IndexJobStage[];
|
|
16
|
+
/** True when `stage` is terminal (`completed`, `failed` or `cancelled`). */
|
|
17
|
+
export declare function isTerminalJobStage(stage: IndexJobStage): boolean;
|
|
18
|
+
/** Index of `stage` in the pipeline chain, or null for the error states. */
|
|
19
|
+
export declare function pipelineIndexOf(stage: IndexJobStage): number | null;
|
|
20
|
+
/**
|
|
21
|
+
* Pure transition rule of spec.md §11.1:
|
|
22
|
+
*
|
|
23
|
+
* - along the pipeline chain, only the single next stage is reachable;
|
|
24
|
+
* - `failed` and `cancel_requested` are reachable from every non-terminal
|
|
25
|
+
* pipeline stage;
|
|
26
|
+
* - `cancel_requested` may only move to `cancelled` (or `failed`, when the
|
|
27
|
+
* cancellation cleanup itself fails);
|
|
28
|
+
* - `completed`, `failed` and `cancelled` are terminal;
|
|
29
|
+
* - self-transitions are not transitions.
|
|
30
|
+
*/
|
|
31
|
+
export declare function canTransition(from: IndexJobStage, to: IndexJobStage): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Mutable job stage holder enforcing spec.md §11.1. An illegal transition
|
|
34
|
+
* throws `UntangleError` with code `INDEX_INCOMPLETE` (the job would be left
|
|
35
|
+
* in an inconsistent state) — it never mutates and is never ignored.
|
|
36
|
+
*/
|
|
37
|
+
export declare class JobStateMachine {
|
|
38
|
+
#private;
|
|
39
|
+
constructor(initial?: IndexJobStage);
|
|
40
|
+
get stage(): IndexJobStage;
|
|
41
|
+
/** Applies one legal transition or throws; never a silent no-op. */
|
|
42
|
+
transition(to: IndexJobStage): void;
|
|
43
|
+
/**
|
|
44
|
+
* Walks the pipeline chain forward, one legal transition at a time, until
|
|
45
|
+
* `target` is reached. A `target` at or before the current stage is a
|
|
46
|
+
* no-op (used for stage high-water marks in the concurrent pipeline,
|
|
47
|
+
* see README "Entscheidungen"). Throws when the machine is in an error
|
|
48
|
+
* state or `target` is not a pipeline stage.
|
|
49
|
+
*/
|
|
50
|
+
advanceTo(target: IndexJobStage): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=state-machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine.d.ts","sourceRoot":"","sources":["../src/state-machine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG7E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAGvD,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAAyC,CAAC;AAElG,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEhE;AAMD,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAEnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAiB7E;AAED;;;;GAIG;AACH,qBAAa,eAAe;;gBAGP,OAAO,GAAE,aAAwB;IAWpD,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED,oEAAoE;IAC7D,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAW1C;;;;;;OAMG;IACI,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;CAuB9C"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full-index job state machine — exactly the stages and transitions of
|
|
3
|
+
* spec.md §11.1, including the error states `failed`, `cancel_requested`
|
|
4
|
+
* and `cancelled`. Illegal transitions are REJECTED with a typed error,
|
|
5
|
+
* never silently ignored.
|
|
6
|
+
*/
|
|
7
|
+
import { INDEX_JOB_STAGES } from "@untangle-code/domain";
|
|
8
|
+
import { indexIncompleteError } from "@untangle-code/observability";
|
|
9
|
+
/**
|
|
10
|
+
* The linear pipeline chain of spec.md §11.1 (`queued` → … → `completed`).
|
|
11
|
+
* Derived from domain's `INDEX_JOB_STAGES` (the first twelve entries are the
|
|
12
|
+
* pipeline in order; the last three are the error states).
|
|
13
|
+
*/
|
|
14
|
+
export const JOB_PIPELINE_STAGES = INDEX_JOB_STAGES.slice(0, INDEX_JOB_STAGES.indexOf("completed") + 1);
|
|
15
|
+
/** Terminal stages: no transition leaves them. */
|
|
16
|
+
export const TERMINAL_JOB_STAGES = ["completed", "failed", "cancelled"];
|
|
17
|
+
/** True when `stage` is terminal (`completed`, `failed` or `cancelled`). */
|
|
18
|
+
export function isTerminalJobStage(stage) {
|
|
19
|
+
return TERMINAL_JOB_STAGES.includes(stage);
|
|
20
|
+
}
|
|
21
|
+
const PIPELINE_INDEX = new Map(JOB_PIPELINE_STAGES.map((stage, index) => [stage, index]));
|
|
22
|
+
/** Index of `stage` in the pipeline chain, or null for the error states. */
|
|
23
|
+
export function pipelineIndexOf(stage) {
|
|
24
|
+
return PIPELINE_INDEX.get(stage) ?? null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Pure transition rule of spec.md §11.1:
|
|
28
|
+
*
|
|
29
|
+
* - along the pipeline chain, only the single next stage is reachable;
|
|
30
|
+
* - `failed` and `cancel_requested` are reachable from every non-terminal
|
|
31
|
+
* pipeline stage;
|
|
32
|
+
* - `cancel_requested` may only move to `cancelled` (or `failed`, when the
|
|
33
|
+
* cancellation cleanup itself fails);
|
|
34
|
+
* - `completed`, `failed` and `cancelled` are terminal;
|
|
35
|
+
* - self-transitions are not transitions.
|
|
36
|
+
*/
|
|
37
|
+
export function canTransition(from, to) {
|
|
38
|
+
if (from === to) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (isTerminalJobStage(from)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (from === "cancel_requested") {
|
|
45
|
+
return to === "cancelled" || to === "failed";
|
|
46
|
+
}
|
|
47
|
+
// `from` is now a non-terminal pipeline stage.
|
|
48
|
+
if (to === "failed" || to === "cancel_requested") {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const fromIndex = pipelineIndexOf(from);
|
|
52
|
+
const toIndex = pipelineIndexOf(to);
|
|
53
|
+
return fromIndex !== null && toIndex !== null && toIndex === fromIndex + 1;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Mutable job stage holder enforcing spec.md §11.1. An illegal transition
|
|
57
|
+
* throws `UntangleError` with code `INDEX_INCOMPLETE` (the job would be left
|
|
58
|
+
* in an inconsistent state) — it never mutates and is never ignored.
|
|
59
|
+
*/
|
|
60
|
+
export class JobStateMachine {
|
|
61
|
+
#stage;
|
|
62
|
+
constructor(initial = "queued") {
|
|
63
|
+
if (!INDEX_JOB_STAGES.includes(initial)) {
|
|
64
|
+
throw indexIncompleteError(`unknown job stage "${initial}"`, {
|
|
65
|
+
retryable: false,
|
|
66
|
+
operation: "job_stage_transition",
|
|
67
|
+
context: { stage: initial },
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
this.#stage = initial;
|
|
71
|
+
}
|
|
72
|
+
get stage() {
|
|
73
|
+
return this.#stage;
|
|
74
|
+
}
|
|
75
|
+
/** Applies one legal transition or throws; never a silent no-op. */
|
|
76
|
+
transition(to) {
|
|
77
|
+
if (!canTransition(this.#stage, to)) {
|
|
78
|
+
throw indexIncompleteError(`illegal job stage transition "${this.#stage}" -> "${to}"`, {
|
|
79
|
+
retryable: false,
|
|
80
|
+
operation: "job_stage_transition",
|
|
81
|
+
context: { from: this.#stage, to },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
this.#stage = to;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Walks the pipeline chain forward, one legal transition at a time, until
|
|
88
|
+
* `target` is reached. A `target` at or before the current stage is a
|
|
89
|
+
* no-op (used for stage high-water marks in the concurrent pipeline,
|
|
90
|
+
* see README "Entscheidungen"). Throws when the machine is in an error
|
|
91
|
+
* state or `target` is not a pipeline stage.
|
|
92
|
+
*/
|
|
93
|
+
advanceTo(target) {
|
|
94
|
+
const targetIndex = pipelineIndexOf(target);
|
|
95
|
+
const currentIndex = pipelineIndexOf(this.#stage);
|
|
96
|
+
if (targetIndex === null || currentIndex === null) {
|
|
97
|
+
throw indexIncompleteError(`cannot advance from "${this.#stage}" to "${target}": not a pipeline stage`, {
|
|
98
|
+
retryable: false,
|
|
99
|
+
operation: "job_stage_transition",
|
|
100
|
+
context: { from: this.#stage, to: target },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (targetIndex <= currentIndex) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (let index = currentIndex + 1; index <= targetIndex; index += 1) {
|
|
107
|
+
const next = JOB_PIPELINE_STAGES[index];
|
|
108
|
+
if (next !== undefined) {
|
|
109
|
+
this.transition(next);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../src/state-machine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAsB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B,gBAAgB,CAAC,KAAK,CACjF,CAAC,EACD,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAC1C,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAA6B,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAElG,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,cAAc,GAAuC,IAAI,GAAG,CAChE,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC1D,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAmB,EAAE,EAAiB;IAClE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,QAAQ,CAAC;IAC/C,CAAC;IACD,+CAA+C;IAC/C,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,kBAAkB,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAgB;IAEtB,YAAmB,UAAyB,QAAQ;QAClD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,oBAAoB,CAAC,sBAAsB,OAAO,GAAG,EAAE;gBAC3D,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,sBAAsB;gBACjC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,oEAAoE;IAC7D,UAAU,CAAC,EAAiB;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,oBAAoB,CAAC,iCAAiC,IAAI,CAAC,MAAM,SAAS,EAAE,GAAG,EAAE;gBACrF,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,sBAAsB;gBACjC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CAAC,MAAqB;QACpC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,WAAW,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,oBAAoB,CACxB,wBAAwB,IAAI,CAAC,MAAM,SAAS,MAAM,yBAAyB,EAC3E;gBACE,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,sBAAsB;gBACjC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;aAC3C,CACF,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@untangle-code/jobs",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Untangle job core: index job state machine (spec.md §11.1), typed job events, checkpoint store, resume planning, generation commit, bounded queues with backpressure and AbortSignal cancellation (architecture.md §13, §21.3).",
|
|
7
|
+
"license": "AGPL-3.0-only",
|
|
8
|
+
"homepage": "https://github.com/lboel/untangle",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/lboel/untangle/issues"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/lboel/untangle.git",
|
|
15
|
+
"directory": "packages/jobs"
|
|
16
|
+
},
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": "^22.13.0 || >=24.0.0"
|
|
22
|
+
},
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"default": "./dist/index.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"!dist/**/*.test.*",
|
|
32
|
+
"!dist/**/test-helpers.*",
|
|
33
|
+
"!dist/**/test-support.*",
|
|
34
|
+
"!dist/**/test-support/**",
|
|
35
|
+
"!dist/**/testing/**",
|
|
36
|
+
"!dist/**/__tests__/**",
|
|
37
|
+
"src",
|
|
38
|
+
"!src/**/*.test.ts",
|
|
39
|
+
"!src/**/test-helpers.ts",
|
|
40
|
+
"!src/**/test-support.ts",
|
|
41
|
+
"!src/**/test-support/**",
|
|
42
|
+
"!src/**/testing/**",
|
|
43
|
+
"LICENSE",
|
|
44
|
+
"NOTICE",
|
|
45
|
+
"README.md",
|
|
46
|
+
"THIRD_PARTY_LICENSES.md"
|
|
47
|
+
],
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@untangle-code/domain": "0.1.1",
|
|
50
|
+
"@untangle-code/observability": "0.1.1"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "22.19.7",
|
|
54
|
+
"typescript": "5.9.3",
|
|
55
|
+
"vitest": "3.2.7",
|
|
56
|
+
"@untangle-code/testkit": "0.1.1"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "node ../../scripts/tsc-build.mjs tsconfig.json",
|
|
60
|
+
"typecheck": "tsc -p tsconfig.typecheck.json",
|
|
61
|
+
"test": "vitest run",
|
|
62
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
63
|
+
}
|
|
6
64
|
}
|
package/src/abort.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AbortSignal helpers shared by every long-running method in this package
|
|
3
|
+
* (spec.md §22: public APIs MUST support abort signals; cancellation
|
|
4
|
+
* surfaces as `UntangleError` with code `JOB_CANCELLED`).
|
|
5
|
+
*/
|
|
6
|
+
import { isUntangleError } from "@untangle-code/domain";
|
|
7
|
+
import { jobCancelledError } from "@untangle-code/observability";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Throws `UntangleError("JOB_CANCELLED", …)` when `signal` is already
|
|
11
|
+
* aborted. Called at every safe batch boundary (architecture.md §21.3).
|
|
12
|
+
*/
|
|
13
|
+
export function throwIfAborted(signal: AbortSignal | undefined, operation: string): void {
|
|
14
|
+
if (signal?.aborted) {
|
|
15
|
+
throw jobCancelledError(`"${operation}" was aborted`, { operation });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** True when `error` is an `UntangleError` with code `JOB_CANCELLED`. */
|
|
20
|
+
export function isJobCancelledError(error: unknown): boolean {
|
|
21
|
+
return isUntangleError(error) && error.code === "JOB_CANCELLED";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Resolves when `signal` aborts. The listener is removed as soon as
|
|
26
|
+
* `cleanup` aborts, so racing this against another promise does not leak
|
|
27
|
+
* one listener per wait.
|
|
28
|
+
*/
|
|
29
|
+
export function abortedPromise(signal: AbortSignal, cleanup: AbortSignal): Promise<void> {
|
|
30
|
+
return new Promise<void>((resolve) => {
|
|
31
|
+
if (signal.aborted) {
|
|
32
|
+
resolve();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
signal.addEventListener("abort", () => resolve(), { once: true, signal: cleanup });
|
|
36
|
+
});
|
|
37
|
+
}
|