@mandible-ai/mandible 0.3.13 → 0.3.14

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 (107) hide show
  1. package/README.md +5 -7
  2. package/dist/src/cli/index.js +6 -0
  3. package/dist/src/cli/index.js.map +1 -1
  4. package/dist/src/cli/init.d.ts +25 -0
  5. package/dist/src/cli/init.d.ts.map +1 -0
  6. package/dist/src/cli/init.js +348 -0
  7. package/dist/src/cli/init.js.map +1 -0
  8. package/dist/src/core/events.d.ts +1 -1
  9. package/dist/src/core/events.d.ts.map +1 -1
  10. package/dist/src/core/events.js.map +1 -1
  11. package/dist/src/core/runtime.d.ts.map +1 -1
  12. package/dist/src/core/runtime.js +25 -2
  13. package/dist/src/core/runtime.js.map +1 -1
  14. package/dist/src/core/types.d.ts +12 -0
  15. package/dist/src/core/types.d.ts.map +1 -1
  16. package/dist/src/core/types.js.map +1 -1
  17. package/dist/src/core/validation.d.ts +7 -0
  18. package/dist/src/core/validation.d.ts.map +1 -1
  19. package/dist/src/core/validation.js +19 -0
  20. package/dist/src/core/validation.js.map +1 -1
  21. package/dist/src/dsl/builder.d.ts +2 -0
  22. package/dist/src/dsl/builder.d.ts.map +1 -1
  23. package/dist/src/dsl/builder.js +5 -0
  24. package/dist/src/dsl/builder.js.map +1 -1
  25. package/dist/src/dsl/mandible.d.ts +1 -1
  26. package/dist/src/dsl/mandible.js +1 -1
  27. package/dist/src/environments/dolt/adapter.d.ts +21 -7
  28. package/dist/src/environments/dolt/adapter.d.ts.map +1 -1
  29. package/dist/src/environments/dolt/adapter.js +319 -59
  30. package/dist/src/environments/dolt/adapter.js.map +1 -1
  31. package/dist/src/environments/dolt/client.d.ts +72 -0
  32. package/dist/src/environments/dolt/client.d.ts.map +1 -0
  33. package/dist/src/environments/dolt/client.js +209 -0
  34. package/dist/src/environments/dolt/client.js.map +1 -0
  35. package/dist/src/environments/dolt/index.d.ts +2 -0
  36. package/dist/src/environments/dolt/index.d.ts.map +1 -1
  37. package/dist/src/environments/dolt/index.js +2 -0
  38. package/dist/src/environments/dolt/index.js.map +1 -1
  39. package/dist/src/environments/dolt/sql-client.d.ts +24 -0
  40. package/dist/src/environments/dolt/sql-client.d.ts.map +1 -0
  41. package/dist/src/environments/dolt/sql-client.js +46 -0
  42. package/dist/src/environments/dolt/sql-client.js.map +1 -0
  43. package/dist/src/environments/filesystem/adapter.d.ts +4 -0
  44. package/dist/src/environments/filesystem/adapter.d.ts.map +1 -1
  45. package/dist/src/environments/filesystem/adapter.js +23 -0
  46. package/dist/src/environments/filesystem/adapter.js.map +1 -1
  47. package/dist/src/environments/github/adapter.d.ts +4 -0
  48. package/dist/src/environments/github/adapter.d.ts.map +1 -1
  49. package/dist/src/environments/github/adapter.js +18 -0
  50. package/dist/src/environments/github/adapter.js.map +1 -1
  51. package/dist/src/hosts/docker.d.ts +52 -37
  52. package/dist/src/hosts/docker.d.ts.map +1 -1
  53. package/dist/src/hosts/docker.js +207 -90
  54. package/dist/src/hosts/docker.js.map +1 -1
  55. package/dist/src/index.d.ts +9 -2
  56. package/dist/src/index.d.ts.map +1 -1
  57. package/dist/src/index.js +5 -1
  58. package/dist/src/index.js.map +1 -1
  59. package/dist/src/patterns/barrier.d.ts +104 -0
  60. package/dist/src/patterns/barrier.d.ts.map +1 -0
  61. package/dist/src/patterns/barrier.js +196 -0
  62. package/dist/src/patterns/barrier.js.map +1 -0
  63. package/dist/src/patterns/gate.d.ts +71 -0
  64. package/dist/src/patterns/gate.d.ts.map +1 -0
  65. package/dist/src/patterns/gate.js +167 -0
  66. package/dist/src/patterns/gate.js.map +1 -0
  67. package/dist/src/patterns/index.d.ts +4 -0
  68. package/dist/src/patterns/index.d.ts.map +1 -1
  69. package/dist/src/patterns/index.js +2 -0
  70. package/dist/src/patterns/index.js.map +1 -1
  71. package/dist/src/providers/claude-code.d.ts.map +1 -1
  72. package/dist/src/providers/claude-code.js +5 -4
  73. package/dist/src/providers/claude-code.js.map +1 -1
  74. package/dist/src/providers/context.d.ts.map +1 -1
  75. package/dist/src/providers/context.js +16 -10
  76. package/dist/src/providers/context.js.map +1 -1
  77. package/dist/src/providers/index.d.ts +12 -1
  78. package/dist/src/providers/index.d.ts.map +1 -1
  79. package/dist/src/providers/index.js +11 -0
  80. package/dist/src/providers/index.js.map +1 -1
  81. package/dist/src/providers/llm.d.ts +17 -0
  82. package/dist/src/providers/llm.d.ts.map +1 -0
  83. package/dist/src/providers/llm.js +225 -0
  84. package/dist/src/providers/llm.js.map +1 -0
  85. package/dist/src/providers/opencode.d.ts +87 -0
  86. package/dist/src/providers/opencode.d.ts.map +1 -0
  87. package/dist/src/providers/opencode.js +170 -0
  88. package/dist/src/providers/opencode.js.map +1 -0
  89. package/dist/src/providers/qwen-code.d.ts +69 -0
  90. package/dist/src/providers/qwen-code.d.ts.map +1 -0
  91. package/dist/src/providers/qwen-code.js +175 -0
  92. package/dist/src/providers/qwen-code.js.map +1 -0
  93. package/dist/src/providers/skill.d.ts +120 -0
  94. package/dist/src/providers/skill.d.ts.map +1 -0
  95. package/dist/src/providers/skill.js +262 -0
  96. package/dist/src/providers/skill.js.map +1 -0
  97. package/dist/src/providers/tool-loop.d.ts +163 -0
  98. package/dist/src/providers/tool-loop.d.ts.map +1 -0
  99. package/dist/src/providers/tool-loop.js +580 -0
  100. package/dist/src/providers/tool-loop.js.map +1 -0
  101. package/dist/src/providers/types.d.ts +63 -0
  102. package/dist/src/providers/types.d.ts.map +1 -1
  103. package/dist/src/providers/vllm.d.ts +62 -0
  104. package/dist/src/providers/vllm.d.ts.map +1 -0
  105. package/dist/src/providers/vllm.js +262 -0
  106. package/dist/src/providers/vllm.js.map +1 -0
  107. package/package.json +7 -2
@@ -78,6 +78,14 @@ export interface ClaudeCodeConfig<T = Record<string, unknown>> {
78
78
  * Use this to provide ANTHROPIC_API_KEY explicitly.
79
79
  */
80
80
  env?: Record<string, string>;
81
+ /**
82
+ * Custom API base URL. Routes the Claude Code SDK to a local or
83
+ * third-party endpoint that speaks the Anthropic Messages API
84
+ * (e.g. Ollama, llama.cpp, LM Studio).
85
+ *
86
+ * Sets ANTHROPIC_BASE_URL in the agent's environment.
87
+ */
88
+ apiBaseUrl?: string;
81
89
  /**
82
90
  * Route the agent through AWS Bedrock.
83
91
  * Sets the required env vars for the Claude Agent SDK automatically.
@@ -158,6 +166,61 @@ export interface StructuredOutputConfig<T = Record<string, unknown>, R = Record<
158
166
  route: string | ((result: R, signal: Signal<T>) => SignalDeposit | SignalDeposit[]);
159
167
  autoWithdraw?: boolean;
160
168
  }
169
+ /**
170
+ * Config for plain text LLM provider (withLLM).
171
+ * Calls an LLM and returns raw text — no schema validation.
172
+ * Use for summarization, prose generation, or open-ended responses.
173
+ * Provider-agnostic: works with Anthropic, OpenAI, Bedrock, Vercel AI, or custom.
174
+ */
175
+ export interface LLMConfig<T = Record<string, unknown>> {
176
+ /** Model identifier. Format depends on the SDK you're using. */
177
+ model: string;
178
+ /**
179
+ * Provider SDK to use for the LLM call.
180
+ * 'anthropic' = @anthropic-ai/sdk
181
+ * 'bedrock' = @anthropic-ai/bedrock-sdk (Claude via AWS Bedrock)
182
+ * 'openai' = openai SDK
183
+ * 'vercel-ai' = Vercel AI SDK (ai package)
184
+ * Or pass a custom function.
185
+ */
186
+ provider?: 'anthropic' | 'bedrock' | 'openai' | 'vercel-ai' | LLMCallFunction<string>;
187
+ /** Build the prompt from the signal. */
188
+ prompt: string | ((signal: Signal<T>) => string | Promise<string>);
189
+ /** System prompt. */
190
+ systemPrompt?: string;
191
+ /**
192
+ * Bedrock configuration. Required when provider is 'bedrock'.
193
+ * Provides AWS region, credentials, and optional guardrail settings.
194
+ */
195
+ bedrockConfig?: BedrockConfig;
196
+ /** Max tokens (default: 4096). */
197
+ maxTokens?: number;
198
+ /** Temperature 0-1. Lower = more deterministic (default: 0). */
199
+ temperature?: number;
200
+ /**
201
+ * Expected response format. Appends a format instruction to the prompt
202
+ * and includes `format` in the default payload so downstream colonies
203
+ * can branch on it without guessing.
204
+ *
205
+ * - 'text' (default): no format instruction appended, payload is { text }.
206
+ * - 'markdown': instructs the LLM to respond in markdown, payload is { text, format: 'markdown' }.
207
+ *
208
+ * Only affects the default string-route payload. When `route` is a function,
209
+ * format metadata is your responsibility.
210
+ */
211
+ format?: 'text' | 'markdown';
212
+ /**
213
+ * Route output to signal type(s).
214
+ * If a string, deposits that type with { text } (or { text, format } when format is set) as payload.
215
+ * If a function, returns the signal deposit(s) — full control over payload shape.
216
+ */
217
+ route: string | ((text: string, signal: Signal<T>) => SignalDeposit | SignalDeposit[]);
218
+ /**
219
+ * Whether to auto-withdraw the triggering signal after success.
220
+ * Defaults to true.
221
+ */
222
+ autoWithdraw?: boolean;
223
+ }
161
224
  /**
162
225
  * Config for bash provider (withBash).
163
226
  * Runs shell commands for mechanical tasks like git merge, deploy, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { LLMCallFunction } from './types.js';
2
+ export interface VLLMConfig {
3
+ /** vLLM server endpoint, e.g. 'http://localhost:8001'. No trailing slash. */
4
+ endpoint: string;
5
+ /**
6
+ * Model name to use. If not provided, auto-detects from GET /v1/models.
7
+ * The auto-detected model is cached after the first call.
8
+ */
9
+ model?: string;
10
+ /** Optional API key for vLLM (if configured with --api-key). */
11
+ apiKey?: string;
12
+ /**
13
+ * Enable JSON mode via response_format: { type: "json_object" }.
14
+ * Automatically enabled by vllmStructuredProvider().
15
+ * When true, vLLM uses guided decoding to guarantee valid JSON output.
16
+ */
17
+ jsonMode?: boolean;
18
+ /** Maximum retries on 503 (model loading) and 429 (rate limited). Default: 3. */
19
+ maxRetries?: number;
20
+ /** Base delay in ms between retries (exponential backoff). Default: 1000. */
21
+ retryDelayMs?: number;
22
+ /**
23
+ * Whether to verify the vLLM server is reachable on the first call.
24
+ * Calls GET /v1/models and fails fast if the server is down. Default: true.
25
+ */
26
+ healthCheckOnInit?: boolean;
27
+ /** Request timeout in ms. Default: 120_000 (2 minutes). */
28
+ timeoutMs?: number;
29
+ /** Extra headers to include in every request. */
30
+ headers?: Record<string, string>;
31
+ }
32
+ /**
33
+ * Creates a LLMCallFunction<string> that calls vLLM for plain text generation.
34
+ * Plug directly into withLLM({ provider: vllmProvider({ endpoint }) }).
35
+ */
36
+ export declare function vllmProvider(config: VLLMConfig): LLMCallFunction<string>;
37
+ /**
38
+ * Creates a LLMCallFunction<R> that calls vLLM with JSON mode enabled.
39
+ * The response is parsed as JSON and returned as type R.
40
+ * Plug into withStructuredOutput({ provider: vllmStructuredProvider({ endpoint }) }).
41
+ */
42
+ export declare function vllmStructuredProvider<R = Record<string, unknown>>(config: VLLMConfig): LLMCallFunction<R>;
43
+ export type VLLMErrorCode = 'CONNECTION_FAILED' | 'HEALTH_CHECK_FAILED' | 'NO_MODELS' | 'API_ERROR' | 'MAX_RETRIES_EXCEEDED' | 'PARSE_ERROR' | 'JSON_PARSE_ERROR';
44
+ export declare class VLLMError extends Error {
45
+ readonly code: VLLMErrorCode;
46
+ readonly statusCode?: number;
47
+ constructor(message: string, code: VLLMErrorCode, statusCode?: number);
48
+ }
49
+ /**
50
+ * Creates a vllmProvider using VLLM_ENDPOINT environment variable.
51
+ * Returns null if VLLM_ENDPOINT is not set (graceful fallback).
52
+ *
53
+ * Usage:
54
+ * const provider = vllmFromEnv() ?? 'anthropic';
55
+ */
56
+ export declare function vllmFromEnv(): LLMCallFunction<string> | null;
57
+ /**
58
+ * Creates a vllmStructuredProvider using VLLM_ENDPOINT environment variable.
59
+ * Returns null if VLLM_ENDPOINT is not set.
60
+ */
61
+ export declare function vllmStructuredFromEnv<R = Record<string, unknown>>(): LLMCallFunction<R> | null;
62
+ //# sourceMappingURL=vllm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vllm.d.ts","sourceRoot":"","sources":["../../../src/providers/vllm.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAeD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAkBxE;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,MAAM,EAAE,UAAU,GACjB,eAAe,CAAC,CAAC,CAAC,CAoBpB;AA8LD,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,qBAAqB,GACrB,WAAW,GACX,WAAW,GACX,sBAAsB,GACtB,aAAa,GACb,kBAAkB,CAAC;AAEvB,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM;CAMtE;AAcD;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI,CAQ5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAQ9F"}
@@ -0,0 +1,262 @@
1
+ // ============================================================
2
+ // vLLM Provider — Local inference via vLLM's OpenAI-compatible API
3
+ // ============================================================
4
+ // Produces LLMCallFunction instances that call a local vLLM server.
5
+ // No external API calls. No cloud dependencies. Everything on localhost.
6
+ //
7
+ // Two factory functions:
8
+ // vllmProvider() → LLMCallFunction<string> (for withLLM)
9
+ // vllmStructuredProvider() → LLMCallFunction<R> (for withStructuredOutput)
10
+ //
11
+ // Usage:
12
+ // import { vllmProvider, vllmStructuredProvider } from '@mandible-ai/mandible/providers';
13
+ //
14
+ // // Text generation
15
+ // withLLM({
16
+ // model: 'Qwen3-Coder-Next',
17
+ // provider: vllmProvider({ endpoint: 'http://localhost:8001' }),
18
+ // prompt: (signal) => `Summarize: ${signal.payload.text}`,
19
+ // route: 'summary:ready',
20
+ // })
21
+ //
22
+ // // Structured output (JSON mode)
23
+ // withStructuredOutput({
24
+ // model: 'Qwen3-Coder-Next',
25
+ // provider: vllmStructuredProvider({ endpoint: 'http://localhost:8001' }),
26
+ // schema: reviewSchema,
27
+ // prompt: (signal) => `Review: ${signal.payload.diff}`,
28
+ // route: (r) => r.approved ? { type: 'review:approved' } : { type: 'review:changes-needed' },
29
+ // })
30
+ // ============================================================
31
+ // ----------------------------------------------------------
32
+ // Factory: text generation (for withLLM)
33
+ // ----------------------------------------------------------
34
+ /**
35
+ * Creates a LLMCallFunction<string> that calls vLLM for plain text generation.
36
+ * Plug directly into withLLM({ provider: vllmProvider({ endpoint }) }).
37
+ */
38
+ export function vllmProvider(config) {
39
+ const state = { resolvedModel: config.model ?? null, healthChecked: false };
40
+ const endpoint = config.endpoint.replace(/\/+$/, '');
41
+ return async (prompt, options) => {
42
+ await ensureReady(endpoint, config, state);
43
+ const messages = buildMessages(prompt, options.systemPrompt);
44
+ const body = {
45
+ model: state.resolvedModel,
46
+ messages,
47
+ max_tokens: options.maxTokens ?? 4096,
48
+ temperature: options.temperature ?? 0,
49
+ };
50
+ const data = await callVLLM(endpoint, '/v1/chat/completions', body, config);
51
+ return extractText(data);
52
+ };
53
+ }
54
+ // ----------------------------------------------------------
55
+ // Factory: structured output (for withStructuredOutput)
56
+ // ----------------------------------------------------------
57
+ /**
58
+ * Creates a LLMCallFunction<R> that calls vLLM with JSON mode enabled.
59
+ * The response is parsed as JSON and returned as type R.
60
+ * Plug into withStructuredOutput({ provider: vllmStructuredProvider({ endpoint }) }).
61
+ */
62
+ export function vllmStructuredProvider(config) {
63
+ const state = { resolvedModel: config.model ?? null, healthChecked: false };
64
+ const endpoint = config.endpoint.replace(/\/+$/, '');
65
+ return async (prompt, options) => {
66
+ await ensureReady(endpoint, config, state);
67
+ const messages = buildMessages(prompt, options.systemPrompt);
68
+ const body = {
69
+ model: state.resolvedModel,
70
+ messages,
71
+ max_tokens: options.maxTokens ?? 4096,
72
+ temperature: options.temperature ?? 0,
73
+ response_format: { type: 'json_object' },
74
+ };
75
+ const data = await callVLLM(endpoint, '/v1/chat/completions', body, config);
76
+ const text = extractText(data);
77
+ return parseJsonResponse(text);
78
+ };
79
+ }
80
+ // ----------------------------------------------------------
81
+ // Health check & model auto-detection
82
+ // ----------------------------------------------------------
83
+ /**
84
+ * Check that vLLM is reachable and resolve the model name if needed.
85
+ * Both checks happen at most once per provider instance.
86
+ */
87
+ async function ensureReady(endpoint, config, state) {
88
+ const shouldHealthCheck = (config.healthCheckOnInit ?? true) && !state.healthChecked;
89
+ const needsModel = !state.resolvedModel;
90
+ if (!shouldHealthCheck && !needsModel)
91
+ return;
92
+ const models = await listModels(endpoint, config);
93
+ state.healthChecked = true;
94
+ if (needsModel) {
95
+ if (models.length === 0) {
96
+ throw new VLLMError('No models loaded on vLLM server. Ensure a model is loaded before calling the provider.', 'NO_MODELS');
97
+ }
98
+ state.resolvedModel = models[0];
99
+ }
100
+ }
101
+ /**
102
+ * GET /v1/models — returns the list of loaded model IDs.
103
+ */
104
+ async function listModels(endpoint, config) {
105
+ const url = `${endpoint}/v1/models`;
106
+ const headers = {
107
+ 'Accept': 'application/json',
108
+ ...config.headers,
109
+ };
110
+ if (config.apiKey)
111
+ headers['Authorization'] = `Bearer ${config.apiKey}`;
112
+ let response;
113
+ try {
114
+ response = await fetch(url, {
115
+ method: 'GET',
116
+ headers,
117
+ signal: AbortSignal.timeout(config.timeoutMs ?? 10_000),
118
+ });
119
+ }
120
+ catch (err) {
121
+ throw new VLLMError(`Cannot reach vLLM server at ${endpoint}. Is vLLM running?\n ${err.message}`, 'CONNECTION_FAILED');
122
+ }
123
+ if (!response.ok) {
124
+ throw new VLLMError(`vLLM health check failed: ${response.status} ${response.statusText}`, 'HEALTH_CHECK_FAILED');
125
+ }
126
+ const data = await response.json();
127
+ return (data.data ?? []).map(m => m.id);
128
+ }
129
+ // ----------------------------------------------------------
130
+ // Core HTTP call with retry
131
+ // ----------------------------------------------------------
132
+ async function callVLLM(endpoint, path, body, config) {
133
+ const url = `${endpoint}${path}`;
134
+ const maxRetries = config.maxRetries ?? 3;
135
+ const baseDelay = config.retryDelayMs ?? 1000;
136
+ const timeoutMs = config.timeoutMs ?? 120_000;
137
+ const headers = {
138
+ 'Content-Type': 'application/json',
139
+ 'Accept': 'application/json',
140
+ ...config.headers,
141
+ };
142
+ if (config.apiKey)
143
+ headers['Authorization'] = `Bearer ${config.apiKey}`;
144
+ let lastError = null;
145
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
146
+ try {
147
+ const response = await fetch(url, {
148
+ method: 'POST',
149
+ headers,
150
+ body: JSON.stringify(body),
151
+ signal: AbortSignal.timeout(timeoutMs),
152
+ });
153
+ // Retry on 503 (model loading) and 429 (rate limited)
154
+ if ((response.status === 503 || response.status === 429) && attempt < maxRetries) {
155
+ const retryAfter = response.headers.get('retry-after');
156
+ const delay = retryAfter
157
+ ? parseInt(retryAfter, 10) * 1000
158
+ : baseDelay * Math.pow(2, attempt);
159
+ await sleep(delay);
160
+ continue;
161
+ }
162
+ if (!response.ok) {
163
+ const errorBody = await response.text().catch(() => '');
164
+ throw new VLLMError(`vLLM API error: ${response.status} ${response.statusText}\n${errorBody}`, 'API_ERROR', response.status);
165
+ }
166
+ return await response.json();
167
+ }
168
+ catch (err) {
169
+ if (err instanceof VLLMError)
170
+ throw err;
171
+ lastError = err;
172
+ if (attempt < maxRetries) {
173
+ await sleep(baseDelay * Math.pow(2, attempt));
174
+ continue;
175
+ }
176
+ }
177
+ }
178
+ throw new VLLMError(`vLLM request failed after ${maxRetries + 1} attempts: ${lastError?.message}`, 'MAX_RETRIES_EXCEEDED');
179
+ }
180
+ // ----------------------------------------------------------
181
+ // Response parsing
182
+ // ----------------------------------------------------------
183
+ function extractText(data) {
184
+ const content = data?.choices?.[0]?.message?.content;
185
+ if (typeof content !== 'string') {
186
+ throw new VLLMError(`Unexpected vLLM response format: missing choices[0].message.content\n${JSON.stringify(data).slice(0, 500)}`, 'PARSE_ERROR');
187
+ }
188
+ return content;
189
+ }
190
+ function parseJsonResponse(text) {
191
+ // Handle markdown-wrapped JSON (```json ... ```)
192
+ const jsonMatch = text.match(/```(?:json)?\s*([\s\S]*?)```/) ?? [null, text];
193
+ const jsonStr = (jsonMatch[1] ?? text).trim();
194
+ try {
195
+ return JSON.parse(jsonStr);
196
+ }
197
+ catch {
198
+ throw new VLLMError(`Failed to parse vLLM response as JSON.\nResponse:\n${text.slice(0, 500)}`, 'JSON_PARSE_ERROR');
199
+ }
200
+ }
201
+ // ----------------------------------------------------------
202
+ // Message building
203
+ // ----------------------------------------------------------
204
+ function buildMessages(prompt, systemPrompt) {
205
+ const messages = [];
206
+ if (systemPrompt) {
207
+ messages.push({ role: 'system', content: systemPrompt });
208
+ }
209
+ messages.push({ role: 'user', content: prompt });
210
+ return messages;
211
+ }
212
+ export class VLLMError extends Error {
213
+ code;
214
+ statusCode;
215
+ constructor(message, code, statusCode) {
216
+ super(message);
217
+ this.name = 'VLLMError';
218
+ this.code = code;
219
+ this.statusCode = statusCode;
220
+ }
221
+ }
222
+ // ----------------------------------------------------------
223
+ // Utilities
224
+ // ----------------------------------------------------------
225
+ function sleep(ms) {
226
+ return new Promise(resolve => setTimeout(resolve, ms));
227
+ }
228
+ // ----------------------------------------------------------
229
+ // Convenience: auto-configured provider from environment
230
+ // ----------------------------------------------------------
231
+ /**
232
+ * Creates a vllmProvider using VLLM_ENDPOINT environment variable.
233
+ * Returns null if VLLM_ENDPOINT is not set (graceful fallback).
234
+ *
235
+ * Usage:
236
+ * const provider = vllmFromEnv() ?? 'anthropic';
237
+ */
238
+ export function vllmFromEnv() {
239
+ const endpoint = process.env.VLLM_ENDPOINT;
240
+ if (!endpoint)
241
+ return null;
242
+ return vllmProvider({
243
+ endpoint,
244
+ model: process.env.VLLM_MODEL,
245
+ apiKey: process.env.VLLM_API_KEY,
246
+ });
247
+ }
248
+ /**
249
+ * Creates a vllmStructuredProvider using VLLM_ENDPOINT environment variable.
250
+ * Returns null if VLLM_ENDPOINT is not set.
251
+ */
252
+ export function vllmStructuredFromEnv() {
253
+ const endpoint = process.env.VLLM_ENDPOINT;
254
+ if (!endpoint)
255
+ return null;
256
+ return vllmStructuredProvider({
257
+ endpoint,
258
+ model: process.env.VLLM_MODEL,
259
+ apiKey: process.env.VLLM_API_KEY,
260
+ });
261
+ }
262
+ //# sourceMappingURL=vllm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vllm.js","sourceRoot":"","sources":["../../../src/providers/vllm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mandible-ai/mandible",
3
- "version": "0.3.13",
3
+ "version": "0.3.14",
4
4
  "description": "Universal stigmergy framework for autonomous agent coordination — like ant colonies using pheromone trails",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -76,6 +76,7 @@
76
76
  "demo:repo-maintenance": "tsx src/cli/index.ts dev examples/repo-maintenance/mandible.config.ts"
77
77
  },
78
78
  "dependencies": {
79
+ "@inquirer/prompts": "^7.0.0",
79
80
  "@noble/ed25519": "^3.0.0",
80
81
  "chokidar": "^4.0.0",
81
82
  "eventemitter3": "^5.0.0",
@@ -91,7 +92,8 @@
91
92
  "@anthropic-ai/sdk": ">=0.30.0",
92
93
  "ai": ">=3.0.0",
93
94
  "openai": ">=4.0.0",
94
- "zod": ">=3.0.0"
95
+ "zod": ">=3.0.0",
96
+ "mysql2": ">=3.0.0"
95
97
  },
96
98
  "peerDependenciesMeta": {
97
99
  "@anthropic-ai/bedrock-sdk": {
@@ -120,6 +122,9 @@
120
122
  },
121
123
  "zod": {
122
124
  "optional": true
125
+ },
126
+ "mysql2": {
127
+ "optional": true
123
128
  }
124
129
  },
125
130
  "devDependencies": {