opencode-deepa 1.0.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/README.md +38 -0
- package/dist/cli/config-io.d.ts +23 -0
- package/dist/cli/config-io.d.ts.map +1 -0
- package/dist/cli/config-manager.d.ts +6 -0
- package/dist/cli/config-manager.d.ts.map +1 -0
- package/dist/cli/custom-skills.d.ts +26 -0
- package/dist/cli/custom-skills.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +706 -0
- package/dist/cli/install.d.ts +3 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/paths.d.ts +10 -0
- package/dist/cli/paths.d.ts.map +1 -0
- package/dist/cli/providers.d.ts +3 -0
- package/dist/cli/providers.d.ts.map +1 -0
- package/dist/cli/system.d.ts +7 -0
- package/dist/cli/system.d.ts.map +1 -0
- package/dist/cli/types.d.ts +37 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/config/agent-mcps.d.ts +19 -0
- package/dist/config/agent-mcps.d.ts.map +1 -0
- package/dist/config/mcp-types.d.ts +4 -0
- package/dist/config/mcp-types.d.ts.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +305 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/skills/index.d.ts +53 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/tools/codeindexScan.d.ts +7 -0
- package/dist/tools/codeindexScan.d.ts.map +1 -0
- package/dist/tools/deepaSummary/index.d.ts +7 -0
- package/dist/tools/deepaSummary/index.d.ts.map +1 -0
- package/dist/tools/fastcode.d.ts +7 -0
- package/dist/tools/fastcode.d.ts.map +1 -0
- package/dist/tools/gitingest.d.ts +10 -0
- package/dist/tools/gitingest.d.ts.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/opencode-deepa.schema.json +74 -0
- package/package.json +68 -0
- package/src/skills/deepa-planning/SKILL.md +98 -0
- package/src/skills/index.ts +142 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function getConfigDir(): string;
|
|
2
|
+
export declare function getOpenCodeConfigPaths(): string[];
|
|
3
|
+
export declare function getConfigJson(): string;
|
|
4
|
+
export declare function getConfigJsonc(): string;
|
|
5
|
+
export declare function getLiteConfig(): string;
|
|
6
|
+
export declare function getLiteConfigJsonc(): string;
|
|
7
|
+
export declare function getExistingLiteConfigPath(): string;
|
|
8
|
+
export declare function getExistingConfigPath(): string;
|
|
9
|
+
export declare function ensureConfigDir(): void;
|
|
10
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/cli/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,IAAI,MAAM,CAQrC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAGjD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAQ9C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/cli/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0EzB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function resolveOpenCodePath(): string;
|
|
2
|
+
export declare function isOpenCodeInstalled(): Promise<boolean>;
|
|
3
|
+
export declare function isTmuxInstalled(): Promise<boolean>;
|
|
4
|
+
export declare function getOpenCodeVersion(): Promise<string | null>;
|
|
5
|
+
export declare function getOpenCodePath(): string | null;
|
|
6
|
+
export declare function fetchLatestVersion(packageName: string): Promise<string | null>;
|
|
7
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/cli/system.ts"],"names":[],"mappings":"AAkDA,wBAAgB,mBAAmB,IAAI,MAAM,CAsB5C;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAmB5D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAWxD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBjE;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type BooleanArg = 'yes' | 'no';
|
|
2
|
+
export interface InstallArgs {
|
|
3
|
+
tui: boolean;
|
|
4
|
+
tmux?: BooleanArg;
|
|
5
|
+
skills?: BooleanArg;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface OpenCodeConfig {
|
|
9
|
+
plugin?: string[];
|
|
10
|
+
provider?: Record<string, unknown>;
|
|
11
|
+
agent?: Record<string, unknown>;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface InstallConfig {
|
|
15
|
+
hasTmux: boolean;
|
|
16
|
+
installSkills: boolean;
|
|
17
|
+
installCustomSkills: boolean;
|
|
18
|
+
dryRun?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ConfigMergeResult {
|
|
21
|
+
success: boolean;
|
|
22
|
+
configPath: string;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DetectedConfig {
|
|
26
|
+
isInstalled: boolean;
|
|
27
|
+
hasKimi: boolean;
|
|
28
|
+
hasOpenAI: boolean;
|
|
29
|
+
hasAnthropic?: boolean;
|
|
30
|
+
hasCopilot?: boolean;
|
|
31
|
+
hasZaiPlan?: boolean;
|
|
32
|
+
hasAntigravity: boolean;
|
|
33
|
+
hasChutes?: boolean;
|
|
34
|
+
hasOpencodeZen: boolean;
|
|
35
|
+
hasTmux: boolean;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type AgentName = 'deepa';
|
|
2
|
+
export interface PluginConfig {
|
|
3
|
+
disabled_mcps?: string[];
|
|
4
|
+
}
|
|
5
|
+
/** Default MCPs per agent - "*" means all MCPs, "!item" excludes specific MCPs */
|
|
6
|
+
export declare const DEFAULT_AGENT_MCPS: Record<AgentName, string[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Parse a list with wildcard and exclusion syntax.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseList(items: string[], allAvailable: string[]): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Get available MCP names from schema and config.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAvailableMcpNames(config?: PluginConfig): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Get the MCP list for an agent (from config or defaults).
|
|
17
|
+
*/
|
|
18
|
+
export declare function getAgentMcpList(agentName: string, config?: PluginConfig): string[];
|
|
19
|
+
//# sourceMappingURL=agent-mcps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-mcps.d.ts","sourceRoot":"","sources":["../../src/config/agent-mcps.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;AAGhC,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAE1D,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiB3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAIpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,EAAE,CAKV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-types.d.ts","sourceRoot":"","sources":["../../src/config/mcp-types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa;;CAEzB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentConfig } from '@opencode-ai/sdk/v2';
|
|
2
|
+
export interface AgentDefinition {
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
config: AgentConfig;
|
|
6
|
+
/** Priority-ordered model entries for runtime fallback resolution. */
|
|
7
|
+
_modelArray?: Array<{
|
|
8
|
+
id: string;
|
|
9
|
+
variant?: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare function createDeepAAgent(model?: string | Array<string | {
|
|
13
|
+
id: string;
|
|
14
|
+
variant?: string;
|
|
15
|
+
}>, customPrompt?: string, customAppendPrompt?: string): AgentDefinition;
|
|
16
|
+
export declare function createDeepAPlannerAgent(model?: string | Array<string | {
|
|
17
|
+
id: string;
|
|
18
|
+
variant?: string;
|
|
19
|
+
}>, customPrompt?: string, customAppendPrompt?: string): AgentDefinition;
|
|
20
|
+
export declare function createDeepABuilderAgent(model?: string | Array<string | {
|
|
21
|
+
id: string;
|
|
22
|
+
variant?: string;
|
|
23
|
+
}>, customPrompt?: string, customAppendPrompt?: string): AgentDefinition;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AA2ID,wBAAgB,gBAAgB,CAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjE,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,CA4BjB;AAoDD,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjE,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,CA4BjB;AA8CD,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjE,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,CA4BjB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/index.ts
|
|
3
|
+
var DEEPA_PROMPT = `<Role>
|
|
4
|
+
You are DeepA, an AI coding orchestrator that optimizes for quality, speed, cost, and reliability by delegating to specialist agents when it provides net efficiency gains.
|
|
5
|
+
</Role>
|
|
6
|
+
|
|
7
|
+
<Agents>
|
|
8
|
+
|
|
9
|
+
@explorer
|
|
10
|
+
- Role: Parallel search specialist for discovering unknowns across the codebase
|
|
11
|
+
- Capabilities: Glob, grep, AST queries to locate files, symbols, patterns
|
|
12
|
+
- **Delegate when:** Need to discover what exists before planning \u2022 Parallel searches speed discovery \u2022 Need summarized map vs full contents \u2022 Broad/uncertain scope
|
|
13
|
+
- **Don't delegate when:** Know the path and need actual content \u2022 Need full file anyway \u2022 Single specific lookup \u2022 About to edit the file
|
|
14
|
+
|
|
15
|
+
@librarian
|
|
16
|
+
- Role: Authoritative source for current library docs and API references
|
|
17
|
+
- Capabilities: Fetches latest official docs, examples, API signatures, version-specific behavior via grep_app MCP
|
|
18
|
+
- **Delegate when:** Libraries with frequent API changes (React, Next.js, AI SDKs) \u2022 Complex APIs needing official examples (ORMs, auth) \u2022 Version-specific behavior matters \u2022 Unfamiliar library \u2022 Edge cases or advanced features \u2022 Nuanced best practices
|
|
19
|
+
- **Don't delegate when:** Standard usage you're confident about (Array.map(), fetch()) \u2022 Simple stable APIs \u2022 General programming knowledge \u2022 Info already in conversation \u2022 Built-in language features
|
|
20
|
+
- **Rule of thumb:** "How does this library work?" \u2192 @librarian. "How does programming work?" \u2192 yourself.
|
|
21
|
+
|
|
22
|
+
@oracle
|
|
23
|
+
- Role: Strategic advisor for high-stakes decisions and persistent problems
|
|
24
|
+
- Capabilities: Deep architectural reasoning, system-level trade-offs, complex debugging
|
|
25
|
+
- Tools/Constraints: Slow, expensive, high-quality\u2014use sparingly when thoroughness beats speed
|
|
26
|
+
- **Delegate when:** Major architectural decisions with long-term impact \u2022 Problems persisting after 2+ fix attempts \u2022 High-risk multi-system refactors \u2022 Costly trade-offs (performance vs maintainability) \u2022 Complex debugging with unclear root cause \u2022 Security/scalability/data integrity decisions \u2022 Genuinely uncertain and cost of wrong choice is high
|
|
27
|
+
- **Don't delegate when:** Routine decisions you're confident about \u2022 First bug fix attempt \u2022 Straightforward trade-offs \u2022 Tactical "how" vs strategic "should" \u2022 Time-sensitive good-enough decisions \u2022 Quick research/testing can answer
|
|
28
|
+
- **Rule of thumb:** Need senior architect review? \u2192 @oracle. Just do it and PR? \u2192 yourself.
|
|
29
|
+
|
|
30
|
+
@designer
|
|
31
|
+
- Role: UI/UX specialist for intentional, polished experiences
|
|
32
|
+
- Capabilities: Visual direction, interactions, responsive layouts, design systems with aesthetic intent
|
|
33
|
+
- **Delegate when:** User-facing interfaces needing polish \u2022 Responsive layouts \u2022 UX-critical components (forms, nav, dashboards) \u2022 Visual consistency systems \u2022 Animations/micro-interactions \u2022 Landing/marketing pages \u2022 Refining functional\u2192delightful
|
|
34
|
+
- **Don't delegate when:** Backend/logic with no visual \u2022 Quick prototypes where design doesn't matter yet
|
|
35
|
+
- **Rule of thumb:** Users see it and polish matters? \u2192 @designer. Headless/functional? \u2192 yourself.
|
|
36
|
+
|
|
37
|
+
@fixer
|
|
38
|
+
- Role: Fast, parallel execution specialist for well-defined tasks
|
|
39
|
+
- Capabilities: Efficient implementation when spec and context are clear
|
|
40
|
+
- Tools/Constraints: Execution-focused\u2014no research, no architectural decisions
|
|
41
|
+
- **Delegate when:** Clearly specified with known approach \u2022 3+ independent parallel tasks \u2022 Straightforward but time-consuming \u2022 Solid plan needing execution \u2022 Repetitive multi-location changes \u2022 Overhead < time saved by parallelization
|
|
42
|
+
- **Don't delegate when:** Needs discovery/research/decisions \u2022 Single small change (<20 lines, one file) \u2022 Unclear requirements needing iteration \u2022 Explaining > doing \u2022 Tight integration with your current work \u2022 Sequential dependencies
|
|
43
|
+
- **Parallelization:** 3+ independent tasks \u2192 spawn multiple @fixers. 1-2 simple tasks \u2192 do yourself.
|
|
44
|
+
- **Rule of thumb:** Explaining > doing? \u2192 yourself. Can split to parallel streams? \u2192 multiple @fixers.
|
|
45
|
+
|
|
46
|
+
</Agents>
|
|
47
|
+
|
|
48
|
+
<Workflow>
|
|
49
|
+
|
|
50
|
+
## 0. Scan Codebase
|
|
51
|
+
- Run \`codeindexScan\` to get a quick overview of the codebase structure and key files.
|
|
52
|
+
|
|
53
|
+
## 1. Understand
|
|
54
|
+
Parse request: explicit requirements + implicit needs.
|
|
55
|
+
|
|
56
|
+
## 2. Path Analysis
|
|
57
|
+
Evaluate approach by: quality, speed, cost, reliability.
|
|
58
|
+
Choose the path that optimizes all four.
|
|
59
|
+
|
|
60
|
+
## 3. Delegation Check
|
|
61
|
+
**STOP. Review specialists before acting.**
|
|
62
|
+
|
|
63
|
+
Each specialist delivers 10x results in their domain:
|
|
64
|
+
- @explorer \u2192 Parallel discovery when you need to find unknowns, not read knowns
|
|
65
|
+
- @librarian \u2192 Complex/evolving APIs where docs prevent errors, not basic usage
|
|
66
|
+
- @oracle \u2192 High-stakes decisions where wrong choice is costly, not routine calls
|
|
67
|
+
- @designer \u2192 User-facing experiences where polish matters, not internal logic
|
|
68
|
+
- @fixer \u2192 Parallel execution of clear specs, not explaining trivial changes
|
|
69
|
+
|
|
70
|
+
**Delegation efficiency:**
|
|
71
|
+
- Reference paths/lines, don't paste files (src/app.ts:42 not full contents)
|
|
72
|
+
- Provide context summaries, let specialists read what they need
|
|
73
|
+
- Brief user on delegation goal before each call
|
|
74
|
+
- Skip delegation if overhead \u2265 doing it yourself
|
|
75
|
+
|
|
76
|
+
**Fixer parallelization:**
|
|
77
|
+
- 3+ independent tasks? Spawn multiple @fixers simultaneously
|
|
78
|
+
- 1-2 simple tasks? Do it yourself
|
|
79
|
+
- Sequential dependencies? Handle serially or do yourself
|
|
80
|
+
|
|
81
|
+
## 4. Parallelize
|
|
82
|
+
Can tasks run simultaneously?
|
|
83
|
+
- Multiple @explorer searches across different domains?
|
|
84
|
+
- @explorer + @librarian research in parallel?
|
|
85
|
+
- Multiple @fixer instances for independent changes?
|
|
86
|
+
|
|
87
|
+
Balance: respect dependencies, avoid parallelizing what must be sequential.
|
|
88
|
+
|
|
89
|
+
## 5. Execute
|
|
90
|
+
1. Break complex tasks into todos if needed
|
|
91
|
+
2. Fire parallel research/implementation
|
|
92
|
+
3. Delegate to specialists or do it yourself based on step 3
|
|
93
|
+
4. Integrate results
|
|
94
|
+
5. Adjust if needed
|
|
95
|
+
|
|
96
|
+
## 6. Verify
|
|
97
|
+
- Run \`lsp_diagnostics\` for errors
|
|
98
|
+
- Suggest \`simplify\` skill when applicable
|
|
99
|
+
- Confirm specialists completed successfully
|
|
100
|
+
- Verify solution meets requirements
|
|
101
|
+
|
|
102
|
+
## Agent Role Mapping
|
|
103
|
+
When a workflow calls for an implementer subagent: dispatch \`@fixer\`. Fixer has enforced constraints (no research, no delegation, structured output) that match the implementer role exactly.
|
|
104
|
+
When a workflow calls for a reviewer subagent: dispatch \`@oracle\`. Oracle has the depth for architectural review and access to code review skills.
|
|
105
|
+
|
|
106
|
+
</Workflow>
|
|
107
|
+
|
|
108
|
+
<Communication>
|
|
109
|
+
|
|
110
|
+
## Clarity Over Assumptions
|
|
111
|
+
- If request is vague or has multiple valid interpretations, ask a targeted question before proceeding
|
|
112
|
+
- Don't guess at critical details (file paths, API choices, architectural decisions)
|
|
113
|
+
- Do make reasonable assumptions for minor details and state them briefly
|
|
114
|
+
|
|
115
|
+
## Concise Execution
|
|
116
|
+
- Answer directly, no preamble
|
|
117
|
+
- Don't summarize what you did unless asked
|
|
118
|
+
- Don't explain code unless asked
|
|
119
|
+
- One-word answers are fine when appropriate
|
|
120
|
+
- Brief delegation notices: "Checking docs via @librarian..." not "I'm going to delegate to @librarian because..."
|
|
121
|
+
|
|
122
|
+
## No Flattery
|
|
123
|
+
Never: "Great question!" "Excellent idea!" "Smart choice!" or any praise of user input.
|
|
124
|
+
|
|
125
|
+
## Honest Pushback
|
|
126
|
+
When user's approach seems problematic:
|
|
127
|
+
- State concern + alternative concisely
|
|
128
|
+
- Ask if they want to proceed anyway
|
|
129
|
+
- Don't lecture, don't blindly implement
|
|
130
|
+
|
|
131
|
+
## Example
|
|
132
|
+
**Bad:** "Great question! Let me think about the best approach here. I'm going to delegate to @librarian to check the latest Next.js documentation for the App Router, and then I'll implement the solution for you."
|
|
133
|
+
|
|
134
|
+
**Good:** "Checking Next.js App Router docs via @librarian..."
|
|
135
|
+
[proceeds with implementation]
|
|
136
|
+
|
|
137
|
+
</Communication>
|
|
138
|
+
`;
|
|
139
|
+
function createDeepAAgent(model, customPrompt, customAppendPrompt) {
|
|
140
|
+
let prompt = DEEPA_PROMPT;
|
|
141
|
+
if (customPrompt) {
|
|
142
|
+
prompt = customPrompt;
|
|
143
|
+
} else if (customAppendPrompt) {
|
|
144
|
+
prompt = `${DEEPA_PROMPT}
|
|
145
|
+
|
|
146
|
+
${customAppendPrompt}`;
|
|
147
|
+
}
|
|
148
|
+
const definition = {
|
|
149
|
+
name: "deepa",
|
|
150
|
+
description: "AI coding orchestrator that delegates tasks to specialist agents for optimal quality, speed, and cost",
|
|
151
|
+
config: {
|
|
152
|
+
temperature: 0.1,
|
|
153
|
+
prompt
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
if (Array.isArray(model)) {
|
|
157
|
+
definition._modelArray = model.map((m) => typeof m === "string" ? { id: m } : m);
|
|
158
|
+
} else if (typeof model === "string" && model) {
|
|
159
|
+
definition.config.model = model;
|
|
160
|
+
}
|
|
161
|
+
return definition;
|
|
162
|
+
}
|
|
163
|
+
var PLANNER_PROMPT = `<Role>
|
|
164
|
+
You are DeepA-planner, a specialized agent for strategic planning and task decomposition. You excel at breaking down complex goals into actionable steps, identifying dependencies, and creating clear implementation plans.
|
|
165
|
+
</Role>
|
|
166
|
+
|
|
167
|
+
<Capabilities>
|
|
168
|
+
- Strategic planning and roadmap creation
|
|
169
|
+
- Task decomposition and dependency analysis
|
|
170
|
+
- Risk assessment and mitigation planning
|
|
171
|
+
- Resource estimation and timeline creation
|
|
172
|
+
</Capabilities>
|
|
173
|
+
|
|
174
|
+
<Workflow>
|
|
175
|
+
## 1. Understand the Goal
|
|
176
|
+
- Parse the user's request to identify explicit requirements and implicit needs
|
|
177
|
+
- Ask clarifying questions if needed (using the ask-questions-if-underspecified skill when appropriate)
|
|
178
|
+
|
|
179
|
+
## 2. Analyze Context
|
|
180
|
+
- Review any provided context or documentation
|
|
181
|
+
- Scan the codebase structure using codeindexScan if not already done
|
|
182
|
+
- Identify relevant files, patterns, and existing implementations
|
|
183
|
+
|
|
184
|
+
## 3. Create the Plan
|
|
185
|
+
- Break down the goal into bite-sized, independent tasks (ideal size: 20-60 minutes each)
|
|
186
|
+
- Identify dependencies between tasks (sequential vs. parallelizable)
|
|
187
|
+
- Assign appropriate specialist agents to each task (@fixer for implementation, @designer for UI, etc.)
|
|
188
|
+
- Define clear deliverables and acceptance criteria for each task
|
|
189
|
+
- Estimate effort and timeline for each task
|
|
190
|
+
|
|
191
|
+
## 4. Present the Plan
|
|
192
|
+
- Show the task breakdown with estimated effort and assigned agents
|
|
193
|
+
- Highlight which tasks can run in parallel
|
|
194
|
+
- Request user confirmation before proceeding
|
|
195
|
+
</Workflow>
|
|
196
|
+
|
|
197
|
+
<Communication>
|
|
198
|
+
## Clarity Over Assumptions
|
|
199
|
+
- If request is vague or has multiple valid interpretations, ask a targeted question before proceeding
|
|
200
|
+
- Don't guess at critical details (file paths, API choices, architectural decisions)
|
|
201
|
+
- Do make reasonable assumptions for minor details and state them briefly
|
|
202
|
+
|
|
203
|
+
## Concise Execution
|
|
204
|
+
- Answer directly, no preamble
|
|
205
|
+
- Don't summarize what you did unless asked
|
|
206
|
+
- Don't explain code unless asked
|
|
207
|
+
- One-word answers are fine when appropriate
|
|
208
|
+
</Communication>
|
|
209
|
+
`;
|
|
210
|
+
function createDeepAPlannerAgent(model, customPrompt, customAppendPrompt) {
|
|
211
|
+
let prompt = PLANNER_PROMPT;
|
|
212
|
+
if (customPrompt) {
|
|
213
|
+
prompt = customPrompt;
|
|
214
|
+
} else if (customAppendPrompt) {
|
|
215
|
+
prompt = `${PLANNER_PROMPT}
|
|
216
|
+
|
|
217
|
+
${customAppendPrompt}`;
|
|
218
|
+
}
|
|
219
|
+
const definition = {
|
|
220
|
+
name: "deepa-planner",
|
|
221
|
+
description: "Specialized agent for strategic planning and task decomposition",
|
|
222
|
+
config: {
|
|
223
|
+
temperature: 0.2,
|
|
224
|
+
prompt
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
if (Array.isArray(model)) {
|
|
228
|
+
definition._modelArray = model.map((m) => typeof m === "string" ? { id: m } : m);
|
|
229
|
+
} else if (typeof model === "string" && model) {
|
|
230
|
+
definition.config.model = model;
|
|
231
|
+
}
|
|
232
|
+
return definition;
|
|
233
|
+
}
|
|
234
|
+
var BUILDER_PROMPT = `<Role>
|
|
235
|
+
You are DeepA-builder, a specialized agent for implementation and code generation. You excel at turning plans into working code, following best practices, and producing clean, maintainable solutions.
|
|
236
|
+
</Role>
|
|
237
|
+
|
|
238
|
+
<Capabilities>
|
|
239
|
+
- Code implementation and generation
|
|
240
|
+
- Refactoring and code improvement
|
|
241
|
+
- Bug fixing and issue resolution
|
|
242
|
+
- Testing and validation
|
|
243
|
+
</Capabilities>
|
|
244
|
+
|
|
245
|
+
<Workflow>
|
|
246
|
+
## 1. Review the Plan
|
|
247
|
+
- Carefully review the provided implementation plan
|
|
248
|
+
- Identify the specific task assigned to you
|
|
249
|
+
- Clarify any ambiguities in the requirements
|
|
250
|
+
|
|
251
|
+
## 2. Implement the Solution
|
|
252
|
+
- Write clean, well-documented code following project conventions
|
|
253
|
+
- Use appropriate design patterns and best practices
|
|
254
|
+
- Ensure the solution is modular and testable
|
|
255
|
+
- Handle edge cases and error conditions appropriately
|
|
256
|
+
|
|
257
|
+
## 3. Validate and Refine
|
|
258
|
+
- Run lsp_diagnostics to check for errors
|
|
259
|
+
- Suggest the simplify skill when applicable
|
|
260
|
+
- Review the implementation against the original requirements
|
|
261
|
+
- Make any necessary adjustments based on feedback
|
|
262
|
+
</Workflow>
|
|
263
|
+
|
|
264
|
+
<Communication>
|
|
265
|
+
## Clarity Over Assumptions
|
|
266
|
+
- If request is vague or has multiple valid interpretations, ask a targeted question before proceeding
|
|
267
|
+
- Don't guess at critical details (file paths, API choices, architectural decisions)
|
|
268
|
+
- Do make reasonable assumptions for minor details and state them briefly
|
|
269
|
+
|
|
270
|
+
## Concise Execution
|
|
271
|
+
- Answer directly, no preamble
|
|
272
|
+
- Don't summarize what you did unless asked
|
|
273
|
+
- Don't explain code unless asked
|
|
274
|
+
- One-word answers are fine when appropriate
|
|
275
|
+
</Communication>
|
|
276
|
+
`;
|
|
277
|
+
function createDeepABuilderAgent(model, customPrompt, customAppendPrompt) {
|
|
278
|
+
let prompt = BUILDER_PROMPT;
|
|
279
|
+
if (customPrompt) {
|
|
280
|
+
prompt = customPrompt;
|
|
281
|
+
} else if (customAppendPrompt) {
|
|
282
|
+
prompt = `${BUILDER_PROMPT}
|
|
283
|
+
|
|
284
|
+
${customAppendPrompt}`;
|
|
285
|
+
}
|
|
286
|
+
const definition = {
|
|
287
|
+
name: "deepa-builder",
|
|
288
|
+
description: "Specialized agent for implementation and code generation",
|
|
289
|
+
config: {
|
|
290
|
+
temperature: 0.2,
|
|
291
|
+
prompt
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
if (Array.isArray(model)) {
|
|
295
|
+
definition._modelArray = model.map((m) => typeof m === "string" ? { id: m } : m);
|
|
296
|
+
} else if (typeof model === "string" && model) {
|
|
297
|
+
definition.config.model = model;
|
|
298
|
+
}
|
|
299
|
+
return definition;
|
|
300
|
+
}
|
|
301
|
+
export {
|
|
302
|
+
createDeepAPlannerAgent,
|
|
303
|
+
createDeepABuilderAgent,
|
|
304
|
+
createDeepAAgent
|
|
305
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A recommended skill to install via `npx skills add`.
|
|
3
|
+
*/
|
|
4
|
+
export interface RecommendedSkill {
|
|
5
|
+
/** Human-readable name for prompts */
|
|
6
|
+
name: string;
|
|
7
|
+
/** GitHub repo URL for `npx skills add` */
|
|
8
|
+
repo: string;
|
|
9
|
+
/** Skill name within the repo (--skill flag) */
|
|
10
|
+
skillName: string;
|
|
11
|
+
/** List of agents that should auto-allow this skill */
|
|
12
|
+
allowedAgents: string[];
|
|
13
|
+
/** Description shown to user during install */
|
|
14
|
+
description: string;
|
|
15
|
+
/** Optional commands to run after the skill is added */
|
|
16
|
+
postInstallCommands?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* List of recommended skills.
|
|
20
|
+
* Add new skills here to include them in the installation flow.
|
|
21
|
+
*/
|
|
22
|
+
export declare const RECOMMENDED_SKILLS: RecommendedSkill[];
|
|
23
|
+
/**
|
|
24
|
+
* Install a skill using `npx skills add`.
|
|
25
|
+
* @param skill - The skill to install
|
|
26
|
+
* @returns True if installation succeeded, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
export declare function installSkill(skill: RecommendedSkill): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* A skill that is managed externally (e.g. user-installed) and needs
|
|
31
|
+
* permission grants but is NOT installed by this plugin's CLI.
|
|
32
|
+
*/
|
|
33
|
+
export interface PermissionOnlySkill {
|
|
34
|
+
/** Skill name — must match the name OpenCode uses for permission checks */
|
|
35
|
+
name: string;
|
|
36
|
+
/** List of agents that should auto-allow this skill */
|
|
37
|
+
allowedAgents: string[];
|
|
38
|
+
/** Human-readable description (for documentation only) */
|
|
39
|
+
description: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Skills managed externally (not installed by this plugin's CLI).
|
|
43
|
+
* Entries here only affect agent permission grants — nothing is installed.
|
|
44
|
+
*/
|
|
45
|
+
export declare const PERMISSION_ONLY_SKILLS: PermissionOnlySkill[];
|
|
46
|
+
/**
|
|
47
|
+
* Get permission presets for a specific agent based on recommended skills.
|
|
48
|
+
* @param agentName - The name of the agent
|
|
49
|
+
* @param skillList - Optional explicit list of skills to allow (overrides recommendations)
|
|
50
|
+
* @returns Permission rules for the skill permission type
|
|
51
|
+
*/
|
|
52
|
+
export declare function getSkillPermissionsForAgent(agentName: string, skillList?: string[]): Record<string, 'allow' | 'ask' | 'deny'>;
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA0BhD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAK7D;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAMvD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC,CA6C1C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
/**
|
|
3
|
+
* Tool to quickly scan the codebase structure and key files to provide a quick overview.
|
|
4
|
+
* This mimics a basic code index for faster agent operation.
|
|
5
|
+
*/
|
|
6
|
+
export declare const codeindexScanTool: ReturnType<typeof tool>;
|
|
7
|
+
//# sourceMappingURL=codeindexScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeindexScan.d.ts","sourceRoot":"","sources":["../../src/tools/codeindexScan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,qBAAqB,CAAA;AAS5D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAuGxB,UAAU,CAAC,OAAO,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
/**
|
|
3
|
+
* Tool to periodically summarize conversations and store them in .deepa folder for long-term memory.
|
|
4
|
+
* Includes session ID to distinguish between different sessions.
|
|
5
|
+
*/
|
|
6
|
+
export declare const deepaSummaryTool: ReturnType<typeof tool>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/deepaSummary/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,qBAAqB,CAAA;AAe5D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAqFvB,UAAU,CAAC,OAAO,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
/**
|
|
3
|
+
* Fastcode tool for reading and editing multiple files quickly.
|
|
4
|
+
* Uses filesystem operations (equivalent to filesystem MCP) to perform batch replacements.
|
|
5
|
+
*/
|
|
6
|
+
export declare const fastcodeTool: ReturnType<typeof tool>;
|
|
7
|
+
//# sourceMappingURL=fastcode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastcode.d.ts","sourceRoot":"","sources":["../../src/tools/fastcode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,qBAAqB,CAAA;AAW5D;;;GAGG;AACH,eAAO,MAAM,YAAY,EAqFnB,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
export interface GitingestArgs {
|
|
3
|
+
url: string;
|
|
4
|
+
maxFileSize?: number;
|
|
5
|
+
pattern?: string;
|
|
6
|
+
patternType?: "include" | "exclude";
|
|
7
|
+
}
|
|
8
|
+
export declare function fetchGitingest(args: GitingestArgs): Promise<string>;
|
|
9
|
+
export declare const gitingestTool: ReturnType<typeof tool>;
|
|
10
|
+
//# sourceMappingURL=gitingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitingest.d.ts","sourceRoot":"","sources":["../../src/tools/gitingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,qBAAqB,CAAA;AAQ5D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACpC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBzE;AAED,eAAO,MAAM,aAAa,EAuBpB,UAAU,CAAC,OAAO,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "opencode-deepa configuration schema",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"preset": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"description": "The preset to use (e.g., openai, kimi, copilot, zai-plan)"
|
|
9
|
+
},
|
|
10
|
+
"presets": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"model": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "The model to use for this agent (provider/model format)"
|
|
20
|
+
},
|
|
21
|
+
"variant": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "The variant of the model (e.g., high, medium, low)"
|
|
24
|
+
},
|
|
25
|
+
"skills": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"description": "List of skills to enable for this agent"
|
|
31
|
+
},
|
|
32
|
+
"mcps": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
37
|
+
"description": "List of MCPs to enable for this agent"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"required": [
|
|
41
|
+
"model"
|
|
42
|
+
],
|
|
43
|
+
"additionalProperties": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"tmux": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"properties": {
|
|
50
|
+
"enabled": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"description": "Whether to enable TMUX integration"
|
|
53
|
+
},
|
|
54
|
+
"layout": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "TMUX layout (e.g., main-vertical, tiled)"
|
|
57
|
+
},
|
|
58
|
+
"main_pane_size": {
|
|
59
|
+
"type": "number",
|
|
60
|
+
"description": "Size of the main pane in TMUX (percentage)"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": [
|
|
64
|
+
"enabled"
|
|
65
|
+
],
|
|
66
|
+
"additionalProperties": false
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"required": [
|
|
70
|
+
"preset",
|
|
71
|
+
"presets"
|
|
72
|
+
],
|
|
73
|
+
"additionalProperties": false
|
|
74
|
+
}
|