@hybridlabor-api/aos 4.4.2-beta.7 → 4.4.2-beta.9
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/CLAUDE.md +0 -104
- package/installer.js +97 -13
- package/package.json +1 -1
- package/skills/global_config/live-preview-canvas/SKILL.md +19 -0
- package/skills/global_config/live-preview-canvas/examples/preview_interactive_dashboard.html +406 -0
- package/skills/global_config/live-preview-canvas/resources/template.html +291 -0
- package/skills/global_config/live-preview-canvas/scripts/base_template.html +178 -0
- package/skills/global_config/openwiki-skill/scripts/install_daemon.ps1 +81 -28
- package/skills/global_config/openwiki-skill/scripts/install_daemon.sh +71 -25
|
@@ -92,29 +92,58 @@ else
|
|
|
92
92
|
echo " -> google-genai installed; daemon will run under $DAEMON_PYTHON"
|
|
93
93
|
fi
|
|
94
94
|
|
|
95
|
-
# 3. Resolve API key
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
# 3. Resolve provider and API key
|
|
96
|
+
OPENWIKI_PROVIDER="${OPENWIKI_PROVIDER:-google}"
|
|
97
|
+
|
|
98
|
+
# Map provider to its API key environment variable name
|
|
99
|
+
case "$OPENWIKI_PROVIDER" in
|
|
100
|
+
google) API_KEY_VAR="GEMINI_API_KEY" ;;
|
|
101
|
+
groq) API_KEY_VAR="GROQ_API_KEY" ;;
|
|
102
|
+
grok|xai) API_KEY_VAR="XAI_API_KEY" ;;
|
|
103
|
+
nvidia) API_KEY_VAR="NVIDIA_API_KEY" ;;
|
|
104
|
+
openrouter) API_KEY_VAR="OPENROUTER_API_KEY" ;;
|
|
105
|
+
openai) API_KEY_VAR="OPENAI_API_KEY" ;;
|
|
106
|
+
custom) API_KEY_VAR="OPENWIKI_API_KEY" ;;
|
|
107
|
+
ollama) API_KEY_VAR="" ;;
|
|
108
|
+
*) OPENWIKI_PROVIDER="google"; API_KEY_VAR="GEMINI_API_KEY" ;;
|
|
109
|
+
esac
|
|
110
|
+
|
|
111
|
+
# For Google provider, use the existing interactive flow with verification
|
|
112
|
+
if [ "$OPENWIKI_PROVIDER" = "google" ]; then
|
|
113
|
+
GEMINI_KEY="${GEMINI_API_KEY:-}"
|
|
114
|
+
if [ -z "$GEMINI_KEY" ]; then
|
|
115
|
+
echo ""
|
|
116
|
+
echo "GEMINI_API_KEY is not set in your environment."
|
|
117
|
+
read -rp "Enter your Gemini API key (or press Enter to skip): " GEMINI_KEY
|
|
118
|
+
fi
|
|
102
119
|
|
|
103
|
-
if [ -n "$GEMINI_KEY" ]; then
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
120
|
+
if [ -n "$GEMINI_KEY" ]; then
|
|
121
|
+
export GEMINI_API_KEY="$GEMINI_KEY"
|
|
122
|
+
echo "Verifying API key..."
|
|
123
|
+
VERIFY_OUTPUT=$("$DAEMON_PYTHON" "$SCRIPTS_DIR/verify_api_key.py" 2>&1)
|
|
124
|
+
VERIFY_CODE=$?
|
|
125
|
+
if [ $VERIFY_CODE -eq 0 ] && echo "$VERIFY_OUTPUT" | grep -q "VERIFIED_OK"; then
|
|
126
|
+
echo " -> API key verified successfully."
|
|
127
|
+
else
|
|
128
|
+
echo " -> WARNING: API key verification failed (with retry + TLS fallback)."
|
|
129
|
+
echo "$VERIFY_OUTPUT" | sed 's/^/ /'
|
|
130
|
+
echo " The daemon will run in collect-only mode until a valid key is set."
|
|
131
|
+
GEMINI_KEY=""
|
|
132
|
+
fi
|
|
110
133
|
else
|
|
111
|
-
echo "
|
|
112
|
-
echo "$VERIFY_OUTPUT" | sed 's/^/ /'
|
|
113
|
-
echo " The daemon will run in collect-only mode until a valid key is set."
|
|
114
|
-
GEMINI_KEY=""
|
|
134
|
+
echo "No API key provided. Daemon will run in collect-only mode."
|
|
115
135
|
fi
|
|
136
|
+
API_KEY="$GEMINI_KEY"
|
|
116
137
|
else
|
|
117
|
-
|
|
138
|
+
# For non-Google providers, skip verification and use the configured key
|
|
139
|
+
if [ -n "$API_KEY_VAR" ]; then
|
|
140
|
+
API_KEY="${!API_KEY_VAR:-}"
|
|
141
|
+
else
|
|
142
|
+
API_KEY=""
|
|
143
|
+
fi
|
|
144
|
+
if [ -z "$API_KEY" ]; then
|
|
145
|
+
echo "No API key provided for provider '$OPENWIKI_PROVIDER'. Daemon will run in collect-only mode."
|
|
146
|
+
fi
|
|
118
147
|
fi
|
|
119
148
|
|
|
120
149
|
# --- Helpers -------------------------------------------------------------
|
|
@@ -179,12 +208,29 @@ write_launcher() {
|
|
|
179
208
|
{
|
|
180
209
|
printf '#!/bin/sh\n'
|
|
181
210
|
printf '# Generated by install_daemon.sh - do not edit, re-run the installer.\n'
|
|
182
|
-
printf '# Holds the OpenWiki API
|
|
183
|
-
printf '# and the systemd unit. Mode 700 on purpose.\n'
|
|
211
|
+
printf '# Holds the OpenWiki provider config and API keys so they stay out of\n'
|
|
212
|
+
printf '# the LaunchAgent plist and the systemd unit. Mode 700 on purpose.\n'
|
|
184
213
|
printf 'HOME=%s; export HOME\n' "$(sq "$HOME")"
|
|
185
214
|
printf 'PATH=%s; export PATH\n' "$(sq "$path_value")"
|
|
186
|
-
if [ -n "$
|
|
187
|
-
printf '
|
|
215
|
+
if [ -n "$OPENWIKI_PROVIDER" ]; then
|
|
216
|
+
printf 'OPENWIKI_PROVIDER=%s; export OPENWIKI_PROVIDER\n' "$(sq "$OPENWIKI_PROVIDER")"
|
|
217
|
+
fi
|
|
218
|
+
if [ -n "$OPENWIKI_MODEL" ]; then
|
|
219
|
+
printf 'OPENWIKI_MODEL=%s; export OPENWIKI_MODEL\n' "$(sq "$OPENWIKI_MODEL")"
|
|
220
|
+
fi
|
|
221
|
+
if [ -n "$OPENWIKI_BASE_URL" ]; then
|
|
222
|
+
printf 'OPENWIKI_BASE_URL=%s; export OPENWIKI_BASE_URL\n' "$(sq "$OPENWIKI_BASE_URL")"
|
|
223
|
+
fi
|
|
224
|
+
if [ -n "$API_KEY" ]; then
|
|
225
|
+
case "$OPENWIKI_PROVIDER" in
|
|
226
|
+
google) printf 'GEMINI_API_KEY=%s; export GEMINI_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
227
|
+
groq) printf 'GROQ_API_KEY=%s; export GROQ_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
228
|
+
grok|xai) printf 'XAI_API_KEY=%s; export XAI_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
229
|
+
nvidia) printf 'NVIDIA_API_KEY=%s; export NVIDIA_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
230
|
+
openrouter) printf 'OPENROUTER_API_KEY=%s; export OPENROUTER_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
231
|
+
openai) printf 'OPENAI_API_KEY=%s; export OPENAI_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
232
|
+
custom) printf 'OPENWIKI_API_KEY=%s; export OPENWIKI_API_KEY\n' "$(sq "$API_KEY")" ;;
|
|
233
|
+
esac
|
|
188
234
|
fi
|
|
189
235
|
printf 'exec %s %s --one-shot\n' "$(sq "$python_bin")" "$(sq "$SCRIPT_PATH")"
|
|
190
236
|
} > "$LAUNCHER_PATH"
|
|
@@ -214,7 +260,7 @@ if [ "$OS" = "macos" ]; then
|
|
|
214
260
|
|
|
215
261
|
MACOS_PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
216
262
|
write_launcher "$DAEMON_PYTHON" "$MACOS_PATH"
|
|
217
|
-
echo " -> Launcher written to $LAUNCHER_PATH (mode 700; holds the API key
|
|
263
|
+
echo " -> Launcher written to $LAUNCHER_PATH (mode 700; holds the provider config and API key)."
|
|
218
264
|
|
|
219
265
|
cat <<EOF > "$PLIST_PATH"
|
|
220
266
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -272,7 +318,7 @@ elif [ "$OS" = "linux" ]; then
|
|
|
272
318
|
|
|
273
319
|
LINUX_PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
274
320
|
write_launcher "$DAEMON_PYTHON" "$LINUX_PATH"
|
|
275
|
-
echo " -> Launcher written to $LAUNCHER_PATH (mode 700; holds the API key
|
|
321
|
+
echo " -> Launcher written to $LAUNCHER_PATH (mode 700; holds the provider config and API key)."
|
|
276
322
|
|
|
277
323
|
cat > "$SYSTEMD_SERVICE" <<EOF
|
|
278
324
|
[Unit]
|