@aurelo_npm/sdk 0.1.1 → 0.1.2
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 +60 -0
- package/dist/index.js +107 -1
- package/package.json +1 -1
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,25 @@ 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
|
+
previousResponseId?: string;
|
|
99
|
+
previous_response_id?: string;
|
|
100
|
+
model?: string;
|
|
101
|
+
publicModel?: string;
|
|
102
|
+
stream?: boolean;
|
|
103
|
+
context?: AureloRequestContext;
|
|
104
|
+
tools?: unknown[];
|
|
105
|
+
output?: unknown;
|
|
106
|
+
result?: unknown;
|
|
107
|
+
error?: unknown;
|
|
108
|
+
metadata?: Record<string, unknown>;
|
|
51
109
|
signal?: AbortSignal;
|
|
52
110
|
}
|
|
53
111
|
export interface AureloStreamEvent {
|
|
@@ -121,6 +179,8 @@ export declare class AureloSDK {
|
|
|
121
179
|
continueResponse(message: string, request?: Omit<AureloQueueMessageRequest, 'message'> & AureloReconnectRequest): AsyncGenerator<AureloStreamEvent>;
|
|
122
180
|
private streamEventsFromResponse;
|
|
123
181
|
reconnect(request?: AureloReconnectRequest): Promise<Response>;
|
|
182
|
+
submitToolResult(request: AureloToolResultRequest): Promise<Response | unknown>;
|
|
183
|
+
streamToolResult(request: AureloToolResultRequest): AsyncGenerator<AureloStreamEvent>;
|
|
124
184
|
private handleSseLine;
|
|
125
185
|
private readErrorPayload;
|
|
126
186
|
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:
|
|
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,76 @@ 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 || request.toolCallId || '').trim();
|
|
710
|
+
if (!callId) {
|
|
711
|
+
throw new Error('AureloSDK submitToolResult requires callId.');
|
|
712
|
+
}
|
|
713
|
+
const metadata = {
|
|
714
|
+
...(request.metadata || {}),
|
|
715
|
+
aureloAction: 'tool_result',
|
|
716
|
+
clientId: fullClientId(session.clientId),
|
|
717
|
+
requestId: request.requestId || session.requestId,
|
|
718
|
+
sessionId: session.sessionId,
|
|
719
|
+
callId,
|
|
720
|
+
previousResponseId: request.previousResponseId || request.previous_response_id,
|
|
721
|
+
model: request.model || request.publicModel,
|
|
722
|
+
};
|
|
723
|
+
const previousResponseId = request.previousResponseId || request.previous_response_id;
|
|
724
|
+
const response = await this.fetchImpl(`${this.baseUrl}/v1/responses`, {
|
|
725
|
+
method: 'POST',
|
|
726
|
+
headers: {
|
|
727
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
728
|
+
'Content-Type': 'application/json',
|
|
729
|
+
},
|
|
730
|
+
body: JSON.stringify({
|
|
731
|
+
model: request.model || request.publicModel,
|
|
732
|
+
publicModel: request.publicModel || request.model,
|
|
733
|
+
previousResponseId,
|
|
734
|
+
previous_response_id: previousResponseId,
|
|
735
|
+
stream: request.stream !== false,
|
|
736
|
+
sessionId: session.sessionId,
|
|
737
|
+
requestId: request.requestId || session.requestId,
|
|
738
|
+
callId,
|
|
739
|
+
tools: request.tools || request.context?.tools,
|
|
740
|
+
context: request.context,
|
|
741
|
+
output: request.output,
|
|
742
|
+
result: request.result,
|
|
743
|
+
error: request.error,
|
|
744
|
+
metadata,
|
|
745
|
+
}),
|
|
746
|
+
signal: request.signal,
|
|
747
|
+
});
|
|
748
|
+
if (!response.ok) {
|
|
749
|
+
const payload = await this.readErrorPayload(response);
|
|
750
|
+
const rotation = shouldRotate(payload);
|
|
751
|
+
if (rotation.rotate) {
|
|
752
|
+
await this.rotateSession(rotation.reason || 'backend_rotation');
|
|
753
|
+
}
|
|
754
|
+
throw new AureloSDKError(`Aurelo tool result submit failed with HTTP ${response.status}`, {
|
|
755
|
+
status: response.status,
|
|
756
|
+
reason: rotation.reason,
|
|
757
|
+
rotateSession: rotation.rotate,
|
|
758
|
+
payload,
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
const contentType = response.headers.get('content-type') || '';
|
|
762
|
+
if (contentType.includes('text/event-stream')) {
|
|
763
|
+
return response;
|
|
764
|
+
}
|
|
765
|
+
return this.readResponsePayload(response);
|
|
766
|
+
}
|
|
767
|
+
async *streamToolResult(request) {
|
|
768
|
+
const result = await this.submitToolResult({ ...request, stream: true });
|
|
769
|
+
if (result instanceof Response) {
|
|
770
|
+
yield* this.streamEventsFromResponse(result);
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
yield { type: 'event', raw: '', data: result };
|
|
774
|
+
}
|
|
669
775
|
async handleSseLine(line) {
|
|
670
776
|
const trimmed = line.trim();
|
|
671
777
|
if (!trimmed) {
|