@jsayubi/ccgram 1.0.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 (247) hide show
  1. package/.env.example +19 -0
  2. package/LICENSE +21 -0
  3. package/README.md +338 -0
  4. package/ccgram.service +24 -0
  5. package/config/channels.json +58 -0
  6. package/config/default.json +27 -0
  7. package/config/defaults/config.json +16 -0
  8. package/config/defaults/i18n.json +32 -0
  9. package/config/email-template.json +31 -0
  10. package/config/test-with-subagent.json +16 -0
  11. package/config/user.json +27 -0
  12. package/dist/claude-hook-notify.d.ts +7 -0
  13. package/dist/claude-hook-notify.d.ts.map +1 -0
  14. package/dist/claude-hook-notify.js +154 -0
  15. package/dist/claude-hook-notify.js.map +1 -0
  16. package/dist/claude-remote.d.ts +50 -0
  17. package/dist/claude-remote.d.ts.map +1 -0
  18. package/dist/claude-remote.js +927 -0
  19. package/dist/claude-remote.js.map +1 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +110 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/enhanced-hook-notify.d.ts +16 -0
  25. package/dist/enhanced-hook-notify.d.ts.map +1 -0
  26. package/dist/enhanced-hook-notify.js +288 -0
  27. package/dist/enhanced-hook-notify.js.map +1 -0
  28. package/dist/permission-hook.d.ts +15 -0
  29. package/dist/permission-hook.d.ts.map +1 -0
  30. package/dist/permission-hook.js +357 -0
  31. package/dist/permission-hook.js.map +1 -0
  32. package/dist/prompt-bridge.d.ts +50 -0
  33. package/dist/prompt-bridge.d.ts.map +1 -0
  34. package/dist/prompt-bridge.js +173 -0
  35. package/dist/prompt-bridge.js.map +1 -0
  36. package/dist/question-notify.d.ts +16 -0
  37. package/dist/question-notify.d.ts.map +1 -0
  38. package/dist/question-notify.js +272 -0
  39. package/dist/question-notify.js.map +1 -0
  40. package/dist/setup.d.ts +10 -0
  41. package/dist/setup.d.ts.map +1 -0
  42. package/dist/setup.js +649 -0
  43. package/dist/setup.js.map +1 -0
  44. package/dist/smart-monitor.d.ts +7 -0
  45. package/dist/smart-monitor.d.ts.map +1 -0
  46. package/dist/smart-monitor.js +256 -0
  47. package/dist/smart-monitor.js.map +1 -0
  48. package/dist/src/automation/claude-automation.d.ts +45 -0
  49. package/dist/src/automation/claude-automation.d.ts.map +1 -0
  50. package/dist/src/automation/claude-automation.js +367 -0
  51. package/dist/src/automation/claude-automation.js.map +1 -0
  52. package/dist/src/automation/clipboard-automation.d.ts +35 -0
  53. package/dist/src/automation/clipboard-automation.d.ts.map +1 -0
  54. package/dist/src/automation/clipboard-automation.js +242 -0
  55. package/dist/src/automation/clipboard-automation.js.map +1 -0
  56. package/dist/src/automation/simple-automation.d.ts +56 -0
  57. package/dist/src/automation/simple-automation.d.ts.map +1 -0
  58. package/dist/src/automation/simple-automation.js +283 -0
  59. package/dist/src/automation/simple-automation.js.map +1 -0
  60. package/dist/src/channels/base/channel.d.ts +60 -0
  61. package/dist/src/channels/base/channel.d.ts.map +1 -0
  62. package/dist/src/channels/base/channel.js +96 -0
  63. package/dist/src/channels/base/channel.js.map +1 -0
  64. package/dist/src/channels/email/smtp.d.ts +74 -0
  65. package/dist/src/channels/email/smtp.d.ts.map +1 -0
  66. package/dist/src/channels/email/smtp.js +605 -0
  67. package/dist/src/channels/email/smtp.js.map +1 -0
  68. package/dist/src/channels/line/line.d.ts +36 -0
  69. package/dist/src/channels/line/line.d.ts.map +1 -0
  70. package/dist/src/channels/line/line.js +180 -0
  71. package/dist/src/channels/line/line.js.map +1 -0
  72. package/dist/src/channels/line/webhook.d.ts +55 -0
  73. package/dist/src/channels/line/webhook.d.ts.map +1 -0
  74. package/dist/src/channels/line/webhook.js +191 -0
  75. package/dist/src/channels/line/webhook.js.map +1 -0
  76. package/dist/src/channels/local/desktop.d.ts +30 -0
  77. package/dist/src/channels/local/desktop.d.ts.map +1 -0
  78. package/dist/src/channels/local/desktop.js +161 -0
  79. package/dist/src/channels/local/desktop.js.map +1 -0
  80. package/dist/src/channels/telegram/telegram.d.ts +43 -0
  81. package/dist/src/channels/telegram/telegram.d.ts.map +1 -0
  82. package/dist/src/channels/telegram/telegram.js +223 -0
  83. package/dist/src/channels/telegram/telegram.js.map +1 -0
  84. package/dist/src/channels/telegram/webhook.d.ts +75 -0
  85. package/dist/src/channels/telegram/webhook.d.ts.map +1 -0
  86. package/dist/src/channels/telegram/webhook.js +278 -0
  87. package/dist/src/channels/telegram/webhook.js.map +1 -0
  88. package/dist/src/config-manager.d.ts +16 -0
  89. package/dist/src/config-manager.d.ts.map +1 -0
  90. package/dist/src/config-manager.js +152 -0
  91. package/dist/src/config-manager.js.map +1 -0
  92. package/dist/src/core/config.d.ts +28 -0
  93. package/dist/src/core/config.d.ts.map +1 -0
  94. package/dist/src/core/config.js +248 -0
  95. package/dist/src/core/config.js.map +1 -0
  96. package/dist/src/core/logger.d.ts +19 -0
  97. package/dist/src/core/logger.d.ts.map +1 -0
  98. package/dist/src/core/logger.js +47 -0
  99. package/dist/src/core/logger.js.map +1 -0
  100. package/dist/src/core/notifier.d.ts +45 -0
  101. package/dist/src/core/notifier.d.ts.map +1 -0
  102. package/dist/src/core/notifier.js +189 -0
  103. package/dist/src/core/notifier.js.map +1 -0
  104. package/dist/src/daemon/taskping-daemon.d.ts +38 -0
  105. package/dist/src/daemon/taskping-daemon.d.ts.map +1 -0
  106. package/dist/src/daemon/taskping-daemon.js +306 -0
  107. package/dist/src/daemon/taskping-daemon.js.map +1 -0
  108. package/dist/src/relay/claude-command-bridge.d.ts +57 -0
  109. package/dist/src/relay/claude-command-bridge.d.ts.map +1 -0
  110. package/dist/src/relay/claude-command-bridge.js +188 -0
  111. package/dist/src/relay/claude-command-bridge.js.map +1 -0
  112. package/dist/src/relay/command-relay.d.ts +94 -0
  113. package/dist/src/relay/command-relay.d.ts.map +1 -0
  114. package/dist/src/relay/command-relay.js +463 -0
  115. package/dist/src/relay/command-relay.js.map +1 -0
  116. package/dist/src/relay/email-listener.d.ts +65 -0
  117. package/dist/src/relay/email-listener.d.ts.map +1 -0
  118. package/dist/src/relay/email-listener.js +460 -0
  119. package/dist/src/relay/email-listener.js.map +1 -0
  120. package/dist/src/relay/relay-pty.d.ts +21 -0
  121. package/dist/src/relay/relay-pty.d.ts.map +1 -0
  122. package/dist/src/relay/relay-pty.js +696 -0
  123. package/dist/src/relay/relay-pty.js.map +1 -0
  124. package/dist/src/relay/smart-injector.d.ts +30 -0
  125. package/dist/src/relay/smart-injector.d.ts.map +1 -0
  126. package/dist/src/relay/smart-injector.js +233 -0
  127. package/dist/src/relay/smart-injector.js.map +1 -0
  128. package/dist/src/relay/tmux-injector.d.ts +46 -0
  129. package/dist/src/relay/tmux-injector.d.ts.map +1 -0
  130. package/dist/src/relay/tmux-injector.js +413 -0
  131. package/dist/src/relay/tmux-injector.js.map +1 -0
  132. package/dist/src/tools/config-manager.d.ts +33 -0
  133. package/dist/src/tools/config-manager.d.ts.map +1 -0
  134. package/dist/src/tools/config-manager.js +448 -0
  135. package/dist/src/tools/config-manager.js.map +1 -0
  136. package/dist/src/tools/installer.d.ts +38 -0
  137. package/dist/src/tools/installer.d.ts.map +1 -0
  138. package/dist/src/tools/installer.js +222 -0
  139. package/dist/src/tools/installer.js.map +1 -0
  140. package/dist/src/types/callbacks.d.ts +29 -0
  141. package/dist/src/types/callbacks.d.ts.map +1 -0
  142. package/dist/src/types/callbacks.js +7 -0
  143. package/dist/src/types/callbacks.js.map +1 -0
  144. package/dist/src/types/config.d.ts +56 -0
  145. package/dist/src/types/config.d.ts.map +1 -0
  146. package/dist/src/types/config.js +6 -0
  147. package/dist/src/types/config.js.map +1 -0
  148. package/dist/src/types/hooks.d.ts +47 -0
  149. package/dist/src/types/hooks.d.ts.map +1 -0
  150. package/dist/src/types/hooks.js +6 -0
  151. package/dist/src/types/hooks.js.map +1 -0
  152. package/dist/src/types/index.d.ts +7 -0
  153. package/dist/src/types/index.d.ts.map +1 -0
  154. package/dist/src/types/index.js +23 -0
  155. package/dist/src/types/index.js.map +1 -0
  156. package/dist/src/types/ipc.d.ts +43 -0
  157. package/dist/src/types/ipc.d.ts.map +1 -0
  158. package/dist/src/types/ipc.js +7 -0
  159. package/dist/src/types/ipc.js.map +1 -0
  160. package/dist/src/types/session.d.ts +70 -0
  161. package/dist/src/types/session.d.ts.map +1 -0
  162. package/dist/src/types/session.js +9 -0
  163. package/dist/src/types/session.js.map +1 -0
  164. package/dist/src/types/telegram.d.ts +58 -0
  165. package/dist/src/types/telegram.d.ts.map +1 -0
  166. package/dist/src/types/telegram.js +6 -0
  167. package/dist/src/types/telegram.js.map +1 -0
  168. package/dist/src/utils/active-check.d.ts +19 -0
  169. package/dist/src/utils/active-check.d.ts.map +1 -0
  170. package/dist/src/utils/active-check.js +41 -0
  171. package/dist/src/utils/active-check.js.map +1 -0
  172. package/dist/src/utils/callback-parser.d.ts +21 -0
  173. package/dist/src/utils/callback-parser.d.ts.map +1 -0
  174. package/dist/src/utils/callback-parser.js +58 -0
  175. package/dist/src/utils/callback-parser.js.map +1 -0
  176. package/dist/src/utils/controller-injector.d.ts +21 -0
  177. package/dist/src/utils/controller-injector.d.ts.map +1 -0
  178. package/dist/src/utils/controller-injector.js +108 -0
  179. package/dist/src/utils/controller-injector.js.map +1 -0
  180. package/dist/src/utils/conversation-tracker.d.ts +32 -0
  181. package/dist/src/utils/conversation-tracker.d.ts.map +1 -0
  182. package/dist/src/utils/conversation-tracker.js +119 -0
  183. package/dist/src/utils/conversation-tracker.js.map +1 -0
  184. package/dist/src/utils/http-request.d.ts +25 -0
  185. package/dist/src/utils/http-request.d.ts.map +1 -0
  186. package/dist/src/utils/http-request.js +66 -0
  187. package/dist/src/utils/http-request.js.map +1 -0
  188. package/dist/src/utils/optional-require.d.ts +13 -0
  189. package/dist/src/utils/optional-require.d.ts.map +1 -0
  190. package/dist/src/utils/optional-require.js +37 -0
  191. package/dist/src/utils/optional-require.js.map +1 -0
  192. package/dist/src/utils/paths.d.ts +11 -0
  193. package/dist/src/utils/paths.d.ts.map +1 -0
  194. package/dist/src/utils/paths.js +28 -0
  195. package/dist/src/utils/paths.js.map +1 -0
  196. package/dist/src/utils/pty-session-manager.d.ts +42 -0
  197. package/dist/src/utils/pty-session-manager.d.ts.map +1 -0
  198. package/dist/src/utils/pty-session-manager.js +182 -0
  199. package/dist/src/utils/pty-session-manager.js.map +1 -0
  200. package/dist/src/utils/subagent-tracker.d.ts +64 -0
  201. package/dist/src/utils/subagent-tracker.d.ts.map +1 -0
  202. package/dist/src/utils/subagent-tracker.js +191 -0
  203. package/dist/src/utils/subagent-tracker.js.map +1 -0
  204. package/dist/src/utils/tmux-monitor.d.ts +102 -0
  205. package/dist/src/utils/tmux-monitor.d.ts.map +1 -0
  206. package/dist/src/utils/tmux-monitor.js +642 -0
  207. package/dist/src/utils/tmux-monitor.js.map +1 -0
  208. package/dist/src/utils/trace-capture.d.ts +42 -0
  209. package/dist/src/utils/trace-capture.d.ts.map +1 -0
  210. package/dist/src/utils/trace-capture.js +102 -0
  211. package/dist/src/utils/trace-capture.js.map +1 -0
  212. package/dist/start-all-webhooks.d.ts +7 -0
  213. package/dist/start-all-webhooks.d.ts.map +1 -0
  214. package/dist/start-all-webhooks.js +98 -0
  215. package/dist/start-all-webhooks.js.map +1 -0
  216. package/dist/start-line-webhook.d.ts +7 -0
  217. package/dist/start-line-webhook.d.ts.map +1 -0
  218. package/dist/start-line-webhook.js +59 -0
  219. package/dist/start-line-webhook.js.map +1 -0
  220. package/dist/start-relay-pty.d.ts +7 -0
  221. package/dist/start-relay-pty.d.ts.map +1 -0
  222. package/dist/start-relay-pty.js +173 -0
  223. package/dist/start-relay-pty.js.map +1 -0
  224. package/dist/start-telegram-webhook.d.ts +7 -0
  225. package/dist/start-telegram-webhook.d.ts.map +1 -0
  226. package/dist/start-telegram-webhook.js +80 -0
  227. package/dist/start-telegram-webhook.js.map +1 -0
  228. package/dist/user-prompt-hook.d.ts +13 -0
  229. package/dist/user-prompt-hook.d.ts.map +1 -0
  230. package/dist/user-prompt-hook.js +45 -0
  231. package/dist/user-prompt-hook.js.map +1 -0
  232. package/dist/workspace-router.d.ts +78 -0
  233. package/dist/workspace-router.d.ts.map +1 -0
  234. package/dist/workspace-router.js +408 -0
  235. package/dist/workspace-router.js.map +1 -0
  236. package/dist/workspace-telegram-bot.d.ts +3 -0
  237. package/dist/workspace-telegram-bot.d.ts.map +1 -0
  238. package/dist/workspace-telegram-bot.js +1172 -0
  239. package/dist/workspace-telegram-bot.js.map +1 -0
  240. package/package.json +80 -0
  241. package/src/types/callbacks.ts +39 -0
  242. package/src/types/config.ts +63 -0
  243. package/src/types/hooks.ts +50 -0
  244. package/src/types/index.ts +6 -0
  245. package/src/types/ipc.ts +55 -0
  246. package/src/types/session.ts +72 -0
  247. package/src/types/telegram.ts +66 -0
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * CCGram Installer
4
+ * Handles installation and configuration of Claude Code hooks
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const readline_1 = __importDefault(require("readline"));
13
+ const logger_1 = __importDefault(require("../core/logger"));
14
+ class Installer {
15
+ config;
16
+ logger;
17
+ projectDir;
18
+ claudeConfigDir;
19
+ rl;
20
+ constructor(configManager) {
21
+ this.config = configManager;
22
+ this.logger = new logger_1.default('Installer');
23
+ this.projectDir = path_1.default.join(__dirname, '../..');
24
+ this.claudeConfigDir = this.getClaudeConfigDir();
25
+ this.rl = readline_1.default.createInterface({
26
+ input: process.stdin,
27
+ output: process.stdout
28
+ });
29
+ }
30
+ getClaudeConfigDir() {
31
+ const homeDir = os_1.default.homedir();
32
+ // Common Claude Code configuration paths
33
+ const possiblePaths = [
34
+ path_1.default.join(homeDir, '.claude'),
35
+ path_1.default.join(homeDir, '.config', 'claude'),
36
+ path_1.default.join(homeDir, 'Library', 'Application Support', 'Claude'),
37
+ path_1.default.join(homeDir, 'AppData', 'Roaming', 'Claude')
38
+ ];
39
+ for (const configPath of possiblePaths) {
40
+ if (fs_1.default.existsSync(configPath)) {
41
+ return configPath;
42
+ }
43
+ }
44
+ // Default fallback
45
+ return path_1.default.join(homeDir, '.claude');
46
+ }
47
+ async question(prompt) {
48
+ return new Promise((resolve) => {
49
+ this.rl.question(prompt, resolve);
50
+ });
51
+ }
52
+ async run(args = []) {
53
+ console.log('=== CCGram Claude Code Installer ===\n');
54
+ // Check dependencies
55
+ if (!this.checkDependencies()) {
56
+ console.log('\nPlease install required dependencies first');
57
+ this.rl.close();
58
+ return;
59
+ }
60
+ console.log(`\nClaude Code configuration directory: ${this.claudeConfigDir}`);
61
+ const proceed = await this.question('\nContinue with installation? (y/n): ');
62
+ if (proceed.toLowerCase() !== 'y' && proceed.toLowerCase() !== 'yes') {
63
+ console.log('Installation cancelled');
64
+ this.rl.close();
65
+ return;
66
+ }
67
+ // Install hooks
68
+ const hookSuccess = await this.installHooks();
69
+ if (!hookSuccess) {
70
+ this.rl.close();
71
+ return;
72
+ }
73
+ // Initialize configuration
74
+ await this.initializeConfig();
75
+ // Test installation
76
+ const testChoice = await this.question('\nTest installation? (y/n): ');
77
+ if (testChoice.toLowerCase() === 'y' || testChoice.toLowerCase() === 'yes') {
78
+ await this.testInstallation();
79
+ }
80
+ this.displayUsage();
81
+ this.rl.close();
82
+ }
83
+ checkDependencies() {
84
+ console.log('Checking dependencies...');
85
+ // Check Node.js
86
+ try {
87
+ const nodeVersion = process.version;
88
+ console.log(`✅ Node.js ${nodeVersion}`);
89
+ }
90
+ catch (error) {
91
+ console.log('❌ Node.js not installed');
92
+ return false;
93
+ }
94
+ // Check platform-specific notification tools
95
+ const platform = process.platform;
96
+ switch (platform) {
97
+ case 'darwin':
98
+ console.log('✅ macOS notification support');
99
+ break;
100
+ case 'linux':
101
+ console.log('ℹ️ Linux system, please ensure libnotify-bin is installed');
102
+ break;
103
+ case 'win32':
104
+ console.log('✅ Windows notification support');
105
+ break;
106
+ default:
107
+ console.log(`⚠️ Platform ${platform} may not be fully supported`);
108
+ }
109
+ return true;
110
+ }
111
+ createHooksConfig() {
112
+ const claudeRemotePath = path_1.default.join(this.projectDir, 'claude-remote.js');
113
+ return {
114
+ hooks: {
115
+ Stop: [
116
+ {
117
+ matcher: "*",
118
+ hooks: [
119
+ {
120
+ type: "command",
121
+ command: `node "${claudeRemotePath}" notify --type completed`,
122
+ timeout: 5
123
+ }
124
+ ]
125
+ }
126
+ ],
127
+ SubagentStop: [
128
+ {
129
+ matcher: "*",
130
+ hooks: [
131
+ {
132
+ type: "command",
133
+ command: `node "${claudeRemotePath}" notify --type waiting`,
134
+ timeout: 5
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ }
140
+ };
141
+ }
142
+ async installHooks() {
143
+ console.log('\nInstalling Claude Code hooks...');
144
+ // Create config directory if it doesn't exist
145
+ if (!fs_1.default.existsSync(this.claudeConfigDir)) {
146
+ fs_1.default.mkdirSync(this.claudeConfigDir, { recursive: true });
147
+ console.log(`✅ Created configuration directory: ${this.claudeConfigDir}`);
148
+ }
149
+ const settingsPath = path_1.default.join(this.claudeConfigDir, 'settings.json');
150
+ let settings = {};
151
+ // Load existing settings
152
+ if (fs_1.default.existsSync(settingsPath)) {
153
+ try {
154
+ const content = fs_1.default.readFileSync(settingsPath, 'utf8');
155
+ settings = JSON.parse(content);
156
+ console.log('✅ Loaded existing Claude Code settings');
157
+ }
158
+ catch (error) {
159
+ console.log('⚠️ Unable to parse existing settings, will create new configuration');
160
+ }
161
+ }
162
+ // Create or update hooks configuration
163
+ const hooksConfig = this.createHooksConfig();
164
+ // Merge with existing settings
165
+ settings.hooks = {
166
+ ...settings.hooks,
167
+ ...hooksConfig.hooks
168
+ };
169
+ // Save updated settings
170
+ try {
171
+ fs_1.default.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
172
+ console.log(`✅ Claude Code hooks installed to: ${settingsPath}`);
173
+ return true;
174
+ }
175
+ catch (error) {
176
+ console.error(`❌ Installation failed: ${error.message}`);
177
+ return false;
178
+ }
179
+ }
180
+ async initializeConfig() {
181
+ console.log('\nInitializing configuration...');
182
+ // Load and save default configuration
183
+ this.config.load();
184
+ this.config.save();
185
+ console.log('✅ Configuration file initialized');
186
+ }
187
+ async testInstallation() {
188
+ console.log('\nTesting installation...');
189
+ try {
190
+ const ClaudeCodeRemoteCLI = require('../../claude-remote');
191
+ const cli = new ClaudeCodeRemoteCLI();
192
+ await cli.init();
193
+ console.log('Testing task completion notification...');
194
+ await cli.handleNotify(['--type', 'completed']);
195
+ await new Promise(resolve => setTimeout(resolve, 2000));
196
+ console.log('Testing waiting input notification...');
197
+ await cli.handleNotify(['--type', 'waiting']);
198
+ console.log('✅ Test successful!');
199
+ return true;
200
+ }
201
+ catch (error) {
202
+ console.error(`❌ Test failed: ${error.message}`);
203
+ return false;
204
+ }
205
+ }
206
+ displayUsage() {
207
+ console.log('\n=== Installation Complete ===');
208
+ console.log('');
209
+ console.log('Now when you use Claude Code:');
210
+ console.log('• You will receive notifications when tasks are completed');
211
+ console.log('• You will receive reminders when Claude is waiting for input');
212
+ console.log('');
213
+ console.log('Common commands:');
214
+ console.log(` node "${path_1.default.join(this.projectDir, 'claude-remote.js')}" config`);
215
+ console.log(` node "${path_1.default.join(this.projectDir, 'claude-remote.js')}" test`);
216
+ console.log(` node "${path_1.default.join(this.projectDir, 'claude-remote.js')}" status`);
217
+ console.log('');
218
+ console.log('To uninstall, manually delete the hooks configuration from Claude Code settings.');
219
+ }
220
+ }
221
+ module.exports = Installer;
222
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/tools/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Telegram inline keyboard callback_data parsed types.
3
+ * Format: "type:promptId:action"
4
+ */
5
+ export interface CallbackNew {
6
+ type: 'new';
7
+ projectName: string;
8
+ }
9
+ export interface CallbackPerm {
10
+ type: 'perm';
11
+ promptId: string;
12
+ action: string;
13
+ }
14
+ export interface CallbackOpt {
15
+ type: 'opt';
16
+ promptId: string;
17
+ optionIndex: number;
18
+ }
19
+ export interface CallbackOptSubmit {
20
+ type: 'opt-submit';
21
+ promptId: string;
22
+ }
23
+ export interface CallbackQperm {
24
+ type: 'qperm';
25
+ promptId: string;
26
+ optionIndex: number;
27
+ }
28
+ export type ParsedCallback = CallbackNew | CallbackPerm | CallbackOpt | CallbackOptSubmit | CallbackQperm;
29
+ //# sourceMappingURL=callbacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../../src/types/callbacks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Telegram inline keyboard callback_data parsed types.
4
+ * Format: "type:promptId:action"
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=callbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../../src/types/callbacks.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Configuration types.
3
+ */
4
+ export interface SoundConfig {
5
+ completed: string;
6
+ waiting: string;
7
+ }
8
+ export interface RelayAuth {
9
+ enabled: boolean;
10
+ token: string | null;
11
+ }
12
+ export interface RelayConfig {
13
+ enabled: boolean;
14
+ port: number;
15
+ auth: RelayAuth;
16
+ }
17
+ export interface ChannelRef {
18
+ enabled: boolean;
19
+ priority?: number;
20
+ }
21
+ export interface AppConfig {
22
+ language: string;
23
+ sound: SoundConfig;
24
+ enabled: boolean;
25
+ timeout: number;
26
+ customMessages: {
27
+ completed: string | null;
28
+ waiting: string | null;
29
+ };
30
+ channels: {
31
+ desktop: ChannelRef;
32
+ [key: string]: ChannelRef;
33
+ };
34
+ relay: RelayConfig;
35
+ [key: string]: unknown;
36
+ }
37
+ export interface ChannelConfig {
38
+ type: string;
39
+ enabled: boolean;
40
+ config: Record<string, unknown>;
41
+ }
42
+ export interface ChannelsConfig {
43
+ [channelName: string]: ChannelConfig;
44
+ }
45
+ export interface Notification {
46
+ type: string;
47
+ title: string;
48
+ message: string;
49
+ project: string;
50
+ metadata: {
51
+ timestamp: string;
52
+ language: string;
53
+ [key: string]: unknown;
54
+ };
55
+ }
56
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE,WAAW,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration types.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Claude Code hook stdin payload types.
3
+ */
4
+ export interface HookStdinBase {
5
+ tool_name?: string;
6
+ tool_input?: Record<string, unknown>;
7
+ cwd?: string;
8
+ session_id?: string;
9
+ hook_event_name?: string;
10
+ transcript_path?: string;
11
+ }
12
+ export interface ToolInputBash {
13
+ command: string;
14
+ description?: string;
15
+ timeout?: number;
16
+ }
17
+ export interface ToolInputEdit {
18
+ file_path: string;
19
+ old_string?: string;
20
+ new_string?: string;
21
+ }
22
+ export interface ToolInputWrite {
23
+ file_path: string;
24
+ content: string;
25
+ }
26
+ export interface AskUserQuestionItem {
27
+ question: string;
28
+ header: string;
29
+ options: Array<{
30
+ label: string;
31
+ description?: string;
32
+ }>;
33
+ multiSelect: boolean;
34
+ }
35
+ export interface ToolInputAskUser {
36
+ questions: AskUserQuestionItem[];
37
+ }
38
+ export interface PermissionHookOutput {
39
+ hookSpecificOutput: {
40
+ hookEventName: 'PermissionRequest';
41
+ decision: {
42
+ behavior: 'allow' | 'deny';
43
+ };
44
+ };
45
+ systemMessage?: string;
46
+ }
47
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/types/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE;QAClB,aAAa,EAAE,mBAAmB,CAAC;QACnC,QAAQ,EAAE;YACR,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Claude Code hook stdin payload types.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/types/hooks.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ export * from './ipc';
2
+ export * from './session';
3
+ export * from './telegram';
4
+ export * from './hooks';
5
+ export * from './callbacks';
6
+ export * from './config';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ipc"), exports);
18
+ __exportStar(require("./session"), exports);
19
+ __exportStar(require("./telegram"), exports);
20
+ __exportStar(require("./hooks"), exports);
21
+ __exportStar(require("./callbacks"), exports);
22
+ __exportStar(require("./config"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * IPC types for file-based prompt bridge communication.
3
+ * Files live in /tmp/claude-prompts/ as pending-<id>.json / response-<id>.json.
4
+ */
5
+ export interface PendingBase {
6
+ workspace: string;
7
+ tmuxSession: string | null;
8
+ createdAt: number;
9
+ }
10
+ export interface PendingPermission extends PendingBase {
11
+ type: 'permission';
12
+ toolName: string;
13
+ toolInput: Record<string, unknown>;
14
+ }
15
+ export interface PendingPlan extends PendingBase {
16
+ type: 'plan';
17
+ toolName: string;
18
+ toolInput: Record<string, unknown>;
19
+ }
20
+ export interface PendingQuestion extends PendingBase {
21
+ type: 'question';
22
+ questionText: string;
23
+ options: string[];
24
+ multiSelect: boolean;
25
+ selectedOptions?: boolean[];
26
+ isLast: boolean;
27
+ }
28
+ export interface PendingQuestionFreeText extends PendingBase {
29
+ type: 'question-freetext';
30
+ questionText: string;
31
+ }
32
+ export type PendingPrompt = PendingPermission | PendingPlan | PendingQuestion | PendingQuestionFreeText;
33
+ export interface ResponsePermission {
34
+ action: 'allow' | 'deny' | 'always';
35
+ respondedAt: number;
36
+ }
37
+ export interface ResponseQperm {
38
+ action: 'allow';
39
+ selectedOption: number;
40
+ respondedAt: number;
41
+ }
42
+ export type PromptResponse = ResponsePermission | ResponseQperm;
43
+ //# sourceMappingURL=ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../../src/types/ipc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,IAAI,EAAE,mBAAmB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,uBAAuB,CAAC;AAE5B,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * IPC types for file-based prompt bridge communication.
4
+ * Files live in /tmp/claude-prompts/ as pending-<id>.json / response-<id>.json.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=ipc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../../src/types/ipc.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Session and workspace routing types.
3
+ *
4
+ * NOTE: SessionEntry.createdAt and expiresAt are in SECONDS (Unix epoch).
5
+ * All other timestamps in the codebase use milliseconds.
6
+ */
7
+ export interface SessionEntry {
8
+ type: string;
9
+ /** Actual session mode — absent means 'tmux' for backwards compatibility */
10
+ sessionType?: 'tmux' | 'pty';
11
+ /** Unix timestamp in SECONDS */
12
+ createdAt: number;
13
+ /** Unix timestamp in SECONDS */
14
+ expiresAt: number;
15
+ cwd: string;
16
+ sessionId: string | null;
17
+ tmuxSession: string;
18
+ description: string;
19
+ }
20
+ export interface SessionMap {
21
+ [token: string]: SessionEntry;
22
+ }
23
+ export type ResolveType = 'exact' | 'prefix' | 'ambiguous' | 'none';
24
+ export interface ResolveExact {
25
+ type: 'exact';
26
+ match: {
27
+ token: string;
28
+ session: SessionEntry;
29
+ };
30
+ workspace: string;
31
+ }
32
+ export interface ResolvePrefix {
33
+ type: 'prefix';
34
+ match: {
35
+ token: string;
36
+ session: SessionEntry;
37
+ };
38
+ workspace: string;
39
+ }
40
+ export interface ResolveAmbiguous {
41
+ type: 'ambiguous';
42
+ matches: Array<{
43
+ workspace: string;
44
+ token: string;
45
+ session: SessionEntry;
46
+ }>;
47
+ }
48
+ export interface ResolveNone {
49
+ type: 'none';
50
+ }
51
+ export type ResolveResult = ResolveExact | ResolvePrefix | ResolveAmbiguous | ResolveNone;
52
+ export interface DefaultWorkspaceFile {
53
+ workspace: string;
54
+ }
55
+ export interface MessageWorkspaceEntry {
56
+ workspace: string;
57
+ type: string;
58
+ timestamp: number;
59
+ }
60
+ export interface MessageWorkspaceMap {
61
+ [messageId: string]: MessageWorkspaceEntry;
62
+ }
63
+ export interface ProjectHistoryEntry {
64
+ path: string;
65
+ lastUsed: number;
66
+ }
67
+ export interface ProjectHistoryMap {
68
+ [name: string]: ProjectHistoryEntry;
69
+ }
70
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE1F,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACrC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Session and workspace routing types.
4
+ *
5
+ * NOTE: SessionEntry.createdAt and expiresAt are in SECONDS (Unix epoch).
6
+ * All other timestamps in the codebase use milliseconds.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/types/session.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}