@a5c-ai/adapters-codecs 5.1.1-staging.0ad6ac75ae4a

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/adapter-install.d.ts +20 -0
  4. package/dist/adapter-install.d.ts.map +1 -0
  5. package/dist/adapter-install.js +134 -0
  6. package/dist/adapter-install.js.map +1 -0
  7. package/dist/adapters-remote-adapter.d.ts +66 -0
  8. package/dist/adapters-remote-adapter.d.ts.map +1 -0
  9. package/dist/adapters-remote-adapter.js +292 -0
  10. package/dist/adapters-remote-adapter.js.map +1 -0
  11. package/dist/amp-adapter.d.ts +32 -0
  12. package/dist/amp-adapter.d.ts.map +1 -0
  13. package/dist/amp-adapter.js +417 -0
  14. package/dist/amp-adapter.js.map +1 -0
  15. package/dist/auth-config.d.ts +44 -0
  16. package/dist/auth-config.d.ts.map +1 -0
  17. package/dist/auth-config.js +167 -0
  18. package/dist/auth-config.js.map +1 -0
  19. package/dist/babysitter-adapter.d.ts +29 -0
  20. package/dist/babysitter-adapter.d.ts.map +1 -0
  21. package/dist/babysitter-adapter.js +335 -0
  22. package/dist/babysitter-adapter.js.map +1 -0
  23. package/dist/base-adapter-helpers.d.ts +7 -0
  24. package/dist/base-adapter-helpers.d.ts.map +1 -0
  25. package/dist/base-adapter-helpers.js +68 -0
  26. package/dist/base-adapter-helpers.js.map +1 -0
  27. package/dist/base-adapter.d.ts +157 -0
  28. package/dist/base-adapter.d.ts.map +1 -0
  29. package/dist/base-adapter.js +552 -0
  30. package/dist/base-adapter.js.map +1 -0
  31. package/dist/claude-adapter.d.ts +63 -0
  32. package/dist/claude-adapter.d.ts.map +1 -0
  33. package/dist/claude-adapter.js +546 -0
  34. package/dist/claude-adapter.js.map +1 -0
  35. package/dist/claude-agent-sdk-adapter.d.ts +40 -0
  36. package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
  37. package/dist/claude-agent-sdk-adapter.js +843 -0
  38. package/dist/claude-agent-sdk-adapter.js.map +1 -0
  39. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts +11 -0
  40. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts.map +1 -0
  41. package/dist/claude-code/runtime-hooks/ephemeral-config.js +153 -0
  42. package/dist/claude-code/runtime-hooks/ephemeral-config.js.map +1 -0
  43. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts +9 -0
  44. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts.map +1 -0
  45. package/dist/claude-code/runtime-hooks/hook-socket-server.js +89 -0
  46. package/dist/claude-code/runtime-hooks/hook-socket-server.js.map +1 -0
  47. package/dist/claude-code/runtime-hooks/lifecycle.d.ts +2 -0
  48. package/dist/claude-code/runtime-hooks/lifecycle.d.ts.map +1 -0
  49. package/dist/claude-code/runtime-hooks/lifecycle.js +24 -0
  50. package/dist/claude-code/runtime-hooks/lifecycle.js.map +1 -0
  51. package/dist/claude-remote-control-adapter.d.ts +43 -0
  52. package/dist/claude-remote-control-adapter.d.ts.map +1 -0
  53. package/dist/claude-remote-control-adapter.js +509 -0
  54. package/dist/claude-remote-control-adapter.js.map +1 -0
  55. package/dist/codex-adapter.d.ts +26 -0
  56. package/dist/codex-adapter.d.ts.map +1 -0
  57. package/dist/codex-adapter.js +336 -0
  58. package/dist/codex-adapter.js.map +1 -0
  59. package/dist/codex-sdk-adapter.d.ts +32 -0
  60. package/dist/codex-sdk-adapter.d.ts.map +1 -0
  61. package/dist/codex-sdk-adapter.js +392 -0
  62. package/dist/codex-sdk-adapter.js.map +1 -0
  63. package/dist/codex-sdk-mocks.d.ts +50 -0
  64. package/dist/codex-sdk-mocks.d.ts.map +1 -0
  65. package/dist/codex-sdk-mocks.js +97 -0
  66. package/dist/codex-sdk-mocks.js.map +1 -0
  67. package/dist/codex-websocket-adapter.d.ts +34 -0
  68. package/dist/codex-websocket-adapter.d.ts.map +1 -0
  69. package/dist/codex-websocket-adapter.js +402 -0
  70. package/dist/codex-websocket-adapter.js.map +1 -0
  71. package/dist/codex-websocket-connection.d.ts +77 -0
  72. package/dist/codex-websocket-connection.d.ts.map +1 -0
  73. package/dist/codex-websocket-connection.js +733 -0
  74. package/dist/codex-websocket-connection.js.map +1 -0
  75. package/dist/copilot-adapter.d.ts +27 -0
  76. package/dist/copilot-adapter.d.ts.map +1 -0
  77. package/dist/copilot-adapter.js +224 -0
  78. package/dist/copilot-adapter.js.map +1 -0
  79. package/dist/cursor-adapter.d.ts +32 -0
  80. package/dist/cursor-adapter.d.ts.map +1 -0
  81. package/dist/cursor-adapter.js +239 -0
  82. package/dist/cursor-adapter.js.map +1 -0
  83. package/dist/droid-adapter.d.ts +32 -0
  84. package/dist/droid-adapter.d.ts.map +1 -0
  85. package/dist/droid-adapter.js +383 -0
  86. package/dist/droid-adapter.js.map +1 -0
  87. package/dist/gemini-adapter.d.ts +38 -0
  88. package/dist/gemini-adapter.d.ts.map +1 -0
  89. package/dist/gemini-adapter.js +270 -0
  90. package/dist/gemini-adapter.js.map +1 -0
  91. package/dist/hermes-adapter.d.ts +33 -0
  92. package/dist/hermes-adapter.d.ts.map +1 -0
  93. package/dist/hermes-adapter.js +269 -0
  94. package/dist/hermes-adapter.js.map +1 -0
  95. package/dist/index.d.ts +32 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +33 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/mcp-plugins.d.ts +14 -0
  100. package/dist/mcp-plugins.d.ts.map +1 -0
  101. package/dist/mcp-plugins.js +97 -0
  102. package/dist/mcp-plugins.js.map +1 -0
  103. package/dist/omp-adapter.d.ts +26 -0
  104. package/dist/omp-adapter.d.ts.map +1 -0
  105. package/dist/omp-adapter.js +203 -0
  106. package/dist/omp-adapter.js.map +1 -0
  107. package/dist/openclaw-adapter.d.ts +32 -0
  108. package/dist/openclaw-adapter.d.ts.map +1 -0
  109. package/dist/openclaw-adapter.js +220 -0
  110. package/dist/openclaw-adapter.js.map +1 -0
  111. package/dist/opencode-adapter.d.ts +32 -0
  112. package/dist/opencode-adapter.d.ts.map +1 -0
  113. package/dist/opencode-adapter.js +315 -0
  114. package/dist/opencode-adapter.js.map +1 -0
  115. package/dist/opencode-http-adapter.d.ts +43 -0
  116. package/dist/opencode-http-adapter.d.ts.map +1 -0
  117. package/dist/opencode-http-adapter.js +378 -0
  118. package/dist/opencode-http-adapter.js.map +1 -0
  119. package/dist/opencode-http-connection.d.ts +32 -0
  120. package/dist/opencode-http-connection.d.ts.map +1 -0
  121. package/dist/opencode-http-connection.js +198 -0
  122. package/dist/opencode-http-connection.js.map +1 -0
  123. package/dist/pi-adapter.d.ts +26 -0
  124. package/dist/pi-adapter.d.ts.map +1 -0
  125. package/dist/pi-adapter.js +204 -0
  126. package/dist/pi-adapter.js.map +1 -0
  127. package/dist/pi-sdk-adapter.d.ts +46 -0
  128. package/dist/pi-sdk-adapter.d.ts.map +1 -0
  129. package/dist/pi-sdk-adapter.js +557 -0
  130. package/dist/pi-sdk-adapter.js.map +1 -0
  131. package/dist/programmatic-adapter-base.d.ts +87 -0
  132. package/dist/programmatic-adapter-base.d.ts.map +1 -0
  133. package/dist/programmatic-adapter-base.js +169 -0
  134. package/dist/programmatic-adapter-base.js.map +1 -0
  135. package/dist/provider-translation.d.ts +9 -0
  136. package/dist/provider-translation.d.ts.map +1 -0
  137. package/dist/provider-translation.js +2 -0
  138. package/dist/provider-translation.js.map +1 -0
  139. package/dist/qwen-adapter.d.ts +38 -0
  140. package/dist/qwen-adapter.d.ts.map +1 -0
  141. package/dist/qwen-adapter.js +269 -0
  142. package/dist/qwen-adapter.js.map +1 -0
  143. package/dist/remote-adapter-base.d.ts +84 -0
  144. package/dist/remote-adapter-base.d.ts.map +1 -0
  145. package/dist/remote-adapter-base.js +100 -0
  146. package/dist/remote-adapter-base.js.map +1 -0
  147. package/dist/session-fs.d.ts +89 -0
  148. package/dist/session-fs.d.ts.map +1 -0
  149. package/dist/session-fs.js +722 -0
  150. package/dist/session-fs.js.map +1 -0
  151. package/dist/shared/runtime-hooks-virtual.d.ts +2 -0
  152. package/dist/shared/runtime-hooks-virtual.d.ts.map +1 -0
  153. package/dist/shared/runtime-hooks-virtual.js +13 -0
  154. package/dist/shared/runtime-hooks-virtual.js.map +1 -0
  155. package/dist/translate-for-harness.d.ts +8 -0
  156. package/dist/translate-for-harness.d.ts.map +1 -0
  157. package/dist/translate-for-harness.js +89 -0
  158. package/dist/translate-for-harness.js.map +1 -0
  159. package/dist/translations/claude-translation.d.ts +3 -0
  160. package/dist/translations/claude-translation.d.ts.map +1 -0
  161. package/dist/translations/claude-translation.js +53 -0
  162. package/dist/translations/claude-translation.js.map +1 -0
  163. package/dist/translations/codex-translation.d.ts +3 -0
  164. package/dist/translations/codex-translation.d.ts.map +1 -0
  165. package/dist/translations/codex-translation.js +54 -0
  166. package/dist/translations/codex-translation.js.map +1 -0
  167. package/dist/translations/gemini-translation.d.ts +3 -0
  168. package/dist/translations/gemini-translation.d.ts.map +1 -0
  169. package/dist/translations/gemini-translation.js +45 -0
  170. package/dist/translations/gemini-translation.js.map +1 -0
  171. package/dist/translations/generic-openai-translation.d.ts +3 -0
  172. package/dist/translations/generic-openai-translation.d.ts.map +1 -0
  173. package/dist/translations/generic-openai-translation.js +47 -0
  174. package/dist/translations/generic-openai-translation.js.map +1 -0
  175. package/dist/translations/opencode-translation.d.ts +3 -0
  176. package/dist/translations/opencode-translation.d.ts.map +1 -0
  177. package/dist/translations/opencode-translation.js +48 -0
  178. package/dist/translations/opencode-translation.js.map +1 -0
  179. package/dist/translations/pi-translation.d.ts +3 -0
  180. package/dist/translations/pi-translation.d.ts.map +1 -0
  181. package/dist/translations/pi-translation.js +43 -0
  182. package/dist/translations/pi-translation.js.map +1 -0
  183. package/package.json +68 -0
@@ -0,0 +1,557 @@
1
+ /**
2
+ * PiSdkAdapter — Enhanced programmatic Pi agent integration.
3
+ *
4
+ * Provides a programmatic interface to Pi agent capabilities with enhanced
5
+ * features, better streaming, improved tool calling, and extensibility for
6
+ * future Pi platform enhancements.
7
+ */
8
+ import * as os from 'node:os';
9
+ import * as path from 'node:path';
10
+ import { BaseProgrammaticAdapter } from './programmatic-adapter-base.js';
11
+ import { createVirtualRuntimeHookCapabilities } from './shared/runtime-hooks-virtual.js';
12
+ import { listJsonlFiles, parseJsonlSessionFile, readJsonFile, writeJsonFileAtomic, } from './session-fs.js';
13
+ export class PiSdkAdapter extends BaseProgrammaticAdapter {
14
+ agent;
15
+ displayName = 'Pi (SDK)';
16
+ minVersion = '0.1.0';
17
+ constructor(agent) {
18
+ super();
19
+ this.agent = agent ?? this.constructor.name.replace(/Adapter$/, '').toLowerCase().replace(/pisdk/, 'pi-sdk');
20
+ }
21
+ hostEnvSignals = ['PI_API_KEY', 'ANTHROPIC_API_KEY', 'OPENAI_API_KEY'];
22
+ capabilities = {
23
+ agent: 'pi-sdk',
24
+ canResume: true,
25
+ canFork: true,
26
+ supportsMultiTurn: true,
27
+ sessionPersistence: 'file',
28
+ supportsTextStreaming: true,
29
+ supportsToolCallStreaming: true,
30
+ supportsThinkingStreaming: false,
31
+ supportsNativeTools: true,
32
+ supportsMCP: false,
33
+ supportsParallelToolCalls: true,
34
+ requiresToolApproval: true,
35
+ approvalModes: ['yolo', 'prompt', 'deny'],
36
+ runtimeHooks: createVirtualRuntimeHookCapabilities(),
37
+ supportsThinking: false,
38
+ thinkingEffortLevels: [],
39
+ supportsThinkingBudgetTokens: false,
40
+ supportsJsonMode: true,
41
+ supportsStructuredOutput: true,
42
+ structuredSessionTransport: 'restart-per-turn',
43
+ sessionControlPlane: 'self-managed',
44
+ supportsSkills: true,
45
+ supportsAgentsMd: true,
46
+ skillsFormat: 'file',
47
+ supportsSubagentDispatch: true,
48
+ supportsParallelExecution: true,
49
+ maxParallelTasks: 5,
50
+ supportsInteractiveMode: true,
51
+ supportsStdinInjection: true,
52
+ supportsImageInput: false,
53
+ supportsImageOutput: false,
54
+ supportsFileAttachments: true,
55
+ supportsPlugins: false,
56
+ pluginFormats: [],
57
+ pluginRegistries: [],
58
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
59
+ requiresGitRepo: false,
60
+ requiresPty: false,
61
+ authMethods: [
62
+ { type: 'api_key', name: 'Provider API Key', description: 'Provider-specific API key environment variables' },
63
+ { type: 'oauth', name: 'OAuth', description: 'OAuth-based authentication' },
64
+ ],
65
+ authFiles: ['.pi/agent/settings.json'],
66
+ installMethods: [
67
+ { platform: 'all', type: 'npm', command: 'npm install -g @pi-ai/sdk' },
68
+ ],
69
+ };
70
+ models = [
71
+ {
72
+ agent: 'pi-sdk',
73
+ modelId: 'pi-default',
74
+ displayName: 'Pi Default (SDK)',
75
+ deprecated: false,
76
+ contextWindow: 128000,
77
+ maxOutputTokens: 8192,
78
+ inputPricePerMillion: 1,
79
+ outputPricePerMillion: 3,
80
+ cachedInputPricePerMillion: 0.1,
81
+ supportsThinking: false,
82
+ supportsToolCalling: true,
83
+ supportsParallelToolCalls: true,
84
+ supportsToolCallStreaming: true,
85
+ supportsJsonMode: true,
86
+ supportsStructuredOutput: true,
87
+ supportsTextStreaming: true,
88
+ supportsThinkingStreaming: false,
89
+ supportsImageInput: false,
90
+ supportsImageOutput: false,
91
+ supportsFileInput: true,
92
+ cliArgKey: 'model',
93
+ cliArgValue: 'pi-default',
94
+ lastUpdated: '2026-04-01',
95
+ source: 'bundled',
96
+ },
97
+ {
98
+ agent: 'pi-sdk',
99
+ modelId: 'pi-enhanced',
100
+ displayName: 'Pi Enhanced (SDK)',
101
+ deprecated: false,
102
+ contextWindow: 200000,
103
+ maxOutputTokens: 16384,
104
+ inputPricePerMillion: 2,
105
+ outputPricePerMillion: 6,
106
+ cachedInputPricePerMillion: 0.2,
107
+ supportsThinking: false,
108
+ supportsToolCalling: true,
109
+ supportsParallelToolCalls: true,
110
+ supportsToolCallStreaming: true,
111
+ supportsJsonMode: true,
112
+ supportsStructuredOutput: true,
113
+ supportsTextStreaming: true,
114
+ supportsThinkingStreaming: false,
115
+ supportsImageInput: false,
116
+ supportsImageOutput: false,
117
+ supportsFileInput: true,
118
+ cliArgKey: 'model',
119
+ cliArgValue: 'pi-enhanced',
120
+ lastUpdated: '2026-04-01',
121
+ source: 'bundled',
122
+ },
123
+ ];
124
+ defaultModelId = 'pi-default';
125
+ configSchema = {
126
+ agent: 'pi-sdk',
127
+ version: 1,
128
+ fields: [],
129
+ configFilePaths: [path.join(os.homedir(), '.pi', 'agent', 'settings.json')],
130
+ projectConfigFilePaths: ['.pi/agent/settings.json'],
131
+ configFormat: 'json',
132
+ supportsProjectConfig: true,
133
+ };
134
+ async *execute(options) {
135
+ this.validateRunOptions(options);
136
+ const runId = this.generateRunId();
137
+ const modelId = this.resolveModel(options);
138
+ const prompt = this.normalizePrompt(options.prompt);
139
+ // Check authentication
140
+ const authState = await this.detectAuth();
141
+ if (authState.status !== 'authenticated') {
142
+ yield this.createErrorEvent(runId, 'AUTH_MISSING', 'No API key found for Pi SDK', false);
143
+ return;
144
+ }
145
+ try {
146
+ // Emit session start
147
+ yield {
148
+ ...this.createBaseEvent('session_start', runId),
149
+ type: 'session_start',
150
+ sessionId: options.sessionId || runId,
151
+ resumed: Boolean(options.sessionId),
152
+ };
153
+ // Create Pi SDK client (in real implementation)
154
+ const client = this.createPiClient();
155
+ // Build messages array
156
+ const messages = [
157
+ {
158
+ role: 'user',
159
+ content: prompt,
160
+ },
161
+ ];
162
+ // Add system prompt if provided
163
+ if (options.systemPrompt) {
164
+ messages.unshift({
165
+ role: 'system',
166
+ content: options.systemPrompt,
167
+ });
168
+ }
169
+ // Define available tools for Pi capabilities
170
+ const tools = [
171
+ {
172
+ name: 'search_web',
173
+ description: 'Search the web for current information',
174
+ parameters: {
175
+ type: 'object',
176
+ properties: {
177
+ query: {
178
+ type: 'string',
179
+ description: 'Search query',
180
+ },
181
+ max_results: {
182
+ type: 'integer',
183
+ description: 'Maximum number of results to return',
184
+ default: 5,
185
+ },
186
+ },
187
+ required: ['query'],
188
+ },
189
+ },
190
+ {
191
+ name: 'read_file',
192
+ description: 'Read the contents of a file',
193
+ parameters: {
194
+ type: 'object',
195
+ properties: {
196
+ path: {
197
+ type: 'string',
198
+ description: 'Path to the file to read',
199
+ },
200
+ },
201
+ required: ['path'],
202
+ },
203
+ },
204
+ {
205
+ name: 'write_file',
206
+ description: 'Write content to a file',
207
+ parameters: {
208
+ type: 'object',
209
+ properties: {
210
+ path: {
211
+ type: 'string',
212
+ description: 'Path to the file to write',
213
+ },
214
+ content: {
215
+ type: 'string',
216
+ description: 'Content to write to the file',
217
+ },
218
+ },
219
+ required: ['path', 'content'],
220
+ },
221
+ },
222
+ {
223
+ name: 'spawn_subagent',
224
+ description: 'Spawn a subagent to handle a specific task',
225
+ parameters: {
226
+ type: 'object',
227
+ properties: {
228
+ task: {
229
+ type: 'string',
230
+ description: 'Task description for the subagent',
231
+ },
232
+ agent_type: {
233
+ type: 'string',
234
+ description: 'Type of agent to spawn',
235
+ enum: ['pi', 'claude', 'opencode'],
236
+ default: 'pi',
237
+ },
238
+ },
239
+ required: ['task'],
240
+ },
241
+ },
242
+ ];
243
+ // Make streaming API call
244
+ const stream = await this.createPiStream({
245
+ model: modelId,
246
+ messages,
247
+ tools,
248
+ max_tokens: options.maxTokens || 8192,
249
+ temperature: 0.3,
250
+ stream: true,
251
+ });
252
+ let textAccumulated = '';
253
+ let currentToolCall = null;
254
+ for await (const chunk of stream) {
255
+ switch (chunk.type) {
256
+ case 'message_start':
257
+ // Message started
258
+ break;
259
+ case 'content_delta':
260
+ if (chunk.data?.text) {
261
+ textAccumulated += chunk.data.text;
262
+ yield this.createTextDeltaEvent(runId, chunk.data.text, chunk.data.accumulated || textAccumulated);
263
+ }
264
+ break;
265
+ case 'tool_call_start':
266
+ if (chunk.data?.tool_name && chunk.data?.tool_id) {
267
+ currentToolCall = {
268
+ id: chunk.data.tool_id,
269
+ name: chunk.data.tool_name,
270
+ input: '',
271
+ };
272
+ yield this.createToolCallStartEvent(runId, currentToolCall.id, currentToolCall.name, '');
273
+ }
274
+ break;
275
+ case 'tool_call_delta':
276
+ if (currentToolCall && chunk.data?.tool_input) {
277
+ currentToolCall.input += chunk.data.tool_input;
278
+ yield {
279
+ ...this.createBaseEvent('tool_input_delta', runId),
280
+ type: 'tool_input_delta',
281
+ toolCallId: currentToolCall.id,
282
+ delta: chunk.data.tool_input,
283
+ inputAccumulated: currentToolCall.input,
284
+ };
285
+ }
286
+ break;
287
+ case 'tool_call_ready':
288
+ if (currentToolCall) {
289
+ yield {
290
+ ...this.createBaseEvent('tool_call_ready', runId),
291
+ type: 'tool_call_ready',
292
+ toolCallId: currentToolCall.id,
293
+ toolName: currentToolCall.name,
294
+ input: currentToolCall.input,
295
+ };
296
+ // Execute the tool (mock execution)
297
+ const toolResult = await this.executeMockTool(currentToolCall.name, currentToolCall.input);
298
+ yield this.createToolResultEvent(runId, currentToolCall.id, currentToolCall.name, toolResult, 200 // mock duration
299
+ );
300
+ currentToolCall = null;
301
+ }
302
+ break;
303
+ case 'tool_result':
304
+ // Tool result is handled in tool_call_ready
305
+ break;
306
+ case 'message_stop':
307
+ if (chunk.data?.usage) {
308
+ const cost = this.extractCostFromUsage(chunk.data.usage, modelId);
309
+ if (cost) {
310
+ yield this.createCostEvent(runId, cost);
311
+ }
312
+ }
313
+ yield this.createMessageStopEvent(runId, textAccumulated);
314
+ break;
315
+ case 'error':
316
+ yield this.createErrorEvent(runId, 'INTERNAL', chunk.data?.error_message || 'Unknown error', false);
317
+ break;
318
+ }
319
+ }
320
+ }
321
+ catch (error) {
322
+ const message = error instanceof Error ? error.message : String(error);
323
+ yield this.createErrorEvent(runId, 'INTERNAL', `SDK error: ${message}`, false);
324
+ }
325
+ }
326
+ async detectAuth() {
327
+ // Check Pi-specific API key first
328
+ const piKey = process.env['PI_API_KEY'];
329
+ if (piKey) {
330
+ return {
331
+ status: 'authenticated',
332
+ method: 'api_key',
333
+ identity: `pi:...${piKey.slice(-4)}`,
334
+ };
335
+ }
336
+ // Check common provider keys that Pi might support
337
+ const anthropicKey = process.env['ANTHROPIC_API_KEY'];
338
+ if (anthropicKey) {
339
+ return {
340
+ status: 'authenticated',
341
+ method: 'api_key',
342
+ identity: `anthropic:...${anthropicKey.slice(-4)}`,
343
+ };
344
+ }
345
+ const openaiKey = process.env['OPENAI_API_KEY'];
346
+ if (openaiKey) {
347
+ return {
348
+ status: 'authenticated',
349
+ method: 'api_key',
350
+ identity: `openai:...${openaiKey.slice(-4)}`,
351
+ };
352
+ }
353
+ // Check Pi settings file
354
+ const piHome = path.join(os.homedir(), '.pi', 'agent');
355
+ const settingsPath = path.join(piHome, 'settings.json');
356
+ try {
357
+ const settings = await readJsonFile(settingsPath);
358
+ if (settings?.user?.id) {
359
+ return {
360
+ status: 'authenticated',
361
+ method: 'oauth',
362
+ identity: `pi:${settings.user.id}`,
363
+ };
364
+ }
365
+ }
366
+ catch {
367
+ // Settings file not found or invalid
368
+ }
369
+ return { status: 'unauthenticated' };
370
+ }
371
+ getAuthGuidance() {
372
+ return {
373
+ agent: 'pi-sdk',
374
+ providerName: 'Pi',
375
+ steps: [
376
+ {
377
+ step: 1,
378
+ description: 'Get a Pi API key from the Pi platform',
379
+ url: 'https://pi.ai/api-keys'
380
+ },
381
+ {
382
+ step: 2,
383
+ description: 'Set the PI_API_KEY environment variable',
384
+ command: 'export PI_API_KEY=pi-...'
385
+ },
386
+ {
387
+ step: 3,
388
+ description: 'Alternatively, set a provider API key (Anthropic, OpenAI)',
389
+ command: 'export ANTHROPIC_API_KEY=sk-ant-...'
390
+ },
391
+ ],
392
+ envVars: [
393
+ { name: 'PI_API_KEY', description: 'Pi platform API key', required: false, exampleFormat: 'pi-...' },
394
+ { name: 'ANTHROPIC_API_KEY', description: 'Anthropic API key', required: false, exampleFormat: 'sk-ant-...' },
395
+ { name: 'OPENAI_API_KEY', description: 'OpenAI API key', required: false, exampleFormat: 'sk-...' },
396
+ ],
397
+ documentationUrls: ['https://pi.ai/docs/api'],
398
+ verifyCommand: 'pi --version',
399
+ };
400
+ }
401
+ sessionDir(_cwd) {
402
+ return path.join(os.homedir(), '.pi', 'agent', 'sessions');
403
+ }
404
+ async parseSessionFile(filePath) {
405
+ const parsed = await parseJsonlSessionFile(filePath, 'pi-sdk');
406
+ return { ...parsed, agent: 'pi-sdk' };
407
+ }
408
+ async listSessionFiles(_cwd) {
409
+ return listJsonlFiles(this.sessionDir());
410
+ }
411
+ async readConfig(_cwd) {
412
+ const filePath = this.configSchema.configFilePaths?.[0];
413
+ if (!filePath)
414
+ return { agent: 'pi-sdk', source: 'global' };
415
+ const data = (await readJsonFile(filePath)) ?? {};
416
+ return { agent: 'pi-sdk', source: 'global', filePaths: [filePath], ...data };
417
+ }
418
+ async writeConfig(config, _cwd) {
419
+ const filePath = this.configSchema.configFilePaths?.[0];
420
+ if (!filePath)
421
+ return;
422
+ const existing = (await readJsonFile(filePath)) ?? {};
423
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
424
+ void _a;
425
+ void _s;
426
+ void _fp;
427
+ await writeJsonFileAtomic(filePath, { ...existing, ...rest });
428
+ }
429
+ // ── Private implementation methods ─────────────────────────────────
430
+ /**
431
+ * Create Pi SDK client (mock implementation).
432
+ * In real implementation, this would return an actual Pi SDK client.
433
+ */
434
+ createPiClient() {
435
+ // Mock client - in real implementation, this would be:
436
+ // return new PiClient({ apiKey: process.env.PI_API_KEY });
437
+ return {};
438
+ }
439
+ /**
440
+ * Create Pi stream (mock implementation).
441
+ * In real implementation, this would use the Pi SDK.
442
+ */
443
+ async createPiStream(params) {
444
+ // Mock streaming response
445
+ const mockChunks = [
446
+ {
447
+ type: 'message_start',
448
+ },
449
+ {
450
+ type: 'content_delta',
451
+ data: {
452
+ text: 'I\'ll help you with that task. ',
453
+ accumulated: 'I\'ll help you with that task. ',
454
+ },
455
+ },
456
+ {
457
+ type: 'content_delta',
458
+ data: {
459
+ text: 'Let me search for current information first.',
460
+ accumulated: 'I\'ll help you with that task. Let me search for current information first.',
461
+ },
462
+ },
463
+ {
464
+ type: 'tool_call_start',
465
+ data: {
466
+ tool_id: 'call_123',
467
+ tool_name: 'search_web',
468
+ },
469
+ },
470
+ {
471
+ type: 'tool_call_delta',
472
+ data: {
473
+ tool_input: '{"query": "latest information about ',
474
+ },
475
+ },
476
+ {
477
+ type: 'tool_call_delta',
478
+ data: {
479
+ tool_input: 'your topic"}',
480
+ },
481
+ },
482
+ {
483
+ type: 'tool_call_ready',
484
+ },
485
+ {
486
+ type: 'content_delta',
487
+ data: {
488
+ text: '\n\nBased on my search, here\'s what I found...',
489
+ accumulated: 'I\'ll help you with that task. Let me search for current information first.\n\nBased on my search, here\'s what I found...',
490
+ },
491
+ },
492
+ {
493
+ type: 'message_stop',
494
+ data: {
495
+ usage: {
496
+ input_tokens: 120,
497
+ output_tokens: 80,
498
+ total_tokens: 200,
499
+ },
500
+ },
501
+ },
502
+ ];
503
+ return {
504
+ async *[Symbol.asyncIterator]() {
505
+ for (const chunk of mockChunks) {
506
+ await new Promise(resolve => setTimeout(resolve, 150)); // Simulate streaming delay
507
+ yield chunk;
508
+ }
509
+ },
510
+ };
511
+ }
512
+ /**
513
+ * Execute mock tool calls.
514
+ */
515
+ async executeMockTool(name, inputJson) {
516
+ try {
517
+ const input = JSON.parse(inputJson);
518
+ switch (name) {
519
+ case 'search_web':
520
+ return `Found ${input.max_results || 5} results for "${input.query}":\n1. Sample result 1\n2. Sample result 2\n3. Sample result 3`;
521
+ case 'read_file':
522
+ return `Mock file contents for: ${input.path}`;
523
+ case 'write_file':
524
+ return `Successfully wrote ${input.content.length} characters to ${input.path}`;
525
+ case 'spawn_subagent':
526
+ return `Spawned ${input.agent_type || 'pi'} subagent for task: ${input.task}`;
527
+ default:
528
+ return `Unknown tool: ${name}`;
529
+ }
530
+ }
531
+ catch (error) {
532
+ return `Error executing tool ${name}: ${error}`;
533
+ }
534
+ }
535
+ /**
536
+ * Extract cost information from Pi usage object.
537
+ */
538
+ extractCostFromUsage(usage, modelId) {
539
+ const model = this.models.find(m => m.modelId === modelId);
540
+ if (!model) {
541
+ return {
542
+ totalUsd: 0,
543
+ inputTokens: usage.input_tokens,
544
+ outputTokens: usage.output_tokens,
545
+ };
546
+ }
547
+ const inputCost = (usage.input_tokens / 1_000_000) * model.inputPricePerMillion;
548
+ const outputCost = (usage.output_tokens / 1_000_000) * model.outputPricePerMillion;
549
+ const totalCost = inputCost + outputCost;
550
+ return {
551
+ totalUsd: totalCost,
552
+ inputTokens: usage.input_tokens,
553
+ outputTokens: usage.output_tokens,
554
+ };
555
+ }
556
+ }
557
+ //# sourceMappingURL=pi-sdk-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-sdk-adapter.js","sourceRoot":"","sources":["../src/pi-sdk-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * BaseProgrammaticAdapter — abstract base class for programmatic (SDK) adapters.
3
+ *
4
+ * Provides shared utilities for direct SDK integration without subprocess
5
+ * or network communication.
6
+ */
7
+ import type { AgentName, AgentCapabilities, ModelCapabilities, AgentConfig, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, InstalledPlugin, PluginInstallOptions, PluginSearchOptions, PluginListing, RunOptions, AgentEvent, ProgrammaticAdapter, CostRecord, SpawnArgs, ParseContext } from '@a5c-ai/comm-adapter';
8
+ /**
9
+ * Abstract base class for programmatic adapters. Provides shared utilities
10
+ * for direct SDK integration and common functionality.
11
+ */
12
+ export declare abstract class BaseProgrammaticAdapter implements ProgrammaticAdapter {
13
+ readonly adapterType: "programmatic";
14
+ readonly cliCommand = "[programmatic]";
15
+ buildSpawnArgs(_options: RunOptions): SpawnArgs;
16
+ parseEvent(_line: string, _context: ParseContext): AgentEvent | AgentEvent[] | null;
17
+ abstract readonly agent: AgentName;
18
+ abstract readonly displayName: string;
19
+ abstract readonly minVersion?: string;
20
+ abstract readonly capabilities: AgentCapabilities;
21
+ abstract readonly models: ModelCapabilities[];
22
+ abstract readonly defaultModelId?: string;
23
+ abstract readonly configSchema: AgentConfigSchema;
24
+ abstract execute(options: RunOptions): AsyncIterableIterator<AgentEvent>;
25
+ abstract detectAuth(): Promise<AuthState>;
26
+ abstract getAuthGuidance(): AuthSetupGuidance;
27
+ abstract sessionDir(cwd?: string): string;
28
+ abstract parseSessionFile(filePath: string): Promise<Session>;
29
+ abstract listSessionFiles(cwd?: string): Promise<string[]>;
30
+ abstract readConfig(cwd?: string): Promise<AgentConfig>;
31
+ abstract writeConfig(config: Partial<AgentConfig>, cwd?: string): Promise<void>;
32
+ readonly hostEnvSignals?: readonly string[];
33
+ listPlugins?(): Promise<InstalledPlugin[]>;
34
+ installPlugin?(pluginId: string, options?: PluginInstallOptions): Promise<InstalledPlugin>;
35
+ uninstallPlugin?(pluginId: string): Promise<void>;
36
+ searchPlugins?(query: string, options?: PluginSearchOptions): Promise<PluginListing[]>;
37
+ readHostMetadata?(env: NodeJS.ProcessEnv): Record<string, string | number | boolean | null>;
38
+ /**
39
+ * Generate a unique run ID for this execution.
40
+ */
41
+ protected generateRunId(): string;
42
+ /**
43
+ * Create base event structure with common fields.
44
+ */
45
+ protected createBaseEvent(type: string, runId: string): Record<string, unknown>;
46
+ /**
47
+ * Helper to create text delta events.
48
+ */
49
+ protected createTextDeltaEvent(runId: string, delta: string, accumulated?: string): AgentEvent;
50
+ /**
51
+ * Helper to create tool call start events.
52
+ */
53
+ protected createToolCallStartEvent(runId: string, toolCallId: string, toolName: string, inputAccumulated: string): AgentEvent;
54
+ /**
55
+ * Helper to create tool result events.
56
+ */
57
+ protected createToolResultEvent(runId: string, toolCallId: string, toolName: string, output: unknown, durationMs?: number): AgentEvent;
58
+ /**
59
+ * Helper to create cost events.
60
+ */
61
+ protected createCostEvent(runId: string, cost: CostRecord): AgentEvent;
62
+ /**
63
+ * Helper to create error events.
64
+ */
65
+ protected createErrorEvent(runId: string, code: string, message: string, recoverable?: boolean): AgentEvent;
66
+ /**
67
+ * Helper to create message stop events.
68
+ */
69
+ protected createMessageStopEvent(runId: string, text: string): AgentEvent;
70
+ /**
71
+ * Validate that required options are present.
72
+ */
73
+ protected validateRunOptions(options: RunOptions): void;
74
+ /**
75
+ * Get the model to use for this run, with fallback to default.
76
+ */
77
+ protected resolveModel(options: RunOptions): string;
78
+ /**
79
+ * Extract cost information from SDK response.
80
+ * Subclasses can override this to handle provider-specific cost formats.
81
+ */
82
+ protected extractCostFromResponse(response: unknown): Record<string, unknown> | null;
83
+ /**
84
+ * Convert provider-specific prompt format to standard format.
85
+ */
86
+ protected normalizePrompt(prompt: string | string[]): string;
87
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic-adapter-base.d.ts","sourceRoot":"","sources":["../src/programmatic-adapter-base.ts"],"names":[],"mappings":"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"}