@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
|
@@ -73,16 +73,15 @@ spellings. See [Upgrading from 0.26](#upgrading-from-026).
|
|
|
73
73
|
and accepts kernels `>=0.25.8 <0.28.0`.
|
|
74
74
|
- **Core capabilities name their origin** (soul, workspace or team) on the soul
|
|
75
75
|
page and the instance sidebar, on a kernel with feature `layers-from`.
|
|
76
|
-
- The unused "the workspace's team settings" origin label is gone (0.26.0
|
|
77
|
-
|
|
76
|
+
- The unused "the workspace's team settings" origin label is gone (0.26.0
|
|
77
|
+
stopped emitting it).
|
|
78
78
|
|
|
79
79
|
## Fixed
|
|
80
80
|
|
|
81
81
|
- **0.26.0's notes said per-workspace personal teams need undeployed aweb
|
|
82
82
|
server support.** The aweb service (0.8.13 and later) and CLI (1.36.8 and
|
|
83
|
-
later) already carry personal enrollment;
|
|
84
|
-
|
|
85
|
-
the team verbs come with oats.aweb 1.14.1 in a 0.27.x patch.
|
|
83
|
+
later) already carry personal enrollment; oats.aweb does not use it yet. The
|
|
84
|
+
bundled oats.aweb is still 1.13.1 (the personal team only).
|
|
86
85
|
|
|
87
86
|
## Upgrading from 0.26
|
|
88
87
|
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
is given at spawn (`--provider oats.aweb join=<labels>`) or later with
|
|
8
8
|
`oats aweb join <labels>` / the Desktop's Teams controls, and leaves with
|
|
9
9
|
`oats aweb leave <labels>`. Each joined team gets its own identity under the
|
|
10
|
-
instance home. Joined teams **poll** (their mail is read between tasks)
|
|
11
|
-
receive for joined teams is planned for oats.aweb 1.15. Joining needs
|
|
10
|
+
instance home. Joined teams **poll** (their mail is read between tasks). Joining needs
|
|
12
11
|
**aw 1.36.12 or later** (older aw answers `E_TEAM_AW_FLOOR`; the primary
|
|
13
12
|
identity still mints). A leave removes the local identity only after aweb
|
|
14
13
|
confirms the membership is released, so a failed leave can be retried.
|
|
@@ -18,11 +17,10 @@
|
|
|
18
17
|
|
|
19
18
|
## Known limitations
|
|
20
19
|
|
|
21
|
-
- The bundled oats.okf is still 2.1.5: its harvest worker spawns with `--runtime`, so each harvest answers one `deprecated-runtime-name` warning on 0.27.x. It's harmless
|
|
20
|
+
- The bundled oats.okf is still 2.1.5: its harvest worker spawns with `--runtime`, so each harvest answers one `deprecated-runtime-name` warning on 0.27.x. It's harmless.
|
|
22
21
|
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
person's active aweb team.
|
|
22
|
+
- There is no per-workspace personal team: "personal" is the person's active
|
|
23
|
+
aweb team.
|
|
26
24
|
|
|
27
25
|
## Upgrading from 0.27.0
|
|
28
26
|
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
## Known limitations
|
|
39
39
|
|
|
40
|
-
- The bundled oats.okf is still 2.1.5 (its harvest answers one `deprecated-runtime-name` warning per spawn; harmless).
|
|
40
|
+
- The bundled oats.okf is still 2.1.5 (its harvest answers one `deprecated-runtime-name` warning per spawn; harmless).
|
|
41
41
|
|
|
42
42
|
- **A `core.attributesFile` or filter driver set in the repository's own
|
|
43
43
|
config is not carried** into a recovery. Merging its patterns would change
|
|
@@ -4,141 +4,74 @@ Package souls, triggers, okf 3.0.0 remote knowledge consult, and the Workspace v
|
|
|
4
4
|
|
|
5
5
|
## Added
|
|
6
6
|
|
|
7
|
-
- **Package souls** (feature `package-souls`). A package may ship souls
|
|
8
|
-
|
|
9
|
-
`
|
|
10
|
-
|
|
11
|
-
`
|
|
12
|
-
`
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
directory or roster row. `instance.json.workspace.soul` records `name`,
|
|
35
|
-
`qualifiedName` and `package: { id, version, commit, digest, path }`, and
|
|
36
|
-
the soul id is `package:<id>#<soul>`. `oats status` shows the soul as
|
|
37
|
-
`moved` once the package pin moves. Two packages whose ids differ only by
|
|
38
|
-
`.` and `-` (`a.b`, `a-b`) and that ship a same-named soul would share an
|
|
39
|
-
agent directory: that is an `E_SOUL_AMBIGUOUS` problem in `oats sync` and
|
|
40
|
-
`oats souls`, and neither spawns.
|
|
41
|
-
|
|
42
|
-
- **Triggers** (feature `triggers`): event-driven spawns. A trigger says
|
|
43
|
-
"when a GitHub pull request event matches, spawn a new instance of this soul
|
|
44
|
-
with this task, in these teams". It is stored beside the schedules
|
|
45
|
-
(`kind: "trigger"` in `oats-schedules.json`) and evaluated by the same host
|
|
46
|
-
tick; there is no daemon or webhook. See
|
|
47
|
-
[schedules.md#triggers](../schedules.md#triggers).
|
|
48
|
-
- The source `github.pull_request` is polled with the host's `gh` at the
|
|
49
|
-
trigger's `poll` interval (at least 1m). Events: `opened`, `reopened`,
|
|
50
|
-
`ready_for_review`, `labeled`, `synchronize`, filtered by `labels` and
|
|
51
|
-
`base`.
|
|
52
|
-
- Each event fires once: its key is recorded only after a successful spawn,
|
|
53
|
-
so a failed spawn is retried on the next poll. Delivery is at least once: a
|
|
54
|
-
tick that dies between the spawn and recording its key spawns the event
|
|
55
|
-
again (held while the first instance is live, under the default `perKey: 1`). `concurrency.max` and
|
|
56
|
-
`perKey` bound the live instances of the trigger and of one PR.
|
|
57
|
-
- The purpose and task are templated from `{repo} {number} {url} {event}
|
|
58
|
-
{headSha} {trigger}` only; a PR's title and body never reach the task.
|
|
59
|
-
`spawn.teams` becomes the messaging capability's `join=`. The instance gets
|
|
60
|
-
the event as `OATS_TRIGGER_EVENT_FILE` (`<home>/.oats/trigger-event.json`)
|
|
61
|
-
and records `instance.json.trigger`.
|
|
62
|
-
- `oats trigger add (--file | --from <package>:<template> --set …) | list |
|
|
63
|
-
show | enable | disable | remove | test | status`, all with `--json`.
|
|
64
|
-
`oats trigger test` checks gh auth and where its credential comes from
|
|
65
|
-
(warning when the host timer cannot reach it, such as a shell-only
|
|
66
|
-
`GH_TOKEN`), the repository and your push/maintain/admin permissions on it,
|
|
67
|
-
the soul, the teams, and what would fire now, and spawns nothing.
|
|
68
|
-
`oats schedule list` counts the triggers it does not list.
|
|
69
|
-
- A package may ship trigger templates (`triggers: [{ id, file }]` in
|
|
70
|
-
`oats-package.json`).
|
|
71
|
-
- `oats spawn --trigger-event <file>` is how a trigger hands the event to the
|
|
72
|
-
spawn.
|
|
7
|
+
- **Package souls** (feature `package-souls`). A package may ship souls
|
|
8
|
+
(`souls: ["souls/<name>", …]` in `oats-package/oats-package.json`), versioned
|
|
9
|
+
by the same `packages:` pin as its capabilities. `oats sync` locks each
|
|
10
|
+
soul's digest (`E_PACKAGE_INTEGRITY { why: "souls" }` on drift) and `oats
|
|
11
|
+
souls` lists them with `kind: "package"`. Spawn one as `<package>/<soul>`
|
|
12
|
+
(`oats spawn oats.okf/knowledge-maintainer`), or by its bare name when
|
|
13
|
+
unique; an ambiguous bare name is `E_SOUL_AMBIGUOUS`, naming each qualified
|
|
14
|
+
form. It resolves like any soul, is verified against the lock at spawn,
|
|
15
|
+
homes in `agents/<package>--<soul>/` (its agent name in `oats status`), and
|
|
16
|
+
shows as `moved` once the package pin moves. Two packages whose ids differ
|
|
17
|
+
only by `.` and `-` that ship a same-named soul are an `E_SOUL_AMBIGUOUS`
|
|
18
|
+
problem, and neither spawns. See [packages.md](../packages.md#package-souls).
|
|
19
|
+
|
|
20
|
+
- **Triggers** (feature `triggers`): event-driven spawns. When a GitHub pull
|
|
21
|
+
request event (`opened`, `reopened`, `ready_for_review`, `labeled`,
|
|
22
|
+
`synchronize`, filtered by `labels` and `base`) matches, a new instance of a
|
|
23
|
+
soul is spawned with a templated task. Triggers are stored in
|
|
24
|
+
`oats-schedules.json`, polled with the host's `gh` by the schedule tick (no
|
|
25
|
+
daemon or webhook), and delivered at least once, bounded by `concurrency.max`
|
|
26
|
+
and `perKey`. A PR's title and body never reach the task. Commands: `oats
|
|
27
|
+
trigger add | list | show | enable | disable | remove | test | status`;
|
|
28
|
+
`oats trigger test` checks gh auth, permissions, the soul and what would
|
|
29
|
+
fire, and spawns nothing. The instance gets the event as
|
|
30
|
+
`OATS_TRIGGER_EVENT_FILE` (via `oats spawn --trigger-event <file>`) and
|
|
31
|
+
records `instance.json.trigger`; `spawn.teams` becomes the messaging
|
|
32
|
+
capability's `join=`. Packages may ship trigger templates. See
|
|
33
|
+
[schedules.md](../schedules.md#triggers).
|
|
73
34
|
|
|
74
35
|
## Fixed
|
|
75
36
|
|
|
76
|
-
- **`--flag=value` is read.**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
first `=`. Two inline forms are refused with `E_BAD_ARGS`: an empty
|
|
82
|
-
`--flag=`, and a value on a switch. `--yolo=false` is refused and never
|
|
83
|
-
turns yolo on. A capability command's own flags are its provider's: they
|
|
84
|
-
are forwarded exactly as typed, and the kernel reads only its dispatch flag
|
|
85
|
-
(`--soul`) in either form. `oats capture`, `recall` and `setup` parse their
|
|
86
|
-
own arguments, as before. See
|
|
87
|
-
[desktop-cli-api.md § Flags](../desktop-cli-api.md#flags).
|
|
37
|
+
- **`--flag=value` is read.** Kernel commands silently ignored the inline
|
|
38
|
+
form (`oats spawn dev --harness=claude` spawned the default harness). It is
|
|
39
|
+
now read exactly as `--flag value`; an empty `--flag=` or a value on a switch
|
|
40
|
+
(`--yolo=false`) is `E_BAD_ARGS`. A capability command's own flags are
|
|
41
|
+
forwarded as typed. See [desktop-cli-api.md § Flags](../desktop-cli-api.md#flags).
|
|
88
42
|
**On an older kernel:** use the spaced form.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
as "not run on this machine", but only counted souls in the `oats sync`
|
|
92
|
-
report. A listed soul is now refused with `E_SOUL_DISABLED { name,
|
|
93
|
-
qualifiedName, entry }`. An entry is a bare name (every soul of that name) or
|
|
94
|
-
a qualified name (`oats.okf/knowledge-harvester`, `<member>/<soul>`).
|
|
43
|
+
- **`oats-local.yaml` `souls.disabled` is enforced at spawn**
|
|
44
|
+
(`E_SOUL_DISABLED`). An entry is a bare or a qualified soul name.
|
|
95
45
|
|
|
96
46
|
## oats.okf 3.0.0 (catalog pin and bundled mirror)
|
|
97
47
|
|
|
98
|
-
The official catalog
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
`
|
|
110
|
-
A
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
resolution and materializes no `./knowledge/` directory or view. Anything
|
|
115
|
-
that read `<home>/knowledge/bases/<alias>/…` reads
|
|
116
|
-
`oats okf cat --base <alias> <path>` instead.
|
|
117
|
-
- **BREAKING: `oats okf refresh` is `E_REMOVED`.** There are no per-instance
|
|
118
|
-
views to refresh.
|
|
119
|
-
- **`oats okf read --path` still works** in 3.0.0, as an alias of `cat`.
|
|
120
|
-
- **Older homes:** a `./knowledge/` a 2.x spawn left in a home is not touched.
|
|
121
|
-
3.0.0 ignores it, and `oats okf inspect` reports it as
|
|
122
|
-
`legacy-local-view`.
|
|
123
|
-
- The memory-harvest worker soul no longer ships a `CLAUDE.md -> AGENTS.md`
|
|
124
|
-
symlink (npm drops symlinks, and the kernel composes each home's
|
|
125
|
-
`CLAUDE.md`). The mirror check (`scripts/check-okf-mirror.mjs`) no longer
|
|
126
|
-
requires one; any symlink a future release ships is mirrored and verified
|
|
127
|
-
as before.
|
|
48
|
+
The official catalog pins `oats.okf` to `v3.0.0`; the bundled copy is its byte
|
|
49
|
+
mirror. It declares `oats >=0.26.0`.
|
|
50
|
+
|
|
51
|
+
- **Knowledge is consulted remotely**: `oats okf bases`, `index`, `cat --base
|
|
52
|
+
<alias> <path>`, `ls`, `links` and `search` read the soul's knowledge at the
|
|
53
|
+
accepted state. A Git base is served from one host-wide partial clone,
|
|
54
|
+
refetched once older than `consult-max-age` (default 300 s; `--fresh` always
|
|
55
|
+
refetches); a failed fetch serves the cache with `stale: true`. The new
|
|
56
|
+
`okf-consultation` skill teaches instances to run `oats okf index` at the
|
|
57
|
+
start of every task.
|
|
58
|
+
- **BREAKING: no `./knowledge/` in homes.** Read
|
|
59
|
+
`oats okf cat --base <alias> <path>` instead of
|
|
60
|
+
`<home>/knowledge/bases/<alias>/…`. A `./knowledge/` left by a 2.x spawn is
|
|
61
|
+
ignored and reported by `oats okf inspect` as `legacy-local-view`.
|
|
62
|
+
- **BREAKING: `oats okf refresh` is `E_REMOVED`.** `oats okf read --path`
|
|
63
|
+
still works as an alias of `cat`.
|
|
128
64
|
|
|
129
65
|
## Desktop
|
|
130
66
|
|
|
131
|
-
- **Workspace v4 redesign** (#206):
|
|
67
|
+
- **Workspace v4 redesign** (#206): Setup, Souls, Capabilities and the soul
|
|
68
|
+
and capability pages are rebuilt. Facts the kernel does not report yet are
|
|
69
|
+
left out rather than guessed.
|
|
132
70
|
- **Soul team labels** reach the Souls grid (#208).
|
|
133
71
|
|
|
134
|
-
## Tests and CI
|
|
135
|
-
|
|
136
|
-
- A home's resolved view (`resolvedFromHome`) carrying the slot rows its
|
|
137
|
-
spawn recorded (`layers`, since 0.26.0 layers-from) is now pinned. Before,
|
|
138
|
-
no test caught reverting it to `{}`.
|
|
139
|
-
- CI runs the suite in six parallel shards (`node --test --test-shard`), plus a gate job with the old check name. Main runs no longer cancel each other.
|
|
140
|
-
|
|
141
72
|
## Upgrading
|
|
142
73
|
|
|
143
|
-
- **okf 3.0.0 is breaking for anything that read `<home>/knowledge/`.** Use
|
|
144
|
-
|
|
74
|
+
- **okf 3.0.0 is breaking for anything that read `<home>/knowledge/`.** Use
|
|
75
|
+
`oats okf cat`. Existing homes keep their old view, unused.
|
|
76
|
+
- **Package souls and triggers are additive.** Nothing changes until a
|
|
77
|
+
package declares `souls:`/`triggers:`, or you add a trigger.
|
|
@@ -2,239 +2,120 @@
|
|
|
2
2
|
|
|
3
3
|
## Added
|
|
4
4
|
|
|
5
|
-
- **Workspace triggers and schedules** (feature `automations`). A trigger or
|
|
6
|
-
schedule can
|
|
7
|
-
team
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
**and** its `gh` is logged in as `owner`. Otherwise the item is listed as
|
|
26
|
-
`assigned-elsewhere`, `owner-mismatch` or `host-unnamed`.
|
|
27
|
-
- `oats trigger disable <member>/<id>` and `oats schedule disable <member>/<id>`
|
|
28
|
-
stop it on this host without a commit, by writing `triggers.disabled` or
|
|
29
|
-
`schedules.disabled` in `oats-local.yaml`.
|
|
30
|
-
- `oats sync` takes a snapshot of them. The host tick reads the snapshot and
|
|
31
|
-
refreshes it every ten minutes (`oats automations refresh`).
|
|
32
|
-
- `oats trigger add … --workspace <member> --runs-on <host> --owner <host>/<login>`
|
|
33
|
-
writes the file in a checkout of the member, or prints it. `oats schedule add`
|
|
34
|
-
takes the same options.
|
|
35
|
-
- `oats trigger list --json` and `oats schedule list --json` answer the Desktop's
|
|
36
|
-
rows for both levels: the owner, where it runs and why (not), the soul and
|
|
37
|
-
where it comes from, the task verbatim, the event or cron, and the last and
|
|
38
|
-
next run. Local schedule rows keep their bare `id` and add `qualifiedId`. See
|
|
39
|
-
[desktop-cli-api.md](../desktop-cli-api.md).
|
|
40
|
-
- Each row's `origin` carries `url` (the file on GitHub at its commit) and
|
|
41
|
-
`localPath` (the file in this machine's clone of the member), each `null` when
|
|
42
|
-
there is none. Both lists carry `host.ghUser` (who `gh` is logged in as, per
|
|
43
|
-
GitHub host) and the host `scheduler`. "When it next runs" is `nextDue`
|
|
44
|
-
everywhere.
|
|
45
|
-
- **Desktop facts** (feature `desktop-facts`): kernel facts the Desktop's Workspace
|
|
46
|
-
view shows, so it never derives them. Every field is an addition. See
|
|
5
|
+
- **Workspace triggers and schedules** (feature `automations`). A trigger or
|
|
6
|
+
schedule can be declared in Git in any confirmed member and shared with the
|
|
7
|
+
team: `oats-triggers/` or `*.oats-trigger.yaml`, and `oats-schedules/` or
|
|
8
|
+
`*.oats-schedule.yaml`. It is named `<member>/<id>`; a machine's own ones
|
|
9
|
+
are `local/<id>`. Each file names `runsOn` (the host that runs it) and
|
|
10
|
+
`owner` (the GitHub account it acts as); a host runs it only when `runsOn` is
|
|
11
|
+
its new `oats-local.yaml` `host.name` and its `gh` is logged in as `owner`.
|
|
12
|
+
`oats trigger|schedule disable <member>/<id>` stops one on this host without
|
|
13
|
+
a commit. `oats sync` snapshots them and the host tick refreshes the
|
|
14
|
+
snapshot every ten minutes (`oats automations refresh`). `oats trigger|schedule
|
|
15
|
+
add … --workspace <member>` writes the file. See
|
|
16
|
+
[schedules.md](../schedules.md#workspace-triggers-and-schedules) and
|
|
17
|
+
[desktop-cli-api.md](../desktop-cli-api.md) for the list rows.
|
|
18
|
+
- **Desktop facts** (feature `desktop-facts`): additive fields the Desktop's
|
|
19
|
+
Workspace view shows instead of deriving them, on `oats inspect --soul`,
|
|
20
|
+
`oats souls`, `oats capabilities`, `oats workspace status` and `oats status`
|
|
21
|
+
(`--json`). Among them: each capability's `composedFrom` and the defaults a
|
|
22
|
+
soul turned off, a soul's spawn defaults and whether it is `spawnable` here,
|
|
23
|
+
member clones, the lock, newer package versions, file locations, and an
|
|
24
|
+
instance's `startedAt`, `modelFrom` and `identityAddress`. See
|
|
47
25
|
[desktop-cli-api.md](../desktop-cli-api.md#desktop-facts-feature-desktop-facts-oats-0290).
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- the workspace and team `defaults` as rows;
|
|
59
|
-
- this computer's member `clones` and the rule that found each;
|
|
60
|
-
- `disabledSouls`;
|
|
61
|
-
- `lock` (`path`, `lockfileVersion`);
|
|
62
|
-
- `packages[].latest` when the shipped catalog has a newer version;
|
|
63
|
-
- file locations (`workspace.file`, `members[].url`,
|
|
64
|
-
`members[].membershipFile`).
|
|
65
|
-
- `oats status --json` instance rows: `startedAt` (the last start or restart),
|
|
66
|
-
`modelFrom` (also recorded in `instance.json`) and `identityAddress`. A member
|
|
67
|
-
module's drift `current` gains `version`.
|
|
68
|
-
- URLs are GitHub pages at the row's commit, `null` for any other host.
|
|
69
|
-
- `oats help` lists `spawn --provider`.
|
|
70
|
-
- **`oats schedule test <id>`**: where a schedule runs, whether its soul resolves
|
|
71
|
-
(a spawn preview) and when it is next due. It spawns nothing, like
|
|
72
|
-
`oats trigger test`.
|
|
73
|
-
- **`launchConfig`** on a trigger's `spawn` and on a spawn schedule: the soul starts
|
|
74
|
-
on that launch configuration of the running host (`oats-local.yaml`
|
|
75
|
-
`launch-configs`). A package trigger template can expose it as a parameter.
|
|
76
|
-
- `oats trigger status --json` rows add `nextDue`, `concurrency` and `liveCount`;
|
|
77
|
-
`oats trigger test --json` `wouldFire` items add `repo`.
|
|
78
|
-
- **`OATS_SETTINGS_ORIGINS`** beside `OATS_SETTINGS`, for every hook and
|
|
79
|
-
capability command (and readiness probes): where each leaf of the payload came
|
|
80
|
-
from, a JSON pointer → `{ kind, at }` (`manifest-default`, `workspace`, `soul`,
|
|
81
|
-
`host`, `spawn`). A provider can tell a soul-set value from a host-set one
|
|
82
|
-
without reading `soul.yaml`. `instance.json` records it with the settings
|
|
83
|
-
(`capabilities[].settingsOrigins`, `capabilityRuntime[].settingsOrigins`).
|
|
26
|
+
- **`oats schedule test <id>`**: where a schedule runs, whether its soul
|
|
27
|
+
resolves, and when it is next due. It spawns nothing.
|
|
28
|
+
- **`launchConfig`** on a trigger's `spawn` and on a spawn schedule: the
|
|
29
|
+
running host's launch configuration to start the soul with.
|
|
30
|
+
- `oats trigger status --json` rows add `nextDue`, `concurrency` and
|
|
31
|
+
`liveCount`; `oats trigger test --json` `wouldFire` items add `repo`.
|
|
32
|
+
- **`OATS_SETTINGS_ORIGINS`** beside `OATS_SETTINGS`, for every hook,
|
|
33
|
+
capability command and readiness probe: where each leaf of the payload came
|
|
34
|
+
from (`manifest-default`, `workspace`, `soul`, `host`, `spawn`), also
|
|
35
|
+
recorded in `instance.json`.
|
|
84
36
|
|
|
85
37
|
## Changed
|
|
86
38
|
|
|
87
|
-
- **oats.framework 1.3.0 pinned
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- **1.2.1:** OKF knowledge operations in onboarding (oats.setup 2.1.1,
|
|
95
|
-
`oats-onboarding`).
|
|
96
|
-
- **1.3.0:** `knowledge-theory-expert` is a package soul
|
|
97
|
-
(`oats spawn oats.framework/knowledge-theory-expert`), with
|
|
98
|
-
oats.knowledge-theory 1.1.0.
|
|
99
|
-
|
|
100
|
-
A workspace picks it up by pinning `oats.framework: v1.3.0` and running
|
|
101
|
-
`oats sync`.
|
|
102
|
-
- **A local trigger's id is `local/<id>`** in `oats trigger` rows, in its dedup keys
|
|
103
|
-
and state, and in a triggered instance's `instance.json.trigger.id` and event
|
|
104
|
-
file. It was the bare id in 0.28.0. Every `oats trigger` verb still accepts the
|
|
39
|
+
- **oats.framework 1.3.0 pinned** (covering 1.2.0, 1.2.1 and 1.3.0): the
|
|
40
|
+
setup-admin skills in oats.setup 2.1.0 and oats.core 2.1.0, OKF knowledge
|
|
41
|
+
operations in onboarding (oats.setup 2.1.1), and `knowledge-theory-expert`
|
|
42
|
+
as a package soul with oats.knowledge-theory 1.1.0. Pin
|
|
43
|
+
`oats.framework: v1.3.0` and run `oats sync`.
|
|
44
|
+
- **A local trigger's id is `local/<id>`** in `oats trigger` rows, its state
|
|
45
|
+
and a triggered instance's `instance.json`. Every verb still accepts the
|
|
105
46
|
bare id.
|
|
106
47
|
|
|
107
48
|
## Removed
|
|
108
49
|
|
|
109
|
-
- **BREAKING: capability-defined agents.** A
|
|
110
|
-
|
|
111
|
-
`
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
`
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- oats.okf 4.0.0's harvester is a package soul;
|
|
121
|
-
- the post-commit **`reviewer`** is an oats.dev **1.1.0** package soul
|
|
122
|
-
(`oats.dev/reviewer`, beside oats.review 1.3.0; the pin moves to
|
|
123
|
-
`v1.1.0`), and oats.review's inject spawns it unchanged, now named
|
|
124
|
-
`oats-dev-reviewer-<short-sha>`;
|
|
125
|
-
- **`knowledge-theory-expert`** is an oats.framework **1.3.0** package soul
|
|
126
|
-
(`oats spawn oats.framework/knowledge-theory-expert`), with
|
|
127
|
-
oats.knowledge-theory 1.1.0.
|
|
128
|
-
- A v2 soul.yaml declares no harness or model, so the reviewer's harness and
|
|
129
|
-
model now come from the **spawner's launch configuration** (its former pin was
|
|
130
|
-
pi, gpt-5.6-sol).
|
|
50
|
+
- **BREAKING: capability-defined agents.** A manifest's `agents:` is refused
|
|
51
|
+
at resolution (`E_CAPABILITY_AGENTS_REMOVED`), naming the replacement: a
|
|
52
|
+
**package soul** (`oats spawn <package>/<name>`) or a member soul. `oats spawn
|
|
53
|
+
<name>` no longer falls back to a module's agent (`E_SOUL_UNKNOWN`). Homes
|
|
54
|
+
spawned earlier for one stay listed, may be a `--parent`, and retire.
|
|
55
|
+
- OKF's harvester is an oats.okf 4.0.0 package soul; the post-commit
|
|
56
|
+
`reviewer` is `oats.dev/reviewer` (oats.dev 1.1.0, beside oats.review
|
|
57
|
+
1.3.0), spawned as `oats-dev-reviewer-<short-sha>`; and
|
|
58
|
+
`knowledge-theory-expert` is an oats.framework 1.3.0 package soul.
|
|
59
|
+
- The reviewer's harness and model now come from the spawner's launch
|
|
60
|
+
configuration (it was pinned to pi, gpt-5.6-sol).
|
|
131
61
|
|
|
132
62
|
## Fixed
|
|
133
63
|
|
|
134
|
-
- A package soul's derived instance name is checked and de-duplicated as the
|
|
135
|
-
the home gets
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
`
|
|
139
|
-
(`details.maxPurpose`).
|
|
140
|
-
|
|
141
|
-
- Concurrent spawns of the same instance: a spawn that loses the race now refuses
|
|
142
|
-
with `E_PLACEMENT_TAKEN` (it created nothing). It used to fail with an uncoded
|
|
143
|
-
"instance already exists" error, surfaced as `E_SPAWN_FAILED`.
|
|
64
|
+
- A package soul's derived instance name is checked and de-duplicated as the
|
|
65
|
+
name the home gets; an over-long purpose is `E_INSTANCE_NAME_INVALID` with
|
|
66
|
+
`details.maxPurpose`.
|
|
67
|
+
- A spawn that loses a race for the same instance is `E_PLACEMENT_TAKEN`
|
|
68
|
+
(it was `E_SPAWN_FAILED`).
|
|
144
69
|
- Disabled-here messages name the per-kind key (`triggers.disabled`,
|
|
145
70
|
`schedules.disabled`).
|
|
146
71
|
|
|
147
72
|
## Desktop
|
|
148
73
|
|
|
149
|
-
- **Schedules and Triggers tabs** on the automations contract
|
|
150
|
-
where they run
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
runs, the kernel's placement verdict, where it comes from, and the test result.
|
|
157
|
-
- The old Schedules read path is gone.
|
|
158
|
-
- **Why each capability is there.** The soul page and an instance's soul tab tag
|
|
159
|
-
each capability `workspace`, `team · <label>` or `soul`, and list the defaults the
|
|
160
|
-
soul turned off (including a slot it emptied), from the kernel's Desktop facts.
|
|
161
|
-
- **A moved module names its versions**: "moved 2.1.5 → 2.2.0" in the instance
|
|
162
|
-
panel's module drift.
|
|
74
|
+
- **Schedules and Triggers tabs** on the automations contract: rows grouped by
|
|
75
|
+
where they run, workspace and local items together, a detail page per item
|
|
76
|
+
with its prompt, runs, placement verdict and test result. The old Schedules
|
|
77
|
+
read path is gone.
|
|
78
|
+
- The soul page and an instance's soul tab tag why each capability is there
|
|
79
|
+
(`workspace`, `team · <label>` or `soul`) and list the defaults turned off.
|
|
80
|
+
- Module drift names versions ("moved 2.1.5 → 2.2.0").
|
|
163
81
|
- The Desktop accepts OATS CLIs `>=0.25.8 <0.30.0`.
|
|
164
82
|
|
|
165
|
-
## Internal
|
|
166
|
-
|
|
167
|
-
- The release workflow runs the test suite in six parallel shards, like PR CI, and
|
|
168
|
-
publication waits for every shard.
|
|
169
|
-
|
|
170
83
|
## Upgrading from 0.28
|
|
171
84
|
|
|
172
|
-
> **0.29.0 and oats.okf 4.0.0 move in lockstep.**
|
|
173
|
-
>
|
|
174
|
-
> kernel 0.29.0. A deployment on okf 3.x
|
|
175
|
-
>
|
|
85
|
+
> **0.29.0 and oats.okf 4.0.0 move in lockstep.** Kernel 0.29.0 refuses
|
|
86
|
+
> oats.okf ≤3.x (it declares a capability agent), and oats.okf 4.0.0 requires
|
|
87
|
+
> kernel 0.29.0. A deployment on okf 3.x stays on kernel 0.28 until it moves
|
|
88
|
+
> its pins, then upgrades in one sitting:
|
|
176
89
|
|
|
177
90
|
1. **Upgrade the kernel**: the npm package, the pi adapter and the Desktop, all
|
|
178
91
|
0.29.0.
|
|
179
|
-
2. **Move the pins** to
|
|
180
|
-
`oats.
|
|
92
|
+
2. **Move the pins** to `oats.okf: v4.0.0`, `oats.dev: v1.1.0`,
|
|
93
|
+
`oats.framework: v1.3.0`.
|
|
181
94
|
3. **Run `oats sync`.**
|
|
182
95
|
|
|
183
|
-
Between
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
- **oats.dev 1.0.x** (`reviewer`);
|
|
189
|
-
- **oats.framework ≤1.2.x** (`knowledge-theory-expert`).
|
|
190
|
-
|
|
191
|
-
Harvest is off by default in okf 4.0.0. Switch it on
|
|
192
|
-
(`oats okf setup --harvest on`) where you want it.
|
|
193
|
-
|
|
194
|
-
Homes spawned earlier keep loading their recorded modules. Homes spawned for a
|
|
195
|
-
capability agent stay listed and retirable.
|
|
96
|
+
Between steps 1 and 3, any soul that composes oats.okf ≤3.x (every soul with
|
|
97
|
+
oats.okf in its knowledge slot), oats.dev 1.0.x or oats.framework ≤1.2.x is
|
|
98
|
+
refused with `E_CAPABILITY_AGENTS_REMOVED`. Harvest is off by default in okf
|
|
99
|
+
4.0.0; switch it on with `oats okf setup --harvest on`. Homes spawned earlier
|
|
100
|
+
keep loading their recorded modules.
|
|
196
101
|
|
|
197
102
|
## oats.okf 4.0.0 (catalog pin and bundled mirror)
|
|
198
103
|
|
|
199
|
-
The official catalog
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
**BREAKING:**
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
- **
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
`oats
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
- **The harvester is a package soul.** `oats okf run-source` (and `oats okf
|
|
218
|
-
harvest`) spawns `oats.okf/knowledge-harvester`. It is named
|
|
219
|
-
`okf-harvester-<run>` and homes under
|
|
220
|
-
`agents/oats-okf--knowledge-harvester/`. It is no longer the `memory-harvest`
|
|
221
|
-
capability agent. After a successful completion it stays alive in the `okf`
|
|
222
|
-
team until its PR is merged or closed. `oats.okf/knowledge-maintainer` is the
|
|
223
|
-
package's second soul.
|
|
224
|
-
- **The harvest-review trigger.** The package ships the trigger template
|
|
225
|
-
`harvest-review` (`triggers/harvest-review.json`). It watches the labelled
|
|
226
|
-
harvest PRs.
|
|
227
|
-
- **`harvest: on|off`** (default **off**). Harvest is a host switch in
|
|
228
|
-
`oats-local.yaml` `settings.oats.okf.harvest` (`oats okf setup --harvest
|
|
229
|
-
on|off`). Off means no source registration, capture or custody. A soul can
|
|
230
|
-
only opt out (`knowledge: { harvest: off }`).
|
|
231
|
-
- **`oats okf read` is removed** (`E_REMOVED`). Use `oats okf cat --base
|
|
232
|
-
<alias> <path>`, which takes the same path and gives the same text and
|
|
233
|
-
receipt.
|
|
234
|
-
|
|
235
|
-
The bundled mirror now covers the three capability directories
|
|
236
|
-
(`capabilities/oats-okf`, `capabilities/oats-okf-harvest`,
|
|
237
|
-
`capabilities/oats-okf-maintenance`). The package's souls and trigger are
|
|
238
|
-
checked byte for byte in `scripts/okf-source-inventory.json` (schemaVersion 2).
|
|
239
|
-
The npm package does not ship them, because the kernel reads a package's souls
|
|
240
|
-
and triggers from Git at its locked commit.
|
|
104
|
+
The official catalog pins `oats.okf` to `v4.0.0`; the bundled copy is its
|
|
105
|
+
byte mirror.
|
|
106
|
+
|
|
107
|
+
- **BREAKING:** requires `oats >=0.29.0` (`E_CAPABILITY_INCOMPATIBLE` on an
|
|
108
|
+
older kernel), and the `okf` and `memory-harvest` skills are gone.
|
|
109
|
+
- **Three capabilities:** `oats.okf` (the knowledge slot), `oats.okf-harvest`
|
|
110
|
+
and `oats.okf-maintenance`. A soul with `oats.okf` in its knowledge slot gets
|
|
111
|
+
the `okf-consultation` and `okf-instance-knowledge` skills and the inject.
|
|
112
|
+
- **The harvester is a package soul**, `oats.okf/knowledge-harvester`,
|
|
113
|
+
spawned by `oats okf run-source` / `harvest` as `okf-harvester-<run>`. It
|
|
114
|
+
stays alive in the `okf` team until its PR is merged or closed.
|
|
115
|
+
`oats.okf/knowledge-maintainer` is the second soul, and the trigger template
|
|
116
|
+
`harvest-review` watches labelled harvest PRs.
|
|
117
|
+
- **`harvest: on|off`** (default off) is a host switch
|
|
118
|
+
(`oats okf setup --harvest on|off`); a soul can only opt out
|
|
119
|
+
(`knowledge: { harvest: off }`).
|
|
120
|
+
- **`oats okf read` is removed** (`E_REMOVED`); use `oats okf cat --base
|
|
121
|
+
<alias> <path>`.
|
|
@@ -59,7 +59,7 @@ view shows nothing new.
|
|
|
59
59
|
kernel's workspace status and reads the branch's PR with `gh`, cached for a
|
|
60
60
|
minute. The row shows `#N`, with draft, merged or closed in words. Remote
|
|
61
61
|
instances, and hosts without a signed-in `gh`, show no badge.
|
|
62
|
-
- **
|
|
62
|
+
- **Git & GitHub** (#239, #240, #241, #242, #243). The instance's Git panel
|
|
63
63
|
follows the design:
|
|
64
64
|
- **Branch** shows the work mode, the distance from the default branch and
|
|
65
65
|
whether the tree is clean, with the rest behind Details.
|