A-gent-0.11.0.20: README.md
Λ-gent
======
[][hackage-shield]
`Λ-gent`, pronounced «_**a gent**_», where the **capital lambda** (`Λ`) is a
replacement of the letter `A` in **agent** due to their similarities and [lambda
calculus][lambda-calculus-wiki] being the backbone of [Haskell][haskell] and
`nix` {[language][nix-lang] | [package manager][nix-pkg-man] |
[command][nix-cmd]} / [NixOS][nix-nixOS].
With the substitution, we are now left with the word [gent][oxford-gent], the
abbreviation of [gentleman][oxford-gentleman], which will help us define our
[LLM][llm-wiki] **agent** as:
> _«Polite, well **educated**, has excellent manners and **always** behaves
> well»_
[hackage-shield]: https://hackage.haskell.org/package/A-gent
[haskell]: https://www.haskell.org/
[nix-lang]: https://wiki.nixos.org/wiki/Nix_(language)
[nix-pkg-man]: https://wiki.nixos.org/wiki/Nix_(package_manager)
[nix-cmd]: https://wiki.nixos.org/wiki/Nix_(command)
[nix-nixOS]: https://wiki.nixos.org/wiki/NixOS
[lambda-calculus-wiki]: https://en.wikipedia.org/wiki/Lambda_calculus
[oxford-gent]: https://www.oxfordlearnersdictionaries.com/definition/english/gent
[oxford-gentleman]: https://www.oxfordlearnersdictionaries.com/definition/english/gentleman
[llm-wiki]: https://en.wikipedia.org/wiki/Large_language_model
Project structure
=================
```sh
├── doc
├── src
│ ├── Agent
│ │ ├── Control
│ │ │ ├── Concurrent.hs
│ │ │ ├── IFC.hs
│ │ │ └── MAC.hs
│ │ ├── Data
│ │ │ ├── ANSI
│ │ │ │ └── EscapeCode.hs
│ │ │ └── JSON.hs
│ │ ├── IO
│ │ │ ├── Effects.hs
│ │ │ └── Restricted.hs
│ │ ├── LLM
│ │ │ ├── Action.hs
│ │ │ └── Message.hs
│ │ └── LLM.hs
│ └── Internal
│ ├── GaloisInc
│ │ └── Text
│ │ ├── JSON
│ │ │ ├── Generic.hs
│ │ │ ├── String.hs
│ │ │ └── Types.hs
│ │ ├── JSON.hs
│ │ ├── LICENSE
│ │ └── NOTES.md
│ ├── GlasgowUniversity
│ │ ├── Data
│ │ │ └── Generics
│ │ │ └── Aliases.hs
│ │ ├── LICENSE
│ │ └── NOTES.md
│ ├── LLM
│ │ ├── Action.hs
│ │ └── SystemOne.hs
│ ├── LLM.hs
│ ├── RIO.hs
│ └── Utils.hs
├── uat
│ └── TODO.md
├── A-gent.cabal
├── CHANGELOG.md
├── LICENSE.md
├── LICENSE_AGPL-3.0-only.txt
├── LICENSE_SML-2.0.txt
├── LICENSE_SSPL-1.0.txt
├── README.md
├── Setup.hs
└── todo.org
```
Project dependencies
====================
## Tree
```
A-gent-0.11.0.20
├─ base-4.19.2.0
│ ├─ ghc-bignum-1.3
│ │ └─ ghc-prim-0.11.0
│ │ └─ rts-1.0.2
│ ├─ ghc-prim-0.11.0 ┄┄
│ └─ rts-1.0.2 ┄┄
├─ containers-0.8
│ ├─ array-0.5.8.0
│ │ └─ base-4.19.2.0 ┄┄
│ ├─ base-4.19.2.0 ┄┄
│ ├─ deepseq-1.5.1.0
│ │ ├─ base-4.19.2.0 ┄┄
│ │ └─ ghc-prim-0.11.0 ┄┄
│ └─ template-haskell-2.21.0.0
│ ├─ base-4.19.2.0 ┄┄
│ ├─ ghc-boot-th-9.8.4
│ │ └─ base-4.19.2.0 ┄┄
│ ├─ ghc-prim-0.11.0 ┄┄
│ └─ pretty-1.1.3.6
│ ├─ base-4.19.2.0 ┄┄
│ ├─ deepseq-1.5.1.0 ┄┄
│ └─ ghc-prim-0.11.0 ┄┄
├─ mtl-2.3.1
│ ├─ base-4.19.2.0 ┄┄
│ └─ transformers-0.6.1.0
│ └─ base-4.19.2.0 ┄┄
└─ process-1.6.25.0
├─ base-4.19.2.0 ┄┄
├─ deepseq-1.5.1.0 ┄┄
├─ directory-1.3.8.5
│ ├─ base-4.19.2.0 ┄┄
│ ├─ filepath-1.4.301.0
│ │ ├─ base-4.19.2.0 ┄┄
│ │ ├─ bytestring-0.12.1.0
│ │ │ ├─ base-4.19.2.0 ┄┄
│ │ │ ├─ deepseq-1.5.1.0 ┄┄
│ │ │ ├─ ghc-prim-0.11.0 ┄┄
│ │ │ └─ template-haskell-2.21.0.0 ┄┄
│ │ ├─ deepseq-1.5.1.0 ┄┄
│ │ ├─ exceptions-0.10.7
│ │ │ ├─ base-4.19.2.0 ┄┄
│ │ │ ├─ mtl-2.3.1 ┄┄
│ │ │ ├─ stm-2.5.3.1
│ │ │ │ ├─ array-0.5.8.0 ┄┄
│ │ │ │ └─ base-4.19.2.0 ┄┄
│ │ │ ├─ template-haskell-2.21.0.0 ┄┄
│ │ │ └─ transformers-0.6.1.0 ┄┄
│ │ └─ template-haskell-2.21.0.0 ┄┄
│ ├─ time-1.12.2
│ │ ├─ base-4.19.2.0 ┄┄
│ │ └─ deepseq-1.5.1.0 ┄┄
│ └─ unix-2.8.6.0
│ ├─ base-4.19.2.0 ┄┄
│ ├─ bytestring-0.12.1.0 ┄┄
│ ├─ filepath-1.4.301.0 ┄┄
│ └─ time-1.12.2 ┄┄
├─ filepath-1.4.301.0 ┄┄
└─ unix-2.8.6.0 ┄┄
```
## Direct deps
```
PkgId (PkgName "A-gent") (Ver [0,11,0,20])
CompNameLib
base-4.19.2.0
containers-0.8
mtl-2.3.1
process-1.6.25.0
```
## Topological sort
```
A-gent-0.11.0.20
process-1.6.25.0
directory-1.3.8.5
unix-2.8.6.0
time-1.12.2
filepath-1.4.301.0
exceptions-0.10.7
stm-2.5.3.1
bytestring-0.12.1.0
mtl-2.3.1
transformers-0.6.1.0
containers-0.8
template-haskell-2.21.0.0
pretty-1.1.3.6
ghc-boot-th-9.8.4
deepseq-1.5.1.0
array-0.5.8.0
base-4.19.2.0
ghc-bignum-1.3
ghc-prim-0.11.0
rts-1.0.2
```
Licenses
========
Source code in the [repository][gitlab-agent] is ONLY covered by a [**Server
Side Public License, v1 (SSPL-1.0)**][spdx-sspl-1].
However, as `SSPL-1.0` is not approved by the [Free Software Foundation
(FSF)][fsf] nor the [Open Source Initiative (OSI)][osi] as an open source
license (yet), the package will therefore be dual-licensed under the [**GNU
Affero General Public License v3.0 only (AGPL-3.0-only)**][spdx-agpl-3o] as well
so the [Hackage][hackage-osl] operators don't have any conflict with their
ability to operate the service.
Local versions of each of the licenses can be seen at:
* [**Server Side Public License, v1 (SSPL-1.0)**][local-sspl-1]
* [**GNU Affero General Public License v3.0 only
(AGPL-3.0-only)**][local-agpl-3o]
For organizations that can't use any of the mentioned open-source & copyleft
licenses, a commercial source-available & non-copyleft license, heavily inspired
by [Elastic License 2.0 (ELv2)][elastic-el-2], is provided:
* [**SPISE MISU License, v2 (SML-2.0)**][local-sml-2]
[gitlab-agent]: https://gitlab.com/a-gent/a-gent/
[spdx-sspl-1]: https://spdx.org/licenses/SSPL-1.0
[spdx-agpl-3o]: https://spdx.org/licenses/AGPL-3.0-only
[hackage-osl]: https://hackage.haskell.org/upload
[elastic-el-2]: https://www.elastic.co/blog/elastic-license-v2
[fsf]: https://www.fsf.org/
[osi]: https://opensource.org/
[local-sspl-1]: ./LICENSE_SSPL-1.0.txt
[local-agpl-3o]: ./LICENSE_AGPL-3.0-only.txt
[local-sml-2]: ./LICENSE_SML-2.0.txt