tide-commander 0.52.0

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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +364 -0
  3. package/dist/assets/characters/Textures/colormap.png +0 -0
  4. package/dist/assets/characters/character-female-a.glb +0 -0
  5. package/dist/assets/characters/character-female-b.glb +0 -0
  6. package/dist/assets/characters/character-female-c.glb +0 -0
  7. package/dist/assets/characters/character-female-d.glb +0 -0
  8. package/dist/assets/characters/character-female-e.glb +0 -0
  9. package/dist/assets/characters/character-female-f.glb +0 -0
  10. package/dist/assets/characters/character-male-a-processed.gltf +11862 -0
  11. package/dist/assets/characters/character-male-a.glb +0 -0
  12. package/dist/assets/characters/character-male-b.glb +0 -0
  13. package/dist/assets/characters/character-male-c.glb +0 -0
  14. package/dist/assets/characters/character-male-d.glb +0 -0
  15. package/dist/assets/characters/character-male-e.glb +0 -0
  16. package/dist/assets/characters/character-male-f.glb +0 -0
  17. package/dist/assets/icons/icon-192.png +0 -0
  18. package/dist/assets/icons/icon-512.png +0 -0
  19. package/dist/assets/landing-Cc0MDBAK.css +1 -0
  20. package/dist/assets/main-BIpLsrUu.css +1 -0
  21. package/dist/assets/main-DMTRw3br.js +276 -0
  22. package/dist/assets/textures/concrete_floor_worn_001_diff_1k.jpg +0 -0
  23. package/dist/assets/textures/logo-blanco.png +0 -0
  24. package/dist/assets/vendor-react-uS-d4TUT.js +17 -0
  25. package/dist/assets/vendor-three-4iQNXcoo.js +3828 -0
  26. package/dist/assets/web-BZdi2lG9.js +1 -0
  27. package/dist/assets/web-yHsOO1Qb.js +1 -0
  28. package/dist/index.html +38 -0
  29. package/dist/manifest.json +39 -0
  30. package/dist/src/packages/landing/index.html +463 -0
  31. package/dist/src/packages/server/app.js +87 -0
  32. package/dist/src/packages/server/auth/index.js +121 -0
  33. package/dist/src/packages/server/claude/backend.js +578 -0
  34. package/dist/src/packages/server/claude/index.js +8 -0
  35. package/dist/src/packages/server/claude/runner/internal-events.js +22 -0
  36. package/dist/src/packages/server/claude/runner/process-lifecycle.js +208 -0
  37. package/dist/src/packages/server/claude/runner/recovery-store.js +72 -0
  38. package/dist/src/packages/server/claude/runner/resource-monitor.js +51 -0
  39. package/dist/src/packages/server/claude/runner/restart-policy.js +69 -0
  40. package/dist/src/packages/server/claude/runner/stdout-pipeline.js +153 -0
  41. package/dist/src/packages/server/claude/runner/watchdog.js +114 -0
  42. package/dist/src/packages/server/claude/runner.js +310 -0
  43. package/dist/src/packages/server/claude/session-loader.js +898 -0
  44. package/dist/src/packages/server/claude/types.js +5 -0
  45. package/dist/src/packages/server/cli.js +113 -0
  46. package/dist/src/packages/server/codex/backend.js +119 -0
  47. package/dist/src/packages/server/codex/index.js +2 -0
  48. package/dist/src/packages/server/codex/json-event-parser.js +612 -0
  49. package/dist/src/packages/server/data/builtin-skills/bitbucket-pr.js +298 -0
  50. package/dist/src/packages/server/data/builtin-skills/full-notifications.js +49 -0
  51. package/dist/src/packages/server/data/builtin-skills/git-captain.js +304 -0
  52. package/dist/src/packages/server/data/builtin-skills/index.js +61 -0
  53. package/dist/src/packages/server/data/builtin-skills/pm2-logs.js +354 -0
  54. package/dist/src/packages/server/data/builtin-skills/send-message-to-agent.js +51 -0
  55. package/dist/src/packages/server/data/builtin-skills/server-logs.js +124 -0
  56. package/dist/src/packages/server/data/builtin-skills/streaming-exec.js +94 -0
  57. package/dist/src/packages/server/data/builtin-skills/types.js +4 -0
  58. package/dist/src/packages/server/data/builtin-skills.js +6 -0
  59. package/dist/src/packages/server/data/index.js +890 -0
  60. package/dist/src/packages/server/data/snapshots.js +371 -0
  61. package/dist/src/packages/server/index.js +96 -0
  62. package/dist/src/packages/server/prompts/tide-commander.js +13 -0
  63. package/dist/src/packages/server/routes/agents.js +406 -0
  64. package/dist/src/packages/server/routes/config.js +347 -0
  65. package/dist/src/packages/server/routes/custom-models.js +170 -0
  66. package/dist/src/packages/server/routes/exec.js +269 -0
  67. package/dist/src/packages/server/routes/files.js +995 -0
  68. package/dist/src/packages/server/routes/index.js +38 -0
  69. package/dist/src/packages/server/routes/notifications.js +81 -0
  70. package/dist/src/packages/server/routes/permissions.js +115 -0
  71. package/dist/src/packages/server/routes/snapshots.js +224 -0
  72. package/dist/src/packages/server/routes/stt.js +99 -0
  73. package/dist/src/packages/server/routes/tts.js +166 -0
  74. package/dist/src/packages/server/routes/voice-assistant.js +310 -0
  75. package/dist/src/packages/server/runtime/claude-runtime-provider.js +10 -0
  76. package/dist/src/packages/server/runtime/codex-runtime-provider.js +11 -0
  77. package/dist/src/packages/server/runtime/index.js +2 -0
  78. package/dist/src/packages/server/runtime/types.js +6 -0
  79. package/dist/src/packages/server/services/agent-lifecycle-service.js +82 -0
  80. package/dist/src/packages/server/services/agent-service.js +410 -0
  81. package/dist/src/packages/server/services/boss-message-service.js +430 -0
  82. package/dist/src/packages/server/services/boss-service.js +553 -0
  83. package/dist/src/packages/server/services/building-service.js +867 -0
  84. package/dist/src/packages/server/services/claude-service.js +5 -0
  85. package/dist/src/packages/server/services/custom-class-service.js +323 -0
  86. package/dist/src/packages/server/services/database-service.js +914 -0
  87. package/dist/src/packages/server/services/docker-service.js +865 -0
  88. package/dist/src/packages/server/services/fileTracker.js +242 -0
  89. package/dist/src/packages/server/services/index.js +21 -0
  90. package/dist/src/packages/server/services/permission-service.js +258 -0
  91. package/dist/src/packages/server/services/pm2-service.js +435 -0
  92. package/dist/src/packages/server/services/runtime-command-execution.js +168 -0
  93. package/dist/src/packages/server/services/runtime-events.js +357 -0
  94. package/dist/src/packages/server/services/runtime-service.js +308 -0
  95. package/dist/src/packages/server/services/runtime-status-sync.js +104 -0
  96. package/dist/src/packages/server/services/runtime-subagents.js +50 -0
  97. package/dist/src/packages/server/services/runtime-watchdog.js +74 -0
  98. package/dist/src/packages/server/services/secrets-service.js +206 -0
  99. package/dist/src/packages/server/services/skill-service.js +508 -0
  100. package/dist/src/packages/server/services/subordinate-context-service.js +223 -0
  101. package/dist/src/packages/server/services/supervisor-claude.js +132 -0
  102. package/dist/src/packages/server/services/supervisor-prompts.js +80 -0
  103. package/dist/src/packages/server/services/supervisor-service.js +659 -0
  104. package/dist/src/packages/server/services/work-plan-service.js +476 -0
  105. package/dist/src/packages/server/setup.js +86 -0
  106. package/dist/src/packages/server/utils/index.js +4 -0
  107. package/dist/src/packages/server/utils/logger.js +302 -0
  108. package/dist/src/packages/server/utils/string.js +39 -0
  109. package/dist/src/packages/server/utils/tool-formatting.js +139 -0
  110. package/dist/src/packages/server/utils/unicode.js +46 -0
  111. package/dist/src/packages/server/websocket/handler.js +290 -0
  112. package/dist/src/packages/server/websocket/handlers/agent-handler.js +515 -0
  113. package/dist/src/packages/server/websocket/handlers/boss-handler.js +116 -0
  114. package/dist/src/packages/server/websocket/handlers/boss-response-handler.js +250 -0
  115. package/dist/src/packages/server/websocket/handlers/building-handler.js +298 -0
  116. package/dist/src/packages/server/websocket/handlers/command-handler.js +217 -0
  117. package/dist/src/packages/server/websocket/handlers/custom-class-handler.js +68 -0
  118. package/dist/src/packages/server/websocket/handlers/database-handler.js +223 -0
  119. package/dist/src/packages/server/websocket/handlers/notification-handler.js +25 -0
  120. package/dist/src/packages/server/websocket/handlers/permission-handler.js +21 -0
  121. package/dist/src/packages/server/websocket/handlers/secrets-handler.js +61 -0
  122. package/dist/src/packages/server/websocket/handlers/skill-handler.js +148 -0
  123. package/dist/src/packages/server/websocket/handlers/supervisor-handler.js +44 -0
  124. package/dist/src/packages/server/websocket/handlers/sync-handler.js +19 -0
  125. package/dist/src/packages/server/websocket/handlers/types.js +4 -0
  126. package/dist/src/packages/server/websocket/listeners/boss-listeners.js +21 -0
  127. package/dist/src/packages/server/websocket/listeners/index.js +32 -0
  128. package/dist/src/packages/server/websocket/listeners/permission-listeners.js +19 -0
  129. package/dist/src/packages/server/websocket/listeners/runtime-listeners.js +196 -0
  130. package/dist/src/packages/server/websocket/listeners/skill-listeners.js +51 -0
  131. package/dist/src/packages/server/websocket/listeners/supervisor-listeners.js +37 -0
  132. package/dist/src/packages/shared/agent-types.js +54 -0
  133. package/dist/src/packages/shared/building-types.js +43 -0
  134. package/dist/src/packages/shared/common-types.js +1 -0
  135. package/dist/src/packages/shared/database-types.js +8 -0
  136. package/dist/src/packages/shared/types/snapshot.js +7 -0
  137. package/dist/src/packages/shared/types.js +12 -0
  138. package/dist/src/packages/shared/websocket-messages.js +1 -0
  139. package/dist/sw.js +37 -0
  140. package/package.json +90 -0
@@ -0,0 +1,43 @@
1
+ export const BUILDING_TYPES = {
2
+ server: { icon: '🖥️', color: '#4aff9e', description: 'Service with start/stop commands and logs' },
3
+ link: { icon: '🔗', color: '#4a9eff', description: 'Quick links to URLs' },
4
+ database: { icon: '🗄️', color: '#ff9e4a', description: 'Database connection and queries' },
5
+ docker: { icon: '🐳', color: '#4ac1ff', description: 'Docker container management' },
6
+ monitor: { icon: '📊', color: '#ff4a9e', description: 'System metrics and monitoring' },
7
+ folder: { icon: '📁', color: '#ffd700', description: 'Folder shortcut - opens file explorer on click' },
8
+ boss: { icon: '👑', color: '#ffd700', description: 'Boss building - manages multiple buildings with unified controls' },
9
+ };
10
+ export const BUILDING_STYLES = {
11
+ 'server-rack': { label: 'Server Rack', description: 'Classic server rack with blinking LEDs' },
12
+ 'tower': { label: 'Control Tower', description: 'Tall tower with rotating antenna' },
13
+ 'dome': { label: 'Data Dome', description: 'Futuristic dome with energy ring' },
14
+ 'pyramid': { label: 'Power Pyramid', description: 'Egyptian-style pyramid with glowing core' },
15
+ 'desktop': { label: 'Desktop PC', description: 'Retro computer with monitor and keyboard' },
16
+ 'filing-cabinet': { label: 'Filing Cabinet', description: 'Office cabinet with sliding drawers' },
17
+ 'satellite': { label: 'Satellite Dish', description: 'Communication dish with rotating receiver' },
18
+ 'crystal': { label: 'Data Crystal', description: 'Floating crystal with energy particles' },
19
+ 'factory': { label: 'Mini Factory', description: 'Industrial building with smoking chimney' },
20
+ 'command-center': { label: 'Command Center', description: 'Grand central hub for boss buildings with holographic rings' },
21
+ };
22
+ export const PM2_INTERPRETERS = {
23
+ '': { label: 'Auto-detect', description: 'Let PM2 detect the interpreter' },
24
+ 'node': { label: 'Node.js', description: 'JavaScript/TypeScript runtime' },
25
+ 'bun': { label: 'Bun', description: 'Bun JavaScript runtime' },
26
+ 'python3': { label: 'Python 3', description: 'Python 3 interpreter' },
27
+ 'python': { label: 'Python 2', description: 'Python 2 interpreter (legacy)' },
28
+ 'java': { label: 'Java', description: 'Java runtime (use with -jar args)' },
29
+ 'php': { label: 'PHP', description: 'PHP interpreter' },
30
+ 'bash': { label: 'Bash', description: 'Bash shell script' },
31
+ 'none': { label: 'None (Binary)', description: 'Direct execution (compiled binaries)' },
32
+ };
33
+ export const DOCKER_RESTART_POLICIES = {
34
+ 'no': { label: 'No', description: 'Do not automatically restart' },
35
+ 'always': { label: 'Always', description: 'Always restart when stopped' },
36
+ 'unless-stopped': { label: 'Unless Stopped', description: 'Restart unless manually stopped' },
37
+ 'on-failure': { label: 'On Failure', description: 'Restart only on failure' },
38
+ };
39
+ export const DOCKER_PULL_POLICIES = {
40
+ 'always': { label: 'Always', description: 'Always pull the image' },
41
+ 'missing': { label: 'If Missing', description: 'Pull only if image not present' },
42
+ 'never': { label: 'Never', description: 'Never pull, use local only' },
43
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ // ============================================================================
2
+ // Database Building Types
3
+ // ============================================================================
4
+ export const DATABASE_ENGINES = {
5
+ mysql: { label: 'MySQL', icon: '🐬', defaultPort: 3306 },
6
+ postgresql: { label: 'PostgreSQL', icon: '🐘', defaultPort: 5432 },
7
+ oracle: { label: 'Oracle', icon: '🔶', defaultPort: 1521 },
8
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Snapshot Types - For capturing conversation and file artifacts
3
+ *
4
+ * These types define the structure for saving and restoring agent conversation
5
+ * snapshots, including conversation outputs and files created/modified by Claude.
6
+ */
7
+ export {};
@@ -0,0 +1,12 @@
1
+ // Barrel re-export file
2
+ // All types have been split into domain-specific modules:
3
+ // - agent-types.ts: Agent classes, status, providers, models, context, subagents, boss, work plans, supervisor
4
+ // - building-types.ts: Buildings, PM2, Docker configuration
5
+ // - database-types.ts: Database engines, connections, queries, tables
6
+ // - common-types.ts: Drawing, tools, skills, events, permissions, notifications, secrets, snapshots, exec tasks
7
+ // - websocket-messages.ts: All WebSocket message interfaces and union types
8
+ export * from './agent-types.js';
9
+ export * from './building-types.js';
10
+ export * from './database-types.js';
11
+ export * from './common-types.js';
12
+ export * from './websocket-messages.js';
@@ -0,0 +1 @@
1
+ export {};
package/dist/sw.js ADDED
@@ -0,0 +1,37 @@
1
+ // Service Worker for Tide Commander PWA
2
+ const CACHE_NAME = 'tide-commander-v1';
3
+
4
+ // Install event - cache essential files
5
+ self.addEventListener('install', (event) => {
6
+ self.skipWaiting();
7
+ });
8
+
9
+ // Activate event - clean up old caches
10
+ self.addEventListener('activate', (event) => {
11
+ event.waitUntil(
12
+ caches.keys().then((cacheNames) => {
13
+ return Promise.all(
14
+ cacheNames
15
+ .filter((name) => name !== CACHE_NAME)
16
+ .map((name) => caches.delete(name))
17
+ );
18
+ })
19
+ );
20
+ self.clients.claim();
21
+ });
22
+
23
+ // Fetch event - network first strategy (app needs live data)
24
+ self.addEventListener('fetch', (event) => {
25
+ // Skip non-GET requests
26
+ if (event.request.method !== 'GET') return;
27
+
28
+ // Skip WebSocket connections
29
+ if (event.request.url.includes('/ws')) return;
30
+
31
+ // Network first for everything else
32
+ event.respondWith(
33
+ fetch(event.request).catch(() => {
34
+ return caches.match(event.request);
35
+ })
36
+ );
37
+ });
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "tide-commander",
3
+ "version": "0.52.0",
4
+ "description": "Visual multi-agent orchestrator and manager for Claude Code with 3D/2D interface",
5
+ "type": "module",
6
+ "bin": {
7
+ "tide-commander": "./dist/src/packages/server/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "scripts": {
15
+ "dev": "LISTEN_ALL_INTERFACES=1 concurrently \"bun run dev:client\" \"bun run dev:server\"",
16
+ "dev:client": "vite",
17
+ "dev:server": "tsx watch src/packages/server/index.ts",
18
+ "dev:landing": "vite --open /src/packages/landing/index.html",
19
+ "build": "npm run build:types && vite build && npm run build:server",
20
+ "build:server": "tsc -p tsconfig.server.json",
21
+ "preview": "vite preview",
22
+ "setup": "tsx src/packages/server/setup.ts",
23
+ "lint": "eslint src/",
24
+ "build:types": "tsc --noEmit",
25
+ "lint:types": "tsc --noEmit",
26
+ "test": "vitest run",
27
+ "test:ci": "vitest run --exclude src/packages/client/hooks/__tests__/useSnapshots.test.ts --exclude src/packages/client/hooks/__tests__/useKeyboardShortcuts.test.ts",
28
+ "test:watch": "vitest",
29
+ "test:coverage": "vitest run --coverage",
30
+ "prepack": "npm run build",
31
+ "cap:sync": "npx cap sync android",
32
+ "cap:open": "npx cap open android",
33
+ "cap:build": "npm run build && npx cap sync android",
34
+ "android": "npm run build && npx cap sync android && npx cap open android"
35
+ },
36
+ "dependencies": {
37
+ "@anthropic-ai/sdk": "^0.71.2",
38
+ "@capacitor/android": "^8.0.1",
39
+ "@capacitor/cli": "^8.0.1",
40
+ "@capacitor/core": "^8.0.1",
41
+ "@capacitor/haptics": "^8.0.0",
42
+ "@capacitor/local-notifications": "^8.0.0",
43
+ "@capawesome/capacitor-background-task": "^8.0.0",
44
+ "@tanstack/react-virtual": "^3.13.18",
45
+ "@types/oracledb": "^6.10.1",
46
+ "archiver": "^7.0.1",
47
+ "chokidar": "^4.0.0",
48
+ "cors": "^2.8.5",
49
+ "dotenv": "^17.2.3",
50
+ "express": "^5.2.1",
51
+ "fuse.js": "^7.1.0",
52
+ "mysql2": "^3.16.2",
53
+ "oracledb": "^6.10.0",
54
+ "pg": "^8.17.2",
55
+ "prismjs": "^1.30.0",
56
+ "react": "^19.2.3",
57
+ "react-dom": "^19.2.3",
58
+ "react-markdown": "^10.1.0",
59
+ "remark-gfm": "^4.0.1",
60
+ "three": "^0.170.0",
61
+ "unzip-stream": "^0.3.4",
62
+ "ws": "^8.18.0"
63
+ },
64
+ "overrides": {
65
+ "tar": "7.5.7"
66
+ },
67
+ "devDependencies": {
68
+ "@types/archiver": "^7.0.0",
69
+ "@types/cors": "^2.8.19",
70
+ "@types/express": "^5.0.6",
71
+ "@types/node": "^25.0.9",
72
+ "@types/pg": "^8.16.0",
73
+ "@types/prismjs": "^1.26.5",
74
+ "@types/react": "^19.2.8",
75
+ "@types/react-dom": "^19.2.3",
76
+ "@types/three": "^0.170.0",
77
+ "@types/unzip-stream": "^0.3.4",
78
+ "@types/ws": "^8.5.13",
79
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
80
+ "@typescript-eslint/parser": "^8.54.0",
81
+ "@vitejs/plugin-react": "^4.7.0",
82
+ "concurrently": "^9.1.0",
83
+ "eslint": "^9.39.2",
84
+ "sass": "^1.97.2",
85
+ "tsx": "^4.19.0",
86
+ "typescript": "^5.6.0",
87
+ "vite": "^6.0.0",
88
+ "vitest": "^4.0.17"
89
+ }
90
+ }