cli-jaw 2.2.10 → 2.2.11
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/README.ja.md +15 -0
- package/README.ko.md +15 -0
- package/README.md +15 -0
- package/dist/bin/cli-jaw.js +5 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/doctor.js +2 -2
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/slack.js +190 -0
- package/dist/bin/commands/slack.js.map +1 -0
- package/dist/src/slack/manifest.js +84 -0
- package/dist/src/slack/manifest.js.map +1 -0
- package/package.json +3 -1
- package/scripts/bundle-sidecar.sh +13 -4
- package/scripts/check-sidecar-prune-safety.mjs +167 -0
- package/scripts/pick-gyp-python.sh +61 -0
- package/scripts/release-gates.mjs +14 -0
package/README.ja.md
CHANGED
|
@@ -370,6 +370,20 @@ Computer Use で Finder、Safari、システム設定、Xcode など、あらゆ
|
|
|
370
370
|
|
|
371
371
|
Telegram と同等の機能 — テキスト、ファイル、コマンド。チャンネル/スレッドルーティング、正規 `/api/channel/send`、エージェント結果ブロードキャストフォワーダー。Web UI 設定で構成。
|
|
372
372
|
|
|
373
|
+
### Slack
|
|
374
|
+
|
|
375
|
+
同じコマンドカタログを使う Socket Mode ボット — メンション、DM、スラッシュコマンド、ファイル/画像リレー、スレッド返信。
|
|
376
|
+
|
|
377
|
+
<details>
|
|
378
|
+
<summary>セットアップ(ガイド付きウィザード)</summary>
|
|
379
|
+
|
|
380
|
+
1. `jaw slack setup` — アプリマニフェストを表示(`jaw slack manifest | pbcopy`)して Slack アプリ作成ページを開き、2 つのトークンをライブ検証(`auth.test` + `apps.connections.open`)してから設定に保存
|
|
381
|
+
2. ボットを読ませる各チャンネルで `/invite @cli-jaw` を実行し、`jaw serve` を再起動
|
|
382
|
+
|
|
383
|
+
OAuth ワンクリックでない理由: Socket Mode に必要なアプリレベルトークン(`xapp-`)はアプリ設定 UI でのみ発行され、PKCE localhost フローは bot scope を拒否します。ブラウザのワンクリックではセルフホスト型 Socket Mode ボットを構成できないため、このウィザードが最短経路です。
|
|
384
|
+
|
|
385
|
+
</details>
|
|
386
|
+
|
|
373
387
|
### 音声 & STT
|
|
374
388
|
|
|
375
389
|
音声入力は Web(マイクボタン)、Telegram(音声メッセージ)、Discord で動作します。プロバイダ:OpenAI 互換、Google Vertex AI、任意のカスタムエンドポイント。
|
|
@@ -401,6 +415,7 @@ jaw dashboard # マネージャーダッシュボードを
|
|
|
401
415
|
jaw serve # サーバー起動(http://localhost:3457)
|
|
402
416
|
jaw chat # ターミナルチャット UI
|
|
403
417
|
jaw doctor # 12 項目の診断
|
|
418
|
+
jaw slack setup # ガイド付き Slack アプリ設定(マニフェスト + トークン検証)
|
|
404
419
|
|
|
405
420
|
# インスタンス
|
|
406
421
|
jaw clone ~/project # 新しいディレクトリにインスタンスを複製
|
package/README.ko.md
CHANGED
|
@@ -438,6 +438,20 @@ Computer Use로 Finder, Safari, 시스템 설정, Xcode 등 모든 macOS 앱을
|
|
|
438
438
|
|
|
439
439
|
Telegram과 동일한 기능 — 텍스트, 파일, 명령어. 채널/스레드 라우팅, `/api/channel/send` 정규 엔드포인트, 에이전트 결과 브로드캐스트 포워더 지원. Web UI 설정에서 세팅.
|
|
440
440
|
|
|
441
|
+
### Slack
|
|
442
|
+
|
|
443
|
+
같은 명령어 카탈로그를 쓰는 Socket Mode 봇 — 멘션, DM, 슬래시 명령어, 파일/이미지 릴리, 스레드 답장.
|
|
444
|
+
|
|
445
|
+
<details>
|
|
446
|
+
<summary>설정 (가이드 마법사)</summary>
|
|
447
|
+
|
|
448
|
+
1. `jaw slack setup` — 앱 매니페스트 출력(`jaw slack manifest | pbcopy`) 후 Slack 앱 생성 페이지를 열고, 두 토큰을 라이브 검증(`auth.test` + `apps.connections.open`)한 뒤 설정에 저장
|
|
449
|
+
2. 봇이 읽을 각 채널에서 `/invite @cli-jaw`, 이후 `jaw serve` 재시작
|
|
450
|
+
|
|
451
|
+
OAuth 원클릭이 안 되는 이유: Socket Mode에 필요한 앱 레벨 토큰(`xapp-`)은 앱 설정 UI에서만 발급되고, PKCE localhost 흐름은 bot scope를 허용하지 않습니다. 브라우저 클릭 한 번으로 셀프호스팅 Socket Mode 봇을 설정할 수는 없고, 이 마법사가 가장 짧은 경로입니다.
|
|
452
|
+
|
|
453
|
+
</details>
|
|
454
|
+
|
|
441
455
|
### 음성 & STT
|
|
442
456
|
|
|
443
457
|
Web(마이크 버튼), Telegram(음성 메시지), Discord에서 음성 입력 가능. 프로바이더: OpenAI 호환, Google Vertex AI, 커스텀 엔드포인트.
|
|
@@ -470,6 +484,7 @@ jaw serve # 서버 시작 (http://localhost:3457)
|
|
|
470
484
|
jaw chat # 터미널 채팅 UI
|
|
471
485
|
jaw chat search "query" # 채팅 히스토리 검색
|
|
472
486
|
jaw doctor # 설치/런타임 진단
|
|
487
|
+
jaw slack setup # 가이드 Slack 앱 설정 (매니페스트 + 토큰 검증)
|
|
473
488
|
|
|
474
489
|
# 인스턴스
|
|
475
490
|
jaw clone ~/project # 인스턴스 복제
|
package/README.md
CHANGED
|
@@ -493,6 +493,20 @@ Text chat, voice messages (auto-transcribed via STT — speech-to-text), file/ph
|
|
|
493
493
|
|
|
494
494
|
Same capabilities as Telegram — text, files, commands. Channel/thread routing, canonical `/api/channel/send`, and forwarder support for agent result broadcast. Setup via Web UI settings.
|
|
495
495
|
|
|
496
|
+
### Slack
|
|
497
|
+
|
|
498
|
+
Socket Mode bot with the same shared command catalog — mentions, DMs, slash commands, file/image relay, thread replies.
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary>Setup (guided wizard)</summary>
|
|
502
|
+
|
|
503
|
+
1. `jaw slack setup` — prints the app manifest (or `jaw slack manifest | pbcopy`), opens the Slack app creation page, then validates your two tokens live (`auth.test` + `apps.connections.open`) and writes the settings
|
|
504
|
+
2. `/invite @cli-jaw` in each channel the bot should read, then restart `jaw serve`
|
|
505
|
+
|
|
506
|
+
Why not OAuth one-click? Slack issues the app-level token (`xapp-`, required for Socket Mode) only from the app settings UI, and the PKCE localhost flow bans bot scopes — a browser click cannot configure a self-hosted Socket Mode bot. The wizard is the shortest honest path.
|
|
507
|
+
|
|
508
|
+
</details>
|
|
509
|
+
|
|
496
510
|
### Voice & STT
|
|
497
511
|
|
|
498
512
|
Voice input works on Web (mic button), Telegram (voice messages), and Discord. Providers: OpenAI-compatible, Google Vertex AI, or any custom endpoint.
|
|
@@ -525,6 +539,7 @@ jaw serve # start server (http://localhost:3457)
|
|
|
525
539
|
jaw chat # terminal chat UI
|
|
526
540
|
jaw chat search "query" # search chat history
|
|
527
541
|
jaw doctor # installation and runtime diagnostics
|
|
542
|
+
jaw slack setup # guided Slack app setup (manifest + token validation)
|
|
528
543
|
|
|
529
544
|
# Instances
|
|
530
545
|
jaw clone ~/project # clone instance to new directory
|
package/dist/bin/cli-jaw.js
CHANGED
|
@@ -34,7 +34,7 @@ const _homeEqArg = process.argv.find(a => a.startsWith('--home='));
|
|
|
34
34
|
if (_homeIdx !== -1 && process.argv[_homeIdx + 1]) {
|
|
35
35
|
const _homeVal = process.argv[_homeIdx + 1];
|
|
36
36
|
// Guard: if the "value" looks like a known subcommand, user forgot the path
|
|
37
|
-
const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'design', 'memory', 'hooks', 'launchd', 'clone', 'service', 'dashboard', 'connector', 'reminders', 'orchestrate', 'dispatch', 'worker', 'project', 'goal', 'task', 'bgtask', 'jwc', 'provider'];
|
|
37
|
+
const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'design', 'memory', 'hooks', 'launchd', 'clone', 'service', 'dashboard', 'connector', 'reminders', 'orchestrate', 'dispatch', 'worker', 'project', 'goal', 'task', 'bgtask', 'jwc', 'provider', 'slack'];
|
|
38
38
|
if (_knownCmds.includes(_homeVal)) {
|
|
39
39
|
console.error(` ❌ --home requires a path argument (got subcommand '${_homeVal}')`);
|
|
40
40
|
console.error(` Usage: jaw --home <path> ${_homeVal}`);
|
|
@@ -133,6 +133,7 @@ ${c.cyan} 🦈 jaw${c.reset} — AI agent orchestration platform ${c.dim}v${pk
|
|
|
133
133
|
|
|
134
134
|
${c.bold}Setup & diagnostics:${c.reset}
|
|
135
135
|
init Interactive setup wizard
|
|
136
|
+
slack setup|manifest Slack app manifest + guided setup
|
|
136
137
|
doctor [--json] Installation diagnostics
|
|
137
138
|
map <dir> [--budget N] Ranked source structure map
|
|
138
139
|
jwc install|clean|doctor Optional external JWC runtime helper
|
|
@@ -182,6 +183,9 @@ switch (command) {
|
|
|
182
183
|
case 'init':
|
|
183
184
|
await import('./commands/init.js');
|
|
184
185
|
break;
|
|
186
|
+
case 'slack':
|
|
187
|
+
await import('./commands/slack.js');
|
|
188
|
+
break;
|
|
185
189
|
case 'doctor':
|
|
186
190
|
await import('./commands/doctor.js');
|
|
187
191
|
break;
|
package/dist/bin/cli-jaw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAK1D,SAAS,eAAe,CAAC,OAAe;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAY,CAAC;IACpE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,IAAI,GAAgB,CAAC;AACrB,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,IAAI,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClD,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAAC,MAAM,CAAC;IACL,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClD,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,2EAA2E;AAC3E,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAE,CAAC;IAC7C,4EAA4E;IAC5E,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":"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"}
|
|
@@ -313,14 +313,14 @@ check('Slack', () => {
|
|
|
313
313
|
throw new Error('WARN: disabled');
|
|
314
314
|
const botToken = settings.slack.botToken;
|
|
315
315
|
if (!botToken)
|
|
316
|
-
throw new Error('bot token missing — set slack.botToken');
|
|
316
|
+
throw new Error('bot token missing — set slack.botToken or run: jaw slack setup');
|
|
317
317
|
if (!botToken.startsWith('xoxb-'))
|
|
318
318
|
throw new Error('bot token should start with xoxb-');
|
|
319
319
|
const appToken = settings.slack.appToken;
|
|
320
320
|
// Outbound-only is a legitimate partial configuration, so this is a WARN:
|
|
321
321
|
// the Web API works, but no inbound events can arrive.
|
|
322
322
|
if (!appToken)
|
|
323
|
-
throw new Error('WARN: app-level token missing — outbound only, no inbound events');
|
|
323
|
+
throw new Error('WARN: app-level token missing — outbound only, no inbound events (jaw slack setup)');
|
|
324
324
|
if (!appToken.startsWith('xapp-'))
|
|
325
325
|
throw new Error('app token should start with xapp-');
|
|
326
326
|
const channelIds = settings.slack.channelIds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../bin/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../bin/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cli-jaw slack — Slack app manifest + guided setup.
|
|
3
|
+
*
|
|
4
|
+
* Why a wizard instead of OAuth one-click: Slack cannot deliver this app's
|
|
5
|
+
* credentials through a browser click. App-level tokens (xapp-) are created
|
|
6
|
+
* only in the app settings UI, and the PKCE localhost flow (GA 2026-03-30)
|
|
7
|
+
* bans bot scopes on desktop redirects. So the fastest honest flow is:
|
|
8
|
+
* paste the manifest, paste two tokens, let the wizard validate them live.
|
|
9
|
+
* Full analysis: devlog 260803_slack_oauth_setup/000_research.md.
|
|
10
|
+
*/
|
|
11
|
+
import { parseArgs } from 'node:util';
|
|
12
|
+
import { createInterface } from 'node:readline';
|
|
13
|
+
import { execFile } from 'node:child_process';
|
|
14
|
+
import { settings, saveSettings, loadSettings } from '../../src/core/config.js';
|
|
15
|
+
import { slackApi } from '../../src/slack/api.js';
|
|
16
|
+
import { slackManifestYaml } from '../../src/slack/manifest.js';
|
|
17
|
+
import { shouldShowHelp, printAndExit } from '../helpers/help.js';
|
|
18
|
+
if (shouldShowHelp(process.argv))
|
|
19
|
+
printAndExit(`
|
|
20
|
+
jaw slack — Slack app manifest + guided setup
|
|
21
|
+
|
|
22
|
+
Usage: jaw slack <subcommand> [flags]
|
|
23
|
+
|
|
24
|
+
Subcommands:
|
|
25
|
+
manifest Print the Slack app manifest (paste into api.slack.com/apps → From an app manifest)
|
|
26
|
+
setup Guided setup: manifest, live token validation, settings write
|
|
27
|
+
|
|
28
|
+
Setup flags:
|
|
29
|
+
--bot-token <t> Bot token (xoxb-...)
|
|
30
|
+
--app-token <t> App-level token (xapp-..., enables inbound via Socket Mode)
|
|
31
|
+
--team-id <id> Slack team ID (auto-filled from auth.test when omitted)
|
|
32
|
+
--channel-ids <ids> Comma-separated conversation IDs (empty = all allowed)
|
|
33
|
+
--non-interactive Never prompt; requires --bot-token
|
|
34
|
+
--skip-validate Write settings WITHOUT live validation (offline; prints a warning)
|
|
35
|
+
|
|
36
|
+
Why not OAuth one-click? Slack app-level tokens (xapp-) are UI-only, and the
|
|
37
|
+
PKCE localhost flow bans bot scopes — a browser click cannot configure a
|
|
38
|
+
self-hosted Socket Mode bot. This wizard is the shortest honest path.
|
|
39
|
+
`);
|
|
40
|
+
const sub = process.argv[3] || 'setup';
|
|
41
|
+
const { values } = parseArgs({
|
|
42
|
+
args: process.argv.slice(4),
|
|
43
|
+
options: {
|
|
44
|
+
'bot-token': { type: 'string' },
|
|
45
|
+
'app-token': { type: 'string' },
|
|
46
|
+
'team-id': { type: 'string' },
|
|
47
|
+
'channel-ids': { type: 'string' },
|
|
48
|
+
'non-interactive': { type: 'boolean', default: false },
|
|
49
|
+
'skip-validate': { type: 'boolean', default: false },
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
if (sub === 'manifest') {
|
|
53
|
+
process.stdout.write(slackManifestYaml());
|
|
54
|
+
}
|
|
55
|
+
else if (sub === 'setup') {
|
|
56
|
+
await runSetup();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.error(` ❌ Unknown slack subcommand "${sub}". Expected: manifest | setup`);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
}
|
|
62
|
+
async function runSetup() {
|
|
63
|
+
// The module-level `settings` export is createDefaultSettings() until a
|
|
64
|
+
// command explicitly loads the file — every settings-touching CLI command
|
|
65
|
+
// (worker/task/memory/dispatch/…) does this. Without it the wizard would
|
|
66
|
+
// "preserve" defaults over the user's real slack.mentionOnly etc.
|
|
67
|
+
loadSettings();
|
|
68
|
+
const nonInteractive = !!values['non-interactive'];
|
|
69
|
+
const skipValidate = !!values['skip-validate'];
|
|
70
|
+
const rl = nonInteractive ? null : createInterface({ input: process.stdin, output: process.stdout });
|
|
71
|
+
const ask = (question, defaultVal = '') => {
|
|
72
|
+
if (!rl)
|
|
73
|
+
return Promise.resolve(defaultVal);
|
|
74
|
+
return new Promise(r => rl.question(` ${question} `, (ans) => r(ans.trim() || defaultVal)));
|
|
75
|
+
};
|
|
76
|
+
try {
|
|
77
|
+
const s = settings;
|
|
78
|
+
const existing = (s["slack"] ?? {});
|
|
79
|
+
console.log(`
|
|
80
|
+
🦈 jaw slack setup — attach a Slack workspace to this cli-jaw instance
|
|
81
|
+
|
|
82
|
+
Slack cannot do OAuth one-click for a self-hosted Socket Mode bot:
|
|
83
|
+
the app-level token (xapp-) is created only in the app settings UI, and the
|
|
84
|
+
PKCE localhost flow bans bot scopes. So: paste a manifest, paste two tokens,
|
|
85
|
+
and this wizard validates them live.
|
|
86
|
+
|
|
87
|
+
Step 1 — create the app
|
|
88
|
+
Open https://api.slack.com/apps?new_app=1
|
|
89
|
+
Choose "From an app manifest", pick your workspace, paste this:
|
|
90
|
+
`);
|
|
91
|
+
console.log(slackManifestYaml().split('\n').map(l => ` ${l}`).join('\n'));
|
|
92
|
+
// Best-effort conveniences: copy the manifest to the macOS clipboard
|
|
93
|
+
// and open the app creation page. Failures are silent — the manifest
|
|
94
|
+
// and URL are printed above regardless.
|
|
95
|
+
if (!nonInteractive) {
|
|
96
|
+
if (process.platform === 'darwin') {
|
|
97
|
+
const pbcopy = execFile('pbcopy', [], () => { });
|
|
98
|
+
pbcopy.stdin?.end(slackManifestYaml());
|
|
99
|
+
console.log(' (manifest copied to clipboard via pbcopy)');
|
|
100
|
+
execFile('open', ['https://api.slack.com/apps?new_app=1'], () => { });
|
|
101
|
+
}
|
|
102
|
+
await ask('Press Enter once the app is created and installed to the workspace…');
|
|
103
|
+
}
|
|
104
|
+
// Step 2 — bot token
|
|
105
|
+
console.log('\n Step 2 — bot token (OAuth & Permissions → Install to Workspace → xoxb-…)');
|
|
106
|
+
let botToken = values['bot-token'] || await ask('Bot token (xoxb-...)', existing.botToken || '');
|
|
107
|
+
if (!botToken) {
|
|
108
|
+
console.error(' ❌ A bot token is required. Re-run when you have it, or use: jaw slack setup --bot-token xoxb-...');
|
|
109
|
+
process.exitCode = 1;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// Same swap guard as `jaw init`: catch the classic xoxb/xapp mix-up
|
|
113
|
+
// BEFORE writing, so the mistake cannot hide until server start.
|
|
114
|
+
if (!botToken.startsWith('xoxb-')) {
|
|
115
|
+
console.error(` ❌ Slack bot token should start with "xoxb-" (got "${botToken.slice(0, 5)}…"). Did you swap it with the app-level token?`);
|
|
116
|
+
process.exitCode = 1;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
let teamId = values['team-id'] || '';
|
|
120
|
+
if (!skipValidate) {
|
|
121
|
+
const check = await slackApi(botToken, 'auth.test');
|
|
122
|
+
if (!check.ok) {
|
|
123
|
+
console.error(` ❌ auth.test failed: ${check.error}. Token not written — fix it and re-run.`);
|
|
124
|
+
process.exitCode = 1;
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
teamId = teamId || check.data?.team_id || '';
|
|
128
|
+
console.log(` ✅ auth.test ok${teamId ? ` (team ${teamId})` : ''}`);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.warn(' ⚠️ --skip-validate: writing tokens WITHOUT live validation. Run jaw doctor after the server starts.');
|
|
132
|
+
}
|
|
133
|
+
// Step 3 — app-level token (optional; absence means outbound-only)
|
|
134
|
+
console.log('\n Step 3 — app-level token (Basic Information → App-Level Tokens, scope connections:write → xapp-…)');
|
|
135
|
+
console.log(' Empty = outbound-only (posting works, no inbound events).');
|
|
136
|
+
const appToken = values['app-token'] ?? await ask('App-level token (xapp-..., Enter to skip)', existing.appToken || '');
|
|
137
|
+
if (appToken && !appToken.startsWith('xapp-')) {
|
|
138
|
+
console.error(` ❌ Slack app-level token should start with "xapp-" (got "${appToken.slice(0, 5)}…"). Did you swap it with the bot token?`);
|
|
139
|
+
process.exitCode = 1;
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (appToken && !skipValidate) {
|
|
143
|
+
// apps.connections.open doubles as the token's live check; the
|
|
144
|
+
// returned wss URL is discarded — the server opens its own socket.
|
|
145
|
+
const check = await slackApi(appToken, 'apps.connections.open');
|
|
146
|
+
if (!check.ok) {
|
|
147
|
+
console.error(` ❌ apps.connections.open failed: ${check.error}. Token not written — fix it and re-run.`);
|
|
148
|
+
process.exitCode = 1;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
console.log(' ✅ apps.connections.open ok (Socket Mode reachable)');
|
|
152
|
+
}
|
|
153
|
+
if (!appToken) {
|
|
154
|
+
console.warn(' ⚠️ Slack app-level token missing — outbound only, no inbound events.');
|
|
155
|
+
}
|
|
156
|
+
// Step 4 — channel IDs
|
|
157
|
+
const channelIdsRaw = values['channel-ids'] ?? await ask('Channel IDs to allow (comma-separated, Enter = all)', (existing.channelIds || []).join(','));
|
|
158
|
+
const channelIds = channelIdsRaw.split(',').map(s => s.trim()).filter(Boolean);
|
|
159
|
+
// Merge: preserve every slack field the wizard does not own
|
|
160
|
+
// (mentionOnly, replyInThread, forwardAll, allowBots) and never touch
|
|
161
|
+
// `channel` — a two-token channel must not hijack the active channel
|
|
162
|
+
// by accident, same rule as the SLACK_BOT_TOKEN env import.
|
|
163
|
+
s["slack"] = {
|
|
164
|
+
...existing,
|
|
165
|
+
enabled: true,
|
|
166
|
+
botToken,
|
|
167
|
+
appToken,
|
|
168
|
+
teamId: teamId || existing.teamId || '',
|
|
169
|
+
channelIds,
|
|
170
|
+
};
|
|
171
|
+
saveSettings(s);
|
|
172
|
+
console.log(`
|
|
173
|
+
✅ Slack settings saved.
|
|
174
|
+
|
|
175
|
+
Bot token : ${botToken.slice(0, 10)}…
|
|
176
|
+
App token : ${appToken ? appToken.slice(0, 10) + '…' : '(outbound only)'}
|
|
177
|
+
Team : ${s["slack"].teamId || '(unknown)'}
|
|
178
|
+
Channels : ${channelIds.length ? channelIds.join(', ') : 'all conversations allowed'}
|
|
179
|
+
|
|
180
|
+
Next steps:
|
|
181
|
+
1. /invite @cli-jaw in each channel the bot should read
|
|
182
|
+
2. Restart the server if it is running (jaw serve)
|
|
183
|
+
3. jaw doctor — confirm the Slack check is green
|
|
184
|
+
`);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
rl?.close();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../bin/commands/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// ─── Canonical Slack app manifest ────────────────────
|
|
2
|
+
// Single source of truth for "create the Slack app cli-jaw expects".
|
|
3
|
+
// The operator runbook (devlog 260802_slack_channel/051) shows the output of
|
|
4
|
+
// this file; tests/unit/slack-manifest.test.ts pins the shape so the two can
|
|
5
|
+
// never drift apart silently.
|
|
6
|
+
//
|
|
7
|
+
// Why not OAuth one-click: Slack cannot deliver this app's credentials
|
|
8
|
+
// through a browser click. App-level tokens (xapp-) are UI-only by design,
|
|
9
|
+
// and the PKCE localhost flow GA'd 2026-03-30 explicitly bans bot scopes on
|
|
10
|
+
// desktop redirects. Full analysis: devlog 260803_slack_oauth_setup/000.
|
|
11
|
+
import { stringify } from 'yaml';
|
|
12
|
+
export const SLACK_APP_MANIFEST = {
|
|
13
|
+
_metadata: { major_version: 1 },
|
|
14
|
+
display_information: {
|
|
15
|
+
name: 'cli-jaw',
|
|
16
|
+
description: 'AI agent orchestration — relay messages to your cli-jaw instance',
|
|
17
|
+
},
|
|
18
|
+
features: {
|
|
19
|
+
bot_user: {
|
|
20
|
+
display_name: 'cli-jaw',
|
|
21
|
+
always_online: false,
|
|
22
|
+
},
|
|
23
|
+
// The Messages tab is what gives users a DM composer for the app.
|
|
24
|
+
// Without it the im:history/im:write scopes are granted but nobody
|
|
25
|
+
// can actually start a DM.
|
|
26
|
+
app_home: {
|
|
27
|
+
messages_tab_enabled: true,
|
|
28
|
+
messages_tab_read_only_enabled: false,
|
|
29
|
+
},
|
|
30
|
+
// The `commands` scope AUTHORIZES slash commands; it does not create
|
|
31
|
+
// any. cli-jaw routes the received command name through its shared
|
|
32
|
+
// command catalog, so any catalog command works once registered here.
|
|
33
|
+
// Starter set only — add more from `cli-jaw help` as needed.
|
|
34
|
+
slash_commands: [
|
|
35
|
+
{ command: '/status', description: 'cli-jaw status', usage_hint: '', should_escape: false },
|
|
36
|
+
{ command: '/model', description: 'Show or switch the model', usage_hint: '[model]', should_escape: false },
|
|
37
|
+
{ command: '/cli', description: 'Show or switch the CLI engine', usage_hint: '[engine]', should_escape: false },
|
|
38
|
+
{ command: '/clear', description: 'Clear the conversation', usage_hint: '', should_escape: false },
|
|
39
|
+
{ command: '/help', description: 'Command list', usage_hint: '[command]', should_escape: false },
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
oauth_config: {
|
|
43
|
+
scopes: {
|
|
44
|
+
bot: [
|
|
45
|
+
// Every scope here maps to a call the transport really makes:
|
|
46
|
+
// app_mentions:read -> app_mention envelopes
|
|
47
|
+
// channels:history -> message.channels envelopes
|
|
48
|
+
// groups:history -> message.groups envelopes
|
|
49
|
+
// im:history -> message.im envelopes (DMs; NOT covered by app_mention)
|
|
50
|
+
// im:write -> conversations.open (DM a user id)
|
|
51
|
+
// chat:write -> chat.postMessage
|
|
52
|
+
// files:write -> files.getUploadURLExternal / completeUploadExternal
|
|
53
|
+
// commands -> slash_commands envelopes
|
|
54
|
+
'app_mentions:read',
|
|
55
|
+
'channels:history',
|
|
56
|
+
'groups:history',
|
|
57
|
+
'im:history',
|
|
58
|
+
'im:write',
|
|
59
|
+
'chat:write',
|
|
60
|
+
'files:write',
|
|
61
|
+
'commands',
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
settings: {
|
|
66
|
+
event_subscriptions: {
|
|
67
|
+
bot_events: [
|
|
68
|
+
'app_mention',
|
|
69
|
+
'message.channels',
|
|
70
|
+
'message.groups',
|
|
71
|
+
'message.im',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
socket_mode_enabled: true,
|
|
75
|
+
org_deploy_enabled: false,
|
|
76
|
+
is_hosted: false,
|
|
77
|
+
token_rotation_enabled: false,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
/** Serialize the manifest for pasting into Slack's "From an app manifest" flow. */
|
|
81
|
+
export function slackManifestYaml() {
|
|
82
|
+
return stringify(SLACK_APP_MANIFEST);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/slack/manifest.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,qEAAqE;AACrE,6EAA6E;AAC7E,6EAA6E;AAC7E,8BAA8B;AAC9B,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/B,mBAAmB,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,kEAAkE;KAClF;IACD,QAAQ,EAAE;QACN,QAAQ,EAAE;YACN,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,KAAK;SACvB;QACD,kEAAkE;QAClE,mEAAmE;QACnE,2BAA2B;QAC3B,QAAQ,EAAE;YACN,oBAAoB,EAAE,IAAI;YAC1B,8BAA8B,EAAE,KAAK;SACxC;QACD,qEAAqE;QACrE,mEAAmE;QACnE,sEAAsE;QACtE,6DAA6D;QAC7D,cAAc,EAAE;YACZ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YAC3F,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE;YAC3G,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE;YAC/G,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YAClG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;SACnG;KACJ;IACD,YAAY,EAAE;QACV,MAAM,EAAE;YACJ,GAAG,EAAE;gBACD,8DAA8D;gBAC9D,iDAAiD;gBACjD,sDAAsD;gBACtD,oDAAoD;gBACpD,kFAAkF;gBAClF,6DAA6D;gBAC7D,4CAA4C;gBAC5C,+EAA+E;gBAC/E,oDAAoD;gBACpD,mBAAmB;gBACnB,kBAAkB;gBAClB,gBAAgB;gBAChB,YAAY;gBACZ,UAAU;gBACV,YAAY;gBACZ,aAAa;gBACb,UAAU;aACb;SACJ;KACJ;IACD,QAAQ,EAAE;QACN,mBAAmB,EAAE;YACjB,UAAU,EAAE;gBACR,aAAa;gBACb,kBAAkB;gBAClB,gBAAgB;gBAChB,YAAY;aACf;SACJ;QACD,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,KAAK;QACzB,SAAS,EAAE,KAAK;QAChB,sBAAsB,EAAE,KAAK;KAChC;CACK,CAAC;AAEX,mFAAmF;AACnF,MAAM,UAAU,iBAAiB;IAC7B,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cli-jaw",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.11",
|
|
4
4
|
"description": "Personal AI assistant powered by Pi, Antigravity, AI-E, Claude, Claude E, Codex, Codex App, Cursor, Grok, Kiro, OpenCode, and Copilot — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -111,6 +111,8 @@
|
|
|
111
111
|
"gate:redaction-sinks": "node scripts/release-gates.mjs redaction-sinks",
|
|
112
112
|
"gate:electron-version": "node scripts/release-gates.mjs electron-version",
|
|
113
113
|
"gate:gate-docs": "node scripts/release-gates.mjs gate-docs",
|
|
114
|
+
"gate:sidecar-prune-safety": "node scripts/release-gates.mjs sidecar-prune-safety",
|
|
115
|
+
"check:sidecar-prune-safety": "node scripts/check-sidecar-prune-safety.mjs",
|
|
114
116
|
"sync:electron-version": "node scripts/sync-electron-version.cjs",
|
|
115
117
|
"gate:all": "node scripts/release-gates.mjs",
|
|
116
118
|
"prepublishOnly": "npm run build && npm run build:frontend && npm run check:frontend-build-output",
|
|
@@ -18,6 +18,11 @@ install_locked_production_dependencies() {
|
|
|
18
18
|
|
|
19
19
|
echo "=== Bundling sidecar: $PLATFORM-$ARCH ==="
|
|
20
20
|
|
|
21
|
+
# Refuse to build a sidecar whose prune list would strip a runtime dependency.
|
|
22
|
+
# Failing here costs a few seconds; failing later costs a shipped app that dies
|
|
23
|
+
# on first use, which is exactly what happened with node-fetch.
|
|
24
|
+
node "$PROJECT_ROOT/scripts/check-sidecar-prune-safety.mjs"
|
|
25
|
+
|
|
21
26
|
rm -rf "$SIDECAR_DIR"
|
|
22
27
|
mkdir -p "$SIDECAR_DIR/bin"
|
|
23
28
|
|
|
@@ -57,14 +62,20 @@ cd "$SIDECAR_DIR"
|
|
|
57
62
|
install_locked_production_dependencies
|
|
58
63
|
|
|
59
64
|
echo "Pruning frontend-only dependencies..."
|
|
65
|
+
# Every entry here is deleted from the bundled sidecar, so a package the server
|
|
66
|
+
# imports must never appear. It did: node-fetch sat in this list from the commit
|
|
67
|
+
# that created this script while src/telegram/bot.ts imports it, and every
|
|
68
|
+
# packaged desktop app died with ERR_MODULE_NOT_FOUND the moment that module
|
|
69
|
+
# loaded. check-sidecar-prune-safety.mjs now fails the build when this list and
|
|
70
|
+
# the server's real imports disagree.
|
|
60
71
|
PRUNE_PKGS=(
|
|
61
72
|
"@codemirror/autocomplete" "@codemirror/lang-markdown" "@codemirror/language"
|
|
62
73
|
"@codemirror/language-data" "@codemirror/state" "@codemirror/view"
|
|
63
74
|
"@lezer/highlight" "@lucide/icons" "@milkdown/kit" "@replit/codemirror-vim"
|
|
64
75
|
"@tanstack/virtual-core" "@uiw/react-codemirror" "@xterm/addon-fit" "@xterm/xterm"
|
|
65
|
-
"d3" "dompurify" "
|
|
76
|
+
"d3" "dompurify" "katex" "marked-highlight" "mermaid"
|
|
66
77
|
"react" "react-dom" "react-markdown" "rehype-katex" "rehype-sanitize"
|
|
67
|
-
"remark-breaks" "remark-gfm" "remark-math"
|
|
78
|
+
"remark-breaks" "remark-gfm" "remark-math"
|
|
68
79
|
)
|
|
69
80
|
for pkg in "${PRUNE_PKGS[@]}"; do
|
|
70
81
|
rm -rf "$SIDECAR_DIR/node_modules/$pkg" 2>/dev/null || true
|
|
@@ -77,8 +88,6 @@ rm -rf "$SIDECAR_DIR/node_modules/@vue" 2>/dev/null || true
|
|
|
77
88
|
rm -rf "$SIDECAR_DIR/node_modules/cytoscape" 2>/dev/null || true
|
|
78
89
|
rm -rf "$SIDECAR_DIR/node_modules/cytoscape-fcose" 2>/dev/null || true
|
|
79
90
|
rm -rf "$SIDECAR_DIR/node_modules/es-toolkit" 2>/dev/null || true
|
|
80
|
-
rm -rf "$SIDECAR_DIR/node_modules/lodash" 2>/dev/null || true
|
|
81
|
-
rm -rf "$SIDECAR_DIR/node_modules/web-streams-polyfill" 2>/dev/null || true
|
|
82
91
|
|
|
83
92
|
echo "Removing stale .bin symlinks after dependency pruning..."
|
|
84
93
|
find "$SIDECAR_DIR/node_modules/.bin" -type l ! -exec test -e {} \; -print -delete 2>/dev/null || true
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Fail when the sidecar prune list would delete something the server imports.
|
|
4
|
+
*
|
|
5
|
+
* `scripts/bundle-sidecar.sh` ships a hand-written list of "frontend-only"
|
|
6
|
+
* packages and `rm -rf`s them out of the bundled sidecar. The list was wrong
|
|
7
|
+
* from the commit that introduced it: `node-fetch` sat in it while
|
|
8
|
+
* `src/telegram/bot.ts` imports it, so any packaged desktop app died the
|
|
9
|
+
* moment that module loaded --
|
|
10
|
+
*
|
|
11
|
+
* ERR_MODULE_NOT_FOUND: Cannot find package 'node-fetch'
|
|
12
|
+
* imported from .../Resources/server/dist/src/telegram/bot.js
|
|
13
|
+
*
|
|
14
|
+
* The dependency graph cannot answer this on its own: frontend and server
|
|
15
|
+
* packages both live in `dependencies`, so "reachable from package.json" marks
|
|
16
|
+
* 34 of the 37 pruned entries as unsafe and tells you nothing. What actually
|
|
17
|
+
* separates them is whether SERVER source imports the package -- so that is
|
|
18
|
+
* what this checks, and it also follows each kept package's own dependencies,
|
|
19
|
+
* because deleting a transitive one breaks the import just as thoroughly.
|
|
20
|
+
* `web-streams-polyfill` is exactly that case: nothing in src/ names it, but
|
|
21
|
+
* node-fetch -> fetch-blob -> web-streams-polyfill, and it was on the list too.
|
|
22
|
+
*/
|
|
23
|
+
import fs from 'node:fs';
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
import { fileURLToPath } from 'node:url';
|
|
26
|
+
|
|
27
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Trees whose imports must survive pruning.
|
|
31
|
+
*
|
|
32
|
+
* `dist` is what the sidecar actually runs, so it is the authority; the
|
|
33
|
+
* TypeScript sources are scanned too because a fresh checkout may not have
|
|
34
|
+
* built yet and a checker that silently passes on a missing directory is worse
|
|
35
|
+
* than one that over-approximates.
|
|
36
|
+
*/
|
|
37
|
+
const SERVER_SOURCES = ['dist', 'src', 'bin', 'server.ts'];
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Packages loaded by a computed specifier, which no regex over the source can
|
|
41
|
+
* find. `src/agent/jwc-runtime.ts` does `import(spec)` where spec comes from an
|
|
42
|
+
* env var or a default constant, and the audit was right that the scan misses
|
|
43
|
+
* it. Listing them here is a deliberate escape hatch: each entry names why it
|
|
44
|
+
* cannot be discovered automatically.
|
|
45
|
+
*/
|
|
46
|
+
const RUNTIME_LOADED = [
|
|
47
|
+
// JWC SDK: `import(spec)` with spec from JWC_SDK_PATH or DEFAULT_JWC_SDK_SPEC.
|
|
48
|
+
'@jawcode/engine-sdk',
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
/** Packages the prune step removes, read from the shell script itself. */
|
|
52
|
+
function prunedPackages() {
|
|
53
|
+
const script = fs.readFileSync(path.join(repoRoot, 'scripts/bundle-sidecar.sh'), 'utf8');
|
|
54
|
+
|
|
55
|
+
const listBlock = script.match(/PRUNE_PKGS=\(([\s\S]*?)\n\)/);
|
|
56
|
+
if (!listBlock) throw new Error('PRUNE_PKGS array not found in bundle-sidecar.sh');
|
|
57
|
+
const listed = [...listBlock[1].matchAll(/"([^"]+)"/g)].map((m) => m[1]);
|
|
58
|
+
|
|
59
|
+
// The script also removes a handful of packages with individual rm -rf
|
|
60
|
+
// lines below the loop. Those are just as capable of breaking the sidecar,
|
|
61
|
+
// so they are checked with the same rule rather than trusted.
|
|
62
|
+
const individual = [...script.matchAll(
|
|
63
|
+
/rm -rf "\$SIDECAR_DIR\/node_modules\/([^"$]+)"/g)].map((m) => m[1]);
|
|
64
|
+
|
|
65
|
+
return [...new Set([...listed, ...individual])];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Every file under the server source trees. */
|
|
69
|
+
function serverFiles() {
|
|
70
|
+
const files = [];
|
|
71
|
+
const walk = (rel) => {
|
|
72
|
+
const abs = path.join(repoRoot, rel);
|
|
73
|
+
if (!fs.existsSync(abs)) return;
|
|
74
|
+
if (fs.statSync(abs).isFile()) { files.push(abs); return; }
|
|
75
|
+
for (const entry of fs.readdirSync(abs)) {
|
|
76
|
+
if (entry === 'node_modules' || entry.startsWith('.')) continue;
|
|
77
|
+
walk(path.join(rel, entry));
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
SERVER_SOURCES.forEach(walk);
|
|
81
|
+
return files.filter((f) => /\.(ts|tsx|mts|cts|js|mjs|cjs)$/.test(f));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Bare package specifiers imported anywhere in the server sources. */
|
|
85
|
+
function serverImports() {
|
|
86
|
+
const found = new Set();
|
|
87
|
+
const patterns = [
|
|
88
|
+
/\bfrom\s+['"]([^'".][^'"]*)['"]/g,
|
|
89
|
+
/\brequire\(\s*['"]([^'".][^'"]*)['"]\s*\)/g,
|
|
90
|
+
/\bimport\(\s*['"]([^'".][^'"]*)['"]\s*\)/g,
|
|
91
|
+
];
|
|
92
|
+
for (const file of serverFiles()) {
|
|
93
|
+
const text = fs.readFileSync(file, 'utf8');
|
|
94
|
+
for (const re of patterns) {
|
|
95
|
+
for (const m of text.matchAll(re)) {
|
|
96
|
+
const spec = m[1];
|
|
97
|
+
if (spec.startsWith('node:')) continue;
|
|
98
|
+
// Scoped names keep two segments, plain names keep one.
|
|
99
|
+
const name = spec.startsWith('@')
|
|
100
|
+
? spec.split('/').slice(0, 2).join('/')
|
|
101
|
+
: spec.split('/')[0];
|
|
102
|
+
found.add(name);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return found;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Everything reachable from `roots` through installed package dependencies. */
|
|
110
|
+
function closure(roots) {
|
|
111
|
+
const seen = new Set();
|
|
112
|
+
const stack = [...roots];
|
|
113
|
+
while (stack.length > 0) {
|
|
114
|
+
const name = stack.pop();
|
|
115
|
+
if (seen.has(name)) continue;
|
|
116
|
+
seen.add(name);
|
|
117
|
+
const manifest = path.join(repoRoot, 'node_modules', name, 'package.json');
|
|
118
|
+
if (!fs.existsSync(manifest)) continue;
|
|
119
|
+
let manifestJson;
|
|
120
|
+
try {
|
|
121
|
+
manifestJson = JSON.parse(fs.readFileSync(manifest, 'utf8'));
|
|
122
|
+
} catch { continue; }
|
|
123
|
+
// Follow optional and peer edges too. A package that resolves one of
|
|
124
|
+
// them at runtime fails identically to a missing hard dependency, and
|
|
125
|
+
// over-keeping costs disk while under-keeping ships a broken app.
|
|
126
|
+
const deps = {
|
|
127
|
+
...(manifestJson.dependencies || {}),
|
|
128
|
+
...(manifestJson.optionalDependencies || {}),
|
|
129
|
+
...(manifestJson.peerDependencies || {}),
|
|
130
|
+
};
|
|
131
|
+
for (const dep of Object.keys(deps)) if (!seen.has(dep)) stack.push(dep);
|
|
132
|
+
}
|
|
133
|
+
return seen;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function findUnsafePrunes() {
|
|
137
|
+
const pruned = prunedPackages();
|
|
138
|
+
const imported = serverImports();
|
|
139
|
+
for (const pkg of RUNTIME_LOADED) imported.add(pkg);
|
|
140
|
+
// Only walk from packages the server actually imports; the closure of every
|
|
141
|
+
// dependency would sweep the frontend back in.
|
|
142
|
+
const required = closure([...imported]);
|
|
143
|
+
|
|
144
|
+
return pruned
|
|
145
|
+
.filter((pkg) => required.has(pkg))
|
|
146
|
+
.map((pkg) => ({
|
|
147
|
+
pkg,
|
|
148
|
+
direct: imported.has(pkg),
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
153
|
+
const unsafe = findUnsafePrunes();
|
|
154
|
+
if (unsafe.length === 0) {
|
|
155
|
+
console.log('✅ sidecar prune list removes nothing the server needs');
|
|
156
|
+
process.exit(0);
|
|
157
|
+
}
|
|
158
|
+
console.error(`❌ sidecar prune list — ${unsafe.length} package(s) the server needs:`);
|
|
159
|
+
for (const { pkg, direct } of unsafe) {
|
|
160
|
+
console.error(` ${pkg} — ${direct
|
|
161
|
+
? 'imported directly by server source'
|
|
162
|
+
: 'required transitively by a package the server imports'}`);
|
|
163
|
+
}
|
|
164
|
+
console.error('\nRemove them from scripts/bundle-sidecar.sh, or the packaged app will');
|
|
165
|
+
console.error('die with ERR_MODULE_NOT_FOUND the first time that code path runs.');
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Print a python3 that node-gyp can actually run under.
|
|
3
|
+
#
|
|
4
|
+
# node-gyp's bundled gyp still does `from distutils.version import StrictVersion`,
|
|
5
|
+
# and distutils was removed in Python 3.12. On a machine whose default python3 is
|
|
6
|
+
# Homebrew 3.12+ the native rebuild dies with:
|
|
7
|
+
#
|
|
8
|
+
# ModuleNotFoundError: No module named 'distutils'
|
|
9
|
+
# ⨯ node-gyp failed to rebuild '.../node_modules/node-pty'
|
|
10
|
+
#
|
|
11
|
+
# Observed on macOS 27 with Homebrew Python 3.14.6 while building the desktop app
|
|
12
|
+
# on a second machine. macOS still ships /usr/bin/python3 (3.9.6), which has
|
|
13
|
+
# distutils, so a working interpreter is usually present -- it just is not the
|
|
14
|
+
# one on PATH.
|
|
15
|
+
#
|
|
16
|
+
# CI already knew: .github/workflows/desktop-release.yml pins actions/setup-python
|
|
17
|
+
# to 3.11 with exactly this reasoning in a comment. The local build path never got
|
|
18
|
+
# the same treatment, so `npm run electron:dist:mac` on a developer machine was the
|
|
19
|
+
# one route into node-gyp with no defense.
|
|
20
|
+
#
|
|
21
|
+
# Candidates are TESTED, not assumed: a hardcoded path is the same bet that broke
|
|
22
|
+
# here, one Python release later. An explicit $PYTHON still wins, because the
|
|
23
|
+
# caller may know something this script does not.
|
|
24
|
+
set -euo pipefail
|
|
25
|
+
|
|
26
|
+
has_distutils() {
|
|
27
|
+
[ -x "$1" ] || return 1
|
|
28
|
+
"$1" -c 'import distutils' >/dev/null 2>&1
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if [ -n "${PYTHON:-}" ]; then
|
|
32
|
+
printf '%s\n' "$PYTHON"
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
for candidate in \
|
|
37
|
+
/usr/bin/python3 \
|
|
38
|
+
"$(command -v python3.11 2>/dev/null || true)" \
|
|
39
|
+
"$(command -v python3.10 2>/dev/null || true)" \
|
|
40
|
+
"$(command -v python3.9 2>/dev/null || true)" \
|
|
41
|
+
"$(command -v python3 2>/dev/null || true)"
|
|
42
|
+
do
|
|
43
|
+
[ -n "$candidate" ] || continue
|
|
44
|
+
if has_distutils "$candidate"; then
|
|
45
|
+
printf '%s\n' "$candidate"
|
|
46
|
+
exit 0
|
|
47
|
+
fi
|
|
48
|
+
done
|
|
49
|
+
|
|
50
|
+
# Nothing usable. Fall back to whatever python3 exists so the caller fails with
|
|
51
|
+
# node-gyp's own message rather than an empty variable, and say why.
|
|
52
|
+
fallback="$(command -v python3 2>/dev/null || true)"
|
|
53
|
+
if [ -n "$fallback" ]; then
|
|
54
|
+
echo "[gyp-python] no python3 with distutils found; falling back to $fallback" >&2
|
|
55
|
+
echo "[gyp-python] node-gyp will likely fail. Install python@3.11 or set PYTHON=<path>." >&2
|
|
56
|
+
printf '%s\n' "$fallback"
|
|
57
|
+
exit 0
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
echo "[gyp-python] no python3 on PATH at all" >&2
|
|
61
|
+
exit 1
|
|
@@ -67,6 +67,10 @@ const GATES = {
|
|
|
67
67
|
'tests/unit/browser-web-ai-source-audit.test.ts',
|
|
68
68
|
'tests/unit/browser-web-ai-cli-contract.test.ts',
|
|
69
69
|
'tests/unit/release-gates.test.ts',
|
|
70
|
+
// Guards the release/build scripts themselves, so it belongs in
|
|
71
|
+
// the suite gate:all actually runs rather than npm test only.
|
|
72
|
+
'tests/unit/electron-version-sync.test.ts',
|
|
73
|
+
'tests/unit/gyp-python-pick.test.ts',
|
|
70
74
|
].filter((p) => fs.existsSync(path.join(repoRoot, p)));
|
|
71
75
|
if (targets.length === 0) {
|
|
72
76
|
return { ok: false, detail: 'no Phase 22 mirror tests found' };
|
|
@@ -414,6 +418,16 @@ const GATES = {
|
|
|
414
418
|
return { ok: true, detail: 'desktop artifacts will carry the release version' };
|
|
415
419
|
},
|
|
416
420
|
},
|
|
421
|
+
'sidecar-prune-safety': {
|
|
422
|
+
description: 'the sidecar prune list never deletes a package the server imports',
|
|
423
|
+
check() {
|
|
424
|
+
const r = run('node', ['scripts/check-sidecar-prune-safety.mjs'], { timeout: 60_000 });
|
|
425
|
+
if (r.status !== 0) {
|
|
426
|
+
return { ok: false, detail: (r.stdout || r.stderr || '').trim().slice(-800) };
|
|
427
|
+
}
|
|
428
|
+
return { ok: true, detail: 'packaged sidecar keeps every runtime dependency' };
|
|
429
|
+
},
|
|
430
|
+
},
|
|
417
431
|
'gate-docs': {
|
|
418
432
|
description: 'structure/INDEX.md documents exactly the gates that exist, and each is npm-addressable',
|
|
419
433
|
check() {
|