@qodo/sdk 0.8.0 → 0.10.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/.claude/skills/qodo-agent/SKILL.md +91 -3
- package/.claude/skills/qodo-agent/assets/programmatic-agent.ts +24 -8
- package/.claude/skills/qodo-agent/references/common-issues.md +2 -1
- package/README.md +14 -0
- package/dist/bin/install-skill.js +0 -0
- package/dist/clients/index.d.ts +2 -0
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +1 -0
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/tools/ToolsClient.d.ts +39 -0
- package/dist/clients/tools/ToolsClient.d.ts.map +1 -0
- package/dist/clients/tools/ToolsClient.js +95 -0
- package/dist/clients/tools/ToolsClient.js.map +1 -0
- package/dist/clients/tools/index.d.ts +4 -0
- package/dist/clients/tools/index.d.ts.map +1 -0
- package/dist/clients/tools/index.js +2 -0
- package/dist/clients/tools/index.js.map +1 -0
- package/dist/clients/tools/types.d.ts +14 -0
- package/dist/clients/tools/types.d.ts.map +1 -0
- package/dist/clients/tools/types.js +2 -0
- package/dist/clients/tools/types.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/sdk/QodoSDK.d.ts +3 -1
- package/dist/sdk/QodoSDK.d.ts.map +1 -1
- package/dist/sdk/QodoSDK.js +4 -1
- package/dist/sdk/QodoSDK.js.map +1 -1
- package/dist/sdk/events.d.ts +8 -1
- package/dist/sdk/events.d.ts.map +1 -1
- package/dist/sdk/events.js +1 -0
- package/dist/sdk/events.js.map +1 -1
- package/dist/sdk/pipeline/PipelineBuilder.d.ts +21 -3
- package/dist/sdk/pipeline/PipelineBuilder.d.ts.map +1 -1
- package/dist/sdk/pipeline/PipelineBuilder.js +40 -2
- package/dist/sdk/pipeline/PipelineBuilder.js.map +1 -1
- package/dist/sdk/pipeline/PipelineRunner.d.ts.map +1 -1
- package/dist/sdk/pipeline/PipelineRunner.js +141 -25
- package/dist/sdk/pipeline/PipelineRunner.js.map +1 -1
- package/dist/sdk/pipeline/compiler.d.ts.map +1 -1
- package/dist/sdk/pipeline/compiler.js +4 -2
- package/dist/sdk/pipeline/compiler.js.map +1 -1
- package/dist/sdk/pipeline/index.d.ts +1 -1
- package/dist/sdk/pipeline/index.d.ts.map +1 -1
- package/dist/sdk/pipeline/index.js.map +1 -1
- package/dist/sdk/pipeline/types.d.ts +21 -3
- package/dist/sdk/pipeline/types.d.ts.map +1 -1
- package/dist/tracing/PipelineTracer.d.ts.map +1 -1
- package/dist/tracing/PipelineTracer.js +18 -2
- package/dist/tracing/PipelineTracer.js.map +1 -1
- package/dist/tracing/pipelineHelpers.d.ts +10 -1
- package/dist/tracing/pipelineHelpers.d.ts.map +1 -1
- package/dist/tracing/pipelineHelpers.js +105 -21
- package/dist/tracing/pipelineHelpers.js.map +1 -1
- package/package.json +2 -2
|
@@ -46,6 +46,10 @@ Use this skill when working with `@qodo/sdk` to build AI-powered agents. This sk
|
|
|
46
46
|
| `sdkPipeline()` | Build multi-step agent workflows |
|
|
47
47
|
| `runPipeline()` | Execute a pipeline with an SDK instance |
|
|
48
48
|
| `PipelineExecutionError` | Pipeline step failure error |
|
|
49
|
+
| `.step()` | Add a sequential step with typed state threading |
|
|
50
|
+
| `.parallel()` | Add a group of steps that execute concurrently |
|
|
51
|
+
| `.gate()` | Pipeline-level barrier — halts subsequent entries when false |
|
|
52
|
+
| `.branch()` | Pipeline-level if/else fork with sub-pipeline paths |
|
|
49
53
|
|
|
50
54
|
### Tool Middleware
|
|
51
55
|
|
|
@@ -91,8 +95,9 @@ Use this skill when working with `@qodo/sdk` to build AI-powered agents. This sk
|
|
|
91
95
|
|
|
92
96
|
| Export | Purpose |
|
|
93
97
|
|--------|---------|
|
|
94
|
-
| `QodoInfoClient` | Backend info (models, capabilities) |
|
|
98
|
+
| `QodoInfoClient` | Backend info (models, capabilities, rate limits) |
|
|
95
99
|
| `QodoSessionsClient` | Session history management |
|
|
100
|
+
| `QodoToolsClient` | Tool discovery (built-in + backend tools) |
|
|
96
101
|
|
|
97
102
|
### Errors
|
|
98
103
|
|
|
@@ -493,8 +498,9 @@ const pipeline = sdkPipeline<{ repo: string }>()
|
|
|
493
498
|
const r = await run('lint', { args: { path: state.repo } });
|
|
494
499
|
return { lintOutput: r.result.final_output };
|
|
495
500
|
})
|
|
501
|
+
// Gate: only continue review if lint produced output
|
|
502
|
+
.gate((state) => !!state.lintOutput)
|
|
496
503
|
.step('review', async ({ state, run }) => {
|
|
497
|
-
// TypeScript knows state has `repo` + `lintOutput`
|
|
498
504
|
const r = await run('review', {
|
|
499
505
|
extraInstructions: `Lint results:\n${state.lintOutput}`,
|
|
500
506
|
});
|
|
@@ -509,7 +515,37 @@ console.log(result.steps); // Step logs with timing
|
|
|
509
515
|
await sdk.dispose();
|
|
510
516
|
```
|
|
511
517
|
|
|
512
|
-
Features: typed state threading, `.parallel([...])`,
|
|
518
|
+
Features: typed state threading, `.parallel([...])`, `.gate()` (pipeline barriers), `.branch()` (if/else forks), error strategies (`'skip'`, `'throw'`, custom recovery).
|
|
519
|
+
|
|
520
|
+
### Pattern 8b: Pipeline Branches
|
|
521
|
+
|
|
522
|
+
```typescript
|
|
523
|
+
import { QodoSDK, sdkPipeline, runPipeline } from '@qodo/sdk';
|
|
524
|
+
|
|
525
|
+
const sdk = new QodoSDK({ autoApproveTools: true });
|
|
526
|
+
|
|
527
|
+
const pipeline = sdkPipeline<{ fileCount: number }>()
|
|
528
|
+
.branch(
|
|
529
|
+
(state) => state.fileCount > 20,
|
|
530
|
+
{
|
|
531
|
+
true: (b) => b.step('deep', async ({ run }) => {
|
|
532
|
+
const r = await run('analyze-deep');
|
|
533
|
+
return { analysis: r.result.final_output };
|
|
534
|
+
}),
|
|
535
|
+
false: (b) => b.step('quick', async ({ run }) => {
|
|
536
|
+
const r = await run('summarize');
|
|
537
|
+
return { analysis: r.result.final_output };
|
|
538
|
+
}),
|
|
539
|
+
},
|
|
540
|
+
{ name: 'size-check' },
|
|
541
|
+
)
|
|
542
|
+
.step('report', async ({ state }) => ({
|
|
543
|
+
report: `${state.fileCount} files: ${state.analysis}`,
|
|
544
|
+
}))
|
|
545
|
+
.build();
|
|
546
|
+
|
|
547
|
+
await sdk.dispose();
|
|
548
|
+
```
|
|
513
549
|
|
|
514
550
|
### Pattern 9: Dry Run Mode
|
|
515
551
|
|
|
@@ -653,6 +689,57 @@ await sdk.dispose();
|
|
|
653
689
|
|
|
654
690
|
No compile-time OTel dependency — install `@opentelemetry/api` as optional peer dep.
|
|
655
691
|
|
|
692
|
+
### Pattern 15: Backend Info Client (Standalone)
|
|
693
|
+
|
|
694
|
+
```typescript
|
|
695
|
+
import { QodoInfoClient } from '@qodo/sdk';
|
|
696
|
+
|
|
697
|
+
// Standalone — no run/stream needed
|
|
698
|
+
const info = new QodoInfoClient();
|
|
699
|
+
const things = await info.getThings();
|
|
700
|
+
console.log(things.available_models); // ['gpt-4', 'gpt-4o', ...]
|
|
701
|
+
console.log(things.default_model); // 'gpt-4o'
|
|
702
|
+
console.log(things.session_id); // new backend session ID
|
|
703
|
+
console.log(things.rate_limit); // { remaining, reset, limit }
|
|
704
|
+
|
|
705
|
+
// Convenience
|
|
706
|
+
const models = await info.getAvailableModels();
|
|
707
|
+
|
|
708
|
+
// Via SDK instance
|
|
709
|
+
const sdk = new QodoSDK();
|
|
710
|
+
const defaultModel = await sdk.info.getDefaultModel();
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
### Pattern 16: Tool Discovery Client (Standalone)
|
|
714
|
+
|
|
715
|
+
```typescript
|
|
716
|
+
import { QodoToolsClient } from '@qodo/sdk';
|
|
717
|
+
|
|
718
|
+
// Standalone — no run/stream needed
|
|
719
|
+
const client = new QodoToolsClient();
|
|
720
|
+
|
|
721
|
+
// List all tools (built-in + backend)
|
|
722
|
+
const tools = await client.getTools();
|
|
723
|
+
for (const tool of tools) {
|
|
724
|
+
console.log(`${tool.server}.${tool.name} (${tool.serverType})`);
|
|
725
|
+
// e.g. "filesystem.read_files (builtin)"
|
|
726
|
+
// e.g. "sequential_thinking.sequential_thinking (backend)"
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
// Group by server
|
|
730
|
+
const byServer = await client.getToolsByServer();
|
|
731
|
+
console.log(Object.keys(byServer));
|
|
732
|
+
// ['filesystem', 'git', 'ripgrep', 'shell', 'sequential_thinking', ...]
|
|
733
|
+
|
|
734
|
+
// Filter by type
|
|
735
|
+
const backendOnly = tools.filter(t => t.serverType === 'backend');
|
|
736
|
+
const builtinOnly = tools.filter(t => t.serverType === 'builtin');
|
|
737
|
+
|
|
738
|
+
// Via SDK instance
|
|
739
|
+
const sdk = new QodoSDK();
|
|
740
|
+
const allTools = await sdk.tools.getTools();
|
|
741
|
+
```
|
|
742
|
+
|
|
656
743
|
---
|
|
657
744
|
|
|
658
745
|
## Zod Schema Patterns
|
|
@@ -876,6 +963,7 @@ z.object({
|
|
|
876
963
|
|
|
877
964
|
| Feature | Doc |
|
|
878
965
|
|---------|-----|
|
|
966
|
+
| API Reference (Clients, Options, Types) | [docs/api-reference.md](../../../docs/api-reference.md) |
|
|
879
967
|
| Pipeline DSL | [docs/pipeline.md](../../../docs/pipeline.md) |
|
|
880
968
|
| Dry Run Mode | [docs/dry-run.md](../../../docs/dry-run.md) |
|
|
881
969
|
| Tool Middleware | [docs/tool-middleware.md](../../../docs/tool-middleware.md) |
|
|
@@ -319,7 +319,7 @@ async function main() {
|
|
|
319
319
|
// @ts-ignore
|
|
320
320
|
console.log('Response:', promptResult.final_output);
|
|
321
321
|
// -------------------------------------------------------------------------
|
|
322
|
-
// Example 4: Pipeline (multi-step workflow)
|
|
322
|
+
// Example 4: Pipeline (multi-step workflow with gates and branches)
|
|
323
323
|
// -------------------------------------------------------------------------
|
|
324
324
|
console.log('\n\n--- Pipeline example ---\n');
|
|
325
325
|
|
|
@@ -328,18 +328,34 @@ async function main() {
|
|
|
328
328
|
const r = await run('analyze', { args: { path: state.path } });
|
|
329
329
|
return { analysis: r.result.structured_output };
|
|
330
330
|
})
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
331
|
+
// Gate: only continue if analysis produced results
|
|
332
|
+
.gate((state) => !!state.analysis, { name: 'has-analysis' })
|
|
333
|
+
// Branch: choose different summary strategies based on score
|
|
334
|
+
.branch(
|
|
335
|
+
(state) => (state.analysis as any)?.score > 80,
|
|
336
|
+
{
|
|
337
|
+
true: (b) => b.step('brief-summary', async ({ state, run }) => {
|
|
338
|
+
const r = await run('', {
|
|
339
|
+
extraInstructions: `High quality code (score: ${(state.analysis as any)?.score}). Brief summary: ${JSON.stringify(state.analysis)}`,
|
|
340
|
+
});
|
|
341
|
+
return { summary: r.result.final_output };
|
|
342
|
+
}),
|
|
343
|
+
false: (b) => b.step('detailed-summary', async ({ state, run }) => {
|
|
344
|
+
const r = await run('', {
|
|
345
|
+
extraInstructions: `Code needs improvement. Detailed summary with recommendations: ${JSON.stringify(state.analysis)}`,
|
|
346
|
+
});
|
|
347
|
+
return { summary: r.result.final_output };
|
|
348
|
+
}),
|
|
349
|
+
},
|
|
350
|
+
{ name: 'quality-check' },
|
|
351
|
+
)
|
|
337
352
|
.build();
|
|
338
353
|
|
|
339
354
|
const pipelineResult = await runPipeline(sdk, pipeline, { path: './src' });
|
|
340
355
|
console.log('Pipeline summary:', pipelineResult.state.summary);
|
|
341
356
|
for (const log of pipelineResult.steps) {
|
|
342
|
-
|
|
357
|
+
const branch = log.branchTaken ? ` (branch: ${log.branchTaken})` : '';
|
|
358
|
+
console.log(` ${log.name}: ${log.status}${branch} (${log.durationMs}ms)`);
|
|
343
359
|
}
|
|
344
360
|
|
|
345
361
|
// -------------------------------------------------------------------------
|
|
@@ -433,11 +433,12 @@ PipelineExecutionError: Step "lint" failed: ...
|
|
|
433
433
|
|
|
434
434
|
**Cause:** A pipeline step threw an error and no error strategy was set.
|
|
435
435
|
|
|
436
|
-
**Solution:** Add error handling per step:
|
|
436
|
+
**Solution:** Add error handling per step, or use gates to guard steps:
|
|
437
437
|
|
|
438
438
|
```typescript
|
|
439
439
|
sdkPipeline()
|
|
440
440
|
.step('lint', lintFn, { onError: 'skip' }) // Skip on failure
|
|
441
|
+
.gate((state) => !!state.lintOutput) // Gate: halt if no lint output
|
|
441
442
|
.step('review', reviewFn, {
|
|
442
443
|
onError: (error, state) => ({ fallback: true }), // Custom recovery
|
|
443
444
|
})
|
package/README.md
CHANGED
|
@@ -135,6 +135,20 @@ choco install ripgrep
|
|
|
135
135
|
|
|
136
136
|
If ripgrep is not available, the `ripgrep_search` tool will be unavailable and the SDK will log a warning. All other functionality works normally.
|
|
137
137
|
|
|
138
|
+
## Claude Code Skill
|
|
139
|
+
|
|
140
|
+
The SDK ships with a Claude Code skill that provides context-aware assistance when building Qodo agents. Install it with:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Install to your project
|
|
144
|
+
npx @qodo/sdk install-skill
|
|
145
|
+
|
|
146
|
+
# Or install globally (available in all projects)
|
|
147
|
+
npx @qodo/sdk install-skill --global
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Once installed, use `/qodo-agent` in Claude Code to get help with agent configuration, SDK APIs, and common patterns.
|
|
151
|
+
|
|
138
152
|
## Documentation
|
|
139
153
|
|
|
140
154
|
| Guide | Description |
|
|
File without changes
|
package/dist/clients/index.d.ts
CHANGED
|
@@ -5,4 +5,6 @@
|
|
|
5
5
|
export type { QodoInfoClientOptions, QodoBackendInfo, BaseUrlSource, RateLimitInfo } from './info/index.js';
|
|
6
6
|
export { QodoSessionsClient } from './sessions/index.js';
|
|
7
7
|
export type { QodoSessionsClientOptions, RecentSession, SessionHistory, SessionMessage } from './sessions/index.js';
|
|
8
|
+
export { QodoToolsClient } from './tools/index.js';
|
|
9
|
+
export type { QodoToolsClientOptions, QodoToolInfo } from './tools/index.js';
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/clients/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { QodoSDKOptions } from '../../sdk/QodoSDK.js';
|
|
2
|
+
import type { QodoToolInfo } from './types.js';
|
|
3
|
+
export type QodoToolsClientOptions = {
|
|
4
|
+
/** baseUrl override passed to the SDK (options.backend.baseUrl) */
|
|
5
|
+
baseUrlOverride?: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* QodoToolsClient
|
|
9
|
+
*
|
|
10
|
+
* Public-facing SDK facade for discovering available tools
|
|
11
|
+
* (built-in MCP servers + backend-provided tools).
|
|
12
|
+
*
|
|
13
|
+
* Follows the same pattern as QodoInfoClient — bootstraps the backend
|
|
14
|
+
* connection on first call, then returns normalized tool info.
|
|
15
|
+
*/
|
|
16
|
+
export declare class QodoToolsClient {
|
|
17
|
+
private readonly opts;
|
|
18
|
+
private cache?;
|
|
19
|
+
constructor(opts?: QodoToolsClientOptions);
|
|
20
|
+
private ensureInitialized;
|
|
21
|
+
private buildCatalog;
|
|
22
|
+
/**
|
|
23
|
+
* Returns all available tools (built-in + backend).
|
|
24
|
+
*/
|
|
25
|
+
getTools(opts?: {
|
|
26
|
+
forceRefresh?: boolean;
|
|
27
|
+
}): Promise<QodoToolInfo[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns tools grouped by server id.
|
|
30
|
+
*/
|
|
31
|
+
getToolsByServer(opts?: {
|
|
32
|
+
forceRefresh?: boolean;
|
|
33
|
+
}): Promise<Record<string, QodoToolInfo[]>>;
|
|
34
|
+
/**
|
|
35
|
+
* Helper for SDK integration: build tools client options from SDK options.
|
|
36
|
+
*/
|
|
37
|
+
static fromSdkOptions(sdkOpts: QodoSDKOptions): QodoToolsClient;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ToolsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolsClient.d.ts","sourceRoot":"","sources":["../../../src/clients/tools/ToolsClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,KAAK,CAAC,CAAiB;gBAEF,IAAI,GAAE,sBAA2B;YAEhD,iBAAiB;YASjB,YAAY;IA0C1B;;OAEG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1E;;OAEG;IACG,gBAAgB,CAAC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAUlG;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe;CAGhE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { BackendBootstrap } from '../../sdk/bootstrap.js';
|
|
2
|
+
import { ServerData } from '../../session/index.js';
|
|
3
|
+
import { BuiltInServers } from '../../mcp/builtinServers.js';
|
|
4
|
+
/**
|
|
5
|
+
* QodoToolsClient
|
|
6
|
+
*
|
|
7
|
+
* Public-facing SDK facade for discovering available tools
|
|
8
|
+
* (built-in MCP servers + backend-provided tools).
|
|
9
|
+
*
|
|
10
|
+
* Follows the same pattern as QodoInfoClient — bootstraps the backend
|
|
11
|
+
* connection on first call, then returns normalized tool info.
|
|
12
|
+
*/
|
|
13
|
+
export class QodoToolsClient {
|
|
14
|
+
opts;
|
|
15
|
+
cache;
|
|
16
|
+
constructor(opts = {}) {
|
|
17
|
+
this.opts = opts;
|
|
18
|
+
}
|
|
19
|
+
async ensureInitialized(forceRefresh = false) {
|
|
20
|
+
if (forceRefresh || !this.cache) {
|
|
21
|
+
const bootstrap = new BackendBootstrap({ baseUrlOverride: this.opts.baseUrlOverride });
|
|
22
|
+
await bootstrap.init();
|
|
23
|
+
await ServerData.init(this.opts.baseUrlOverride);
|
|
24
|
+
this.cache = await this.buildCatalog();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async buildCatalog() {
|
|
28
|
+
const catalog = [];
|
|
29
|
+
// Built-in servers
|
|
30
|
+
const builtIn = new BuiltInServers();
|
|
31
|
+
const servers = await builtIn.getServers();
|
|
32
|
+
for (const server of servers) {
|
|
33
|
+
const instance = builtIn.getBuiltInServer(server.id);
|
|
34
|
+
if (!instance)
|
|
35
|
+
continue;
|
|
36
|
+
try {
|
|
37
|
+
await instance.initialize();
|
|
38
|
+
const { tools } = await instance.listTools();
|
|
39
|
+
for (const tool of tools) {
|
|
40
|
+
catalog.push({
|
|
41
|
+
server: server.id,
|
|
42
|
+
serverType: 'builtin',
|
|
43
|
+
name: tool.name,
|
|
44
|
+
description: tool.description,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch { /* best-effort: skip servers that fail to initialize */ }
|
|
49
|
+
}
|
|
50
|
+
// Backend tools from get-things
|
|
51
|
+
try {
|
|
52
|
+
const serverData = ServerData.getInstance();
|
|
53
|
+
const backendTools = serverData.getMCPTools();
|
|
54
|
+
for (const [serverId, tools] of Object.entries(backendTools)) {
|
|
55
|
+
for (const tool of tools) {
|
|
56
|
+
catalog.push({
|
|
57
|
+
server: serverId,
|
|
58
|
+
serverType: 'backend',
|
|
59
|
+
name: tool.name,
|
|
60
|
+
description: tool.description,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch { /* best-effort: backend tools may not be available */ }
|
|
66
|
+
return catalog;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Returns all available tools (built-in + backend).
|
|
70
|
+
*/
|
|
71
|
+
async getTools(opts) {
|
|
72
|
+
await this.ensureInitialized(!!opts?.forceRefresh);
|
|
73
|
+
return [...this.cache];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Returns tools grouped by server id.
|
|
77
|
+
*/
|
|
78
|
+
async getToolsByServer(opts) {
|
|
79
|
+
const tools = await this.getTools(opts);
|
|
80
|
+
const grouped = {};
|
|
81
|
+
for (const tool of tools) {
|
|
82
|
+
if (!grouped[tool.server])
|
|
83
|
+
grouped[tool.server] = [];
|
|
84
|
+
grouped[tool.server].push(tool);
|
|
85
|
+
}
|
|
86
|
+
return grouped;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Helper for SDK integration: build tools client options from SDK options.
|
|
90
|
+
*/
|
|
91
|
+
static fromSdkOptions(sdkOpts) {
|
|
92
|
+
return new QodoToolsClient({ baseUrlOverride: sdkOpts?.backend?.baseUrl });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=ToolsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolsClient.js","sourceRoot":"","sources":["../../../src/clients/tools/ToolsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes a single tool available on an MCP server.
|
|
3
|
+
*/
|
|
4
|
+
export type QodoToolInfo = {
|
|
5
|
+
/** Server that owns this tool (e.g. "filesystem", "git", "shell"). */
|
|
6
|
+
server: string;
|
|
7
|
+
/** Server type: builtin or backend. */
|
|
8
|
+
serverType: 'builtin' | 'backend';
|
|
9
|
+
/** Tool name as used in tool calls. */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Human-readable description of the tool. */
|
|
12
|
+
description?: string;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/clients/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/clients/tools/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { QodoSDK } from './sdk/index.js';
|
|
2
2
|
export type { QodoSDKOptions, QodoSDKRunResult, QodoSDKStreamEvent, QodoSDKRunOptions, QodoSDKLogger, } from './sdk/index.js';
|
|
3
3
|
export { SdkEventType, SDK_PROTOCOL_V2, matchSdkEvent, createSdkEvent, getSdkVersion, } from './sdk/events.js';
|
|
4
|
-
export type { QodoSdkEvent, SdkEventTypeName, SdkEventEnvelope, SdkInitEvent, SdkRunStartedEvent, SdkMessageDeltaEvent, SdkMessageFullEvent, SdkProgressEvent, SdkToolRequestedEvent, SdkToolApprovedEvent, SdkToolExecutedEvent, SdkErrorEvent, SdkFinalEvent, SdkEventHandlers, SdkPipelineStartedEvent, SdkPipelineStepStartedEvent, SdkPipelineStepCompletedEvent, SdkPipelineGateEvaluatedEvent, SdkPipelineCompletedEvent, SdkPipelineErrorEvent, } from './sdk/events.js';
|
|
4
|
+
export type { QodoSdkEvent, SdkEventTypeName, SdkEventEnvelope, SdkInitEvent, SdkRunStartedEvent, SdkMessageDeltaEvent, SdkMessageFullEvent, SdkProgressEvent, SdkToolRequestedEvent, SdkToolApprovedEvent, SdkToolExecutedEvent, SdkErrorEvent, SdkFinalEvent, SdkEventHandlers, SdkPipelineStartedEvent, SdkPipelineStepStartedEvent, SdkPipelineStepCompletedEvent, SdkPipelineGateEvaluatedEvent, SdkPipelineBranchEvaluatedEvent, SdkPipelineCompletedEvent, SdkPipelineErrorEvent, } from './sdk/events.js';
|
|
5
5
|
export { sdkAgent, sdkCommand, sdkArgs } from './sdk/builders.js';
|
|
6
6
|
export { zodOutputSchema, zodArgsSchema, zCoerce, zJsonValue, zJsonAny, parseArgsWithSchema, QodoSchemaError, } from './sdk/schemas.js';
|
|
7
7
|
export { z } from 'zod/v3';
|
|
@@ -9,6 +9,8 @@ export { QodoInfoClient } from './clients/info/index.js';
|
|
|
9
9
|
export type { QodoBackendInfo } from './clients/info/types.js';
|
|
10
10
|
export { QodoSessionsClient } from './clients/sessions/index.js';
|
|
11
11
|
export type { RecentSession, SessionHistory, SessionMessage, } from './clients/sessions/types.js';
|
|
12
|
+
export { QodoToolsClient } from './clients/tools/index.js';
|
|
13
|
+
export type { QodoToolInfo } from './clients/tools/types.js';
|
|
12
14
|
export { findNearestAgentConfig } from './sdk/discovery.js';
|
|
13
15
|
export { buildDefaultSdkAgentConfig } from './sdk/defaults.js';
|
|
14
16
|
export { QodoTracker } from './tracking/index.js';
|
|
@@ -19,7 +21,7 @@ export type { ToolCall, AIMessageInput, ToolMessageInput } from './messages/inde
|
|
|
19
21
|
export { convertMessagesToOpenAI } from './messages/index.js';
|
|
20
22
|
export type { OpenAIChatMessage } from './messages/index.js';
|
|
21
23
|
export { sdkPipeline, PipelineBuilder, Pipeline, runPipeline, PipelineExecutionError } from './sdk/pipeline/index.js';
|
|
22
|
-
export type { StepFn, StepContext, GateFn, ErrorStrategy, PipelineResult, StepLog, StepOptions, PipelineEventCallback, } from './sdk/pipeline/index.js';
|
|
24
|
+
export type { StepFn, StepContext, GateFn, ErrorStrategy, PipelineGate, PipelineBranch, PipelineResult, StepLog, StepOptions, PipelineEventCallback, } from './sdk/pipeline/index.js';
|
|
23
25
|
export { compileDeclarativePipeline, DeclarativePipelineValidationError } from './sdk/pipeline/index.js';
|
|
24
26
|
export type { DeclarativePipelineStep, DeclarativePipeline } from './sdk/pipeline/index.js';
|
|
25
27
|
export type { ToolMiddleware } from './sdk/middleware.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,9 +8,10 @@ export { zodOutputSchema, zodArgsSchema, zCoerce, zJsonValue, zJsonAny, parseArg
|
|
|
8
8
|
// Re-export zod for convenience and type compatibility
|
|
9
9
|
// Users can import { z } from '@qodo/sdk' to ensure compatibility with SDK schema functions
|
|
10
10
|
export { z } from 'zod/v3';
|
|
11
|
-
// Info &
|
|
11
|
+
// Info, Sessions & Tools clients
|
|
12
12
|
export { QodoInfoClient } from './clients/info/index.js';
|
|
13
13
|
export { QodoSessionsClient } from './clients/sessions/index.js';
|
|
14
|
+
export { QodoToolsClient } from './clients/tools/index.js';
|
|
14
15
|
// Agent discovery & defaults
|
|
15
16
|
export { findNearestAgentConfig } from './sdk/discovery.js';
|
|
16
17
|
export { buildDefaultSdkAgentConfig } from './sdk/defaults.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AASzC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AASzC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AA0BzB,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,uDAAuD;AACvD,4FAA4F;AAC5F,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,iCAAiC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,6BAA6B;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAYlD,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AActH,uBAAuB;AACvB,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAKzG,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAExG,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGjG,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlF,+BAA+B;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/sdk/QodoSDK.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QodoInfoClient, QodoSessionsClient } from '../clients/index.js';
|
|
1
|
+
import { QodoInfoClient, QodoSessionsClient, QodoToolsClient } from '../clients/index.js';
|
|
2
2
|
import { AIAssistantConfig, MCPConfig } from '../parser/types.js';
|
|
3
3
|
import { type QodoSdkEvent, SdkEventType } from './events.js';
|
|
4
4
|
export type QodoSDKLogger = {
|
|
@@ -125,6 +125,8 @@ export declare class QodoSDK {
|
|
|
125
125
|
readonly info: QodoInfoClient;
|
|
126
126
|
/** Session history facade */
|
|
127
127
|
readonly sessions: QodoSessionsClient;
|
|
128
|
+
/** Tool discovery facade */
|
|
129
|
+
readonly tools: QodoToolsClient;
|
|
128
130
|
private initialized;
|
|
129
131
|
private readonly env;
|
|
130
132
|
private readonly logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QodoSDK.d.ts","sourceRoot":"","sources":["../../src/sdk/QodoSDK.ts"],"names":[],"mappings":"AAaA,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"QodoSDK.d.ts","sourceRoot":"","sources":["../../src/sdk/QodoSDK.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/QodoSDK.js
CHANGED
|
@@ -9,7 +9,7 @@ import { AgentAPI } from '../api/agent.js';
|
|
|
9
9
|
import { AgentRunnerCore } from './runner/index.js';
|
|
10
10
|
import { BackendBootstrap } from './bootstrap.js';
|
|
11
11
|
import { AuthProvider } from '../auth/index.js';
|
|
12
|
-
import { QodoInfoClient, QodoSessionsClient } from '../clients/index.js';
|
|
12
|
+
import { QodoInfoClient, QodoSessionsClient, QodoToolsClient } from '../clients/index.js';
|
|
13
13
|
import { canonicalizePathSync, extractSetFlags } from '../utils/index.js';
|
|
14
14
|
import { extractProgress } from './runner/progress.js';
|
|
15
15
|
import { toLangChainDict, toOpenAIChat } from './runner/formats.js';
|
|
@@ -21,6 +21,8 @@ export class QodoSDK {
|
|
|
21
21
|
info;
|
|
22
22
|
/** Session history facade */
|
|
23
23
|
sessions;
|
|
24
|
+
/** Tool discovery facade */
|
|
25
|
+
tools;
|
|
24
26
|
initialized = false;
|
|
25
27
|
// Environment for AsyncLocalStorage-scoped singletons.
|
|
26
28
|
// Mark as sdkMode to avoid process.exit in SDK code paths.
|
|
@@ -60,6 +62,7 @@ export class QodoSDK {
|
|
|
60
62
|
this.options = options;
|
|
61
63
|
this.info = QodoInfoClient.fromSdkOptions(options);
|
|
62
64
|
this.sessions = QodoSessionsClient.fromSdkOptions(options);
|
|
65
|
+
this.tools = QodoToolsClient.fromSdkOptions(options);
|
|
63
66
|
// If debug is enabled, allow verbose logs in this SDK environment.
|
|
64
67
|
if (this.options.debug === true) {
|
|
65
68
|
this.env.sdkDebug = true;
|