@allin-ai/agent-client 0.1.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 (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/allinai-agent +4 -0
  4. package/dist/capabilities/context.d.ts +16 -0
  5. package/dist/capabilities/context.d.ts.map +1 -0
  6. package/dist/capabilities/context.js +98 -0
  7. package/dist/capabilities/context.js.map +1 -0
  8. package/dist/capabilities/input.d.ts +7 -0
  9. package/dist/capabilities/input.d.ts.map +1 -0
  10. package/dist/capabilities/input.js +224 -0
  11. package/dist/capabilities/input.js.map +1 -0
  12. package/dist/capabilities/manifest.d.ts +15 -0
  13. package/dist/capabilities/manifest.d.ts.map +1 -0
  14. package/dist/capabilities/manifest.js +292 -0
  15. package/dist/capabilities/manifest.js.map +1 -0
  16. package/dist/capabilities/policy.d.ts +17 -0
  17. package/dist/capabilities/policy.d.ts.map +1 -0
  18. package/dist/capabilities/policy.js +57 -0
  19. package/dist/capabilities/policy.js.map +1 -0
  20. package/dist/capabilities/shell-host.d.ts +32 -0
  21. package/dist/capabilities/shell-host.d.ts.map +1 -0
  22. package/dist/capabilities/shell-host.js +378 -0
  23. package/dist/capabilities/shell-host.js.map +1 -0
  24. package/dist/capabilities/shell-wire.d.ts +13 -0
  25. package/dist/capabilities/shell-wire.d.ts.map +1 -0
  26. package/dist/capabilities/shell-wire.js +60 -0
  27. package/dist/capabilities/shell-wire.js.map +1 -0
  28. package/dist/capabilities/types.d.ts +46 -0
  29. package/dist/capabilities/types.d.ts.map +1 -0
  30. package/dist/capabilities/types.js +7 -0
  31. package/dist/capabilities/types.js.map +1 -0
  32. package/dist/cli/commands.d.ts +83 -0
  33. package/dist/cli/commands.d.ts.map +1 -0
  34. package/dist/cli/commands.js +638 -0
  35. package/dist/cli/commands.js.map +1 -0
  36. package/dist/cli/main.d.ts +2 -0
  37. package/dist/cli/main.d.ts.map +1 -0
  38. package/dist/cli/main.js +7 -0
  39. package/dist/cli/main.js.map +1 -0
  40. package/dist/client/state-store.d.ts +80 -0
  41. package/dist/client/state-store.d.ts.map +1 -0
  42. package/dist/client/state-store.js +422 -0
  43. package/dist/client/state-store.js.map +1 -0
  44. package/dist/client/supervisor.d.ts +118 -0
  45. package/dist/client/supervisor.d.ts.map +1 -0
  46. package/dist/client/supervisor.js +627 -0
  47. package/dist/client/supervisor.js.map +1 -0
  48. package/dist/client/transport.d.ts +30 -0
  49. package/dist/client/transport.d.ts.map +1 -0
  50. package/dist/client/transport.js +2 -0
  51. package/dist/client/transport.js.map +1 -0
  52. package/dist/client/types.d.ts +65 -0
  53. package/dist/client/types.d.ts.map +1 -0
  54. package/dist/client/types.js +13 -0
  55. package/dist/client/types.js.map +1 -0
  56. package/dist/client/wire.d.ts +32 -0
  57. package/dist/client/wire.d.ts.map +1 -0
  58. package/dist/client/wire.js +302 -0
  59. package/dist/client/wire.js.map +1 -0
  60. package/dist/client/ws-transport.d.ts +54 -0
  61. package/dist/client/ws-transport.d.ts.map +1 -0
  62. package/dist/client/ws-transport.js +229 -0
  63. package/dist/client/ws-transport.js.map +1 -0
  64. package/dist/config.d.ts +38 -0
  65. package/dist/config.d.ts.map +1 -0
  66. package/dist/config.js +125 -0
  67. package/dist/config.js.map +1 -0
  68. package/dist/control.d.ts +59 -0
  69. package/dist/control.d.ts.map +1 -0
  70. package/dist/control.js +217 -0
  71. package/dist/control.js.map +1 -0
  72. package/dist/credentials.d.ts +44 -0
  73. package/dist/credentials.d.ts.map +1 -0
  74. package/dist/credentials.js +229 -0
  75. package/dist/credentials.js.map +1 -0
  76. package/dist/hub.d.ts +83 -0
  77. package/dist/hub.d.ts.map +1 -0
  78. package/dist/hub.js +412 -0
  79. package/dist/hub.js.map +1 -0
  80. package/dist/index.d.ts +20 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +18 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/logger.d.ts +47 -0
  85. package/dist/logger.d.ts.map +1 -0
  86. package/dist/logger.js +175 -0
  87. package/dist/logger.js.map +1 -0
  88. package/dist/paths.d.ts +29 -0
  89. package/dist/paths.d.ts.map +1 -0
  90. package/dist/paths.js +50 -0
  91. package/dist/paths.js.map +1 -0
  92. package/dist/plugins/git.d.ts +30 -0
  93. package/dist/plugins/git.d.ts.map +1 -0
  94. package/dist/plugins/git.js +80 -0
  95. package/dist/plugins/git.js.map +1 -0
  96. package/dist/plugins/manager.d.ts +41 -0
  97. package/dist/plugins/manager.d.ts.map +1 -0
  98. package/dist/plugins/manager.js +328 -0
  99. package/dist/plugins/manager.js.map +1 -0
  100. package/dist/plugins/manifest.d.ts +9 -0
  101. package/dist/plugins/manifest.d.ts.map +1 -0
  102. package/dist/plugins/manifest.js +63 -0
  103. package/dist/plugins/manifest.js.map +1 -0
  104. package/dist/plugins/types.d.ts +39 -0
  105. package/dist/plugins/types.d.ts.map +1 -0
  106. package/dist/plugins/types.js +2 -0
  107. package/dist/plugins/types.js.map +1 -0
  108. package/dist/runtime/claude.d.ts +30 -0
  109. package/dist/runtime/claude.d.ts.map +1 -0
  110. package/dist/runtime/claude.js +163 -0
  111. package/dist/runtime/claude.js.map +1 -0
  112. package/dist/runtime/codex.d.ts +44 -0
  113. package/dist/runtime/codex.d.ts.map +1 -0
  114. package/dist/runtime/codex.js +192 -0
  115. package/dist/runtime/codex.js.map +1 -0
  116. package/dist/runtime/events.d.ts +7 -0
  117. package/dist/runtime/events.d.ts.map +1 -0
  118. package/dist/runtime/events.js +37 -0
  119. package/dist/runtime/events.js.map +1 -0
  120. package/dist/runtime/index.d.ts +10 -0
  121. package/dist/runtime/index.d.ts.map +1 -0
  122. package/dist/runtime/index.js +10 -0
  123. package/dist/runtime/index.js.map +1 -0
  124. package/dist/runtime/pi.d.ts +34 -0
  125. package/dist/runtime/pi.d.ts.map +1 -0
  126. package/dist/runtime/pi.js +211 -0
  127. package/dist/runtime/pi.js.map +1 -0
  128. package/dist/runtime/registry.d.ts +16 -0
  129. package/dist/runtime/registry.d.ts.map +1 -0
  130. package/dist/runtime/registry.js +22 -0
  131. package/dist/runtime/registry.js.map +1 -0
  132. package/dist/runtime/runner-child.d.ts +2 -0
  133. package/dist/runtime/runner-child.d.ts.map +1 -0
  134. package/dist/runtime/runner-child.js +41 -0
  135. package/dist/runtime/runner-child.js.map +1 -0
  136. package/dist/runtime/runner-manager.d.ts +77 -0
  137. package/dist/runtime/runner-manager.d.ts.map +1 -0
  138. package/dist/runtime/runner-manager.js +295 -0
  139. package/dist/runtime/runner-manager.js.map +1 -0
  140. package/dist/runtime/runner-wire.d.ts +23 -0
  141. package/dist/runtime/runner-wire.d.ts.map +1 -0
  142. package/dist/runtime/runner-wire.js +93 -0
  143. package/dist/runtime/runner-wire.js.map +1 -0
  144. package/dist/runtime/types.d.ts +43 -0
  145. package/dist/runtime/types.d.ts.map +1 -0
  146. package/dist/runtime/types.js +3 -0
  147. package/dist/runtime/types.js.map +1 -0
  148. package/dist/runtime/zcode.d.ts +14 -0
  149. package/dist/runtime/zcode.d.ts.map +1 -0
  150. package/dist/runtime/zcode.js +21 -0
  151. package/dist/runtime/zcode.js.map +1 -0
  152. package/dist/service/launchd.d.ts +34 -0
  153. package/dist/service/launchd.d.ts.map +1 -0
  154. package/dist/service/launchd.js +86 -0
  155. package/dist/service/launchd.js.map +1 -0
  156. package/dist/service/systemd.d.ts +16 -0
  157. package/dist/service/systemd.d.ts.map +1 -0
  158. package/dist/service/systemd.js +89 -0
  159. package/dist/service/systemd.js.map +1 -0
  160. package/dist/wire.d.ts +24 -0
  161. package/dist/wire.d.ts.map +1 -0
  162. package/dist/wire.js +7 -0
  163. package/dist/wire.js.map +1 -0
  164. package/package.json +140 -0
@@ -0,0 +1,163 @@
1
+ import { query, } from "@anthropic-ai/claude-agent-sdk";
2
+ function isRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4
+ }
5
+ function text(value) {
6
+ return typeof value === "string" ? value : undefined;
7
+ }
8
+ function payload(message, values = {}) {
9
+ return { ...values, vendorMessage: message };
10
+ }
11
+ function messageRecord(message) {
12
+ return message;
13
+ }
14
+ function messageSessionId(message) {
15
+ return text(message.session_id) ?? text(message.sessionId);
16
+ }
17
+ function mapClaudeMessage(message) {
18
+ const raw = messageRecord(message);
19
+ const type = text(raw.type) ?? "unknown";
20
+ const subtype = text(raw.subtype);
21
+ if (type === "system" && subtype === "init") {
22
+ return {
23
+ type: "init",
24
+ payload: payload(message, {
25
+ runtimeSessionId: messageSessionId(raw),
26
+ plugins: raw.plugins,
27
+ }),
28
+ };
29
+ }
30
+ if (type === "system" && subtype === "thinking_tokens") {
31
+ return {
32
+ type: "thinking_delta",
33
+ payload: payload(message, { text: "" }),
34
+ };
35
+ }
36
+ if (type === "stream_event" && isRecord(raw.event)) {
37
+ const event = raw.event;
38
+ const delta = isRecord(event.delta) ? event.delta : undefined;
39
+ if (delta?.type === "text_delta") {
40
+ return {
41
+ type: "text_delta",
42
+ payload: payload(message, { text: text(delta.text) ?? "" }),
43
+ };
44
+ }
45
+ if (delta?.type === "thinking_delta") {
46
+ return {
47
+ type: "thinking_delta",
48
+ payload: payload(message, { text: text(delta.thinking) ?? "" }),
49
+ };
50
+ }
51
+ }
52
+ if (type === "assistant" && isRecord(raw.message)) {
53
+ const content = Array.isArray(raw.message.content)
54
+ ? raw.message.content
55
+ : [];
56
+ const firstText = content.find((block) => isRecord(block) &&
57
+ block.type === "text" &&
58
+ typeof block.text === "string");
59
+ if (isRecord(firstText)) {
60
+ return {
61
+ type: "text_delta",
62
+ payload: payload(message, { text: firstText.text }),
63
+ };
64
+ }
65
+ const firstThinking = content.find((block) => isRecord(block) &&
66
+ block.type === "thinking" &&
67
+ typeof block.thinking === "string");
68
+ if (isRecord(firstThinking)) {
69
+ return {
70
+ type: "thinking_delta",
71
+ payload: payload(message, { text: firstThinking.thinking }),
72
+ };
73
+ }
74
+ }
75
+ if (type === "result") {
76
+ const result = text(raw.result);
77
+ if (raw.is_error === true || subtype === "error") {
78
+ return {
79
+ type: "error",
80
+ payload: payload(message, {
81
+ message: result ?? "Claude Agent SDK error",
82
+ }),
83
+ };
84
+ }
85
+ return { type: "done", payload: payload(message, { result }) };
86
+ }
87
+ return {
88
+ type: "tool",
89
+ payload: payload(message, { vendorMessageType: type, subtype }),
90
+ };
91
+ }
92
+ function errorMessage(error) {
93
+ return error instanceof Error ? error.message : String(error);
94
+ }
95
+ /**
96
+ * Official Claude Agent SDK adapter. SDK setup/iteration and process cleanup
97
+ * stay here; provider selection and host callbacks are explicit input.
98
+ */
99
+ export function createClaudeAdapter(deps = {}) {
100
+ const queryFactory = deps.query ?? query;
101
+ return {
102
+ id: "claude",
103
+ async probe() {
104
+ // This is deliberately SDK-presence reporting, not a provider auth or
105
+ // executable health check.
106
+ return { installed: true, version: null };
107
+ },
108
+ async *start(input, signal) {
109
+ if (signal.aborted) {
110
+ yield { type: "done", payload: { aborted: true } };
111
+ return;
112
+ }
113
+ const abortController = new AbortController();
114
+ let activeQuery = null;
115
+ let closed = false;
116
+ const close = () => {
117
+ if (closed)
118
+ return;
119
+ closed = true;
120
+ abortController.abort();
121
+ activeQuery?.close();
122
+ };
123
+ signal.addEventListener("abort", close, { once: true });
124
+ try {
125
+ activeQuery = queryFactory({
126
+ prompt: input.prompt,
127
+ options: {
128
+ ...input.options,
129
+ abortController,
130
+ ...(input.onAskUser ? { canUseTool: input.onAskUser } : {}),
131
+ },
132
+ });
133
+ for await (const message of activeQuery) {
134
+ if (signal.aborted)
135
+ break;
136
+ const mapped = mapClaudeMessage(message);
137
+ yield mapped;
138
+ if (mapped.type === "done" || mapped.type === "error")
139
+ return;
140
+ }
141
+ yield {
142
+ type: "done",
143
+ ...(signal.aborted ? { payload: { aborted: true } } : {}),
144
+ };
145
+ }
146
+ catch (error) {
147
+ if (signal.aborted) {
148
+ yield { type: "done", payload: { aborted: true } };
149
+ return;
150
+ }
151
+ yield {
152
+ type: "error",
153
+ payload: { message: errorMessage(error), cause: "sdk_throw" },
154
+ };
155
+ }
156
+ finally {
157
+ signal.removeEventListener("abort", close);
158
+ close();
159
+ }
160
+ },
161
+ };
162
+ }
163
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/runtime/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { PlatformEvent, PlatformProbe, PlatformRunInput } from "./types.js";
2
+ type CodexSdkEvent = {
3
+ type: string;
4
+ [key: string]: unknown;
5
+ };
6
+ type CodexThread = {
7
+ runStreamed(input: string, options?: {
8
+ signal?: AbortSignal;
9
+ }): Promise<{
10
+ events: AsyncIterable<CodexSdkEvent>;
11
+ }>;
12
+ };
13
+ /** The small official SDK surface this adapter needs; injectable for tests. */
14
+ export type CodexSdk = {
15
+ startThread(options?: {
16
+ workingDirectory?: string;
17
+ model?: string;
18
+ }): CodexThread;
19
+ resumeThread(threadId: string, options?: {
20
+ workingDirectory?: string;
21
+ model?: string;
22
+ }): CodexThread;
23
+ };
24
+ export type CodexAdapterRunInput = PlatformRunInput & {
25
+ platform: "codex";
26
+ /** A previously reported Codex thread id, when this is a resume. */
27
+ resumeThreadId?: string;
28
+ };
29
+ export type CodexAdapter = {
30
+ readonly id: "codex";
31
+ probe(): Promise<PlatformProbe>;
32
+ start(input: CodexAdapterRunInput, signal: AbortSignal): AsyncIterable<PlatformEvent>;
33
+ };
34
+ export type CreateCodexAdapterDeps = {
35
+ /** Test seam. Production creates the installed official Codex SDK. */
36
+ createCodex?: () => CodexSdk;
37
+ };
38
+ /**
39
+ * Official Codex SDK adapter. It owns SDK event translation and takes the
40
+ * caller's AbortSignal unchanged, so cancellation reaches `runStreamed`.
41
+ */
42
+ export declare function createCodexAdapter(deps?: CreateCodexAdapterDeps): CodexAdapter;
43
+ export {};
44
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/runtime/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9D,KAAK,WAAW,GAAG;IACjB,WAAW,CACT,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,CAAC,OAAO,CAAC,EAAE;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,WAAW,CAAC;IAChB,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,WAAW,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,KAAK,CACH,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,aAAa,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC9B,CAAC;AAiIF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE,sBAA2B,GAChC,YAAY,CA4Ed"}
@@ -0,0 +1,192 @@
1
+ import { Codex } from "@openai/codex-sdk";
2
+ function payload(values) {
3
+ return values;
4
+ }
5
+ function isRecord(value) {
6
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7
+ }
8
+ function text(value) {
9
+ return typeof value === "string" ? value : undefined;
10
+ }
11
+ function mapCodexEvent(event) {
12
+ if (event.type === "thread.started") {
13
+ const runtimeSessionId = text(event.thread_id);
14
+ return runtimeSessionId
15
+ ? {
16
+ type: "init",
17
+ payload: payload({ runtimeSessionId, vendorEventType: event.type }),
18
+ }
19
+ : null;
20
+ }
21
+ if (event.type === "item.completed" && isRecord(event.item)) {
22
+ if (event.item.type === "agent_message") {
23
+ const message = text(event.item.text);
24
+ return message
25
+ ? {
26
+ type: "text_delta",
27
+ payload: payload({ text: message, vendorEventType: event.type }),
28
+ }
29
+ : null;
30
+ }
31
+ if (event.item.type === "reasoning") {
32
+ const reasoning = text(event.item.text);
33
+ return reasoning
34
+ ? {
35
+ type: "thinking_delta",
36
+ payload: payload({ text: reasoning, vendorEventType: event.type }),
37
+ }
38
+ : null;
39
+ }
40
+ }
41
+ if (event.type === "turn.completed") {
42
+ return {
43
+ type: "done",
44
+ payload: payload({ usage: event.usage, vendorEventType: event.type }),
45
+ };
46
+ }
47
+ if (event.type === "turn.failed") {
48
+ const message = isRecord(event.error)
49
+ ? text(event.error.message)
50
+ : undefined;
51
+ return {
52
+ type: "error",
53
+ payload: payload({
54
+ message: message ?? "Codex turn failed",
55
+ vendorEventType: event.type,
56
+ }),
57
+ };
58
+ }
59
+ if (event.type === "error") {
60
+ return {
61
+ type: "error",
62
+ payload: payload({
63
+ message: text(event.message) ?? "Codex SDK error",
64
+ vendorEventType: event.type,
65
+ }),
66
+ };
67
+ }
68
+ if (event.type === "item.started" || event.type === "item.updated") {
69
+ return {
70
+ type: "tool",
71
+ payload: payload({ item: event.item, vendorEventType: event.type }),
72
+ };
73
+ }
74
+ return null;
75
+ }
76
+ function errorMessage(error) {
77
+ return error instanceof Error ? error.message : String(error);
78
+ }
79
+ /**
80
+ * A vendor iterator is allowed to be waiting for stdout when cancellation
81
+ * arrives. Do not wait for it to produce another event before reporting the
82
+ * cancellation to the caller; Codex receives the same signal in
83
+ * `runStreamed` and the iterator is asked to return as additional cleanup.
84
+ */
85
+ function nextEventOrAbort(iterator, signal) {
86
+ if (signal.aborted)
87
+ return Promise.resolve(null);
88
+ return new Promise((resolve, reject) => {
89
+ let settled = false;
90
+ const cleanup = () => signal.removeEventListener("abort", onAbort);
91
+ const onAbort = () => {
92
+ if (settled)
93
+ return;
94
+ settled = true;
95
+ cleanup();
96
+ void iterator.return?.();
97
+ resolve(null);
98
+ };
99
+ signal.addEventListener("abort", onAbort, { once: true });
100
+ void iterator.next().then((next) => {
101
+ if (settled)
102
+ return;
103
+ settled = true;
104
+ cleanup();
105
+ resolve(next);
106
+ }, (error) => {
107
+ if (settled)
108
+ return;
109
+ settled = true;
110
+ cleanup();
111
+ reject(error);
112
+ });
113
+ });
114
+ }
115
+ /**
116
+ * Official Codex SDK adapter. It owns SDK event translation and takes the
117
+ * caller's AbortSignal unchanged, so cancellation reaches `runStreamed`.
118
+ */
119
+ export function createCodexAdapter(deps = {}) {
120
+ const createCodex = deps.createCodex ?? (() => new Codex());
121
+ return {
122
+ id: "codex",
123
+ async probe() {
124
+ // The SDK is a required package dependency. This only reports that the
125
+ // SDK boundary is available; it intentionally does not claim CLI login
126
+ // or provider credentials are healthy.
127
+ return { installed: true, version: null };
128
+ },
129
+ async *start(input, signal) {
130
+ if (signal.aborted) {
131
+ yield { type: "done", payload: payload({ aborted: true }) };
132
+ return;
133
+ }
134
+ const sdk = createCodex();
135
+ const threadOptions = {
136
+ ...(input.cwd ? { workingDirectory: input.cwd } : {}),
137
+ ...(input.model ? { model: input.model } : {}),
138
+ };
139
+ const thread = input.resumeThreadId
140
+ ? sdk.resumeThread(input.resumeThreadId, threadOptions)
141
+ : sdk.startThread(threadOptions);
142
+ let terminal = false;
143
+ if (input.resumeThreadId) {
144
+ yield {
145
+ type: "init",
146
+ payload: payload({
147
+ runtimeSessionId: input.resumeThreadId,
148
+ resumed: true,
149
+ }),
150
+ };
151
+ }
152
+ try {
153
+ const { events } = await thread.runStreamed(input.prompt, { signal });
154
+ const iterator = events[Symbol.asyncIterator]();
155
+ while (true) {
156
+ const next = await nextEventOrAbort(iterator, signal);
157
+ if (!next || next.done)
158
+ break;
159
+ const event = next.value;
160
+ const mapped = mapCodexEvent(event);
161
+ if (!mapped)
162
+ continue;
163
+ yield mapped;
164
+ if (mapped.type === "done" || mapped.type === "error") {
165
+ terminal = true;
166
+ return;
167
+ }
168
+ }
169
+ if (!terminal) {
170
+ yield {
171
+ type: "done",
172
+ payload: signal.aborted ? payload({ aborted: true }) : undefined,
173
+ };
174
+ }
175
+ }
176
+ catch (error) {
177
+ if (signal.aborted) {
178
+ yield { type: "done", payload: payload({ aborted: true }) };
179
+ return;
180
+ }
181
+ yield {
182
+ type: "error",
183
+ payload: payload({
184
+ message: errorMessage(error),
185
+ cause: "sdk_throw",
186
+ }),
187
+ };
188
+ }
189
+ },
190
+ };
191
+ }
192
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/runtime/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PlatformEvent } from "./types.js";
2
+ export declare const PLATFORM_EVENT_TYPES: readonly ["init", "text_delta", "thinking_delta", "tool", "done", "error"];
3
+ export declare function isPlatformEvent(value: unknown): value is PlatformEvent;
4
+ export declare function isTerminalPlatformEvent(event: PlatformEvent): boolean;
5
+ /** Keeps process/protocol failures in the same durable event shape as SDK failures. */
6
+ export declare function platformErrorEvent(reason: string, message: string, details?: Record<string, unknown>): PlatformEvent;
7
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,oBAAoB,4EAOoB,CAAC;AAatD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAStE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAErE;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,aAAa,CASf"}
@@ -0,0 +1,37 @@
1
+ export const PLATFORM_EVENT_TYPES = [
2
+ "init",
3
+ "text_delta",
4
+ "thinking_delta",
5
+ "tool",
6
+ "done",
7
+ "error",
8
+ ];
9
+ function isRecord(value) {
10
+ return typeof value === "object" && value !== null && !Array.isArray(value);
11
+ }
12
+ function hasOnlyKeys(value, keys) {
13
+ return Object.keys(value).every((key) => keys.includes(key));
14
+ }
15
+ export function isPlatformEvent(value) {
16
+ if (!isRecord(value) ||
17
+ !hasOnlyKeys(value, ["type", "payload"]) ||
18
+ !PLATFORM_EVENT_TYPES.includes(value.type)) {
19
+ return false;
20
+ }
21
+ return value.payload === undefined || isRecord(value.payload);
22
+ }
23
+ export function isTerminalPlatformEvent(event) {
24
+ return event.type === "done" || event.type === "error";
25
+ }
26
+ /** Keeps process/protocol failures in the same durable event shape as SDK failures. */
27
+ export function platformErrorEvent(reason, message, details) {
28
+ return {
29
+ type: "error",
30
+ payload: {
31
+ reason,
32
+ message,
33
+ ...details,
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,OAAO;CAC4C,CAAC;AAEtD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAClB,KAA8B,EAC9B,IAAuB;IAEvB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAA6B,CAAC,EACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACzD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAe,EACf,OAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE;YACP,MAAM;YACN,OAAO;YACP,GAAG,OAAO;SACX;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { PLATFORM_IDS, type PlatformAdapter, type PlatformEvent, type PlatformId, type PlatformProbe, type PlatformRunInput, type RunnerManager, } from "./types.js";
2
+ export { PLATFORM_EVENT_TYPES, isPlatformEvent, isTerminalPlatformEvent, platformErrorEvent, } from "./events.js";
3
+ export { DEFAULT_RUNNER_CHILD_ENTRYPOINT, createRunnerManager, IsolatedRunnerManager, type RunnerChildProcess, type RunnerManagerOptions, type RunnerSpawn, type RunnerSpawnOptions, } from "./runner-manager.js";
4
+ export { encodeJsonLine, encodeRunnerEvent, encodeRunnerStart, JsonlDecoder, parseRunnerChildMessage, parseRunnerStart, type RunnerChildMessage, type RunnerStartMessage, } from "./runner-wire.js";
5
+ export { createCodexAdapter, type CodexAdapter, type CodexAdapterRunInput, type CodexSdk, type CreateCodexAdapterDeps, } from "./codex.js";
6
+ export { createClaudeAdapter, type ClaudeAdapter, type ClaudeAdapterRunInput, type ClaudeQueryFactory, type ClaudeSdkMessage, type CreateClaudeAdapterDeps, } from "./claude.js";
7
+ export { createPiAdapter, type CreatePiAdapterDeps, type PiAdapter, type PiAdapterRunInput, } from "./pi.js";
8
+ export { ZCODE_UNAVAILABLE_REASON, createZCodeAdapter, type ZCodeAdapter, } from "./zcode.js";
9
+ export { createPlatformAdapterRegistry, type PlatformAdapterFor, type PlatformAdapterRegistry, type RegisteredPlatformAdapter, } from "./registry.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { PLATFORM_IDS, } from "./types.js";
2
+ export { PLATFORM_EVENT_TYPES, isPlatformEvent, isTerminalPlatformEvent, platformErrorEvent, } from "./events.js";
3
+ export { DEFAULT_RUNNER_CHILD_ENTRYPOINT, createRunnerManager, IsolatedRunnerManager, } from "./runner-manager.js";
4
+ export { encodeJsonLine, encodeRunnerEvent, encodeRunnerStart, JsonlDecoder, parseRunnerChildMessage, parseRunnerStart, } from "./runner-wire.js";
5
+ export { createCodexAdapter, } from "./codex.js";
6
+ export { createClaudeAdapter, } from "./claude.js";
7
+ export { createPiAdapter, } from "./pi.js";
8
+ export { ZCODE_UNAVAILABLE_REASON, createZCodeAdapter, } from "./zcode.js";
9
+ export { createPlatformAdapterRegistry, } from "./registry.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAOb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,GAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,GAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,GAKnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,GAMpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,GAIhB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,GAI9B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type AgentSessionEvent } from "@earendil-works/pi-coding-agent";
2
+ import type { PlatformEvent, PlatformProbe, PlatformRunInput } from "./types.js";
3
+ type PiSession = {
4
+ readonly sessionId: string;
5
+ subscribe(listener: (event: AgentSessionEvent) => void): () => void;
6
+ prompt(text: string): Promise<void>;
7
+ abort(): Promise<void>;
8
+ dispose(): void;
9
+ };
10
+ type PiCreateSession = (options?: {
11
+ cwd?: string;
12
+ }) => Promise<{
13
+ session: PiSession;
14
+ }>;
15
+ export type PiAdapterRunInput = PlatformRunInput & {
16
+ platform: "pi";
17
+ };
18
+ export type PiAdapter = {
19
+ readonly id: "pi";
20
+ probe(): Promise<PlatformProbe>;
21
+ start(input: PiAdapterRunInput, signal: AbortSignal): AsyncIterable<PlatformEvent>;
22
+ };
23
+ export type CreatePiAdapterDeps = {
24
+ /** Test seam; production uses the verified official Pi SDK factory. */
25
+ createAgentSession?: PiCreateSession;
26
+ };
27
+ /**
28
+ * Official Pi SDK adapter. It uses `createAgentSession()` and translates the
29
+ * session subscription stream; tests replace only this factory and never start
30
+ * a real Pi agent.
31
+ */
32
+ export declare function createPiAdapter(deps?: CreatePiAdapterDeps): PiAdapter;
33
+ export {};
34
+ //# sourceMappingURL=pi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/runtime/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,OAAO,CAAC,EAAE;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,KAAK,CACH,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,aAAa,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,eAAe,CAAC;CACtC,CAAC;AAoHF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,mBAAwB,GAAG,SAAS,CAgGzE"}