@awebai/oats 0.22.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/LICENSE +21 -0
- package/README.md +380 -0
- package/bin/oats.mjs +3294 -0
- package/capabilities/oats-authoring/oats.json +12 -0
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +297 -0
- package/capabilities/oats-aweb/injects/aweb.md +55 -0
- package/capabilities/oats-aweb/oats.json +47 -0
- package/capabilities/oats-aweb/package.json +20 -0
- package/capabilities/oats-jira/bin/oats-jira.mjs +40 -0
- package/capabilities/oats-jira/injects/jira.md +10 -0
- package/capabilities/oats-jira/oats.json +22 -0
- package/capabilities/oats-jira/package.json +25 -0
- package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +176 -0
- package/capabilities/oats-linear/README.md +234 -0
- package/capabilities/oats-linear/bin/oats-linear-hook.mjs +32 -0
- package/capabilities/oats-linear/bin/oats-linear.mjs +344 -0
- package/capabilities/oats-linear/injects/linear.md +8 -0
- package/capabilities/oats-linear/oats.json +24 -0
- package/capabilities/oats-linear/package.json +29 -0
- package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +217 -0
- package/capabilities/oats-linear/test/oats-linear.test.mjs +168 -0
- package/capabilities/oats-okf/agents/memory-harvest.md +25 -0
- package/capabilities/oats-okf/bin/oats-okf.mjs +283 -0
- package/capabilities/oats-okf/injects/okf.md +62 -0
- package/capabilities/oats-okf/oats.json +20 -0
- package/capabilities/oats-okf/package.json +22 -0
- package/capabilities/oats-okf/skills/memory-harvest/SKILL.md +100 -0
- package/capabilities/oats-okf/skills/okf/SKILL.md +107 -0
- package/capabilities/oats-okf/skills/okf/scripts/okf-validate.mjs +123 -0
- package/capabilities/oats-review/agents/reviewer/AGENTS.md +53 -0
- package/capabilities/oats-review/agents/reviewer/soul.yaml +6 -0
- package/capabilities/oats-review/injects/review.md +68 -0
- package/capabilities/oats-review/oats.json +10 -0
- package/capabilities/oats-review/skills/code-review/SKILL.md +44 -0
- package/capabilities/oats-review/skills/security-review/SKILL.md +59 -0
- package/docs/capabilities.md +505 -0
- package/docs/capability-manifest.schema.json +223 -0
- package/docs/configuration.md +482 -0
- package/docs/conventions.md +73 -0
- package/docs/design/desktop-ux-plan.md +362 -0
- package/docs/design/package-engine-contract.md +813 -0
- package/docs/design/package-runtime-api.md +414 -0
- package/docs/desktop-cli-api.md +89 -0
- package/docs/desktop-succession.md +51 -0
- package/docs/desktop.md +187 -0
- package/docs/implementation.md +282 -0
- package/docs/integrations.md +123 -0
- package/docs/knowledge-theory.md +97 -0
- package/docs/knowledge.md +139 -0
- package/docs/layers.md +110 -0
- package/docs/migration-from-oas.md +122 -0
- package/docs/oats-config.schema.json +140 -0
- package/docs/oats-lock.schema.json +175 -0
- package/docs/oats-package.schema.json +129 -0
- package/docs/packages.md +442 -0
- package/docs/release-lane.md +132 -0
- package/docs/release-notes/v0.18.2.md +79 -0
- package/docs/release-notes/v0.18.3.md +63 -0
- package/docs/release-notes/v0.18.4.md +65 -0
- package/docs/release-notes/v0.18.5.md +66 -0
- package/docs/release-notes/v0.18.6.md +87 -0
- package/docs/release-notes/v0.19.0.md +186 -0
- package/docs/release-notes/v0.19.1.md +24 -0
- package/docs/release-notes/v0.19.2.md +32 -0
- package/docs/release-notes/v0.19.3.md +16 -0
- package/docs/release-notes/v0.19.4.md +12 -0
- package/docs/release-notes/v0.20.0.md +89 -0
- package/docs/release-notes/v0.22.0.md +180 -0
- package/docs/souls-and-instances.md +344 -0
- package/injects/framework-workspace.md +7 -0
- package/injects/instance-boundary.md +43 -0
- package/injects/local-soul.md +19 -0
- package/injects/oats.md +11 -0
- package/injects/work-attached.md +16 -0
- package/injects/work-checkout.md +12 -0
- package/injects/work-workspace.md +22 -0
- package/injects/work-worktree.md +13 -0
- package/lib/core.mjs +6792 -0
- package/lib/packages.mjs +1375 -0
- package/lib/tmux-config.mjs +35 -0
- package/package-catalog.json +44 -0
- package/package.json +55 -0
- package/packages/record/README.md +151 -0
- package/packages/record/bin/capture.mjs +256 -0
- package/packages/record/bin/recall.mjs +102 -0
- package/packages/record/bin/setup.mjs +281 -0
- package/packages/record/bin/turn-record.mjs +47 -0
- package/packages/record/docs/turn-record-sot.md +350 -0
- package/packages/record/lib/canonical.mjs +151 -0
- package/packages/record/lib/capture-aw.mjs +179 -0
- package/packages/record/lib/capture-cc.mjs +322 -0
- package/packages/record/lib/formats.mjs +296 -0
- package/packages/record/lib/ignore.mjs +155 -0
- package/packages/record/lib/index-db.mjs +524 -0
- package/packages/record/lib/project-aweb.mjs +251 -0
- package/packages/record/lib/segments.mjs +186 -0
- package/packages/record/lib/store.mjs +447 -0
- package/packages/record/lib/tags.mjs +114 -0
- package/packages/record/package.json +45 -0
- package/packages/record/test/vectors/README.md +34 -0
- package/packages/record/test/vectors/aweb-projection-v1.json +231 -0
- package/packages/record/test/vectors/journal-merge-v1.json +261 -0
- package/packages/record/test/vectors/turn-id-v1.json +152 -0
- package/packages/record/test/vectors/validate.mjs +391 -0
- package/skills/integration-authoring/SKILL.md +76 -0
- package/skills/oats/SKILL.md +151 -0
- package/skills/oats-config/SKILL.md +162 -0
- package/skills/oats-getting-started/SKILL.md +159 -0
- package/skills/oats-packages/SKILL.md +180 -0
- package/skills/oats-support/SKILL.md +79 -0
- package/skills/skill-craft/SKILL.md +109 -0
- package/skills/soul-craft/SKILL.md +109 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OATS Framework
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
# OATS — Open Agent Team Specification
|
|
2
|
+
|
|
3
|
+
**Durable specialist agents that compound expertise across sessions, tools, models, and repositories.**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@awebai/oats)
|
|
6
|
+
[](https://github.com/awebai/oats/actions/workflows/pull-request.yml)
|
|
7
|
+
[](https://github.com/awebai/oats/releases)
|
|
8
|
+
[](https://nodejs.org/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
|
|
11
|
+
OATS makes agents first-class project artifacts. Instead of giving every task
|
|
12
|
+
the same general assistant, a workspace owns a backend expert, a UI
|
|
13
|
+
specialist, a maintainer, a reviewer, a package owner, or any other role, each
|
|
14
|
+
with a precise curriculum, durable knowledge, and a full provider-native
|
|
15
|
+
session you can enter and steer.
|
|
16
|
+
|
|
17
|
+
OATS works with **Pi** and **Claude Code**. A team may mix providers and models
|
|
18
|
+
while sharing the same souls, package and config contracts, instance
|
|
19
|
+
lifecycle, and coordination topology. Every conversation an agent has is
|
|
20
|
+
captured into an append-only, searchable **turn record** that outlives models,
|
|
21
|
+
harnesses, and this repository's own designs.
|
|
22
|
+
|
|
23
|
+
## Contents
|
|
24
|
+
|
|
25
|
+
- [Highlights](#highlights)
|
|
26
|
+
- [Quick start](#quick-start)
|
|
27
|
+
- [How it works](#how-it-works)
|
|
28
|
+
- [The turn record](#the-turn-record)
|
|
29
|
+
- [Official packages](#official-packages)
|
|
30
|
+
- [OATS Desktop](#oats-desktop)
|
|
31
|
+
- [Maturity](#maturity)
|
|
32
|
+
- [Upgrading and migration](#upgrading-and-migration)
|
|
33
|
+
- [CLI essentials](#cli-essentials)
|
|
34
|
+
- [Documentation](#documentation)
|
|
35
|
+
- [Contributing](#contributing)
|
|
36
|
+
- [Releases and versioning](#releases-and-versioning)
|
|
37
|
+
- [Origins and acknowledgements](#origins-and-acknowledgements)
|
|
38
|
+
- [License](#license)
|
|
39
|
+
|
|
40
|
+
## Highlights
|
|
41
|
+
|
|
42
|
+
- **Specialists are project assets.** A soul is reviewed Markdown, YAML,
|
|
43
|
+
skills, and knowledge that travel with the repository. It can be
|
|
44
|
+
instantiated many times without losing its identity or accumulated
|
|
45
|
+
expertise.
|
|
46
|
+
- **Instances are real sessions, not hidden subagent calls.** Each instance is
|
|
47
|
+
a disposable incarnation with a full Pi or Claude Code session hosted in
|
|
48
|
+
tmux, an explicit task, its own home, and a repository or workspace view.
|
|
49
|
+
You can attach to it, steer it, message it, stop it, and inspect exactly
|
|
50
|
+
what it received.
|
|
51
|
+
- **An exact curriculum, fail closed.** At spawn, OATS resolves the scoped
|
|
52
|
+
config for the target soul and materializes only the resources selected for
|
|
53
|
+
that agent. Missing, duplicate, untrusted, incompatible, or escaping
|
|
54
|
+
resources stop the launch before an incomplete agent starts.
|
|
55
|
+
- **Expertise compounds.** With the official `oats.okf` knowledge package, an
|
|
56
|
+
instance keeps resumable working state and captures non-obvious lessons. A
|
|
57
|
+
memory-harvest agent promotes durable knowledge back into the soul, so
|
|
58
|
+
future instances begin where earlier ones finished.
|
|
59
|
+
- **Hash-locked distribution.** Capabilities ship in Git-acquired packages
|
|
60
|
+
with exact locks, integrity, dependency closure, and explicit executable
|
|
61
|
+
trust. Acquisition never implies activation.
|
|
62
|
+
- **Teams stay steerable.** Instances have explicit `child`, `parent`, and
|
|
63
|
+
`sibling` relationships, can carry cross-machine identities through a
|
|
64
|
+
messaging layer such as `oats.aweb`, and are visible together in OATS
|
|
65
|
+
Desktop.
|
|
66
|
+
- **Everything is on the record.** Claude Code, Pi, and Codex sessions, plus
|
|
67
|
+
aweb mail and chat, are captured as signed turns with exact provenance and
|
|
68
|
+
searched locally with `oats recall`.
|
|
69
|
+
|
|
70
|
+
## Quick start
|
|
71
|
+
|
|
72
|
+
Requires Node.js 22 or newer and tmux.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g @awebai/oats@latest
|
|
76
|
+
pi install npm:@awebai/oats-pi@latest # only if you run agents in Pi
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Initialize a workspace and check it:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
cd my-workspace
|
|
83
|
+
oats init
|
|
84
|
+
oats doctor
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Create a specialist and put it to work:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
oats create backend-expert --type developers --repo . --work worktree
|
|
91
|
+
oats spawn backend-expert --purpose implement --task "Add rate limiting to the public API"
|
|
92
|
+
oats status --team
|
|
93
|
+
oats retire <instance>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Or adopt a complete reference configuration from an official package:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
oats init --package oats.dev --config default
|
|
100
|
+
oats install
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`oats init --package` acquires and exact-locks the full closure, validates the
|
|
104
|
+
chosen template against its providers, writes it as your local
|
|
105
|
+
`oats-config.yaml`, and records the adopted base so `oats config diff` and
|
|
106
|
+
`oats config sync` can compare against it later.
|
|
107
|
+
|
|
108
|
+
Start capturing the turn record on this machine:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
oats setup
|
|
112
|
+
oats recall "rate limiting"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
A Pi agent can also load the `oats-getting-started` skill and guide the setup.
|
|
116
|
+
|
|
117
|
+
## How it works
|
|
118
|
+
|
|
119
|
+
> **Package distributes. Capability teaches or enables. Config assigns. Soul specializes. Instance works.**
|
|
120
|
+
|
|
121
|
+
| Concept | Meaning |
|
|
122
|
+
| --- | --- |
|
|
123
|
+
| **Package** | Git or local acquisition, exact lock, update, integrity, dependency, and review unit. |
|
|
124
|
+
| **Capability** | Independently targetable behavior inside a package: skills, instructions, commands, agents, requirements, or lifecycle hooks. |
|
|
125
|
+
| **Config template** | A complete reference `oats-config.yaml` a package ships. You adopt one explicitly, and it becomes your ordinary local config. |
|
|
126
|
+
| **Adopted base** | The exact template recorded at adoption, kept commit-safe so guided sync can compare against it. |
|
|
127
|
+
| **Config** | Local authority: selects layers, targets capabilities to agent types and souls, applies settings, exclusions, and overrides. |
|
|
128
|
+
| **Soul** | Durable specialist identity, curriculum, and accumulated knowledge. |
|
|
129
|
+
| **Instance** | One disposable incarnation and provider-native working session. |
|
|
130
|
+
|
|
131
|
+
### Souls and instances
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
agents/backend-expert/soul/
|
|
135
|
+
soul.yaml
|
|
136
|
+
AGENTS.md
|
|
137
|
+
CLAUDE.md -> AGENTS.md
|
|
138
|
+
skills/
|
|
139
|
+
knowledge/
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Every instance has two operational surfaces. The **instance home** is the
|
|
143
|
+
brain and operational boundary: instructions, task, soul reference, selected
|
|
144
|
+
skills, provenance, and episodic state. **`work/`** is the repository or
|
|
145
|
+
workspace view where reading, editing, Git, builds, tests, and commits happen.
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
<instance-home>/
|
|
149
|
+
AGENTS.md
|
|
150
|
+
CLAUDE.md -> AGENTS.md
|
|
151
|
+
TASK.md
|
|
152
|
+
instance.json
|
|
153
|
+
soul/
|
|
154
|
+
.agents/skills/
|
|
155
|
+
.claude/skills -> ../.agents/skills
|
|
156
|
+
work/
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Work modes: `worktree` (isolated branch for implementation), `checkout` (the
|
|
160
|
+
repository's shared checkout), `attached` (another instance's tree, for
|
|
161
|
+
service agents and reviewers), and `workspace` (read-only multi-repository
|
|
162
|
+
context). Placement that cannot be proved fails closed.
|
|
163
|
+
|
|
164
|
+
Provider behavior stays deliberate. Pi runs with ambient skill, context, and
|
|
165
|
+
template discovery curtailed while operator-configured extensions remain
|
|
166
|
+
enabled. Claude Code keeps the operator's settings, skills, plugins, MCP,
|
|
167
|
+
hooks, and memory, and OATS adds its canonical composed resources. The
|
|
168
|
+
guarantee is an exact OATS-managed curriculum, not identical ambient behavior
|
|
169
|
+
across providers.
|
|
170
|
+
|
|
171
|
+
### Configuration and layers
|
|
172
|
+
|
|
173
|
+
Config is scoped from laptop to workspace to repository. Closer declarations
|
|
174
|
+
win; within a level, soul beats agent type beats global. Explicit exclusions
|
|
175
|
+
and layer `none` are supported.
|
|
176
|
+
|
|
177
|
+
OATS has five conceptual layers:
|
|
178
|
+
|
|
179
|
+
1. **Soul**: durable specialist identity and curriculum (kernel).
|
|
180
|
+
2. **Knowledge**: capture and promotion contract (official option `oats.okf`).
|
|
181
|
+
3. **Instances**: homes, work modes, sessions, lifecycle (kernel).
|
|
182
|
+
4. **Messaging**: reachable agent identities (official option `oats.aweb`).
|
|
183
|
+
5. **Tasks**: durable work queue (optional `oats.jira`, `oats.linear`, or another provider).
|
|
184
|
+
|
|
185
|
+
Knowledge, messaging, and tasks are exclusive slots. Additive capabilities
|
|
186
|
+
such as authoring and review compose independently. Inspect the resolved
|
|
187
|
+
result with `oats doctor [context] --soul <name> --json`.
|
|
188
|
+
|
|
189
|
+
### Distribution packages
|
|
190
|
+
|
|
191
|
+
A Git repository may contain ordinary development content and one or more
|
|
192
|
+
package payloads; the default payload path is `oats-package/`.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
oats install oats.okf # official short id
|
|
196
|
+
oats install https://github.com/example/project.git@v1.0.0 # Git source
|
|
197
|
+
oats install 'https://github.com/example/project.git@v1.0.0#dist' # contained path
|
|
198
|
+
oats install ../project/oats-package # local path
|
|
199
|
+
oats update <package-id> # explicit advance
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Installing materializes each capability into
|
|
203
|
+
`.agents/capabilities/installed/<id>/`. The `lockfileVersion: 2` lock records
|
|
204
|
+
packages (source, exact commit, path, payload integrity, dependencies) and
|
|
205
|
+
capabilities (version, provider, path, artifact integrity, executable trust).
|
|
206
|
+
Bare `oats install` restores the exact lock and never advances source state.
|
|
207
|
+
|
|
208
|
+
## The turn record
|
|
209
|
+
|
|
210
|
+
`packages/record` is the load-bearing layer. Every conversation an agent has
|
|
211
|
+
is captured as signed turns in an append-only, content-addressed, replicated
|
|
212
|
+
record with exact provenance, and searched locally through a SQLite full-text
|
|
213
|
+
index. It has no runtime dependencies beyond Node.
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
oats setup # install capture hooks and the background watcher
|
|
217
|
+
oats capture --status # what is being captured, by whom
|
|
218
|
+
oats recall "<query>" # search every captured session and message
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
The normative specification and its conformance vectors live in
|
|
222
|
+
[`packages/record/docs/`](packages/record/docs/).
|
|
223
|
+
|
|
224
|
+
## Official packages
|
|
225
|
+
|
|
226
|
+
Official packages are independently versioned Git repositories in the
|
|
227
|
+
[`awebai`](https://github.com/awebai) organization, referenced from the
|
|
228
|
+
kernel's bundled catalog:
|
|
229
|
+
|
|
230
|
+
| Package | Provides |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| [`oats-okf`](https://github.com/awebai/oats-okf) | `oats.okf` knowledge layer and memory harvesting |
|
|
233
|
+
| [`oats-aweb`](https://github.com/awebai/oats-aweb) | `oats.aweb` messaging and identity layer |
|
|
234
|
+
| [`oats-authoring`](https://github.com/awebai/oats-authoring) | capability, skill, soul, and integration authoring craft |
|
|
235
|
+
| [`oats-jira`](https://github.com/awebai/oats-jira) | adopter-selected Jira tasks layer |
|
|
236
|
+
| [`oats-linear`](https://github.com/awebai/oats-linear) | adopter-selected Linear tasks layer |
|
|
237
|
+
| [`oats-dev`](https://github.com/awebai/oats-dev) | OATS development config template plus `oats.review` |
|
|
238
|
+
|
|
239
|
+
External CLIs and runtime plugins are separate informed-consent requirements.
|
|
240
|
+
Spawn verifies them and never installs them implicitly.
|
|
241
|
+
|
|
242
|
+
## OATS Desktop
|
|
243
|
+
|
|
244
|
+
The CLI is the mutation boundary; OATS Desktop is the situational-awareness
|
|
245
|
+
layer. It shows identities, tasks, relationships, specialist context,
|
|
246
|
+
workspaces, real terminals, and lifecycle state in one view when a team has
|
|
247
|
+
too many concurrent sessions for a flat terminal list to remain readable.
|
|
248
|
+
|
|
249
|
+
Installers for macOS (arm64 and x64) and Linux (x64) are published on the
|
|
250
|
+
[Releases](https://github.com/awebai/oats/releases) page with checksums and
|
|
251
|
+
build provenance. The Desktop can also be run from `packages/desktop/` in a
|
|
252
|
+
framework checkout. See [OATS Desktop](docs/desktop.md).
|
|
253
|
+
|
|
254
|
+
## Maturity
|
|
255
|
+
|
|
256
|
+
This repository carries three layers of different maturity behind one `oats`
|
|
257
|
+
entry point:
|
|
258
|
+
|
|
259
|
+
| Layer | Where | Status |
|
|
260
|
+
| --- | --- | --- |
|
|
261
|
+
| Turn record | `packages/record` | **Core.** Stable, specified, conformance-tested. |
|
|
262
|
+
| Soul and instance runtime | `bin/`, `lib/`, `capabilities/` | **Shipped.** Maintained and in production use. |
|
|
263
|
+
| Synthesis tools (`oats experimental <dress\|spawn\|segments\|mind>`) | `packages/experimental` | **Experimental.** Unproven by design, interfaces may change, never included in the published package. |
|
|
264
|
+
|
|
265
|
+
## Upgrading and migration
|
|
266
|
+
|
|
267
|
+
**From OAS.** If a deployment was created by OAS (`@oas-framework/oas`, files
|
|
268
|
+
named `oas-config.yaml` and `oas-lock.json`), this kernel recognizes none of
|
|
269
|
+
those names. Convert each scope with one transactional command; any failure
|
|
270
|
+
restores the original bytes:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
oats migrate --from-oas --dry-run
|
|
274
|
+
oats migrate --from-oas
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Read [Migration from OAS](docs/migration-from-oas.md) first.
|
|
278
|
+
|
|
279
|
+
**From 0.18 official capabilities.** For OATS-named scopes, valid v1 locks and
|
|
280
|
+
installed capabilities keep working after the kernel upgrade. Preview and
|
|
281
|
+
apply the guided migration when ready:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
oats migrate --official --recursive --dry-run --dir <team-root>
|
|
285
|
+
oats migrate --official --recursive --dir <team-root>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
It preserves config files and capability ids, leaves custom, owned, and path
|
|
289
|
+
capabilities untouched, never transfers executable trust silently, and prints
|
|
290
|
+
exact follow-ups. `oats doctor` reports readiness and cutover state.
|
|
291
|
+
|
|
292
|
+
## CLI essentials
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
oats status --team
|
|
296
|
+
oats create <soul> --type <agent-type> --repo <repo> --work worktree
|
|
297
|
+
oats spawn <soul> --purpose <role> --task "..."
|
|
298
|
+
oats retire <instance>
|
|
299
|
+
|
|
300
|
+
oats install [<package-source>]
|
|
301
|
+
oats update <package-id>
|
|
302
|
+
oats trust <capability>
|
|
303
|
+
oats init --package <package-id> --config <template>
|
|
304
|
+
oats config diff | sync | adopt <package-id> --config <template>
|
|
305
|
+
oats doctor --json
|
|
306
|
+
|
|
307
|
+
oats setup | capture | recall "<query>"
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Package, config, and lock operations have deterministic CLI and stable JSON
|
|
311
|
+
forms. Do not hand-edit the lock or installed stores.
|
|
312
|
+
|
|
313
|
+
## Documentation
|
|
314
|
+
|
|
315
|
+
- [Souls and instances](docs/souls-and-instances.md)
|
|
316
|
+
- [Configuration](docs/configuration.md)
|
|
317
|
+
- [Layers](docs/layers.md)
|
|
318
|
+
- [Distribution packages](docs/packages.md)
|
|
319
|
+
- [Capabilities](docs/capabilities.md)
|
|
320
|
+
- [Knowledge](docs/knowledge.md) and [Knowledge theory](docs/knowledge-theory.md)
|
|
321
|
+
- [Integrations](docs/integrations.md)
|
|
322
|
+
- [Implementation](docs/implementation.md)
|
|
323
|
+
- [OATS Desktop](docs/desktop.md)
|
|
324
|
+
- [Migration from OAS](docs/migration-from-oas.md)
|
|
325
|
+
- [Release notes](docs/release-notes/)
|
|
326
|
+
|
|
327
|
+
## Contributing
|
|
328
|
+
|
|
329
|
+
Issues and pull requests are welcome at
|
|
330
|
+
[github.com/awebai/oats](https://github.com/awebai/oats).
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
git clone https://github.com/awebai/oats.git
|
|
334
|
+
cd oats
|
|
335
|
+
npm ci
|
|
336
|
+
npm run check
|
|
337
|
+
npm test
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
`npm test` runs the kernel, record, and experimental suites. The Desktop
|
|
341
|
+
suites need their own dependencies; install them once and the same command
|
|
342
|
+
picks them up:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
(cd packages/desktop && ELECTRON_SKIP_BINARY_DOWNLOAD=1 npm ci)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Pull requests run the same checks on Node 22 through
|
|
349
|
+
[Pull Request CI](.github/workflows/pull-request.yml): tests, project
|
|
350
|
+
validation, a package dry run, and a clean-room install smoke test. Keep
|
|
351
|
+
changes small and reviewable, add a test with every behavior change, and
|
|
352
|
+
describe the reachable defect in the commit message.
|
|
353
|
+
|
|
354
|
+
## Releases and versioning
|
|
355
|
+
|
|
356
|
+
OATS follows [semantic versioning](https://semver.org/). Each release is a
|
|
357
|
+
Git tag `vX.Y.Z` with notes in [`docs/release-notes/`](docs/release-notes/).
|
|
358
|
+
A release publishes `@awebai/oats` and `@awebai/oats-pi` to npm and attaches
|
|
359
|
+
the Desktop installers, `SHA256SUMS`, and build provenance to the matching
|
|
360
|
+
[GitHub Release](https://github.com/awebai/oats/releases). The same release
|
|
361
|
+
can be built, staged, and published without GitHub Actions through the
|
|
362
|
+
[runnerless release lane](docs/release-lane.md). Official packages are
|
|
363
|
+
versioned and tagged in their own repositories and pinned by the kernel's
|
|
364
|
+
catalog.
|
|
365
|
+
|
|
366
|
+
## Origins and acknowledgements
|
|
367
|
+
|
|
368
|
+
OATS began as **OAS (Open Agent Specialization)**, designed and written by
|
|
369
|
+
Josep (Pepe) Garcia-Reyero Sais. The architecture, the kernel, the package
|
|
370
|
+
engine, the Desktop, and the official packages are his work; OATS continues
|
|
371
|
+
it under its current name, and his authorship is preserved throughout this
|
|
372
|
+
repository's history.
|
|
373
|
+
|
|
374
|
+
OATS grew from the a2am team architecture and the LFX engineering vision for
|
|
375
|
+
agent-native engineering. It builds on open formats and conventions including
|
|
376
|
+
AGENTS.md, Agent Skills, and OKF.
|
|
377
|
+
|
|
378
|
+
## License
|
|
379
|
+
|
|
380
|
+
[MIT](LICENSE) © 2026 OATS Framework
|