@runmark/sdk 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.
- package/README.md +219 -0
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +101 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -0
- package/dist/http.d.ts +19 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +129 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/routes.d.ts +8 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +41 -0
- package/dist/routes.js.map +1 -0
- package/dist/sse.d.ts +3 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +57 -0
- package/dist/sse.js.map +1 -0
- package/dist/types.d.ts +160 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +32 -0
package/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# @skyforge-ai/sdk
|
|
2
|
+
|
|
3
|
+
Server-side TypeScript SDK for Skyforge agent chat integrations.
|
|
4
|
+
|
|
5
|
+
This package is internal for now and is not published to npm. `private: true`
|
|
6
|
+
is intentionally retained until a release process, package metadata, and npm
|
|
7
|
+
publishing policy are approved.
|
|
8
|
+
|
|
9
|
+
## Runtime
|
|
10
|
+
|
|
11
|
+
- Node.js 24.17.0 or newer.
|
|
12
|
+
- Server-only. The SDK throws in browser-like environments.
|
|
13
|
+
- Zero runtime dependencies.
|
|
14
|
+
- Uses native `fetch`, `FormData`, `ReadableStream`, and `AbortSignal`.
|
|
15
|
+
|
|
16
|
+
## Authentication
|
|
17
|
+
|
|
18
|
+
Every request uses the existing Skyforge chat routes and sends:
|
|
19
|
+
|
|
20
|
+
```http
|
|
21
|
+
Authorization: Bearer <skyforge_api_token>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The SDK does not set cookies, `X-CSRF-Token`, `credentials: "include"`, or call
|
|
25
|
+
`/api/auth/csrf`.
|
|
26
|
+
|
|
27
|
+
## Response Shape
|
|
28
|
+
|
|
29
|
+
SDK method inputs use camelCase. Request bodies are serialized to the existing
|
|
30
|
+
backend field names.
|
|
31
|
+
|
|
32
|
+
V1 response payloads intentionally mirror the backend DTOs, including snake_case
|
|
33
|
+
fields such as `chat_id`, `agent_branch_id`, and `pending_human_actions`. The SDK
|
|
34
|
+
does not translate response fields to camelCase.
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { SkyforgeClient } from "@skyforge-ai/sdk";
|
|
40
|
+
|
|
41
|
+
const skyforge = new SkyforgeClient({
|
|
42
|
+
apiKey: process.env.SKYFORGE_API_TOKEN!,
|
|
43
|
+
baseUrl: "https://api.skyforge.ai",
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Get Agent Branch State
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
const state = await skyforge.agentBranches.getState({
|
|
51
|
+
agentBranchId: "11111111-1111-1111-1111-111111111111",
|
|
52
|
+
chatId: "22222222-2222-2222-2222-222222222222",
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
console.log(state.chat_id, state.messages);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Send Message
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
const response = await skyforge.agentBranches.sendMessage({
|
|
62
|
+
agentBranchId: "11111111-1111-1111-1111-111111111111",
|
|
63
|
+
chatId: "22222222-2222-2222-2222-222222222222",
|
|
64
|
+
message: "Summarize the latest run.",
|
|
65
|
+
structuredContext: {
|
|
66
|
+
priority: "high",
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
console.log(response.chat_id, response.agent_run_id);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Stream Run Events
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
const events = await skyforge.agentRuns.streamEvents({
|
|
77
|
+
agentRunId: "33333333-3333-3333-3333-333333333333",
|
|
78
|
+
afterSequence: 12,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
for await (const event of events) {
|
|
82
|
+
console.log(event.sequence, event.event.type);
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Breaking out of the loop cancels the underlying response reader.
|
|
87
|
+
|
|
88
|
+
### Submit Human Action
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
await skyforge.humanActions.submit({
|
|
92
|
+
humanActionRequestId: "44444444-4444-4444-4444-444444444444",
|
|
93
|
+
values: {
|
|
94
|
+
approved: true,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Uploaded Files
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
const upload = await skyforge.uploadedFiles.upload({
|
|
103
|
+
agentBranchId: "11111111-1111-1111-1111-111111111111",
|
|
104
|
+
chatId: "22222222-2222-2222-2222-222222222222",
|
|
105
|
+
file: new Blob(["notes"], { type: "text/plain" }),
|
|
106
|
+
filename: "notes.txt",
|
|
107
|
+
contentType: "text/plain",
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const files = await skyforge.uploadedFiles.list({
|
|
111
|
+
agentBranchId: upload.file.agent_branch_id,
|
|
112
|
+
chatId: upload.chat_id,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
await skyforge.uploadedFiles.delete({
|
|
116
|
+
agentBranchId: upload.file.agent_branch_id,
|
|
117
|
+
chatId: upload.chat_id,
|
|
118
|
+
fileContextId: upload.file.id,
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
`filename` is required and must not be blank.
|
|
123
|
+
|
|
124
|
+
## Tests
|
|
125
|
+
|
|
126
|
+
Run the fast SDK unit tests:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
cd packages/skyforge-sdk
|
|
130
|
+
npm test
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The opt-in live suite requires a running local Skyforge backend and a valid
|
|
134
|
+
local API token with access to the selected agent branch. It uses only
|
|
135
|
+
`Authorization: Bearer <skyforge_api_token>` through the existing
|
|
136
|
+
`/api/skyforge-chat/...` routes.
|
|
137
|
+
|
|
138
|
+
Live test environment variables can be stored in `.e2e.env` at the package
|
|
139
|
+
root. Copy the example file and fill in your local token:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
cd packages/skyforge-sdk
|
|
143
|
+
cp .e2e.env.example .e2e.env
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
`.e2e.env` is ignored by git. Shell environment variables take precedence over
|
|
147
|
+
values in the file.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
cd packages/skyforge-sdk
|
|
151
|
+
|
|
152
|
+
SKYFORGE_SDK_LIVE=1 \
|
|
153
|
+
SKYFORGE_API_BASE_URL=http://localhost:3000 \
|
|
154
|
+
SKYFORGE_API_TOKEN=... \
|
|
155
|
+
SKYFORGE_AGENT_BRANCH_ID=... \
|
|
156
|
+
npm run test:live
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
With `.e2e.env` populated, this is enough:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npm run test:live
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Optional live test controls:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
SKYFORGE_SDK_LIVE_UPLOADS=1
|
|
169
|
+
SKYFORGE_SDK_LIVE_HITL_REQUEST_ID=...
|
|
170
|
+
SKYFORGE_SDK_LIVE_EXISTING_CHAT_ID=...
|
|
171
|
+
SKYFORGE_SDK_LIVE_TIMEOUT_MS=60000
|
|
172
|
+
SKYFORGE_SDK_LIVE_HITL_TIMEOUT_MS=120000
|
|
173
|
+
SKYFORGE_SDK_LIVE_EVENT_TIMEOUT_MS=15000
|
|
174
|
+
SKYFORGE_SDK_LIVE_MESSAGE="SDK live smoke test. Reply with a short confirmation."
|
|
175
|
+
SKYFORGE_SDK_LIVE_EXPECT_PENDING_HITL=1
|
|
176
|
+
SKYFORGE_SDK_LIVE_EXPECT_BUBBLED_HITL=1
|
|
177
|
+
SKYFORGE_SDK_LIVE_SUBMIT_PENDING_HITL=1
|
|
178
|
+
SKYFORGE_SDK_LIVE_HITL_VALUES='{"decision":"approve","notes":"Approved by SDK live test."}'
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### HITL Bubbling Demo
|
|
182
|
+
|
|
183
|
+
The repository seed includes a TailYew `hitl-bubbling-demo` parent agent. The
|
|
184
|
+
SDK package has a convenience live command for that seeded local fixture:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
cd packages/skyforge-sdk
|
|
188
|
+
|
|
189
|
+
SKYFORGE_API_TOKEN=... \
|
|
190
|
+
npm run test:live:hitl-bubbling-demo
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
If `.e2e.env` contains `SKYFORGE_API_TOKEN`, you can run:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
npm run test:live:hitl-bubbling-demo
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
This command sets:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
SKYFORGE_SDK_LIVE=1
|
|
203
|
+
SKYFORGE_API_BASE_URL=http://127.0.0.1:3000
|
|
204
|
+
SKYFORGE_AGENT_BRANCH_ID=9ab14d38-55d1-4a9c-bc56-0df2c03aee02
|
|
205
|
+
SKYFORGE_SDK_LIVE_MESSAGE="Use ask_skyforge_agent to ask the human-workflow-demo child agent to look up Bulbasaur. Do not answer without calling the child agent."
|
|
206
|
+
SKYFORGE_SDK_LIVE_TIMEOUT_MS=180000
|
|
207
|
+
SKYFORGE_SDK_LIVE_HITL_TIMEOUT_MS=120000
|
|
208
|
+
SKYFORGE_SDK_LIVE_EVENT_TIMEOUT_MS=15000
|
|
209
|
+
SKYFORGE_SDK_LIVE_EXPECT_PENDING_HITL=1
|
|
210
|
+
SKYFORGE_SDK_LIVE_EXPECT_BUBBLED_HITL=1
|
|
211
|
+
SKYFORGE_SDK_LIVE_SUBMIT_PENDING_HITL=1
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
`SKYFORGE_API_TOKEN` is still required and is not set by the script. Use a valid
|
|
215
|
+
local API token with access to the seeded TailYew repository/branch. You can
|
|
216
|
+
override the base URL, branch ID, message, HITL values, or timeout by setting
|
|
217
|
+
the same environment variables before running the command.
|
|
218
|
+
|
|
219
|
+
Do not expose Skyforge API tokens in browser code. This SDK is server-side only.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { DeleteUploadedFileParams, GetAgentBranchStateParams, SendMessageParams, SkyforgeAgentRunEventEnvelope, SkyforgeChatMessageResponse, SkyforgeChatStateResponse, SkyforgeChatUploadedFileListResponse, SkyforgeChatUploadedFileUploadResponse, SkyforgeClientOptions, StreamAgentRunEventsParams, SubmitHumanActionParams, UploadFileParams, ListUploadedFilesParams } from "./types.js";
|
|
2
|
+
export declare class SkyforgeClient {
|
|
3
|
+
readonly agentBranches: {
|
|
4
|
+
getState: (params: GetAgentBranchStateParams) => Promise<SkyforgeChatStateResponse>;
|
|
5
|
+
sendMessage: (params: SendMessageParams) => Promise<SkyforgeChatMessageResponse>;
|
|
6
|
+
};
|
|
7
|
+
readonly agentRuns: {
|
|
8
|
+
streamEvents: (params: StreamAgentRunEventsParams) => Promise<AsyncIterable<SkyforgeAgentRunEventEnvelope>>;
|
|
9
|
+
};
|
|
10
|
+
readonly humanActions: {
|
|
11
|
+
submit: (params: SubmitHumanActionParams) => Promise<SkyforgeChatMessageResponse>;
|
|
12
|
+
};
|
|
13
|
+
readonly uploadedFiles: {
|
|
14
|
+
list: (params: ListUploadedFilesParams) => Promise<SkyforgeChatUploadedFileListResponse>;
|
|
15
|
+
upload: (params: UploadFileParams) => Promise<SkyforgeChatUploadedFileUploadResponse>;
|
|
16
|
+
delete: (params: DeleteUploadedFileParams) => Promise<SkyforgeChatUploadedFileListResponse>;
|
|
17
|
+
};
|
|
18
|
+
private readonly baseUrl;
|
|
19
|
+
private readonly http;
|
|
20
|
+
constructor(options: SkyforgeClientOptions);
|
|
21
|
+
private getAgentBranchState;
|
|
22
|
+
private sendMessage;
|
|
23
|
+
private streamEvents;
|
|
24
|
+
private submitHumanAction;
|
|
25
|
+
private listUploadedFiles;
|
|
26
|
+
private uploadFile;
|
|
27
|
+
private deleteUploadedFile;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,oCAAoC,EACpC,sCAAsC,EACtC,qBAAqB,EAErB,0BAA0B,EAC1B,uBAAuB,EAEvB,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAIpB,qBAAa,cAAc;IACzB,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACpF,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;KAClF,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,YAAY,EAAE,CACZ,MAAM,EAAE,0BAA0B,KAC/B,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAAC;KAC5D,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE;QACrB,MAAM,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;KACnF,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE;QACtB,IAAI,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACzF,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACtF,MAAM,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,CAAC,oCAAoC,CAAC,CAAC;KAC7F,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,OAAO,EAAE,qBAAqB;IAmC1C,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,WAAW;YAeL,YAAY;IAU1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,kBAAkB;CAa3B"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { HttpClient } from "./http.js";
|
|
2
|
+
import { parseSkyforgeEventStream } from "./sse.js";
|
|
3
|
+
import { chatStateUrl, humanActionSubmitUrl, runEventStreamUrl, sendMessageUrl, uploadedFileDeleteUrl, uploadedFilesUrl, } from "./routes.js";
|
|
4
|
+
const DEFAULT_BASE_URL = "https://api.skyforge.ai";
|
|
5
|
+
export class SkyforgeClient {
|
|
6
|
+
agentBranches;
|
|
7
|
+
agentRuns;
|
|
8
|
+
humanActions;
|
|
9
|
+
uploadedFiles;
|
|
10
|
+
baseUrl;
|
|
11
|
+
http;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
assertServerEnvironment();
|
|
14
|
+
if (options.apiKey.trim().length === 0) {
|
|
15
|
+
throw new Error("Skyforge apiKey is required.");
|
|
16
|
+
}
|
|
17
|
+
const fetchFn = options.fetch ?? globalThis.fetch;
|
|
18
|
+
if (fetchFn === undefined) {
|
|
19
|
+
throw new Error("Skyforge SDK requires a fetch implementation.");
|
|
20
|
+
}
|
|
21
|
+
this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
|
|
22
|
+
this.http = new HttpClient({
|
|
23
|
+
apiKey: options.apiKey,
|
|
24
|
+
fetch: fetchFn,
|
|
25
|
+
});
|
|
26
|
+
this.agentBranches = {
|
|
27
|
+
getState: (params) => this.getAgentBranchState(params),
|
|
28
|
+
sendMessage: (params) => this.sendMessage(params),
|
|
29
|
+
};
|
|
30
|
+
this.agentRuns = {
|
|
31
|
+
streamEvents: (params) => this.streamEvents(params),
|
|
32
|
+
};
|
|
33
|
+
this.humanActions = {
|
|
34
|
+
submit: (params) => this.submitHumanAction(params),
|
|
35
|
+
};
|
|
36
|
+
this.uploadedFiles = {
|
|
37
|
+
list: (params) => this.listUploadedFiles(params),
|
|
38
|
+
upload: (params) => this.uploadFile(params),
|
|
39
|
+
delete: (params) => this.deleteUploadedFile(params),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
getAgentBranchState(params) {
|
|
43
|
+
return this.http.getJson(chatStateUrl(this.baseUrl, params.agentBranchId, params.chatId), params.signal);
|
|
44
|
+
}
|
|
45
|
+
sendMessage(params) {
|
|
46
|
+
return this.http.postJson(sendMessageUrl(this.baseUrl, params.agentBranchId), compactBody({
|
|
47
|
+
message: params.message,
|
|
48
|
+
chat_id: params.chatId,
|
|
49
|
+
retried_from_agent_run_id: params.retriedFromAgentRunId,
|
|
50
|
+
source_user_message_id: params.sourceUserMessageId,
|
|
51
|
+
structured_context: params.structuredContext,
|
|
52
|
+
retrieval_scope: params.retrievalScope,
|
|
53
|
+
}), params.signal);
|
|
54
|
+
}
|
|
55
|
+
async streamEvents(params) {
|
|
56
|
+
const response = await this.http.stream(runEventStreamUrl(this.baseUrl, params.agentRunId, params.afterSequence), params.signal);
|
|
57
|
+
return parseSkyforgeEventStream(response.body);
|
|
58
|
+
}
|
|
59
|
+
submitHumanAction(params) {
|
|
60
|
+
return this.http.postJson(humanActionSubmitUrl(this.baseUrl, params.humanActionRequestId), { values: params.values }, params.signal);
|
|
61
|
+
}
|
|
62
|
+
listUploadedFiles(params) {
|
|
63
|
+
return this.http.getJson(uploadedFilesUrl(this.baseUrl, params.agentBranchId, params.chatId), params.signal);
|
|
64
|
+
}
|
|
65
|
+
uploadFile(params) {
|
|
66
|
+
if (params.filename === undefined || params.filename.trim().length === 0) {
|
|
67
|
+
throw new Error("Skyforge uploaded file filename is required.");
|
|
68
|
+
}
|
|
69
|
+
const form = new FormData();
|
|
70
|
+
if (params.chatId !== undefined) {
|
|
71
|
+
form.append("chat_id", params.chatId);
|
|
72
|
+
}
|
|
73
|
+
form.append("file", toUploadBlob(params.file, params.contentType), params.filename);
|
|
74
|
+
return this.http.postForm(uploadedFilesUrl(this.baseUrl, params.agentBranchId), form, params.signal);
|
|
75
|
+
}
|
|
76
|
+
deleteUploadedFile(params) {
|
|
77
|
+
return this.http.deleteJson(uploadedFileDeleteUrl(this.baseUrl, params.agentBranchId, params.fileContextId, params.chatId), params.signal);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function toUploadBlob(file, contentType) {
|
|
81
|
+
const options = contentType === undefined ? undefined : { type: contentType };
|
|
82
|
+
if (file instanceof Blob) {
|
|
83
|
+
return contentType === undefined || file.type === contentType ? file : new Blob([file], options);
|
|
84
|
+
}
|
|
85
|
+
if (file instanceof ArrayBuffer) {
|
|
86
|
+
return new Blob([file], options);
|
|
87
|
+
}
|
|
88
|
+
const bytes = new Uint8Array(file.byteLength);
|
|
89
|
+
bytes.set(file);
|
|
90
|
+
return new Blob([bytes.buffer], options);
|
|
91
|
+
}
|
|
92
|
+
function compactBody(input) {
|
|
93
|
+
return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));
|
|
94
|
+
}
|
|
95
|
+
function assertServerEnvironment() {
|
|
96
|
+
const globalObject = globalThis;
|
|
97
|
+
if (globalObject.window !== undefined && globalObject.document !== undefined) {
|
|
98
|
+
throw new Error("@skyforge-ai/sdk is server-only and cannot run in a browser.");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SkyforgeApiErrorOptions {
|
|
2
|
+
method: string;
|
|
3
|
+
url: string;
|
|
4
|
+
status: number;
|
|
5
|
+
statusText: string;
|
|
6
|
+
requestId?: string;
|
|
7
|
+
responseBody?: unknown;
|
|
8
|
+
responseText?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class SkyforgeApiError extends Error {
|
|
11
|
+
readonly method: string;
|
|
12
|
+
readonly url: string;
|
|
13
|
+
readonly status: number;
|
|
14
|
+
readonly statusText: string;
|
|
15
|
+
readonly requestId?: string;
|
|
16
|
+
readonly responseBody?: unknown;
|
|
17
|
+
readonly responseText?: string;
|
|
18
|
+
constructor(message: string, options: SkyforgeApiErrorOptions);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB;CAW9D"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class SkyforgeApiError extends Error {
|
|
2
|
+
method;
|
|
3
|
+
url;
|
|
4
|
+
status;
|
|
5
|
+
statusText;
|
|
6
|
+
requestId;
|
|
7
|
+
responseBody;
|
|
8
|
+
responseText;
|
|
9
|
+
constructor(message, options) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "SkyforgeApiError";
|
|
12
|
+
this.method = options.method;
|
|
13
|
+
this.url = options.url;
|
|
14
|
+
this.status = options.status;
|
|
15
|
+
this.statusText = options.statusText;
|
|
16
|
+
this.requestId = options.requestId;
|
|
17
|
+
this.responseBody = options.responseBody;
|
|
18
|
+
this.responseText = options.responseText;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,SAAS,CAAU;IACnB,YAAY,CAAW;IACvB,YAAY,CAAU;IAE/B,YAAY,OAAe,EAAE,OAAgC;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;CACF"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SkyforgeFetch } from "./types.js";
|
|
2
|
+
export interface HttpClientOptions {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
fetch: SkyforgeFetch;
|
|
5
|
+
}
|
|
6
|
+
export declare class HttpClient {
|
|
7
|
+
private readonly apiKey;
|
|
8
|
+
private readonly fetchFn;
|
|
9
|
+
constructor(options: HttpClientOptions);
|
|
10
|
+
getJson<T>(url: string, signal?: AbortSignal): Promise<T>;
|
|
11
|
+
postJson<T>(url: string, body: unknown, signal?: AbortSignal): Promise<T>;
|
|
12
|
+
deleteJson<T>(url: string, signal?: AbortSignal): Promise<T>;
|
|
13
|
+
postForm<T>(url: string, body: FormData, signal?: AbortSignal): Promise<T>;
|
|
14
|
+
stream(url: string, signal?: AbortSignal): Promise<Response>;
|
|
15
|
+
private requestJson;
|
|
16
|
+
private authHeaders;
|
|
17
|
+
}
|
|
18
|
+
export declare function throwIfError(response: Response, method: string, url: string): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAE5B,OAAO,EAAE,iBAAiB;IAKhC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzE,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAU1E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;YAUpD,WAAW;IAqBzB,OAAO,CAAC,WAAW;CAMpB;AAkBD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { SkyforgeApiError } from "./errors.js";
|
|
2
|
+
export class HttpClient {
|
|
3
|
+
apiKey;
|
|
4
|
+
fetchFn;
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.apiKey = options.apiKey;
|
|
7
|
+
this.fetchFn = options.fetch;
|
|
8
|
+
}
|
|
9
|
+
async getJson(url, signal) {
|
|
10
|
+
return this.requestJson("GET", url, undefined, signal);
|
|
11
|
+
}
|
|
12
|
+
async postJson(url, body, signal) {
|
|
13
|
+
return this.requestJson("POST", url, JSON.stringify(body), signal);
|
|
14
|
+
}
|
|
15
|
+
async deleteJson(url, signal) {
|
|
16
|
+
return this.requestJson("DELETE", url, undefined, signal);
|
|
17
|
+
}
|
|
18
|
+
async postForm(url, body, signal) {
|
|
19
|
+
const response = await this.fetchFn(url, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: this.authHeaders("application/json"),
|
|
22
|
+
body,
|
|
23
|
+
signal,
|
|
24
|
+
});
|
|
25
|
+
return parseJsonEnvelopeResponse(response, "POST", url);
|
|
26
|
+
}
|
|
27
|
+
async stream(url, signal) {
|
|
28
|
+
const response = await this.fetchFn(url, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: this.authHeaders("text/event-stream"),
|
|
31
|
+
signal,
|
|
32
|
+
});
|
|
33
|
+
await throwIfError(response, "GET", url);
|
|
34
|
+
return response;
|
|
35
|
+
}
|
|
36
|
+
async requestJson(method, url, body, signal) {
|
|
37
|
+
const headers = this.authHeaders("application/json");
|
|
38
|
+
if (body !== undefined) {
|
|
39
|
+
headers["Content-Type"] = "application/json";
|
|
40
|
+
}
|
|
41
|
+
const response = await this.fetchFn(url, {
|
|
42
|
+
method,
|
|
43
|
+
headers,
|
|
44
|
+
body,
|
|
45
|
+
signal,
|
|
46
|
+
});
|
|
47
|
+
return parseJsonEnvelopeResponse(response, method, url);
|
|
48
|
+
}
|
|
49
|
+
authHeaders(accept) {
|
|
50
|
+
return {
|
|
51
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
52
|
+
Accept: accept,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function parseJsonEnvelopeResponse(response, method, url) {
|
|
57
|
+
const text = await response.text();
|
|
58
|
+
const parsed = parseJson(text);
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
throw apiErrorFromResponse(response, method, url, text, parsed);
|
|
61
|
+
}
|
|
62
|
+
const envelope = parsed;
|
|
63
|
+
return envelope?.data;
|
|
64
|
+
}
|
|
65
|
+
export async function throwIfError(response, method, url) {
|
|
66
|
+
if (response.ok) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const text = await response.text();
|
|
70
|
+
throw apiErrorFromResponse(response, method, url, text, parseJson(text));
|
|
71
|
+
}
|
|
72
|
+
function apiErrorFromResponse(response, method, url, responseText, responseBody) {
|
|
73
|
+
return new SkyforgeApiError(errorMessage(response, responseText, responseBody), {
|
|
74
|
+
method,
|
|
75
|
+
url,
|
|
76
|
+
status: response.status,
|
|
77
|
+
statusText: response.statusText,
|
|
78
|
+
requestId: requestId(response.headers),
|
|
79
|
+
responseBody,
|
|
80
|
+
responseText,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function parseJson(text) {
|
|
84
|
+
if (text.trim().length === 0) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
return JSON.parse(text);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function errorMessage(response, responseText, responseBody) {
|
|
95
|
+
if (isRecord(responseBody)) {
|
|
96
|
+
const message = stringField(responseBody, "message");
|
|
97
|
+
if (message !== undefined) {
|
|
98
|
+
return message;
|
|
99
|
+
}
|
|
100
|
+
const error = responseBody.error;
|
|
101
|
+
if (typeof error === "string") {
|
|
102
|
+
return error;
|
|
103
|
+
}
|
|
104
|
+
if (isRecord(error)) {
|
|
105
|
+
const nestedMessage = stringField(error, "message") ?? stringField(error, "error");
|
|
106
|
+
if (nestedMessage !== undefined) {
|
|
107
|
+
return nestedMessage;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (responseText.trim().length > 0) {
|
|
112
|
+
return responseText;
|
|
113
|
+
}
|
|
114
|
+
return response.statusText || `Skyforge request failed with status ${response.status}`;
|
|
115
|
+
}
|
|
116
|
+
function requestId(headers) {
|
|
117
|
+
return (headers.get("x-request-id") ??
|
|
118
|
+
headers.get("x-skyforge-request-id") ??
|
|
119
|
+
headers.get("x-correlation-id") ??
|
|
120
|
+
undefined);
|
|
121
|
+
}
|
|
122
|
+
function isRecord(value) {
|
|
123
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
124
|
+
}
|
|
125
|
+
function stringField(record, key) {
|
|
126
|
+
const value = record[key];
|
|
127
|
+
return typeof value === "string" ? value : undefined;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SkyforgeClient } from "./client.js";
|
|
2
|
+
export { SkyforgeApiError } from "./errors.js";
|
|
3
|
+
export { joinSkyforgeApiPath } from "./routes.js";
|
|
4
|
+
export type { DeleteUploadedFileParams, GetAgentBranchStateParams, HumanActionRequestDto, JsonObject, JsonValue, ListUploadedFilesParams, SendMessageParams, SkyforgeAgentRunEventEnvelope, SkyforgeChatMessageDto, SkyforgeChatMessageResponse, SkyforgeChatStateResponse, SkyforgeChatUploadedFileContextDto, SkyforgeChatUploadedFileListResponse, SkyforgeChatUploadedFileUploadResponse, SkyforgeClientOptions, SkyforgeFetch, StreamAgentRunEventsParams, SubmitHumanActionParams, UploadFileParams, } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,kCAAkC,EAClC,oCAAoC,EACpC,sCAAsC,EACtC,qBAAqB,EACrB,aAAa,EACb,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/routes.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function joinSkyforgeApiPath(apiBaseUrl: string, path: string): string;
|
|
2
|
+
export declare function chatStateUrl(apiBaseUrl: string, agentBranchId: string, chatId?: string): string;
|
|
3
|
+
export declare function sendMessageUrl(apiBaseUrl: string, agentBranchId: string): string;
|
|
4
|
+
export declare function humanActionSubmitUrl(apiBaseUrl: string, humanActionRequestId: string): string;
|
|
5
|
+
export declare function runEventStreamUrl(apiBaseUrl: string, agentRunId: string, afterSequence?: number): string;
|
|
6
|
+
export declare function uploadedFilesUrl(apiBaseUrl: string, agentBranchId: string, chatId?: string): string;
|
|
7
|
+
export declare function uploadedFileDeleteUrl(apiBaseUrl: string, agentBranchId: string, fileContextId: string, chatId: string): string;
|
|
8
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAa5E;AAUD,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAQR;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAQR;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAQR;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR"}
|
package/dist/routes.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function normalizePath(path) {
|
|
2
|
+
return path.startsWith("/") ? path : `/${path}`;
|
|
3
|
+
}
|
|
4
|
+
export function joinSkyforgeApiPath(apiBaseUrl, path) {
|
|
5
|
+
const base = apiBaseUrl.replace(/\/+$/, "");
|
|
6
|
+
let normalizedPath = normalizePath(path);
|
|
7
|
+
if (base.endsWith("/api")) {
|
|
8
|
+
if (normalizedPath.startsWith("/api/")) {
|
|
9
|
+
normalizedPath = normalizedPath.slice("/api".length);
|
|
10
|
+
}
|
|
11
|
+
else if (normalizedPath === "/api") {
|
|
12
|
+
normalizedPath = "";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return base.length === 0 ? normalizedPath : `${base}${normalizedPath}`;
|
|
16
|
+
}
|
|
17
|
+
function appendQuery(url, query) {
|
|
18
|
+
const parts = Object.entries(query)
|
|
19
|
+
.filter(([, value]) => value !== undefined)
|
|
20
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
21
|
+
return parts.length === 0 ? url : `${url}?${parts.join("&")}`;
|
|
22
|
+
}
|
|
23
|
+
export function chatStateUrl(apiBaseUrl, agentBranchId, chatId) {
|
|
24
|
+
return appendQuery(joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/agent_branches/${encodeURIComponent(agentBranchId)}/state`), { chat_id: chatId });
|
|
25
|
+
}
|
|
26
|
+
export function sendMessageUrl(apiBaseUrl, agentBranchId) {
|
|
27
|
+
return joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/agent_branches/${encodeURIComponent(agentBranchId)}/messages`);
|
|
28
|
+
}
|
|
29
|
+
export function humanActionSubmitUrl(apiBaseUrl, humanActionRequestId) {
|
|
30
|
+
return joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/human-actions/${encodeURIComponent(humanActionRequestId)}/submit`);
|
|
31
|
+
}
|
|
32
|
+
export function runEventStreamUrl(apiBaseUrl, agentRunId, afterSequence) {
|
|
33
|
+
return appendQuery(joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/agent_runs/${encodeURIComponent(agentRunId)}/events`), { after_sequence: afterSequence });
|
|
34
|
+
}
|
|
35
|
+
export function uploadedFilesUrl(apiBaseUrl, agentBranchId, chatId) {
|
|
36
|
+
return appendQuery(joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/agent_branches/${encodeURIComponent(agentBranchId)}/uploaded-files`), { chat_id: chatId });
|
|
37
|
+
}
|
|
38
|
+
export function uploadedFileDeleteUrl(apiBaseUrl, agentBranchId, fileContextId, chatId) {
|
|
39
|
+
return appendQuery(joinSkyforgeApiPath(apiBaseUrl, `/api/skyforge-chat/agent_branches/${encodeURIComponent(agentBranchId)}/uploaded-files/${encodeURIComponent(fileContextId)}`), { chat_id: chatId });
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/sse.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAuB,wBAAwB,CAC7C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,GACtC,aAAa,CAAC,6BAA6B,CAAC,CA2C9C"}
|
package/dist/sse.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export async function* parseSkyforgeEventStream(body) {
|
|
2
|
+
if (body === null) {
|
|
3
|
+
return;
|
|
4
|
+
}
|
|
5
|
+
const reader = body.getReader();
|
|
6
|
+
const decoder = new TextDecoder();
|
|
7
|
+
let buffer = "";
|
|
8
|
+
let streamCompleted = false;
|
|
9
|
+
try {
|
|
10
|
+
while (true) {
|
|
11
|
+
const { value, done } = await reader.read();
|
|
12
|
+
if (done) {
|
|
13
|
+
streamCompleted = true;
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
buffer += decoder.decode(value, { stream: true });
|
|
17
|
+
const events = drainEvents(buffer);
|
|
18
|
+
buffer = events.remainder;
|
|
19
|
+
for (const event of events.blocks) {
|
|
20
|
+
const parsed = parseEventBlock(event);
|
|
21
|
+
if (parsed !== undefined) {
|
|
22
|
+
yield parsed;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
buffer += decoder.decode();
|
|
27
|
+
if (buffer.trim().length > 0) {
|
|
28
|
+
const parsed = parseEventBlock(buffer);
|
|
29
|
+
if (parsed !== undefined) {
|
|
30
|
+
yield parsed;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
if (!streamCompleted) {
|
|
36
|
+
await reader.cancel().catch(() => undefined);
|
|
37
|
+
}
|
|
38
|
+
reader.releaseLock();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function drainEvents(buffer) {
|
|
42
|
+
const normalized = buffer.replace(/\r\n/g, "\n");
|
|
43
|
+
const parts = normalized.split("\n\n");
|
|
44
|
+
const remainder = parts.pop() ?? "";
|
|
45
|
+
return { blocks: parts, remainder };
|
|
46
|
+
}
|
|
47
|
+
function parseEventBlock(block) {
|
|
48
|
+
const dataLines = block
|
|
49
|
+
.split("\n")
|
|
50
|
+
.filter((line) => line.startsWith("data:"))
|
|
51
|
+
.map((line) => line.slice("data:".length).trimStart());
|
|
52
|
+
if (dataLines.length === 0) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return JSON.parse(dataLines.join("\n"));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=sse.js.map
|
package/dist/sse.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,wBAAwB,CAC7C,IAAuC;IAEvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM;YACR,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;YAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,MAAM,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,SAAS,GAAG,KAAK;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAEzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAkC,CAAC;AAC3E,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
2
|
+
export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
|
|
3
|
+
export interface JsonObject {
|
|
4
|
+
[key: string]: JsonValue;
|
|
5
|
+
}
|
|
6
|
+
export interface SkyforgeClientOptions {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
baseUrl?: string;
|
|
9
|
+
fetch?: SkyforgeFetch;
|
|
10
|
+
}
|
|
11
|
+
export type SkyforgeFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
12
|
+
export interface RequestOptions {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
}
|
|
15
|
+
export interface GetAgentBranchStateParams extends RequestOptions {
|
|
16
|
+
agentBranchId: string;
|
|
17
|
+
chatId?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SkyforgeChatRetrievalScopeRequest {
|
|
20
|
+
context_ids?: string[];
|
|
21
|
+
context_release_ids?: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface SendMessageParams extends RequestOptions {
|
|
24
|
+
agentBranchId: string;
|
|
25
|
+
message: string;
|
|
26
|
+
chatId?: string;
|
|
27
|
+
retriedFromAgentRunId?: string;
|
|
28
|
+
sourceUserMessageId?: string;
|
|
29
|
+
structuredContext?: JsonObject;
|
|
30
|
+
retrievalScope?: SkyforgeChatRetrievalScopeRequest;
|
|
31
|
+
}
|
|
32
|
+
export interface StreamAgentRunEventsParams extends RequestOptions {
|
|
33
|
+
agentRunId: string;
|
|
34
|
+
afterSequence?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface SubmitHumanActionParams extends RequestOptions {
|
|
37
|
+
humanActionRequestId: string;
|
|
38
|
+
values: JsonValue;
|
|
39
|
+
}
|
|
40
|
+
export interface ListUploadedFilesParams extends RequestOptions {
|
|
41
|
+
agentBranchId: string;
|
|
42
|
+
chatId: string;
|
|
43
|
+
}
|
|
44
|
+
export type UploadFileBody = Blob | ArrayBuffer | Uint8Array;
|
|
45
|
+
export interface UploadFileParams extends RequestOptions {
|
|
46
|
+
agentBranchId: string;
|
|
47
|
+
chatId?: string;
|
|
48
|
+
file: UploadFileBody;
|
|
49
|
+
filename: string;
|
|
50
|
+
contentType?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface DeleteUploadedFileParams extends RequestOptions {
|
|
53
|
+
agentBranchId: string;
|
|
54
|
+
fileContextId: string;
|
|
55
|
+
chatId: string;
|
|
56
|
+
}
|
|
57
|
+
export interface SkyforgeSuccessResponse<T> {
|
|
58
|
+
message: string;
|
|
59
|
+
data?: T | null;
|
|
60
|
+
}
|
|
61
|
+
export type AgentRuntimeMode = "turn_based" | "run_based" | string;
|
|
62
|
+
export type SkyforgeChatMessageRole = "assistant" | "user" | "system" | "tool" | "error" | string;
|
|
63
|
+
export interface SkyforgeChatMessageDto {
|
|
64
|
+
id: string;
|
|
65
|
+
role: SkyforgeChatMessageRole;
|
|
66
|
+
content: string;
|
|
67
|
+
relevant_chunks?: string | null;
|
|
68
|
+
external_tool_call_id?: string | null;
|
|
69
|
+
group_id?: string | null;
|
|
70
|
+
is_displayable?: boolean;
|
|
71
|
+
agent_run_id?: string | null;
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
export interface HumanActionRequestDto {
|
|
75
|
+
id: string;
|
|
76
|
+
kind?: string;
|
|
77
|
+
agent_run_id?: string;
|
|
78
|
+
chat_id?: string;
|
|
79
|
+
source_agent_run_id?: string;
|
|
80
|
+
source_chat_id?: string;
|
|
81
|
+
visible_chat_id?: string | null;
|
|
82
|
+
waiting_parent_agent_run_id?: string | null;
|
|
83
|
+
source_agent_name?: string | null;
|
|
84
|
+
source_agent_branch_name?: string | null;
|
|
85
|
+
is_bubbled?: boolean;
|
|
86
|
+
tool_call_id: string;
|
|
87
|
+
tool_name: string;
|
|
88
|
+
tool_arguments?: JsonValue;
|
|
89
|
+
bubbled_parent_tool_call_metadata?: JsonValue | null;
|
|
90
|
+
title?: string | null;
|
|
91
|
+
description?: string | null;
|
|
92
|
+
submit_label?: string | null;
|
|
93
|
+
form_schema: JsonValue;
|
|
94
|
+
status: string;
|
|
95
|
+
created_at: string;
|
|
96
|
+
[key: string]: unknown;
|
|
97
|
+
}
|
|
98
|
+
export interface SkyforgeChatStateResponse {
|
|
99
|
+
agent_branch_id: string;
|
|
100
|
+
runtime_mode: AgentRuntimeMode;
|
|
101
|
+
chat_id?: string | null;
|
|
102
|
+
can_send_messages: boolean;
|
|
103
|
+
start_message?: string | null;
|
|
104
|
+
messages: SkyforgeChatMessageDto[];
|
|
105
|
+
latest_agent_run_id?: string | null;
|
|
106
|
+
agent_title?: string | null;
|
|
107
|
+
agent_subtitle?: string | null;
|
|
108
|
+
pending_human_actions?: HumanActionRequestDto[];
|
|
109
|
+
[key: string]: unknown;
|
|
110
|
+
}
|
|
111
|
+
export interface SkyforgeChatMessageResponse {
|
|
112
|
+
runtime_mode: AgentRuntimeMode;
|
|
113
|
+
chat_id: string;
|
|
114
|
+
chat_title?: string | null;
|
|
115
|
+
agent_run_id?: string | null;
|
|
116
|
+
source_user_message_id?: string | null;
|
|
117
|
+
retried_from_agent_run_id?: string | null;
|
|
118
|
+
messages: SkyforgeChatMessageDto[];
|
|
119
|
+
pending_human_actions?: HumanActionRequestDto[];
|
|
120
|
+
terminal: boolean;
|
|
121
|
+
[key: string]: unknown;
|
|
122
|
+
}
|
|
123
|
+
export interface SkyforgeChatUploadedFileContextDto {
|
|
124
|
+
id: string;
|
|
125
|
+
chat_id: string;
|
|
126
|
+
agent_branch_id: string;
|
|
127
|
+
filename: string;
|
|
128
|
+
content_type?: string | null;
|
|
129
|
+
file_size_bytes: number;
|
|
130
|
+
file_type: string;
|
|
131
|
+
extracted_char_count: number;
|
|
132
|
+
status: string;
|
|
133
|
+
prompt_char_count?: number | null;
|
|
134
|
+
prompt_truncated?: boolean;
|
|
135
|
+
created_at: string;
|
|
136
|
+
expires_at: string;
|
|
137
|
+
[key: string]: unknown;
|
|
138
|
+
}
|
|
139
|
+
export interface SkyforgeChatUploadedFileListResponse {
|
|
140
|
+
files: SkyforgeChatUploadedFileContextDto[];
|
|
141
|
+
}
|
|
142
|
+
export interface SkyforgeChatUploadedFileUploadResponse {
|
|
143
|
+
chat_id: string;
|
|
144
|
+
file: SkyforgeChatUploadedFileContextDto;
|
|
145
|
+
preview_text?: string | null;
|
|
146
|
+
}
|
|
147
|
+
export interface SkyforgeAgentRunEventStep {
|
|
148
|
+
id: string;
|
|
149
|
+
name: string;
|
|
150
|
+
}
|
|
151
|
+
export interface SkyforgeAgentRunEventEnvelope {
|
|
152
|
+
event_id: string;
|
|
153
|
+
agent_run_id: string;
|
|
154
|
+
sequence: number;
|
|
155
|
+
occurred_at: string;
|
|
156
|
+
step?: SkyforgeAgentRunEventStep | null;
|
|
157
|
+
event: JsonObject;
|
|
158
|
+
[key: string]: unknown;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@runmark/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Server-side SDK for agent chat routes.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"private": false,
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=24.17.0"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -p tsconfig.build.json",
|
|
23
|
+
"test": "npm run build && node --test test/*.test.mjs",
|
|
24
|
+
"test:live": "npm run build && node --test test/live/*.live.test.mjs",
|
|
25
|
+
"test:live:hitl-bubbling-demo": "node test/live/run-hitl-bubbling-demo.mjs"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^24.0.0",
|
|
30
|
+
"typescript": "^5.7.2"
|
|
31
|
+
}
|
|
32
|
+
}
|