wunderland 0.51.0 → 0.53.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 (162) hide show
  1. package/README.md +134 -2
  2. package/dist/advanced/index.d.ts +9 -1
  3. package/dist/advanced/index.d.ts.map +1 -1
  4. package/dist/advanced/index.js +9 -1
  5. package/dist/advanced/index.js.map +1 -1
  6. package/dist/api/server.d.ts +4 -0
  7. package/dist/api/server.d.ts.map +1 -1
  8. package/dist/api/server.js +39 -0
  9. package/dist/api/server.js.map +1 -1
  10. package/dist/api/types.d.ts +5 -0
  11. package/dist/api/types.d.ts.map +1 -1
  12. package/dist/cli/commands/chat.d.ts.map +1 -1
  13. package/dist/cli/commands/chat.js +271 -2
  14. package/dist/cli/commands/chat.js.map +1 -1
  15. package/dist/cli/commands/completions.d.ts.map +1 -1
  16. package/dist/cli/commands/completions.js +12 -1
  17. package/dist/cli/commands/completions.js.map +1 -1
  18. package/dist/cli/commands/connect.d.ts.map +1 -1
  19. package/dist/cli/commands/connect.js +3 -14
  20. package/dist/cli/commands/connect.js.map +1 -1
  21. package/dist/cli/commands/doctor.d.ts.map +1 -1
  22. package/dist/cli/commands/doctor.js +50 -0
  23. package/dist/cli/commands/doctor.js.map +1 -1
  24. package/dist/cli/commands/emergent.d.ts +27 -0
  25. package/dist/cli/commands/emergent.d.ts.map +1 -0
  26. package/dist/cli/commands/emergent.js +289 -0
  27. package/dist/cli/commands/emergent.js.map +1 -0
  28. package/dist/cli/commands/extensions.d.ts.map +1 -1
  29. package/dist/cli/commands/extensions.js +3 -40
  30. package/dist/cli/commands/extensions.js.map +1 -1
  31. package/dist/cli/commands/image.d.ts +17 -0
  32. package/dist/cli/commands/image.d.ts.map +1 -0
  33. package/dist/cli/commands/image.js +109 -0
  34. package/dist/cli/commands/image.js.map +1 -0
  35. package/dist/cli/commands/init.js +1 -1
  36. package/dist/cli/commands/init.js.map +1 -1
  37. package/dist/cli/commands/mission.d.ts +12 -0
  38. package/dist/cli/commands/mission.d.ts.map +1 -0
  39. package/dist/cli/commands/mission.js +93 -0
  40. package/dist/cli/commands/mission.js.map +1 -0
  41. package/dist/cli/commands/skills.d.ts.map +1 -1
  42. package/dist/cli/commands/skills.js +3 -49
  43. package/dist/cli/commands/skills.js.map +1 -1
  44. package/dist/cli/commands/start/http-server.d.ts.map +1 -1
  45. package/dist/cli/commands/start/http-server.js +27 -0
  46. package/dist/cli/commands/start/http-server.js.map +1 -1
  47. package/dist/cli/commands/status.d.ts +4 -5
  48. package/dist/cli/commands/status.d.ts.map +1 -1
  49. package/dist/cli/commands/status.js +15 -15
  50. package/dist/cli/commands/status.js.map +1 -1
  51. package/dist/cli/commands/structured.d.ts +19 -0
  52. package/dist/cli/commands/structured.d.ts.map +1 -0
  53. package/dist/cli/commands/structured.js +126 -0
  54. package/dist/cli/commands/structured.js.map +1 -0
  55. package/dist/cli/commands/workflows.d.ts +6 -0
  56. package/dist/cli/commands/workflows.d.ts.map +1 -1
  57. package/dist/cli/commands/workflows.js +184 -9
  58. package/dist/cli/commands/workflows.js.map +1 -1
  59. package/dist/cli/constants.d.ts +1 -0
  60. package/dist/cli/constants.d.ts.map +1 -1
  61. package/dist/cli/constants.js +1 -0
  62. package/dist/cli/constants.js.map +1 -1
  63. package/dist/cli/help/topics.d.ts +1 -1
  64. package/dist/cli/help/topics.d.ts.map +1 -1
  65. package/dist/cli/help/topics.js +227 -0
  66. package/dist/cli/help/topics.js.map +1 -1
  67. package/dist/cli/helpers/build-agent-scaffold.d.ts.map +1 -1
  68. package/dist/cli/helpers/build-agent-scaffold.js +8 -0
  69. package/dist/cli/helpers/build-agent-scaffold.js.map +1 -1
  70. package/dist/cli/index.d.ts.map +1 -1
  71. package/dist/cli/index.js +51 -5
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/cli/tui/views/extensions-view.d.ts.map +1 -1
  74. package/dist/cli/tui/views/extensions-view.js +4 -6
  75. package/dist/cli/tui/views/extensions-view.js.map +1 -1
  76. package/dist/cli/tui/views/skills-view.d.ts.map +1 -1
  77. package/dist/cli/tui/views/skills-view.js +4 -6
  78. package/dist/cli/tui/views/skills-view.js.map +1 -1
  79. package/dist/cli/utils/search-scoring.d.ts +43 -0
  80. package/dist/cli/utils/search-scoring.d.ts.map +1 -0
  81. package/dist/cli/utils/search-scoring.js +106 -0
  82. package/dist/cli/utils/search-scoring.js.map +1 -0
  83. package/dist/observability/session-text-log.d.ts +73 -0
  84. package/dist/observability/session-text-log.d.ts.map +1 -0
  85. package/dist/observability/session-text-log.js +187 -0
  86. package/dist/observability/session-text-log.js.map +1 -0
  87. package/dist/observability/token-usage.d.ts +23 -0
  88. package/dist/observability/token-usage.d.ts.map +1 -0
  89. package/dist/observability/token-usage.js +24 -0
  90. package/dist/observability/token-usage.js.map +1 -0
  91. package/dist/observability/usage-ledger.d.ts +51 -0
  92. package/dist/observability/usage-ledger.d.ts.map +1 -0
  93. package/dist/observability/usage-ledger.js +233 -0
  94. package/dist/observability/usage-ledger.js.map +1 -0
  95. package/dist/orchestration/index.d.ts +3 -0
  96. package/dist/orchestration/index.d.ts.map +1 -0
  97. package/dist/orchestration/index.js +3 -0
  98. package/dist/orchestration/index.js.map +1 -0
  99. package/dist/orchestration/yaml-compiler.d.ts +112 -0
  100. package/dist/orchestration/yaml-compiler.d.ts.map +1 -0
  101. package/dist/orchestration/yaml-compiler.js +270 -0
  102. package/dist/orchestration/yaml-compiler.js.map +1 -0
  103. package/dist/orchestration/yaml-schema.d.ts +37 -0
  104. package/dist/orchestration/yaml-schema.d.ts.map +1 -0
  105. package/dist/orchestration/yaml-schema.js +62 -0
  106. package/dist/orchestration/yaml-schema.js.map +1 -0
  107. package/dist/public/index.d.ts +6 -1
  108. package/dist/public/index.d.ts.map +1 -1
  109. package/dist/public/index.js +403 -2
  110. package/dist/public/index.js.map +1 -1
  111. package/dist/public/types.d.ts +82 -6
  112. package/dist/public/types.d.ts.map +1 -1
  113. package/dist/runtime/graph-runner.d.ts +45 -0
  114. package/dist/runtime/graph-runner.d.ts.map +1 -0
  115. package/dist/runtime/graph-runner.js +232 -0
  116. package/dist/runtime/graph-runner.js.map +1 -0
  117. package/dist/runtime/index.d.ts +1 -0
  118. package/dist/runtime/index.d.ts.map +1 -1
  119. package/dist/runtime/index.js +1 -0
  120. package/dist/runtime/index.js.map +1 -1
  121. package/dist/runtime/llm-stream-adapter.d.ts +101 -0
  122. package/dist/runtime/llm-stream-adapter.d.ts.map +1 -0
  123. package/dist/runtime/llm-stream-adapter.js +180 -0
  124. package/dist/runtime/llm-stream-adapter.js.map +1 -0
  125. package/dist/runtime/tool-calling.d.ts +81 -0
  126. package/dist/runtime/tool-calling.d.ts.map +1 -1
  127. package/dist/runtime/tool-calling.js +1040 -497
  128. package/dist/runtime/tool-calling.js.map +1 -1
  129. package/dist/runtime/tool-helpers.d.ts +42 -0
  130. package/dist/runtime/tool-helpers.d.ts.map +1 -1
  131. package/dist/runtime/tool-helpers.js +166 -0
  132. package/dist/runtime/tool-helpers.js.map +1 -1
  133. package/dist/security/WunderlandSecurityPipeline.d.ts.map +1 -1
  134. package/dist/security/WunderlandSecurityPipeline.js +5 -0
  135. package/dist/security/WunderlandSecurityPipeline.js.map +1 -1
  136. package/dist/voice/index.d.ts +6 -0
  137. package/dist/voice/index.d.ts.map +1 -1
  138. package/dist/voice/index.js +6 -0
  139. package/dist/voice/index.js.map +1 -1
  140. package/dist/voice/streaming-pipeline.d.ts +115 -0
  141. package/dist/voice/streaming-pipeline.d.ts.map +1 -0
  142. package/dist/voice/streaming-pipeline.js +162 -0
  143. package/dist/voice/streaming-pipeline.js.map +1 -0
  144. package/dist/voice/telephony-webhook-server.d.ts +79 -0
  145. package/dist/voice/telephony-webhook-server.d.ts.map +1 -0
  146. package/dist/voice/telephony-webhook-server.js +157 -0
  147. package/dist/voice/telephony-webhook-server.js.map +1 -0
  148. package/dist/voice/ws-server.d.ts +73 -0
  149. package/dist/voice/ws-server.d.ts.map +1 -0
  150. package/dist/voice/ws-server.js +186 -0
  151. package/dist/voice/ws-server.js.map +1 -0
  152. package/dist/workflows/index.d.ts +9 -2
  153. package/dist/workflows/index.d.ts.map +1 -1
  154. package/dist/workflows/index.js +9 -2
  155. package/dist/workflows/index.js.map +1 -1
  156. package/package.json +27 -8
  157. package/presets/missions/deep-research.mission.yaml +15 -0
  158. package/presets/missions/report-writer.mission.yaml +14 -0
  159. package/presets/workflows/content-generation.workflow.yaml +21 -0
  160. package/presets/workflows/data-extraction.workflow.yaml +20 -0
  161. package/presets/workflows/evaluation.workflow.yaml +21 -0
  162. package/presets/workflows/research-pipeline.workflow.yaml +19 -0
package/README.md CHANGED
@@ -76,7 +76,7 @@
76
76
  - **Tool registry** -- Loads curated AgentOS tools via `@framers/agentos-extensions-registry`
77
77
  - **Memory hooks** -- Optional `memory_read` tool with pluggable storage (SQL, vector, graph)
78
78
  - **Immutability** -- Seal agent configuration after setup; rotate operational secrets without changing the sealed spec
79
- - **Streamlined library API** -- `createWunderland()` + sessions from the root import; advanced modules under `wunderland/advanced/*`
79
+ - **Streamlined library API** -- `createWunderland()` + sessions from the root import, plus `app.runGraph(...)` / `app.streamGraph(...)` for orchestrated execution
80
80
  - **RAG memory** -- Multimodal retrieval-augmented generation with vector, graph, and hybrid search
81
81
  - **Multi-agent collectives** -- Agency registry, communication bus, and shared memory
82
82
  - **Knowledge graph** -- Entity extraction, semantic search, and graph traversal
@@ -100,7 +100,7 @@ wunderland/
100
100
  browser/ BrowserClient, BrowserSession, BrowserInteractions
101
101
  scheduling/ CronScheduler (one-shot, interval, cron expression)
102
102
  agency/ AgencyRegistry, AgentCommunicationBus, AgencyMemoryManager
103
- workflows/ WorkflowEngine, InMemoryWorkflowStore
103
+ workflows/ AgentGraph, workflow(), mission(), WorkflowEngine, graph execution bridge
104
104
  planning/ PlanningEngine, task decomposition, autonomous loops
105
105
  evaluation/ Evaluator, LLMJudge, criteria presets
106
106
  knowledge/ KnowledgeGraph, entity extraction, semantic search
@@ -133,8 +133,13 @@ const session = app.session();
133
133
  const out = await session.sendText('Hello!');
134
134
 
135
135
  console.log(out.text);
136
+ console.log(await session.usage());
136
137
  ```
137
138
 
139
+ Usage and cost totals are persisted in the shared home ledger at `~/.framers/usage-ledger.jsonl` by default, so `wunderland status`, `app.usage()`, and `session.usage()` can all inspect cumulative model usage across separate runs. If you want a different shared file, set `AGENTOS_USAGE_LEDGER_PATH` or `WUNDERLAND_USAGE_LEDGER_PATH`. If you want Wunderland-only isolation, pass an explicit config-dir override.
140
+
141
+ For config-backed agent runs, Wunderland also writes dated plain-text session logs under `./logs/YYYY-MM-DD/*.log` by default. Disable that with `observability.textLogs.enabled=false`, or move it with `observability.textLogs.directory`.
142
+
138
143
  ### Why `createWunderland()` instead of AgentOS `agent()`
139
144
 
140
145
  Wunderland intentionally keeps `createWunderland()` as its public library entrypoint.
@@ -144,6 +149,51 @@ Wunderland intentionally keeps `createWunderland()` as its public library entryp
144
149
 
145
150
  That means Wunderland should document the AgentOS high-level API, but it should not replace its own runtime with `agent()` until that helper covers the same operational surface.
146
151
 
152
+ ### Orchestrated execution with `wunderland/workflows`
153
+
154
+ Use the AgentOS orchestration builders for authoring, then execute the compiled graph through Wunderland so you keep its tools, approvals, extension loading, and runtime policies.
155
+
156
+ ```ts
157
+ import { createWunderland } from 'wunderland';
158
+ import { workflow } from 'wunderland/workflows';
159
+
160
+ const app = await createWunderland({
161
+ llm: { providerId: 'openai' },
162
+ tools: 'curated',
163
+ });
164
+
165
+ const compiled = workflow('research-pipeline')
166
+ .input({
167
+ type: 'object',
168
+ required: ['topic'],
169
+ properties: { topic: { type: 'string' } },
170
+ })
171
+ .returns({
172
+ type: 'object',
173
+ properties: { finalSummary: { type: 'string' } },
174
+ })
175
+ .step('research', {
176
+ gmi: {
177
+ instructions: 'Research the topic and return JSON under scratch.research.',
178
+ },
179
+ })
180
+ .then('judge', {
181
+ gmi: {
182
+ instructions: 'Score the research and return JSON under scratch.judge.',
183
+ },
184
+ })
185
+ .compile();
186
+
187
+ const result = await app.runGraph(compiled, { topic: 'graph-based agent runtimes' });
188
+ console.log(result);
189
+ ```
190
+
191
+ Use:
192
+
193
+ - `workflow()` for deterministic DAGs and explicit step ordering
194
+ - `AgentGraph` for loops, routers, and custom control flow
195
+ - `mission()` for planner-driven orchestration that compiles to the same graph IR
196
+
147
197
  ### With skills + extensions + discovery
148
198
 
149
199
  ```ts
@@ -275,6 +325,7 @@ wunderland
275
325
  # Health check + operator help
276
326
  wunderland doctor
277
327
  wunderland help getting-started
328
+ wunderland help workflows
278
329
  wunderland help tui
279
330
 
280
331
  # Configure shared provider defaults (image gen, TTS, STT, web search)
@@ -300,12 +351,93 @@ wunderland doctor
300
351
  - `examples/library-chat-basic.mjs` — minimal in-process chat
301
352
  - `examples/library-chat-with-tools-and-approvals.mjs` — curated tools + safe approvals
302
353
  - `examples/library-chat-image-generation.mjs` — image generation extension with provider defaults
354
+ - `examples/workflow-orchestration.mjs` — deterministic `workflow()` with an LLM-as-judge step
355
+ - `examples/agent-graph-orchestration.mjs` — explicit `AgentGraph` routing with a judge loop
356
+ - `examples/mission-orchestration.mjs` — planner-driven `mission()` plus `explain()` and execution
303
357
  - `examples/chat-runtime.mjs` — lower-level runtime helper
358
+ - `examples/workflow-research.yaml` — runnable research-pipeline workflow (search → evaluate → summarize)
359
+ - `examples/mission-deep-research.yaml` — intent-driven deep research mission definition
360
+ - `examples/graph-research-loop.ts` — AgentGraph with conditional retry cycle
361
+ - `examples/graph-judge-pipeline.ts` — LLM-as-judge evaluation pipeline using judgeNode
362
+ - `examples/session-streaming.ts` — streaming session events with `session.stream()`
363
+ - `examples/checkpoint-resume.ts` — checkpoint and resume across session turns
304
364
 
305
365
  See `docs/CLI_TUI_GUIDE.md` for the first-run checklist, TUI keybindings, help topics, troubleshooting pointers, and provider-default setup.
306
366
 
307
367
  ---
308
368
 
369
+ ## Graph-Based Orchestration
370
+
371
+ Wunderland supports three levels of workflow orchestration powered by the AgentOS unified orchestration layer:
372
+
373
+ ### YAML Workflows (Deterministic DAGs)
374
+
375
+ ```yaml
376
+ # research-pipeline.workflow.yaml
377
+ name: research-pipeline
378
+ steps:
379
+ - id: search
380
+ tool: web_search
381
+ - id: evaluate
382
+ gmi: { instructions: "Evaluate results" }
383
+ - id: summarize
384
+ gmi: { instructions: "Write summary" }
385
+ ```
386
+
387
+ ```bash
388
+ # Execute a workflow YAML file
389
+ wunderland workflows run research-pipeline.workflow.yaml
390
+
391
+ # Print the compiled node/edge graph
392
+ wunderland workflows explain research-pipeline.workflow.yaml
393
+ ```
394
+
395
+ ### YAML Missions (Intent-Driven)
396
+
397
+ ```bash
398
+ # Execute a mission YAML file
399
+ wunderland mission run deep-research.mission.yaml
400
+
401
+ # Show the planner-derived mission graph
402
+ wunderland mission explain deep-research.mission.yaml
403
+ ```
404
+
405
+ ### Library API
406
+
407
+ ```typescript
408
+ import { createWunderland } from 'wunderland';
409
+
410
+ const app = await createWunderland({ llm: { providerId: 'openai', model: 'gpt-4o' } });
411
+
412
+ // Load and compile a workflow
413
+ const flow = await app.loadWorkflow('./research-pipeline.workflow.yaml');
414
+
415
+ // Stream session events
416
+ const session = app.session();
417
+ for await (const event of session.stream('Hello')) {
418
+ if (event.type === 'text_delta') process.stdout.write(event.content);
419
+ }
420
+
421
+ // Checkpoint and resume
422
+ const cpId = await session.checkpoint();
423
+ await session.resume(cpId);
424
+ ```
425
+
426
+ ### Prebuilt Templates
427
+
428
+ | Template | Type | Description |
429
+ |----------|------|-------------|
430
+ | `research-pipeline` | workflow | Search → evaluate → summarize |
431
+ | `content-generation` | workflow | Draft → judge → revise |
432
+ | `data-extraction` | workflow | Fetch → extract → validate |
433
+ | `evaluation` | workflow | Multi-judge scoring |
434
+ | `deep-research` | mission | Planner-driven research |
435
+ | `report-writer` | mission | Structured report generation |
436
+
437
+ See `presets/workflows/` and `presets/missions/` for all templates.
438
+
439
+ ---
440
+
309
441
  ## What is Wunderland?
310
442
 
311
443
  **Wunderland** is a free, open-source npm package for deploying autonomous AI agents. It's a security-hardened fork of [OpenClaw](https://github.com/openclaw) built on [AgentOS](https://agentos.sh), adding:
@@ -7,7 +7,15 @@
7
7
  * (new ergonomic API) unless you specifically need low-level modules.
8
8
  */
9
9
  export * from '../core/index.js';
10
- export * from '../security/index.js';
10
+ export * from '../security/types.js';
11
+ export { PreLLMClassifier, type PreLLMClassifierConfig, } from '../security/PreLLMClassifier.js';
12
+ export { DualLLMAuditor } from '../security/DualLLMAuditor.js';
13
+ export { SignedOutputVerifier, IntentChainTracker, } from '../security/SignedOutputVerifier.js';
14
+ export { type SecurityTierName, type SecurityTierConfig, type EnhancedSecurityTierConfig, SECURITY_TIERS, getSecurityTier, createPipelineFromTier, isValidSecurityTier, } from '../security/SecurityTiers.js';
15
+ export { SafeGuardrails, type SafeGuardrailsConfig } from '../security/SafeGuardrails.js';
16
+ export { AuditLogger, type AuditLoggerConfig, type ViolationFilter, type ViolationStats, } from '../security/AuditLogger.js';
17
+ export { type FolderAccessRule, type FolderPermissionConfig, type FolderPermissionResult, type ValidationResult as FolderValidationResult, checkFolderAccess, createDefaultFolderConfig, validateFolderConfig, isContainedPath, validatePluginPath, } from '../security/FolderPermissions.js';
18
+ export { ToolLoopDetector, type ToolLoopDetectorConfig, type LoopDetectionResult, } from '../security/ToolLoopDetector.js';
11
19
  export * from '../inference/index.js';
12
20
  export * from '../authorization/index.js';
13
21
  export * from '../browser/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/advanced/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAGvI,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC1G,OAAO,EACL,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EACxF,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACjI,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACjI,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAG/F,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,eAAO,MAAM,OAAO,QAAc,CAAC;AACnC,eAAO,MAAM,YAAY,QAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/advanced/index.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,15 @@ import { createRequire } from 'node:module';
10
10
  // Core exports
11
11
  export * from '../core/index.js';
12
12
  // Security exports
13
- export * from '../security/index.js';
13
+ export * from '../security/types.js';
14
+ export { PreLLMClassifier, } from '../security/PreLLMClassifier.js';
15
+ export { DualLLMAuditor } from '../security/DualLLMAuditor.js';
16
+ export { SignedOutputVerifier, IntentChainTracker, } from '../security/SignedOutputVerifier.js';
17
+ export { SECURITY_TIERS, getSecurityTier, createPipelineFromTier, isValidSecurityTier, } from '../security/SecurityTiers.js';
18
+ export { SafeGuardrails } from '../security/SafeGuardrails.js';
19
+ export { AuditLogger, } from '../security/AuditLogger.js';
20
+ export { checkFolderAccess, createDefaultFolderConfig, validateFolderConfig, isContainedPath, validatePluginPath, } from '../security/FolderPermissions.js';
21
+ export { ToolLoopDetector, } from '../security/ToolLoopDetector.js';
14
22
  // Inference exports
15
23
  export * from '../inference/index.js';
16
24
  // Authorization exports
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/advanced/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAe;AACf,cAAc,kBAAkB,CAAC;AAEjC,mBAAmB;AACnB,cAAc,sBAAsB,CAAC;AAErC,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,wBAAwB;AACxB,cAAc,2BAA2B,CAAC;AAE1C,oDAAoD;AACpD,cAAc,qBAAqB,CAAC;AAEpC,mDAAmD;AACnD,cAAc,qBAAqB,CAAC;AAEpC,wCAAwC;AACxC,cAAc,oBAAoB,CAAC;AAEnC,+CAA+C;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,2CAA2C;AAC3C,cAAc,oBAAoB,CAAC;AAEnC,2BAA2B;AAC3B,cAAc,uBAAuB,CAAC;AAEtC,wBAAwB;AACxB,cAAc,yBAAyB,CAAC;AAExC,6BAA6B;AAC7B,cAAc,wBAAwB,CAAC;AAEvC,0BAA0B;AAC1B,cAAc,uBAAuB,CAAC;AAEtC,0BAA0B;AAC1B,cAAc,sBAAsB,CAAC;AAErC,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,mCAAmC;AACnC,cAAc,wBAAwB,CAAC;AAEvC,sBAAsB;AACtB,cAAc,yBAAyB,CAAC;AAExC,kDAAkD;AAClD,cAAc,uBAAuB,CAAC;AAEtC,sCAAsC;AACtC,cAAc,oBAAoB,CAAC;AAEnC,mEAAmE;AACnE,cAAc,kBAAkB,CAAC;AAEjC,8DAA8D;AAC9D,cAAc,wBAAwB,CAAC;AAEvC,qBAAqB;AACrB,OAAO,EAAE,oBAAoB,EAA4D,MAAM,uCAAuC,CAAC;AAEvI,2EAA2E;AAC3E,OAAO,EAAE,cAAc,EAAgD,MAAM,4BAA4B,CAAC;AAC1G,OAAO,EACL,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAC/D,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAiE,MAAM,4BAA4B,CAAC;AACjI,OAAO,EAAE,oBAAoB,EAAiE,MAAM,4BAA4B,CAAC;AACjI,OAAO,EAAE,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAC/E,mEAAmE;AACnE,OAAO,EAAE,SAAS,EAAiD,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAqD,MAAM,4BAA4B,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAiD,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAA+C,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAmD,MAAM,8BAA8B,CAAC;AAE/F,6DAA6D;AAC7D,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,GAEf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAE5F,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,iCAAiC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,mDAAmD;AACnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAsC,CAAC;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/advanced/index.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  import { type Server } from 'node:http';
15
15
  import { type LLMProviderConfig } from '../runtime/tool-calling.js';
16
16
  import { type NormalizedRuntimePolicy } from '../runtime/policy.js';
17
+ import type { TokenUsageSummary } from '../core/TokenUsageTracker.js';
17
18
  import type { WunderlandAdaptiveExecutionConfig, WunderlandAgentConfig, WunderlandProviderId, WunderlandTaskOutcomeTelemetryConfig, WunderlandToolFailureMode, WunderlandWorkspace } from './types.js';
18
19
  type LoggerLike = {
19
20
  debug?: (msg: string, meta?: unknown) => void;
@@ -42,6 +43,9 @@ export type WunderlandServerHandle = {
42
43
  autoApproveToolCalls: boolean;
43
44
  turnApprovalMode: 'off' | 'after-each-turn' | 'after-each-round';
44
45
  openaiFallbackEnabled: boolean;
46
+ usage: (opts?: {
47
+ sessionId?: string;
48
+ }) => Promise<TokenUsageSummary>;
45
49
  close: () => Promise<void>;
46
50
  };
47
51
  export declare function createWunderlandServer(opts?: {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,8 @@ import { createConfiguredRagTools } from '../rag/runtime-tools.js';
41
41
  import { maybeProxyAgentosRagRequest } from '../rag/http-proxy.js';
42
42
  import { mergeExtensionOverrides } from '../cli/extensions/settings.js';
43
43
  import { createSpeechExtensionEnvOverrides, getDefaultVoiceExtensions, } from '../voice/speech-catalog.js';
44
+ import { getRecordedWunderlandSessionUsage, getRecordedWunderlandTokenUsage } from '../observability/token-usage.js';
45
+ import { resolveWunderlandTextLogConfig, WunderlandSessionTextLogger } from '../observability/session-text-log.js';
44
46
  // HTTP helpers extracted to server-helpers.ts
45
47
  export { consoleLogger, toToolInstance, readBody, sendJson, getHeaderString, extractHitlSecret, isHitlAuthorized, inferTurnApprovalMode, finiteNumber, HITL_PAGE_HTML, PAIRING_PAGE_HTML, } from "./server-helpers.js";
46
48
  import { consoleLogger, toToolInstance, readBody, sendJson, isHitlAuthorized, inferTurnApprovalMode, finiteNumber, HITL_PAGE_HTML, PAIRING_PAGE_HTML, } from "./server-helpers.js";
@@ -150,6 +152,13 @@ export async function createWunderlandServer(opts) {
150
152
  const lazyTools = opts?.lazyTools === true || cfg?.lazyTools === true;
151
153
  const workspaceBaseDir = opts?.workspace?.baseDir ?? resolveAgentWorkspaceBaseDir();
152
154
  const workspaceAgentId = sanitizeAgentWorkspaceId(opts?.workspace?.agentId ?? seedId);
155
+ const sessionTextLogger = new WunderlandSessionTextLogger(resolveWunderlandTextLogConfig({
156
+ agentConfig: cfg,
157
+ workingDirectory,
158
+ workspace: { agentId: workspaceAgentId, baseDir: workspaceBaseDir },
159
+ defaultAgentId: workspaceAgentId,
160
+ configBacked: true,
161
+ }), logger);
153
162
  const ollamaBaseUrl = (() => {
154
163
  if (opts?.llm?.baseUrl)
155
164
  return opts.llm.baseUrl;
@@ -737,6 +746,7 @@ export async function createWunderlandServer(opts) {
737
746
  if (canUseLLM) {
738
747
  const toolContext = {
739
748
  gmiId: `wunderland-channel-${sessionKey}`,
749
+ sessionId: sessionKey,
740
750
  personaId: activePersonaId,
741
751
  userContext: {
742
752
  userId: senderId,
@@ -744,6 +754,7 @@ export async function createWunderlandServer(opts) {
744
754
  conversationId,
745
755
  ...(tenantId ? { organizationId: tenantId } : null),
746
756
  },
757
+ ...(opts?.configDirOverride ? { wunderlandConfigDir: opts.configDirOverride } : null),
747
758
  agentWorkspace: { agentId: workspaceAgentId, baseDir: workspaceBaseDir },
748
759
  permissionSet: policy.permissionSet,
749
760
  securityTier: policy.securityTier,
@@ -1130,6 +1141,7 @@ export async function createWunderlandServer(opts) {
1130
1141
  let turnFailed = false;
1131
1142
  let fallbackTriggered = false;
1132
1143
  let toolCallCount = 0;
1144
+ let turnError;
1133
1145
  const sessionId = typeof parsed.sessionId === 'string' && parsed.sessionId.trim() ? parsed.sessionId.trim().slice(0, 128) : 'default';
1134
1146
  const requestedPersonaId = extractRequestedPersonaId(parsed);
1135
1147
  let requestActivePersonaId = activePersonaId;
@@ -1194,11 +1206,13 @@ export async function createWunderlandServer(opts) {
1194
1206
  if (canUseLLM) {
1195
1207
  const toolContext = {
1196
1208
  gmiId: `wunderland-server-${internalSessionId}`,
1209
+ sessionId,
1197
1210
  personaId: requestActivePersonaId,
1198
1211
  userContext: {
1199
1212
  userId: sessionId,
1200
1213
  ...(tenantId ? { organizationId: tenantId } : null),
1201
1214
  },
1215
+ ...(opts?.configDirOverride ? { wunderlandConfigDir: opts.configDirOverride } : null),
1202
1216
  agentWorkspace: { agentId: workspaceAgentId, baseDir: workspaceBaseDir },
1203
1217
  permissionSet: policy.permissionSet,
1204
1218
  securityTier: policy.securityTier,
@@ -1305,6 +1319,7 @@ export async function createWunderlandServer(opts) {
1305
1319
  }
1306
1320
  catch (error) {
1307
1321
  turnFailed = true;
1322
+ turnError = error;
1308
1323
  throw error;
1309
1324
  }
1310
1325
  finally {
@@ -1327,6 +1342,23 @@ export async function createWunderlandServer(opts) {
1327
1342
  error: error instanceof Error ? error.message : String(error),
1328
1343
  });
1329
1344
  }
1345
+ await sessionTextLogger.logTurn({
1346
+ meta: {
1347
+ agentId: workspaceAgentId,
1348
+ seedId,
1349
+ displayName,
1350
+ providerId: String(providerId),
1351
+ model,
1352
+ personaId: requestActivePersonaId,
1353
+ },
1354
+ sessionId,
1355
+ userText: message,
1356
+ reply,
1357
+ error: turnError,
1358
+ toolCallCount,
1359
+ durationMs: 0,
1360
+ fallbackTriggered,
1361
+ });
1330
1362
  }
1331
1363
  sendJson(res, 200, { reply, personaId: requestActivePersonaId });
1332
1364
  return;
@@ -1438,6 +1470,12 @@ export async function createWunderlandServer(opts) {
1438
1470
  channelCount: adapterByPlatform.size,
1439
1471
  pairingEnabled,
1440
1472
  });
1473
+ const usage = async (usageOpts) => {
1474
+ if (usageOpts?.sessionId) {
1475
+ return getRecordedWunderlandSessionUsage(usageOpts.sessionId, opts?.configDirOverride);
1476
+ }
1477
+ return getRecordedWunderlandTokenUsage(opts?.configDirOverride);
1478
+ };
1441
1479
  return {
1442
1480
  server,
1443
1481
  url,
@@ -1458,6 +1496,7 @@ export async function createWunderlandServer(opts) {
1458
1496
  autoApproveToolCalls,
1459
1497
  turnApprovalMode,
1460
1498
  openaiFallbackEnabled,
1499
+ usage,
1461
1500
  close,
1462
1501
  };
1463
1502
  }