roboto-js 1.9.14 → 1.9.15

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/.last-build CHANGED
@@ -1 +1 @@
1
- 2026-02-17T19:35:14.545Z
1
+ 2026-03-18T10:35:27.400Z
@@ -48,6 +48,8 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
48
48
  _ref$withCredentials = _ref.withCredentials,
49
49
  withCredentials = _ref$withCredentials === void 0 ? true : _ref$withCredentials;
50
50
  _classCallCheck(this, RbtApi);
51
+ //console.log('[RbtApi] constructor received:', { baseUrl, accesskey, authtoken, apikey, withCredentials });
52
+
51
53
  this.websocketClient = null;
52
54
 
53
55
  // Object cache for sharing instances across multiple load() calls
@@ -105,7 +107,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
105
107
  if (apikey) {
106
108
  this.apikey = apikey;
107
109
  this.axios.defaults.headers.common['apikey'] = this.apikey;
108
- // ADD THIS LINE
110
+ //console.log('[RbtApi] Set apikey header:', this.axios.defaults.headers.common['apikey']); // ADD THIS LINE
109
111
  }
110
112
  this.initApiKey(apikey);
111
113
  }
@@ -170,6 +172,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
170
172
  if (token) {
171
173
  this.authtoken = token;
172
174
  this.axios.defaults.headers.common['authtoken'] = token;
175
+ //console.log('[RbtApi] Loaded authtoken from storage adaptor');
173
176
  }
174
177
  _context.next = 32;
175
178
  break;
@@ -189,6 +192,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
189
192
  id: parsed.id
190
193
  }, this.axios);
191
194
  this.currentUser.setData(parsed);
195
+ //console.log('[RbtApi] Loaded user from storage adaptor');
192
196
  }
193
197
  }
194
198
  _context.next = 41;
@@ -217,6 +221,8 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
217
221
  var baseUrl = this.axios.defaults.baseURL;
218
222
  var wsProtocol = baseUrl.startsWith('https') ? 'wss://' : 'ws://';
219
223
  var wsUrl = baseUrl.replace(/^https?:\/\//, wsProtocol);
224
+
225
+ //console.log('[RbtApi] Creating new WebSocket connection to:', wsUrl + '/realtime');
220
226
  this.websocketClient = new WebSocket("".concat(wsUrl, "/realtime"));
221
227
  this._setupWebSocketHandlers(this.websocketClient);
222
228
  return this.websocketClient;
@@ -226,6 +232,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
226
232
  value: function _setupWebSocketHandlers(ws) {
227
233
  var _this = this;
228
234
  ws.onopen = function () {
235
+ //console.log('[RbtApi] WebSocket connected.');
229
236
  _this._wsReconnectAttempts = 0;
230
237
  _this._wsConnected = true;
231
238
 
@@ -254,6 +261,8 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
254
261
  // Attempt reconnection with exponential backoff
255
262
  if (!_this._wsManualClose && _this._wsReconnectAttempts < 5) {
256
263
  var delay = Math.min(1000 * Math.pow(2, _this._wsReconnectAttempts), 30000);
264
+ //console.log(`[RbtApi] Attempting reconnection in ${delay}ms (attempt ${this._wsReconnectAttempts + 1}/5)`);
265
+
257
266
  setTimeout(function () {
258
267
  _this._wsReconnectAttempts++;
259
268
  _this.websocketClient = null; // Clear the old connection
@@ -909,6 +918,9 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
909
918
  break;
910
919
  }
911
920
  _this4.currentOrganization = org; // Already an RbtObject
921
+ //console.log('[RbtApi] Current organization loaded:', org.get('name'));
922
+
923
+ // Cache in storage if available
912
924
  if (!_this4.localStorageAdaptor) {
913
925
  _context14.next = 24;
914
926
  break;
@@ -1099,18 +1111,22 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1099
1111
  }
1100
1112
  throw new Error('Failed to load user object');
1101
1113
  case 17:
1114
+ //console.log('[RbtApi] User loaded:', user.id);
1102
1115
  // Update user's organizations array
1103
1116
  userOrgs = user.get('organizations') || [];
1104
1117
  orgExists = userOrgs.some(function (o) {
1105
1118
  return (o === null || o === void 0 ? void 0 : o.id) === orgId;
1106
1119
  });
1107
1120
  if (!orgExists) {
1121
+ //console.log('[RbtApi] Adding organization to user organizations array');
1108
1122
  userOrgs.unshift({
1109
1123
  id: orgId,
1110
1124
  roles: [role]
1111
1125
  });
1112
1126
  user.set('organizations', userOrgs);
1113
- } else {}
1127
+ } else {
1128
+ //console.log('[RbtApi] Organization already in user organizations array');
1129
+ }
1114
1130
 
1115
1131
  // Set as current organization preference - handle both nested path formats
1116
1132
  modData = user.get('mod') || {};
@@ -1118,9 +1134,12 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1118
1134
  user.set('mod', modData);
1119
1135
 
1120
1136
  // Save user record
1137
+ //console.log('[RbtApi] Saving user with organization:', orgId);
1121
1138
  _context17.next = 25;
1122
1139
  return user.save();
1123
1140
  case 25:
1141
+ //console.log('[RbtApi] User saved successfully');
1142
+
1124
1143
  // Clear cached organization to force reload
1125
1144
  this.currentOrganization = null;
1126
1145
 
@@ -1740,11 +1759,13 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1740
1759
  // Only log cache hits once per object to reduce spam
1741
1760
  hitLogKey = "hit:".concat(_cacheKey);
1742
1761
  if (!this._loggedCacheEvents.has(hitLogKey)) {
1762
+ //console.log('[AgentProviderSync] 🎯 roboto.load cache HIT:', { type, id, hasRealtime: !!cached._realtime, requestedRealtime: !!params.enableRealtime });
1743
1763
  this._loggedCacheEvents.add(hitLogKey);
1744
1764
  }
1745
1765
 
1746
1766
  // If realtime is requested but cached object doesn't have it, upgrade it
1747
1767
  if (params.enableRealtime && !cached._realtime) {
1768
+ //console.log('[AgentProviderSync] 🔄 Upgrading cached object to realtime:', { type, id });
1748
1769
  cached._initRealtime();
1749
1770
  }
1750
1771
  cachedObjects.push(cached);
@@ -1767,6 +1788,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1767
1788
  // Only log bulk cache miss once
1768
1789
  bulkMissLogKey = "bulk-miss:".concat(type, ":").concat(missingIds.join(','));
1769
1790
  if (!this._loggedCacheEvents.has(bulkMissLogKey)) {
1791
+ //console.log('[AgentProviderSync] 📦 roboto.load cache MISS, loading:', { type, ids: missingIds });
1770
1792
  this._loggedCacheEvents.add(bulkMissLogKey);
1771
1793
  }
1772
1794
 
@@ -1790,6 +1812,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1790
1812
  // Only log cache set once per object to reduce spam
1791
1813
  setLogKey = "set:".concat(cacheKey);
1792
1814
  if (!this._loggedCacheEvents.has(setLogKey)) {
1815
+ //console.log('[AgentProviderSync] 💾 roboto.load cached object:', { type, id: obj.id });
1793
1816
  this._loggedCacheEvents.add(setLogKey);
1794
1817
  }
1795
1818
  }
@@ -1837,6 +1860,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1837
1860
 
1838
1861
  // If realtime is requested but cached object doesn't have it, upgrade it
1839
1862
  if (params.enableRealtime && !_cached._realtime) {
1863
+ //console.log('[AgentProviderSync] 🔄 Upgrading cached object to realtime:', { type, id: ids });
1840
1864
  _cached._initRealtime();
1841
1865
  }
1842
1866
  return _context28.abrupt("return", _cached);
@@ -1855,6 +1879,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1855
1879
  // Only log cache miss once per object to reduce spam
1856
1880
  missLogKey = "miss:".concat(_cacheKey3);
1857
1881
  if (!this._loggedCacheEvents.has(missLogKey)) {
1882
+ //console.log('[AgentProviderSync] 📦 roboto.load cache MISS, loading:', { type, id: ids });
1858
1883
  this._loggedCacheEvents.add(missLogKey);
1859
1884
  }
1860
1885
 
@@ -1882,6 +1907,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1882
1907
  // Only log cache set once per object to reduce spam
1883
1908
  _setLogKey = "set:".concat(_cacheKey3);
1884
1909
  if (!_this9._loggedCacheEvents.has(_setLogKey)) {
1910
+ //console.log('[AgentProviderSync] 💾 roboto.load cached object:', { type, id: ids });
1885
1911
  _this9._loggedCacheEvents.add(_setLogKey);
1886
1912
  }
1887
1913
  }
@@ -1940,6 +1966,8 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1940
1966
  this._loggedCacheEvents["delete"]("hit:".concat(cacheKey));
1941
1967
  this._loggedCacheEvents["delete"]("miss:".concat(cacheKey));
1942
1968
  this._loggedCacheEvents["delete"]("set:".concat(cacheKey));
1969
+
1970
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache specific object:', { type, id, removed });
1943
1971
  } else if (type) {
1944
1972
  // Clear all objects of a specific type
1945
1973
  var removedCount = 0;
@@ -1970,6 +1998,8 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1970
1998
  this._loggedCacheEvents["delete"](logKey);
1971
1999
  }
1972
2000
  }
2001
+
2002
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache by type:', { type, removedCount });
1973
2003
  } catch (err) {
1974
2004
  _iterator7.e(err);
1975
2005
  } finally {
@@ -1981,6 +2011,7 @@ var RbtApi = exports["default"] = /*#__PURE__*/function () {
1981
2011
  this._objectCache.clear();
1982
2012
  this._loggedCacheEvents.clear();
1983
2013
  this._pendingLoads.clear();
2014
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache all objects:', { clearedCount: size });
1984
2015
  }
1985
2016
  }
1986
2017
 
@@ -1053,7 +1053,9 @@ var RbtObject = exports["default"] = /*#__PURE__*/function () {
1053
1053
  userId: msg.userId || msg.delta.userId || null
1054
1054
  });
1055
1055
  _this3._trigger('change', changeData);
1056
- if (msg.isStateSync) {}
1056
+ if (msg.isStateSync) {
1057
+ //console.log('[RbtObject] Applied state sync:', msg.delta.path, '=', msg.delta.value);
1058
+ }
1057
1059
  } else {}
1058
1060
  } else if (msg.type === 'save') {
1059
1061
  _this3._trigger('save', msg.revision || {});
@@ -1072,12 +1074,15 @@ var RbtObject = exports["default"] = /*#__PURE__*/function () {
1072
1074
  this._eventHandlers.change.push(cb);
1073
1075
 
1074
1076
  // Log registration with stack trace to identify duplicates
1077
+ //console.log(`[AgentProviderSync] 📝 onChange handler registered #${handlerCount + 1}`);
1075
1078
 
1076
1079
  // Get stack trace to see who registered this handler
1077
1080
  var stack = new Error().stack;
1078
1081
  var stackLines = stack.split('\n');
1079
1082
  // Skip the first 3 lines (Error, onChange, and the immediate caller)
1080
1083
  var relevantStack = stackLines.slice(3, 8).join('\n');
1084
+ //console.log('[AgentProviderSync] Registration stack:', relevantStack);
1085
+
1081
1086
  // Auto-initialize realtime if this object has WebSocket capability
1082
1087
  if (this._ws && !this._realtime) {
1083
1088
  this._initRealtime();
@@ -1091,6 +1096,7 @@ var RbtObject = exports["default"] = /*#__PURE__*/function () {
1091
1096
  var index = this._eventHandlers.change.indexOf(cb);
1092
1097
  if (index > -1) {
1093
1098
  this._eventHandlers.change.splice(index, 1);
1099
+ //console.log(`[AgentProviderSync] 🗑️ onChange handler removed. Remaining:`, this._eventHandlers.change.length);
1094
1100
  return true;
1095
1101
  } else {
1096
1102
  return false;
@@ -1120,16 +1126,22 @@ var RbtObject = exports["default"] = /*#__PURE__*/function () {
1120
1126
  key: "_trigger",
1121
1127
  value: function _trigger(type, data) {
1122
1128
  var handlers = this._eventHandlers[type] || [];
1129
+ //console.log('[AgentProviderSync] _trigger called:', type, 'handlers:', handlers.length, 'data:', data)
1130
+
1123
1131
  for (var i = 0; i < handlers.length; i++) {
1124
1132
  var fn = handlers[i];
1125
1133
  try {
1134
+ //console.log(`[AgentProviderSync] 🔄 Calling handler ${i+1}/${handlers.length}`);
1126
1135
  fn(data);
1136
+ //console.log(`[AgentProviderSync] ✅ Handler ${i+1} succeeded`);
1127
1137
  } catch (error) {
1128
1138
  console.error("[AgentProviderSync] \u274C Handler ".concat(i + 1, "/").concat(handlers.length, " threw error:"), error);
1129
1139
  console.error('[AgentProviderSync] Error stack:', error.stack);
1130
1140
  // Continue to next handler instead of breaking the loop
1131
1141
  }
1132
1142
  }
1143
+
1144
+ // ✓ Completed calling ${handlers.length} handlers`);
1133
1145
  }
1134
1146
  }, {
1135
1147
  key: "_broadcastChange",
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.version = void 0;
7
7
  // Auto-generated version file
8
8
  // DO NOT EDIT - This file is automatically updated from package.cjson
9
- // Version: 1.9.14
10
- var version = exports.version = '1.9.14';
9
+ // Version: 1.9.15
10
+ var version = exports.version = '1.9.15';
@@ -41,6 +41,8 @@ var RbtApi = /*#__PURE__*/function () {
41
41
  _ref$withCredentials = _ref.withCredentials,
42
42
  withCredentials = _ref$withCredentials === void 0 ? true : _ref$withCredentials;
43
43
  _classCallCheck(this, RbtApi);
44
+ //console.log('[RbtApi] constructor received:', { baseUrl, accesskey, authtoken, apikey, withCredentials });
45
+
44
46
  this.websocketClient = null;
45
47
 
46
48
  // Object cache for sharing instances across multiple load() calls
@@ -98,7 +100,7 @@ var RbtApi = /*#__PURE__*/function () {
98
100
  if (apikey) {
99
101
  this.apikey = apikey;
100
102
  this.axios.defaults.headers.common['apikey'] = this.apikey;
101
- // ADD THIS LINE
103
+ //console.log('[RbtApi] Set apikey header:', this.axios.defaults.headers.common['apikey']); // ADD THIS LINE
102
104
  }
103
105
  this.initApiKey(apikey);
104
106
  }
@@ -163,6 +165,7 @@ var RbtApi = /*#__PURE__*/function () {
163
165
  if (token) {
164
166
  this.authtoken = token;
165
167
  this.axios.defaults.headers.common['authtoken'] = token;
168
+ //console.log('[RbtApi] Loaded authtoken from storage adaptor');
166
169
  }
167
170
  _context.next = 32;
168
171
  break;
@@ -182,6 +185,7 @@ var RbtApi = /*#__PURE__*/function () {
182
185
  id: parsed.id
183
186
  }, this.axios);
184
187
  this.currentUser.setData(parsed);
188
+ //console.log('[RbtApi] Loaded user from storage adaptor');
185
189
  }
186
190
  }
187
191
  _context.next = 41;
@@ -210,6 +214,8 @@ var RbtApi = /*#__PURE__*/function () {
210
214
  var baseUrl = this.axios.defaults.baseURL;
211
215
  var wsProtocol = baseUrl.startsWith('https') ? 'wss://' : 'ws://';
212
216
  var wsUrl = baseUrl.replace(/^https?:\/\//, wsProtocol);
217
+
218
+ //console.log('[RbtApi] Creating new WebSocket connection to:', wsUrl + '/realtime');
213
219
  this.websocketClient = new WebSocket("".concat(wsUrl, "/realtime"));
214
220
  this._setupWebSocketHandlers(this.websocketClient);
215
221
  return this.websocketClient;
@@ -219,6 +225,7 @@ var RbtApi = /*#__PURE__*/function () {
219
225
  value: function _setupWebSocketHandlers(ws) {
220
226
  var _this = this;
221
227
  ws.onopen = function () {
228
+ //console.log('[RbtApi] WebSocket connected.');
222
229
  _this._wsReconnectAttempts = 0;
223
230
  _this._wsConnected = true;
224
231
 
@@ -247,6 +254,8 @@ var RbtApi = /*#__PURE__*/function () {
247
254
  // Attempt reconnection with exponential backoff
248
255
  if (!_this._wsManualClose && _this._wsReconnectAttempts < 5) {
249
256
  var delay = Math.min(1000 * Math.pow(2, _this._wsReconnectAttempts), 30000);
257
+ //console.log(`[RbtApi] Attempting reconnection in ${delay}ms (attempt ${this._wsReconnectAttempts + 1}/5)`);
258
+
250
259
  setTimeout(function () {
251
260
  _this._wsReconnectAttempts++;
252
261
  _this.websocketClient = null; // Clear the old connection
@@ -902,6 +911,9 @@ var RbtApi = /*#__PURE__*/function () {
902
911
  break;
903
912
  }
904
913
  _this4.currentOrganization = org; // Already an RbtObject
914
+ //console.log('[RbtApi] Current organization loaded:', org.get('name'));
915
+
916
+ // Cache in storage if available
905
917
  if (!_this4.localStorageAdaptor) {
906
918
  _context14.next = 24;
907
919
  break;
@@ -1092,18 +1104,22 @@ var RbtApi = /*#__PURE__*/function () {
1092
1104
  }
1093
1105
  throw new Error('Failed to load user object');
1094
1106
  case 17:
1107
+ //console.log('[RbtApi] User loaded:', user.id);
1095
1108
  // Update user's organizations array
1096
1109
  userOrgs = user.get('organizations') || [];
1097
1110
  orgExists = userOrgs.some(function (o) {
1098
1111
  return (o === null || o === void 0 ? void 0 : o.id) === orgId;
1099
1112
  });
1100
1113
  if (!orgExists) {
1114
+ //console.log('[RbtApi] Adding organization to user organizations array');
1101
1115
  userOrgs.unshift({
1102
1116
  id: orgId,
1103
1117
  roles: [role]
1104
1118
  });
1105
1119
  user.set('organizations', userOrgs);
1106
- } else {}
1120
+ } else {
1121
+ //console.log('[RbtApi] Organization already in user organizations array');
1122
+ }
1107
1123
 
1108
1124
  // Set as current organization preference - handle both nested path formats
1109
1125
  modData = user.get('mod') || {};
@@ -1111,9 +1127,12 @@ var RbtApi = /*#__PURE__*/function () {
1111
1127
  user.set('mod', modData);
1112
1128
 
1113
1129
  // Save user record
1130
+ //console.log('[RbtApi] Saving user with organization:', orgId);
1114
1131
  _context17.next = 25;
1115
1132
  return user.save();
1116
1133
  case 25:
1134
+ //console.log('[RbtApi] User saved successfully');
1135
+
1117
1136
  // Clear cached organization to force reload
1118
1137
  this.currentOrganization = null;
1119
1138
 
@@ -1733,11 +1752,13 @@ var RbtApi = /*#__PURE__*/function () {
1733
1752
  // Only log cache hits once per object to reduce spam
1734
1753
  hitLogKey = "hit:".concat(_cacheKey);
1735
1754
  if (!this._loggedCacheEvents.has(hitLogKey)) {
1755
+ //console.log('[AgentProviderSync] 🎯 roboto.load cache HIT:', { type, id, hasRealtime: !!cached._realtime, requestedRealtime: !!params.enableRealtime });
1736
1756
  this._loggedCacheEvents.add(hitLogKey);
1737
1757
  }
1738
1758
 
1739
1759
  // If realtime is requested but cached object doesn't have it, upgrade it
1740
1760
  if (params.enableRealtime && !cached._realtime) {
1761
+ //console.log('[AgentProviderSync] 🔄 Upgrading cached object to realtime:', { type, id });
1741
1762
  cached._initRealtime();
1742
1763
  }
1743
1764
  cachedObjects.push(cached);
@@ -1760,6 +1781,7 @@ var RbtApi = /*#__PURE__*/function () {
1760
1781
  // Only log bulk cache miss once
1761
1782
  bulkMissLogKey = "bulk-miss:".concat(type, ":").concat(missingIds.join(','));
1762
1783
  if (!this._loggedCacheEvents.has(bulkMissLogKey)) {
1784
+ //console.log('[AgentProviderSync] 📦 roboto.load cache MISS, loading:', { type, ids: missingIds });
1763
1785
  this._loggedCacheEvents.add(bulkMissLogKey);
1764
1786
  }
1765
1787
 
@@ -1783,6 +1805,7 @@ var RbtApi = /*#__PURE__*/function () {
1783
1805
  // Only log cache set once per object to reduce spam
1784
1806
  setLogKey = "set:".concat(cacheKey);
1785
1807
  if (!this._loggedCacheEvents.has(setLogKey)) {
1808
+ //console.log('[AgentProviderSync] 💾 roboto.load cached object:', { type, id: obj.id });
1786
1809
  this._loggedCacheEvents.add(setLogKey);
1787
1810
  }
1788
1811
  }
@@ -1830,6 +1853,7 @@ var RbtApi = /*#__PURE__*/function () {
1830
1853
 
1831
1854
  // If realtime is requested but cached object doesn't have it, upgrade it
1832
1855
  if (params.enableRealtime && !_cached._realtime) {
1856
+ //console.log('[AgentProviderSync] 🔄 Upgrading cached object to realtime:', { type, id: ids });
1833
1857
  _cached._initRealtime();
1834
1858
  }
1835
1859
  return _context28.abrupt("return", _cached);
@@ -1848,6 +1872,7 @@ var RbtApi = /*#__PURE__*/function () {
1848
1872
  // Only log cache miss once per object to reduce spam
1849
1873
  missLogKey = "miss:".concat(_cacheKey3);
1850
1874
  if (!this._loggedCacheEvents.has(missLogKey)) {
1875
+ //console.log('[AgentProviderSync] 📦 roboto.load cache MISS, loading:', { type, id: ids });
1851
1876
  this._loggedCacheEvents.add(missLogKey);
1852
1877
  }
1853
1878
 
@@ -1875,6 +1900,7 @@ var RbtApi = /*#__PURE__*/function () {
1875
1900
  // Only log cache set once per object to reduce spam
1876
1901
  _setLogKey = "set:".concat(_cacheKey3);
1877
1902
  if (!_this9._loggedCacheEvents.has(_setLogKey)) {
1903
+ //console.log('[AgentProviderSync] 💾 roboto.load cached object:', { type, id: ids });
1878
1904
  _this9._loggedCacheEvents.add(_setLogKey);
1879
1905
  }
1880
1906
  }
@@ -1933,6 +1959,8 @@ var RbtApi = /*#__PURE__*/function () {
1933
1959
  this._loggedCacheEvents["delete"]("hit:".concat(cacheKey));
1934
1960
  this._loggedCacheEvents["delete"]("miss:".concat(cacheKey));
1935
1961
  this._loggedCacheEvents["delete"]("set:".concat(cacheKey));
1962
+
1963
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache specific object:', { type, id, removed });
1936
1964
  } else if (type) {
1937
1965
  // Clear all objects of a specific type
1938
1966
  var removedCount = 0;
@@ -1963,6 +1991,8 @@ var RbtApi = /*#__PURE__*/function () {
1963
1991
  this._loggedCacheEvents["delete"](logKey);
1964
1992
  }
1965
1993
  }
1994
+
1995
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache by type:', { type, removedCount });
1966
1996
  } catch (err) {
1967
1997
  _iterator7.e(err);
1968
1998
  } finally {
@@ -1974,6 +2004,7 @@ var RbtApi = /*#__PURE__*/function () {
1974
2004
  this._objectCache.clear();
1975
2005
  this._loggedCacheEvents.clear();
1976
2006
  this._pendingLoads.clear();
2007
+ //console.log('[AgentProviderSync] 🗑️ roboto.clearCache all objects:', { clearedCount: size });
1977
2008
  }
1978
2009
  }
1979
2010
 
@@ -1046,7 +1046,9 @@ var RbtObject = /*#__PURE__*/function () {
1046
1046
  userId: msg.userId || msg.delta.userId || null
1047
1047
  });
1048
1048
  _this3._trigger('change', changeData);
1049
- if (msg.isStateSync) {}
1049
+ if (msg.isStateSync) {
1050
+ //console.log('[RbtObject] Applied state sync:', msg.delta.path, '=', msg.delta.value);
1051
+ }
1050
1052
  } else {}
1051
1053
  } else if (msg.type === 'save') {
1052
1054
  _this3._trigger('save', msg.revision || {});
@@ -1065,12 +1067,15 @@ var RbtObject = /*#__PURE__*/function () {
1065
1067
  this._eventHandlers.change.push(cb);
1066
1068
 
1067
1069
  // Log registration with stack trace to identify duplicates
1070
+ //console.log(`[AgentProviderSync] 📝 onChange handler registered #${handlerCount + 1}`);
1068
1071
 
1069
1072
  // Get stack trace to see who registered this handler
1070
1073
  var stack = new Error().stack;
1071
1074
  var stackLines = stack.split('\n');
1072
1075
  // Skip the first 3 lines (Error, onChange, and the immediate caller)
1073
1076
  var relevantStack = stackLines.slice(3, 8).join('\n');
1077
+ //console.log('[AgentProviderSync] Registration stack:', relevantStack);
1078
+
1074
1079
  // Auto-initialize realtime if this object has WebSocket capability
1075
1080
  if (this._ws && !this._realtime) {
1076
1081
  this._initRealtime();
@@ -1084,6 +1089,7 @@ var RbtObject = /*#__PURE__*/function () {
1084
1089
  var index = this._eventHandlers.change.indexOf(cb);
1085
1090
  if (index > -1) {
1086
1091
  this._eventHandlers.change.splice(index, 1);
1092
+ //console.log(`[AgentProviderSync] 🗑️ onChange handler removed. Remaining:`, this._eventHandlers.change.length);
1087
1093
  return true;
1088
1094
  } else {
1089
1095
  return false;
@@ -1113,16 +1119,22 @@ var RbtObject = /*#__PURE__*/function () {
1113
1119
  key: "_trigger",
1114
1120
  value: function _trigger(type, data) {
1115
1121
  var handlers = this._eventHandlers[type] || [];
1122
+ //console.log('[AgentProviderSync] _trigger called:', type, 'handlers:', handlers.length, 'data:', data)
1123
+
1116
1124
  for (var i = 0; i < handlers.length; i++) {
1117
1125
  var fn = handlers[i];
1118
1126
  try {
1127
+ //console.log(`[AgentProviderSync] 🔄 Calling handler ${i+1}/${handlers.length}`);
1119
1128
  fn(data);
1129
+ //console.log(`[AgentProviderSync] ✅ Handler ${i+1} succeeded`);
1120
1130
  } catch (error) {
1121
1131
  console.error("[AgentProviderSync] \u274C Handler ".concat(i + 1, "/").concat(handlers.length, " threw error:"), error);
1122
1132
  console.error('[AgentProviderSync] Error stack:', error.stack);
1123
1133
  // Continue to next handler instead of breaking the loop
1124
1134
  }
1125
1135
  }
1136
+
1137
+ // ✓ Completed calling ${handlers.length} handlers`);
1126
1138
  }
1127
1139
  }, {
1128
1140
  key: "_broadcastChange",
@@ -1,4 +1,4 @@
1
1
  // Auto-generated version file
2
2
  // DO NOT EDIT - This file is automatically updated from package.json
3
- // Version: 1.9.14
4
- export var version = '1.9.14';
3
+ // Version: 1.9.15
4
+ export var version = '1.9.15';