@botiverse/oar 0.6.0 → 0.8.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.
Files changed (151) hide show
  1. package/README.md +4 -2
  2. package/dist/contracts/records.d.ts +33 -10
  3. package/dist/contracts/records.d.ts.map +1 -1
  4. package/dist/contracts/session.d.ts +66 -13
  5. package/dist/contracts/session.d.ts.map +1 -1
  6. package/dist/contracts/status.d.ts +25 -0
  7. package/dist/contracts/status.d.ts.map +1 -0
  8. package/dist/contracts/status.js +2 -0
  9. package/dist/contracts/status.js.map +1 -0
  10. package/dist/index.d.ts +5 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -3
  13. package/dist/index.js.map +1 -1
  14. package/dist/kernel.d.ts +12 -0
  15. package/dist/kernel.d.ts.map +1 -0
  16. package/dist/kernel.js +11 -0
  17. package/dist/kernel.js.map +1 -0
  18. package/dist/observe/agent-status.d.ts +4 -18
  19. package/dist/observe/agent-status.d.ts.map +1 -1
  20. package/dist/observe/agent-status.js +41 -0
  21. package/dist/observe/agent-status.js.map +1 -1
  22. package/dist/observe/events.d.ts.map +1 -1
  23. package/dist/observe/events.js +1 -2
  24. package/dist/observe/events.js.map +1 -1
  25. package/dist/observe/index.d.ts +6 -4
  26. package/dist/observe/index.d.ts.map +1 -1
  27. package/dist/observe/index.js +4 -3
  28. package/dist/observe/index.js.map +1 -1
  29. package/dist/observe/session-view-events.d.ts +11 -0
  30. package/dist/observe/session-view-events.d.ts.map +1 -0
  31. package/dist/observe/session-view-events.js +233 -0
  32. package/dist/observe/session-view-events.js.map +1 -0
  33. package/dist/observe/session-view-fold.d.ts +57 -0
  34. package/dist/observe/session-view-fold.d.ts.map +1 -0
  35. package/dist/observe/session-view-fold.js +156 -0
  36. package/dist/observe/session-view-fold.js.map +1 -0
  37. package/dist/observe/session-view.d.ts +153 -0
  38. package/dist/observe/session-view.d.ts.map +1 -0
  39. package/dist/observe/session-view.js +81 -0
  40. package/dist/observe/session-view.js.map +1 -0
  41. package/dist/observe/turns.d.ts +45 -7
  42. package/dist/observe/turns.d.ts.map +1 -1
  43. package/dist/observe/turns.js +77 -7
  44. package/dist/observe/turns.js.map +1 -1
  45. package/dist/observe/usage.d.ts +2 -0
  46. package/dist/observe/usage.d.ts.map +1 -1
  47. package/dist/observe/usage.js +18 -0
  48. package/dist/observe/usage.js.map +1 -1
  49. package/dist/runtimes/claude/effort.d.ts +14 -0
  50. package/dist/runtimes/claude/effort.d.ts.map +1 -0
  51. package/dist/runtimes/claude/effort.js +62 -0
  52. package/dist/runtimes/claude/effort.js.map +1 -0
  53. package/dist/runtimes/claude/projection.js +1 -1
  54. package/dist/runtimes/claude/projection.js.map +1 -1
  55. package/dist/runtimes/claude/session.d.ts.map +1 -1
  56. package/dist/runtimes/claude/session.js +46 -6
  57. package/dist/runtimes/claude/session.js.map +1 -1
  58. package/dist/runtimes/codex/item-detail.d.ts +2 -0
  59. package/dist/runtimes/codex/item-detail.d.ts.map +1 -1
  60. package/dist/runtimes/codex/item-detail.js +12 -5
  61. package/dist/runtimes/codex/item-detail.js.map +1 -1
  62. package/dist/runtimes/codex/open.d.ts +42 -0
  63. package/dist/runtimes/codex/open.d.ts.map +1 -0
  64. package/dist/runtimes/codex/open.js +116 -0
  65. package/dist/runtimes/codex/open.js.map +1 -0
  66. package/dist/runtimes/codex/projection.d.ts.map +1 -1
  67. package/dist/runtimes/codex/projection.js +29 -4
  68. package/dist/runtimes/codex/projection.js.map +1 -1
  69. package/dist/runtimes/codex/session.d.ts.map +1 -1
  70. package/dist/runtimes/codex/session.js +53 -59
  71. package/dist/runtimes/codex/session.js.map +1 -1
  72. package/dist/runtimes/grok/list-models.d.ts +6 -0
  73. package/dist/runtimes/grok/list-models.d.ts.map +1 -1
  74. package/dist/runtimes/grok/list-models.js +17 -2
  75. package/dist/runtimes/grok/list-models.js.map +1 -1
  76. package/dist/runtimes/kimi/list-models.d.ts +7 -4
  77. package/dist/runtimes/kimi/list-models.d.ts.map +1 -1
  78. package/dist/runtimes/kimi/list-models.js +9 -5
  79. package/dist/runtimes/kimi/list-models.js.map +1 -1
  80. package/dist/runtimes/pi/installation.d.ts.map +1 -1
  81. package/dist/runtimes/pi/installation.js +3 -1
  82. package/dist/runtimes/pi/installation.js.map +1 -1
  83. package/dist/runtimes/pi/list-models.d.ts +16 -4
  84. package/dist/runtimes/pi/list-models.d.ts.map +1 -1
  85. package/dist/runtimes/pi/list-models.js +24 -7
  86. package/dist/runtimes/pi/list-models.js.map +1 -1
  87. package/dist/runtimes/pi/open.d.ts +22 -0
  88. package/dist/runtimes/pi/open.d.ts.map +1 -1
  89. package/dist/runtimes/pi/open.js +50 -0
  90. package/dist/runtimes/pi/open.js.map +1 -1
  91. package/dist/runtimes/pi/projection.d.ts.map +1 -1
  92. package/dist/runtimes/pi/projection.js +21 -2
  93. package/dist/runtimes/pi/projection.js.map +1 -1
  94. package/dist/runtimes/pi/session.d.ts.map +1 -1
  95. package/dist/runtimes/pi/session.js +14 -12
  96. package/dist/runtimes/pi/session.js.map +1 -1
  97. package/dist/shared/acp/effort.d.ts +25 -0
  98. package/dist/shared/acp/effort.d.ts.map +1 -0
  99. package/dist/shared/acp/effort.js +47 -0
  100. package/dist/shared/acp/effort.js.map +1 -0
  101. package/dist/shared/acp/model.d.ts +19 -0
  102. package/dist/shared/acp/model.d.ts.map +1 -1
  103. package/dist/shared/acp/model.js +27 -0
  104. package/dist/shared/acp/model.js.map +1 -1
  105. package/dist/shared/acp/profile.d.ts.map +1 -1
  106. package/dist/shared/acp/profile.js +7 -0
  107. package/dist/shared/acp/profile.js.map +1 -1
  108. package/dist/shared/acp/projection.d.ts.map +1 -1
  109. package/dist/shared/acp/projection.js +37 -3
  110. package/dist/shared/acp/projection.js.map +1 -1
  111. package/dist/shared/acp/records.d.ts +1 -1
  112. package/dist/shared/acp/records.d.ts.map +1 -1
  113. package/dist/shared/acp/records.js +6 -2
  114. package/dist/shared/acp/records.js.map +1 -1
  115. package/dist/shared/acp/session.d.ts.map +1 -1
  116. package/dist/shared/acp/session.js +4 -4
  117. package/dist/shared/acp/session.js.map +1 -1
  118. package/dist/shared/acp/terminal.d.ts.map +1 -1
  119. package/dist/shared/acp/terminal.js +9 -2
  120. package/dist/shared/acp/terminal.js.map +1 -1
  121. package/dist/shared/acp/turns.js +2 -2
  122. package/dist/shared/acp/turns.js.map +1 -1
  123. package/dist/shared/executable/index.d.ts +1 -1
  124. package/dist/shared/executable/index.d.ts.map +1 -1
  125. package/dist/shared/executable/index.js +1 -1
  126. package/dist/shared/executable/index.js.map +1 -1
  127. package/dist/shared/executable/process.d.ts +48 -1
  128. package/dist/shared/executable/process.d.ts.map +1 -1
  129. package/dist/shared/executable/process.js +66 -1
  130. package/dist/shared/executable/process.js.map +1 -1
  131. package/dist/shared/seal-session.d.ts +15 -7
  132. package/dist/shared/seal-session.d.ts.map +1 -1
  133. package/dist/shared/seal-session.js +42 -17
  134. package/dist/shared/seal-session.js.map +1 -1
  135. package/dist/shared/session-kernel.d.ts +1 -0
  136. package/dist/shared/session-kernel.d.ts.map +1 -1
  137. package/dist/shared/session-kernel.js +3 -3
  138. package/dist/shared/session-kernel.js.map +1 -1
  139. package/dist/testing/index.d.ts +8 -0
  140. package/dist/testing/index.d.ts.map +1 -0
  141. package/dist/testing/index.js +7 -0
  142. package/dist/testing/index.js.map +1 -0
  143. package/dist/testing/scripted-runtime.d.ts +50 -0
  144. package/dist/testing/scripted-runtime.d.ts.map +1 -0
  145. package/dist/testing/scripted-runtime.js +187 -0
  146. package/dist/testing/scripted-runtime.js.map +1 -0
  147. package/dist/voyage.d.ts +2 -0
  148. package/dist/voyage.d.ts.map +1 -1
  149. package/dist/voyage.js +4 -1
  150. package/dist/voyage.js.map +1 -1
  151. package/package.json +10 -1
@@ -1,11 +1,19 @@
1
- import type { AdapterSession, Session } from "../contracts/session.js";
1
+ import type { ControlOutcome, ControlResult, AdapterSession, Session } from "../contracts/session.js";
2
2
  /**
3
- * Derive the API face of a Session from what the adapter built: the flat
4
- * `events()` reading of the stream, the stream folds (model / usage /
5
- * contextUsage are projections over `records()`, never adapter-held
6
- * snapshots) and the steer-or-queue policy. Method-style so
7
- * consumers discover the surfaces in autocomplete; one implementation instead
8
- * of one per adapter.
3
+ * Read a control's answer off its two records. A toRuntime control is only
4
+ * ever answered `accepted` or `rejected`; the other two bodies answer other
5
+ * things (`answered`: a toApp request; `exited`: a dispose), so they are
6
+ * mapped totally rather than thrown on, should an adapter ever route one here.
7
+ */
8
+ export declare function controlOutcomeOf(result: ControlResult): ControlOutcome;
9
+ /**
10
+ * Derive the API face of a Session from what the adapter built: the read
11
+ * control answers (`ControlOutcome` over the adapter's records), the flat
12
+ * `events()` reading of the stream, the stream folds (model / effort / usage /
13
+ * contextUsage / status are projections over `records()`, never adapter-held
14
+ * snapshots) and the steer-or-queue policy. Method-style so consumers
15
+ * discover the surfaces in autocomplete; one implementation instead of one
16
+ * per adapter.
9
17
  */
10
18
  export declare function sealSession(adapterSession: AdapterSession): Session;
11
19
  //# sourceMappingURL=seal-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seal-session.d.ts","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EACd,OAAO,EAER,MAAM,yBAAyB,CAAC;AAYjC;;;;;;;GAOG;AAEH,wBAAgB,WAAW,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAiCnE"}
1
+ {"version":3,"file":"seal-session.d.ts","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,cAAc,EACd,OAAO,EAER,MAAM,yBAAyB,CAAC;AAajC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAUtE;AAED;;;;;;;;GAQG;AAEH,wBAAgB,WAAW,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CA0CnE"}
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { statusOf } from "../observe/agent-status.js";
2
3
  import { coalesceText, eventsReader } from "../observe/events.js";
3
- import { contextUsageOf, modelOf, usageOf } from "../observe/usage.js";
4
+ import { contextUsageOf, effortOf, modelOf, usageOf } from "../observe/usage.js";
4
5
  const identify = (options = {}) => {
5
6
  const inputId = options.inputId ?? randomUUID();
6
7
  if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu.test(inputId)) {
@@ -9,34 +10,56 @@ const identify = (options = {}) => {
9
10
  return { ...options, inputId };
10
11
  };
11
12
  /**
12
- * Derive the API face of a Session from what the adapter built: the flat
13
- * `events()` reading of the stream, the stream folds (model / usage /
14
- * contextUsage are projections over `records()`, never adapter-held
15
- * snapshots) and the steer-or-queue policy. Method-style so
16
- * consumers discover the surfaces in autocomplete; one implementation instead
17
- * of one per adapter.
13
+ * Read a control's answer off its two records. A toRuntime control is only
14
+ * ever answered `accepted` or `rejected`; the other two bodies answer other
15
+ * things (`answered`: a toApp request; `exited`: a dispose), so they are
16
+ * mapped totally rather than thrown on, should an adapter ever route one here.
17
+ */
18
+ export function controlOutcomeOf(result) {
19
+ const { request, response } = result;
20
+ const at = { request, response, seq: request.seq, requestId: request.id };
21
+ if (response.body.kind === "rejected") {
22
+ return { kind: "rejected", code: response.body.code, reason: response.body.reason, ...at };
23
+ }
24
+ if (response.body.kind === "exited") {
25
+ return { kind: "rejected", code: "runtime_exited", reason: "runtime exited", ...at };
26
+ }
27
+ return { kind: "accepted", ...at };
28
+ }
29
+ /**
30
+ * Derive the API face of a Session from what the adapter built: the read
31
+ * control answers (`ControlOutcome` over the adapter's records), the flat
32
+ * `events()` reading of the stream, the stream folds (model / effort / usage /
33
+ * contextUsage / status are projections over `records()`, never adapter-held
34
+ * snapshots) and the steer-or-queue policy. Method-style so consumers
35
+ * discover the surfaces in autocomplete; one implementation instead of one
36
+ * per adapter.
18
37
  */
19
38
  export function sealSession(adapterSession) {
39
+ const prompt = async (input, options) => controlOutcomeOf(await adapterSession.prompt(input, { ...options, ...identify(options) }));
40
+ const steer = async (input, options) => controlOutcomeOf(await adapterSession.steer(input, identify(options)));
41
+ const queue = async (input, options) => controlOutcomeOf(await adapterSession.queue(input, identify(options)));
42
+ const abort = async () => controlOutcomeOf(await adapterSession.abort());
20
43
  const steerOrQueue = async (input, options) => {
21
44
  const identified = identify(options);
22
- const steered = await adapterSession.steer(input, identified);
23
- if (steered.response.body.kind === "accepted") {
45
+ const steered = await steer(input, identified);
46
+ if (steered.kind === "accepted") {
24
47
  return { landed: "steered", result: steered };
25
48
  }
26
- const reason = steered.response.body.kind === "rejected" ? steered.response.body.reason : "runtime cannot steer";
27
49
  if (adapterSession.capabilities.queue === null) {
28
- return { landed: "rejected", reason, result: steered };
50
+ return { landed: "rejected", code: steered.code, reason: steered.reason, result: steered };
29
51
  }
30
- const queued = await adapterSession.queue(input, identified);
31
- return queued.response.body.kind === "accepted"
52
+ const queued = await queue(input, identified);
53
+ return queued.kind === "accepted"
32
54
  ? { landed: "queued", result: queued }
33
- : { landed: "rejected", reason: queued.response.body.kind === "rejected" ? queued.response.body.reason : reason, result: queued };
55
+ : { landed: "rejected", code: queued.code, reason: queued.reason, result: queued };
34
56
  };
35
57
  return {
36
58
  ...adapterSession,
37
- prompt: async (input, options) => { const result = await adapterSession.prompt(input, { ...options, ...identify(options) }); return result; },
38
- steer: async (input, options) => { const result = await adapterSession.steer(input, identify(options)); return result; },
39
- queue: async (input, options) => { const result = await adapterSession.queue(input, identify(options)); return result; },
59
+ prompt,
60
+ steer,
61
+ queue,
62
+ abort,
40
63
  events: (observer, options = {}) => {
41
64
  const coalesce = options.coalesceText ?? false;
42
65
  const target = coalesce === false
@@ -45,8 +68,10 @@ export function sealSession(adapterSession) {
45
68
  return adapterSession.rawEvents(eventsReader(target), options.cursor);
46
69
  },
47
70
  model: () => modelOf(adapterSession.records(), adapterSession.id),
71
+ effort: () => effortOf(adapterSession.records(), adapterSession.id),
48
72
  usage: () => usageOf(adapterSession.records(), adapterSession.id),
49
73
  contextUsage: () => contextUsageOf(adapterSession.records(), adapterSession.id),
74
+ status: () => statusOf(adapterSession.records(), adapterSession.id),
50
75
  steerOrQueue,
51
76
  };
52
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seal-session.js","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seal-session.js","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,7 @@ export interface SessionKernel {
61
61
  */
62
62
  unreachable(): {
63
63
  readonly kind: "rejected";
64
+ readonly code: "runtime_exited" | "disposed";
64
65
  readonly reason: string;
65
66
  } | null;
66
67
  rawEvents(observer: RawEventObserver, cursor?: Cursor): Unsubscribe;
@@ -1 +1 @@
1
- {"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,gHAAgH;AAChH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7C,gHAAgH;IAChH,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACjH,iDAAiD;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5I;;;;;;OAMG;IACH,WAAW,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACpE,OAAO,IAAI,SAAS,QAAQ,EAAE,CAAC;IAC/B,KAAK,IAAI,YAAY,CAAC;IACtB,gGAAgG;IAChG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,wIAAwI;IACxI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAqBD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAqB,GAAG,aAAa,CAgGnF"}
1
+ {"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,gHAAgH;AAChH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7C,gHAAgH;IAChH,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACjH,iDAAiD;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5I;;;;;;OAMG;IACH,WAAW,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3H,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACpE,OAAO,IAAI,SAAS,QAAQ,EAAE,CAAC;IAC/B,KAAK,IAAI,YAAY,CAAC;IACtB,gGAAgG;IAChG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,wIAAwI;IACxI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAqBD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAqB,GAAG,aAAa,CAgGnF"}
@@ -4,7 +4,7 @@ async function settle(decide, issued) {
4
4
  return await decide(issued);
5
5
  }
6
6
  catch (error) {
7
- return { kind: "rejected", reason: error instanceof Error ? error.message : String(error) };
7
+ return { kind: "rejected", code: "error", reason: error instanceof Error ? error.message : String(error) };
8
8
  }
9
9
  }
10
10
  function deliver(observer, record) {
@@ -47,9 +47,9 @@ export function createSessionKernel(sessionId = randomUUID()) {
47
47
  };
48
48
  const unreachable = () => {
49
49
  if (exited) {
50
- return { kind: "rejected", reason: "runtime exited" };
50
+ return { kind: "rejected", code: "runtime_exited", reason: "runtime exited" };
51
51
  }
52
- return disposing ? { kind: "rejected", reason: "session disposed" } : null;
52
+ return disposing ? { kind: "rejected", code: "disposed", reason: "session disposed" } : null;
53
53
  };
54
54
  const request = (direction, body, at) => append((envelope) => ({ ...envelope, kind: "request", id: at?.id ?? randomUUID(), direction, body }), at);
55
55
  const respond = (requestId, body, at) => append((envelope) => ({ ...envelope, kind: "response", requestId, body }), at);
@@ -1 +1 @@
1
- {"version":3,"file":"session-kernel.js","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-kernel.js","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Test support for hosts: runtimes that need no binary, login or provider but
3
+ * produce a real `Session` (the same record stream, folds and control
4
+ * semantics). Node-only, like the root entry.
5
+ */
6
+ export { scriptedRuntime } from "./scripted-runtime.js";
7
+ export type { ScriptedRuntimeOptions, ScriptedTurn } from "./scripted-runtime.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Test support for hosts: runtimes that need no binary, login or provider but
3
+ * produce a real `Session` (the same record stream, folds and control
4
+ * semantics). Node-only, like the root entry.
5
+ */
6
+ export { scriptedRuntime } from "./scripted-runtime.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { RuntimeBrand } from "../contracts/brand.js";
2
+ import { type Runtime } from "../contracts/runtime.js";
3
+ import type { SessionOptions } from "../contracts/session.js";
4
+ /**
5
+ * What a script sees and does during one turn. Everything it emits enters the
6
+ * record stream as frames of type `scripted/*`, read into the ordinary events
7
+ * (`text_delta`, `reasoning`, `tool_call_*`), so a host exercises exactly the
8
+ * paths a vendor runtime would drive.
9
+ */
10
+ export interface ScriptedTurn {
11
+ /** The input that began the turn: a prompt, or a queued input when its turn starts. */
12
+ readonly input: string;
13
+ /** The options the host opened the session with (cwd, env, system prompts). */
14
+ readonly options: SessionOptions;
15
+ /** Aborts when the host aborts the turn or disposes the session. */
16
+ readonly signal: AbortSignal;
17
+ /** Steer inputs delivered into this turn so far, oldest first. */
18
+ readonly steered: readonly string[];
19
+ /** Emit assistant text. */
20
+ readonly say: (text: string) => void;
21
+ /** Emit readable reasoning. */
22
+ readonly think: (text: string) => void;
23
+ /**
24
+ * Run a tool: `tool_call_started`, then `run` (awaited), then
25
+ * `tool_call_ended` carrying its result as output (`ok`), or the thrown
26
+ * error's message (`failed`, and the error is rethrown to the script).
27
+ */
28
+ readonly tool: (name: string, input: string, run?: () => unknown) => Promise<void>;
29
+ }
30
+ export interface ScriptedRuntimeOptions {
31
+ /** Registry id; default `scripted`. */
32
+ readonly id?: string;
33
+ readonly brand?: RuntimeBrand;
34
+ /** Reported as the session's model; default `scripted-1`. */
35
+ readonly model?: string;
36
+ /**
37
+ * One turn of behavior. Resolving ends the turn `completed`; throwing ends
38
+ * it `failed` with the error message; an aborted signal ends it `aborted`
39
+ * (the script should stop working when it sees the signal).
40
+ */
41
+ readonly turn: (turn: ScriptedTurn) => void | Promise<void>;
42
+ }
43
+ /**
44
+ * A runtime whose model is a script: for hosts' tests and demos that need a
45
+ * real `Session` (the same records, folds and control semantics as a vendor
46
+ * runtime) without a binary, a login or a provider. Capabilities: steer,
47
+ * a non-durable queue, no sub-agents. Installation is always `bundled`.
48
+ */
49
+ export declare function scriptedRuntime(options: ScriptedRuntimeOptions): Runtime;
50
+ //# sourceMappingURL=scripted-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripted-runtime.d.ts","sourceRoot":"","sources":["../../src/testing/scripted-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAA2C,cAAc,EAA0C,MAAM,yBAAyB,CAAC;AAI/I;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2BAA2B;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAkLxE"}
@@ -0,0 +1,187 @@
1
+ import { defineRuntime } from "../contracts/runtime.js";
2
+ // Built only on the public runtime-author SPI (@botiverse/oar/kernel), like any host's runtime.
3
+ import { createSessionKernel, sealSession } from "../kernel.js";
4
+ const tokensOf = (text) => Math.ceil(text.length / 4);
5
+ /**
6
+ * A runtime whose model is a script: for hosts' tests and demos that need a
7
+ * real `Session` (the same records, folds and control semantics as a vendor
8
+ * runtime) without a binary, a login or a provider. Capabilities: steer,
9
+ * a non-durable queue, no sub-agents. Installation is always `bundled`.
10
+ */
11
+ export function scriptedRuntime(options) {
12
+ const id = options.id ?? "scripted";
13
+ const model = options.model ?? "scripted-1";
14
+ const start = async (_installation, sessionOptions) => {
15
+ await Promise.resolve();
16
+ // SessionOptions.effort's contract: a runtime that lists no effort levels refuses one, never ignores it.
17
+ if (sessionOptions.effort !== undefined) {
18
+ throw new Error(`${id} lists no reasoning-effort levels; it cannot run at effort "${sessionOptions.effort}"`);
19
+ }
20
+ const kernel = createSessionKernel(sessionOptions.resume);
21
+ const queued = [];
22
+ const totals = { input: 0, output: 0 };
23
+ let active = null;
24
+ let disposed = false;
25
+ const frame = (type, native, events) => {
26
+ kernel.frame({ type, native, events });
27
+ };
28
+ const usage = () => ({ input: totals.input, output: totals.output });
29
+ function run(input) {
30
+ const controller = new AbortController();
31
+ const steered = [];
32
+ const turnState = { controller, steered };
33
+ active = turnState;
34
+ totals.input += tokensOf(input);
35
+ let callSeq = 0;
36
+ const live = () => active === turnState && !controller.signal.aborted;
37
+ const turn = {
38
+ input,
39
+ options: sessionOptions,
40
+ signal: controller.signal,
41
+ steered: turnState.steered,
42
+ say: (text) => {
43
+ if (!live()) {
44
+ return;
45
+ }
46
+ totals.output += tokensOf(text);
47
+ frame("scripted/text", { text }, [{ kind: "text_delta", text }]);
48
+ },
49
+ think: (text) => {
50
+ if (!live()) {
51
+ return;
52
+ }
53
+ frame("scripted/reasoning", { text }, [{ kind: "reasoning", content: { kind: "text", text } }]);
54
+ },
55
+ tool: async (name, toolInput, work) => {
56
+ if (!live()) {
57
+ return;
58
+ }
59
+ callSeq += 1;
60
+ const callId = `call-${String(callSeq)}`;
61
+ frame("scripted/tool_start", { callId, name, input: toolInput }, [{ kind: "tool_call_started", callId, tool: name, input: toolInput }]);
62
+ try {
63
+ const result = await work?.();
64
+ const output = typeof result === "string" || result === undefined ? result : JSON.stringify(result);
65
+ frame("scripted/tool_end", { callId, output, result: "ok" }, [{ kind: "tool_call_ended", callId, result: "ok", ...(output === undefined ? {} : { output }) }]);
66
+ }
67
+ catch (error) {
68
+ const output = error instanceof Error ? error.message : String(error);
69
+ frame("scripted/tool_end", { callId, output, result: "failed" }, [{ kind: "tool_call_ended", callId, result: "failed", output }]);
70
+ throw error;
71
+ }
72
+ },
73
+ };
74
+ // The turn starts once the control that began it is answered, as with a vendor runtime:
75
+ // the accepted response precedes the turn's first event.
76
+ setImmediate(() => {
77
+ void (async () => {
78
+ end(turnState, await settle(turn, controller.signal));
79
+ })();
80
+ });
81
+ }
82
+ async function settle(turn, signal) {
83
+ try {
84
+ await options.turn(turn);
85
+ return signal.aborted ? { kind: "aborted" } : { kind: "completed" };
86
+ }
87
+ catch (error) {
88
+ return signal.aborted
89
+ ? { kind: "aborted" }
90
+ : { kind: "failed", reason: error instanceof Error ? error.message : String(error), failure: "unknown" };
91
+ }
92
+ }
93
+ function end(turnState, outcome) {
94
+ if (active !== turnState) {
95
+ return; // already ended (an abort or dispose ended it first)
96
+ }
97
+ active = null;
98
+ frame("scripted/end", { outcome }, [
99
+ { kind: "turn_ended", outcome },
100
+ { kind: "usage", usage: { tokens: usage(), context: { tokens: totals.input + totals.output, contextWindow: 200_000, percent: ((totals.input + totals.output) / 200_000) * 100 } } },
101
+ ]);
102
+ const next = queued.shift();
103
+ if (next !== undefined && !disposed) {
104
+ run(next);
105
+ }
106
+ }
107
+ function abortActive() {
108
+ const turnState = active;
109
+ if (turnState === null) {
110
+ return;
111
+ }
112
+ turnState.controller.abort();
113
+ end(turnState, { kind: "aborted" });
114
+ }
115
+ frame("scripted/model", { model }, [{ kind: "model", model }]);
116
+ return sealSession({
117
+ id: kernel.sessionId,
118
+ capabilities: { steer: true, queue: { durable: false }, attribution: "none" },
119
+ prompt: async (input, inputOptions) => {
120
+ const result = await kernel.control({ kind: "prompt", input, ...inputOptions }, () => {
121
+ if (active !== null) {
122
+ return { kind: "rejected", code: "busy", reason: "busy" };
123
+ }
124
+ run(input);
125
+ return { kind: "accepted" };
126
+ });
127
+ return result;
128
+ },
129
+ steer: async (input, inputOptions) => {
130
+ const result = await kernel.control({ kind: "steer", input, ...inputOptions }, () => {
131
+ if (active === null) {
132
+ return { kind: "rejected", code: "no_active_turn", reason: "no active turn" };
133
+ }
134
+ active.steered.push(input);
135
+ return { kind: "accepted" };
136
+ });
137
+ return result;
138
+ },
139
+ queue: async (input, inputOptions) => {
140
+ const result = await kernel.control({ kind: "queue", input, ...inputOptions }, () => {
141
+ if (active === null) {
142
+ run(input);
143
+ }
144
+ else {
145
+ queued.push(input);
146
+ }
147
+ return { kind: "accepted" };
148
+ });
149
+ return result;
150
+ },
151
+ abort: async () => {
152
+ const result = await kernel.control({ kind: "abort" }, () => {
153
+ if (active === null) {
154
+ return { kind: "rejected", code: "no_active_turn", reason: "no active turn" };
155
+ }
156
+ abortActive();
157
+ return { kind: "accepted" };
158
+ });
159
+ return result;
160
+ },
161
+ rawEvents: (observer, cursor) => kernel.rawEvents(observer, cursor),
162
+ records: () => kernel.records(),
163
+ graph: () => kernel.graph(),
164
+ dispose: async () => {
165
+ if (disposed) {
166
+ return;
167
+ }
168
+ disposed = true;
169
+ const request = kernel.request("toRuntime", { kind: "dispose" });
170
+ queued.length = 0;
171
+ abortActive();
172
+ kernel.respond(request.id, { kind: "exited", code: 0 });
173
+ await Promise.resolve();
174
+ },
175
+ });
176
+ };
177
+ return defineRuntime({
178
+ id,
179
+ ...(options.brand === undefined ? {} : { brand: options.brand }),
180
+ session: start,
181
+ installation: async () => {
182
+ await Promise.resolve();
183
+ return { kind: "available", via: "bundled" };
184
+ },
185
+ });
186
+ }
187
+ //# sourceMappingURL=scripted-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripted-runtime.js","sourceRoot":"","sources":["../../src/testing/scripted-runtime.ts"],"names":[],"mappings":"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"}
package/dist/voyage.d.ts CHANGED
@@ -3,6 +3,8 @@ export declare const VOYAGE_FORMAT = "oar-voyage/3";
3
3
  export interface VoyageHeader {
4
4
  readonly runtime: string;
5
5
  readonly model?: string;
6
+ /** The reasoning-effort level the run requested (`SessionOptions.effort`); absent when none was. */
7
+ readonly effort?: string;
6
8
  readonly cwd: string;
7
9
  readonly sessionId: string;
8
10
  readonly startedAt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"voyage.d.ts","sourceRoot":"","sources":["../src/voyage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWvD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAWvD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,CAe7E"}
1
+ {"version":3,"file":"voyage.d.ts","sourceRoot":"","sources":["../src/voyage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAavD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,oGAAoG;IACpG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAYvD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,CAe7E"}
package/dist/voyage.js CHANGED
@@ -6,7 +6,9 @@ import { closeSync, openSync, writeSync } from "node:fs";
6
6
  // request records); `end` is the last line; a log without it is a truncated
7
7
  // capture. All timestamps are Unix epoch milliseconds on the same clock as
8
8
  // `receivedAt`. The format is defined and owned by oar; other tools may
9
- // consume it.
9
+ // consume it. Rejected response bodies carry a typed `code` since 2026-09-23;
10
+ // a log written before then has the prose `reason` only. The header carries
11
+ // the requested `effort` since 2026-09-29 (absent before, and when none was).
10
12
  export const VOYAGE_FORMAT = "oar-voyage/3";
11
13
  export function headerLine(header) {
12
14
  return JSON.stringify({
@@ -14,6 +16,7 @@ export function headerLine(header) {
14
16
  format: VOYAGE_FORMAT,
15
17
  runtime: header.runtime,
16
18
  ...(header.model === undefined ? {} : { model: header.model }),
19
+ ...(header.effort === undefined ? {} : { effort: header.effort }),
17
20
  cwd: header.cwd,
18
21
  sessionId: header.sessionId,
19
22
  startedAt: header.startedAt,
@@ -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,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"}
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,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAa5C,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,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACjE,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,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/oar",
3
- "version": "0.6.0",
3
+ "version": "0.8.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",
@@ -14,10 +14,18 @@
14
14
  "types": "./dist/observe/index.d.ts",
15
15
  "import": "./dist/observe/index.js"
16
16
  },
17
+ "./kernel": {
18
+ "types": "./dist/kernel.d.ts",
19
+ "import": "./dist/kernel.js"
20
+ },
17
21
  "./brands": {
18
22
  "types": "./dist/brands.d.ts",
19
23
  "import": "./dist/brands.js"
20
24
  },
25
+ "./testing": {
26
+ "types": "./dist/testing/index.d.ts",
27
+ "import": "./dist/testing/index.js"
28
+ },
21
29
  "./assets/brands/*": "./assets/brands/*"
22
30
  },
23
31
  "files": [
@@ -42,6 +50,7 @@
42
50
  "cross-spawn": "^7.0.6",
43
51
  "which": "^2.0.2",
44
52
  "@earendil-works/pi-coding-agent": "^0.84.2",
53
+ "@earendil-works/pi-ai": "^0.84.2",
45
54
  "undici": "8.9.0"
46
55
  },
47
56
  "devDependencies": {