@botiverse/oar 0.1.4 → 0.3.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 +50 -7
- package/dist/contracts/account-usage.d.ts +7 -0
- package/dist/contracts/account-usage.d.ts.map +1 -1
- package/dist/contracts/records.d.ts +121 -19
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/records.js +11 -2
- package/dist/contracts/records.js.map +1 -1
- package/dist/contracts/session.d.ts +33 -7
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/observe/agent-status.d.ts +7 -4
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +15 -9
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/events.d.ts +30 -0
- package/dist/observe/events.d.ts.map +1 -0
- package/dist/observe/events.js +142 -0
- package/dist/observe/events.js.map +1 -0
- package/dist/observe/index.d.ts +2 -2
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +2 -2
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/observe-agent.js +1 -1
- package/dist/observe/stall-observer.d.ts +1 -1
- package/dist/observe/stall-observer.d.ts.map +1 -1
- package/dist/observe/stall-observer.js +3 -3
- package/dist/observe/stall-observer.js.map +1 -1
- package/dist/observe/tool-activity.d.ts +2 -2
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +1 -1
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/observe/turns.d.ts +3 -3
- package/dist/observe/turns.d.ts.map +1 -1
- package/dist/observe/turns.js +4 -4
- package/dist/observe/turns.js.map +1 -1
- package/dist/observe/usage.d.ts +4 -4
- package/dist/observe/usage.d.ts.map +1 -1
- package/dist/observe/usage.js +12 -12
- package/dist/observe/usage.js.map +1 -1
- package/dist/runtimes/claude/account-usage.d.ts.map +1 -1
- package/dist/runtimes/claude/account-usage.js +9 -6
- package/dist/runtimes/claude/account-usage.js.map +1 -1
- package/dist/runtimes/claude/projection.d.ts +6 -6
- package/dist/runtimes/claude/projection.d.ts.map +1 -1
- package/dist/runtimes/claude/projection.js +17 -10
- package/dist/runtimes/claude/projection.js.map +1 -1
- package/dist/runtimes/claude/session.js +6 -6
- package/dist/runtimes/claude/session.js.map +1 -1
- package/dist/runtimes/codex/account-usage.d.ts +3 -1
- package/dist/runtimes/codex/account-usage.d.ts.map +1 -1
- package/dist/runtimes/codex/account-usage.js +6 -6
- package/dist/runtimes/codex/account-usage.js.map +1 -1
- package/dist/runtimes/codex/projection.d.ts +10 -3
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +23 -5
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/codex/session.js +8 -8
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/grok/account-usage.js +4 -4
- package/dist/runtimes/grok/account-usage.js.map +1 -1
- package/dist/runtimes/kimi/account-usage.d.ts.map +1 -1
- package/dist/runtimes/kimi/account-usage.js +10 -8
- package/dist/runtimes/kimi/account-usage.js.map +1 -1
- package/dist/runtimes/pi/projection.d.ts +7 -7
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +47 -29
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi/session.js +11 -11
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/shared/acp/model.d.ts +1 -1
- package/dist/shared/acp/model.js +1 -1
- package/dist/shared/acp/profile.d.ts +1 -1
- package/dist/shared/acp/projection.d.ts +6 -6
- package/dist/shared/acp/projection.d.ts.map +1 -1
- package/dist/shared/acp/projection.js +19 -12
- package/dist/shared/acp/projection.js.map +1 -1
- package/dist/shared/acp/records.d.ts +2 -2
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +5 -5
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/acp/session.js +1 -1
- package/dist/shared/acp/turns.d.ts +2 -2
- package/dist/shared/acp/turns.js +4 -4
- package/dist/shared/acp/turns.js.map +1 -1
- package/dist/shared/acp/usage-wait.d.ts +1 -1
- package/dist/shared/acp/usage-wait.d.ts.map +1 -1
- package/dist/shared/seal-session.d.ts +4 -3
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +12 -3
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/shared/session-kernel.d.ts +6 -6
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +2 -2
- package/dist/shared/session-kernel.js.map +1 -1
- package/dist/voyage.d.ts +4 -4
- package/dist/voyage.d.ts.map +1 -1
- package/dist/voyage.js +4 -3
- package/dist/voyage.js.map +1 -1
- package/package.json +1 -1
- package/dist/observe/aggregate-events.d.ts +0 -16
- package/dist/observe/aggregate-events.d.ts.map +0 -1
- package/dist/observe/aggregate-events.js +0 -80
- package/dist/observe/aggregate-events.js.map +0 -1
package/dist/voyage.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { closeSync, openSync, writeSync } from "node:fs";
|
|
2
|
-
// The oar-voyage/
|
|
3
|
-
//
|
|
2
|
+
// The oar-voyage/3 JSONL format (3: records carry the frame / request /
|
|
3
|
+
// response kinds and the `events` field): one JSON object per line,
|
|
4
|
+
// discriminated by `kind`. Line 1 is `header`; `record` wraps one RawEvent verbatim (no
|
|
4
5
|
// filtering or re-timestamping: human inputs are in the stream already, as
|
|
5
6
|
// request records); `end` is the last line; a log without it is a truncated
|
|
6
7
|
// capture. All timestamps are Unix epoch milliseconds on the same clock as
|
|
7
8
|
// `receivedAt`. The format is defined and owned by oar; other tools may
|
|
8
9
|
// consume it.
|
|
9
|
-
export const VOYAGE_FORMAT = "oar-voyage/
|
|
10
|
+
export const VOYAGE_FORMAT = "oar-voyage/3";
|
|
10
11
|
export function headerLine(header) {
|
|
11
12
|
return JSON.stringify({
|
|
12
13
|
kind: "header",
|
package/dist/voyage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voyage.js","sourceRoot":"","sources":["../src/voyage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzD,
|
|
1
|
+
{"version":3,"file":"voyage.js","sourceRoot":"","sources":["../src/voyage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzD,wEAAwE;AACxE,oEAAoE;AACpE,wFAAwF;AACxF,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,cAAc;AAEd,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAW5C,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9D,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAgB;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,MAAc;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAOD,wEAAwE;AACxE,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAoB;IAC3D,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,SAAS,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,OAAO;QACL,MAAM,CAAC,MAAM;YACX,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,MAAM;YACR,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YACnC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { SessionObserver } from "../contracts/session.js";
|
|
2
|
-
/**
|
|
3
|
-
* Optional consumer-side aggregation: wrap an observer so consecutive
|
|
4
|
-
* text/reasoning deltas of one agent arrive as one merged record instead of a
|
|
5
|
-
* token stream. A merged record flushes when the view kind or agent changes,
|
|
6
|
-
* a non-delta record arrives, or (when `maxHoldMs` is set) the stream goes
|
|
7
|
-
* quiet for that long (a stalled model pause must not hold text hostage;
|
|
8
|
-
* order is safe because only consecutive same-lane deltas are ever held). It
|
|
9
|
-
* carries the LAST delta's envelope and native frame with the concatenated
|
|
10
|
-
* text. Purely a decorator over the side-tap: adapters and the kernel are
|
|
11
|
-
* unaware, and the retained log keeps every original record.
|
|
12
|
-
*/
|
|
13
|
-
export declare function aggregateDeltas(observer: SessionObserver, options?: {
|
|
14
|
-
readonly maxHoldMs?: number;
|
|
15
|
-
}): SessionObserver;
|
|
16
|
-
//# sourceMappingURL=aggregate-events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-events.d.ts","sourceRoot":"","sources":["../../src/observe/aggregate-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,eAAe,EAAiB,MAAM,yBAAyB,CAAC;AAiCtG;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,eAAe,CA2CjB"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/** The single text-bearing view of a record, when the record carries exactly one view. */
|
|
2
|
-
function soleView(record) {
|
|
3
|
-
return record.body.views.length === 1 ? (record.body.views[0] ?? null) : null;
|
|
4
|
-
}
|
|
5
|
-
function textOf(record) {
|
|
6
|
-
const view = soleView(record);
|
|
7
|
-
if (view?.kind === "text_delta") {
|
|
8
|
-
return view.text;
|
|
9
|
-
}
|
|
10
|
-
return view?.kind === "reasoning" && view.content.kind === "text" ? view.content.text : null;
|
|
11
|
-
}
|
|
12
|
-
function withText(record, text) {
|
|
13
|
-
const view = soleView(record);
|
|
14
|
-
if (view?.kind === "reasoning") {
|
|
15
|
-
return { ...record, body: { ...record.body, views: [{ kind: "reasoning", content: { kind: "text", text } }] } };
|
|
16
|
-
}
|
|
17
|
-
if (view?.kind === "text_delta") {
|
|
18
|
-
return { ...record, body: { ...record.body, views: [{ kind: "text_delta", text }] } };
|
|
19
|
-
}
|
|
20
|
-
return record;
|
|
21
|
-
}
|
|
22
|
-
function sameLane(held, next) {
|
|
23
|
-
return soleView(held)?.kind === soleView(next)?.kind
|
|
24
|
-
&& held.sessionId === next.sessionId
|
|
25
|
-
&& held.agentPath.length === next.agentPath.length
|
|
26
|
-
&& held.agentPath.every((segment, index) => segment === next.agentPath[index]);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Optional consumer-side aggregation: wrap an observer so consecutive
|
|
30
|
-
* text/reasoning deltas of one agent arrive as one merged record instead of a
|
|
31
|
-
* token stream. A merged record flushes when the view kind or agent changes,
|
|
32
|
-
* a non-delta record arrives, or (when `maxHoldMs` is set) the stream goes
|
|
33
|
-
* quiet for that long (a stalled model pause must not hold text hostage;
|
|
34
|
-
* order is safe because only consecutive same-lane deltas are ever held). It
|
|
35
|
-
* carries the LAST delta's envelope and native frame with the concatenated
|
|
36
|
-
* text. Purely a decorator over the side-tap: adapters and the kernel are
|
|
37
|
-
* unaware, and the retained log keeps every original record.
|
|
38
|
-
*/
|
|
39
|
-
export function aggregateDeltas(observer, options = {}) {
|
|
40
|
-
let held = null;
|
|
41
|
-
let holdTimer = null;
|
|
42
|
-
const flush = () => {
|
|
43
|
-
if (holdTimer !== null) {
|
|
44
|
-
clearTimeout(holdTimer);
|
|
45
|
-
holdTimer = null;
|
|
46
|
-
}
|
|
47
|
-
if (held !== null) {
|
|
48
|
-
const record = held;
|
|
49
|
-
held = null;
|
|
50
|
-
observer(record);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const armHoldTimer = () => {
|
|
54
|
-
if (options.maxHoldMs === undefined) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (holdTimer !== null) {
|
|
58
|
-
clearTimeout(holdTimer);
|
|
59
|
-
}
|
|
60
|
-
holdTimer = setTimeout(flush, options.maxHoldMs);
|
|
61
|
-
};
|
|
62
|
-
return (record) => {
|
|
63
|
-
const text = record.kind === "event" ? textOf(record) : null;
|
|
64
|
-
if (record.kind === "event" && text !== null) {
|
|
65
|
-
const previousText = held === null ? null : textOf(held);
|
|
66
|
-
if (held !== null && previousText !== null && sameLane(held, record)) {
|
|
67
|
-
held = withText(record, `${previousText}${text}`);
|
|
68
|
-
armHoldTimer();
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
flush();
|
|
72
|
-
held = record;
|
|
73
|
-
armHoldTimer();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
flush();
|
|
77
|
-
observer(record);
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=aggregate-events.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-events.js","sourceRoot":"","sources":["../../src/observe/aggregate-events.ts"],"names":[],"mappings":"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"}
|