gauss-ai 4.0.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/CHANGELOG.md +489 -0
- package/LICENSE +21 -0
- package/README.md +269 -0
- package/dist/a2a/index.cjs +7 -0
- package/dist/a2a/index.cjs.map +1 -0
- package/dist/a2a/index.d.cts +30 -0
- package/dist/a2a/index.d.ts +30 -0
- package/dist/a2a/index.js +7 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/agent-UIQDSYCE.js +16 -0
- package/dist/agent-UIQDSYCE.js.map +1 -0
- package/dist/agent-builder-8W3mBR-N.d.ts +1075 -0
- package/dist/agent-builder-GEMYdb1p.d.cts +1075 -0
- package/dist/agent-graph-AMQYAWNF.js +1422 -0
- package/dist/agent-graph-AMQYAWNF.js.map +1 -0
- package/dist/ai-sdk-mcp.adapter-SEN6KHNU.js +124 -0
- package/dist/ai-sdk-mcp.adapter-SEN6KHNU.js.map +1 -0
- package/dist/browser/index.js +10 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/bun-runtime.adapter-MQDAJLQM.js +8 -0
- package/dist/bun-runtime.adapter-MQDAJLQM.js.map +1 -0
- package/dist/bun-runtime.adapter-XKOUXVAK.cjs +8 -0
- package/dist/bun-runtime.adapter-XKOUXVAK.cjs.map +1 -0
- package/dist/chat-A3XMRPJL.js +129 -0
- package/dist/chat-A3XMRPJL.js.map +1 -0
- package/dist/chunk-2ZRU47NC.js +91 -0
- package/dist/chunk-2ZRU47NC.js.map +1 -0
- package/dist/chunk-3LD3JTH4.cjs +18 -0
- package/dist/chunk-3LD3JTH4.cjs.map +1 -0
- package/dist/chunk-5FE5TG2W.cjs +16 -0
- package/dist/chunk-5FE5TG2W.cjs.map +1 -0
- package/dist/chunk-6XF673YC.cjs +436 -0
- package/dist/chunk-6XF673YC.cjs.map +1 -0
- package/dist/chunk-7CKWZJNS.js +230 -0
- package/dist/chunk-7CKWZJNS.js.map +1 -0
- package/dist/chunk-BI2G665F.js +4588 -0
- package/dist/chunk-BI2G665F.js.map +1 -0
- package/dist/chunk-C5NLWJS2.js +139 -0
- package/dist/chunk-C5NLWJS2.js.map +1 -0
- package/dist/chunk-CJZ66SU3.cjs +4321 -0
- package/dist/chunk-CJZ66SU3.cjs.map +1 -0
- package/dist/chunk-DAMT2CXW.cjs +91 -0
- package/dist/chunk-DAMT2CXW.cjs.map +1 -0
- package/dist/chunk-E7WG3MO5.js +18 -0
- package/dist/chunk-E7WG3MO5.js.map +1 -0
- package/dist/chunk-EFDM6R4J.js +99 -0
- package/dist/chunk-EFDM6R4J.js.map +1 -0
- package/dist/chunk-F7WIPPEO.js +256 -0
- package/dist/chunk-F7WIPPEO.js.map +1 -0
- package/dist/chunk-FAYDE67N.js +6927 -0
- package/dist/chunk-FAYDE67N.js.map +1 -0
- package/dist/chunk-GAE2KKCM.js +21 -0
- package/dist/chunk-GAE2KKCM.js.map +1 -0
- package/dist/chunk-INLNGRXM.cjs +130 -0
- package/dist/chunk-INLNGRXM.cjs.map +1 -0
- package/dist/chunk-JKXKXB5O.js +130 -0
- package/dist/chunk-JKXKXB5O.js.map +1 -0
- package/dist/chunk-K6SAETGP.js +375 -0
- package/dist/chunk-K6SAETGP.js.map +1 -0
- package/dist/chunk-KEASLAYR.js +157 -0
- package/dist/chunk-KEASLAYR.js.map +1 -0
- package/dist/chunk-KKJVNM6O.js +436 -0
- package/dist/chunk-KKJVNM6O.js.map +1 -0
- package/dist/chunk-KYIMVRIM.js +16 -0
- package/dist/chunk-KYIMVRIM.js.map +1 -0
- package/dist/chunk-MB7NXIZD.js +4321 -0
- package/dist/chunk-MB7NXIZD.js.map +1 -0
- package/dist/chunk-MHHDXPGE.js +209 -0
- package/dist/chunk-MHHDXPGE.js.map +1 -0
- package/dist/chunk-NE6JJA5W.js +401 -0
- package/dist/chunk-NE6JJA5W.js.map +1 -0
- package/dist/chunk-PF46XZBF.cjs +6927 -0
- package/dist/chunk-PF46XZBF.cjs.map +1 -0
- package/dist/chunk-PSJIAGDE.cjs +375 -0
- package/dist/chunk-PSJIAGDE.cjs.map +1 -0
- package/dist/chunk-PWOQDXNQ.js +16 -0
- package/dist/chunk-PWOQDXNQ.js.map +1 -0
- package/dist/chunk-QYOMQBBZ.cjs +230 -0
- package/dist/chunk-QYOMQBBZ.cjs.map +1 -0
- package/dist/chunk-UDFXLC4J.cjs +16 -0
- package/dist/chunk-UDFXLC4J.cjs.map +1 -0
- package/dist/chunk-UO4NGXRT.cjs +259 -0
- package/dist/chunk-UO4NGXRT.cjs.map +1 -0
- package/dist/chunk-UPFDFLEW.js +40 -0
- package/dist/chunk-UPFDFLEW.js.map +1 -0
- package/dist/chunk-V55JSQS7.cjs +16 -0
- package/dist/chunk-V55JSQS7.cjs.map +1 -0
- package/dist/chunk-VJADHXZL.cjs +16 -0
- package/dist/chunk-VJADHXZL.cjs.map +1 -0
- package/dist/chunk-VRWD7LCI.js +59 -0
- package/dist/chunk-VRWD7LCI.js.map +1 -0
- package/dist/chunk-WKKQ443C.js +487 -0
- package/dist/chunk-WKKQ443C.js.map +1 -0
- package/dist/chunk-X2GHUHAF.js +436 -0
- package/dist/chunk-X2GHUHAF.js.map +1 -0
- package/dist/chunk-XLGW3XNI.cjs +256 -0
- package/dist/chunk-XLGW3XNI.cjs.map +1 -0
- package/dist/chunk-ZFJKX4DP.js +16 -0
- package/dist/chunk-ZFJKX4DP.js.map +1 -0
- package/dist/chunk-ZM2OEWM2.js +259 -0
- package/dist/chunk-ZM2OEWM2.js.map +1 -0
- package/dist/chunk-ZNAIP2XV.js +16 -0
- package/dist/chunk-ZNAIP2XV.js.map +1 -0
- package/dist/chunk-ZYFAZYSL.js +42 -0
- package/dist/chunk-ZYFAZYSL.js.map +1 -0
- package/dist/cli/index.js +421 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config-4MHT6TQW.js +153 -0
- package/dist/config-4MHT6TQW.js.map +1 -0
- package/dist/config-REERQFK4.cjs +153 -0
- package/dist/config-REERQFK4.cjs.map +1 -0
- package/dist/cost-tracker-JLOU7IZJ.js +7 -0
- package/dist/cost-tracker-JLOU7IZJ.js.map +1 -0
- package/dist/demo-C52GMSYH.js +188 -0
- package/dist/demo-C52GMSYH.js.map +1 -0
- package/dist/deno/index.js +306 -0
- package/dist/deno/index.js.map +1 -0
- package/dist/deno-runtime.adapter-F744HY7K.js +8 -0
- package/dist/deno-runtime.adapter-F744HY7K.js.map +1 -0
- package/dist/deno-runtime.adapter-RFEVNSCV.cjs +8 -0
- package/dist/deno-runtime.adapter-RFEVNSCV.cjs.map +1 -0
- package/dist/dev-D7DDVDA4.js +218 -0
- package/dist/dev-D7DDVDA4.js.map +1 -0
- package/dist/edge/index.js +10 -0
- package/dist/edge/index.js.map +1 -0
- package/dist/edge-runtime.adapter-UQCW2F7X.js +8 -0
- package/dist/edge-runtime.adapter-UQCW2F7X.js.map +1 -0
- package/dist/edge-runtime.adapter-YED6F3AY.cjs +8 -0
- package/dist/edge-runtime.adapter-YED6F3AY.cjs.map +1 -0
- package/dist/graph-MGFAQZ5W.js +50 -0
- package/dist/graph-MGFAQZ5W.js.map +1 -0
- package/dist/graph-visualization-HBSVQXJK.js +9 -0
- package/dist/graph-visualization-HBSVQXJK.js.map +1 -0
- package/dist/index-BRgqNnh3.d.cts +982 -0
- package/dist/index-CZxpYUxZ.d.ts +982 -0
- package/dist/index.cjs +14789 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +10275 -0
- package/dist/index.d.ts +10275 -0
- package/dist/index.js +14789 -0
- package/dist/index.js.map +1 -0
- package/dist/init-CFWXTQ35.js +133 -0
- package/dist/init-CFWXTQ35.js.map +1 -0
- package/dist/llm-VWO4MC7J.cjs +17 -0
- package/dist/llm-VWO4MC7J.cjs.map +1 -0
- package/dist/llm-XLXVSPBI.js +17 -0
- package/dist/llm-XLXVSPBI.js.map +1 -0
- package/dist/logging-WRAK5ZXT.js +33 -0
- package/dist/logging-WRAK5ZXT.js.map +1 -0
- package/dist/metrics-FAHZVVD4.js +47 -0
- package/dist/metrics-FAHZVVD4.js.map +1 -0
- package/dist/node/index.cjs +280 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +51 -0
- package/dist/node/index.d.ts +51 -0
- package/dist/node/index.js +280 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node-runtime.adapter-5L7PJ6W2.js +8 -0
- package/dist/node-runtime.adapter-5L7PJ6W2.js.map +1 -0
- package/dist/node-runtime.adapter-CCRZVGHB.cjs +8 -0
- package/dist/node-runtime.adapter-CCRZVGHB.cjs.map +1 -0
- package/dist/persist-usage-WTBTCWEF.js +7 -0
- package/dist/persist-usage-WTBTCWEF.js.map +1 -0
- package/dist/plugin-RCPBWUUA.js +207 -0
- package/dist/plugin-RCPBWUUA.js.map +1 -0
- package/dist/plugins/index.cjs +75 -0
- package/dist/plugins/index.cjs.map +1 -0
- package/dist/plugins/index.d.cts +8 -0
- package/dist/plugins/index.d.ts +8 -0
- package/dist/plugins/index.js +75 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins-L4ING3CX.js +4625 -0
- package/dist/plugins-L4ING3CX.js.map +1 -0
- package/dist/providers/index.cjs +189 -0
- package/dist/providers/index.cjs.map +1 -0
- package/dist/providers/index.d.cts +168 -0
- package/dist/providers/index.d.ts +168 -0
- package/dist/providers/index.js +189 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers-3RNQ5CKZ.js +59 -0
- package/dist/providers-3RNQ5CKZ.js.map +1 -0
- package/dist/providers-66GPXUGQ.cjs +59 -0
- package/dist/providers-66GPXUGQ.cjs.map +1 -0
- package/dist/repl-K6QN4I2S.js +678 -0
- package/dist/repl-K6QN4I2S.js.map +1 -0
- package/dist/rest/index.cjs +17 -0
- package/dist/rest/index.cjs.map +1 -0
- package/dist/rest/index.d.cts +102 -0
- package/dist/rest/index.d.ts +102 -0
- package/dist/rest/index.js +17 -0
- package/dist/rest/index.js.map +1 -0
- package/dist/runtime-deno.js +15 -0
- package/dist/runtime-deno.js.map +1 -0
- package/dist/runtime-edge.js +15 -0
- package/dist/runtime-edge.js.map +1 -0
- package/dist/runtime-node.js +15 -0
- package/dist/runtime-node.js.map +1 -0
- package/dist/scraping/index.cjs +11 -0
- package/dist/scraping/index.cjs.map +1 -0
- package/dist/scraping/index.d.cts +17 -0
- package/dist/scraping/index.d.ts +17 -0
- package/dist/scraping/index.js +11 -0
- package/dist/scraping/index.js.map +1 -0
- package/dist/semantic-scraping.port-CZWUea88.d.cts +54 -0
- package/dist/semantic-scraping.port-CZWUea88.d.ts +54 -0
- package/dist/server/index.js +166 -0
- package/dist/server/index.js.map +1 -0
- package/dist/testing/index.cjs +25 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.d.cts +63 -0
- package/dist/testing/index.d.ts +63 -0
- package/dist/testing/index.js +25 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/token-counter.port-CRgxZZGe.d.ts +334 -0
- package/dist/token-counter.port-D7BHMCRR.d.cts +334 -0
- package/dist/tools-BZM33OBZ.js +10 -0
- package/dist/tools-BZM33OBZ.js.map +1 -0
- package/dist/tracing-XA3TEWP4.js +48 -0
- package/dist/tracing-XA3TEWP4.js.map +1 -0
- package/dist/types-CVsP7gFI.d.cts +235 -0
- package/dist/types-CVsP7gFI.d.ts +235 -0
- package/dist/virtual-fs.adapter-BBLS-3AY.d.ts +26 -0
- package/dist/virtual-fs.adapter-nb0CTYOj.d.cts +26 -0
- package/dist/workflow/index.cjs +9 -0
- package/dist/workflow/index.cjs.map +1 -0
- package/dist/workflow/index.d.cts +62 -0
- package/dist/workflow/index.d.ts +62 -0
- package/dist/workflow/index.js +9 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow.port-BaCttxrw.d.cts +153 -0
- package/dist/workflow.port-BaCttxrw.d.ts +153 -0
- package/package.json +230 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to **Gauss** are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [3.5.0] - 2025-07-19
|
|
9
|
+
|
|
10
|
+
### 🚀 npm Publication & Package Rename
|
|
11
|
+
|
|
12
|
+
- **Package renamed** from `@giulio-leone/gauss` to `@gauss/flow`
|
|
13
|
+
- **Public npm registry** — switched from GitHub Packages to npmjs.com (`"access": "public"`)
|
|
14
|
+
- Added comprehensive `keywords` for discoverability
|
|
15
|
+
- Added `engines` field (`node >= 18`)
|
|
16
|
+
- Added `sideEffects: false` for tree-shaking
|
|
17
|
+
- Added `./plugins` export path
|
|
18
|
+
- Expanded `files` to include `CHANGELOG.md`
|
|
19
|
+
- Added `homepage`, `bugs`, `author` metadata
|
|
20
|
+
- Created MIT LICENSE file
|
|
21
|
+
- Created `.npmignore` for clean publishes
|
|
22
|
+
- Updated README with npm badges and `@gauss/flow` import paths
|
|
23
|
+
|
|
24
|
+
### 📦 Barrel Export Enhancements
|
|
25
|
+
|
|
26
|
+
- Exported `ServerAdapterPort` from `server.port`
|
|
27
|
+
- Exported `SaveQueuePort`, `BundlerPort`, `ContainerPort` (DI) ports
|
|
28
|
+
- Exported `createTripWireMiddleware`, `createPromptCachingMiddleware`, `createToolCallPatchingMiddleware`
|
|
29
|
+
- Exported `DocGenerator` from `docs/doc-generator`
|
|
30
|
+
|
|
31
|
+
## [3.4.0] - 2025-07-19
|
|
32
|
+
|
|
33
|
+
### 🛡️ Trip-Wire & Prompt Caching Middleware
|
|
34
|
+
|
|
35
|
+
- **Trip-wire middleware** — safety guardrails with violation detection
|
|
36
|
+
- **Prompt caching middleware** — reduce redundant LLM calls
|
|
37
|
+
- **Tool call patching middleware** — runtime tool call transformation
|
|
38
|
+
|
|
39
|
+
## [3.3.0] - 2025-07-18
|
|
40
|
+
|
|
41
|
+
### 🔌 DI Container & Bundler Ports
|
|
42
|
+
|
|
43
|
+
- **ContainerPort** — dependency injection with lifetime management (singleton/transient/scoped)
|
|
44
|
+
- **BundlerPort** — agent bundle compilation and analysis
|
|
45
|
+
- **SaveQueuePort** — batched persistence with flush semantics
|
|
46
|
+
- **ServerAdapterPort** — wrap agents as HTTP endpoints
|
|
47
|
+
|
|
48
|
+
## [3.2.0] - 2025-07-18
|
|
49
|
+
|
|
50
|
+
### 📝 Doc Generator & Compiler Enhancements
|
|
51
|
+
|
|
52
|
+
- **DocGenerator** — auto-generate API documentation from source
|
|
53
|
+
- **LLMCompilerEngine** — natural language to workflow compilation
|
|
54
|
+
- **DualWorkflowStorage** — JSON + Markdown dual-format persistence
|
|
55
|
+
- Enhanced compiler schema with triggers, channels, and policies
|
|
56
|
+
|
|
57
|
+
## [3.1.0] - 2025-07-18
|
|
58
|
+
|
|
59
|
+
### 🏗️ Architecture Refinements
|
|
60
|
+
|
|
61
|
+
- Hexagonal architecture ports expanded to 50+ contracts
|
|
62
|
+
- Plugin marketplace with GitHub + npm registry adapters
|
|
63
|
+
- Composite marketplace adapter for multi-source discovery
|
|
64
|
+
- Plugin loader with sandboxed execution
|
|
65
|
+
|
|
66
|
+
## [3.0.0] - 2025-07-18
|
|
67
|
+
|
|
68
|
+
### 🎉 Major Release — Complete Framework Overhaul
|
|
69
|
+
|
|
70
|
+
#### Breaking Changes
|
|
71
|
+
- Package name changed to `@gauss/flow`
|
|
72
|
+
- Minimum Node.js version raised to 18
|
|
73
|
+
- Published to public npm registry (was GitHub Packages)
|
|
74
|
+
|
|
75
|
+
#### Added
|
|
76
|
+
- **Evaluation harness** — semantic search quality gates, benchmarks, stress tests
|
|
77
|
+
- **Scorer pipeline** — composable evaluation with exact match, contains, LLM judge
|
|
78
|
+
- **Trajectory recording** — step-by-step agent execution capture and replay
|
|
79
|
+
- **Advanced middleware** — trip-wire, prompt caching, tool call patching, observational memory, result eviction, summarization
|
|
80
|
+
- **Sandbox adapters** — E2B cloud sandbox + local shell execution
|
|
81
|
+
- **Plugin marketplace** — GitHub/npm registry discovery, composite adapter, plugin loader
|
|
82
|
+
|
|
83
|
+
## [2.4.0] - 2025-07-18
|
|
84
|
+
|
|
85
|
+
### 🔧 SDK Fork (gauss-sdk)
|
|
86
|
+
|
|
87
|
+
- Forked Vercel AI SDK as `@giulio-leone/gauss-sdk` with 30 merged bug fixes
|
|
88
|
+
- Published `@giulio-leone/gauss-sdk@1.0.0` to GitHub Package Registry
|
|
89
|
+
- Switched dependency from `ai@^6.0.86` to `npm:@giulio-leone/gauss-sdk@^1.0.0`
|
|
90
|
+
- Zero import changes required — uses npm alias for seamless drop-in replacement
|
|
91
|
+
|
|
92
|
+
### Bug Fixes Included (from fork)
|
|
93
|
+
|
|
94
|
+
- **feat(core)**: Top-level thinking configuration for reasoning models
|
|
95
|
+
- **fix(ai)**: Throw AbortError from generateText instead of silently swallowing
|
|
96
|
+
- **fix(ai)**: Guard toolResultsStreamController against enqueue/close on closed controller
|
|
97
|
+
- **fix(ai)**: Preserve caller tool dependency chains in pruneMessages
|
|
98
|
+
- **fix(ai)**: Handle missing usage data in retry logic
|
|
99
|
+
- **fix(anthropic)**: Validate thinking block requirement and prevent silent reasoning drop
|
|
100
|
+
- **fix(anthropic)**: Keep tools array when toolChoice is 'none'
|
|
101
|
+
- **fix(openai)**: Handle stream errors in Responses API
|
|
102
|
+
- **fix(openai)**: Accept empty string type in streaming tool call deltas (Azure)
|
|
103
|
+
- **fix(provider-utils)**: RFC 9110 compliant User-Agent header format
|
|
104
|
+
- **fix(telemetry)**: Add missing usage attributes to generateText and generateObject
|
|
105
|
+
- Plus 19 more bug fixes across providers (Google, Bedrock, LangChain, React)
|
|
106
|
+
|
|
107
|
+
## [2.3.0] - 2025-07-17
|
|
108
|
+
|
|
109
|
+
### 📚 Documentation & Developer Experience
|
|
110
|
+
|
|
111
|
+
#### M16: API Simplification
|
|
112
|
+
- **`gauss()` one-liner**: Zero-config quickstart with env auto-detection
|
|
113
|
+
- **Smart defaults**: Auto-detects OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.
|
|
114
|
+
- **GaussError**: Enhanced errors with actionable suggestions
|
|
115
|
+
|
|
116
|
+
#### M17: Documentation Overhaul
|
|
117
|
+
- Complete rewrite of all documentation (15 files, 5000+ lines)
|
|
118
|
+
- Getting Started with zero-config examples
|
|
119
|
+
- Concepts guide covering 15 core concepts
|
|
120
|
+
- Cookbook with 21 practical recipes
|
|
121
|
+
- API Reference for all ports, adapters, providers
|
|
122
|
+
- Feature docs: Voice, Teams, Multimodal, Workflows
|
|
123
|
+
- Comparison matrix (57 features vs 3 competitors)
|
|
124
|
+
- Migration guides from Mastra, LangChain, Agno
|
|
125
|
+
|
|
126
|
+
#### M18: GitHub Pages
|
|
127
|
+
- Docusaurus site at giulio-leone.github.io/gauss
|
|
128
|
+
- Dark mode, search, responsive design
|
|
129
|
+
- GitHub Actions auto-deployment on push
|
|
130
|
+
|
|
131
|
+
#### M19: Examples Gallery
|
|
132
|
+
- 17 production-ready examples (8 new)
|
|
133
|
+
- Team coordination, voice pipeline, workflow DSL
|
|
134
|
+
- Multimodal vision, video processing, universal provider
|
|
135
|
+
- LLM recording/replay, zero-config one-liner
|
|
136
|
+
|
|
137
|
+
## [2.2.0] - 2025-07-16
|
|
138
|
+
|
|
139
|
+
### 🌐 Universal Provider & Video Processing
|
|
140
|
+
|
|
141
|
+
- **UniversalProvider**: Wraps any @ai-sdk/* package, 40+ providers via single API
|
|
142
|
+
- **Video Processing**: Frame extraction, video description, audio extraction
|
|
143
|
+
- Auto-discovery of installed AI SDK providers
|
|
144
|
+
- Case-insensitive factory name lookup
|
|
145
|
+
|
|
146
|
+
## [2.1.0] - 2025-07-16
|
|
147
|
+
|
|
148
|
+
### 🚀 Competitive Feature Pack — 6 New Capabilities
|
|
149
|
+
|
|
150
|
+
This release adds 6 features that bring Gauss to **96% competitive feature coverage** (55/57), surpassing Mastra (63%), DeepAgentsJS (21%), and Agno (54%).
|
|
151
|
+
|
|
152
|
+
#### Added
|
|
153
|
+
|
|
154
|
+
- **Team Coordination (M8)**: `team()` builder with 4 strategies — round-robin, broadcast, delegate, consensus. SharedContext for inter-agent state.
|
|
155
|
+
- **Voice STT/TTS (M9)**: OpenAI Whisper STT + TTS adapter, ElevenLabs premium TTS, `VoicePipeline` for STT→Agent→TTS orchestration.
|
|
156
|
+
- **Fluent Workflow DSL (M10)**: `workflow('id').then().branch().parallel().build()` — chainable API that compiles to existing `WorkflowEngine`. Zod I/O schema validation.
|
|
157
|
+
- **LLM Recording & Replay (M11)**: `LLMRecorder` intercepts all `generateText` calls (input, output, timing). `LLMReplayer` replays from JSONL for deterministic testing.
|
|
158
|
+
- **Visual Agent Builder (M12)**: Declarative JSON schema → executable agent graph. `VisualAgentBuilder` validates + compiles configs. `AgentBuilderAPI` for REST (create/list/get/run/delete). `ModelRegistry` for string→LanguageModel mapping.
|
|
159
|
+
- **Image Processing / Multimodal (M13)**: `MultimodalAgent` handles text + image inputs. `describeImage()`, `extractText()` (OCR), `compareImages()` shortcuts. URL, base64, and file image sources.
|
|
160
|
+
|
|
161
|
+
#### Clean API Surface
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { agent, graph, rag, team, workflow, multimodal } from 'gauss'
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Test Coverage
|
|
168
|
+
|
|
169
|
+
- **1710 tests** (92 new: team 8, voice 9, workflow DSL 9, LLM recorder 13, visual builder 22, multimodal 9, API 8)
|
|
170
|
+
|
|
171
|
+
## [2.0.0] - 2025-07-15
|
|
172
|
+
|
|
173
|
+
### 🎉 Gauss — Complete Rebrand & Production Release
|
|
174
|
+
|
|
175
|
+
This is the first stable release under the **Gauss** brand. The framework has been completely
|
|
176
|
+
rebranded, API-redesigned, and extended with production adapters, provider wrappers, starter kits,
|
|
177
|
+
playground inspector tools, and comprehensive documentation.
|
|
178
|
+
|
|
179
|
+
### Added — API & Branding (M1)
|
|
180
|
+
- **Factory functions**: `agent()`, `graph()`, `rag()` for zero-boilerplate setup
|
|
181
|
+
- **Clean API surface**: `import { agent, tool, rag } from 'gauss'`
|
|
182
|
+
- **Automated rename** from DeepAgent/GaussFlow → Agent/Gauss across 114 files (878 replacements)
|
|
183
|
+
- **Organized barrel exports** in `src/index.ts` with logical sections
|
|
184
|
+
|
|
185
|
+
### Added — Provider Adapters (M2)
|
|
186
|
+
- **OpenAI** — `openai("gpt-4o")`
|
|
187
|
+
- **Anthropic** — `anthropic("claude-sonnet-4-20250514")`
|
|
188
|
+
- **Google Gemini** — `google("gemini-2.0-flash")`
|
|
189
|
+
- **Groq** — `groq("llama-3.3-70b-versatile")`
|
|
190
|
+
- **Ollama** — `ollama("llama3.2")` (local models, no API key)
|
|
191
|
+
- **OpenRouter** — `openrouter("anthropic/claude-sonnet-4-20250514")` (100+ models)
|
|
192
|
+
- Separate `gauss/providers` entry point — all AI SDK deps as optional peerDependencies
|
|
193
|
+
|
|
194
|
+
### Added — Production Persistence Adapters (M3)
|
|
195
|
+
- **PostgresStorageAdapter** — Multi-domain CRUD with JSONB
|
|
196
|
+
- **RedisStorageAdapter** — High-performance cache with TTL and pipelines
|
|
197
|
+
- **PgVectorStoreAdapter** — pgvector with HNSW index for semantic search
|
|
198
|
+
- **S3ObjectStorageAdapter** — Blob storage (S3, MinIO, Cloudflare R2)
|
|
199
|
+
- **BullMQQueueAdapter** — Background job processing with Redis
|
|
200
|
+
- New ports: `QueuePort`, `ObjectStoragePort`
|
|
201
|
+
|
|
202
|
+
### Added — DX & Starter Kits (M4)
|
|
203
|
+
- `gauss init --template <name>` — project scaffolding CLI
|
|
204
|
+
- 6 templates: chat, tools, rag, multi-agent, mcp, auth-rest
|
|
205
|
+
- Quickstart in README
|
|
206
|
+
|
|
207
|
+
### Added — Playground & Inspector (M5)
|
|
208
|
+
- Trace viewer — step-by-step execution timeline
|
|
209
|
+
- Token dashboard — usage tracking and cost estimation
|
|
210
|
+
- Tool call inspector — input/output visibility
|
|
211
|
+
- Reliability dashboard — circuit breaker, retry, rate limit metrics
|
|
212
|
+
- `PlaygroundCollector` — automatic data collection
|
|
213
|
+
|
|
214
|
+
### Added — Documentation (M6)
|
|
215
|
+
- Concept docs with architecture overview
|
|
216
|
+
- Hexagonal architecture deep dive
|
|
217
|
+
- 20 copy-paste cookbook recipes
|
|
218
|
+
- Migration guide from LangChain and Mastra
|
|
219
|
+
- Feature comparison matrix vs competitors
|
|
220
|
+
- Full API reference for providers and persistence
|
|
221
|
+
|
|
222
|
+
### Breaking Changes
|
|
223
|
+
- Package renamed from `@giulio-leone/gaussflow-agent` to `gauss`
|
|
224
|
+
- All `DeepAgent*` classes renamed to `Agent*`
|
|
225
|
+
- All `GaussFlow*` symbols renamed to `Gauss*`
|
|
226
|
+
- Storage key prefix changed from `deep-agent` to `gauss`
|
|
227
|
+
- Backward-compatibility aliases removed — clean API only
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Pre-Gauss History (Legacy)
|
|
232
|
+
|
|
233
|
+
## [1.3.0] - 2026-02-16
|
|
234
|
+
|
|
235
|
+
### Added
|
|
236
|
+
|
|
237
|
+
- **HierarchicalEventBus**: Child buses with namespace-scoped events, bubbling (child→parent), broadcasting (parent→children), anti-storm backpressure (maxBubblesPerSecond)
|
|
238
|
+
- **ReactiveSharedContext**: Key-level watchers with wildcard support, optimistic locking via `setVersioned()`, CRDT merge with CAS retry loop, scoped contexts with watcher bubbling
|
|
239
|
+
- **WorkerPool**: Generic async work-stealing pool with dynamic grow/shrink, priority queue, abort support, timeout detection, and bounded metrics (max 1000 entries)
|
|
240
|
+
- **AsyncChannel**: Push→pull bridge implementing `AsyncIterable<T>` for `for await...of` consumption
|
|
241
|
+
- **IncrementalReadyTracker**: Incremental Kahn's algorithm — O(fan-out) per `markCompleted()`, snapshot/restore support
|
|
242
|
+
- **PriorityQueue**: Generic binary min-heap with custom comparator
|
|
243
|
+
- **TokenBudgetController**: 3-tier budget management (ok/soft-limit/hard-limit) with acquire/release semantics and rolling auto-refined estimates
|
|
244
|
+
- **ReactiveGraphExecutor**: Event-driven push-based graph execution replacing batch-static GraphExecutor. Uses WorkerPool + IncrementalReadyTracker + AsyncChannel + TokenBudgetController
|
|
245
|
+
- **ForkCoordinator**: Parallel fork execution with partial results, `minResults` threshold, eager resolution on mixed success+error, and timeout support
|
|
246
|
+
- **SubagentRegistry**: 7-state lifecycle manager (queued→running→streaming→completed/failed/timeout/cancelled) with validated transitions, GC, orphan detection, cancellation cascade
|
|
247
|
+
- **SubagentScheduler**: Priority queue with aging anti-starvation, circuit breaker per task type, dynamic pool sizing, ToolLoopAgent execution
|
|
248
|
+
- **Async Subagent Tools**: `dispatch_subagent` (fire-and-forget), `poll_subagent` (status check), `await_subagent` (multi-task wait with timeout) — replaces synchronous TaskTool
|
|
249
|
+
- **AgentSupervisor**: Erlang-style supervision with one-for-one, one-for-all, rest-for-one strategies. Child policies (permanent/temporary/transient), restart intensity with sliding window, escalation, heartbeat monitoring, graceful degradation with fallback
|
|
250
|
+
- **SupervisorBuilder**: Fluent builder for AgentSupervisor configuration
|
|
251
|
+
- **DynamicAgentGraph**: Runtime graph mutations (addNode, removeNode, replaceNode, addEdge, removeEdge) with incremental cycle detection, duplicate edge rejection, append-only mutation log, event emission
|
|
252
|
+
- **Structured Planning System**: Hierarchical Zod schema (Plan→Phase→Step→SubStep), state machine with validated transitions, 4 tools (plan_create, plan_update, plan_status, plan_visualize), plan-to-graph conversion
|
|
253
|
+
- **New Event Types**: 9 supervisor/subagent/graph event types in AgentEventType union + `graph:mutation`
|
|
254
|
+
- **Full Public API Exports**: All new modules exported from `src/index.ts`
|
|
255
|
+
|
|
256
|
+
### Fixed
|
|
257
|
+
|
|
258
|
+
- AgentSupervisor: factory() failures no longer permanently brick child recovery (try/catch + status reset to "crashed")
|
|
259
|
+
- AgentSupervisor: unhandled promise rejections in heartbeat setInterval callbacks (`.catch()` guard)
|
|
260
|
+
- AgentSupervisor: restartAll/restartRestForOne continue loop on individual factory failures
|
|
261
|
+
- WorkerPool: latencies/completionTimestamps arrays capped at 1000 entries (prevents unbounded memory growth)
|
|
262
|
+
- DynamicAgentGraph: duplicate edges rejected (prevents IncrementalReadyTracker deadlock)
|
|
263
|
+
- SharedContext: TOCTOU race in setVersioned fixed with synchronous version bump before async write
|
|
264
|
+
- SharedContext: merge() now uses CAS retry loop (max 3 retries) instead of unsafe read-then-write
|
|
265
|
+
- ForkCoordinator: eagerly resolves when all nodes reported with enough successes (no unnecessary timeout wait)
|
|
266
|
+
- GraphExecutor: fork node promises awaited on success path (prevents orphaned LLM API calls)
|
|
267
|
+
|
|
268
|
+
### Breaking Changes
|
|
269
|
+
|
|
270
|
+
- `EventBus` now supports hierarchical features (createChild, bubbling, broadcasting) — API extended
|
|
271
|
+
- `SharedContext` now supports watchers, versioning, merge, scoping — API extended
|
|
272
|
+
- `GraphExecutor` replaced with reactive push-based implementation (same class name preserved)
|
|
273
|
+
- New `graph:mutation` event type added to AgentEventType union
|
|
274
|
+
|
|
275
|
+
## [1.2.0] - 2026-02-16
|
|
276
|
+
|
|
277
|
+
### Added
|
|
278
|
+
|
|
279
|
+
- **Structured Code Editing**: `editFile` tool with old_str→new_str pattern, diff preview, and confirmation gate
|
|
280
|
+
- **File Creation**: `createFile` tool that fails if file exists (clean separation from writeFile)
|
|
281
|
+
- **Unified Diff Generator**: LCS-based colored diff with context lines (red/green/dim/cyan)
|
|
282
|
+
- **Git Integration**: gitStatus, gitDiff, gitCommit, gitLog, gitBranch tools + `/git` slash command
|
|
283
|
+
- **Streaming Run Command**: Token-by-token output for `gaussflow "<prompt>"` (was batch)
|
|
284
|
+
- **Slash Commands**: `/test`, `/lint`, `/fix` for quick development workflow
|
|
285
|
+
- **Project Context Awareness**: Auto-detect project type, framework, language, and dependencies
|
|
286
|
+
- **`.gaussflowignore`**: Exclude files from search/list operations (gitignore-like format)
|
|
287
|
+
- **Diff Preview for writeFile**: Shows colored unified diff before confirming overwrites
|
|
288
|
+
|
|
289
|
+
### Security
|
|
290
|
+
|
|
291
|
+
- Index-based string splice in editFile (prevents `String.replace` dollar-sign injection)
|
|
292
|
+
- `spawnSync` for all git commands with user input (prevents shell injection)
|
|
293
|
+
- Staging state preservation on gitCommit cancel (restores pre-existing staged files)
|
|
294
|
+
- Segment-boundary matching in shouldIgnore (no false positive prefix matches)
|
|
295
|
+
|
|
296
|
+
### Changed
|
|
297
|
+
|
|
298
|
+
- System prompts now include project context (type, framework, key deps, structure)
|
|
299
|
+
- `listFiles` and `searchFiles` respect `.gaussflowignore` patterns
|
|
300
|
+
- `z.string().min(1)` on editFile's `old_str` (prevents empty-string infinite loop)
|
|
301
|
+
- MAX_DIFF_LINES=1000 guard against OOM on large file diffs
|
|
302
|
+
|
|
303
|
+
## [1.0.0] - 2026-02-16
|
|
304
|
+
|
|
305
|
+
### Added
|
|
306
|
+
|
|
307
|
+
- OpenTelemetry observability with port, adapters, and integration
|
|
308
|
+
- Cost/Token tracking with port, adapter, and CLI `usage` command
|
|
309
|
+
- Agent Test Harness with mock provider, test runner, assertions, and snapshots
|
|
310
|
+
|
|
311
|
+
### Changed
|
|
312
|
+
|
|
313
|
+
- Lazy-load CLI commands for 95% bundle reduction (178 KB → 9 KB)
|
|
314
|
+
|
|
315
|
+
### Fixed
|
|
316
|
+
|
|
317
|
+
- TypeScript build errors in execution-engine and mock-provider
|
|
318
|
+
- R1 review issues for otel-observability
|
|
319
|
+
- R1 and R2 review issues for cost-tracking
|
|
320
|
+
|
|
321
|
+
## [0.9.0] - 2026-02-16
|
|
322
|
+
|
|
323
|
+
### Added
|
|
324
|
+
|
|
325
|
+
- Tool Composition Pipeline (port, adapter, tests)
|
|
326
|
+
- Partial JSON Streaming (port, adapter, accumulator)
|
|
327
|
+
- Conditionals, loops, and filters in template engine
|
|
328
|
+
|
|
329
|
+
### Fixed
|
|
330
|
+
|
|
331
|
+
- R4–R9 review fixes for tool composition, template engine, and partial JSON
|
|
332
|
+
- R8 sentinel collision and keyword leak in prompt-template
|
|
333
|
+
|
|
334
|
+
## [0.8.1] - 2026-02-16
|
|
335
|
+
|
|
336
|
+
### Added
|
|
337
|
+
|
|
338
|
+
- SemanticScraping manifest API documentation
|
|
339
|
+
|
|
340
|
+
### Changed
|
|
341
|
+
|
|
342
|
+
- Low-priority performance and refactoring optimizations
|
|
343
|
+
|
|
344
|
+
## [0.8.0] - 2026-02-16
|
|
345
|
+
|
|
346
|
+
### Changed
|
|
347
|
+
|
|
348
|
+
- Remaining performance and refactoring optimizations batch
|
|
349
|
+
- Medium-impact performance optimizations batch
|
|
350
|
+
|
|
351
|
+
## [0.7.0] - 2026-02-16
|
|
352
|
+
|
|
353
|
+
### Changed
|
|
354
|
+
|
|
355
|
+
- Code optimization — performance, DRY, and SOLID improvements
|
|
356
|
+
|
|
357
|
+
## [0.6.0] - 2026-02-16
|
|
358
|
+
|
|
359
|
+
### Added
|
|
360
|
+
|
|
361
|
+
- Native MCP Server (port, adapter, plugin)
|
|
362
|
+
- Agent Memory & Context system
|
|
363
|
+
- Plugin Registry
|
|
364
|
+
- `name` property on RuntimePort and conditional runtime exports
|
|
365
|
+
|
|
366
|
+
## [0.5.0] - 2026-02-16
|
|
367
|
+
|
|
368
|
+
### Added
|
|
369
|
+
|
|
370
|
+
- Advanced RAG pipeline — chunking, re-ranking, hybrid search
|
|
371
|
+
- A2A Full protocol enhancements for Gauss
|
|
372
|
+
- WorkflowEngine with parallel, conditional, and loop steps
|
|
373
|
+
- `/scraping` sub-path export for browser/extension contexts
|
|
374
|
+
- Semantic scraping capabilities ported from mcp-inspector-openrouter
|
|
375
|
+
- Workflow and A2A sub-path exports
|
|
376
|
+
|
|
377
|
+
### Fixed
|
|
378
|
+
|
|
379
|
+
- 14 A2A review issues — security, memory, SSE, timeouts
|
|
380
|
+
- 2-arg `z.record()` for Zod v4 compatibility
|
|
381
|
+
|
|
382
|
+
## [0.4.0] - 2026-02-15
|
|
383
|
+
|
|
384
|
+
### Added
|
|
385
|
+
|
|
386
|
+
- MCP server support and streaming tool calls in CLI
|
|
387
|
+
|
|
388
|
+
### Changed
|
|
389
|
+
|
|
390
|
+
- Architecture optimization, CLI UX, and SRP improvements
|
|
391
|
+
|
|
392
|
+
### Fixed
|
|
393
|
+
|
|
394
|
+
- Pass `--yolo` to REPL, fix readline deadlock, serialize confirmations
|
|
395
|
+
|
|
396
|
+
## [0.3.0] - 2026-02-15
|
|
397
|
+
|
|
398
|
+
### Added
|
|
399
|
+
|
|
400
|
+
- Agentic CLI — tools, YOLO mode, bash, files, system prompt, markdown rendering
|
|
401
|
+
- Prompt templates, observability plugin, lifecycle hooks
|
|
402
|
+
- CLI upgrade — OpenRouter fix, `/settings`, `maskKey`, config safety
|
|
403
|
+
|
|
404
|
+
## [0.2.1] - 2026-02-15
|
|
405
|
+
|
|
406
|
+
### Changed
|
|
407
|
+
|
|
408
|
+
- Split Agent into ToolManager + ExecutionEngine (SRP)
|
|
409
|
+
|
|
410
|
+
## [0.2.0] - 2026-02-15
|
|
411
|
+
|
|
412
|
+
### Added
|
|
413
|
+
|
|
414
|
+
- Production patterns — circuit breaker, rate limiter, tool cache
|
|
415
|
+
- Enhanced REPL experience with spinner, history, timing
|
|
416
|
+
- OpenRouter provider, config defaults, direct prompt mode
|
|
417
|
+
- REST API server with integration tests
|
|
418
|
+
- OneAgent CLI with REPL, single-shot, config, and demo modes
|
|
419
|
+
- ObservabilityPlugin with TracingPort, MetricsPort, LoggingPort
|
|
420
|
+
- WorkflowPlugin with retry, rollback, and deep-clone isolation
|
|
421
|
+
- AgentGraph streaming and parallel execution
|
|
422
|
+
- Deno, Bun, and Edge runtime adapters
|
|
423
|
+
- RuntimePort + NodeRuntimeAdapter + auto-detection
|
|
424
|
+
- CI matrix and multi-runtime documentation
|
|
425
|
+
- EvalsPlugin with evaluation metrics collection
|
|
426
|
+
- VectorlessPlugin with RAG/knowledge tools
|
|
427
|
+
- OneCrawlPlugin with web scraping and search tools
|
|
428
|
+
- GuardrailsPlugin with input/output validation and content filtering
|
|
429
|
+
- LearningSystem with hexagonal architecture
|
|
430
|
+
- Built-in A2A and AgentCard plugins
|
|
431
|
+
- Plugin system core with lifecycle hooks
|
|
432
|
+
- Multi-agent collaboration (AgentGraph) + real-time streaming (SSE/WS)
|
|
433
|
+
- Multi-runtime support (Deno, Edge, Browser) + MCP server mode
|
|
434
|
+
- 230 passing tests and comprehensive documentation
|
|
435
|
+
- GitHub Packages publish workflow
|
|
436
|
+
- Docusaurus documentation site
|
|
437
|
+
|
|
438
|
+
### Changed
|
|
439
|
+
|
|
440
|
+
- Rename package to `gauss`
|
|
441
|
+
- Standardize naming to Gauss brand
|
|
442
|
+
- Extract AbstractBuilder template method pattern
|
|
443
|
+
- Add ValidationPort with ZodValidationAdapter
|
|
444
|
+
- Extract BasePlugin abstract class for DRY plugin pattern
|
|
445
|
+
- Extract BaseRuntimeAdapter (DRY)
|
|
446
|
+
|
|
447
|
+
### Fixed
|
|
448
|
+
|
|
449
|
+
- Code quality — domain errors, type safety, dead code removal
|
|
450
|
+
- Performance optimizations — memory bounds, lazy loading, backpressure
|
|
451
|
+
- Pin AI SDK providers to latest stable versions
|
|
452
|
+
- Downgrade Zod to ^3.25.76, remove nonexistent peer deps
|
|
453
|
+
- CI build failures and Bun test runner
|
|
454
|
+
- Move AI SDK providers to optionalDependencies
|
|
455
|
+
- Use `npm install` in CI (pnpm workspace breaks `npm ci`)
|
|
456
|
+
- Separate npm install and publish registries in workflow
|
|
457
|
+
- Add `package-lock.json` for CI reproducibility
|
|
458
|
+
|
|
459
|
+
## [0.1.0] - 2026-02-11
|
|
460
|
+
|
|
461
|
+
### Added
|
|
462
|
+
|
|
463
|
+
- Initial deep-agents framework built on AI SDK v6
|
|
464
|
+
- Hexagonal architecture with ports and adapters
|
|
465
|
+
- 73 passing tests with 18 review fixes
|
|
466
|
+
- README and 6 usage examples
|
|
467
|
+
|
|
468
|
+
### Fixed
|
|
469
|
+
|
|
470
|
+
- Correct `@ai-sdk/mcp` peer dependency version to ^1.0.0
|
|
471
|
+
|
|
472
|
+
[3.5.0]: https://github.com/giulio-leone/gauss/compare/v3.4.0...v3.5.0
|
|
473
|
+
[3.4.0]: https://github.com/giulio-leone/gauss/compare/v3.3.0...v3.4.0
|
|
474
|
+
[3.3.0]: https://github.com/giulio-leone/gauss/compare/v3.2.0...v3.3.0
|
|
475
|
+
[3.2.0]: https://github.com/giulio-leone/gauss/compare/v3.1.0...v3.2.0
|
|
476
|
+
[3.1.0]: https://github.com/giulio-leone/gauss/compare/v3.0.0...v3.1.0
|
|
477
|
+
[3.0.0]: https://github.com/giulio-leone/gauss/compare/v2.4.0...v3.0.0
|
|
478
|
+
[1.0.0]: https://github.com/giulio-leone/gauss/compare/v0.9.0...v1.0.0
|
|
479
|
+
[0.9.0]: https://github.com/giulio-leone/gauss/compare/v0.8.1...v0.9.0
|
|
480
|
+
[0.8.1]: https://github.com/giulio-leone/gauss/compare/v0.8.0...v0.8.1
|
|
481
|
+
[0.8.0]: https://github.com/giulio-leone/gauss/compare/v0.7.0...v0.8.0
|
|
482
|
+
[0.7.0]: https://github.com/giulio-leone/gauss/compare/v0.6.0...v0.7.0
|
|
483
|
+
[0.6.0]: https://github.com/giulio-leone/gauss/compare/v0.5.0...v0.6.0
|
|
484
|
+
[0.5.0]: https://github.com/giulio-leone/gauss/compare/v0.4.0...v0.5.0
|
|
485
|
+
[0.4.0]: https://github.com/giulio-leone/gauss/compare/v0.3.0...v0.4.0
|
|
486
|
+
[0.3.0]: https://github.com/giulio-leone/gauss/compare/v0.2.1...v0.3.0
|
|
487
|
+
[0.2.1]: https://github.com/giulio-leone/gauss/compare/v0.2.0...v0.2.1
|
|
488
|
+
[0.2.0]: https://github.com/giulio-leone/gauss/compare/v0.1.0...v0.2.0
|
|
489
|
+
[0.1.0]: https://github.com/giulio-leone/gauss/releases/tag/v0.1.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Giulio Leone
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|