bloby-bot 0.21.10 → 0.21.12

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.
@@ -1 +1 @@
1
- import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-p8qAfNCo.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
1
+ import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-8izT4vax.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
@@ -0,0 +1 @@
1
+ import{i as e}from"./bloby-8izT4vax.js";export{e as Mermaid};
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content" />
6
6
  <title>Bloby Chat</title>
7
- <script type="module" crossorigin src="/bloby/assets/bloby-p8qAfNCo.js"></script>
7
+ <script type="module" crossorigin src="/bloby/assets/bloby-8izT4vax.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/bloby/assets/jsx-runtime-C0W9Wf2W.js">
9
9
  <link rel="modulepreload" crossorigin href="/bloby/assets/globals-VdwDxdso.js">
10
10
  <link rel="stylesheet" crossorigin href="/bloby/assets/globals-b7xkhPEo.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bloby-bot",
3
- "version": "0.21.10",
3
+ "version": "0.21.12",
4
4
  "releaseNotes": [
5
5
  "1. react router implemented",
6
6
  "2. new workspace design",
@@ -441,6 +441,8 @@ export default function InputBar({ onSend, onStop, streaming, whisperEnabled, on
441
441
  <Camera className="h-4 w-4" />
442
442
  </button>
443
443
  </div>
444
+ {/* Stop button removed — v2 long-lived conversation model lets users always chat.
445
+ Users can say "stop" or "cancel" naturally if needed.
444
446
  {streaming && !hasText ? (
445
447
  <button
446
448
  onClick={onStop}
@@ -448,7 +450,8 @@ export default function InputBar({ onSend, onStop, streaming, whisperEnabled, on
448
450
  >
449
451
  <Square className="h-4 w-4" />
450
452
  </button>
451
- ) : hasText ? (
453
+ ) : */}
454
+ {hasText ? (
452
455
  <button
453
456
  onClick={handleSend}
454
457
  className="flex items-center justify-center h-12 w-12 shrink-0 rounded-full bg-white text-gray-900 transition-colors hover:bg-gray-100"
@@ -129,6 +129,8 @@ export function useBlobyChat(ws: WsClient | null, triggerReload?: number, enable
129
129
  useEffect(() => {
130
130
  if (!ws) return;
131
131
 
132
+ console.log('[blobyChat] ──── WS HANDLERS REGISTERED ────');
133
+
132
134
  const unsubs = [
133
135
  ws.on('bot:typing', () => {
134
136
  console.log('[blobyChat] bot:typing → streaming=true');
@@ -145,6 +147,25 @@ export function useBlobyChat(ws: WsClient | null, triggerReload?: number, enable
145
147
  });
146
148
  }),
147
149
  ws.on('bot:tool', (data: { name: string; status?: string }) => {
150
+ // Commit current stream as a bubble when agent pauses for tool use
151
+ // This creates separate message bubbles and shows dots during work
152
+ const content = streamBufferRef.current;
153
+ if (content) {
154
+ console.log(`[blobyChat] bot:tool (${data.name}) — committing ${content.length} chars as bubble`);
155
+ committedTextLength.current += content.length;
156
+ setMessages((msgs) => [
157
+ ...msgs,
158
+ {
159
+ id: 'tool-' + Date.now(),
160
+ role: 'assistant' as const,
161
+ content,
162
+ timestamp: new Date().toISOString(),
163
+ },
164
+ ]);
165
+ setStreamBuffer('');
166
+ streamBufferRef.current = '';
167
+ // streaming stays true → empty buffer = typing dots
168
+ }
148
169
  setTools((prev) => {
149
170
  const existing = prev.find((t) => t.name === data.name && t.status === 'running');
150
171
  if (existing) return prev;
@@ -80,7 +80,7 @@ const SW_JS = `// Service worker — app-shell caching + push notifications
80
80
  // JS/CSS modules → stale-while-revalidate
81
81
  // API, WebSocket, Vite internals → network-only (no cache)
82
82
 
83
- var CACHE = 'bloby-v7';
83
+ var CACHE = 'bloby-v9';
84
84
  var HASHED_RE = new RegExp('/assets/.+-[a-zA-Z0-9]{6,}[.](js|css)$');
85
85
 
86
86
  // Precache the HTML shell on install so the cache is never empty.
@@ -19,6 +19,10 @@ Your memory files (MYSELF.md, MYHUMAN.md, MEMORY.md) are provided below in this
19
19
 
20
20
  If recent conversation history is provided below, use it to maintain continuity. Respond naturally as if you remember the conversation.
21
21
 
22
+ If your human is talking something that is not on your context, don't act surprised, don't rush conclusions, use the tool grep on your memory files, especially on the memory/ folder
23
+
24
+ If not there and your human explicity say you should remember something, as a last resort, check the whole history of conversation at ~/.bloby/memory.db (This should be the last option tho)
25
+
22
26
  You should still WRITE to all memory files whenever you learn something worth remembering. Your writes update the actual files on disk and will appear in your context on the next turn.
23
27
 
24
28
  ---
@@ -1 +0,0 @@
1
- import{i as e}from"./bloby-p8qAfNCo.js";export{e as Mermaid};