jivamai 0.2.33-dev.f1a0ab3 → 0.2.34-dev.828ae62

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.
@@ -0,0 +1,343 @@
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
+ <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' http://localhost:*;" />
7
+ <meta name="theme-color" content="#8b5cf6" />
8
+ <title>Jivam — Not Running</title>
9
+ <style>
10
+ * { margin: 0; padding: 0; box-sizing: border-box; }
11
+
12
+ :root {
13
+ --bg: #0A0A0B;
14
+ --card: rgba(28, 28, 33, 0.85);
15
+ --card-border: rgba(139, 92, 246, 0.2);
16
+ --text: #F5F3FF;
17
+ --text-muted: #9CA3AF;
18
+ --text-subtle: #6B7280;
19
+ --accent: #A78BFA;
20
+ --accent-blue: #60A5FA;
21
+ }
22
+
23
+ html, body {
24
+ height: 100%;
25
+ }
26
+
27
+ body {
28
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
29
+ background: var(--bg);
30
+ color: var(--text);
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ padding: 24px;
35
+ overflow-x: hidden;
36
+ }
37
+
38
+ /* Aurora background — same visual language as the main app's .aurora-bg */
39
+ .aurora {
40
+ position: fixed;
41
+ inset: 0;
42
+ pointer-events: none;
43
+ z-index: 0;
44
+ overflow: hidden;
45
+ }
46
+ .aurora::before,
47
+ .aurora::after {
48
+ content: '';
49
+ position: absolute;
50
+ border-radius: 50%;
51
+ animation: aurora-drift 22s ease-in-out infinite;
52
+ }
53
+ .aurora::before {
54
+ width: 80%;
55
+ height: 80%;
56
+ top: -20%;
57
+ left: -10%;
58
+ background: radial-gradient(ellipse, rgba(139, 92, 246, 0.14) 0%, transparent 70%);
59
+ }
60
+ .aurora::after {
61
+ width: 60%;
62
+ height: 60%;
63
+ bottom: -10%;
64
+ right: -10%;
65
+ background: radial-gradient(ellipse, rgba(59, 130, 246, 0.1) 0%, transparent 70%);
66
+ animation-duration: 27s;
67
+ animation-direction: reverse;
68
+ }
69
+ @keyframes aurora-drift {
70
+ 0%, 100% { transform: translate(0, 0) scale(1); }
71
+ 33% { transform: translate(40px, -30px) scale(1.05); }
72
+ 66% { transform: translate(-30px, 20px) scale(0.95); }
73
+ }
74
+
75
+ .card {
76
+ position: relative;
77
+ z-index: 1;
78
+ width: 100%;
79
+ max-width: 520px;
80
+ max-height: 90vh;
81
+ overflow-y: auto;
82
+ background: var(--card);
83
+ border: 1px solid var(--card-border);
84
+ border-radius: 20px;
85
+ padding: 36px;
86
+ text-align: center;
87
+ box-shadow: 0 4px 24px rgba(139, 92, 246, 0.15);
88
+ backdrop-filter: blur(12px);
89
+ }
90
+
91
+ .logo-badge {
92
+ width: 72px;
93
+ height: 72px;
94
+ margin: 0 auto 20px;
95
+ border-radius: 18px;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(59, 130, 246, 0.15));
100
+ }
101
+ .logo-badge img {
102
+ width: 44px;
103
+ height: 44px;
104
+ object-fit: contain;
105
+ }
106
+
107
+ h1 {
108
+ font-size: 22px;
109
+ font-weight: 600;
110
+ margin-bottom: 8px;
111
+ background: linear-gradient(135deg, var(--accent), var(--accent-blue));
112
+ -webkit-background-clip: text;
113
+ background-clip: text;
114
+ -webkit-text-fill-color: transparent;
115
+ }
116
+
117
+ .subtitle {
118
+ font-size: 14px;
119
+ color: var(--text-muted);
120
+ line-height: 1.6;
121
+ margin-bottom: 24px;
122
+ max-width: 400px;
123
+ margin-left: auto;
124
+ margin-right: auto;
125
+ }
126
+
127
+ .subtitle code {
128
+ background: rgba(139, 92, 246, 0.15);
129
+ color: var(--accent);
130
+ padding: 1px 6px;
131
+ border-radius: 4px;
132
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
133
+ font-size: 13px;
134
+ }
135
+
136
+ /* ── Terminal mockups ──────────────────────────────────────────── */
137
+ .terminal {
138
+ text-align: left;
139
+ border-radius: 10px;
140
+ overflow: hidden;
141
+ margin: 0 auto 22px;
142
+ max-width: 400px;
143
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
144
+ font-size: 13px;
145
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
146
+ }
147
+
148
+ /* macOS Terminal.app chrome */
149
+ .terminal.mac .titlebar {
150
+ background: #3a3a3d;
151
+ padding: 9px 12px;
152
+ display: flex;
153
+ align-items: center;
154
+ gap: 8px;
155
+ }
156
+ .terminal.mac .dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; }
157
+ .terminal.mac .dot.red { background: #ff5f57; }
158
+ .terminal.mac .dot.yellow { background: #febc2e; }
159
+ .terminal.mac .dot.green { background: #28c840; }
160
+ .terminal.mac .titlebar .title {
161
+ flex: 1;
162
+ text-align: center;
163
+ color: rgba(255, 255, 255, 0.55);
164
+ font-size: 12px;
165
+ font-family: -apple-system, sans-serif;
166
+ margin-right: 43px; /* balance the dots on the left */
167
+ }
168
+ .terminal.mac .body { background: #1e1e1e; padding: 16px; }
169
+
170
+ /* Windows Terminal / PowerShell chrome */
171
+ .terminal.win .titlebar {
172
+ background: #2b2b2b;
173
+ padding: 8px 6px 8px 12px;
174
+ display: flex;
175
+ align-items: center;
176
+ gap: 8px;
177
+ }
178
+ .terminal.win .titlebar .icon {
179
+ width: 14px;
180
+ height: 14px;
181
+ border-radius: 3px;
182
+ background: linear-gradient(135deg, #5391fe, #1e3a7b);
183
+ flex-shrink: 0;
184
+ }
185
+ .terminal.win .titlebar .title {
186
+ flex: 1;
187
+ color: rgba(255, 255, 255, 0.7);
188
+ font-size: 12px;
189
+ font-family: 'Segoe UI', system-ui, sans-serif;
190
+ }
191
+ .terminal.win .titlebar .win-btn {
192
+ width: 30px;
193
+ height: 24px;
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ color: rgba(255, 255, 255, 0.55);
198
+ font-size: 10px;
199
+ border-radius: 3px;
200
+ }
201
+ .terminal.win .titlebar .win-btn.close:hover { background: #e81123; color: #fff; }
202
+ .terminal.win .body { background: #012456; padding: 16px; }
203
+
204
+ .terminal .line {
205
+ color: rgba(255, 255, 255, 0.85);
206
+ line-height: 1.7;
207
+ white-space: pre;
208
+ }
209
+ .terminal .prompt { color: #8b8b8b; }
210
+ .terminal.win .prompt { color: #7fb2f0; }
211
+ .terminal .cmd { color: #ffffff; font-weight: 600; }
212
+ .terminal .cursor {
213
+ display: inline-block;
214
+ width: 7px;
215
+ height: 14px;
216
+ background: rgba(255, 255, 255, 0.75);
217
+ vertical-align: -2px;
218
+ animation: blink 1.1s step-end infinite;
219
+ }
220
+ @keyframes blink { 50% { opacity: 0; } }
221
+
222
+ /* ── Status / retry ────────────────────────────────────────────── */
223
+ .status {
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ gap: 8px;
228
+ font-size: 12px;
229
+ color: var(--text-subtle);
230
+ margin-bottom: 18px;
231
+ }
232
+ .dots { display: inline-flex; gap: 4px; }
233
+ .dots span {
234
+ width: 5px;
235
+ height: 5px;
236
+ border-radius: 50%;
237
+ background: var(--accent);
238
+ animation: dotBounce 1.4s ease-in-out infinite;
239
+ }
240
+ .dots span:nth-child(2) { animation-delay: 0.2s; }
241
+ .dots span:nth-child(3) { animation-delay: 0.4s; }
242
+ @keyframes dotBounce {
243
+ 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
244
+ 30% { transform: translateY(-4px); opacity: 1; }
245
+ }
246
+
247
+ button {
248
+ font-family: inherit;
249
+ font-size: 14px;
250
+ font-weight: 500;
251
+ color: #fff;
252
+ background: var(--accent);
253
+ border: none;
254
+ border-radius: 12px;
255
+ padding: 10px 22px;
256
+ cursor: pointer;
257
+ transition: opacity 0.15s ease;
258
+ }
259
+ button:hover { opacity: 0.88; }
260
+ button:active { opacity: 0.75; }
261
+ </style>
262
+ </head>
263
+ <body>
264
+ <div class="aurora"></div>
265
+
266
+ <div class="card">
267
+ <div class="logo-badge">
268
+ <img src="data:image/png;base64,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" alt="Jivam" />
269
+ </div>
270
+
271
+ <h1>Jivam isn't running</h1>
272
+ <p class="subtitle" id="subtitle">
273
+ The Jivam background service isn't running. Open Terminal and run the command below to start it.
274
+ </p>
275
+
276
+ <div class="terminal mac" id="terminal-mac">
277
+ <div class="titlebar">
278
+ <span class="dot red"></span><span class="dot yellow"></span><span class="dot green"></span>
279
+ <span class="title">Terminal — zsh — 80×24</span>
280
+ </div>
281
+ <div class="body">
282
+ <div class="line"><span class="prompt">you@mac ~ %</span> <span class="cmd">jivam</span></div>
283
+ <div class="line"><span class="prompt">you@mac ~ %</span> <span class="cursor"></span></div>
284
+ </div>
285
+ </div>
286
+
287
+ <div class="terminal win" id="terminal-win" style="display:none">
288
+ <div class="titlebar">
289
+ <span class="icon"></span>
290
+ <span class="title">Windows PowerShell</span>
291
+ <span class="win-btn">─</span><span class="win-btn">▢</span><span class="win-btn close">✕</span>
292
+ </div>
293
+ <div class="body">
294
+ <div class="line"><span class="prompt">PS C:\Users\you&gt;</span> <span class="cmd">jivam</span></div>
295
+ <div class="line"><span class="prompt">PS C:\Users\you&gt;</span> <span class="cursor"></span></div>
296
+ </div>
297
+ </div>
298
+
299
+ <div class="status">
300
+ <span class="dots"><span></span><span></span><span></span></span>
301
+ <span id="status-text">Checking automatically...</span>
302
+ </div>
303
+
304
+ <button id="retry-btn">Try Again</button>
305
+ </div>
306
+
307
+ <script>
308
+ (function () {
309
+ var ua = navigator.userAgent || ''
310
+ var plat = navigator.platform || ''
311
+ var isWindows = /Win/.test(plat) || /Windows/.test(ua)
312
+
313
+ if (isWindows) {
314
+ document.getElementById('terminal-mac').style.display = 'none'
315
+ document.getElementById('terminal-win').style.display = ''
316
+ document.getElementById('subtitle').textContent =
317
+ 'The Jivam background service isn\'t running. Open PowerShell and run the command below to start it.'
318
+ }
319
+
320
+ var checking = false
321
+ function checkServer() {
322
+ if (checking) return
323
+ checking = true
324
+ fetch('/api/version', { cache: 'no-store' })
325
+ .then(function (res) {
326
+ if (res.ok) {
327
+ window.location.href = '/'
328
+ } else {
329
+ checking = false
330
+ }
331
+ })
332
+ .catch(function () { checking = false })
333
+ }
334
+
335
+ setInterval(checkServer, 3000)
336
+ document.getElementById('retry-btn').addEventListener('click', function () {
337
+ document.getElementById('status-text').textContent = 'Checking...'
338
+ window.location.reload()
339
+ })
340
+ })()
341
+ </script>
342
+ </body>
343
+ </html>
@@ -0,0 +1,44 @@
1
+ // Minimal offline-fallback service worker. This does NOT cache the app
2
+ // shell (index.html / hashed JS-CSS bundles) or any API responses — only
3
+ // enough to show a friendly "Jivam isn't running" page when the background
4
+ // service (which serves this whole origin) is unreachable, e.g. right after
5
+ // a reboot before `jivam` has started, or if it crashed. Caching the app
6
+ // bundle itself would risk serving stale code after an update, which is
7
+ // exactly the class of bug Jivam's own auto-updater was built to avoid —
8
+ // see CLAUDE.md's "updater is real now" note. Keep this worker scoped to
9
+ // just the offline fallback; don't grow it into a general asset cache.
10
+ // offline.html inlines its own logo as a data URI, so it's the only URL
11
+ // that needs precaching — no separate image request for the SW's minimal
12
+ // non-navigation-aware fetch handler (below) to worry about missing.
13
+ const CACHE_NAME = 'jivam-offline-v2'
14
+ const OFFLINE_URL = '/offline.html'
15
+ const PRECACHE_URLS = [OFFLINE_URL]
16
+
17
+ self.addEventListener('install', (event) => {
18
+ event.waitUntil(
19
+ caches.open(CACHE_NAME)
20
+ .then((cache) => cache.addAll(PRECACHE_URLS))
21
+ .then(() => self.skipWaiting())
22
+ )
23
+ })
24
+
25
+ self.addEventListener('activate', (event) => {
26
+ event.waitUntil(
27
+ caches.keys()
28
+ .then((keys) => Promise.all(keys.filter((k) => k !== CACHE_NAME).map((k) => caches.delete(k))))
29
+ .then(() => self.clients.claim())
30
+ )
31
+ })
32
+
33
+ self.addEventListener('fetch', (event) => {
34
+ // Only intercept top-level page navigations — never API calls, the WS
35
+ // upgrade, or hashed asset requests. A failed asset/API request should
36
+ // just fail normally and let the app's own UI handle it; only a failed
37
+ // *navigation* (the background service isn't reachable at all) gets the
38
+ // offline fallback page.
39
+ if (event.request.mode !== 'navigate') return
40
+
41
+ event.respondWith(
42
+ fetch(event.request).catch(() => caches.match(OFFLINE_URL))
43
+ )
44
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jivamai",
3
- "version": "0.2.33-dev.f1a0ab3",
3
+ "version": "0.2.34-dev.828ae62",
4
4
  "description": "Jivam - Desktop UI for the Jiva autonomous AI agent",
5
5
  "main": "dist-server/index.js",
6
6
  "bin": {