@botiverse/oar 0.37.0 → 0.38.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/dist/observe/index.d.ts +2 -2
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +1 -1
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/tasks.d.ts +30 -5
- package/dist/observe/tasks.d.ts.map +1 -1
- package/dist/observe/tasks.js +74 -6
- package/dist/observe/tasks.js.map +1 -1
- package/package.json +1 -1
package/dist/observe/index.d.ts
CHANGED
|
@@ -25,8 +25,8 @@ export type { ReasoningPart, ToolGroup, ToolGroupSegment, ToolPart } from "./too
|
|
|
25
25
|
export { awaitIdle, awaitTurnEnd, promptAndWait, turnEndAfter } from "./turns.js";
|
|
26
26
|
export type { PromptRun, PromptRunOptions } from "./turns.js";
|
|
27
27
|
export { contextUsageOf, effortOf, modelOf, usageOf } from "./usage.js";
|
|
28
|
-
export { applyTaskEvent, initialTasks, reduceTasks, tasksOf } from "./tasks.js";
|
|
29
|
-
export type { TaskEventOrigin, TaskMap, TaskView } from "./tasks.js";
|
|
28
|
+
export { applyTaskEvent, initialTasks, initialTaskState, reduceTasks, reduceTaskState, tasksOf } from "./tasks.js";
|
|
29
|
+
export type { TaskEventOrigin, TaskMap, TaskState, TaskView } from "./tasks.js";
|
|
30
30
|
export { initialConversation, reduceConversation, conversationOf, observeConversation } from "./conversation.js";
|
|
31
31
|
export type { ConversationState, ConversationInput, ConversationUpdate, InputAttempt } from "./conversation.js";
|
|
32
32
|
export { initialSessionView, reduceSessionView, reduceSessionViewEvent, reduceSessionViewInput, viewOf, observeSessionView, } from "./session-view.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnH,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjH,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,mBAAmB,CAAC"}
|
package/dist/observe/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { redactRecord } from "./redact-record.js";
|
|
|
17
17
|
export { REDACTION_RULES } from "../shared/credential-redaction.js";
|
|
18
18
|
export { awaitIdle, awaitTurnEnd, promptAndWait, turnEndAfter } from "./turns.js";
|
|
19
19
|
export { contextUsageOf, effortOf, modelOf, usageOf } from "./usage.js";
|
|
20
|
-
export { applyTaskEvent, initialTasks, reduceTasks, tasksOf } from "./tasks.js";
|
|
20
|
+
export { applyTaskEvent, initialTasks, initialTaskState, reduceTasks, reduceTaskState, tasksOf } from "./tasks.js";
|
|
21
21
|
export { initialConversation, reduceConversation, conversationOf, observeConversation } from "./conversation.js";
|
|
22
22
|
export { initialSessionView, reduceSessionView, reduceSessionViewEvent, reduceSessionViewInput, viewOf, observeSessionView, } from "./session-view.js";
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAIpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAIpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGnH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGjH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
package/dist/observe/tasks.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { QueryResult, RawEvent, TaskEventBody, TaskStatus, TaskType } from "../contracts/session.js";
|
|
1
|
+
import type { AgentStatus, QueryResult, RawEvent, TaskEventBody, TaskStatus, TaskType } from "../contracts/session.js";
|
|
2
2
|
/**
|
|
3
3
|
* One task as its runtime reported it, for a task panel: the shape a host
|
|
4
4
|
* draws for background commands and subagents alike. `sessionId` and
|
|
5
5
|
* `agentPath` say whose task it is (a subagent can start tasks of its own);
|
|
6
|
-
* `startedAt` / `endedAt` are the `receivedAt` of the reports.
|
|
6
|
+
* `startedAt` / `endedAt` are the `receivedAt` of the reports. A root runtime
|
|
7
|
+
* exit also ends unfinished tasks; its `receivedAt` supplies that ending.
|
|
7
8
|
*/
|
|
8
9
|
export interface TaskView {
|
|
9
10
|
readonly taskId: string;
|
|
@@ -37,9 +38,33 @@ export declare function applyTaskEvent(previous: TaskMap, body: TaskEventBody, o
|
|
|
37
38
|
/**
|
|
38
39
|
* Fold one record into the task map. Status follows the latest report: a
|
|
39
40
|
* codex subagent that completed and is then given more work reads as running
|
|
40
|
-
* again. Records without task events return the same map.
|
|
41
|
+
* again. Records without task events return the same map. This event-only
|
|
42
|
+
* reducer does not infer endings at runtime exit; use `reduceTaskState` for that.
|
|
41
43
|
*/
|
|
42
44
|
export declare function reduceTasks(previous: TaskMap, record: RawEvent): TaskMap;
|
|
43
|
-
/**
|
|
44
|
-
export
|
|
45
|
+
/** Checkpointable task fold for one runtime process, including its child sessions. */
|
|
46
|
+
export interface TaskState {
|
|
47
|
+
readonly tasks: TaskMap;
|
|
48
|
+
readonly rootSessionId: string | undefined;
|
|
49
|
+
/** Reuses the status fold's current-turn stop evidence. */
|
|
50
|
+
readonly status: AgentStatus;
|
|
51
|
+
/** A root dispose request also applies when no turn is running. */
|
|
52
|
+
readonly disposed: boolean;
|
|
53
|
+
/** Task ids whose current error was inferred from runtime exit, not reported natively. */
|
|
54
|
+
readonly exitErrors: ReadonlySet<string>;
|
|
55
|
+
}
|
|
56
|
+
/** Start a fresh fold per runtime start/resume. Without an id, the first record selects the root. */
|
|
57
|
+
export declare function initialTaskState(rootSessionId?: string): TaskState;
|
|
58
|
+
/**
|
|
59
|
+
* Fold task reports and root process exit. Pending/running/paused tasks, including
|
|
60
|
+
* child tasks, end as stopped after dispose or an exit-aborted turn, failed otherwise.
|
|
61
|
+
* Native endings remain authoritative, including reports arriving after exit.
|
|
62
|
+
* Persist the whole state (including Maps/Sets), not just its task rows, to resume a fold.
|
|
63
|
+
*/
|
|
64
|
+
export declare function reduceTaskState(previous: TaskState, record: RawEvent): TaskState;
|
|
65
|
+
/**
|
|
66
|
+
* Tasks in one runtime stream, including inferred endings at root process exit,
|
|
67
|
+
* with the seq of the last record read. Pass the root id when the first record is a child's.
|
|
68
|
+
*/
|
|
69
|
+
export declare function tasksOf(records: readonly RawEvent[], rootSessionId?: string): QueryResult<readonly TaskView[]>;
|
|
45
70
|
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/observe/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/observe/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIvH;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,6DAA6D;AAC7D,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,OAAmB,CAAC;AAuC/C,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAKvG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAWxE;AAED,sFAAsF;AACtF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAElE;AAwCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,CAWhF;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,QAAQ,EAAE,CAAC,CAQ9G"}
|
package/dist/observe/tasks.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { initialStatus, reduceStatus } from "./agent-status.js";
|
|
1
2
|
export const initialTasks = new Map();
|
|
2
3
|
function placeholder(event) {
|
|
3
4
|
// A report about a task whose start the stream does not hold (a mid-session
|
|
@@ -41,7 +42,8 @@ export function applyTaskEvent(previous, body, origin) {
|
|
|
41
42
|
/**
|
|
42
43
|
* Fold one record into the task map. Status follows the latest report: a
|
|
43
44
|
* codex subagent that completed and is then given more work reads as running
|
|
44
|
-
* again. Records without task events return the same map.
|
|
45
|
+
* again. Records without task events return the same map. This event-only
|
|
46
|
+
* reducer does not infer endings at runtime exit; use `reduceTaskState` for that.
|
|
45
47
|
*/
|
|
46
48
|
export function reduceTasks(previous, record) {
|
|
47
49
|
if (record.kind !== "frame") {
|
|
@@ -55,14 +57,80 @@ export function reduceTasks(previous, record) {
|
|
|
55
57
|
}
|
|
56
58
|
return next;
|
|
57
59
|
}
|
|
58
|
-
/**
|
|
59
|
-
export function
|
|
60
|
-
|
|
60
|
+
/** Start a fresh fold per runtime start/resume. Without an id, the first record selects the root. */
|
|
61
|
+
export function initialTaskState(rootSessionId) {
|
|
62
|
+
return { tasks: initialTasks, rootSessionId, status: initialStatus, disposed: false, exitErrors: new Set() };
|
|
63
|
+
}
|
|
64
|
+
function clearExitError(previous, body) {
|
|
65
|
+
const row = previous.tasks.get(body.taskId);
|
|
66
|
+
if (!previous.exitErrors.has(body.taskId) || row === undefined
|
|
67
|
+
|| (body.kind === "task_updated" && body.status === undefined && body.error === undefined)) {
|
|
68
|
+
return previous;
|
|
69
|
+
}
|
|
70
|
+
const { error: _error, ...reported } = row;
|
|
71
|
+
const tasks = new Map([...previous.tasks, [body.taskId, reported]]);
|
|
72
|
+
const exitErrors = new Set(previous.exitErrors);
|
|
73
|
+
exitErrors.delete(body.taskId);
|
|
74
|
+
return { ...previous, tasks, exitErrors };
|
|
75
|
+
}
|
|
76
|
+
function reduceTaskReports(previous, record) {
|
|
77
|
+
if (record.kind !== "frame") {
|
|
78
|
+
return previous;
|
|
79
|
+
}
|
|
80
|
+
let next = previous;
|
|
81
|
+
for (const body of record.body.events) {
|
|
82
|
+
if (body.kind === "task_started" || body.kind === "task_updated" || body.kind === "task_ended") {
|
|
83
|
+
next = clearExitError(next, body);
|
|
84
|
+
next = { ...next, tasks: applyTaskEvent(next.tasks, body, record) };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return next;
|
|
88
|
+
}
|
|
89
|
+
function endRuntimeTasks(previous, receivedAt, stopped) {
|
|
90
|
+
const tasks = new Map(previous.tasks);
|
|
91
|
+
const exitErrors = new Set(previous.exitErrors);
|
|
92
|
+
for (const [id, task] of tasks) {
|
|
93
|
+
if (task.status !== "pending" && task.status !== "running" && task.status !== "paused") {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const inferError = !stopped && task.error === undefined;
|
|
97
|
+
tasks.set(id, { ...task, status: stopped ? "stopped" : "failed", endedAt: receivedAt,
|
|
98
|
+
...(inferError ? { error: "runtime exited" } : {}) });
|
|
99
|
+
if (inferError) {
|
|
100
|
+
exitErrors.add(id);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { ...previous, tasks, exitErrors };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Fold task reports and root process exit. Pending/running/paused tasks, including
|
|
107
|
+
* child tasks, end as stopped after dispose or an exit-aborted turn, failed otherwise.
|
|
108
|
+
* Native endings remain authoritative, including reports arriving after exit.
|
|
109
|
+
* Persist the whole state (including Maps/Sets), not just its task rows, to resume a fold.
|
|
110
|
+
*/
|
|
111
|
+
export function reduceTaskState(previous, record) {
|
|
112
|
+
const rootSessionId = previous.rootSessionId ?? record.sessionId;
|
|
113
|
+
const root = record.sessionId === rootSessionId && record.agentPath.length === 0;
|
|
114
|
+
const status = reduceStatus(previous.status, record, rootSessionId);
|
|
115
|
+
const disposed = previous.disposed || (root && record.kind === "request" && record.direction === "toRuntime" && record.body.kind === "dispose");
|
|
116
|
+
const next = { ...previous, rootSessionId, status, disposed };
|
|
117
|
+
if (root && record.kind === "response" && record.body.kind === "exited") {
|
|
118
|
+
const aborted = previous.status.kind === "running" && status.kind === "idle" && status.lastTurnOutcome?.kind === "aborted";
|
|
119
|
+
return endRuntimeTasks(next, record.receivedAt, disposed || aborted);
|
|
120
|
+
}
|
|
121
|
+
return reduceTaskReports(next, record);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Tasks in one runtime stream, including inferred endings at root process exit,
|
|
125
|
+
* with the seq of the last record read. Pass the root id when the first record is a child's.
|
|
126
|
+
*/
|
|
127
|
+
export function tasksOf(records, rootSessionId) {
|
|
128
|
+
let state = initialTaskState(rootSessionId);
|
|
61
129
|
let seq = -1;
|
|
62
130
|
for (const record of records) {
|
|
63
|
-
|
|
131
|
+
state = reduceTaskState(state, record);
|
|
64
132
|
seq = record.seq;
|
|
65
133
|
}
|
|
66
|
-
return { value: [...tasks.values()], seq };
|
|
134
|
+
return { value: [...state.tasks.values()], seq };
|
|
67
135
|
}
|
|
68
136
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/observe/tasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/observe/tasks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botiverse/oar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"description": "A programming interface for all agent harnesses: provider-independent contracts for controlling and observing agent runtimes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|