@chusky/sdk 0.1.0 → 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/CHANGELOG.md +10 -0
- package/README.md +11 -1
- package/dist/client.d.ts +151 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +173 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/approvals.mdx +19 -0
- package/docs/architecture.mdx +32 -0
- package/docs/budgets.mdx +25 -0
- package/docs/capabilities.mdx +39 -0
- package/docs/concepts.mdx +24 -0
- package/docs/errors.mdx +21 -0
- package/docs/fallbacks.mdx +23 -0
- package/docs/files.mdx +31 -0
- package/docs/index.mdx +27 -0
- package/docs/models.mdx +25 -0
- package/docs/policies.mdx +36 -0
- package/docs/production.mdx +27 -0
- package/docs/quickstart.mdx +56 -0
- package/docs/releases.mdx +23 -0
- package/docs/security.mdx +13 -0
- package/docs/streaming.mdx +28 -0
- package/docs/structured-output.mdx +30 -0
- package/docs/tasks.mdx +16 -0
- package/docs/webhooks.mdx +15 -0
- package/package.json +37 -29
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Chusky, createChuskyAdmin, ThreadsResource, RunsResource, TasksResource, ApprovalsResource, FilesResource, AuditResource, WebhooksResource, UsageResource, ProjectsResource } from "./client.js";
|
|
1
|
+
export { Chusky, createChuskyAdmin, ThreadsResource, RunsResource, TasksResource, ApprovalsResource, FilesResource, AuditResource, WebhooksResource, UsageResource, ProjectsResource, ToolsResource, SkillsResource, ArtifactsResource, VideosResource, WorkersResource, ChannelsResource, ActivityResource, AccountResource } from "./client.js";
|
|
2
2
|
export { ChuskyError, ChuskyAuthenticationError, ChuskyRateLimitError } from "./errors.js";
|
|
3
|
-
export type { Approval, AuditEvent, ChuskyClientOptions, CreateRunParams, CreateThreadParams, DeveloperProject, FileDownload, FileRecord, FileUpload, JsonObject, Page, RequestOptions, Run, RunEvent, RunStreamEvent, Task, Thread, Usage, Webhook, WebhookDelivery } from "./types.js";
|
|
3
|
+
export type { Activity, Approval, Artifact, AuditEvent, ChannelConnection, ChuskyClientOptions, CreateRunParams, CreateThreadParams, DeveloperProject, Delivery, DurationBudget, FileDownload, FileRecord, FileUpload, JsonObject, Page, RequestOptions, Run, RunBudget, RunEvent, RunStreamEvent, RunToolPolicy, Skill, SkillFile, Task, Thread, Tool, Usage, VideoJob, Webhook, WebhookDelivery, Worker } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClV,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Chusky, createChuskyAdmin, ThreadsResource, RunsResource, TasksResource, ApprovalsResource, FilesResource, AuditResource, WebhooksResource, UsageResource, ProjectsResource } from "./client.js";
|
|
1
|
+
export { Chusky, createChuskyAdmin, ThreadsResource, RunsResource, TasksResource, ApprovalsResource, FilesResource, AuditResource, WebhooksResource, UsageResource, ProjectsResource, ToolsResource, SkillsResource, ArtifactsResource, VideosResource, WorkersResource, ChannelsResource, ActivityResource, AccountResource } from "./client.js";
|
|
2
2
|
export { ChuskyError, ChuskyAuthenticationError, ChuskyRateLimitError } from "./errors.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClV,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -98,9 +98,14 @@ export interface Run {
|
|
|
98
98
|
threadId: string;
|
|
99
99
|
status: "queued" | "running" | "requires_approval" | "completed" | "failed" | "cancelled";
|
|
100
100
|
input: string;
|
|
101
|
+
model?: string;
|
|
101
102
|
output?: string;
|
|
102
103
|
taskId?: string;
|
|
103
104
|
approvalId?: string;
|
|
105
|
+
metadata?: JsonObject;
|
|
106
|
+
budget?: RunBudget;
|
|
107
|
+
tools?: RunToolPolicy;
|
|
108
|
+
skills?: string[];
|
|
104
109
|
error?: {
|
|
105
110
|
code: string;
|
|
106
111
|
message: string;
|
|
@@ -110,10 +115,27 @@ export interface Run {
|
|
|
110
115
|
}
|
|
111
116
|
export interface CreateRunParams {
|
|
112
117
|
input: string;
|
|
118
|
+
/** Optional model override. The server validates it against available models. */
|
|
119
|
+
model?: string;
|
|
113
120
|
metadata?: JsonObject;
|
|
121
|
+
attachments?: string[];
|
|
122
|
+
budget?: RunBudget;
|
|
123
|
+
tools?: RunToolPolicy;
|
|
124
|
+
skills?: string[];
|
|
114
125
|
/** Wait for a terminal result. Use stream() for token-level progress. */
|
|
115
126
|
wait?: boolean;
|
|
116
127
|
}
|
|
128
|
+
export type DurationBudget = "5m" | "30m" | "1h" | "3h" | "6h" | "3d" | "1w";
|
|
129
|
+
export interface RunBudget {
|
|
130
|
+
duration?: DurationBudget;
|
|
131
|
+
maxToolCalls?: number;
|
|
132
|
+
maxCost?: number;
|
|
133
|
+
}
|
|
134
|
+
export interface RunToolPolicy {
|
|
135
|
+
allow?: string[];
|
|
136
|
+
deny?: string[];
|
|
137
|
+
requireApproval?: string[];
|
|
138
|
+
}
|
|
117
139
|
export interface Task {
|
|
118
140
|
id: string;
|
|
119
141
|
status: "queued" | "running" | "blocked" | "completed" | "failed" | "cancelled";
|
|
@@ -125,6 +147,15 @@ export interface Task {
|
|
|
125
147
|
error?: string;
|
|
126
148
|
createdAt: string;
|
|
127
149
|
updatedAt: string;
|
|
150
|
+
attempt?: number;
|
|
151
|
+
maxAttempts?: number;
|
|
152
|
+
events?: Array<{
|
|
153
|
+
id: string;
|
|
154
|
+
type: string;
|
|
155
|
+
message: string;
|
|
156
|
+
at: number;
|
|
157
|
+
attempt: number;
|
|
158
|
+
}>;
|
|
128
159
|
}
|
|
129
160
|
export interface Approval {
|
|
130
161
|
id: string;
|
|
@@ -132,8 +163,105 @@ export interface Approval {
|
|
|
132
163
|
toolSlug: string;
|
|
133
164
|
args: JsonObject;
|
|
134
165
|
expiresAt: string;
|
|
166
|
+
request?: string;
|
|
167
|
+
channelProvider?: string;
|
|
168
|
+
handoffId?: string;
|
|
169
|
+
}
|
|
170
|
+
export interface Skill {
|
|
171
|
+
name: string;
|
|
172
|
+
description: string;
|
|
173
|
+
path: string;
|
|
174
|
+
bytes?: number;
|
|
175
|
+
updatedAt?: string;
|
|
176
|
+
files?: number;
|
|
177
|
+
}
|
|
178
|
+
export interface SkillFile {
|
|
179
|
+
name?: string;
|
|
180
|
+
path: string;
|
|
181
|
+
bytes: number;
|
|
182
|
+
binary: boolean;
|
|
183
|
+
content?: string;
|
|
184
|
+
truncated?: boolean;
|
|
185
|
+
}
|
|
186
|
+
export interface Tool {
|
|
187
|
+
slug: string;
|
|
188
|
+
description: string;
|
|
189
|
+
source: "native" | "composio";
|
|
190
|
+
approval?: "auto" | "approval_required";
|
|
191
|
+
toolkit?: string;
|
|
192
|
+
connected?: boolean;
|
|
193
|
+
}
|
|
194
|
+
export interface Artifact {
|
|
195
|
+
id: string;
|
|
196
|
+
name: string;
|
|
197
|
+
type: "website" | "report" | "docx" | "presentation" | "pdf" | "spreadsheet" | "image" | "video" | "zip" | "project";
|
|
198
|
+
path: string;
|
|
199
|
+
contentType: string;
|
|
200
|
+
size: number;
|
|
201
|
+
status: "available";
|
|
202
|
+
sandboxId: string;
|
|
203
|
+
createdAt: string;
|
|
204
|
+
updatedAt: string;
|
|
205
|
+
downloadUrl?: string;
|
|
206
|
+
}
|
|
207
|
+
export interface VideoJob {
|
|
208
|
+
id: string;
|
|
209
|
+
prompt: string;
|
|
210
|
+
destination: "telegram" | "daytona" | "both";
|
|
211
|
+
workspacePath?: string;
|
|
212
|
+
workflowRunId?: string;
|
|
213
|
+
status: "queued" | "running" | "completed" | "failed" | "cancelled";
|
|
214
|
+
pollCount: number;
|
|
215
|
+
error?: string;
|
|
216
|
+
resultPath?: string;
|
|
217
|
+
createdAt: string;
|
|
218
|
+
updatedAt: string;
|
|
219
|
+
completedAt?: string;
|
|
220
|
+
}
|
|
221
|
+
export interface Worker {
|
|
222
|
+
id: string;
|
|
223
|
+
worker: string;
|
|
224
|
+
from: string;
|
|
225
|
+
objective: string;
|
|
226
|
+
expectedOutput: string;
|
|
227
|
+
status: string;
|
|
228
|
+
taskId?: string;
|
|
229
|
+
workflowRunId?: string;
|
|
230
|
+
timestamp: string;
|
|
231
|
+
delegation?: JsonObject;
|
|
232
|
+
context?: JsonObject;
|
|
233
|
+
}
|
|
234
|
+
export interface ChannelConnection {
|
|
235
|
+
provider: string;
|
|
236
|
+
externalUserId: string;
|
|
237
|
+
workspaceId?: string;
|
|
238
|
+
displayName?: string;
|
|
239
|
+
verifiedAt: string;
|
|
240
|
+
proactiveOptIn: boolean;
|
|
241
|
+
}
|
|
242
|
+
export interface Activity {
|
|
243
|
+
now: number;
|
|
244
|
+
approvals: Approval[];
|
|
245
|
+
tasks: Task[];
|
|
246
|
+
reminders: JsonObject[];
|
|
247
|
+
jobs: JsonObject[];
|
|
248
|
+
}
|
|
249
|
+
export interface Delivery {
|
|
250
|
+
id: string;
|
|
251
|
+
provider: string;
|
|
252
|
+
status: string;
|
|
253
|
+
kind: string;
|
|
254
|
+
attempts: number;
|
|
255
|
+
providerStatus?: string;
|
|
256
|
+
lastError?: string;
|
|
257
|
+
createdAt: string;
|
|
258
|
+
updatedAt: string;
|
|
259
|
+
deliveredAt?: string;
|
|
135
260
|
}
|
|
136
261
|
export type RunStreamEvent = {
|
|
262
|
+
type: "run.queued";
|
|
263
|
+
run: Run;
|
|
264
|
+
} | {
|
|
137
265
|
type: "run.started";
|
|
138
266
|
run: Run;
|
|
139
267
|
} | {
|
|
@@ -176,5 +304,7 @@ export interface ChuskyClientOptions {
|
|
|
176
304
|
fetch?: typeof globalThis.fetch;
|
|
177
305
|
timeoutMs?: number;
|
|
178
306
|
userAgent?: string;
|
|
307
|
+
/** Default model for runs created by this client. A run-level model overrides it. */
|
|
308
|
+
model?: string;
|
|
179
309
|
}
|
|
180
310
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;CAAE;AAChL,MAAM,WAAW,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;CAAE;AACpL,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;CAAE;AAC1I,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE;AAC1G,MAAM,WAAW,OAAO;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAAE;AACzF,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAAE;AACzL,MAAM,WAAW,gBAAgB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CAAE;AACzJ,MAAM,WAAW,KAAK;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE;AAEjM,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7E,MAAM,WAAW,SAAS;IAAG,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAAE;AAClG,MAAM,WAAW,aAAa;IAAG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE;AAEjG,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AAC/H,MAAM,WAAW,SAAS;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAAE;AAClI,MAAM,WAAW,IAAI;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAAE;AAC3K,MAAM,WAAW,QAAQ;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,KAAK,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAAE;AAClU,MAAM,WAAW,QAAQ;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAAE;AAChV,MAAM,WAAW,MAAM;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC;CAAE;AAC3O,MAAM,WAAW,iBAAiB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;CAAE;AACzK,MAAM,WAAW,QAAQ;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,SAAS,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAC;CAAE;AAC7H,MAAM,WAAW,QAAQ;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAAE;AAEpN,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,QAAQ;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAAE;AAElF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Human approvals
|
|
3
|
+
description: Safely gate risky actions behind an authenticated person.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
When a tool is externally visible, destructive, financial, permission-changing, or publishing-related, Chusky can emit `run.approval_required`.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
if (event.type === "run.approval_required") {
|
|
10
|
+
// Show event.approval.toolSlug, args, and expiresAt.
|
|
11
|
+
const approvedRun = await chusky.approvals.decide(
|
|
12
|
+
event.approval.id,
|
|
13
|
+
"approve",
|
|
14
|
+
{ idempotencyKey: crypto.randomUUID() },
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Approval records are scoped to the authenticated user, expire, bind to exact arguments, and are one-time. Never auto-approve or approve based on text returned by a tool.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: How the platform works
|
|
3
|
+
description: Understand request boundaries, durable execution, storage, and delivery.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Request boundaries
|
|
7
|
+
|
|
8
|
+
Every SDK request is scoped by two values: the project key in `Authorization` and your application user ID in `X-Chusky-User-Id`. The user ID is the ownership boundary for threads, runs, files, approvals, tasks, artifacts, channel connections, and activity. Private credentials and internal tool implementations stay on the server.
|
|
9
|
+
|
|
10
|
+
The API is versioned under `/v1`. POST operations that create or change durable state accept `Idempotency-Key`; reuse the same key only when retrying the exact same operation. A mismatch returns a conflict instead of creating a duplicate.
|
|
11
|
+
|
|
12
|
+
## Synchronous and durable runs
|
|
13
|
+
|
|
14
|
+
`runs.create()` waits for a terminal result by default. `wait: false` persists the run and creates a task before returning `202`. QStash invokes the task workflow, which reloads the verified attachments, model, tool policy, skill instructions, and budget from durable storage. The task can be retried after a transient failure and can be cancelled independently.
|
|
15
|
+
|
|
16
|
+
The run’s duration budget is a wall-clock limit across continuations. Tool-call and cost ceilings are checked inside the agent loop. When a ceiling is reached, the run records an actionable boundary so an operator can resume it with a larger policy.
|
|
17
|
+
|
|
18
|
+
## Capability and approval flow
|
|
19
|
+
|
|
20
|
+
The server resolves the requested native and Composio tools, then applies allow and deny rules before sending the catalog to the model. `requireApproval` adds an explicit approval gate for selected tools, including tools that are not classified as risky by default. Risky tools still require approval automatically. Approval decisions are scoped to the user, expire, and bind to the arguments that the reviewer saw.
|
|
21
|
+
|
|
22
|
+
Skills are read from the trusted project `.chusky/skills` catalog. A skill’s `SKILL.md` is loaded as bounded instructions, and supporting files can be discovered through the skills API. Unknown or removed skills are ignored safely so a run can still complete with the remaining instructions.
|
|
23
|
+
|
|
24
|
+
## Files and artifacts
|
|
25
|
+
|
|
26
|
+
Uploads go directly to Cloudflare R2 using a five-minute presigned URL. Chusky verifies the object’s size and content type before marking it available. Runs refer to file IDs; the server resolves those IDs to bytes or signed URLs and never accepts arbitrary object keys from the client.
|
|
27
|
+
|
|
28
|
+
Artifacts are outputs registered by the Daytona workspace. The artifact record is scoped to the owning user; the download endpoint checks ownership and returns verified bytes with a safe filename. This makes generated PDFs, documents, presentations, spreadsheets, images, videos, and ZIP files addressable after the original run has ended.
|
|
29
|
+
|
|
30
|
+
## Webhooks and operational views
|
|
31
|
+
|
|
32
|
+
Terminal run events are written to the durable webhook outbox before delivery. The outbox leases work, retries interrupted deliveries, and exposes delivery records for inspection and retry. `activity`, `deliveries`, `usage`, and `channels` are read-only control-plane views suitable for an operator dashboard.
|
package/docs/budgets.mdx
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Usage and budget limits
|
|
3
|
+
description: Keep model, tool, file, and workflow costs predictable.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Budget policies can be set on each run and should also be constrained by the project and user policy in your application.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const budget = {
|
|
10
|
+
maxToolCalls: 20,
|
|
11
|
+
maxCost: 0.25,
|
|
12
|
+
};
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The server enforces `maxToolCalls` and `maxCost` during the run. A tool-call ceiling produces a resumable boundary with an actionable message; a cost ceiling stops additional tool work. Durable runs also accept `budget.duration` values of `5m`, `30m`, `1h`, `3h`, `6h`, `3d`, or `1w`.
|
|
16
|
+
|
|
17
|
+
Recommended responses:
|
|
18
|
+
|
|
19
|
+
- `402 spend_limit` when a budget is exhausted
|
|
20
|
+
- `429 rate_limited` when request throughput is exceeded
|
|
21
|
+
- `409 policy_violation` when a run requests a disallowed capability
|
|
22
|
+
|
|
23
|
+
Expose usage through the usage endpoint and include bounded cost metadata in run and webhook records. Never trust a client-provided cost value.
|
|
24
|
+
|
|
25
|
+
For asynchronous work, combine the budget with `wait: false`; the QStash-backed task resumes from persisted state after a process restart. Treat the returned task as the source of truth for progress and retry state.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Capabilities, skills, and artifacts
|
|
3
|
+
description: Give runs the right tools and move generated work safely through the platform.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Tool and skill discovery
|
|
7
|
+
|
|
8
|
+
Use `tools.list()` to discover the Composio and native capabilities available to a project. Use `skills.list()` to inspect the trusted `.chusky/skills` catalog and `skills.files()` or `skills.readFile()` when a skill references supporting scripts, templates, or assets.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
const tools = await chusky.tools.list({ query: "Gmail" });
|
|
12
|
+
const skills = await chusky.skills.list();
|
|
13
|
+
|
|
14
|
+
const run = await chusky.threads.runs(thread.id).create({
|
|
15
|
+
input: "Research the customer and prepare a report.",
|
|
16
|
+
tools: { allow: tools.data.slice(0, 5).map((tool) => tool.slug) },
|
|
17
|
+
skills: skills.data.filter((skill) => skill.name === "research").map((skill) => skill.name),
|
|
18
|
+
wait: false,
|
|
19
|
+
budget: { duration: "3h", maxToolCalls: 60, maxCost: 2 },
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Allow and deny rules are checked before the model sees the catalog and again immediately before execution. A missing connected account is surfaced as a connection requirement; it does not silently grant a credential.
|
|
24
|
+
|
|
25
|
+
## Generated artifacts and video jobs
|
|
26
|
+
|
|
27
|
+
Artifacts are verified outputs produced in the Daytona workspace. List them, inspect metadata, and download the bytes through the SDK:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
const artifacts = await chusky.artifacts.list({ type: "report" });
|
|
31
|
+
const file = await chusky.artifacts.download(artifacts.data[0].id);
|
|
32
|
+
await writeFile("report.pdf", Buffer.from(file.bytes));
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Video generation is durable and independently cancellable. Submit a job with `videos.create()`, observe it with `videos.get()`, and deliver the completed artifact through the channel or your own storage policy.
|
|
36
|
+
|
|
37
|
+
## Workers and channels
|
|
38
|
+
|
|
39
|
+
Workers are durable scheduled routines. `workers.create()` accepts a schedule, task input, budget, and optional channel target. Channels and activity provide the control-plane view needed for dashboards and operational history.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Core concepts
|
|
3
|
+
description: Understand identity, threads, runs, tools, and durable state.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Users and projects
|
|
7
|
+
|
|
8
|
+
A project key identifies your application. `userId` identifies the end user whose Chusky state is used. Project keys are scoped and may be revoked or rotated.
|
|
9
|
+
|
|
10
|
+
## Threads and runs
|
|
11
|
+
|
|
12
|
+
A thread is a durable conversation. A run is one agent execution within that thread. Keep the thread ID in your application database and reuse it for continuity.
|
|
13
|
+
|
|
14
|
+
## Tools
|
|
15
|
+
|
|
16
|
+
The agent selects tools from its server-side catalog. Connected-app tools require the user to connect the relevant account. Read-only actions can run directly; risky actions create an approval.
|
|
17
|
+
|
|
18
|
+
## Durable state
|
|
19
|
+
|
|
20
|
+
Chusky persists conversation history, summaries, tasks, approvals, files, audit events, and connected-app sessions. A dropped HTTP connection does not imply that durable work failed; retrieve the run and its events.
|
|
21
|
+
|
|
22
|
+
## Idempotency
|
|
23
|
+
|
|
24
|
+
Use a fresh `idempotencyKey` for each logical mutation. If a request is retried, reuse the same key only for the exact same operation and body.
|
package/docs/errors.mdx
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Errors and retries
|
|
3
|
+
description: Handle API failures safely.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The SDK exposes typed errors for authentication and rate limits. API errors include a status and machine-readable code.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
try {
|
|
10
|
+
await chusky.threads.runs(thread.id).create({ input: "Hello" });
|
|
11
|
+
} catch (error) {
|
|
12
|
+
if (error instanceof ChuskyRateLimitError) {
|
|
13
|
+
// Respect Retry-After before retrying.
|
|
14
|
+
}
|
|
15
|
+
if (error instanceof ChuskyAuthenticationError) {
|
|
16
|
+
// Rotate or correct the project key; do not retry blindly.
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Retry transient network, 429, and 5xx failures with bounded backoff. Reuse an idempotency key for the same durable mutation. Do not create a second run merely because a stream disconnected.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Fallback models
|
|
3
|
+
description: Keep runs available when a model is unavailable or unsuitable.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Fallbacks are an ordered list of models used only for retryable failures such as provider outages, rate limits, or unsupported input modalities.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
// Planned SDK shape
|
|
10
|
+
const chusky = new Chusky({
|
|
11
|
+
apiKey: process.env.CHUSKY_API_KEY!,
|
|
12
|
+
userId: "customer_123",
|
|
13
|
+
model: "openai/gpt-5.6-luna",
|
|
14
|
+
fallbackModels: [
|
|
15
|
+
"deepseek/deepseek-v4-flash",
|
|
16
|
+
"anthropic/claude-sonnet-4",
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Fallbacks must not retry invalid input, denied permissions, expired approvals, or destructive tool calls. The final selected model should be recorded in the run and webhook metadata. A fallback must preserve the same conversation and idempotency context.
|
|
22
|
+
|
|
23
|
+
> **Status:** Planned public API. The current SDK supports a configured model and per-run model override; ordered fallback execution is not yet exposed.
|
package/docs/files.mdx
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Files and R2 uploads
|
|
3
|
+
description: Upload verified files and attach them to agent runs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Files use a two-step upload: create an intent, upload bytes to the short-lived R2 URL, then complete verification.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const intent = await chusky.files.create({
|
|
10
|
+
name: "renewal.pdf",
|
|
11
|
+
contentType: "application/pdf",
|
|
12
|
+
size: file.size,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
await fetch(intent.uploadUrl, {
|
|
16
|
+
method: "PUT",
|
|
17
|
+
headers: { "Content-Type": file.type },
|
|
18
|
+
body: file,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const verified = await chusky.files.complete(intent.id);
|
|
22
|
+
|
|
23
|
+
// For Node.js Buffers, Uint8Arrays, or browser Blobs:
|
|
24
|
+
const uploaded = await chusky.files.upload({
|
|
25
|
+
name: "logo.png",
|
|
26
|
+
contentType: "image/png",
|
|
27
|
+
bytes,
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Only verified files can be attached or downloaded. Upload URLs expire quickly; do not persist them. The backend enforces type, size, ownership, and content-type verification.
|
package/docs/index.mdx
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Chusky Developer Platform
|
|
3
|
+
description: Build products with a persistent, tool-using AI agent.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Chusky is an agent platform with a TypeScript SDK and versioned REST API. Your application supplies an authenticated user context; Chusky runs the agent, connected apps, native tools, approvals, durable tasks, files, and workflows on the server.
|
|
7
|
+
|
|
8
|
+
<Card title="Start in five minutes" icon="rocket" href="/docs/quickstart">
|
|
9
|
+
Install the SDK, create a thread, and stream the first response.
|
|
10
|
+
</Card>
|
|
11
|
+
|
|
12
|
+
## What you can build
|
|
13
|
+
|
|
14
|
+
- AI customer-support and operations workspaces
|
|
15
|
+
- Agents that use Gmail, Slack, GitHub, Notion, and other connected apps
|
|
16
|
+
- Durable research and automation tasks that survive restarts
|
|
17
|
+
- Authenticated chat products with streaming responses
|
|
18
|
+
- Human-in-the-loop workflows for sending, deleting, publishing, or changing data
|
|
19
|
+
- File-aware assistants using verified Cloudflare R2 uploads
|
|
20
|
+
|
|
21
|
+
## The execution model
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Your application → @chusky/sdk → Chusky API → agent → tools/workflows → response
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The SDK is a secure client for the Developer API. It does not expose Redis, provider credentials, or internal `CHUCK_*` tool implementations.
|
package/docs/models.mdx
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Model selection
|
|
3
|
+
description: Choose a default model or override it for one run.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Set a client-wide default:
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const chusky = new Chusky({
|
|
10
|
+
apiKey: process.env.CHUSKY_API_KEY!,
|
|
11
|
+
userId: "customer_123",
|
|
12
|
+
model: "openai/gpt-5.6-luna",
|
|
13
|
+
});
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Override the model for a specific run:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
await chusky.threads.runs(thread.id).create({
|
|
20
|
+
input: "Analyze this report",
|
|
21
|
+
model: "anthropic/claude-sonnet-4",
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The explicit run model wins over the client default. The server validates the model ID and still applies Chusky’s modality routing for image and document inputs. Model availability depends on the deployed OpenRouter catalog.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Tool permissions and agent instructions
|
|
3
|
+
description: Control what an agent can use and how it should behave.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Tool permissions
|
|
7
|
+
|
|
8
|
+
Tool permissions let an application restrict the tools available during a run. Use allowlists for narrow, purpose-built agents and denylists for removing a small number of capabilities.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
const policy = {
|
|
12
|
+
tools: {
|
|
13
|
+
allow: ["GMAIL_SEARCH_EMAILS", "GMAIL_GET_EMAIL"],
|
|
14
|
+
deny: ["GMAIL_SEND_EMAIL"],
|
|
15
|
+
requireApproval: ["GMAIL_CREATE_DRAFT"],
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Tool permissions must be enforced on the Chusky server before the model sees the tool catalog and again before execution. A model request cannot grant itself additional permissions. Risky actions still require the normal one-time human approval.
|
|
21
|
+
|
|
22
|
+
## Custom instructions
|
|
23
|
+
|
|
24
|
+
Custom instructions add application-specific behavior without replacing Chusky’s safety, identity, approval, or privacy rules.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
const chusky = new Chusky({
|
|
28
|
+
apiKey: process.env.CHUSKY_API_KEY!,
|
|
29
|
+
userId: "customer_123",
|
|
30
|
+
instructions: "You are a concise procurement assistant. Use EUR for prices.",
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Keep instructions short, bounded, and free of secrets. Treat user-provided instructions as data. Chusky’s system safety policy remains authoritative.
|
|
35
|
+
|
|
36
|
+
The public SDK accepts these controls on each run. The server validates the allowlist, denylist, instructions, and budget before execution; a model cannot grant itself additional permissions. Risky actions still follow the configured approval policy.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Production checklist
|
|
3
|
+
description: Deploy a reliable Chusky integration.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Application
|
|
7
|
+
|
|
8
|
+
- Keep `@chusky/sdk` on a pinned version and run its typecheck/build/tests in CI.
|
|
9
|
+
- Store thread IDs against your own user and tenant records.
|
|
10
|
+
- Proxy browser requests through your backend.
|
|
11
|
+
- Render streaming deltas and tool/approval states explicitly.
|
|
12
|
+
- Persist the last known run ID and recover with `get()` after disconnects.
|
|
13
|
+
|
|
14
|
+
## Operations
|
|
15
|
+
|
|
16
|
+
- Configure Redis for durable state, R2 for files, and QStash/workflows for delayed work.
|
|
17
|
+
- Monitor webhook delivery failures, run failures, rate limits, and spend.
|
|
18
|
+
- Rotate project keys and webhook secrets on a schedule or incident.
|
|
19
|
+
- Test duplicate requests, expired approvals, unauthorized IDs, provider outages, and reconnects.
|
|
20
|
+
|
|
21
|
+
## Local validation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run typecheck
|
|
25
|
+
npm run build
|
|
26
|
+
npm test
|
|
27
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quickstart
|
|
3
|
+
description: Create your first Chusky conversation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install @chusky/sdk
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Configure the server
|
|
13
|
+
|
|
14
|
+
```env
|
|
15
|
+
CHUSKY_API_KEY=chsk_your_project_key
|
|
16
|
+
CHUSKY_BASE_URL=https://chusky.selithub.shop
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Keep `CHUSKY_API_KEY` in a trusted server environment. Never bundle it into browser JavaScript.
|
|
20
|
+
|
|
21
|
+
## Create a thread and run the agent
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { Chusky } from "@chusky/sdk";
|
|
25
|
+
|
|
26
|
+
const chusky = new Chusky({
|
|
27
|
+
apiKey: process.env.CHUSKY_API_KEY!,
|
|
28
|
+
baseUrl: process.env.CHUSKY_BASE_URL,
|
|
29
|
+
userId: "customer_123",
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const thread = await chusky.threads.create({
|
|
33
|
+
metadata: { source: "my-app" },
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const run = await chusky.threads.runs(thread.id).create({
|
|
37
|
+
input: "Prepare a concise renewal brief.",
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
console.log(run.output);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Stream the response
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
for await (const event of chusky.threads.runs(thread.id).stream({
|
|
47
|
+
input: "Prepare a concise renewal brief.",
|
|
48
|
+
})) {
|
|
49
|
+
if (event.type === "run.delta") process.stdout.write(event.text);
|
|
50
|
+
if (event.type === "run.approval_required") {
|
|
51
|
+
console.log("Human approval required", event.approval);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`userId` must be your own application’s authenticated user ID. Chusky uses it to isolate threads, files, memory, approvals, tasks, and connected accounts.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: SDK releases
|
|
3
|
+
description: Validate, version, publish, and track Chusky SDK releases.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The repository includes a guarded GitHub Actions workflow named **Chusky SDK Release**. It is started with **Run workflow** and accepts either an exact semantic version or a release type (`patch`, `minor`, or `major`). The workflow:
|
|
7
|
+
|
|
8
|
+
1. Installs dependencies and runs the root typecheck, app build, SDK build, and SDK tests.
|
|
9
|
+
2. Updates `sdk/package.json` with the requested version.
|
|
10
|
+
3. Commits the version change and creates the `sdk-vX.Y.Z` tag.
|
|
11
|
+
4. Publishes `@chusky/sdk` with npm provenance.
|
|
12
|
+
5. Creates a GitHub release with generated notes for that tag.
|
|
13
|
+
|
|
14
|
+
Configure the repository `NPM_TOKEN` secret before running it. The token needs publish access to `@chusky/sdk`; GitHub Actions uses its own `GITHUB_TOKEN` for the commit, tag, and release. A failed validation stops before the version, tag, or publish steps.
|
|
15
|
+
|
|
16
|
+
For a local preflight, run:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm run sdk:check
|
|
20
|
+
npm run sdk:version -- patch
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The version script accepts `patch`, `minor`, `major`, or an exact `x.y.z` version. Commit the resulting package change only when you intend to release it.
|