@pouchy_ai/companion-sdk 0.41.0 → 0.42.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.
- package/CHANGELOG.md +26 -0
- package/README.md +14 -0
- package/dist/a2ui.d.ts +216 -0
- package/dist/a2ui.d.ts.map +1 -0
- package/dist/a2ui.js +622 -0
- package/dist/a2ui.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/a2ui.ts +881 -0
- package/src/index.ts +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,32 @@ a protocol bump is always called out explicitly here.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.42.0] - 2026-07-25
|
|
16
|
+
|
|
17
|
+
Additive: the Instant UI ⇄ Google A2UI v0.9 projection ships in the package.
|
|
18
|
+
No wire-protocol bump (`PROTOCOL_VERSION` stays 1); no existing export moved.
|
|
19
|
+
|
|
20
|
+
- **`toA2UI` / `fromA2UI`** — project an Instant UI panel (the
|
|
21
|
+
`companion.ui_action` `payload.interface`) losslessly to Google's A2UI v0.9
|
|
22
|
+
flat wire format and back, so a renderer built against the A2UI catalog can
|
|
23
|
+
draw Pouchy panels with the adapter in front. Previously the adapter lived
|
|
24
|
+
only in the app repo (`src/lib/genui/a2ui-adapter.ts`) and integrators had
|
|
25
|
+
to vendor the file; that path now delegates to this package. Concepts A2UI
|
|
26
|
+
has no standard slot for (Progress, Accordion, area/pie chart kinds,
|
|
27
|
+
`computed`, `when`, tones, etc.) ride a per-component `_pouchy` extension —
|
|
28
|
+
A2UI renderers ignore it; `fromA2UI` reconstructs the exact panel from it.
|
|
29
|
+
- **Instant UI panel types** — the strict panel/node type family
|
|
30
|
+
(`DynamicInterface`, `GenuiNode`, …) and the `INSTANT_UI_NODE_TYPES`
|
|
31
|
+
catalog (as data, for renderer capability checks) are exported alongside.
|
|
32
|
+
`toA2UI` accepts either the strict panel type or the loose
|
|
33
|
+
`payload.interface` exactly as `onRender` delivers it. Embedded Button /
|
|
34
|
+
table-row actions are typed as an opaque `EmbeddedAction { type }` — hosts
|
|
35
|
+
hand them back, never interpret them.
|
|
36
|
+
- **CDN bundle size** — the projection adds ~1.7KB gzip to the min bundle
|
|
37
|
+
(~15.7KB total) / ~3.2KB to the full one (~32.2KB); the size-gate budgets
|
|
38
|
+
were raised consciously (14→17KB min, 29→35KB full) per the gate's
|
|
39
|
+
contract.
|
|
40
|
+
|
|
15
41
|
## [0.41.0] - 2026-07-25
|
|
16
42
|
|
|
17
43
|
Additive: call-window generation fencing + world-state replay observability.
|
package/README.md
CHANGED
|
@@ -169,6 +169,20 @@ Reference renderers ship in [`examples/`](../../examples): `web-instant-ui` (van
|
|
|
169
169
|
`native-instant-ui` (SwiftUI + Jetpack Compose), and `cli-skills` (terminal +
|
|
170
170
|
local/device skills).
|
|
171
171
|
|
|
172
|
+
**Already have an [A2UI](https://github.com/google/A2UI)-catalog renderer?**
|
|
173
|
+
(0.42.0) `toA2UI(payload.interface)` projects any panel losslessly to Google's
|
|
174
|
+
A2UI v0.9 flat wire format (standard component/field names; Pouchy-only
|
|
175
|
+
concepts ride a `_pouchy` extension A2UI renderers ignore), and `fromA2UI`
|
|
176
|
+
ingests a surface back. `INSTANT_UI_NODE_TYPES` lists the atom catalog as data
|
|
177
|
+
for capability checks. Embedded Button / table-row actions are opaque
|
|
178
|
+
`EmbeddedAction { type }` values — hand them back to the companion, never
|
|
179
|
+
interpret them.
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
import { toA2UI } from '@pouchy_ai/companion-sdk';
|
|
183
|
+
companion.onRender(({ interface: ui }) => myA2uiRenderer.render(toA2UI(ui)));
|
|
184
|
+
```
|
|
185
|
+
|
|
172
186
|
## Client methods (beyond the quickstart)
|
|
173
187
|
|
|
174
188
|
| Method | What it does |
|
package/dist/a2ui.d.ts
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { RenderInterfacePayload } from './protocol.js';
|
|
2
|
+
export type StateValue = string | number | boolean;
|
|
3
|
+
/** A prop value that is either a literal or a live reference to a state key. */
|
|
4
|
+
export type ValueRef<T extends StateValue> = T | {
|
|
5
|
+
$state: string;
|
|
6
|
+
};
|
|
7
|
+
/** An action embedded in a Button / Table row — carried OPAQUELY through the
|
|
8
|
+
* projection (stuffed into the A2UI event context verbatim, restored on the
|
|
9
|
+
* way back). The app narrows it to its full AgentAction union; hosts treat it
|
|
10
|
+
* as data to hand back, never to interpret. */
|
|
11
|
+
export interface EmbeddedAction {
|
|
12
|
+
type: string;
|
|
13
|
+
}
|
|
14
|
+
export type GenuiTextTone = 'default' | 'muted' | 'strong';
|
|
15
|
+
export type GenuiButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
|
|
16
|
+
export type GenuiProgressVariant = 'default' | 'affection' | 'energy' | 'health' | 'tier';
|
|
17
|
+
export interface GenuiTextNode {
|
|
18
|
+
type: 'Text';
|
|
19
|
+
text?: string;
|
|
20
|
+
/** Template with `{key}` placeholders resolved against interface state. */
|
|
21
|
+
template?: string;
|
|
22
|
+
tone?: GenuiTextTone;
|
|
23
|
+
}
|
|
24
|
+
export interface GenuiButtonNode {
|
|
25
|
+
type: 'Button';
|
|
26
|
+
label: string;
|
|
27
|
+
variant?: GenuiButtonVariant;
|
|
28
|
+
action: EmbeddedAction | null;
|
|
29
|
+
}
|
|
30
|
+
export interface GenuiProgressNode {
|
|
31
|
+
type: 'Progress';
|
|
32
|
+
value: ValueRef<number>;
|
|
33
|
+
max?: number;
|
|
34
|
+
variant?: GenuiProgressVariant;
|
|
35
|
+
}
|
|
36
|
+
export interface GenuiIconNode {
|
|
37
|
+
type: 'Icon';
|
|
38
|
+
name: string;
|
|
39
|
+
size?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface GenuiSliderNode {
|
|
42
|
+
type: 'Slider';
|
|
43
|
+
bind: string;
|
|
44
|
+
min?: number;
|
|
45
|
+
max?: number;
|
|
46
|
+
step?: number;
|
|
47
|
+
label?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface GenuiSwitchNode {
|
|
50
|
+
type: 'Switch';
|
|
51
|
+
bind: string;
|
|
52
|
+
label?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface GenuiSelectOption {
|
|
55
|
+
value: string;
|
|
56
|
+
label: string;
|
|
57
|
+
}
|
|
58
|
+
export interface GenuiSelectNode {
|
|
59
|
+
type: 'Select';
|
|
60
|
+
bind: string;
|
|
61
|
+
options: GenuiSelectOption[];
|
|
62
|
+
placeholder?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface GenuiTextInputNode {
|
|
65
|
+
type: 'TextInput';
|
|
66
|
+
bind: string;
|
|
67
|
+
label?: string;
|
|
68
|
+
placeholder?: string;
|
|
69
|
+
multiline?: boolean;
|
|
70
|
+
maxLength?: number;
|
|
71
|
+
}
|
|
72
|
+
export type GenuiGroupDirection = 'row' | 'column';
|
|
73
|
+
export interface GenuiGroupNode {
|
|
74
|
+
type: 'Group';
|
|
75
|
+
direction: GenuiGroupDirection;
|
|
76
|
+
gap?: number;
|
|
77
|
+
wrap?: boolean;
|
|
78
|
+
children: GenuiNode[];
|
|
79
|
+
}
|
|
80
|
+
export interface GenuiImageNode {
|
|
81
|
+
type: 'Image';
|
|
82
|
+
src: string;
|
|
83
|
+
alt?: string;
|
|
84
|
+
ratio?: number;
|
|
85
|
+
}
|
|
86
|
+
export interface GenuiVideoNode {
|
|
87
|
+
type: 'Video';
|
|
88
|
+
src: string;
|
|
89
|
+
ratio?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface GenuiAudioNode {
|
|
92
|
+
type: 'AudioPlayer';
|
|
93
|
+
src: string;
|
|
94
|
+
title?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface GenuiMarkdownNode {
|
|
97
|
+
type: 'Markdown';
|
|
98
|
+
text: string;
|
|
99
|
+
}
|
|
100
|
+
export type GenuiChartKind = 'bar' | 'line' | 'area' | 'pie' | 'donut';
|
|
101
|
+
export interface GenuiChartDatum {
|
|
102
|
+
label?: string;
|
|
103
|
+
value: number;
|
|
104
|
+
}
|
|
105
|
+
export interface GenuiChartNode {
|
|
106
|
+
type: 'Chart';
|
|
107
|
+
chart: GenuiChartKind;
|
|
108
|
+
data: GenuiChartDatum[];
|
|
109
|
+
max?: number;
|
|
110
|
+
title?: string;
|
|
111
|
+
}
|
|
112
|
+
export interface GenuiTableNode {
|
|
113
|
+
type: 'Table';
|
|
114
|
+
columns: string[];
|
|
115
|
+
rows: string[][];
|
|
116
|
+
title?: string;
|
|
117
|
+
rowActions?: (EmbeddedAction | null)[];
|
|
118
|
+
}
|
|
119
|
+
export interface GenuiDatePickerNode {
|
|
120
|
+
type: 'DatePicker';
|
|
121
|
+
bind: string;
|
|
122
|
+
label?: string;
|
|
123
|
+
min?: string;
|
|
124
|
+
max?: string;
|
|
125
|
+
}
|
|
126
|
+
export interface GenuiWhen {
|
|
127
|
+
key: string;
|
|
128
|
+
equals?: StateValue;
|
|
129
|
+
truthy?: boolean;
|
|
130
|
+
}
|
|
131
|
+
export interface GenuiTab {
|
|
132
|
+
label: string;
|
|
133
|
+
children: GenuiNode[];
|
|
134
|
+
}
|
|
135
|
+
export interface GenuiTabsNode {
|
|
136
|
+
type: 'Tabs';
|
|
137
|
+
tabs: GenuiTab[];
|
|
138
|
+
bind?: string;
|
|
139
|
+
}
|
|
140
|
+
export interface GenuiAccordionSection {
|
|
141
|
+
label: string;
|
|
142
|
+
children: GenuiNode[];
|
|
143
|
+
open?: boolean;
|
|
144
|
+
}
|
|
145
|
+
export interface GenuiAccordionNode {
|
|
146
|
+
type: 'Accordion';
|
|
147
|
+
sections: GenuiAccordionSection[];
|
|
148
|
+
multi?: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface GenuiDividerNode {
|
|
151
|
+
type: 'Divider';
|
|
152
|
+
}
|
|
153
|
+
export interface GenuiCardNode {
|
|
154
|
+
type: 'Card';
|
|
155
|
+
title?: string;
|
|
156
|
+
children: GenuiNode[];
|
|
157
|
+
}
|
|
158
|
+
export type GenuiNode = (GenuiTextNode | GenuiButtonNode | GenuiProgressNode | GenuiIconNode | GenuiSliderNode | GenuiSwitchNode | GenuiSelectNode | GenuiTextInputNode | GenuiGroupNode | GenuiImageNode | GenuiChartNode | GenuiTableNode | GenuiDatePickerNode | GenuiTabsNode | GenuiAccordionNode | GenuiDividerNode | GenuiCardNode | GenuiVideoNode | GenuiAudioNode | GenuiMarkdownNode) & {
|
|
159
|
+
when?: GenuiWhen;
|
|
160
|
+
};
|
|
161
|
+
export interface GenuiComputed {
|
|
162
|
+
op: 'mul' | 'add' | 'sub' | 'div';
|
|
163
|
+
args: (string | number)[];
|
|
164
|
+
round?: number;
|
|
165
|
+
}
|
|
166
|
+
/** The Instant UI panel — what `companion.ui_action` carries in
|
|
167
|
+
* `payload.interface` (typed strictly here; the event payload declares the
|
|
168
|
+
* loose wire shape). */
|
|
169
|
+
export interface DynamicInterface {
|
|
170
|
+
title?: string;
|
|
171
|
+
nodes: GenuiNode[];
|
|
172
|
+
state?: Record<string, StateValue>;
|
|
173
|
+
computed?: Record<string, GenuiComputed>;
|
|
174
|
+
reportChanges?: boolean;
|
|
175
|
+
allowedActions?: string[];
|
|
176
|
+
}
|
|
177
|
+
/** What `toA2UI` accepts: the strict panel type, or the loose
|
|
178
|
+
* `payload.interface` exactly as `onRender` delivers it (already validated
|
|
179
|
+
* and clamped server-side, so the structural cast inside is safe). */
|
|
180
|
+
export type InstantUIInput = DynamicInterface | RenderInterfacePayload['interface'];
|
|
181
|
+
/** The Instant UI node-type catalog, as data — drift-pinned against the app's
|
|
182
|
+
* canonical GENUI_NODE_SET so the mirror can never silently lag a new atom. */
|
|
183
|
+
export declare const INSTANT_UI_NODE_TYPES: readonly ["Text", "Button", "Progress", "Icon", "Slider", "Switch", "Select", "TextInput", "Group", "Image", "Chart", "Table", "DatePicker", "Tabs", "Accordion", "Divider", "Card", "Video", "AudioPlayer", "Markdown"];
|
|
184
|
+
/** A2UI binding: a literal, a JSON-Pointer data binding, or a function call. */
|
|
185
|
+
export type A2UIValue = StateValue | {
|
|
186
|
+
path: string;
|
|
187
|
+
} | {
|
|
188
|
+
call: string;
|
|
189
|
+
args?: unknown;
|
|
190
|
+
};
|
|
191
|
+
export interface A2UIComponent {
|
|
192
|
+
id: string;
|
|
193
|
+
/** A2UI component type, e.g. "Text" / "Button" / "Row" / "pouchy/Progress". */
|
|
194
|
+
component: string;
|
|
195
|
+
/** Standard A2UI property bag (component-specific; see the mapping per type). */
|
|
196
|
+
[key: string]: unknown;
|
|
197
|
+
/** Pouchy-only reconstruction data for concepts A2UI has no standard for.
|
|
198
|
+
* A2UI renderers ignore it; fromA2UI() uses it to rebuild the exact node. */
|
|
199
|
+
_pouchy?: Record<string, unknown>;
|
|
200
|
+
}
|
|
201
|
+
/** An A2UI surface = a flat component map + a root id + the data model. The
|
|
202
|
+
* `pouchy` block carries panel-level extensions A2UI has no slot for. */
|
|
203
|
+
export interface A2UISurface {
|
|
204
|
+
root: string;
|
|
205
|
+
components: Record<string, A2UIComponent>;
|
|
206
|
+
dataModel: Record<string, StateValue>;
|
|
207
|
+
pouchy?: {
|
|
208
|
+
title?: string;
|
|
209
|
+
computed?: Record<string, GenuiComputed>;
|
|
210
|
+
reportChanges?: boolean;
|
|
211
|
+
allowedActions?: string[];
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
export declare function toA2UI(input: InstantUIInput): A2UISurface;
|
|
215
|
+
export declare function fromA2UI(surface: A2UISurface): DynamicInterface;
|
|
216
|
+
//# sourceMappingURL=a2ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2ui.d.ts","sourceRoot":"","sources":["../src/a2ui.ts"],"names":[],"mappings":"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"}
|