@link-assistant/hive-mind 1.38.3 → 1.40.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 +12 -0
- package/README.md +10 -10
- package/package.json +1 -1
- package/src/version-info.lib.mjs +142 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @link-assistant/hive-mind
|
|
2
2
|
|
|
3
|
+
## 1.40.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6b8465a: feat: add browsers, browser tools, and missing software to /version command
|
|
8
|
+
|
|
9
|
+
## 1.39.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- b162658: Migrate to sandbox 1.5.0 with /workspace shared directory, replacing user rename approach with group-based access (issue #1499)
|
|
14
|
+
|
|
3
15
|
## 1.38.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -197,22 +197,22 @@ docker attach hive-mind
|
|
|
197
197
|
|
|
198
198
|
# Extract auth data from a running (or stopped) container to the host:
|
|
199
199
|
mkdir -p ~/.hive-mind
|
|
200
|
-
docker cp hive-mind:/
|
|
201
|
-
docker cp hive-mind:/
|
|
202
|
-
docker cp hive-mind:/
|
|
200
|
+
docker cp hive-mind:/workspace/.claude ~/.hive-mind/claude
|
|
201
|
+
docker cp hive-mind:/workspace/.claude.json ~/.hive-mind/claude.json
|
|
202
|
+
docker cp hive-mind:/workspace/.config/gh ~/.hive-mind/gh
|
|
203
203
|
|
|
204
|
-
# Fix ownership to match the
|
|
205
|
-
|
|
206
|
-
chown -R $
|
|
207
|
-
chown $
|
|
204
|
+
# Fix ownership to match the sandbox user inside the container:
|
|
205
|
+
SANDBOX_UID=$(docker exec hive-mind id -u sandbox)
|
|
206
|
+
chown -R $SANDBOX_UID:$SANDBOX_UID ~/.hive-mind/claude ~/.hive-mind/gh
|
|
207
|
+
chown $SANDBOX_UID:$SANDBOX_UID ~/.hive-mind/claude.json
|
|
208
208
|
|
|
209
209
|
# On subsequent runs, mount the auth data to keep it between restarts:
|
|
210
210
|
docker run -dit \
|
|
211
211
|
--name hive-mind \
|
|
212
212
|
--restart unless-stopped \
|
|
213
|
-
-v /root/.hive-mind/claude:/
|
|
214
|
-
-v /root/.hive-mind/claude.json:/
|
|
215
|
-
-v /root/.hive-mind/gh:/
|
|
213
|
+
-v /root/.hive-mind/claude:/workspace/.claude \
|
|
214
|
+
-v /root/.hive-mind/claude.json:/workspace/.claude.json \
|
|
215
|
+
-v /root/.hive-mind/gh:/workspace/.config/gh \
|
|
216
216
|
konard/hive-mind:latest
|
|
217
217
|
```
|
|
218
218
|
|
package/package.json
CHANGED
package/src/version-info.lib.mjs
CHANGED
|
@@ -50,7 +50,17 @@ const VERSION_COMMANDS = [
|
|
|
50
50
|
|
|
51
51
|
// Browser Automation
|
|
52
52
|
{ key: 'playwright', command: 'playwright --version 2>&1' },
|
|
53
|
+
{ key: 'playwrightTest', command: "npm list -g @playwright/test --depth=0 2>&1 | grep @playwright/test | awk '{print $2}'" },
|
|
53
54
|
{ key: 'playwrightMcp', command: "npm list -g @playwright/mcp --depth=0 2>&1 | grep @playwright/mcp | awk '{print $2}'" },
|
|
55
|
+
{ key: 'playwrightMcpStatus', command: 'timeout 5 claude mcp list 2>&1 | grep -i playwright | head -1' },
|
|
56
|
+
{ key: 'puppeteerBrowsers', command: "npm list -g @puppeteer/browsers --depth=0 2>&1 | grep @puppeteer/browsers | awk '{print $2}'" },
|
|
57
|
+
|
|
58
|
+
// Browsers (installed via Playwright)
|
|
59
|
+
{ key: 'chrome', command: 'google-chrome --version 2>&1' },
|
|
60
|
+
{ key: 'chromium', command: 'chromium --version 2>&1', fallbacks: ['chromium-browser --version 2>&1'] },
|
|
61
|
+
{ key: 'firefox', command: 'firefox --version 2>&1' },
|
|
62
|
+
{ key: 'msedge', command: 'microsoft-edge --version 2>&1', fallbacks: ['microsoft-edge-stable --version 2>&1'] },
|
|
63
|
+
{ key: 'webkit', command: "ls ~/.cache/ms-playwright/ 2>/dev/null | grep -oE 'webkit-[0-9]+' | head -1" },
|
|
54
64
|
|
|
55
65
|
// JavaScript/Node.js ecosystem
|
|
56
66
|
{ key: 'bun', command: 'bun --version 2>&1' },
|
|
@@ -103,10 +113,33 @@ const VERSION_COMMANDS = [
|
|
|
103
113
|
{ key: 'make', command: 'make --version 2>&1 | head -n1' },
|
|
104
114
|
{ key: 'cmake', command: 'cmake --version 2>&1 | head -n1' },
|
|
105
115
|
|
|
116
|
+
// Ruby ecosystem
|
|
117
|
+
{ key: 'ruby', command: 'ruby --version 2>&1' },
|
|
118
|
+
{ key: 'rbenv', command: 'rbenv --version 2>&1' },
|
|
119
|
+
|
|
120
|
+
// Kotlin
|
|
121
|
+
{ key: 'kotlin', command: 'kotlin -version 2>&1' },
|
|
122
|
+
|
|
123
|
+
// Swift
|
|
124
|
+
{ key: 'swift', command: 'swift --version 2>&1 | head -n1' },
|
|
125
|
+
|
|
126
|
+
// R
|
|
127
|
+
{ key: 'r', command: 'R --version 2>&1 | head -n1' },
|
|
128
|
+
|
|
106
129
|
// Development Tools
|
|
107
130
|
{ key: 'git', command: 'git --version 2>&1' },
|
|
108
131
|
{ key: 'gh', command: 'gh --version 2>&1 | head -n1' },
|
|
132
|
+
{ key: 'glab', command: 'glab --version 2>&1 | head -n1' },
|
|
109
133
|
{ key: 'brew', command: 'brew --version 2>&1 | head -n1' },
|
|
134
|
+
{ key: 'nasm', command: 'nasm --version 2>&1' },
|
|
135
|
+
{ key: 'fasm', command: 'fasm 2>&1 | head -n1' },
|
|
136
|
+
{ key: 'curl', command: 'curl --version 2>&1 | head -n1' },
|
|
137
|
+
{ key: 'wget', command: 'wget --version 2>&1 | head -n1' },
|
|
138
|
+
{ key: 'zip', command: 'zip --version 2>&1 | head -n2 | tail -n1' },
|
|
139
|
+
{ key: 'unzip', command: 'unzip -v 2>&1 | head -n1' },
|
|
140
|
+
{ key: 'expect', command: 'expect -version 2>&1' },
|
|
141
|
+
{ key: 'screen', command: 'screen --version 2>&1' },
|
|
142
|
+
{ key: 'xvfb', command: 'Xvfb -version 2>&1 | head -n1', fallbacks: ['dpkg -l xvfb 2>/dev/null | grep xvfb | head -1'] },
|
|
110
143
|
];
|
|
111
144
|
|
|
112
145
|
/**
|
|
@@ -202,7 +235,17 @@ export async function getVersionInfo(verbose = false, processVersion = null) {
|
|
|
202
235
|
|
|
203
236
|
// Browser Automation
|
|
204
237
|
playwright: versions.playwright,
|
|
238
|
+
playwrightTest: versions.playwrightTest,
|
|
205
239
|
playwrightMcp: versions.playwrightMcp,
|
|
240
|
+
playwrightMcpStatus: versions.playwrightMcpStatus,
|
|
241
|
+
puppeteerBrowsers: versions.puppeteerBrowsers,
|
|
242
|
+
|
|
243
|
+
// Browsers
|
|
244
|
+
chrome: versions.chrome,
|
|
245
|
+
chromium: versions.chromium,
|
|
246
|
+
firefox: versions.firefox,
|
|
247
|
+
msedge: versions.msedge,
|
|
248
|
+
webkit: versions.webkit,
|
|
206
249
|
|
|
207
250
|
// JavaScript/Node.js
|
|
208
251
|
node: versions.node,
|
|
@@ -246,6 +289,19 @@ export async function getVersionInfo(verbose = false, processVersion = null) {
|
|
|
246
289
|
elan: versions.elan,
|
|
247
290
|
lake: versions.lake,
|
|
248
291
|
|
|
292
|
+
// Ruby
|
|
293
|
+
ruby: versions.ruby,
|
|
294
|
+
rbenv: versions.rbenv,
|
|
295
|
+
|
|
296
|
+
// Kotlin
|
|
297
|
+
kotlin: versions.kotlin,
|
|
298
|
+
|
|
299
|
+
// Swift
|
|
300
|
+
swift: versions.swift,
|
|
301
|
+
|
|
302
|
+
// R
|
|
303
|
+
r: versions.r,
|
|
304
|
+
|
|
249
305
|
// C/C++
|
|
250
306
|
gcc: versions.gcc,
|
|
251
307
|
gpp: versions.gpp,
|
|
@@ -258,7 +314,17 @@ export async function getVersionInfo(verbose = false, processVersion = null) {
|
|
|
258
314
|
// Development Tools
|
|
259
315
|
git: versions.git,
|
|
260
316
|
gh: versions.gh,
|
|
317
|
+
glab: versions.glab,
|
|
261
318
|
brew: versions.brew,
|
|
319
|
+
nasm: versions.nasm,
|
|
320
|
+
fasm: versions.fasm,
|
|
321
|
+
curl: versions.curl,
|
|
322
|
+
wget: versions.wget,
|
|
323
|
+
zip: versions.zip,
|
|
324
|
+
unzip: versions.unzip,
|
|
325
|
+
expect: versions.expect,
|
|
326
|
+
screen: versions.screen,
|
|
327
|
+
xvfb: versions.xvfb,
|
|
262
328
|
|
|
263
329
|
// Platform
|
|
264
330
|
platform: versions.platform,
|
|
@@ -407,7 +473,7 @@ export function formatVersionMessage(versions) {
|
|
|
407
473
|
|
|
408
474
|
if (perlLines.length > 0) {
|
|
409
475
|
lines.push('');
|
|
410
|
-
lines.push('
|
|
476
|
+
lines.push('*🐪 Perl*');
|
|
411
477
|
lines.push(...perlLines);
|
|
412
478
|
}
|
|
413
479
|
|
|
@@ -435,6 +501,38 @@ export function formatVersionMessage(versions) {
|
|
|
435
501
|
lines.push(...leanLines);
|
|
436
502
|
}
|
|
437
503
|
|
|
504
|
+
// === Ruby ===
|
|
505
|
+
const rubyLines = [];
|
|
506
|
+
addVersionLine(rubyLines, 'Ruby', versions.ruby);
|
|
507
|
+
addVersionLine(rubyLines, 'Rbenv', versions.rbenv);
|
|
508
|
+
|
|
509
|
+
if (rubyLines.length > 0) {
|
|
510
|
+
lines.push('');
|
|
511
|
+
lines.push('*💎 Ruby*');
|
|
512
|
+
lines.push(...rubyLines);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
// === Kotlin ===
|
|
516
|
+
if (versions.kotlin) {
|
|
517
|
+
lines.push('');
|
|
518
|
+
lines.push('*🟣 Kotlin*');
|
|
519
|
+
addVersionLine(lines, 'Kotlin', versions.kotlin);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// === Swift ===
|
|
523
|
+
if (versions.swift) {
|
|
524
|
+
lines.push('');
|
|
525
|
+
lines.push('*🦅 Swift*');
|
|
526
|
+
addVersionLine(lines, 'Swift', versions.swift);
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// === R ===
|
|
530
|
+
if (versions.r) {
|
|
531
|
+
lines.push('');
|
|
532
|
+
lines.push('*📊 R*');
|
|
533
|
+
addVersionLine(lines, 'R', versions.r);
|
|
534
|
+
}
|
|
535
|
+
|
|
438
536
|
// === C/C++ ===
|
|
439
537
|
const cppLines = [];
|
|
440
538
|
addVersionLine(cppLines, 'GCC', versions.gcc);
|
|
@@ -444,20 +542,60 @@ export function formatVersionMessage(versions) {
|
|
|
444
542
|
addVersionLine(cppLines, 'LLD', versions.lld);
|
|
445
543
|
addVersionLine(cppLines, 'Make', versions.make);
|
|
446
544
|
addVersionLine(cppLines, 'CMake', versions.cmake);
|
|
545
|
+
addVersionLine(cppLines, 'NASM', versions.nasm);
|
|
546
|
+
addVersionLine(cppLines, 'FASM', versions.fasm);
|
|
447
547
|
|
|
448
548
|
if (cppLines.length > 0) {
|
|
449
549
|
lines.push('');
|
|
450
|
-
lines.push('*🔨 C/C
|
|
550
|
+
lines.push('*🔨 C/C++/Assembly*');
|
|
451
551
|
lines.push(...cppLines);
|
|
452
552
|
}
|
|
453
553
|
|
|
554
|
+
// === Browsers ===
|
|
555
|
+
const browserLines = [];
|
|
556
|
+
addVersionLine(browserLines, 'Google Chrome', versions.chrome);
|
|
557
|
+
addVersionLine(browserLines, 'Chromium', versions.chromium);
|
|
558
|
+
addVersionLine(browserLines, 'Firefox', versions.firefox);
|
|
559
|
+
addVersionLine(browserLines, 'Microsoft Edge', versions.msedge);
|
|
560
|
+
addVersionLine(browserLines, 'WebKit', versions.webkit);
|
|
561
|
+
|
|
562
|
+
if (browserLines.length > 0) {
|
|
563
|
+
lines.push('');
|
|
564
|
+
lines.push('*🌐 Browsers*');
|
|
565
|
+
lines.push(...browserLines);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// === Browser Automation ===
|
|
569
|
+
const browserAutoLines = [];
|
|
570
|
+
addVersionLine(browserAutoLines, 'Playwright', versions.playwright);
|
|
571
|
+
addVersionLine(browserAutoLines, 'Playwright Test', versions.playwrightTest);
|
|
572
|
+
addVersionLine(browserAutoLines, 'Playwright MCP', versions.playwrightMcp);
|
|
573
|
+
if (versions.playwrightMcpStatus) {
|
|
574
|
+
browserAutoLines.push(`• Playwright MCP in Claude Code: \`${versions.playwrightMcpStatus}\``);
|
|
575
|
+
} else if (versions.playwrightMcp) {
|
|
576
|
+
browserAutoLines.push('• Playwright MCP in Claude Code: `not configured`');
|
|
577
|
+
}
|
|
578
|
+
addVersionLine(browserAutoLines, 'Puppeteer Browsers', versions.puppeteerBrowsers);
|
|
579
|
+
|
|
580
|
+
if (browserAutoLines.length > 0) {
|
|
581
|
+
lines.push('');
|
|
582
|
+
lines.push('*🎭 Browser Automation*');
|
|
583
|
+
lines.push(...browserAutoLines);
|
|
584
|
+
}
|
|
585
|
+
|
|
454
586
|
// === Development Tools ===
|
|
455
587
|
const toolLines = [];
|
|
456
588
|
addVersionLine(toolLines, 'Git', versions.git);
|
|
457
589
|
addVersionLine(toolLines, 'GitHub CLI', versions.gh);
|
|
458
|
-
addVersionLine(toolLines, '
|
|
459
|
-
addVersionLine(toolLines, 'Playwright MCP', versions.playwrightMcp);
|
|
590
|
+
addVersionLine(toolLines, 'GitLab CLI', versions.glab);
|
|
460
591
|
addVersionLine(toolLines, 'Homebrew', versions.brew);
|
|
592
|
+
addVersionLine(toolLines, 'cURL', versions.curl);
|
|
593
|
+
addVersionLine(toolLines, 'Wget', versions.wget);
|
|
594
|
+
addVersionLine(toolLines, 'Zip', versions.zip);
|
|
595
|
+
addVersionLine(toolLines, 'Unzip', versions.unzip);
|
|
596
|
+
addVersionLine(toolLines, 'Expect', versions.expect);
|
|
597
|
+
addVersionLine(toolLines, 'Screen', versions.screen);
|
|
598
|
+
addVersionLine(toolLines, 'Xvfb', versions.xvfb);
|
|
461
599
|
|
|
462
600
|
if (toolLines.length > 0) {
|
|
463
601
|
lines.push('');
|