@garuda-agent/garuda 0.15.0 → 0.16.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 (33) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +30 -17
  3. package/dist/{acpCommand-FZ2P5JFO.js → acpCommand-AJJBKAE5.js} +64 -26
  4. package/dist/chunk-3EQU2GUX.js +27 -0
  5. package/dist/{chunk-K3SIUOAG.js → chunk-44QN5SWZ.js} +2 -2
  6. package/dist/{chunk-INRZR772.js → chunk-B6FA4I7Q.js} +2 -2
  7. package/dist/chunk-EIXUSVFX.js +116 -0
  8. package/dist/{chunk-PQNT34LY.js → chunk-ENLDPN4S.js} +4 -4
  9. package/dist/{chunk-SI2QJYCR.js → chunk-GXZACJUI.js} +6 -25
  10. package/dist/{chunk-2S62ZNTC.js → chunk-HE2K657U.js} +9 -7
  11. package/dist/chunk-NP6RIC25.js +331 -0
  12. package/dist/chunk-R7I2NBPX.js +71 -0
  13. package/dist/{chunk-2TAXSFWN.js → chunk-TUUEBHG2.js} +2 -2
  14. package/dist/{chunk-HRGX53VC.js → chunk-ULAJPMY7.js} +1 -67
  15. package/dist/{chunk-S77XDSD4.js → chunk-USCUXCAU.js} +2 -2
  16. package/dist/{chunk-K7KK7U44.js → chunk-WIJL72ZE.js} +125 -226
  17. package/dist/chunk-XOK5OZOC.js +9 -0
  18. package/dist/cli/index.js +50 -33
  19. package/dist/{create-N4I7TIZE.js → create-VXIH2GUZ.js} +6 -5
  20. package/dist/{evalCommand-3SSFMZQD.js → evalCommand-OX2LQYEK.js} +31 -17
  21. package/dist/{inkChat-34BTFG2K.js → inkChat-YMMMGU7Y.js} +10 -7
  22. package/dist/{install-VRPBZY5H.js → install-EWDSPFFZ.js} +4 -3
  23. package/dist/{jobCommand-XJ5GULS5.js → jobCommand-ACSGSBQ4.js} +9 -7
  24. package/dist/{launchd-QVHQ3VNN.js → launchd-SSX362VG.js} +5 -4
  25. package/dist/{lspCommand-XNTBHXLA.js → lspCommand-JRXKRSL7.js} +4 -3
  26. package/dist/{manager-CSI76AWF.js → manager-AWU4NHHK.js} +4 -3
  27. package/dist/{nightCommand-CR6ZHYGP.js → nightCommand-65MUEV32.js} +9 -7
  28. package/dist/{remove-LE7Q7K46.js → remove-6GDSTAIO.js} +4 -3
  29. package/dist/{server-R3GNIC33.js → server-KHHNHUYV.js} +24 -6
  30. package/dist/setupCommand-VA7D5MZK.js +303 -0
  31. package/package.json +1 -1
  32. package/dist/chunk-EPKWDCV4.js +0 -9
  33. package/dist/chunk-YFQJXRIJ.js +0 -193
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/version.ts
4
+ var VERSION = "0.16.0";
5
+
6
+ export {
7
+ VERSION
8
+ };
9
+ //# sourceMappingURL=chunk-XOK5OZOC.js.map
package/dist/cli/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  runCommand,
16
16
  runTurnInTerminal,
17
17
  stopMessage
18
- } from "../chunk-PQNT34LY.js";
18
+ } from "../chunk-ENLDPN4S.js";
19
19
  import {
20
20
  PlainRenderer
21
21
  } from "../chunk-FARS4R67.js";
@@ -30,12 +30,6 @@ import {
30
30
  SwitchApprover,
31
31
  TerminalApprover
32
32
  } from "../chunk-4JSUUDFQ.js";
33
- import {
34
- hasProviderKey,
35
- keepProviderKey,
36
- loadModelsConfig,
37
- resolveModel
38
- } from "../chunk-YFQJXRIJ.js";
39
33
  import {
40
34
  DEFAULT_MAX_TOKENS,
41
35
  FileSessionStore,
@@ -52,10 +46,20 @@ import {
52
46
  redoPoint,
53
47
  runAgent,
54
48
  signature
55
- } from "../chunk-K7KK7U44.js";
56
- import "../chunk-A2QAIRQL.js";
57
- import "../chunk-HRGX53VC.js";
49
+ } from "../chunk-WIJL72ZE.js";
58
50
  import "../chunk-G2AX7MGS.js";
51
+ import "../chunk-A2QAIRQL.js";
52
+ import "../chunk-ULAJPMY7.js";
53
+ import {
54
+ NO_MODEL,
55
+ chooseModel,
56
+ keepProviderKeys,
57
+ loadModelsConfig,
58
+ providerKeySource,
59
+ resolveModel
60
+ } from "../chunk-NP6RIC25.js";
61
+ import "../chunk-EIXUSVFX.js";
62
+ import "../chunk-R7I2NBPX.js";
59
63
  import {
60
64
  loadSearchConfig
61
65
  } from "../chunk-B25VL4RU.js";
@@ -65,7 +69,7 @@ import {
65
69
  import "../chunk-EU7PA45O.js";
66
70
  import {
67
71
  VERSION
68
- } from "../chunk-EPKWDCV4.js";
72
+ } from "../chunk-XOK5OZOC.js";
69
73
  import "../chunk-5DEWP3YX.js";
70
74
  import "../chunk-ZAE25JM2.js";
71
75
  import "../chunk-ATW7BNIG.js";
@@ -73,8 +77,9 @@ import "../chunk-PZS3V6P3.js";
73
77
  import "../chunk-OUCV3FCT.js";
74
78
  import {
75
79
  JOB_DENIAL
76
- } from "../chunk-SI2QJYCR.js";
80
+ } from "../chunk-GXZACJUI.js";
77
81
  import "../chunk-WMOLXTBU.js";
82
+ import "../chunk-3EQU2GUX.js";
78
83
  import "../chunk-HUIK3WXO.js";
79
84
  import "../chunk-KKB5W47S.js";
80
85
  import "../chunk-3NJNVZTK.js";
@@ -767,7 +772,7 @@ async function main() {
767
772
  "--test-command <cmd>",
768
773
  "with --from-git: the test command; {files} takes the test files (default: detected)"
769
774
  ).action(async (options) => {
770
- const { runEvalCommand } = await import("../evalCommand-3SSFMZQD.js");
775
+ const { runEvalCommand } = await import("../evalCommand-OX2LQYEK.js");
771
776
  process.exitCode = await runEvalCommand({
772
777
  ...options,
773
778
  model: options.model ?? process.env.GARUDA_MODEL,
@@ -789,21 +794,30 @@ async function main() {
789
794
  program.command("night").description(
790
795
  "run this project's night queue (jobs from /schedule), up to 3 at a time, then write one digest"
791
796
  ).option("--at <HH:MM>", "wait until this local time first (keep the terminal open)").option("--parallel <n>", "jobs at the same time (1 to 10, default 3)").addOption(new Option("--from-launchd").hideHelp()).action(async (options) => {
792
- const { nightCommand } = await import("../nightCommand-CR6ZHYGP.js");
797
+ const { nightCommand } = await import("../nightCommand-65MUEV32.js");
793
798
  process.exitCode = await nightCommand(options, new PlainRenderer());
794
799
  });
800
+ program.command("setup").description(
801
+ "choose a provider and model and store its key (~/.garuda/credentials, only you can read it); editors run it to sign in"
802
+ ).option("--show", "show the model and where each key comes from (keys masked)").option("--forget [key-name]", "remove a stored key, or all of them").action(async (options) => {
803
+ const { setupCommand, terminalIO } = await import("../setupCommand-VA7D5MZK.js");
804
+ process.exitCode = await setupCommand(options, { io: await terminalIO() });
805
+ });
795
806
  program.command("acp").description(
796
807
  "run as an agent for an editor over the Agent Client Protocol (VS Code with an extension, Zed, JetBrains, Neovim, Emacs); the editor starts it"
797
- ).option("-m, --model <id>", "model id (or set GARUDA_MODEL)").action(async (options) => {
798
- const { acpCommand } = await import("../acpCommand-FZ2P5JFO.js");
799
- process.exitCode = await acpCommand(options);
808
+ ).argument("[action]", "setup: run garuda setup (the editor's sign-in, ACP Terminal Auth)").option("-m, --model <id>", "model id (or set GARUDA_MODEL)").action(async (action, options) => {
809
+ const { acpCommand } = await import("../acpCommand-AJJBKAE5.js");
810
+ process.exitCode = await acpCommand({
811
+ ...options,
812
+ ...action === void 0 ? {} : { action }
813
+ });
800
814
  });
801
815
  const lsp = program.command("lsp").description("show the language servers for diagnostics (TS/JS, Python, Java)").action(async () => {
802
- const { lspStatusCommand } = await import("../lspCommand-XNTBHXLA.js");
816
+ const { lspStatusCommand } = await import("../lspCommand-JRXKRSL7.js");
803
817
  process.exitCode = await lspStatusCommand();
804
818
  });
805
819
  lsp.command("install").description("install a pinned language server into ~/.garuda/lsp (needs the network)").argument("<language>", "typescript, python or java").action(async (language) => {
806
- const { lspInstallCommand } = await import("../lspCommand-XNTBHXLA.js");
820
+ const { lspInstallCommand } = await import("../lspCommand-JRXKRSL7.js");
807
821
  process.exitCode = await lspInstallCommand(language);
808
822
  });
809
823
  await program.parseAsync();
@@ -815,7 +829,7 @@ async function start(options, program) {
815
829
  let job;
816
830
  let jobGuard;
817
831
  if (options.job !== void 0) {
818
- const { prepareJob } = await import("../jobCommand-XJ5GULS5.js");
832
+ const { prepareJob } = await import("../jobCommand-ACSGSBQ4.js");
819
833
  const prepared = await prepareJob(
820
834
  mainRoot,
821
835
  options.job,
@@ -848,10 +862,10 @@ async function start(options, program) {
848
862
  if (format !== "text" && prompt === void 0) {
849
863
  program.error(`--output-format ${format} needs a task: use -p "task" or give it on stdin.`);
850
864
  }
851
- const spec = options.model ?? job?.job.model ?? process.env.GARUDA_MODEL;
852
- if (!spec) program.error("Set a model with --model <id> or the GARUDA_MODEL variable.");
853
865
  const models = await loadModelsConfig();
854
866
  if (models.problem !== void 0) program.error(models.problem);
867
+ const spec = chooseModel(models.config, options.model, job?.job.model, process.env.GARUDA_MODEL);
868
+ if (!spec) program.error(NO_MODEL);
855
869
  let resolved;
856
870
  try {
857
871
  resolved = resolveModel(spec, models.config);
@@ -869,10 +883,12 @@ async function start(options, program) {
869
883
  }
870
884
  }
871
885
  const searchConfig = await loadSearchConfig();
872
- const hasApiKey = hasProviderKey("ANTHROPIC_API_KEY");
873
- for (const name of [resolved.def.apiKeyEnv, sub?.def.apiKeyEnv, "ANTHROPIC_API_KEY"]) {
874
- if (name !== void 0) keepProviderKey(name);
875
- }
886
+ const credentialsWarning = await keepProviderKeys([
887
+ resolved.def.apiKeyEnv,
888
+ sub?.def.apiKeyEnv,
889
+ "ANTHROPIC_API_KEY"
890
+ ]);
891
+ const anthropicKey = providerKeySource("ANTHROPIC_API_KEY");
876
892
  const { loadTeamPolicy } = await import("../policy-EJPLEEXP.js");
877
893
  let team;
878
894
  try {
@@ -970,7 +986,7 @@ async function start(options, program) {
970
986
  job.job.status = "failed";
971
987
  await saveJob(job.job);
972
988
  if (options.fromLaunchd === true || job.job.launchd !== void 0) {
973
- const { removeAgent, defaultAgentEnv } = await import("../launchd-QVHQ3VNN.js");
989
+ const { removeAgent, defaultAgentEnv } = await import("../launchd-SSX362VG.js");
974
990
  await removeAgent(runtime.executor, job.job, defaultAgentEnv());
975
991
  }
976
992
  return 1;
@@ -987,6 +1003,7 @@ async function start(options, program) {
987
1003
  );
988
1004
  }
989
1005
  for (const note of resolved.notes) renderer.info(note);
1006
+ if (credentialsWarning !== void 0) renderer.warn(credentialsWarning);
990
1007
  if (runtime.price === void 0) {
991
1008
  renderer.warn(
992
1009
  `Garuda has no price for ${modelId}. Set "price" for it in ~/.garuda/models.json to see cost.`
@@ -1014,7 +1031,7 @@ async function start(options, program) {
1014
1031
  ],
1015
1032
  skills: runtime.skills.map((k) => k.name),
1016
1033
  agents: runtime.agents.map((a) => a.name),
1017
- apiKeySource: !modelId.includes("/") && hasApiKey ? "ANTHROPIC_API_KEY" : "none"
1034
+ apiKeySource: modelId.includes("/") || anthropicKey === void 0 ? "none" : anthropicKey === "file" ? "credentials" : "ANTHROPIC_API_KEY"
1018
1035
  })
1019
1036
  });
1020
1037
  if (output !== void 0) events = output;
@@ -1040,7 +1057,7 @@ async function start(options, program) {
1040
1057
  if (resolved2.kind === "prompt") prompt = resolved2.prompt;
1041
1058
  }
1042
1059
  if (job !== void 0) {
1043
- const { testsBefore } = await import("../jobCommand-XJ5GULS5.js");
1060
+ const { testsBefore } = await import("../jobCommand-ACSGSBQ4.js");
1044
1061
  await testsBefore(job, runtime, renderer);
1045
1062
  }
1046
1063
  const outcome = await runTurnInTerminal(
@@ -1053,7 +1070,7 @@ async function start(options, program) {
1053
1070
  await runtime.close();
1054
1071
  finish(outcome);
1055
1072
  if (job !== void 0) {
1056
- const { finishJob } = await import("../jobCommand-XJ5GULS5.js");
1073
+ const { finishJob } = await import("../jobCommand-ACSGSBQ4.js");
1057
1074
  await finishJob(job, outcome, runtime, renderer, void 0, {
1058
1075
  fromLaunchd: options.fromLaunchd === true
1059
1076
  });
@@ -1139,7 +1156,7 @@ function wantsInk() {
1139
1156
  }
1140
1157
  async function loadInk(renderer) {
1141
1158
  try {
1142
- return await import("../inkChat-34BTFG2K.js");
1159
+ return await import("../inkChat-YMMMGU7Y.js");
1143
1160
  } catch (error) {
1144
1161
  renderer.info(`Plain chat (Ink is not available: ${error.message.split("\n")[0]}).`);
1145
1162
  return void 0;
@@ -1171,8 +1188,8 @@ function recordJobDenial(job, tool, target) {
1171
1188
  }
1172
1189
  async function jobBatchClient(job, resolved, renderer) {
1173
1190
  const { DeadlineClient } = await import("../deadline-F5RJJ2QW.js");
1174
- const { nextTime } = await import("../launchd-QVHQ3VNN.js");
1175
- const { DEFAULT_FINISH_BY, DEFAULT_STEP_LIMIT_MINUTES, SWITCH_BEFORE_MS } = await import("../create-N4I7TIZE.js");
1191
+ const { nextTime } = await import("../launchd-SSX362VG.js");
1192
+ const { DEFAULT_FINISH_BY, DEFAULT_STEP_LIMIT_MINUTES, SWITCH_BEFORE_MS } = await import("../create-VXIH2GUZ.js");
1176
1193
  const finishBy = job.job.finishBy ?? DEFAULT_FINISH_BY;
1177
1194
  const stepLimit = job.job.stepLimitMinutes ?? DEFAULT_STEP_LIMIT_MINUTES;
1178
1195
  const switchAt = new Date(nextTime(finishBy).getTime() - SWITCH_BEFORE_MS);
@@ -3,7 +3,7 @@ import {
3
3
  jobBase,
4
4
  linkCandidates,
5
5
  worktreeDir
6
- } from "./chunk-K3SIUOAG.js";
6
+ } from "./chunk-44QN5SWZ.js";
7
7
  import {
8
8
  agentLabel,
9
9
  defaultAgentEnv,
@@ -12,16 +12,17 @@ import {
12
12
  nextTime,
13
13
  nightAgentTime,
14
14
  nightSpec
15
- } from "./chunk-S77XDSD4.js";
15
+ } from "./chunk-USCUXCAU.js";
16
16
  import {
17
17
  jobPrompt
18
18
  } from "./chunk-YQTGMCU6.js";
19
19
  import "./chunk-OUCV3FCT.js";
20
20
  import {
21
21
  JobGitError
22
- } from "./chunk-2TAXSFWN.js";
23
- import "./chunk-SI2QJYCR.js";
22
+ } from "./chunk-TUUEBHG2.js";
23
+ import "./chunk-GXZACJUI.js";
24
24
  import "./chunk-WMOLXTBU.js";
25
+ import "./chunk-3EQU2GUX.js";
25
26
  import "./chunk-HUIK3WXO.js";
26
27
  import {
27
28
  DEFAULT_JOB_MAX_STEPS,
@@ -220,4 +221,4 @@ export {
220
221
  createJob,
221
222
  switchTime
222
223
  };
223
- //# sourceMappingURL=create-N4I7TIZE.js.map
224
+ //# sourceMappingURL=create-VXIH2GUZ.js.map
@@ -2,10 +2,6 @@
2
2
  import {
3
3
  AutoApprover
4
4
  } from "./chunk-NXJ4XLB5.js";
5
- import {
6
- loadModelsConfig,
7
- resolveModel
8
- } from "./chunk-YFQJXRIJ.js";
9
5
  import {
10
6
  CODE_INDEX_MODES,
11
7
  DEFAULT_CODE_INDEX_MODE,
@@ -13,15 +9,24 @@ import {
13
9
  Runtime,
14
10
  detectProfiles,
15
11
  newSessionId
16
- } from "./chunk-K7KK7U44.js";
12
+ } from "./chunk-WIJL72ZE.js";
13
+ import "./chunk-G2AX7MGS.js";
17
14
  import "./chunk-A2QAIRQL.js";
15
+ import "./chunk-ULAJPMY7.js";
16
+ import {
17
+ NO_MODEL,
18
+ chooseModel,
19
+ keepProviderKeys,
20
+ loadModelsConfig,
21
+ resolveModel
22
+ } from "./chunk-NP6RIC25.js";
23
+ import "./chunk-EIXUSVFX.js";
18
24
  import {
19
25
  totalTokens
20
- } from "./chunk-HRGX53VC.js";
21
- import "./chunk-G2AX7MGS.js";
26
+ } from "./chunk-R7I2NBPX.js";
22
27
  import "./chunk-B25VL4RU.js";
23
28
  import "./chunk-23FXBNBB.js";
24
- import "./chunk-EPKWDCV4.js";
29
+ import "./chunk-XOK5OZOC.js";
25
30
  import "./chunk-5DEWP3YX.js";
26
31
  import "./chunk-ZAE25JM2.js";
27
32
  import "./chunk-ATW7BNIG.js";
@@ -29,7 +34,7 @@ import "./chunk-PZS3V6P3.js";
29
34
  import {
30
35
  LINK_CANDIDATES,
31
36
  cleanArgs
32
- } from "./chunk-K3SIUOAG.js";
37
+ } from "./chunk-44QN5SWZ.js";
33
38
  import {
34
39
  MANIFEST,
35
40
  TEST_PATH,
@@ -39,7 +44,7 @@ import {
39
44
  import {
40
45
  git,
41
46
  shellWord
42
- } from "./chunk-2TAXSFWN.js";
47
+ } from "./chunk-TUUEBHG2.js";
43
48
  import {
44
49
  DEFAULT_ENV_ALLOWLIST,
45
50
  EXECUTOR_NAMES,
@@ -47,8 +52,9 @@ import {
47
52
  createExecutor,
48
53
  expandAllowlist,
49
54
  parseSettings
50
- } from "./chunk-SI2QJYCR.js";
55
+ } from "./chunk-GXZACJUI.js";
51
56
  import "./chunk-WMOLXTBU.js";
57
+ import "./chunk-3EQU2GUX.js";
52
58
  import "./chunk-HUIK3WXO.js";
53
59
  import "./chunk-3NJNVZTK.js";
54
60
 
@@ -2422,14 +2428,15 @@ async function runEvalCommand(options) {
2422
2428
  return 0;
2423
2429
  }
2424
2430
  if (options.prepare !== void 0) return prepare(options.prepare);
2425
- const modelId = options.model;
2426
- if (!modelId) {
2427
- process.stderr.write("Set a model with --model <id> or the GARUDA_MODEL variable.\n");
2428
- return 1;
2429
- }
2430
2431
  const models = await loadModelsConfig();
2431
2432
  if (models.problem !== void 0) {
2432
2433
  process.stderr.write(`${models.problem}
2434
+ `);
2435
+ return 1;
2436
+ }
2437
+ const modelId = chooseModel(models.config, options.model);
2438
+ if (!modelId) {
2439
+ process.stderr.write(`${NO_MODEL}
2433
2440
  `);
2434
2441
  return 1;
2435
2442
  }
@@ -2546,6 +2553,13 @@ async function runEvalCommand(options) {
2546
2553
  `);
2547
2554
  return 1;
2548
2555
  }
2556
+ const credentialsWarning = await keepProviderKeys([
2557
+ resolved.def.apiKeyEnv,
2558
+ sub?.def.apiKeyEnv,
2559
+ "ANTHROPIC_API_KEY"
2560
+ ]);
2561
+ if (credentialsWarning !== void 0) process.stderr.write(`${credentialsWarning}
2562
+ `);
2549
2563
  const suite = options.suite ?? "basic";
2550
2564
  const suiteTasks = suite === "all" ? ALL_TASKS : suite === "repo" ? repoTasks : EVAL_SUITES[suite];
2551
2565
  if (suiteTasks === void 0) {
@@ -2795,4 +2809,4 @@ export {
2795
2809
  BATCH_TASK_TIMEOUT_MS,
2796
2810
  runEvalCommand
2797
2811
  };
2798
- //# sourceMappingURL=evalCommand-3SSFMZQD.js.map
2812
+ //# sourceMappingURL=evalCommand-OX2LQYEK.js.map
@@ -6,7 +6,7 @@ import {
6
6
  fuzzyFiles,
7
7
  runChat,
8
8
  statusOf
9
- } from "./chunk-PQNT34LY.js";
9
+ } from "./chunk-ENLDPN4S.js";
10
10
  import {
11
11
  retryText,
12
12
  serverToolOutput,
@@ -19,21 +19,24 @@ import {
19
19
  colorPreview,
20
20
  header
21
21
  } from "./chunk-4JSUUDFQ.js";
22
- import "./chunk-K7KK7U44.js";
23
- import "./chunk-A2QAIRQL.js";
24
- import "./chunk-HRGX53VC.js";
22
+ import "./chunk-WIJL72ZE.js";
25
23
  import "./chunk-G2AX7MGS.js";
24
+ import "./chunk-A2QAIRQL.js";
25
+ import "./chunk-ULAJPMY7.js";
26
+ import "./chunk-EIXUSVFX.js";
27
+ import "./chunk-R7I2NBPX.js";
26
28
  import "./chunk-B25VL4RU.js";
27
29
  import "./chunk-23FXBNBB.js";
28
30
  import "./chunk-EU7PA45O.js";
29
- import "./chunk-EPKWDCV4.js";
31
+ import "./chunk-XOK5OZOC.js";
30
32
  import "./chunk-5DEWP3YX.js";
31
33
  import "./chunk-ZAE25JM2.js";
32
34
  import "./chunk-ATW7BNIG.js";
33
35
  import "./chunk-PZS3V6P3.js";
34
36
  import "./chunk-OUCV3FCT.js";
35
- import "./chunk-SI2QJYCR.js";
37
+ import "./chunk-GXZACJUI.js";
36
38
  import "./chunk-WMOLXTBU.js";
39
+ import "./chunk-3EQU2GUX.js";
37
40
  import "./chunk-HUIK3WXO.js";
38
41
  import "./chunk-KKB5W47S.js";
39
42
  import "./chunk-3NJNVZTK.js";
@@ -1190,4 +1193,4 @@ async function runInkChat(runtime, approver, setEventTarget, banner, sessionPath
1190
1193
  export {
1191
1194
  runInkChat
1192
1195
  };
1193
- //# sourceMappingURL=inkChat-34BTFG2K.js.map
1196
+ //# sourceMappingURL=inkChat-YMMMGU7Y.js.map
@@ -3,10 +3,11 @@ import {
3
3
  INSTALL_TIMEOUT_MS,
4
4
  installCommand,
5
5
  installServer
6
- } from "./chunk-INRZR772.js";
6
+ } from "./chunk-B6FA4I7Q.js";
7
7
  import "./chunk-EU7PA45O.js";
8
- import "./chunk-SI2QJYCR.js";
8
+ import "./chunk-GXZACJUI.js";
9
9
  import "./chunk-WMOLXTBU.js";
10
+ import "./chunk-3EQU2GUX.js";
10
11
  import "./chunk-HUIK3WXO.js";
11
12
  import "./chunk-3NJNVZTK.js";
12
13
  export {
@@ -14,4 +15,4 @@ export {
14
15
  installCommand,
15
16
  installServer
16
17
  };
17
- //# sourceMappingURL=install-VRPBZY5H.js.map
18
+ //# sourceMappingURL=install-EWDSPFFZ.js.map
@@ -5,18 +5,20 @@ import {
5
5
  msUntil,
6
6
  prepareJob,
7
7
  testsBefore
8
- } from "./chunk-2S62ZNTC.js";
8
+ } from "./chunk-HE2K657U.js";
9
9
  import "./chunk-N4I6YS3E.js";
10
- import "./chunk-HRGX53VC.js";
10
+ import "./chunk-ULAJPMY7.js";
11
+ import "./chunk-R7I2NBPX.js";
11
12
  import "./chunk-5DEWP3YX.js";
12
13
  import "./chunk-PZS3V6P3.js";
13
- import "./chunk-K3SIUOAG.js";
14
- import "./chunk-S77XDSD4.js";
14
+ import "./chunk-44QN5SWZ.js";
15
+ import "./chunk-USCUXCAU.js";
15
16
  import "./chunk-YQTGMCU6.js";
16
17
  import "./chunk-OUCV3FCT.js";
17
- import "./chunk-2TAXSFWN.js";
18
- import "./chunk-SI2QJYCR.js";
18
+ import "./chunk-TUUEBHG2.js";
19
+ import "./chunk-GXZACJUI.js";
19
20
  import "./chunk-WMOLXTBU.js";
21
+ import "./chunk-3EQU2GUX.js";
20
22
  import "./chunk-HUIK3WXO.js";
21
23
  import "./chunk-KKB5W47S.js";
22
24
  import "./chunk-3NJNVZTK.js";
@@ -27,4 +29,4 @@ export {
27
29
  prepareJob,
28
30
  testsBefore
29
31
  };
30
- //# sourceMappingURL=jobCommand-XJ5GULS5.js.map
32
+ //# sourceMappingURL=jobCommand-ACSGSBQ4.js.map
@@ -14,10 +14,11 @@ import {
14
14
  removeSpec,
15
15
  specPath,
16
16
  specPlist
17
- } from "./chunk-S77XDSD4.js";
18
- import "./chunk-2TAXSFWN.js";
19
- import "./chunk-SI2QJYCR.js";
17
+ } from "./chunk-USCUXCAU.js";
18
+ import "./chunk-TUUEBHG2.js";
19
+ import "./chunk-GXZACJUI.js";
20
20
  import "./chunk-WMOLXTBU.js";
21
+ import "./chunk-3EQU2GUX.js";
21
22
  import "./chunk-HUIK3WXO.js";
22
23
  import "./chunk-KKB5W47S.js";
23
24
  import "./chunk-3NJNVZTK.js";
@@ -37,4 +38,4 @@ export {
37
38
  specPath,
38
39
  specPlist
39
40
  };
40
- //# sourceMappingURL=launchd-QVHQ3VNN.js.map
41
+ //# sourceMappingURL=launchd-SSX362VG.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-36GQIVGT.js";
6
6
  import {
7
7
  installServer
8
- } from "./chunk-INRZR772.js";
8
+ } from "./chunk-B6FA4I7Q.js";
9
9
  import {
10
10
  LSP_CONFIG_FILE,
11
11
  loadLspConfig
@@ -18,8 +18,9 @@ import {
18
18
  HostExecutor,
19
19
  createExecutor,
20
20
  loadSettings
21
- } from "./chunk-SI2QJYCR.js";
21
+ } from "./chunk-GXZACJUI.js";
22
22
  import "./chunk-WMOLXTBU.js";
23
+ import "./chunk-3EQU2GUX.js";
23
24
  import "./chunk-HUIK3WXO.js";
24
25
  import "./chunk-3NJNVZTK.js";
25
26
 
@@ -96,4 +97,4 @@ export {
96
97
  lspInstallCommand,
97
98
  lspStatusCommand
98
99
  };
99
- //# sourceMappingURL=lspCommand-XNTBHXLA.js.map
100
+ //# sourceMappingURL=lspCommand-JRXKRSL7.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-4P26OKTP.js";
12
12
  import {
13
13
  VERSION
14
- } from "./chunk-EPKWDCV4.js";
14
+ } from "./chunk-XOK5OZOC.js";
15
15
  import {
16
16
  USER_SCOPE
17
17
  } from "./chunk-5DEWP3YX.js";
@@ -34,8 +34,9 @@ import {
34
34
  import {
35
35
  DEFAULT_ENV_ALLOWLIST,
36
36
  sandboxPaths
37
- } from "./chunk-SI2QJYCR.js";
37
+ } from "./chunk-GXZACJUI.js";
38
38
  import "./chunk-WMOLXTBU.js";
39
+ import "./chunk-3EQU2GUX.js";
39
40
  import "./chunk-HUIK3WXO.js";
40
41
  import "./chunk-3NJNVZTK.js";
41
42
 
@@ -844,4 +845,4 @@ export {
844
845
  changeLines,
845
846
  warnings
846
847
  };
847
- //# sourceMappingURL=manager-CSI76AWF.js.map
848
+ //# sourceMappingURL=manager-AWU4NHHK.js.map
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  msUntil
4
- } from "./chunk-2S62ZNTC.js";
4
+ } from "./chunk-HE2K657U.js";
5
5
  import {
6
6
  notificationBytes,
7
7
  pickChannel
8
8
  } from "./chunk-N4I6YS3E.js";
9
- import "./chunk-HRGX53VC.js";
9
+ import "./chunk-ULAJPMY7.js";
10
+ import "./chunk-R7I2NBPX.js";
10
11
  import "./chunk-5DEWP3YX.js";
11
12
  import "./chunk-PZS3V6P3.js";
12
- import "./chunk-K3SIUOAG.js";
13
+ import "./chunk-44QN5SWZ.js";
13
14
  import {
14
15
  defaultAgentEnv,
15
16
  nightSpec,
16
17
  removeSpec
17
- } from "./chunk-S77XDSD4.js";
18
+ } from "./chunk-USCUXCAU.js";
18
19
  import "./chunk-YQTGMCU6.js";
19
20
  import {
20
21
  testSummary
@@ -22,11 +23,12 @@ import {
22
23
  import {
23
24
  hostCommand,
24
25
  shellWord
25
- } from "./chunk-2TAXSFWN.js";
26
+ } from "./chunk-TUUEBHG2.js";
26
27
  import {
27
28
  createExecutor
28
- } from "./chunk-SI2QJYCR.js";
29
+ } from "./chunk-GXZACJUI.js";
29
30
  import "./chunk-WMOLXTBU.js";
31
+ import "./chunk-3EQU2GUX.js";
30
32
  import "./chunk-HUIK3WXO.js";
31
33
  import {
32
34
  JOBS_DIR,
@@ -244,4 +246,4 @@ Digest: ${file}`);
244
246
  export {
245
247
  nightCommand
246
248
  };
247
- //# sourceMappingURL=nightCommand-CR6ZHYGP.js.map
249
+ //# sourceMappingURL=nightCommand-65MUEV32.js.map
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  git
4
- } from "./chunk-2TAXSFWN.js";
5
- import "./chunk-SI2QJYCR.js";
4
+ } from "./chunk-TUUEBHG2.js";
5
+ import "./chunk-GXZACJUI.js";
6
6
  import "./chunk-WMOLXTBU.js";
7
+ import "./chunk-3EQU2GUX.js";
7
8
  import "./chunk-HUIK3WXO.js";
8
9
  import {
9
10
  JOBS_DIR,
@@ -56,4 +57,4 @@ export {
56
57
  jobLeftovers,
57
58
  removeJob
58
59
  };
59
- //# sourceMappingURL=remove-LE7Q7K46.js.map
60
+ //# sourceMappingURL=remove-6GDSTAIO.js.map
@@ -459,6 +459,10 @@ ${mark}`;
459
459
 
460
460
  // src/acp/server.ts
461
461
  var INTERNAL_ERROR = -32603;
462
+ var SETUP_METHOD_ID = "garuda-setup";
463
+ function setupNeeded(message) {
464
+ return Object.assign(new Error(message), { authRequired: true });
465
+ }
462
466
  var MODES = {
463
467
  build: { name: "Build", description: "Edits and commands, each one asks first." },
464
468
  plan: {
@@ -486,7 +490,7 @@ function acpServer(options) {
486
490
  connection = c.client;
487
491
  }).onRequest(
488
492
  methods.agent.initialize,
489
- () => ({
493
+ (c) => ({
490
494
  protocolVersion: PROTOCOL_VERSION,
491
495
  agentInfo: { name: "garuda", title: "Garuda", version: options.version },
492
496
  agentCapabilities: {
@@ -494,8 +498,16 @@ function acpServer(options) {
494
498
  promptCapabilities: { image: false, audio: false, embeddedContext: true },
495
499
  mcpCapabilities: { http: false, sse: false }
496
500
  },
497
- // The keys come from the environment, as in the terminal.
498
- authMethods: []
501
+ // Terminal Auth (0.16) only for an editor that can run it (the spec: never offer it else).
502
+ authMethods: options.terminalAuth !== void 0 && c.params.clientCapabilities?.auth?.terminal === true ? [
503
+ {
504
+ type: "terminal",
505
+ id: SETUP_METHOD_ID,
506
+ name: "Set up Garuda",
507
+ description: "Choose a model and enter its API key.",
508
+ args: options.terminalAuth.args
509
+ }
510
+ ] : []
499
511
  })
500
512
  ).onRequest(methods.agent.authenticate, () => ({})).onRequest(methods.agent.session.new, async (c) => {
501
513
  const root = c.params.cwd;
@@ -518,7 +530,11 @@ function acpServer(options) {
518
530
  onNotice: (text) => channel.notice(text)
519
531
  });
520
532
  } catch (error) {
521
- throw new RequestError(INTERNAL_ERROR, error.message);
533
+ const message = error.message;
534
+ if (error.authRequired === true) {
535
+ throw RequestError.authRequired(void 0, message);
536
+ }
537
+ throw new RequestError(INTERNAL_ERROR, message);
522
538
  }
523
539
  if (runtime.executorNotice !== void 0) channel.notice(runtime.executorNotice);
524
540
  const skipped = editorServers(c.params.mcpServers);
@@ -671,6 +687,8 @@ function isFolder(path) {
671
687
  }
672
688
  }
673
689
  export {
674
- acpServer
690
+ SETUP_METHOD_ID,
691
+ acpServer,
692
+ setupNeeded
675
693
  };
676
- //# sourceMappingURL=server-R3GNIC33.js.map
694
+ //# sourceMappingURL=server-KHHNHUYV.js.map