@hasna/todos 0.11.73 → 0.11.74
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.
|
@@ -13,6 +13,50 @@ export interface TaskRouteGates {
|
|
|
13
13
|
locked: boolean;
|
|
14
14
|
blocked: boolean;
|
|
15
15
|
terminal: boolean;
|
|
16
|
+
/** True when a project root was required-checked and is missing/invalid on this machine. */
|
|
17
|
+
missing_project_root: boolean;
|
|
18
|
+
/** True when the task carries a workflow pointer for an in-flight (non-terminal) invocation. */
|
|
19
|
+
workflow_pointer_active: boolean;
|
|
20
|
+
/** True when the task carries a workflow pointer whose last invocation reached a terminal state. */
|
|
21
|
+
workflow_pointer_terminal: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* One authoritative disposition a drain can act on without recomputing eligibility.
|
|
25
|
+
* `eligible` admits routing now; `deduped_active`/`terminal_requeue_needed` are
|
|
26
|
+
* eligible sub-states that tell a drain to dedupe against the live invocation or
|
|
27
|
+
* requeue past a dead one; the remaining values are non-admitting reasons.
|
|
28
|
+
* `throttled` is OpenLoops-owned runtime state and is never emitted by Todos; it is
|
|
29
|
+
* part of the shared vocabulary so a consuming drain can classify uniformly.
|
|
30
|
+
*/
|
|
31
|
+
export type TaskRouteClass = "eligible" | "deduped_active" | "terminal_requeue_needed" | "terminal" | "in_progress" | "blocked" | "locked" | "unroutable" | "missing_metadata" | "throttled";
|
|
32
|
+
export interface TaskRouteEvidence {
|
|
33
|
+
/** Best-effort owner of active/in-flight work: assignee, else lock holder. */
|
|
34
|
+
owner: string | null;
|
|
35
|
+
assigned_to: string | null;
|
|
36
|
+
locked_by: string | null;
|
|
37
|
+
locked_at: string | null;
|
|
38
|
+
updated_at: string;
|
|
39
|
+
age_ms: number;
|
|
40
|
+
/** True for an in_progress task whose last update is older than the stale threshold. */
|
|
41
|
+
stale: boolean;
|
|
42
|
+
stale_after_ms: number;
|
|
43
|
+
current_run_id: string | null;
|
|
44
|
+
current_workflow_invocation_id: string | null;
|
|
45
|
+
workflow_state: string | null;
|
|
46
|
+
/** Whether the project root was filesystem-verified for this evaluation. */
|
|
47
|
+
project_root_verified: boolean;
|
|
48
|
+
/** Existence of the resolved project root when verified; null when not checked. */
|
|
49
|
+
project_root_exists: boolean | null;
|
|
50
|
+
}
|
|
51
|
+
export interface GetTaskRouteStateOptions {
|
|
52
|
+
/**
|
|
53
|
+
* When true, resolve and filesystem-check the project root and surface
|
|
54
|
+
* `missing_project_root` before route admission (default false so pure
|
|
55
|
+
* DB evaluations stay machine-independent).
|
|
56
|
+
*/
|
|
57
|
+
verifyProjectRoot?: boolean;
|
|
58
|
+
/** Age after which an in_progress task is flagged stale in evidence (default 3d). */
|
|
59
|
+
staleInProgressAfterMs?: number;
|
|
16
60
|
}
|
|
17
61
|
export interface TaskRouteContext {
|
|
18
62
|
project_id: string | null;
|
|
@@ -30,6 +74,8 @@ export interface TaskRouteState {
|
|
|
30
74
|
task_short_id: string | null;
|
|
31
75
|
status: Task["status"];
|
|
32
76
|
eligible: boolean;
|
|
77
|
+
/** Single authoritative disposition; drains map this without recomputing eligibility. */
|
|
78
|
+
route_class: TaskRouteClass;
|
|
33
79
|
reasons: string[];
|
|
34
80
|
blockers: Array<{
|
|
35
81
|
id: string;
|
|
@@ -41,6 +87,7 @@ export interface TaskRouteState {
|
|
|
41
87
|
automation: TaskRoutingAutomationMetadata | null;
|
|
42
88
|
route: TaskRouteContext;
|
|
43
89
|
pointers: TaskWorkflowPointers;
|
|
90
|
+
evidence: TaskRouteEvidence;
|
|
44
91
|
}
|
|
45
92
|
export interface SetTaskWorkflowPointersInput {
|
|
46
93
|
current_workflow_invocation_id?: string | null;
|
|
@@ -50,6 +97,6 @@ export interface SetTaskWorkflowPointersInput {
|
|
|
50
97
|
workflow_state?: string | null;
|
|
51
98
|
actor?: string;
|
|
52
99
|
}
|
|
53
|
-
export declare function getTaskRouteState(taskOrId: Task | string, db?: Database): TaskRouteState;
|
|
100
|
+
export declare function getTaskRouteState(taskOrId: Task | string, db?: Database, options?: GetTaskRouteStateOptions): TaskRouteState;
|
|
54
101
|
export declare function setTaskWorkflowPointers(taskId: string, input: SetTaskWorkflowPointersInput, db?: Database): Task;
|
|
55
102
|
//# sourceMappingURL=task-routing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-routing.d.ts","sourceRoot":"","sources":["../../src/lib/task-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"task-routing.d.ts","sourceRoot":"","sources":["../../src/lib/task-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.11.
|
|
3
|
+
"packageVersion": "0.11.74",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"generatedAt": "2026-07-
|
|
5
|
+
"gitCommit": "5048c894871044e07d7b4cc7b5fdf8f1b93dead5",
|
|
6
|
+
"generatedAt": "2026-07-05T11:48:17.941Z"
|
|
7
7
|
}
|