Skip to content

Commit da774f9

Browse files
committed
chore: changeset + regenerate app reference for defaultAgent doc (#3820)
Check Changeset and the generated-docs gate in TypeScript Type Check both flagged the previous commit: add the missing changeset (@objectstack/lint minor, @objectstack/spec patch) and the regenerated content/docs/references/ui/app.mdx row for the re-documented `app.defaultAgent`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BHjroNkLkajskKbJaidko4
1 parent 5dc1f23 commit da774f9

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
"@objectstack/lint": minor
3+
"@objectstack/spec": patch
4+
---
5+
6+
feat(lint): `validate-ai-surface-affinity` — skill ↔ agent surface affinity is now linted (#3820)
7+
8+
An agent binds a product surface (`'ask'` | `'build'`, ADR-0063 §1) and a skill
9+
declares which surface it belongs to (`'ask'` | `'build'` | `'both'`, §3). The
10+
runtime refuses an incompatible binding with a **load error at chat time**
11+
after parse, validate, and deploy all passed cleanly. The new rule reports that
12+
contradiction statically, and joins `REFERENCE_INTEGRITY_RULES`, so
13+
`objectstack validate`, `lint`, and `compile` all pick it up with no CLI
14+
changes.
15+
16+
Scope is deliberately narrow (zero false positives by construction): only
17+
bindings where **both** the agent and the skill are declared in the same stack
18+
are checked. `agent.skills[]` names that don't resolve in-stack (kernel skills
19+
are runtime-registered and statically invisible) are skipped — resolving those
20+
namespaces is #3820 D0/D2, decided by ADR-0109 (Proposed).
21+
22+
The spec side is doc-truth only, no schema shape changes:
23+
24+
- `stack.agents` is documented as **platform-internal** (ADR-0063 §2 — the
25+
kernel ships exactly two agents; third parties extend via skills), replacing
26+
prose that still described the withdrawn ADR-0040 per-app-copilot model.
27+
- `stack.tools` is documented as declaration-only pending the ADR-0109 tool
28+
authoring model.
29+
- `app.defaultAgent` is re-documented as a surface-binding knob (`'ask'`
30+
implicit / `'build'` for authoring surfaces), not a custom-agent slot.
31+
- `SkillSchema` now states that a per-skill `permissions` field deliberately
32+
does not exist (ADR-0049) — authoring one is silently stripped; access is
33+
gated by `agent.access` / `agent.permissions` and per-tool authz.

content/docs/references/ui/app.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ const result = ActionNavItem.parse(data);
9090
| **sharing** | `{ enabled?: boolean; publicLink?: string; password?: string; allowedDomains?: string[]; … }` | optional | Public sharing configuration |
9191
| **embed** | `{ enabled?: boolean; allowedOrigins?: string[]; width?: string; height?: string; … }` | optional | Iframe embedding configuration |
9292
| **mobileNavigation** | `{ mode?: Enum<'drawer' \| 'bottom_nav' \| 'hamburger'>; bottomNavItems?: string[] }` | optional | Mobile-specific navigation configuration |
93-
| **defaultAgent** | `string` | optional | Name of the default AI agent for this app (used by the ambient chat endpoint) |
93+
| **defaultAgent** | `string` | optional | Platform agent bound to this app's ambient chat ('ask' is the implicit default; 'build' for authoring surfaces) — ADR-0063 §1 |
9494
| **aria** | `{ ariaLabel?: string; ariaDescribedBy?: string; role?: string }` | optional | ARIA accessibility attributes for the application |
9595
| **protection** | `{ lock: Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>; reason: string; docsUrl?: string }` | optional | Package author protection block — lock policy for this app. |
9696
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |

0 commit comments

Comments
 (0)