opencode-ultra 0.9.0 → 0.9.2
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/dist/config.d.ts +2 -0
- package/dist/index.js +27 -17
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -79,6 +79,8 @@ declare const PluginConfigSchema: z.ZodObject<{
|
|
|
79
79
|
totalTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
80
80
|
skipReview: z.ZodOptional<z.ZodBoolean>;
|
|
81
81
|
skipTests: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
implementAgent: z.ZodOptional<z.ZodString>;
|
|
83
|
+
reviewAgent: z.ZodOptional<z.ZodString>;
|
|
82
84
|
}, z.core.$strip>>;
|
|
83
85
|
}, z.core.$loose>;
|
|
84
86
|
export type PluginConfig = z.infer<typeof PluginConfigSchema>;
|
package/dist/index.js
CHANGED
|
@@ -14700,7 +14700,9 @@ var PluginConfigSchema = exports_external.object({
|
|
|
14700
14700
|
iterationTimeoutMs: exports_external.number().min(1e4).optional(),
|
|
14701
14701
|
totalTimeoutMs: exports_external.number().min(60000).optional(),
|
|
14702
14702
|
skipReview: exports_external.boolean().optional(),
|
|
14703
|
-
skipTests: exports_external.boolean().optional()
|
|
14703
|
+
skipTests: exports_external.boolean().optional(),
|
|
14704
|
+
implementAgent: exports_external.string().optional(),
|
|
14705
|
+
reviewAgent: exports_external.string().optional()
|
|
14704
14706
|
}).optional()
|
|
14705
14707
|
}).passthrough();
|
|
14706
14708
|
function parsePluginConfig(raw) {
|
|
@@ -14799,7 +14801,7 @@ function loadConfig(projectDir) {
|
|
|
14799
14801
|
// src/agents/index.ts
|
|
14800
14802
|
var BUILTIN_AGENTS = {
|
|
14801
14803
|
sisyphus: {
|
|
14802
|
-
model: "openai
|
|
14804
|
+
model: "openai/gpt-5.3-codex",
|
|
14803
14805
|
description: "Primary orchestrator \u2014 analyzes requests, reads code directly, delegates implementation to specialists",
|
|
14804
14806
|
prompt: "__DYNAMIC__",
|
|
14805
14807
|
maxTokens: 64000,
|
|
@@ -14814,7 +14816,7 @@ var BUILTIN_AGENTS = {
|
|
|
14814
14816
|
}
|
|
14815
14817
|
},
|
|
14816
14818
|
oracle: {
|
|
14817
|
-
model: "
|
|
14819
|
+
model: "zai-coding-plan/glm-5",
|
|
14818
14820
|
description: "Design architect and debugger \u2014 conventional problem solving, architecture review",
|
|
14819
14821
|
prompt: "You are Oracle, a design architect and debugging specialist. Focus on architecture decisions, debugging complex issues, and providing well-reasoned technical solutions.",
|
|
14820
14822
|
mode: "subagent",
|
|
@@ -14822,49 +14824,49 @@ var BUILTIN_AGENTS = {
|
|
|
14822
14824
|
maxTokens: 32000
|
|
14823
14825
|
},
|
|
14824
14826
|
explore: {
|
|
14825
|
-
model: "
|
|
14827
|
+
model: "openai/gpt-5.3-codex-spark",
|
|
14826
14828
|
description: "Fast codebase explorer \u2014 finds patterns, files, and implementations quickly",
|
|
14827
14829
|
prompt: "You are Explore, a fast codebase search specialist. Use grep, glob, and file reading to find relevant code patterns, implementations, and file structures. Be thorough but fast. Return file paths with brief descriptions.",
|
|
14828
14830
|
mode: "subagent",
|
|
14829
14831
|
maxTokens: 16000
|
|
14830
14832
|
},
|
|
14831
14833
|
librarian: {
|
|
14832
|
-
model: "
|
|
14834
|
+
model: "openai/gpt-5.3-codex-spark",
|
|
14833
14835
|
description: "Documentation researcher \u2014 finds official docs, best practices, and examples",
|
|
14834
14836
|
prompt: "You are Librarian, a documentation research specialist. Find official documentation, production-quality examples, best practices, and common pitfalls for technologies and libraries. Skip beginner tutorials.",
|
|
14835
14837
|
mode: "subagent",
|
|
14836
14838
|
maxTokens: 32000
|
|
14837
14839
|
},
|
|
14838
14840
|
"multimodal-looker": {
|
|
14839
|
-
model: "
|
|
14841
|
+
model: "kimi-for-coding/k2p5",
|
|
14840
14842
|
description: "Visual analyzer \u2014 inspects images, screenshots, and visual content",
|
|
14841
14843
|
prompt: "You are Multimodal Looker, a visual analysis specialist. Analyze images, screenshots, UI mockups, and other visual content. Provide detailed observations about layout, design, and any issues found.",
|
|
14842
14844
|
mode: "subagent",
|
|
14843
14845
|
maxTokens: 16000
|
|
14844
14846
|
},
|
|
14845
14847
|
metis: {
|
|
14846
|
-
model: "
|
|
14848
|
+
model: "kimi-for-coding/k2p5",
|
|
14847
14849
|
description: "Strategic planner \u2014 breaks down complex tasks into parallel execution waves",
|
|
14848
14850
|
prompt: "You are Metis, a strategic planning specialist. Break complex tasks into structured, parallelizable work plans. Identify dependencies between tasks and group independent tasks into parallel execution waves.",
|
|
14849
14851
|
mode: "subagent",
|
|
14850
14852
|
maxTokens: 32000
|
|
14851
14853
|
},
|
|
14852
14854
|
momus: {
|
|
14853
|
-
model: "
|
|
14855
|
+
model: "openai/gpt-5.3-codex",
|
|
14854
14856
|
description: "Code reviewer \u2014 finds bugs, quality issues, and suggests improvements",
|
|
14855
14857
|
prompt: "You are Momus, a code review specialist. Analyze code for bugs, logic errors, security vulnerabilities, code quality issues, and adherence to conventions. Be critical but constructive.",
|
|
14856
14858
|
mode: "subagent",
|
|
14857
14859
|
maxTokens: 32000
|
|
14858
14860
|
},
|
|
14859
14861
|
atlas: {
|
|
14860
|
-
model: "
|
|
14862
|
+
model: "minimax-coding-plan/MiniMax-M2.5",
|
|
14861
14863
|
description: "Task orchestrator \u2014 manages project tasks and coordinates agent work",
|
|
14862
14864
|
prompt: "You are Atlas, a task orchestration specialist. Manage project tasks, coordinate agent work, track progress, and ensure all tasks are completed to specification.",
|
|
14863
14865
|
mode: "subagent",
|
|
14864
14866
|
maxTokens: 32000
|
|
14865
14867
|
},
|
|
14866
14868
|
hephaestus: {
|
|
14867
|
-
model: "
|
|
14869
|
+
model: "zai-coding-plan/glm-5",
|
|
14868
14870
|
description: "Deep autonomous worker \u2014 handles complex implementation tasks independently",
|
|
14869
14871
|
prompt: "You are Hephaestus, an autonomous implementation specialist. Handle complex coding tasks independently with high precision. Write clean, well-tested code that follows existing patterns.",
|
|
14870
14872
|
mode: "subagent",
|
|
@@ -14872,7 +14874,7 @@ var BUILTIN_AGENTS = {
|
|
|
14872
14874
|
maxTokens: 64000
|
|
14873
14875
|
},
|
|
14874
14876
|
scout: {
|
|
14875
|
-
model: "
|
|
14877
|
+
model: "openai/gpt-5.3-codex-spark",
|
|
14876
14878
|
description: "Plugin ecosystem researcher \u2014 discovers features and techniques from other OpenCode plugins",
|
|
14877
14879
|
prompt: `You are Scout, an OpenCode plugin ecosystem researcher.
|
|
14878
14880
|
|
|
@@ -29575,9 +29577,11 @@ function createEvolveExeTool(ctx, internalSessions, deps = {}) {
|
|
|
29575
29577
|
const totalTimeoutMs = deps.evolveExeConfig?.totalTimeoutMs ?? DEFAULT_TOTAL_TIMEOUT_MS;
|
|
29576
29578
|
const configSkipReview = deps.evolveExeConfig?.skipReview ?? false;
|
|
29577
29579
|
const configSkipTests = deps.evolveExeConfig?.skipTests ?? false;
|
|
29580
|
+
const implementAgent = deps.evolveExeConfig?.implementAgent ?? "hephaestus";
|
|
29581
|
+
const reviewAgent = deps.evolveExeConfig?.reviewAgent ?? "momus";
|
|
29578
29582
|
return tool({
|
|
29579
29583
|
description: `Execute evolve proposals autonomously. For each proposal:
|
|
29580
|
-
GIT BRANCH \u2192 IMPLEMENT (
|
|
29584
|
+
GIT BRANCH \u2192 IMPLEMENT (${implementAgent}) \u2192 TEST \u2192 BUILD \u2192 REVIEW (${reviewAgent}) \u2192 MERGE/ROLLBACK.
|
|
29581
29585
|
|
|
29582
29586
|
Proposals are identified by their JSONL line number (1-based) from .opencode/evolve-proposals.jsonl.
|
|
29583
29587
|
Use evolve_scan first to see numbered proposals.
|
|
@@ -29665,6 +29669,8 @@ Failed to determine current git branch. Is this a git repository?`;
|
|
|
29665
29669
|
maxIterations,
|
|
29666
29670
|
iterationTimeoutMs,
|
|
29667
29671
|
totalTimeoutMs,
|
|
29672
|
+
implementAgent,
|
|
29673
|
+
reviewAgent,
|
|
29668
29674
|
progressLabel: `[${i + 1}/${selected.length}]`
|
|
29669
29675
|
});
|
|
29670
29676
|
results.push(result);
|
|
@@ -29710,6 +29716,8 @@ async function executeProposal(args) {
|
|
|
29710
29716
|
maxIterations,
|
|
29711
29717
|
iterationTimeoutMs,
|
|
29712
29718
|
totalTimeoutMs,
|
|
29719
|
+
implementAgent,
|
|
29720
|
+
reviewAgent,
|
|
29713
29721
|
progressLabel
|
|
29714
29722
|
} = args;
|
|
29715
29723
|
const slug = slugify2(proposal.title);
|
|
@@ -29738,6 +29746,7 @@ async function executeProposal(args) {
|
|
|
29738
29746
|
maxIterations,
|
|
29739
29747
|
iterationTimeoutMs,
|
|
29740
29748
|
totalTimeoutMs,
|
|
29749
|
+
implementAgent,
|
|
29741
29750
|
toolCtx,
|
|
29742
29751
|
progressLabel
|
|
29743
29752
|
});
|
|
@@ -29775,7 +29784,8 @@ async function executeProposal(args) {
|
|
|
29775
29784
|
proposal,
|
|
29776
29785
|
diff: diff.stdout,
|
|
29777
29786
|
testOutput: result.testOutput ?? "(tests skipped)",
|
|
29778
|
-
iterationTimeoutMs
|
|
29787
|
+
iterationTimeoutMs,
|
|
29788
|
+
reviewAgent
|
|
29779
29789
|
});
|
|
29780
29790
|
result.reviewOutput = reviewResult.output;
|
|
29781
29791
|
if (reviewResult.blocked) {
|
|
@@ -29807,7 +29817,7 @@ async function rollback(cwd, originalBranch, branchName) {
|
|
|
29807
29817
|
log(`evolve_exe: rolled back branch ${branchName}`);
|
|
29808
29818
|
}
|
|
29809
29819
|
async function runImplementation(args) {
|
|
29810
|
-
const { ctx, internalSessions, proposal, projectInfo, maxIterations, iterationTimeoutMs, totalTimeoutMs, toolCtx, progressLabel } = args;
|
|
29820
|
+
const { ctx, internalSessions, proposal, projectInfo, maxIterations, iterationTimeoutMs, totalTimeoutMs, implementAgent, toolCtx, progressLabel } = args;
|
|
29811
29821
|
const pipelineStart = Date.now();
|
|
29812
29822
|
const sessionResp = await ctx.client.session.create({
|
|
29813
29823
|
body: {},
|
|
@@ -29838,7 +29848,7 @@ async function runImplementation(args) {
|
|
|
29838
29848
|
path: { id: sessionID },
|
|
29839
29849
|
body: {
|
|
29840
29850
|
parts: [{ type: "text", text: prompt }],
|
|
29841
|
-
agent:
|
|
29851
|
+
agent: implementAgent
|
|
29842
29852
|
},
|
|
29843
29853
|
query: { directory: ctx.directory }
|
|
29844
29854
|
}), effectiveTimeout, `evolve_exe implementation iteration ${i + 1}`);
|
|
@@ -29892,7 +29902,7 @@ async function runImplementation(args) {
|
|
|
29892
29902
|
}
|
|
29893
29903
|
}
|
|
29894
29904
|
async function runReview(args) {
|
|
29895
|
-
const { ctx, internalSessions, proposal, diff, testOutput, iterationTimeoutMs } = args;
|
|
29905
|
+
const { ctx, internalSessions, proposal, diff, testOutput, iterationTimeoutMs, reviewAgent } = args;
|
|
29896
29906
|
const sessionResp = await ctx.client.session.create({
|
|
29897
29907
|
body: {},
|
|
29898
29908
|
query: { directory: ctx.directory }
|
|
@@ -29907,7 +29917,7 @@ async function runReview(args) {
|
|
|
29907
29917
|
path: { id: sessionID },
|
|
29908
29918
|
body: {
|
|
29909
29919
|
parts: [{ type: "text", text: prompt }],
|
|
29910
|
-
agent:
|
|
29920
|
+
agent: reviewAgent
|
|
29911
29921
|
},
|
|
29912
29922
|
query: { directory: ctx.directory }
|
|
29913
29923
|
}), iterationTimeoutMs, "evolve_exe review");
|