automatey 0.1.11 → 0.1.16
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.
- package/README.md +121 -14
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/json-memory-client.d.ts +40 -0
- package/dist/adapters/json-memory-client.d.ts.map +1 -0
- package/dist/adapters/json-memory-client.js +187 -0
- package/dist/adapters/json-memory-client.js.map +1 -0
- package/dist/adapters/judge-client.d.ts +10 -26
- package/dist/adapters/judge-client.d.ts.map +1 -1
- package/dist/adapters/llm-client.d.ts +7 -0
- package/dist/adapters/llm-client.d.ts.map +1 -1
- package/dist/adapters/llm-client.js +117 -4
- package/dist/adapters/llm-client.js.map +1 -1
- package/dist/commands/agents-command.d.ts +12 -0
- package/dist/commands/agents-command.d.ts.map +1 -0
- package/dist/commands/agents-command.js +129 -0
- package/dist/commands/agents-command.js.map +1 -0
- package/dist/commands/broker-command.d.ts +3 -0
- package/dist/commands/broker-command.d.ts.map +1 -0
- package/dist/commands/broker-command.js +211 -0
- package/dist/commands/broker-command.js.map +1 -0
- package/dist/commands/enhance-command.d.ts +7 -0
- package/dist/commands/enhance-command.d.ts.map +1 -0
- package/dist/commands/enhance-command.js +43 -0
- package/dist/commands/enhance-command.js.map +1 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +3 -29
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/help-manual.d.ts +4 -0
- package/dist/commands/help-manual.d.ts.map +1 -0
- package/dist/commands/help-manual.js +227 -0
- package/dist/commands/help-manual.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +39 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/keep-alive-command.d.ts +3 -0
- package/dist/commands/keep-alive-command.d.ts.map +1 -0
- package/dist/commands/keep-alive-command.js +34 -0
- package/dist/commands/keep-alive-command.js.map +1 -0
- package/dist/commands/memory-command.d.ts +7 -0
- package/dist/commands/memory-command.d.ts.map +1 -0
- package/dist/commands/memory-command.js +81 -0
- package/dist/commands/memory-command.js.map +1 -0
- package/dist/commands/search-command.d.ts +7 -0
- package/dist/commands/search-command.d.ts.map +1 -0
- package/dist/commands/search-command.js +64 -0
- package/dist/commands/search-command.js.map +1 -0
- package/dist/commands/servers-command.d.ts.map +1 -1
- package/dist/commands/servers-command.js +61 -2
- package/dist/commands/servers-command.js.map +1 -1
- package/dist/commands/setup-command.d.ts.map +1 -1
- package/dist/commands/setup-command.js +22 -10
- package/dist/commands/setup-command.js.map +1 -1
- package/dist/commands/vscode-command.d.ts +25 -0
- package/dist/commands/vscode-command.d.ts.map +1 -0
- package/dist/commands/vscode-command.js +360 -0
- package/dist/commands/vscode-command.js.map +1 -0
- package/dist/core/agents-manager.d.ts +88 -0
- package/dist/core/agents-manager.d.ts.map +1 -0
- package/dist/core/agents-manager.js +275 -0
- package/dist/core/agents-manager.js.map +1 -0
- package/dist/core/chat-engine.d.ts +27 -1
- package/dist/core/chat-engine.d.ts.map +1 -1
- package/dist/core/chat-engine.js +559 -36
- package/dist/core/chat-engine.js.map +1 -1
- package/dist/core/config-manager.d.ts +2 -0
- package/dist/core/config-manager.d.ts.map +1 -1
- package/dist/core/config-manager.js +9 -1
- package/dist/core/config-manager.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interfaces.d.ts +163 -3
- package/dist/core/interfaces.d.ts.map +1 -1
- package/dist/core/interfaces.js +2 -1
- package/dist/core/interfaces.js.map +1 -1
- package/dist/core/mcp-client-manager.d.ts.map +1 -1
- package/dist/core/mcp-client-manager.js +32 -4
- package/dist/core/mcp-client-manager.js.map +1 -1
- package/dist/core/mcp-config-manager.d.ts +12 -2
- package/dist/core/mcp-config-manager.d.ts.map +1 -1
- package/dist/core/mcp-config-manager.js +37 -0
- package/dist/core/mcp-config-manager.js.map +1 -1
- package/dist/core/skills-manager.d.ts +6 -4
- package/dist/core/skills-manager.d.ts.map +1 -1
- package/dist/core/skills-manager.js +26 -3
- package/dist/core/skills-manager.js.map +1 -1
- package/dist/core/sub-agent.d.ts +35 -0
- package/dist/core/sub-agent.d.ts.map +1 -1
- package/dist/core/sub-agent.js +42 -3
- package/dist/core/sub-agent.js.map +1 -1
- package/dist/index.js +650 -62
- package/dist/index.js.map +1 -1
- package/dist/tui/index.d.ts +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/renderer.d.ts +26 -0
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +316 -18
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/stdin-approval.d.ts +14 -1
- package/dist/tui/stdin-approval.d.ts.map +1 -1
- package/dist/tui/stdin-approval.js +99 -2
- package/dist/tui/stdin-approval.js.map +1 -1
- package/dist/utils/debounce.d.ts +10 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/debounce.js +20 -0
- package/dist/utils/debounce.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/keep-alive.d.ts +17 -0
- package/dist/utils/keep-alive.d.ts.map +1 -0
- package/dist/utils/keep-alive.js +141 -0
- package/dist/utils/keep-alive.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +2 -0
- package/dist/utils/message-formatter.d.ts.map +1 -1
- package/dist/utils/message-formatter.js +49 -9
- package/dist/utils/message-formatter.js.map +1 -1
- package/dist/utils/system-probe.d.ts +1 -0
- package/dist/utils/system-probe.d.ts.map +1 -1
- package/dist/utils/system-probe.js +160 -17
- package/dist/utils/system-probe.js.map +1 -1
- package/dist/utils/tool-acl.d.ts +39 -0
- package/dist/utils/tool-acl.d.ts.map +1 -0
- package/dist/utils/tool-acl.js +69 -0
- package/dist/utils/tool-acl.js.map +1 -0
- package/dist/utils/ui-glyphs.d.ts +19 -0
- package/dist/utils/ui-glyphs.d.ts.map +1 -0
- package/dist/utils/ui-glyphs.js +53 -0
- package/dist/utils/ui-glyphs.js.map +1 -0
- package/mcp/coder/dist/sandbox.d.ts +3 -1
- package/mcp/coder/dist/sandbox.d.ts.map +1 -1
- package/mcp/coder/dist/sandbox.js +31 -15
- package/mcp/coder/dist/sandbox.js.map +1 -1
- package/mcp/coder/dist/server.js +31 -35
- package/mcp/coder/dist/server.js.map +1 -1
- package/mcp/coder/package.json +6 -3
- package/mcp/desktop/dist/lib/config.d.ts +4 -0
- package/mcp/desktop/dist/lib/config.d.ts.map +1 -0
- package/mcp/desktop/dist/lib/config.js +12 -0
- package/mcp/desktop/dist/lib/config.js.map +1 -0
- package/mcp/desktop/dist/lib/factory.d.ts +5 -0
- package/mcp/desktop/dist/lib/factory.d.ts.map +1 -0
- package/mcp/desktop/dist/lib/factory.js +15 -0
- package/mcp/desktop/dist/lib/factory.js.map +1 -0
- package/mcp/desktop/dist/lib/index.d.ts +4 -0
- package/mcp/desktop/dist/lib/index.d.ts.map +1 -0
- package/mcp/desktop/dist/lib/index.js +3 -0
- package/mcp/desktop/dist/lib/index.js.map +1 -0
- package/mcp/desktop/dist/lib/types.d.ts +10 -0
- package/mcp/desktop/dist/lib/types.d.ts.map +1 -0
- package/mcp/desktop/dist/lib/types.js +2 -0
- package/mcp/desktop/dist/lib/types.js.map +1 -0
- package/mcp/desktop/dist/libnut/manager.d.ts +65 -0
- package/mcp/desktop/dist/libnut/manager.d.ts.map +1 -0
- package/mcp/desktop/dist/libnut/manager.js +219 -0
- package/mcp/desktop/dist/libnut/manager.js.map +1 -0
- package/mcp/desktop/dist/libnut/platform.d.ts +3 -0
- package/mcp/desktop/dist/libnut/platform.d.ts.map +1 -0
- package/mcp/desktop/dist/libnut/platform.js +36 -0
- package/mcp/desktop/dist/libnut/platform.js.map +1 -0
- package/mcp/desktop/dist/server.d.ts +3 -0
- package/mcp/desktop/dist/server.d.ts.map +1 -0
- package/mcp/desktop/dist/server.js +27 -0
- package/mcp/desktop/dist/server.js.map +1 -0
- package/mcp/desktop/dist/tools/index.d.ts +4 -0
- package/mcp/desktop/dist/tools/index.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/index.js +14 -0
- package/mcp/desktop/dist/tools/index.js.map +1 -0
- package/mcp/desktop/dist/tools/keyboard-tools.d.ts +4 -0
- package/mcp/desktop/dist/tools/keyboard-tools.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/keyboard-tools.js +39 -0
- package/mcp/desktop/dist/tools/keyboard-tools.js.map +1 -0
- package/mcp/desktop/dist/tools/mouse-tools.d.ts +4 -0
- package/mcp/desktop/dist/tools/mouse-tools.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/mouse-tools.js +82 -0
- package/mcp/desktop/dist/tools/mouse-tools.js.map +1 -0
- package/mcp/desktop/dist/tools/screen-tools.d.ts +4 -0
- package/mcp/desktop/dist/tools/screen-tools.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/screen-tools.js +84 -0
- package/mcp/desktop/dist/tools/screen-tools.js.map +1 -0
- package/mcp/desktop/dist/tools/system-tools.d.ts +4 -0
- package/mcp/desktop/dist/tools/system-tools.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/system-tools.js +28 -0
- package/mcp/desktop/dist/tools/system-tools.js.map +1 -0
- package/mcp/desktop/dist/tools/window-tools.d.ts +4 -0
- package/mcp/desktop/dist/tools/window-tools.d.ts.map +1 -0
- package/mcp/desktop/dist/tools/window-tools.js +88 -0
- package/mcp/desktop/dist/tools/window-tools.js.map +1 -0
- package/mcp/desktop/dist/transport/http.d.ts +4 -0
- package/mcp/desktop/dist/transport/http.d.ts.map +1 -0
- package/mcp/desktop/dist/transport/http.js +73 -0
- package/mcp/desktop/dist/transport/http.js.map +1 -0
- package/mcp/desktop/package.json +29 -0
- package/mcp/planner/package.json +6 -3
- package/mcp.example.json +65 -0
- package/mcp.json +12 -10
- package/package.json +40 -24
- package/skills/build-and-test/SKILL.md +42 -0
- package/skills/command-line-commands/SKILL.md +47 -0
- package/skills/consolator-recording/SKILL.md +56 -0
- package/skills/git-workflows/SKILL.md +56 -0
- package/skills/linux-admin/SKILL.md +45 -0
- package/skills/npx-with-approval/SKILL.md +63 -0
- package/skills/windows-admin/SKILL.md +45 -0
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
- **Sessions**: Save/load conversation sessions in `~/.automatey/sessions/`
|
|
46
46
|
- **Checkpoints**: `/checkpoint` — full conversation snapshots with BM25 keyword search
|
|
47
47
|
- **Auto-compact**: LLM summarises older context when usage ≥ 90%
|
|
48
|
-
- **Skills**: Progressive SKILL.md loading from `.agents/skills
|
|
48
|
+
- **Skills**: Progressive SKILL.md loading from the canonical universal path `.agents/skills/`, plus extra directories via `AUTOMATEY_SKILLS_DIRS`
|
|
49
49
|
- **Eval system**: `/eval <file.jsonl>` runs MCQ, keyword, and regex benchmarks with per-category accuracy reports
|
|
50
50
|
- **Planner MCP**: Bundled `mcp/planner` — todos + plans, prompts for task breakdown
|
|
51
51
|
- **Coder MCP**: Bundled `mcp/coder` — read/write/edit files, run commands, glob files, prompts for analysis
|
|
@@ -196,10 +196,6 @@ ay "summarise this repo" # one-shot against the current directory
|
|
|
196
196
|
| `~/.automatey/planner/` | Planner MCP server data |
|
|
197
197
|
| `~/.automatey/logs/` | Agent log files |
|
|
198
198
|
|
|
199
|
-
> JSON / JSONC in `mcp.json`: Standard JSON does not allow `//` comments.
|
|
200
|
-
> The agent uses a JSONC parser — `//` line comments and `/* */` block comments
|
|
201
|
-
> are fully supported in all `mcp.json` files.
|
|
202
|
-
|
|
203
199
|
## MCP Config — `mcp.json`
|
|
204
200
|
|
|
205
201
|
The agent looks for MCP config in this order:
|
|
@@ -215,26 +211,27 @@ cp mcp.example.json mcp.json # project-local
|
|
|
215
211
|
cp mcp.example.json ~/.automatey/mcp.json # global
|
|
216
212
|
```
|
|
217
213
|
|
|
214
|
+
Prefer strict JSON with no comments. Field descriptions and examples live in [docs/MCP-CONFIG.md](c:\build\automatey-org\automatey\docs\MCP-CONFIG.md).
|
|
215
|
+
|
|
218
216
|
Example `mcp.json`:
|
|
219
217
|
|
|
220
|
-
```
|
|
218
|
+
```json
|
|
221
219
|
{
|
|
222
|
-
// JSONC is supported — '//' and '/* */' comments are stripped before parsing
|
|
223
220
|
"mcpServers": {
|
|
224
221
|
"planner": {
|
|
225
|
-
"
|
|
222
|
+
"transport": "stdio",
|
|
226
223
|
"command": "node",
|
|
227
224
|
"args": ["./mcp/planner/dist/server.js"]
|
|
228
225
|
},
|
|
229
226
|
"brave-search": {
|
|
230
|
-
"
|
|
227
|
+
"transport": "stdio",
|
|
231
228
|
"command": "npx",
|
|
232
229
|
"args": ["-y", "@brave/brave-search-mcp-server", "--transport", "stdio"],
|
|
233
230
|
"env": { "BRAVE_API_KEY": "${env:BRAVE_API_KEY}" },
|
|
234
231
|
"requiresEnv": "BRAVE_API_KEY"
|
|
235
232
|
},
|
|
236
233
|
"memento": {
|
|
237
|
-
"
|
|
234
|
+
"transport": "http",
|
|
238
235
|
"url": "http://localhost:3500/mcp",
|
|
239
236
|
"portCheck": true
|
|
240
237
|
}
|
|
@@ -242,10 +239,6 @@ Example `mcp.json`:
|
|
|
242
239
|
}
|
|
243
240
|
```
|
|
244
241
|
|
|
245
|
-
Conditional loading:
|
|
246
|
-
- `requiresEnv` — skip server if env var is missing (no key = no server, no error)
|
|
247
|
-
- `portCheck: true` — skip HTTP/SSE server if the URL is unreachable at startup (1 s probe)
|
|
248
|
-
|
|
249
242
|
## Config
|
|
250
243
|
|
|
251
244
|
Config lives in `~/.automatey/config.json` (auto-created on first run):
|
|
@@ -318,6 +311,120 @@ Checkpoints are full conversation snapshots saved to `~/.automatey/checkpoints/`
|
|
|
318
311
|
|
|
319
312
|
The BM25 search indexes the full message history of every checkpoint and ranks them by keyword relevance.
|
|
320
313
|
|
|
314
|
+
## Sub-Agents
|
|
315
|
+
|
|
316
|
+
Sub-agents let the main agent delegate focused tasks to a nested ReAct loop — with its own tools, model, and system prompt. The parent spawns the sub-agent, waits for its result, and continues.
|
|
317
|
+
|
|
318
|
+
### How it works
|
|
319
|
+
|
|
320
|
+
The LLM calls the built-in `run_subagent` tool:
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
run_subagent(
|
|
324
|
+
description: "Write and test a Node.js hello-world script",
|
|
325
|
+
prompt: "Create hello.js that prints Hello World, run it with node, and confirm the output.",
|
|
326
|
+
agentName: "nemotron-coder" // optional — uses a named .agent.md definition
|
|
327
|
+
)
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
The sub-agent runs its own ReAct loop (up to `maxToolRounds`) and returns a plain-text result to the main agent.
|
|
331
|
+
|
|
332
|
+
### Named agents — `.agent.md` files
|
|
333
|
+
|
|
334
|
+
Define reusable agents as `.agent.md` files in `.agents/agents/` (project-local) or `~/.agents/agents/` (global). Format is YAML frontmatter + system prompt body:
|
|
335
|
+
|
|
336
|
+
```markdown
|
|
337
|
+
---
|
|
338
|
+
name: nemotron-coder
|
|
339
|
+
description: >
|
|
340
|
+
Code generation sub-agent on the local Nemotron vLLM instance.
|
|
341
|
+
Use for writing, editing, and running code — offloads code tasks
|
|
342
|
+
to a local model without burning cloud API quota.
|
|
343
|
+
model: auto
|
|
344
|
+
provider: nemotron
|
|
345
|
+
baseUrl: http://192.168.0.58:8002/v1
|
|
346
|
+
tools:
|
|
347
|
+
- read_file
|
|
348
|
+
- write_file
|
|
349
|
+
- execute_command
|
|
350
|
+
- glob_files
|
|
351
|
+
- list_dir
|
|
352
|
+
- search_text
|
|
353
|
+
- edit_file
|
|
354
|
+
maxToolRounds: 12
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
You are a code-generation agent running on a local Nemotron model.
|
|
358
|
+
Write complete, working code and save it to disk.
|
|
359
|
+
Use execute_command to run and verify output. Never truncate code.
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Place in:
|
|
363
|
+
- **`.agents/agents/nemotron-coder.agent.md`** — project-local (resolved from `cwd` at runtime)
|
|
364
|
+
- **`~/.agents/agents/nemotron-coder.agent.md`** — global (available in every directory)
|
|
365
|
+
|
|
366
|
+
Extra directories: set `AUTOMATEY_AGENTS_DIRS` (path-separator-delimited) to add more search paths.
|
|
367
|
+
|
|
368
|
+
### Frontmatter fields
|
|
369
|
+
|
|
370
|
+
| Field | Description |
|
|
371
|
+
|---|---|
|
|
372
|
+
| `name` | Agent identifier (falls back to filename stem) |
|
|
373
|
+
| `description` | When to use this agent — shown to the LLM in the system prompt |
|
|
374
|
+
| `model` | Model ID, `auto`, or wildcard mask (e.g. `*Super*`, `nvidia/*`) |
|
|
375
|
+
| `provider` | `nemotron` \| `openai` \| `anthropic` \| `perplexity` |
|
|
376
|
+
| `baseUrl` | Base URL for OpenAI-compatible endpoints |
|
|
377
|
+
| `apiKey` | API key — supports `${ENV_VAR}` interpolation |
|
|
378
|
+
| `tools` | Allowlist of tool names (absent = inherit all parent tools) |
|
|
379
|
+
| `mcpServers` | Allowlist of MCP server names (absent = inherit all) |
|
|
380
|
+
| `maxToolRounds` | Max ReAct rounds (absent = parent's setting) |
|
|
381
|
+
|
|
382
|
+
### Model resolution
|
|
383
|
+
|
|
384
|
+
For `nemotron` agents, `model` supports the same resolution as the main config:
|
|
385
|
+
|
|
386
|
+
```yaml
|
|
387
|
+
model: auto # picks the first model from /v1/models
|
|
388
|
+
model: "*Super*" # glob-matches the first model containing "Super"
|
|
389
|
+
model: nvidia/* # any nvidia/ model
|
|
390
|
+
model: nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 # exact ID
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
automatey probes the `baseUrl`'s `/v1/models` endpoint at sub-agent spawn time to resolve wildcards.
|
|
394
|
+
|
|
395
|
+
### Listing agents
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
/agents list # show all discovered agents + scope (project / global)
|
|
399
|
+
/agents info <name> # show frontmatter + system prompt for an agent
|
|
400
|
+
/agents help # usage and file format reference
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Example prompts
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
Write a CLI tool in Go that downloads a URL to a file — use nemotron-coder
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
Run nemotron-coder to generate a Python FastAPI stub for a todo list API, then run it and show me the /docs URL
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
Delegate to nemotron-coder: read package.json, bump the patch version, and commit it
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Generic sub-agents (no `.agent.md`)
|
|
418
|
+
|
|
419
|
+
Omit `agentName` and the parent's own LLM client and full tool set are used:
|
|
420
|
+
|
|
421
|
+
```
|
|
422
|
+
Split this task into three parallel sub-agents: one for backend tests,
|
|
423
|
+
one for frontend tests, one for linting. Run each and summarise.
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
> Sub-agents are stateless — they do not share session, context, or compaction with the parent. Each sub-agent starts fresh with an empty context containing only its system prompt and the prompt passed by the parent.
|
|
427
|
+
|
|
321
428
|
## Built-in MCP Servers
|
|
322
429
|
|
|
323
430
|
### 🗂 Coder (`mcp/coder`)
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { LLMClient } from './llm-client.ts';
|
|
|
2
2
|
export type { LLMClientConfig } from './llm-client.ts';
|
|
3
3
|
export { judgeResult, judgeQuality, judgeConfigFromEnv, JudgeVerdictSchema, QualityVerdictSchema, } from './judge-client.ts';
|
|
4
4
|
export type { JudgeConfig, JudgeMode, JudgeVerdict, QualityVerdict, } from './judge-client.ts';
|
|
5
|
+
export { JsonMemoryClient } from './json-memory-client.ts';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Adapters barrel
|
|
2
2
|
export { LLMClient } from "./llm-client.js";
|
|
3
3
|
export { judgeResult, judgeQuality, judgeConfigFromEnv, JudgeVerdictSchema, QualityVerdictSchema, } from "./judge-client.js";
|
|
4
|
+
export { JsonMemoryClient } from "./json-memory-client.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JsonMemoryClient — A zero-dependency file-backed memory implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stores memories as a JSON array in `~/.automatey/memory.json`.
|
|
5
|
+
* Full-text search is BM25-inspired: tf-idf over words, substring matching for
|
|
6
|
+
* short queries.
|
|
7
|
+
*
|
|
8
|
+
* Trade-offs vs Memento / SQLite:
|
|
9
|
+
* + Zero dependencies — no native addons, no network
|
|
10
|
+
* + JSON is human-readable and grep-able
|
|
11
|
+
* − No vector embeddings → purely lexical recall
|
|
12
|
+
* − Full scan on search (fast up to ~50K entries)
|
|
13
|
+
* − No URL hydration or LLM cleanup in enhanceMemory (throws)
|
|
14
|
+
*
|
|
15
|
+
* Switch to MementoMemoryClient or SqliteMemoryClient for semantic search.
|
|
16
|
+
*/
|
|
17
|
+
import type { IMemoryClient, Memory, MemoryEnhanceOptions, MemoryEnhanceResult, MemoryResult, MemorySearchOptions, MemoryStoreOptions } from '#core/interfaces';
|
|
18
|
+
export declare class JsonMemoryClient implements IMemoryClient {
|
|
19
|
+
private storePath;
|
|
20
|
+
private memories;
|
|
21
|
+
private connected;
|
|
22
|
+
constructor(storePath?: string);
|
|
23
|
+
connect(): Promise<void>;
|
|
24
|
+
disconnect(): Promise<void>;
|
|
25
|
+
isConnected(): boolean;
|
|
26
|
+
searchMemory(query: string, options?: MemorySearchOptions): Promise<MemoryResult[]>;
|
|
27
|
+
storeMemory(text: string, options?: MemoryStoreOptions): Promise<string>;
|
|
28
|
+
getMemory(id: string): Promise<Memory | null>;
|
|
29
|
+
updateMemory(id: string, updates: {
|
|
30
|
+
text?: string;
|
|
31
|
+
tags?: string[];
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
enhanceMemory(_id: string, _options?: MemoryEnhanceOptions): Promise<MemoryEnhanceResult>;
|
|
35
|
+
private assertConnected;
|
|
36
|
+
private persist;
|
|
37
|
+
private toMemory;
|
|
38
|
+
private tryParseJson;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=json-memory-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-memory-client.d.ts","sourceRoot":"","sources":["../../src/adapters/json-memory-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AA6C1B,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;IAIxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,WAAW,IAAI,OAAO;IAIhB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA2CnF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBxE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO7C,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAC9E,OAAO,CAAC,IAAI,CAAC;IAYV,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS/F,OAAO,CAAC,eAAe;YAIT,OAAO;IAIrB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JsonMemoryClient — A zero-dependency file-backed memory implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stores memories as a JSON array in `~/.automatey/memory.json`.
|
|
5
|
+
* Full-text search is BM25-inspired: tf-idf over words, substring matching for
|
|
6
|
+
* short queries.
|
|
7
|
+
*
|
|
8
|
+
* Trade-offs vs Memento / SQLite:
|
|
9
|
+
* + Zero dependencies — no native addons, no network
|
|
10
|
+
* + JSON is human-readable and grep-able
|
|
11
|
+
* − No vector embeddings → purely lexical recall
|
|
12
|
+
* − Full scan on search (fast up to ~50K entries)
|
|
13
|
+
* − No URL hydration or LLM cleanup in enhanceMemory (throws)
|
|
14
|
+
*
|
|
15
|
+
* Switch to MementoMemoryClient or SqliteMemoryClient for semantic search.
|
|
16
|
+
*/
|
|
17
|
+
import { createHash } from 'node:crypto';
|
|
18
|
+
import { existsSync } from 'node:fs';
|
|
19
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
20
|
+
import { homedir } from 'node:os';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
// ── Token / TF-IDF helpers ────────────────────────────────────────────────
|
|
23
|
+
function tokenize(text) {
|
|
24
|
+
return text
|
|
25
|
+
.toLowerCase()
|
|
26
|
+
.replace(/[^a-z0-9\s]/g, ' ')
|
|
27
|
+
.split(/\s+/)
|
|
28
|
+
.filter(t => t.length > 1);
|
|
29
|
+
}
|
|
30
|
+
/** Compute a simple BM25-inspired score (k1=1.5, b=0.75). */
|
|
31
|
+
function bm25Score(queryTokens, docTokens, avgDocLen) {
|
|
32
|
+
const k1 = 1.5;
|
|
33
|
+
const b = 0.75;
|
|
34
|
+
const docLen = docTokens.length;
|
|
35
|
+
const freqMap = new Map();
|
|
36
|
+
for (const t of docTokens)
|
|
37
|
+
freqMap.set(t, (freqMap.get(t) ?? 0) + 1);
|
|
38
|
+
let score = 0;
|
|
39
|
+
for (const qt of queryTokens) {
|
|
40
|
+
const tf = freqMap.get(qt) ?? 0;
|
|
41
|
+
if (tf === 0)
|
|
42
|
+
continue;
|
|
43
|
+
const idf = 1; // no corpus IDF without global stats — treat as 1
|
|
44
|
+
const tfNorm = (tf * (k1 + 1)) / (tf + k1 * (1 - b + b * (docLen / avgDocLen)));
|
|
45
|
+
score += idf * tfNorm;
|
|
46
|
+
}
|
|
47
|
+
return score;
|
|
48
|
+
}
|
|
49
|
+
// ── JsonMemoryClient ──────────────────────────────────────────────────────
|
|
50
|
+
export class JsonMemoryClient {
|
|
51
|
+
storePath;
|
|
52
|
+
memories = [];
|
|
53
|
+
connected = false;
|
|
54
|
+
constructor(storePath) {
|
|
55
|
+
this.storePath = storePath ?? join(homedir(), '.automatey', 'memory.json');
|
|
56
|
+
}
|
|
57
|
+
async connect() {
|
|
58
|
+
await mkdir(join(homedir(), '.automatey'), { recursive: true });
|
|
59
|
+
if (existsSync(this.storePath)) {
|
|
60
|
+
try {
|
|
61
|
+
const raw = await readFile(this.storePath, 'utf-8');
|
|
62
|
+
this.memories = JSON.parse(raw);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
this.memories = [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.connected = true;
|
|
69
|
+
}
|
|
70
|
+
async disconnect() {
|
|
71
|
+
this.connected = false;
|
|
72
|
+
}
|
|
73
|
+
isConnected() {
|
|
74
|
+
return this.connected;
|
|
75
|
+
}
|
|
76
|
+
async searchMemory(query, options) {
|
|
77
|
+
this.assertConnected();
|
|
78
|
+
const k = options?.k ?? 8;
|
|
79
|
+
const namespaces = options?.namespace
|
|
80
|
+
? Array.isArray(options.namespace) ? options.namespace : [options.namespace]
|
|
81
|
+
: null;
|
|
82
|
+
const tagFilter = options?.tagFilter?.split(',').map(t => t.trim().toLowerCase()) ?? null;
|
|
83
|
+
const queryTokens = tokenize(query);
|
|
84
|
+
const lowerQuery = query.toLowerCase();
|
|
85
|
+
// Filter to matching namespaces + tags
|
|
86
|
+
let pool = this.memories.filter(m => {
|
|
87
|
+
if (namespaces && !namespaces.includes(m.namespace))
|
|
88
|
+
return false;
|
|
89
|
+
if (tagFilter && !tagFilter.every(t => m.tags.some(mt => mt.toLowerCase().includes(t))))
|
|
90
|
+
return false;
|
|
91
|
+
return true;
|
|
92
|
+
});
|
|
93
|
+
if (pool.length === 0)
|
|
94
|
+
return [];
|
|
95
|
+
const avgDocLen = pool.reduce((s, m) => s + tokenize(m.text).length, 0) / pool.length;
|
|
96
|
+
const scored = pool.map(mem => {
|
|
97
|
+
const docTokens = tokenize(mem.text);
|
|
98
|
+
let score = bm25Score(queryTokens, docTokens, avgDocLen);
|
|
99
|
+
// Boost exact substring matches
|
|
100
|
+
if (mem.text.toLowerCase().includes(lowerQuery))
|
|
101
|
+
score += 2;
|
|
102
|
+
return { mem, score };
|
|
103
|
+
});
|
|
104
|
+
return scored
|
|
105
|
+
.filter(x => x.score > 0)
|
|
106
|
+
.sort((a, b) => b.score - a.score)
|
|
107
|
+
.slice(0, k)
|
|
108
|
+
.map(x => ({
|
|
109
|
+
id: x.mem.id,
|
|
110
|
+
text: x.mem.text,
|
|
111
|
+
score: Math.min(x.score / 10, 1), // normalise to [0,1] approximately
|
|
112
|
+
namespace: x.mem.namespace,
|
|
113
|
+
tags: x.mem.tags,
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
async storeMemory(text, options) {
|
|
117
|
+
this.assertConnected();
|
|
118
|
+
const id = createHash('sha256').update(text + Date.now()).digest('hex').slice(0, 16);
|
|
119
|
+
const now = new Date().toISOString();
|
|
120
|
+
const record = {
|
|
121
|
+
id,
|
|
122
|
+
text,
|
|
123
|
+
namespace: options?.namespace ?? 'default',
|
|
124
|
+
tags: options?.tags?.split(',').map(t => t.trim()).filter(Boolean) ?? [],
|
|
125
|
+
metadata: options?.metadata ? this.tryParseJson(options.metadata) : {},
|
|
126
|
+
createdAt: now,
|
|
127
|
+
updatedAt: now,
|
|
128
|
+
};
|
|
129
|
+
this.memories.push(record);
|
|
130
|
+
await this.persist();
|
|
131
|
+
return id;
|
|
132
|
+
}
|
|
133
|
+
async getMemory(id) {
|
|
134
|
+
this.assertConnected();
|
|
135
|
+
const m = this.memories.find(x => x.id === id);
|
|
136
|
+
if (!m)
|
|
137
|
+
return null;
|
|
138
|
+
return this.toMemory(m);
|
|
139
|
+
}
|
|
140
|
+
async updateMemory(id, updates) {
|
|
141
|
+
this.assertConnected();
|
|
142
|
+
const idx = this.memories.findIndex(x => x.id === id);
|
|
143
|
+
if (idx < 0)
|
|
144
|
+
throw new Error(`Memory not found: ${id}`);
|
|
145
|
+
const m = this.memories[idx];
|
|
146
|
+
if (updates.text !== undefined)
|
|
147
|
+
m.text = updates.text;
|
|
148
|
+
if (updates.tags !== undefined)
|
|
149
|
+
m.tags = updates.tags;
|
|
150
|
+
if (updates.metadata !== undefined)
|
|
151
|
+
m.metadata = updates.metadata;
|
|
152
|
+
m.updatedAt = new Date().toISOString();
|
|
153
|
+
await this.persist();
|
|
154
|
+
}
|
|
155
|
+
async enhanceMemory(_id, _options) {
|
|
156
|
+
throw new Error('JsonMemoryClient does not support enhanceMemory. ' +
|
|
157
|
+
'Use MementoMemoryClient for URL hydration and LLM cleanup.');
|
|
158
|
+
}
|
|
159
|
+
// ── Private helpers ──────────────────────────────────────────────────────
|
|
160
|
+
assertConnected() {
|
|
161
|
+
if (!this.connected)
|
|
162
|
+
throw new Error('JsonMemoryClient not connected. Call connect() first.');
|
|
163
|
+
}
|
|
164
|
+
async persist() {
|
|
165
|
+
await writeFile(this.storePath, JSON.stringify(this.memories, null, 2), 'utf-8');
|
|
166
|
+
}
|
|
167
|
+
toMemory(m) {
|
|
168
|
+
return {
|
|
169
|
+
id: m.id,
|
|
170
|
+
text: m.text,
|
|
171
|
+
namespace: m.namespace,
|
|
172
|
+
tags: m.tags,
|
|
173
|
+
metadata: m.metadata,
|
|
174
|
+
createdAt: new Date(m.createdAt),
|
|
175
|
+
updatedAt: new Date(m.updatedAt),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
tryParseJson(s) {
|
|
179
|
+
try {
|
|
180
|
+
return JSON.parse(s);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return {};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=json-memory-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-memory-client.js","sourceRoot":"","sources":["../../src/adapters/json-memory-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,18 +16,14 @@
|
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import type { LLMProvider } from '#core/interfaces';
|
|
18
18
|
export declare const JudgeVerdictSchema: z.ZodObject<{
|
|
19
|
-
verdict: z.ZodEnum<
|
|
19
|
+
verdict: z.ZodEnum<{
|
|
20
|
+
correct: "correct";
|
|
21
|
+
incorrect: "incorrect";
|
|
22
|
+
uncertain: "uncertain";
|
|
23
|
+
}>;
|
|
20
24
|
reasoning: z.ZodString;
|
|
21
25
|
confidence: z.ZodNumber;
|
|
22
|
-
},
|
|
23
|
-
reasoning: string;
|
|
24
|
-
verdict: "correct" | "incorrect" | "uncertain";
|
|
25
|
-
confidence: number;
|
|
26
|
-
}, {
|
|
27
|
-
reasoning: string;
|
|
28
|
-
verdict: "correct" | "incorrect" | "uncertain";
|
|
29
|
-
confidence: number;
|
|
30
|
-
}>;
|
|
26
|
+
}, z.core.$strip>;
|
|
31
27
|
export type JudgeVerdict = z.infer<typeof JudgeVerdictSchema> & {
|
|
32
28
|
/** Cited URLs from Perplexity responses (when EVAL_JUDGE_PROVIDER=perplexity). */
|
|
33
29
|
sources?: string[];
|
|
@@ -63,22 +59,10 @@ export declare function judgeResult(config: JudgeConfig, question: string, expec
|
|
|
63
59
|
export declare const QualityVerdictSchema: z.ZodObject<{
|
|
64
60
|
score: z.ZodNumber;
|
|
65
61
|
reasoning: z.ZodString;
|
|
66
|
-
strengths: z.ZodArray<z.ZodString
|
|
67
|
-
weaknesses: z.ZodArray<z.ZodString
|
|
68
|
-
suggestions: z.ZodArray<z.ZodString
|
|
69
|
-
},
|
|
70
|
-
reasoning: string;
|
|
71
|
-
score: number;
|
|
72
|
-
strengths: string[];
|
|
73
|
-
weaknesses: string[];
|
|
74
|
-
suggestions: string[];
|
|
75
|
-
}, {
|
|
76
|
-
reasoning: string;
|
|
77
|
-
score: number;
|
|
78
|
-
strengths: string[];
|
|
79
|
-
weaknesses: string[];
|
|
80
|
-
suggestions: string[];
|
|
81
|
-
}>;
|
|
62
|
+
strengths: z.ZodArray<z.ZodString>;
|
|
63
|
+
weaknesses: z.ZodArray<z.ZodString>;
|
|
64
|
+
suggestions: z.ZodArray<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>;
|
|
82
66
|
export type QualityVerdict = z.infer<typeof QualityVerdictSchema>;
|
|
83
67
|
/**
|
|
84
68
|
* Judge agent output quality with a structured 0-10 score and feedback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge-client.d.ts","sourceRoot":"","sources":["../../src/adapters/judge-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"judge-client.d.ts","sourceRoot":"","sources":["../../src/adapters/judge-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,eAAO,MAAM,kBAAkB;;;;;;;;iBAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GAAG;IAC9D,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA0B/E;AAqBD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CA4BvB;AAID;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;iBAM/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAelE;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
|
|
@@ -49,7 +49,14 @@ export declare class LLMClient implements ILLMClient {
|
|
|
49
49
|
*/
|
|
50
50
|
private _buildProviderOptions;
|
|
51
51
|
private _toAIMessages;
|
|
52
|
+
/**
|
|
53
|
+
* Flatten oneOf/anyOf in property schemas to the first concrete type.
|
|
54
|
+
* vLLM's Jinja2 chat template cannot handle oneOf/anyOf in tool parameter schemas.
|
|
55
|
+
*/
|
|
56
|
+
private _flattenSchema;
|
|
52
57
|
private _toAITools;
|
|
53
58
|
private _mapFinish;
|
|
59
|
+
private _recoverFromReasoning;
|
|
60
|
+
private _stripThinkingArtifacts;
|
|
54
61
|
}
|
|
55
62
|
//# sourceMappingURL=llm-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/adapters/llm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAkBH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,OAAO,EAGR,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,eAAe;IASnC,kBAAkB,IAAI,MAAM,EAAE;IAC9B,eAAe,IAAI,MAAM;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASvB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/adapters/llm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAkBH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,OAAO,EAGR,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,eAAe;IASnC,kBAAkB,IAAI,MAAM,EAAE;IAC9B,eAAe,IAAI,MAAM;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASvB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;YAkB/D,OAAO;YA8GP,SAAS;IAgEvB,OAAO,CAAC,WAAW;IA4EnB,yFAAyF;IACzF,OAAO,CAAC,uBAAuB;IAK/B,0EAA0E;IAC1E,OAAO,CAAC,mBAAmB;IAQ3B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,aAAa;IAyCrB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IA4C7B,OAAO,CAAC,uBAAuB;CAMhC"}
|