@garuda-agent/garuda 0.16.1 → 0.17.0

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 (54) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/README.md +56 -1074
  3. package/SECURITY.md +9 -2
  4. package/dist/{acpCommand-OTAYW7BS.js → acpCommand-7EY3NHPG.js} +18 -16
  5. package/dist/{anthropic-NQDBCHJU.js → anthropic-NQIZLD64.js} +12 -6
  6. package/dist/{chunk-TILFPYWO.js → chunk-2DYMJMRQ.js} +1880 -982
  7. package/dist/{chunk-YQTGMCU6.js → chunk-3MRQJKUO.js} +29 -5
  8. package/dist/{chunk-WMOLXTBU.js → chunk-4LFJFDCF.js} +2 -1
  9. package/dist/{chunk-44QN5SWZ.js → chunk-55CFEEIN.js} +22 -2
  10. package/dist/{chunk-USCUXCAU.js → chunk-5B5HDTUR.js} +3 -3
  11. package/dist/{chunk-TUUEBHG2.js → chunk-6XHON3Q6.js} +2 -2
  12. package/dist/chunk-735BKABA.js +472 -0
  13. package/dist/{chunk-B6FA4I7Q.js → chunk-7TH3NHCQ.js} +2 -2
  14. package/dist/{chunk-OUCV3FCT.js → chunk-AOGFYUKG.js} +3 -3
  15. package/dist/{chunk-GXZACJUI.js → chunk-B4SJY7KT.js} +322 -39
  16. package/dist/{chunk-3EQU2GUX.js → chunk-BHZ6G65V.js} +5 -1
  17. package/dist/chunk-BSK5T2ZG.js +9 -0
  18. package/dist/chunk-J4346IDH.js +156 -0
  19. package/dist/{chunk-NP6RIC25.js → chunk-JRVWH27M.js} +7 -7
  20. package/dist/{chunk-HUIK3WXO.js → chunk-P6XWWIEK.js} +20 -3
  21. package/dist/{chunk-HE2K657U.js → chunk-TJIWD7R7.js} +47 -16
  22. package/dist/chunk-U65DQZDB.js +143 -0
  23. package/dist/chunk-UIRJOQQS.js +118 -0
  24. package/dist/{chunk-KKB5W47S.js → chunk-VTMD5IHD.js} +26 -2
  25. package/dist/{chunk-BQTUOO4G.js → chunk-Z66BWTMD.js} +81 -32
  26. package/dist/cli/index.js +99 -41
  27. package/dist/{create-VXIH2GUZ.js → create-W6BV75QX.js} +18 -12
  28. package/dist/{deadline-F5RJJ2QW.js → deadline-TP7ZGLT2.js} +4 -2
  29. package/dist/{evalCommand-RGMZRYDR.js → evalCommand-YVQAWUZE.js} +50 -29
  30. package/dist/{export-HN3CT7AV.js → export-SJ3DUP6W.js} +2 -2
  31. package/dist/{inkChat-WEDGQMCY.js → inkChat-FNUBK43U.js} +14 -13
  32. package/dist/install-TKWN5AYH.js +19 -0
  33. package/dist/{job-3NYDMP2M.js → job-7JOI4YIQ.js} +6 -2
  34. package/dist/jobCommand-FE6XN3YD.js +33 -0
  35. package/dist/{launchd-SSX362VG.js → launchd-3A3ONEW5.js} +9 -8
  36. package/dist/{lspCommand-JRXKRSL7.js → lspCommand-ZZ6R4PA2.js} +7 -6
  37. package/dist/{manager-773PUDFE.js → manager-73MPYFTP.js} +7 -6
  38. package/dist/{nightCommand-65MUEV32.js → nightCommand-OODJNWDT.js} +26 -20
  39. package/dist/{openaiCompatible-CJWVJP5M.js → openaiCompatible-6TLDDW5U.js} +29 -15
  40. package/dist/{policy-EJPLEEXP.js → policy-ZJ7RMOFN.js} +10 -4
  41. package/dist/{remove-6GDSTAIO.js → remove-42WQNVPX.js} +8 -7
  42. package/dist/{server-NGKVIQEV.js → server-VEYIJHEU.js} +2 -2
  43. package/dist/{setupCommand-VA7D5MZK.js → setupCommand-GBQIVYJC.js} +45 -13
  44. package/dist/text-LS35WSRL.js +17 -0
  45. package/native/bin/garuda-reap +0 -0
  46. package/native/garuda-reap.c +113 -0
  47. package/package.json +39 -13
  48. package/dist/chunk-EIXUSVFX.js +0 -116
  49. package/dist/chunk-R7I2NBPX.js +0 -71
  50. package/dist/chunk-ULAJPMY7.js +0 -107
  51. package/dist/chunk-VBZCNMUD.js +0 -9
  52. package/dist/install-EWDSPFFZ.js +0 -18
  53. package/dist/jobCommand-ACSGSBQ4.js +0 -32
  54. package/dist/text-J2GD647J.js +0 -11
package/SECURITY.md CHANGED
@@ -6,9 +6,15 @@ Garuda runs commands and edits files for a model, so we take security reports se
6
6
 
7
7
  | Version | Supported |
8
8
  | --- | --- |
9
- | 0.14.x | Yes |
9
+ | 0.17.x | Yes |
10
10
  | Older | No |
11
11
 
12
+ ## Node and dependencies
13
+
14
+ Run Garuda on Node 22.23.4, 24.22.1 or 26.12.1, or a later release of the same line. Garuda warns
15
+ at start on an older Node. CI, the release workflow and the dependency audit refuse a Node or a
16
+ package with a known security fix missing. See [docs/security-deps.md](docs/security-deps.md).
17
+
12
18
  ## Report a vulnerability
13
19
 
14
20
  Do not open a public issue. Use GitHub's private vulnerability reporting: in this repository, open
@@ -28,5 +34,6 @@ In scope: the permission engine and the team policy, the OS sandbox (Seatbelt, b
28
34
  network allowlist and its proxy, secret redaction, the audit log, and the consent for project
29
35
  content (hooks, MCP servers, settings, commands, skills, agents).
30
36
 
31
- Known limits are listed in the README under the status table. A report about one of them is still
37
+ Known limits are listed in [docs/guide/status.md](docs/guide/status.md) and the
38
+ [issue register](docs/quality-baseline/issue-register.md). A report about one of them is still
32
39
  welcome when it shows a new way to reach the same effect.
@@ -1,37 +1,39 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- FileSessionStore,
4
3
  Runtime,
5
4
  auditDirFor
6
- } from "./chunk-TILFPYWO.js";
5
+ } from "./chunk-2DYMJMRQ.js";
7
6
  import "./chunk-G2AX7MGS.js";
8
7
  import "./chunk-A2QAIRQL.js";
9
- import "./chunk-ULAJPMY7.js";
8
+ import {
9
+ FileSessionStore
10
+ } from "./chunk-735BKABA.js";
10
11
  import {
11
12
  chooseModel,
12
13
  keepProviderKeys,
13
14
  loadModelsConfig,
14
15
  providerKeySource,
15
16
  resolveModel
16
- } from "./chunk-NP6RIC25.js";
17
- import "./chunk-EIXUSVFX.js";
18
- import "./chunk-R7I2NBPX.js";
17
+ } from "./chunk-JRVWH27M.js";
18
+ import "./chunk-U65DQZDB.js";
19
+ import "./chunk-J4346IDH.js";
19
20
  import {
20
21
  loadSearchConfig
21
22
  } from "./chunk-B25VL4RU.js";
22
23
  import "./chunk-23FXBNBB.js";
23
24
  import {
24
25
  VERSION
25
- } from "./chunk-VBZCNMUD.js";
26
+ } from "./chunk-BSK5T2ZG.js";
26
27
  import "./chunk-5DEWP3YX.js";
27
28
  import "./chunk-ZAE25JM2.js";
28
29
  import "./chunk-ATW7BNIG.js";
29
30
  import "./chunk-PZS3V6P3.js";
30
- import "./chunk-OUCV3FCT.js";
31
- import "./chunk-GXZACJUI.js";
32
- import "./chunk-WMOLXTBU.js";
33
- import "./chunk-3EQU2GUX.js";
34
- import "./chunk-HUIK3WXO.js";
31
+ import "./chunk-AOGFYUKG.js";
32
+ import "./chunk-B4SJY7KT.js";
33
+ import "./chunk-BHZ6G65V.js";
34
+ import "./chunk-P6XWWIEK.js";
35
+ import "./chunk-UIRJOQQS.js";
36
+ import "./chunk-4LFJFDCF.js";
35
37
  import "./chunk-3NJNVZTK.js";
36
38
 
37
39
  // src/cli/acpCommand.ts
@@ -45,12 +47,12 @@ async function acpCommand(options) {
45
47
  `);
46
48
  return 1;
47
49
  }
48
- const { setupCommand, terminalIO } = await import("./setupCommand-VA7D5MZK.js");
50
+ const { setupCommand, terminalIO } = await import("./setupCommand-GBQIVYJC.js");
49
51
  return setupCommand({}, { io: await terminalIO() });
50
52
  }
51
53
  const output = protocolOutput(process.stdout, process.stderr);
52
54
  const input = Readable.toWeb(process.stdin);
53
- const { acpServer, setupNeeded } = await import("./server-NGKVIQEV.js");
55
+ const { acpServer, setupNeeded } = await import("./server-VEYIJHEU.js");
54
56
  const server = acpServer({
55
57
  version: VERSION,
56
58
  // Not on native Windows: the setup there could not keep a key private (no 0600).
@@ -114,7 +116,7 @@ async function prepare(options, from = {}) {
114
116
  const why = credentialsWarning === void 0 ? "" : ` ${credentialsWarning}`;
115
117
  return fail(`Garuda has no key for ${resolved.spec} (${keyName}).${why} ${SETUP_HINT}`, true);
116
118
  }
117
- const { loadTeamPolicy } = await import("./policy-EJPLEEXP.js");
119
+ const { loadTeamPolicy } = await import("./policy-ZJ7RMOFN.js");
118
120
  let team;
119
121
  try {
120
122
  team = await loadTeamPolicy("managed" in from ? { home, managed: from.managed } : { home });
@@ -188,4 +190,4 @@ export {
188
190
  prepare,
189
191
  protocolOutput
190
192
  };
191
- //# sourceMappingURL=acpCommand-OTAYW7BS.js.map
193
+ //# sourceMappingURL=acpCommand-7EY3NHPG.js.map
@@ -14,10 +14,12 @@ var AnthropicClient = class {
14
14
  this.client = options.client ?? new Anthropic(clientOptions(options.apiKey));
15
15
  }
16
16
  async *stream(request, options) {
17
- const stream = this.client.messages.stream(
18
- toWireParams(this.model, request),
19
- options?.signal === void 0 ? {} : { signal: options.signal }
20
- );
17
+ const stream = this.client.messages.stream(toWireParams(this.model, request), {
18
+ ...options?.signal === void 0 ? {} : { signal: options.signal },
19
+ // Under the token budget (0.17) the SDK must not send the request again on its own: the loop
20
+ // retries, and each of its attempts reserves first.
21
+ ...options?.meter === void 0 ? {} : { maxRetries: 0 }
22
+ });
21
23
  for await (const event of stream) {
22
24
  if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
23
25
  yield { type: "text_delta", text: event.delta.text };
@@ -238,7 +240,11 @@ var AnthropicBatchClient = class {
238
240
  );
239
241
  const batch = await this.client.messages.batches.create(
240
242
  { requests: [{ custom_id: "garuda", params }] },
241
- signal === void 0 ? {} : { signal }
243
+ {
244
+ ...signal === void 0 ? {} : { signal },
245
+ // Batch submission is a generation attempt too. The loop, not the SDK, owns retries.
246
+ ...options?.meter === void 0 ? {} : { maxRetries: 0 }
247
+ }
242
248
  );
243
249
  const started = Date.now();
244
250
  this.onWait?.({ batchId: batch.id, waitedMs: 0, status: "created" });
@@ -324,4 +330,4 @@ export {
324
330
  toWireTools,
325
331
  withHiddenThinking
326
332
  };
327
- //# sourceMappingURL=anthropic-NQDBCHJU.js.map
333
+ //# sourceMappingURL=anthropic-NQIZLD64.js.map