@polka-codes/runner 0.8.22 → 0.8.23

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 +180 -78
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -31282,9 +31282,9 @@ var require_event_target = __commonJS((exports, module) => {
31282
31282
  }
31283
31283
  Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true });
31284
31284
  var EventTarget = {
31285
- addEventListener(type, handler14, options = {}) {
31285
+ addEventListener(type, handler15, options = {}) {
31286
31286
  for (const listener of this.listeners(type)) {
31287
- if (!options[kForOnEventAttribute] && listener[kListener] === handler14 && !listener[kForOnEventAttribute]) {
31287
+ if (!options[kForOnEventAttribute] && listener[kListener] === handler15 && !listener[kForOnEventAttribute]) {
31288
31288
  return;
31289
31289
  }
31290
31290
  }
@@ -31295,7 +31295,7 @@ var require_event_target = __commonJS((exports, module) => {
31295
31295
  data: isBinary ? data : data.toString()
31296
31296
  });
31297
31297
  event[kTarget] = this;
31298
- callListener(handler14, this, event);
31298
+ callListener(handler15, this, event);
31299
31299
  };
31300
31300
  } else if (type === "close") {
31301
31301
  wrapper = function onClose(code, message) {
@@ -31305,7 +31305,7 @@ var require_event_target = __commonJS((exports, module) => {
31305
31305
  wasClean: this._closeFrameReceived && this._closeFrameSent
31306
31306
  });
31307
31307
  event[kTarget] = this;
31308
- callListener(handler14, this, event);
31308
+ callListener(handler15, this, event);
31309
31309
  };
31310
31310
  } else if (type === "error") {
31311
31311
  wrapper = function onError(error) {
@@ -31314,28 +31314,28 @@ var require_event_target = __commonJS((exports, module) => {
31314
31314
  message: error.message
31315
31315
  });
31316
31316
  event[kTarget] = this;
31317
- callListener(handler14, this, event);
31317
+ callListener(handler15, this, event);
31318
31318
  };
31319
31319
  } else if (type === "open") {
31320
31320
  wrapper = function onOpen() {
31321
31321
  const event = new Event("open");
31322
31322
  event[kTarget] = this;
31323
- callListener(handler14, this, event);
31323
+ callListener(handler15, this, event);
31324
31324
  };
31325
31325
  } else {
31326
31326
  return;
31327
31327
  }
31328
31328
  wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];
31329
- wrapper[kListener] = handler14;
31329
+ wrapper[kListener] = handler15;
31330
31330
  if (options.once) {
31331
31331
  this.once(type, wrapper);
31332
31332
  } else {
31333
31333
  this.on(type, wrapper);
31334
31334
  }
31335
31335
  },
31336
- removeEventListener(type, handler14) {
31336
+ removeEventListener(type, handler15) {
31337
31337
  for (const listener of this.listeners(type)) {
31338
- if (listener[kListener] === handler14 && !listener[kForOnEventAttribute]) {
31338
+ if (listener[kListener] === handler15 && !listener[kForOnEventAttribute]) {
31339
31339
  this.removeListener(type, listener);
31340
31340
  break;
31341
31341
  }
@@ -31861,16 +31861,16 @@ var require_websocket = __commonJS((exports, module) => {
31861
31861
  }
31862
31862
  return null;
31863
31863
  },
31864
- set(handler14) {
31864
+ set(handler15) {
31865
31865
  for (const listener of this.listeners(method)) {
31866
31866
  if (listener[kForOnEventAttribute]) {
31867
31867
  this.removeListener(method, listener);
31868
31868
  break;
31869
31869
  }
31870
31870
  }
31871
- if (typeof handler14 !== "function")
31871
+ if (typeof handler15 !== "function")
31872
31872
  return;
31873
- this.addEventListener(method, handler14, {
31873
+ this.addEventListener(method, handler15, {
31874
31874
  [kForOnEventAttribute]: true
31875
31875
  });
31876
31876
  }
@@ -32748,7 +32748,7 @@ var {
32748
32748
  Help
32749
32749
  } = import__.default;
32750
32750
  // package.json
32751
- var version = "0.8.22";
32751
+ var version = "0.8.23";
32752
32752
 
32753
32753
  // src/runner.ts
32754
32754
  import { execSync } from "node:child_process";
@@ -42043,6 +42043,7 @@ __export(exports_allTools, {
42043
42043
  readFile: () => readFile_default,
42044
42044
  listFiles: () => listFiles_default,
42045
42045
  handOver: () => handOver_default,
42046
+ fetchUrl: () => fetchUrl_default,
42046
42047
  executeCommand: () => executeCommand_default,
42047
42048
  delegate: () => delegate_default,
42048
42049
  attemptCompletion: () => attemptCompletion_default,
@@ -42501,8 +42502,89 @@ var executeCommand_default = {
42501
42502
  handler: handler4,
42502
42503
  isAvailable: isAvailable4
42503
42504
  };
42504
- // ../core/src/tools/listFiles.ts
42505
+ // ../core/src/tools/fetchUrl.ts
42505
42506
  var toolInfo5 = {
42507
+ name: "fetch_url",
42508
+ description: "Fetch the content located at one or more HTTP(S) URLs and return it in Markdown format. This works for standard web pages as well as raw files (e.g. README.md, source code) hosted on platforms like GitHub.",
42509
+ parameters: [
42510
+ {
42511
+ name: "url",
42512
+ description: "One or more URLs to fetch, separated by commas if multiple.",
42513
+ required: true
42514
+ }
42515
+ ],
42516
+ examples: [
42517
+ {
42518
+ description: "Fetch a single webpage",
42519
+ parameters: [
42520
+ {
42521
+ name: "url",
42522
+ value: "https://example.com"
42523
+ }
42524
+ ]
42525
+ },
42526
+ {
42527
+ description: "Fetch multiple webpages",
42528
+ parameters: [
42529
+ {
42530
+ name: "url",
42531
+ value: "https://example.com,https://developer.mozilla.org/en-US/docs/Web/HTTP"
42532
+ }
42533
+ ]
42534
+ },
42535
+ {
42536
+ description: "Fetch a raw file from GitHub",
42537
+ parameters: [
42538
+ {
42539
+ name: "url",
42540
+ value: "https://raw.githubusercontent.com/user/repo/main/README.md"
42541
+ }
42542
+ ]
42543
+ }
42544
+ ],
42545
+ permissionLevel: 1 /* Read */
42546
+ };
42547
+ var handler5 = async (provider, args) => {
42548
+ if (!provider.fetchUrl) {
42549
+ return {
42550
+ type: "Error" /* Error */,
42551
+ message: "Not possible to fetch url. Abort."
42552
+ };
42553
+ }
42554
+ const urls = getStringArray(args, "url");
42555
+ if (urls.length === 0) {
42556
+ return {
42557
+ type: "Error" /* Error */,
42558
+ message: "No URLs provided. Please provide at least one URL to fetch."
42559
+ };
42560
+ }
42561
+ const results = [];
42562
+ for (const url of urls) {
42563
+ try {
42564
+ const content = provider.fetchUrl(url).then((res) => `<fetch_url_content url="${url}">${res}</fetch_url_content>`);
42565
+ results.push(content);
42566
+ } catch (error) {
42567
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
42568
+ results.push(Promise.resolve(`<fetch_url_error url="${url}">${errorMessage}</fetch_url_error>`));
42569
+ }
42570
+ }
42571
+ const resolvedResults = await Promise.all(results);
42572
+ return {
42573
+ type: "Reply" /* Reply */,
42574
+ message: resolvedResults.join(`
42575
+ `)
42576
+ };
42577
+ };
42578
+ var isAvailable5 = (provider) => {
42579
+ return typeof provider.fetchUrl === "function";
42580
+ };
42581
+ var fetchUrl_default = {
42582
+ ...toolInfo5,
42583
+ handler: handler5,
42584
+ isAvailable: isAvailable5
42585
+ };
42586
+ // ../core/src/tools/listFiles.ts
42587
+ var toolInfo6 = {
42506
42588
  name: "list_files",
42507
42589
  description: "Request to list files and directories within the specified directory. If recursive is true, it will list all files and directories recursively. If recursive is false or not provided, it will only list the top-level contents. Do not use this tool to confirm the existence of files you may have created, as the user will let you know if the files were created successfully or not.",
42508
42590
  parameters: [
@@ -42542,7 +42624,7 @@ var toolInfo5 = {
42542
42624
  ],
42543
42625
  permissionLevel: 1 /* Read */
42544
42626
  };
42545
- var handler5 = async (provider, args) => {
42627
+ var handler6 = async (provider, args) => {
42546
42628
  if (!provider.listFiles) {
42547
42629
  return {
42548
42630
  type: "Error" /* Error */,
@@ -42563,16 +42645,16 @@ ${files.join(`
42563
42645
  <list_files_truncated>${limitReached}</list_files_truncated>`
42564
42646
  };
42565
42647
  };
42566
- var isAvailable5 = (provider) => {
42648
+ var isAvailable6 = (provider) => {
42567
42649
  return !!provider.listFiles;
42568
42650
  };
42569
42651
  var listFiles_default = {
42570
- ...toolInfo5,
42571
- handler: handler5,
42572
- isAvailable: isAvailable5
42652
+ ...toolInfo6,
42653
+ handler: handler6,
42654
+ isAvailable: isAvailable6
42573
42655
  };
42574
42656
  // ../core/src/tools/readFile.ts
42575
- var toolInfo6 = {
42657
+ var toolInfo7 = {
42576
42658
  name: "read_file",
42577
42659
  description: "Request to read the contents of one or multiple files at the specified paths. Use comma separated paths to read multiple files. Use this when you need to examine the contents of an existing file you do not know the contents of, for example to analyze code, review text files, or extract information from configuration files. May not be suitable for other types of binary files, as it returns the raw content as a string. Try to list all the potential files are relevent to the task, and then use this tool to read all the relevant files.",
42578
42660
  parameters: [
@@ -42605,7 +42687,7 @@ var toolInfo6 = {
42605
42687
  ],
42606
42688
  permissionLevel: 1 /* Read */
42607
42689
  };
42608
- var handler6 = async (provider, args) => {
42690
+ var handler7 = async (provider, args) => {
42609
42691
  if (!provider.readFile) {
42610
42692
  return {
42611
42693
  type: "Error" /* Error */,
@@ -42633,16 +42715,16 @@ var handler6 = async (provider, args) => {
42633
42715
  `)
42634
42716
  };
42635
42717
  };
42636
- var isAvailable6 = (provider) => {
42718
+ var isAvailable7 = (provider) => {
42637
42719
  return !!provider.readFile;
42638
42720
  };
42639
42721
  var readFile_default = {
42640
- ...toolInfo6,
42641
- handler: handler6,
42642
- isAvailable: isAvailable6
42722
+ ...toolInfo7,
42723
+ handler: handler7,
42724
+ isAvailable: isAvailable7
42643
42725
  };
42644
42726
  // ../core/src/tools/replaceInFile.ts
42645
- var toolInfo7 = {
42727
+ var toolInfo8 = {
42646
42728
  name: "replace_in_file",
42647
42729
  description: "Request to replace sections of content in an existing file using SEARCH/REPLACE blocks that define exact changes to specific parts of the file. This tool should be used when you need to make targeted changes to specific parts of a file.",
42648
42730
  parameters: [
@@ -42794,7 +42876,7 @@ function oldFeature() {
42794
42876
  ],
42795
42877
  permissionLevel: 2 /* Write */
42796
42878
  };
42797
- var handler7 = async (provider, args) => {
42879
+ var handler8 = async (provider, args) => {
42798
42880
  if (!provider.readFile || !provider.writeFile) {
42799
42881
  return {
42800
42882
  type: "Error" /* Error */,
@@ -42817,16 +42899,16 @@ var handler7 = async (provider, args) => {
42817
42899
  message: `<replace_in_file_path>${path}</replace_in_file_path>`
42818
42900
  };
42819
42901
  };
42820
- var isAvailable7 = (provider) => {
42902
+ var isAvailable8 = (provider) => {
42821
42903
  return !!provider.readFile && !!provider.writeFile;
42822
42904
  };
42823
42905
  var replaceInFile_default = {
42824
- ...toolInfo7,
42825
- handler: handler7,
42826
- isAvailable: isAvailable7
42906
+ ...toolInfo8,
42907
+ handler: handler8,
42908
+ isAvailable: isAvailable8
42827
42909
  };
42828
42910
  // ../core/src/tools/searchFiles.ts
42829
- var toolInfo8 = {
42911
+ var toolInfo9 = {
42830
42912
  name: "search_files",
42831
42913
  description: "Request to perform a regex search across files in a specified directory, outputting context-rich results that include surrounding lines. This tool searches for patterns or specific content across multiple files, displaying each match with encapsulating context.",
42832
42914
  parameters: [
@@ -42870,7 +42952,7 @@ var toolInfo8 = {
42870
42952
  ],
42871
42953
  permissionLevel: 1 /* Read */
42872
42954
  };
42873
- var handler8 = async (provider, args) => {
42955
+ var handler9 = async (provider, args) => {
42874
42956
  if (!provider.searchFiles) {
42875
42957
  return {
42876
42958
  type: "Error" /* Error */,
@@ -42893,13 +42975,13 @@ ${files.join(`
42893
42975
  `
42894
42976
  };
42895
42977
  };
42896
- var isAvailable8 = (provider) => {
42978
+ var isAvailable9 = (provider) => {
42897
42979
  return !!provider.searchFiles;
42898
42980
  };
42899
42981
  var searchFiles_default = {
42900
- ...toolInfo8,
42901
- handler: handler8,
42902
- isAvailable: isAvailable8
42982
+ ...toolInfo9,
42983
+ handler: handler9,
42984
+ isAvailable: isAvailable9
42903
42985
  };
42904
42986
  // ../core/src/tools/updateKnowledge.ts
42905
42987
  var import_yaml = __toESM(require_dist(), 1);
@@ -42945,7 +43027,7 @@ function join(...parts) {
42945
43027
  }
42946
43028
 
42947
43029
  // ../core/src/tools/updateKnowledge.ts
42948
- var toolInfo9 = {
43030
+ var toolInfo10 = {
42949
43031
  name: "update_knowledge",
42950
43032
  description: "Update knowledge in a knowledge.ai.yml file with smart merging capabilities. This tool lets you add, update, or remove information using path-based updates and special directives.",
42951
43033
  parameters: [
@@ -43122,7 +43204,7 @@ function deepMerge(target, source) {
43122
43204
  }
43123
43205
  return output;
43124
43206
  }
43125
- var handler9 = async (provider, args) => {
43207
+ var handler10 = async (provider, args) => {
43126
43208
  if (!provider.readFile || !provider.writeFile) {
43127
43209
  return {
43128
43210
  type: "Error" /* Error */,
@@ -43194,16 +43276,16 @@ var handler9 = async (provider, args) => {
43194
43276
  };
43195
43277
  }
43196
43278
  };
43197
- var isAvailable9 = (provider) => {
43279
+ var isAvailable10 = (provider) => {
43198
43280
  return !!provider.readFile && !!provider.writeFile;
43199
43281
  };
43200
43282
  var updateKnowledge_default = {
43201
- ...toolInfo9,
43202
- handler: handler9,
43203
- isAvailable: isAvailable9
43283
+ ...toolInfo10,
43284
+ handler: handler10,
43285
+ isAvailable: isAvailable10
43204
43286
  };
43205
43287
  // ../core/src/tools/writeToFile.ts
43206
- var toolInfo10 = {
43288
+ var toolInfo11 = {
43207
43289
  name: "write_to_file",
43208
43290
  description: "Request to write content to a file at the specified path. If the file exists, it will be overwritten with the provided content. If the file doesn't exist, it will be created. This tool will automatically create any directories needed to write the file. Ensure that the output content does not include incorrect escaped character patterns such as `&lt;` and `&gt;`.",
43209
43291
  parameters: [
@@ -43248,7 +43330,7 @@ export default App;
43248
43330
  ],
43249
43331
  permissionLevel: 2 /* Write */
43250
43332
  };
43251
- var handler10 = async (provider, args) => {
43333
+ var handler11 = async (provider, args) => {
43252
43334
  if (!provider.writeFile) {
43253
43335
  return {
43254
43336
  type: "Error" /* Error */,
@@ -43263,16 +43345,16 @@ var handler10 = async (provider, args) => {
43263
43345
  message: `<write_to_file_path>${path}</write_to_file_path><status>Success</status>`
43264
43346
  };
43265
43347
  };
43266
- var isAvailable10 = (provider) => {
43348
+ var isAvailable11 = (provider) => {
43267
43349
  return !!provider.writeFile;
43268
43350
  };
43269
43351
  var writeToFile_default = {
43270
- ...toolInfo10,
43271
- handler: handler10,
43272
- isAvailable: isAvailable10
43352
+ ...toolInfo11,
43353
+ handler: handler11,
43354
+ isAvailable: isAvailable11
43273
43355
  };
43274
43356
  // ../core/src/tools/handOver.ts
43275
- var toolInfo11 = {
43357
+ var toolInfo12 = {
43276
43358
  name: "hand_over",
43277
43359
  description: "Hand over the current task to another agent to complete. This tool MUST NOT to be used with any other tool.",
43278
43360
  parameters: [
@@ -43326,7 +43408,7 @@ var toolInfo11 = {
43326
43408
  ],
43327
43409
  permissionLevel: 0 /* None */
43328
43410
  };
43329
- var handler11 = async (_provider, args) => {
43411
+ var handler12 = async (_provider, args) => {
43330
43412
  const agentName = getString(args, "agent_name");
43331
43413
  const task = getString(args, "task");
43332
43414
  const context = getString(args, "context", undefined);
@@ -43339,16 +43421,16 @@ var handler11 = async (_provider, args) => {
43339
43421
  files
43340
43422
  };
43341
43423
  };
43342
- var isAvailable11 = (_provider) => {
43424
+ var isAvailable12 = (_provider) => {
43343
43425
  return true;
43344
43426
  };
43345
43427
  var handOver_default = {
43346
- ...toolInfo11,
43347
- handler: handler11,
43348
- isAvailable: isAvailable11
43428
+ ...toolInfo12,
43429
+ handler: handler12,
43430
+ isAvailable: isAvailable12
43349
43431
  };
43350
43432
  // ../core/src/tools/removeFile.ts
43351
- var toolInfo12 = {
43433
+ var toolInfo13 = {
43352
43434
  name: "remove_file",
43353
43435
  description: "Request to remove a file at the specified path.",
43354
43436
  parameters: [
@@ -43372,7 +43454,7 @@ var toolInfo12 = {
43372
43454
  ],
43373
43455
  permissionLevel: 2 /* Write */
43374
43456
  };
43375
- var handler12 = async (provider, args) => {
43457
+ var handler13 = async (provider, args) => {
43376
43458
  if (!provider.removeFile) {
43377
43459
  return {
43378
43460
  type: "Error" /* Error */,
@@ -43386,16 +43468,16 @@ var handler12 = async (provider, args) => {
43386
43468
  message: `<remove_file_path>${path}</remove_file_path><status>Success</status>`
43387
43469
  };
43388
43470
  };
43389
- var isAvailable12 = (provider) => {
43471
+ var isAvailable13 = (provider) => {
43390
43472
  return !!provider.removeFile;
43391
43473
  };
43392
43474
  var removeFile_default = {
43393
- ...toolInfo12,
43394
- handler: handler12,
43395
- isAvailable: isAvailable12
43475
+ ...toolInfo13,
43476
+ handler: handler13,
43477
+ isAvailable: isAvailable13
43396
43478
  };
43397
43479
  // ../core/src/tools/renameFile.ts
43398
- var toolInfo13 = {
43480
+ var toolInfo14 = {
43399
43481
  name: "rename_file",
43400
43482
  description: "Request to rename a file from source path to target path.",
43401
43483
  parameters: [
@@ -43429,7 +43511,7 @@ var toolInfo13 = {
43429
43511
  ],
43430
43512
  permissionLevel: 2 /* Write */
43431
43513
  };
43432
- var handler13 = async (provider, args) => {
43514
+ var handler14 = async (provider, args) => {
43433
43515
  if (!provider.renameFile) {
43434
43516
  return {
43435
43517
  type: "Error" /* Error */,
@@ -43444,13 +43526,13 @@ var handler13 = async (provider, args) => {
43444
43526
  message: `<rename_file_path>${targetPath}</rename_file_path><status>Success</status>`
43445
43527
  };
43446
43528
  };
43447
- var isAvailable13 = (provider) => {
43529
+ var isAvailable14 = (provider) => {
43448
43530
  return !!provider.renameFile;
43449
43531
  };
43450
43532
  var renameFile_default = {
43451
- ...toolInfo13,
43452
- handler: handler13,
43453
- isAvailable: isAvailable13
43533
+ ...toolInfo14,
43534
+ handler: handler14,
43535
+ isAvailable: isAvailable14
43454
43536
  };
43455
43537
  // ../core/src/getAvailableTools.ts
43456
43538
  var getAvailableTools = ({
@@ -43808,7 +43890,13 @@ ${joined}`;
43808
43890
  };
43809
43891
  var responsePrompts = {
43810
43892
  errorInvokeTool: (tool, error) => `An error occurred while invoking the tool "${tool}": ${error}`,
43811
- requireUseTool: "Error: You MUST use a tool before proceeding using XCM tags. e.g. <tool_tool_name>tool_name</tool_tool_name>",
43893
+ requireUseTool: `Error: No tool use detected. You MUST use a tool before proceeding.
43894
+ e.g. <tool_tool_name>tool_name</tool_tool_name>
43895
+
43896
+ Ensure the opening and closing tags are correctly nested and closed, and that you are using the correct tool name.
43897
+ Avoid unnecessary text or symbols before or after the tool use.
43898
+ Avoid unnecessary escape characters or special characters.
43899
+ `,
43812
43900
  toolResults: (tool, result) => `<tool_response>
43813
43901
  <tool_name>${tool}</tool_name>
43814
43902
  <tool_result>
@@ -44051,8 +44139,8 @@ ${instance.prompt}`;
44051
44139
  }
44052
44140
  async#invokeTool(name, args) {
44053
44141
  try {
44054
- const handler14 = this.handlers[name]?.handler;
44055
- if (!handler14) {
44142
+ const handler15 = this.handlers[name]?.handler;
44143
+ if (!handler15) {
44056
44144
  return {
44057
44145
  type: "Error" /* Error */,
44058
44146
  message: responsePrompts.errorInvokeTool(name, "Tool not found"),
@@ -44071,7 +44159,7 @@ ${instance.prompt}`;
44071
44159
  if (resp) {
44072
44160
  return resp;
44073
44161
  }
44074
- return await handler14(this.config.provider, args);
44162
+ return await handler15(this.config.provider, args);
44075
44163
  } catch (error) {
44076
44164
  return {
44077
44165
  type: "Error" /* Error */,
@@ -53266,15 +53354,15 @@ function useKeypress(userHandler) {
53266
53354
  signal.current = userHandler;
53267
53355
  useEffect((rl) => {
53268
53356
  let ignore = false;
53269
- const handler14 = withUpdates((_input, event) => {
53357
+ const handler15 = withUpdates((_input, event) => {
53270
53358
  if (ignore)
53271
53359
  return;
53272
53360
  signal.current(event, rl);
53273
53361
  });
53274
- rl.input.on("keypress", handler14);
53362
+ rl.input.on("keypress", handler15);
53275
53363
  return () => {
53276
53364
  ignore = true;
53277
- rl.input.removeListener("keypress", handler14);
53365
+ rl.input.removeListener("keypress", handler15);
53278
53366
  };
53279
53367
  }, []);
53280
53368
  }
@@ -53456,16 +53544,16 @@ class Emitter {
53456
53544
 
53457
53545
  class SignalExitBase {
53458
53546
  }
53459
- var signalExitWrap = (handler14) => {
53547
+ var signalExitWrap = (handler15) => {
53460
53548
  return {
53461
53549
  onExit(cb, opts) {
53462
- return handler14.onExit(cb, opts);
53550
+ return handler15.onExit(cb, opts);
53463
53551
  },
53464
53552
  load() {
53465
- return handler14.load();
53553
+ return handler15.load();
53466
53554
  },
53467
53555
  unload() {
53468
- return handler14.unload();
53556
+ return handler15.unload();
53469
53557
  }
53470
53558
  };
53471
53559
  };
@@ -54231,6 +54319,20 @@ var getProvider = (agentName, config2, options = {}) => {
54231
54319
  },
54232
54320
  attemptCompletion: async (result) => {
54233
54321
  return;
54322
+ },
54323
+ fetchUrl: async (url) => {
54324
+ const isRaw = url.startsWith("https://raw.githubusercontent.com/");
54325
+ const urlToFetch = isRaw ? url : `https://r.jina.ai/${url}`;
54326
+ try {
54327
+ const response = await fetch(urlToFetch);
54328
+ if (!response.ok) {
54329
+ throw new Error(`HTTP error! status: ${response.status}`);
54330
+ }
54331
+ return await response.text();
54332
+ } catch (error) {
54333
+ console.error("Error fetching URL:", error);
54334
+ throw error;
54335
+ }
54234
54336
  }
54235
54337
  };
54236
54338
  if (checkRipgrep()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polka-codes/runner",
3
- "version": "0.8.22",
3
+ "version": "0.8.23",
4
4
  "license": "AGPL-3.0",
5
5
  "author": "github@polka.codes",
6
6
  "type": "module",
@@ -17,8 +17,8 @@
17
17
  "build": "bun build src/index.ts --outdir dist --target node"
18
18
  },
19
19
  "dependencies": {
20
- "@polka-codes/cli-shared": "0.8.10",
21
- "@polka-codes/core": "0.8.10",
20
+ "@polka-codes/cli-shared": "0.8.22",
21
+ "@polka-codes/core": "0.8.22",
22
22
  "commander": "^13.0.0",
23
23
  "dotenv": "^16.4.7",
24
24
  "ignore": "^7.0.3",