capacitor-mobile-claw 1.9.5 → 1.9.6

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.
@@ -2,6 +2,8 @@
2
2
  * SessionStore — Direct SQLite session persistence from the WebView.
3
3
  *
4
4
  * Uses @capacitor-community/sqlite for all session save/load operations.
5
+ * Connection resilience: force-close on init, automatic retry on stale
6
+ * connection errors (matches the pattern in orchestrator-backend db.js).
5
7
  */
6
8
  export declare class SessionStore {
7
9
  private sqlite;
@@ -12,6 +14,9 @@ export declare class SessionStore {
12
14
  */
13
15
  ensureReady(): Promise<void>;
14
16
  private _init;
17
+ private _isStaleConnectionError;
18
+ reconnect(): Promise<void>;
19
+ private _withRetry;
15
20
  saveSession(params: {
16
21
  sessionKey: string;
17
22
  agentId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/agent/session-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,WAAW,CAA6B;IAEhD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,KAAK;IA8Db,WAAW,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,GAAG,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmEX,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBhD,YAAY,CAAC,OAAO,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgB9C,gBAAgB,CAAC,OAAO,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;CAiB9D"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/agent/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,WAAW,CAA6B;IAEhD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,KAAK;IAiEnB,OAAO,CAAC,uBAAuB;IAKzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAOlB,UAAU;IAelB,WAAW,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,GAAG,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoEX,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBhD,YAAY,CAAC,OAAO,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiB9C,gBAAgB,CAAC,OAAO,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;CAkB9D"}
@@ -2,6 +2,8 @@
2
2
  * SessionStore — Direct SQLite session persistence from the WebView.
3
3
  *
4
4
  * Uses @capacitor-community/sqlite for all session save/load operations.
5
+ * Connection resilience: force-close on init, automatic retry on stale
6
+ * connection errors (matches the pattern in orchestrator-backend db.js).
5
7
  */
6
8
  import { Capacitor } from '@capacitor/core';
7
9
  import { CapacitorSQLite, SQLiteConnection } from '@capacitor-community/sqlite';
@@ -34,17 +36,22 @@ export class SessionStore {
34
36
  await customElements.whenDefined('jeep-sqlite');
35
37
  await this.sqlite.initWebStore();
36
38
  }
39
+ // Check connections consistency (cleans up stale connections from prior sessions).
40
+ // After consistency check, always close any existing connection before creating a
41
+ // fresh one — checkConnectionsConsistency() can invalidate the native handle while
42
+ // the JS wrapper still reports isConnection=true, leading to
43
+ // "No available connection for database mobile-claw" errors.
37
44
  await this.sqlite.checkConnectionsConsistency();
38
45
  const isConn = await this.sqlite.isConnection(DB_NAME, false);
39
46
  if (isConn.result) {
40
- this.db = await this.sqlite.retrieveConnection(DB_NAME, false);
41
- }
42
- else {
43
- // Create a new connection if one doesn't exist yet.
44
- this.db = await this.sqlite.createConnection(DB_NAME, false, 'no-encryption', 2, false);
47
+ try {
48
+ await this.sqlite.closeConnection(DB_NAME, false);
49
+ }
50
+ catch { /* already closed */ }
45
51
  }
52
+ this.db = await this.sqlite.createConnection(DB_NAME, false, 'no-encryption', 2, false);
46
53
  await this.db.open();
47
- // Ensure schema exists (was previously handled by DbBridgeHandler)
54
+ // Ensure schema exists
48
55
  await this.db.execute(`
49
56
  CREATE TABLE IF NOT EXISTS sessions (
50
57
  session_key TEXT PRIMARY KEY,
@@ -75,102 +82,130 @@ export class SessionStore {
75
82
  CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_key);
76
83
  `, false);
77
84
  }
78
- // ── Save ─────────────────────────────────────────────────────────────────
79
- async saveSession(params) {
85
+ // ── Connection resilience ─────────────────────────────────────────────────
86
+ _isStaleConnectionError(err) {
87
+ const msg = String(err?.message || err || '');
88
+ return msg.includes('No available connection') || msg.includes('database is closed');
89
+ }
90
+ async reconnect() {
91
+ console.warn('[SessionStore] Reconnecting...');
92
+ this.db = null;
93
+ this.initPromise = null;
80
94
  await this.ensureReady();
81
- const now = Date.now();
82
- // Compute usage totals
83
- let inputTokens = 0;
84
- let outputTokens = 0;
85
- for (const msg of params.messages) {
86
- if (msg.role === 'assistant' && msg.usage) {
87
- inputTokens += msg.usage.input || 0;
88
- outputTokens += msg.usage.output || 0;
89
- }
95
+ }
96
+ async _withRetry(fn) {
97
+ await this.ensureReady();
98
+ try {
99
+ return await fn();
90
100
  }
91
- const totalTokens = inputTokens + outputTokens;
92
- // Upsert session row
93
- await this.db.run(`INSERT INTO sessions (session_key, agent_id, created_at, updated_at, model, total_tokens, input_tokens, output_tokens)
94
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
95
- ON CONFLICT(session_key) DO UPDATE SET
96
- updated_at = excluded.updated_at,
97
- model = excluded.model,
98
- total_tokens = excluded.total_tokens,
99
- input_tokens = excluded.input_tokens,
100
- output_tokens = excluded.output_tokens`, [
101
- params.sessionKey,
102
- params.agentId,
103
- params.startTime,
104
- now,
105
- params.model || null,
106
- totalTokens,
107
- inputTokens,
108
- outputTokens,
109
- ], true);
110
- // Insert messages (skip already-persisted ones)
111
- const existingResult = await this.db.query('SELECT COUNT(*) as cnt FROM messages WHERE session_key = ?', [
112
- params.sessionKey,
113
- ]);
114
- const existingCount = existingResult.values?.[0]?.cnt || 0;
115
- const newMessages = params.messages.slice(existingCount);
116
- if (newMessages.length > 0) {
117
- const stmts = newMessages.map((msg, i) => ({
118
- statement: `INSERT OR IGNORE INTO messages (session_key, sequence, role, content, timestamp, model, tool_call_id, usage_input, usage_output)
119
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
120
- values: [
121
- params.sessionKey,
122
- existingCount + i,
123
- msg.role,
124
- typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
125
- msg.timestamp || now,
126
- msg.model || params.model || null,
127
- msg.toolCallId || null,
128
- msg.usage?.input || null,
129
- msg.usage?.output || null,
130
- ],
131
- }));
132
- await this.db.executeSet(stmts, true);
101
+ catch (err) {
102
+ if (this._isStaleConnectionError(err)) {
103
+ await this.reconnect();
104
+ return await fn();
105
+ }
106
+ throw err;
133
107
  }
134
108
  }
109
+ // ── Save ─────────────────────────────────────────────────────────────────
110
+ async saveSession(params) {
111
+ return this._withRetry(async () => {
112
+ const now = Date.now();
113
+ // Compute usage totals
114
+ let inputTokens = 0;
115
+ let outputTokens = 0;
116
+ for (const msg of params.messages) {
117
+ if (msg.role === 'assistant' && msg.usage) {
118
+ inputTokens += msg.usage.input || 0;
119
+ outputTokens += msg.usage.output || 0;
120
+ }
121
+ }
122
+ const totalTokens = inputTokens + outputTokens;
123
+ // Upsert session row
124
+ await this.db.run(`INSERT INTO sessions (session_key, agent_id, created_at, updated_at, model, total_tokens, input_tokens, output_tokens)
125
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
126
+ ON CONFLICT(session_key) DO UPDATE SET
127
+ updated_at = excluded.updated_at,
128
+ model = excluded.model,
129
+ total_tokens = excluded.total_tokens,
130
+ input_tokens = excluded.input_tokens,
131
+ output_tokens = excluded.output_tokens`, [
132
+ params.sessionKey,
133
+ params.agentId,
134
+ params.startTime,
135
+ now,
136
+ params.model || null,
137
+ totalTokens,
138
+ inputTokens,
139
+ outputTokens,
140
+ ], true);
141
+ // Insert messages (skip already-persisted ones)
142
+ const existingResult = await this.db.query('SELECT COUNT(*) as cnt FROM messages WHERE session_key = ?', [
143
+ params.sessionKey,
144
+ ]);
145
+ const existingCount = existingResult.values?.[0]?.cnt || 0;
146
+ const newMessages = params.messages.slice(existingCount);
147
+ if (newMessages.length > 0) {
148
+ const stmts = newMessages.map((msg, i) => ({
149
+ statement: `INSERT OR IGNORE INTO messages (session_key, sequence, role, content, timestamp, model, tool_call_id, usage_input, usage_output)
150
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
151
+ values: [
152
+ params.sessionKey,
153
+ existingCount + i,
154
+ msg.role,
155
+ typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
156
+ msg.timestamp || now,
157
+ msg.model || params.model || null,
158
+ msg.toolCallId || null,
159
+ msg.usage?.input || null,
160
+ msg.usage?.output || null,
161
+ ],
162
+ }));
163
+ await this.db.executeSet(stmts, true);
164
+ }
165
+ });
166
+ }
135
167
  // ── Load ─────────────────────────────────────────────────────────────────
136
168
  async loadMessages(sessionKey) {
137
- await this.ensureReady();
138
- const result = await this.db.query('SELECT role, content, timestamp, model, tool_call_id, usage_input, usage_output FROM messages WHERE session_key = ? ORDER BY sequence', [sessionKey]);
139
- return (result.values || []).map((r) => ({
140
- role: r.role,
141
- content: _parseJsonSafe(r.content),
142
- timestamp: r.timestamp,
143
- model: r.model,
144
- toolCallId: r.tool_call_id,
145
- usage: r.usage_input || r.usage_output ? { input: r.usage_input, output: r.usage_output } : undefined,
146
- }));
169
+ return this._withRetry(async () => {
170
+ const result = await this.db.query('SELECT role, content, timestamp, model, tool_call_id, usage_input, usage_output FROM messages WHERE session_key = ? ORDER BY sequence', [sessionKey]);
171
+ return (result.values || []).map((r) => ({
172
+ role: r.role,
173
+ content: _parseJsonSafe(r.content),
174
+ timestamp: r.timestamp,
175
+ model: r.model,
176
+ toolCallId: r.tool_call_id,
177
+ usage: r.usage_input || r.usage_output ? { input: r.usage_input, output: r.usage_output } : undefined,
178
+ }));
179
+ });
147
180
  }
148
181
  async listSessions(agentId = 'main') {
149
- await this.ensureReady();
150
- const result = await this.db.query('SELECT session_key, created_at, updated_at, model, total_tokens FROM sessions WHERE agent_id = ? ORDER BY updated_at DESC', [agentId]);
151
- return (result.values || []).map((r) => ({
152
- sessionKey: r.session_key,
153
- sessionId: r.session_key,
154
- createdAt: r.created_at,
155
- updatedAt: r.updated_at,
156
- model: r.model,
157
- totalTokens: r.total_tokens,
158
- }));
182
+ return this._withRetry(async () => {
183
+ const result = await this.db.query('SELECT session_key, created_at, updated_at, model, total_tokens FROM sessions WHERE agent_id = ? ORDER BY updated_at DESC', [agentId]);
184
+ return (result.values || []).map((r) => ({
185
+ sessionKey: r.session_key,
186
+ sessionId: r.session_key,
187
+ createdAt: r.created_at,
188
+ updatedAt: r.updated_at,
189
+ model: r.model,
190
+ totalTokens: r.total_tokens,
191
+ }));
192
+ });
159
193
  }
160
194
  async getLatestSession(agentId = 'main') {
161
- await this.ensureReady();
162
- const result = await this.db.query('SELECT session_key, created_at, updated_at, model, total_tokens FROM sessions WHERE agent_id = ? ORDER BY updated_at DESC LIMIT 1', [agentId]);
163
- const row = result.values?.[0];
164
- if (!row)
165
- return null;
166
- return {
167
- sessionKey: row.session_key,
168
- sessionId: row.session_key,
169
- createdAt: row.created_at,
170
- updatedAt: row.updated_at,
171
- model: row.model,
172
- totalTokens: row.total_tokens,
173
- };
195
+ return this._withRetry(async () => {
196
+ const result = await this.db.query('SELECT session_key, created_at, updated_at, model, total_tokens FROM sessions WHERE agent_id = ? ORDER BY updated_at DESC LIMIT 1', [agentId]);
197
+ const row = result.values?.[0];
198
+ if (!row)
199
+ return null;
200
+ return {
201
+ sessionKey: row.session_key,
202
+ sessionId: row.session_key,
203
+ createdAt: row.created_at,
204
+ updatedAt: row.updated_at,
205
+ model: row.model,
206
+ totalTokens: row.total_tokens,
207
+ };
208
+ });
174
209
  }
175
210
  }
176
211
  function _parseJsonSafe(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/agent/session-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE/E,MAAM,OAAO,GAAG,aAAa,CAAA;AAE7B,MAAM,OAAO,YAAY;IACf,MAAM,GAA4B,IAAI,CAAA;IACtC,EAAE,GAAQ,IAAI,CAAA;IACd,WAAW,GAAyB,IAAI,CAAA;IAEhD;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,EAAE;YAAE,OAAM;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAA;YACtB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAC/B,MAAM,IAAI,CAAC,WAAW,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAEnD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAA;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;gBAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAC/B,CAAC;YACD,MAAM,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;YAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAClC,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAA;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC7D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QACzF,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QAEpB,mEAAmE;QACnE,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BD,EACC,KAAK,CACN,CAAA;IACH,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,WAAW,CAAC,MAMjB;QACC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,uBAAuB;QACvB,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC1C,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;gBACnC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;QAE9C,qBAAqB;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;;;;;;;gDAO0C,EAC1C;YACE,MAAM,CAAC,UAAU;YACjB,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,SAAS;YAChB,GAAG;YACH,MAAM,CAAC,KAAK,IAAI,IAAI;YACpB,WAAW;YACX,WAAW;YACX,YAAY;SACb,EACD,IAAI,CACL,CAAA;QAED,gDAAgD;QAChD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4DAA4D,EAAE;YACvG,MAAM,CAAC,UAAU;SAClB,CAAC,CAAA;QACF,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAExD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC;gBACtD,SAAS,EAAE;uDACoC;gBAC/C,MAAM,EAAE;oBACN,MAAM,CAAC,UAAU;oBACjB,aAAa,GAAG,CAAC;oBACjB,GAAG,CAAC,IAAI;oBACR,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;oBAC3E,GAAG,CAAC,SAAS,IAAI,GAAG;oBACpB,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;oBACjC,GAAG,CAAC,UAAU,IAAI,IAAI;oBACtB,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI;oBACxB,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI;iBAC1B;aACF,CAAC,CAAC,CAAA;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAChC,uIAAuI,EACvI,CAAC,UAAU,CAAC,CACb,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;YAClC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,YAAY;YAC1B,KAAK,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;SACtG,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,MAAM;QACjC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAChC,2HAA2H,EAC3H,CAAC,OAAO,CAAC,CACV,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC5C,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,SAAS,EAAE,CAAC,CAAC,WAAW;YACxB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,YAAY;SAC5B,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,MAAM;QACrC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAChC,mIAAmI,EACnI,CAAC,OAAO,CAAC,CACV,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QACrB,OAAO;YACL,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,SAAS,EAAE,GAAG,CAAC,WAAW;YAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,YAAY;SAC9B,CAAA;IACH,CAAC;CACF;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/agent/session-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capacitor-mobile-claw",
3
- "version": "1.9.5",
3
+ "version": "1.9.6",
4
4
  "description": "On-device AI agent engine for Capacitor apps — native WebView LLM agent with file tools, code execution, git, and extensible MCP server",
5
5
  "main": "dist/esm/index.js",
6
6
  "types": "dist/esm/index.d.ts",