@awebai/oats 0.29.4 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/bin/oats.mjs +194 -50
- package/docs/capabilities.md +160 -171
- package/docs/capability-manifest.schema.json +6 -11
- package/docs/configuration.md +213 -64
- package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
- package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
- package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
- package/docs/design/2026-09-27-team-model-v2.md +97 -117
- package/docs/design/2026-09-28-automations-trust.md +38 -0
- package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
- package/docs/design/HISTORY.md +65 -0
- package/docs/design/README.md +23 -54
- package/docs/desktop-cli-api.md +1787 -1777
- package/docs/desktop.md +30 -91
- package/docs/execution-targets.md +146 -292
- package/docs/first-team.md +31 -17
- package/docs/implementation.md +77 -288
- package/docs/integrations.md +118 -320
- package/docs/knowledge-capability-authoring.md +25 -52
- package/docs/knowledge-reference/acceptance.md +3 -3
- package/docs/knowledge-reference/adoption.md +1 -1
- package/docs/knowledge-reference/harvester.md +2 -2
- package/docs/knowledge-reference/package-craft.md +3 -3
- package/docs/knowledge-reference/provider-mapping.md +3 -6
- package/docs/knowledge-reference/reader-capture.md +3 -3
- package/docs/knowledge-theory.md +62 -166
- package/docs/knowledge.md +225 -404
- package/docs/layers.md +42 -97
- package/docs/oats-local.schema.json +58 -5
- package/docs/oats-membership.schema.json +1 -8
- package/docs/oats-package.schema.json +5 -5
- package/docs/oats-workspace.schema.json +8 -22
- package/docs/official-catalog.md +25 -28
- package/docs/packages.md +45 -63
- package/docs/plans/0.30-close-out.md +83 -0
- package/docs/release-lane.md +82 -0
- package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
- package/docs/release-notes/v0.19.0.md +48 -147
- package/docs/release-notes/v0.19.1.md +2 -3
- package/docs/release-notes/v0.19.3.md +2 -15
- package/docs/release-notes/v0.20.0.md +0 -15
- package/docs/release-notes/v0.22.0.md +71 -138
- package/docs/release-notes/v0.22.1.md +42 -90
- package/docs/release-notes/v0.22.10.md +1 -1
- package/docs/release-notes/v0.22.11.md +1 -47
- package/docs/release-notes/v0.22.12.md +4 -13
- package/docs/release-notes/v0.22.13.md +1 -42
- package/docs/release-notes/v0.22.14.md +3 -11
- package/docs/release-notes/v0.22.15.md +1 -46
- package/docs/release-notes/v0.22.16.md +6 -8
- package/docs/release-notes/v0.22.18.md +1 -99
- package/docs/release-notes/v0.22.19.md +3 -14
- package/docs/release-notes/v0.22.2.md +6 -15
- package/docs/release-notes/v0.22.3.md +0 -1
- package/docs/release-notes/v0.22.4.md +1 -14
- package/docs/release-notes/v0.22.5.md +2 -12
- package/docs/release-notes/v0.22.6.md +0 -3
- package/docs/release-notes/v0.23.0.md +9 -25
- package/docs/release-notes/v0.23.1.md +9 -25
- package/docs/release-notes/v0.23.2.md +2 -4
- package/docs/release-notes/v0.24.0.md +56 -97
- package/docs/release-notes/v0.24.1.md +7 -11
- package/docs/release-notes/v0.24.10.md +34 -45
- package/docs/release-notes/v0.24.11.md +12 -20
- package/docs/release-notes/v0.24.12.md +35 -48
- package/docs/release-notes/v0.24.13.md +34 -41
- package/docs/release-notes/v0.24.2.md +9 -13
- package/docs/release-notes/v0.24.3.md +7 -11
- package/docs/release-notes/v0.24.4.md +6 -6
- package/docs/release-notes/v0.24.5.md +6 -10
- package/docs/release-notes/v0.24.6.md +2 -5
- package/docs/release-notes/v0.24.7.md +46 -75
- package/docs/release-notes/v0.24.8.md +58 -96
- package/docs/release-notes/v0.24.9.md +38 -54
- package/docs/release-notes/v0.25.0.md +59 -76
- package/docs/release-notes/v0.25.1.md +57 -81
- package/docs/release-notes/v0.25.2.md +51 -70
- package/docs/release-notes/v0.25.3.md +11 -13
- package/docs/release-notes/v0.25.4.md +9 -13
- package/docs/release-notes/v0.25.5.md +3 -5
- package/docs/release-notes/v0.25.6.md +20 -29
- package/docs/release-notes/v0.25.7.md +5 -7
- package/docs/release-notes/v0.25.8.md +26 -39
- package/docs/release-notes/v0.26.0.md +175 -646
- package/docs/release-notes/v0.27.0.md +4 -5
- package/docs/release-notes/v0.27.1.md +4 -6
- package/docs/release-notes/v0.27.2.md +1 -1
- package/docs/release-notes/v0.28.0.md +57 -124
- package/docs/release-notes/v0.29.0.md +89 -208
- package/docs/release-notes/v0.29.1.md +1 -1
- package/docs/release-notes/v0.29.2.md +3 -4
- package/docs/release-notes/v0.30.0.md +205 -0
- package/docs/release-notes/v0.30.1.md +123 -0
- package/docs/schedules.md +280 -363
- package/docs/servers.md +99 -117
- package/docs/soul.schema.json +2 -9
- package/docs/souls-and-instances.md +145 -158
- package/docs/workspaces.md +137 -215
- package/lib/automations.mjs +21 -6
- package/lib/core.mjs +226 -74
- package/lib/instance-events.mjs +1 -1
- package/lib/instance-inspect.mjs +109 -34
- package/lib/instance-lifecycle.mjs +14 -1
- package/lib/instance-resolution.mjs +26 -27
- package/lib/launch-preference.mjs +87 -0
- package/lib/materialize.mjs +3 -3
- package/lib/packages.mjs +1 -1
- package/lib/resolve.mjs +30 -88
- package/lib/schedule.mjs +1 -1
- package/lib/teams-verbs.mjs +195 -0
- package/lib/teams.mjs +190 -0
- package/lib/triggers.mjs +2 -2
- package/lib/workspace.mjs +54 -147
- package/package-catalog.json +10 -16
- package/package.json +1 -3
- package/skills/oats-getting-started/SKILL.md +25 -13
- package/capabilities/oats-authoring/LICENSE +0 -21
- package/capabilities/oats-authoring/oats-package.json +0 -11
- package/capabilities/oats-authoring/oats.json +0 -12
- package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
- package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
- package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
- package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
- package/capabilities/oats-aweb/injects/aweb.md +0 -47
- package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
- package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
- package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
- package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
- package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
- package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
- package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
- package/capabilities/oats-aweb/oats.json +0 -208
- package/capabilities/oats-aweb/skills/LICENSE +0 -21
- package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
- package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
- package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
- package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
- package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
- package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
- package/capabilities/oats-jira/injects/jira.md +0 -10
- package/capabilities/oats-jira/oats.json +0 -22
- package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
- package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
- package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
- package/capabilities/oats-linear/injects/linear.md +0 -8
- package/capabilities/oats-linear/oats.json +0 -24
- package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
- package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
- package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
- package/capabilities/oats-okf/injects/okf.md +0 -42
- package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
- package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
- package/capabilities/oats-okf/lib/config.mjs +0 -124
- package/capabilities/oats-okf/lib/consult.mjs +0 -518
- package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
- package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
- package/capabilities/oats-okf/lib/inspection.mjs +0 -119
- package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
- package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-okf/lib/io.mjs +0 -118
- package/capabilities/oats-okf/lib/migration.mjs +0 -137
- package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
- package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
- package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
- package/capabilities/oats-okf/lib/sources.mjs +0 -424
- package/capabilities/oats-okf/lib/stores.mjs +0 -473
- package/capabilities/oats-okf/lib/worker.mjs +0 -497
- package/capabilities/oats-okf/oats.json +0 -148
- package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
- package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
- package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
- package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
- package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
- package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
- package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
- package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
- package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
- package/capabilities/oats-okf-harvest/oats.json +0 -26
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
- package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
- package/capabilities/oats-okf-maintenance/oats.json +0 -21
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
- package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
- package/capabilities/oats-review/injects/review.md +0 -69
- package/capabilities/oats-review/oats.json +0 -10
- package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
- package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
- package/docs/conventions.md +0 -90
- package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
- package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
- package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
- package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
- package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
- package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
- package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
- package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
- package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
- package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
- package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
- package/docs/design/2026-09-15-captured-dispatch.md +0 -127
- package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
- package/docs/design/2026-09-15-package-preparation.md +0 -100
- package/docs/design/2026-09-15-portable-data-contract.md +0 -121
- package/docs/design/2026-09-15-portable-declarations.md +0 -189
- package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
- package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
- package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
- package/docs/design/2026-09-15-source-observation.md +0 -119
- package/docs/design/2026-09-16-captured-admission.md +0 -77
- package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
- package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
- package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
- package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
- package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
- package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
- package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
- package/docs/design/2026-09-16-portable-onboarding.md +0 -179
- package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
- package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
- package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
- package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
- package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
- package/docs/design/2026-09-17-captured-native-start.md +0 -58
- package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
- package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
- package/docs/design/2026-09-17-public-captured-start.md +0 -108
- package/docs/design/2026-09-17-public-prepare-request.md +0 -90
- package/docs/design/2026-09-18-captured-pi-host.md +0 -205
- package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
- package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
- package/docs/design/2026-09-20-redesign-program-board.md +0 -142
- package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
- package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
- package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
- package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
- package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
- package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
- package/docs/design/2026-09-24-phase-d-plan.md +0 -305
- package/docs/design/2026-09-25-teams-contract.md +0 -258
- package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
- package/docs/design/desktop-ux-plan.md +0 -362
- package/docs/design/launch-configurations.md +0 -168
- package/docs/design/okf-mirror-provenance.md +0 -105
- package/docs/design/operations-contract.md +0 -141
- package/docs/oats-member.schema.json +0 -38
- package/skills/integration-authoring/SKILL.md +0 -84
- package/skills/oats-support/SKILL.md +0 -79
- package/skills/skill-craft/SKILL.md +0 -109
- package/skills/soul-craft/SKILL.md +0 -116
|
@@ -24,16 +24,15 @@ bundled `capabilities/oats-aweb` is the tag's tree.
|
|
|
24
24
|
- **An agent playbook.** The new `oats-aweb` skill carries the playbook, and
|
|
25
25
|
the inject is shorter and points to it. `oats aweb roster --label <label>`
|
|
26
26
|
is new.
|
|
27
|
-
- **
|
|
28
|
-
per-deployment login and a recorded owner. 1.15 makes no `aw auth` or
|
|
27
|
+
- **No per-workspace personal-team enrollment.** 1.15 makes no `aw auth` or
|
|
29
28
|
`aw team ensure` call, and the primary team resolves as in 1.14.2. A
|
|
30
29
|
host-set `settings.oats.aweb.roots.personal` is ignored with the readiness
|
|
31
30
|
warning `personal-root-deferred`.
|
|
32
31
|
|
|
33
32
|
## Desktop
|
|
34
33
|
|
|
35
|
-
- **Line counts on the Changes rows** (#245, #246). The server passes kernel
|
|
36
|
-
|
|
34
|
+
- **Line counts on the Changes rows** (#245, #246). The server passes the kernel's
|
|
35
|
+
per-file counts (#238) through, and each Git & GitHub Changes row ends with "+84 −3",
|
|
37
36
|
or "binary". An unknown count (untracked, submodule) and older kernels show
|
|
38
37
|
nothing, never "+0".
|
|
39
38
|
- **The Git & GitHub tab counts unresolved review threads** (#247). The tab and
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# OATS 0.30.0
|
|
2
|
+
|
|
3
|
+
## Upgrade
|
|
4
|
+
|
|
5
|
+
> **BREAKING: 0.30.0, oats.aweb 1.17 and oats.framework 1.4.0 move in
|
|
6
|
+
> lockstep.** oats.aweb 1.17 and oats.core / oats.setup 2.2.0 require
|
|
7
|
+
> `oats >=0.30.0` (`E_CAPABILITY_INCOMPATIBLE` on an older kernel), and 0.30
|
|
8
|
+
> refuses the 0.29 team keys.
|
|
9
|
+
|
|
10
|
+
**The workspace** (by PR). 0.30 refuses these keys with `E_WORKSPACE_SCHEMA`
|
|
11
|
+
(reason `removed-key`, naming the replacement): `messaging.byTeam`,
|
|
12
|
+
`defaults.byTeam`, `external[].team`, `soul.yaml` `team:` and
|
|
13
|
+
`oats-membership.yaml` `team`. 0.29.4 accepts their removal, so remove them
|
|
14
|
+
first. Then move the pins to `oats.framework: v1.4.0`, `oats.aweb: v1.17.1`,
|
|
15
|
+
`oats.okf: v4.0.4`, and replace `oats.dev` with `oats.engineering: v1.1.0`.
|
|
16
|
+
|
|
17
|
+
**Each deployment:**
|
|
18
|
+
|
|
19
|
+
1. **Upgrade the CLI**: the npm package `@awebai/oats`, the pi adapter and the
|
|
20
|
+
Desktop, all 0.30.0. Then run `oats sync`.
|
|
21
|
+
2. **Remove `settings.oats.aweb.team`** from `oats-local.yaml`: teams are
|
|
22
|
+
now `oats teams` and `oats soul teams`, and oats.aweb 1.17 refuses the
|
|
23
|
+
setting.
|
|
24
|
+
3. **Run setup** from the deployment: `oats aweb setup --soul <soul>`, with
|
|
25
|
+
any soul that has messaging. Plain `oats aweb setup` outside an instance
|
|
26
|
+
home is refused. With an existing messaging root, setup names the team the
|
|
27
|
+
root is in: record it with `oats teams add <label> --team <id>` (the first
|
|
28
|
+
team becomes `defaultTeam`). With no account:
|
|
29
|
+
`oats aweb setup --soul <soul> --username <u>`.
|
|
30
|
+
4. **Join the teams you share**: ask the owner for an invite, then
|
|
31
|
+
`oats aweb setup --soul <soul> --join <label> --invite <token>
|
|
32
|
+
[--service <url>] [--name <alias>]`. A half-finished join resumes with
|
|
33
|
+
`--join <label> --service <url>` and no new invite. Until the flag day,
|
|
34
|
+
declare the team here as a local team: `oats teams add <label> --team <id>`.
|
|
35
|
+
5. **Put souls in teams here**, in place of the removed `team:`:
|
|
36
|
+
`oats soul teams '*' --add <label>` or `oats soul teams <soul> --add <label>`.
|
|
37
|
+
6. **Trust the workspace automations this host runs** (a host that runs
|
|
38
|
+
workspace triggers or schedules): add them to `oats-local.yaml`
|
|
39
|
+
`automations.trust` (`<member>/<id>` entries, or `"*"`). Until then they
|
|
40
|
+
do not run; `oats workspace status` names each missing line.
|
|
41
|
+
7. **Check**: `oats teams`, and `oats readiness --soul <soul>` shows no team
|
|
42
|
+
problem in `checks.configured`.
|
|
43
|
+
|
|
44
|
+
**The flag day.** Commit a shared team's id in `oats-workspace.yaml`, and add
|
|
45
|
+
`launch:` to a committed soul, only once every deployment of the workspace
|
|
46
|
+
runs 0.30. 0.29.4 refuses both: members are read at their latest commit, and
|
|
47
|
+
its schemas reject the unknown keys.
|
|
48
|
+
|
|
49
|
+
**A deployment still on 0.29.4** has a bundled catalog that does not know
|
|
50
|
+
`oats.engineering`, so its bare-version pin is `E_PACKAGE_MISSING`. Until it
|
|
51
|
+
upgrades, set `OATS_PACKAGE_CATALOG` to a catalog file that lists it, such as
|
|
52
|
+
0.30.0's `package-catalog.json`.
|
|
53
|
+
|
|
54
|
+
## Team model v2
|
|
55
|
+
|
|
56
|
+
- **Teams are local to each deployment.** `oats-local.yaml` holds the local
|
|
57
|
+
teams (`teams.<label>: { team, description? }`), `defaultTeam`, and which
|
|
58
|
+
teams each soul may join here (`souls.teams`, `"*"` for every soul, plus an
|
|
59
|
+
optional `souls.default` per soul). Nothing committed says who is in a team.
|
|
60
|
+
- **A shared team is committed** in `oats-workspace.yaml` `teams:` **with its
|
|
61
|
+
provider id**. One declared without an id is `team-unmapped`: its owner
|
|
62
|
+
creates it and commits the id. A label in both files is
|
|
63
|
+
`team-label-collision`, a warning, and the shared definition wins.
|
|
64
|
+
- **A spawn joins the default team only.** Every other eligible team is opt-in
|
|
65
|
+
per instance: `--provider oats.aweb join=<labels>` at spawn, the Desktop's
|
|
66
|
+
checkboxes, or the provider's join and leave verbs later.
|
|
67
|
+
- **A leave is never silent.** A joined team that is no longer eligible is
|
|
68
|
+
left on the next live read; a newly eligible team is offered, never joined.
|
|
69
|
+
A team a soul no longer lists is left automatically on hosted teams. On a
|
|
70
|
+
team you control (BYOT, namespace-controlled), aw cannot release the member
|
|
71
|
+
from the instance, so the leave is reported (a launch warning and an
|
|
72
|
+
`aweb-team-leave-failed` instance event) and the team's owner removes the
|
|
73
|
+
member.
|
|
74
|
+
- **`oats teams`** lists this deployment's teams, ids, default and problems;
|
|
75
|
+
`add <label> --team <id>`, `remove <label>` and `default <label>` edit
|
|
76
|
+
`oats-local.yaml` only. `remove` refuses a referenced label
|
|
77
|
+
(`E_TEAM_IN_USE`) or a shared one (`E_TEAM_SHARED`).
|
|
78
|
+
**`oats soul teams <soul>|'*'`** takes `--add`, `--remove`, `--default` and
|
|
79
|
+
`--clear-default`. Neither verb calls the provider.
|
|
80
|
+
- **`oats aweb setup`** creates and joins provider teams:
|
|
81
|
+
`--soul <soul> --create <label> --namespace <domain>` creates a team you
|
|
82
|
+
control and records it as a local team; `--soul <soul> --join <label>
|
|
83
|
+
--invite <token>` joins an existing one. Each team gets its own messaging
|
|
84
|
+
root (`settings.oats.aweb.roots.<team id>`).
|
|
85
|
+
- **Readiness** reports team problems in `checks.configured`:
|
|
86
|
+
`E_TEAM_UNCONFIGURED`, `team-unmapped`, `team-label-collision`, and
|
|
87
|
+
`default-team-changed` for a running instance. An undeclared label is
|
|
88
|
+
`E_TEAM_UNKNOWN`.
|
|
89
|
+
- **Providers** receive `OATS_DEFAULT_TEAM`, `OATS_DEFAULT_TEAM_ID`,
|
|
90
|
+
`OATS_DEFAULT_TEAM_FROM`, `OATS_TEAMS` and `OATS_TEAMS_SOURCE`. The 0.29
|
|
91
|
+
names `OATS_TEAM_LABEL`, `OATS_TEAM_LABELS` and `OATS_TEAM_ID` are unset.
|
|
92
|
+
|
|
93
|
+
## Soul launch preferences
|
|
94
|
+
|
|
95
|
+
- **A soul may declare `launch: { harness, model? }`** in `soul.yaml`
|
|
96
|
+
(`pi`, `claude` or `codex`); only a harness and a model.
|
|
97
|
+
- **`oats-local.yaml` `souls.launch` overrides it on this machine**: `"*"` for
|
|
98
|
+
every soul or one soul's entry, each a launch configuration's name or an
|
|
99
|
+
inline `{ harness, model? }`.
|
|
100
|
+
- **Precedence for a new launch:** `--launch-config` or `--harness`, then
|
|
101
|
+
`souls.launch.<soul>`, then `souls.launch."*"`, then the soul's `launch:`,
|
|
102
|
+
then `pi` with its defaults. `--model` alone keeps the deciding layer's
|
|
103
|
+
harness. A missing harness is `E_HARNESS_UNAVAILABLE`, naming the layer
|
|
104
|
+
and the fix; there is no fallback.
|
|
105
|
+
- **A home's recorded launch stays frozen.** A changed preference reaches it
|
|
106
|
+
only with `oats session start|restart --reselect-launch` or a respawn;
|
|
107
|
+
`oats readiness --home` warns `launch-changed`. `session start|restart
|
|
108
|
+
--model` keeps the recorded harness and replaces only the model (#294).
|
|
109
|
+
- `oats souls`, `oats inspect --soul` and `oats spawn … --preview` show each
|
|
110
|
+
soul's `launch` and which layer decided it.
|
|
111
|
+
|
|
112
|
+
## Changed
|
|
113
|
+
|
|
114
|
+
- **A host runs a workspace trigger or schedule only when its
|
|
115
|
+
`oats-local.yaml` trusts it** (`automations.trust: [<member>/<id>]` or
|
|
116
|
+
`"*"`). Hosts that ran workspace automations must add their trust lines;
|
|
117
|
+
`oats workspace status` names each missing line (#300).
|
|
118
|
+
- **`key` on `oats souls` rows and `oats status` agent rows**: the soul's name
|
|
119
|
+
as `souls.teams` and `souls.launch` take it (`<package>/<soul>` for a
|
|
120
|
+
package soul).
|
|
121
|
+
- **A team id must be safe**: no leading `-`, no whitespace or control
|
|
122
|
+
characters, at most 256 characters.
|
|
123
|
+
- **The teams verbs edit only their own entries** in `oats-local.yaml`;
|
|
124
|
+
comments survive.
|
|
125
|
+
|
|
126
|
+
## Fixed
|
|
127
|
+
|
|
128
|
+
- **An opted-in second team (`join=`) now yields a connected, usable
|
|
129
|
+
identity** (oats.aweb 1.17.1). It never did against a real aw before.
|
|
130
|
+
- **A newcomer can join a shared team** (oats.aweb 1.17.1): `oats aweb setup
|
|
131
|
+
--join <label> --invite <token>` takes `--service <url>` and `--name <alias>`,
|
|
132
|
+
and a half-finished join resumes without a new invite.
|
|
133
|
+
- **A lost team, or a retire, on a team you control hands the owner the exact
|
|
134
|
+
cleanup command** (oats.aweb 1.17.1), in place of a silent leftover member.
|
|
135
|
+
- **Knowledge readiness is answered.** oats.okf 4.0.4 answers the kernel's
|
|
136
|
+
documented readiness check; on 0.29.x it was `unknown`.
|
|
137
|
+
- **`oats session start` and `restart` show the launch hooks' warnings**, as
|
|
138
|
+
spawn does (#295): JSON `warnings`, always present, and each is kept as a
|
|
139
|
+
`launch-warning` instance event.
|
|
140
|
+
- **`oats readiness --soul` and `oats inspect --soul` materialise the soul's
|
|
141
|
+
copy at the resolved commit first**, as spawn does, so a soul not yet
|
|
142
|
+
spawned at this commit no longer reads as a missing declaration (#298).
|
|
143
|
+
- **`oats retire` can retire a home from before 0.25.9 whose session is
|
|
144
|
+
gone**: only when the recorded window or server is gone AND no live process
|
|
145
|
+
works in the home; anything live or unclear still refuses, `--force`
|
|
146
|
+
included (#299).
|
|
147
|
+
|
|
148
|
+
## Known in 0.30.0
|
|
149
|
+
|
|
150
|
+
The first two are fixed in 0.30.1; the last is how aw works on a team you
|
|
151
|
+
control.
|
|
152
|
+
|
|
153
|
+
- With no teams configured, a spawn is refused by the provider
|
|
154
|
+
(`E_SPAWN_FAILED`, relaying "no teams configured: run `oats aweb setup`"),
|
|
155
|
+
not by the kernel's `E_TEAM_UNCONFIGURED`.
|
|
156
|
+
- A capability operator command run from a deployment needs `--soul <soul>`.
|
|
157
|
+
- On a team you control (BYOT, namespace-controlled), retiring an instance, or
|
|
158
|
+
a spawn that rolls back, deletes its workspace but cannot revoke its
|
|
159
|
+
membership; its alias stays on the team, and the retire prints the owner's
|
|
160
|
+
exact `aw id team remove-member` command (and records it as
|
|
161
|
+
`pendingControllerCleanup`). Hosted teams release automatically.
|
|
162
|
+
|
|
163
|
+
## Packages
|
|
164
|
+
|
|
165
|
+
- **oats.framework `oats-framework/v1.4.0`**: oats.core 2.2.0 and oats.setup
|
|
166
|
+
2.2.0 require `>=0.30.0` and teach the team model v2 and onboarding through
|
|
167
|
+
`oats aweb setup`.
|
|
168
|
+
- **oats.aweb `v1.17.1`** (from 1.16.0): one aw floor, `>=1.36.13` (1.16.1);
|
|
169
|
+
the kernel's teams, with no provider `team` setting (a stale one is refused)
|
|
170
|
+
and one root per team; setup's `--create` and `--join`; the teams
|
|
171
|
+
document's shared/local `from`, `warnings[]` and recently left teams; the
|
|
172
|
+
newcomer's first `--join`, `--soul` on operator commands, the
|
|
173
|
+
`aweb-team-leave-failed` event and the second-team fix (1.17.1); in 1.17.1
|
|
174
|
+
also the resumable `--join` with `--service`/`--name`, the owner's cleanup
|
|
175
|
+
command on a team you control, and a stale `team` setting refused only
|
|
176
|
+
where teams are chosen, so retire still cleans up.
|
|
177
|
+
- **oats.okf `v4.0.4`** (from 4.0.1): the harvester and maintainer live in the
|
|
178
|
+
default team, with no `okf` team (4.0.2); consultation works with harvest
|
|
179
|
+
off (4.0.3); readiness is answered (4.0.4).
|
|
180
|
+
- **oats.engineering `v1.1.0` replaces oats.dev**, which is retired along with
|
|
181
|
+
its catalog aliases (`oats.review`). It ships `oats.engineering-expert`,
|
|
182
|
+
`oats.developer`, `oats.code-review` and the `code-reviewer` package soul.
|
|
183
|
+
|
|
184
|
+
## Desktop
|
|
185
|
+
|
|
186
|
+
- **A Workspace Teams tab** (#270), before Souls: this computer's teams and
|
|
187
|
+
default, with add, remove and default. A soul page has Teams here (#277),
|
|
188
|
+
the spawn dialog shows the fixed default team and unchecked opt-in boxes,
|
|
189
|
+
and an unmapped default team blocks the spawn with its fix.
|
|
190
|
+
- **The teams panel** shows each team as shared or local, the provider's
|
|
191
|
+
warnings (#286), recently left teams (#270), and a join or leave warning
|
|
192
|
+
under its row (#282). Readiness team items say where the team is declared.
|
|
193
|
+
- **The Spawn view groups souls by their default team** and chips their
|
|
194
|
+
teams, the default first (#285).
|
|
195
|
+
- **Each soul's harness and model again**, with what chose them (#289), and
|
|
196
|
+
a session card says where a model set on this computer came from (#293).
|
|
197
|
+
- **Readiness shows `launch-changed`** for a home whose launch preference
|
|
198
|
+
moved, and the Desktop's readers accept any team id the kernel accepts
|
|
199
|
+
(#292).
|
|
200
|
+
- **One Automations item** with Schedules and Triggers subtabs (#267).
|
|
201
|
+
- **Untrusted workspace automations** need attention: the row reads "Not
|
|
202
|
+
trusted here" and shows the kernel's line to add, and Setup shows each
|
|
203
|
+
trust warning with its remedy (#301).
|
|
204
|
+
- **The spawn dialog says the kernel's missing-harness fix once** (#302).
|
|
205
|
+
- The Desktop accepts OATS CLIs `>=0.25.8 <0.31.0`.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# OATS 0.30.1
|
|
2
|
+
|
|
3
|
+
## Fixes
|
|
4
|
+
|
|
5
|
+
- **Desktop: an instance-less soul no longer takes the whole roster down.**
|
|
6
|
+
`oats status --json` reports an agent row's `key` as `null` when no instance
|
|
7
|
+
records a workspace soul, as the roster contract documents. That happens for a
|
|
8
|
+
soul directory with no instances: after a spawn preview of a soul that has
|
|
9
|
+
never been spawned, or after its last instance is retired. The 0.30.0 Desktop
|
|
10
|
+
accepted only a string there, so one such row rejected the whole observation
|
|
11
|
+
with `E_CLI_PROTOCOL` ("The installed OATS CLI returned an invalid deployment
|
|
12
|
+
observation"). The Desktop now accepts `null` and still refuses any other
|
|
13
|
+
type.
|
|
14
|
+
- **Knowledge readiness answers, fast.** With oats.okf 4.0.5, `oats readiness`
|
|
15
|
+
answers the knowledge check from okf's cache in the knowledge `stateDir`, well
|
|
16
|
+
inside the kernel's 30 s cap, instead of cloning every base and timing out as
|
|
17
|
+
`unknown` (measured: 7 s against 35 s and `unknown` before). A base that is
|
|
18
|
+
not cached yet, out of date or unreachable is reported as a named warning or
|
|
19
|
+
problem, never `unknown`. A spawn with harvest off fills the cache, spending at
|
|
20
|
+
most 20 s per base, and still refuses a soul that names a node its base does
|
|
21
|
+
not have.
|
|
22
|
+
- **Desktop: a stored workspace selection the server no longer serves** (a
|
|
23
|
+
deleted deployment) locked the Desktop out: every roster refresh refused the
|
|
24
|
+
server's reply as "belongs to a different workspace", and the switcher
|
|
25
|
+
already showed the served workspace as active. A selection that is not
|
|
26
|
+
among the served workspaces is now treated like an empty one: both rosters
|
|
27
|
+
adopt the served workspace and the stored selection is replaced. A
|
|
28
|
+
selection the server does serve, answered with another workspace, is still
|
|
29
|
+
refused.
|
|
30
|
+
- **Desktop: terminal tabs are back to native geometry.** 13px system
|
|
31
|
+
monospace, xterm's default line height, and 32px side gutters with no
|
|
32
|
+
vertical inset, as before Redesign v3. The block cursor is one cell tall
|
|
33
|
+
again. A font size you chose yourself is kept.
|
|
34
|
+
- **Desktop: the spawn dialog could stay on "Reading defaults…" forever.**
|
|
35
|
+
A routine roster refresh restarted the spawn preview while it was still
|
|
36
|
+
being read, so on a machine where the preview takes several seconds it
|
|
37
|
+
never finished. The dialog now re-reads only when a fact the preview
|
|
38
|
+
depends on changes.
|
|
39
|
+
|
|
40
|
+
## Packages
|
|
41
|
+
|
|
42
|
+
- **oats.okf 4.0.5** (was 4.0.4 in 0.30.0): the knowledge readiness fix above.
|
|
43
|
+
- **oats.engineering 1.3.0** (was 1.1.0 in 0.30.0).
|
|
44
|
+
- 1.2.0: the packaged `code-reviewer` launches on Codex with `gpt-6-astra` by default, a different model family from the developers it reviews. A machine without the `codex` binary gets `E_HARNESS_UNAVAILABLE` when it spawns `code-reviewer`, until it installs Codex or overrides the preference (`oats-local.yaml` `souls.launch`, or `--harness`/`--model` at spawn).
|
|
45
|
+
- 1.3.0: review happens on local branches, before the PR. The developer runs its adversarial loop with the `code-reviewer` on its local branch and hands the reviewed branch to its expert. The expert reviews that branch, and only when it accepts is a PR opened. A returned branch's delta goes back through the same reviewer first.
|
|
46
|
+
|
|
47
|
+
## Changed
|
|
48
|
+
|
|
49
|
+
- **Desktop: calmer selection, focus and search fields.** A selected segment
|
|
50
|
+
(Group by, List/Graph and similar) now uses the brand tint instead of
|
|
51
|
+
white-on-grey. Clicking a button, tab or row no longer draws a focus ring.
|
|
52
|
+
Keyboard focus stays visible as the tint plus a thin accent edge, not a
|
|
53
|
+
2px ring. Search and filter fields have a single border that turns accent
|
|
54
|
+
on focus, with no inner ring.
|
|
55
|
+
Sidebar instance rows are more compact, with a gap between highlighted rows,
|
|
56
|
+
and an instance's pull request number sits before its branch name instead of
|
|
57
|
+
on its own line.
|
|
58
|
+
- **The official workspace lists each package capability once.** The `oats`
|
|
59
|
+
repository kept byte mirrors of the official packages' capabilities
|
|
60
|
+
(`oats.okf`, `oats.aweb`, `oats.jira`, …) under `capabilities/`, so `oats
|
|
61
|
+
capabilities` in the official workspace also listed each of them as a member
|
|
62
|
+
capability of `github.com/awebai/oats`, beside its package. The mirrors now
|
|
63
|
+
live in `mirrors/`, which member discovery does not read, and the npm
|
|
64
|
+
package no longer carries them (nothing read them at runtime: capabilities
|
|
65
|
+
resolve from Git at the locked commit). No operator action.
|
|
66
|
+
- **Desktop: clearer Workspace views, and Spawn goes straight to the soul.**
|
|
67
|
+
Soul cards label their facts ("Team oats", "No instances" instead of a
|
|
68
|
+
bare "none"), group by repo by default, and keep a compact Spawn on the
|
|
69
|
+
instances line. Capabilities are compact one-line row cards with a
|
|
70
|
+
kind-coloured tile, their source and who uses them; a row opens the
|
|
71
|
+
capability page with the full description. Teams show one card per team,
|
|
72
|
+
split into shared and this-computer sections. Spawn on a soul card or the
|
|
73
|
+
soul page opens the spawn dialog for that soul, with a "What will be
|
|
74
|
+
created" preview (core capabilities and capabilities with their sources);
|
|
75
|
+
"Change soul" returns to the picker.
|
|
76
|
+
- **Two Desktop souls.** The `oats-desktop-designer` soul is removed.
|
|
77
|
+
`oats-desktop-expert` now owns Desktop's UX and design direction as well as
|
|
78
|
+
its product rationale, and `oats-desktop-developer` builds all of
|
|
79
|
+
`packages/desktop`, including renderer views, styles, themes and copy.
|
|
80
|
+
Running designer instances keep working until they are retired; `oats
|
|
81
|
+
status` reports their soul as no longer present.
|
|
82
|
+
- **The legacy Desktop soul trees are removed.** `agents/oats-desktop-engineer`
|
|
83
|
+
and `agents/ux-designer` were no longer offered souls. The
|
|
84
|
+
`oats-desktop-expert` knowledge node carries their durable rationale.
|
|
85
|
+
- **The remaining legacy soul trees are removed.** `agents/cli-dev`,
|
|
86
|
+
`dev-coordinator`, `docs-expert`, `integrations-expert`, `lead`,
|
|
87
|
+
`oats-coordinator` and `oats-expert` were pre-v2 soul bundles, not offered
|
|
88
|
+
souls; the offered souls live in `souls/` and the packages. Their bundled
|
|
89
|
+
knowledge gate (`npm run validate:okf`) goes with them: the souls' knowledge
|
|
90
|
+
lives in the central knowledge base, which validates itself.
|
|
91
|
+
- **Desktop: a calmer instance panel.** The summary bar under the terminal
|
|
92
|
+
(harness, tmux target, team marks, Details, Focus mode) is gone, and the
|
|
93
|
+
terminal gets its height. A panel toggle at the end of the tab bar shows or
|
|
94
|
+
hides the instance panel (⌥⌘B, Ctrl+Alt+B on Linux and Windows; also in the
|
|
95
|
+
command palette). Focus mode stays in the palette; in focus mode the panel
|
|
96
|
+
toggle and the sidebar's edge button stay visible and leave it. The Instance
|
|
97
|
+
tab drops Built from and Details. When the kernel reports drift, its header
|
|
98
|
+
shows an "older build" chip whose tooltip says what changed and that
|
|
99
|
+
re-spawning picks up the new state. Where it works is one card: the work mode
|
|
100
|
+
in plain words, then repo, branch and home. Messaging is a compact list of
|
|
101
|
+
teams, with an icon refresh and the identity address on its own line. The Git
|
|
102
|
+
& GitHub tab is now the Developer tab; it shows branch, changes and pull
|
|
103
|
+
request cards; the branch line says how far it is from main and, when it has
|
|
104
|
+
an upstream, how many commits are unpushed. An instance without Git by design
|
|
105
|
+
(directory or workspace mode) gets a calm "No Git for this instance" note
|
|
106
|
+
instead of a red error; a worktree that has gone missing still reports its
|
|
107
|
+
error.
|
|
108
|
+
- **The official workspace's souls declare launch preferences.** Its experts,
|
|
109
|
+
developers and setup admin prefer Claude Code with Opus 5.5 (`launch:` in
|
|
110
|
+
each `soul.yaml`); each machine can override them in `oats-local.yaml`
|
|
111
|
+
`souls.launch`, and spawn flags win over both.
|
|
112
|
+
|
|
113
|
+
## Still known in 0.30.1
|
|
114
|
+
|
|
115
|
+
The 0.30.0 notes said the first two below would be fixed in 0.30.1. They are
|
|
116
|
+
not in this release, and are planned for 0.30.2.
|
|
117
|
+
|
|
118
|
+
- With no teams configured, a spawn is refused by the provider
|
|
119
|
+
(`E_SPAWN_FAILED`, relaying "no teams configured: run `oats aweb setup`"),
|
|
120
|
+
not by the kernel's `E_TEAM_UNCONFIGURED`.
|
|
121
|
+
- A capability operator command run from a deployment needs `--soul <soul>`.
|
|
122
|
+
- On a team you control (BYOT), retire cannot revoke membership; the retire
|
|
123
|
+
prints the owner's `aw id team remove-member` command, as in 0.30.0.
|