@garuda-agent/garuda 0.0.1 → 0.15.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 (66) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +1097 -0
  5. package/SECURITY.md +32 -0
  6. package/dist/acpCommand-FZ2P5JFO.js +153 -0
  7. package/dist/anthropic-NQDBCHJU.js +327 -0
  8. package/dist/chunk-23FXBNBB.js +46 -0
  9. package/dist/chunk-2S62ZNTC.js +320 -0
  10. package/dist/chunk-2TAXSFWN.js +49 -0
  11. package/dist/chunk-36GQIVGT.js +526 -0
  12. package/dist/chunk-3CEPHS4C.js +231 -0
  13. package/dist/chunk-3NJNVZTK.js +123 -0
  14. package/dist/chunk-42DSA4EA.js +116 -0
  15. package/dist/chunk-4JSUUDFQ.js +118 -0
  16. package/dist/chunk-4P26OKTP.js +100 -0
  17. package/dist/chunk-5DEWP3YX.js +139 -0
  18. package/dist/chunk-A2QAIRQL.js +45 -0
  19. package/dist/chunk-ATW7BNIG.js +31 -0
  20. package/dist/chunk-B25VL4RU.js +242 -0
  21. package/dist/chunk-EPKWDCV4.js +9 -0
  22. package/dist/chunk-EU7PA45O.js +324 -0
  23. package/dist/chunk-FARS4R67.js +206 -0
  24. package/dist/chunk-G2AX7MGS.js +36 -0
  25. package/dist/chunk-HRGX53VC.js +173 -0
  26. package/dist/chunk-HUIK3WXO.js +234 -0
  27. package/dist/chunk-INRZR772.js +73 -0
  28. package/dist/chunk-K3SIUOAG.js +138 -0
  29. package/dist/chunk-K7KK7U44.js +9358 -0
  30. package/dist/chunk-KKB5W47S.js +231 -0
  31. package/dist/chunk-N4I6YS3E.js +73 -0
  32. package/dist/chunk-NXJ4XLB5.js +19 -0
  33. package/dist/chunk-OUCV3FCT.js +205 -0
  34. package/dist/chunk-PQNT34LY.js +1247 -0
  35. package/dist/chunk-PZS3V6P3.js +46 -0
  36. package/dist/chunk-S77XDSD4.js +157 -0
  37. package/dist/chunk-SI2QJYCR.js +1341 -0
  38. package/dist/chunk-WMOLXTBU.js +61 -0
  39. package/dist/chunk-YFQJXRIJ.js +193 -0
  40. package/dist/chunk-YQTGMCU6.js +111 -0
  41. package/dist/chunk-ZAE25JM2.js +158 -0
  42. package/dist/cli/index.js +1203 -0
  43. package/dist/create-N4I7TIZE.js +223 -0
  44. package/dist/deadline-F5RJJ2QW.js +86 -0
  45. package/dist/detect-LARDSLLZ.js +10 -0
  46. package/dist/evalCommand-3SSFMZQD.js +2798 -0
  47. package/dist/export-HN3CT7AV.js +158 -0
  48. package/dist/inkChat-34BTFG2K.js +1193 -0
  49. package/dist/install-VRPBZY5H.js +17 -0
  50. package/dist/job-3NYDMP2M.js +31 -0
  51. package/dist/jobCommand-XJ5GULS5.js +30 -0
  52. package/dist/launchd-QVHQ3VNN.js +40 -0
  53. package/dist/lspCommand-XNTBHXLA.js +99 -0
  54. package/dist/manager-4PMSXT47.js +14 -0
  55. package/dist/manager-CSI76AWF.js +847 -0
  56. package/dist/nightCommand-CR6ZHYGP.js +247 -0
  57. package/dist/oauth-W6OK6XXO.js +23 -0
  58. package/dist/openaiCompatible-CJWVJP5M.js +501 -0
  59. package/dist/policy-EJPLEEXP.js +31 -0
  60. package/dist/proxy-XJAHCZB2.js +192 -0
  61. package/dist/remove-LE7Q7K46.js +59 -0
  62. package/dist/run-ML6GSPN4.js +888 -0
  63. package/dist/server-R3GNIC33.js +676 -0
  64. package/dist/servers-6YDGWOZ6.js +24 -0
  65. package/dist/text-J2GD647J.js +11 -0
  66. package/package.json +84 -3
@@ -0,0 +1,501 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ withoutServerBlocks
4
+ } from "./chunk-A2QAIRQL.js";
5
+
6
+ // src/model/textToolCalls.ts
7
+ function extractTextToolCalls(text, toolNames2, mode = "whole") {
8
+ if (mode === "off" || toolNames2.size === 0) return void 0;
9
+ if (mode === "whole") {
10
+ const calls = wholeCalls(text.trim(), toolNames2);
11
+ return calls === void 0 ? void 0 : { calls, text: "" };
12
+ }
13
+ return lineCalls(text, toolNames2);
14
+ }
15
+ function mayBeToolCall(text) {
16
+ const start = text.trimStart();
17
+ if (start === "") return true;
18
+ if (START_TOKENS.some((token) => token.startsWith(start))) return true;
19
+ return /^(?:<tool_call>\s*|```(?:json)?\s*)?[[{]/.test(start);
20
+ }
21
+ var START_TOKENS = ["<tool_call>", "```json", "```"];
22
+ var StreamHold = class {
23
+ constructor(mode) {
24
+ this.mode = mode;
25
+ this.holdRest = false;
26
+ if (mode === "off") this.released = true;
27
+ }
28
+ mode;
29
+ held = "";
30
+ /** "lines" mode: the current line, not yet decided. */
31
+ line = "";
32
+ /** "lines" mode: the current line is not a call; show it as it comes. */
33
+ lineShown = false;
34
+ holdRest;
35
+ released = false;
36
+ /** Take new text; return the text to show now. */
37
+ push(text) {
38
+ if (this.released) return text;
39
+ if (this.holdRest) {
40
+ this.held += text;
41
+ return "";
42
+ }
43
+ if (this.mode === "whole") {
44
+ this.held += text;
45
+ if (mayBeToolCall(this.held)) return "";
46
+ this.released = true;
47
+ const out = this.held;
48
+ this.held = "";
49
+ return out;
50
+ }
51
+ return this.pushLines(text);
52
+ }
53
+ /** The text held back at the end. It starts at the start of a line. */
54
+ rest() {
55
+ return this.held + this.line;
56
+ }
57
+ pushLines(text) {
58
+ this.line += text;
59
+ let out = "";
60
+ for (; ; ) {
61
+ const newline = this.line.indexOf("\n");
62
+ if (this.lineShown) {
63
+ if (newline === -1) {
64
+ out += this.line;
65
+ this.line = "";
66
+ return out;
67
+ }
68
+ out += this.line.slice(0, newline + 1);
69
+ this.line = this.line.slice(newline + 1);
70
+ this.lineShown = false;
71
+ continue;
72
+ }
73
+ const current = newline === -1 ? this.line : this.line.slice(0, newline);
74
+ if (current.trim() !== "" && !mayBeToolCall(current)) {
75
+ this.lineShown = true;
76
+ continue;
77
+ }
78
+ if (newline === -1) return out;
79
+ if (current.trim() === "") {
80
+ out += this.line.slice(0, newline + 1);
81
+ this.line = this.line.slice(newline + 1);
82
+ continue;
83
+ }
84
+ this.holdRest = true;
85
+ this.held = this.line;
86
+ this.line = "";
87
+ return out;
88
+ }
89
+ }
90
+ };
91
+ var MAX_JSON_LINES = 60;
92
+ function lineCalls(text, toolNames2) {
93
+ const lines = text.split("\n");
94
+ const keep = [];
95
+ const calls = [];
96
+ let i = 0;
97
+ while (i < lines.length) {
98
+ const found = callsAt(lines, i, toolNames2);
99
+ if (found === void 0) {
100
+ keep.push(lines[i] ?? "");
101
+ i++;
102
+ continue;
103
+ }
104
+ if (found.calls.length === 0) keep.push(...lines.slice(i, found.next));
105
+ calls.push(...found.calls);
106
+ i = found.next;
107
+ }
108
+ if (calls.length === 0) return void 0;
109
+ return {
110
+ calls,
111
+ text: keep.join("\n").replace(/\n{3,}/g, "\n\n").trim()
112
+ };
113
+ }
114
+ function callsAt(lines, i, toolNames2) {
115
+ const first = (lines[i] ?? "").trim();
116
+ if (first.startsWith("```") || first.startsWith("<tool_call>")) {
117
+ const closing = first.startsWith("```") ? "```" : "</tool_call>";
118
+ for (let j = i; j < lines.length && j < i + MAX_JSON_LINES; j++) {
119
+ const line = (lines[j] ?? "").trim();
120
+ const closes = j === i ? line.length > 3 && line.endsWith(closing) : line.endsWith(closing);
121
+ if (!closes) continue;
122
+ const calls = wholeCalls(
123
+ lines.slice(i, j + 1).join("\n").trim(),
124
+ toolNames2
125
+ );
126
+ return { calls: calls ?? [], next: j + 1 };
127
+ }
128
+ return void 0;
129
+ }
130
+ if (!first.startsWith("{") && !first.startsWith("[")) return void 0;
131
+ for (let j = i; j < lines.length && j < i + MAX_JSON_LINES; j++) {
132
+ const calls = wholeCalls(
133
+ lines.slice(i, j + 1).join("\n").trim(),
134
+ toolNames2
135
+ );
136
+ if (calls !== void 0) return { calls, next: j + 1 };
137
+ }
138
+ return void 0;
139
+ }
140
+ function wholeCalls(text, toolNames2) {
141
+ const parts = unwrap(text);
142
+ if (parts === void 0 || parts.length === 0) return void 0;
143
+ const calls = [];
144
+ for (const part of parts) {
145
+ const values = parseJsonValues(part);
146
+ if (values === void 0) return void 0;
147
+ for (const value of values.flatMap((v) => Array.isArray(v) ? v : [v])) {
148
+ const call = toCall(value, toolNames2);
149
+ if (call === void 0) return void 0;
150
+ calls.push(call);
151
+ }
152
+ }
153
+ return calls.length === 0 ? void 0 : calls;
154
+ }
155
+ function unwrap(text) {
156
+ if (text.startsWith("<tool_call>")) return blocks(text, /<tool_call>([\s\S]*?)<\/tool_call>/g);
157
+ if (text.startsWith("```")) return blocks(text, /```(?:json)?[ \t]*\n?([\s\S]*?)```/g);
158
+ return [text];
159
+ }
160
+ function blocks(text, pattern) {
161
+ const inner = [];
162
+ let rest = text;
163
+ for (const match of text.matchAll(pattern)) {
164
+ rest = rest.replace(match[0], "");
165
+ inner.push((match[1] ?? "").trim());
166
+ }
167
+ return rest.trim() === "" ? inner : void 0;
168
+ }
169
+ function parseJsonValues(text) {
170
+ try {
171
+ return [JSON.parse(text)];
172
+ } catch {
173
+ }
174
+ const lines = text.split("\n").map((line) => line.trim()).filter((line) => line !== "");
175
+ if (lines.length < 2) return void 0;
176
+ const values = [];
177
+ for (const line of lines) {
178
+ try {
179
+ values.push(JSON.parse(line));
180
+ } catch {
181
+ return void 0;
182
+ }
183
+ }
184
+ return values;
185
+ }
186
+ function toCall(value, toolNames2) {
187
+ if (!isObject(value)) return void 0;
188
+ const name = value.name;
189
+ if (typeof name !== "string" || !toolNames2.has(name)) return void 0;
190
+ let input = value.arguments ?? value.parameters ?? {};
191
+ if (typeof input === "string") {
192
+ try {
193
+ input = JSON.parse(input);
194
+ } catch {
195
+ return void 0;
196
+ }
197
+ }
198
+ return isObject(input) ? { name, input } : void 0;
199
+ }
200
+ function isObject(value) {
201
+ return typeof value === "object" && value !== null && !Array.isArray(value);
202
+ }
203
+
204
+ // src/model/openaiCompatible.ts
205
+ var RETRY_STATUS = /* @__PURE__ */ new Set([408, 409, 429, 500, 502, 503, 504]);
206
+ var DEFAULT_RETRY_DELAYS = [1e3, 4e3];
207
+ var MAX_RETRY_AFTER_MS = 3e4;
208
+ var OpenAICompatibleClient = class {
209
+ constructor(options) {
210
+ this.options = options;
211
+ this.fetch = options.fetch ?? fetch;
212
+ this.delays = options.retryDelaysMs ?? DEFAULT_RETRY_DELAYS;
213
+ }
214
+ options;
215
+ fetch;
216
+ delays;
217
+ async *stream(request, options) {
218
+ const http = await this.post(toWireBody(this.options.model, request), options?.signal);
219
+ const mode = request.tools.length === 0 ? "off" : this.options.textToolCalls ?? "whole";
220
+ const state = newStreamState();
221
+ const hold = new StreamHold(mode);
222
+ for await (const data of sseData(http.body, options?.signal)) {
223
+ if (data === "[DONE]") break;
224
+ let chunk;
225
+ try {
226
+ chunk = JSON.parse(data);
227
+ } catch {
228
+ continue;
229
+ }
230
+ if (chunk.error !== void 0)
231
+ throw new Error(`${this.options.provider}: ${errorText(chunk.error)}`);
232
+ const shown = hold.push(applyChunk(state, chunk));
233
+ if (shown !== "") yield { type: "text_delta", text: shown };
234
+ }
235
+ const response = finishResponse(state, request, mode);
236
+ const held = hold.rest();
237
+ if (held !== "") {
238
+ const became = response.content.some((b) => b.type === "tool_use") && state.calls.size === 0;
239
+ const shown = became ? extractTextToolCalls(held, toolNames(request), mode)?.text ?? held : held;
240
+ if (shown.trim() !== "") yield { type: "text_delta", text: shown };
241
+ }
242
+ yield { type: "response", response };
243
+ }
244
+ async post(body, signal) {
245
+ const url = `${this.options.baseUrl.replace(/\/+$/, "")}/chat/completions`;
246
+ const headers = {
247
+ "content-type": "application/json",
248
+ accept: "text/event-stream"
249
+ };
250
+ if (this.options.apiKey !== void 0) headers.authorization = `Bearer ${this.options.apiKey}`;
251
+ for (let attempt = 0; ; attempt++) {
252
+ let response;
253
+ try {
254
+ response = await this.fetch(url, {
255
+ method: "POST",
256
+ headers,
257
+ body: JSON.stringify(body),
258
+ ...signal === void 0 ? {} : { signal }
259
+ });
260
+ } catch (error) {
261
+ if (signal?.aborted) throw error;
262
+ const cause = causeCode(error);
263
+ if (attempt < this.delays.length && cause !== "ECONNREFUSED") {
264
+ await sleep(this.delays[attempt] ?? 1e3, signal);
265
+ continue;
266
+ }
267
+ throw new Error(
268
+ cause === "ECONNREFUSED" ? `Cannot reach ${this.options.provider} at ${this.options.baseUrl}. Is the server running?` : `${this.options.provider}: ${error.message}`
269
+ );
270
+ }
271
+ if (response.ok && response.body !== null) return response;
272
+ const text = (await response.text().catch(() => "")).slice(0, 500);
273
+ if (RETRY_STATUS.has(response.status) && attempt < this.delays.length) {
274
+ const retryAfter = Number(response.headers.get("retry-after")) * 1e3;
275
+ const wait = Number.isFinite(retryAfter) && retryAfter > 0 ? Math.min(retryAfter, MAX_RETRY_AFTER_MS) : this.delays[attempt] ?? 1e3;
276
+ await sleep(wait, signal);
277
+ continue;
278
+ }
279
+ throw new Error(
280
+ `${this.options.provider} answered ${response.status}: ${httpErrorText(text)}`
281
+ );
282
+ }
283
+ }
284
+ };
285
+ function toWireBody(model, request) {
286
+ return {
287
+ model,
288
+ messages: toWireMessages(request.system, request.messages),
289
+ ...request.tools.length === 0 ? {} : { tools: toWireTools(request.tools) },
290
+ max_tokens: request.maxTokens,
291
+ stream: true,
292
+ stream_options: { include_usage: true }
293
+ };
294
+ }
295
+ function toWireTools(tools) {
296
+ return tools.map((tool) => ({
297
+ type: "function",
298
+ function: { name: tool.name, description: tool.description, parameters: tool.inputSchema }
299
+ }));
300
+ }
301
+ function toWireMessages(system, messages) {
302
+ const out = [{ role: "system", content: system }];
303
+ for (const message of messages) {
304
+ if (message.role === "assistant") {
305
+ const text = withoutServerBlocks(message.content).filter((b) => b.type === "text").map((b) => b.text).join("");
306
+ const calls = message.content.filter((b) => b.type === "tool_use");
307
+ out.push({
308
+ role: "assistant",
309
+ content: text === "" ? null : text,
310
+ ...calls.length === 0 ? {} : {
311
+ tool_calls: calls.map((c) => ({
312
+ id: c.id,
313
+ type: "function",
314
+ function: { name: c.name, arguments: JSON.stringify(c.input ?? {}) }
315
+ }))
316
+ }
317
+ });
318
+ continue;
319
+ }
320
+ const texts = [];
321
+ for (const block of message.content) {
322
+ if (block.type === "tool_result") {
323
+ out.push({
324
+ role: "tool",
325
+ tool_call_id: block.toolUseId,
326
+ content: block.isError ? `Error: ${block.content.replace(/^Error: /, "")}` : block.content
327
+ });
328
+ } else if (block.type === "text") {
329
+ texts.push(block.text);
330
+ }
331
+ }
332
+ if (texts.length > 0) out.push({ role: "user", content: texts.join("\n\n") });
333
+ }
334
+ return out;
335
+ }
336
+ function newStreamState() {
337
+ return { text: "", refusal: "", calls: /* @__PURE__ */ new Map(), finish: void 0, usage: void 0 };
338
+ }
339
+ function applyChunk(state, chunk) {
340
+ if (chunk.usage) state.usage = chunk.usage;
341
+ const choice = chunk.choices?.[0];
342
+ if (choice === void 0) return "";
343
+ if (choice.finish_reason) state.finish = choice.finish_reason;
344
+ const delta = choice.delta ?? {};
345
+ if (delta.refusal) state.refusal += delta.refusal;
346
+ for (const [position, call] of (delta.tool_calls ?? []).entries()) {
347
+ const index = call.index ?? position;
348
+ const entry = state.calls.get(index) ?? { name: "", args: "" };
349
+ if (call.id) entry.id = call.id;
350
+ if (call.function?.name) entry.name += call.function.name;
351
+ if (call.function?.arguments) entry.args += call.function.arguments;
352
+ state.calls.set(index, entry);
353
+ }
354
+ const text = delta.content ?? "";
355
+ state.text += text;
356
+ return text;
357
+ }
358
+ function finishResponse(state, request, mode = "whole") {
359
+ const content = [];
360
+ const text = state.text + (state.refusal === "" ? "" : state.refusal);
361
+ const newId = (n2) => `call_${Date.now().toString(36)}_${n2}`;
362
+ const fromText = state.calls.size === 0 && state.refusal === "" && state.finish !== "length" ? extractTextToolCalls(text, toolNames(request), mode) : void 0;
363
+ if (fromText !== void 0) {
364
+ if (fromText.text !== "") content.push({ type: "text", text: fromText.text });
365
+ for (const [i, call] of fromText.calls.entries())
366
+ content.push({ type: "tool_use", id: newId(i + 1), name: call.name, input: call.input });
367
+ } else if (text !== "") {
368
+ content.push({ type: "text", text });
369
+ }
370
+ let n = 0;
371
+ for (const [, call] of [...state.calls.entries()].sort(([a], [b]) => a - b)) {
372
+ if (call.name === "") continue;
373
+ n++;
374
+ content.push({
375
+ type: "tool_use",
376
+ id: call.id ?? newId(n),
377
+ name: call.name,
378
+ input: parseArguments(call.args)
379
+ });
380
+ }
381
+ return {
382
+ content,
383
+ stopReason: stopReason(state, content),
384
+ usage: usageOf(state, request, content)
385
+ };
386
+ }
387
+ function toolNames(request) {
388
+ return new Set(request.tools.map((t) => t.name));
389
+ }
390
+ function parseArguments(args) {
391
+ if (args.trim() === "") return {};
392
+ try {
393
+ return JSON.parse(args);
394
+ } catch {
395
+ return args;
396
+ }
397
+ }
398
+ function stopReason(state, content) {
399
+ if (state.refusal !== "" || state.finish === "content_filter") return "refusal";
400
+ if (content.some((b) => b.type === "tool_use")) return "tool_use";
401
+ if (state.finish === "length") return "max_tokens";
402
+ if (state.finish === "stop" || state.finish === void 0 || state.finish === "tool_calls")
403
+ return "end_turn";
404
+ return "other";
405
+ }
406
+ function usageOf(state, request, content) {
407
+ const u = state.usage;
408
+ if (u?.prompt_tokens !== void 0) {
409
+ const cached = u.prompt_tokens_details?.cached_tokens ?? 0;
410
+ return {
411
+ inputTokens: Math.max(0, u.prompt_tokens - cached),
412
+ outputTokens: u.completion_tokens ?? 0,
413
+ cacheReadTokens: cached,
414
+ cacheWriteTokens: 0
415
+ };
416
+ }
417
+ const chars = (value) => JSON.stringify(value).length;
418
+ return {
419
+ inputTokens: Math.ceil(
420
+ (request.system.length + chars(request.messages) + chars(request.tools)) / 4
421
+ ),
422
+ outputTokens: Math.ceil(chars(content) / 4),
423
+ cacheReadTokens: 0,
424
+ cacheWriteTokens: 0
425
+ };
426
+ }
427
+ async function* sseData(body, signal) {
428
+ const decoder = new TextDecoder();
429
+ let buffer = "";
430
+ let data = [];
431
+ const reader = body.getReader();
432
+ const onAbort = () => void reader.cancel().catch(() => {
433
+ });
434
+ signal?.addEventListener("abort", onAbort, { once: true });
435
+ try {
436
+ for (; ; ) {
437
+ signal?.throwIfAborted();
438
+ const { value, done } = await reader.read();
439
+ if (done) break;
440
+ buffer += decoder.decode(value, { stream: true });
441
+ let newline = buffer.indexOf("\n");
442
+ while (newline !== -1) {
443
+ const line = buffer.slice(0, newline).replace(/\r$/, "");
444
+ buffer = buffer.slice(newline + 1);
445
+ if (line === "") {
446
+ if (data.length > 0) yield data.join("\n");
447
+ data = [];
448
+ } else if (line.startsWith("data:")) {
449
+ data.push(line.slice(5).replace(/^ /, ""));
450
+ }
451
+ newline = buffer.indexOf("\n");
452
+ }
453
+ }
454
+ if (data.length > 0) yield data.join("\n");
455
+ } finally {
456
+ signal?.removeEventListener("abort", onAbort);
457
+ signal?.throwIfAborted();
458
+ }
459
+ }
460
+ function causeCode(error) {
461
+ const cause = error.cause;
462
+ return cause?.code ?? cause?.errors?.find((e) => e.code !== void 0)?.code;
463
+ }
464
+ function errorText(error) {
465
+ if (typeof error === "string") return error;
466
+ const message = error?.message;
467
+ return typeof message === "string" ? message : JSON.stringify(error).slice(0, 300);
468
+ }
469
+ function httpErrorText(body) {
470
+ let message = body;
471
+ try {
472
+ message = errorText(JSON.parse(body).error ?? body);
473
+ } catch {
474
+ }
475
+ const hint = /context|too long|maximum.*tokens|num_ctx/i.test(message) ? " (The conversation may be larger than the model's context window. Set contextWindow for this model in ~/.garuda/models.json.)" : "";
476
+ return `${message}${hint}`;
477
+ }
478
+ function sleep(ms, signal) {
479
+ return new Promise((resolve, reject) => {
480
+ const timer = setTimeout(resolve, ms);
481
+ signal?.addEventListener(
482
+ "abort",
483
+ () => {
484
+ clearTimeout(timer);
485
+ reject(signal.reason);
486
+ },
487
+ { once: true }
488
+ );
489
+ });
490
+ }
491
+ export {
492
+ OpenAICompatibleClient,
493
+ applyChunk,
494
+ finishResponse,
495
+ parseArguments,
496
+ sseData,
497
+ toWireBody,
498
+ toWireMessages,
499
+ toWireTools
500
+ };
501
+ //# sourceMappingURL=openaiCompatible-CJWVJP5M.js.map
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ POLICY_FILE,
4
+ assertModelAllowedByPolicy,
5
+ ignoredProjectPolicy,
6
+ isCommandDisallowedByPolicy,
7
+ isHostBlockedByPolicy,
8
+ isModelAllowedByPolicy,
9
+ isPathDeniedByPolicy,
10
+ isSandboxRequiredByPolicy,
11
+ loadTeamPolicy,
12
+ managedPolicyPath,
13
+ mergePolicies,
14
+ parsePolicy
15
+ } from "./chunk-HUIK3WXO.js";
16
+ import "./chunk-3NJNVZTK.js";
17
+ export {
18
+ POLICY_FILE,
19
+ assertModelAllowedByPolicy,
20
+ ignoredProjectPolicy,
21
+ isCommandDisallowedByPolicy,
22
+ isHostBlockedByPolicy,
23
+ isModelAllowedByPolicy,
24
+ isPathDeniedByPolicy,
25
+ isSandboxRequiredByPolicy,
26
+ loadTeamPolicy,
27
+ managedPolicyPath,
28
+ mergePolicies,
29
+ parsePolicy
30
+ };
31
+ //# sourceMappingURL=policy-EJPLEEXP.js.map