@morphllm/morphsdk 0.2.76 → 0.2.81

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 (64) hide show
  1. package/dist/{chunk-DCIUCDWJ.js → chunk-467MCW5R.js} +38 -10
  2. package/dist/chunk-467MCW5R.js.map +1 -0
  3. package/dist/{chunk-HBIDSKIQ.js → chunk-4NI25AKV.js} +14 -6
  4. package/dist/chunk-4NI25AKV.js.map +1 -0
  5. package/dist/{chunk-XREWLWLA.js → chunk-4VMIPD4G.js} +4 -4
  6. package/dist/{chunk-RRWN62VU.js → chunk-B3UC7UVA.js} +4 -4
  7. package/dist/{chunk-RRWN62VU.js.map → chunk-B3UC7UVA.js.map} +1 -1
  8. package/dist/{chunk-Q5AHGIQO.js → chunk-FMLHRJDF.js} +3 -1
  9. package/dist/{chunk-Q5AHGIQO.js.map → chunk-FMLHRJDF.js.map} +1 -1
  10. package/dist/{chunk-G2EJHZSA.js → chunk-NTTQJM6O.js} +3 -3
  11. package/dist/{chunk-P2LHXSMG.js → chunk-OFMDENAQ.js} +2 -2
  12. package/dist/{chunk-26QXQFLZ.js → chunk-PHJQ4N3T.js} +8 -3
  13. package/dist/chunk-PHJQ4N3T.js.map +1 -0
  14. package/dist/{chunk-KILYNOE4.js → chunk-X6A64F2F.js} +5 -5
  15. package/dist/{chunk-RK2MR3N2.js → chunk-Z2HDXUH7.js} +3 -3
  16. package/dist/client.cjs +56 -12
  17. package/dist/client.cjs.map +1 -1
  18. package/dist/client.js +10 -10
  19. package/dist/index.cjs +56 -12
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.js +10 -10
  22. package/dist/tools/warp_grep/agent/prompt.cjs +2 -0
  23. package/dist/tools/warp_grep/agent/prompt.cjs.map +1 -1
  24. package/dist/tools/warp_grep/agent/prompt.d.ts +1 -1
  25. package/dist/tools/warp_grep/agent/prompt.js +1 -1
  26. package/dist/tools/warp_grep/agent/runner.cjs +36 -5
  27. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  28. package/dist/tools/warp_grep/agent/runner.js +3 -3
  29. package/dist/tools/warp_grep/anthropic.cjs +56 -12
  30. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  31. package/dist/tools/warp_grep/anthropic.js +7 -7
  32. package/dist/tools/warp_grep/client.cjs +56 -12
  33. package/dist/tools/warp_grep/client.cjs.map +1 -1
  34. package/dist/tools/warp_grep/client.js +6 -6
  35. package/dist/tools/warp_grep/gemini.cjs +56 -12
  36. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  37. package/dist/tools/warp_grep/gemini.js +6 -6
  38. package/dist/tools/warp_grep/harness.cjs +52 -14
  39. package/dist/tools/warp_grep/harness.cjs.map +1 -1
  40. package/dist/tools/warp_grep/harness.js +3 -3
  41. package/dist/tools/warp_grep/index.cjs +60 -17
  42. package/dist/tools/warp_grep/index.cjs.map +1 -1
  43. package/dist/tools/warp_grep/index.js +6 -6
  44. package/dist/tools/warp_grep/openai.cjs +56 -12
  45. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  46. package/dist/tools/warp_grep/openai.js +7 -7
  47. package/dist/tools/warp_grep/providers/local.cjs +13 -5
  48. package/dist/tools/warp_grep/providers/local.cjs.map +1 -1
  49. package/dist/tools/warp_grep/providers/local.js +1 -1
  50. package/dist/tools/warp_grep/providers/remote.cjs +7 -2
  51. package/dist/tools/warp_grep/providers/remote.cjs.map +1 -1
  52. package/dist/tools/warp_grep/providers/remote.js +1 -1
  53. package/dist/tools/warp_grep/vercel.cjs +56 -12
  54. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  55. package/dist/tools/warp_grep/vercel.js +7 -7
  56. package/package.json +1 -1
  57. package/dist/chunk-26QXQFLZ.js.map +0 -1
  58. package/dist/chunk-DCIUCDWJ.js.map +0 -1
  59. package/dist/chunk-HBIDSKIQ.js.map +0 -1
  60. /package/dist/{chunk-XREWLWLA.js.map → chunk-4VMIPD4G.js.map} +0 -0
  61. /package/dist/{chunk-G2EJHZSA.js.map → chunk-NTTQJM6O.js.map} +0 -0
  62. /package/dist/{chunk-P2LHXSMG.js.map → chunk-OFMDENAQ.js.map} +0 -0
  63. /package/dist/{chunk-KILYNOE4.js.map → chunk-X6A64F2F.js.map} +0 -0
  64. /package/dist/{chunk-RK2MR3N2.js.map → chunk-Z2HDXUH7.js.map} +0 -0
@@ -332,6 +332,8 @@ I think I have a rough idea, but this is my last turn so I must call the finish
332
332
  No commentary outside \`<think>\`. No explanations after tool calls.
333
333
  </output_format>
334
334
 
335
+ use as all 8 tool calls to be optimal
336
+
335
337
  <finishing_requirements>
336
338
  When calling \`finish\`:
337
339
  - Include the import section (typically lines 1-20) of each file
@@ -619,10 +621,25 @@ async function toolGrep(provider, args) {
619
621
  }
620
622
 
621
623
  // tools/warp_grep/agent/tools/read.ts
624
+ function isValidRange(start, end) {
625
+ return typeof start === "number" && typeof end === "number" && Number.isFinite(start) && Number.isFinite(end) && start > 0 && end >= start;
626
+ }
622
627
  async function toolRead(provider, args) {
623
- if (args.lines && args.lines.length > 0) {
628
+ if (args.lines && Array.isArray(args.lines) && args.lines.length > 0) {
629
+ const validRanges = [];
630
+ for (const range of args.lines) {
631
+ if (Array.isArray(range) && range.length >= 2 && isValidRange(range[0], range[1])) {
632
+ validRanges.push([range[0], range[1]]);
633
+ }
634
+ }
635
+ if (validRanges.length === 0) {
636
+ const res2 = await provider.read({ path: args.path });
637
+ if (res2.error) return res2.error;
638
+ if (!res2.lines.length) return "(empty file)";
639
+ return res2.lines.join("\n");
640
+ }
624
641
  const chunks = [];
625
- for (const [start, end] of args.lines) {
642
+ for (const [start, end] of validRanges) {
626
643
  const res2 = await provider.read({ path: args.path, start, end });
627
644
  if (res2.error) return res2.error;
628
645
  chunks.push(res2.lines.join("\n"));
@@ -658,23 +675,36 @@ async function toolListDirectory(provider, args) {
658
675
  }
659
676
 
660
677
  // tools/warp_grep/agent/tools/finish.ts
678
+ function isValidRange2(range) {
679
+ return Array.isArray(range) && range.length >= 2 && typeof range[0] === "number" && typeof range[1] === "number" && Number.isFinite(range[0]) && Number.isFinite(range[1]) && range[0] > 0 && range[1] >= range[0];
680
+ }
681
+ function extractValidRanges(lines) {
682
+ if (!Array.isArray(lines)) return null;
683
+ const valid = [];
684
+ for (const range of lines) {
685
+ if (isValidRange2(range)) {
686
+ valid.push([range[0], range[1]]);
687
+ }
688
+ }
689
+ return valid.length > 0 ? valid : null;
690
+ }
661
691
  function normalizeFinishFiles(files) {
662
692
  return files.map((f) => {
663
- if (f.lines === "*") {
664
- return { path: f.path, lines: "*" };
665
- }
666
- const merged = mergeRanges(f.lines);
667
- return { path: f.path, lines: merged };
693
+ if (f.lines === "*") return { path: f.path, lines: "*" };
694
+ const validRanges = extractValidRanges(f.lines);
695
+ if (!validRanges) return { path: f.path, lines: "*" };
696
+ return { path: f.path, lines: mergeRanges(validRanges) };
668
697
  });
669
698
  }
670
699
  async function readFinishFiles(repoRoot, files, reader) {
671
700
  const out = [];
672
701
  for (const f of files) {
673
- if (f.lines === "*") {
702
+ const validRanges = f.lines === "*" ? null : extractValidRanges(f.lines);
703
+ if (f.lines === "*" || !validRanges) {
674
704
  const lines = await reader(f.path);
675
705
  out.push({ path: f.path, ranges: "*", content: lines.join("\n") });
676
706
  } else {
677
- const ranges = mergeRanges(f.lines);
707
+ const ranges = mergeRanges(validRanges);
678
708
  const chunks = [];
679
709
  for (const [s, e] of ranges) {
680
710
  const lines = await reader(f.path, s, e);
@@ -1082,7 +1112,7 @@ async function runWarpGrep(config) {
1082
1112
  }
1083
1113
  const parts = ["Relevant context found:"];
1084
1114
  for (const f of finishMeta.files) {
1085
- const ranges = f.lines === "*" ? "*" : f.lines.map(([s, e]) => `${s}-${e}`).join(", ");
1115
+ const ranges = f.lines === "*" ? "*" : Array.isArray(f.lines) ? f.lines.map(([s, e]) => `${s}-${e}`).join(", ") : "*";
1086
1116
  parts.push(`- ${f.path}: ${ranges}`);
1087
1117
  }
1088
1118
  const payload = parts.join("\n");
@@ -1442,11 +1472,19 @@ Details: ${res.stderr}` : ""}`
1442
1472
  };
1443
1473
  }
1444
1474
  const total = lines.length;
1445
- let s = params.start ?? 1;
1446
- let e = Math.min(params.end ?? total, total);
1447
- if (s > total && total > 0) {
1448
- s = 1;
1449
- e = total;
1475
+ const rawStart = params.start;
1476
+ const rawEnd = params.end;
1477
+ let s = 1;
1478
+ let e = total;
1479
+ const startValid = rawStart === void 0 || Number.isFinite(rawStart) && rawStart > 0;
1480
+ const endValid = rawEnd === void 0 || Number.isFinite(rawEnd) && rawEnd > 0;
1481
+ if (startValid && endValid) {
1482
+ s = rawStart ?? 1;
1483
+ e = Math.min(rawEnd ?? total, total);
1484
+ if (s > total && total > 0 || s > e) {
1485
+ s = 1;
1486
+ e = total;
1487
+ }
1450
1488
  }
1451
1489
  const out = [];
1452
1490
  for (let i = s; i <= e; i += 1) {
@@ -1622,8 +1660,13 @@ var RemoteCommandsProvider = class {
1622
1660
  * Read file and add line numbers
1623
1661
  */
1624
1662
  async read(params) {
1625
- const start = params.start ?? 1;
1626
- const end = params.end ?? 1e6;
1663
+ const rawStart = params.start;
1664
+ const rawEnd = params.end;
1665
+ const startValid = rawStart === void 0 || Number.isFinite(rawStart) && rawStart > 0;
1666
+ const endValid = rawEnd === void 0 || Number.isFinite(rawEnd) && rawEnd > 0;
1667
+ const rangeValid = startValid && endValid && (rawStart === void 0 || rawEnd === void 0 || rawStart <= rawEnd);
1668
+ const start = rangeValid && rawStart !== void 0 ? rawStart : 1;
1669
+ const end = rangeValid && rawEnd !== void 0 ? rawEnd : 1e6;
1627
1670
  try {
1628
1671
  const stdout = await this.commands.read(params.path, start, end);
1629
1672
  const contentLines = (stdout || "").split("\n");