@link-assistant/hive-mind 1.26.3 → 1.27.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/CHANGELOG.md +21 -0
- package/package.json +1 -1
- package/src/agent.lib.mjs +1 -1
- package/src/model-mapping.lib.mjs +2 -2
- package/src/model-validation.lib.mjs +3 -3
- package/src/solve.auto-pr.lib.mjs +5 -5
- package/src/solve.config.lib.mjs +8 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @link-assistant/hive-mind
|
|
2
2
|
|
|
3
|
+
## 1.27.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f6e909e: feat: make --gitkeep-file enabled by default for all --tools (Issue #1385)
|
|
8
|
+
|
|
9
|
+
Previously, `--claude-file` was the default for `--tool claude`, while `--gitkeep-file` was the default for other tools. Now `--gitkeep-file` is the universal default for all `--tool` values, including `--tool claude`.
|
|
10
|
+
|
|
11
|
+
As explained in the referenced video, CLAUDE.md and AGENT.md files generally do not help AI tools and should be avoided. Users who need CLAUDE.md-based task passing can still explicitly opt in with `--claude-file`.
|
|
12
|
+
|
|
13
|
+
## 1.26.4
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- ff46719: fix: update default agent model to minimax-m2.5-free (Issue #1391)
|
|
18
|
+
|
|
19
|
+
`kimi-k2.5-free` is no longer supported by OpenCode Zen and returns a `ModelError` (HTTP 401). The new default for `--tool agent` is now `minimax-m2.5-free`, matching the upstream fix in [agent PR #209](https://github.com/link-assistant/agent/pull/209).
|
|
20
|
+
- `minimax-m2.5-free` is now the default model for `--tool agent`
|
|
21
|
+
- `kimi-k2.5-free` is moved to the deprecated backward-compatibility section across all model maps
|
|
22
|
+
- Updated `docs/FREE_MODELS.md` to reflect the new default and document `kimi-k2.5-free` as discontinued
|
|
23
|
+
|
|
3
24
|
## 1.26.3
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/package.json
CHANGED
package/src/agent.lib.mjs
CHANGED
|
@@ -295,7 +295,6 @@ export const mapModelToId = model => {
|
|
|
295
295
|
'big-pickle': 'opencode/big-pickle',
|
|
296
296
|
'gpt-5-nano': 'opencode/gpt-5-nano',
|
|
297
297
|
'minimax-m2.5-free': 'opencode/minimax-m2.5-free',
|
|
298
|
-
'kimi-k2.5-free': 'opencode/kimi-k2.5-free',
|
|
299
298
|
// Kilo Gateway free models - short names for Kilo-exclusive models (Issue #1300)
|
|
300
299
|
'glm-5-free': 'kilo/glm-5-free',
|
|
301
300
|
'glm-4.5-air-free': 'kilo/glm-4.5-air-free',
|
|
@@ -312,6 +311,7 @@ export const mapModelToId = model => {
|
|
|
312
311
|
'claude-3.5-haiku': 'anthropic/claude-3.5-haiku',
|
|
313
312
|
'claude-3.5-sonnet': 'anthropic/claude-3.5-sonnet',
|
|
314
313
|
// Deprecated free models (backward compatibility)
|
|
314
|
+
'kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated: not supported by OpenCode Zen (Issue #1391)
|
|
315
315
|
'glm-4.7-free': 'opencode/glm-4.7-free',
|
|
316
316
|
'minimax-m2.1-free': 'opencode/minimax-m2.1-free',
|
|
317
317
|
};
|
|
@@ -36,8 +36,7 @@ export const agentModels = {
|
|
|
36
36
|
'grok-code-fast-1': 'opencode/grok-code',
|
|
37
37
|
'big-pickle': 'opencode/big-pickle',
|
|
38
38
|
'gpt-5-nano': 'opencode/gpt-5-nano',
|
|
39
|
-
'minimax-m2.5-free': 'opencode/minimax-m2.5-free', // New: upgraded from M2.1
|
|
40
|
-
'kimi-k2.5-free': 'opencode/kimi-k2.5-free',
|
|
39
|
+
'minimax-m2.5-free': 'opencode/minimax-m2.5-free', // New: upgraded from M2.1 (Issue #1391: now default)
|
|
41
40
|
// Kilo Gateway free models (Issue #1282, updated in #1300)
|
|
42
41
|
// Short names for Kilo-exclusive models (Issue #1300)
|
|
43
42
|
'glm-5-free': 'kilo/glm-5-free', // Kilo-exclusive
|
|
@@ -53,6 +52,7 @@ export const agentModels = {
|
|
|
53
52
|
'kilo/giga-potato-free': 'kilo/giga-potato-free',
|
|
54
53
|
'kilo/trinity-large-preview': 'kilo/trinity-large-preview',
|
|
55
54
|
// Deprecated free models (kept for backward compatibility)
|
|
55
|
+
'kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated: not supported (Issue #1391)
|
|
56
56
|
'glm-4.7-free': 'opencode/glm-4.7-free', // Deprecated: no longer free
|
|
57
57
|
'minimax-m2.1-free': 'opencode/minimax-m2.1-free', // Deprecated: replaced by m2.5
|
|
58
58
|
'kilo/glm-4.7-free': 'kilo/glm-4.7-free', // Deprecated: replaced by glm-4.5-air-free
|
|
@@ -104,8 +104,7 @@ export const AGENT_MODELS = {
|
|
|
104
104
|
'grok-code-fast-1': 'opencode/grok-code',
|
|
105
105
|
'big-pickle': 'opencode/big-pickle',
|
|
106
106
|
'gpt-5-nano': 'opencode/gpt-5-nano',
|
|
107
|
-
'minimax-m2.5-free': 'opencode/minimax-m2.5-free', // Upgraded from M2.1 (Issue #1300)
|
|
108
|
-
'kimi-k2.5-free': 'opencode/kimi-k2.5-free',
|
|
107
|
+
'minimax-m2.5-free': 'opencode/minimax-m2.5-free', // Upgraded from M2.1 (Issue #1300); default as of Issue #1391
|
|
109
108
|
// Free models (via Kilo Gateway)
|
|
110
109
|
// Issue #1282: Kilo provider adds access to 500+ models including free tier
|
|
111
110
|
// Issue #1300: Updated Kilo free models with new offerings
|
|
@@ -125,6 +124,7 @@ export const AGENT_MODELS = {
|
|
|
125
124
|
'kilo/trinity-large-preview': 'kilo/trinity-large-preview',
|
|
126
125
|
// Deprecated free models (kept for backward compatibility)
|
|
127
126
|
// These models are no longer the recommended options but may still work
|
|
127
|
+
'kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated: not supported by OpenCode Zen (Issue #1391)
|
|
128
128
|
'glm-4.7-free': 'opencode/glm-4.7-free', // Deprecated: no longer free on OpenCode Zen
|
|
129
129
|
'minimax-m2.1-free': 'opencode/minimax-m2.1-free', // Deprecated: replaced by m2.5
|
|
130
130
|
'kilo/glm-4.7-free': 'kilo/glm-4.7-free', // Deprecated: replaced by glm-4.5-air-free
|
|
@@ -140,8 +140,8 @@ export const AGENT_MODELS = {
|
|
|
140
140
|
'opencode/big-pickle': 'opencode/big-pickle',
|
|
141
141
|
'opencode/gpt-5-nano': 'opencode/gpt-5-nano',
|
|
142
142
|
'opencode/minimax-m2.5-free': 'opencode/minimax-m2.5-free', // New (Issue #1300)
|
|
143
|
-
'opencode/kimi-k2.5-free': 'opencode/kimi-k2.5-free',
|
|
144
143
|
// Deprecated OpenCode Zen models (kept for backward compatibility)
|
|
144
|
+
'opencode/kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated: not supported (Issue #1391)
|
|
145
145
|
'opencode/glm-4.7-free': 'opencode/glm-4.7-free', // Deprecated
|
|
146
146
|
'opencode/minimax-m2.1-free': 'opencode/minimax-m2.1-free', // Deprecated
|
|
147
147
|
// Premium models with provider prefix
|
|
@@ -70,8 +70,8 @@ export async function handleAutoPrCreation({ argv, tempDir, branchName, issueNum
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
} else {
|
|
73
|
-
// .gitkeep mode (
|
|
74
|
-
const modeDesc = argv.
|
|
73
|
+
// .gitkeep mode (default for all tools, or auto-gitkeep-file fallback)
|
|
74
|
+
const modeDesc = argv.claudeFile === false ? '.gitkeep (default)' : '.gitkeep (CLAUDE.md is ignored)';
|
|
75
75
|
await log(formatAligned('📝', 'Creating:', modeDesc));
|
|
76
76
|
|
|
77
77
|
filePath = path.join(tempDir, '.gitkeep');
|
|
@@ -133,7 +133,7 @@ Proceed.
|
|
|
133
133
|
}
|
|
134
134
|
} else {
|
|
135
135
|
// .gitkeep: Use minimal metadata format (explicit --gitkeep-file or auto-gitkeep-file fallback)
|
|
136
|
-
const creationReason = argv.
|
|
136
|
+
const creationReason = argv.claudeFile === false ? '# This file was created with --gitkeep-file (default)' : '# This file was created because CLAUDE.md is in .gitignore (--auto-gitkeep-file=true)';
|
|
137
137
|
const gitkeepContent = `# Auto-generated file for PR creation
|
|
138
138
|
# Issue: ${issueUrl}
|
|
139
139
|
# Branch: ${branchName}
|
|
@@ -297,8 +297,8 @@ ${creationReason}
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
await log(formatAligned('📝', 'Creating commit:', `With ${commitFileName} file`));
|
|
300
|
-
// Commit message distinguishes between
|
|
301
|
-
const fileDesc = commitFileName === 'CLAUDE.md' ? 'CLAUDE.md with task information for AI processing' : `.gitkeep for PR creation (${argv.
|
|
300
|
+
// Commit message distinguishes between CLAUDE.md and .gitkeep modes
|
|
301
|
+
const fileDesc = commitFileName === 'CLAUDE.md' ? 'CLAUDE.md with task information for AI processing' : `.gitkeep for PR creation (${argv.claudeFile === false ? 'default mode' : 'CLAUDE.md is in .gitignore'})`;
|
|
302
302
|
const commitMessage = `Initial commit with task details\n\nAdding ${fileDesc}.\nThis file will be removed when the task is complete.\n\nIssue: ${issueUrl}`;
|
|
303
303
|
|
|
304
304
|
// Use explicit cwd option for better reliability
|
package/src/solve.config.lib.mjs
CHANGED
|
@@ -101,13 +101,13 @@ export const SOLVE_OPTION_DEFINITIONS = {
|
|
|
101
101
|
},
|
|
102
102
|
'claude-file': {
|
|
103
103
|
type: 'boolean',
|
|
104
|
-
description: 'Create CLAUDE.md file for task details (
|
|
105
|
-
default:
|
|
104
|
+
description: 'Create CLAUDE.md file for task details (mutually exclusive with --gitkeep-file)',
|
|
105
|
+
default: false,
|
|
106
106
|
},
|
|
107
107
|
'gitkeep-file': {
|
|
108
108
|
type: 'boolean',
|
|
109
|
-
description: 'Create .gitkeep file instead of CLAUDE.md (default for --tool
|
|
110
|
-
default:
|
|
109
|
+
description: 'Create .gitkeep file instead of CLAUDE.md (default for all --tool values, mutually exclusive with --claude-file)',
|
|
110
|
+
default: true,
|
|
111
111
|
},
|
|
112
112
|
'auto-gitkeep-file': {
|
|
113
113
|
type: 'boolean',
|
|
@@ -400,7 +400,7 @@ export const createYargsConfig = yargsInstance => {
|
|
|
400
400
|
config = config
|
|
401
401
|
.option('model', {
|
|
402
402
|
type: 'string',
|
|
403
|
-
description: 'Model to use (for claude: opus, sonnet, haiku, haiku-3-5, haiku-3; for opencode: grok, gpt4o; for codex: gpt5, gpt5-codex, o3; for agent:
|
|
403
|
+
description: 'Model to use (for claude: opus, sonnet, haiku, haiku-3-5, haiku-3; for opencode: grok, gpt4o; for codex: gpt5, gpt5-codex, o3; for agent: minimax-m2.5-free, big-pickle, gpt-5-nano, glm-5-free, deepseek-r1-free)',
|
|
404
404
|
alias: 'm',
|
|
405
405
|
default: currentParsedArgs => {
|
|
406
406
|
// Dynamic default based on tool selection
|
|
@@ -409,7 +409,7 @@ export const createYargsConfig = yargsInstance => {
|
|
|
409
409
|
} else if (currentParsedArgs?.tool === 'codex') {
|
|
410
410
|
return 'gpt-5';
|
|
411
411
|
} else if (currentParsedArgs?.tool === 'agent') {
|
|
412
|
-
return '
|
|
412
|
+
return 'minimax-m2.5-free';
|
|
413
413
|
}
|
|
414
414
|
return 'sonnet';
|
|
415
415
|
},
|
|
@@ -538,21 +538,7 @@ export const parseArguments = async (yargs, hideBin) => {
|
|
|
538
538
|
argv.model = 'gpt-5';
|
|
539
539
|
} else if (argv.tool === 'agent' && !modelExplicitlyProvided) {
|
|
540
540
|
// User did not explicitly provide --model, so use the correct default for agent
|
|
541
|
-
argv.model = '
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
// Tool-specific defaults for --claude-file and --gitkeep-file
|
|
545
|
-
// For non-Claude tools, use .gitkeep by default to avoid polluting CLAUDE.md
|
|
546
|
-
// (CLAUDE.md has special meaning for Claude Code as a project-level instruction file)
|
|
547
|
-
// See: https://github.com/link-assistant/hive-mind/issues/1158
|
|
548
|
-
const claudeFileExplicitlyProvided = rawArgs.includes('--claude-file') || rawArgs.includes('--no-claude-file');
|
|
549
|
-
const gitkeepFileExplicitlyProvided = rawArgs.includes('--gitkeep-file') || rawArgs.includes('--no-gitkeep-file');
|
|
550
|
-
|
|
551
|
-
if (argv.tool !== 'claude' && !claudeFileExplicitlyProvided && !gitkeepFileExplicitlyProvided) {
|
|
552
|
-
// User did not explicitly provide either option, so use the correct defaults for non-Claude tools
|
|
553
|
-
// Non-Claude tools (agent, opencode, codex) should use .gitkeep by default
|
|
554
|
-
argv.claudeFile = false;
|
|
555
|
-
argv.gitkeepFile = true;
|
|
541
|
+
argv.model = 'minimax-m2.5-free';
|
|
556
542
|
}
|
|
557
543
|
|
|
558
544
|
// Validate mutual exclusivity of --claude-file and --gitkeep-file
|
|
@@ -588,7 +574,7 @@ export const parseArguments = async (yargs, hideBin) => {
|
|
|
588
574
|
argv.claudeFile = false;
|
|
589
575
|
}
|
|
590
576
|
|
|
591
|
-
// If user explicitly set --no-gitkeep-file, enable claude-file
|
|
577
|
+
// If user explicitly set --no-gitkeep-file, enable claude-file
|
|
592
578
|
if (noGitkeepFile && !argv.claudeFile) {
|
|
593
579
|
argv.claudeFile = true;
|
|
594
580
|
argv.gitkeepFile = false;
|