@aiassesstech/mighty-mark 0.3.42 → 0.4.1
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/checks/api-connectivity.d.ts +11 -1
- package/dist/checks/api-connectivity.d.ts.map +1 -1
- package/dist/checks/api-connectivity.js +81 -2
- package/dist/checks/api-connectivity.js.map +1 -1
- package/package.json +2 -1
- package/src/scripts/gog-reauth.sh +91 -0
- package/src/watchdog/install.sh +21 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API connectivity checks — Anthropic, Telegram, Ethereum RPC.
|
|
2
|
+
* API connectivity checks — Anthropic, Telegram, Ethereum RPC, GOG.
|
|
3
3
|
*/
|
|
4
4
|
import type { CheckResult } from '../types/health.js';
|
|
5
5
|
import { type CheckContext } from './check-context.js';
|
|
@@ -9,6 +9,16 @@ export declare function checkAnthropicApi(ctx?: CheckContext): Promise<CheckResu
|
|
|
9
9
|
export declare function checkTelegramApi(token?: string, ctx?: CheckContext): Promise<CheckResult>;
|
|
10
10
|
/** Check #22: Ethereum RPC reachable. */
|
|
11
11
|
export declare function checkEthereumRpc(ctx?: CheckContext): Promise<CheckResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Check #63: GOG token valid — Google Workspace access for Jessie.
|
|
14
|
+
*
|
|
15
|
+
* Runs `gog gmail search` to verify the OAuth token is still valid.
|
|
16
|
+
* On failure, the message includes the recovery command so the alert
|
|
17
|
+
* is immediately actionable.
|
|
18
|
+
*
|
|
19
|
+
* @see SPEC-GOG-TOKEN-RESILIENCE-1.0.md
|
|
20
|
+
*/
|
|
21
|
+
export declare function checkGogToken(ctx?: CheckContext): Promise<CheckResult>;
|
|
12
22
|
/** Run all API connectivity checks. */
|
|
13
23
|
export declare function runApiChecks(telegramToken?: string, ctx?: CheckContext): Promise<CheckResult[]>;
|
|
14
24
|
//# sourceMappingURL=api-connectivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-connectivity.d.ts","sourceRoot":"","sources":["../../src/checks/api-connectivity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,
|
|
1
|
+
{"version":3,"file":"api-connectivity.d.ts","sourceRoot":"","sources":["../../src/checks/api-connectivity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkCjG,4DAA4D;AAC5D,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhF;AAED,6CAA6C;AAC7C,wBAAsB,gBAAgB,CACpC,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAsBtB;AAED,yCAAyC;AACzC,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuB/E;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6E5E;AAED,uCAAuC;AACvC,wBAAsB,YAAY,CAChC,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAOxB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API connectivity checks — Anthropic, Telegram, Ethereum RPC.
|
|
2
|
+
* API connectivity checks — Anthropic, Telegram, Ethereum RPC, GOG.
|
|
3
3
|
*/
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { DEFAULT_API_TIMEOUT_MS } from '../config/defaults.js';
|
|
7
|
-
import { fetchUrl, now, resolveOpenClawHome } from './check-context.js';
|
|
7
|
+
import { exec, fetchUrl, now, resolveOpenClawHome } from './check-context.js';
|
|
8
8
|
/** Read the Anthropic API key from openclaw.json provider config or env. */
|
|
9
9
|
function resolveAnthropicKey() {
|
|
10
10
|
if (process.env.ANTHROPIC_API_KEY)
|
|
@@ -108,12 +108,91 @@ export async function checkEthereumRpc(ctx) {
|
|
|
108
108
|
return { name: 'Ethereum RPC reachable', category: 'api', status: 'warn', message: 'Ethereum RPC unreachable', timestamp: now(), durationMs: Date.now() - start };
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Check #63: GOG token valid — Google Workspace access for Jessie.
|
|
113
|
+
*
|
|
114
|
+
* Runs `gog gmail search` to verify the OAuth token is still valid.
|
|
115
|
+
* On failure, the message includes the recovery command so the alert
|
|
116
|
+
* is immediately actionable.
|
|
117
|
+
*
|
|
118
|
+
* @see SPEC-GOG-TOKEN-RESILIENCE-1.0.md
|
|
119
|
+
*/
|
|
120
|
+
export async function checkGogToken(ctx) {
|
|
121
|
+
const start = Date.now();
|
|
122
|
+
const gogAccount = process.env.GOG_ACCOUNT ?? 'gidanc.defend.good@gmail.com';
|
|
123
|
+
const gogKeyringPw = process.env.GOG_KEYRING_PASSWORD ?? '';
|
|
124
|
+
if (!gogKeyringPw && !ctx) {
|
|
125
|
+
return {
|
|
126
|
+
name: 'GOG token valid',
|
|
127
|
+
category: 'api',
|
|
128
|
+
status: 'warn',
|
|
129
|
+
message: 'GOG_KEYRING_PASSWORD not configured — GOG health check skipped',
|
|
130
|
+
timestamp: now(),
|
|
131
|
+
durationMs: Date.now() - start,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const output = exec(`GOG_KEYRING_PASSWORD="${gogKeyringPw}" ` +
|
|
136
|
+
`GOG_ACCOUNT="${gogAccount}" ` +
|
|
137
|
+
`gog gmail search "newer_than:7d" --max 1 2>&1`, ctx);
|
|
138
|
+
if (output.includes('invalid_grant')) {
|
|
139
|
+
return {
|
|
140
|
+
name: 'GOG token valid',
|
|
141
|
+
category: 'api',
|
|
142
|
+
status: 'fail',
|
|
143
|
+
message: 'GOG token expired — Jessie has no Google access. Run: /usr/local/bin/gog-reauth.sh',
|
|
144
|
+
timestamp: now(),
|
|
145
|
+
durationMs: Date.now() - start,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
name: 'GOG token valid',
|
|
150
|
+
category: 'api',
|
|
151
|
+
status: 'pass',
|
|
152
|
+
message: `Google Workspace access confirmed (${gogAccount})`,
|
|
153
|
+
timestamp: now(),
|
|
154
|
+
durationMs: Date.now() - start,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
159
|
+
if (message.includes('ENOENT') || message.includes('not found') || message.includes('gog:')) {
|
|
160
|
+
return {
|
|
161
|
+
name: 'GOG token valid',
|
|
162
|
+
category: 'api',
|
|
163
|
+
status: 'warn',
|
|
164
|
+
message: 'gog binary not found — GOG health check unavailable',
|
|
165
|
+
timestamp: now(),
|
|
166
|
+
durationMs: Date.now() - start,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (message.includes('invalid_grant')) {
|
|
170
|
+
return {
|
|
171
|
+
name: 'GOG token valid',
|
|
172
|
+
category: 'api',
|
|
173
|
+
status: 'fail',
|
|
174
|
+
message: 'GOG token expired — Jessie has no Google access. Run: /usr/local/bin/gog-reauth.sh',
|
|
175
|
+
timestamp: now(),
|
|
176
|
+
durationMs: Date.now() - start,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
name: 'GOG token valid',
|
|
181
|
+
category: 'api',
|
|
182
|
+
status: 'fail',
|
|
183
|
+
message: `GOG check failed: ${message.slice(0, 200)}`,
|
|
184
|
+
timestamp: now(),
|
|
185
|
+
durationMs: Date.now() - start,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
111
189
|
/** Run all API connectivity checks. */
|
|
112
190
|
export async function runApiChecks(telegramToken, ctx) {
|
|
113
191
|
return [
|
|
114
192
|
await checkAnthropicApi(ctx),
|
|
115
193
|
await checkTelegramApi(telegramToken, ctx),
|
|
116
194
|
await checkEthereumRpc(ctx),
|
|
195
|
+
await checkGogToken(ctx),
|
|
117
196
|
];
|
|
118
197
|
}
|
|
119
198
|
//# sourceMappingURL=api-connectivity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-connectivity.js","sourceRoot":"","sources":["../../src/checks/api-connectivity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-connectivity.js","sourceRoot":"","sources":["../../src/checks/api-connectivity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiassesstech/mighty-mark",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "System Health Sentinel for AI Assess Tech Fleet — autonomous monitoring, watchdog recovery, and fleet infrastructure oversight.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"src/watchdog",
|
|
21
21
|
"src/watchdog/fleet-backup",
|
|
22
22
|
"src/watchdog/fleet-backup/test",
|
|
23
|
+
"src/scripts",
|
|
23
24
|
"README.md",
|
|
24
25
|
"LICENSE",
|
|
25
26
|
"CHANGELOG.md"
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# GOG Re-Authentication Helper
|
|
3
|
+
# Usage: /usr/local/bin/gog-reauth.sh
|
|
4
|
+
#
|
|
5
|
+
# Prerequisites: socat must be installed (apt install -y socat)
|
|
6
|
+
# Tailscale must be running and connected
|
|
7
|
+
#
|
|
8
|
+
# @see SPEC-GOG-TOKEN-RESILIENCE-1.0.md Section 5.1
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
TAILSCALE_IP="100.92.178.114"
|
|
13
|
+
GOG_ACCOUNT="gidanc.defend.good@gmail.com"
|
|
14
|
+
GOG_SERVICES="gmail,calendar,drive,contacts,docs,sheets"
|
|
15
|
+
export GOG_KEYRING_PASSWORD=test123
|
|
16
|
+
|
|
17
|
+
echo "========================================"
|
|
18
|
+
echo " GOG Re-Authentication Helper"
|
|
19
|
+
echo "========================================"
|
|
20
|
+
echo ""
|
|
21
|
+
|
|
22
|
+
# Kill any existing socat forwarding
|
|
23
|
+
pkill -f "socat.*bind=$TAILSCALE_IP" 2>/dev/null || true
|
|
24
|
+
|
|
25
|
+
# Start GOG auth in background
|
|
26
|
+
gog auth login \
|
|
27
|
+
--account="$GOG_ACCOUNT" \
|
|
28
|
+
--services="$GOG_SERVICES" \
|
|
29
|
+
--force-consent &
|
|
30
|
+
GOG_PID=$!
|
|
31
|
+
|
|
32
|
+
# Wait for GOG to start its HTTP server
|
|
33
|
+
sleep 3
|
|
34
|
+
|
|
35
|
+
# Find the port GOG chose
|
|
36
|
+
PORT=$(ss -tlnp | grep "pid=$GOG_PID" | grep -oP ':([0-9]+)' | head -1 | tr -d ':')
|
|
37
|
+
|
|
38
|
+
if [ -z "$PORT" ]; then
|
|
39
|
+
echo "ERROR: Could not detect GOG auth port."
|
|
40
|
+
echo "Check if GOG auth is running and try manually."
|
|
41
|
+
kill $GOG_PID 2>/dev/null
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
echo "GOG auth server running on port: $PORT"
|
|
46
|
+
echo ""
|
|
47
|
+
|
|
48
|
+
# Start socat to forward Tailscale IP to localhost
|
|
49
|
+
socat TCP-LISTEN:$PORT,bind=$TAILSCALE_IP,fork TCP:127.0.0.1:$PORT &
|
|
50
|
+
SOCAT_PID=$!
|
|
51
|
+
|
|
52
|
+
echo "========================================"
|
|
53
|
+
echo " STEP 1: Open this URL in your browser:"
|
|
54
|
+
echo ""
|
|
55
|
+
echo " http://$TAILSCALE_IP:$PORT"
|
|
56
|
+
echo ""
|
|
57
|
+
echo " STEP 2: Click the account card to re-authorize"
|
|
58
|
+
echo ""
|
|
59
|
+
echo " STEP 3: After Google consent screen, the callback"
|
|
60
|
+
echo " URL will show 127.0.0.1 — change it to:"
|
|
61
|
+
echo " $TAILSCALE_IP"
|
|
62
|
+
echo " and press Enter"
|
|
63
|
+
echo ""
|
|
64
|
+
echo " STEP 4: You should see 'You're connected'"
|
|
65
|
+
echo "========================================"
|
|
66
|
+
echo ""
|
|
67
|
+
echo "Waiting for authentication to complete..."
|
|
68
|
+
echo "Press Ctrl+C when done."
|
|
69
|
+
|
|
70
|
+
# Wait for GOG to finish (|| true prevents set -e from killing the script
|
|
71
|
+
# when GOG exits non-zero after browser callback completes)
|
|
72
|
+
wait $GOG_PID 2>/dev/null || true
|
|
73
|
+
|
|
74
|
+
# Cleanup
|
|
75
|
+
kill $SOCAT_PID 2>/dev/null || true
|
|
76
|
+
|
|
77
|
+
echo ""
|
|
78
|
+
echo "Authentication complete. Testing..."
|
|
79
|
+
|
|
80
|
+
# Smoke test
|
|
81
|
+
export GOG_ACCOUNT="$GOG_ACCOUNT"
|
|
82
|
+
RESULT=$(gog gmail search "newer_than:1d" --max 1 2>&1)
|
|
83
|
+
|
|
84
|
+
if echo "$RESULT" | grep -q "invalid_grant"; then
|
|
85
|
+
echo "FAILED: Token still invalid. Try again."
|
|
86
|
+
exit 1
|
|
87
|
+
else
|
|
88
|
+
echo "SUCCESS: GOG is working. Jessie has Google access."
|
|
89
|
+
echo ""
|
|
90
|
+
echo "$RESULT"
|
|
91
|
+
fi
|
package/src/watchdog/install.sh
CHANGED
|
@@ -287,8 +287,25 @@ if [ -f /etc/cron.d/fleet-backup ]; then
|
|
|
287
287
|
echo " Removed: /etc/cron.d/fleet-backup (now orchestrated by Mighty Mark)"
|
|
288
288
|
fi
|
|
289
289
|
|
|
290
|
-
# ── Step 7:
|
|
291
|
-
echo "[7/
|
|
290
|
+
# ── Step 7: Install GOG re-auth script ──
|
|
291
|
+
echo "[7/9] Installing GOG re-auth script..."
|
|
292
|
+
|
|
293
|
+
GOG_REAUTH_SRC="${SOURCE_DIR}/../scripts/gog-reauth.sh"
|
|
294
|
+
GOG_REAUTH_DEST="/usr/local/bin/gog-reauth.sh"
|
|
295
|
+
|
|
296
|
+
if [ "$DRY_RUN" = true ]; then
|
|
297
|
+
echo " [DRY RUN] Would install ${GOG_REAUTH_DEST}"
|
|
298
|
+
elif [ -f "$GOG_REAUTH_SRC" ]; then
|
|
299
|
+
cp "$GOG_REAUTH_SRC" "$GOG_REAUTH_DEST"
|
|
300
|
+
chmod 700 "$GOG_REAUTH_DEST"
|
|
301
|
+
echo " Installed: ${GOG_REAUTH_DEST} (permissions: 700)"
|
|
302
|
+
else
|
|
303
|
+
echo " Skipped — gog-reauth.sh not found in package"
|
|
304
|
+
echo " Expected at: ${GOG_REAUTH_SRC}"
|
|
305
|
+
fi
|
|
306
|
+
|
|
307
|
+
# ── Step 8: Initialize state ──
|
|
308
|
+
echo "[8/9] Initializing state files..."
|
|
292
309
|
|
|
293
310
|
if [ "$DRY_RUN" = true ]; then
|
|
294
311
|
echo " [DRY RUN] Would initialize state files"
|
|
@@ -301,8 +318,8 @@ else
|
|
|
301
318
|
fi
|
|
302
319
|
fi
|
|
303
320
|
|
|
304
|
-
# ── Step
|
|
305
|
-
echo "[
|
|
321
|
+
# ── Step 9: Test Telegram connectivity ──
|
|
322
|
+
echo "[9/9] Testing Telegram connectivity..."
|
|
306
323
|
|
|
307
324
|
if [ "$DRY_RUN" = true ]; then
|
|
308
325
|
echo " [DRY RUN] Would test Telegram API"
|