@link-assistant/hive-mind 0.53.0 → 0.53.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/CHANGELOG.md +23 -0
- package/README.md +27 -0
- package/package.json +1 -1
- package/src/hive.config.lib.mjs +5 -0
- package/src/hive.mjs +14 -61
- package/src/solve.mjs +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @link-assistant/hive-mind
|
|
2
2
|
|
|
3
|
+
## 0.53.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 5030fe1: Fix --auto-continue-on-limit-reset flag not working
|
|
8
|
+
|
|
9
|
+
When Claude hit its usage limit with --auto-continue-on-limit-reset enabled, the code would exit early
|
|
10
|
+
via the failure branch before reaching showSessionSummary() where autoContinueWhenLimitResets() is called.
|
|
11
|
+
|
|
12
|
+
This patch adds a condition to skip the failure exit when limit is reached with auto-continue enabled,
|
|
13
|
+
allowing the code to properly wait for the limit to reset and resume the session.
|
|
14
|
+
|
|
15
|
+
## 0.53.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 6d7fb43: Add --auto-continue-on-limit-reset option to hive command
|
|
20
|
+
|
|
21
|
+
The hive command was missing the --auto-continue-on-limit-reset option that is available
|
|
22
|
+
in the solve command. This caused yargs strict mode to reject the option with an
|
|
23
|
+
"Unknown arguments" error. The option is now properly defined in hive.config.lib.mjs
|
|
24
|
+
and passed to the solve command when spawning workers.
|
|
25
|
+
|
|
3
26
|
## 0.53.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -15,6 +15,33 @@ It is also possible to connect this AI to collective human intelligence, meaning
|
|
|
15
15
|
|
|
16
16
|
Inspired by [konard/problem-solving](https://github.com/konard/problem-solving)
|
|
17
17
|
|
|
18
|
+
## Why Hive Mind?
|
|
19
|
+
|
|
20
|
+
**Hive Mind is the most autonomous, cloud-ready AI issue solver that eliminates developer babysitting while maintaining human oversight on critical decisions.**
|
|
21
|
+
|
|
22
|
+
Hive Mind is a **generalist AI** (mini-AGI) capable of working on a wide range of tasks - not just programming. Almost anything that can be done with files in a repository can be automated.
|
|
23
|
+
|
|
24
|
+
| Feature | What It Means For You |
|
|
25
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
26
|
+
| **No Babysitting** | Full autonomous mode with sudo access. AI has creative freedom like a real programmer. |
|
|
27
|
+
| **Cloud Isolation** | Runs on dedicated VMs or Docker. Easy to restore if broken. |
|
|
28
|
+
| **Full Internet + Sudo** | AI can install packages, fetch docs, and configure the system as needed. |
|
|
29
|
+
| **Pre-installed Toolchain** | 25GB+ ready: 10 language runtimes, 2 theorem provers, build tools. Can install more. |
|
|
30
|
+
| **Token Efficiency** | Routine tasks automated in code, so AI tokens focus on creative problem-solving. |
|
|
31
|
+
| **Time Freedom** | What takes humans 2-8 hours, AI completes in 10-25 minutes. "The code is written while you sleep." |
|
|
32
|
+
| **Scale with Orchestration** | Parallel workers feel like a team of developers, all for ~$200/month. |
|
|
33
|
+
| **Human Control** | AI creates draft PRs - you decide what merges. Quality gates where they matter. |
|
|
34
|
+
| **Any Device Programming** | Manage AI from any device with `/solve` and `/hive`. No PC, IDE, or laptop required. |
|
|
35
|
+
| **100% Open Source** | Unlicense (public domain). Full transparency, no vendor lock-in. |
|
|
36
|
+
|
|
37
|
+
> _"Compared to Codex for $200, this solution is fire."_ - User feedback
|
|
38
|
+
|
|
39
|
+
**Cost**: Claude MAX subscription (~$200/month, currently 50% off = $400 value) provides almost unlimited usage for Hive Mind - the best value/quality balance on the market.
|
|
40
|
+
|
|
41
|
+
Hive Mind has high creativity indistinguishable from average programmers. It asks questions if requirements are unclear, and you can clarify on the go via PR comments.
|
|
42
|
+
|
|
43
|
+
For detailed features and comparisons, see [docs/FEATURES.md](./docs/FEATURES.md) and [docs/COMPARISON.md](./docs/COMPARISON.md).
|
|
44
|
+
|
|
18
45
|
## ⚠️ WARNING
|
|
19
46
|
|
|
20
47
|
It is UNSAFE to run this software on your developer machine.
|
package/package.json
CHANGED
package/src/hive.config.lib.mjs
CHANGED
|
@@ -202,6 +202,11 @@ export const createYargsConfig = yargsInstance => {
|
|
|
202
202
|
description: 'Pass --auto-continue to solve for each issue (continues with existing PRs instead of creating new ones)',
|
|
203
203
|
default: true,
|
|
204
204
|
})
|
|
205
|
+
.option('auto-continue-on-limit-reset', {
|
|
206
|
+
type: 'boolean',
|
|
207
|
+
description: 'Automatically continue when AI tool limit resets (calculates reset time and waits). Passed to solve command.',
|
|
208
|
+
default: false,
|
|
209
|
+
})
|
|
205
210
|
.option('think', {
|
|
206
211
|
type: 'string',
|
|
207
212
|
description: 'Thinking level: low (Think.), medium (Think hard.), high (Think harder.), max (Ultrathink.)',
|
package/src/hive.mjs
CHANGED
|
@@ -731,70 +731,24 @@ if (isDirectExecution) {
|
|
|
731
731
|
}
|
|
732
732
|
|
|
733
733
|
const startTime = Date.now();
|
|
734
|
-
const forkFlag = argv.fork ? ' --fork' : '';
|
|
735
|
-
const autoForkFlag = argv.autoFork ? ' --auto-fork' : '';
|
|
736
|
-
const verboseFlag = argv.verbose ? ' --verbose' : '';
|
|
737
|
-
const attachLogsFlag = argv.attachLogs ? ' --attach-logs' : '';
|
|
738
|
-
const targetBranchFlag = argv.targetBranch ? ` --target-branch ${argv.targetBranch}` : '';
|
|
739
|
-
const logDirFlag = argv.logDir ? ` --log-dir "${argv.logDir}"` : '';
|
|
740
|
-
const dryRunFlag = argv.dryRun ? ' --dry-run' : '';
|
|
741
|
-
const skipToolConnectionCheckFlag = argv.skipToolConnectionCheck || argv.toolConnectionCheck === false ? ' --skip-tool-connection-check' : '';
|
|
742
|
-
const toolFlag = argv.tool ? ` --tool ${argv.tool}` : '';
|
|
743
|
-
const autoContinueFlag = argv.autoContinue ? ' --auto-continue' : ' --no-auto-continue';
|
|
744
|
-
const thinkFlag = argv.think ? ` --think ${argv.think}` : '';
|
|
745
|
-
const promptPlanSubAgentFlag = argv.promptPlanSubAgent ? ' --prompt-plan-sub-agent' : '';
|
|
746
|
-
const noSentryFlag = !argv.sentry ? ' --no-sentry' : '';
|
|
747
|
-
const watchFlag = argv.watch ? ' --watch' : '';
|
|
748
|
-
const prefixForkNameWithOwnerNameFlag = argv.prefixForkNameWithOwnerName ? ' --prefix-fork-name-with-owner-name' : '';
|
|
749
|
-
const interactiveModeFlag = argv.interactiveMode ? ' --interactive-mode' : '';
|
|
750
|
-
const promptExploreSubAgentFlag = argv.promptExploreSubAgent ? ' --prompt-explore-sub-agent' : '';
|
|
751
|
-
const promptIssueReportingFlag = argv.promptIssueReporting ? ' --prompt-issue-reporting' : '';
|
|
752
|
-
const promptCaseStudiesFlag = argv.promptCaseStudies ? ' --prompt-case-studies' : '';
|
|
753
|
-
const promptPlaywrightMcpFlag = argv.promptPlaywrightMcp === true ? ' --prompt-playwright-mcp' : argv.promptPlaywrightMcp === false ? ' --no-prompt-playwright-mcp' : '';
|
|
754
734
|
// Use spawn to get real-time streaming output while avoiding command-stream's automatic quote addition
|
|
755
735
|
const { spawn } = await import('child_process');
|
|
756
|
-
|
|
757
736
|
// Build arguments array to avoid shell parsing issues
|
|
758
737
|
const args = [issueUrl, '--model', argv.model];
|
|
759
|
-
if (argv.tool)
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
if (argv.
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
if (argv.
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
if (argv.attachLogs) {
|
|
772
|
-
args.push('--attach-logs');
|
|
773
|
-
}
|
|
774
|
-
if (argv.targetBranch) {
|
|
775
|
-
args.push('--target-branch', argv.targetBranch);
|
|
776
|
-
}
|
|
777
|
-
if (argv.logDir) {
|
|
778
|
-
args.push('--log-dir', argv.logDir);
|
|
779
|
-
}
|
|
780
|
-
if (argv.dryRun) {
|
|
781
|
-
args.push('--dry-run');
|
|
782
|
-
}
|
|
783
|
-
if (argv.skipToolConnectionCheck || argv.toolConnectionCheck === false) {
|
|
784
|
-
args.push('--skip-tool-connection-check');
|
|
785
|
-
}
|
|
786
|
-
if (argv.autoContinue) {
|
|
787
|
-
args.push('--auto-continue');
|
|
788
|
-
} else {
|
|
789
|
-
args.push('--no-auto-continue');
|
|
790
|
-
}
|
|
791
|
-
if (argv.think) {
|
|
792
|
-
args.push('--think', argv.think);
|
|
793
|
-
}
|
|
738
|
+
if (argv.tool) args.push('--tool', argv.tool);
|
|
739
|
+
if (argv.fork) args.push('--fork');
|
|
740
|
+
if (argv.autoFork) args.push('--auto-fork');
|
|
741
|
+
if (argv.verbose) args.push('--verbose');
|
|
742
|
+
if (argv.attachLogs) args.push('--attach-logs');
|
|
743
|
+
if (argv.targetBranch) args.push('--target-branch', argv.targetBranch);
|
|
744
|
+
if (argv.logDir) args.push('--log-dir', argv.logDir);
|
|
745
|
+
if (argv.dryRun) args.push('--dry-run');
|
|
746
|
+
if (argv.skipToolConnectionCheck || argv.toolConnectionCheck === false) args.push('--skip-tool-connection-check');
|
|
747
|
+
args.push(argv.autoContinue ? '--auto-continue' : '--no-auto-continue');
|
|
748
|
+
if (argv.autoContinueOnLimitReset) args.push('--auto-continue-on-limit-reset');
|
|
749
|
+
if (argv.think) args.push('--think', argv.think);
|
|
794
750
|
if (argv.promptPlanSubAgent) args.push('--prompt-plan-sub-agent');
|
|
795
|
-
if (!argv.sentry)
|
|
796
|
-
args.push('--no-sentry');
|
|
797
|
-
}
|
|
751
|
+
if (!argv.sentry) args.push('--no-sentry');
|
|
798
752
|
if (argv.watch) args.push('--watch');
|
|
799
753
|
if (argv.prefixForkNameWithOwnerName) args.push('--prefix-fork-name-with-owner-name');
|
|
800
754
|
if (argv.interactiveMode) args.push('--interactive-mode');
|
|
@@ -803,8 +757,7 @@ if (isDirectExecution) {
|
|
|
803
757
|
if (argv.promptCaseStudies) args.push('--prompt-case-studies');
|
|
804
758
|
if (argv.promptPlaywrightMcp !== undefined) args.push(argv.promptPlaywrightMcp ? '--prompt-playwright-mcp' : '--no-prompt-playwright-mcp');
|
|
805
759
|
// Log the actual command being executed so users can investigate/reproduce
|
|
806
|
-
|
|
807
|
-
await log(` 📋 Command: ${command}`);
|
|
760
|
+
await log(` 📋 Command: ${solveCommand} ${args.join(' ')}`);
|
|
808
761
|
|
|
809
762
|
let exitCode = 0;
|
|
810
763
|
// Create promise to handle async spawn process
|
package/src/solve.mjs
CHANGED
|
@@ -1035,7 +1035,11 @@ try {
|
|
|
1035
1035
|
}
|
|
1036
1036
|
}
|
|
1037
1037
|
|
|
1038
|
-
if
|
|
1038
|
+
// Handle failure cases, but skip exit if limit reached with auto-continue enabled
|
|
1039
|
+
// This allows the code to continue to showSessionSummary() where autoContinueWhenLimitResets() is called
|
|
1040
|
+
const shouldSkipFailureExitForAutoLimitContinue = limitReached && argv.autoContinueOnLimitReset;
|
|
1041
|
+
|
|
1042
|
+
if (!success && !shouldSkipFailureExitForAutoLimitContinue) {
|
|
1039
1043
|
// Show claude resume command only for --tool claude (or default) on failure
|
|
1040
1044
|
// Uses the (cd ... && claude --resume ...) pattern for a fully copyable, executable command
|
|
1041
1045
|
const toolForFailure = argv.tool || 'claude';
|