@attson/atwebpilot-mcp 0.0.51 → 0.0.53

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.
Files changed (2) hide show
  1. package/dist/index.js +115 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -640,6 +640,10 @@ function capabilityForTool(tool, opts) {
640
640
  case "extractText":
641
641
  case "extractFormState":
642
642
  case "getValue":
643
+ case "createPageIndex":
644
+ case "searchPageIndex":
645
+ case "readPageBlock":
646
+ case "extractPageFields":
643
647
  return "read:dom";
644
648
  case "extractImages":
645
649
  return "read:image";
@@ -673,6 +677,7 @@ function capabilityForTool(tool, opts) {
673
677
  case "searchHistory":
674
678
  return "read:dom";
675
679
  case "downloadImage":
680
+ case "downloadSpreadsheet":
676
681
  return "submit:form";
677
682
  // writes to user's disk — treat as side-effect
678
683
  case "takeSnapshot":
@@ -1140,7 +1145,7 @@ var TOOL_DEFS = [
1140
1145
  },
1141
1146
  {
1142
1147
  name: "extractText",
1143
- description: "[FAST] \u63D0\u53D6\u9009\u62E9\u5668\u547D\u4E2D\u5143\u7D20\u7684\u6587\u672C\u3002single=true \u8FD4\u56DE\u5B57\u7B26\u4E32\uFF0C\u5426\u5219\u8FD4\u56DE\u6570\u7EC4\u3002\n\n\u793A\u4F8B\uFF1A\n- \u63D0\u53D6\u6807\u9898\uFF1A{ selector: 'h1', single: true }\n- \u63D0\u53D6\u6240\u6709\u6BB5\u843D\uFF1A{ selector: 'article p' }",
1148
+ description: "[FAST\xB7TARGETED] \u63D0\u53D6\u9009\u62E9\u5668\u547D\u4E2D\u5143\u7D20\u7684\u6587\u672C\u3002single=true \u8FD4\u56DE\u5B57\u7B26\u4E32\uFF0C\u5426\u5219\u8FD4\u56DE\u6570\u7EC4\u3002\n\u53EA\u7528\u4E8E\u660E\u786E\u7684\u5C0F\u8303\u56F4 selector\uFF1B\u666E\u901A\u7F51\u9875\u7406\u89E3/\u5B57\u6BB5\u63D0\u53D6\u4E0D\u8981\u7528 extractText({selector:'body'})\uFF0C\u5148\u7528 createPageIndex + extractPageFields/searchPageIndex\u3002\n\n\u793A\u4F8B\uFF1A\n- \u63D0\u53D6\u6807\u9898\uFF1A{ selector: 'h1', single: true }\n- \u63D0\u53D6\u6240\u6709\u6BB5\u843D\uFF1A{ selector: 'article p' }",
1144
1149
  input_schema: {
1145
1150
  type: "object",
1146
1151
  properties: {
@@ -1152,6 +1157,66 @@ var TOOL_DEFS = [
1152
1157
  required: ["selector"]
1153
1158
  }
1154
1159
  },
1160
+ // ─── Page Context Index · bounded read / extraction ─────────
1161
+ {
1162
+ name: "createPageIndex",
1163
+ description: "[PAGE-INDEX][FIRST\xB7READ] \u5728\u5185\u5BB9\u811A\u672C\u672C\u5730\u6784\u5EFA/\u5237\u65B0\u9875\u9762\u7D22\u5F15\uFF0C\u8FD4\u56DE\u5C0F\u578B\u9875\u9762\u5730\u56FE\u3001blockId\u3001kinds\u3001truncation \u5143\u6570\u636E\u3002\n\u7528\u4E8E\u666E\u901A\u7F51\u9875\u7406\u89E3\u3001\u5546\u54C1/\u6587\u7AE0/\u8868\u683C\u5B57\u6BB5\u63D0\u53D6\u3001\u91C7\u96C6\u524D\u5B9A\u4F4D\u3002\u4E0D\u8981\u5148\u8BFB\u53D6 body\uFF1B\u5148\u5EFA\u7D22\u5F15\uFF0C\u518D\u7528 extractPageFields/searchPageIndex\u3002",
1164
+ input_schema: {
1165
+ type: "object",
1166
+ properties: {
1167
+ maxBlocks: { type: "integer", default: 600, description: "\u6700\u591A\u7D22\u5F15\u591A\u5C11\u4E2A\u9875\u9762\u5757\uFF1B\u8D85\u51FA\u8FD4\u56DE index_budget truncation" },
1168
+ refresh: { type: "boolean", default: false, description: "true=\u5FFD\u7565\u7F13\u5B58\u91CD\u65B0\u626B\u63CF\u5F53\u524D\u9875\u9762" },
1169
+ summaryLimit: { type: "integer", default: 40, description: "\u8FD4\u56DE\u7ED9\u6A21\u578B\u7684\u9875\u9762\u5730\u56FE\u6761\u6570" },
1170
+ tabId: TAB_ID_FIELD
1171
+ }
1172
+ }
1173
+ },
1174
+ {
1175
+ name: "searchPageIndex",
1176
+ description: "[PAGE-INDEX] \u5728\u672C\u5730\u9875\u9762\u7D22\u5F15\u4E2D\u641C\u7D22\u5173\u952E\u8BCD/\u5B57\u6BB5\uFF0C\u8FD4\u56DE\u5C0F\u8BC1\u636E\u7247\u6BB5\u3001blockId\u3001complete/availableChars\u3001truncation \u5143\u6570\u636E\u3002\n\u9002\u5408\u5B9A\u4F4D\u6392\u540D\u3001\u4EF7\u683C\u3001\u8BC4\u8BBA\u6570\u3001\u65E5\u671F\u7B49\u8BC1\u636E\uFF1B\u4E0D\u8981\u7528 extractText({selector:'body'}) \u6765\u641C\u7D22\u5927\u9875\u9762\u3002",
1177
+ input_schema: {
1178
+ type: "object",
1179
+ properties: {
1180
+ query: { type: "string", description: "\u8981\u641C\u7D22\u7684\u5173\u952E\u8BCD/\u77ED\u8BED" },
1181
+ fields: { type: "array", items: { type: "string" }, description: "\u4E5F\u53EF\u7ED9\u5B57\u6BB5\u540D\u6570\u7EC4\u8F85\u52A9\u5339\u914D" },
1182
+ limit: { type: "integer", default: 20 },
1183
+ maxBlocks: { type: "integer", default: 600 },
1184
+ refresh: { type: "boolean", default: false },
1185
+ tabId: TAB_ID_FIELD
1186
+ }
1187
+ }
1188
+ },
1189
+ {
1190
+ name: "readPageBlock",
1191
+ description: "[PAGE-INDEX] \u6309 blockId \u8BFB\u53D6\u5C40\u90E8\u5185\u5BB9\uFF1B\u957F\u5185\u5BB9\u6309 offset/maxChars \u5206\u9875\uFF0C\u8FD4\u56DE hasMore\u3001nextOffset\u3001recommendedNext \u548C truncation \u65E5\u5FD7\u3002\n\u53EA\u5728 searchPageIndex/extractPageFields \u8BC1\u636E\u4E0D\u8DB3\u6216\u9700\u8981\u6838\u5BF9\u90BB\u8FD1\u4E0A\u4E0B\u6587\u65F6\u4F7F\u7528\u3002",
1192
+ input_schema: {
1193
+ type: "object",
1194
+ properties: {
1195
+ blockId: { type: "string", description: "createPageIndex/searchPageIndex/extractPageFields \u8FD4\u56DE\u7684\u7A33\u5B9A blockId" },
1196
+ indexId: { type: "string", description: "\u53EF\u9009\uFF1A\u7ED1\u5B9A\u5230\u4EA7\u751F\u8BE5 blockId \u7684\u7D22\u5F15\uFF0C\u907F\u514D refresh \u540E\u8BEF\u8BFB\u540C\u540D blockId" },
1197
+ offset: { type: "integer", default: 0 },
1198
+ maxChars: { type: "integer", default: 4e3 },
1199
+ includeNeighbors: { type: "boolean", default: false },
1200
+ tabId: TAB_ID_FIELD
1201
+ },
1202
+ required: ["blockId"]
1203
+ }
1204
+ },
1205
+ {
1206
+ name: "extractPageFields",
1207
+ description: "[PAGE-INDEX][FIELD-FIRST] \u901A\u7528\u5B57\u6BB5\u5019\u9009\u63D0\u53D6\uFF1A\u8F93\u5165\u5B57\u6BB5\u540D\u6570\u7EC4\uFF0C\u8FD4\u56DE value candidates\u3001confidence\u3001evidence\u3001blockId\u3001truncation\u3002\n\u9002\u5408\u5546\u54C1\u4FE1\u606F\u3001\u6587\u7AE0\u5143\u4FE1\u606F\u3001\u8868\u683C\u8BE6\u60C5\u3001\u8868\u5355\u5B57\u6BB5\u7B49\u7ED3\u6784\u5316\u63D0\u53D6\uFF1B\u8BC1\u636E\u4E0D\u8DB3\u518D\u7528 readPageBlock \u5B9A\u5411\u8BFB\u53D6\u3002",
1208
+ input_schema: {
1209
+ type: "object",
1210
+ properties: {
1211
+ fields: { type: "array", items: { type: "string" }, description: "\u7528\u6237\u8981\u63D0\u53D6\u7684\u5B57\u6BB5\u540D\uFF0C\u4F8B\u5982 \u4EF7\u683C\u3001\u6392\u540D\u3001ASIN\u3001\u4F5C\u8005\u3001\u53D1\u5E03\u65E5\u671F" },
1212
+ maxCandidatesPerField: { type: "integer", default: 4 },
1213
+ maxBlocks: { type: "integer", default: 600 },
1214
+ refresh: { type: "boolean", default: false },
1215
+ tabId: TAB_ID_FIELD
1216
+ },
1217
+ required: ["fields"]
1218
+ }
1219
+ },
1155
1220
  {
1156
1221
  name: "extractImages",
1157
1222
  description: "[FAST] \u5728 root \u8303\u56F4\u5185\u63D0\u53D6\u6240\u6709 <img> \u7684 src/data-src/srcset\uFF1BincludeBg=true \u65F6\u4E5F\u63D0\u53D6\u80CC\u666F\u56FE\u3002\u8FD4\u56DE [{url, via}].\n\n\u793A\u4F8B\uFF1A\n- \u5168\u9875\u56FE\uFF1A{ }\uFF08\u9ED8\u8BA4 root=document\uFF09\n- \u5546\u54C1\u4E3B\u56FE\uFF1A{ root: '.product-gallery' }",
@@ -1426,11 +1491,14 @@ var TOOL_DEFS = [
1426
1491
  // ─── User-side helpers ───────────────────────────────────────
1427
1492
  {
1428
1493
  name: "screenshot",
1429
- description: "[VISION] \u622A\u5F53\u524D tab \u53EF\u89C1\u533A\u57DF\u4E3A PNG\uFF08\u81EA\u52A8\u4F5C\u4E3A image block \u6CE8\u5165\u4E0B\u8F6E\uFF09\u3002\u7528\u4E8E\u89C6\u89C9\u8C03\u8BD5 selector / \u770B\u56FE\u56DE\u7B54 / \u7559\u8BC1\u636E\u3002\u8FD4\u56DE {ok: true, byteLen}\u3002",
1494
+ description: "[VISION] \u622A\u5F53\u524D tab \u53EF\u89C1\u533A\u57DF\u4E3A PNG\uFF08\u81EA\u52A8\u4F5C\u4E3A image block \u6CE8\u5165\u4E0B\u8F6E\uFF09\u3002\u7528\u4E8E\u89C6\u89C9\u8C03\u8BD5\u3001\u770B\u56FE\u56DE\u7B54\u3001\u6838\u5BF9 page-index \u8BC1\u636E\u3002\n\u5982\u679C\u5DF2\u6709 searchPageIndex/extractPageFields \u8FD4\u56DE\u7684 blockId/indexId\uFF0C\u4F18\u5148\u4F20 {blockId,indexId}\uFF1B\u5DE5\u5177\u4F1A\u6EDA\u52A8\u5E76\u9AD8\u4EAE\u8BE5\u5C40\u90E8\u533A\u57DF\u540E\u622A\u56FE\u3002\u4E5F\u53EF\u4F20 selector\u3002",
1430
1495
  input_schema: {
1431
1496
  type: "object",
1432
1497
  properties: {
1433
- selector: { type: "string", description: "\u53EF\u9009\uFF1ACSS selector\u3002\u57FA\u7840\u7248\u65E0\u89C6\uFF0C\u59CB\u7EC8\u622A viewport\u3002" },
1498
+ selector: { type: "string", description: "\u53EF\u9009\uFF1ACSS selector\uFF1B\u622A\u56FE\u524D\u4F1A\u6EDA\u52A8\u5E76\u9AD8\u4EAE\u76EE\u6807" },
1499
+ blockId: { type: "string", description: "\u53EF\u9009\uFF1Apage-index \u8FD4\u56DE\u7684 blockId\uFF0C\u7528\u4E8E\u5C40\u90E8\u89C6\u89C9\u8BC1\u636E" },
1500
+ indexId: { type: "string", description: "\u53EF\u9009\uFF1A\u4EA7\u751F blockId \u7684 indexId\uFF0C\u907F\u514D refresh \u540E\u8BEF\u8BFB" },
1501
+ highlightMs: { type: "integer", default: 1500, description: "\u622A\u56FE\u524D\u76EE\u6807\u9AD8\u4EAE\u6301\u7EED\u65F6\u95F4\uFF0C250-5000ms" },
1434
1502
  tabId: TAB_ID_FIELD
1435
1503
  }
1436
1504
  }
@@ -1502,6 +1570,50 @@ var TOOL_DEFS = [
1502
1570
  required: ["url"]
1503
1571
  }
1504
1572
  },
1573
+ {
1574
+ name: "downloadSpreadsheet",
1575
+ description: "[ACT] \u751F\u6210\u5E76\u4E0B\u8F7D\u771F\u6B63\u7684 .xlsx Excel \u6587\u4EF6\uFF08Chrome Downloads\uFF09\u3002\u9002\u5408\u628A\u91C7\u96C6/\u62BD\u53D6\u7ED3\u679C\u5BFC\u51FA\u4E3A\u8868\u683C\u3002\u652F\u6301\u591A\u4E2A sheet\uFF1Brows \u53EF\u4EE5\u662F\u4E8C\u7EF4\u6570\u7EC4\uFF0C\u4E5F\u53EF\u4EE5\u662F\u5BF9\u8C61\u6570\u7EC4\u3002\u5BF9\u8C61\u6570\u7EC4\u53EF\u914D columns \u63A7\u5236\u5217\u987A\u5E8F\u548C\u8868\u5934\u3002\u8FD4\u56DE {downloadId, filename, sheets, rows, bytes}\u3002caution \u7EA7\u3002",
1576
+ input_schema: {
1577
+ type: "object",
1578
+ properties: {
1579
+ filename: { type: "string", description: "\u5EFA\u8BAE\u6587\u4EF6\u540D\uFF1B\u53EF\u4E0D\u5E26 .xlsx \u540E\u7F00" },
1580
+ sheets: {
1581
+ type: "array",
1582
+ minItems: 1,
1583
+ items: {
1584
+ type: "object",
1585
+ properties: {
1586
+ name: { type: "string", description: "sheet \u540D\uFF0C\u6700\u957F 31 \u5B57\u7B26\uFF1B\u975E\u6CD5\u5B57\u7B26\u4F1A\u88AB\u66FF\u6362" },
1587
+ columns: {
1588
+ type: "array",
1589
+ description: "\u5BF9\u8C61\u884C\u7684\u5217\u987A\u5E8F\u548C\u8868\u5934\uFF1B\u4E8C\u7EF4\u6570\u7EC4\u884C\u53EF\u7701\u7565",
1590
+ items: {
1591
+ type: "object",
1592
+ properties: {
1593
+ key: { type: "string" },
1594
+ header: { type: "string" }
1595
+ },
1596
+ required: ["key"]
1597
+ }
1598
+ },
1599
+ rows: {
1600
+ type: "array",
1601
+ description: '\u4E8C\u7EF4\u6570\u7EC4\uFF0C\u5982 [["\u6807\u9898","\u4EF7\u683C"],["A",12]]\uFF1B\u6216\u5BF9\u8C61\u6570\u7EC4\uFF0C\u5982 [{title:"A",price:12}]',
1602
+ items: {
1603
+ oneOf: [
1604
+ { type: "array", items: {} },
1605
+ { type: "object" }
1606
+ ]
1607
+ }
1608
+ }
1609
+ },
1610
+ required: ["rows"]
1611
+ }
1612
+ }
1613
+ },
1614
+ required: ["sheets"]
1615
+ }
1616
+ },
1505
1617
  // ─── Tier 4 · UID-based interaction + visual + batch ────────
1506
1618
  {
1507
1619
  name: "takeSnapshot",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@attson/atwebpilot-mcp",
3
- "version": "0.0.51",
3
+ "version": "0.0.53",
4
4
  "license": "Apache-2.0",
5
5
  "description": "MCP server for the atwebpilot browser extension — let Claude Code drive your browser.",
6
6
  "homepage": "https://github.com/attson/atwebpilot#readme",