tandem-mode 0.5.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.
Files changed (53) hide show
  1. package/README.md +10 -2
  2. package/dist/agent/clipboard.js +37 -37
  3. package/dist/agent/clipboard.js.map +1 -1
  4. package/dist/agent/loop.js +41 -15
  5. package/dist/agent/loop.js.map +1 -1
  6. package/dist/agent/session.js +2 -2
  7. package/dist/agent/session.js.map +1 -1
  8. package/dist/agent/tools/edit.js +1 -1
  9. package/dist/agent/tools/edit.js.map +1 -1
  10. package/dist/agent/tools/listDir.js +49 -6
  11. package/dist/agent/tools/listDir.js.map +1 -1
  12. package/dist/agent/tools/safeCommand.js +70 -0
  13. package/dist/agent/tools/safeCommand.js.map +1 -0
  14. package/dist/agent/tools/search.js +5 -6
  15. package/dist/agent/tools/search.js.map +1 -1
  16. package/dist/agent/tools/searchFallback.js +162 -0
  17. package/dist/agent/tools/searchFallback.js.map +1 -0
  18. package/dist/agent/tools/shell.js +3 -13
  19. package/dist/agent/tools/shell.js.map +1 -1
  20. package/dist/agent/tools/viewImage.js +2 -2
  21. package/dist/agent/tools/viewImage.js.map +1 -1
  22. package/dist/agent/tools/webSearch.js +2 -2
  23. package/dist/agent/tools/webSearch.js.map +1 -1
  24. package/dist/agent/usage.js +2 -2
  25. package/dist/agent/usage.js.map +1 -1
  26. package/dist/benchmark/runner.js +8 -8
  27. package/dist/benchmark/runner.js.map +1 -1
  28. package/dist/cli.js +31 -17
  29. package/dist/cli.js.map +1 -1
  30. package/dist/config/credentials.js +37 -37
  31. package/dist/config/credentials.js.map +1 -1
  32. package/dist/config/env.js +1 -1
  33. package/dist/config/store.js +1 -1
  34. package/dist/config/store.js.map +1 -1
  35. package/dist/deepseek/client.js +7 -2
  36. package/dist/deepseek/client.js.map +1 -1
  37. package/dist/deepseek/errors.js +101 -0
  38. package/dist/deepseek/errors.js.map +1 -0
  39. package/dist/deepseek/webSearch.js +3 -3
  40. package/dist/deepseek/webSearch.js.map +1 -1
  41. package/dist/i18n/en.js +2 -0
  42. package/dist/i18n/en.js.map +1 -1
  43. package/dist/i18n/sr.js +2 -0
  44. package/dist/i18n/sr.js.map +1 -1
  45. package/dist/orchestrator/planner.js +14 -14
  46. package/dist/orchestrator/repoMap.js +1 -1
  47. package/dist/orchestrator/reviewer.js +14 -14
  48. package/dist/orchestrator/reviewer.js.map +1 -1
  49. package/dist/ui/status.js +1 -1
  50. package/dist/ui/status.js.map +1 -1
  51. package/dist/ui/toolFormat.js +13 -7
  52. package/dist/ui/toolFormat.js.map +1 -1
  53. package/package.json +49 -49
@@ -1,23 +1,23 @@
1
1
  import { chatCompletionOnce } from "../deepseek/client.js";
2
2
  import { isReviewResult } from "./types.js";
3
- const REVIEWER_SYSTEM_PROMPT = `You are the reviewer in the Tandem Mode coding agent. You receive the original task,
4
- the plan the worker(s) carried out, and the git diff of the actual changes. Check whether the
5
- diff really fulfills the task and the plan's acceptance criteria, contains no
6
- unnecessary changes, and that the code is reasonable. If a check result
7
- (build/test) is attached, a non-zero exit code means the change does not pass — in that case do not
8
- approve, and name the concrete error from the output in "corrections".
9
-
10
- Respond ONLY with valid JSON, with no markdown fences, in exactly this schema:
11
- {
12
- "approved": true|false,
13
- "notes": "brief justification",
14
- "corrections": [{ "description": "...", "files": ["..."] }]
15
- }
3
+ const REVIEWER_SYSTEM_PROMPT = `You are the reviewer in the Tandem Mode coding agent. You receive the original task,
4
+ the plan the worker(s) carried out, and the git diff of the actual changes. Check whether the
5
+ diff really fulfills the task and the plan's acceptance criteria, contains no
6
+ unnecessary changes, and that the code is reasonable. If a check result
7
+ (build/test) is attached, a non-zero exit code means the change does not pass — in that case do not
8
+ approve, and name the concrete error from the output in "corrections".
9
+
10
+ Respond ONLY with valid JSON, with no markdown fences, in exactly this schema:
11
+ {
12
+ "approved": true|false,
13
+ "notes": "brief justification",
14
+ "corrections": [{ "description": "...", "files": ["..."] }]
15
+ }
16
16
  "corrections" is an empty array if approved is true.`;
17
17
  const MAX_ATTEMPTS = 2;
18
18
  const MAX_VERIFY_CHARS = 6000;
19
19
  function formatVerify(verify) {
20
- // Greške build/test alata su obično na kraju izlaza, pa čuvamo rep, ne glavu.
20
+ // Build/test errors are usually at the end of the output, so keep the tail, not the head.
21
21
  const out = verify.output.length > MAX_VERIFY_CHARS ? "...(truncated)\n" + verify.output.slice(-MAX_VERIFY_CHARS) : verify.output;
22
22
  return `\n\nCheck result (${verify.command}), exit code ${verify.exitCode ?? "n/a (not run)"}:\n${out || "(no output)"}`;
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/orchestrator/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAgC,MAAM,YAAY,CAAC;AAE1E,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;qDAasB,CAAC;AAEtD,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAQ9B,SAAS,YAAY,CAAC,MAAoB;IACxC,8EAA8E;IAC9E,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAClI,OAAO,qBAAqB,MAAM,CAAC,OAAO,gBAAgB,MAAM,CAAC,QAAQ,IAAI,eAAe,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAC3H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAc,EACd,YAAoB,EACpB,IAAU,EACV,OAAe,EACf,MAAqB,EACrB,MAAoB;IAEpB,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;YAC7C,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;YACrC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBACnD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,mBAAmB,YAAY,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;iBACpK;aACF;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,IAAI,KAAK,CAAC,+CAA+C,OAAO,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,SAAS,GAAG,IAAI,KAAK,CAAC,8DAA8D,OAAO,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpI,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAiB;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/orchestrator/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAgC,MAAM,YAAY,CAAC;AAE1E,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;qDAasB,CAAC;AAEtD,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAQ9B,SAAS,YAAY,CAAC,MAAoB;IACxC,0FAA0F;IAC1F,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAClI,OAAO,qBAAqB,MAAM,CAAC,OAAO,gBAAgB,MAAM,CAAC,QAAQ,IAAI,eAAe,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAC3H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAc,EACd,YAAoB,EACpB,IAAU,EACV,OAAe,EACf,MAAqB,EACrB,MAAoB;IAEpB,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;YAC7C,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;YACrC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBACnD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,mBAAmB,YAAY,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;iBACpK;aACF;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,IAAI,KAAK,CAAC,+CAA+C,OAAO,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,SAAS,GAAG,IAAI,KAAK,CAAC,8DAA8D,OAAO,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpI,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAiB;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC3E,CAAC"}
package/dist/ui/status.js CHANGED
@@ -1,4 +1,4 @@
1
- /** Skraćuje "deepseek-v4-pro" na "v4-pro" da linija stane u uski terminal. */
1
+ /** Shortens "deepseek-v4-pro" to "v4-pro" so the line fits a narrow terminal. */
2
2
  export function shortModel(model) {
3
3
  return model.replace(/^deepseek-/, "");
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/ui/status.ts"],"names":[],"mappings":"AAmBA,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAA0D;IACpF,IAAI,KAAK,GAAgB,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAc,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,CAAc,EAAQ,EAAE;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9C,IAAI,KAAK,IAAI,IAAI;YAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9B,IAAI,KAAK,IAAI,GAAG;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,IAAI,KAAK,IAAI,IAAI;YAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9B,IAAI,KAAK,IAAI,GAAG;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS;QACxC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjE,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/ui/status.ts"],"names":[],"mappings":"AAmBA,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAA0D;IACpF,IAAI,KAAK,GAAgB,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAc,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,CAAc,EAAQ,EAAE;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9C,IAAI,KAAK,IAAI,IAAI;YAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9B,IAAI,KAAK,IAAI,GAAG;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,IAAI,KAAK,IAAI,IAAI;YAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9B,IAAI,KAAK,IAAI,GAAG;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS;QACxC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjE,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAChE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Čitljiv prikaz poziva alata i njihovih rezultata u terminalu.
3
- * Čiste funkcije bez Ink/React zavisnosti, da se mogu proveriti i van UI-ja.
2
+ * Readable display of tool calls and their results in the terminal.
3
+ * Pure functions with no Ink/React dependency, so they can be checked outside the UI.
4
4
  */
5
5
  const MAX_DIFF_LINES = 8;
6
6
  const MAX_LINE_CHARS = 120;
@@ -25,8 +25,10 @@ export function formatToolCall(name, args) {
25
25
  const offset = args["offset"] !== undefined ? `:${str(args["offset"])}` : "";
26
26
  return { title: `Read(${str(args["path"])}${offset})` };
27
27
  }
28
- case "list_dir":
29
- return { title: `List(${str(args["path"]) || "."})` };
28
+ case "list_dir": {
29
+ const depth = Number(args["depth"] ?? 1);
30
+ return { title: `List(${str(args["path"]) || "."}${depth > 1 ? `, depth ${depth}` : ""})` };
31
+ }
30
32
  case "search": {
31
33
  const where = str(args["glob"]) || str(args["path"]);
32
34
  return { title: `Search("${clip(str(args["pattern"]), 60)}"${where ? ` in ${where}` : ""})` };
@@ -71,14 +73,18 @@ export function formatToolResult(name, output, isError) {
71
73
  return { summary: `${countLines(output)} lines read` };
72
74
  }
73
75
  case "search": {
74
- if (output.trim() === "(no matches)")
76
+ if (output.trim().startsWith("(no matches)"))
75
77
  return { summary: "no matches" };
76
- return { summary: `${countLines(output.trim())} matching lines` };
78
+ // Count real hits ("path:line:text"), not the trailing notes of the built-in search.
79
+ const hits = output.split("\n").filter((l) => /:\d+:/.test(l)).length;
80
+ return { summary: `${hits} matching lines` };
77
81
  }
78
82
  case "list_dir": {
79
83
  if (output.trim() === "(empty)")
80
84
  return { summary: "empty" };
81
- return { summary: `${countLines(output.trim())} entries` };
85
+ // Count only real entries ("d name" / "- name", possibly indented), not the trailing notes.
86
+ const entries = output.split("\n").filter((l) => /^\s*[d-] /.test(l)).length;
87
+ return { summary: `${entries} entries` };
82
88
  }
83
89
  case "edit":
84
90
  return { summary: output.trim().split("\n")[0] ?? "" };
@@ -1 +1 @@
1
- {"version":3,"file":"toolFormat.js","sourceRoot":"","sources":["../../src/ui/toolFormat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolFormat.js","sourceRoot":"","sources":["../../src/ui/toolFormat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,49 +1,49 @@
1
- {
2
- "name": "tandem-mode",
3
- "version": "0.5.0",
4
- "description": "DeepSeek coding CLI — planner/worker/reviewer agentic loop",
5
- "type": "module",
6
- "license": "MIT",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/zdrave08/Tandem-Mode.git"
10
- },
11
- "homepage": "https://github.com/zdrave08/Tandem-Mode#readme",
12
- "bugs": {
13
- "url": "https://github.com/zdrave08/Tandem-Mode/issues"
14
- },
15
- "keywords": [
16
- "deepseek",
17
- "cli",
18
- "ai",
19
- "coding-agent",
20
- "llm"
21
- ],
22
- "bin": {
23
- "tandem": "dist/cli.js"
24
- },
25
- "files": [
26
- "dist"
27
- ],
28
- "engines": {
29
- "node": ">=20"
30
- },
31
- "scripts": {
32
- "dev": "tsx src/cli.tsx",
33
- "build": "tsc -p tsconfig.json",
34
- "typecheck": "tsc -p tsconfig.json --noEmit",
35
- "start": "node dist/cli.js",
36
- "prepublishOnly": "pnpm build"
37
- },
38
- "dependencies": {
39
- "@inquirer/prompts": "^8.7.0",
40
- "ink": "^5.0.1",
41
- "react": "^18.3.1"
42
- },
43
- "devDependencies": {
44
- "@types/node": "^20.14.0",
45
- "@types/react": "^18.3.3",
46
- "tsx": "^4.16.0",
47
- "typescript": "^5.5.0"
48
- }
49
- }
1
+ {
2
+ "name": "tandem-mode",
3
+ "version": "0.5.1",
4
+ "description": "DeepSeek coding CLI — planner/worker/reviewer agentic loop",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/zdrave08/Tandem-Mode.git"
10
+ },
11
+ "homepage": "https://github.com/zdrave08/Tandem-Mode#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/zdrave08/Tandem-Mode/issues"
14
+ },
15
+ "keywords": [
16
+ "deepseek",
17
+ "cli",
18
+ "ai",
19
+ "coding-agent",
20
+ "llm"
21
+ ],
22
+ "bin": {
23
+ "tandem": "dist/cli.js"
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "engines": {
29
+ "node": ">=20"
30
+ },
31
+ "scripts": {
32
+ "dev": "tsx src/cli.tsx",
33
+ "build": "tsc -p tsconfig.json",
34
+ "typecheck": "tsc -p tsconfig.json --noEmit",
35
+ "start": "node dist/cli.js",
36
+ "prepublishOnly": "pnpm build"
37
+ },
38
+ "dependencies": {
39
+ "@inquirer/prompts": "^8.7.0",
40
+ "ink": "^5.0.1",
41
+ "react": "^18.3.1"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^20.14.0",
45
+ "@types/react": "^18.3.3",
46
+ "tsx": "^4.16.0",
47
+ "typescript": "^5.5.0"
48
+ }
49
+ }