@aurelo_npm/sdk 0.1.1 → 0.1.3

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.
package/dist/index.d.ts CHANGED
@@ -26,11 +26,48 @@ export interface AureloSession {
26
26
  status: 'active' | 'closed' | 'rotation_required';
27
27
  rotationReason?: string;
28
28
  }
29
+ export interface AureloExposedTool {
30
+ type?: 'function' | 'mcp' | 'hosted' | 'custom' | 'extension' | 'http' | string;
31
+ name?: string;
32
+ description?: string;
33
+ inputSchema?: Record<string, unknown>;
34
+ input_schema?: Record<string, unknown>;
35
+ parameters?: Record<string, unknown>;
36
+ function?: {
37
+ name: string;
38
+ description?: string;
39
+ parameters?: Record<string, unknown>;
40
+ };
41
+ server_label?: string;
42
+ server_url?: string;
43
+ server_description?: string;
44
+ allowed_tools?: string[];
45
+ require_approval?: unknown;
46
+ runtime?: {
47
+ kind?: 'extension' | 'mcp' | 'http' | 'local' | string;
48
+ clientId?: string;
49
+ serverUrl?: string;
50
+ endpoint?: string;
51
+ url?: string;
52
+ [key: string]: unknown;
53
+ };
54
+ [key: string]: unknown;
55
+ }
56
+ export interface AureloRequestContext {
57
+ tools?: unknown[];
58
+ exposedTools?: AureloExposedTool[];
59
+ toolStackId?: string;
60
+ permissionsVersion?: string | number;
61
+ contextId?: string;
62
+ contextVersion?: string | number;
63
+ [key: string]: unknown;
64
+ }
29
65
  export interface AureloResponseRequest {
30
66
  model: string;
31
67
  input?: unknown;
32
68
  stream?: boolean;
33
69
  metadata?: Record<string, unknown>;
70
+ context?: AureloRequestContext;
34
71
  [key: string]: unknown;
35
72
  }
36
73
  export interface AureloReconnectRequest {
@@ -38,6 +75,8 @@ export interface AureloReconnectRequest {
38
75
  cursor?: string | number;
39
76
  model?: string;
40
77
  input?: unknown;
78
+ metadata?: Record<string, unknown>;
79
+ context?: AureloRequestContext;
41
80
  signal?: AbortSignal;
42
81
  }
43
82
  export interface AureloQueueMessageRequest {
@@ -48,6 +87,30 @@ export interface AureloQueueMessageRequest {
48
87
  publicModel?: string;
49
88
  model?: string;
50
89
  metadata?: Record<string, unknown>;
90
+ context?: AureloRequestContext;
91
+ signal?: AbortSignal;
92
+ }
93
+ export interface AureloToolResultRequest {
94
+ sessionId?: string;
95
+ requestId?: string;
96
+ callId?: string;
97
+ toolCallId?: string;
98
+ tool_call_id?: string;
99
+ toolCall?: {
100
+ call_id?: string;
101
+ callId?: string;
102
+ id?: string;
103
+ [key: string]: unknown;
104
+ };
105
+ model?: string;
106
+ publicModel?: string;
107
+ stream?: boolean;
108
+ context?: AureloRequestContext;
109
+ tools?: unknown[];
110
+ output?: unknown;
111
+ result?: unknown;
112
+ error?: unknown;
113
+ metadata?: Record<string, unknown>;
51
114
  signal?: AbortSignal;
52
115
  }
53
116
  export interface AureloStreamEvent {
@@ -121,6 +184,8 @@ export declare class AureloSDK {
121
184
  continueResponse(message: string, request?: Omit<AureloQueueMessageRequest, 'message'> & AureloReconnectRequest): AsyncGenerator<AureloStreamEvent>;
122
185
  private streamEventsFromResponse;
123
186
  reconnect(request?: AureloReconnectRequest): Promise<Response>;
187
+ submitToolResult(request: AureloToolResultRequest): Promise<Response | unknown>;
188
+ streamToolResult(request: AureloToolResultRequest): AsyncGenerator<AureloStreamEvent>;
124
189
  private handleSseLine;
125
190
  private readErrorPayload;
126
191
  private readResponsePayload;
package/dist/index.js CHANGED
@@ -172,6 +172,31 @@ function isTerminalResponseType(type) {
172
172
  function isAureloSdkError(value) {
173
173
  return value instanceof AureloSDKError;
174
174
  }
175
+ function definedEntries(values) {
176
+ return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined && value !== null && value !== ''));
177
+ }
178
+ function buildContinuationMetadata(request) {
179
+ const context = request.context || {};
180
+ return definedEntries({
181
+ ...(request.metadata || {}),
182
+ toolStackId: context.toolStackId,
183
+ permissionsVersion: context.permissionsVersion,
184
+ contextId: context.contextId,
185
+ contextVersion: context.contextVersion,
186
+ });
187
+ }
188
+ function buildContinuationContext(request) {
189
+ const context = request.context || {};
190
+ const nextContext = definedEntries({
191
+ tools: context.tools,
192
+ exposedTools: context.exposedTools,
193
+ toolStackId: context.toolStackId,
194
+ permissionsVersion: context.permissionsVersion,
195
+ contextId: context.contextId,
196
+ contextVersion: context.contextVersion,
197
+ });
198
+ return Object.keys(nextContext).length ? nextContext : undefined;
199
+ }
175
200
  function getPayloadErrorMessage(payload) {
176
201
  if (!payload || typeof payload !== 'object') {
177
202
  return '';
@@ -436,6 +461,7 @@ export class AureloSDK {
436
461
  requestId: queueRequest.requestId || session.requestId,
437
462
  publicModel: queueRequest.publicModel || queueRequest.model,
438
463
  metadata,
464
+ context: queueRequest.context,
439
465
  }),
440
466
  signal: queueRequest.signal,
441
467
  });
@@ -521,16 +547,21 @@ export class AureloSDK {
521
547
  return this.createResponseWithRotationRetry(request, options);
522
548
  }
523
549
  try {
550
+ const continuationMetadata = buildContinuationMetadata(request);
551
+ const continuationContext = buildContinuationContext(request);
524
552
  await this.queueMessage({
525
553
  message,
526
554
  model: request.model,
527
555
  publicModel: request.model,
528
- metadata: request.metadata,
556
+ metadata: continuationMetadata,
557
+ context: continuationContext,
529
558
  signal: options.signal,
530
559
  });
531
560
  return this.reconnect({
532
561
  model: request.model,
533
562
  input: request.input,
563
+ metadata: continuationMetadata,
564
+ context: continuationContext,
534
565
  signal: options.signal,
535
566
  });
536
567
  }
@@ -569,6 +600,7 @@ export class AureloSDK {
569
600
  input: message,
570
601
  stream: true,
571
602
  metadata: request.metadata,
603
+ context: request.context,
572
604
  }, { signal: request.signal });
573
605
  yield* this.streamEventsFromResponse(response);
574
606
  return;
@@ -621,6 +653,7 @@ export class AureloSDK {
621
653
  const storedCursor = await this.getReconnectCursor(session.sessionId);
622
654
  const cursor = request.cursor ?? storedCursor ?? 0;
623
655
  const metadata = {
656
+ ...(request.metadata || {}),
624
657
  clientId: fullClientId(session.clientId),
625
658
  requestId: session.requestId,
626
659
  sessionId: session.sessionId,
@@ -634,6 +667,7 @@ export class AureloSDK {
634
667
  aureloAction: 'reconnect',
635
668
  cursor,
636
669
  },
670
+ context: request.context,
637
671
  };
638
672
  const response = await this.fetchImpl(`${this.baseUrl}/v1/responses`, {
639
673
  method: 'POST',
@@ -655,6 +689,8 @@ export class AureloSDK {
655
689
  model: body.model,
656
690
  input: body.input,
657
691
  stream: true,
692
+ metadata: request.metadata,
693
+ context: request.context,
658
694
  }, { signal: request.signal });
659
695
  }
660
696
  throw new AureloSDKError(`Aurelo reconnect failed with HTTP ${response.status}`, {
@@ -666,6 +702,78 @@ export class AureloSDK {
666
702
  }
667
703
  return response;
668
704
  }
705
+ async submitToolResult(request) {
706
+ const session = request.sessionId
707
+ ? { ...(await this.getSession()), sessionId: request.sessionId }
708
+ : await this.getSession();
709
+ const callId = String(request.callId ||
710
+ request.toolCallId ||
711
+ request.tool_call_id ||
712
+ request.toolCall?.call_id ||
713
+ request.toolCall?.callId ||
714
+ request.toolCall?.id ||
715
+ '').trim();
716
+ if (!callId) {
717
+ throw new Error('AureloSDK submitToolResult requires callId.');
718
+ }
719
+ const metadata = {
720
+ ...(request.metadata || {}),
721
+ aureloAction: 'tool_result',
722
+ clientId: fullClientId(session.clientId),
723
+ requestId: request.requestId || session.requestId,
724
+ sessionId: session.sessionId,
725
+ callId,
726
+ model: request.model || request.publicModel,
727
+ };
728
+ const response = await this.fetchImpl(`${this.baseUrl}/v1/responses`, {
729
+ method: 'POST',
730
+ headers: {
731
+ 'Authorization': `Bearer ${this.apiKey}`,
732
+ 'Content-Type': 'application/json',
733
+ },
734
+ body: JSON.stringify({
735
+ model: request.model || request.publicModel,
736
+ publicModel: request.publicModel || request.model,
737
+ stream: request.stream !== false,
738
+ sessionId: session.sessionId,
739
+ requestId: request.requestId || session.requestId,
740
+ callId,
741
+ tools: request.tools || request.context?.tools,
742
+ context: request.context,
743
+ output: request.output,
744
+ result: request.result,
745
+ error: request.error,
746
+ metadata,
747
+ }),
748
+ signal: request.signal,
749
+ });
750
+ if (!response.ok) {
751
+ const payload = await this.readErrorPayload(response);
752
+ const rotation = shouldRotate(payload);
753
+ if (rotation.rotate) {
754
+ await this.rotateSession(rotation.reason || 'backend_rotation');
755
+ }
756
+ throw new AureloSDKError(`Aurelo tool result submit failed with HTTP ${response.status}`, {
757
+ status: response.status,
758
+ reason: rotation.reason,
759
+ rotateSession: rotation.rotate,
760
+ payload,
761
+ });
762
+ }
763
+ const contentType = response.headers.get('content-type') || '';
764
+ if (contentType.includes('text/event-stream')) {
765
+ return response;
766
+ }
767
+ return this.readResponsePayload(response);
768
+ }
769
+ async *streamToolResult(request) {
770
+ const result = await this.submitToolResult({ ...request, stream: true });
771
+ if (result instanceof Response) {
772
+ yield* this.streamEventsFromResponse(result);
773
+ return;
774
+ }
775
+ yield { type: 'event', raw: '', data: result };
776
+ }
669
777
  async handleSseLine(line) {
670
778
  const trimmed = line.trim();
671
779
  if (!trimmed) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurelo_npm/sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Aurelo API-key SDK with stable client identity and backend-driven session rotation.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",