@harborgroup/my-team 0.1.0 → 0.3.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.
- package/README.md +27 -1
- package/dist/init.js +4 -20
- package/dist/npm-install.js +13 -0
- package/dist/own-package.js +9 -0
- package/dist/server/auth-check.js +25 -14
- package/dist/server/chat-session.js +45 -15
- package/dist/server/http-server.js +50 -5
- package/dist/server/logger.js +68 -0
- package/dist/server/profile.js +148 -0
- package/dist/server/start.js +12 -1
- package/dist/server/update-check.js +32 -0
- package/dist/web/app.js +683 -31
- package/dist/web/index.html +171 -30
- package/dist/web/style.css +752 -52
- package/package.json +1 -1
package/dist/web/index.html
CHANGED
|
@@ -6,39 +6,180 @@
|
|
|
6
6
|
<link rel="stylesheet" href="/style.css" />
|
|
7
7
|
</head>
|
|
8
8
|
<body>
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
<p id="loading">Checking Claude Code status…</p>
|
|
10
|
+
|
|
11
|
+
<section id="onboarding" hidden>
|
|
12
|
+
<h1>Set up Claude Code</h1>
|
|
13
|
+
<div id="onboarding-cli-missing" hidden>
|
|
14
|
+
<p>The Claude Code CLI binary couldn't be found or run.</p>
|
|
15
|
+
<p>Try installing it globally, then reload this page:</p>
|
|
16
|
+
<pre>npm install -g @anthropic-ai/claude-code</pre>
|
|
17
|
+
</div>
|
|
18
|
+
<div id="onboarding-not-authenticated" hidden>
|
|
19
|
+
<p>Claude Code isn't logged in yet. In a terminal, run:</p>
|
|
20
|
+
<pre>claude login</pre>
|
|
21
|
+
<p>Then come back here.</p>
|
|
22
|
+
</div>
|
|
23
|
+
<button id="check-again">Check again</button>
|
|
24
|
+
</section>
|
|
25
|
+
|
|
26
|
+
<div id="app-shell" hidden>
|
|
27
|
+
<div id="update-banner" hidden>
|
|
28
|
+
<span id="update-banner-text"></span>
|
|
29
|
+
<div class="update-banner-actions">
|
|
30
|
+
<button id="update-banner-button" type="button">Update</button>
|
|
31
|
+
<button id="update-banner-dismiss" type="button" aria-label="Dismiss">×</button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="app-shell-body">
|
|
36
|
+
<nav id="icon-rail">
|
|
37
|
+
<div id="rail-logo" aria-hidden="true"></div>
|
|
38
|
+
|
|
39
|
+
<button class="rail-item" id="rail-home" type="button" title="Home">
|
|
40
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
41
|
+
<path d="M3 11.5 12 4l9 7.5" />
|
|
42
|
+
<path d="M5.5 10v9a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-9" />
|
|
43
|
+
<path d="M9.5 20v-6h5v6" />
|
|
44
|
+
</svg>
|
|
45
|
+
<span>Home</span>
|
|
46
|
+
</button>
|
|
47
|
+
|
|
48
|
+
<button class="rail-item" id="rail-messages" type="button" title="Messages">
|
|
49
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
50
|
+
<path d="M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H9.5L5 20v-4H6a2 2 0 0 1-2-2z" />
|
|
51
|
+
</svg>
|
|
52
|
+
<span>Messages</span>
|
|
53
|
+
</button>
|
|
54
|
+
|
|
55
|
+
<button class="rail-item" id="rail-profile" type="button" title="Profile">
|
|
56
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
57
|
+
<circle cx="12" cy="8.3" r="3.3" />
|
|
58
|
+
<path d="M5 19.3c1.3-3.1 4-4.8 7-4.8s5.7 1.7 7 4.8" />
|
|
59
|
+
</svg>
|
|
60
|
+
<span>Profile</span>
|
|
61
|
+
</button>
|
|
62
|
+
|
|
63
|
+
<button class="rail-item" id="rail-settings" type="button" title="Settings">
|
|
64
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
65
|
+
<line x1="4" y1="7" x2="20" y2="7" />
|
|
66
|
+
<circle cx="15" cy="7" r="2" />
|
|
67
|
+
<line x1="4" y1="12" x2="20" y2="12" />
|
|
68
|
+
<circle cx="9" cy="12" r="2" />
|
|
69
|
+
<line x1="4" y1="17" x2="20" y2="17" />
|
|
70
|
+
<circle cx="13" cy="17" r="2" />
|
|
71
|
+
</svg>
|
|
72
|
+
<span>Settings</span>
|
|
73
|
+
</button>
|
|
74
|
+
</nav>
|
|
75
|
+
|
|
76
|
+
<div class="page" id="page-home" hidden>
|
|
77
|
+
<header class="page-header"><h1>Home</h1></header>
|
|
78
|
+
<div class="page-body home-hero">
|
|
79
|
+
<span class="avatar avatar-lg" id="home-avatar">?</span>
|
|
80
|
+
<h2 id="home-greeting">Welcome</h2>
|
|
81
|
+
<p id="home-sub" class="muted"></p>
|
|
82
|
+
<button id="home-go-messages" type="button">Open Messages</button>
|
|
18
83
|
</div>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<div class="page" id="page-messages" hidden>
|
|
87
|
+
<aside id="sidebar">
|
|
88
|
+
<div id="workspace-header">
|
|
89
|
+
<span id="workspace-name">my-team</span>
|
|
90
|
+
</div>
|
|
91
|
+
<nav id="nav">
|
|
92
|
+
<div class="nav-section-label">Channels</div>
|
|
93
|
+
<button class="nav-item" id="nav-general" type="button">
|
|
94
|
+
<span class="nav-hash">#</span><span>general</span>
|
|
95
|
+
</button>
|
|
96
|
+
<div class="nav-section-label">Direct Messages</div>
|
|
97
|
+
<button class="nav-item nav-item-dm" id="nav-ceo" type="button">
|
|
98
|
+
<span class="avatar-wrap">
|
|
99
|
+
<span class="avatar" id="ceo-avatar">?</span>
|
|
100
|
+
<span class="status-dot" id="ceo-status-dot"></span>
|
|
101
|
+
</span>
|
|
102
|
+
<span class="nav-item-label" id="ceo-nav-name">your AI CEO</span>
|
|
103
|
+
</button>
|
|
104
|
+
</nav>
|
|
105
|
+
</aside>
|
|
106
|
+
|
|
107
|
+
<main id="main-pane">
|
|
108
|
+
<header id="main-header">
|
|
109
|
+
<div id="header-title-group">
|
|
110
|
+
<span id="channel-title"></span>
|
|
111
|
+
<span id="channel-subtitle"></span>
|
|
112
|
+
</div>
|
|
113
|
+
</header>
|
|
114
|
+
|
|
115
|
+
<section id="channel-general" hidden>
|
|
116
|
+
<div class="empty-state">
|
|
117
|
+
<p>This is the very beginning of <strong>#general</strong>.</p>
|
|
118
|
+
</div>
|
|
119
|
+
</section>
|
|
120
|
+
|
|
121
|
+
<section id="channel-ceo" hidden>
|
|
122
|
+
<div class="banner">
|
|
123
|
+
Tool actions (file edits, shell commands) are auto-approved by Claude's own safety classifier —
|
|
124
|
+
not reviewed by you turn-by-turn.
|
|
125
|
+
</div>
|
|
126
|
+
<div id="messages"></div>
|
|
127
|
+
<div id="typing-indicator" hidden>
|
|
128
|
+
<span class="avatar" id="typing-avatar">?</span>
|
|
129
|
+
<span class="typing-dots"><i></i><i></i><i></i></span>
|
|
130
|
+
</div>
|
|
131
|
+
<div id="chat-options">
|
|
132
|
+
<select id="chat-model-select" title="Model for this message"></select>
|
|
133
|
+
<select id="chat-effort-select" title="Effort for this message"></select>
|
|
134
|
+
</div>
|
|
135
|
+
<form id="chat-form">
|
|
136
|
+
<input id="chat-input" type="text" placeholder="Message your CEO…" autocomplete="off" />
|
|
137
|
+
<button type="submit" id="chat-send">Send</button>
|
|
138
|
+
</form>
|
|
139
|
+
</section>
|
|
140
|
+
</main>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div class="page" id="page-profile" hidden>
|
|
144
|
+
<header class="page-header"><h1>Company Profile</h1></header>
|
|
145
|
+
<div class="page-body">
|
|
146
|
+
<form id="profile-form">
|
|
147
|
+
<label for="profile-company">Company name</label>
|
|
148
|
+
<input id="profile-company" type="text" maxlength="2000" required />
|
|
149
|
+
<label for="profile-mission">Mission / description</label>
|
|
150
|
+
<textarea id="profile-mission" maxlength="2000" required></textarea>
|
|
151
|
+
<label for="profile-ceo-name">CEO name</label>
|
|
152
|
+
<input id="profile-ceo-name" type="text" maxlength="2000" />
|
|
153
|
+
<label for="profile-ceo-personality">CEO personality / tone</label>
|
|
154
|
+
<input id="profile-ceo-personality" type="text" maxlength="2000" />
|
|
155
|
+
<label for="profile-default-model">Default model</label>
|
|
156
|
+
<select id="profile-default-model"></select>
|
|
157
|
+
<label for="profile-default-effort">Default effort</label>
|
|
158
|
+
<select id="profile-default-effort"></select>
|
|
159
|
+
<div class="profile-form-buttons">
|
|
160
|
+
<button type="submit" id="profile-save">Save</button>
|
|
161
|
+
<span id="profile-saved-hint" hidden>Saved</span>
|
|
162
|
+
</div>
|
|
163
|
+
</form>
|
|
23
164
|
</div>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div class="page" id="page-settings" hidden>
|
|
168
|
+
<header class="page-header"><h1>Settings</h1></header>
|
|
169
|
+
<div class="page-body">
|
|
170
|
+
<div class="settings-row">
|
|
171
|
+
<span class="settings-label">Account</span>
|
|
172
|
+
<span id="settings-account" class="settings-value"></span>
|
|
173
|
+
</div>
|
|
174
|
+
<div class="settings-row">
|
|
175
|
+
<span class="settings-label">Log file</span>
|
|
176
|
+
<code id="settings-log-path" class="settings-value"></code>
|
|
177
|
+
</div>
|
|
34
178
|
</div>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
</form>
|
|
40
|
-
</section>
|
|
41
|
-
</main>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
42
183
|
<script src="/app.js"></script>
|
|
43
184
|
</body>
|
|
44
185
|
</html>
|