very-happy-cli 0.2.96 → 0.2.98
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/dist/{AcpBackend-B5Eh8G3W.mjs → AcpBackend-BXiGiFC7.mjs} +1 -1
- package/dist/{AcpBackend-BaCt4_zS.cjs → AcpBackend-DhR8ml8L.cjs} +1 -1
- package/dist/{AcpSessionManager-grr_aJEI.mjs → AcpSessionManager-CDnrxAfQ.mjs} +1 -1
- package/dist/{AcpSessionManager-CvgmPlXB.cjs → AcpSessionManager-Ckc0NFmf.cjs} +1 -1
- package/dist/{config-B69TZlJj.mjs → config-B3pA9YsN.mjs} +3 -3
- package/dist/{config-BjsUeQPA.cjs → config-GJQc_kpD.cjs} +3 -3
- package/dist/{index-DID1FV_n.cjs → index-BBm2b34F.cjs} +5 -5
- package/dist/{index-C-uJXSm3.mjs → index-Bh5Rcy0s.mjs} +6 -6
- package/dist/{index-uc-dtu-3.cjs → index-CO1gNtuP.cjs} +528 -25
- package/dist/{index-BMmbxCTq.mjs → index-CuUVSZnK.mjs} +527 -24
- package/dist/index.cjs +3 -3
- package/dist/index.mjs +3 -3
- package/dist/{installTerminalHooks-CepXxAM_.cjs → installTerminalHooks-Cp9JVxQ-.cjs} +3 -3
- package/dist/{installTerminalHooks-CBHjEQ-a.mjs → installTerminalHooks-Ru0dn_zF.mjs} +3 -3
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +77 -0
- package/dist/lib.d.mts +77 -0
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-CAtbtTXF.cjs → mcp-B5HMF24K.cjs} +3 -3
- package/dist/{mcp-BdSHqi2d.mjs → mcp-CQoVN0u2.mjs} +3 -3
- package/dist/{runGemini-qStPY5fH.cjs → runGemini-BBzPVzuc.cjs} +5 -5
- package/dist/{runGemini-cMZ3_CRf.mjs → runGemini-CwZXQsgu.mjs} +5 -5
- package/dist/{runOpenClaw-B8HR6GnX.cjs → runOpenClaw-B4nC6XGL.cjs} +4 -4
- package/dist/{runOpenClaw-BJ36wEbk.mjs → runOpenClaw-C-jz4rWr.mjs} +4 -4
- package/dist/{send-6eY55o3C.cjs → send-CWgaINHC.cjs} +3 -3
- package/dist/{send-TX13v8Xe.mjs → send-DN-nVBEI.mjs} +3 -3
- package/dist/{spawn-vOZA0kOi.cjs → spawn-C0NSP84Y.cjs} +3 -3
- package/dist/{spawn-CfCE6JAv.mjs → spawn-CqcfbOnk.mjs} +3 -3
- package/dist/{types-okYCRlgl.cjs → types-BP-4phS_.cjs} +358 -72
- package/dist/{types-CLRl0ET3.mjs → types-Cl4vWuDY.mjs} +356 -72
- package/package.json +7 -7
- package/scripts/shims/keychain-off/security +51 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.98",
|
|
4
4
|
"description": "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.",
|
|
5
5
|
"author": "Kirill Dubovitskiy",
|
|
6
6
|
"contributors": [
|
|
@@ -113,12 +113,12 @@
|
|
|
113
113
|
"zod": "^4.0.0"
|
|
114
114
|
},
|
|
115
115
|
"optionalDependencies": {
|
|
116
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
117
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
118
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
119
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
120
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
121
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
116
|
+
"very-happy-tools-arm64-darwin": "0.2.98",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.98",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.98",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.98",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.98",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.98"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# very-happy keychain-off shim for Claude Code (B-276, spec 2026-09-claude-auth-preflight D8).
|
|
3
|
+
#
|
|
4
|
+
# Placed FIRST on PATH only for the Claude Code processes very-happy spawns when
|
|
5
|
+
# the machine-local setting `claudeCredentialStore` is `file`. Claude Code reads
|
|
6
|
+
# and writes its OAuth credentials through the bare `security` CLI; an exit code
|
|
7
|
+
# of 36 (errSecInteractionNotAllowed) on its own keychain item makes it fall
|
|
8
|
+
# back to ~/.claude/.credentials.json for reads AND writes without deleting the
|
|
9
|
+
# file — exactly what an ssh/tmux shell sees. Everything that is not Claude
|
|
10
|
+
# Code's own item is passed through to the real binary untouched.
|
|
11
|
+
#
|
|
12
|
+
# Exit code MUST be 36 or 44: anything else is treated by Claude Code as a
|
|
13
|
+
# transient READ_FAILED (cached credentials), not as "use the file".
|
|
14
|
+
REAL="${HAPPY_SECURITY_BIN:-/usr/bin/security}"
|
|
15
|
+
|
|
16
|
+
is_claude_item() {
|
|
17
|
+
# $@ = tokens of one security command line; true when -s <value> starts with "Claude Code"
|
|
18
|
+
local prev="" tok
|
|
19
|
+
for tok in "$@"; do
|
|
20
|
+
if [ "$prev" = "-s" ]; then
|
|
21
|
+
tok="${tok%\"}"; tok="${tok#\"}"; tok="${tok%\'}"; tok="${tok#\'}"
|
|
22
|
+
case "$tok" in "Claude Code"*) return 0 ;; esac
|
|
23
|
+
return 1
|
|
24
|
+
fi
|
|
25
|
+
prev="$tok"
|
|
26
|
+
done
|
|
27
|
+
return 1
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
case "${1:-}" in
|
|
31
|
+
show-keychain-info)
|
|
32
|
+
exit 36 ;;
|
|
33
|
+
find-generic-password|add-generic-password|delete-generic-password)
|
|
34
|
+
if is_claude_item "$@"; then exit 36; fi
|
|
35
|
+
exec "$REAL" "$@" ;;
|
|
36
|
+
-i)
|
|
37
|
+
# Interactive form: Claude Code's normal write path feeds
|
|
38
|
+
# `add-generic-password -U -a <user> -s "<service>" -X <hex>` on stdin.
|
|
39
|
+
input="$(cat)"
|
|
40
|
+
first_line="$(printf '%s\n' "$input" | sed -n '1p')"
|
|
41
|
+
case "$first_line" in
|
|
42
|
+
find-generic-password*|add-generic-password*|delete-generic-password*)
|
|
43
|
+
if [[ "$first_line" =~ (^|[[:space:]])-s[[:space:]]+(\"([^\"]*)\"|\'([^\']*)\'|([^[:space:]]+)) ]]; then
|
|
44
|
+
svc="${BASH_REMATCH[3]}${BASH_REMATCH[4]}${BASH_REMATCH[5]}"
|
|
45
|
+
case "$svc" in "Claude Code"*) exit 36 ;; esac
|
|
46
|
+
fi ;;
|
|
47
|
+
esac
|
|
48
|
+
printf '%s\n' "$input" | exec "$REAL" -i ;;
|
|
49
|
+
*)
|
|
50
|
+
exec "$REAL" "$@" ;;
|
|
51
|
+
esac
|