@mirra-messenger/sdk 0.4.0 → 0.5.1

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.
@@ -221,6 +221,17 @@ function createFlowsAdapter(sdk) {
221
221
  method: 'validateTrigger',
222
222
  params: args || {}
223
223
  });
224
+ },
225
+ /**
226
+ * Get all active flows that are triggered by a specific event type. Used by frontend to show flow selection for targeted execution (e.g., call.action flows).
227
+ * @param args.eventType - Event type to filter by (e.g., "call.action", "call.ended", "telegram.message")
228
+ */
229
+ getFlowsByEventType: async (args) => {
230
+ return sdk.resources.call({
231
+ resourceId: 'flows',
232
+ method: 'getFlowsByEventType',
233
+ params: args || {}
234
+ });
224
235
  }
225
236
  };
226
237
  }
@@ -435,9 +446,13 @@ function createMemoryAdapter(sdk) {
435
446
  });
436
447
  },
437
448
  /**
438
- * Semantic search across memory entities
439
- * @param args.query - Search query text
440
- * @param args.limit - Maximum number of results to return (default: 50, max: 100) (optional)
449
+ * Semantic search across memory entities with advanced filtering
450
+ * @param args.query - Search query text for semantic matching
451
+ * @param args.types - Filter by entity types (e.g., ["TASK", "NOTE", "IDEA"]) (optional)
452
+ * @param args.startTime - Filter entities created after this timestamp (Unix milliseconds) (optional)
453
+ * @param args.endTime - Filter entities created before this timestamp (Unix milliseconds) (optional)
454
+ * @param args.propertyFilters - Filter by entity properties: { status: ["completed"], tags: ["urgent"], priority: ["high"], roles: ["task"], contexts: ["work"] } (optional)
455
+ * @param args.limit - Maximum number of results (default: 50, max: 100) (optional)
441
456
  */
442
457
  search: async (args) => {
443
458
  return sdk.resources.call({
@@ -447,11 +462,11 @@ function createMemoryAdapter(sdk) {
447
462
  });
448
463
  },
449
464
  /**
450
- * Query entities with filters and pagination
451
- * @param args.type - Entity type filter (optional)
452
- * @param args.filters - Additional filters (optional)
453
- * @param args.limit - Maximum results (default: 50, max: 100) (optional)
454
- * @param args.offset - Pagination offset (default: 0) (optional)
465
+ * Query memory entities with filters. Returns lightweight summaries with normalized fields: id, type, name, description, status, priority, createdAt, updatedAt
466
+ * @param args.type - Semantic type filter (e.g., "task", "note", "idea", "reminder", "contact", "document"). Matches against meta_item_type, subType, or semantic_roles (optional)
467
+ * @param args.filters - Additional filters (not yet implemented) (optional)
468
+ * @param args.limit - Maximum results (default: 50, max: 100). Use smaller limits to get complete results without truncation (optional)
469
+ * @param args.offset - Pagination offset for fetching more results (default: 0) (optional)
455
470
  */
456
471
  query: async (args) => {
457
472
  return sdk.resources.call({
@@ -786,9 +801,7 @@ function createTelegramAdapter(sdk) {
786
801
  });
787
802
  },
788
803
  /**
789
- * Get recent contacts from Telegram, optionally filtering for new contacts since a specific date.
790
- * @param args.sinceDate - ISO date string - only return contacts with activity since this date (optional)
791
- * @param args.onlyNewContacts - If true, only return contacts that are new (first message after sinceDate) (optional)
804
+ * Get recent private chat contacts from Telegram, ordered by most recent activity. Uses the cached chat list filtered for 1:1 conversations.
792
805
  * @param args.limit - Maximum number of contacts to return (default: 100, max: 100) (optional)
793
806
  */
794
807
  getRecentContacts: async (args) => {
@@ -977,28 +990,6 @@ function createGoogleGmailAdapter(sdk) {
977
990
  params: args || {}
978
991
  });
979
992
  },
980
- /**
981
- * Mark an email as read
982
- * @param args.messageId - Gmail message ID to mark as read
983
- */
984
- markAsRead: async (args) => {
985
- return sdk.resources.call({
986
- resourceId: 'google-gmail',
987
- method: 'markAsRead',
988
- params: args || {}
989
- });
990
- },
991
- /**
992
- * Mark an email as unread
993
- * @param args.messageId - Gmail message ID to mark as unread
994
- */
995
- markAsUnread: async (args) => {
996
- return sdk.resources.call({
997
- resourceId: 'google-gmail',
998
- method: 'markAsUnread',
999
- params: args || {}
1000
- });
1001
- },
1002
993
  /**
1003
994
  * Delete an email
1004
995
  * @param args.messageId - Gmail message ID to delete
@@ -1061,6 +1052,58 @@ function createGoogleCalendarAdapter(sdk) {
1061
1052
  method: 'getEvents',
1062
1053
  params: args || {}
1063
1054
  });
1055
+ },
1056
+ /**
1057
+ * Get a specific calendar event by ID
1058
+ * @param args.eventId - Calendar event ID
1059
+ */
1060
+ getEvent: async (args) => {
1061
+ return sdk.resources.call({
1062
+ resourceId: 'google-calendar',
1063
+ method: 'getEvent',
1064
+ params: args || {}
1065
+ });
1066
+ },
1067
+ /**
1068
+ * Update an existing calendar event
1069
+ * @param args.eventId - Calendar event ID to update
1070
+ * @param args.summary - Updated event title/summary (optional)
1071
+ * @param args.description - Updated event description (optional)
1072
+ * @param args.location - Updated event location (optional)
1073
+ * @param args.start - Updated start time object with dateTime and optional timeZone (optional)
1074
+ * @param args.end - Updated end time object with dateTime and optional timeZone (optional)
1075
+ */
1076
+ updateEvent: async (args) => {
1077
+ return sdk.resources.call({
1078
+ resourceId: 'google-calendar',
1079
+ method: 'updateEvent',
1080
+ params: args || {}
1081
+ });
1082
+ },
1083
+ /**
1084
+ * Delete a calendar event
1085
+ * @param args.eventId - Calendar event ID to delete
1086
+ */
1087
+ deleteEvent: async (args) => {
1088
+ return sdk.resources.call({
1089
+ resourceId: 'google-calendar',
1090
+ method: 'deleteEvent',
1091
+ params: args || {}
1092
+ });
1093
+ },
1094
+ /**
1095
+ * Search calendar events by text query
1096
+ * @param args.query - Search query to filter events
1097
+ * @param args.timeMin - Start time for events to search (ISO 8601) (optional)
1098
+ * @param args.timeMax - End time for events to search (ISO 8601) (optional)
1099
+ * @param args.maxResults - Maximum number of events to return (default: 50, max: 100) (optional)
1100
+ */
1101
+ searchEvents: async (args) => {
1102
+ return sdk.resources.call({
1103
+ resourceId: 'google-calendar',
1104
+ method: 'searchEvents',
1105
+ params: args || {}
1106
+ });
1064
1107
  }
1065
1108
  };
1066
1109
  }
@@ -1130,6 +1173,66 @@ function createGoogleDriveAdapter(sdk) {
1130
1173
  method: 'shareFile',
1131
1174
  params: args || {}
1132
1175
  });
1176
+ },
1177
+ /**
1178
+ * Download a file from Google Drive. For Google Docs/Sheets, exports as PDF/XLSX. Returns base64-encoded data.
1179
+ * @param args.fileId - ID of the file to download
1180
+ */
1181
+ downloadFile: async (args) => {
1182
+ return sdk.resources.call({
1183
+ resourceId: 'google-drive',
1184
+ method: 'downloadFile',
1185
+ params: args || {}
1186
+ });
1187
+ },
1188
+ /**
1189
+ * Move a file to a different folder
1190
+ * @param args.fileId - ID of the file to move
1191
+ * @param args.folderId - ID of the destination folder
1192
+ */
1193
+ moveFile: async (args) => {
1194
+ return sdk.resources.call({
1195
+ resourceId: 'google-drive',
1196
+ method: 'moveFile',
1197
+ params: args || {}
1198
+ });
1199
+ },
1200
+ /**
1201
+ * Delete a file or folder. By default moves to trash; set permanently=true to delete forever.
1202
+ * @param args.fileId - ID of the file or folder to delete
1203
+ * @param args.permanently - If true, permanently delete instead of moving to trash (default: false) (optional)
1204
+ */
1205
+ deleteFile: async (args) => {
1206
+ return sdk.resources.call({
1207
+ resourceId: 'google-drive',
1208
+ method: 'deleteFile',
1209
+ params: args || {}
1210
+ });
1211
+ },
1212
+ /**
1213
+ * Search for files using Google Drive query syntax
1214
+ * @param args.query - Search query using Drive syntax (e.g., "name contains 'report'", "mimeType='application/pdf'")
1215
+ * @param args.pageSize - Maximum number of files to return (default: 20) (optional)
1216
+ */
1217
+ searchFiles: async (args) => {
1218
+ return sdk.resources.call({
1219
+ resourceId: 'google-drive',
1220
+ method: 'searchFiles',
1221
+ params: args || {}
1222
+ });
1223
+ },
1224
+ /**
1225
+ * Update file metadata (name, description)
1226
+ * @param args.fileId - ID of the file to update
1227
+ * @param args.name - New name for the file (optional)
1228
+ * @param args.description - New description for the file (optional)
1229
+ */
1230
+ updateFile: async (args) => {
1231
+ return sdk.resources.call({
1232
+ resourceId: 'google-drive',
1233
+ method: 'updateFile',
1234
+ params: args || {}
1235
+ });
1133
1236
  }
1134
1237
  };
1135
1238
  }
@@ -1187,6 +1290,196 @@ function createGoogleSheetsAdapter(sdk) {
1187
1290
  method: 'appendRow',
1188
1291
  params: args || {}
1189
1292
  });
1293
+ },
1294
+ /**
1295
+ * Get spreadsheet metadata and properties
1296
+ * @param args.spreadsheetId - ID of the spreadsheet
1297
+ */
1298
+ getSpreadsheet: async (args) => {
1299
+ return sdk.resources.call({
1300
+ resourceId: 'google-sheets',
1301
+ method: 'getSpreadsheet',
1302
+ params: args || {}
1303
+ });
1304
+ },
1305
+ /**
1306
+ * Insert a value at a specific cell with optional formatting
1307
+ * @param args.spreadsheetId - ID of the spreadsheet
1308
+ * @param args.cell - Cell reference in format SheetName!A1
1309
+ * @param args.value - Value to insert
1310
+ * @param args.bold - Make text bold (optional)
1311
+ * @param args.italic - Make text italic (optional)
1312
+ * @param args.foregroundColor - Text color (hex or named color) (optional)
1313
+ * @param args.backgroundColor - Cell background color (hex or named color) (optional)
1314
+ */
1315
+ insertAtCell: async (args) => {
1316
+ return sdk.resources.call({
1317
+ resourceId: 'google-sheets',
1318
+ method: 'insertAtCell',
1319
+ params: args || {}
1320
+ });
1321
+ },
1322
+ /**
1323
+ * Insert a formula at a specific cell
1324
+ * @param args.spreadsheetId - ID of the spreadsheet
1325
+ * @param args.cell - Cell reference in format SheetName!A1
1326
+ * @param args.formula - Formula to insert (with or without leading =)
1327
+ * @param args.note - Optional note to add to the cell (optional)
1328
+ */
1329
+ insertFormula: async (args) => {
1330
+ return sdk.resources.call({
1331
+ resourceId: 'google-sheets',
1332
+ method: 'insertFormula',
1333
+ params: args || {}
1334
+ });
1335
+ },
1336
+ /**
1337
+ * Apply formatting to a range of cells
1338
+ * @param args.spreadsheetId - ID of the spreadsheet
1339
+ * @param args.range - Range in format SheetName!A1:B10
1340
+ * @param args.bold - Make text bold (optional)
1341
+ * @param args.italic - Make text italic (optional)
1342
+ * @param args.foregroundColor - Text color (hex or named color) (optional)
1343
+ * @param args.backgroundColor - Cell background color (hex or named color) (optional)
1344
+ * @param args.borders - Add borders to cells (optional)
1345
+ */
1346
+ formatRange: async (args) => {
1347
+ return sdk.resources.call({
1348
+ resourceId: 'google-sheets',
1349
+ method: 'formatRange',
1350
+ params: args || {}
1351
+ });
1352
+ },
1353
+ /**
1354
+ * Create a chart from spreadsheet data
1355
+ * @param args.spreadsheetId - ID of the spreadsheet
1356
+ * @param args.sheetId - ID of the sheet containing data
1357
+ * @param args.dataRange - Data range for the chart (e.g., A1:B10)
1358
+ * @param args.chartType - Chart type: BAR, LINE, AREA, PIE, or SCATTER
1359
+ * @param args.title - Chart title
1360
+ * @param args.position - Chart position with row, column, rowCount, columnCount
1361
+ */
1362
+ createChart: async (args) => {
1363
+ return sdk.resources.call({
1364
+ resourceId: 'google-sheets',
1365
+ method: 'createChart',
1366
+ params: args || {}
1367
+ });
1368
+ },
1369
+ /**
1370
+ * Find and replace text in a spreadsheet
1371
+ * @param args.spreadsheetId - ID of the spreadsheet
1372
+ * @param args.findText - Text to find
1373
+ * @param args.replaceText - Text to replace with
1374
+ * @param args.sheetName - Limit search to specific sheet (optional)
1375
+ * @param args.matchCase - Case-sensitive search (optional)
1376
+ * @param args.matchEntireCell - Match entire cell content only (optional)
1377
+ */
1378
+ findAndReplace: async (args) => {
1379
+ return sdk.resources.call({
1380
+ resourceId: 'google-sheets',
1381
+ method: 'findAndReplace',
1382
+ params: args || {}
1383
+ });
1384
+ },
1385
+ /**
1386
+ * Insert multiple rows of data at once
1387
+ * @param args.spreadsheetId - ID of the spreadsheet
1388
+ * @param args.sheetName - Name of the sheet
1389
+ * @param args.rowsData - 2D array of row data to insert
1390
+ * @param args.startingRow - Row number to start insertion (1-indexed). If not provided, appends to end (optional)
1391
+ * @param args.formattingOptions - Optional formatting to apply (bold, italic, foregroundColor, backgroundColor, borders) (optional)
1392
+ */
1393
+ insertMultipleRows: async (args) => {
1394
+ return sdk.resources.call({
1395
+ resourceId: 'google-sheets',
1396
+ method: 'insertMultipleRows',
1397
+ params: args || {}
1398
+ });
1399
+ },
1400
+ /**
1401
+ * Clear content from a range of cells
1402
+ * @param args.spreadsheetId - ID of the spreadsheet
1403
+ * @param args.sheetName - Name of the sheet
1404
+ * @param args.range - Range to clear (e.g., A1:B10)
1405
+ */
1406
+ clearRange: async (args) => {
1407
+ return sdk.resources.call({
1408
+ resourceId: 'google-sheets',
1409
+ method: 'clearRange',
1410
+ params: args || {}
1411
+ });
1412
+ },
1413
+ /**
1414
+ * Insert empty rows at a specific position in a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Row indices are 0-indexed (row 1 in UI = index 0).
1415
+ * @param args.spreadsheetId - ID of the spreadsheet
1416
+ * @param args.sheetId - Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
1417
+ * @param args.startRowIndex - Row index to start inserting at (0-indexed). To insert before row 5 in the UI, use index 4.
1418
+ * @param args.numRows - Number of rows to insert
1419
+ */
1420
+ insertRows: async (args) => {
1421
+ return sdk.resources.call({
1422
+ resourceId: 'google-sheets',
1423
+ method: 'insertRows',
1424
+ params: args || {}
1425
+ });
1426
+ },
1427
+ /**
1428
+ * Delete rows from a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Row indices are 0-indexed (row 1 in UI = index 0).
1429
+ * @param args.spreadsheetId - ID of the spreadsheet
1430
+ * @param args.sheetId - Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
1431
+ * @param args.startRowIndex - Row index to start deleting from (0-indexed). To delete row 5 in the UI, use index 4.
1432
+ * @param args.numRows - Number of rows to delete
1433
+ */
1434
+ deleteRows: async (args) => {
1435
+ return sdk.resources.call({
1436
+ resourceId: 'google-sheets',
1437
+ method: 'deleteRows',
1438
+ params: args || {}
1439
+ });
1440
+ },
1441
+ /**
1442
+ * Insert empty columns at a specific position in a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Column indices are 0-indexed (A=0, B=1, C=2, etc.).
1443
+ * @param args.spreadsheetId - ID of the spreadsheet
1444
+ * @param args.sheetId - Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
1445
+ * @param args.startColumnIndex - Column index to start inserting at (0-indexed: A=0, B=1, C=2, D=3, etc.). To insert before column D, use index 3.
1446
+ * @param args.numColumns - Number of columns to insert
1447
+ */
1448
+ insertColumns: async (args) => {
1449
+ return sdk.resources.call({
1450
+ resourceId: 'google-sheets',
1451
+ method: 'insertColumns',
1452
+ params: args || {}
1453
+ });
1454
+ },
1455
+ /**
1456
+ * Delete columns from a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Column indices are 0-indexed (A=0, B=1, C=2, etc.).
1457
+ * @param args.spreadsheetId - ID of the spreadsheet
1458
+ * @param args.sheetId - Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
1459
+ * @param args.startColumnIndex - Column index to start deleting from (0-indexed: A=0, B=1, C=2, D=3, etc.). To delete column D, use index 3.
1460
+ * @param args.numColumns - Number of columns to delete
1461
+ */
1462
+ deleteColumns: async (args) => {
1463
+ return sdk.resources.call({
1464
+ resourceId: 'google-sheets',
1465
+ method: 'deleteColumns',
1466
+ params: args || {}
1467
+ });
1468
+ },
1469
+ /**
1470
+ * Copy data from one range to another location within the same spreadsheet. IMPORTANT: Requires numeric sheetIds (get from getSpreadsheet), not sheet names. Can copy within same sheet or across sheets.
1471
+ * @param args.spreadsheetId - ID of the spreadsheet
1472
+ * @param args.sourceSheetId - Numeric sheet ID of the source sheet (get from getSpreadsheet response: sheets[n].properties.sheetId)
1473
+ * @param args.sourceRange - Source range in A1 notation WITHOUT sheet name (e.g., "A1:C5", not "Sheet1!A1:C5")
1474
+ * @param args.targetSheetId - Numeric sheet ID of the target sheet (can be same as sourceSheetId to copy within same sheet)
1475
+ * @param args.targetStartCell - Target start cell in A1 notation (e.g., "E1"). The copied data will fill cells starting from this position.
1476
+ */
1477
+ copyRange: async (args) => {
1478
+ return sdk.resources.call({
1479
+ resourceId: 'google-sheets',
1480
+ method: 'copyRange',
1481
+ params: args || {}
1482
+ });
1190
1483
  }
1191
1484
  };
1192
1485
  }
@@ -1242,6 +1535,127 @@ function createGoogleDocsAdapter(sdk) {
1242
1535
  method: 'replaceText',
1243
1536
  params: args || {}
1244
1537
  });
1538
+ },
1539
+ /**
1540
+ * Get the text content of a Google Doc
1541
+ * @param args.documentId - ID of the document
1542
+ */
1543
+ getDocumentContent: async (args) => {
1544
+ return sdk.resources.call({
1545
+ resourceId: 'google-docs',
1546
+ method: 'getDocumentContent',
1547
+ params: args || {}
1548
+ });
1549
+ },
1550
+ /**
1551
+ * Insert text at a specific position in the document
1552
+ * @param args.documentId - ID of the document
1553
+ * @param args.text - Text to insert
1554
+ * @param args.position - Character position to insert at (1-indexed)
1555
+ */
1556
+ insertTextAtPosition: async (args) => {
1557
+ return sdk.resources.call({
1558
+ resourceId: 'google-docs',
1559
+ method: 'insertTextAtPosition',
1560
+ params: args || {}
1561
+ });
1562
+ },
1563
+ /**
1564
+ * Insert text after a search string in the document
1565
+ * @param args.documentId - ID of the document
1566
+ * @param args.searchText - Text to search for
1567
+ * @param args.textToInsert - Text to insert after the search text
1568
+ * @param args.occurrence - Which occurrence to insert after (default: 1) (optional)
1569
+ */
1570
+ insertTextAfter: async (args) => {
1571
+ return sdk.resources.call({
1572
+ resourceId: 'google-docs',
1573
+ method: 'insertTextAfter',
1574
+ params: args || {}
1575
+ });
1576
+ },
1577
+ /**
1578
+ * Insert a heading into the document
1579
+ * @param args.documentId - ID of the document
1580
+ * @param args.text - Heading text
1581
+ * @param args.level - Heading level (1-6)
1582
+ * @param args.position - Character position to insert at (optional)
1583
+ * @param args.insertAfterText - Insert after this text instead of at position (optional)
1584
+ */
1585
+ insertHeading: async (args) => {
1586
+ return sdk.resources.call({
1587
+ resourceId: 'google-docs',
1588
+ method: 'insertHeading',
1589
+ params: args || {}
1590
+ });
1591
+ },
1592
+ /**
1593
+ * Insert a bulleted or numbered list into the document
1594
+ * @param args.documentId - ID of the document
1595
+ * @param args.items - Array of list items
1596
+ * @param args.listType - Type of list: "bulleted" or "numbered"
1597
+ * @param args.position - Character position to insert at (optional)
1598
+ * @param args.insertAfterText - Insert after this text instead of at position (optional)
1599
+ */
1600
+ insertList: async (args) => {
1601
+ return sdk.resources.call({
1602
+ resourceId: 'google-docs',
1603
+ method: 'insertList',
1604
+ params: args || {}
1605
+ });
1606
+ },
1607
+ /**
1608
+ * Insert a table into the document
1609
+ * @param args.documentId - ID of the document
1610
+ * @param args.data - 2D array of table data (rows x columns)
1611
+ * @param args.hasHeader - Whether the first row is a header (default: true) (optional)
1612
+ * @param args.position - Character position to insert at (optional)
1613
+ * @param args.insertAfterText - Insert after this text instead of at position (optional)
1614
+ */
1615
+ insertTable: async (args) => {
1616
+ return sdk.resources.call({
1617
+ resourceId: 'google-docs',
1618
+ method: 'insertTable',
1619
+ params: args || {}
1620
+ });
1621
+ },
1622
+ /**
1623
+ * Replace the entire content of a document
1624
+ * @param args.documentId - ID of the document
1625
+ * @param args.newContent - New content to replace existing content
1626
+ */
1627
+ updateDocumentContent: async (args) => {
1628
+ return sdk.resources.call({
1629
+ resourceId: 'google-docs',
1630
+ method: 'updateDocumentContent',
1631
+ params: args || {}
1632
+ });
1633
+ },
1634
+ /**
1635
+ * Create a new section with a heading and content
1636
+ * @param args.documentId - ID of the document
1637
+ * @param args.heading - Section heading text
1638
+ * @param args.content - Section content text
1639
+ */
1640
+ createSection: async (args) => {
1641
+ return sdk.resources.call({
1642
+ resourceId: 'google-docs',
1643
+ method: 'createSection',
1644
+ params: args || {}
1645
+ });
1646
+ },
1647
+ /**
1648
+ * Find the character position for insertion based on position or search text
1649
+ * @param args.documentId - ID of the document
1650
+ * @param args.position - Position to find (1 for start, -1 for end)
1651
+ * @param args.searchText - Text to search for (returns position after this text) (optional)
1652
+ */
1653
+ findInsertionPoint: async (args) => {
1654
+ return sdk.resources.call({
1655
+ resourceId: 'google-docs',
1656
+ method: 'findInsertionPoint',
1657
+ params: args || {}
1658
+ });
1245
1659
  }
1246
1660
  };
1247
1661
  }
@@ -1411,6 +1825,32 @@ function createJiraAdapter(sdk) {
1411
1825
  method: 'getIssueTypes',
1412
1826
  params: args || {}
1413
1827
  });
1828
+ },
1829
+ /**
1830
+ * Search Jira API for available operations beyond core tools
1831
+ * @param args.query - Describe what you want to do (e.g., "add label to card")
1832
+ * @param args.limit - Max results to return (default 5) (optional)
1833
+ */
1834
+ discoverExtended: async (args) => {
1835
+ return sdk.resources.call({
1836
+ resourceId: 'jira',
1837
+ method: 'discoverExtended',
1838
+ params: args || {}
1839
+ });
1840
+ },
1841
+ /**
1842
+ * Execute a Jira API operation by operationId
1843
+ * @param args.operationId - The operationId from discoverExtended results
1844
+ * @param args.pathParams - Path parameters, e.g., { id: "abc123" } (optional)
1845
+ * @param args.queryParams - Query string parameters (optional)
1846
+ * @param args.body - Request body for POST/PUT/PATCH operations (optional)
1847
+ */
1848
+ executeExtended: async (args) => {
1849
+ return sdk.resources.call({
1850
+ resourceId: 'jira',
1851
+ method: 'executeExtended',
1852
+ params: args || {}
1853
+ });
1414
1854
  }
1415
1855
  };
1416
1856
  }
@@ -1432,7 +1872,7 @@ function createTwitterAdapter(sdk) {
1432
1872
  });
1433
1873
  },
1434
1874
  /**
1435
- * Retrieve tweets from a Twitter user
1875
+ * Retrieve tweets from a Twitter user. Must provide either userId OR userName.
1436
1876
  * @param args.userId - Twitter user ID (recommended for stability and speed) (optional)
1437
1877
  * @param args.userName - Twitter username/screen name (alternative to userId) (optional)
1438
1878
  * @param args.cursor - Pagination cursor for next page of results (optional)
@@ -1607,6 +2047,32 @@ function createTrelloAdapter(sdk) {
1607
2047
  method: 'deleteCheckItem',
1608
2048
  params: args || {}
1609
2049
  });
2050
+ },
2051
+ /**
2052
+ * Search Trello API for available operations beyond core tools
2053
+ * @param args.query - Describe what you want to do (e.g., "add label to card")
2054
+ * @param args.limit - Max results to return (default 5) (optional)
2055
+ */
2056
+ discoverExtended: async (args) => {
2057
+ return sdk.resources.call({
2058
+ resourceId: 'trello',
2059
+ method: 'discoverExtended',
2060
+ params: args || {}
2061
+ });
2062
+ },
2063
+ /**
2064
+ * Execute a Trello API operation by operationId
2065
+ * @param args.operationId - The operationId from discoverExtended results
2066
+ * @param args.pathParams - Path parameters, e.g., { id: "abc123" } (optional)
2067
+ * @param args.queryParams - Query string parameters (optional)
2068
+ * @param args.body - Request body for POST/PUT/PATCH operations (optional)
2069
+ */
2070
+ executeExtended: async (args) => {
2071
+ return sdk.resources.call({
2072
+ resourceId: 'trello',
2073
+ method: 'executeExtended',
2074
+ params: args || {}
2075
+ });
1610
2076
  }
1611
2077
  };
1612
2078
  }
@@ -1663,6 +2129,23 @@ function createJupiterAdapter(sdk) {
1663
2129
  method: 'searchTokens',
1664
2130
  params: args || {}
1665
2131
  });
2132
+ },
2133
+ /**
2134
+ * Refresh an expired swap with new quote and transaction
2135
+ * @param args.feedItemId - Feed item ID containing the swap to refresh
2136
+ * @param args.swapId - Original swap ID
2137
+ * @param args.inputMint - Input token mint address
2138
+ * @param args.outputMint - Output token mint address
2139
+ * @param args.amount - Amount to swap (in UI units)
2140
+ * @param args.inputDecimals - Input token decimals
2141
+ * @param args.slippageBps - Slippage tolerance in basis points (optional)
2142
+ */
2143
+ refreshSwap: async (args) => {
2144
+ return sdk.resources.call({
2145
+ resourceId: 'jupiter',
2146
+ method: 'refreshSwap',
2147
+ params: args || {}
2148
+ });
1666
2149
  }
1667
2150
  };
1668
2151
  }
@@ -1733,6 +2216,23 @@ function createCryptoAdapter(sdk) {
1733
2216
  method: 'unsubscribeAsset',
1734
2217
  params: args || {}
1735
2218
  });
2219
+ },
2220
+ /**
2221
+ * Refresh an expired transaction with new blockhash and updated details
2222
+ * @param args.feedItemId - Feed item ID containing the transaction to refresh
2223
+ * @param args.transferId - Original transfer ID
2224
+ * @param args.recipient - Recipient address
2225
+ * @param args.token - Token symbol or mint address
2226
+ * @param args.amount - Amount to send
2227
+ * @param args.tokenMint - Token mint address (optional, will resolve if not provided) (optional)
2228
+ * @param args.tokenDecimals - Token decimals (optional) (optional)
2229
+ */
2230
+ refreshTransaction: async (args) => {
2231
+ return sdk.resources.call({
2232
+ resourceId: 'crypto',
2233
+ method: 'refreshTransaction',
2234
+ params: args || {}
2235
+ });
1736
2236
  }
1737
2237
  };
1738
2238
  }
@@ -1971,6 +2471,175 @@ function createScriptsAdapter(sdk) {
1971
2471
  }
1972
2472
  };
1973
2473
  }
2474
+ /**
2475
+ * Feedback Adapter
2476
+ * Category: internal
2477
+ */
2478
+ function createFeedbackAdapter(sdk) {
2479
+ return {
2480
+ /**
2481
+ * Report a bug with detailed context and reproduction steps
2482
+ * @param args.title - Brief bug description
2483
+ * @param args.description - Detailed description of the bug
2484
+ * @param args.severity - Bug severity: critical, high, medium, or low
2485
+ * @param args.stepsToReproduce - Steps to reproduce the bug (optional)
2486
+ * @param args.expectedBehavior - What should happen (optional)
2487
+ * @param args.actualBehavior - What actually happens (optional)
2488
+ * @param args.errorDetails - Error details: { message, stack, code } (optional)
2489
+ * @param args.context - Additional context: { conversationId, recentMessages, platform, appVersion } (optional)
2490
+ * @param args.llmAnalysis - LLM analysis of the issue (optional)
2491
+ */
2492
+ reportBug: async (args) => {
2493
+ return sdk.resources.call({
2494
+ resourceId: 'feedback',
2495
+ method: 'reportBug',
2496
+ params: args || {}
2497
+ });
2498
+ },
2499
+ /**
2500
+ * Auto-report tool or adapter failures for debugging
2501
+ * @param args.adapterType - Adapter type (e.g., jupiter, crypto)
2502
+ * @param args.operation - Operation that failed (e.g., swap, sendToken)
2503
+ * @param args.errorMessage - Error message from the failure
2504
+ * @param args.errorCode - Error code if available (optional)
2505
+ * @param args.errorStack - Error stack trace (optional)
2506
+ * @param args.args - Sanitized arguments that caused the failure (optional)
2507
+ * @param args.llmAnalysis - LLM analysis of why it failed (optional)
2508
+ * @param args.suggestedFix - LLM suggested fix (optional)
2509
+ * @param args.context - Additional context: { conversationId, userId, timestamp } (optional)
2510
+ */
2511
+ reportToolFailure: async (args) => {
2512
+ return sdk.resources.call({
2513
+ resourceId: 'feedback',
2514
+ method: 'reportToolFailure',
2515
+ params: args || {}
2516
+ });
2517
+ },
2518
+ /**
2519
+ * Report when LLM cannot fulfill a user request
2520
+ * @param args.userRequest - What the user asked for
2521
+ * @param args.reason - Why it could not be fulfilled
2522
+ * @param args.suggestedCapability - What capability would enable this (optional)
2523
+ * @param args.relatedAdapters - Adapters that might be relevant (optional)
2524
+ * @param args.context - Additional context: { conversationId } (optional)
2525
+ */
2526
+ reportMissingCapability: async (args) => {
2527
+ return sdk.resources.call({
2528
+ resourceId: 'feedback',
2529
+ method: 'reportMissingCapability',
2530
+ params: args || {}
2531
+ });
2532
+ },
2533
+ /**
2534
+ * Submit general user feedback
2535
+ * @param args.sentiment - Sentiment: positive, negative, or neutral
2536
+ * @param args.feedback - Feedback content
2537
+ * @param args.category - Category: ux, performance, feature, or general (optional)
2538
+ * @param args.context - Additional context: { feature, screen } (optional)
2539
+ */
2540
+ submitFeedback: async (args) => {
2541
+ return sdk.resources.call({
2542
+ resourceId: 'feedback',
2543
+ method: 'submitFeedback',
2544
+ params: args || {}
2545
+ });
2546
+ },
2547
+ /**
2548
+ * Submit a feature request
2549
+ * @param args.title - Feature title
2550
+ * @param args.description - Feature description
2551
+ * @param args.useCase - Why the user needs this feature (optional)
2552
+ * @param args.priority - Priority: high, medium, or low (optional)
2553
+ */
2554
+ submitFeatureRequest: async (args) => {
2555
+ return sdk.resources.call({
2556
+ resourceId: 'feedback',
2557
+ method: 'submitFeatureRequest',
2558
+ params: args || {}
2559
+ });
2560
+ }
2561
+ };
2562
+ }
2563
+ /**
2564
+ * Mirra Messaging Adapter
2565
+ * Category: communication
2566
+ */
2567
+ function createMirraMessagingAdapter(sdk) {
2568
+ return {
2569
+ /**
2570
+ * Send a direct message to a contact. The message is sent as the authenticated user with optional automation metadata.
2571
+ * @param args.recipientId - User ID of the recipient (use findContact to look up by username)
2572
+ * @param args.content - Message text content
2573
+ * @param args.automation - Automation metadata: { source: "sdk" | "flow", flowId?: string, flowTitle?: string } (optional)
2574
+ */
2575
+ sendMessage: async (args) => {
2576
+ return sdk.resources.call({
2577
+ resourceId: 'mirra-messaging',
2578
+ method: 'sendMessage',
2579
+ params: args || {}
2580
+ });
2581
+ },
2582
+ /**
2583
+ * Send a message to a group chat. The message is sent as the authenticated user with optional automation metadata.
2584
+ * @param args.groupId - Group ID to send the message to
2585
+ * @param args.content - Message text content
2586
+ * @param args.automation - Automation metadata: { source: "sdk" | "flow", flowId?: string, flowTitle?: string } (optional)
2587
+ */
2588
+ sendGroupMessage: async (args) => {
2589
+ return sdk.resources.call({
2590
+ resourceId: 'mirra-messaging',
2591
+ method: 'sendGroupMessage',
2592
+ params: args || {}
2593
+ });
2594
+ },
2595
+ /**
2596
+ * Get list of accepted contacts for the user
2597
+ * @param args.limit - Maximum number of contacts to return (default 50) (optional)
2598
+ * @param args.offset - Offset for pagination (default 0) (optional)
2599
+ */
2600
+ getContacts: async (args) => {
2601
+ return sdk.resources.call({
2602
+ resourceId: 'mirra-messaging',
2603
+ method: 'getContacts',
2604
+ params: args || {}
2605
+ });
2606
+ },
2607
+ /**
2608
+ * Find a contact by username or partial name match
2609
+ * @param args.query - Username or name to search for
2610
+ */
2611
+ findContact: async (args) => {
2612
+ return sdk.resources.call({
2613
+ resourceId: 'mirra-messaging',
2614
+ method: 'findContact',
2615
+ params: args || {}
2616
+ });
2617
+ },
2618
+ /**
2619
+ * Get list of chat instances for the user
2620
+ * @param args.scope - Filter by scope: direct, user, group, or all (default all) (optional)
2621
+ * @param args.limit - Maximum number of chats to return (default 50) (optional)
2622
+ */
2623
+ getChats: async (args) => {
2624
+ return sdk.resources.call({
2625
+ resourceId: 'mirra-messaging',
2626
+ method: 'getChats',
2627
+ params: args || {}
2628
+ });
2629
+ },
2630
+ /**
2631
+ * Get list of groups the user is a member of
2632
+ * @param args.limit - Maximum number of groups to return (default 50) (optional)
2633
+ */
2634
+ getGroups: async (args) => {
2635
+ return sdk.resources.call({
2636
+ resourceId: 'mirra-messaging',
2637
+ method: 'getGroups',
2638
+ params: args || {}
2639
+ });
2640
+ }
2641
+ };
2642
+ }
1974
2643
  // ============================================================================
1975
2644
  // Exports
1976
2645
  // ============================================================================
@@ -1993,6 +2662,8 @@ exports.generatedAdapters = {
1993
2662
  trello: createTrelloAdapter,
1994
2663
  jupiter: createJupiterAdapter,
1995
2664
  crypto: createCryptoAdapter,
1996
- scripts: createScriptsAdapter
2665
+ scripts: createScriptsAdapter,
2666
+ feedback: createFeedbackAdapter,
2667
+ mirraMessaging: createMirraMessagingAdapter
1997
2668
  };
1998
2669
  //# sourceMappingURL=adapters.js.map