@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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@link-assistant/hive-mind",
3
- "version": "0.53.0",
3
+ "version": "0.53.2",
4
4
  "description": "AI-powered issue solver and hive mind for collaborative problem solving",
5
5
  "main": "src/hive.mjs",
6
6
  "type": "module",
@@ -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
- args.push('--tool', argv.tool);
761
- }
762
- if (argv.fork) {
763
- args.push('--fork');
764
- }
765
- if (argv.autoFork) {
766
- args.push('--auto-fork');
767
- }
768
- if (argv.verbose) {
769
- args.push('--verbose');
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
- const command = `${solveCommand} "${issueUrl}" --model ${argv.model}${toolFlag}${forkFlag}${autoForkFlag}${verboseFlag}${attachLogsFlag}${targetBranchFlag}${logDirFlag}${dryRunFlag}${skipToolConnectionCheckFlag}${autoContinueFlag}${thinkFlag}${promptPlanSubAgentFlag}${noSentryFlag}${watchFlag}${prefixForkNameWithOwnerNameFlag}${interactiveModeFlag}${promptExploreSubAgentFlag}${promptIssueReportingFlag}${promptCaseStudiesFlag}${promptPlaywrightMcpFlag}`;
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 (!success) {
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';