@a3s-lab/code 0.3.1 → 0.4.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.
@@ -0,0 +1,540 @@
1
+ /**
2
+ * Session — The core abstraction for A3S Code SDK.
3
+ *
4
+ * A Session binds a workspace and model at creation time (immutable).
5
+ * All agentic, generation, streaming, and context management calls are methods on the session.
6
+ *
7
+ * Every `session.send()` can trigger the AgenticLoop — when the model calls tools,
8
+ * the session automatically enters the loop (generate → tool call → execute → reflect → repeat).
9
+ *
10
+ * Supports `using` syntax for automatic cleanup via Symbol.asyncDispose.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { A3sClient, createProvider } from '@a3s-lab/code';
15
+ *
16
+ * const client = new A3sClient();
17
+ * const openai = createProvider({ name: 'openai', apiKey: 'sk-xxx' });
18
+ *
19
+ * await using session = await client.createSession({
20
+ * model: openai('gpt-4o'),
21
+ * workspace: '/project',
22
+ * system: 'You are a senior software engineer.',
23
+ * });
24
+ *
25
+ * // Simple question — model answers directly
26
+ * const { text } = await session.send('What is TypeScript?');
27
+ *
28
+ * // Complex task — auto-enters AgenticLoop
29
+ * const { text, steps, toolCalls } = await session.send(
30
+ * 'Refactor the auth module to use JWT',
31
+ * );
32
+ *
33
+ * // Streaming with real-time events
34
+ * const { eventStream } = session.sendStream('Fix all TODOs in src/');
35
+ * for await (const event of eventStream) {
36
+ * if (event.type === 'text') process.stdout.write(event.content);
37
+ * }
38
+ * ```
39
+ */
40
+ import type { A3sClient } from './client.js';
41
+ import type { Message, Usage, FinishReason, ToolCall, ToolResult, GenerateChunk, ContextUsage, GetMessagesResponse, ExternalTask, ToolStats, GetCostSummaryResponse, AgentEvent } from './client.js';
42
+ import type { OpenAIMessage } from './openai-compat.js';
43
+ import type { ModelRef } from './provider.js';
44
+ import type { ToolSet } from './tool.js';
45
+ /** Options for creating a session via client.createSession() */
46
+ export interface SessionCreateOptions {
47
+ /** Model reference from createProvider() */
48
+ model: ModelRef;
49
+ /** Working directory for tool sandboxing (immutable after creation) */
50
+ workspace?: string;
51
+ /** System prompt */
52
+ system?: string;
53
+ /** Optional session ID. If omitted, the server generates one. */
54
+ sessionId?: string;
55
+ /** Optional initial context messages */
56
+ initialContext?: MessageInput[];
57
+ /** Skills to load (directories, names, or inline definitions) */
58
+ skills?: Array<string | SkillDefinition>;
59
+ /** HITL confirmation policy */
60
+ confirmation?: ConfirmationConfig;
61
+ /** Tool permission policy */
62
+ permissions?: PermissionConfig;
63
+ /** Lane handler overrides */
64
+ lanes?: Partial<Record<LaneName, LaneConfig>>;
65
+ /** Enable auto-compaction */
66
+ autoCompact?: boolean;
67
+ /** Auto-compact threshold (0.0-1.0) */
68
+ autoCompactThreshold?: number;
69
+ }
70
+ /** Message input — supports both A3S and OpenAI formats */
71
+ export type MessageInput = Message | OpenAIMessage;
72
+ /** Step information passed to onStepFinish callback */
73
+ export interface StepResult {
74
+ stepIndex: number;
75
+ text: string;
76
+ toolCalls: ToolCall[];
77
+ toolResults: ToolResult[];
78
+ usage?: Usage;
79
+ finishReason?: FinishReason;
80
+ }
81
+ /** Tool call event for onToolCall callback */
82
+ export interface ToolCallEvent {
83
+ toolCallId: string;
84
+ toolName: string;
85
+ args: Record<string, unknown>;
86
+ }
87
+ /** Options for session.generateText() */
88
+ export interface SessionGenerateTextOptions {
89
+ /** Simple text prompt */
90
+ prompt?: string;
91
+ /** Full message array for multi-turn input */
92
+ messages?: MessageInput[];
93
+ /** Client-side tool definitions */
94
+ tools?: ToolSet;
95
+ /** Maximum generation + tool execution steps. @default 1 */
96
+ maxSteps?: number;
97
+ /** Called when each step completes */
98
+ onStepFinish?: (step: StepResult) => void | Promise<void>;
99
+ /** Called when the model invokes a tool */
100
+ onToolCall?: (event: ToolCallEvent) => void | unknown | Promise<void | unknown>;
101
+ }
102
+ /** Options for session.generateObject() */
103
+ export interface SessionGenerateObjectOptions {
104
+ /** Simple text prompt */
105
+ prompt?: string;
106
+ /** Full message array */
107
+ messages?: MessageInput[];
108
+ /** JSON schema string for structured output */
109
+ schema: string;
110
+ }
111
+ /** Result from session.generateText() */
112
+ export interface GenerateTextResult {
113
+ text: string;
114
+ usage?: Usage;
115
+ finishReason: FinishReason;
116
+ toolCalls: ToolCall[];
117
+ steps: StepResult[];
118
+ }
119
+ /** Result from session.streamText() */
120
+ export interface StreamTextResult {
121
+ textStream: AsyncIterable<string>;
122
+ fullStream: AsyncIterable<GenerateChunk>;
123
+ toolStream: AsyncIterable<ToolCall>;
124
+ text: Promise<string>;
125
+ usage: Promise<Usage | undefined>;
126
+ finishReason: Promise<FinishReason | undefined>;
127
+ steps: Promise<StepResult[]>;
128
+ }
129
+ /** Result from session.generateObject() */
130
+ export interface GenerateObjectResult<T = unknown> {
131
+ object: T;
132
+ data: string;
133
+ usage?: Usage;
134
+ }
135
+ /** Result from session.streamObject() */
136
+ export interface StreamObjectResult {
137
+ partialStream: AsyncIterable<string>;
138
+ object: Promise<unknown>;
139
+ data: Promise<string>;
140
+ }
141
+ /** Inline skill definition */
142
+ export interface SkillDefinition {
143
+ name: string;
144
+ description: string;
145
+ content: string;
146
+ allowedTools?: string[];
147
+ disableModelInvocation?: boolean;
148
+ }
149
+ /** Skill info returned by listSkills() */
150
+ export interface SkillInfo {
151
+ name: string;
152
+ description: string;
153
+ loaded: boolean;
154
+ source: 'project' | 'user' | 'builtin' | 'inline';
155
+ }
156
+ /** Custom agent definition for registerAgent() */
157
+ export interface AgentDefinition {
158
+ name: string;
159
+ description: string;
160
+ system?: string;
161
+ permissions?: {
162
+ allow?: string[];
163
+ deny?: string[];
164
+ };
165
+ maxSteps?: number;
166
+ model?: ModelRef;
167
+ }
168
+ /** Agent info returned by listAgents() */
169
+ export interface AgentInfo {
170
+ name: string;
171
+ description: string;
172
+ mode: 'subagent';
173
+ }
174
+ /** Friendly lane name */
175
+ export type LaneName = 'control' | 'query' | 'execute' | 'generate';
176
+ /** Friendly lane handler config */
177
+ export interface LaneConfig {
178
+ mode: 'internal' | 'external' | 'hybrid';
179
+ timeout?: number;
180
+ timeoutAction?: 'reject' | 'fallback-internal' | 'auto-retry';
181
+ maxRetries?: number;
182
+ }
183
+ /** Friendly confirmation policy */
184
+ export interface ConfirmationConfig {
185
+ requireConfirmation?: string[];
186
+ autoApprove?: string[];
187
+ timeout?: number;
188
+ timeoutAction?: 'auto-approve' | 'reject';
189
+ }
190
+ /** Friendly permission policy */
191
+ export interface PermissionConfig {
192
+ defaultAction?: 'allow' | 'deny' | 'ask';
193
+ rules?: Array<{
194
+ tool: string;
195
+ pattern?: string;
196
+ action: 'allow' | 'deny' | 'ask';
197
+ }>;
198
+ }
199
+ /** Confirmation request passed to onConfirmation callback */
200
+ export interface ConfirmationRequest {
201
+ confirmationId: string;
202
+ toolName: string;
203
+ args: Record<string, unknown>;
204
+ timeout: number;
205
+ }
206
+ /** Agent loop event types */
207
+ export type AgentLoopEvent = {
208
+ type: 'text';
209
+ content: string;
210
+ } | {
211
+ type: 'tool_call';
212
+ toolName: string;
213
+ args: Record<string, unknown>;
214
+ toolCallId: string;
215
+ } | {
216
+ type: 'tool_result';
217
+ toolCallId: string;
218
+ output: string;
219
+ success: boolean;
220
+ } | {
221
+ type: 'step_finish';
222
+ stepIndex: number;
223
+ text: string;
224
+ toolCalls: ToolCall[];
225
+ } | {
226
+ type: 'plan';
227
+ steps: Array<{
228
+ description: string;
229
+ }>;
230
+ } | {
231
+ type: 'reflection';
232
+ confidence: number;
233
+ shouldRetry: boolean;
234
+ insight: string;
235
+ } | {
236
+ type: 'confirmation_required';
237
+ confirmationId: string;
238
+ toolName: string;
239
+ args: Record<string, unknown>;
240
+ timeout: number;
241
+ } | {
242
+ type: 'confirmation_received';
243
+ approved: boolean;
244
+ } | {
245
+ type: 'subagent_start';
246
+ agentName: string;
247
+ task: string;
248
+ sessionId: string;
249
+ } | {
250
+ type: 'subagent_progress';
251
+ agentName: string;
252
+ text: string;
253
+ } | {
254
+ type: 'subagent_end';
255
+ agentName: string;
256
+ result: string;
257
+ } | {
258
+ type: 'context_compact';
259
+ beforeTokens: number;
260
+ afterTokens: number;
261
+ } | {
262
+ type: 'external_task_pending';
263
+ task: ExternalTask;
264
+ } | {
265
+ type: 'external_task_completed';
266
+ task: ExternalTask;
267
+ } | {
268
+ type: 'error';
269
+ message: string;
270
+ recoverable: boolean;
271
+ } | {
272
+ type: 'done';
273
+ finishReason: string;
274
+ };
275
+ /** Options for session.send() / session.sendStream() */
276
+ export interface SendOptions {
277
+ /** Maximum agent loop iterations. @default 50 */
278
+ maxSteps?: number;
279
+ /** Execution strategy. @default 'auto' */
280
+ strategy?: 'direct' | 'planned' | 'iterative' | 'parallel' | 'auto';
281
+ /** Enable reflection after tool failures. @default true */
282
+ reflection?: boolean;
283
+ /** Enable planning before execution. @default 'auto' */
284
+ planning?: boolean | 'auto';
285
+ /** Additional client-side tools (on top of built-in server tools) */
286
+ tools?: ToolSet;
287
+ /** Abort signal for cancellation */
288
+ signal?: AbortSignal;
289
+ /** Called when each step completes */
290
+ onStepFinish?: (step: StepResult) => void | Promise<void>;
291
+ /** Called when the model invokes a tool */
292
+ onToolCall?: (event: ToolCallEvent) => void | unknown | Promise<void | unknown>;
293
+ /** Called for all agent loop events */
294
+ onEvent?: (event: AgentLoopEvent) => void | Promise<void>;
295
+ /** Called when HITL confirmation is needed. Return true to approve. */
296
+ onConfirmation?: (request: ConfirmationRequest) => boolean | Promise<boolean>;
297
+ }
298
+ /** Result from session.send() */
299
+ export interface SendResult {
300
+ text: string;
301
+ steps: StepResult[];
302
+ toolCalls: ToolCall[];
303
+ usage: Usage;
304
+ finishReason: 'stop' | 'max_steps' | 'cancelled' | 'error';
305
+ }
306
+ /** Result from session.sendStream() */
307
+ export interface SendStreamResult {
308
+ eventStream: AsyncIterable<AgentLoopEvent>;
309
+ result: Promise<SendResult>;
310
+ }
311
+ /** Per-lane queue statistics */
312
+ export interface LaneStats {
313
+ pending: number;
314
+ active: number;
315
+ external: number;
316
+ completed: number;
317
+ failed: number;
318
+ }
319
+ /** Queue statistics across all lanes */
320
+ export interface QueueStats {
321
+ control: LaneStats;
322
+ query: LaneStats;
323
+ execute: LaneStats;
324
+ generate: LaneStats;
325
+ deadLetters: number;
326
+ }
327
+ /** External task completion result */
328
+ export interface ExternalTaskResult {
329
+ success: boolean;
330
+ output?: string;
331
+ error?: string;
332
+ metadata?: Record<string, string>;
333
+ }
334
+ /** Session statistics */
335
+ export interface SessionStats {
336
+ totalTokens: number;
337
+ promptTokens: number;
338
+ completionTokens: number;
339
+ totalCost: number;
340
+ messageCount: number;
341
+ toolCallCount: number;
342
+ }
343
+ /**
344
+ * Session — The core object for interacting with A3S Code.
345
+ *
346
+ * Created via `client.createSession()`. Workspace and model are immutable
347
+ * after creation. Supports `await using` for automatic cleanup.
348
+ */
349
+ export declare class Session implements AsyncDisposable {
350
+ /** The underlying A3S client */
351
+ private readonly _client;
352
+ /** Session ID on the server */
353
+ readonly id: string;
354
+ /** Whether this session has been closed */
355
+ private _closed;
356
+ /** Custom registered agents */
357
+ private readonly _customAgents;
358
+ /** @internal — Use client.createSession() instead */
359
+ constructor(client: A3sClient, sessionId: string);
360
+ /**
361
+ * Generate text from the language model.
362
+ *
363
+ * Supports multi-step tool calling via `tools` and `maxSteps`.
364
+ *
365
+ * @example
366
+ * ```typescript
367
+ * const { text } = await session.generateText({ prompt: 'Hello' });
368
+ *
369
+ * // With tools
370
+ * const { text, steps } = await session.generateText({
371
+ * prompt: 'What is the weather?',
372
+ * tools: { weather: weatherTool },
373
+ * maxSteps: 5,
374
+ * });
375
+ * ```
376
+ */
377
+ generateText(options: SessionGenerateTextOptions): Promise<GenerateTextResult>;
378
+ /**
379
+ * Stream text from the language model.
380
+ *
381
+ * Returns immediately with stream handles. Supports multi-step tool calling.
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * const { textStream } = session.streamText({ prompt: 'Explain this' });
386
+ * for await (const chunk of textStream) {
387
+ * process.stdout.write(chunk);
388
+ * }
389
+ * ```
390
+ */
391
+ streamText(options: SessionGenerateTextOptions): StreamTextResult;
392
+ /**
393
+ * Generate a structured object from the language model.
394
+ *
395
+ * @example
396
+ * ```typescript
397
+ * const { object } = await session.generateObject({
398
+ * schema: JSON.stringify({ type: 'object', properties: { name: { type: 'string' } } }),
399
+ * prompt: 'Extract the name',
400
+ * });
401
+ * ```
402
+ */
403
+ generateObject<T = unknown>(options: SessionGenerateObjectOptions): Promise<GenerateObjectResult<T>>;
404
+ /**
405
+ * Stream a structured object from the language model.
406
+ *
407
+ * @example
408
+ * ```typescript
409
+ * const { partialStream, object } = session.streamObject({
410
+ * schema: '{"type":"object","properties":{"items":{"type":"array"}}}',
411
+ * prompt: 'List project files',
412
+ * });
413
+ * for await (const partial of partialStream) {
414
+ * console.log('partial:', partial);
415
+ * }
416
+ * const result = await object;
417
+ * ```
418
+ */
419
+ streamObject(options: SessionGenerateObjectOptions): StreamObjectResult;
420
+ /** Get context usage (token counts, message count) */
421
+ getContextUsage(): Promise<ContextUsage | undefined>;
422
+ /** Compact the conversation context to save tokens */
423
+ compactContext(): Promise<void>;
424
+ /** Clear conversation history */
425
+ clearContext(): Promise<void>;
426
+ /** Get conversation messages */
427
+ getMessages(limit?: number, offset?: number): Promise<GetMessagesResponse>;
428
+ /**
429
+ * Send a message to the agent. Automatically enters the server-side
430
+ * AgenticLoop when the model calls tools (plan → execute → reflect → repeat).
431
+ *
432
+ * The entire loop runs on the server — built-in tools, planning, reflection,
433
+ * and HITL are all handled server-side. Client-side tools (if provided) are
434
+ * used as a fallback for tools not available on the server.
435
+ *
436
+ * @example
437
+ * ```typescript
438
+ * // Simple question — no tools needed
439
+ * const { text } = await session.send('What is TypeScript?');
440
+ *
441
+ * // Complex task — server runs full AgenticLoop
442
+ * const { text, steps, toolCalls } = await session.send(
443
+ * 'Refactor the auth module to use JWT',
444
+ * { maxSteps: 50 },
445
+ * );
446
+ * ```
447
+ */
448
+ send(prompt: string, options?: SendOptions): Promise<SendResult>;
449
+ /**
450
+ * Stream a message to the agent. Returns an event stream for real-time UI
451
+ * and a promise for the final result.
452
+ *
453
+ * @example
454
+ * ```typescript
455
+ * const { eventStream, result } = session.sendStream('Fix all TODOs in src/');
456
+ * for await (const event of eventStream) {
457
+ * if (event.type === 'text') process.stdout.write(event.content);
458
+ * if (event.type === 'tool_call') console.log(`🔧 ${event.toolName}`);
459
+ * }
460
+ * const final = await result;
461
+ * ```
462
+ */
463
+ sendStream(prompt: string, options?: SendOptions): SendStreamResult;
464
+ /**
465
+ * Delegate a task to a built-in or custom agent.
466
+ *
467
+ * Uses server-side delegation — the server creates a child session with
468
+ * the agent's restricted permissions and executes the task.
469
+ *
470
+ * @example
471
+ * ```typescript
472
+ * const result = await session.delegate('explore', 'Find all API endpoints');
473
+ * console.log(result.text);
474
+ * ```
475
+ */
476
+ delegate(agent: string, task: string, options?: {
477
+ maxSteps?: number;
478
+ allowedTools?: string[];
479
+ }): Promise<SendResult>;
480
+ /**
481
+ * Delegate a task to a subagent with streaming.
482
+ *
483
+ * Uses server-side streaming delegation for real-time event updates.
484
+ */
485
+ delegateStream(agent: string, task: string, options?: {
486
+ maxSteps?: number;
487
+ allowedTools?: string[];
488
+ }): SendStreamResult;
489
+ /** Set lane execution mode (internal/external/hybrid) */
490
+ setLaneHandler(lane: LaneName, config: LaneConfig): Promise<void>;
491
+ /** Get lane handler configuration */
492
+ getLaneHandler(lane: LaneName): Promise<LaneConfig | undefined>;
493
+ /** List tasks waiting for external processing */
494
+ listPendingTasks(): Promise<ExternalTask[]>;
495
+ /** Complete an external task */
496
+ completeTask(taskId: string, result: ExternalTaskResult): Promise<void>;
497
+ /** Load skills from a directory (uses server-side batch loading) */
498
+ loadSkills(dir: string, recursive?: boolean): Promise<string[]>;
499
+ /** Load a single skill by name */
500
+ loadSkill(name: string, content?: string): Promise<void>;
501
+ /** Add an inline skill definition */
502
+ addSkill(skill: SkillDefinition): Promise<void>;
503
+ /** Unload a skill */
504
+ unloadSkill(name: string): Promise<void>;
505
+ /** List available skills */
506
+ listSkills(): Promise<SkillInfo[]>;
507
+ /** List available agents (built-in + custom) */
508
+ listAgents(): Promise<AgentInfo[]>;
509
+ /** Register a custom agent */
510
+ registerAgent(def: AgentDefinition): void;
511
+ /** Set HITL confirmation policy */
512
+ setConfirmation(config: ConfirmationConfig): Promise<void>;
513
+ /** Set tool permission policy */
514
+ setPermissions(config: PermissionConfig): Promise<void>;
515
+ /** Respond to a confirmation request */
516
+ confirm(confirmationId: string, approved: boolean, reason?: string): Promise<void>;
517
+ /** Get session statistics (tokens, cost, message count, tool calls) */
518
+ getStats(): Promise<SessionStats>;
519
+ /** Get per-tool execution metrics */
520
+ getToolMetrics(): Promise<Record<string, ToolStats>>;
521
+ /** Get cost breakdown by model and day */
522
+ getCostSummary(): Promise<GetCostSummaryResponse>;
523
+ /** Get per-lane queue statistics */
524
+ getQueueStats(): Promise<QueueStats>;
525
+ /** Update session configuration (cannot change model or workspace) */
526
+ configure(options: {
527
+ autoCompact?: boolean;
528
+ autoCompactThreshold?: number;
529
+ }): Promise<void>;
530
+ /** Subscribe to real-time agent events for this session */
531
+ subscribeEvents(eventTypes?: string[]): AsyncIterable<AgentEvent>;
532
+ /** Close the session and release server resources */
533
+ close(): Promise<void>;
534
+ /** Support `await using session = ...` for automatic cleanup */
535
+ [Symbol.asyncDispose](): Promise<void>;
536
+ /** Whether this session has been closed */
537
+ get closed(): boolean;
538
+ private _ensureOpen;
539
+ }
540
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../ts/session.ts"],"names":[],"mappings":"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"}