@vpxa/aikit 0.1.22 → 0.1.24
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/package.json +1 -1
- package/packages/cli/dist/commands/init/constants.d.ts +3 -0
- package/packages/cli/dist/commands/init/constants.js +1 -1
- package/scaffold/adapters/claude-code.mjs +9 -0
- package/scaffold/adapters/copilot.mjs +10 -9
- package/scaffold/definitions/models.mjs +16 -3
- package/scaffold/general/agents/Architect-Reviewer-Alpha.agent.md +2 -2
- package/scaffold/general/agents/Architect-Reviewer-Beta.agent.md +2 -2
- package/scaffold/general/agents/Code-Reviewer-Alpha.agent.md +2 -2
- package/scaffold/general/agents/Code-Reviewer-Beta.agent.md +2 -2
- package/scaffold/general/agents/Debugger.agent.md +2 -2
- package/scaffold/general/agents/Documenter.agent.md +2 -2
- package/scaffold/general/agents/Explorer.agent.md +2 -2
- package/scaffold/general/agents/Frontend.agent.md +2 -2
- package/scaffold/general/agents/Implementer.agent.md +2 -2
- package/scaffold/general/agents/Orchestrator.agent.md +1 -1
- package/scaffold/general/agents/Planner.agent.md +1 -1
- package/scaffold/general/agents/Refactor.agent.md +2 -2
- package/scaffold/general/agents/Researcher-Alpha.agent.md +2 -2
- package/scaffold/general/agents/Researcher-Beta.agent.md +2 -2
- package/scaffold/general/agents/Researcher-Delta.agent.md +2 -2
- package/scaffold/general/agents/Researcher-Gamma.agent.md +2 -2
- package/scaffold/general/agents/Security.agent.md +2 -2
- package/packages/kb-client/dist/direct-client.d.ts +0 -37
- package/packages/kb-client/dist/direct-client.js +0 -1
- package/packages/kb-client/dist/index.d.ts +0 -5
- package/packages/kb-client/dist/index.js +0 -1
- package/packages/kb-client/dist/mcp-client.d.ts +0 -19
- package/packages/kb-client/dist/mcp-client.js +0 -4
- package/packages/kb-client/dist/parsers.d.ts +0 -35
- package/packages/kb-client/dist/parsers.js +0 -2
- package/packages/kb-client/dist/types.d.ts +0 -62
- package/packages/kb-client/dist/types.js +0 -1
package/package.json
CHANGED
|
@@ -37,6 +37,9 @@ declare const FLOW_DIRS: readonly ["aikit-basic", "aikit-advanced"];
|
|
|
37
37
|
* web pages inside VS Code's built-in browser.
|
|
38
38
|
* - mcpApps: Enables MCP tool apps so AI Kit tools can be consumed by Copilot
|
|
39
39
|
* Chat without requiring manual MCP server configuration.
|
|
40
|
+
* - instructionsFilesLocations: Tells VS Code to load .instructions.md files
|
|
41
|
+
* from ~/.copilot/instructions/ (user-level) in addition to workspace-level
|
|
42
|
+
* locations. This is where `aikit init` places copilot-instructions.md.
|
|
40
43
|
*/
|
|
41
44
|
declare const VSCODE_SETTINGS: Record<string, unknown>;
|
|
42
45
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=`aikit`,t={type:`stdio`,command:`npx`,args:[`-y`,`@vpxa/aikit`,`serve`]},n=[`aikit`,`brainstorming`,`multi-agents-development`,`session-handoff`,`requirements-clarity`,`lesson-learned`,`c4-architecture`,`adr-skill`,`present`,`frontend-design`,`react`,`typescript`],r=[`aikit-basic`,`aikit-advanced`],i={"chat.agentFilesLocations":{"~/.claude/agents":!1},"github.copilot.chat.copilotMemory.enabled":!0,"chat.customAgentInSubagent.enabled":!0,"chat.useNestedAgentsMdFiles":!0,"chat.useAgentSkills":!0,"github.copilot.chat.switchAgent.enabled":!0,"workbench.browser.enableChatTools":!0,"chat.mcp.apps.enabled":!0};export{r as FLOW_DIRS,t as MCP_SERVER_ENTRY,e as SERVER_NAME,n as SKILL_NAMES,i as VSCODE_SETTINGS};
|
|
1
|
+
const e=`aikit`,t={type:`stdio`,command:`npx`,args:[`-y`,`@vpxa/aikit`,`serve`]},n=[`aikit`,`brainstorming`,`multi-agents-development`,`session-handoff`,`requirements-clarity`,`lesson-learned`,`c4-architecture`,`adr-skill`,`present`,`frontend-design`,`react`,`typescript`],r=[`aikit-basic`,`aikit-advanced`],i={"chat.agentFilesLocations":{"~/.claude/agents":!1},"github.copilot.chat.copilotMemory.enabled":!0,"chat.customAgentInSubagent.enabled":!0,"chat.useNestedAgentsMdFiles":!0,"chat.useAgentSkills":!0,"github.copilot.chat.switchAgent.enabled":!0,"workbench.browser.enableChatTools":!0,"chat.mcp.apps.enabled":!0,"chat.instructionsFilesLocations":{"~/.copilot/instructions":!0,".github/instructions":!0}};export{r as FLOW_DIRS,t as MCP_SERVER_ENTRY,e as SERVER_NAME,n as SKILL_NAMES,i as VSCODE_SETTINGS};
|
|
@@ -10,6 +10,15 @@
|
|
|
10
10
|
* Status: STUB — not yet implemented.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
// biome-ignore lint/correctness/noUnusedImports: reserved for implementation
|
|
14
|
+
import { AGENTS } from '../definitions/agents.mjs';
|
|
15
|
+
// biome-ignore lint/correctness/noUnusedImports: reserved for implementation
|
|
16
|
+
import { AGENT_BODIES } from '../definitions/bodies.mjs';
|
|
17
|
+
// biome-ignore lint/correctness/noUnusedImports: reserved for implementation
|
|
18
|
+
import { CLAUDE_MODELS, VARIANT_GROUPS } from '../definitions/models.mjs';
|
|
19
|
+
// biome-ignore lint/correctness/noUnusedImports: reserved for implementation
|
|
20
|
+
import { IDE_CAPABILITIES } from '../definitions/tools.mjs';
|
|
21
|
+
|
|
13
22
|
export const CLAUDE_FLOWS_SECTION = [
|
|
14
23
|
'## Flows',
|
|
15
24
|
'',
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import { AGENTS } from '../definitions/agents.mjs';
|
|
20
20
|
import { AGENT_BODIES } from '../definitions/bodies.mjs';
|
|
21
|
-
import {
|
|
21
|
+
import { COPILOT_MODELS, VARIANT_GROUPS } from '../definitions/models.mjs';
|
|
22
22
|
import { PROMPTS } from '../definitions/prompts.mjs';
|
|
23
23
|
import { PROTOCOLS, TEMPLATES } from '../definitions/protocols.mjs';
|
|
24
24
|
import { IDE_CAPABILITIES } from '../definitions/tools.mjs';
|
|
@@ -64,12 +64,13 @@ function buildToolsYaml(toolRole) {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
function copilotModel(agentName) {
|
|
67
|
-
const models =
|
|
67
|
+
const models = COPILOT_MODELS[agentName];
|
|
68
68
|
if (!models) return 'Auto (copilot)';
|
|
69
|
+
// NOTE: Model array syntax (e.g. [model1, model2]) is experimental and
|
|
70
|
+
// requires a VS Code experiment flag to be enabled. For now, we always
|
|
71
|
+
// emit the primary (first) model as a plain string.
|
|
69
72
|
if (Array.isArray(models)) {
|
|
70
|
-
|
|
71
|
-
if (models.length === 1) return models[0];
|
|
72
|
-
return `[${models.join(', ')}]`;
|
|
73
|
+
return models[0] || 'Auto (copilot)';
|
|
73
74
|
}
|
|
74
75
|
return models;
|
|
75
76
|
}
|
|
@@ -90,14 +91,14 @@ function buildAgentTable() {
|
|
|
90
91
|
if (def.variants) {
|
|
91
92
|
for (const suffix of VARIANT_GROUPS[name] || []) {
|
|
92
93
|
const fullName = `${name}-${suffix}`;
|
|
93
|
-
const models =
|
|
94
|
+
const models = COPILOT_MODELS[fullName] || COPILOT_MODELS[name];
|
|
94
95
|
const model = Array.isArray(models) ? models[0] : models || 'Unknown';
|
|
95
96
|
const varDef = def.variants[suffix] || {};
|
|
96
97
|
const desc = varDef.description || def.description;
|
|
97
98
|
rows.push(`| **${fullName}** | ${desc} | ${model} | ${def.category} |`);
|
|
98
99
|
}
|
|
99
100
|
} else {
|
|
100
|
-
const models =
|
|
101
|
+
const models = COPILOT_MODELS[name];
|
|
101
102
|
const model = Array.isArray(models) ? models[0] : models || 'Unknown';
|
|
102
103
|
rows.push(`| **${name}** | ${def.description} | ${model} | ${def.category} |`);
|
|
103
104
|
}
|
|
@@ -130,7 +131,7 @@ function generateVariantAgent(roleName, suffix, def) {
|
|
|
130
131
|
|
|
131
132
|
return `---
|
|
132
133
|
description: '${desc}'
|
|
133
|
-
${def.argumentHint ? `argument-hint: ${def.argumentHint}\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
|
|
134
|
+
${def.argumentHint ? `argument-hint: "${def.argumentHint}"\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
|
|
134
135
|
model: ${model}
|
|
135
136
|
---
|
|
136
137
|
|
|
@@ -157,7 +158,7 @@ function generateSingleAgent(name, def) {
|
|
|
157
158
|
|
|
158
159
|
return `---
|
|
159
160
|
description: '${def.description}'
|
|
160
|
-
${def.argumentHint ? `argument-hint: ${def.argumentHint}\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
|
|
161
|
+
${def.argumentHint ? `argument-hint: "${def.argumentHint}"\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
|
|
161
162
|
model: ${model}
|
|
162
163
|
---
|
|
163
164
|
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
* Centralized model assignments — THE SINGLE FILE to update when models change.
|
|
3
3
|
*
|
|
4
4
|
* Keys are agent names (stable, model-agnostic).
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* COPILOT_MODELS keeps the full fallback list in Copilot format.
|
|
6
|
+
* CLAUDE_MODELS maps each agent to its primary model as a single plain string.
|
|
7
7
|
*
|
|
8
8
|
* Naming convention for variants: {Role}-Alpha, {Role}-Beta, {Role}-Gamma, {Role}-Delta
|
|
9
9
|
* These are abstract labels — the actual model behind each is defined HERE.
|
|
10
|
+
*
|
|
11
|
+
* NOTE (Experimental): VS Code supports a model array syntax (e.g. [model1, model2])
|
|
12
|
+
* for agent files, but it requires an experiment flag to be enabled. Until the flag
|
|
13
|
+
* is generally available, adapters should emit only the first (primary) model as a
|
|
14
|
+
* plain string. The full fallback arrays are retained here so adapters can switch to
|
|
15
|
+
* array output when the flag is GA.
|
|
10
16
|
*/
|
|
11
17
|
|
|
12
|
-
export const
|
|
18
|
+
export const COPILOT_MODELS = {
|
|
13
19
|
// ─── Single-role agents ───────────────────────────────────────────────
|
|
14
20
|
Orchestrator: ['Claude Opus 4.6 (copilot)', 'GPT-5.4 (copilot)', 'Auto (copilot)'],
|
|
15
21
|
Planner: ['Claude Opus 4.6 (copilot)', 'GPT-5.4 (copilot)', 'Auto (copilot)'],
|
|
@@ -51,6 +57,13 @@ export const MODELS = {
|
|
|
51
57
|
'Architect-Reviewer-Beta': ['Claude Opus 4.6 (copilot)', 'Auto (copilot)'],
|
|
52
58
|
};
|
|
53
59
|
|
|
60
|
+
export const CLAUDE_MODELS = Object.fromEntries(
|
|
61
|
+
Object.entries(COPILOT_MODELS).map(([agentName, models]) => {
|
|
62
|
+
const primaryModel = Array.isArray(models) ? models[0] : models;
|
|
63
|
+
return [agentName, primaryModel?.replace(/ \(copilot\)$/, '') || 'Auto'];
|
|
64
|
+
}),
|
|
65
|
+
);
|
|
66
|
+
|
|
54
67
|
/**
|
|
55
68
|
* Variant group definitions — maps role to variant suffixes.
|
|
56
69
|
* Used by adapters to know which agents are variants of the same role.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Primary architecture reviewer'
|
|
3
|
-
argument-hint: Files, PR, or subsystem to architecture-review
|
|
3
|
+
argument-hint: "Files, PR, or subsystem to architecture-review"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Architect-Reviewer-Alpha - The Structural Guardian
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Architecture reviewer variant — different LLM perspective for dual review'
|
|
3
|
-
argument-hint: Files, PR, or subsystem to architecture-review
|
|
3
|
+
argument-hint: "Files, PR, or subsystem to architecture-review"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Opus 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Architect-Reviewer-Beta - The Structural Guardian
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Primary code reviewer'
|
|
3
|
-
argument-hint: File path, PR, or code to review
|
|
3
|
+
argument-hint: "File path, PR, or code to review"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Code-Reviewer-Alpha - The Quality Guardian
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Code reviewer variant — different LLM perspective for dual review'
|
|
3
|
-
argument-hint: File path, PR, or code to review
|
|
3
|
+
argument-hint: "File path, PR, or code to review"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Opus 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Code-Reviewer-Beta - The Quality Guardian
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Expert debugger that diagnoses issues, traces errors, and provides solutions'
|
|
3
|
-
argument-hint: Error message, stack trace, or description of issue
|
|
3
|
+
argument-hint: "Error message, stack trace, or description of issue"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalSelection, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, search/changes, search/codebase, search/usages, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Opus 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Debugger - The Problem Solver
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Documentation specialist that creates and maintains comprehensive project documentation'
|
|
3
|
-
argument-hint: Component, API, feature, or area to document
|
|
3
|
+
argument-hint: "Component, API, feature, or area to document"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Documenter - The Knowledge Keeper
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Rapid codebase exploration to find files, usages, dependencies, and structural context'
|
|
3
|
-
argument-hint: Find files, usages, and context related to: {topic or goal}
|
|
3
|
+
argument-hint: "Find files, usages, and context related to: {topic or goal}"
|
|
4
4
|
tools: [read/problems, read/readFile, search/changes, search/codebase, search/usages, search/fileSearch, search/listDirectory, search/textSearch, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Gemini 3 Flash (Preview) (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Explorer - The Rapid Scout
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'UI/UX specialist for React, styling, responsive design, and frontend implementation'
|
|
3
|
-
argument-hint: UI component, styling task, or frontend feature
|
|
3
|
+
argument-hint: "UI component, styling task, or frontend feature"
|
|
4
4
|
tools: [execute/createAndRunTask, execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, todo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Gemini 3.1 Pro (Preview) (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Frontend - The UI Specialist
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Persistent implementation agent that writes code following TDD practices until all tasks are complete'
|
|
3
|
-
argument-hint: Implementation task, feature, or phase from plan
|
|
3
|
+
argument-hint: "Implementation task, feature, or phase from plan"
|
|
4
4
|
tools: [execute/createAndRunTask, execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, todo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Implementer - The Code Builder
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Master conductor that orchestrates the full development lifecycle: Planning → Implementation → Review → Recovery → Commit'
|
|
3
3
|
tools: [vscode/memory, vscode/runCommand, vscode/switchAgent, execute/killTerminal, execute/createAndRunTask, execute/runInTerminal, read/terminalSelection, read/terminalLastCommand, read/problems, read/readFile, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, todo, search/searchSubagent, search/textSearch, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, vscode/askQuestions, vscode/resolveMemoryFileUri, aikit/*]
|
|
4
|
-
model:
|
|
4
|
+
model: Claude Opus 4.6 (copilot)
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Orchestrator - The Master Conductor
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Autonomous planner that researches codebases and writes comprehensive TDD implementation plans'
|
|
3
3
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, todo, search/searchSubagent, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
4
|
-
model:
|
|
4
|
+
model: Claude Opus 4.6 (copilot)
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Planner - The Strategic Architect
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Code refactoring specialist that improves structure, readability, and maintainability'
|
|
3
|
-
argument-hint: Code, component, or pattern to refactor
|
|
3
|
+
argument-hint: "Code, component, or pattern to refactor"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, edit/createFile, edit/editFiles, edit/rename, edit/createDirectory, search/changes, search/codebase, search/usages, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Refactor - The Code Sculptor
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Primary deep research agent — also serves as default Researcher'
|
|
3
|
-
argument-hint: Research question, problem statement, or subsystem to investigate
|
|
3
|
+
argument-hint: "Research question, problem statement, or subsystem to investigate"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Opus 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Researcher-Alpha - The Context Gatherer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Research variant — pragmatic analysis with focus on trade-offs and edge cases'
|
|
3
|
-
argument-hint: Research question, problem statement, or subsystem to investigate
|
|
3
|
+
argument-hint: "Research question, problem statement, or subsystem to investigate"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Sonnet 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Researcher-Beta - The Context Gatherer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Research variant — implementation feasibility and performance implications'
|
|
3
|
-
argument-hint: Research question, problem statement, or subsystem to investigate
|
|
3
|
+
argument-hint: "Research question, problem statement, or subsystem to investigate"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Gemini 3.1 Pro (Preview) (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Researcher-Delta - The Context Gatherer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Research variant — broad pattern matching across domains and technologies'
|
|
3
|
-
argument-hint: Research question, problem statement, or subsystem to investigate
|
|
3
|
+
argument-hint: "Research question, problem statement, or subsystem to investigate"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, read/terminalLastCommand, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: GPT-5.4 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Researcher-Gamma - The Context Gatherer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Security specialist that analyzes code for vulnerabilities and compliance'
|
|
3
|
-
argument-hint: Code, feature, or component to security review
|
|
3
|
+
argument-hint: "Code, feature, or component to security review"
|
|
4
4
|
tools: [execute/runInTerminal, read/problems, read/readFile, agent/runSubagent, search/changes, search/codebase, search/usages, web/fetch, web/githubRepo, browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog, aikit/*]
|
|
5
|
-
model:
|
|
5
|
+
model: Claude Opus 4.6 (copilot)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Security - The Vulnerability Hunter
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { IKBClient, KBGraphData, KBKnowledgeEntry, KBSearchResult, KBStatus } from "./types.js";
|
|
2
|
-
import { IEmbedder } from "../../embeddings/dist/index.js";
|
|
3
|
-
import { IGraphStore, IKnowledgeStore } from "../../store/dist/index.js";
|
|
4
|
-
|
|
5
|
-
//#region packages/kb-client/src/direct-client.d.ts
|
|
6
|
-
interface CuratedEntry {
|
|
7
|
-
path: string;
|
|
8
|
-
title: string;
|
|
9
|
-
category: string;
|
|
10
|
-
tags: string[];
|
|
11
|
-
content: string;
|
|
12
|
-
}
|
|
13
|
-
interface DirectClientDeps {
|
|
14
|
-
store: IKnowledgeStore;
|
|
15
|
-
embedder: IEmbedder;
|
|
16
|
-
graphStore?: IGraphStore;
|
|
17
|
-
/** Function to list curated entries */
|
|
18
|
-
listCurated?: () => Promise<CuratedEntry[]>;
|
|
19
|
-
/** Function to read a single curated entry */
|
|
20
|
-
readCurated?: (path: string) => Promise<CuratedEntry | null>;
|
|
21
|
-
}
|
|
22
|
-
declare class DirectKBClient implements IKBClient {
|
|
23
|
-
private readonly deps;
|
|
24
|
-
constructor(deps: DirectClientDeps);
|
|
25
|
-
getStatus(): Promise<KBStatus>;
|
|
26
|
-
search(query: string, options?: {
|
|
27
|
-
limit?: number;
|
|
28
|
-
mode?: 'hybrid' | 'semantic' | 'keyword';
|
|
29
|
-
}): Promise<KBSearchResult[]>;
|
|
30
|
-
listKnowledge(): Promise<KBKnowledgeEntry[]>;
|
|
31
|
-
readKnowledge(path: string): Promise<KBKnowledgeEntry | null>;
|
|
32
|
-
getGraph(query?: string): Promise<KBGraphData>;
|
|
33
|
-
getFileTree(): Promise<string[]>;
|
|
34
|
-
private getEdgesForNodes;
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
export { DirectClientDeps, DirectKBClient };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=1e3;var t=class{constructor(e){this.deps=e}async getStatus(){let e=await this.deps.store.getStats();return{totalRecords:e.totalRecords,totalFiles:e.totalFiles,lastIndexedAt:e.lastIndexedAt??null,onboarded:e.totalRecords>0}}async search(e,t){let n=t?.limit??10,i=t?.mode??`hybrid`;if(i===`keyword`)return(await this.deps.store.ftsSearch(e,{limit:n})).map(r);let a=await this.deps.embedder.embedQuery(e);if(i===`semantic`)return(await this.deps.store.search(a,{limit:n})).map(r);let[o,s]=await Promise.all([this.deps.store.search(a,{limit:n*2}),this.deps.store.ftsSearch(e,{limit:n*2}).catch(()=>[])]),c=new Map;for(let e of[...o,...s]){let t=c.get(e.record.id);(!t||e.score>t.score)&&c.set(e.record.id,e)}return[...c.values()].sort((e,t)=>t.score-e.score).slice(0,n).map(r)}async listKnowledge(){return this.deps.listCurated?(await this.deps.listCurated()).map(n):[]}async readKnowledge(e){if(!this.deps.readCurated)return null;let t=await this.deps.readCurated(e);return t?n(t):null}async getGraph(t){if(!this.deps.graphStore)return{nodes:[],edges:[]};let n=await this.deps.graphStore.findNodes(t?{namePattern:t,limit:500}:{limit:500});if(n.length===0)return{nodes:[],edges:[]};let r=t?await this.getEdgesForNodes(n):await this.deps.graphStore.findEdges({limit:e});return{nodes:n.map(e=>({id:e.id,name:e.name,type:e.type,...e.sourcePath?{sourcePath:e.sourcePath}:{}})),edges:i(r).map(e=>({fromId:e.fromId,toId:e.toId,type:e.type}))}}async getFileTree(){return this.deps.store.listSourcePaths()}async getEdgesForNodes(t){let n=this.deps.graphStore;if(!n)return[];let r=t.flatMap(t=>[n.findEdges({fromId:t.id,limit:e}),n.findEdges({toId:t.id,limit:e})]);return(await Promise.all(r)).flat()}};function n(e){return{path:e.path,title:e.title,category:e.category,tags:e.tags,content:e.content}}function r(e){return{sourcePath:e.record.sourcePath,contentType:e.record.contentType,score:e.score,content:e.record.content,headingPath:e.record.headingPath,startLine:e.record.startLine,endLine:e.record.endLine}}function i(e){let t=new Map;for(let n of e)t.set(n.id,n);return[...t.values()]}export{t as DirectKBClient};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { IKBClient, KBGraphData, KBKnowledgeEntry, KBSearchResult, KBStatus } from "./types.js";
|
|
2
|
-
import { DirectClientDeps, DirectKBClient } from "./direct-client.js";
|
|
3
|
-
import { McpKBClient } from "./mcp-client.js";
|
|
4
|
-
import { ParsedContent, extractStructured, extractText, parseToolResult, tryParseJson } from "./parsers.js";
|
|
5
|
-
export { type DirectClientDeps, DirectKBClient, type IKBClient, type KBGraphData, type KBKnowledgeEntry, type KBSearchResult, type KBStatus, McpKBClient, type ParsedContent, extractStructured, extractText, parseToolResult, tryParseJson };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{DirectKBClient as e}from"./direct-client.js";import{extractStructured as t,extractText as n,parseToolResult as r,tryParseJson as i}from"./parsers.js";import{McpKBClient as a}from"./mcp-client.js";export{e as DirectKBClient,a as McpKBClient,t as extractStructured,n as extractText,r as parseToolResult,i as tryParseJson};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { IKBClient, KBGraphData, KBKnowledgeEntry, KBSearchResult, KBStatus } from "./types.js";
|
|
2
|
-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
3
|
-
|
|
4
|
-
//#region packages/kb-client/src/mcp-client.d.ts
|
|
5
|
-
declare class McpKBClient implements IKBClient {
|
|
6
|
-
private readonly client;
|
|
7
|
-
constructor(client: Client);
|
|
8
|
-
getStatus(): Promise<KBStatus>;
|
|
9
|
-
search(query: string, options?: {
|
|
10
|
-
limit?: number;
|
|
11
|
-
mode?: 'hybrid' | 'semantic' | 'keyword';
|
|
12
|
-
}): Promise<KBSearchResult[]>;
|
|
13
|
-
listKnowledge(): Promise<KBKnowledgeEntry[]>;
|
|
14
|
-
readKnowledge(path: string): Promise<KBKnowledgeEntry | null>;
|
|
15
|
-
getGraph(query?: string): Promise<KBGraphData>;
|
|
16
|
-
getFileTree(): Promise<string[]>;
|
|
17
|
-
}
|
|
18
|
-
//#endregion
|
|
19
|
-
export { McpKBClient };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{extractStructured as e,extractText as t}from"./parsers.js";var n=class{constructor(e){this.client=e}async getStatus(){let e=await this.client.callTool({name:`status`,arguments:{}}),t=i(e);if(t)return{totalRecords:l(t.totalRecords),totalFiles:l(t.totalFiles),lastIndexedAt:d(t.lastIndexedAt),onboarded:!!t.onboarded};let n=r(e);return{totalRecords:a(n,/Records:\s*(\d+)/i),totalFiles:a(n,/Files:\s*(\d+)/i),lastIndexedAt:null,onboarded:!/not onboarded/i.test(n)}}async search(e,t){let n=await this.client.callTool({name:`search`,arguments:{query:e,limit:t?.limit??10,search_mode:t?.mode??`hybrid`}}),a=i(n);return a?.results?a.results.map(e=>({sourcePath:f(e.sourcePath??e.path),contentType:f(e.contentType,`unknown`),score:l(e.score),content:f(e.content??e.snippet),headingPath:p(e.headingPath),startLine:u(e.startLine),endLine:u(e.endLine)})):o(r(n))}async listKnowledge(){let e=i(await this.client.callTool({name:`list`,arguments:{}}));return e?.entries?e.entries.map(e=>({path:f(e.path),title:f(e.title),category:f(e.category),tags:m(e.tags),content:f(e.content)})):[]}async readKnowledge(e){try{let t=r(await this.client.callTool({name:`read`,arguments:{path:e}}));return!t||/not found/i.test(t)?null:{path:e,title:e.split(`/`).pop()??e,category:e.split(`/`).at(-2)??`uncategorized`,tags:[],content:t}}catch{return null}}async getGraph(e){let t=s(r(await this.client.callTool({name:`graph`,arguments:{action:`find_nodes`,...e?{name_pattern:e}:{},limit:500}})));return t.length===0?{nodes:[],edges:[]}:{nodes:t,edges:c(r(await this.client.callTool({name:`graph`,arguments:{action:`find_edges`,limit:1e3}})))}}async getFileTree(){let e=await this.client.callTool({name:`find`,arguments:{glob:`**/*`,limit:1e4}}),t=i(e);return t?.results?t.results.map(e=>typeof e==`string`?e:e.path??``).filter(e=>e.length>0):r(e).split(`
|
|
2
|
-
`).map(e=>e.trim()).filter(e=>e.length>0)}};function r(e){return t(e)}function i(t){return e(t)}function a(e,t){let n=t.exec(e);return n?Number.parseInt(n[1],10):0}function o(e){let t=[],n=e.split(/\n(?=\d+\.\s|\*\*)/);for(let e of n){let n=/(?:\*\*|`)([^*`]+?)(?:\*\*|`)/.exec(e),r=/score:\s*([\d.]+)/i.exec(e);n&&t.push({sourcePath:n[1].trim(),contentType:`unknown`,score:r?Number.parseFloat(r[1]):0,content:e.replace(/^.*\n/,``).trim().slice(0,200)})}return t}function s(e){let t=[];for(let n of e.split(`
|
|
3
|
-
`)){let e=/\*\*(.+?)\*\*\s*\(([^,)]+)(?:,\s*id:\s*`?([\w-]+)`?)?/.exec(n);e&&t.push({id:e[3]??`node-${t.length}`,name:e[1],type:e[2]})}return t}function c(e){let t=[];for(let n of e.split(`
|
|
4
|
-
`)){let e=/`?([\w-]+)`?\s*[—-]+\[(\w+)\][→>]\s*`?([\w-]+)`?/.exec(n);e&&t.push({fromId:e[1],toId:e[3],type:e[2]})}return t}function l(e){return typeof e==`number`?e:0}function u(e){return typeof e==`number`?e:void 0}function d(e){return typeof e==`string`?e:null}function f(e,t=``){return typeof e==`string`?e:t}function p(e){return typeof e==`string`?e:void 0}function m(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}export{n as McpKBClient};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
//#region packages/kb-client/src/parsers.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Content parsers for MCP tool responses.
|
|
4
|
-
* Used by McpKBClient to parse structuredContent from tool calls.
|
|
5
|
-
*/
|
|
6
|
-
interface ParsedContent<T = unknown> {
|
|
7
|
-
text: string;
|
|
8
|
-
structured?: T;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Extract text content from an MCP tool result.
|
|
12
|
-
*/
|
|
13
|
-
declare function extractText(result: {
|
|
14
|
-
content?: unknown;
|
|
15
|
-
} | null | undefined): string;
|
|
16
|
-
/**
|
|
17
|
-
* Extract structured content from an MCP tool result.
|
|
18
|
-
*/
|
|
19
|
-
declare function extractStructured<T>(result: {
|
|
20
|
-
structuredContent?: unknown;
|
|
21
|
-
} | null | undefined): T | undefined;
|
|
22
|
-
/**
|
|
23
|
-
* Parse a tool result, returning both text and structured content.
|
|
24
|
-
*/
|
|
25
|
-
declare function parseToolResult<T = unknown>(result: {
|
|
26
|
-
content?: unknown;
|
|
27
|
-
structuredContent?: unknown;
|
|
28
|
-
} | null | undefined): ParsedContent<T>;
|
|
29
|
-
/**
|
|
30
|
-
* Try to parse JSON from a text tool result.
|
|
31
|
-
* Returns undefined if parsing fails.
|
|
32
|
-
*/
|
|
33
|
-
declare function tryParseJson<T = unknown>(text: string): T | undefined;
|
|
34
|
-
//#endregion
|
|
35
|
-
export { ParsedContent, extractStructured, extractText, parseToolResult, tryParseJson };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function e(e){return!Array.isArray(e?.content)||e.content.length===0?``:e.content.filter(e=>typeof e==`object`&&!!e).filter(e=>e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
|
|
2
|
-
`)}function t(e){return e?.structuredContent}function n(n){return{text:e(n),structured:t(n)}}function r(e){try{return JSON.parse(e)}catch{return}}export{t as extractStructured,e as extractText,n as parseToolResult,r as tryParseJson};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
//#region packages/kb-client/src/types.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* IKBClient — Unified data access interface for KB consumers.
|
|
4
|
-
*
|
|
5
|
-
* Implemented by:
|
|
6
|
-
* - DirectKBClient (in-process, used by TUI)
|
|
7
|
-
* - McpKBClient (over MCP transport, used by Dashboard)
|
|
8
|
-
*/
|
|
9
|
-
interface KBStatus {
|
|
10
|
-
totalRecords: number;
|
|
11
|
-
totalFiles: number;
|
|
12
|
-
lastIndexedAt: string | null;
|
|
13
|
-
onboarded: boolean;
|
|
14
|
-
}
|
|
15
|
-
interface KBSearchResult {
|
|
16
|
-
sourcePath: string;
|
|
17
|
-
contentType: string;
|
|
18
|
-
score: number;
|
|
19
|
-
content: string;
|
|
20
|
-
headingPath?: string;
|
|
21
|
-
startLine?: number;
|
|
22
|
-
endLine?: number;
|
|
23
|
-
}
|
|
24
|
-
interface KBKnowledgeEntry {
|
|
25
|
-
path: string;
|
|
26
|
-
title: string;
|
|
27
|
-
category: string;
|
|
28
|
-
tags: string[];
|
|
29
|
-
content: string;
|
|
30
|
-
}
|
|
31
|
-
interface KBGraphData {
|
|
32
|
-
nodes: Array<{
|
|
33
|
-
id: string;
|
|
34
|
-
name: string;
|
|
35
|
-
type: string;
|
|
36
|
-
sourcePath?: string;
|
|
37
|
-
}>;
|
|
38
|
-
edges: Array<{
|
|
39
|
-
fromId: string;
|
|
40
|
-
toId: string;
|
|
41
|
-
type: string;
|
|
42
|
-
}>;
|
|
43
|
-
}
|
|
44
|
-
interface IKBClient {
|
|
45
|
-
/** Get KB status. */
|
|
46
|
-
getStatus(): Promise<KBStatus>;
|
|
47
|
-
/** Search the knowledge base. */
|
|
48
|
-
search(query: string, options?: {
|
|
49
|
-
limit?: number;
|
|
50
|
-
mode?: 'hybrid' | 'semantic' | 'keyword';
|
|
51
|
-
}): Promise<KBSearchResult[]>;
|
|
52
|
-
/** List curated knowledge entries. */
|
|
53
|
-
listKnowledge(): Promise<KBKnowledgeEntry[]>;
|
|
54
|
-
/** Read a specific curated entry. */
|
|
55
|
-
readKnowledge(path: string): Promise<KBKnowledgeEntry | null>;
|
|
56
|
-
/** Get knowledge graph data. */
|
|
57
|
-
getGraph(query?: string): Promise<KBGraphData>;
|
|
58
|
-
/** Get file tree of indexed sources. */
|
|
59
|
-
getFileTree(): Promise<string[]>;
|
|
60
|
-
}
|
|
61
|
-
//#endregion
|
|
62
|
-
export { IKBClient, KBGraphData, KBKnowledgeEntry, KBSearchResult, KBStatus };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{};
|