mcp-subagents-opencode 1.0.0 → 1.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/build/index.js +9 -0
- package/build/index.js.map +1 -1
- package/build/models.d.ts +27 -14
- package/build/models.d.ts.map +1 -1
- package/build/models.js +78 -39
- package/build/models.js.map +1 -1
- package/build/services/model-discovery.d.ts +56 -0
- package/build/services/model-discovery.d.ts.map +1 -0
- package/build/services/model-discovery.js +259 -0
- package/build/services/model-discovery.js.map +1 -0
- package/build/services/template-home.d.ts +25 -0
- package/build/services/template-home.d.ts.map +1 -0
- package/build/services/template-home.js +105 -0
- package/build/services/template-home.js.map +1 -0
- package/build/templates/index.d.ts +1 -0
- package/build/templates/index.d.ts.map +1 -1
- package/build/templates/index.js +34 -7
- package/build/templates/index.js.map +1 -1
- package/build/templates/overlays/coder-csharp.mdx +6 -0
- package/build/templates/overlays/coder-go.mdx +6 -0
- package/build/templates/overlays/coder-java.mdx +6 -0
- package/build/templates/overlays/coder-kotlin.mdx +6 -0
- package/build/templates/overlays/coder-nextjs.mdx +6 -0
- package/build/templates/overlays/coder-python.mdx +6 -0
- package/build/templates/overlays/coder-react.mdx +6 -0
- package/build/templates/overlays/coder-ruby.mdx +6 -0
- package/build/templates/overlays/coder-rust.mdx +6 -0
- package/build/templates/overlays/coder-supabase.mdx +6 -0
- package/build/templates/overlays/coder-supastarter.mdx +6 -0
- package/build/templates/overlays/coder-swift.mdx +6 -0
- package/build/templates/overlays/coder-tauri.mdx +6 -0
- package/build/templates/overlays/coder-triggerdev.mdx +6 -0
- package/build/templates/overlays/coder-typescript.mdx +6 -0
- package/build/templates/overlays/coder-vue.mdx +6 -0
- package/build/templates/overlays/planner-architecture.mdx +6 -0
- package/build/templates/overlays/planner-bugfix.mdx +6 -0
- package/build/templates/overlays/planner-feature.mdx +6 -0
- package/build/templates/overlays/planner-migration.mdx +6 -0
- package/build/templates/overlays/planner-refactor.mdx +6 -0
- package/build/templates/overlays/researcher-library.mdx +6 -0
- package/build/templates/overlays/researcher-performance.mdx +6 -0
- package/build/templates/overlays/researcher-security.mdx +6 -0
- package/build/templates/overlays/tester-graphql.mdx +6 -0
- package/build/templates/overlays/tester-playwright.mdx +6 -0
- package/build/templates/overlays/tester-rest.mdx +6 -0
- package/build/templates/overlays/tester-suite.mdx +6 -0
- package/build/templates/super-coder.mdx +21 -0
- package/build/templates/super-planner.mdx +21 -0
- package/build/templates/super-researcher.mdx +21 -0
- package/build/templates/super-tester.mdx +21 -0
- package/build/tools/spawn-agent.d.ts +1 -1
- package/build/tools/spawn-agent.js +5 -5
- package/build/tools/spawn-agent.js.map +1 -1
- package/package.json +1 -1
- package/build/services/account-manager.d.ts +0 -88
- package/build/services/account-manager.d.ts.map +0 -1
- package/build/services/account-manager.js +0 -239
- package/build/services/account-manager.js.map +0 -1
- package/build/services/claude-code-runner.d.ts +0 -15
- package/build/services/claude-code-runner.d.ts.map +0 -1
- package/build/services/claude-code-runner.js +0 -475
- package/build/services/claude-code-runner.js.map +0 -1
- package/build/services/exhaustion-fallback.d.ts +0 -27
- package/build/services/exhaustion-fallback.d.ts.map +0 -1
- package/build/services/exhaustion-fallback.js +0 -30
- package/build/services/exhaustion-fallback.js.map +0 -1
- package/build/services/fallback-orchestrator.d.ts +0 -16
- package/build/services/fallback-orchestrator.d.ts.map +0 -1
- package/build/services/fallback-orchestrator.js +0 -48
- package/build/services/fallback-orchestrator.js.map +0 -1
- package/build/services/sdk-client-manager.d.ts +0 -149
- package/build/services/sdk-client-manager.d.ts.map +0 -1
- package/build/services/sdk-client-manager.js +0 -632
- package/build/services/sdk-client-manager.js.map +0 -1
- package/build/services/sdk-session-adapter.d.ts +0 -203
- package/build/services/sdk-session-adapter.d.ts.map +0 -1
- package/build/services/sdk-session-adapter.js +0 -1088
- package/build/services/sdk-session-adapter.js.map +0 -1
- package/build/services/sdk-spawner.d.ts +0 -42
- package/build/services/sdk-spawner.d.ts.map +0 -1
- package/build/services/sdk-spawner.js +0 -488
- package/build/services/sdk-spawner.js.map +0 -1
- package/build/services/session-hooks.d.ts +0 -24
- package/build/services/session-hooks.d.ts.map +0 -1
- package/build/services/session-hooks.js +0 -130
- package/build/services/session-hooks.js.map +0 -1
- package/build/services/session-snapshot.d.ts +0 -19
- package/build/services/session-snapshot.d.ts.map +0 -1
- package/build/services/session-snapshot.js +0 -203
- package/build/services/session-snapshot.js.map +0 -1
- package/build/tools/spawn-coder.d.ts +0 -70
- package/build/tools/spawn-coder.d.ts.map +0 -1
- package/build/tools/spawn-coder.js +0 -71
- package/build/tools/spawn-coder.js.map +0 -1
- package/build/tools/spawn-planner.d.ts +0 -70
- package/build/tools/spawn-planner.d.ts.map +0 -1
- package/build/tools/spawn-planner.js +0 -71
- package/build/tools/spawn-planner.js.map +0 -1
- package/build/tools/spawn-researcher.d.ts +0 -70
- package/build/tools/spawn-researcher.d.ts.map +0 -1
- package/build/tools/spawn-researcher.js +0 -70
- package/build/tools/spawn-researcher.js.map +0 -1
- package/build/tools/spawn-task.d.ts +0 -74
- package/build/tools/spawn-task.d.ts.map +0 -1
- package/build/tools/spawn-task.js +0 -107
- package/build/tools/spawn-task.js.map +0 -1
- package/build/tools/spawn-tester.d.ts +0 -70
- package/build/tools/spawn-tester.d.ts.map +0 -1
- package/build/tools/spawn-tester.js +0 -69
- package/build/tools/spawn-tester.js.map +0 -1
package/build/index.js
CHANGED
|
@@ -8,12 +8,15 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/
|
|
|
8
8
|
import { taskManager } from './services/task-manager.js';
|
|
9
9
|
import { clientContext } from './services/client-context.js';
|
|
10
10
|
import { initSpawner, checkOpenCodeAvailable, shutdownSpawner, getSpawnerStats } from './services/opencode-spawner.js';
|
|
11
|
+
import { discoverModels } from './services/model-discovery.js';
|
|
12
|
+
import { refreshModelExports } from './models.js';
|
|
11
13
|
import { OpenCodeClient } from './services/opencode-client.js';
|
|
12
14
|
import { registerToolHandlers } from './server/register-tools.js';
|
|
13
15
|
import { registerTaskHandlers } from './server/register-tasks.js';
|
|
14
16
|
import { registerResourceHandlers } from './server/register-resources.js';
|
|
15
17
|
import { registerNotificationWiring } from './server/register-notifications.js';
|
|
16
18
|
import { registerRetryAndExecutionCallbacks } from './server/register-retry-execution.js';
|
|
19
|
+
import { ensureTemplateHome } from './templates/index.js';
|
|
17
20
|
const require = createRequire(import.meta.url);
|
|
18
21
|
const { version: PKG_VERSION } = require('../package.json');
|
|
19
22
|
const server = new Server({ name: 'mcp-subagents-opencode', version: PKG_VERSION }, {
|
|
@@ -155,6 +158,12 @@ async function startHttpTransport(port) {
|
|
|
155
158
|
});
|
|
156
159
|
}
|
|
157
160
|
async function main() {
|
|
161
|
+
// Discover available models from OpenCode CLI before anything else
|
|
162
|
+
console.error('[index] Discovering available models via `opencode models`...');
|
|
163
|
+
await discoverModels();
|
|
164
|
+
refreshModelExports();
|
|
165
|
+
// Initialize editable templates in home directory
|
|
166
|
+
ensureTemplateHome();
|
|
158
167
|
const opencodeAvailable = await checkOpenCodeAvailable().catch(() => false);
|
|
159
168
|
if (!opencodeAvailable) {
|
|
160
169
|
console.error('Warning: OpenCode server not available at ' + OPENCODE_BASE_URL + ' — tasks will fail until server starts');
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/models.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare const
|
|
9
|
-
|
|
10
|
-
export declare
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic model resolution powered by OpenCode model discovery.
|
|
3
|
+
*
|
|
4
|
+
* Models are discovered at startup via `opencode models --verbose`.
|
|
5
|
+
* The discovery populates MODEL_IDS and ALL_ACCEPTED_MODELS dynamically.
|
|
6
|
+
* Default model: github-copilot/claude-opus-4.6 for all agent types.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_MODEL = "github-copilot/claude-opus-4.6";
|
|
9
|
+
/** Get the recommended "most capable" model for planning tasks. */
|
|
10
|
+
export declare function getPlannerModel(): string;
|
|
11
|
+
export declare const OPUS_MODEL = "github-copilot/claude-opus-4.6";
|
|
12
|
+
/** Model IDs exposed in tool schema enum. Computed after discovery. */
|
|
13
|
+
export declare function getModelIdsForSchema(): string[];
|
|
14
|
+
/**
|
|
15
|
+
* MODEL_IDS — Returns discovered model IDs + default.
|
|
16
|
+
*/
|
|
17
|
+
export declare const MODEL_IDS: string[];
|
|
18
|
+
/** All accepted model values for backend validation. Includes full IDs and short IDs. */
|
|
19
|
+
export declare function getAllAcceptedModels(): string[];
|
|
20
|
+
export declare let ALL_ACCEPTED_MODELS: string[];
|
|
21
|
+
/** Call after discovery to refresh static exports. */
|
|
22
|
+
export declare function refreshModelExports(): void;
|
|
11
23
|
/**
|
|
12
24
|
* Validate and sanitize model selection.
|
|
13
|
-
* - super-planner
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
25
|
+
* - super-planner uses DEFAULT_MODEL (github-copilot/claude-opus-4.6).
|
|
26
|
+
* - Discovered models are validated. Unknown models are passed through
|
|
27
|
+
* (OpenCode server handles validation).
|
|
16
28
|
*/
|
|
17
|
-
export declare function resolveModel(requested?: string, taskType?: string):
|
|
29
|
+
export declare function resolveModel(requested?: string, taskType?: string): string;
|
|
18
30
|
/**
|
|
19
31
|
* Resolve provider. OpenCode manages providers internally.
|
|
20
32
|
*/
|
|
@@ -27,6 +39,7 @@ export interface ModelConfig {
|
|
|
27
39
|
}
|
|
28
40
|
/**
|
|
29
41
|
* Get OpenCode model config for a model ID.
|
|
42
|
+
* Dynamically generated from discovered models.
|
|
30
43
|
*/
|
|
31
44
|
export declare function getModelConfig(modelId: string): ModelConfig | undefined;
|
|
32
45
|
//# sourceMappingURL=models.d.ts.map
|
package/build/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,eAAO,MAAM,aAAa,mCAAmC,CAAC;AAE9D,mEAAmE;AACnE,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,eAAO,MAAM,UAAU,mCAAgB,CAAC;AAIxC,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAI/C;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,EAAoB,CAAC;AAEnD,yFAAyF;AACzF,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAQ/C;AAGD,eAAO,IAAI,mBAAmB,EAAE,MAAM,EAA4B,CAAC;AAEnE,sDAAsD;AACtD,wBAAgB,mBAAmB,IAAI,IAAI,CAQ1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAUvE"}
|
package/build/models.js
CHANGED
|
@@ -1,42 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
export const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
];
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic model resolution powered by OpenCode model discovery.
|
|
3
|
+
*
|
|
4
|
+
* Models are discovered at startup via `opencode models --verbose`.
|
|
5
|
+
* The discovery populates MODEL_IDS and ALL_ACCEPTED_MODELS dynamically.
|
|
6
|
+
* Default model: github-copilot/claude-opus-4.6 for all agent types.
|
|
7
|
+
*/
|
|
8
|
+
import { getDiscoveredModels, getModelIds, } from './services/model-discovery.js';
|
|
9
|
+
// --- Default model ---
|
|
10
|
+
export const DEFAULT_MODEL = 'github-copilot/claude-opus-4.6';
|
|
11
|
+
/** Get the recommended "most capable" model for planning tasks. */
|
|
12
|
+
export function getPlannerModel() {
|
|
13
|
+
return DEFAULT_MODEL;
|
|
14
|
+
}
|
|
15
|
+
// Legacy alias
|
|
16
|
+
export const OPUS_MODEL = DEFAULT_MODEL;
|
|
17
|
+
// --- Dynamic model lists (populated after discovery) ---
|
|
18
|
+
/** Model IDs exposed in tool schema enum. Computed after discovery. */
|
|
19
|
+
export function getModelIdsForSchema() {
|
|
20
|
+
const ids = getModelIds();
|
|
21
|
+
const result = [DEFAULT_MODEL, ...ids];
|
|
22
|
+
return [...new Set(result)];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* MODEL_IDS — Returns discovered model IDs + default.
|
|
26
|
+
*/
|
|
27
|
+
export const MODEL_IDS = [DEFAULT_MODEL];
|
|
28
|
+
/** All accepted model values for backend validation. Includes full IDs and short IDs. */
|
|
29
|
+
export function getAllAcceptedModels() {
|
|
30
|
+
const models = getDiscoveredModels();
|
|
31
|
+
const accepted = ['auto', DEFAULT_MODEL];
|
|
32
|
+
for (const m of models) {
|
|
33
|
+
accepted.push(m.fullId);
|
|
34
|
+
accepted.push(m.id);
|
|
35
|
+
}
|
|
36
|
+
return [...new Set(accepted)];
|
|
37
|
+
}
|
|
38
|
+
// Static reference for zod schema (updated after discovery)
|
|
39
|
+
export let ALL_ACCEPTED_MODELS = ['auto', DEFAULT_MODEL];
|
|
40
|
+
/** Call after discovery to refresh static exports. */
|
|
41
|
+
export function refreshModelExports() {
|
|
42
|
+
const ids = getModelIds();
|
|
43
|
+
MODEL_IDS.length = 0;
|
|
44
|
+
MODEL_IDS.push(DEFAULT_MODEL);
|
|
45
|
+
for (const id of ids) {
|
|
46
|
+
if (id !== DEFAULT_MODEL)
|
|
47
|
+
MODEL_IDS.push(id);
|
|
48
|
+
}
|
|
49
|
+
ALL_ACCEPTED_MODELS = getAllAcceptedModels();
|
|
50
|
+
}
|
|
22
51
|
/**
|
|
23
52
|
* Validate and sanitize model selection.
|
|
24
|
-
* - super-planner
|
|
25
|
-
* -
|
|
26
|
-
*
|
|
53
|
+
* - super-planner uses DEFAULT_MODEL (github-copilot/claude-opus-4.6).
|
|
54
|
+
* - Discovered models are validated. Unknown models are passed through
|
|
55
|
+
* (OpenCode server handles validation).
|
|
27
56
|
*/
|
|
28
57
|
export function resolveModel(requested, taskType) {
|
|
29
|
-
// super-planner
|
|
30
|
-
if (taskType === 'super-planner')
|
|
31
|
-
return
|
|
32
|
-
|
|
58
|
+
// super-planner uses the best available model
|
|
59
|
+
if (taskType === 'super-planner') {
|
|
60
|
+
return getPlannerModel();
|
|
61
|
+
}
|
|
62
|
+
if (!requested || requested === 'auto')
|
|
33
63
|
return DEFAULT_MODEL;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (Object.keys(MODELS).includes(requested))
|
|
64
|
+
const models = getDiscoveredModels();
|
|
65
|
+
// Exact match on fullId (e.g. "opencode/big-pickle")
|
|
66
|
+
if (models.some(m => m.fullId === requested))
|
|
38
67
|
return requested;
|
|
39
|
-
|
|
68
|
+
// Short ID match (e.g. "big-pickle")
|
|
69
|
+
const byShortId = models.find(m => m.id === requested);
|
|
70
|
+
if (byShortId)
|
|
71
|
+
return byShortId.fullId;
|
|
72
|
+
// Pass through unknown models — let OpenCode server validate
|
|
73
|
+
return requested;
|
|
40
74
|
}
|
|
41
75
|
/**
|
|
42
76
|
* Resolve provider. OpenCode manages providers internally.
|
|
@@ -44,15 +78,20 @@ export function resolveModel(requested, taskType) {
|
|
|
44
78
|
export function resolveProvider(_provider) {
|
|
45
79
|
return 'opencode';
|
|
46
80
|
}
|
|
47
|
-
const MODEL_CONFIGS = {
|
|
48
|
-
'claude-sonnet-4.5': { id: 'claude-sonnet-4.5', providerID: 'anthropic', modelID: 'claude-sonnet-4.5', displayName: 'Claude Sonnet 4.5' },
|
|
49
|
-
'claude-opus-4.6': { id: 'claude-opus-4.6', providerID: 'anthropic', modelID: 'claude-opus-4.6', displayName: 'Claude Opus 4.6' },
|
|
50
|
-
'claude-haiku-4.5': { id: 'claude-haiku-4.5', providerID: 'anthropic', modelID: 'claude-haiku-4.5', displayName: 'Claude Haiku 4.5' },
|
|
51
|
-
};
|
|
52
81
|
/**
|
|
53
82
|
* Get OpenCode model config for a model ID.
|
|
83
|
+
* Dynamically generated from discovered models.
|
|
54
84
|
*/
|
|
55
85
|
export function getModelConfig(modelId) {
|
|
56
|
-
|
|
86
|
+
const models = getDiscoveredModels();
|
|
87
|
+
const model = models.find(m => m.fullId === modelId || m.id === modelId);
|
|
88
|
+
if (!model)
|
|
89
|
+
return undefined;
|
|
90
|
+
return {
|
|
91
|
+
id: model.fullId,
|
|
92
|
+
providerID: model.providerID,
|
|
93
|
+
modelID: model.id,
|
|
94
|
+
displayName: model.name,
|
|
95
|
+
};
|
|
57
96
|
}
|
|
58
97
|
//# sourceMappingURL=models.js.map
|
package/build/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Discovery - Discovers available models from the OpenCode CLI at startup.
|
|
3
|
+
*
|
|
4
|
+
* Runs `opencode models --verbose` to get the full list of models with metadata,
|
|
5
|
+
* parses the output, and stores them for use by the MCP server.
|
|
6
|
+
* Falls back to a minimal default set if discovery fails.
|
|
7
|
+
*/
|
|
8
|
+
export interface DiscoveredModel {
|
|
9
|
+
id: string;
|
|
10
|
+
providerID: string;
|
|
11
|
+
name: string;
|
|
12
|
+
family: string;
|
|
13
|
+
contextLimit: number;
|
|
14
|
+
outputLimit: number;
|
|
15
|
+
capabilities: {
|
|
16
|
+
reasoning: boolean;
|
|
17
|
+
toolcall: boolean;
|
|
18
|
+
attachment: boolean;
|
|
19
|
+
image: boolean;
|
|
20
|
+
};
|
|
21
|
+
releaseDate: string;
|
|
22
|
+
/** Full provider/id format, e.g. "opencode/big-pickle" */
|
|
23
|
+
fullId: string;
|
|
24
|
+
}
|
|
25
|
+
/** Per-agent-type model recommendation. */
|
|
26
|
+
export interface ModelRecommendation {
|
|
27
|
+
modelId: string;
|
|
28
|
+
reason: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run `opencode models --verbose` and parse the interleaved text+JSON output.
|
|
32
|
+
* Output format is:
|
|
33
|
+
* provider/model-id
|
|
34
|
+
* { ...json... }
|
|
35
|
+
* provider/model-id
|
|
36
|
+
* { ...json... }
|
|
37
|
+
*/
|
|
38
|
+
export declare function discoverModels(): Promise<DiscoveredModel[]>;
|
|
39
|
+
export declare function getDiscoveredModels(): DiscoveredModel[];
|
|
40
|
+
export declare function isDiscoveryComplete(): boolean;
|
|
41
|
+
export declare function getDiscoveryError(): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Get all discovered model IDs (full format: "provider/model-id").
|
|
44
|
+
*/
|
|
45
|
+
export declare function getModelIds(): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Get a compact summary of available models for template injection.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getModelsSummary(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Recommend the best model for a given agent type.
|
|
52
|
+
* Default: github-copilot/claude-opus-4.6 for all agents.
|
|
53
|
+
* If models are discovered, picks the best based on capabilities.
|
|
54
|
+
*/
|
|
55
|
+
export declare function recommendModel(agentType: string): ModelRecommendation;
|
|
56
|
+
//# sourceMappingURL=model-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery.d.ts","sourceRoot":"","sources":["../../src/services/model-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;GAOG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA0CjE;AAqHD,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CA+CrE"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Discovery - Discovers available models from the OpenCode CLI at startup.
|
|
3
|
+
*
|
|
4
|
+
* Runs `opencode models --verbose` to get the full list of models with metadata,
|
|
5
|
+
* parses the output, and stores them for use by the MCP server.
|
|
6
|
+
* Falls back to a minimal default set if discovery fails.
|
|
7
|
+
*/
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
let discoveredModels = [];
|
|
10
|
+
let discoveryRan = false;
|
|
11
|
+
let discoveryError = null;
|
|
12
|
+
/**
|
|
13
|
+
* Run `opencode models --verbose` and parse the interleaved text+JSON output.
|
|
14
|
+
* Output format is:
|
|
15
|
+
* provider/model-id
|
|
16
|
+
* { ...json... }
|
|
17
|
+
* provider/model-id
|
|
18
|
+
* { ...json... }
|
|
19
|
+
*/
|
|
20
|
+
export async function discoverModels() {
|
|
21
|
+
try {
|
|
22
|
+
const raw = execSync('opencode models --verbose 2>/dev/null', {
|
|
23
|
+
encoding: 'utf8',
|
|
24
|
+
timeout: 15000,
|
|
25
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
26
|
+
});
|
|
27
|
+
const models = parseVerboseOutput(raw);
|
|
28
|
+
if (models.length > 0) {
|
|
29
|
+
discoveredModels = models;
|
|
30
|
+
discoveryRan = true;
|
|
31
|
+
discoveryError = null;
|
|
32
|
+
console.error(`[model-discovery] Discovered ${models.length} models: ${models.map(m => m.fullId).join(', ')}`);
|
|
33
|
+
return models;
|
|
34
|
+
}
|
|
35
|
+
// If verbose parsing found nothing, try non-verbose
|
|
36
|
+
const rawSimple = execSync('opencode models 2>/dev/null', {
|
|
37
|
+
encoding: 'utf8',
|
|
38
|
+
timeout: 10000,
|
|
39
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
40
|
+
});
|
|
41
|
+
const simpleModels = parseSimpleOutput(rawSimple);
|
|
42
|
+
if (simpleModels.length > 0) {
|
|
43
|
+
discoveredModels = simpleModels;
|
|
44
|
+
discoveryRan = true;
|
|
45
|
+
discoveryError = null;
|
|
46
|
+
console.error(`[model-discovery] Discovered ${simpleModels.length} models (simple): ${simpleModels.map(m => m.fullId).join(', ')}`);
|
|
47
|
+
return simpleModels;
|
|
48
|
+
}
|
|
49
|
+
discoveryError = 'No models found in output';
|
|
50
|
+
discoveryRan = true;
|
|
51
|
+
console.error('[model-discovery] No models found');
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
discoveryError = err instanceof Error ? err.message : String(err);
|
|
56
|
+
discoveryRan = true;
|
|
57
|
+
console.error(`[model-discovery] Discovery failed: ${discoveryError}`);
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parse the verbose output (interleaved model-id lines + JSON blocks).
|
|
63
|
+
*/
|
|
64
|
+
function parseVerboseOutput(raw) {
|
|
65
|
+
const models = [];
|
|
66
|
+
const lines = raw.split('\n');
|
|
67
|
+
let currentFullId = null;
|
|
68
|
+
let jsonBuffer = '';
|
|
69
|
+
let inJson = false;
|
|
70
|
+
let braceDepth = 0;
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
// Model ID line: "provider/model-id"
|
|
74
|
+
if (!inJson && /^[\w-]+\/[\w.-]+$/.test(trimmed)) {
|
|
75
|
+
// Flush previous JSON buffer
|
|
76
|
+
if (currentFullId && jsonBuffer) {
|
|
77
|
+
const model = parseModelJson(currentFullId, jsonBuffer);
|
|
78
|
+
if (model)
|
|
79
|
+
models.push(model);
|
|
80
|
+
}
|
|
81
|
+
currentFullId = trimmed;
|
|
82
|
+
jsonBuffer = '';
|
|
83
|
+
inJson = false;
|
|
84
|
+
braceDepth = 0;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Track JSON block
|
|
88
|
+
if (currentFullId) {
|
|
89
|
+
if (trimmed === '{' && !inJson) {
|
|
90
|
+
inJson = true;
|
|
91
|
+
braceDepth = 1;
|
|
92
|
+
jsonBuffer = '{';
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (inJson) {
|
|
96
|
+
jsonBuffer += '\n' + line;
|
|
97
|
+
for (const ch of trimmed) {
|
|
98
|
+
if (ch === '{')
|
|
99
|
+
braceDepth++;
|
|
100
|
+
else if (ch === '}')
|
|
101
|
+
braceDepth--;
|
|
102
|
+
}
|
|
103
|
+
if (braceDepth === 0) {
|
|
104
|
+
const model = parseModelJson(currentFullId, jsonBuffer);
|
|
105
|
+
if (model)
|
|
106
|
+
models.push(model);
|
|
107
|
+
currentFullId = null;
|
|
108
|
+
jsonBuffer = '';
|
|
109
|
+
inJson = false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Flush last
|
|
115
|
+
if (currentFullId && jsonBuffer) {
|
|
116
|
+
const model = parseModelJson(currentFullId, jsonBuffer);
|
|
117
|
+
if (model)
|
|
118
|
+
models.push(model);
|
|
119
|
+
}
|
|
120
|
+
return models;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Parse a single model JSON block.
|
|
124
|
+
*/
|
|
125
|
+
function parseModelJson(fullId, jsonStr) {
|
|
126
|
+
try {
|
|
127
|
+
const data = JSON.parse(jsonStr);
|
|
128
|
+
const [providerID, id] = fullId.includes('/') ? fullId.split('/', 2) : ['opencode', fullId];
|
|
129
|
+
return {
|
|
130
|
+
id: data.id ?? id,
|
|
131
|
+
providerID: data.providerID ?? providerID,
|
|
132
|
+
name: data.name ?? id,
|
|
133
|
+
family: data.family ?? '',
|
|
134
|
+
contextLimit: data.limit?.context ?? 128000,
|
|
135
|
+
outputLimit: data.limit?.output ?? 32000,
|
|
136
|
+
capabilities: {
|
|
137
|
+
reasoning: data.capabilities?.reasoning ?? false,
|
|
138
|
+
toolcall: data.capabilities?.toolcall ?? false,
|
|
139
|
+
attachment: data.capabilities?.attachment ?? false,
|
|
140
|
+
image: data.capabilities?.input?.image ?? false,
|
|
141
|
+
},
|
|
142
|
+
releaseDate: data.release_date ?? '',
|
|
143
|
+
fullId,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Parse simple (non-verbose) output: one model-id per line.
|
|
152
|
+
*/
|
|
153
|
+
function parseSimpleOutput(raw) {
|
|
154
|
+
return raw.split('\n')
|
|
155
|
+
.map(l => l.trim())
|
|
156
|
+
.filter(l => /^[\w-]+\/[\w.-]+$/.test(l))
|
|
157
|
+
.map(fullId => {
|
|
158
|
+
const [providerID, id] = fullId.split('/', 2);
|
|
159
|
+
return {
|
|
160
|
+
id,
|
|
161
|
+
providerID,
|
|
162
|
+
name: id,
|
|
163
|
+
family: '',
|
|
164
|
+
contextLimit: 128000,
|
|
165
|
+
outputLimit: 32000,
|
|
166
|
+
capabilities: { reasoning: true, toolcall: true, attachment: false, image: false },
|
|
167
|
+
releaseDate: '',
|
|
168
|
+
fullId,
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// --- Public API ---
|
|
173
|
+
export function getDiscoveredModels() {
|
|
174
|
+
return discoveredModels;
|
|
175
|
+
}
|
|
176
|
+
export function isDiscoveryComplete() {
|
|
177
|
+
return discoveryRan;
|
|
178
|
+
}
|
|
179
|
+
export function getDiscoveryError() {
|
|
180
|
+
return discoveryError;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get all discovered model IDs (full format: "provider/model-id").
|
|
184
|
+
*/
|
|
185
|
+
export function getModelIds() {
|
|
186
|
+
return discoveredModels.map(m => m.fullId);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get a compact summary of available models for template injection.
|
|
190
|
+
*/
|
|
191
|
+
export function getModelsSummary() {
|
|
192
|
+
const lines = [
|
|
193
|
+
`- **github-copilot/claude-opus-4.6** (Claude Opus 4.6) — Default, most capable [reasoning, tools, vision]`,
|
|
194
|
+
];
|
|
195
|
+
if (discoveredModels.length > 0) {
|
|
196
|
+
for (const m of discoveredModels) {
|
|
197
|
+
const caps = [];
|
|
198
|
+
if (m.capabilities.reasoning)
|
|
199
|
+
caps.push('reasoning');
|
|
200
|
+
if (m.capabilities.toolcall)
|
|
201
|
+
caps.push('tools');
|
|
202
|
+
if (m.capabilities.image)
|
|
203
|
+
caps.push('vision');
|
|
204
|
+
const capsStr = caps.length > 0 ? ` [${caps.join(', ')}]` : '';
|
|
205
|
+
const ctx = m.contextLimit >= 1000 ? `${Math.round(m.contextLimit / 1000)}K ctx` : `${m.contextLimit} ctx`;
|
|
206
|
+
lines.push(`- **${m.fullId}** (${m.name}) — ${ctx}${capsStr}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return lines.join('\n');
|
|
210
|
+
}
|
|
211
|
+
const FALLBACK_MODEL = 'github-copilot/claude-opus-4.6';
|
|
212
|
+
/**
|
|
213
|
+
* Recommend the best model for a given agent type.
|
|
214
|
+
* Default: github-copilot/claude-opus-4.6 for all agents.
|
|
215
|
+
* If models are discovered, picks the best based on capabilities.
|
|
216
|
+
*/
|
|
217
|
+
export function recommendModel(agentType) {
|
|
218
|
+
if (discoveredModels.length === 0) {
|
|
219
|
+
return { modelId: FALLBACK_MODEL, reason: 'Default model — Claude Opus 4.6 via GitHub Copilot' };
|
|
220
|
+
}
|
|
221
|
+
let sorted;
|
|
222
|
+
switch (agentType) {
|
|
223
|
+
case 'super-planner':
|
|
224
|
+
// Planner: prioritize largest context + reasoning
|
|
225
|
+
sorted = [...discoveredModels].sort((a, b) => {
|
|
226
|
+
const aScore = (a.capabilities.reasoning ? 100 : 0) + a.contextLimit / 1000;
|
|
227
|
+
const bScore = (b.capabilities.reasoning ? 100 : 0) + b.contextLimit / 1000;
|
|
228
|
+
return bScore - aScore;
|
|
229
|
+
});
|
|
230
|
+
return { modelId: sorted[0].fullId, reason: 'Best reasoning + largest context window for architectural planning' };
|
|
231
|
+
case 'super-coder':
|
|
232
|
+
// Coder: prioritize toolcall + large output
|
|
233
|
+
sorted = [...discoveredModels].sort((a, b) => {
|
|
234
|
+
const aScore = (a.capabilities.toolcall ? 100 : 0) + (a.capabilities.reasoning ? 50 : 0) + a.outputLimit / 1000;
|
|
235
|
+
const bScore = (b.capabilities.toolcall ? 100 : 0) + (b.capabilities.reasoning ? 50 : 0) + b.outputLimit / 1000;
|
|
236
|
+
return bScore - aScore;
|
|
237
|
+
});
|
|
238
|
+
return { modelId: sorted[0].fullId, reason: 'Best tool-calling + large output for code generation' };
|
|
239
|
+
case 'super-researcher':
|
|
240
|
+
// Researcher: prioritize reasoning + context
|
|
241
|
+
sorted = [...discoveredModels].sort((a, b) => {
|
|
242
|
+
const aScore = (a.capabilities.reasoning ? 100 : 0) + a.contextLimit / 1000;
|
|
243
|
+
const bScore = (b.capabilities.reasoning ? 100 : 0) + b.contextLimit / 1000;
|
|
244
|
+
return bScore - aScore;
|
|
245
|
+
});
|
|
246
|
+
return { modelId: sorted[0].fullId, reason: 'Best reasoning + large context for deep research' };
|
|
247
|
+
case 'super-tester':
|
|
248
|
+
// Tester: prioritize toolcall + reasoning
|
|
249
|
+
sorted = [...discoveredModels].sort((a, b) => {
|
|
250
|
+
const aScore = (a.capabilities.toolcall ? 100 : 0) + (a.capabilities.reasoning ? 50 : 0);
|
|
251
|
+
const bScore = (b.capabilities.toolcall ? 100 : 0) + (b.capabilities.reasoning ? 50 : 0);
|
|
252
|
+
return bScore - aScore;
|
|
253
|
+
});
|
|
254
|
+
return { modelId: sorted[0].fullId, reason: 'Best tool-calling + reasoning for QA testing' };
|
|
255
|
+
default:
|
|
256
|
+
return { modelId: discoveredModels[0].fullId, reason: 'Default model' };
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=model-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery.js","sourceRoot":"","sources":["../../src/services/model-discovery.ts"],"names":[],"mappings":"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"}
|