@minimalcorp/tsunagi 0.1.1 → 0.1.3

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.
Files changed (44) hide show
  1. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  2. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  3. package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  12. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  20. package/.next/standalone/apps/web/.next/server/app/index.rsc +1 -1
  21. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  22. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
  23. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  24. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
  25. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  26. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  27. package/.next/standalone/apps/web/.next/server/app/settings.rsc +1 -1
  28. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  29. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  30. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  31. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  32. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  33. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  34. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  35. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  36. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  37. package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
  38. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  39. package/dist/server/index.js +4 -7
  40. package/package.json +2 -2
  41. package/scripts/monaco-editor.sh +59 -0
  42. /package/.next/standalone/apps/web/.next/static/{-DkMjenHq2MOrR6QggTDh → y1VVVedZfN-isLJKKaC_l}/_buildManifest.js +0 -0
  43. /package/.next/standalone/apps/web/.next/static/{-DkMjenHq2MOrR6QggTDh → y1VVVedZfN-isLJKKaC_l}/_clientMiddlewareManifest.js +0 -0
  44. /package/.next/standalone/apps/web/.next/static/{-DkMjenHq2MOrR6QggTDh → y1VVVedZfN-isLJKKaC_l}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "Pcl56+fmF/3H0ymDeeMoKbUVy7ubFL0Nly3S7n4H8cI="
4
+ "encryptionKey": "AsuBOiCEEz05GDKnmJbCrqWEkeQtHHpnG/gNU//JgM0="
5
5
  }
@@ -1,8 +1,6 @@
1
1
  import Fastify from 'fastify';
2
2
  import fastifyCors from '@fastify/cors';
3
- import * as fastifySocketIONs from 'fastify-socket.io';
4
- const fastifySocketIO = (fastifySocketIONs.default ??
5
- fastifySocketIONs);
3
+ import { Server as SocketIOServer } from 'socket.io';
6
4
  import { tasksRoutes } from './routes/tasks.js';
7
5
  import { reposRoutes } from './routes/repos.js';
8
6
  import { envRoutes } from './routes/env.js';
@@ -27,12 +25,11 @@ async function start() {
27
25
  origin: corsOrigins,
28
26
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
29
27
  });
30
- await fastify.register(fastifySocketIO, {
28
+ const io = new SocketIOServer(fastify.server, {
31
29
  transports: ['websocket'],
32
- cors: {
33
- origin: corsOrigins,
34
- },
30
+ cors: { origin: corsOrigins },
35
31
  });
32
+ fastify.decorate('io', io);
36
33
  await fastify.register(tasksRoutes, { prefix: '/api' });
37
34
  await fastify.register(reposRoutes, { prefix: '/api' });
38
35
  await fastify.register(envRoutes, { prefix: '/api' });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minimalcorp/tsunagi",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Multi-repo GitHub project management with Claude AI integration, designed for visualizing and controlling AI-driven development locally.",
5
5
  "keywords": [
6
6
  "tsunagi",
@@ -41,6 +41,7 @@
41
41
  "prisma.config.ts",
42
42
  ".next/standalone/**/*",
43
43
  "scripts/fix-node-pty-permissions.cjs",
44
+ "scripts/monaco-editor.sh",
44
45
  "tsunagi-marketplace/**/*",
45
46
  "LICENSE",
46
47
  "README.md"
@@ -63,7 +64,6 @@
63
64
  "concurrently": "^9.2.1",
64
65
  "dotenv": "^17.2.3",
65
66
  "fastify": "^5.8.2",
66
- "fastify-socket.io": "^5.1.0",
67
67
  "node-pty": "^1.1.0",
68
68
  "prisma": "^7.3.0",
69
69
  "simple-git": "^3.30.0",
@@ -0,0 +1,59 @@
1
+ #!/bin/sh
2
+ # monaco-editor.sh
3
+ # $EDITOR として設定することで、Claude Code の Ctrl+G でブラウザ上の
4
+ # Monaco Editor Modal を開いてプロンプトを編集できる。
5
+ #
6
+ # セットアップ:
7
+ # export EDITOR="/path/to/scripts/monaco-editor.sh"
8
+ #
9
+ # 依存: curl のみ
10
+
11
+ set -e
12
+
13
+ TMPFILE="$1"
14
+ API_BASE="http://localhost:2792"
15
+
16
+ if [ -z "$TMPFILE" ]; then
17
+ echo "Usage: monaco-editor.sh <tmpfile>" >&2
18
+ exit 1
19
+ fi
20
+
21
+ # 代替画面 (alt screen) に切り替えて script の出力を claude の描画領域から隔離する。
22
+ # vim/nano 等の通常の $EDITOR と同じ作法。これをやらないと script の stderr 出力が
23
+ # main buffer に積まれて、claude の Ink renderer の位置情報と実画面がズレ、
24
+ # $EDITOR 終了後の描画に余白が生じる。
25
+ printf '\033[?1049h'
26
+ # どんな経路で終了しても alt screen から確実に復帰させる
27
+ trap 'printf "\033[?1049l"' EXIT
28
+
29
+ # エラー報告用: alt screen から抜けてから stderr に出す
30
+ _error_exit() {
31
+ printf '\033[?1049l'
32
+ trap - EXIT
33
+ echo "Error: $1" >&2
34
+ exit 1
35
+ }
36
+
37
+ # ファイルパスを送信。サーバー側がファイルの読み書きを行う。
38
+ # TSUNAGI_SESSION_ID はPTY作成時に設定される環境変数(= tab_id)
39
+ # レスポンスはプレーンテキストの sessionId のみ(JSON パース不要)
40
+ SESSION_ID=$(curl -sf -X POST "$API_BASE/api/editor/session" \
41
+ -H "Content-Type: application/json" \
42
+ -d "{\"filePath\": \"$TMPFILE\", \"tabId\": \"$TSUNAGI_SESSION_ID\"}")
43
+
44
+ if [ -z "$SESSION_ID" ]; then
45
+ _error_exit "Failed to create editor session (is tsunagi running? check monaco-editor.sh setup)"
46
+ fi
47
+
48
+ # 完了までポーリング(無制限、0.1秒間隔。Ctrl+C で中断可能)
49
+ # 速めの polling 間隔にしているのは、Cmd+Enter Submit 後に sh が foreground PG から
50
+ # 抜けるまでの遅延を最小化するため(TerminalView 側の resize nudge が claude に
51
+ # 届くように)。
52
+ # レスポンスはプレーンテキスト "done" or "pending"(JSON パース不要)
53
+ while true; do
54
+ STATUS=$(curl -sf "$API_BASE/api/editor/session/$SESSION_ID" 2>/dev/null || echo "pending")
55
+ if [ "$STATUS" = "done" ]; then
56
+ exit 0
57
+ fi
58
+ sleep 0.1
59
+ done