@seenn/node 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +18 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +36 -2
- package/dist/client.js.map +1 -1
- package/dist/errors.js +0 -6
- package/dist/errors.js.map +1 -1
- package/dist/http.js +0 -1
- package/dist/http.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/job.d.ts +16 -0
- package/dist/job.d.ts.map +1 -1
- package/dist/job.js +28 -22
- package/dist/job.js.map +1 -1
- package/dist/types.d.ts +42 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -11
- package/src/client.ts +39 -0
- package/src/index.ts +3 -0
- package/src/job.ts +36 -0
- package/src/types.ts +46 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Job } from './job.js';
|
|
2
|
-
import type { StartJobParams, CreateParentParams, CreateChildParams, CreateBatchParams, ChildJobSummary } from './types.js';
|
|
2
|
+
import type { StartJobParams, CreateParentParams, CreateChildParams, CreateBatchParams, ChildJobSummary, EtaStats } from './types.js';
|
|
3
3
|
export interface SeennConfig {
|
|
4
4
|
/** API key (sk_live_xxx or sk_test_xxx) */
|
|
5
5
|
apiKey: string;
|
|
@@ -62,5 +62,22 @@ export declare class SeennClient {
|
|
|
62
62
|
children: Job[];
|
|
63
63
|
}>;
|
|
64
64
|
};
|
|
65
|
+
/**
|
|
66
|
+
* ETA (Estimated Time of Arrival) resource
|
|
67
|
+
*/
|
|
68
|
+
get eta(): {
|
|
69
|
+
/**
|
|
70
|
+
* Get ETA statistics for a specific etaKey (workflowId or jobType)
|
|
71
|
+
*/
|
|
72
|
+
getStats: (etaKey: string) => Promise<EtaStats | null>;
|
|
73
|
+
/**
|
|
74
|
+
* List all ETA statistics for the app
|
|
75
|
+
*/
|
|
76
|
+
list: () => Promise<EtaStats[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Reset ETA statistics for a specific etaKey (admin use)
|
|
79
|
+
*/
|
|
80
|
+
reset: (etaKey: string) => Promise<void>;
|
|
81
|
+
};
|
|
65
82
|
}
|
|
66
83
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAEjB,eAAe,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAEjB,eAAe,EACf,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;gBAEnC,MAAM,EAAE,WAAW;IAoB/B;;OAEG;IACH,IAAI,IAAI;QAEJ;;WAEG;wBACmB,cAAc,KAAG,OAAO,CAAC,GAAG,CAAC;QAKnD;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC;QAKxC;;WAEG;uBACkB,MAAM,YAAY;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE;;;;QAgB1E;;WAEG;+BAC0B,kBAAkB,KAAG,OAAO,CAAC,GAAG,CAAC;QAa9D;;WAEG;8BACyB,iBAAiB,KAAG,OAAO,CAAC,GAAG,CAAC;QAa5D;;WAEG;uCACkC,MAAM,KAAG,OAAO,CAAC;YAAE,MAAM,EAAE,GAAG,CAAC;YAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;SAAE,CAAC;QAUnG;;;WAGG;8BACyB,iBAAiB,KAAG,OAAO,CAAC;YAAE,MAAM,EAAE,GAAG,CAAC;YAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC;MAgC5F;IAED;;OAEG;IACH,IAAI,GAAG;QAEH;;WAEG;2BACsB,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAa1D;;WAEG;oBACa,OAAO,CAAC,QAAQ,EAAE,CAAC;QAKnC;;WAEG;wBACmB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAI/C;CACF"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Job } from './job.js';
|
|
2
2
|
import { HttpClient } from './http.js';
|
|
3
3
|
export class SeennClient {
|
|
4
|
-
http;
|
|
5
|
-
config;
|
|
6
4
|
constructor(config) {
|
|
7
5
|
if (!config.apiKey) {
|
|
8
6
|
throw new Error('apiKey is required');
|
|
@@ -124,5 +122,41 @@ export class SeennClient {
|
|
|
124
122
|
},
|
|
125
123
|
};
|
|
126
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* ETA (Estimated Time of Arrival) resource
|
|
127
|
+
*/
|
|
128
|
+
get eta() {
|
|
129
|
+
return {
|
|
130
|
+
/**
|
|
131
|
+
* Get ETA statistics for a specific etaKey (workflowId or jobType)
|
|
132
|
+
*/
|
|
133
|
+
getStats: async (etaKey) => {
|
|
134
|
+
try {
|
|
135
|
+
const response = await this.http.get(`/v1/eta/${encodeURIComponent(etaKey)}`);
|
|
136
|
+
return response;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
// Return null if no stats exist yet
|
|
140
|
+
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
/**
|
|
147
|
+
* List all ETA statistics for the app
|
|
148
|
+
*/
|
|
149
|
+
list: async () => {
|
|
150
|
+
const response = await this.http.get('/v1/eta');
|
|
151
|
+
return response.stats;
|
|
152
|
+
},
|
|
153
|
+
/**
|
|
154
|
+
* Reset ETA statistics for a specific etaKey (admin use)
|
|
155
|
+
*/
|
|
156
|
+
reset: async (etaKey) => {
|
|
157
|
+
await this.http.delete(`/v1/eta/${encodeURIComponent(etaKey)}`);
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
127
161
|
}
|
|
128
162
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export class SeennError extends Error {
|
|
2
|
-
code;
|
|
3
|
-
statusCode;
|
|
4
|
-
details;
|
|
5
2
|
constructor(message, code, statusCode = 500, details) {
|
|
6
3
|
super(message);
|
|
7
4
|
this.code = code;
|
|
@@ -32,9 +29,6 @@ export class NotFoundError extends SeennError {
|
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
31
|
export class RateLimitError extends SeennError {
|
|
35
|
-
retryAfter;
|
|
36
|
-
limit;
|
|
37
|
-
remaining;
|
|
38
32
|
constructor(retryAfter, limit, remaining) {
|
|
39
33
|
super(`Rate limit exceeded. Retry after ${retryAfter} seconds`, 'RATE_LIMIT_EXCEEDED', 429, {
|
|
40
34
|
retryAfter,
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YACE,OAAe,EACC,IAAY,EACZ,aAAqB,GAAG,EACxB,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAc;QACxB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,QAAgB,EAAE,EAAU;QACtC,KAAK,CAAC,GAAG,QAAQ,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C,YACkB,UAAkB,EAClB,KAAa,EACb,SAAiB;QAEjC,KAAK,CAAC,oCAAoC,UAAU,UAAU,EAAE,qBAAqB,EAAE,GAAG,EAAE;YAC1F,UAAU;YACV,KAAK;YACL,SAAS;SACV,CAAC,CAAC;QARa,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAQ;QACb,cAAS,GAAT,SAAS,CAAQ;QAOjC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,YAAY,UAAkB,4BAA4B;QACxD,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/http.js
CHANGED
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAkBrB,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { SeennClient } from './client.js';
|
|
|
2
2
|
export type { SeennConfig } from './client.js';
|
|
3
3
|
export { Job } from './job.js';
|
|
4
4
|
export type { JobStatus, JobData, ProgressOptions, CompleteOptions, FailOptions } from './job.js';
|
|
5
|
-
export type { StartJobParams, ProgressParams, CompleteParams, FailParams, QueueInfo, StageInfo, JobResult, JobError, ChildProgressMode, ChildJobSummary, ParentInfo, ChildrenStats, CreateParentParams, CreateChildParams, CreateBatchParams, ParentWithChildren, } from './types.js';
|
|
5
|
+
export type { StartJobParams, ProgressParams, CompleteParams, FailParams, QueueInfo, StageInfo, JobResult, JobError, ChildProgressMode, ChildJobSummary, ParentInfo, ChildrenStats, CreateParentParams, CreateChildParams, CreateBatchParams, ParentWithChildren, EtaStats, DefaultEtaConfig, } from './types.js';
|
|
6
6
|
export { SeennError, RateLimitError, ValidationError, NotFoundError } from './errors.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElG,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EAER,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElG,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EAER,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAElB,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AA0B/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/job.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface JobData {
|
|
|
7
7
|
userId: string;
|
|
8
8
|
jobType: string;
|
|
9
9
|
title: string;
|
|
10
|
+
workflowId?: string;
|
|
10
11
|
status: JobStatus;
|
|
11
12
|
progress: number;
|
|
12
13
|
message?: string;
|
|
@@ -16,8 +17,11 @@ export interface JobData {
|
|
|
16
17
|
error?: JobError;
|
|
17
18
|
metadata?: Record<string, unknown>;
|
|
18
19
|
estimatedCompletionAt?: string;
|
|
20
|
+
etaConfidence?: number;
|
|
21
|
+
etaBasedOn?: number;
|
|
19
22
|
createdAt: Date;
|
|
20
23
|
updatedAt: Date;
|
|
24
|
+
startedAt?: Date;
|
|
21
25
|
completedAt?: Date;
|
|
22
26
|
parent?: ParentInfo;
|
|
23
27
|
children?: ChildrenStats;
|
|
@@ -47,6 +51,7 @@ export declare class Job implements JobData {
|
|
|
47
51
|
readonly userId: string;
|
|
48
52
|
readonly jobType: string;
|
|
49
53
|
readonly title: string;
|
|
54
|
+
readonly workflowId?: string;
|
|
50
55
|
status: JobStatus;
|
|
51
56
|
progress: number;
|
|
52
57
|
message?: string;
|
|
@@ -56,8 +61,11 @@ export declare class Job implements JobData {
|
|
|
56
61
|
error?: JobError;
|
|
57
62
|
metadata?: Record<string, unknown>;
|
|
58
63
|
estimatedCompletionAt?: string;
|
|
64
|
+
etaConfidence?: number;
|
|
65
|
+
etaBasedOn?: number;
|
|
59
66
|
readonly createdAt: Date;
|
|
60
67
|
updatedAt: Date;
|
|
68
|
+
startedAt?: Date;
|
|
61
69
|
completedAt?: Date;
|
|
62
70
|
parent?: ParentInfo;
|
|
63
71
|
children?: ChildrenStats;
|
|
@@ -102,6 +110,14 @@ export declare class Job implements JobData {
|
|
|
102
110
|
pending: number;
|
|
103
111
|
total: number;
|
|
104
112
|
} | null;
|
|
113
|
+
/**
|
|
114
|
+
* Get remaining time until ETA in milliseconds (null if no ETA)
|
|
115
|
+
*/
|
|
116
|
+
get etaRemaining(): number | null;
|
|
117
|
+
/**
|
|
118
|
+
* Check if job is past its ETA but still running
|
|
119
|
+
*/
|
|
120
|
+
get isPastEta(): boolean;
|
|
105
121
|
/**
|
|
106
122
|
* Get plain object representation
|
|
107
123
|
*/
|
package/dist/job.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
|
package/dist/job.js
CHANGED
|
@@ -2,34 +2,13 @@
|
|
|
2
2
|
* Job instance with fluent API for updates
|
|
3
3
|
*/
|
|
4
4
|
export class Job {
|
|
5
|
-
id;
|
|
6
|
-
appId;
|
|
7
|
-
userId;
|
|
8
|
-
jobType;
|
|
9
|
-
title;
|
|
10
|
-
status;
|
|
11
|
-
progress;
|
|
12
|
-
message;
|
|
13
|
-
queue;
|
|
14
|
-
stage;
|
|
15
|
-
result;
|
|
16
|
-
error;
|
|
17
|
-
metadata;
|
|
18
|
-
estimatedCompletionAt;
|
|
19
|
-
createdAt;
|
|
20
|
-
updatedAt;
|
|
21
|
-
completedAt;
|
|
22
|
-
// Parent-child fields
|
|
23
|
-
parent;
|
|
24
|
-
children;
|
|
25
|
-
childProgressMode;
|
|
26
|
-
http;
|
|
27
5
|
constructor(data, http) {
|
|
28
6
|
this.id = data.id;
|
|
29
7
|
this.appId = data.appId;
|
|
30
8
|
this.userId = data.userId;
|
|
31
9
|
this.jobType = data.jobType;
|
|
32
10
|
this.title = data.title;
|
|
11
|
+
this.workflowId = data.workflowId;
|
|
33
12
|
this.status = data.status;
|
|
34
13
|
this.progress = data.progress;
|
|
35
14
|
this.message = data.message;
|
|
@@ -39,8 +18,11 @@ export class Job {
|
|
|
39
18
|
this.error = data.error;
|
|
40
19
|
this.metadata = data.metadata;
|
|
41
20
|
this.estimatedCompletionAt = data.estimatedCompletionAt;
|
|
21
|
+
this.etaConfidence = data.etaConfidence;
|
|
22
|
+
this.etaBasedOn = data.etaBasedOn;
|
|
42
23
|
this.createdAt = new Date(data.createdAt);
|
|
43
24
|
this.updatedAt = new Date(data.updatedAt);
|
|
25
|
+
this.startedAt = data.startedAt ? new Date(data.startedAt) : undefined;
|
|
44
26
|
this.completedAt = data.completedAt ? new Date(data.completedAt) : undefined;
|
|
45
27
|
// Parent-child fields
|
|
46
28
|
this.parent = data.parent;
|
|
@@ -118,6 +100,23 @@ export class Job {
|
|
|
118
100
|
total: this.children.total,
|
|
119
101
|
};
|
|
120
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Get remaining time until ETA in milliseconds (null if no ETA)
|
|
105
|
+
*/
|
|
106
|
+
get etaRemaining() {
|
|
107
|
+
if (!this.estimatedCompletionAt)
|
|
108
|
+
return null;
|
|
109
|
+
const eta = new Date(this.estimatedCompletionAt).getTime();
|
|
110
|
+
return Math.max(0, eta - Date.now());
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if job is past its ETA but still running
|
|
114
|
+
*/
|
|
115
|
+
get isPastEta() {
|
|
116
|
+
if (!this.estimatedCompletionAt || this.isTerminal)
|
|
117
|
+
return false;
|
|
118
|
+
return new Date(this.estimatedCompletionAt).getTime() < Date.now();
|
|
119
|
+
}
|
|
121
120
|
/**
|
|
122
121
|
* Get plain object representation
|
|
123
122
|
*/
|
|
@@ -128,6 +127,7 @@ export class Job {
|
|
|
128
127
|
userId: this.userId,
|
|
129
128
|
jobType: this.jobType,
|
|
130
129
|
title: this.title,
|
|
130
|
+
workflowId: this.workflowId,
|
|
131
131
|
status: this.status,
|
|
132
132
|
progress: this.progress,
|
|
133
133
|
message: this.message,
|
|
@@ -137,8 +137,11 @@ export class Job {
|
|
|
137
137
|
error: this.error,
|
|
138
138
|
metadata: this.metadata,
|
|
139
139
|
estimatedCompletionAt: this.estimatedCompletionAt,
|
|
140
|
+
etaConfidence: this.etaConfidence,
|
|
141
|
+
etaBasedOn: this.etaBasedOn,
|
|
140
142
|
createdAt: this.createdAt,
|
|
141
143
|
updatedAt: this.updatedAt,
|
|
144
|
+
startedAt: this.startedAt,
|
|
142
145
|
completedAt: this.completedAt,
|
|
143
146
|
parent: this.parent,
|
|
144
147
|
children: this.children,
|
|
@@ -155,7 +158,10 @@ export class Job {
|
|
|
155
158
|
this.error = response.error;
|
|
156
159
|
this.metadata = response.metadata;
|
|
157
160
|
this.estimatedCompletionAt = response.estimatedCompletionAt;
|
|
161
|
+
this.etaConfidence = response.etaConfidence;
|
|
162
|
+
this.etaBasedOn = response.etaBasedOn;
|
|
158
163
|
this.updatedAt = new Date(response.updatedAt);
|
|
164
|
+
this.startedAt = response.startedAt ? new Date(response.startedAt) : undefined;
|
|
159
165
|
this.completedAt = response.completedAt ? new Date(response.completedAt) : undefined;
|
|
160
166
|
this.parent = response.parent;
|
|
161
167
|
this.children = response.children;
|
package/dist/job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,14 +6,18 @@ export interface StartJobParams {
|
|
|
6
6
|
userId: string;
|
|
7
7
|
/** Human-readable title for the job */
|
|
8
8
|
title: string;
|
|
9
|
+
/** Workflow ID for ETA tracking (default: jobType) */
|
|
10
|
+
workflowId?: string;
|
|
9
11
|
/** Optional metadata (max 10KB) */
|
|
10
12
|
metadata?: Record<string, unknown>;
|
|
11
13
|
/** Optional initial queue information */
|
|
12
14
|
queue?: QueueInfo;
|
|
13
15
|
/** Optional initial stage information */
|
|
14
16
|
stage?: StageInfo;
|
|
15
|
-
/** Optional estimated completion time (ISO 8601) */
|
|
17
|
+
/** Optional estimated completion time (ISO 8601) - overrides auto ETA */
|
|
16
18
|
estimatedCompletionAt?: string;
|
|
19
|
+
/** Optional estimated duration in ms - overrides auto ETA */
|
|
20
|
+
estimatedDuration?: number;
|
|
17
21
|
/** Optional TTL in seconds (default: 30 days) */
|
|
18
22
|
ttlSeconds?: number;
|
|
19
23
|
/** Parent job ID (for child jobs) */
|
|
@@ -174,6 +178,8 @@ export interface JobResponse {
|
|
|
174
178
|
userId: string;
|
|
175
179
|
jobType: string;
|
|
176
180
|
title: string;
|
|
181
|
+
/** Workflow ID for ETA tracking (default: jobType) */
|
|
182
|
+
workflowId?: string;
|
|
177
183
|
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
178
184
|
progress: number;
|
|
179
185
|
message?: string;
|
|
@@ -182,9 +188,16 @@ export interface JobResponse {
|
|
|
182
188
|
result?: JobResult;
|
|
183
189
|
error?: JobError;
|
|
184
190
|
metadata?: Record<string, unknown>;
|
|
191
|
+
/** Estimated completion time (ISO 8601) */
|
|
185
192
|
estimatedCompletionAt?: string;
|
|
193
|
+
/** ETA confidence score (0.0 - 1.0) */
|
|
194
|
+
etaConfidence?: number;
|
|
195
|
+
/** Number of historical jobs used to calculate ETA */
|
|
196
|
+
etaBasedOn?: number;
|
|
186
197
|
createdAt: string;
|
|
187
198
|
updatedAt: string;
|
|
199
|
+
/** When the job actually started running */
|
|
200
|
+
startedAt?: string;
|
|
188
201
|
completedAt?: string;
|
|
189
202
|
/** Parent info (if this is a child job) */
|
|
190
203
|
parent?: ParentInfo;
|
|
@@ -193,4 +206,32 @@ export interface JobResponse {
|
|
|
193
206
|
/** Child progress mode (if this is a parent job) */
|
|
194
207
|
childProgressMode?: ChildProgressMode;
|
|
195
208
|
}
|
|
209
|
+
/** ETA statistics for a workflow */
|
|
210
|
+
export interface EtaStats {
|
|
211
|
+
/** ETA key (workflowId or jobType) */
|
|
212
|
+
etaKey: string;
|
|
213
|
+
/** Number of completed jobs in statistics */
|
|
214
|
+
count: number;
|
|
215
|
+
/** Average duration in milliseconds */
|
|
216
|
+
avgDuration: number;
|
|
217
|
+
/** Median duration (50th percentile) in milliseconds */
|
|
218
|
+
p50Duration: number;
|
|
219
|
+
/** 95th percentile duration in milliseconds */
|
|
220
|
+
p95Duration: number;
|
|
221
|
+
/** Minimum recorded duration */
|
|
222
|
+
minDuration: number;
|
|
223
|
+
/** Maximum recorded duration */
|
|
224
|
+
maxDuration: number;
|
|
225
|
+
/** Confidence score for ETA predictions (0.0 - 1.0) */
|
|
226
|
+
confidence: number;
|
|
227
|
+
/** Last time stats were updated */
|
|
228
|
+
lastUpdated: string;
|
|
229
|
+
}
|
|
230
|
+
/** Default ETA configuration */
|
|
231
|
+
export interface DefaultEtaConfig {
|
|
232
|
+
/** ETA key (workflowId or jobType) */
|
|
233
|
+
etaKey: string;
|
|
234
|
+
/** Default duration in milliseconds (used when no history) */
|
|
235
|
+
defaultDuration: number;
|
|
236
|
+
}
|
|
196
237
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAItE,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAItE,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2BAA2B;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAID,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAID,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAID,oCAAoC;AACpC,MAAM,WAAW,QAAQ;IACvB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seenn/node",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Seenn Node.js Backend SDK - Open source job state transport for real-time progress tracking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,19 +17,12 @@
|
|
|
17
17
|
"README.md",
|
|
18
18
|
"LICENSE"
|
|
19
19
|
],
|
|
20
|
-
"scripts": {
|
|
21
|
-
"build": "tsc",
|
|
22
|
-
"dev": "tsc --watch",
|
|
23
|
-
"lint": "tsc --noEmit",
|
|
24
|
-
"typecheck": "tsc --noEmit",
|
|
25
|
-
"test": "vitest run",
|
|
26
|
-
"test:watch": "vitest",
|
|
27
|
-
"prepublishOnly": "pnpm build"
|
|
28
|
-
},
|
|
29
20
|
"dependencies": {
|
|
30
21
|
"ulid": "^2.3.0"
|
|
31
22
|
},
|
|
32
23
|
"devDependencies": {
|
|
24
|
+
"@types/node": "^25.0.10",
|
|
25
|
+
"typescript": "^5.9.3",
|
|
33
26
|
"vitest": "^2.1.0"
|
|
34
27
|
},
|
|
35
28
|
"keywords": [
|
|
@@ -60,5 +53,13 @@
|
|
|
60
53
|
},
|
|
61
54
|
"engines": {
|
|
62
55
|
"node": ">=18.0.0"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "tsc",
|
|
59
|
+
"dev": "tsc --watch",
|
|
60
|
+
"lint": "tsc --noEmit",
|
|
61
|
+
"typecheck": "tsc --noEmit",
|
|
62
|
+
"test": "vitest run",
|
|
63
|
+
"test:watch": "vitest"
|
|
63
64
|
}
|
|
64
|
-
}
|
|
65
|
+
}
|
package/src/client.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
CreateBatchParams,
|
|
9
9
|
ParentWithChildren,
|
|
10
10
|
ChildJobSummary,
|
|
11
|
+
EtaStats,
|
|
11
12
|
} from './types.js';
|
|
12
13
|
|
|
13
14
|
export interface SeennConfig {
|
|
@@ -169,4 +170,42 @@ export class SeennClient {
|
|
|
169
170
|
},
|
|
170
171
|
};
|
|
171
172
|
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* ETA (Estimated Time of Arrival) resource
|
|
176
|
+
*/
|
|
177
|
+
get eta() {
|
|
178
|
+
return {
|
|
179
|
+
/**
|
|
180
|
+
* Get ETA statistics for a specific etaKey (workflowId or jobType)
|
|
181
|
+
*/
|
|
182
|
+
getStats: async (etaKey: string): Promise<EtaStats | null> => {
|
|
183
|
+
try {
|
|
184
|
+
const response = await this.http.get<EtaStats>(`/v1/eta/${encodeURIComponent(etaKey)}`);
|
|
185
|
+
return response;
|
|
186
|
+
} catch (error: unknown) {
|
|
187
|
+
// Return null if no stats exist yet
|
|
188
|
+
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* List all ETA statistics for the app
|
|
197
|
+
*/
|
|
198
|
+
list: async (): Promise<EtaStats[]> => {
|
|
199
|
+
const response = await this.http.get<{ stats: EtaStats[] }>('/v1/eta');
|
|
200
|
+
return response.stats;
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Reset ETA statistics for a specific etaKey (admin use)
|
|
205
|
+
*/
|
|
206
|
+
reset: async (etaKey: string): Promise<void> => {
|
|
207
|
+
await this.http.delete(`/v1/eta/${encodeURIComponent(etaKey)}`);
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
172
211
|
}
|
package/src/index.ts
CHANGED
package/src/job.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface JobData {
|
|
|
21
21
|
userId: string;
|
|
22
22
|
jobType: string;
|
|
23
23
|
title: string;
|
|
24
|
+
workflowId?: string;
|
|
24
25
|
status: JobStatus;
|
|
25
26
|
progress: number;
|
|
26
27
|
message?: string;
|
|
@@ -30,8 +31,11 @@ export interface JobData {
|
|
|
30
31
|
error?: JobError;
|
|
31
32
|
metadata?: Record<string, unknown>;
|
|
32
33
|
estimatedCompletionAt?: string;
|
|
34
|
+
etaConfidence?: number;
|
|
35
|
+
etaBasedOn?: number;
|
|
33
36
|
createdAt: Date;
|
|
34
37
|
updatedAt: Date;
|
|
38
|
+
startedAt?: Date;
|
|
35
39
|
completedAt?: Date;
|
|
36
40
|
// Parent-child fields
|
|
37
41
|
parent?: ParentInfo;
|
|
@@ -66,6 +70,7 @@ export class Job implements JobData {
|
|
|
66
70
|
readonly userId: string;
|
|
67
71
|
readonly jobType: string;
|
|
68
72
|
readonly title: string;
|
|
73
|
+
readonly workflowId?: string;
|
|
69
74
|
status: JobStatus;
|
|
70
75
|
progress: number;
|
|
71
76
|
message?: string;
|
|
@@ -75,8 +80,11 @@ export class Job implements JobData {
|
|
|
75
80
|
error?: JobError;
|
|
76
81
|
metadata?: Record<string, unknown>;
|
|
77
82
|
estimatedCompletionAt?: string;
|
|
83
|
+
etaConfidence?: number;
|
|
84
|
+
etaBasedOn?: number;
|
|
78
85
|
readonly createdAt: Date;
|
|
79
86
|
updatedAt: Date;
|
|
87
|
+
startedAt?: Date;
|
|
80
88
|
completedAt?: Date;
|
|
81
89
|
// Parent-child fields
|
|
82
90
|
parent?: ParentInfo;
|
|
@@ -91,6 +99,7 @@ export class Job implements JobData {
|
|
|
91
99
|
this.userId = data.userId;
|
|
92
100
|
this.jobType = data.jobType;
|
|
93
101
|
this.title = data.title;
|
|
102
|
+
this.workflowId = data.workflowId;
|
|
94
103
|
this.status = data.status;
|
|
95
104
|
this.progress = data.progress;
|
|
96
105
|
this.message = data.message;
|
|
@@ -100,8 +109,11 @@ export class Job implements JobData {
|
|
|
100
109
|
this.error = data.error;
|
|
101
110
|
this.metadata = data.metadata;
|
|
102
111
|
this.estimatedCompletionAt = data.estimatedCompletionAt;
|
|
112
|
+
this.etaConfidence = data.etaConfidence;
|
|
113
|
+
this.etaBasedOn = data.etaBasedOn;
|
|
103
114
|
this.createdAt = new Date(data.createdAt);
|
|
104
115
|
this.updatedAt = new Date(data.updatedAt);
|
|
116
|
+
this.startedAt = data.startedAt ? new Date(data.startedAt) : undefined;
|
|
105
117
|
this.completedAt = data.completedAt ? new Date(data.completedAt) : undefined;
|
|
106
118
|
// Parent-child fields
|
|
107
119
|
this.parent = data.parent;
|
|
@@ -203,6 +215,23 @@ export class Job implements JobData {
|
|
|
203
215
|
};
|
|
204
216
|
}
|
|
205
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Get remaining time until ETA in milliseconds (null if no ETA)
|
|
220
|
+
*/
|
|
221
|
+
get etaRemaining(): number | null {
|
|
222
|
+
if (!this.estimatedCompletionAt) return null;
|
|
223
|
+
const eta = new Date(this.estimatedCompletionAt).getTime();
|
|
224
|
+
return Math.max(0, eta - Date.now());
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Check if job is past its ETA but still running
|
|
229
|
+
*/
|
|
230
|
+
get isPastEta(): boolean {
|
|
231
|
+
if (!this.estimatedCompletionAt || this.isTerminal) return false;
|
|
232
|
+
return new Date(this.estimatedCompletionAt).getTime() < Date.now();
|
|
233
|
+
}
|
|
234
|
+
|
|
206
235
|
/**
|
|
207
236
|
* Get plain object representation
|
|
208
237
|
*/
|
|
@@ -213,6 +242,7 @@ export class Job implements JobData {
|
|
|
213
242
|
userId: this.userId,
|
|
214
243
|
jobType: this.jobType,
|
|
215
244
|
title: this.title,
|
|
245
|
+
workflowId: this.workflowId,
|
|
216
246
|
status: this.status,
|
|
217
247
|
progress: this.progress,
|
|
218
248
|
message: this.message,
|
|
@@ -222,8 +252,11 @@ export class Job implements JobData {
|
|
|
222
252
|
error: this.error,
|
|
223
253
|
metadata: this.metadata,
|
|
224
254
|
estimatedCompletionAt: this.estimatedCompletionAt,
|
|
255
|
+
etaConfidence: this.etaConfidence,
|
|
256
|
+
etaBasedOn: this.etaBasedOn,
|
|
225
257
|
createdAt: this.createdAt,
|
|
226
258
|
updatedAt: this.updatedAt,
|
|
259
|
+
startedAt: this.startedAt,
|
|
227
260
|
completedAt: this.completedAt,
|
|
228
261
|
parent: this.parent,
|
|
229
262
|
children: this.children,
|
|
@@ -241,7 +274,10 @@ export class Job implements JobData {
|
|
|
241
274
|
this.error = response.error;
|
|
242
275
|
this.metadata = response.metadata;
|
|
243
276
|
this.estimatedCompletionAt = response.estimatedCompletionAt;
|
|
277
|
+
this.etaConfidence = response.etaConfidence;
|
|
278
|
+
this.etaBasedOn = response.etaBasedOn;
|
|
244
279
|
this.updatedAt = new Date(response.updatedAt);
|
|
280
|
+
this.startedAt = response.startedAt ? new Date(response.startedAt) : undefined;
|
|
245
281
|
this.completedAt = response.completedAt ? new Date(response.completedAt) : undefined;
|
|
246
282
|
this.parent = response.parent;
|
|
247
283
|
this.children = response.children;
|
package/src/types.ts
CHANGED
|
@@ -10,14 +10,18 @@ export interface StartJobParams {
|
|
|
10
10
|
userId: string;
|
|
11
11
|
/** Human-readable title for the job */
|
|
12
12
|
title: string;
|
|
13
|
+
/** Workflow ID for ETA tracking (default: jobType) */
|
|
14
|
+
workflowId?: string;
|
|
13
15
|
/** Optional metadata (max 10KB) */
|
|
14
16
|
metadata?: Record<string, unknown>;
|
|
15
17
|
/** Optional initial queue information */
|
|
16
18
|
queue?: QueueInfo;
|
|
17
19
|
/** Optional initial stage information */
|
|
18
20
|
stage?: StageInfo;
|
|
19
|
-
/** Optional estimated completion time (ISO 8601) */
|
|
21
|
+
/** Optional estimated completion time (ISO 8601) - overrides auto ETA */
|
|
20
22
|
estimatedCompletionAt?: string;
|
|
23
|
+
/** Optional estimated duration in ms - overrides auto ETA */
|
|
24
|
+
estimatedDuration?: number;
|
|
21
25
|
/** Optional TTL in seconds (default: 30 days) */
|
|
22
26
|
ttlSeconds?: number;
|
|
23
27
|
/** Parent job ID (for child jobs) */
|
|
@@ -199,6 +203,8 @@ export interface JobResponse {
|
|
|
199
203
|
userId: string;
|
|
200
204
|
jobType: string;
|
|
201
205
|
title: string;
|
|
206
|
+
/** Workflow ID for ETA tracking (default: jobType) */
|
|
207
|
+
workflowId?: string;
|
|
202
208
|
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
203
209
|
progress: number;
|
|
204
210
|
message?: string;
|
|
@@ -207,9 +213,16 @@ export interface JobResponse {
|
|
|
207
213
|
result?: JobResult;
|
|
208
214
|
error?: JobError;
|
|
209
215
|
metadata?: Record<string, unknown>;
|
|
216
|
+
/** Estimated completion time (ISO 8601) */
|
|
210
217
|
estimatedCompletionAt?: string;
|
|
218
|
+
/** ETA confidence score (0.0 - 1.0) */
|
|
219
|
+
etaConfidence?: number;
|
|
220
|
+
/** Number of historical jobs used to calculate ETA */
|
|
221
|
+
etaBasedOn?: number;
|
|
211
222
|
createdAt: string;
|
|
212
223
|
updatedAt: string;
|
|
224
|
+
/** When the job actually started running */
|
|
225
|
+
startedAt?: string;
|
|
213
226
|
completedAt?: string;
|
|
214
227
|
/** Parent info (if this is a child job) */
|
|
215
228
|
parent?: ParentInfo;
|
|
@@ -218,3 +231,35 @@ export interface JobResponse {
|
|
|
218
231
|
/** Child progress mode (if this is a parent job) */
|
|
219
232
|
childProgressMode?: ChildProgressMode;
|
|
220
233
|
}
|
|
234
|
+
|
|
235
|
+
// ETA Types
|
|
236
|
+
|
|
237
|
+
/** ETA statistics for a workflow */
|
|
238
|
+
export interface EtaStats {
|
|
239
|
+
/** ETA key (workflowId or jobType) */
|
|
240
|
+
etaKey: string;
|
|
241
|
+
/** Number of completed jobs in statistics */
|
|
242
|
+
count: number;
|
|
243
|
+
/** Average duration in milliseconds */
|
|
244
|
+
avgDuration: number;
|
|
245
|
+
/** Median duration (50th percentile) in milliseconds */
|
|
246
|
+
p50Duration: number;
|
|
247
|
+
/** 95th percentile duration in milliseconds */
|
|
248
|
+
p95Duration: number;
|
|
249
|
+
/** Minimum recorded duration */
|
|
250
|
+
minDuration: number;
|
|
251
|
+
/** Maximum recorded duration */
|
|
252
|
+
maxDuration: number;
|
|
253
|
+
/** Confidence score for ETA predictions (0.0 - 1.0) */
|
|
254
|
+
confidence: number;
|
|
255
|
+
/** Last time stats were updated */
|
|
256
|
+
lastUpdated: string;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/** Default ETA configuration */
|
|
260
|
+
export interface DefaultEtaConfig {
|
|
261
|
+
/** ETA key (workflowId or jobType) */
|
|
262
|
+
etaKey: string;
|
|
263
|
+
/** Default duration in milliseconds (used when no history) */
|
|
264
|
+
defaultDuration: number;
|
|
265
|
+
}
|