@idl3/claude-control 0.1.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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +144 -0
  3. package/bin/cli.js +68 -0
  4. package/bin/install-service.sh +107 -0
  5. package/bin/self-update.sh +43 -0
  6. package/bin/uninstall-service.sh +22 -0
  7. package/lib/answer.js +64 -0
  8. package/lib/auth.js +81 -0
  9. package/lib/config.js +118 -0
  10. package/lib/push.js +153 -0
  11. package/lib/resources.js +137 -0
  12. package/lib/sessions.js +529 -0
  13. package/lib/terminal.js +278 -0
  14. package/lib/tmux.js +462 -0
  15. package/lib/transcript.js +451 -0
  16. package/lib/tui.js +50 -0
  17. package/lib/uploads.js +42 -0
  18. package/lib/version.js +73 -0
  19. package/package.json +49 -0
  20. package/public/app.js +756 -0
  21. package/public/index.html +120 -0
  22. package/public/styles.css +848 -0
  23. package/server.js +910 -0
  24. package/web/README.md +66 -0
  25. package/web/dist/apple-touch-icon.png +0 -0
  26. package/web/dist/assets/bash-I8pq0VWm.js +1 -0
  27. package/web/dist/assets/core-BYJcZW10.js +3 -0
  28. package/web/dist/assets/css-DazXZka4.js +1 -0
  29. package/web/dist/assets/diff-DiTmLxSS.js +1 -0
  30. package/web/dist/assets/index-Bb7gXgl-.css +1 -0
  31. package/web/dist/assets/index-wrjqfzbL.js +77 -0
  32. package/web/dist/assets/javascript-BKRaQes9.js +1 -0
  33. package/web/dist/assets/json-DIYVocXf.js +1 -0
  34. package/web/dist/assets/markdown-BrP960CR.js +1 -0
  35. package/web/dist/assets/python-sE43i1Pi.js +1 -0
  36. package/web/dist/assets/typescript-C2FFdlUC.js +1 -0
  37. package/web/dist/assets/xml-BXBhIUeX.js +1 -0
  38. package/web/dist/icon-192.png +0 -0
  39. package/web/dist/icon-512.png +0 -0
  40. package/web/dist/index.html +25 -0
  41. package/web/dist/manifest.webmanifest +25 -0
  42. package/web/dist/sw.js +57 -0
@@ -0,0 +1,120 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>claude control</title>
7
+ <link rel="stylesheet" href="styles.css">
8
+ </head>
9
+ <body>
10
+ <div id="app">
11
+ <!-- Left session rail -->
12
+ <aside id="session-rail" role="navigation" aria-label="Sessions">
13
+ <div class="rail-header">
14
+ <span class="rail-title">sessions</span>
15
+ <span id="connection-dot" class="conn-dot conn-disconnected" title="disconnected"></span>
16
+ </div>
17
+ <ul id="session-list" role="listbox" aria-label="Available sessions">
18
+ <!-- populated by app.js -->
19
+ </ul>
20
+ </aside>
21
+
22
+ <!-- Center: transcript + composer -->
23
+ <main id="main-pane">
24
+ <div id="transcript-header" class="transcript-header" hidden>
25
+ <button id="mobile-back" class="mobile-back" aria-label="Back to session list">β€Ή sessions</button>
26
+ <span id="header-session-name" class="header-name"></span>
27
+ <span id="header-cwd" class="header-cwd"></span>
28
+ </div>
29
+
30
+ <div id="transcript" role="log" aria-live="polite" aria-label="Conversation transcript">
31
+ <!-- empty-state placeholder is injected by app.js init() -->
32
+ </div>
33
+
34
+ <div id="composer" class="composer" hidden>
35
+ <button id="attach-btn" class="btn-attach" aria-label="Attach image or file" title="Attach image or file">πŸ“Ž</button>
36
+ <input id="attach-input" type="file" multiple accept="image/*,application/pdf,text/*" hidden aria-hidden="true">
37
+ <textarea
38
+ id="reply-input"
39
+ placeholder="reply… (Enter to send, Shift+Enter for newline)"
40
+ rows="3"
41
+ aria-label="Reply message"
42
+ autocomplete="off"
43
+ spellcheck="false"
44
+ ></textarea>
45
+ <button id="send-btn" class="btn-send" aria-label="Send reply">send</button>
46
+ </div>
47
+ </main>
48
+
49
+ <!-- Right resource HUD -->
50
+ <aside id="resource-hud" role="complementary" aria-label="Resource monitor" aria-live="polite">
51
+ <div class="hud-section">
52
+ <div class="hud-label">self</div>
53
+ <div class="hud-row">
54
+ <span class="hud-key">cpu</span>
55
+ <span id="hud-cpu" class="hud-val">β€”</span>
56
+ </div>
57
+ <div class="hud-row">
58
+ <span class="hud-key">rss</span>
59
+ <span id="hud-rss" class="hud-val">β€”</span>
60
+ </div>
61
+ <div class="hud-row">
62
+ <span class="hud-key">heap</span>
63
+ <span id="hud-heap" class="hud-val">β€”</span>
64
+ </div>
65
+ </div>
66
+ <div class="hud-divider"></div>
67
+ <div class="hud-section">
68
+ <div class="hud-label">system</div>
69
+ <div class="hud-row">
70
+ <span class="hud-key">load</span>
71
+ <span id="hud-load" class="hud-val">β€”</span>
72
+ </div>
73
+ <div class="hud-row">
74
+ <span class="hud-key">mem</span>
75
+ <span id="hud-mem" class="hud-val">β€”</span>
76
+ </div>
77
+ </div>
78
+ <div id="hud-warn" class="hud-warn" hidden>
79
+ <span id="hud-warn-text">over limit</span>
80
+ </div>
81
+ </aside>
82
+ </div>
83
+
84
+ <!-- AskUserQuestion modal -->
85
+ <div
86
+ id="ask-modal"
87
+ class="modal-backdrop"
88
+ role="dialog"
89
+ aria-modal="true"
90
+ aria-labelledby="ask-modal-title"
91
+ hidden
92
+ >
93
+ <div class="modal-box" id="ask-modal-box">
94
+ <header class="modal-header">
95
+ <h2 id="ask-modal-title" class="modal-title">claude is asking</h2>
96
+ <button class="modal-close" id="ask-modal-close" aria-label="Dismiss modal">βœ•</button>
97
+ </header>
98
+
99
+ <div id="ask-questions" class="ask-questions">
100
+ <!-- question blocks injected by app.js -->
101
+ </div>
102
+
103
+ <footer class="modal-footer">
104
+ <button id="ask-capture-btn" class="btn-secondary">show terminal</button>
105
+ <div id="ask-capture-output" class="capture-output" hidden>
106
+ <pre id="ask-capture-pre"></pre>
107
+ </div>
108
+ <div class="modal-actions">
109
+ <button id="ask-cancel-btn" class="btn-ghost">cancel</button>
110
+ <button id="ask-send-btn" class="btn-primary">send answer</button>
111
+ </div>
112
+ </footer>
113
+ </div>
114
+ </div>
115
+
116
+ <div id="toast" class="toast" role="status" aria-live="polite"></div>
117
+
118
+ <script src="app.js" type="module"></script>
119
+ </body>
120
+ </html>