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 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-codex/gpt-5.3-codex",
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: "openai/gpt-5.2",
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: "anthropic/claude-haiku-4-5",
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: "anthropic/claude-sonnet-4-5",
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: "anthropic/claude-sonnet-4-5",
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: "anthropic/claude-sonnet-4-5",
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: "anthropic/claude-sonnet-4-5",
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: "anthropic/claude-sonnet-4-5",
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: "openai/gpt-5.2",
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: "anthropic/claude-sonnet-4-5",
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 (hephaestus) \u2192 TEST \u2192 BUILD \u2192 REVIEW (momus) \u2192 MERGE/ROLLBACK.
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: "hephaestus"
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: "momus"
29920
+ agent: reviewAgent
29911
29921
  },
29912
29922
  query: { directory: ctx.directory }
29913
29923
  }), iterationTimeoutMs, "evolve_exe review");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-ultra",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Lightweight OpenCode 1.2.x plugin — ultrawork mode, multi-agent orchestration, rules injection",
5
5
  "keywords": [
6
6
  "opencode",