SPB Git forge

spb/admin-ka

Public
41commits 1branches 0releases
172.9 MBsize
maindefault branch
19 days agolast push
JavaScript 65.5% Python 17.8% CSS 13% HTML 3.7%

runs locaux: injecter tout ~/.claude/.env (APIFY_TOKEN, etc.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 20, 2026) parent bde8b3a

4 changed files +20 −7

modified data/backend.log +1 −0
@@ -7,3 +7,4 @@ admin-ka backend sur port 3300 (dual-stack)
7 7 admin-ka v2 sur port 3300 (dual-stack)
8 8 admin-ka v2 sur port 3300 (dual-stack)
9 9 admin-ka v2 sur port 3300 (dual-stack)
10 +admin-ka v2 sur port 3300 (dual-stack)
modified data/eco.sqlite +0 −0

Binary file not shown.

modified data/ngrok.log +6 −0
@@ -323,3 +323,9 @@ t=2026-08-20T00:38:11-0400 lvl=info msg="join connections" obj=join id=83adadecc
323 323 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=f7755b441375 l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54373
324 324 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=274ae66881de l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54376
325 325 t=2026-08-20T01:02:03-0400 lvl=info msg="join connections" obj=join id=504deb98fb4c l=[::1]:3300 r=70.25.239.68:61599
326 +t=2026-08-20T01:02:04-0400 lvl=info msg="join connections" obj=join id=21d3b27089b3 l=[::1]:3300 r=70.25.239.68:50559
327 +t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=e796ab5e83a3 l=[::1]:3300 r=70.25.239.68:61603
328 +t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=67f44373f352 l=[::1]:3300 r=70.25.239.68:61603
329 +t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=4b8ab47d4ea5 l=[::1]:3300 r=70.25.239.68:61603
330 +t=2026-08-20T01:05:36-0400 lvl=info msg="join connections" obj=join id=c5fc9e96ae20 l=[::1]:3300 r=70.25.239.68:61607
331 +t=2026-08-20T01:05:42-0400 lvl=info msg="join connections" obj=join id=4c93058d9170 l=[::1]:3300 r=70.25.239.68:61603
modified server/server.js +13 −7
@@ -31,15 +31,21 @@ const PORT = config.port || 3300;
31 31 const CLAUDE_BIN = config.claudeBin || '/opt/homebrew/bin/claude';
32 32 const NODE_BIN = config.nodeBin || '/opt/homebrew/bin/node';
33 33
34 function loadAnthropicKey() {
34 +// toutes les variables de ~/.claude/.env (ANTHROPIC_API_KEY, APIFY_TOKEN, …)
35 +// sont injectées dans les runs claude locaux (les runs distants font
36 +// `export $(cat ~/.claude/.env | xargs)` côté nœud)
37 +function loadClaudeEnv() {
38 + const out = {};
35 39 try {
36 const envFile = fs.readFileSync(path.join(HOME, '.claude', '.env'), 'utf8');
37 const m = envFile.match(/ANTHROPIC_API_KEY=(\S+)/);
38 if (m) return m[1];
40 + for (const line of fs.readFileSync(path.join(HOME, '.claude', '.env'), 'utf8').split('\n')) {
41 + const m = line.match(/^([A-Z0-9_]+)=(\S+)/);
42 + if (m) out[m[1]] = m[2];
43 + }
39 44 } catch {}
40 return process.env.ANTHROPIC_API_KEY || '';
45 + return out;
41 46 }
42 const ANTHROPIC_API_KEY = loadAnthropicKey();
47 +const CLAUDE_ENV = loadClaudeEnv();
48 +const ANTHROPIC_API_KEY = CLAUDE_ENV.ANTHROPIC_API_KEY || process.env.ANTHROPIC_API_KEY || '';
43 49
44 50 // ---------- audit ----------
45 51 const AUDIT_PATH = path.join(DATA_DIR, 'audit.jsonl');
@@ -241,7 +247,7 @@ function startClaude(chat, prompt) {
241 247 proc = spawn(CLAUDE_BIN, args, {
242 248 cwd: chat.dir,
243 249 env: {
244 ...process.env, ANTHROPIC_API_KEY,
250 + ...process.env, ...CLAUDE_ENV,
245 251 PATH: '/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', HOME,
246 252 },
247 253 stdio: ['pipe', 'pipe', 'pipe'],
248 254