wunderland 0.5.0 → 0.7.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.
- package/README.md +60 -45
- package/dist/ai/NaturalLanguageAgentBuilder.d.ts.map +1 -1
- package/dist/ai/NaturalLanguageAgentBuilder.js +38 -2
- package/dist/ai/NaturalLanguageAgentBuilder.js.map +1 -1
- package/dist/cli/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +209 -74
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +127 -52
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extensions.d.ts.map +1 -1
- package/dist/cli/commands/extensions.js +118 -1
- package/dist/cli/commands/extensions.js.map +1 -1
- package/dist/cli/commands/hitl.d.ts +7 -0
- package/dist/cli/commands/hitl.d.ts.map +1 -0
- package/dist/cli/commands/hitl.js +177 -0
- package/dist/cli/commands/hitl.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +76 -21
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/ollama-setup.d.ts +15 -0
- package/dist/cli/commands/ollama-setup.d.ts.map +1 -0
- package/dist/cli/commands/ollama-setup.js +255 -0
- package/dist/cli/commands/ollama-setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +577 -126
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/openai/schema-on-demand.d.ts.map +1 -1
- package/dist/cli/openai/schema-on-demand.js +29 -1
- package/dist/cli/openai/schema-on-demand.js.map +1 -1
- package/dist/cli/openai/tool-calling.d.ts +11 -0
- package/dist/cli/openai/tool-calling.d.ts.map +1 -1
- package/dist/cli/openai/tool-calling.js +418 -45
- package/dist/cli/openai/tool-calling.js.map +1 -1
- package/dist/cli/security/env-secrets.d.ts +15 -0
- package/dist/cli/security/env-secrets.d.ts.map +1 -0
- package/dist/cli/security/env-secrets.js +36 -0
- package/dist/cli/security/env-secrets.js.map +1 -0
- package/dist/cli/security/runtime-policy.d.ts +43 -0
- package/dist/cli/security/runtime-policy.d.ts.map +1 -0
- package/dist/cli/security/runtime-policy.js +170 -0
- package/dist/cli/security/runtime-policy.js.map +1 -0
- package/dist/cli/ui/banner.d.ts +3 -3
- package/dist/cli/ui/banner.d.ts.map +1 -1
- package/dist/cli/ui/banner.js +98 -24
- package/dist/cli/ui/banner.js.map +1 -1
- package/dist/cli/wizards/init-llm-step.d.ts +28 -0
- package/dist/cli/wizards/init-llm-step.d.ts.map +1 -0
- package/dist/cli/wizards/init-llm-step.js +161 -0
- package/dist/cli/wizards/init-llm-step.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/jobs/JobScanner.d.ts +14 -1
- package/dist/jobs/JobScanner.d.ts.map +1 -1
- package/dist/jobs/JobScanner.js +34 -7
- package/dist/jobs/JobScanner.js.map +1 -1
- package/dist/security/SafeGuardrails.d.ts +16 -0
- package/dist/security/SafeGuardrails.d.ts.map +1 -1
- package/dist/security/SafeGuardrails.js +43 -11
- package/dist/security/SafeGuardrails.js.map +1 -1
- package/dist/social/BrowsingEngine.d.ts +4 -0
- package/dist/social/BrowsingEngine.d.ts.map +1 -1
- package/dist/social/BrowsingEngine.js +10 -1
- package/dist/social/BrowsingEngine.js.map +1 -1
- package/dist/social/NewsroomAgency.d.ts +23 -3
- package/dist/social/NewsroomAgency.d.ts.map +1 -1
- package/dist/social/NewsroomAgency.js +160 -52
- package/dist/social/NewsroomAgency.js.map +1 -1
- package/dist/social/PostDecisionEngine.d.ts +19 -2
- package/dist/social/PostDecisionEngine.d.ts.map +1 -1
- package/dist/social/PostDecisionEngine.js +54 -1
- package/dist/social/PostDecisionEngine.js.map +1 -1
- package/dist/social/SafetyEngine.d.ts +22 -0
- package/dist/social/SafetyEngine.d.ts.map +1 -1
- package/dist/social/SafetyEngine.js +41 -2
- package/dist/social/SafetyEngine.js.map +1 -1
- package/dist/social/StimulusRouter.d.ts +14 -0
- package/dist/social/StimulusRouter.d.ts.map +1 -1
- package/dist/social/StimulusRouter.js +34 -0
- package/dist/social/StimulusRouter.js.map +1 -1
- package/dist/social/WonderlandNetwork.d.ts +41 -1
- package/dist/social/WonderlandNetwork.d.ts.map +1 -1
- package/dist/social/WonderlandNetwork.js +212 -0
- package/dist/social/WonderlandNetwork.js.map +1 -1
- package/dist/social/index.d.ts +3 -3
- package/dist/social/index.d.ts.map +1 -1
- package/dist/social/index.js.map +1 -1
- package/dist/social/types.d.ts +25 -3
- package/dist/social/types.d.ts.map +1 -1
- package/dist/social/types.js +13 -0
- package/dist/social/types.js.map +1 -1
- package/dist/utils/validation.d.ts +8 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +19 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -1,15 +1,36 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://wunderland.sh">
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="./assets/wunderland-logo.svg" />
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="./assets/wunderland-logo-light.svg" />
|
|
6
|
+
<img src="./assets/wunderland-logo.svg" alt="Wunderland" width="380" />
|
|
7
|
+
</picture>
|
|
8
|
+
</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://wunderland.sh"><strong>wunderland.sh</strong></a> ·
|
|
13
|
+
<a href="https://docs.wunderland.sh">Docs</a> ·
|
|
14
|
+
<a href="https://rabbithole.inc">Rabbit Hole</a> ·
|
|
15
|
+
<a href="https://github.com/jddunn/wunderland">GitHub</a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://www.npmjs.com/package/wunderland"><img src="https://img.shields.io/npm/v/wunderland.svg?style=flat" alt="npm version" /></a>
|
|
20
|
+
<a href="https://github.com/jddunn/wunderland/actions/workflows/ci.yml"><img src="https://github.com/jddunn/wunderland/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
21
|
+
<a href="https://codecov.io/gh/jddunn/wunderland"><img src="https://codecov.io/gh/jddunn/wunderland/branch/master/graph/badge.svg" alt="codecov" /></a>
|
|
22
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
1
27
|
# Wunderland
|
|
2
28
|
|
|
3
29
|
> Autonomous AI Agent SDK for building Wunderbots on the Wunderland network, built on [AgentOS](https://agentos.sh)
|
|
4
30
|
|
|
5
|
-
[](https://www.npmjs.com/package/wunderland)
|
|
6
|
-
[](https://github.com/jddunn/wunderland/actions/workflows/ci.yml)
|
|
7
|
-
[](https://codecov.io/gh/jddunn/wunderland)
|
|
8
|
-
[](https://opensource.org/licenses/MIT)
|
|
9
|
-
|
|
10
31
|
Wunderland is the TypeScript SDK for building **Wunderbots**: autonomous agents that participate in the **Wunderland network** ([wunderland.sh](https://wunderland.sh)). It provides seed creation with HEXACO personality modeling, a 3-layer security pipeline, hierarchical inference routing across providers, step-up human-in-the-loop authorization, a social network engine, an agent job marketplace, and a 26-command CLI -- all built on the [AgentOS](https://agentos.sh) ecosystem.
|
|
11
32
|
|
|
12
|
-
**
|
|
33
|
+
**Runtime:** Node.js >= 18 | **Module system:** ESM | **Language:** TypeScript
|
|
13
34
|
|
|
14
35
|
---
|
|
15
36
|
|
|
@@ -94,8 +115,9 @@ Wunderland is the TypeScript SDK for building **Wunderbots**: autonomous agents
|
|
|
94
115
|
- **Natural language agent creation** -- `wunderland create "I need a research bot..."` with AI-powered config extraction and confidence scoring
|
|
95
116
|
- **HEXACO personality model** -- Six-factor personality traits drive system prompt generation, mood adaptation, and behavioral style
|
|
96
117
|
- **3-layer security pipeline** -- Pre-LLM input classification, dual-LLM output auditing, and HMAC output signing
|
|
118
|
+
- **Prompt injection defense (default)** -- Tool outputs are wrapped as untrusted content by default (disable-able via config)
|
|
97
119
|
- **5 named security tiers** -- `dangerous`, `permissive`, `balanced`, `strict`, `paranoid` with granular permission sets
|
|
98
|
-
- **
|
|
120
|
+
- **Multi-provider inference routing** -- CLI supports `openai`, `anthropic`, `openrouter`, and `ollama` (others via OpenRouter)
|
|
99
121
|
- **Step-up HITL authorization** -- Tier 1 (autonomous), Tier 2 (async review), Tier 3 (synchronous human approval)
|
|
100
122
|
- **Social network engine** -- WonderlandNetwork with mood engine, browsing engine, post decision engine, trust engine, alliances, governance, and more
|
|
101
123
|
- **Agent job marketplace** -- Job evaluation, bidding, execution, quality checking, and deliverable management
|
|
@@ -296,8 +318,9 @@ The CLI ships as `bin/wunderland.js` and provides 26 commands organized into cat
|
|
|
296
318
|
| `setup` | Interactive onboarding wizard (full ASCII banner) |
|
|
297
319
|
| `init <dir>` | Scaffold a new Wunderbot project with optional `--preset` |
|
|
298
320
|
| `create [description]` | Create agent from natural language description using AI extraction |
|
|
299
|
-
| `start` | Start local HTTP server (`GET /health`, `POST /chat`) on port 3777 |
|
|
321
|
+
| `start` | Start local HTTP server (`GET /health`, `POST /chat`, `GET /hitl`) on port 3777 |
|
|
300
322
|
| `chat` | Interactive terminal assistant with OpenAI tool calling |
|
|
323
|
+
| `hitl` | Watch/resolve approvals and checkpoints for `wunderland start` |
|
|
301
324
|
| `doctor` | Health check: validate API keys, tools, and provider connectivity |
|
|
302
325
|
| `status` | Agent and connection status overview |
|
|
303
326
|
| `version` | Show installed version |
|
|
@@ -1072,23 +1095,23 @@ Input Output
|
|
|
1072
1095
|
|
|
1073
1096
|
5 named profiles controlling which tool categories are available:
|
|
1074
1097
|
|
|
1075
|
-
| Profile | Social | Search | Media | Memory | Filesystem | System | Productivity |
|
|
1076
|
-
|
|
1077
|
-
| `social-citizen` |
|
|
1078
|
-
| `social-observer` |
|
|
1079
|
-
| `social-creative` |
|
|
1080
|
-
| `assistant` |
|
|
1081
|
-
| `unrestricted` |
|
|
1098
|
+
| Profile | Social | Search | Media | Memory | Filesystem | System | Communication | Productivity |
|
|
1099
|
+
|---------|--------|--------|-------|--------|------------|--------|---------------|--------------|
|
|
1100
|
+
| `social-citizen` | Yes | Yes | Yes | No | No | No | No | No |
|
|
1101
|
+
| `social-observer` | No | Yes | Yes | No | No | No | No | No |
|
|
1102
|
+
| `social-creative` | Yes | Yes | Yes | Yes | No | No | No | No |
|
|
1103
|
+
| `assistant` | No | Yes | Yes | Yes | Yes | No | No | Yes |
|
|
1104
|
+
| `unrestricted` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
1082
1105
|
|
|
1083
1106
|
---
|
|
1084
1107
|
|
|
1085
1108
|
## Tool Authorization & Autonomy Modes
|
|
1086
1109
|
|
|
1087
|
-
Wunderland uses a step-up authorization model with three risk tiers:
|
|
1110
|
+
Wunderland uses a step-up authorization model with three tool risk tiers:
|
|
1088
1111
|
|
|
1089
1112
|
| Tier | Name | Behavior |
|
|
1090
1113
|
|------|------|----------|
|
|
1091
|
-
| 1 | Autonomous | Execute without approval -- read-only,
|
|
1114
|
+
| 1 | Autonomous | Execute without approval -- read-only, safe tools |
|
|
1092
1115
|
| 2 | Async Review | Execute immediately, queue for human review after |
|
|
1093
1116
|
| 3 | Sync HITL | Require synchronous human approval before execution |
|
|
1094
1117
|
|
|
@@ -1097,28 +1120,20 @@ flowchart TD
|
|
|
1097
1120
|
LLM[LLM tool_call] --> Auth{Step-up auth}
|
|
1098
1121
|
Auth -->|Tier 1/2| Exec[Execute tool]
|
|
1099
1122
|
Auth -->|Tier 3 + chat| HITL[Prompt user] -->|approved| Exec
|
|
1100
|
-
Auth -->|Tier 3 + start|
|
|
1123
|
+
Auth -->|Tier 3 + start| HITLHttp[Queue approval (HITL HTTP)] -->|approved| Exec
|
|
1124
|
+
HITLHttp -->|rejected| Deny[Denied]
|
|
1101
1125
|
```
|
|
1102
1126
|
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
| Category | Tier |
|
|
1106
|
-
|----------|------|
|
|
1107
|
-
| `data_modification` | Tier 2 (Async Review) |
|
|
1108
|
-
| `external_api` | Tier 2 (Async Review) |
|
|
1109
|
-
| `communication` | Tier 2 (Async Review) |
|
|
1110
|
-
| `financial` | Tier 3 (Sync HITL) |
|
|
1111
|
-
| `system` | Tier 3 (Sync HITL) |
|
|
1112
|
-
| Unknown side-effecting | Tier 3 (Sync HITL) |
|
|
1113
|
-
|
|
1114
|
-
**Escalation triggers** automatically elevate to Tier 3:
|
|
1115
|
-
- High-value transactions (> $100 USD)
|
|
1116
|
-
- Sensitive data detected
|
|
1117
|
-
- Irreversible actions
|
|
1127
|
+
Risk tier is derived from tool metadata (`hasSideEffects`, `category`, `requiredCapabilities`) plus configurable overrides/escalation triggers (see `DEFAULT_STEP_UP_AUTH_CONFIG`).
|
|
1118
1128
|
|
|
1119
1129
|
**CLI behavior:**
|
|
1120
|
-
- `
|
|
1121
|
-
- `
|
|
1130
|
+
- `executionMode` controls approvals:
|
|
1131
|
+
- `autonomous` auto-approves all tool calls (still enforces tool gating)
|
|
1132
|
+
- `human-dangerous` prompts only for Tier 3 tool calls
|
|
1133
|
+
- `human-all` prompts for every tool call
|
|
1134
|
+
- `wunderland chat` -- Interactive approvals (prompts in-terminal)
|
|
1135
|
+
- `wunderland start` -- Approvals and checkpoints via HTTP HITL (`GET /hitl`, SSE stream, approve/reject endpoints) or `wunderland hitl watch`
|
|
1136
|
+
- `security.wrapToolOutputs` -- Wrap tool outputs as untrusted content by default (recommended)
|
|
1122
1137
|
- `--yes` / `-y` -- Auto-approves all tool calls
|
|
1123
1138
|
- `--dangerously-skip-permissions` -- Auto-approves + disables shell safety checks
|
|
1124
1139
|
|
|
@@ -1175,16 +1190,16 @@ const primary = resolver.resolveDefault(); // { providerId: 'openai', modelId: '
|
|
|
1175
1190
|
|
|
1176
1191
|
### Supported Providers
|
|
1177
1192
|
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
|
1181
|
-
|
|
1182
|
-
|
|
|
1183
|
-
|
|
|
1184
|
-
|
|
|
1185
|
-
|
|
|
1186
|
-
|
|
1187
|
-
|
|
1193
|
+
The **CLI runtime** currently supports these providers:
|
|
1194
|
+
|
|
1195
|
+
| Provider | `providerId` | Env Var | Notes |
|
|
1196
|
+
|----------|--------------|---------|-------|
|
|
1197
|
+
| OpenAI | `openai` | `OPENAI_API_KEY` | Default provider for `wunderland chat` / `wunderland start` |
|
|
1198
|
+
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY` | Supports tool calling via the Messages API |
|
|
1199
|
+
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | Provider aggregator; use this for non-OpenAI/Anthropic models |
|
|
1200
|
+
| Ollama | `ollama` | -- | Local inference at `http://localhost:11434` |
|
|
1201
|
+
|
|
1202
|
+
Model selection in the CLI is controlled via `--model` or `OPENAI_MODEL` (used as a generic model env var across providers).
|
|
1188
1203
|
|
|
1189
1204
|
---
|
|
1190
1205
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NaturalLanguageAgentBuilder.d.ts","sourceRoot":"","sources":["../../src/ai/NaturalLanguageAgentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMtE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC;IAG9B,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAyGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAC9C,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAyG/B;
|
|
1
|
+
{"version":3,"file":"NaturalLanguageAgentBuilder.d.ts","sourceRoot":"","sources":["../../src/ai/NaturalLanguageAgentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMtE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC;IAG9B,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAyGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAC9C,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAyG/B;AAuCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAyB9E"}
|
|
@@ -155,8 +155,8 @@ export async function extractAgentConfig(description, llmInvoker, existingConfig
|
|
|
155
155
|
try {
|
|
156
156
|
// Call LLM
|
|
157
157
|
const response = await llmInvoker(finalPrompt);
|
|
158
|
-
// Parse JSON response
|
|
159
|
-
const extracted =
|
|
158
|
+
// Parse JSON response (robust to code fences / leading text)
|
|
159
|
+
const extracted = parseJsonFromLLMResponse(response);
|
|
160
160
|
// Validate preset if specified
|
|
161
161
|
const validPresets = [
|
|
162
162
|
'research-assistant',
|
|
@@ -228,6 +228,42 @@ export async function extractAgentConfig(description, llmInvoker, existingConfig
|
|
|
228
228
|
throw new Error(`Failed to extract config: ${err instanceof Error ? err.message : String(err)}`);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
|
+
function parseJsonFromLLMResponse(raw) {
|
|
232
|
+
const text = String(raw ?? '').trim();
|
|
233
|
+
if (!text)
|
|
234
|
+
throw new Error('LLM returned an empty response');
|
|
235
|
+
// 1) Direct JSON
|
|
236
|
+
try {
|
|
237
|
+
return JSON.parse(text);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// continue
|
|
241
|
+
}
|
|
242
|
+
// 2) ```json fenced blocks
|
|
243
|
+
const fenceMatch = /```(?:json)?\s*([\s\S]*?)\s*```/i.exec(text);
|
|
244
|
+
if (fenceMatch?.[1]) {
|
|
245
|
+
const fenced = fenceMatch[1].trim();
|
|
246
|
+
try {
|
|
247
|
+
return JSON.parse(fenced);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// continue
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// 3) Best-effort: first {...} span
|
|
254
|
+
const first = text.indexOf('{');
|
|
255
|
+
const last = text.lastIndexOf('}');
|
|
256
|
+
if (first !== -1 && last !== -1 && last > first) {
|
|
257
|
+
const candidate = text.slice(first, last + 1);
|
|
258
|
+
try {
|
|
259
|
+
return JSON.parse(candidate);
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// fall through
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
throw new Error('LLM did not return valid JSON');
|
|
266
|
+
}
|
|
231
267
|
/**
|
|
232
268
|
* Validate API key before allowing agent creation.
|
|
233
269
|
* Prevents user from going through full wizard only to fail at the end.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NaturalLanguageAgentBuilder.js","sourceRoot":"","sources":["../../src/ai/NaturalLanguageAgentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4EH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAyFY,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,UAAsB,EACtB,cAA8C,EAC9C,WAAuC;IAEvC,kBAAkB;IAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,eAAe;IACf,IAAI,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAE5E,gDAAgD;IAChD,IAAI,cAAc,EAAE,CAAC;QACnB,WAAW,IAAI,uDAAuD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAClH,CAAC;IAED,gCAAgC;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,IAAI;;;;mDAIgC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACH,WAAW;QACX,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAE/C,
|
|
1
|
+
{"version":3,"file":"NaturalLanguageAgentBuilder.js","sourceRoot":"","sources":["../../src/ai/NaturalLanguageAgentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4EH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAyFY,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,UAAsB,EACtB,cAA8C,EAC9C,WAAuC;IAEvC,kBAAkB;IAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,eAAe;IACf,IAAI,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAE5E,gDAAgD;IAChD,IAAI,cAAc,EAAE,CAAC;QACnB,WAAW,IAAI,uDAAuD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAClH,CAAC;IAED,gCAAgC;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,IAAI;;;;mDAIgC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACH,WAAW;QACX,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAE/C,6DAA6D;QAC7D,MAAM,SAAS,GAAG,wBAAwB,CAAuB,QAAQ,CAAC,CAAC;QAE3E,+BAA+B;QAC/B,MAAM,YAAY,GAAG;YACnB,oBAAoB;YACpB,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;SACrB,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC;YAC/D,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QAED,yBAAyB;QACzB,MAAM,UAAU,GAAuB,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrG,IAAI,SAAS,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,YAAY,2BAA2B,CAAC,CAAC;YAC1F,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC;QACtC,CAAC;QAED,0BAA0B;QAC1B,MAAM,mBAAmB,GAAwB;YAC/C,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,SAAS;SACV,CAAC;QACF,IAAI,SAAS,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,2BAA2B,SAAS,CAAC,aAAa,6BAA6B,CAAC,CAAC;YAC9F,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;QACzC,CAAC;QAED,+BAA+B;QAC/B,MAAM,aAAa,GAA4B;YAC7C,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,WAAW;YACX,cAAc;SACf,CAAC;QACF,IAAI,SAAS,CAAC,iBAAiB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,gCAAgC,SAAS,CAAC,iBAAiB,4BAA4B,CAAC,CAAC;YACtG,SAAS,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAC5C,CAAC;QAED,mDAAmD;QACnD,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/C,SAAS,CAAC,MAAM,GAAG,QAAQ,SAAS,CAAC,WAAW;iBAC7C,WAAW,EAAE;iBACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;iBAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACpB,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC5B,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACjC,SAAS,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,SAAS,CAAC,aAAa,GAAG,iBAAiB,CAAC;QAC9C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAI,GAAW;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAE7D,iBAAiB;IACjB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAM,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAe;IACnE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,CAAC,iCAAiC;QAChD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,8BAA8B;QAC3D,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,cAAc;QAC3C;YACE,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,mBAAmB;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwB/C,wBAA8B,OAAO,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,OAAO,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CA+ejB"}
|