@garuda-agent/garuda 0.17.0 → 0.18.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 (30) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +1 -1
  3. package/SECURITY.md +1 -1
  4. package/dist/{acpCommand-7EY3NHPG.js → acpCommand-IUZPLPLI.js} +16 -16
  5. package/dist/{chunk-JRVWH27M.js → chunk-2FIV2VZP.js} +7 -3
  6. package/dist/{chunk-TJIWD7R7.js → chunk-4BVCYCQT.js} +3 -3
  7. package/dist/{chunk-U65DQZDB.js → chunk-65NUEOI7.js} +2 -2
  8. package/dist/{chunk-J4346IDH.js → chunk-7KBOIPUT.js} +2 -1
  9. package/dist/chunk-C57GHLKP.js +9 -0
  10. package/dist/chunk-DOCDCQVM.js +484 -0
  11. package/dist/chunk-FOPBOB7W.js +332 -0
  12. package/dist/{chunk-2DYMJMRQ.js → chunk-NHWHG3SW.js} +60 -20
  13. package/dist/{chunk-Z66BWTMD.js → chunk-OQ26W5L4.js} +4 -4
  14. package/dist/chunk-Q4P3W657.js +6372 -0
  15. package/dist/{chunk-ZAE25JM2.js → chunk-QANRZW7W.js} +8 -1
  16. package/dist/{chunk-735BKABA.js → chunk-UKIE4AAM.js} +2 -2
  17. package/dist/cli/index.js +67 -34
  18. package/dist/config-WV2H64TF.js +23 -0
  19. package/dist/evalCommand-SKJQ6CW2.js +686 -0
  20. package/dist/evalTune-CZRCPSZ3.js +295 -0
  21. package/dist/{inkChat-FNUBK43U.js → inkChat-WYYAFZXD.js} +13 -13
  22. package/dist/{jobCommand-FE6XN3YD.js → jobCommand-2ODQLHB3.js} +4 -4
  23. package/dist/{manager-73MPYFTP.js → manager-TCYTA5XU.js} +10 -10
  24. package/dist/{nightCommand-OODJNWDT.js → nightCommand-WJU6VZA6.js} +4 -4
  25. package/dist/{run-ML6GSPN4.js → run-PTMRQCIU.js} +5 -5
  26. package/dist/{setupCommand-GBQIVYJC.js → setupCommand-YMF6I3MD.js} +4 -4
  27. package/dist/tune-YVI2KWQF.js +31 -0
  28. package/package.json +1 -1
  29. package/dist/chunk-BSK5T2ZG.js +0 -9
  30. package/dist/evalCommand-YVQAWUZE.js +0 -2833
@@ -0,0 +1,295 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ PROPOSER_SYSTEM,
4
+ parseProposal,
5
+ readAddendum,
6
+ tune
7
+ } from "./chunk-FOPBOB7W.js";
8
+ import {
9
+ EVAL_SUITES,
10
+ HELD_OUT_TASKS,
11
+ TOOLCHAINS,
12
+ checkToolchains,
13
+ formatReport,
14
+ requiredToolchains,
15
+ runEvals
16
+ } from "./chunk-Q4P3W657.js";
17
+ import {
18
+ DEFAULT_SEED,
19
+ reportV2,
20
+ shuffled
21
+ } from "./chunk-DOCDCQVM.js";
22
+ import "./chunk-NXJ4XLB5.js";
23
+ import {
24
+ NO_MODEL,
25
+ chooseModel,
26
+ keepProviderKeys,
27
+ loadModelsConfig,
28
+ resolveModel
29
+ } from "./chunk-2FIV2VZP.js";
30
+ import "./chunk-NHWHG3SW.js";
31
+ import "./chunk-65NUEOI7.js";
32
+ import "./chunk-G2AX7MGS.js";
33
+ import "./chunk-A2QAIRQL.js";
34
+ import {
35
+ newSessionId
36
+ } from "./chunk-UKIE4AAM.js";
37
+ import {
38
+ costOf
39
+ } from "./chunk-7KBOIPUT.js";
40
+ import "./chunk-B25VL4RU.js";
41
+ import "./chunk-23FXBNBB.js";
42
+ import "./chunk-C57GHLKP.js";
43
+ import "./chunk-5DEWP3YX.js";
44
+ import "./chunk-PZS3V6P3.js";
45
+ import "./chunk-QANRZW7W.js";
46
+ import "./chunk-ATW7BNIG.js";
47
+ import "./chunk-55CFEEIN.js";
48
+ import "./chunk-AOGFYUKG.js";
49
+ import "./chunk-6XHON3Q6.js";
50
+ import {
51
+ createExecutor
52
+ } from "./chunk-B4SJY7KT.js";
53
+ import "./chunk-BHZ6G65V.js";
54
+ import "./chunk-P6XWWIEK.js";
55
+ import "./chunk-UIRJOQQS.js";
56
+ import "./chunk-4LFJFDCF.js";
57
+ import "./chunk-3NJNVZTK.js";
58
+
59
+ // src/cli/evalTune.ts
60
+ import { mkdirSync, writeFileSync } from "fs";
61
+ import { writeFile } from "fs/promises";
62
+ import { join } from "path";
63
+ import { createInterface } from "readline/promises";
64
+ var DEFAULT_TUNE_PARALLEL = 4;
65
+ function progressLine(label, done, total, r) {
66
+ return `[${label} ${done}/${total}] ${r.passed ? "\u2713" : "\u2717"} ${r.id} (${r.steps} steps)${r.passed ? "" : `: ${(r.reason ?? r.stopReason).split("\n")[0]}`}`;
67
+ }
68
+ var DEFAULT_PROPOSER = "claude-opus-5-5";
69
+ var DEFAULT_TUNE_SUITES = ["basic", "hard", "medium"];
70
+ var whole = (value, fallback, min) => {
71
+ const v = value ?? fallback;
72
+ return Number.isInteger(v) && v >= min ? v : void 0;
73
+ };
74
+ async function askProposer(proposer, input) {
75
+ const client = await proposer.create();
76
+ let response;
77
+ for await (const event of client.stream({
78
+ system: PROPOSER_SYSTEM,
79
+ messages: [{ role: "user", content: [{ type: "text", text: input }] }],
80
+ tools: [],
81
+ maxTokens: 8e3
82
+ })) {
83
+ if (event.type === "response") response = event.response;
84
+ }
85
+ if (response === void 0) return "the proposer gave no answer";
86
+ const text = response.content.filter((b) => b.type === "text").map((b) => b.text).join("");
87
+ const parsed = parseProposal(text);
88
+ if (parsed === void 0) return "the proposer's answer has no <addendum> block";
89
+ const price = proposer.info.price;
90
+ return {
91
+ ...parsed,
92
+ costUsd: price === void 0 ? void 0 : costOf(response.usage, price, response.priceFactor ?? 1)
93
+ };
94
+ }
95
+ async function runEvalTune(options) {
96
+ const rounds = whole(options.rounds, 5, 1);
97
+ const repeat = whole(options.repeat, 3, 1);
98
+ const heldoutRepeat = whole(options.heldoutRepeat, 5, 1);
99
+ const margin = whole(options.margin, 2, 1);
100
+ const seed = whole(options.seed, DEFAULT_SEED, 0);
101
+ const parallel = whole(options.parallel, DEFAULT_TUNE_PARALLEL, 1);
102
+ const maxCost = options.maxCost ?? 20;
103
+ if (rounds === void 0 || repeat === void 0 || heldoutRepeat === void 0 || margin === void 0 || seed === void 0 || parallel === void 0 || !(maxCost > 0)) {
104
+ process.stderr.write(
105
+ "--rounds, --repeat, --heldout-repeat, --margin and --parallel must be whole numbers of 1 or more, --seed 0 or more, and --max-cost above 0.\n"
106
+ );
107
+ return 1;
108
+ }
109
+ const suites = options.suite ?? [...DEFAULT_TUNE_SUITES];
110
+ const devTasks = [];
111
+ for (const name of suites) {
112
+ const tasks = EVAL_SUITES[name];
113
+ if (tasks === void 0) {
114
+ process.stderr.write(`Unknown suite ${name}. Use: ${Object.keys(EVAL_SUITES).join(", ")}.
115
+ `);
116
+ return 1;
117
+ }
118
+ devTasks.push(...tasks);
119
+ }
120
+ const start = await readAddendum(options.addendum, true);
121
+ if ("problem" in start) {
122
+ process.stderr.write(`${start.problem}
123
+ `);
124
+ return 1;
125
+ }
126
+ const models = await loadModelsConfig();
127
+ if (models.problem !== void 0) {
128
+ process.stderr.write(`${models.problem}
129
+ `);
130
+ return 1;
131
+ }
132
+ const modelId = chooseModel(models.config, options.model);
133
+ if (!modelId) {
134
+ process.stderr.write(`${NO_MODEL}
135
+ `);
136
+ return 1;
137
+ }
138
+ let agent;
139
+ let proposer;
140
+ try {
141
+ agent = resolveModel(modelId, models.config);
142
+ proposer = resolveModel(options.proposer ?? DEFAULT_PROPOSER, models.config);
143
+ } catch (error) {
144
+ process.stderr.write(`${error.message}
145
+ `);
146
+ return 1;
147
+ }
148
+ const { assertModelAllowedByPolicy, loadTeamPolicy } = await import("./policy-ZJ7RMOFN.js");
149
+ let team;
150
+ try {
151
+ team = await loadTeamPolicy();
152
+ assertModelAllowedByPolicy(team?.policy, agent.spec);
153
+ assertModelAllowedByPolicy(team?.policy, proposer.spec);
154
+ } catch (error) {
155
+ process.stderr.write(`Team policy: ${error.message}
156
+ `);
157
+ return 1;
158
+ }
159
+ const warning = await keepProviderKeys([agent.def.apiKeyEnv, proposer.def.apiKeyEnv]);
160
+ if (warning !== void 0) process.stderr.write(`${warning}
161
+ `);
162
+ const missing = (await checkToolchains(requiredToolchains([...devTasks, ...HELD_OUT_TASKS]))).filter((s) => !s.ok);
163
+ if (missing.length > 0) {
164
+ for (const status of missing) process.stderr.write(`${TOOLCHAINS[status.id].hint}
165
+ `);
166
+ return 1;
167
+ }
168
+ const perScore = devTasks.length * repeat;
169
+ const heldOutRuns = 2 * HELD_OUT_TASKS.length * heldoutRepeat;
170
+ process.stderr.write(
171
+ [
172
+ `Tuning ${options.addendum} (${start.text.length} characters) with ${agent.spec}; ${proposer.spec} proposes.`,
173
+ `Dev: ${devTasks.length} task(s) from ${suites.join(", ")} \xD7 ${repeat} = ${perScore} runs a score, ${parallel} at a time; up to ${rounds + 1} scores.`,
174
+ `Held-out: ${HELD_OUT_TASKS.length} task(s) \xD7 ${heldoutRepeat}, twice, at the end (${heldOutRuns} runs), if a version is kept.`,
175
+ `Keep rule: +${margin} passing runs, or as many with a lower cost per accepted change (interval below \xD71.0).`,
176
+ `Budget: --max-cost $${maxCost}; the loop stops before a round that would pass it.`,
177
+ `Garuda changes no file outside the run's folder; ${options.addendum} stays as it is.`,
178
+ ""
179
+ ].join("\n")
180
+ );
181
+ if (options.yes !== true) {
182
+ if (!process.stdin.isTTY) {
183
+ process.stderr.write("Add --yes to start without a question.\n");
184
+ return 1;
185
+ }
186
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
187
+ const answer = await rl.question("Start? (y/N) ");
188
+ rl.close();
189
+ if (!/^y(es)?$/i.test(answer.trim())) return 1;
190
+ }
191
+ const { executor, notice } = createExecutor("auto");
192
+ if (notice !== void 0) process.stderr.write(`${notice}
193
+ `);
194
+ const dir = join(process.cwd(), ".garuda", "evals", `tune-${newSessionId()}`);
195
+ mkdirSync(dir, { recursive: true });
196
+ const score = async (addendum, tasks, k, label) => {
197
+ const listed = tasks.flatMap((t) => Array.from({ length: k }, () => t));
198
+ const outDir = join(dir, label);
199
+ let done = 0;
200
+ const results = await runEvals(
201
+ shuffled(listed, seed),
202
+ {
203
+ parallel,
204
+ modelId: agent.spec,
205
+ model: () => agent.create(),
206
+ modelInfo: agent.info,
207
+ ...agent.maxTokens === void 0 ? {} : { maxTokens: agent.maxTokens },
208
+ ...team === void 0 ? {} : { policy: team.policy },
209
+ outDir,
210
+ executor: executor.name === "host" ? "host" : "os",
211
+ ...addendum === "" ? {} : { addendum }
212
+ },
213
+ (r) => {
214
+ done++;
215
+ process.stderr.write(`${progressLine(label, done, listed.length, r)}
216
+ `);
217
+ }
218
+ );
219
+ writeFileSync(
220
+ join(outDir, "report.json"),
221
+ `${JSON.stringify(
222
+ {
223
+ ...await reportV2(
224
+ {
225
+ model: agent.spec,
226
+ provider: agent.provider,
227
+ executor: executor.name,
228
+ isolation: executor.isolation,
229
+ seed,
230
+ shuffle: true,
231
+ split: label.startsWith("heldout") ? "heldout" : "dev",
232
+ ...addendum === "" ? {} : { addendum: { file: `${label}.md`, text: addendum } }
233
+ },
234
+ tasks,
235
+ results
236
+ ),
237
+ results
238
+ },
239
+ null,
240
+ 2
241
+ )}
242
+ `
243
+ );
244
+ process.stderr.write(`
245
+ ${label}:
246
+ ${formatReport(results, { seed })}
247
+
248
+ `);
249
+ return results;
250
+ };
251
+ const result = await tune({
252
+ start: start.text,
253
+ devTasks,
254
+ heldOutTasks: HELD_OUT_TASKS,
255
+ score,
256
+ propose: async (input) => {
257
+ const answer = await askProposer(proposer, input);
258
+ if (typeof answer === "string") {
259
+ return { addendum: "", reason: answer, costUsd: 0 };
260
+ }
261
+ return answer;
262
+ },
263
+ rounds,
264
+ repeat,
265
+ heldoutRepeat,
266
+ margin,
267
+ maxCostUsd: maxCost,
268
+ seed,
269
+ save: (name, text) => writeFile(join(dir, name), text),
270
+ log: (line) => process.stderr.write(`${line}
271
+ `)
272
+ });
273
+ const kept = result.history.filter((h) => h.decision?.kept === true);
274
+ process.stdout.write(
275
+ [
276
+ "",
277
+ `Rounds: ${result.history.length}; kept: ${kept.length === 0 ? "none" : kept.map((h) => h.version).join(", ")}. Spent about $${result.spentUsd.toFixed(2)}${result.stopped === "rounds" ? "" : ` (stopped: ${result.stopped})`}.`,
278
+ ...result.heldOut === void 0 ? [] : ["", "Held-out (the only number to quote):", result.heldOut],
279
+ "",
280
+ `The final addendum: ${join(dir, "final.md")}. To use it, copy it into GARUDA.md yourself.`,
281
+ `Every version, the proposer's inputs and history.json: ${dir}`,
282
+ ""
283
+ ].join("\n")
284
+ );
285
+ return 0;
286
+ }
287
+ export {
288
+ DEFAULT_PROPOSER,
289
+ DEFAULT_TUNE_PARALLEL,
290
+ DEFAULT_TUNE_SUITES,
291
+ askProposer,
292
+ progressLine,
293
+ runEvalTune
294
+ };
295
+ //# sourceMappingURL=evalTune-CZRCPSZ3.js.map
@@ -6,7 +6,11 @@ import {
6
6
  fuzzyFiles,
7
7
  runChat,
8
8
  statusOf
9
- } from "./chunk-Z66BWTMD.js";
9
+ } from "./chunk-OQ26W5L4.js";
10
+ import {
11
+ colorPreview,
12
+ header
13
+ } from "./chunk-4JSUUDFQ.js";
10
14
  import {
11
15
  retryText,
12
16
  serverToolOutput,
@@ -15,24 +19,20 @@ import {
15
19
  summariseResult,
16
20
  todoLines
17
21
  } from "./chunk-FARS4R67.js";
18
- import {
19
- colorPreview,
20
- header
21
- } from "./chunk-4JSUUDFQ.js";
22
- import "./chunk-2DYMJMRQ.js";
22
+ import "./chunk-NHWHG3SW.js";
23
+ import "./chunk-65NUEOI7.js";
23
24
  import "./chunk-G2AX7MGS.js";
24
25
  import "./chunk-A2QAIRQL.js";
25
- import "./chunk-735BKABA.js";
26
- import "./chunk-U65DQZDB.js";
27
- import "./chunk-J4346IDH.js";
26
+ import "./chunk-UKIE4AAM.js";
27
+ import "./chunk-7KBOIPUT.js";
28
28
  import "./chunk-B25VL4RU.js";
29
29
  import "./chunk-23FXBNBB.js";
30
30
  import "./chunk-EU7PA45O.js";
31
- import "./chunk-BSK5T2ZG.js";
31
+ import "./chunk-C57GHLKP.js";
32
32
  import "./chunk-5DEWP3YX.js";
33
- import "./chunk-ZAE25JM2.js";
34
- import "./chunk-ATW7BNIG.js";
35
33
  import "./chunk-PZS3V6P3.js";
34
+ import "./chunk-QANRZW7W.js";
35
+ import "./chunk-ATW7BNIG.js";
36
36
  import "./chunk-AOGFYUKG.js";
37
37
  import "./chunk-B4SJY7KT.js";
38
38
  import "./chunk-BHZ6G65V.js";
@@ -1194,4 +1194,4 @@ async function runInkChat(runtime, approver, setEventTarget, banner, sessionPath
1194
1194
  export {
1195
1195
  runInkChat
1196
1196
  };
1197
- //# sourceMappingURL=inkChat-FNUBK43U.js.map
1197
+ //# sourceMappingURL=inkChat-WYYAFZXD.js.map
@@ -5,10 +5,10 @@ import {
5
5
  msUntil,
6
6
  prepareJob,
7
7
  testsBefore
8
- } from "./chunk-TJIWD7R7.js";
8
+ } from "./chunk-4BVCYCQT.js";
9
9
  import "./chunk-N4I6YS3E.js";
10
- import "./chunk-735BKABA.js";
11
- import "./chunk-J4346IDH.js";
10
+ import "./chunk-UKIE4AAM.js";
11
+ import "./chunk-7KBOIPUT.js";
12
12
  import "./chunk-5DEWP3YX.js";
13
13
  import "./chunk-PZS3V6P3.js";
14
14
  import "./chunk-55CFEEIN.js";
@@ -30,4 +30,4 @@ export {
30
30
  prepareJob,
31
31
  testsBefore
32
32
  };
33
- //# sourceMappingURL=jobCommand-FE6XN3YD.js.map
33
+ //# sourceMappingURL=jobCommand-2ODQLHB3.js.map
@@ -11,26 +11,26 @@ import {
11
11
  } from "./chunk-4P26OKTP.js";
12
12
  import {
13
13
  VERSION
14
- } from "./chunk-BSK5T2ZG.js";
14
+ } from "./chunk-C57GHLKP.js";
15
15
  import {
16
16
  USER_SCOPE
17
17
  } from "./chunk-5DEWP3YX.js";
18
+ import {
19
+ capText,
20
+ cleanJson,
21
+ cleanLine,
22
+ cleanText,
23
+ neutralizeTags
24
+ } from "./chunk-PZS3V6P3.js";
18
25
  import {
19
26
  commandLine,
20
27
  defHash,
21
28
  expandEnv,
22
29
  isHttp
23
- } from "./chunk-ZAE25JM2.js";
30
+ } from "./chunk-QANRZW7W.js";
24
31
  import {
25
32
  isLoopbackHost
26
33
  } from "./chunk-ATW7BNIG.js";
27
- import {
28
- capText,
29
- cleanJson,
30
- cleanLine,
31
- cleanText,
32
- neutralizeTags
33
- } from "./chunk-PZS3V6P3.js";
34
34
  import {
35
35
  DEFAULT_ENV_ALLOWLIST,
36
36
  sandboxPaths
@@ -846,4 +846,4 @@ export {
846
846
  changeLines,
847
847
  warnings
848
848
  };
849
- //# sourceMappingURL=manager-73MPYFTP.js.map
849
+ //# sourceMappingURL=manager-TCYTA5XU.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  msUntil
4
- } from "./chunk-TJIWD7R7.js";
4
+ } from "./chunk-4BVCYCQT.js";
5
5
  import {
6
6
  notificationBytes,
7
7
  pickChannel
8
8
  } from "./chunk-N4I6YS3E.js";
9
- import "./chunk-735BKABA.js";
10
- import "./chunk-J4346IDH.js";
9
+ import "./chunk-UKIE4AAM.js";
10
+ import "./chunk-7KBOIPUT.js";
11
11
  import "./chunk-5DEWP3YX.js";
12
12
  import "./chunk-PZS3V6P3.js";
13
13
  import "./chunk-55CFEEIN.js";
@@ -252,4 +252,4 @@ Digest: ${file}`);
252
252
  export {
253
253
  nightCommand
254
254
  };
255
- //# sourceMappingURL=nightCommand-OODJNWDT.js.map
255
+ //# sourceMappingURL=nightCommand-WJU6VZA6.js.map
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ folderKind
4
+ } from "./chunk-42DSA4EA.js";
2
5
  import {
3
6
  loadSearchConfig,
4
7
  providerLabel,
@@ -10,11 +13,8 @@ import {
10
13
  import {
11
14
  SERVER_NAME,
12
15
  checkServerUrl
13
- } from "./chunk-ZAE25JM2.js";
16
+ } from "./chunk-QANRZW7W.js";
14
17
  import "./chunk-ATW7BNIG.js";
15
- import {
16
- folderKind
17
- } from "./chunk-42DSA4EA.js";
18
18
 
19
19
  // src/init/run.ts
20
20
  import { existsSync as existsSync3 } from "fs";
@@ -885,4 +885,4 @@ export {
885
885
  initPrompt,
886
886
  runInit
887
887
  };
888
- //# sourceMappingURL=run-ML6GSPN4.js.map
888
+ //# sourceMappingURL=run-PTMRQCIU.js.map
@@ -11,14 +11,14 @@ import {
11
11
  resolveModel,
12
12
  setDefaultModel,
13
13
  writeCredentials
14
- } from "./chunk-JRVWH27M.js";
14
+ } from "./chunk-2FIV2VZP.js";
15
15
  import {
16
16
  fetchCatalog,
17
17
  loadCatalog,
18
18
  mergedModels,
19
19
  saveCatalog
20
- } from "./chunk-U65DQZDB.js";
21
- import "./chunk-J4346IDH.js";
20
+ } from "./chunk-65NUEOI7.js";
21
+ import "./chunk-7KBOIPUT.js";
22
22
  import "./chunk-ATW7BNIG.js";
23
23
  import "./chunk-BHZ6G65V.js";
24
24
 
@@ -332,4 +332,4 @@ export {
332
332
  setupCommand,
333
333
  terminalIO
334
334
  };
335
- //# sourceMappingURL=setupCommand-GBQIVYJC.js.map
335
+ //# sourceMappingURL=setupCommand-YMF6I3MD.js.map
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ ADDENDUM_MAX_CHARS,
4
+ PROPOSER_SYSTEM,
5
+ decide,
6
+ parseProposal,
7
+ proposerInput,
8
+ readAddendum,
9
+ rejectReason,
10
+ tune
11
+ } from "./chunk-FOPBOB7W.js";
12
+ import "./chunk-DOCDCQVM.js";
13
+ import "./chunk-C57GHLKP.js";
14
+ import "./chunk-6XHON3Q6.js";
15
+ import "./chunk-B4SJY7KT.js";
16
+ import "./chunk-BHZ6G65V.js";
17
+ import "./chunk-P6XWWIEK.js";
18
+ import "./chunk-UIRJOQQS.js";
19
+ import "./chunk-4LFJFDCF.js";
20
+ import "./chunk-3NJNVZTK.js";
21
+ export {
22
+ ADDENDUM_MAX_CHARS,
23
+ PROPOSER_SYSTEM,
24
+ decide,
25
+ parseProposal,
26
+ proposerInput,
27
+ readAddendum,
28
+ rejectReason,
29
+ tune
30
+ };
31
+ //# sourceMappingURL=tune-YVI2KWQF.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@garuda-agent/garuda",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "Garuda: a terminal coding agent with an OS sandbox, approvals and an audit log.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Madhusudhan Vasanth Kumar",
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/version.ts
4
- var VERSION = "0.17.0";
5
-
6
- export {
7
- VERSION
8
- };
9
- //# sourceMappingURL=chunk-BSK5T2ZG.js.map