capacitor-gleap-plugin 15.3.4 → 15.4.0
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/CapacitorGleapPlugin.podspec +1 -1
- package/README.md +57 -9
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/gleapplugins/capacitor/GleapPlugin.java +41 -71
- package/dist/docs.json +72 -7
- package/dist/esm/definitions.d.ts +29 -19
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/index.d.ts +8 -1
- package/dist/esm/index.js +52 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web.d.ts +9 -17
- package/dist/esm/web.js +27 -3
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +79 -3
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +79 -3
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/GleapPlugin.m +2 -1
- package/ios/Plugin/GleapPlugin.swift +35 -55
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -39,7 +39,9 @@ Please install the plugin version from our capacitor-v4 brunch with `npm install
|
|
|
39
39
|
* [`setTags(...)`](#settags)
|
|
40
40
|
* [`setNetworkLogsBlacklist(...)`](#setnetworklogsblacklist)
|
|
41
41
|
* [`setNetworkLogPropsToIgnore(...)`](#setnetworklogpropstoignore)
|
|
42
|
-
* [`
|
|
42
|
+
* [`registerAgentTool(...)`](#registeragenttool)
|
|
43
|
+
* [`sendAgentToolResult(...)`](#sendagenttoolresult)
|
|
44
|
+
* [`addListener('agentToolExecution', ...)`](#addlisteneragenttoolexecution-)
|
|
43
45
|
* [`setTicketAttribute(...)`](#setticketattribute)
|
|
44
46
|
* [`unsetTicketAttribute(...)`](#unsetticketattribute)
|
|
45
47
|
* [`clearTicketAttributes()`](#clearticketattributes)
|
|
@@ -299,21 +301,60 @@ Set network logs props to ignore
|
|
|
299
301
|
--------------------
|
|
300
302
|
|
|
301
303
|
|
|
302
|
-
###
|
|
304
|
+
### registerAgentTool(...)
|
|
303
305
|
|
|
304
306
|
```typescript
|
|
305
|
-
|
|
307
|
+
registerAgentTool(options: { name: string; }) => Promise<void>
|
|
306
308
|
```
|
|
307
309
|
|
|
308
|
-
|
|
310
|
+
Registers a Frontend tool defined on your AI agent in the Gleap dashboard.
|
|
311
|
+
Prefer the `registerAgentTool(name, handler)` helper exported by this
|
|
312
|
+
package — it wires the agentToolExecution event and result round-trip for
|
|
313
|
+
you.
|
|
309
314
|
|
|
310
|
-
| Param | Type
|
|
311
|
-
| ------------- |
|
|
312
|
-
| **`options`** | <code>{
|
|
315
|
+
| Param | Type |
|
|
316
|
+
| ------------- | ------------------------------ |
|
|
317
|
+
| **`options`** | <code>{ name: string; }</code> |
|
|
313
318
|
|
|
314
|
-
**
|
|
319
|
+
**Since:** 15.0.0
|
|
315
320
|
|
|
316
|
-
|
|
321
|
+
--------------------
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
### sendAgentToolResult(...)
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
sendAgentToolResult(options: { executionId: string; result: string; }) => Promise<void>
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Resolves a pending agent tool execution with the handler's result.
|
|
331
|
+
Used by the `registerAgentTool(name, handler)` helper.
|
|
332
|
+
|
|
333
|
+
| Param | Type |
|
|
334
|
+
| ------------- | ----------------------------------------------------- |
|
|
335
|
+
| **`options`** | <code>{ executionId: string; result: string; }</code> |
|
|
336
|
+
|
|
337
|
+
**Since:** 15.0.0
|
|
338
|
+
|
|
339
|
+
--------------------
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
### addListener('agentToolExecution', ...)
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
addListener(eventName: 'agentToolExecution', listenerFunc: (data: { executionId: string; name: string; params: any; }) => void) => Promise<PluginListenerHandle>
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Called when a registered agent tool should execute.
|
|
349
|
+
|
|
350
|
+
| Param | Type |
|
|
351
|
+
| ------------------ | ----------------------------------------------------------------------------------- |
|
|
352
|
+
| **`eventName`** | <code>'agentToolExecution'</code> |
|
|
353
|
+
| **`listenerFunc`** | <code>(data: { executionId: string; name: string; params: any; }) => void</code> |
|
|
354
|
+
|
|
355
|
+
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>></code>
|
|
356
|
+
|
|
357
|
+
**Since:** 15.0.0
|
|
317
358
|
|
|
318
359
|
--------------------
|
|
319
360
|
|
|
@@ -1643,6 +1684,13 @@ Creates a new function.
|
|
|
1643
1684
|
| **`value`** | <code>string</code> |
|
|
1644
1685
|
|
|
1645
1686
|
|
|
1687
|
+
#### PluginListenerHandle
|
|
1688
|
+
|
|
1689
|
+
| Prop | Type |
|
|
1690
|
+
| ------------ | ----------------------------------------- |
|
|
1691
|
+
| **`remove`** | <code>() => Promise<void></code> |
|
|
1692
|
+
|
|
1693
|
+
|
|
1646
1694
|
#### GleapEventMessage
|
|
1647
1695
|
|
|
1648
1696
|
| Prop | Type |
|
package/android/build.gradle
CHANGED
|
@@ -55,5 +55,5 @@ dependencies {
|
|
|
55
55
|
testImplementation "junit:junit:$junitVersion"
|
|
56
56
|
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
57
57
|
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
|
|
58
|
-
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '15.
|
|
58
|
+
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '15.4.0'
|
|
59
59
|
}
|
|
@@ -12,13 +12,13 @@ import com.getcapacitor.annotation.CapacitorPlugin;
|
|
|
12
12
|
import com.getcapacitor.annotation.Permission;
|
|
13
13
|
import io.gleap.APPLICATIONTYPE;
|
|
14
14
|
import io.gleap.Gleap;
|
|
15
|
-
import io.gleap.GleapAiTool;
|
|
16
|
-
import io.gleap.GleapAiToolParameter;
|
|
17
15
|
import io.gleap.GleapLogLevel;
|
|
18
16
|
import io.gleap.GleapNotInitialisedException;
|
|
19
17
|
import io.gleap.GleapSessionProperties;
|
|
20
18
|
import io.gleap.SurveyType;
|
|
21
19
|
import io.gleap.callbacks.AiToolExecutedCallback;
|
|
20
|
+
import io.gleap.callbacks.GleapAgentToolHandler;
|
|
21
|
+
import io.gleap.callbacks.GleapAgentToolResultCallback;
|
|
22
22
|
import io.gleap.callbacks.InitializedCallback;
|
|
23
23
|
import io.gleap.callbacks.ConfigLoadedCallback;
|
|
24
24
|
import io.gleap.callbacks.CustomActionCallback;
|
|
@@ -37,6 +37,9 @@ import java.io.OutputStream;
|
|
|
37
37
|
import java.util.ArrayList;
|
|
38
38
|
import java.util.Base64;
|
|
39
39
|
import java.util.List;
|
|
40
|
+
import java.util.Map;
|
|
41
|
+
import java.util.UUID;
|
|
42
|
+
import java.util.concurrent.ConcurrentHashMap;
|
|
40
43
|
import java.util.regex.Matcher;
|
|
41
44
|
import java.util.regex.Pattern;
|
|
42
45
|
|
|
@@ -54,6 +57,7 @@ import org.json.JSONObject;
|
|
|
54
57
|
public class GleapPlugin extends Plugin {
|
|
55
58
|
|
|
56
59
|
private Gleap implementation;
|
|
60
|
+
private final Map<String, GleapAgentToolResultCallback> pendingAgentToolExecutions = new ConcurrentHashMap<>();
|
|
57
61
|
|
|
58
62
|
@Override
|
|
59
63
|
public void load() {
|
|
@@ -315,87 +319,53 @@ public class GleapPlugin extends Plugin {
|
|
|
315
319
|
call.resolve(ret);
|
|
316
320
|
}
|
|
317
321
|
|
|
322
|
+
/**
|
|
323
|
+
* Registers the handler for a dashboard-defined Frontend tool. Executions
|
|
324
|
+
* round-trip to JS via the agentToolExecution event and sendAgentToolResult.
|
|
325
|
+
*/
|
|
318
326
|
@PluginMethod
|
|
319
|
-
public void
|
|
320
|
-
|
|
321
|
-
if (
|
|
322
|
-
call.reject("Must provide
|
|
327
|
+
public void registerAgentTool(PluginCall call) {
|
|
328
|
+
final String name = call.getString("name");
|
|
329
|
+
if (name == null || name.isEmpty()) {
|
|
330
|
+
call.reject("Must provide a name");
|
|
323
331
|
return;
|
|
324
332
|
}
|
|
325
333
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
continue; // Skip if it's not a JSONObject
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
String name = toolDict.optString("name", null);
|
|
335
|
-
String toolDescription = toolDict.optString("description", null);
|
|
336
|
-
String response = toolDict.optString("response", null);
|
|
337
|
-
String executionType = toolDict.optString("executionType", null);
|
|
338
|
-
JSONArray parametersArray = toolDict.optJSONArray("parameters");
|
|
339
|
-
|
|
340
|
-
if (name == null || toolDescription == null || response == null || parametersArray == null) {
|
|
341
|
-
continue; // Skip if any required fields are missing
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
List<GleapAiToolParameter> parameters = new ArrayList<>();
|
|
345
|
-
|
|
346
|
-
for (int j = 0; j < parametersArray.length(); j++) {
|
|
347
|
-
JSONObject paramDict = parametersArray.optJSONObject(j);
|
|
348
|
-
if (paramDict == null) {
|
|
349
|
-
continue; // Skip if it's not a JSONObject
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
String paramName = paramDict.optString("name", null);
|
|
353
|
-
String paramDescription = paramDict.optString("description", null);
|
|
354
|
-
String type = paramDict.optString("type", null);
|
|
355
|
-
boolean required = paramDict.optBoolean("required", false);
|
|
356
|
-
JSONArray enumArray = paramDict.optJSONArray
|
|
357
|
-
("enum");
|
|
358
|
-
String[] enums = null;
|
|
359
|
-
if (enumArray != null) {
|
|
360
|
-
enums = new String[enumArray.length()];
|
|
361
|
-
for (int k = 0; k < enumArray.length(); k++) {
|
|
362
|
-
enums[k] = enumArray.optString(k);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
if (paramName == null || paramDescription == null || type == null) {
|
|
367
|
-
continue; // Skip if any required parameter fields are missing
|
|
368
|
-
}
|
|
334
|
+
implementation.registerAgentTool(name, new GleapAgentToolHandler() {
|
|
335
|
+
@Override
|
|
336
|
+
public void execute(JSONObject params, GleapAgentToolResultCallback callback) {
|
|
337
|
+
String executionId = UUID.randomUUID().toString();
|
|
338
|
+
pendingAgentToolExecutions.put(executionId, callback);
|
|
369
339
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
required,
|
|
375
|
-
enums
|
|
376
|
-
);
|
|
340
|
+
JSObject eventData = new JSObject();
|
|
341
|
+
eventData.put("executionId", executionId);
|
|
342
|
+
eventData.put("name", name);
|
|
343
|
+
eventData.put("params", params != null ? params : new JSONObject());
|
|
377
344
|
|
|
378
|
-
|
|
345
|
+
notifyListeners("agentToolExecution", eventData);
|
|
379
346
|
}
|
|
347
|
+
});
|
|
380
348
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
toolDescription,
|
|
384
|
-
response,
|
|
385
|
-
executionType,
|
|
386
|
-
parameters.toArray(new GleapAiToolParameter[0]) // Convert List to Array
|
|
387
|
-
);
|
|
349
|
+
call.resolve();
|
|
350
|
+
}
|
|
388
351
|
|
|
389
|
-
|
|
352
|
+
/**
|
|
353
|
+
* Resolves a pending agent tool execution with the handler's result.
|
|
354
|
+
*/
|
|
355
|
+
@PluginMethod
|
|
356
|
+
public void sendAgentToolResult(PluginCall call) {
|
|
357
|
+
String executionId = call.getString("executionId");
|
|
358
|
+
if (executionId == null || executionId.isEmpty()) {
|
|
359
|
+
call.reject("Must provide an executionId");
|
|
360
|
+
return;
|
|
390
361
|
}
|
|
391
362
|
|
|
392
|
-
|
|
393
|
-
|
|
363
|
+
GleapAgentToolResultCallback callback = pendingAgentToolExecutions.remove(executionId);
|
|
364
|
+
if (callback != null) {
|
|
365
|
+
callback.onResult(call.getString("result"));
|
|
366
|
+
}
|
|
394
367
|
|
|
395
|
-
|
|
396
|
-
JSObject ret = new JSObject();
|
|
397
|
-
ret.put("aiToolsSet", true);
|
|
398
|
-
call.resolve(ret);
|
|
368
|
+
call.resolve();
|
|
399
369
|
}
|
|
400
370
|
|
|
401
371
|
/**
|
package/dist/docs.json
CHANGED
|
@@ -244,25 +244,74 @@
|
|
|
244
244
|
"slug": "setnetworklogpropstoignore"
|
|
245
245
|
},
|
|
246
246
|
{
|
|
247
|
-
"name": "
|
|
248
|
-
"signature": "(options: {
|
|
247
|
+
"name": "registerAgentTool",
|
|
248
|
+
"signature": "(options: { name: string; }) => Promise<void>",
|
|
249
249
|
"parameters": [
|
|
250
250
|
{
|
|
251
251
|
"name": "options",
|
|
252
252
|
"docs": "",
|
|
253
|
-
"type": "{
|
|
253
|
+
"type": "{ name: string; }"
|
|
254
254
|
}
|
|
255
255
|
],
|
|
256
|
-
"returns": "Promise<
|
|
256
|
+
"returns": "Promise<void>",
|
|
257
257
|
"tags": [
|
|
258
258
|
{
|
|
259
259
|
"name": "since",
|
|
260
|
-
"text": "
|
|
260
|
+
"text": "15.0.0"
|
|
261
261
|
}
|
|
262
262
|
],
|
|
263
|
-
"docs": "
|
|
263
|
+
"docs": "Registers a Frontend tool defined on your AI agent in the Gleap dashboard.\nPrefer the `registerAgentTool(name, handler)` helper exported by this\npackage — it wires the agentToolExecution event and result round-trip for\nyou.",
|
|
264
264
|
"complexTypes": [],
|
|
265
|
-
"slug": "
|
|
265
|
+
"slug": "registeragenttool"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "sendAgentToolResult",
|
|
269
|
+
"signature": "(options: { executionId: string; result: string; }) => Promise<void>",
|
|
270
|
+
"parameters": [
|
|
271
|
+
{
|
|
272
|
+
"name": "options",
|
|
273
|
+
"docs": "",
|
|
274
|
+
"type": "{ executionId: string; result: string; }"
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
"returns": "Promise<void>",
|
|
278
|
+
"tags": [
|
|
279
|
+
{
|
|
280
|
+
"name": "since",
|
|
281
|
+
"text": "15.0.0"
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"docs": "Resolves a pending agent tool execution with the handler's result.\nUsed by the `registerAgentTool(name, handler)` helper.",
|
|
285
|
+
"complexTypes": [],
|
|
286
|
+
"slug": "sendagenttoolresult"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"name": "addListener",
|
|
290
|
+
"signature": "(eventName: 'agentToolExecution', listenerFunc: (data: { executionId: string; name: string; params: any; }) => void) => Promise<PluginListenerHandle>",
|
|
291
|
+
"parameters": [
|
|
292
|
+
{
|
|
293
|
+
"name": "eventName",
|
|
294
|
+
"docs": "",
|
|
295
|
+
"type": "'agentToolExecution'"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"name": "listenerFunc",
|
|
299
|
+
"docs": "",
|
|
300
|
+
"type": "(data: { executionId: string; name: string; params: any; }) => void"
|
|
301
|
+
}
|
|
302
|
+
],
|
|
303
|
+
"returns": "Promise<PluginListenerHandle>",
|
|
304
|
+
"tags": [
|
|
305
|
+
{
|
|
306
|
+
"name": "since",
|
|
307
|
+
"text": "15.0.0"
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"docs": "Called when a registered agent tool should execute.",
|
|
311
|
+
"complexTypes": [
|
|
312
|
+
"PluginListenerHandle"
|
|
313
|
+
],
|
|
314
|
+
"slug": "addlisteneragenttoolexecution-"
|
|
266
315
|
},
|
|
267
316
|
{
|
|
268
317
|
"name": "setTicketAttribute",
|
|
@@ -4348,6 +4397,22 @@
|
|
|
4348
4397
|
}
|
|
4349
4398
|
]
|
|
4350
4399
|
},
|
|
4400
|
+
{
|
|
4401
|
+
"name": "PluginListenerHandle",
|
|
4402
|
+
"slug": "pluginlistenerhandle",
|
|
4403
|
+
"docs": "",
|
|
4404
|
+
"tags": [],
|
|
4405
|
+
"methods": [],
|
|
4406
|
+
"properties": [
|
|
4407
|
+
{
|
|
4408
|
+
"name": "remove",
|
|
4409
|
+
"tags": [],
|
|
4410
|
+
"docs": "",
|
|
4411
|
+
"complexTypes": [],
|
|
4412
|
+
"type": "() => Promise<void>"
|
|
4413
|
+
}
|
|
4414
|
+
]
|
|
4415
|
+
},
|
|
4351
4416
|
{
|
|
4352
4417
|
"name": "GleapEventMessage",
|
|
4353
4418
|
"slug": "gleapeventmessage",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PluginListenerHandle } from '@capacitor/core';
|
|
1
2
|
export declare type CallbackID = string;
|
|
2
3
|
export interface GleapEventMessage {
|
|
3
4
|
name: string;
|
|
@@ -148,27 +149,36 @@ export interface GleapPlugin {
|
|
|
148
149
|
propsToIgnoreSet: boolean;
|
|
149
150
|
}>;
|
|
150
151
|
/**
|
|
151
|
-
*
|
|
152
|
+
* Registers a Frontend tool defined on your AI agent in the Gleap dashboard.
|
|
153
|
+
* Prefer the `registerAgentTool(name, handler)` helper exported by this
|
|
154
|
+
* package — it wires the agentToolExecution event and result round-trip for
|
|
155
|
+
* you.
|
|
152
156
|
*
|
|
153
|
-
* @since
|
|
157
|
+
* @since 15.0.0
|
|
154
158
|
*/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
159
|
+
registerAgentTool(options: {
|
|
160
|
+
name: string;
|
|
161
|
+
}): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* Resolves a pending agent tool execution with the handler's result.
|
|
164
|
+
* Used by the `registerAgentTool(name, handler)` helper.
|
|
165
|
+
*
|
|
166
|
+
* @since 15.0.0
|
|
167
|
+
*/
|
|
168
|
+
sendAgentToolResult(options: {
|
|
169
|
+
executionId: string;
|
|
170
|
+
result: string;
|
|
171
|
+
}): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* Called when a registered agent tool should execute.
|
|
174
|
+
*
|
|
175
|
+
* @since 15.0.0
|
|
176
|
+
*/
|
|
177
|
+
addListener(eventName: 'agentToolExecution', listenerFunc: (data: {
|
|
178
|
+
executionId: string;
|
|
179
|
+
name: string;
|
|
180
|
+
params: any;
|
|
181
|
+
}) => void): Promise<PluginListenerHandle>;
|
|
172
182
|
/**
|
|
173
183
|
* Sets the value of a ticket attribute
|
|
174
184
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export type CallbackID = string;\n\nexport interface GleapEventMessage {\n name: string,\n data?: any,\n}\n\nexport type GleapEventCallback = (message: GleapEventMessage | null, err?: any) => void;\n\nexport interface GleapPlugin {\n /**\n * Initialize Gleap with an API key\n *\n * @since 7.0.0\n */\n initialize(options: {\n API_KEY: string;\n }): Promise<{\n initialized: boolean;\n }>;\n\n /**\n * Set user identity\n *\n * @since 7.0.0\n */\n identify(options: {\n userId: string;\n userHash?: string;\n name?: string;\n email?: string;\n phone?: string;\n companyId?: string;\n companyName?: string;\n avatar?: string;\n sla?: number;\n plan?: string;\n value?: number;\n customData?: Object;\n }): Promise<{\n identify: boolean;\n }>;\n\n /**\n * Update user properties\n *\n * @since 13.2.1\n */\n updateContact(options: {\n name?: string;\n email?: string;\n phone?: string;\n companyId?: string;\n companyName?: string;\n avatar?: string;\n sla?: number;\n plan?: string;\n value?: number;\n customData?: Object;\n }): Promise<{\n identify: boolean;\n }>;\n\n /**\n * Clear user identity\n *\n * @since 7.0.0\n */\n clearIdentity(): Promise<{\n clearIdentity: boolean;\n }>;\n\n /**\n * Get the current user identity\n *\n * @since 8.1.0\n */\n getIdentity(): Promise<{\n identity: {\n userId: string;\n name?: string;\n email?: string;\n phone?: string;\n value?: number;\n };\n }>;\n\n /**\n * User identified status.\n *\n * @since 8.1.0\n */\n isUserIdentified(): Promise<{\n isUserIdentified: boolean;\n }>;\n\n /**\n * Submit a custom log message with the given level\n *\n * @since 7.0.0\n */\n log(options: {\n message: string;\n logLevel?: \"ERROR\" | \"WARNING\" | \"INFO\";\n }): Promise<{\n logged: boolean;\n }>;\n\n /**\n * Manually show a survey.\n *\n * @since 8.5.1\n */\n showSurvey(options: {\n surveyId: string;\n format?: \"survey\" | \"survey_full\";\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Add custom data\n *\n * @since 7.0.0\n */\n attachCustomData(options: {\n data: any;\n }): Promise<{\n attachedCustomData: boolean;\n }>;\n\n /**\n * Set tags\n *\n * @since 8.6.0\n */\n setTags(options: {\n tags: string[];\n }): Promise<{\n tagsSet: boolean;\n }>;\n\n /**\n * Set network logs blacklist\n *\n * @since 13.2.1\n */\n setNetworkLogsBlacklist(options: {\n blacklist: string[];\n }): Promise<{\n blacklistSet: boolean;\n }>;\n\n /**\n * Set network logs props to ignore\n *\n * @since 13.2.1\n */\n setNetworkLogPropsToIgnore(options: {\n propsToIgnore: string[];\n }): Promise<{\n propsToIgnoreSet: boolean;\n }>;\n\n /**\n * Sets the AI tools to use\n *\n * @since 13.5.0\n */\n setAiTools(options: {\n tools: {\n name: string;\n description: string;\n response: string;\n executionType: \"auto\" | \"button\";\n parameters: {\n name: string;\n description: string;\n type: \"string\" | \"number\" | \"boolean\";\n required: boolean;\n enums?: string[];\n }[];\n }[];\n }): Promise<{\n aiToolsSet: boolean;\n }>;\n\n /**\n * Sets the value of a ticket attribute\n *\n * @since 13.5.0\n */\n setTicketAttribute(options: {\n key: string;\n value: string;\n }): Promise<{\n setTicketAttribute: boolean;\n }>;\n\n /**\n * Unset a ticket attribute\n *\n * @since 14.1.0\n */\n unsetTicketAttribute(options: {\n key: string;\n }): Promise<{\n unsetTicketAttribute: boolean;\n }>;\n\n /**\n * Clear all ticket attributes\n *\n * @since 14.1.0\n */\n clearTicketAttributes(): Promise<{\n clearTicketAttributes: boolean;\n }>;\n\n /**\n * Set custom data\n *\n * @since 7.0.0\n */\n setCustomData(options: {\n key: string;\n value: string;\n }): Promise<{\n setCustomData: boolean;\n }>;\n\n /**\n * Remove custom data by key\n *\n * @since 7.0.0\n */\n removeCustomData(options: {\n key: string;\n }): Promise<{\n removedCustomData: boolean;\n }>;\n\n /**\n * Clear custom data\n *\n * @since 7.0.0\n */\n clearCustomData(): Promise<{\n clearedCustomData: boolean;\n }>;\n\n /**\n * Log event to Gleap\n *\n * @since 8.0.0\n */\n trackEvent(options: {\n name: string;\n data?: any;\n }): Promise<{\n loggedEvent: boolean;\n }>;\n\n /**\n * Track a page view\n *\n * @since 8.4.1\n */\n trackPage(options: {\n pageName: string;\n }): Promise<{\n trackedPage: boolean;\n }>;\n\n /**\n * \n *\n * @since 7.0.0\n */\n setEventCallback(\n callback: GleapEventCallback,\n ): Promise<CallbackID>;\n\n /**\n * Log event to Gleap\n *\n * @since 7.0.0\n */\n sendSilentCrashReport(options: {\n description: string,\n severity?: \"LOW\" | \"MEDIUM\" | \"HIGH\";\n dataExclusion?: {\n customData: Boolean;\n metaData: Boolean;\n attachments: Boolean;\n consoleLog: Boolean;\n networkLogs: Boolean;\n customEventLog: Boolean;\n screenshot: Boolean;\n replays: Boolean;\n };\n }): Promise<{\n sentSilentBugReport: boolean;\n }>;\n\n /**\n * Prefills the widget's form data\n *\n * @since 7.0.0\n */\n preFillForm(options: {\n data: any;\n }): Promise<{\n preFilledForm: boolean;\n }>;\n\n /**\n * Add attachment as bas64 string\n *\n * @since 7.0.0\n */\n addAttachment(options: {\n base64data: string;\n name: string;\n }): Promise<{\n attachmentAdded: boolean;\n }>;\n\n /**\n * All attachments removed\n *\n * @since 7.0.0\n */\n removeAllAttachments(): Promise<{\n allAttachmentsRemoved: boolean;\n }>;\n\n /**\n * Open widget\n *\n * @since 7.0.0\n */\n open(): Promise<{\n openedWidget: boolean;\n }>;\n\n /**\n * Open news\n *\n * @since 8.4.0\n */\n openNews(options: {\n showBackButton?: boolean;\n }): Promise<{\n openedNews: boolean;\n }>;\n\n /**\n * Open news article\n *\n * @since 8.4.0\n */\n openNewsArticle(options: {\n articleId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center\n *\n * @since 8.4.0\n */\n openHelpCenter(options: {\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center article\n *\n * @since 8.4.0\n */\n openHelpCenterArticle(options: {\n articleId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Ask the AI a question\n *\n * @since 15.0.0\n */\n askAI(options: {\n question: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center collection\n *\n * @since 8.4.0\n */\n openHelpCenterCollection(options: {\n collectionId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Search help center\n *\n * @since 8.4.0\n */\n searchHelpCenter(options: {\n term: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open feature requests\n *\n * @since 8.4.0\n */\n openFeatureRequests(options: {\n showBackButton?: boolean;\n }): Promise<{\n openedFeatureRequests: boolean;\n }>;\n\n /**\n * Close widget\n *\n * @since 7.0.0\n */\n close(): Promise<{\n closedWidget: boolean;\n }>;\n\n /**\n * Check widget status code\n *\n * @since 7.0.0\n */\n isOpened(): Promise<{\n isOpened: boolean;\n }>;\n\n /**\n * Start feedback flow\n *\n * @since 7.0.0\n */\n startFeedbackFlow(options: {\n feedbackFlow?: string;\n showBackButton?: boolean;\n }): Promise<{\n startedFeedbackFlow: boolean;\n }>;\n\n /**\n * Start a classic form\n *\n * @since 13.1.0\n */\n startClassicForm(options: {\n formId?: string;\n showBackButton?: boolean;\n }): Promise<{\n classicFormStarted: boolean;\n }>;\n\n /**\n * Start a new conversation\n *\n * @since 13.1.0\n */\n startConversation(options: {\n showBackButton?: boolean;\n }): Promise<{\n conversationStarted: boolean;\n }>;\n\n /**\n * Opens the conversations tab.\n *\n * @since 13.9.0\n */\n openConversation(options: {\n showBackButton?: boolean;\n }): Promise<{\n conversationsOpened: boolean;\n }>;\n\n /**\n * Start bot\n *\n * @since 10.0.3\n */\n startBot(options: {\n botId?: string;\n showBackButton?: boolean;\n }): Promise<{\n startedBot: boolean;\n }>;\n\n /**\n * Show or hide the feedback button.\n *\n * @since 8.0.0\n */\n showFeedbackButton(options: {\n show?: boolean;\n }): Promise<{\n feedbackButtonShown: boolean;\n }>;\n\n /**\n* Disable in app notifications.\n*\n* @since 8.6.1\n*/\n setDisableInAppNotifications(options: {\n disableInAppNotifications?: boolean;\n }): Promise<{\n inAppNotificationsDisabled: boolean;\n }>;\n\n /**\n * Set Language\n *\n * @since 7.0.0\n */\n setLanguage(options: {\n languageCode: string;\n }): Promise<{\n setLanguage: string;\n }>;\n\n /**\n * Disable console log overwrite\n *\n * @since 7.0.0\n */\n disableConsoleLogOverwrite(): Promise<{\n consoleLogDisabled: boolean;\n }>;\n\n /**\n * Enable debug console log\n *\n * @since 7.0.0\n */\n enableDebugConsoleLog(): Promise<{\n debugConsoleLogEnabled: boolean;\n }>;\n\n /**\n * Set the notification container offset\n *\n * @since 15.2.0\n */\n setNotificationContainerOffset(options: {\n x: number;\n y: number;\n }): Promise<{\n notificationContainerOffsetSet: boolean;\n }>;\n\n}"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nexport type CallbackID = string;\n\nexport interface GleapEventMessage {\n name: string,\n data?: any,\n}\n\nexport type GleapEventCallback = (message: GleapEventMessage | null, err?: any) => void;\n\nexport interface GleapPlugin {\n /**\n * Initialize Gleap with an API key\n *\n * @since 7.0.0\n */\n initialize(options: {\n API_KEY: string;\n }): Promise<{\n initialized: boolean;\n }>;\n\n /**\n * Set user identity\n *\n * @since 7.0.0\n */\n identify(options: {\n userId: string;\n userHash?: string;\n name?: string;\n email?: string;\n phone?: string;\n companyId?: string;\n companyName?: string;\n avatar?: string;\n sla?: number;\n plan?: string;\n value?: number;\n customData?: Object;\n }): Promise<{\n identify: boolean;\n }>;\n\n /**\n * Update user properties\n *\n * @since 13.2.1\n */\n updateContact(options: {\n name?: string;\n email?: string;\n phone?: string;\n companyId?: string;\n companyName?: string;\n avatar?: string;\n sla?: number;\n plan?: string;\n value?: number;\n customData?: Object;\n }): Promise<{\n identify: boolean;\n }>;\n\n /**\n * Clear user identity\n *\n * @since 7.0.0\n */\n clearIdentity(): Promise<{\n clearIdentity: boolean;\n }>;\n\n /**\n * Get the current user identity\n *\n * @since 8.1.0\n */\n getIdentity(): Promise<{\n identity: {\n userId: string;\n name?: string;\n email?: string;\n phone?: string;\n value?: number;\n };\n }>;\n\n /**\n * User identified status.\n *\n * @since 8.1.0\n */\n isUserIdentified(): Promise<{\n isUserIdentified: boolean;\n }>;\n\n /**\n * Submit a custom log message with the given level\n *\n * @since 7.0.0\n */\n log(options: {\n message: string;\n logLevel?: \"ERROR\" | \"WARNING\" | \"INFO\";\n }): Promise<{\n logged: boolean;\n }>;\n\n /**\n * Manually show a survey.\n *\n * @since 8.5.1\n */\n showSurvey(options: {\n surveyId: string;\n format?: \"survey\" | \"survey_full\";\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Add custom data\n *\n * @since 7.0.0\n */\n attachCustomData(options: {\n data: any;\n }): Promise<{\n attachedCustomData: boolean;\n }>;\n\n /**\n * Set tags\n *\n * @since 8.6.0\n */\n setTags(options: {\n tags: string[];\n }): Promise<{\n tagsSet: boolean;\n }>;\n\n /**\n * Set network logs blacklist\n *\n * @since 13.2.1\n */\n setNetworkLogsBlacklist(options: {\n blacklist: string[];\n }): Promise<{\n blacklistSet: boolean;\n }>;\n\n /**\n * Set network logs props to ignore\n *\n * @since 13.2.1\n */\n setNetworkLogPropsToIgnore(options: {\n propsToIgnore: string[];\n }): Promise<{\n propsToIgnoreSet: boolean;\n }>;\n\n /**\n * Registers a Frontend tool defined on your AI agent in the Gleap dashboard.\n * Prefer the `registerAgentTool(name, handler)` helper exported by this\n * package — it wires the agentToolExecution event and result round-trip for\n * you.\n *\n * @since 15.0.0\n */\n registerAgentTool(options: {\n name: string;\n }): Promise<void>;\n\n /**\n * Resolves a pending agent tool execution with the handler's result.\n * Used by the `registerAgentTool(name, handler)` helper.\n *\n * @since 15.0.0\n */\n sendAgentToolResult(options: {\n executionId: string;\n result: string;\n }): Promise<void>;\n\n /**\n * Called when a registered agent tool should execute.\n *\n * @since 15.0.0\n */\n addListener(\n eventName: 'agentToolExecution',\n listenerFunc: (data: {\n executionId: string;\n name: string;\n params: any;\n }) => void,\n ): Promise<PluginListenerHandle>;\n\n /**\n * Sets the value of a ticket attribute\n *\n * @since 13.5.0\n */\n setTicketAttribute(options: {\n key: string;\n value: string;\n }): Promise<{\n setTicketAttribute: boolean;\n }>;\n\n /**\n * Unset a ticket attribute\n *\n * @since 14.1.0\n */\n unsetTicketAttribute(options: {\n key: string;\n }): Promise<{\n unsetTicketAttribute: boolean;\n }>;\n\n /**\n * Clear all ticket attributes\n *\n * @since 14.1.0\n */\n clearTicketAttributes(): Promise<{\n clearTicketAttributes: boolean;\n }>;\n\n /**\n * Set custom data\n *\n * @since 7.0.0\n */\n setCustomData(options: {\n key: string;\n value: string;\n }): Promise<{\n setCustomData: boolean;\n }>;\n\n /**\n * Remove custom data by key\n *\n * @since 7.0.0\n */\n removeCustomData(options: {\n key: string;\n }): Promise<{\n removedCustomData: boolean;\n }>;\n\n /**\n * Clear custom data\n *\n * @since 7.0.0\n */\n clearCustomData(): Promise<{\n clearedCustomData: boolean;\n }>;\n\n /**\n * Log event to Gleap\n *\n * @since 8.0.0\n */\n trackEvent(options: {\n name: string;\n data?: any;\n }): Promise<{\n loggedEvent: boolean;\n }>;\n\n /**\n * Track a page view\n *\n * @since 8.4.1\n */\n trackPage(options: {\n pageName: string;\n }): Promise<{\n trackedPage: boolean;\n }>;\n\n /**\n * \n *\n * @since 7.0.0\n */\n setEventCallback(\n callback: GleapEventCallback,\n ): Promise<CallbackID>;\n\n /**\n * Log event to Gleap\n *\n * @since 7.0.0\n */\n sendSilentCrashReport(options: {\n description: string,\n severity?: \"LOW\" | \"MEDIUM\" | \"HIGH\";\n dataExclusion?: {\n customData: Boolean;\n metaData: Boolean;\n attachments: Boolean;\n consoleLog: Boolean;\n networkLogs: Boolean;\n customEventLog: Boolean;\n screenshot: Boolean;\n replays: Boolean;\n };\n }): Promise<{\n sentSilentBugReport: boolean;\n }>;\n\n /**\n * Prefills the widget's form data\n *\n * @since 7.0.0\n */\n preFillForm(options: {\n data: any;\n }): Promise<{\n preFilledForm: boolean;\n }>;\n\n /**\n * Add attachment as bas64 string\n *\n * @since 7.0.0\n */\n addAttachment(options: {\n base64data: string;\n name: string;\n }): Promise<{\n attachmentAdded: boolean;\n }>;\n\n /**\n * All attachments removed\n *\n * @since 7.0.0\n */\n removeAllAttachments(): Promise<{\n allAttachmentsRemoved: boolean;\n }>;\n\n /**\n * Open widget\n *\n * @since 7.0.0\n */\n open(): Promise<{\n openedWidget: boolean;\n }>;\n\n /**\n * Open news\n *\n * @since 8.4.0\n */\n openNews(options: {\n showBackButton?: boolean;\n }): Promise<{\n openedNews: boolean;\n }>;\n\n /**\n * Open news article\n *\n * @since 8.4.0\n */\n openNewsArticle(options: {\n articleId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center\n *\n * @since 8.4.0\n */\n openHelpCenter(options: {\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center article\n *\n * @since 8.4.0\n */\n openHelpCenterArticle(options: {\n articleId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Ask the AI a question\n *\n * @since 15.0.0\n */\n askAI(options: {\n question: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open help center collection\n *\n * @since 8.4.0\n */\n openHelpCenterCollection(options: {\n collectionId: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Search help center\n *\n * @since 8.4.0\n */\n searchHelpCenter(options: {\n term: string;\n showBackButton?: boolean;\n }): Promise<{\n opened: boolean;\n }>;\n\n /**\n * Open feature requests\n *\n * @since 8.4.0\n */\n openFeatureRequests(options: {\n showBackButton?: boolean;\n }): Promise<{\n openedFeatureRequests: boolean;\n }>;\n\n /**\n * Close widget\n *\n * @since 7.0.0\n */\n close(): Promise<{\n closedWidget: boolean;\n }>;\n\n /**\n * Check widget status code\n *\n * @since 7.0.0\n */\n isOpened(): Promise<{\n isOpened: boolean;\n }>;\n\n /**\n * Start feedback flow\n *\n * @since 7.0.0\n */\n startFeedbackFlow(options: {\n feedbackFlow?: string;\n showBackButton?: boolean;\n }): Promise<{\n startedFeedbackFlow: boolean;\n }>;\n\n /**\n * Start a classic form\n *\n * @since 13.1.0\n */\n startClassicForm(options: {\n formId?: string;\n showBackButton?: boolean;\n }): Promise<{\n classicFormStarted: boolean;\n }>;\n\n /**\n * Start a new conversation\n *\n * @since 13.1.0\n */\n startConversation(options: {\n showBackButton?: boolean;\n }): Promise<{\n conversationStarted: boolean;\n }>;\n\n /**\n * Opens the conversations tab.\n *\n * @since 13.9.0\n */\n openConversation(options: {\n showBackButton?: boolean;\n }): Promise<{\n conversationsOpened: boolean;\n }>;\n\n /**\n * Start bot\n *\n * @since 10.0.3\n */\n startBot(options: {\n botId?: string;\n showBackButton?: boolean;\n }): Promise<{\n startedBot: boolean;\n }>;\n\n /**\n * Show or hide the feedback button.\n *\n * @since 8.0.0\n */\n showFeedbackButton(options: {\n show?: boolean;\n }): Promise<{\n feedbackButtonShown: boolean;\n }>;\n\n /**\n* Disable in app notifications.\n*\n* @since 8.6.1\n*/\n setDisableInAppNotifications(options: {\n disableInAppNotifications?: boolean;\n }): Promise<{\n inAppNotificationsDisabled: boolean;\n }>;\n\n /**\n * Set Language\n *\n * @since 7.0.0\n */\n setLanguage(options: {\n languageCode: string;\n }): Promise<{\n setLanguage: string;\n }>;\n\n /**\n * Disable console log overwrite\n *\n * @since 7.0.0\n */\n disableConsoleLogOverwrite(): Promise<{\n consoleLogDisabled: boolean;\n }>;\n\n /**\n * Enable debug console log\n *\n * @since 7.0.0\n */\n enableDebugConsoleLog(): Promise<{\n debugConsoleLogEnabled: boolean;\n }>;\n\n /**\n * Set the notification container offset\n *\n * @since 15.2.0\n */\n setNotificationContainerOffset(options: {\n x: number;\n y: number;\n }): Promise<{\n notificationContainerOffsetSet: boolean;\n }>;\n\n}"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { GleapPlugin } from './definitions';
|
|
2
2
|
declare const Gleap: GleapPlugin;
|
|
3
|
+
/**
|
|
4
|
+
* Registers the handler for a Frontend tool defined on your AI agent in the
|
|
5
|
+
* Gleap dashboard. The agent calls the handler with the configured parameters
|
|
6
|
+
* and waits for the returned result (string or object, which gets
|
|
7
|
+
* stringified).
|
|
8
|
+
*/
|
|
9
|
+
declare const registerAgentTool: (name: string, handler: (params: any) => any | Promise<any>) => Promise<void>;
|
|
3
10
|
export * from './definitions';
|
|
4
|
-
export { Gleap };
|
|
11
|
+
export { Gleap, registerAgentTool };
|
package/dist/esm/index.js
CHANGED
|
@@ -2,6 +2,57 @@ import { registerPlugin } from '@capacitor/core';
|
|
|
2
2
|
const Gleap = registerPlugin('Gleap', {
|
|
3
3
|
web: () => import('./web').then(m => new m.GleapWeb()),
|
|
4
4
|
});
|
|
5
|
+
const registeredAgentTools = {};
|
|
6
|
+
let agentToolListenerAttached = false;
|
|
7
|
+
/**
|
|
8
|
+
* Registers the handler for a Frontend tool defined on your AI agent in the
|
|
9
|
+
* Gleap dashboard. The agent calls the handler with the configured parameters
|
|
10
|
+
* and waits for the returned result (string or object, which gets
|
|
11
|
+
* stringified).
|
|
12
|
+
*/
|
|
13
|
+
const registerAgentTool = async (name, handler) => {
|
|
14
|
+
if (!name || typeof handler !== 'function') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
registeredAgentTools[name] = handler;
|
|
18
|
+
if (!agentToolListenerAttached) {
|
|
19
|
+
agentToolListenerAttached = true;
|
|
20
|
+
await Gleap.addListener('agentToolExecution', async (data) => {
|
|
21
|
+
var _a;
|
|
22
|
+
try {
|
|
23
|
+
const { executionId, name: toolName, params } = data !== null && data !== void 0 ? data : {};
|
|
24
|
+
if (!executionId || !toolName) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let result;
|
|
28
|
+
const toolHandler = registeredAgentTools[toolName];
|
|
29
|
+
if (!toolHandler) {
|
|
30
|
+
result = `No handler registered for tool '${toolName}' in the app. Register one via Gleap.registerAgentTool('${toolName}', handler).`;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
try {
|
|
34
|
+
const handlerResult = await toolHandler(params !== null && params !== void 0 ? params : {});
|
|
35
|
+
result =
|
|
36
|
+
typeof handlerResult === 'string'
|
|
37
|
+
? handlerResult
|
|
38
|
+
: JSON.stringify(handlerResult !== null && handlerResult !== void 0 ? handlerResult : '');
|
|
39
|
+
if (!result) {
|
|
40
|
+
result = 'The action completed without returning a result.';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
result = `Tool execution failed: ${(_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : 'unknown error'}`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
await Gleap.sendAgentToolResult({ executionId, result });
|
|
48
|
+
}
|
|
49
|
+
catch (exp) {
|
|
50
|
+
// Ignore.
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
await Gleap.registerAgentTool({ name });
|
|
55
|
+
};
|
|
5
56
|
export * from './definitions';
|
|
6
|
-
export { Gleap };
|
|
57
|
+
export { Gleap, registerAgentTool };
|
|
7
58
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,KAAK,GAAG,cAAc,CAAc,OAAO,EAAE;IACjD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;CACvD,CAAC,CAAC;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { GleapPlugin } from './definitions';\n\nconst Gleap = registerPlugin<GleapPlugin>('Gleap', {\n web: () => import('./web').then(m => new m.GleapWeb()),\n});\n\nexport * from './definitions';\nexport { Gleap };\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,KAAK,GAAG,cAAc,CAAc,OAAO,EAAE;IACjD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAEtB,EAAE,CAAC;AACP,IAAI,yBAAyB,GAAG,KAAK,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,KAAK,EAC7B,IAAY,EACZ,OAA4C,EAC7B,EAAE;IACjB,IAAI,CAAC,IAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QAC1C,OAAO;KACR;IAED,oBAAoB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAErC,IAAI,CAAC,yBAAyB,EAAE;QAC9B,yBAAyB,GAAG,IAAI,CAAC;QAEjC,MAAM,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;;YACzD,IAAI;gBACF,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,EAAU,CAAC;gBACpE,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE;oBAC7B,OAAO;iBACR;gBAED,IAAI,MAAM,CAAC;gBACX,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAM,GAAG,mCAAmC,QAAQ,2DAA2D,QAAQ,cAAc,CAAC;iBACvI;qBAAM;oBACL,IAAI;wBACF,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC;wBACtD,MAAM;4BACJ,OAAO,aAAa,KAAK,QAAQ;gCAC/B,CAAC,CAAC,aAAa;gCACf,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC,CAAC;wBAC1C,IAAI,CAAC,MAAM,EAAE;4BACX,MAAM,GAAG,kDAAkD,CAAC;yBAC7D;qBACF;oBAAC,OAAO,KAAU,EAAE;wBACnB,MAAM,GAAG,0BACP,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,eACpB,EAAE,CAAC;qBACJ;iBACF;gBAED,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;aAC1D;YAAC,OAAO,GAAG,EAAE;gBACZ,UAAU;aACX;QACH,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { GleapPlugin } from './definitions';\n\nconst Gleap = registerPlugin<GleapPlugin>('Gleap', {\n web: () => import('./web').then(m => new m.GleapWeb()),\n});\n\nconst registeredAgentTools: {\n [name: string]: (params: any) => any | Promise<any>;\n} = {};\nlet agentToolListenerAttached = false;\n\n/**\n * Registers the handler for a Frontend tool defined on your AI agent in the\n * Gleap dashboard. The agent calls the handler with the configured parameters\n * and waits for the returned result (string or object, which gets\n * stringified).\n */\nconst registerAgentTool = async (\n name: string,\n handler: (params: any) => any | Promise<any>,\n): Promise<void> => {\n if (!name || typeof handler !== 'function') {\n return;\n }\n\n registeredAgentTools[name] = handler;\n\n if (!agentToolListenerAttached) {\n agentToolListenerAttached = true;\n\n await Gleap.addListener('agentToolExecution', async data => {\n try {\n const { executionId, name: toolName, params } = data ?? ({} as any);\n if (!executionId || !toolName) {\n return;\n }\n\n let result;\n const toolHandler = registeredAgentTools[toolName];\n if (!toolHandler) {\n result = `No handler registered for tool '${toolName}' in the app. Register one via Gleap.registerAgentTool('${toolName}', handler).`;\n } else {\n try {\n const handlerResult = await toolHandler(params ?? {});\n result =\n typeof handlerResult === 'string'\n ? handlerResult\n : JSON.stringify(handlerResult ?? '');\n if (!result) {\n result = 'The action completed without returning a result.';\n }\n } catch (error: any) {\n result = `Tool execution failed: ${\n error?.message ?? 'unknown error'\n }`;\n }\n }\n\n await Gleap.sendAgentToolResult({ executionId, result });\n } catch (exp) {\n // Ignore.\n }\n });\n }\n\n await Gleap.registerAgentTool({ name });\n};\n\nexport * from './definitions';\nexport { Gleap, registerAgentTool };\n"]}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -5,29 +5,21 @@ export declare class GleapWeb extends WebPlugin implements GleapPlugin {
|
|
|
5
5
|
[key: string]: GleapEventCallback;
|
|
6
6
|
};
|
|
7
7
|
static initialized: boolean;
|
|
8
|
+
static agentToolExecutionCounter: number;
|
|
9
|
+
private pendingAgentToolExecutions;
|
|
8
10
|
initialize(options: {
|
|
9
11
|
API_KEY: string;
|
|
10
12
|
}): Promise<{
|
|
11
13
|
initialized: boolean;
|
|
12
14
|
}>;
|
|
13
15
|
registerCallbackListeners(): void;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
name: string;
|
|
22
|
-
description: string;
|
|
23
|
-
type: 'string' | 'number' | 'boolean';
|
|
24
|
-
required: boolean;
|
|
25
|
-
enums?: string[] | undefined;
|
|
26
|
-
}[];
|
|
27
|
-
}[];
|
|
28
|
-
}): Promise<{
|
|
29
|
-
aiToolsSet: boolean;
|
|
30
|
-
}>;
|
|
16
|
+
registerAgentTool(options: {
|
|
17
|
+
name: string;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
sendAgentToolResult(options: {
|
|
20
|
+
executionId: string;
|
|
21
|
+
result: string;
|
|
22
|
+
}): Promise<void>;
|
|
31
23
|
setTicketAttribute(options: {
|
|
32
24
|
key: string;
|
|
33
25
|
value: string;
|