@ggui-ai/protocol 0.1.0-rc.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/LICENSE +201 -0
- package/README.md +46 -0
- package/dist/bridge/invoke-agent.d.ts +65 -0
- package/dist/bridge/invoke-agent.d.ts.map +1 -0
- package/dist/bridge/invoke-agent.js +113 -0
- package/dist/envelope-adapters.d.ts +24 -0
- package/dist/envelope-adapters.d.ts.map +1 -0
- package/dist/envelope-adapters.js +14 -0
- package/dist/envelopes/builders.d.ts +145 -0
- package/dist/envelopes/builders.d.ts.map +1 -0
- package/dist/envelopes/builders.js +113 -0
- package/dist/errors/unknown-permission-name.d.ts +12 -0
- package/dist/errors/unknown-permission-name.d.ts.map +1 -0
- package/dist/errors/unknown-permission-name.js +29 -0
- package/dist/errors/version-mismatch.d.ts +55 -0
- package/dist/errors/version-mismatch.d.ts.map +1 -0
- package/dist/errors/version-mismatch.js +52 -0
- package/dist/gadgets/resolve-contract-gadgets.d.ts +93 -0
- package/dist/gadgets/resolve-contract-gadgets.d.ts.map +1 -0
- package/dist/gadgets/resolve-contract-gadgets.js +119 -0
- package/dist/gadgets/stdlib-gadgets.d.ts +43 -0
- package/dist/gadgets/stdlib-gadgets.d.ts.map +1 -0
- package/dist/gadgets/stdlib-gadgets.js +161 -0
- package/dist/iframe-bridge.d.ts +63 -0
- package/dist/iframe-bridge.d.ts.map +1 -0
- package/dist/iframe-bridge.js +166 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/integrations/mcp-apps.d.ts +1218 -0
- package/dist/integrations/mcp-apps.d.ts.map +1 -0
- package/dist/integrations/mcp-apps.js +427 -0
- package/dist/navigation/index.d.ts +3 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +1 -0
- package/dist/navigation/stack-navigation.d.ts +55 -0
- package/dist/navigation/stack-navigation.d.ts.map +1 -0
- package/dist/navigation/stack-navigation.js +80 -0
- package/dist/recommended-prompts.d.ts +56 -0
- package/dist/recommended-prompts.d.ts.map +1 -0
- package/dist/recommended-prompts.js +55 -0
- package/dist/registry/blueprint-key.d.ts +9 -0
- package/dist/registry/blueprint-key.d.ts.map +1 -0
- package/dist/registry/blueprint-key.js +28 -0
- package/dist/registry/canonicalize-contract.d.ts +35 -0
- package/dist/registry/canonicalize-contract.d.ts.map +1 -0
- package/dist/registry/canonicalize-contract.js +166 -0
- package/dist/registry/summarize-contract.d.ts +46 -0
- package/dist/registry/summarize-contract.d.ts.map +1 -0
- package/dist/registry/summarize-contract.js +63 -0
- package/dist/schema-learning/derive-contract.d.ts +67 -0
- package/dist/schema-learning/derive-contract.d.ts.map +1 -0
- package/dist/schema-learning/derive-contract.js +117 -0
- package/dist/schema-learning/merge.d.ts +32 -0
- package/dist/schema-learning/merge.d.ts.map +1 -0
- package/dist/schema-learning/merge.js +146 -0
- package/dist/schemas/blueprint.d.ts +32 -0
- package/dist/schemas/blueprint.d.ts.map +1 -0
- package/dist/schemas/blueprint.js +92 -0
- package/dist/schemas/data-contract.d.ts +750 -0
- package/dist/schemas/data-contract.d.ts.map +1 -0
- package/dist/schemas/data-contract.js +663 -0
- package/dist/schemas/gadget-name-grammar.d.ts +29 -0
- package/dist/schemas/gadget-name-grammar.d.ts.map +1 -0
- package/dist/schemas/gadget-name-grammar.js +28 -0
- package/dist/schemas/handshake-suggestion.d.ts +46 -0
- package/dist/schemas/handshake-suggestion.d.ts.map +1 -0
- package/dist/schemas/handshake-suggestion.js +107 -0
- package/dist/schemas/invoke.d.ts +337 -0
- package/dist/schemas/invoke.d.ts.map +1 -0
- package/dist/schemas/invoke.js +169 -0
- package/dist/schemas/mcp.d.ts +301 -0
- package/dist/schemas/mcp.d.ts.map +1 -0
- package/dist/schemas/mcp.js +373 -0
- package/dist/schemas/ops-blueprint.d.ts +176 -0
- package/dist/schemas/ops-blueprint.d.ts.map +1 -0
- package/dist/schemas/ops-blueprint.js +259 -0
- package/dist/schemas/sync-check.d.ts +11 -0
- package/dist/schemas/sync-check.d.ts.map +1 -0
- package/dist/schemas/sync-check.js +60 -0
- package/dist/screen-blueprints/define.d.ts +22 -0
- package/dist/screen-blueprints/define.d.ts.map +1 -0
- package/dist/screen-blueprints/define.js +3 -0
- package/dist/screen-blueprints/index.d.ts +4 -0
- package/dist/screen-blueprints/index.d.ts.map +1 -0
- package/dist/screen-blueprints/index.js +3 -0
- package/dist/screen-blueprints/match.d.ts +35 -0
- package/dist/screen-blueprints/match.d.ts.map +1 -0
- package/dist/screen-blueprints/match.js +51 -0
- package/dist/screen-blueprints/types.d.ts +164 -0
- package/dist/screen-blueprints/types.d.ts.map +1 -0
- package/dist/screen-blueprints/types.js +1 -0
- package/dist/stream/stream-parser.d.ts +62 -0
- package/dist/stream/stream-parser.d.ts.map +1 -0
- package/dist/stream/stream-parser.js +199 -0
- package/dist/transport/websocket.d.ts +178 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +1 -0
- package/dist/types/app-config.d.ts +61 -0
- package/dist/types/app-config.d.ts.map +1 -0
- package/dist/types/app-config.js +1 -0
- package/dist/types/auth.d.ts +61 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +1 -0
- package/dist/types/blueprint.d.ts +206 -0
- package/dist/types/blueprint.d.ts.map +1 -0
- package/dist/types/blueprint.js +1 -0
- package/dist/types/canvas-lifecycle.d.ts +105 -0
- package/dist/types/canvas-lifecycle.d.ts.map +1 -0
- package/dist/types/canvas-lifecycle.js +38 -0
- package/dist/types/capabilities.d.ts +40 -0
- package/dist/types/capabilities.d.ts.map +1 -0
- package/dist/types/capabilities.js +19 -0
- package/dist/types/contract-inference.d.ts +401 -0
- package/dist/types/contract-inference.d.ts.map +1 -0
- package/dist/types/contract-inference.js +44 -0
- package/dist/types/credential.d.ts +41 -0
- package/dist/types/credential.d.ts.map +1 -0
- package/dist/types/credential.js +32 -0
- package/dist/types/data-bindings.d.ts +322 -0
- package/dist/types/data-bindings.d.ts.map +1 -0
- package/dist/types/data-bindings.js +29 -0
- package/dist/types/data-contract.d.ts +1296 -0
- package/dist/types/data-contract.d.ts.map +1 -0
- package/dist/types/data-contract.js +111 -0
- package/dist/types/events.d.ts +182 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +8 -0
- package/dist/types/feedback.d.ts +24 -0
- package/dist/types/feedback.d.ts.map +1 -0
- package/dist/types/feedback.js +7 -0
- package/dist/types/gadget.d.ts +121 -0
- package/dist/types/gadget.d.ts.map +1 -0
- package/dist/types/gadget.js +24 -0
- package/dist/types/handshake-suggestion.d.ts +264 -0
- package/dist/types/handshake-suggestion.d.ts.map +1 -0
- package/dist/types/handshake-suggestion.js +70 -0
- package/dist/types/host-context.d.ts +163 -0
- package/dist/types/host-context.d.ts.map +1 -0
- package/dist/types/host-context.js +142 -0
- package/dist/types/interface-context.d.ts +105 -0
- package/dist/types/interface-context.d.ts.map +1 -0
- package/dist/types/interface-context.js +115 -0
- package/dist/types/invoke.d.ts +28 -0
- package/dist/types/invoke.d.ts.map +1 -0
- package/dist/types/invoke.js +7 -0
- package/dist/types/live-channel.d.ts +613 -0
- package/dist/types/live-channel.d.ts.map +1 -0
- package/dist/types/live-channel.js +1 -0
- package/dist/types/llm.d.ts +61 -0
- package/dist/types/llm.d.ts.map +1 -0
- package/dist/types/llm.js +186 -0
- package/dist/types/mcp-proxy.d.ts +67 -0
- package/dist/types/mcp-proxy.d.ts.map +1 -0
- package/dist/types/mcp-proxy.js +46 -0
- package/dist/types/mcp.d.ts +637 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +30 -0
- package/dist/types/openrouter-models.d.ts +22 -0
- package/dist/types/openrouter-models.d.ts.map +1 -0
- package/dist/types/openrouter-models.js +4843 -0
- package/dist/types/region.d.ts +26 -0
- package/dist/types/region.d.ts.map +1 -0
- package/dist/types/region.js +36 -0
- package/dist/types/session.d.ts +419 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +1 -0
- package/dist/types/thread.d.ts +207 -0
- package/dist/types/thread.d.ts.map +1 -0
- package/dist/types/thread.js +57 -0
- package/dist/types/ui-generator.d.ts +100 -0
- package/dist/types/ui-generator.d.ts.map +1 -0
- package/dist/types/ui-generator.js +53 -0
- package/dist/validation/ajv-runtime.d.ts +140 -0
- package/dist/validation/ajv-runtime.d.ts.map +1 -0
- package/dist/validation/ajv-runtime.js +452 -0
- package/dist/validation/content-hash.d.ts +3 -0
- package/dist/validation/content-hash.d.ts.map +1 -0
- package/dist/validation/content-hash.js +21 -0
- package/dist/validation/contract-validator.d.ts +244 -0
- package/dist/validation/contract-validator.d.ts.map +1 -0
- package/dist/validation/contract-validator.js +711 -0
- package/dist/validation/cross-references.d.ts +105 -0
- package/dist/validation/cross-references.d.ts.map +1 -0
- package/dist/validation/cross-references.js +164 -0
- package/dist/validation/hygiene-rules.d.ts +250 -0
- package/dist/validation/hygiene-rules.d.ts.map +1 -0
- package/dist/validation/hygiene-rules.js +564 -0
- package/dist/validation/lint-contract.d.ts +130 -0
- package/dist/validation/lint-contract.d.ts.map +1 -0
- package/dist/validation/lint-contract.js +225 -0
- package/dist/validation/name-invariants.d.ts +117 -0
- package/dist/validation/name-invariants.d.ts.map +1 -0
- package/dist/validation/name-invariants.js +172 -0
- package/dist/validation/reserved-channels.d.ts +156 -0
- package/dist/validation/reserved-channels.d.ts.map +1 -0
- package/dist/validation/reserved-channels.js +356 -0
- package/dist/validation/resolve-stream-channel.d.ts +78 -0
- package/dist/validation/resolve-stream-channel.d.ts.map +1 -0
- package/dist/validation/resolve-stream-channel.js +64 -0
- package/dist/validation/sanitize-error.d.ts +46 -0
- package/dist/validation/sanitize-error.d.ts.map +1 -0
- package/dist/validation/sanitize-error.js +88 -0
- package/dist/validation/schema-compat-invariants.d.ts +140 -0
- package/dist/validation/schema-compat-invariants.d.ts.map +1 -0
- package/dist/validation/schema-compat-invariants.js +220 -0
- package/dist/validation/schema-meta-validation.d.ts +60 -0
- package/dist/validation/schema-meta-validation.d.ts.map +1 -0
- package/dist/validation/schema-meta-validation.js +131 -0
- package/dist/validation/schema-subset.d.ts +165 -0
- package/dist/validation/schema-subset.d.ts.map +1 -0
- package/dist/validation/schema-subset.js +295 -0
- package/dist/validation/ui-security.d.ts +54 -0
- package/dist/validation/ui-security.d.ts.map +1 -0
- package/dist/validation/ui-security.js +138 -0
- package/dist/validation/zod-to-json-schema.d.ts +63 -0
- package/dist/validation/zod-to-json-schema.d.ts.map +1 -0
- package/dist/validation/zod-to-json-schema.js +126 -0
- package/dist/version.d.ts +1458 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +1459 -0
- package/package.json +113 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side data-binding subsystem for React Native controllers.
|
|
3
|
+
*
|
|
4
|
+
* **NOT to be confused with {@link ClientCapabilitiesSpec} on
|
|
5
|
+
* `DataContract.clientCapabilities`.** These types describe the
|
|
6
|
+
* data-RESOLVER toolkit consumed by `@ggui-ai/ggui-react-native`
|
|
7
|
+
* (`fetch` / `auth` / `storage` / `subscription` / `voice` / `camera` /
|
|
8
|
+
* `chain` / `transform` / `merge`) — the controllers wire one of these
|
|
9
|
+
* tool configs onto a binding name and the runtime resolves the value
|
|
10
|
+
* at render time.
|
|
11
|
+
*
|
|
12
|
+
* `clientCapabilities.gadgets` is the wire-level declaration that the
|
|
13
|
+
* UI calls a browser-capability hook (`useMicrophone` /
|
|
14
|
+
* `useGeolocation` / `useClipboardWrite` / …); those hooks are
|
|
15
|
+
* implemented in `@ggui-ai/gadgets` and surfaced into the
|
|
16
|
+
* agent only when the UI threads their value into a `contextSpec` slot
|
|
17
|
+
* or an `actionSpec` payload.
|
|
18
|
+
*
|
|
19
|
+
* The shared word "tool" is historical:
|
|
20
|
+
*
|
|
21
|
+
* - `ClientToolName` here = a runtime data-resolver identifier.
|
|
22
|
+
* - `clientCapabilities.gadgets` = a package-keyed wire map
|
|
23
|
+
* (`Record<package, Record<exportName, GadgetExportUse>>`); the
|
|
24
|
+
* export name is the inner map key, not a field.
|
|
25
|
+
* - `agentCapabilities.tools` = MCP tool catalog.
|
|
26
|
+
*
|
|
27
|
+
* All three are distinct namespaces.
|
|
28
|
+
*/
|
|
29
|
+
import type { JsonObject, JsonValue } from './data-contract';
|
|
30
|
+
import type { EndUserIdentity } from './auth';
|
|
31
|
+
/**
|
|
32
|
+
* Available client-side tools
|
|
33
|
+
*/
|
|
34
|
+
export type ClientToolName = 'fetch' | 'auth' | 'storage' | 'subscription' | 'voice' | 'camera' | 'chain' | 'transform' | 'merge';
|
|
35
|
+
/**
|
|
36
|
+
* Base configuration for all tools.
|
|
37
|
+
* Extends {@link JsonObject} for JSON serialization compatibility.
|
|
38
|
+
* Generic `TConfig` defaults to {@link JsonObject} for the tool-specific configuration shape.
|
|
39
|
+
*/
|
|
40
|
+
export interface ClientToolConfig<TConfig extends JsonObject = JsonObject> extends JsonObject {
|
|
41
|
+
tool: ClientToolName;
|
|
42
|
+
config: TConfig;
|
|
43
|
+
/**
|
|
44
|
+
* Other bindings this depends on (resolved first in topological order)
|
|
45
|
+
* Example: ['user'] means this tool waits for 'user' binding to resolve
|
|
46
|
+
*/
|
|
47
|
+
dependsOn?: string[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Fetch tool - HTTP requests with interpolation support
|
|
51
|
+
*
|
|
52
|
+
* Example:
|
|
53
|
+
* ```
|
|
54
|
+
* { tool: 'fetch', config: { endpoint: '/api/users/{user.id}' } }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export interface FetchToolConfig extends ClientToolConfig {
|
|
58
|
+
tool: 'fetch';
|
|
59
|
+
config: {
|
|
60
|
+
/**
|
|
61
|
+
* Endpoint with optional interpolation: '/api/users/{user.id}'
|
|
62
|
+
* Values in braces are replaced from resolved dependencies
|
|
63
|
+
*/
|
|
64
|
+
endpoint: string;
|
|
65
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
66
|
+
headers?: Record<string, string>;
|
|
67
|
+
/** Request body. Typed as {@link JsonValue} (any JSON-safe value). */
|
|
68
|
+
body?: JsonValue;
|
|
69
|
+
/**
|
|
70
|
+
* Cache configuration
|
|
71
|
+
*/
|
|
72
|
+
cache?: {
|
|
73
|
+
/** Time-to-live in milliseconds */
|
|
74
|
+
ttl: number;
|
|
75
|
+
/** Cache key (defaults to endpoint) */
|
|
76
|
+
key?: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Transform response before returning
|
|
80
|
+
* Dot path to extract: 'data.users' extracts response.data.users
|
|
81
|
+
*/
|
|
82
|
+
extract?: string;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Auth tool - Access authentication context
|
|
87
|
+
*
|
|
88
|
+
* Example:
|
|
89
|
+
* ```
|
|
90
|
+
* { tool: 'auth', config: { field: 'currentUser' } }
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export interface AuthToolConfig extends ClientToolConfig {
|
|
94
|
+
tool: 'auth';
|
|
95
|
+
config: {
|
|
96
|
+
/**
|
|
97
|
+
* Field to extract from auth context
|
|
98
|
+
* - 'currentUser': Full user object
|
|
99
|
+
* - 'userId': Just the user ID
|
|
100
|
+
* - 'token': Access token
|
|
101
|
+
* - 'isAuthenticated': Boolean
|
|
102
|
+
*/
|
|
103
|
+
field: 'currentUser' | 'userId' | 'token' | 'isAuthenticated' | string;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Storage tool - localStorage/sessionStorage access
|
|
108
|
+
*
|
|
109
|
+
* Example:
|
|
110
|
+
* ```
|
|
111
|
+
* { tool: 'storage', config: { key: 'userPrefs', storage: 'local' } }
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export interface StorageToolConfig extends ClientToolConfig {
|
|
115
|
+
tool: 'storage';
|
|
116
|
+
config: {
|
|
117
|
+
key: string;
|
|
118
|
+
storage?: 'local' | 'session';
|
|
119
|
+
/** Default value if key doesn't exist. Typed as {@link JsonValue}. */
|
|
120
|
+
defaultValue?: JsonValue;
|
|
121
|
+
/** Parse as JSON (default: true) */
|
|
122
|
+
parse?: boolean;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Subscription tool - Real-time data subscriptions
|
|
127
|
+
*
|
|
128
|
+
* Example:
|
|
129
|
+
* ```
|
|
130
|
+
* { tool: 'subscription', config: { channel: 'notifications/{user.id}' } }
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export interface SubscriptionToolConfig extends ClientToolConfig {
|
|
134
|
+
tool: 'subscription';
|
|
135
|
+
config: {
|
|
136
|
+
/** Channel/topic with optional interpolation */
|
|
137
|
+
channel: string;
|
|
138
|
+
/** Protocol type */
|
|
139
|
+
type?: 'websocket' | 'sse' | 'polling';
|
|
140
|
+
/** Polling interval in ms (for polling type) */
|
|
141
|
+
interval?: number;
|
|
142
|
+
/** Initial data before first message. Typed as {@link JsonValue}. */
|
|
143
|
+
initialData?: JsonValue;
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Voice tool - Voice input/output
|
|
148
|
+
*/
|
|
149
|
+
export interface VoiceToolConfig extends ClientToolConfig {
|
|
150
|
+
tool: 'voice';
|
|
151
|
+
config: {
|
|
152
|
+
mode: 'input' | 'output' | 'both';
|
|
153
|
+
language?: string;
|
|
154
|
+
continuous?: boolean;
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Camera tool - Camera access
|
|
159
|
+
*/
|
|
160
|
+
export interface CameraToolConfig extends ClientToolConfig {
|
|
161
|
+
tool: 'camera';
|
|
162
|
+
config: {
|
|
163
|
+
mode: 'photo' | 'video' | 'stream';
|
|
164
|
+
facing?: 'user' | 'environment';
|
|
165
|
+
resolution?: {
|
|
166
|
+
width: number;
|
|
167
|
+
height: number;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Chain tool - Sequential execution of tools
|
|
173
|
+
* Each step receives previous result as {prev}
|
|
174
|
+
*
|
|
175
|
+
* Example:
|
|
176
|
+
* ```
|
|
177
|
+
* {
|
|
178
|
+
* tool: 'chain',
|
|
179
|
+
* config: {
|
|
180
|
+
* steps: [
|
|
181
|
+
* { tool: 'auth', config: { field: 'currentUser' } },
|
|
182
|
+
* { tool: 'fetch', config: { endpoint: '/api/dashboard/{prev.id}' } },
|
|
183
|
+
* { tool: 'transform', config: { pick: ['stats', 'notifications'] } }
|
|
184
|
+
* ]
|
|
185
|
+
* }
|
|
186
|
+
* }
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
export interface ChainToolConfig extends ClientToolConfig {
|
|
190
|
+
tool: 'chain';
|
|
191
|
+
config: {
|
|
192
|
+
/** Sequential tool steps, each receives previous result as {prev} */
|
|
193
|
+
steps: ClientToolConfig[];
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Transform tool - Data transformation
|
|
198
|
+
*
|
|
199
|
+
* Example:
|
|
200
|
+
* ```
|
|
201
|
+
* { tool: 'transform', config: { pick: ['name', 'email'], rename: { email: 'contactEmail' } } }
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export interface TransformToolConfig<TDefaults extends JsonObject = JsonObject> extends ClientToolConfig {
|
|
205
|
+
tool: 'transform';
|
|
206
|
+
config: {
|
|
207
|
+
/** Pick specific fields from data */
|
|
208
|
+
pick?: string[];
|
|
209
|
+
/** Omit specific fields from data */
|
|
210
|
+
omit?: string[];
|
|
211
|
+
/** Rename fields: { oldName: 'newName' } */
|
|
212
|
+
rename?: Record<string, string>;
|
|
213
|
+
/** Map array items through a transformation */
|
|
214
|
+
mapArray?: {
|
|
215
|
+
/** Field containing array */
|
|
216
|
+
field?: string;
|
|
217
|
+
/** Fields to pick from each item */
|
|
218
|
+
pick?: string[];
|
|
219
|
+
/** Fields to rename in each item */
|
|
220
|
+
rename?: Record<string, string>;
|
|
221
|
+
};
|
|
222
|
+
/** Flatten nested object: 'user.profile' moves profile fields to top level */
|
|
223
|
+
flatten?: string;
|
|
224
|
+
/** Default values for missing fields */
|
|
225
|
+
defaults?: TDefaults;
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Merge tool - Combine multiple data sources
|
|
230
|
+
*
|
|
231
|
+
* Example:
|
|
232
|
+
* ```
|
|
233
|
+
* {
|
|
234
|
+
* tool: 'merge',
|
|
235
|
+
* config: { sources: ['user', 'profile', 'settings'] },
|
|
236
|
+
* dependsOn: ['user', 'profile', 'settings']
|
|
237
|
+
* }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
export interface MergeToolConfig extends ClientToolConfig {
|
|
241
|
+
tool: 'merge';
|
|
242
|
+
config: {
|
|
243
|
+
/** Binding names to merge (must be in dependsOn) */
|
|
244
|
+
sources: string[];
|
|
245
|
+
/** How to handle conflicts */
|
|
246
|
+
strategy?: 'first' | 'last' | 'deep';
|
|
247
|
+
/** Rename sources in merged result */
|
|
248
|
+
rename?: Record<string, string>;
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Type-safe tool config union
|
|
253
|
+
*/
|
|
254
|
+
export type TypedToolConfig = FetchToolConfig | AuthToolConfig | StorageToolConfig | SubscriptionToolConfig | VoiceToolConfig | CameraToolConfig | ChainToolConfig | TransformToolConfig | MergeToolConfig;
|
|
255
|
+
/**
|
|
256
|
+
* Data bindings - map of binding names to tool configurations
|
|
257
|
+
*
|
|
258
|
+
* Example:
|
|
259
|
+
* ```
|
|
260
|
+
* const bindings: DataBindings = {
|
|
261
|
+
* user: { tool: 'auth', config: { field: 'currentUser' } },
|
|
262
|
+
* profile: {
|
|
263
|
+
* tool: 'fetch',
|
|
264
|
+
* config: { endpoint: '/api/users/{user.id}/profile' },
|
|
265
|
+
* dependsOn: ['user']
|
|
266
|
+
* }
|
|
267
|
+
* };
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export type DataBindings = Record<string, TypedToolConfig>;
|
|
271
|
+
/**
|
|
272
|
+
* Context provided to tool execution.
|
|
273
|
+
* Generic `TResolved` defaults to {@link JsonObject} for the resolved dependency values.
|
|
274
|
+
*/
|
|
275
|
+
export interface ToolContext<TResolved = JsonObject> {
|
|
276
|
+
/** Resolved values from previous bindings */
|
|
277
|
+
resolved: TResolved;
|
|
278
|
+
/** Auth context (user, token, etc.) */
|
|
279
|
+
auth?: {
|
|
280
|
+
currentUser?: EndUserIdentity;
|
|
281
|
+
userId?: string;
|
|
282
|
+
token?: string;
|
|
283
|
+
isAuthenticated: boolean;
|
|
284
|
+
};
|
|
285
|
+
/** App configuration */
|
|
286
|
+
appId: string;
|
|
287
|
+
sessionId: string;
|
|
288
|
+
/** Base URL for API calls */
|
|
289
|
+
apiBaseUrl?: string;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Result from tool execution
|
|
293
|
+
*/
|
|
294
|
+
export interface ToolResult<T = unknown> {
|
|
295
|
+
data: T | null;
|
|
296
|
+
loading: boolean;
|
|
297
|
+
error: Error | null;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Tool implementation interface
|
|
301
|
+
*/
|
|
302
|
+
export interface ClientTool<TConfig extends ClientToolConfig = ClientToolConfig> {
|
|
303
|
+
name: ClientToolName;
|
|
304
|
+
/**
|
|
305
|
+
* Execute the tool with given config and context
|
|
306
|
+
*/
|
|
307
|
+
execute(config: TConfig['config'], context: ToolContext): Promise<unknown>;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Controller metadata - describes what props a controller expects
|
|
311
|
+
* Note: Actual controller components receive children as ReactNode,
|
|
312
|
+
* but we use 'unknown' here to avoid React dependency in shared package.
|
|
313
|
+
*/
|
|
314
|
+
export interface ControllerPropSpec {
|
|
315
|
+
name: string;
|
|
316
|
+
type: 'string' | 'number' | 'boolean' | 'object' | 'array';
|
|
317
|
+
required: boolean;
|
|
318
|
+
description: string;
|
|
319
|
+
/** Default value for this prop. Typed as {@link JsonValue}. */
|
|
320
|
+
defaultValue?: JsonValue;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=data-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-bindings.d.ts","sourceRoot":"","sources":["../../src/types/data-bindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side data-binding subsystem for React Native controllers.
|
|
3
|
+
*
|
|
4
|
+
* **NOT to be confused with {@link ClientCapabilitiesSpec} on
|
|
5
|
+
* `DataContract.clientCapabilities`.** These types describe the
|
|
6
|
+
* data-RESOLVER toolkit consumed by `@ggui-ai/ggui-react-native`
|
|
7
|
+
* (`fetch` / `auth` / `storage` / `subscription` / `voice` / `camera` /
|
|
8
|
+
* `chain` / `transform` / `merge`) — the controllers wire one of these
|
|
9
|
+
* tool configs onto a binding name and the runtime resolves the value
|
|
10
|
+
* at render time.
|
|
11
|
+
*
|
|
12
|
+
* `clientCapabilities.gadgets` is the wire-level declaration that the
|
|
13
|
+
* UI calls a browser-capability hook (`useMicrophone` /
|
|
14
|
+
* `useGeolocation` / `useClipboardWrite` / …); those hooks are
|
|
15
|
+
* implemented in `@ggui-ai/gadgets` and surfaced into the
|
|
16
|
+
* agent only when the UI threads their value into a `contextSpec` slot
|
|
17
|
+
* or an `actionSpec` payload.
|
|
18
|
+
*
|
|
19
|
+
* The shared word "tool" is historical:
|
|
20
|
+
*
|
|
21
|
+
* - `ClientToolName` here = a runtime data-resolver identifier.
|
|
22
|
+
* - `clientCapabilities.gadgets` = a package-keyed wire map
|
|
23
|
+
* (`Record<package, Record<exportName, GadgetExportUse>>`); the
|
|
24
|
+
* export name is the inner map key, not a field.
|
|
25
|
+
* - `agentCapabilities.tools` = MCP tool catalog.
|
|
26
|
+
*
|
|
27
|
+
* All three are distinct namespaces.
|
|
28
|
+
*/
|
|
29
|
+
export {};
|