devteam-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/LICENSE +21 -0
- package/README.md +355 -0
- package/dist/client.d.ts +163 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +431 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +362 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +39 -0
- package/dist/types.js.map +1 -0
- package/dist/workflows.d.ts +41 -0
- package/dist/workflows.d.ts.map +1 -0
- package/dist/workflows.js +182 -0
- package/dist/workflows.js.map +1 -0
- package/package.json +60 -0
package/dist/client.js
ADDED
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { DevTeamClientOptionsSchema, TaskInputSchema, PlanOptionsSchema } from './types.js';
|
|
2
|
+
import { topologicalSort, planToTaskInputs, buildDAGResult, parallelLimit, withRetry, } from './workflows.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Errors
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export class DevTeamError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
statusCode;
|
|
9
|
+
requestId;
|
|
10
|
+
constructor(message, code, statusCode, requestId) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.statusCode = statusCode;
|
|
14
|
+
this.requestId = requestId;
|
|
15
|
+
this.name = 'DevTeamError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class DevTeamValidationError extends DevTeamError {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message, 'VALIDATION_ERROR');
|
|
21
|
+
this.name = 'DevTeamValidationError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class DevTeamTimeoutError extends DevTeamError {
|
|
25
|
+
constructor(message = 'Request timed out') {
|
|
26
|
+
super(message, 'TIMEOUT');
|
|
27
|
+
this.name = 'DevTeamTimeoutError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// DevTeamClient
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
export class DevTeamClient {
|
|
34
|
+
serverUrl;
|
|
35
|
+
apiKey;
|
|
36
|
+
namespace;
|
|
37
|
+
timeoutMs;
|
|
38
|
+
debug;
|
|
39
|
+
pollingIntervals = new Set();
|
|
40
|
+
constructor(options) {
|
|
41
|
+
const parsed = DevTeamClientOptionsSchema.safeParse(options);
|
|
42
|
+
if (!parsed.success) {
|
|
43
|
+
throw new DevTeamValidationError(`Invalid client options: ${parsed.error.issues.map((i) => i.message).join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
// Strip trailing slash
|
|
46
|
+
this.serverUrl = options.serverUrl.replace(/\/+$/, '');
|
|
47
|
+
this.apiKey = options.apiKey;
|
|
48
|
+
this.namespace = options.namespace ?? 'default';
|
|
49
|
+
this.timeoutMs = options.timeoutMs ?? 30_000;
|
|
50
|
+
this.debug = options.debug ?? false;
|
|
51
|
+
}
|
|
52
|
+
// -------------------------------------------------------------------------
|
|
53
|
+
// Core: createTask
|
|
54
|
+
// -------------------------------------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Create and execute a single AI agent task.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const result = await client.createTask({
|
|
61
|
+
* prompt: 'Review this contract for risks',
|
|
62
|
+
* model: 'opus',
|
|
63
|
+
* queue: 'general-queue',
|
|
64
|
+
* });
|
|
65
|
+
* console.log(result.output);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
async createTask(input) {
|
|
69
|
+
const parsed = TaskInputSchema.safeParse(input);
|
|
70
|
+
if (!parsed.success) {
|
|
71
|
+
throw new DevTeamValidationError(`Invalid task input: ${parsed.error.issues.map((i) => i.message).join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
return this.request('POST', '/api/v1/tasks', {
|
|
74
|
+
...input,
|
|
75
|
+
namespace: this.namespace,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// -------------------------------------------------------------------------
|
|
79
|
+
// Core: createPlan
|
|
80
|
+
// -------------------------------------------------------------------------
|
|
81
|
+
/**
|
|
82
|
+
* Generate an execution plan (DAG of subtasks) for a high-level goal.
|
|
83
|
+
* The planner uses an AI model to decompose the goal into ordered subtasks.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const plan = await client.createPlan('Full legal review of Series A docs', {
|
|
88
|
+
* strategy: 'dag',
|
|
89
|
+
* defaultModel: 'sonnet',
|
|
90
|
+
* });
|
|
91
|
+
* console.log(`Plan has ${plan.subtasks.length} steps`);
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
async createPlan(goal, options) {
|
|
95
|
+
if (!goal || goal.trim().length === 0) {
|
|
96
|
+
throw new DevTeamValidationError('Goal must not be empty');
|
|
97
|
+
}
|
|
98
|
+
if (options) {
|
|
99
|
+
const parsed = PlanOptionsSchema.safeParse(options);
|
|
100
|
+
if (!parsed.success) {
|
|
101
|
+
throw new DevTeamValidationError(`Invalid plan options: ${parsed.error.issues.map((i) => i.message).join(', ')}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return this.request('POST', '/api/v1/plans', {
|
|
105
|
+
goal,
|
|
106
|
+
namespace: this.namespace,
|
|
107
|
+
...options,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// -------------------------------------------------------------------------
|
|
111
|
+
// Core: executeDAG
|
|
112
|
+
// -------------------------------------------------------------------------
|
|
113
|
+
/**
|
|
114
|
+
* Execute a plan as a directed acyclic graph. Subtasks are run in
|
|
115
|
+
* topologically-sorted layers, maximizing parallelism while respecting
|
|
116
|
+
* dependencies.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const plan = await client.createPlan('Analyze portfolio risk');
|
|
121
|
+
* const dagResult = await client.executeDAG(plan);
|
|
122
|
+
* console.log(`Success: ${dagResult.success}, took ${dagResult.totalDurationMs}ms`);
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
async executeDAG(plan) {
|
|
126
|
+
const startTime = Date.now();
|
|
127
|
+
const layers = topologicalSort(plan.subtasks);
|
|
128
|
+
const results = new Map();
|
|
129
|
+
for (const layer of layers) {
|
|
130
|
+
const taskInputs = planToTaskInputs(plan, results);
|
|
131
|
+
const layerResults = await Promise.all(layer.map(async (subtask) => {
|
|
132
|
+
const input = taskInputs.get(subtask.id);
|
|
133
|
+
if (!input) {
|
|
134
|
+
throw new DevTeamError(`Missing task input for subtask "${subtask.id}"`, 'DAG_ERROR');
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const result = await this.createTask(input);
|
|
138
|
+
subtask.status = result.status;
|
|
139
|
+
subtask.result = result;
|
|
140
|
+
return { id: subtask.id, result };
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
const errorResult = {
|
|
144
|
+
taskId: `error-${subtask.id}`,
|
|
145
|
+
status: 'failed',
|
|
146
|
+
model: subtask.model,
|
|
147
|
+
createdAt: new Date().toISOString(),
|
|
148
|
+
completedAt: new Date().toISOString(),
|
|
149
|
+
error: {
|
|
150
|
+
code: 'EXECUTION_ERROR',
|
|
151
|
+
message: err instanceof Error ? err.message : String(err),
|
|
152
|
+
retryable: false,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
subtask.status = 'failed';
|
|
156
|
+
subtask.result = errorResult;
|
|
157
|
+
return { id: subtask.id, result: errorResult };
|
|
158
|
+
}
|
|
159
|
+
}));
|
|
160
|
+
for (const { id, result } of layerResults) {
|
|
161
|
+
results.set(id, result);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
plan.status = 'completed';
|
|
165
|
+
return buildDAGResult(plan, results, startTime);
|
|
166
|
+
}
|
|
167
|
+
// -------------------------------------------------------------------------
|
|
168
|
+
// Core: executeFanOut
|
|
169
|
+
// -------------------------------------------------------------------------
|
|
170
|
+
/**
|
|
171
|
+
* Execute multiple independent tasks in parallel with a concurrency limit.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const results = await client.executeFanOut([
|
|
176
|
+
* { prompt: 'Analyze liability clauses', model: 'sonnet' },
|
|
177
|
+
* { prompt: 'Check IP provisions', model: 'sonnet' },
|
|
178
|
+
* { prompt: 'Review termination terms', model: 'sonnet' },
|
|
179
|
+
* ], 3);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
async executeFanOut(tasks, maxParallel = 5) {
|
|
183
|
+
if (tasks.length === 0) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
for (const task of tasks) {
|
|
187
|
+
const parsed = TaskInputSchema.safeParse(task);
|
|
188
|
+
if (!parsed.success) {
|
|
189
|
+
throw new DevTeamValidationError(`Invalid task input: ${parsed.error.issues.map((i) => i.message).join(', ')}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return parallelLimit(tasks, maxParallel, (task) => this.createTask(task));
|
|
193
|
+
}
|
|
194
|
+
// -------------------------------------------------------------------------
|
|
195
|
+
// HITL: approveTask
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
/**
|
|
198
|
+
* Submit an approval decision for a task awaiting human review.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```typescript
|
|
202
|
+
* await client.approveTask('task-abc123', 'approve');
|
|
203
|
+
* await client.approveTask('task-def456', 'reject', 'Too aggressive strategy');
|
|
204
|
+
* await client.approveTask('task-ghi789', 'modify', 'Use conservative approach instead');
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
async approveTask(taskId, decision, feedback) {
|
|
208
|
+
if (!taskId) {
|
|
209
|
+
throw new DevTeamValidationError('Task ID must not be empty');
|
|
210
|
+
}
|
|
211
|
+
await this.request('POST', `/api/v1/tasks/${taskId}/approve`, {
|
|
212
|
+
decision,
|
|
213
|
+
feedback,
|
|
214
|
+
namespace: this.namespace,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// -------------------------------------------------------------------------
|
|
218
|
+
// HITL: getPendingApprovals
|
|
219
|
+
// -------------------------------------------------------------------------
|
|
220
|
+
/**
|
|
221
|
+
* Retrieve all tasks currently awaiting human approval.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* const approvals = await client.getPendingApprovals();
|
|
226
|
+
* for (const approval of approvals) {
|
|
227
|
+
* console.log(`${approval.taskId}: ${approval.description}`);
|
|
228
|
+
* }
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
async getPendingApprovals() {
|
|
232
|
+
return this.request('GET', '/api/v1/approvals', {
|
|
233
|
+
namespace: this.namespace,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// -------------------------------------------------------------------------
|
|
237
|
+
// Templates: deployTemplate
|
|
238
|
+
// -------------------------------------------------------------------------
|
|
239
|
+
/**
|
|
240
|
+
* Deploy a pre-built workflow template with custom inputs.
|
|
241
|
+
* Returns the workflow ID for tracking.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```typescript
|
|
245
|
+
* const workflowId = await client.deployTemplate('legal-contract-review-v1', {
|
|
246
|
+
* contract_file: './contract.pdf',
|
|
247
|
+
* jurisdiction: 'US-NY',
|
|
248
|
+
* });
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
async deployTemplate(templateId, inputs) {
|
|
252
|
+
if (!templateId) {
|
|
253
|
+
throw new DevTeamValidationError('Template ID must not be empty');
|
|
254
|
+
}
|
|
255
|
+
const response = await this.request('POST', `/api/v1/templates/${templateId}/deploy`, {
|
|
256
|
+
inputs,
|
|
257
|
+
namespace: this.namespace,
|
|
258
|
+
});
|
|
259
|
+
return response.workflowId;
|
|
260
|
+
}
|
|
261
|
+
// -------------------------------------------------------------------------
|
|
262
|
+
// Templates: listTemplates
|
|
263
|
+
// -------------------------------------------------------------------------
|
|
264
|
+
/**
|
|
265
|
+
* List available workflow templates with optional filtering.
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* const templates = await client.listTemplates({ industry: 'legal', category: 'review' });
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
async listTemplates(filter) {
|
|
273
|
+
const params = new URLSearchParams();
|
|
274
|
+
if (filter?.industry)
|
|
275
|
+
params.set('industry', filter.industry);
|
|
276
|
+
if (filter?.category)
|
|
277
|
+
params.set('category', filter.category);
|
|
278
|
+
const query = params.toString();
|
|
279
|
+
const path = `/api/v1/templates${query ? `?${query}` : ''}`;
|
|
280
|
+
return this.request('GET', path);
|
|
281
|
+
}
|
|
282
|
+
// -------------------------------------------------------------------------
|
|
283
|
+
// Monitoring: getTaskStatus
|
|
284
|
+
// -------------------------------------------------------------------------
|
|
285
|
+
/**
|
|
286
|
+
* Get the current status of a task, including progress and logs.
|
|
287
|
+
*
|
|
288
|
+
* @example
|
|
289
|
+
* ```typescript
|
|
290
|
+
* const status = await client.getTaskStatus('task-abc123');
|
|
291
|
+
* console.log(`${status.status} - ${status.progress}%`);
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
async getTaskStatus(taskId) {
|
|
295
|
+
if (!taskId) {
|
|
296
|
+
throw new DevTeamValidationError('Task ID must not be empty');
|
|
297
|
+
}
|
|
298
|
+
return this.request('GET', `/api/v1/tasks/${taskId}/status`);
|
|
299
|
+
}
|
|
300
|
+
// -------------------------------------------------------------------------
|
|
301
|
+
// Monitoring: getWorkers
|
|
302
|
+
// -------------------------------------------------------------------------
|
|
303
|
+
/**
|
|
304
|
+
* List all registered worker nodes and their current state.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* const workers = await client.getWorkers();
|
|
309
|
+
* const online = workers.filter(w => w.online);
|
|
310
|
+
* console.log(`${online.length}/${workers.length} workers online`);
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
async getWorkers() {
|
|
314
|
+
return this.request('GET', '/api/v1/workers');
|
|
315
|
+
}
|
|
316
|
+
// -------------------------------------------------------------------------
|
|
317
|
+
// Monitoring: onTaskComplete
|
|
318
|
+
// -------------------------------------------------------------------------
|
|
319
|
+
/**
|
|
320
|
+
* Subscribe to task completion events via polling. Returns an unsubscribe
|
|
321
|
+
* function.
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* const unsubscribe = client.onTaskComplete((result) => {
|
|
326
|
+
* console.log(`Task ${result.taskId} completed: ${result.status}`);
|
|
327
|
+
* });
|
|
328
|
+
*
|
|
329
|
+
* // Later, stop listening
|
|
330
|
+
* unsubscribe();
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
333
|
+
onTaskComplete(callback) {
|
|
334
|
+
const seenIds = new Set();
|
|
335
|
+
const pollIntervalMs = 2000;
|
|
336
|
+
const interval = setInterval(async () => {
|
|
337
|
+
try {
|
|
338
|
+
const events = await this.request('GET', '/api/v1/events/completions', { namespace: this.namespace });
|
|
339
|
+
for (const result of events) {
|
|
340
|
+
if (!seenIds.has(result.taskId)) {
|
|
341
|
+
seenIds.add(result.taskId);
|
|
342
|
+
callback(result);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// Silently ignore polling errors; they are transient
|
|
348
|
+
if (this.debug) {
|
|
349
|
+
console.error('[devteam-sdk] Polling error (suppressed)');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}, pollIntervalMs);
|
|
353
|
+
this.pollingIntervals.add(interval);
|
|
354
|
+
return () => {
|
|
355
|
+
clearInterval(interval);
|
|
356
|
+
this.pollingIntervals.delete(interval);
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
// -------------------------------------------------------------------------
|
|
360
|
+
// Cleanup
|
|
361
|
+
// -------------------------------------------------------------------------
|
|
362
|
+
/**
|
|
363
|
+
* Disconnect the client and clean up all background polling.
|
|
364
|
+
*/
|
|
365
|
+
disconnect() {
|
|
366
|
+
for (const interval of this.pollingIntervals) {
|
|
367
|
+
clearInterval(interval);
|
|
368
|
+
}
|
|
369
|
+
this.pollingIntervals.clear();
|
|
370
|
+
}
|
|
371
|
+
// -------------------------------------------------------------------------
|
|
372
|
+
// Internal HTTP transport
|
|
373
|
+
// -------------------------------------------------------------------------
|
|
374
|
+
async request(method, path, body) {
|
|
375
|
+
const url = `${this.serverUrl}${path}`;
|
|
376
|
+
const controller = new AbortController();
|
|
377
|
+
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
378
|
+
if (this.debug) {
|
|
379
|
+
console.debug(`[devteam-sdk] ${method} ${url}`);
|
|
380
|
+
}
|
|
381
|
+
try {
|
|
382
|
+
const headers = {
|
|
383
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
384
|
+
'Content-Type': 'application/json',
|
|
385
|
+
'X-DevTeam-Namespace': this.namespace,
|
|
386
|
+
'X-DevTeam-SDK': '@devteam/sdk@0.1.0',
|
|
387
|
+
};
|
|
388
|
+
const fetchOptions = {
|
|
389
|
+
method,
|
|
390
|
+
headers,
|
|
391
|
+
signal: controller.signal,
|
|
392
|
+
};
|
|
393
|
+
if (body && method !== 'GET') {
|
|
394
|
+
fetchOptions.body = JSON.stringify(body);
|
|
395
|
+
}
|
|
396
|
+
const response = await fetch(url, fetchOptions);
|
|
397
|
+
if (!response.ok) {
|
|
398
|
+
const errorBody = await response.text().catch(() => '');
|
|
399
|
+
let errorData = {};
|
|
400
|
+
try {
|
|
401
|
+
errorData = JSON.parse(errorBody);
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
// Not JSON, use raw text
|
|
405
|
+
}
|
|
406
|
+
throw new DevTeamError(errorData.message ?? `HTTP ${response.status}: ${response.statusText}`, errorData.code ?? `HTTP_${response.status}`, response.status, errorData.requestId);
|
|
407
|
+
}
|
|
408
|
+
// Handle 204 No Content
|
|
409
|
+
if (response.status === 204) {
|
|
410
|
+
return undefined;
|
|
411
|
+
}
|
|
412
|
+
const json = (await response.json());
|
|
413
|
+
if (json.error) {
|
|
414
|
+
throw new DevTeamError(json.error.message, json.error.code, response.status, json.requestId);
|
|
415
|
+
}
|
|
416
|
+
return json.data;
|
|
417
|
+
}
|
|
418
|
+
catch (err) {
|
|
419
|
+
if (err instanceof DevTeamError)
|
|
420
|
+
throw err;
|
|
421
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
422
|
+
throw new DevTeamTimeoutError(`Request to ${method} ${path} timed out after ${this.timeoutMs}ms`);
|
|
423
|
+
}
|
|
424
|
+
throw new DevTeamError(err instanceof Error ? err.message : String(err), 'NETWORK_ERROR');
|
|
425
|
+
}
|
|
426
|
+
finally {
|
|
427
|
+
clearTimeout(timeout);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
//# 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/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { DevTeamClient } from './client.js';
|
|
2
|
+
export { DevTeamError, DevTeamValidationError, DevTeamTimeoutError, } from './client.js';
|
|
3
|
+
export type { DevTeamClientOptions, TaskInput, TaskResult, TaskStatus, TaskState, TaskPriority, TaskError, TaskLog, TokenUsage, RetryPolicy, ModelId, Plan, PlanOptions, PlanSubtask, DAGResult, Approval, ApprovalDecision, Template, TemplateFilter, TemplateInputField, Worker, ApiResponse, PaginatedResponse, TaskCompleteCallback, EventSubscription, } from './types.js';
|
|
4
|
+
export { TaskInputSchema, PlanOptionsSchema, DevTeamClientOptionsSchema, } from './types.js';
|
|
5
|
+
export { topologicalSort, planToTaskInputs, aggregateUsage, isPlanComplete, buildDAGResult, chunk, parallelLimit, withRetry, } from './workflows.js';
|
|
6
|
+
export type { RetryConfig } from './workflows.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAEV,oBAAoB,EAGpB,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,OAAO,EAGP,IAAI,EACJ,WAAW,EACX,WAAW,EACX,SAAS,EAGT,QAAQ,EACR,gBAAgB,EAGhB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAGlB,MAAM,EAGN,WAAW,EACX,iBAAiB,EAGjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,cAAc,EACd,KAAK,EACL,aAAa,EACb,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// @devteam/sdk - Orchestrate AI agent swarms with Temporal in 10 lines of code
|
|
2
|
+
//
|
|
3
|
+
// Usage:
|
|
4
|
+
// import { DevTeamClient } from '@devteam/sdk';
|
|
5
|
+
//
|
|
6
|
+
// const client = new DevTeamClient({
|
|
7
|
+
// serverUrl: 'https://devteam.marsala.dev',
|
|
8
|
+
// apiKey: 'dt_...',
|
|
9
|
+
// });
|
|
10
|
+
// Client
|
|
11
|
+
export { DevTeamClient } from './client.js';
|
|
12
|
+
export { DevTeamError, DevTeamValidationError, DevTeamTimeoutError, } from './client.js';
|
|
13
|
+
// Zod schemas (for runtime validation in consumer code)
|
|
14
|
+
export { TaskInputSchema, PlanOptionsSchema, DevTeamClientOptionsSchema, } from './types.js';
|
|
15
|
+
// Workflow utilities (advanced usage)
|
|
16
|
+
export { topologicalSort, planToTaskInputs, aggregateUsage, isPlanComplete, buildDAGResult, chunk, parallelLimit, withRetry, } from './workflows.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,SAAS;AACT,kDAAkD;AAClD,EAAE;AACF,uCAAuC;AACvC,gDAAgD;AAChD,wBAAwB;AACxB,QAAQ;AAER,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AA8CrB,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,sCAAsC;AACtC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,cAAc,EACd,KAAK,EACL,aAAa,EACb,SAAS,GACV,MAAM,gBAAgB,CAAC"}
|