@awebai/oats 0.25.9 → 0.27.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.
Files changed (183) hide show
  1. package/README.md +8 -6
  2. package/bin/oats.mjs +648 -1755
  3. package/capabilities/oats-authoring/oats-package.json +2 -2
  4. package/capabilities/oats-authoring/oats.json +2 -2
  5. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +46 -25
  6. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +13 -6
  7. package/capabilities/oats-aweb/bin/oats-aweb.mjs +279 -93
  8. package/capabilities/oats-aweb/injects/aweb.md +7 -2
  9. package/capabilities/oats-aweb/lib/binding-wire.mjs +89 -13
  10. package/capabilities/oats-aweb/lib/captured-native.mjs +1 -1
  11. package/capabilities/oats-aweb/lib/grant-custody.mjs +38 -0
  12. package/capabilities/oats-aweb/oats.json +8 -4
  13. package/capabilities/oats-jira/bin/oats-jira.mjs +4 -4
  14. package/capabilities/oats-jira/oats.json +2 -2
  15. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +6 -3
  16. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +6 -4
  17. package/capabilities/oats-linear/oats.json +2 -2
  18. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +6 -0
  19. package/capabilities/oats-review/oats.json +3 -2
  20. package/docs/capabilities.md +229 -58
  21. package/docs/capability-manifest.schema.json +29 -9
  22. package/docs/configuration.md +17 -5
  23. package/docs/conventions.md +18 -28
  24. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +1 -1
  25. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +3 -3
  26. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +2 -2
  27. package/docs/design/2026-09-15-portable-souls-handoff.md +2 -2
  28. package/docs/design/2026-09-15-portable-souls-implementation.md +1 -1
  29. package/docs/design/2026-09-20-redesign-program-board.md +2 -2
  30. package/docs/design/2026-09-23-workspace-module-contracts.md +1 -1
  31. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +1 -1
  32. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +34 -1
  33. package/docs/design/2026-09-24-phase-d-plan.md +57 -0
  34. package/docs/design/2026-09-25-teams-contract.md +226 -0
  35. package/docs/design/README.md +3 -3
  36. package/docs/design/launch-configurations.md +20 -16
  37. package/docs/design/operations-contract.md +27 -10
  38. package/docs/desktop-cli-api.md +604 -271
  39. package/docs/desktop-instance-start.md +3 -3
  40. package/docs/desktop.md +7 -13
  41. package/docs/execution-targets.md +16 -18
  42. package/docs/first-team.md +15 -18
  43. package/docs/implementation.md +31 -62
  44. package/docs/integrations.md +64 -33
  45. package/docs/knowledge-capability-authoring.md +1 -1
  46. package/docs/knowledge-reference/package-craft.md +10 -8
  47. package/docs/knowledge-theory.md +1 -1
  48. package/docs/knowledge.md +10 -11
  49. package/docs/layers.md +16 -17
  50. package/docs/oats-local.schema.json +30 -1
  51. package/docs/oats-membership.schema.json +5 -3
  52. package/docs/oats-package.schema.json +2 -2
  53. package/docs/oats-workspace.schema.json +1 -1
  54. package/docs/{official-marketplace.md → official-catalog.md} +15 -16
  55. package/docs/packages.md +76 -53
  56. package/docs/release-notes/v0.22.0.md +1 -1
  57. package/docs/release-notes/v0.23.1.md +1 -1
  58. package/docs/release-notes/v0.26.0.md +670 -0
  59. package/docs/release-notes/v0.27.0.md +100 -0
  60. package/docs/schedules.md +54 -132
  61. package/docs/servers.md +4 -4
  62. package/docs/soul.schema.json +11 -4
  63. package/docs/souls-and-instances.md +60 -47
  64. package/docs/workspaces.md +80 -58
  65. package/injects/instance-boundary.md +2 -2
  66. package/injects/work-attached.md +1 -1
  67. package/injects/work-workspace.md +2 -2
  68. package/lib/{portable-files.mjs → bounded-read.mjs} +6 -6
  69. package/lib/{portable-values.mjs → canonical-json.mjs} +3 -12
  70. package/lib/capability-contract.mjs +110 -0
  71. package/lib/config-data.mjs +2 -2
  72. package/lib/core.mjs +947 -5023
  73. package/lib/deprecation.mjs +24 -0
  74. package/lib/digest.mjs +12 -0
  75. package/lib/instance-inspect.mjs +397 -0
  76. package/lib/instance-lifecycle.mjs +3 -4
  77. package/lib/instance-resolution.mjs +212 -26
  78. package/lib/instruction-composition.mjs +0 -20
  79. package/lib/materialize.mjs +6 -4
  80. package/lib/operator-dispatch.mjs +33 -13
  81. package/lib/packages.mjs +25 -190
  82. package/lib/process-group.mjs +1 -1
  83. package/lib/provider-binding.mjs +4 -2
  84. package/lib/provider-reasons.mjs +3 -68
  85. package/lib/remote.mjs +1 -1
  86. package/lib/resolve.mjs +204 -68
  87. package/lib/schedule.mjs +136 -292
  88. package/lib/servers.mjs +70 -38
  89. package/lib/{portable-shape.mjs → shape.mjs} +4 -3
  90. package/lib/tree-copy.mjs +44 -0
  91. package/lib/workspace.mjs +132 -20
  92. package/package-catalog.json +6 -6
  93. package/package.json +1 -1
  94. package/packages/record/lib/session-roots.mjs +8 -6
  95. package/skills/integration-authoring/SKILL.md +48 -40
  96. package/skills/oats-getting-started/SKILL.md +105 -110
  97. package/skills/oats-support/SKILL.md +2 -2
  98. package/skills/soul-craft/SKILL.md +13 -6
  99. package/bin/oats-pi-sdk-host.mjs +0 -17
  100. package/docs/2026-09-03-architecture-proposal.md +0 -642
  101. package/docs/artifact-approvals.schema.json +0 -7
  102. package/docs/captured-invocation-context.schema.json +0 -7
  103. package/docs/captured-resolution.schema.json +0 -7
  104. package/docs/design/package-engine-contract.md +0 -813
  105. package/docs/design/package-runtime-api.md +0 -588
  106. package/docs/desktop-succession.md +0 -57
  107. package/docs/execution-capsule.schema.json +0 -108
  108. package/docs/first-team-demo.md +0 -92
  109. package/docs/knowledge-migration.md +0 -147
  110. package/docs/migration-from-oas.md +0 -103
  111. package/docs/oats-config.schema.json +0 -172
  112. package/docs/oats-lock-v3.schema.json +0 -7
  113. package/docs/oats-lock.schema.json +0 -175
  114. package/docs/operating-team-migration.md +0 -470
  115. package/docs/portable.schema.json +0 -2512
  116. package/docs/provider-check-input.schema.json +0 -7
  117. package/docs/rebuild-to-v2.md +0 -511
  118. package/docs/workspace-adoption.md +0 -74
  119. package/injects/framework-workspace.md +0 -7
  120. package/injects/local-soul.md +0 -19
  121. package/injects/oats-portable.md +0 -20
  122. package/injects/oats.md +0 -11
  123. package/injects/portable-instance-boundary.md +0 -39
  124. package/injects/portable-work-directory.md +0 -29
  125. package/lib/artifact-approvals.mjs +0 -120
  126. package/lib/artifact-tree.mjs +0 -141
  127. package/lib/capability-artifacts.mjs +0 -179
  128. package/lib/capability-execution.mjs +0 -15
  129. package/lib/capability-inputs.mjs +0 -39
  130. package/lib/capability-provenance.mjs +0 -231
  131. package/lib/captured-action-shape.mjs +0 -21
  132. package/lib/captured-admission-shape.mjs +0 -20
  133. package/lib/captured-binding-file.mjs +0 -36
  134. package/lib/captured-dispatch.mjs +0 -66
  135. package/lib/captured-instance-index.mjs +0 -277
  136. package/lib/captured-invocation-context.mjs +0 -130
  137. package/lib/captured-launch-request.mjs +0 -66
  138. package/lib/captured-operation-process.mjs +0 -15
  139. package/lib/captured-pi-custody.mjs +0 -29
  140. package/lib/captured-pi-host.mjs +0 -167
  141. package/lib/captured-pi-outcome.mjs +0 -172
  142. package/lib/captured-resolutions.mjs +0 -275
  143. package/lib/captured-scaffold.mjs +0 -87
  144. package/lib/captured-selector.mjs +0 -28
  145. package/lib/captured-session-backend.mjs +0 -52
  146. package/lib/captured-source-receipt-file.mjs +0 -72
  147. package/lib/helper-injection-policy.mjs +0 -104
  148. package/lib/legacy-lock-codec.mjs +0 -106
  149. package/lib/manifest-settings.mjs +0 -84
  150. package/lib/package-closure.mjs +0 -48
  151. package/lib/package-materialization.mjs +0 -83
  152. package/lib/pi-sdk-host.mjs +0 -229
  153. package/lib/portable-artifacts.mjs +0 -115
  154. package/lib/portable-choices.mjs +0 -82
  155. package/lib/portable-composition.mjs +0 -136
  156. package/lib/portable-digest.mjs +0 -105
  157. package/lib/portable-identity.mjs +0 -40
  158. package/lib/portable-lock.mjs +0 -117
  159. package/lib/portable-onboarding-request.mjs +0 -49
  160. package/lib/portable-onboarding.mjs +0 -256
  161. package/lib/portable-package-preparation.mjs +0 -188
  162. package/lib/portable-policy.mjs +0 -44
  163. package/lib/portable-soul.mjs +0 -42
  164. package/lib/portable-state.mjs +0 -80
  165. package/lib/prepare-composition.mjs +0 -170
  166. package/lib/prepared-bindings.mjs +0 -92
  167. package/lib/prepared-resources.mjs +0 -127
  168. package/lib/provider-binding-broker.mjs +0 -65
  169. package/lib/provider-binding-wire.mjs +0 -116
  170. package/lib/readiness.mjs +0 -225
  171. package/lib/repository-observation.mjs +0 -226
  172. package/lib/resolution-shape.mjs +0 -393
  173. package/lib/schedule-capsule.mjs +0 -206
  174. package/lib/soul-constraints.mjs +0 -40
  175. package/lib/source-projection.mjs +0 -84
  176. package/lib/source-spec.mjs +0 -189
  177. package/lib/workspace-definition.mjs +0 -126
  178. package/lib/workspace-discovery.mjs +0 -146
  179. package/skills/oats/SKILL.md +0 -162
  180. package/skills/oats-config/SKILL.md +0 -164
  181. package/skills/oats-packages/SKILL.md +0 -184
  182. package/skills/oats-portable/SKILL.md +0 -115
  183. package/skills/oats-portable-artifacts/SKILL.md +0 -63
@@ -1,12 +1,16 @@
1
1
  # Launch configurations and launch recipes
2
2
 
3
- A **launch configuration** is a named way to start a harness, declared per
4
- scope under `launch-configs:` in `oats-config.yaml` (see
5
- docs/configuration.md): runtime, an executable, literal arguments,
6
- environment (literals or `{fromEnv}` references), model, yolo. It is
7
- independent of any soul; a soul may name one as its default
8
- (`launch-config:` in soul.yaml, `oats soul set --launch-config`), and a
9
- spawn, start or restart selects one by name.
3
+ A **launch configuration** is a named way to start a harness, declared by
4
+ the host under `launch-configs:` in the deployment's `oats-local.yaml` (see
5
+ docs/configuration.md; 0.26.0, lead decision 2 — earlier kernels read it
6
+ from a scope's `oats-config.yaml`): runtime, an executable, literal
7
+ arguments, environment (literals or `{fromEnv}` references), model, yolo.
8
+ It is independent of any soul, and a spawn, start or restart selects one by
9
+ name (`--launch-config`, or the Desktop's per-launch choice). A launch
10
+ configuration is a spawn-time host choice, never a soul field: `launch-config:`
11
+ is not a field of a workspace-model soul.yaml (docs/soul.schema.json; discovery
12
+ refuses it), so a v2 soul cannot name one, not even as a default. (A classic
13
+ 0.25 soul.yaml could name a preferred entry; 0.26.0 reads no such field.)
10
14
 
11
15
  A **launch recipe** is what a start is made of, recorded in the instance's
12
16
  `instance.json` under `launch` beside the rendered `command`:
@@ -15,9 +19,9 @@ A **launch recipe** is what a start is made of, recorded in the instance's
15
19
  {
16
20
  "version": 1,
17
21
  "runtime": "claude",
18
- "launchConfig": "personal", "launchConfigSource": "/scope",
19
- "executable": "/scope/tools/claude-wrapper.sh",
20
- "executableDeclared": "./tools/claude-wrapper.sh", "executableResolvedFrom": "relative to /scope",
22
+ "launchConfig": "personal", "launchConfigSource": "/deployment",
23
+ "executable": "/deployment/tools/claude-wrapper.sh",
24
+ "executableDeclared": "./tools/claude-wrapper.sh", "executableResolvedFrom": "relative to /deployment",
21
25
  "args": ["--settings", "/abs/settings.json"],
22
26
  "env": { "KEY": { "fromEnv": "SRC" }, "LIT": "plain" },
23
27
  "model": "claude-opus-5", "yolo": true,
@@ -55,16 +59,16 @@ shows them: `list` and `preview` redact every environment value.
55
59
  that disagrees with the configuration's runtime is refused
56
60
  (`E_LAUNCH_CONFIG_MISMATCH`) before anything happens; the same runtime may
57
61
  be repeated; `--model` and `--yolo` override the configuration's fields.
58
- - Without `--launch-config`: a spawn takes the soul's `launch-config` default
59
- or none; an existing home keeps its recorded configuration, except that
62
+ - Without `--launch-config`: a spawn uses no configuration (the runtime's
63
+ defaults; a soul names none); an existing home keeps its recorded configuration, except that
60
64
  `--runtime` alone deliberately leaves it behind and renders the new
61
65
  runtime's defaults (no old executable or args are carried).
62
66
  - Model: explicit, else the configuration's, else on an existing home the
63
67
  recorded model when the runtime is unchanged, else the runtime's native
64
- default; a spawn without either resolves the soul's preference for the
65
- runtime. A model never crosses runtimes.
68
+ default; a spawn without either uses the runtime's native default (a
69
+ workspace-model soul declares no model). A model never crosses runtimes.
66
70
  - Executable: the configuration's (bare name on PATH; a path resolved against
67
- the declaring scope when relative) or the runtime's default (claude through
71
+ the deployment directory when relative) or the runtime's default (claude through
68
72
  `oats-claude-config`). It must be a regular executable file; it is never
69
73
  run to probe it. Capability runtime-package requirements are checked with
70
74
  the runtime's default binary, as at spawn.
@@ -87,7 +91,7 @@ re-run by a start or restart.
87
91
  Read-only; nothing is locked or started. `--home ABS` describes an existing
88
92
  home under a selection (`selection.source`: `frozen` when nothing was
89
93
  selected, `config` when re-resolved, `frozen-command` for a home that
90
- predates recipes, whose selection needs the restart conversion);
94
+ predates recipes, where a selection answers `E_LAUNCH_LEGACY`: re-spawn it);
91
95
  `--soul NAME [--dir SCOPE] [--agents-root ABS]` describes a new instance.
92
96
  Answer: `{context, selected, selection:{source, launchConfig, runtime,
93
97
  model, yolo}, runtime, model, modelSource, yolo, launchConfig,
@@ -97,15 +97,16 @@ are listed. `use none --layer l` is a level statement and takes no soul or
97
97
  type. A layer bound to another capability at a level is never overwritten
98
98
  (`E_LAYER_BOUND` with the exact remedy).
99
99
 
100
+ *(0.24/0.25 only — `oats soul set` was removed in 0.26.0: a soul is edited in its member repository, then `oats sync`. Kept for history.)*
100
101
  `oats soul set <name> [--dir] [--agents-root] [--runtime] [--model |
101
102
  --no-model] [--yolo | --no-yolo] [--backend] [--description |
102
- --no-description] [--instructions-file <path>] --json` edits only the given
103
- `soul.yaml` lines and replaces `AGENTS.md`; packaged souls are refused
104
- (`E_SOUL_READONLY`). The receipt carries before/after and sha256s.
103
+ --no-description] [--instructions-file <path>] --json` edited only the given
104
+ `soul.yaml` lines and replaced `AGENTS.md`; packaged souls were refused
105
+ (`E_SOUL_READONLY`). The receipt carried before/after and sha256s.
105
106
 
106
107
  ## Remote
107
108
 
108
- `inspect`, `operation`, `use` and `soul` route with `--server <id>` through
109
+ `inspect` and `operation` route with `--server <id>` through
109
110
  the saved route. The gate is the destination's `features` list containing
110
111
  `operations` and its `operationsApi: 1` (`E_REMOTE_INCOMPATIBLE` before
111
112
  anything is sent): `features` describes what a kernel can do locally, which
@@ -113,12 +114,28 @@ is what runs on the host. The probe's `remote` list describes what a CLI
113
114
  can ROUTE to a server and is what a GUI checks on the local CLI before
114
115
  offering remote actions; it is not a gate on the destination. An explicit `--dir` is the exact member context and
115
116
  travels as is; `--home` is its own context; otherwise the registered
116
- workspace is the scope. Soul instructions travel as bytes on the ssh stdin
117
- (`--instructions-stdin` on the host), never as a local path.
117
+ workspace is the scope.
118
118
 
119
119
  ## Replaceability
120
120
 
121
- `test/inspect.test.mjs`, `test/operation.test.mjs` and
122
- `test/operations-routing.test.mjs` use an owned alternative knowledge
123
- provider (namespace `notes`, one `MEMORY.md`, operations `harvest` and
124
- `inspect`) and never mention the official provider.
121
+ `test/operation.test.mjs` runs the real CLI on the Northwind fixture and
122
+ replaces the provider in a spawned home's module copy (what `operation run
123
+ --home` executes) with a recording provider of its own: the runner is generic
124
+ and assumes nothing about the official provider's operations.
125
+
126
+ ## Workspace model (0.26.0)
127
+
128
+ On a workspace deployment, and for a home whose `instance.json` records
129
+ `modules`, `oats inspect`, `oats readiness` and `oats operation run` read the
130
+ workspace model's own records instead of the config chain:
131
+ - the subject is `--home` (instance.json plus its module copies) or `--soul`
132
+ (the soul resolved as its spawn would be), never a scope;
133
+ - `operationsApi` is 2 (also on the run result), and each soul row carries
134
+ `soulsApi: 2`;
135
+ - there is no trust gate (`E_CAPABILITY_BLOCKED` is gone);
136
+ - no `scope`, `chain`, `activation`, `snapshot` or `currentConfig` block.
137
+
138
+ The payloads are specified in
139
+ [desktop-cli-api.md](../desktop-cli-api.md#inspect-readiness-and-operation-run-on-the-workspace-model-operationsapi-2-soulsapi-2-readinessapi-2-oats-0260).
140
+ The sections above describe the classic path, which is removed with the classic
141
+ config chain.