Skip to main content

Configuration

This page documents the public configuration types used by @interopio/io-assist-react.


Installation Model

Before configuration, keep the package setup model clear:

  • install @interopio/io-assist-react
  • ensure react and react-dom are present — they are the only peer dependencies
  • import @interopio/io-assist-react/styles

Everything else — the io.Connect platform packages (@interopio/browser, @interopio/desktop), the core intelligence library (@interopio/ai-web), and @interopio/working-context — is declared as a package dependency and installed automatically. You still import a platform factory (for example @interopio/browser) to pass into connectConfig.


IoAssistStaticConfig

IoAssistStaticConfig is passed as the staticConfig prop.

type IoAssistStaticConfig = {
connectConfig: {
browser?: { factory: IOConnectBrowserFactoryFunction; config?: IOConnectBrowser.Config };
desktop?: { factory: (config?: IOConnectDesktop.Config) => Promise<IOConnectDesktop.API>; config?: IOConnectDesktop.Config };
};
aiWebConfig: {
agentServer: IoAiWeb.AgentServerConfig;
mcp?: IoAiWeb.MCPConfig;
};
defaultAgentName?: string;
workingContext?: IoAiWeb.WorkingContextConfig;
defaultPrompts?: IoAssistPromptCategory[];
};

Properties

PropertyTypeRequiredDescription
connectConfigobjectYesio.Connect platform setup. Must include a browser and/or desktop entry, each with a factory and optional config
aiWebConfigobjectYesUnderlying AI Web configuration. See AI Web Configuration
defaultAgentNamestringNoAgent name to select on startup
workingContextIoAiWeb.WorkingContextConfigNoWorking Context factory and configuration
defaultPromptsIoAssistPromptCategory[]NoPrompt library entries shown in the assistant UI

Required Minimum

At minimum, static config needs:

  • connectConfig with a platform factory
  • aiWebConfig.agentServer.baseUrl

AI Web Configuration

aiWebConfig is the io.Assist React wrapper around the underlying AI Web configuration. It is an inline object on IoAssistStaticConfig (there is no separately exported AIWebConfig type).

aiWebConfig: {
agentServer: IoAiWeb.AgentServerConfig;
mcp?: IoAiWeb.MCPConfig;
};

Notes

  • baseUrl is the only required field on agentServer. It also accepts retry and backoff options, fetch credentials mode, and other IoAiWeb.AgentServerConfig fields.
  • MCP, remote servers, MCP Apps, and capability handlers all flow through mcp.
  • Although agentServer accepts a headers field, request headers are sourced from the dynamic config (dynamicConfig.agentServer.headers) and override anything set here. Put per-user headers there so they can be supplied after login.

Example

aiWebConfig: {
agentServer: {
baseUrl: 'http://localhost:4111',
retries: 3,
backoffMs: 1000,
maxBackoffMs: 10000,
},
mcp: {
clientsConfig: {
capabilities: {},
},
},
}

IoAssistDynamicConfig

IoAssistDynamicConfig is passed as the dynamicConfig prop.

type IoAssistUserConfig = {
id: string;
name?: string;
};

type IoAssistDynamicConfig = {
user: IoAssistUserConfig;
agentServer?: {
headers?: Record<string, string>;
};
};

Properties

PropertyTypeRequiredDescription
user.idstringYesUnique user identifier used to scope thread history
user.namestringNoDisplay name shown in the assistant UI
agentServer.headersRecord<string, string>NoPer-user request headers such as auth tokens. This is the only source of request headers

Why the Split Matters

This config is designed for values that are only known at runtime:

  • the current authenticated user
  • per-user authorization headers
  • values that may change without rebuilding the static configuration

The recommended pattern is to memoize dynamicConfig from auth state and render IoAssist only once a user is present. See Component API.


Prompt Shapes

Prompt library entries are authored as inline literals on defaultPrompts. They are not exported as named types, but their structure is:

type IoAssistPrompt = {
name: string;
prompt: string;
iconResource?: IconResource;
};

type IoAssistPromptCategory = {
category?: string;
prompts: IoAssistPrompt[];
};

IconResource

type IconResource = {
type: 'svg' | 'url' | 'data-url';
data: string;
};
TypeNotes
'svg'Inline SVG string. Sanitized: fill, width, height stripped; hardcoded colors become currentColor
'url'Absolute URL or absolute path from the document root
'data-url'Base64-encoded SVG, PNG, or JPEG

Prompts without an icon show a default icon.

Example

defaultPrompts: [
{
category: 'General',
prompts: [
{
name: 'Summarize',
prompt: 'Please summarize the following content:',
},
{
name: 'Explain',
prompt: 'Please explain this in simple terms:',
iconResource: {
type: 'svg',
data: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="..."/></svg>',
},
},
],
},
];

Working Context Configuration

When enabled, workingContext uses the same factory-and-config pattern as the standalone Working Context package.

import { IoIntelWorkingContextFactory } from '@interopio/working-context';

workingContext: {
factory: IoIntelWorkingContextFactory,
config: {
schema: {
clientId: {
type: 'string',
source: {
context: {
location: { workspace: { target: 'my' } },
path: 'clientId',
},
},
},
},
},
}

For the schema model itself, see Working Context Schema Configuration.


Stylesheet Requirement

The component styles are exposed through the package ./styles export:

@import '@interopio/io-assist-react/styles';

Add the import wherever your app loads global CSS (for example src/styles.css or your root entry). Without the stylesheet import, the component will not render as intended.