oh-my-opencode-slim 0.6.4 → 0.8.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 CHANGED
@@ -1,7 +1,8 @@
1
1
  <div align="center">
2
2
  <img src="img/team.png" alt="Pantheon agents" width="420">
3
3
  <p><i>Six divine beings emerged from the dawn of code, each an immortal master of their craft await your command to forge order from chaos and build what was once thought impossible.</i></p>
4
- <p><b>Multi Agent Suite</b> · Mix any models · Auto delegate tasks</p>
4
+ <p><b>Open Multi Agent Suite</b> · Mix any models · Auto delegate tasks</p>
5
+ <p><a href="https://moltfounders.com/project/0f5874c7-9291-415b-9622-7509d96a2c73"><img src="https://moltfounders.com/badges/4.png" alt="MoltFounders" height="30"></a></p>
5
6
  </div>
6
7
 
7
8
  ---
@@ -14,6 +15,12 @@
14
15
  bunx oh-my-opencode-slim@latest install
15
16
  ```
16
17
 
18
+ The installer can refresh and use OpenCode free models directly:
19
+
20
+ ```bash
21
+ bunx oh-my-opencode-slim@latest install --no-tui --kimi=yes --openai=yes --antigravity=yes --chutes=yes --opencode-free=yes --opencode-free-model=auto --tmux=no --skills=yes
22
+ ```
23
+
17
24
  Then authenticate:
18
25
 
19
26
  ```bash
@@ -22,7 +29,13 @@ opencode auth login
22
29
 
23
30
  Run `ping all agents` to verify everything works.
24
31
 
25
- > **💡 Models are fully customizable.** Edit `~/.config/opencode/oh-my-opencode-slim.json` to assign any model to any agent.
32
+ OpenCode free-model mode uses `opencode models --refresh --verbose`, filters to free `opencode/*` models, and applies coding-first selection:
33
+ - OpenCode-only mode can use multiple OpenCode free models across agents.
34
+ - Hybrid mode can combine OpenCode free models with OpenAI, Kimi, and/or Antigravity.
35
+ - In hybrid mode, `designer` stays on the external provider mapping.
36
+ - Chutes mode auto-selects primary/support models with daily-cap awareness (300/2000/5000).
37
+
38
+ > **💡 Models are fully customizable.** Edit `~/.config/opencode/oh-my-opencode-slim.json` (or `.jsonc` for comments support) to assign any model to any agent.
26
39
 
27
40
  ### For LLM Agents
28
41
 
@@ -35,6 +48,10 @@ https://raw.githubusercontent.com/alvinunreal/oh-my-opencode-slim/refs/heads/mas
35
48
 
36
49
  **Detailed installation guide:** [docs/installation.md](docs/installation.md)
37
50
 
51
+ **Additional guides:**
52
+ - **[Antigravity Setup](docs/antigravity.md)** - Complete guide for Antigravity provider configuration
53
+ - **[Tmux Integration](docs/tmux-integration.md)** - Real-time agent monitoring with tmux
54
+
38
55
  ---
39
56
 
40
57
  ## 🏛️ Meet the Pantheon
@@ -229,9 +246,19 @@ https://raw.githubusercontent.com/alvinunreal/oh-my-opencode-slim/refs/heads/mas
229
246
 
230
247
  - **[Quick Reference](docs/quick-reference.md)** - Presets, Skills, MCPs, Tools, Configuration
231
248
  - **[Installation Guide](docs/installation.md)** - Detailed installation and troubleshooting
249
+ - **[Cartography Skill](docs/cartography.md)** - Custom skill for repository mapping + codemap generation
250
+ - **[Antigravity Setup](docs/antigravity.md)** - Complete guide for Antigravity provider configuration
251
+ - **[Tmux Integration](docs/tmux-integration.md)** - Real-time agent monitoring with tmux
232
252
 
233
253
  ---
234
254
 
235
255
  ## 📄 License
236
256
 
237
257
  MIT
258
+
259
+ ---
260
+
261
+ <!-- MoltFounders Banner -->
262
+ <a href="https://moltfounders.com/project/0f5874c7-9291-415b-9622-7509d96a2c73">
263
+ <img src="img/moltfounders-banner.png" alt="MoltFounders - The Agent Co-Founder Network">
264
+ </a>
@@ -1,4 +1,4 @@
1
- import type { AgentConfig as SDKAgentConfig } from '@opencode-ai/sdk';
1
+ import type { AgentConfig as SDKAgentConfig } from '@opencode-ai/sdk/v2';
2
2
  import { type PluginConfig, SUBAGENT_NAMES } from '../config';
3
3
  import { type AgentDefinition } from './orchestrator';
4
4
  export type { AgentDefinition } from './orchestrator';
@@ -1,4 +1,4 @@
1
- import type { AgentConfig } from '@opencode-ai/sdk';
1
+ import type { AgentConfig } from '@opencode-ai/sdk/v2';
2
2
  export interface AgentDefinition {
3
3
  name: string;
4
4
  description?: string;
@@ -45,6 +45,7 @@ export interface LaunchOptions {
45
45
  export declare class BackgroundTaskManager {
46
46
  private tasks;
47
47
  private tasksBySessionId;
48
+ private agentBySessionId;
48
49
  private client;
49
50
  private directory;
50
51
  private tmuxEnabled;
@@ -55,6 +56,25 @@ export declare class BackgroundTaskManager {
55
56
  private maxConcurrentStarts;
56
57
  private completionResolvers;
57
58
  constructor(ctx: PluginInput, tmuxConfig?: TmuxConfig, config?: PluginConfig);
59
+ /**
60
+ * Look up the delegation rules for an agent type.
61
+ * Unknown agent types default to explorer-only access, making it easy
62
+ * to add new background agent types without updating SUBAGENT_DELEGATION_RULES.
63
+ */
64
+ private getSubagentRules;
65
+ /**
66
+ * Check if a parent session is allowed to delegate to a specific agent type.
67
+ * @param parentSessionId - The session ID of the parent
68
+ * @param requestedAgent - The agent type being requested
69
+ * @returns true if allowed, false if not
70
+ */
71
+ isAgentAllowed(parentSessionId: string, requestedAgent: string): boolean;
72
+ /**
73
+ * Get the list of allowed subagents for a parent session.
74
+ * @param parentSessionId - The session ID of the parent
75
+ * @returns Array of allowed agent names, empty if none
76
+ */
77
+ getAllowedSubagents(parentSessionId: string): readonly string[];
58
78
  /**
59
79
  * Launch a new background task (fire-and-forget).
60
80
  *
@@ -73,6 +93,17 @@ export declare class BackgroundTaskManager {
73
93
  * Process start queue with concurrency limit.
74
94
  */
75
95
  private processQueue;
96
+ private resolveFallbackChain;
97
+ private promptWithTimeout;
98
+ /**
99
+ * Calculate tool permissions for a spawned agent based on its own delegation rules.
100
+ * Agents that cannot delegate (leaf nodes) get delegation tools disabled entirely,
101
+ * preventing models from even seeing tools they can never use.
102
+ *
103
+ * @param agentName - The agent type being spawned
104
+ * @returns Tool permissions object with background_task and task enabled/disabled
105
+ */
106
+ private calculateToolPermissions;
76
107
  /**
77
108
  * Start a task in the background (Phase B).
78
109
  */
@@ -90,6 +121,19 @@ export declare class BackgroundTaskManager {
90
121
  };
91
122
  };
92
123
  }): Promise<void>;
124
+ /**
125
+ * Handle session.deleted events for cleanup.
126
+ * When a session is deleted, cancel associated tasks and clean up.
127
+ */
128
+ handleSessionDeleted(event: {
129
+ type: string;
130
+ properties?: {
131
+ info?: {
132
+ id?: string;
133
+ };
134
+ sessionID?: string;
135
+ };
136
+ }): Promise<void>;
93
137
  /**
94
138
  * Extract task result and mark complete.
95
139
  */
@@ -42,6 +42,11 @@ export declare class TmuxSessionManager {
42
42
  * When a session becomes idle (completed), close its pane.
43
43
  */
44
44
  onSessionStatus(event: SessionEvent): Promise<void>;
45
+ /**
46
+ * Handle session.deleted events.
47
+ * When a session is deleted, close its tmux pane immediately.
48
+ */
49
+ onSessionDeleted(event: SessionEvent): Promise<void>;
45
50
  private startPolling;
46
51
  private stopPolling;
47
52
  /**
@@ -0,0 +1,3 @@
1
+ import type { OpenCodeFreeModel } from './types';
2
+ export declare function pickBestCodingChutesModel(models: OpenCodeFreeModel[]): OpenCodeFreeModel | null;
3
+ export declare function pickSupportChutesModel(models: OpenCodeFreeModel[], primaryModel?: string): OpenCodeFreeModel | null;
@@ -18,4 +18,9 @@ export declare function writeConfig(configPath: string, config: OpenCodeConfig):
18
18
  export declare function addPluginToOpenCodeConfig(): Promise<ConfigMergeResult>;
19
19
  export declare function writeLiteConfig(installConfig: InstallConfig): ConfigMergeResult;
20
20
  export declare function disableDefaultAgents(): ConfigMergeResult;
21
+ export declare function canModifyOpenCodeConfig(): boolean;
22
+ export declare function addAntigravityPlugin(): ConfigMergeResult;
23
+ export declare function addGoogleProvider(): ConfigMergeResult;
24
+ export declare function addChutesProvider(): ConfigMergeResult;
25
+ export declare function detectAntigravityConfig(): boolean;
21
26
  export declare function detectCurrentConfig(): DetectedConfig;
@@ -1,4 +1,12 @@
1
+ export * from './chutes-selection';
1
2
  export * from './config-io';
3
+ export * from './dynamic-model-selection';
4
+ export * from './external-rankings';
5
+ export * from './model-selection';
6
+ export * from './opencode-models';
7
+ export * from './opencode-selection';
2
8
  export * from './paths';
9
+ export * from './precedence-resolver';
3
10
  export * from './providers';
11
+ export * from './scoring-v2';
4
12
  export * from './system';
@@ -0,0 +1,14 @@
1
+ import type { DiscoveredModel, DynamicModelPlan, ExternalSignalMap, InstallConfig, ScoringEngineVersion } from './types';
2
+ declare const AGENTS: readonly ["orchestrator", "oracle", "designer", "explorer", "librarian", "fixer"];
3
+ type AgentName = (typeof AGENTS)[number];
4
+ export type V1RankedScore = {
5
+ model: string;
6
+ totalScore: number;
7
+ baseScore: number;
8
+ externalSignalBoost: number;
9
+ };
10
+ export declare function rankModelsV1WithBreakdown(models: DiscoveredModel[], agent: AgentName, externalSignals?: ExternalSignalMap): V1RankedScore[];
11
+ export declare function buildDynamicModelPlan(catalog: DiscoveredModel[], config: InstallConfig, externalSignals?: ExternalSignalMap, options?: {
12
+ scoringEngineVersion?: ScoringEngineVersion;
13
+ }): DynamicModelPlan | null;
14
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ExternalSignalMap } from './types';
2
+ export declare function fetchExternalModelSignals(options?: {
3
+ artificialAnalysisApiKey?: string;
4
+ openRouterApiKey?: string;
5
+ }): Promise<{
6
+ signals: ExternalSignalMap;
7
+ warnings: string[];
8
+ }>;