@arke-institute/rhiza 0.1.0
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 +106 -0
- package/dist/__tests__/fixtures/index.d.ts +9 -0
- package/dist/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/index.js +12 -0
- package/dist/__tests__/fixtures/index.js.map +1 -0
- package/dist/__tests__/fixtures/kladoi/index.d.ts +165 -0
- package/dist/__tests__/fixtures/kladoi/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/kladoi/index.js +270 -0
- package/dist/__tests__/fixtures/kladoi/index.js.map +1 -0
- package/dist/__tests__/fixtures/logs/index.d.ts +19 -0
- package/dist/__tests__/fixtures/logs/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/logs/index.js +545 -0
- package/dist/__tests__/fixtures/logs/index.js.map +1 -0
- package/dist/__tests__/fixtures/mock-client.d.ts +127 -0
- package/dist/__tests__/fixtures/mock-client.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-client.js +415 -0
- package/dist/__tests__/fixtures/mock-client.js.map +1 -0
- package/dist/__tests__/fixtures/rhizai/index.d.ts +54 -0
- package/dist/__tests__/fixtures/rhizai/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/rhizai/index.js +283 -0
- package/dist/__tests__/fixtures/rhizai/index.js.map +1 -0
- package/dist/__tests__/unit/fixtures.test.d.ts +10 -0
- package/dist/__tests__/unit/fixtures.test.d.ts.map +1 -0
- package/dist/__tests__/unit/fixtures.test.js +275 -0
- package/dist/__tests__/unit/fixtures.test.js.map +1 -0
- package/dist/__tests__/unit/handoff/gather.test.d.ts +8 -0
- package/dist/__tests__/unit/handoff/gather.test.d.ts.map +1 -0
- package/dist/__tests__/unit/handoff/gather.test.js +176 -0
- package/dist/__tests__/unit/handoff/gather.test.js.map +1 -0
- package/dist/__tests__/unit/handoff/interpret.test.d.ts +9 -0
- package/dist/__tests__/unit/handoff/interpret.test.d.ts.map +1 -0
- package/dist/__tests__/unit/handoff/interpret.test.js +370 -0
- package/dist/__tests__/unit/handoff/interpret.test.js.map +1 -0
- package/dist/__tests__/unit/handoff/route.test.d.ts +8 -0
- package/dist/__tests__/unit/handoff/route.test.d.ts.map +1 -0
- package/dist/__tests__/unit/handoff/route.test.js +271 -0
- package/dist/__tests__/unit/handoff/route.test.js.map +1 -0
- package/dist/__tests__/unit/handoff/scatter.test.d.ts +7 -0
- package/dist/__tests__/unit/handoff/scatter.test.d.ts.map +1 -0
- package/dist/__tests__/unit/handoff/scatter.test.js +54 -0
- package/dist/__tests__/unit/handoff/scatter.test.js.map +1 -0
- package/dist/__tests__/unit/resume.test.d.ts +8 -0
- package/dist/__tests__/unit/resume.test.d.ts.map +1 -0
- package/dist/__tests__/unit/resume.test.js +134 -0
- package/dist/__tests__/unit/resume.test.js.map +1 -0
- package/dist/__tests__/unit/status.test.d.ts +8 -0
- package/dist/__tests__/unit/status.test.d.ts.map +1 -0
- package/dist/__tests__/unit/status.test.js +164 -0
- package/dist/__tests__/unit/status.test.js.map +1 -0
- package/dist/__tests__/unit/target.test.d.ts +8 -0
- package/dist/__tests__/unit/target.test.d.ts.map +1 -0
- package/dist/__tests__/unit/target.test.js +116 -0
- package/dist/__tests__/unit/target.test.js.map +1 -0
- package/dist/__tests__/unit/traverse.test.d.ts +8 -0
- package/dist/__tests__/unit/traverse.test.d.ts.map +1 -0
- package/dist/__tests__/unit/traverse.test.js +143 -0
- package/dist/__tests__/unit/traverse.test.js.map +1 -0
- package/dist/__tests__/unit/validation/klados.test.d.ts +16 -0
- package/dist/__tests__/unit/validation/klados.test.d.ts.map +1 -0
- package/dist/__tests__/unit/validation/klados.test.js +275 -0
- package/dist/__tests__/unit/validation/klados.test.js.map +1 -0
- package/dist/__tests__/unit/validation/rhiza.test.d.ts +16 -0
- package/dist/__tests__/unit/validation/rhiza.test.d.ts.map +1 -0
- package/dist/__tests__/unit/validation/rhiza.test.js +612 -0
- package/dist/__tests__/unit/validation/rhiza.test.js.map +1 -0
- package/dist/__tests__/unit/validation/runtime.test.d.ts +11 -0
- package/dist/__tests__/unit/validation/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/unit/validation/runtime.test.js +553 -0
- package/dist/__tests__/unit/validation/runtime.test.js.map +1 -0
- package/dist/__tests__/unit/worker/errors.test.d.ts +2 -0
- package/dist/__tests__/unit/worker/errors.test.d.ts.map +1 -0
- package/dist/__tests__/unit/worker/errors.test.js +226 -0
- package/dist/__tests__/unit/worker/errors.test.js.map +1 -0
- package/dist/__tests__/unit/worker/job.test.d.ts +2 -0
- package/dist/__tests__/unit/worker/job.test.d.ts.map +1 -0
- package/dist/__tests__/unit/worker/job.test.js +233 -0
- package/dist/__tests__/unit/worker/job.test.js.map +1 -0
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/interface.d.ts +142 -0
- package/dist/client/interface.d.ts.map +1 -0
- package/dist/client/interface.js +8 -0
- package/dist/client/interface.js.map +1 -0
- package/dist/client/mock.d.ts +95 -0
- package/dist/client/mock.d.ts.map +1 -0
- package/dist/client/mock.js +795 -0
- package/dist/client/mock.js.map +1 -0
- package/dist/client/types.d.ts +344 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +8 -0
- package/dist/client/types.js.map +1 -0
- package/dist/handoff/gather-api.d.ts +60 -0
- package/dist/handoff/gather-api.d.ts.map +1 -0
- package/dist/handoff/gather-api.js +130 -0
- package/dist/handoff/gather-api.js.map +1 -0
- package/dist/handoff/gather.d.ts +59 -0
- package/dist/handoff/gather.d.ts.map +1 -0
- package/dist/handoff/gather.js +134 -0
- package/dist/handoff/gather.js.map +1 -0
- package/dist/handoff/index.d.ts +19 -0
- package/dist/handoff/index.d.ts.map +1 -0
- package/dist/handoff/index.js +25 -0
- package/dist/handoff/index.js.map +1 -0
- package/dist/handoff/interpret.d.ts +79 -0
- package/dist/handoff/interpret.d.ts.map +1 -0
- package/dist/handoff/interpret.js +197 -0
- package/dist/handoff/interpret.js.map +1 -0
- package/dist/handoff/invoke.d.ts +82 -0
- package/dist/handoff/invoke.d.ts.map +1 -0
- package/dist/handoff/invoke.js +196 -0
- package/dist/handoff/invoke.js.map +1 -0
- package/dist/handoff/route.d.ts +25 -0
- package/dist/handoff/route.d.ts.map +1 -0
- package/dist/handoff/route.js +65 -0
- package/dist/handoff/route.js.map +1 -0
- package/dist/handoff/scatter-api.d.ts +62 -0
- package/dist/handoff/scatter-api.d.ts.map +1 -0
- package/dist/handoff/scatter-api.js +81 -0
- package/dist/handoff/scatter-api.js.map +1 -0
- package/dist/handoff/scatter.d.ts +19 -0
- package/dist/handoff/scatter.d.ts.map +1 -0
- package/dist/handoff/scatter.js +27 -0
- package/dist/handoff/scatter.js.map +1 -0
- package/dist/handoff/target.d.ts +16 -0
- package/dist/handoff/target.d.ts.map +1 -0
- package/dist/handoff/target.js +51 -0
- package/dist/handoff/target.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +52 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +70 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/logging/writer.d.ts +63 -0
- package/dist/logging/writer.d.ts.map +1 -0
- package/dist/logging/writer.js +160 -0
- package/dist/logging/writer.js.map +1 -0
- package/dist/resume/index.d.ts +77 -0
- package/dist/resume/index.d.ts.map +1 -0
- package/dist/resume/index.js +110 -0
- package/dist/resume/index.js.map +1 -0
- package/dist/status/index.d.ts +54 -0
- package/dist/status/index.d.ts.map +1 -0
- package/dist/status/index.js +107 -0
- package/dist/status/index.js.map +1 -0
- package/dist/traverse/index.d.ts +53 -0
- package/dist/traverse/index.d.ts.map +1 -0
- package/dist/traverse/index.js +142 -0
- package/dist/traverse/index.js.map +1 -0
- package/dist/types/batch.d.ts +53 -0
- package/dist/types/batch.d.ts.map +1 -0
- package/dist/types/batch.js +2 -0
- package/dist/types/batch.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/klados.d.ts +63 -0
- package/dist/types/klados.d.ts.map +1 -0
- package/dist/types/klados.js +2 -0
- package/dist/types/klados.js.map +1 -0
- package/dist/types/log.d.ts +107 -0
- package/dist/types/log.d.ts.map +1 -0
- package/dist/types/log.js +2 -0
- package/dist/types/log.js.map +1 -0
- package/dist/types/refs.d.ts +58 -0
- package/dist/types/refs.d.ts.map +1 -0
- package/dist/types/refs.js +43 -0
- package/dist/types/refs.js.map +1 -0
- package/dist/types/request.d.ts +69 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +2 -0
- package/dist/types/request.js.map +1 -0
- package/dist/types/response.d.ts +31 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +2 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/rhiza.d.ts +100 -0
- package/dist/types/rhiza.d.ts.map +1 -0
- package/dist/types/rhiza.js +2 -0
- package/dist/types/rhiza.js.map +1 -0
- package/dist/types/status.d.ts +84 -0
- package/dist/types/status.d.ts.map +1 -0
- package/dist/types/status.js +2 -0
- package/dist/types/status.js.map +1 -0
- package/dist/utils/id.d.ts +15 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +25 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/validation/index.d.ts +9 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +9 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/validate-klados.d.ts +38 -0
- package/dist/validation/validate-klados.d.ts.map +1 -0
- package/dist/validation/validate-klados.js +139 -0
- package/dist/validation/validate-klados.js.map +1 -0
- package/dist/validation/validate-rhiza.d.ts +29 -0
- package/dist/validation/validate-rhiza.d.ts.map +1 -0
- package/dist/validation/validate-rhiza.js +382 -0
- package/dist/validation/validate-rhiza.js.map +1 -0
- package/dist/validation/validate-runtime.d.ts +28 -0
- package/dist/validation/validate-runtime.d.ts.map +1 -0
- package/dist/validation/validate-runtime.js +212 -0
- package/dist/validation/validate-runtime.js.map +1 -0
- package/dist/worker/errors.d.ts +77 -0
- package/dist/worker/errors.d.ts.map +1 -0
- package/dist/worker/errors.js +143 -0
- package/dist/worker/errors.js.map +1 -0
- package/dist/worker/index.d.ts +8 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +8 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/job.d.ts +150 -0
- package/dist/worker/job.d.ts.map +1 -0
- package/dist/worker/job.js +280 -0
- package/dist/worker/job.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Module
|
|
3
|
+
*
|
|
4
|
+
* Functions for building workflow status from log chains.
|
|
5
|
+
* Status provides an overview of workflow execution progress.
|
|
6
|
+
*/
|
|
7
|
+
import type { KladosLogEntry } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Overall workflow status
|
|
10
|
+
*/
|
|
11
|
+
export type WorkflowStatusType = 'pending' | 'running' | 'done' | 'error' | 'unknown';
|
|
12
|
+
/**
|
|
13
|
+
* Progress counters
|
|
14
|
+
*/
|
|
15
|
+
export interface ProgressCounters {
|
|
16
|
+
total: number;
|
|
17
|
+
pending: number;
|
|
18
|
+
running: number;
|
|
19
|
+
done: number;
|
|
20
|
+
error: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error summary in status
|
|
24
|
+
*/
|
|
25
|
+
export interface StatusError {
|
|
26
|
+
kladosId: string;
|
|
27
|
+
jobId: string;
|
|
28
|
+
code: string;
|
|
29
|
+
message: string;
|
|
30
|
+
retryable: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Complete workflow status
|
|
34
|
+
*/
|
|
35
|
+
export interface WorkflowStatus {
|
|
36
|
+
rhizaId: string;
|
|
37
|
+
status: WorkflowStatusType;
|
|
38
|
+
progress: ProgressCounters;
|
|
39
|
+
currentKladoi: string[];
|
|
40
|
+
errors: StatusError[];
|
|
41
|
+
startedAt?: string;
|
|
42
|
+
completedAt?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build workflow status from log chain
|
|
46
|
+
*
|
|
47
|
+
* Analyzes all logs to determine overall status, progress,
|
|
48
|
+
* current execution points, and any errors.
|
|
49
|
+
*
|
|
50
|
+
* @param logs - The log chain for the workflow
|
|
51
|
+
* @returns Complete workflow status
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildStatusFromLogs(logs: KladosLogEntry[]): WorkflowStatus;
|
|
54
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,cAAc,CAyD1E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Module
|
|
3
|
+
*
|
|
4
|
+
* Functions for building workflow status from log chains.
|
|
5
|
+
* Status provides an overview of workflow execution progress.
|
|
6
|
+
*/
|
|
7
|
+
import { findLeaves } from '../traverse';
|
|
8
|
+
/**
|
|
9
|
+
* Build workflow status from log chain
|
|
10
|
+
*
|
|
11
|
+
* Analyzes all logs to determine overall status, progress,
|
|
12
|
+
* current execution points, and any errors.
|
|
13
|
+
*
|
|
14
|
+
* @param logs - The log chain for the workflow
|
|
15
|
+
* @returns Complete workflow status
|
|
16
|
+
*/
|
|
17
|
+
export function buildStatusFromLogs(logs) {
|
|
18
|
+
if (logs.length === 0) {
|
|
19
|
+
return {
|
|
20
|
+
rhizaId: '',
|
|
21
|
+
status: 'unknown',
|
|
22
|
+
progress: { total: 0, pending: 0, running: 0, done: 0, error: 0 },
|
|
23
|
+
currentKladoi: [],
|
|
24
|
+
errors: [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Get rhiza ID from first log (empty string if not a workflow execution)
|
|
28
|
+
const rhizaId = logs[0].rhiza_id ?? '';
|
|
29
|
+
// Count by status
|
|
30
|
+
// Note: Log entries don't have a 'pending' state - they're created when running starts
|
|
31
|
+
const progress = {
|
|
32
|
+
total: logs.length,
|
|
33
|
+
pending: 0, // Logs are created when running starts, so never pending
|
|
34
|
+
running: logs.filter((l) => l.status === 'running').length,
|
|
35
|
+
done: logs.filter((l) => l.status === 'done').length,
|
|
36
|
+
error: logs.filter((l) => l.status === 'error').length,
|
|
37
|
+
};
|
|
38
|
+
// Find currently running kladoi
|
|
39
|
+
const currentKladoi = logs
|
|
40
|
+
.filter((l) => l.status === 'running')
|
|
41
|
+
.map((l) => l.klados_id);
|
|
42
|
+
// Collect errors
|
|
43
|
+
const errors = logs
|
|
44
|
+
.filter((l) => l.status === 'error')
|
|
45
|
+
.map((l) => ({
|
|
46
|
+
kladosId: l.klados_id,
|
|
47
|
+
jobId: l.job_id,
|
|
48
|
+
code: l.error?.code ?? 'UNKNOWN',
|
|
49
|
+
message: l.error?.message ?? 'Unknown error',
|
|
50
|
+
retryable: l.error?.retryable ?? false,
|
|
51
|
+
}));
|
|
52
|
+
// Determine overall status from leaves
|
|
53
|
+
const leaves = findLeaves(logs);
|
|
54
|
+
const status = determineOverallStatus(leaves);
|
|
55
|
+
// Timing
|
|
56
|
+
const startedAt = findEarliestStart(logs);
|
|
57
|
+
const completedAt = status === 'running' ? undefined : findLatestCompletion(logs);
|
|
58
|
+
return {
|
|
59
|
+
rhizaId,
|
|
60
|
+
status,
|
|
61
|
+
progress,
|
|
62
|
+
currentKladoi,
|
|
63
|
+
errors,
|
|
64
|
+
startedAt,
|
|
65
|
+
completedAt,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Determine overall status from leaf nodes
|
|
70
|
+
*/
|
|
71
|
+
function determineOverallStatus(leaves) {
|
|
72
|
+
if (leaves.length === 0) {
|
|
73
|
+
return 'unknown';
|
|
74
|
+
}
|
|
75
|
+
// If any leaf is running, workflow is running
|
|
76
|
+
if (leaves.some((l) => l.status === 'running')) {
|
|
77
|
+
return 'running';
|
|
78
|
+
}
|
|
79
|
+
// If any leaf is error, workflow has errors
|
|
80
|
+
if (leaves.some((l) => l.status === 'error')) {
|
|
81
|
+
return 'error';
|
|
82
|
+
}
|
|
83
|
+
// All leaves are done
|
|
84
|
+
return 'done';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Find earliest start time
|
|
88
|
+
*/
|
|
89
|
+
function findEarliestStart(logs) {
|
|
90
|
+
const starts = logs
|
|
91
|
+
.map((l) => l.started_at)
|
|
92
|
+
.filter((s) => s !== undefined)
|
|
93
|
+
.sort();
|
|
94
|
+
return starts[0];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Find latest completion time
|
|
98
|
+
*/
|
|
99
|
+
function findLatestCompletion(logs) {
|
|
100
|
+
const completions = logs
|
|
101
|
+
.map((l) => l.completed_at)
|
|
102
|
+
.filter((c) => c !== undefined)
|
|
103
|
+
.sort()
|
|
104
|
+
.reverse();
|
|
105
|
+
return completions[0];
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log Chain Traversal
|
|
3
|
+
*
|
|
4
|
+
* Functions for traversing log chains to find leaves, errors, and build trees.
|
|
5
|
+
* Log chains represent the execution history of a workflow.
|
|
6
|
+
*/
|
|
7
|
+
import type { KladosLogEntry } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Node in a log tree
|
|
10
|
+
*/
|
|
11
|
+
export interface LogNode {
|
|
12
|
+
log: KladosLogEntry;
|
|
13
|
+
children: LogNode[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Error leaf with context for resume
|
|
17
|
+
*/
|
|
18
|
+
export interface ErrorLeaf {
|
|
19
|
+
log: KladosLogEntry;
|
|
20
|
+
path: string[];
|
|
21
|
+
retryable: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Find all leaf logs (logs with no children)
|
|
25
|
+
*
|
|
26
|
+
* A leaf is a log that has no other logs pointing to it via from_logs.
|
|
27
|
+
* Leaves represent the current frontier of execution.
|
|
28
|
+
*
|
|
29
|
+
* @param logs - Array of log entries
|
|
30
|
+
* @returns Array of leaf log entries
|
|
31
|
+
*/
|
|
32
|
+
export declare function findLeaves(logs: KladosLogEntry[]): KladosLogEntry[];
|
|
33
|
+
/**
|
|
34
|
+
* Find all error leaves with context for resume
|
|
35
|
+
*
|
|
36
|
+
* Returns logs with status: error that are also leaves (no successful children).
|
|
37
|
+
* Includes the path from root for debugging and the retryable flag.
|
|
38
|
+
*
|
|
39
|
+
* @param logs - Array of log entries
|
|
40
|
+
* @returns Array of error leaves with context
|
|
41
|
+
*/
|
|
42
|
+
export declare function findErrorLeaves(logs: KladosLogEntry[]): ErrorLeaf[];
|
|
43
|
+
/**
|
|
44
|
+
* Build a tree structure from log entries
|
|
45
|
+
*
|
|
46
|
+
* The tree starts from the root log (no parents) and follows the
|
|
47
|
+
* from_logs references to build parent-child relationships.
|
|
48
|
+
*
|
|
49
|
+
* @param logs - Array of log entries
|
|
50
|
+
* @returns Root node of the tree, or null if empty
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildLogTree(logs: KladosLogEntry[]): LogNode | null;
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/traverse/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,cAAc,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAwBnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,CAiBnE;AAkED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,GAAG,IAAI,CAmBnE"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log Chain Traversal
|
|
3
|
+
*
|
|
4
|
+
* Functions for traversing log chains to find leaves, errors, and build trees.
|
|
5
|
+
* Log chains represent the execution history of a workflow.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Find all leaf logs (logs with no children)
|
|
9
|
+
*
|
|
10
|
+
* A leaf is a log that has no other logs pointing to it via from_logs.
|
|
11
|
+
* Leaves represent the current frontier of execution.
|
|
12
|
+
*
|
|
13
|
+
* @param logs - Array of log entries
|
|
14
|
+
* @returns Array of leaf log entries
|
|
15
|
+
*/
|
|
16
|
+
export function findLeaves(logs) {
|
|
17
|
+
if (logs.length === 0) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
// Build a set of all log IDs that are referenced as parents
|
|
21
|
+
const parentIds = new Set();
|
|
22
|
+
for (const log of logs) {
|
|
23
|
+
if (log.received?.from_logs) {
|
|
24
|
+
for (const parentId of log.received.from_logs) {
|
|
25
|
+
parentIds.add(parentId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Leaves are logs that are not parents of any other log
|
|
30
|
+
const leaves = logs.filter((log) => {
|
|
31
|
+
// A leaf is not referenced as a parent by any other log
|
|
32
|
+
return !logs.some((other) => other.received?.from_logs?.includes(log.id));
|
|
33
|
+
});
|
|
34
|
+
return leaves;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Find all error leaves with context for resume
|
|
38
|
+
*
|
|
39
|
+
* Returns logs with status: error that are also leaves (no successful children).
|
|
40
|
+
* Includes the path from root for debugging and the retryable flag.
|
|
41
|
+
*
|
|
42
|
+
* @param logs - Array of log entries
|
|
43
|
+
* @returns Array of error leaves with context
|
|
44
|
+
*/
|
|
45
|
+
export function findErrorLeaves(logs) {
|
|
46
|
+
if (logs.length === 0) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
// Build parent map for path construction
|
|
50
|
+
const parentMap = buildParentMap(logs);
|
|
51
|
+
// Find leaves that are errors
|
|
52
|
+
const leaves = findLeaves(logs);
|
|
53
|
+
const errorLeaves = leaves.filter((l) => l.status === 'error');
|
|
54
|
+
return errorLeaves.map((log) => ({
|
|
55
|
+
log,
|
|
56
|
+
path: buildPath(log, parentMap, logs),
|
|
57
|
+
retryable: log.error?.retryable ?? false,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build a map from log ID to its parent log IDs
|
|
62
|
+
*/
|
|
63
|
+
function buildParentMap(logs) {
|
|
64
|
+
const parentMap = new Map();
|
|
65
|
+
for (const log of logs) {
|
|
66
|
+
if (log.received?.from_logs) {
|
|
67
|
+
parentMap.set(log.id, log.received.from_logs);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return parentMap;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build the path from root to a log
|
|
74
|
+
*/
|
|
75
|
+
function buildPath(log, parentMap, logs) {
|
|
76
|
+
const logById = new Map(logs.map((l) => [l.id, l]));
|
|
77
|
+
const path = [];
|
|
78
|
+
const visited = new Set();
|
|
79
|
+
function traverse(currentId) {
|
|
80
|
+
if (visited.has(currentId)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
visited.add(currentId);
|
|
84
|
+
const current = logById.get(currentId);
|
|
85
|
+
if (!current) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
const parents = parentMap.get(currentId);
|
|
89
|
+
if (!parents || parents.length === 0) {
|
|
90
|
+
// This is the root
|
|
91
|
+
path.unshift(current.klados_id);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
// Traverse to first parent
|
|
95
|
+
if (traverse(parents[0])) {
|
|
96
|
+
path.push(current.klados_id);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
traverse(log.id);
|
|
102
|
+
// If path is empty or doesn't include this log, add it
|
|
103
|
+
if (path.length === 0 || path[path.length - 1] !== log.klados_id) {
|
|
104
|
+
path.push(log.klados_id);
|
|
105
|
+
}
|
|
106
|
+
return path;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Build a tree structure from log entries
|
|
110
|
+
*
|
|
111
|
+
* The tree starts from the root log (no parents) and follows the
|
|
112
|
+
* from_logs references to build parent-child relationships.
|
|
113
|
+
*
|
|
114
|
+
* @param logs - Array of log entries
|
|
115
|
+
* @returns Root node of the tree, or null if empty
|
|
116
|
+
*/
|
|
117
|
+
export function buildLogTree(logs) {
|
|
118
|
+
if (logs.length === 0) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const logById = new Map(logs.map((l) => [l.id, l]));
|
|
122
|
+
// Find root(s) - logs with no parents
|
|
123
|
+
const roots = logs.filter((log) => !log.received?.from_logs || log.received.from_logs.length === 0);
|
|
124
|
+
if (roots.length === 0) {
|
|
125
|
+
// No clear root, use the first log
|
|
126
|
+
return buildNode(logs[0], logById, logs);
|
|
127
|
+
}
|
|
128
|
+
// Use first root (typically there's only one)
|
|
129
|
+
return buildNode(roots[0], logById, logs);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Build a node and its children recursively
|
|
133
|
+
*/
|
|
134
|
+
function buildNode(log, logById, allLogs) {
|
|
135
|
+
// Find children - logs that have this log as a parent
|
|
136
|
+
const children = allLogs.filter((other) => other.received?.from_logs?.includes(log.id));
|
|
137
|
+
return {
|
|
138
|
+
log,
|
|
139
|
+
children: children.map((child) => buildNode(child, logById, allLogs)),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/traverse/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BatchEntity - Entity for coordinating scatter/gather
|
|
3
|
+
*/
|
|
4
|
+
export interface BatchEntity {
|
|
5
|
+
/** Entity ID */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Entity type */
|
|
8
|
+
type: 'batch';
|
|
9
|
+
properties: BatchProperties;
|
|
10
|
+
}
|
|
11
|
+
export interface BatchProperties {
|
|
12
|
+
/** Rhiza entity ID */
|
|
13
|
+
rhiza_id: string;
|
|
14
|
+
/** Job ID */
|
|
15
|
+
job_id: string;
|
|
16
|
+
/** Klados ID that created this batch */
|
|
17
|
+
source_klados: string;
|
|
18
|
+
/** Klados ID that receives gathered results */
|
|
19
|
+
gather_klados: string;
|
|
20
|
+
/** Total number of slots */
|
|
21
|
+
total: number;
|
|
22
|
+
/** Number of completed slots */
|
|
23
|
+
completed: number;
|
|
24
|
+
/** Overall batch status */
|
|
25
|
+
status: 'pending' | 'complete' | 'error';
|
|
26
|
+
/** Individual slot states */
|
|
27
|
+
slots: BatchSlot[];
|
|
28
|
+
/** When batch was created (ISO 8601) */
|
|
29
|
+
created_at: string;
|
|
30
|
+
/** When batch completed (ISO 8601) */
|
|
31
|
+
completed_at?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* BatchSlot - State of a single slot in the batch
|
|
35
|
+
*/
|
|
36
|
+
export interface BatchSlot {
|
|
37
|
+
/** Slot index (0-based) */
|
|
38
|
+
index: number;
|
|
39
|
+
/** Slot status */
|
|
40
|
+
status: 'pending' | 'complete' | 'error';
|
|
41
|
+
/** Output entity IDs (if complete) */
|
|
42
|
+
output_ids?: string[];
|
|
43
|
+
/** Job ID that processed this slot */
|
|
44
|
+
job_id?: string;
|
|
45
|
+
/** When slot completed (ISO 8601) */
|
|
46
|
+
completed_at?: string;
|
|
47
|
+
/** Error info (if error) */
|
|
48
|
+
error?: {
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/types/batch.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IAEX,kBAAkB;IAClB,IAAI,EAAE,OAAO,CAAC;IAEd,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IAEf,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IAEtB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAEzC,6BAA6B;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IAEnB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,kBAAkB;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAEzC,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/types/batch.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { EntityRef } from './refs';
|
|
2
|
+
export { isEntityRef, ref } from './refs';
|
|
3
|
+
export type { KladosEntity, KladosProperties, ContractSpec, } from './klados';
|
|
4
|
+
export type { RhizaEntity, RhizaProperties, FlowStep, ThenSpec, RouteRule, WhereCondition, WhereEquals, WhereAnd, WhereOr, } from './rhiza';
|
|
5
|
+
export type { KladosRequest, RhizaContext, BatchContext, } from './request';
|
|
6
|
+
export type { KladosResponse, KladosResult, } from './response';
|
|
7
|
+
export type { KladosLogEntry, HandoffRecord, InvocationRecord, LogMessage, JobLog, } from './log';
|
|
8
|
+
export type { BatchEntity, BatchProperties, BatchSlot, } from './batch';
|
|
9
|
+
export type { WorkflowStatus, ProgressCounters, LogChainEntry, ErrorSummary, ResumeResult, ResumedJob, } from './status';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG1C,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,WAAW,EACX,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,cAAc,EACd,WAAW,EACX,QAAQ,EACR,OAAO,GACR,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,MAAM,GACP,MAAM,OAAO,CAAC;AAGf,YAAY,EACV,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KladosEntity - A standalone action entity
|
|
3
|
+
*
|
|
4
|
+
* Kladoi are first-class entities that can be:
|
|
5
|
+
* - Invoked directly via POST /kladoi/:id/invoke
|
|
6
|
+
* - Composed into workflows (rhizai)
|
|
7
|
+
* - Reused across multiple rhizai
|
|
8
|
+
*/
|
|
9
|
+
export interface KladosEntity {
|
|
10
|
+
/** Unique identifier (Arke entity ID) */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Entity type */
|
|
13
|
+
type: 'klados';
|
|
14
|
+
properties: KladosProperties;
|
|
15
|
+
relationships?: Array<{
|
|
16
|
+
predicate: string;
|
|
17
|
+
peer: string;
|
|
18
|
+
peer_type?: string;
|
|
19
|
+
peer_label?: string;
|
|
20
|
+
properties?: Record<string, unknown>;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export interface KladosProperties {
|
|
24
|
+
/** Human-readable name */
|
|
25
|
+
label: string;
|
|
26
|
+
/** Description of what this klados does */
|
|
27
|
+
description?: string;
|
|
28
|
+
/** Endpoint URL where this klados is deployed */
|
|
29
|
+
endpoint: string;
|
|
30
|
+
/** Permissions required on target collection */
|
|
31
|
+
actions_required: string[];
|
|
32
|
+
/** Input contract - what this klados accepts */
|
|
33
|
+
accepts: ContractSpec;
|
|
34
|
+
/** Output contract - what this klados produces */
|
|
35
|
+
produces: ContractSpec;
|
|
36
|
+
/** Optional JSON Schema for additional input parameters */
|
|
37
|
+
input_schema?: Record<string, unknown>;
|
|
38
|
+
/** Status */
|
|
39
|
+
status: 'development' | 'active' | 'disabled';
|
|
40
|
+
/** When endpoint was verified */
|
|
41
|
+
endpoint_verified_at?: string;
|
|
42
|
+
/** Timestamps */
|
|
43
|
+
created_at?: string;
|
|
44
|
+
updated_at?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* ContractSpec - Input/output contract
|
|
48
|
+
*/
|
|
49
|
+
export interface ContractSpec {
|
|
50
|
+
/**
|
|
51
|
+
* Accepted/produced content types
|
|
52
|
+
* Use ["*"] to accept/produce anything
|
|
53
|
+
* Examples: ["file/pdf"], ["file/jpeg", "file/png"], ["*"]
|
|
54
|
+
*/
|
|
55
|
+
types: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Cardinality
|
|
58
|
+
* - 'one': Single entity
|
|
59
|
+
* - 'many': Multiple entities (array)
|
|
60
|
+
*/
|
|
61
|
+
cardinality: 'one' | 'many';
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=klados.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"klados.d.ts","sourceRoot":"","sources":["../../src/types/klados.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IAEX,kBAAkB;IAClB,IAAI,EAAE,QAAQ,CAAC;IAEf,UAAU,EAAE,gBAAgB,CAAC;IAE7B,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,gDAAgD;IAChD,OAAO,EAAE,YAAY,CAAC;IAEtB,kDAAkD;IAClD,QAAQ,EAAE,YAAY,CAAC;IAEvB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvC,aAAa;IACb,MAAM,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE9C,iCAAiC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,iBAAiB;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;OAIG;IACH,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"klados.js","sourceRoot":"","sources":["../../src/types/klados.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { KladosRequest } from './request';
|
|
2
|
+
/**
|
|
3
|
+
* KladosLogEntry - Log entry written by each klados
|
|
4
|
+
*
|
|
5
|
+
* This is the critical data structure for resumability.
|
|
6
|
+
*/
|
|
7
|
+
export interface KladosLogEntry {
|
|
8
|
+
/** Log entry entity ID */
|
|
9
|
+
id: string;
|
|
10
|
+
/** Entity type marker */
|
|
11
|
+
type: 'klados_log';
|
|
12
|
+
/** Klados entity ID */
|
|
13
|
+
klados_id: string;
|
|
14
|
+
/** Rhiza entity ID (if part of workflow) */
|
|
15
|
+
rhiza_id?: string;
|
|
16
|
+
/** Job ID */
|
|
17
|
+
job_id: string;
|
|
18
|
+
/** When processing started (ISO 8601) */
|
|
19
|
+
started_at: string;
|
|
20
|
+
/** When processing completed (ISO 8601) */
|
|
21
|
+
completed_at?: string;
|
|
22
|
+
/** Current status */
|
|
23
|
+
status: 'running' | 'done' | 'error';
|
|
24
|
+
/** Input (what we received) */
|
|
25
|
+
received: {
|
|
26
|
+
/** Entity ID(s) we processed */
|
|
27
|
+
target: string | string[];
|
|
28
|
+
/**
|
|
29
|
+
* Previous log entry ID(s) for chain traversal
|
|
30
|
+
* - Single ID for pass/scatter
|
|
31
|
+
* - Multiple IDs for gather (all parent siblings)
|
|
32
|
+
* Also stored as relationships on the log entity.
|
|
33
|
+
*/
|
|
34
|
+
from_logs?: string[];
|
|
35
|
+
/** Batch context if part of scatter */
|
|
36
|
+
batch?: {
|
|
37
|
+
id: string;
|
|
38
|
+
index: number;
|
|
39
|
+
total: number;
|
|
40
|
+
};
|
|
41
|
+
/** The invocation record that created this job (for resume) */
|
|
42
|
+
invocation?: InvocationRecord;
|
|
43
|
+
};
|
|
44
|
+
/** Produced entity IDs (if done) */
|
|
45
|
+
produced?: {
|
|
46
|
+
entity_ids: string[];
|
|
47
|
+
/** Optional metadata about what was produced */
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
};
|
|
50
|
+
/** Error (if failed) */
|
|
51
|
+
error?: {
|
|
52
|
+
code: string;
|
|
53
|
+
message: string;
|
|
54
|
+
retryable: boolean;
|
|
55
|
+
};
|
|
56
|
+
/** Handoffs (THE KEY TO RESUMABILITY) */
|
|
57
|
+
handoffs?: HandoffRecord[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* HandoffRecord - Record of a handoff operation
|
|
61
|
+
*
|
|
62
|
+
* Three core types: pass, scatter, gather
|
|
63
|
+
* Target can be klados or rhiza (discovered at invocation time)
|
|
64
|
+
*/
|
|
65
|
+
export interface HandoffRecord {
|
|
66
|
+
/** Handoff type (core operations only) */
|
|
67
|
+
type: 'pass' | 'scatter' | 'gather';
|
|
68
|
+
/** Target ID (klados or rhiza) */
|
|
69
|
+
target: string;
|
|
70
|
+
/** Whether target is a klados or rhiza (discovered at invocation) */
|
|
71
|
+
target_type: 'klados' | 'rhiza';
|
|
72
|
+
/** Batch entity ID (if scatter) */
|
|
73
|
+
batch_id?: string;
|
|
74
|
+
/** All invocations we made (fire-and-forget) */
|
|
75
|
+
invocations: InvocationRecord[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* InvocationRecord - Record of a single invocation
|
|
79
|
+
*
|
|
80
|
+
* Fire-and-forget: we record what we sent, not the result.
|
|
81
|
+
* The invoked klados creates its own log entry pointing back to us.
|
|
82
|
+
*/
|
|
83
|
+
export interface InvocationRecord {
|
|
84
|
+
/** The exact request we made (for replay on resume) */
|
|
85
|
+
request: KladosRequest;
|
|
86
|
+
/** Batch index (if part of scatter) */
|
|
87
|
+
batch_index?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* LogMessage - Human-readable log message
|
|
91
|
+
*/
|
|
92
|
+
export interface LogMessage {
|
|
93
|
+
level: 'info' | 'warning' | 'error' | 'success';
|
|
94
|
+
message: string;
|
|
95
|
+
timestamp: string;
|
|
96
|
+
metadata?: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* JobLog - Full log structure written to file
|
|
100
|
+
*/
|
|
101
|
+
export interface JobLog {
|
|
102
|
+
entry: KladosLogEntry;
|
|
103
|
+
agent_id: string;
|
|
104
|
+
agent_version: string;
|
|
105
|
+
messages: LogMessage[];
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IAEX,yBAAyB;IACzB,IAAI,EAAE,YAAY,CAAC;IAEnB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IAEnB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qBAAqB;IACrB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAErC,+BAA+B;IAC/B,QAAQ,EAAE;QACR,gCAAgC;QAChC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAE1B;;;;;WAKG;QACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAErB,uCAAuC;QACvC,KAAK,CAAC,EAAE;YACN,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QAEF,+DAA+D;QAC/D,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC/B,CAAC;IAEF,oCAAoC;IACpC,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,gDAAgD;QAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;IAEF,wBAAwB;IACxB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAEF,yCAAyC;IACzC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEpC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,qEAAqE;IACrE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEhC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,gDAAgD;IAChD,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,OAAO,EAAE,aAAa,CAAC;IAEvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":""}
|