@symerian/symi 2.0.24 → 2.0.25

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,5 +1,5 @@
1
1
  {
2
- "version": "2.0.24",
3
- "commit": "3506deea958ea98585cbb23f198a5884d86218df",
4
- "builtAt": "2026-03-26T17:23:43.804Z"
2
+ "version": "2.0.25",
3
+ "commit": "26ef4a7823d850a017ab2423616523b7193d0600",
4
+ "builtAt": "2026-03-26T18:38:18.756Z"
5
5
  }
@@ -1 +1 @@
1
- 267121486443719ab1f6ce80a565cacd76f2855905b384fb19a43d778ad2bb69
1
+ 8694344b47487aee900dfbebdf8b01479105d96f25b88bba64f929cb19bb196c
@@ -284,25 +284,7 @@ function renderHistory(messages) {
284
284
  continue;
285
285
  }
286
286
 
287
- // Route heartbeat acknowledgments (e.g. SYMIPULSE_OK) to Reasoning Panel
288
- if (m.role === "assistant") {
289
- const blocks = Array.isArray(m.content) ? m.content : [];
290
- const ackText = blocks
291
- .filter((b) => b.type === "text")
292
- .map((b) => b.text ?? "")
293
- .join("")
294
- .trim();
295
- if (/^[A-Z_]+_OK$/i.test(ackText)) {
296
- for (const b of blocks) {
297
- if (typeof window.appendToReasoningPanel === "function") {
298
- window.appendToReasoningPanel(b);
299
- }
300
- }
301
- continue;
302
- }
303
- }
304
-
305
- // Route NO_REPLY assistant messages to Reasoning Panel
287
+ // Route heartbeat/symipulse and NO_REPLY assistant messages to Reasoning Panel
306
288
  if (m.role === "assistant") {
307
289
  const blocks = Array.isArray(m.content) ? m.content : [];
308
290
  const txt = blocks
@@ -310,9 +292,14 @@ function renderHistory(messages) {
310
292
  .map((b) => b.text ?? "")
311
293
  .join("")
312
294
  .trim();
313
- if (/^\s*NO_REPLY\s*$/i.test(txt)) {
295
+ if (
296
+ /SYMIPULSE|heartbeatCount|heartbeat-state\.json/i.test(txt) ||
297
+ /^[A-Z_]+_OK$/i.test(txt) ||
298
+ /^\s*NO_REPLY\s*$/i.test(txt) ||
299
+ /^⚠️.*(heartbeat|Agent failed before reply)/i.test(txt)
300
+ ) {
314
301
  if (typeof window.appendToReasoningPanel === "function") {
315
- window.appendToReasoningPanel({ type: "text", text: "[NO_REPLY — silent response]" });
302
+ window.appendToReasoningPanel({ type: "text", text: "[Symipulse]" });
316
303
  }
317
304
  continue;
318
305
  }
@@ -439,24 +426,7 @@ async function loadMoreHistory() {
439
426
  if (m.role === "system") {
440
427
  continue;
441
428
  }
442
- if (m.role === "assistant") {
443
- const blocks = Array.isArray(m.content) ? m.content : [];
444
- const ackText = blocks
445
- .filter((b) => b.type === "text")
446
- .map((b) => b.text ?? "")
447
- .join("")
448
- .trim();
449
- if (/^[A-Z_]+_OK$/i.test(ackText)) {
450
- for (const b of blocks) {
451
- if (typeof window.appendToReasoningPanel === "function") {
452
- window.appendToReasoningPanel(b);
453
- }
454
- }
455
- continue;
456
- }
457
- }
458
-
459
- // Route NO_REPLY assistant messages to Reasoning Panel
429
+ // Route heartbeat/symipulse and NO_REPLY assistant messages to Reasoning Panel
460
430
  if (m.role === "assistant") {
461
431
  const blocks = Array.isArray(m.content) ? m.content : [];
462
432
  const txt = blocks
@@ -464,9 +434,14 @@ async function loadMoreHistory() {
464
434
  .map((b) => b.text ?? "")
465
435
  .join("")
466
436
  .trim();
467
- if (/^\s*NO_REPLY\s*$/i.test(txt)) {
437
+ if (
438
+ /SYMIPULSE|heartbeatCount|heartbeat-state\.json/i.test(txt) ||
439
+ /^[A-Z_]+_OK$/i.test(txt) ||
440
+ /^\s*NO_REPLY\s*$/i.test(txt) ||
441
+ /^⚠️.*(heartbeat|Agent failed before reply)/i.test(txt)
442
+ ) {
468
443
  if (typeof window.appendToReasoningPanel === "function") {
469
- window.appendToReasoningPanel({ type: "text", text: "[NO_REPLY — silent response]" });
444
+ window.appendToReasoningPanel({ type: "text", text: "[Symipulse]" });
470
445
  }
471
446
  continue;
472
447
  }
@@ -739,10 +739,16 @@ window.renderMessage = function (message) {
739
739
  .trim()
740
740
  : extractText(content).trim();
741
741
 
742
- // NO_REPLY assistant messages
743
- if (role === "assistant" && /^\s*NO_REPLY\s*$/i.test(_msgText)) {
742
+ // Heartbeat/symipulse and NO_REPLY assistant messages
743
+ if (
744
+ role === "assistant" &&
745
+ (/SYMIPULSE|heartbeatCount|heartbeat-state\.json/i.test(_msgText) ||
746
+ /^[A-Z_]+_OK$/i.test(_msgText) ||
747
+ /^\s*NO_REPLY\s*$/i.test(_msgText) ||
748
+ /^⚠️.*(heartbeat|Agent failed before reply)/i.test(_msgText))
749
+ ) {
744
750
  if (typeof window.appendToReasoningPanel === "function") {
745
- window.appendToReasoningPanel({ type: "text", text: "[NO_REPLY — silent response]" });
751
+ window.appendToReasoningPanel({ type: "text", text: "[Symipulse]" });
746
752
  }
747
753
  return null;
748
754
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "2.0.24",
3
+ "version": "2.0.25",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",