Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/docs-web/src/content/docs/guides/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ smaller box with a tastefully curated set of tools."
|-------|---------|----------------|
| `remotion-best-practices` | `npx skills add remotion-dev/skills` | Remotion animation patterns, API usage, gotchas (35 rules) |
| `skill-creator` | `npx skills add anthropics/skills` | How to create new SKILL.md files |
| `mmx-cli` | `npx skills add MiniMax-AI/cli/skill` | Text, image, video, speech, and music generation via MiniMax AI |
| Community skills | Browse [skills.sh](https://skills.sh) | Search 500K+ skills for any domain |

## Multiple Skills Per Node
Expand Down
4 changes: 3 additions & 1 deletion packages/providers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
"./codex/provider": "./src/codex/provider.ts",
"./codex/config": "./src/codex/config.ts",
"./codex/binary-resolver": "./src/codex/binary-resolver.ts",
"./minimax/provider": "./src/minimax/provider.ts",
"./minimax/config": "./src/minimax/config.ts",
"./errors": "./src/errors.ts",
"./registry": "./src/registry.ts"
},
"scripts": {
"test": "bun test src/claude/provider.test.ts && bun test src/codex/provider.test.ts && bun test src/registry.test.ts && bun test src/codex/binary-guard.test.ts && bun test src/codex/binary-resolver.test.ts && bun test src/codex/binary-resolver-dev.test.ts",
"test": "bun test src/claude/provider.test.ts && bun test src/codex/provider.test.ts && bun test src/registry.test.ts && bun test src/codex/binary-guard.test.ts && bun test src/codex/binary-resolver.test.ts && bun test src/codex/binary-resolver-dev.test.ts && bun test src/minimax/provider.test.ts",
"type-check": "bun x tsc --noEmit"
},
"dependencies": {
Expand Down
2 changes: 2 additions & 0 deletions packages/providers/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@ export { UnknownProviderError } from './errors';
// Provider classes
export { ClaudeProvider } from './claude/provider';
export { CodexProvider } from './codex/provider';
export { MiniMaxProvider } from './minimax/provider';

// Config parsers
export { parseClaudeConfig, type ClaudeProviderDefaults } from './claude/config';
export { parseCodexConfig, type CodexProviderDefaults } from './codex/config';
export { parseMiniMaxConfig, type MiniMaxProviderDefaults } from './minimax/config';
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Re-export source is inconsistent with the canonical type location.

MiniMaxProviderDefaults is re-exported here from ./minimax/config, but packages/providers/src/types.ts declares itself the "Single source of truth for provider-specific config shapes" and defines MiniMaxProviderDefaults at lines 30-35. The config module currently redeclares the interface rather than re-exporting from ./types, producing two structurally-identical types that can silently drift. See the comment on minimax/config.ts.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/providers/src/index.ts` at line 43, The package currently re-exports
parseMiniMaxConfig and redeclares MiniMaxProviderDefaults from ./minimax/config,
creating a duplicate type; change the export so MiniMaxProviderDefaults is
re-exported from the single source of truth (the providers' types module where
MiniMaxProviderDefaults is declared) instead of from minimax/config, and remove
the redundant interface declaration in minimax/config so parseMiniMaxConfig
remains exported but the type is imported/re-exported from the canonical types
declaration (ensure the symbol MiniMaxProviderDefaults is imported from the
types module and re-exported alongside parseMiniMaxConfig).


// Utilities (needed by consumers)
export { resetCodexSingleton } from './codex/provider';
Expand Down
16 changes: 16 additions & 0 deletions packages/providers/src/minimax/capabilities.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import type { ProviderCapabilities } from '../types';

export const MINIMAX_CAPABILITIES: ProviderCapabilities = {
sessionResume: false,
mcp: false,
hooks: false,
skills: false,
toolRestrictions: false,
structuredOutput: false,
envInjection: true,
costControl: false,
effortControl: false,
thinkingControl: false,
fallbackModel: false,
sandbox: false,
};
30 changes: 30 additions & 0 deletions packages/providers/src/minimax/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* Typed config parsing for MiniMax provider defaults.
*/

export interface MiniMaxProviderDefaults {
[key: string]: unknown;
model?: string;
baseURL?: string;
}

// Re-export so consumers can import the type from either location
export type { MiniMaxProviderDefaults as MiniMaxConfig };
Comment on lines +5 to +12
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Duplicate interface declaration — re-export from ../types instead.

MiniMaxProviderDefaults is already the canonical definition in packages/providers/src/types.ts (lines 30-35), which that file explicitly identifies as the "Single source of truth for provider-specific config shapes." Redeclaring the same interface here creates two nominally distinct types that can drift (a field added in one location will not appear in the other, and @archon/core/config/config-types.ts — per the comment in types.ts — imports from ./types, not from here).

Align with the Claude/Codex pattern by re-exporting from ../types:

♻️ Proposed fix
-export interface MiniMaxProviderDefaults {
-  [key: string]: unknown;
-  model?: string;
-  baseURL?: string;
-}
-
-// Re-export so consumers can import the type from either location
-export type { MiniMaxProviderDefaults as MiniMaxConfig };
+export type { MiniMaxProviderDefaults } from '../types';
+export type { MiniMaxProviderDefaults as MiniMaxConfig } from '../types';

As per coding guidelines: "Always use import type for type-only imports and specific named imports for values".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export interface MiniMaxProviderDefaults {
[key: string]: unknown;
model?: string;
baseURL?: string;
}
// Re-export so consumers can import the type from either location
export type { MiniMaxProviderDefaults as MiniMaxConfig };
export type { MiniMaxProviderDefaults } from '../types';
export type { MiniMaxProviderDefaults as MiniMaxConfig } from '../types';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/providers/src/minimax/config.ts` around lines 5 - 12, Remove the
local duplicate interface declaration for MiniMaxProviderDefaults and instead
import the canonical type from ../types using a type-only import; then re-export
it as MiniMaxConfig (e.g., import type { MiniMaxProviderDefaults } from
'../types' and export type { MiniMaxProviderDefaults as MiniMaxConfig }). Update
the file to reference only the imported MiniMaxProviderDefaults symbol (no local
interface) and ensure you use import type for the type-only import per
guidelines.


/**
* Parse raw assistantConfig into typed MiniMax defaults.
* Defensive: invalid fields are silently dropped.
*/
export function parseMiniMaxConfig(raw: Record<string, unknown>): MiniMaxProviderDefaults {
const result: MiniMaxProviderDefaults = {};

if (typeof raw.model === 'string') {
result.model = raw.model;
}

if (typeof raw.baseURL === 'string') {
result.baseURL = raw.baseURL;
}

return result;
}
Loading