@botiverse/oar 0.0.11 → 0.1.1

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 (159) hide show
  1. package/README.md +2 -2
  2. package/dist/contracts/model-catalog.d.ts +1 -1
  3. package/dist/contracts/model-catalog.js +1 -1
  4. package/dist/contracts/provider-auth.d.ts +2 -2
  5. package/dist/contracts/provider-auth.js +2 -2
  6. package/dist/contracts/records.d.ts +214 -0
  7. package/dist/contracts/records.d.ts.map +1 -0
  8. package/dist/contracts/records.js +8 -0
  9. package/dist/contracts/records.js.map +1 -0
  10. package/dist/contracts/session.d.ts +93 -144
  11. package/dist/contracts/session.d.ts.map +1 -1
  12. package/dist/index.d.ts +6 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +3 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/observe/agent-status.d.ts +32 -18
  17. package/dist/observe/agent-status.d.ts.map +1 -1
  18. package/dist/observe/agent-status.js +66 -14
  19. package/dist/observe/agent-status.js.map +1 -1
  20. package/dist/observe/aggregate-events.d.ts +7 -6
  21. package/dist/observe/aggregate-events.d.ts.map +1 -1
  22. package/dist/observe/aggregate-events.js +38 -28
  23. package/dist/observe/aggregate-events.js.map +1 -1
  24. package/dist/observe/index.d.ts +4 -1
  25. package/dist/observe/index.d.ts.map +1 -1
  26. package/dist/observe/index.js +3 -1
  27. package/dist/observe/index.js.map +1 -1
  28. package/dist/observe/observe-agent.d.ts +4 -4
  29. package/dist/observe/observe-agent.d.ts.map +1 -1
  30. package/dist/observe/observe-agent.js +3 -3
  31. package/dist/observe/observe-agent.js.map +1 -1
  32. package/dist/observe/stall-observer.d.ts +7 -6
  33. package/dist/observe/stall-observer.d.ts.map +1 -1
  34. package/dist/observe/stall-observer.js +6 -5
  35. package/dist/observe/stall-observer.js.map +1 -1
  36. package/dist/observe/tool-activity.d.ts +2 -2
  37. package/dist/observe/tool-activity.d.ts.map +1 -1
  38. package/dist/observe/tool-activity.js +1 -1
  39. package/dist/observe/tool-activity.js.map +1 -1
  40. package/dist/observe/turns.d.ts +37 -0
  41. package/dist/observe/turns.d.ts.map +1 -0
  42. package/dist/observe/turns.js +70 -0
  43. package/dist/observe/turns.js.map +1 -0
  44. package/dist/observe/usage.d.ts +15 -0
  45. package/dist/observe/usage.d.ts.map +1 -0
  46. package/dist/observe/usage.js +94 -0
  47. package/dist/observe/usage.js.map +1 -0
  48. package/dist/runtimes/claude/account-usage.js +1 -1
  49. package/dist/runtimes/claude/context-usage.d.ts +1 -1
  50. package/dist/runtimes/claude/context-usage.js +1 -1
  51. package/dist/runtimes/claude/projection.d.ts +40 -27
  52. package/dist/runtimes/claude/projection.d.ts.map +1 -1
  53. package/dist/runtimes/claude/projection.js +110 -23
  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 +120 -87
  57. package/dist/runtimes/claude/session.js.map +1 -1
  58. package/dist/runtimes/codex/app-server-client.d.ts +38 -3
  59. package/dist/runtimes/codex/app-server-client.d.ts.map +1 -1
  60. package/dist/runtimes/codex/app-server-client.js +62 -15
  61. package/dist/runtimes/codex/app-server-client.js.map +1 -1
  62. package/dist/runtimes/codex/projection.d.ts +12 -12
  63. package/dist/runtimes/codex/projection.d.ts.map +1 -1
  64. package/dist/runtimes/codex/projection.js +111 -40
  65. package/dist/runtimes/codex/projection.js.map +1 -1
  66. package/dist/runtimes/codex/rpc-control.d.ts +31 -0
  67. package/dist/runtimes/codex/rpc-control.d.ts.map +1 -0
  68. package/dist/runtimes/codex/rpc-control.js +51 -0
  69. package/dist/runtimes/codex/rpc-control.js.map +1 -0
  70. package/dist/runtimes/codex/session.d.ts.map +1 -1
  71. package/dist/runtimes/codex/session.js +199 -149
  72. package/dist/runtimes/codex/session.js.map +1 -1
  73. package/dist/runtimes/grok/session.d.ts +37 -1
  74. package/dist/runtimes/grok/session.d.ts.map +1 -1
  75. package/dist/runtimes/grok/session.js +74 -0
  76. package/dist/runtimes/grok/session.js.map +1 -1
  77. package/dist/runtimes/kimi/session.d.ts.map +1 -1
  78. package/dist/runtimes/kimi/session.js +5 -0
  79. package/dist/runtimes/kimi/session.js.map +1 -1
  80. package/dist/runtimes/pi/auth.d.ts.map +1 -1
  81. package/dist/runtimes/pi/auth.js +6 -1
  82. package/dist/runtimes/pi/auth.js.map +1 -1
  83. package/dist/runtimes/pi/catalog.d.ts.map +1 -1
  84. package/dist/runtimes/pi/catalog.js +6 -1
  85. package/dist/runtimes/pi/catalog.js.map +1 -1
  86. package/dist/runtimes/pi/http.d.ts +34 -0
  87. package/dist/runtimes/pi/http.d.ts.map +1 -0
  88. package/dist/runtimes/pi/http.js +95 -0
  89. package/dist/runtimes/pi/http.js.map +1 -0
  90. package/dist/runtimes/pi/list-models.d.ts.map +1 -1
  91. package/dist/runtimes/pi/list-models.js +10 -3
  92. package/dist/runtimes/pi/list-models.js.map +1 -1
  93. package/dist/runtimes/pi/open.d.ts +32 -0
  94. package/dist/runtimes/pi/open.d.ts.map +1 -0
  95. package/dist/runtimes/pi/open.js +106 -0
  96. package/dist/runtimes/pi/open.js.map +1 -0
  97. package/dist/runtimes/pi/projection.d.ts +27 -25
  98. package/dist/runtimes/pi/projection.d.ts.map +1 -1
  99. package/dist/runtimes/pi/projection.js +86 -50
  100. package/dist/runtimes/pi/projection.js.map +1 -1
  101. package/dist/runtimes/pi/session.d.ts +1 -22
  102. package/dist/runtimes/pi/session.d.ts.map +1 -1
  103. package/dist/runtimes/pi/session.js +179 -184
  104. package/dist/runtimes/pi/session.js.map +1 -1
  105. package/dist/shared/acp/client-app.d.ts +23 -0
  106. package/dist/shared/acp/client-app.d.ts.map +1 -0
  107. package/dist/shared/acp/client-app.js +55 -0
  108. package/dist/shared/acp/client-app.js.map +1 -0
  109. package/dist/shared/acp/model.d.ts +3 -17
  110. package/dist/shared/acp/model.d.ts.map +1 -1
  111. package/dist/shared/acp/model.js +3 -14
  112. package/dist/shared/acp/model.js.map +1 -1
  113. package/dist/shared/acp/profile.d.ts +32 -7
  114. package/dist/shared/acp/profile.d.ts.map +1 -1
  115. package/dist/shared/acp/profile.js +17 -8
  116. package/dist/shared/acp/profile.js.map +1 -1
  117. package/dist/shared/acp/projection.d.ts +16 -8
  118. package/dist/shared/acp/projection.d.ts.map +1 -1
  119. package/dist/shared/acp/projection.js +59 -32
  120. package/dist/shared/acp/projection.js.map +1 -1
  121. package/dist/shared/acp/records.d.ts +46 -0
  122. package/dist/shared/acp/records.d.ts.map +1 -0
  123. package/dist/shared/acp/records.js +125 -0
  124. package/dist/shared/acp/records.js.map +1 -0
  125. package/dist/shared/acp/session.d.ts.map +1 -1
  126. package/dist/shared/acp/session.js +98 -224
  127. package/dist/shared/acp/session.js.map +1 -1
  128. package/dist/shared/acp/terminal.d.ts +1 -3
  129. package/dist/shared/acp/terminal.d.ts.map +1 -1
  130. package/dist/shared/acp/terminal.js +1 -21
  131. package/dist/shared/acp/terminal.js.map +1 -1
  132. package/dist/shared/acp/turns.d.ts +45 -0
  133. package/dist/shared/acp/turns.d.ts.map +1 -0
  134. package/dist/shared/acp/turns.js +160 -0
  135. package/dist/shared/acp/turns.js.map +1 -0
  136. package/dist/shared/acp/usage-wait.d.ts +6 -6
  137. package/dist/shared/acp/usage-wait.d.ts.map +1 -1
  138. package/dist/shared/acp/usage-wait.js +2 -2
  139. package/dist/shared/acp/usage-wait.js.map +1 -1
  140. package/dist/shared/failure-class.d.ts +1 -1
  141. package/dist/shared/failure-class.js +2 -2
  142. package/dist/shared/failure-class.js.map +1 -1
  143. package/dist/shared/seal-session.d.ts +5 -3
  144. package/dist/shared/seal-session.d.ts.map +1 -1
  145. package/dist/shared/seal-session.js +24 -16
  146. package/dist/shared/seal-session.js.map +1 -1
  147. package/dist/shared/session-kernel.d.ts +68 -18
  148. package/dist/shared/session-kernel.d.ts.map +1 -1
  149. package/dist/shared/session-kernel.js +82 -42
  150. package/dist/shared/session-kernel.js.map +1 -1
  151. package/dist/voyage.d.ts +4 -7
  152. package/dist/voyage.d.ts.map +1 -1
  153. package/dist/voyage.js +14 -19
  154. package/dist/voyage.js.map +1 -1
  155. package/package.json +4 -3
  156. package/dist/runtimes/codex/context-usage.d.ts +0 -10
  157. package/dist/runtimes/codex/context-usage.d.ts.map +0 -1
  158. package/dist/runtimes/codex/context-usage.js +0 -16
  159. package/dist/runtimes/codex/context-usage.js.map +0 -1
@@ -1,19 +1,22 @@
1
1
  import { classifyFailure } from "../../shared/failure-class.js";
2
- import { asRecord } from "../../shared/json.js";
2
+ import { asNumber, asRecord } from "../../shared/json.js";
3
3
  import { codexItemInput, codexItemOutput } from "./item-detail.js";
4
4
  import { codexReasoningContent } from "./reasoning.js";
5
5
  /**
6
- * The codex notification → SessionEvent projection as a PURE FOLD (see
7
- * runtimes/claude/projection.ts for the shape). Emits kernel commands
8
- * (begin/emit/settle); the live adapter applies them and separately owns the
9
- * transport-only codexTurnId (steer/abort identity), which is not part of the
10
- * projection. Behavior is pinned by tests/replay against recorded fixtures.
6
+ * The codex notification → record projection as a PURE FOLD (see
7
+ * runtimes/claude/projection.ts for the shape). Every notification becomes
8
+ * exactly one event command: verbatim `native`, views in oar's vocabulary,
9
+ * the runtime's own turn id as `spanId`. Plus, for collaboration items that
10
+ * name other threads, a link command for the session graph. Nothing is gated
11
+ * on turn state and nothing is dropped; the adapter applies the commands and
12
+ * separately owns the transport-only turn id (steer/abort identity), which is
13
+ * not part of the projection. Behavior is pinned by tests/replay against
14
+ * recorded fixtures.
11
15
  */
12
16
  const TOOL_ITEM_TYPES = new Set(["commandExecution", "fileChange", "mcpToolCall", "webSearch"]);
13
- export const initialCodexProjection = { inTurn: false, lastErrorDetail: null };
14
- /** Control plane → state: a prompt (or resume) opens a turn. */
15
- export function codexPrompted(state) {
16
- return { ...state, inTurn: true };
17
+ const COLLAB_ITEM_TYPES = new Set(["collabAgentToolCall", "collabToolCall", "subAgentActivity"]);
18
+ export function initialCodexProjection(rootThreadId) {
19
+ return { rootThreadId, lastErrorDetail: null };
17
20
  }
18
21
  // The runtime's own status is the truth: an interrupt that landed reports
19
22
  // "interrupted"; one that lost the race to completion reports "completed".
@@ -29,7 +32,7 @@ function outcomeFromStatus(status) {
29
32
  }
30
33
  }
31
34
  }
32
- function toolEvents(method, item) {
35
+ function toolViews(method, item) {
33
36
  const itemType = typeof item?.type === "string" ? item.type : "";
34
37
  if (!TOOL_ITEM_TYPES.has(itemType)) {
35
38
  return [];
@@ -42,9 +45,17 @@ function toolEvents(method, item) {
42
45
  : { kind: "tool_call_started", callId: itemId, tool: itemType, input }];
43
46
  }
44
47
  const output = item === null ? undefined : codexItemOutput(item);
48
+ const status = typeof item?.status === "string" ? item.status : undefined;
49
+ let result = undefined;
50
+ if (status === "completed") {
51
+ result = "ok";
52
+ }
53
+ else if (status === "failed") {
54
+ result = "failed";
55
+ }
45
56
  return [output === undefined
46
- ? { kind: "tool_call_ended", callId: itemId }
47
- : { kind: "tool_call_ended", callId: itemId, output }];
57
+ ? { kind: "tool_call_ended", callId: itemId, ...(result === undefined ? {} : { result }) }
58
+ : { kind: "tool_call_ended", callId: itemId, output, ...(result === undefined ? {} : { result }) }];
48
59
  }
49
60
  function settleOutcome(state, status) {
50
61
  const outcome = outcomeFromStatus(status);
@@ -54,45 +65,105 @@ function settleOutcome(state, status) {
54
65
  }
55
66
  return outcome;
56
67
  }
57
- function emits(bodies) {
58
- return bodies.map((body) => ({ kind: "emit", body }));
59
- }
60
- /** Fold one codex notification into the next state plus commands. */
61
- export function foldCodexNotification(state, method, params) {
62
- if (method === "turn/started") {
63
- return state.inTurn
64
- ? { state, commands: [] }
65
- : { state: { ...state, inTurn: true }, commands: [{ kind: "begin" }] };
68
+ /**
69
+ * `tokenUsage.total` accumulates over every model call of the thread's life
70
+ * (input 12.6k → 28.4k → 44.2k across three one-word turns, codex 0.154.0),
71
+ * so it is the running spend, not what the context holds. `tokenUsage.last`
72
+ * is the most recent model call, and `modelContextWindow` the window it fit
73
+ * in; those two are the context reading. Codex's own occupancy figure is
74
+ * `last.total_tokens` (`TokenUsage::tokens_in_context_window`, protocol.rs
75
+ * at 4f39251a; the TUI's status card reads it off `last_token_usage`; its
76
+ * percent also subtracts a 12k baseline). oar reads the same field,
77
+ * `last.totalTokens`: the last call's input (cached tokens included) plus its
78
+ * output, which is what the context holds once the reply is in, matching
79
+ * the runtime's own reading rather than undercounting by the last output.
80
+ * When `last` is absent (older builds) the occupancy is unknown: the
81
+ * cumulative input stands in as `tokens` and the window and percent are
82
+ * null: the cumulative total is never read against the window.
83
+ */
84
+ function usageViews(params) {
85
+ const tokenUsage = asRecord(params.tokenUsage);
86
+ const total = asRecord(tokenUsage?.total);
87
+ if (total === null) {
88
+ return [];
66
89
  }
67
- if (method === "error") {
68
- const error = asRecord(params.error);
69
- const message = typeof error?.message === "string" ? error.message : "";
70
- const details = typeof error?.additionalDetails === "string" ? error.additionalDetails : "";
71
- const combined = [message, details].filter((part) => part.length > 0).join(" — ");
72
- return combined.length > 0 ? { state: { ...state, lastErrorDetail: combined }, commands: [] } : { state, commands: [] };
90
+ const input = asNumber(total.inputTokens);
91
+ const output = asNumber(total.outputTokens);
92
+ const tokens = input === null || output === null ? {} : { tokens: { input, output } };
93
+ const last = asRecord(tokenUsage?.last);
94
+ if (last === null) {
95
+ return [{ kind: "usage", usage: { context: { tokens: input, contextWindow: null, percent: null }, ...tokens } }];
73
96
  }
74
- if (!state.inTurn) {
75
- return { state, commands: [] };
97
+ const contextTokens = asNumber(last.totalTokens);
98
+ const contextWindow = asNumber(tokenUsage?.modelContextWindow);
99
+ const percent = contextTokens === null || contextWindow === null || contextWindow <= 0
100
+ ? null
101
+ : Math.round((contextTokens / contextWindow) * 100);
102
+ return [{ kind: "usage", usage: { context: { tokens: contextTokens, contextWindow, percent }, ...tokens } }];
103
+ }
104
+ /** Edges a collaboration item establishes: the root (sender) thread spawned or addressed the named threads. */
105
+ function collabEdges(state, item) {
106
+ if (item === null || typeof item.type !== "string" || !COLLAB_ITEM_TYPES.has(item.type)) {
107
+ return [];
76
108
  }
109
+ const parent = typeof item.senderThreadId === "string" ? item.senderThreadId : state.rootThreadId;
110
+ const receivers = Array.isArray(item.receiverThreadIds) ? item.receiverThreadIds : [];
111
+ const children = [...receivers, item.agentThreadId]
112
+ .filter((id) => typeof id === "string" && id.length > 0 && id !== parent);
113
+ return children.map((child) => ({ parent, child, via: "tool_call" }));
114
+ }
115
+ function spanIdOf(params) {
116
+ if (typeof params.turnId === "string") {
117
+ return params.turnId;
118
+ }
119
+ const turnId = asRecord(params.turn)?.id;
120
+ return typeof turnId === "string" ? turnId : undefined;
121
+ }
122
+ function viewsFor(state, method, params) {
77
123
  switch (method) {
78
124
  case "item/agentMessage/delta":
79
- return typeof params.delta === "string"
80
- ? { state, commands: emits([{ kind: "text_delta", text: params.delta }]) }
81
- : { state, commands: [] };
125
+ return typeof params.delta === "string" ? [{ kind: "text_delta", text: params.delta }] : [];
82
126
  case "rawResponseItem/completed": {
83
127
  const content = codexReasoningContent(asRecord(params.item));
84
- return content === null ? { state, commands: [] } : { state, commands: emits([{ kind: "reasoning", content }]) };
128
+ return content === null ? [] : [{ kind: "reasoning", content }];
85
129
  }
86
130
  case "item/started":
87
131
  case "item/completed":
88
- return { state, commands: emits(toolEvents(method, asRecord(params.item))) };
132
+ return toolViews(method, asRecord(params.item));
89
133
  case "turn/completed":
90
- return {
91
- state: { inTurn: false, lastErrorDetail: null },
92
- commands: [{ kind: "settle", outcome: settleOutcome(state, asRecord(params.turn)?.status) }],
93
- };
134
+ return [{ kind: "turn_ended", outcome: settleOutcome(state, asRecord(params.turn)?.status) }];
135
+ case "thread/tokenUsage/updated":
136
+ return usageViews(params);
94
137
  default:
95
- return { state, commands: [] };
138
+ return [];
139
+ }
140
+ }
141
+ /** Fold one codex notification into the next state plus commands. */
142
+ export function foldCodexNotification(state, method, params) {
143
+ const threadId = typeof params.threadId === "string" ? params.threadId : state.rootThreadId;
144
+ const spanId = spanIdOf(params);
145
+ const event = {
146
+ kind: "event",
147
+ body: { type: method, native: params, views: viewsFor(state, method, params) },
148
+ ...(spanId === undefined ? {} : { spanId }),
149
+ ...(threadId === state.rootThreadId ? {} : { sessionId: threadId }),
150
+ };
151
+ const links = method === "item/started" || method === "item/completed"
152
+ ? collabEdges(state, asRecord(params.item)).map((edge) => ({ kind: "link", edge }))
153
+ : [];
154
+ let next = state;
155
+ if (method === "error") {
156
+ const error = asRecord(params.error);
157
+ const message = typeof error?.message === "string" ? error.message : "";
158
+ const details = typeof error?.additionalDetails === "string" ? error.additionalDetails : "";
159
+ const combined = [message, details].filter((part) => part.length > 0).join(": ");
160
+ if (combined.length > 0) {
161
+ next = { ...state, lastErrorDetail: combined };
162
+ }
163
+ }
164
+ else if (method === "turn/completed" && threadId === state.rootThreadId) {
165
+ next = { ...state, lastErrorDetail: null };
96
166
  }
167
+ return { state: next, commands: [event, ...links] };
97
168
  }
98
169
  //# sourceMappingURL=projection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ControlResult, RequestBody, RequestRecord, ResponseBody } from "../../contracts/session.js";
2
+ import type { JsonRecord } from "../../shared/json.js";
3
+ import type { SessionKernel } from "../../shared/session-kernel.js";
4
+ import type { AppServerClient } from "./app-server-client.js";
5
+ export interface RpcControlPlan {
6
+ readonly body: RequestBody;
7
+ /** Runtime-specific refusal before sending (busy, nothing active); null means proceed. May reserve adapter state. Reachability is not its job. */
8
+ readonly gate: (request: RequestRecord) => ResponseBody | null;
9
+ readonly method: string;
10
+ readonly params: () => JsonRecord;
11
+ readonly onReply: (reply: JsonRecord) => ResponseBody;
12
+ readonly onError: (message: string) => ResponseBody;
13
+ }
14
+ /**
15
+ * A control action backed by one app-server RPC: record the request; when the
16
+ * stream already says the runtime is unreachable (`kernel.unreachable()`:
17
+ * exited or disposed) record that rejection without running the plan; if the
18
+ * plan's gate refuses, record that; otherwise send and record the reply AS
19
+ * the reply line is read (synchronously, through the client's onSettled hook)
20
+ * so the response sits in the stream before any notification codex wrote
21
+ * after it; a promise continuation would land after notifications from the
22
+ * same chunk.
23
+ */
24
+ export declare function rpcControl(kernel: SessionKernel, client: AppServerClient, plan: RpcControlPlan): Promise<ControlResult>;
25
+ /**
26
+ * The open RPC, with its failure named after the method (a refused resume
27
+ * must say `thread/resume`: "no rollout found for thread id …" alone does
28
+ * not) and the app-server that was started for it killed.
29
+ */
30
+ export declare function openThread(client: AppServerClient, method: "thread/start" | "thread/resume", send: () => Promise<JsonRecord>): Promise<JsonRecord>;
31
+ //# sourceMappingURL=rpc-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-control.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/rpc-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EAEb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,kJAAkJ;IAClJ,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,YAAY,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC;CACrD;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAC9B,OAAO,CAAC,UAAU,CAAC,CAQrB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * A control action backed by one app-server RPC: record the request; when the
3
+ * stream already says the runtime is unreachable (`kernel.unreachable()`:
4
+ * exited or disposed) record that rejection without running the plan; if the
5
+ * plan's gate refuses, record that; otherwise send and record the reply AS
6
+ * the reply line is read (synchronously, through the client's onSettled hook)
7
+ * so the response sits in the stream before any notification codex wrote
8
+ * after it; a promise continuation would land after notifications from the
9
+ * same chunk.
10
+ */
11
+ export async function rpcControl(kernel, client, plan) {
12
+ const blocked = kernel.unreachable();
13
+ const request = kernel.request("toRuntime", plan.body);
14
+ const refused = blocked ?? plan.gate(request);
15
+ if (refused !== null) {
16
+ return { request, response: kernel.respond(request.id, refused) };
17
+ }
18
+ const { promise, resolve } = Promise.withResolvers();
19
+ let recorded = false;
20
+ const record = (decided) => {
21
+ if (!recorded) {
22
+ recorded = true;
23
+ resolve(kernel.respond(request.id, decided));
24
+ }
25
+ };
26
+ try {
27
+ await client.request(plan.method, plan.params(), (outcome) => {
28
+ record(outcome.kind === "result" ? plan.onReply(outcome.result) : plan.onError(outcome.error.message));
29
+ });
30
+ }
31
+ catch (error) {
32
+ record(plan.onError(error instanceof Error ? error.message : String(error)));
33
+ }
34
+ return { request, response: await promise };
35
+ }
36
+ /**
37
+ * The open RPC, with its failure named after the method (a refused resume
38
+ * must say `thread/resume`: "no rollout found for thread id …" alone does
39
+ * not) and the app-server that was started for it killed.
40
+ */
41
+ export async function openThread(client, method, send) {
42
+ try {
43
+ return await send();
44
+ }
45
+ catch (error) {
46
+ client.kill();
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ throw new Error(`codex ${method} failed: ${message}`, { cause: error });
49
+ }
50
+ }
51
+ //# sourceMappingURL=rpc-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-control.js","sourceRoot":"","sources":["../../../src/runtimes/codex/rpc-control.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAqB,EACrB,MAAuB,EACvB,IAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAkB,CAAC;IACrE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,CAAC,OAAqB,EAAQ,EAAE;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3D,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuB,EACvB,MAAwC,EACxC,IAA+B;IAE/B,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,YAAY,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,YAAY,EAAQ,MAAM,4BAA4B,CAAC;AAgC5F,eAAO,MAAM,YAAY,EAAE,YAqN1B,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,4BAA4B,CAAC;AA0CpC,eAAO,MAAM,YAAY,EAAE,YA0P1B,CAAC"}