Appearance
Interface: AssistantTabGroupAPI
Defined in: packages/sdk/src/context/index.ts:133
Runtime control over the native Chrome tab group holding the skill's tab(s), available as ctx.assistant.tabGroup (Assistant >= v11.140.0).
Grouping happens at skill start only if the skill's manifest.json declares the opt-in field, e.g. "tabGroup": {"title": "...", "color": "blue", "collapsed": false} (all fields optional). Tabs the skill opens later automatically join the group, and the group is always dissolved when the skill stops.
Both methods are fire-and-forget, best-effort setters — there are no getters. When the skill's tab was never grouped (no manifest opt-in, non-tab render target, or already ungrouped) they silently no-op.
Example
ts
// Reflect progress in the group title (emoji stands in for an icon)
await ctx.assistant.tabGroup.update({title: '📄 Invoices (3/10)'});
// Collapse the group while background work runs
await ctx.assistant.tabGroup.update({collapsed: true});
// Dissolve the group entirely (terminal — cannot be re-grouped)
await ctx.assistant.tabGroup.ungroup();Methods
ungroup()
ts
ungroup(): Promise<void>;Defined in: packages/sdk/src/context/index.ts:139
Dissolve the whole group, releasing all tabs in it (including tabs that auto-joined). Terminal for the run: there is no runtime re-group, and subsequent AssistantTabGroupAPI.update calls no-op.
Returns
Promise<void>
update()
ts
update(tabGroup: SkillTabGroup): Promise<void>;Defined in: packages/sdk/src/context/index.ts:144
Partially update the group. Only the provided, correctly-typed fields are applied; invalid values are dropped (never normalised).
Parameters
| Parameter | Type |
|---|---|
tabGroup | SkillTabGroup |
Returns
Promise<void>