UserProfileFull
userobject · requiredsettingsobject · requiredonboardingobject · requiredPer-user onboarding state. Stores draft user input + wizard progress. Step "completion" is derived from real product state, not stored here. No secrets — vault tokens stay in AppSettings.vaultProviders.
UserProfile
idstring · requiredlastProjectIdstring · requiredmanualBalancenumber · requiredsubscriptionBalancenumber · required
stripeCustomerIdstringprojectIdToAgentIdobjectConstruct a type with a set of properties K of type T
selectedBusinessContextIdstring
AppSettings
idstring · requiredthemestring · requireddiffControlstring · requiredshellExecutionstring · requiredemailNotificationsboolean · requiredpushNotificationsboolean · requireddataAnalyticsboolean · requiredplaySoundOnTaskCompleteboolean · requiredshowTodoCompletionToastboolean · required
todoListThemetabNotificationModeHow the browser-tab red "done" dot behaves after a TODO finishes.
disabledMentionSourcesstring[]Disabled
keyboardBindingsobjectConstruct a type with a set of properties K of type T
keyboardShortcutsEnabledbooleandefaultViewModestringmodelMentionAliasesstring[]Enabled model-mention aliases (e.g. 'claude', 'gpt') for
showDiffMergeControlsbooleanShow accept/reject chunk controls in the diff (merge) view. Off by default — with auto-apply the diff is just a record of what got applied, so the controls are unnecessary noise.
showAgentColorsbooleanshowAgentNameInComposerbooleanShow the selected agent's name (with an expand chevron) on the collapsed composer trigger instead of the plain settings cog icon.
showAllowAllButtonbooleanshowAutoDoneButtonbooleanShow the Auto-Done toggle in the message toolbar. When the toggle is on, the next run's successful completion lands the todo in DONE instead of READY.
showSystemPromptbooleanshowAgentJsonExportbooleanShow the JSON export button in the agent settings modal header.
showCloudWorkspaceBarbooleanShow the workspace bar on the built-in Cloud device card. Hidden by default — the cloud workspace is always
/rootand virtually nobody should change it.showProjectPickerInSidebarbooleanShow the project picker at the top of the todo sidebar. Only ever visible on the team plan; defaults to on there, this lets team users hide it.
toolDisplayVerbosityDesktopTool-block display density, resolved per viewport.
collapsedkeeps non-essential tool blocks collapsed (one-line summary, click to expand).normalopens them by default.debugadditionally surfaces internal fields (pid, timeout, …) on shell/bash blocks. Desktop defaults tonormal, mobile tocollapsed.toolDisplayVerbosityMobilegroupToolDisplaybooleanCollapse consecutive tool-only assistant messages into a single group row. Backend defaults to true (the recommended workflow); set false to render each tool block individually. Independent of verbose tool display.
vaultProvidervaultConfigvaultProvidershostDesktopItemsobjectConstruct a type with a set of properties K of type T
companyNamestringvatNumberstringaddressLine1stringaddressLine2stringcitystringstatestringpostalCodestringcountryISOstringaddressValidboolean
Recordstring__type
configobject · requiredConstruct a type with a set of properties K of type T
enabledboolean · required
RecordstringArrayHostDesktopItem
keystring · requiredTile identity.key (e.g. "filesystem", "gh") or widget id (e.g. "widget:activity").
wnumberColumn span (default 1).
hnumberRow span (default 1).
kindDiscriminates render path. Defaults to 'tile' when omitted.
HostDesktopItem
keystring · requiredTile identity.key (e.g. "filesystem", "gh") or widget id (e.g. "widget:activity").
wnumberColumn span (default 1).
hnumberRow span (default 1).
kindDiscriminates render path. Defaults to 'tile' when omitted.
Onboarding
idstring · requiredid === userId
versionnumber · requiredSchema version for future migrations
updatedAtnumber · requiredLast server-side write timestamp (last-write-wins)
startedAtnumbercompletedAtnumbercurrentStepstringwebsiteUrlstringstyleAnswersobjectConstruct a type with a set of properties K of type T
styleAiAnswersobjectConstruct a type with a set of properties K of type T
voiceProfilesobjectConstruct a type with a set of properties K of type T
RecordstringVoiceProfile
profilestring · requiredOne-paragraph description of the voice (tone, formality, quirks, do/don't).
matchnumber · required0–100 how well the final draft matches the target style.
sourcerequiredWhere the voice was learned from:
- 'answers' the user's own answers were usable and drove the profile
- 'company' the answers were too thin, so the profile is inferred from company info
- 'social' inferred from a (mock) connected social account
iterationsobject[] · requiredThe refinement passes, oldest → newest, so the UI can show the loop converging.
updatedAtnumber · required
notestringWhen source==='company': a short note explaining why the answers weren't used.
channelstringOptional label of the mock social channel this came from (source==='social').
answerFeedbackobjectConstruct a type with a set of properties K of type T
VoiceProfile
profilestring · requiredOne-paragraph description of the voice (tone, formality, quirks, do/don't).
matchnumber · required0–100 how well the final draft matches the target style.
sourcerequiredWhere the voice was learned from:
- 'answers' the user's own answers were usable and drove the profile
- 'company' the answers were too thin, so the profile is inferred from company info
- 'social' inferred from a (mock) connected social account
iterationsobject[] · requiredThe refinement passes, oldest → newest, so the UI can show the loop converging.
updatedAtnumber · required
notestringWhen source==='company': a short note explaining why the answers weren't used.
channelstringOptional label of the mock social channel this came from (source==='social').
answerFeedbackobjectConstruct a type with a set of properties K of type T
VoiceIteration
samplestring · requiredSample line rewritten in the learned voice for this pass.
matchnumber · required0–100 self-assessed match to the target style after this pass.
critiquestring · requiredWhat changed / what was still off this pass (one short sentence).
AccountDataExport
exportedAtstring · requireduserrequiredprofilerequiredsettingsrequiredonboardingrequiredauthSessionsarray · requiredauthAccountsarray · requiredprojectsarray · requiredprojectSettingsarray · requiredtodosarray · requiredmessagesarray · requiredagentSettingsarray · requirededgesarray · requireddevicesarray · requiredapiKeysarray · requiredtasksarray · requiredscheduledTasksarray · requiredusagearray · requiredtransactionsarray · requiredexternalDataSourcesarray · requiredtodoCostsarray · requiredhexGridsarray · requiredgridTilesarray · requiredattachmentsarray · requiredbusinessContextsarray · requiredvaultobject · required
DailyUsage
dayTSnumber · requiredtotalSpentnumber · requiredtotalAddednumber · requiredmessageCountnumber · requiredmcpUsageCountnumber · requiredmodelUsageobject · requiredConstruct a type with a set of properties K of type T
updatedAtnumber · required
ProjectFull
projectobject · requiredA project organizes todos.
settingsobject · requireddoneCountnumber · requiredCount of todos in the DONE stage — O(1) ZCARD, kept accurate independent of what the paginated todo list has loaded. Todo count = todoIds.length - doneCount.
Project
idstring · requirednamestring · requireddescriptionstring · requiredprojectSettingsIdstring · requiredownerIdstring · requiredownerEmailstring · requiredisPublicboolean · requiredtodoIdsstring[] · requiredreadAccessIdsstring[] · requiredUser IDs with read access
writeAccessIdsstring[] · requiredUser IDs with write access
readAccessEmailsstring[] · requiredwriteAccessEmailsstring[] · requiredstatusrequiredisDefaultboolean · requiredcreatedAtnumber · requiredupdatedAtnumber · required
archivedAtnumberdeletedAtnumber
ProjectStatus
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
ShareProjectInput
emailstring · email · requiredprojectIdstring · requiredcanWriteboolean · required
CreateTodoInput
projectIdstring · requiredcontentstring · requiredagentSettingsobject · requiredAI AgentSettings configuration including model, system prompt, and MCP tools.
attachmentsobject[]scheduledTimestampnumberfilteredEdgeToolsobjectConstruct a type with a set of properties K of type T
todoIdstringbusinessContextIdstringvisiblebooleanVisible in the project's default todo list. Defaults to true; subagent runs (tfa-*) pass false. Hidden todos are still accessible by id.
autoDonebooleanWhen true, successful completion lands in DONE (strikethrough/terminal) instead of READY. For plumbing todos that don't need user ack.
AgentSettings
idstring · requirednamestring · requiredownerIdstring · requiredmcpConfigsobject · requiredPer-edge config bag. Mostly serverId → ServerSettings, but also carries edge-level metadata (deviceType, installedTools) used by the agent runtime. TODO: rename to EdgeConfig — see plan/edge-config-rename.md
edgesMcpConfigsobject · requiredcreatedAtnumber · requiredupdatedAtnumber · required
systemMessagestringCustom system prompt for the agent
modelstringLLM model identifier (e.g., 'claude-3-opus')
thinkingLeveltemperaturenumbersystemMessageMode'default_coder' uses built-in coding prompt, 'custom_w_tools' uses systemMessage + auto-injected capability sections, 'raw' uses systemMessage verbatim (no global prepend, no tool/routing/workspace sections).
smartSystemPromptbooleanAuto-enhance system prompt based on context
devicesConfigobjectpermissionsobjecttemplateIdstringTemplate this agent was created from
colorstringHex color (e.g. '#10b981') used to tint todos assigned to this agent
MCPSettings
deviceTypeEdge device type — used by the Julia agent for capability checks (e.g. has_shell).
installedToolsobjectConstruct a type with a set of properties K of type T
enabledbooleanPer-agent edge on/off.
falseremoves this edge from the agent's tool spec at run time (filtered in AgentSettingsService.prepareForAgent). Undefined/true = on.namestringEdge identity surfaced at submit time (enrichWithOnlineEdges) so the agent can use it for the tool-alias suffix (bash_
) and the ### <name>heading in## Available Machines. TODO: revisit — questionable whether this belongs here. (1) For real edgesnameis an auto-generated junk label (e.g. "PC_8814" = {deviceType}_{rand}), which gives the agent no useful alias/heading; only bridge devices have a meaningful user-given name. (2) name/metadata duplicate Edge.* and bloat every per-agent record. Consider passing identity out-of-band instead of stuffing it into edgesMcpConfigs.metadataobjectConstruct a type with a set of properties K of type T
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = string | |
| type = boolean | |
| type = object | |
| type = object |
RecordstringCatalogToolState
installedboolean · requiredWhether the binary is found on PATH
versionstringOutput of versionCmd (e.g. "v1.2.3"), undefined if not run or no versionCmd
statusOutputstringOutput of statusCmd (e.g. logged-in user), undefined if not run or no statusCmd
authenticatedbooleanWhether statusCmd exited 0 (authenticated/ready)
CatalogToolState
installedboolean · requiredWhether the binary is found on PATH
versionstringOutput of versionCmd (e.g. "v1.2.3"), undefined if not run or no versionCmd
statusOutputstringOutput of statusCmd (e.g. logged-in user), undefined if not run or no statusCmd
authenticatedbooleanWhether statusCmd exited 0 (authenticated/ready)
ServerSettings
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = boolean | |
| type = array | |
| type = object |
ToolConfiguration
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = string | |
| type = number | |
| type = boolean | |
| type = array | |
| type = object |
ToolConfigurationValue
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = string | |
| type = number | |
| type = boolean | |
| type = array | |
| type = object |
MCPEdgesSettings
deviceTypeEdge device type — used by the Julia agent for capability checks (e.g. has_shell).
installedToolsobjectConstruct a type with a set of properties K of type T
enabledbooleanPer-agent edge on/off.
falseremoves this edge from the agent's tool spec at run time (filtered in AgentSettingsService.prepareForAgent). Undefined/true = on.namestringEdge identity surfaced at submit time (enrichWithOnlineEdges) so the agent can use it for the tool-alias suffix (bash_
) and the ### <name>heading in## Available Machines. TODO: revisit — questionable whether this belongs here. (1) For real edgesnameis an auto-generated junk label (e.g. "PC_8814" = {deviceType}_{rand}), which gives the agent no useful alias/heading; only bridge devices have a meaningful user-given name. (2) name/metadata duplicate Edge.* and bloat every per-agent record. Consider passing identity out-of-band instead of stuffing it into edgesMcpConfigs.metadataobjectConstruct a type with a set of properties K of type T
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = string | |
| type = boolean | |
| type = object | |
| type = object |
DevicesConfig
workspacePathsstring[] · required
enabledPer-agent device state. For ordinary devices, false disables and every other value enables. The hosted cloud VM additionally supports: false → Off. 'auto' → use only when no local desktop is online. 'on' → explicitly always on (overrides global Auto/Off). true / undefined → enabled, inheriting the per-user global cloud mode.
trueremains the inherited state for compatibility with existing agent records, where it was written before explicit cloud modes existed.deviceTypeDevice type — used by the agent for capability checks (e.g. has_shell vs has_cdp). Surfaced at submit time by enrichWithOnlineDevices.
namestringDevice identity surfaced at submit time so the agent can render the device in
## Available Machines(name heading, tool-alias suffix).metadataobjectConstruct a type with a set of properties K of type T
installedToolsobjectConstruct a type with a set of properties K of type T
DeviceConfig
workspacePathsstring[] · required
enabledPer-agent device state. For ordinary devices, false disables and every other value enables. The hosted cloud VM additionally supports: false → Off. 'auto' → use only when no local desktop is online. 'on' → explicitly always on (overrides global Auto/Off). true / undefined → enabled, inheriting the per-user global cloud mode.
trueremains the inherited state for compatibility with existing agent records, where it was written before explicit cloud modes existed.deviceTypeDevice type — used by the agent for capability checks (e.g. has_shell vs has_cdp). Surfaced at submit time by enrichWithOnlineDevices.
namestringDevice identity surfaced at submit time so the agent can render the device in
## Available Machines(name heading, tool-alias suffix).metadataobjectConstruct a type with a set of properties K of type T
installedToolsobjectConstruct a type with a set of properties K of type T
ToolPermissions
allowstring[] · requiredTools/patterns that auto-execute without approval
askstring[]Tools that require user approval (default if not in any list)
denystring[]Tools/patterns blocked from execution
AttachmentFrame
idstring · requireduristring · requiredResource URI - always required. Format: "todoforai:todos/{todoId}/{id}"
originalNamestring · requiredmimeTypestring · requiredfileSizenumber · requiredIn bytes
createdAtnumberisPublicbooleanstatusmodifiedAtnumberLast modified time (mtime), milliseconds epoch
permissionsnumberUnix permission bits (e.g. 0o644 = 420 decimal)
blockIdstringBlock ID that produced this attachment (for mapping tool results back to tool_calls)
toolCallIdstringLLM tool_call ID — for stamping results back to the originating tool call
RecordstringArrayMCPToolSkeleton
namestring · requireddescriptionstring · requiredinputSchemaobject · requiredConstruct a type with a set of properties K of type T
MCPToolSkeleton
namestring · requireddescriptionstring · requiredinputSchemaobject · requiredConstruct a type with a set of properties K of type T
Todo
idstring · requiredprojectIdstring · requiredstatusrequiredagentSettingsIdstring · requiredcontentstring · requiredmessageIdsstring[] · requiredmessagesobject[] · requiredcreatedAtnumber · requiredlastActivityAtnumber · requiredscheduledTimestampnumber · required0 if immediate
businessContextIdstringDomain-specific knowledge context
systemMessageIdstringcheckedBlockIdsstring[]User-checked blocks
actionableBlockIdsstring[]Blocks with code, commands, etc.
archivedAtnumberdeletedAtnumberstarredAtnumberStar/favorite timestamp; absent/0 = not starred
workflowVersionstringFor optimistic concurrency
filteredEdgeToolsobjectConstruct a type with a set of properties K of type T
visiblebooleanVisible in default project listings; defaults to true.
isPublicbooleanPublicly viewable (read-only) by anyone with the link, no login required.
hasMoreMessagesbooleanTrue when
messagesholds only the newest page — older ones via todo.getMessages.
TodoStatus
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
Message
idstring · requiredtodoIdstring · requiredcontentstring · requiredrolestring · required'user', 'assistant', or 'system'
agentSettingsIdstring · requiredstop_sequencestring · requiredStop sequence that ended AI response, if any
createdAtnumber · requiredblocksarray · requiredParsed content blocks (code, tool calls, text)
scheduledTimestampnumber · required0 if sent immediately
attachmentsobject[] · required
projectIdstringProject the todo belongs to (denormalized for search; absent on legacy messages).
runMetaobject[]Token usage, model info, etc.
systemPromptstringSystem prompt used for this assistant message (dev mode)
parentBlockIdstringIf set, this message belongs to a sub-agent spawned by the given block
MessageBlock
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +3 more | |
| type = object · requires: type, id, content +3 more | |
| type = object · requires: type, id, content +3 more | |
| type = object · requires: type, id, content +3 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, server_name, method +4 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more | |
| type = object · requires: type, id, content +2 more |
typeconst · requiredConst value: readidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
limitnumberoffsetnumberresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestring
ReadBlock
typeconst · requiredConst value: readidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
limitnumberoffsetnumberresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestring
BlockStatus
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
RunResultMeta
timestampnumbertool_namestringsuccessbooleanerrorstringelapsednumberargumentsinputTokensnumberoutputTokensnumber
RunMeta
costnumber · requiredtimestampnumber · required
typestringdescriptionstringelapsednumberextrasobject
CreateBlock
typeconst · requiredConst value: createidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestring
WriteBlock
typeconst · requiredConst value: writeidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestring
EditBlock
typeconst · requiredConst value: editidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
changesstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestringoriginalContentstringmodifiedContentstringinitialOriginalContentstring
ModifyFileBlock
typeconst · requiredConst value: modify_fileidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
changesstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
pathstringlanguagestringoriginalContentstringmodifiedContentstringinitialOriginalContentstring
BashBlock
typerequiredidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
cmdstringtimeoutnumberlanguagestringtargetstringcwdstringpidnumberOS PID of the persistent shell inside the bridge PTY. Surfaced on RUN_STARTED so the UI can address the session for stdin / force-kill. SIGINT is delivered as
\x03through the regular stdin path — the kernel TTY line discipline forwards it to the foreground process group, so no separate fg pid is needed on the block.awaitingInputbooleanBridge reported STEP_AWAITING_INPUT — foreground command parked in n_tty_read, waiting on stdin. The shell itself is alive.
passwordPromptbooleanOnly meaningful when
awaitingInput === true: PTY slave has ECHO disabled (sudo / getpass / ssh / git credential). UI should mask input.resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
titlestring
GrepBlock
typeconst · requiredConst value: grepidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
patternstringpathstringglobstringignore_casebooleanheadnumbermax_countnumbertimeoutnumberoutputstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
ListBlock
typeconst · requiredConst value: listidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
pathstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
SkillBlock
typeconst · requiredConst value: skillidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
namestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
ApiBlock
typerequiredidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
titlestringtool_namestring
ApiToolType
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
ImageGenBlock
typeconst · requiredConst value: image_genidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
promptstringmodelstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
attachment_idstringattachment_idsstring[]
HtmlSnippetBlock
typeconst · requiredConst value: html_snippetidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
htmlstringBare HTML fragment authored by the LLM (no doctype/html/head/body).
titlestringShort label shown in the block header.
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
LivePreviewBlock
typeconst · requiredConst value: live_previewidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
urlstringA directly-openable URL. For a remote target it's the http(s) URL the agent was given; for a tunnel it's https://
.preview.todofor.ai once the frontend has lazily minted a session. localUrlstringDirect URL (http://127.0.0.1:
) for an edge-local target. The frontend probes it first and, only if unreachable, mints a tunnel session (see edgeId/port) via POST /preview/session. edgeIdstringEdge + port backing localUrl — the frontend needs them to lazily mint a tunnel session when the direct URL isn't reachable.
portnumbertitlestringShort label shown in the block header.
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
TextBlock
typeconst · requiredConst value: textidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
ReasonBlock
typeconst · requiredConst value: reasonidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
ErrorBlock
typeconst · requiredConst value: erroridstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
error_messagestringstacktracestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
CompactBlock
typeconst · requiredConst value: compactidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
keepnumbermodestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
QuestionBlock
typeconst · requiredConst value: questionidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
questionsobject[]answerstringPre-formatted user response (set by backend on approval).
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
QuestionItem
idstring · requiredheaderstring · requiredquestionstring · requiredoptionsobject[] · required
OpenBrowserBlock
typeconst · requiredConst value: open_browseridstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
urlstringFirst page to load (the tool's
urlarg).cdp_urlstringagent-browser CDP connect URL of the enrolled resource (set on approval → tool result).
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
LoginBlock
typeconst · requiredConst value: login_promptidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
reasonstringlogged_inbooleanuserstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
BusinessOnboardingBlock
typeconst · requiredConst value: business_onboardingidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
reasonstringwebsitestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
RequestMcpAccessBlock
typeconst · requiredConst value: request_mcp_accessidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
mcp_namestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
tool_namestring
EdgeNotRunningBlock
typeconst · requiredConst value: edge_not_runningidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
tool_namestring
WebFetchBlock
typeconst · requiredConst value: webfetchidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · requiredurlstring · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
GoogleSearchBlock
typeconst · requiredConst value: google_searchidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · requiredquerystring · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
WebSearchBlock
typeconst · requiredConst value: web_searchidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · requiredquerystring · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
VaultSearchBlock
typeconst · requiredConst value: vault_searchidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · requiredquerystring · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
VaultResolveBlock
typeconst · requiredConst value: vault_resolveidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
refstringVault reference being resolved (e.g.
vault://path#field)resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
VaultWriteBlock
typeconst · requiredConst value: vault_writeidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
schemestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
titlestring
VaultWriteBatchBlock
typeconst · requiredConst value: vault_write_batchidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
schemestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
VaultUpdateBlock
typeconst · requiredConst value: vault_updateidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
uristringVault item URI being updated
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
McpBlock
typeconst · requiredConst value: mcpserver_namestring · requiredmethodstring · requiredidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
namestringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
titlestringtool_namestring
ExploreBlock
typeconst · requiredConst value: exploreidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
promptstringsubTodoIdstringWhen the sub-agent runs as a real hidden sub-todo, its todoId.
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
PlanBlock
typeconst · requiredConst value: planidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
promptstringresultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
ReviewBlock
typeconst · requiredConst value: reviewidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
promptstringsubTodoIdstringWhen the sub-agent runs as a real hidden sub-todo, its todoId.
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
DeviceListBlock
typeconst · requiredConst value: device_listidstring · requiredcontentstring · requiredstatusrequiredBlockStatus - lifecycle states
generationCompletedboolean · required
resultstringresultsobject[]runMetaobject[]generalized_patternGeneralized permission pattern for "remember" feature (e.g., "BASH(cmd: npm *)")
toolCallIdstringLLM API tool_call id — durable mapping from block to the tool_call that created it
parentBlockIdstringParent block ID — present on sub-agent child blocks (e.g., read blocks inside explore)
deviceIdstringDevice that executed this tool call. Edges and bridges both map to a device id. Stamped from internal routing context, not provided by the LLM.
_issuestringRead-time schema issue: set by the tRPC soft-output validator when this block failed output validation (e.g. legacy/malformed data). Derived on every read from the failing typia path — NEVER persisted to Redis.
approvalContextobjectEdge approval context — present when edge requests tool install approval
StartFromTemplateInput
projectIdstring · requiredProject to create the TODO in
templateIdstringOptional template ID — if provided, template is used as base
contentstringUser message / TODO content. Falls back to template name+description if omitted
systemMessagestringSystem message override. If omitted and templateId provided, uses template's body
agentNamestringAgent name for on-the-fly TODOs (no templateId). Defaults to "Custom Agent"
scheduledTimestampnumberScheduling: omit for immediate start
attachmentsobject[]Attachments
businessContextIdstringBusiness context ID
PartialOmitAppSettingsid
themestringtodoListThemediffControlstringshellExecutionstringemailNotificationsbooleanpushNotificationsbooleandataAnalyticsbooleanplaySoundOnTaskCompletebooleanshowTodoCompletionToastbooleantabNotificationModeHow the browser-tab red "done" dot behaves after a TODO finishes.
disabledMentionSourcesstring[]Disabled
keyboardBindingsobjectConstruct a type with a set of properties K of type T
keyboardShortcutsEnabledbooleandefaultViewModestringmodelMentionAliasesstring[]Enabled model-mention aliases (e.g. 'claude', 'gpt') for
showDiffMergeControlsbooleanShow accept/reject chunk controls in the diff (merge) view. Off by default — with auto-apply the diff is just a record of what got applied, so the controls are unnecessary noise.
showAgentColorsbooleanshowAgentNameInComposerbooleanShow the selected agent's name (with an expand chevron) on the collapsed composer trigger instead of the plain settings cog icon.
showAllowAllButtonbooleanshowAutoDoneButtonbooleanShow the Auto-Done toggle in the message toolbar. When the toggle is on, the next run's successful completion lands the todo in DONE instead of READY.
showSystemPromptbooleanshowAgentJsonExportbooleanShow the JSON export button in the agent settings modal header.
showCloudWorkspaceBarbooleanShow the workspace bar on the built-in Cloud device card. Hidden by default — the cloud workspace is always
/rootand virtually nobody should change it.showProjectPickerInSidebarbooleanShow the project picker at the top of the todo sidebar. Only ever visible on the team plan; defaults to on there, this lets team users hide it.
toolDisplayVerbosityDesktopTool-block display density, resolved per viewport.
collapsedkeeps non-essential tool blocks collapsed (one-line summary, click to expand).normalopens them by default.debugadditionally surfaces internal fields (pid, timeout, …) on shell/bash blocks. Desktop defaults tonormal, mobile tocollapsed.toolDisplayVerbosityMobilegroupToolDisplaybooleanCollapse consecutive tool-only assistant messages into a single group row. Backend defaults to true (the recommended workflow); set false to render each tool block individually. Independent of verbose tool display.
vaultProvidervaultConfigvaultProvidershostDesktopItemsobjectConstruct a type with a set of properties K of type T
companyNamestringvatNumberstringaddressLine1stringaddressLine2stringcitystringstatestringpostalCodestringcountryISOstringaddressValidboolean
BillingInfoInput
companyNamestringvatNumberstringaddressLine1stringaddressLine2stringcitystringstatestringpostalCodestringcountryISOstringaddressValidboolean
ProjectSettingsFull
idstring · requiredprojectIdstring · required
llmModelstringllmConfigobjectConstruct a type with a set of properties K of type T
workspacePathsstring[]skillsobjectConstruct a type with a set of properties K of type T
diffstringpreferencesobjectConstruct a type with a set of properties K of type T
ProjectSettingsUpdateInput
projectIdstring · requiredsettingsobject · requiredConstruct a type with a set of properties K of type T
ApiKey
namestring · requiredidstring · requiredNot the secret key itself
createdAtnumber · requiredisDefaultboolean · required
TodoListInput
projectIdstring · required
limitnumberPage size (default 25, max 100).
cursornumberlastActivityAtof the last item from the previous page (exclusive). Omit for first page.searchstringOptional content/status substring filter; switches to a full-project scan.
starredOnlybooleanIf true, only return starred/favorite todos.
agentSettingsIdstringOnly todos run by this agent; switches to a full-project scan.
businessContextIdstringOnly todos bound to this business context; switches to a full-project scan.
TodoPage
itemsobject[] · required
nextCursornumberlastActivityAtof the last item; pass ascursorfor the next page. Absent = last page.
TodoSummary
idstring · requiredprojectIdstring · requiredstatusrequiredagentSettingsIdstring · requiredmessageIdsstring[] · requiredcreatedAtnumber · requiredlastActivityAtnumber · requiredscheduledTimestampnumber · required0 if immediate
businessContextIdstringDomain-specific knowledge context
contentstringstarredAtnumberStar/favorite timestamp; absent/0 = not starred
TodoGetInput
todoIdstring · required
messageLimitnumberIf set, include only the newest N messages (
hasMoreMessagessignals older ones). Omit for the full conversation.
MessageSearchInput
querystring · requiredWords to match in message content (AND semantics, punctuation ignored).
projectIdstringRestrict to one project (must be accessible). Omit to search all accessible projects.
todoIdstringRestrict to one todo.
roleRestrict by message role.
limitnumberMax hits (default 20, max 50).
semanticbooleanSemantic (embedding KNN) search instead of full-text. Slower (~100ms), finds meaning not just keywords.
MessageSearchPage
hitsobject[] · requiredtotalnumber · requiredTotal matches (may exceed hits.length).
MessageSearchHit
messageIdstring · requiredtodoIdstring · requiredprojectIdstring · requiredrolestring · requiredcreatedAtnumber · requiredsnippetstring · requiredLeading portion of the message's searchable text (content + block texts/commands) (truncated).
scorenumberSemantic search only: cosine distance to the query (0 = identical, 2 = opposite). Absent on full-text hits.
TodoMessagesInput
todoIdstring · required
limitnumberPage size (default 50, max 200).
beforestringFetch messages strictly OLDER than this messageId (the oldest already loaded). Omit for the newest page.
MessagesPage
messagesobject[] · requiredhasMoreboolean · requiredTrue if older messages exist before this page.
TodoUpdateInput
todoIdstring · requiredThe unique identifier of the todo to update
contentstringNew content/prompt for the todo
scheduledTimestampnumberUnix timestamp to schedule the todo (0 or omit for immediate)
agentSettingsIdstringID of the agent settings to use for processing
businessContextIdstringID of the business context to associate with this todo
starredAtnumberStar/favorite timestamp; pass a timestamp to star, 0 to unstar
isPublicbooleanMake the todo publicly viewable (read-only) by anyone with the link
TodoStatusUpdateInput
todoIdstring · requiredThe unique identifier of the todo to update
statusrequired
AddMessageInput
todoIdstring · requiredprojectIdstring · requiredcontentstring · requiredagentSettingsobject · requiredAI AgentSettings configuration including model, system prompt, and MCP tools.
attachmentsobject[]Attachments metadata (content arrives separately via binary WebSocket frames or current attachments buffer).
scheduledTimestampnumberfilteredEdgeToolsobjectConstruct a type with a set of properties K of type T
afterMessageIdstringbusinessContextIdstringautoDonebooleanWhen true, the next successful agent completion lands in DONE (strikethrough) instead of READY. Per-run flag — does not persist on the todo.
UpdateMessageInput
todoIdstring · requiredmessageIdstring · requiredagentSettingsIdstring · required
contentstringattachmentsobject[]scheduledTimestampnumberfilteredEdgeToolsobjectConstruct a type with a set of properties K of type T
UpdateAndStartMessageInput
todoIdstring · requiredmessageIdstring · requiredagentSettingsobject · requiredAI AgentSettings configuration including model, system prompt, and MCP tools.
contentstringattachmentsobject[]filteredEdgeToolsobjectConstruct a type with a set of properties K of type T
autoDonebooleanWhen true, the next successful agent completion lands in DONE (strikethrough) instead of READY. Per-run flag — does not persist on the todo.
TodoWorkflow
workflowMetarequiredworkflowVersionrequired
lastContextSummaryThe most recent context summary (if any compaction occurred)
ContextSummary
outputTokensnumber · requiredToken count after compaction
timestampnumber · requiredWhen compaction happened
messageIdsstring[] · requiredWhich messages were summarized
summarystringPlain summary text. Kept so the divider can display the compaction result directly.
summaryAttachmentobjectBase attachment metadata type - reference only, no content. URI is always required and is the source of truth reference. Format: "todoforai:todos/{todoId}/{id}"
statusStatus: 'ready' = waiting to be used, 'used' = already attached to a message
WorkflowUpdateInput
todoIdstring · requiredworkflowMetastring · requiredworkflowVersionstring · required
contextSummaryUsedbooleanSet to true to mark the pending context summary as 'used'
AgentMCPConfig
idstring · requiredagentIdstring · requiredmcpsobject · requiredConstruct a type with a set of properties K of type T
updatedAtnumber · required
MCPUpdateInput
agentIdstring · requiredmcpDataobject · requiredConstruct a type with a set of properties K of type T
TransactionPage
transactionsobject[] · requiredtotalnumber · requiredpagenumber · requiredlimitnumber · requiredtotalPagesnumber · required
Transaction
idstring · requiredtyperequiredamountnumber · requireddescriptionstring · requiredcreatedAtnumber · required
totalAmountnumbersourcestring
TransactionType
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria |
Invoice
idstring · requiredinvoiceNumberstring · requiredtotalAmountnumber · requiredcurrencystring · requiredstatusstring · requireddueDatenumber · requireditemsstring · requiredcreatedAtnumber · requiredupdatedAtnumber · required
stripeInvoiceIdstringstripeInvoiceUrlstringpaidDatenumbernotesstring
PaymentIntent
clientSecretstring · requiredsubtotalnumber · requiredtaxAmountnumber · requiredtotalAmountnumber · required
SubscriptionInfo
subscriptionIdrequiredtierrequiredstatusrequiredcurrentPeriodEndrequiredusageThisMonthnumber · requiredusageLimitrequiredbillingCycleStartrequired
SubscriptionTier
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
SubscriptionPlan
tierrequirednamestring · requiredpriceMonthlynumber · requiredpriceYearlynumber · requiredusageLimitnumber · requiredfeaturesstring[] · required
descriptionstringisFreebooleanmaxSeatsnumber
CreateSubscriptionInput
tierrequiredintervalrequired
couponCodestringOptional Stripe promotion code (customer-facing, e.g. "LAUNCH100") to pre-apply at checkout.
BillingInterval
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria |
SubscriptionResult
successboolean · required
subscriptionIdstringclientSecretstringcheckoutUrlstringmessagestring
UpdateSubscriptionInput
newTierrequired
intervalcouponCodestringOptional promo code — only applied when upgrading from a free tier to a first paid plan.
UsageStatus
totalBalancenumber · requiredmanualBalancenumber · requiredsubscriptionBalancenumber · requiredtierrequiredhasActivePaidSubscriptionboolean · requiredallowExtraSpendboolean · requiredcreditLimitnumber · requiredmonthlyTopUprequiredpercentUsednumber · requiredusageThisMonthnumber · requiredbillingCycleStartrequiredsessionrequiredweeklyrequired
TeamInfo
ownerIdstring · requiredownerEmailstring · requiredmaxSeatsnumber · requiredisOwnerboolean · requiredmyRolerequiredRole of a user within a team (IAM). owner: billing + full control; admin: manage members; member: belongs only.
canManageboolean · requiredactiveboolean · requiredpromoBoostboolean · requiredmembersobject[] · required
TeamRole
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
TeamMemberInfo
idstring · requiredemailstring · requiredrolerequiredRole of a user within a team (IAM). owner: billing + full control; admin: manage members; member: belongs only.
namestring
TeamSetRoleInput
memberIdstring · requiredrolerequiredRole of a user within a team (IAM). owner: billing + full control; admin: manage members; member: belongs only.
EdgeData
idstring · requireddeviceTyperequiredmetadataobject · requiredConstruct a type with a set of properties K of type T
namestring · requiredworkspacepathsstring[] · requiredLocal filesystem paths the agent can access
installedMCPsobject · requiredConstruct a type with a set of properties K of type T
ownerIdstring · requiredstatusrequiredcreatedAtnumber · required
installedToolsobjectConstruct a type with a set of properties K of type T
mcp_jsonobjectConstruct a type with a set of properties K of type T
mcp_config_pathstring
DeviceType
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
RecordstringInstalledMCP
serverIdstring · requiredregistryIdstring · requiredcommandstring · required
idstringtoolsobject[]statusstringargsstring[]envobject
InstalledMCP
serverIdstring · requiredregistryIdstring · requiredcommandstring · required
idstringtoolsobject[]statusstringargsstring[]envobject
EdgeStatus
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria |
EdgeUpdateFields
namestringworkspacepathsstring[]installedMCPsobjectConstruct a type with a set of properties K of type T
installedToolsobjectConstruct a type with a set of properties K of type T
DeviceData
idstring · requirednamestring · requireduserIdstring · requireddeviceTypestring · requiredmetadataobject · requiredConstruct a type with a set of properties K of type T
workspacepathsstring[] · requiredFilesystem roots the user has authorized AI shell sessions to operate within.
statusrequiredDevice types — a Device is a lightweight bridge-authenticated machine (as opposed to Edge, which is a richer app-installed client).
A device exposes one capability: "accept shell commands over WebSocket". No workspacepaths, no MCP config, no tool registry. Just a PTY pipe.
See
BridgeHandlerandDeviceServicefor runtime.createdAtnumber · requiredlastSeenAtnumber · required
DeviceStatus
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
DeviceExecInput
idstring · requiredcmdstring · requiredShell command to run on the device. Frontend is responsible for quoting/escaping.
cwdstringOptional working directory for the command.
timeoutMsnumberPer-call timeout (ms). Defaults to 10s server-side.
DeviceExecOutput
stdoutstring · requiredCombined stdout/stderr, merged at the bridge PTY.
exitCoderequiredProcess exit code, or null if the run was killed/timed out before exit.
truncatedboolean · requiredTrue iff output exceeded the transport's output cap and was truncated.
timedOutboolean · requiredTrue iff the run hit
timeoutMsand was killed.
AgentUpdateInput
agentSettingsIdstring · requiredupdatesobject · requiredMake all properties in T optional
PartialAgentSettingsUpdate
namestringcolorstringHex color (e.g. '#10b981') used to tint todos assigned to this agent
modelstringLLM model identifier (e.g., 'claude-3-opus')
systemMessagestringCustom system prompt for the agent
thinkingLeveltemperaturenumbersystemMessageMode'default_coder' uses built-in coding prompt, 'custom_w_tools' uses systemMessage + auto-injected capability sections, 'raw' uses systemMessage verbatim (no global prepend, no tool/routing/workspace sections).
smartSystemPromptbooleanAuto-enhance system prompt based on context
mcpConfigsobjectPer-edge config bag. Mostly serverId → ServerSettings, but also carries edge-level metadata (deviceType, installedTools) used by the agent runtime. TODO: rename to EdgeConfig — see plan/edge-config-rename.md
edgesMcpConfigsobjectdevicesConfigobjectpermissionsobjecttemplateIdstringTemplate this agent was created from
AgentEdgeMCPInput
agentSettingsIdstring · requirededgeIdstring · requiredmcpNamestring · requiredconfigobject · required
AgentDeviceConfigInput
agentSettingsIdstring · requireddeviceIdstring · requiredconfigobject · requiredMake all properties in T optional
PartialDeviceConfig
workspacePathsstring[]enabledPer-agent device state. For ordinary devices, false disables and every other value enables. The hosted cloud VM additionally supports: false → Off. 'auto' → use only when no local desktop is online. 'on' → explicitly always on (overrides global Auto/Off). true / undefined → enabled, inheriting the per-user global cloud mode.
trueremains the inherited state for compatibility with existing agent records, where it was written before explicit cloud modes existed.deviceTypeDevice type — used by the agent for capability checks (e.g. has_shell vs has_cdp). Surfaced at submit time by enrichWithOnlineDevices.
namestringDevice identity surfaced at submit time so the agent can render the device in
## Available Machines(name heading, tool-alias suffix).metadataobjectConstruct a type with a set of properties K of type T
installedToolsobjectConstruct a type with a set of properties K of type T
GlobalAgentSettings
systemMessagestringmodelstringthinkingLeveltemperaturenumberpermissionsobjectmcpConfigsobjectPer-edge config bag. Mostly serverId → ServerSettings, but also carries edge-level metadata (deviceType, installedTools) used by the agent runtime. TODO: rename to EdgeConfig — see plan/edge-config-rename.md
edgesMcpConfigsobjectdevicesConfigobject
BusinessContextInfoResponse
idstring · requirednamestring · requiredcreatedAtnumber · requireduristring · required
RefineBrandVoiceInput
businessContextIdstring · requiredanswersobject · requiredConstruct a type with a set of properties K of type T
sourceForce a source. Omit to auto-detect (usable answers → 'answers', else 'company'). 'social' learns from a public page/handle (
sourceUrl), labelled bychannel.channelstringSocial channel label when source==='social' (e.g. 'X', 'LinkedIn').
sourceUrlstringPublic link or handle to read for source==='social' (e.g. an X/LinkedIn profile URL). Not a connection — we just fetch the page's public text. If empty or unreadable, the voice falls back to company info.
RefineBrandVoiceOutput
profilestring · requiredmatchnumber · requiredsourcerequirediterationsobject[] · required
notestringchannelstringanswerFeedbackobjectConstruct a type with a set of properties K of type T
ContextInfo
todoIdstring · requiredThe todo ID this context info belongs to
modelstring · requiredThe model being used
contextWindownumber · requiredMaximum context window size in tokens
usedTokensnumber · requiredCurrent tokens used
utilizationPercentnumber · requiredPercentage of context window used (0-100)
messageCountnumber · requiredNumber of messages in the conversation
shouldCompactboolean · requiredWhether context compaction is recommended
warningLevelrequiredWarning level based on utilization
breakdownobject · requiredToken breakdown for context tracking
ContextTokenBreakdown
inputTokensnumber · requiredoutputTokensnumber · requiredcacheReadTokensnumber · requiredcacheWriteTokensnumber · required
CompactInput
todoIdstring · required
dryRunbooleanIf true, only simulate compaction without making changes
targetUtilizationnumberTarget utilization percentage after compaction (0-1, default 0.5 = 50%)
CompactResult
successboolean · requiredoriginalMessagesnumber · requiredcompactedMessagesnumber · requiredsavedMessagesnumber · required
summarystringmessagestring
AddContextSummaryInput
todoIdstring · requiredoutputTokensnumber · requiredToken count after compaction
timestampnumber · requiredWhen compaction happened
messageIdsstring[] · requiredWhich messages were summarized
summarystringPlain summary text
summaryAttachmentobjectBase attachment metadata type - reference only, no content. URI is always required and is the source of truth reference. Format: "todoforai:todos/{todoId}/{id}"
statusStatus: 'ready' = waiting to be used, defaults to 'ready'
Attachment
metadataobject · requiredidstring · requireduristring · requiredResource URI - always required. Format: "todoforai:todos/{todoId}/{id}"
originalNamestring · requiredmimeTypestring · requiredfileSizenumber · requiredIn bytes
userIdstringOwner user ID
agentSettingsIdstringScoped to agent settings
todoIdstringScoped to todo
symlinkTostringIf this is a symlink share, the attachment ID of the owner's original file
createdAtnumberisPublicbooleanstatusmodifiedAtnumberLast modified time (mtime), milliseconds epoch
permissionsnumberUnix permission bits (e.g. 0o644 = 420 decimal)
blockIdstringBlock ID that produced this attachment (for mapping tool results back to tool_calls)
toolCallIdstringLLM tool_call ID — for stamping results back to the originating tool call
ResourceCreateFolderInputparentUristringMinLength1namestringMinLength1
parentUristring · minLength: 1 · requirednamestring · minLength: 1 · required
ResourceTokenInputttl(numberMinimum60Maximum86400)undefined
ttlnumber · min: 60 · max: 86400Token lifetime in seconds. Defaults to 3600.
RegistryTemplate
idstring · requirednamestring · requireddescriptionstring · requiredcategoriesstring[] · requiredbodystring · requiredThe agent prompt body (markdown).
createdAtnumber · requiredupdatedAtnumber · required
shortstringrequirementsstring[]Capability requirements, e.g. "cli:gh", "extension:chrome".
TemplateCreateInputnamestringMinLength1MaxLength120descriptionstringMinLength1bodystringMinLength...
namestring · minLength: 1 · maxLength: 120 · requireddescriptionstring · minLength: 1 · requiredbodystring · minLength: 1 · requiredThe agent prompt body (markdown).
shortstringcategoriesstring[]
RegistryPack
idstring · requirednamestring · requireddescriptionstring · requiredtodoIdsstring[] · requiredcreatedAtnumber · requiredupdatedAtnumber · required
shortstringcategoriesstring[]
RecordstringTodoStats
idstring · requiredstartsnumber · requiredTimes started/forked
likesnumber · requiredcompletionRatenumber · required0-100
avgCompletionTimenumber · requiredIn milliseconds
isLikedboolean · requiredCurrent user has liked
TodoStats
idstring · requiredstartsnumber · requiredTimes started/forked
likesnumber · requiredcompletionRatenumber · required0-100
avgCompletionTimenumber · requiredIn milliseconds
isLikedboolean · requiredCurrent user has liked
RecordstringTemplateMetaPublic
idstring · requiredtodoCountnumber · requiredHow many TODOs created from this template
messageCountnumber · requiredTotal messages across all TODOs
totalCostnumber · requiredTotal cost across all TODOs (USD)
totalDurationnumber · requiredTotal AI processing duration across all TODOs (ms), summed from RunMeta.elapsed
TemplateMetaPublic
idstring · requiredtodoCountnumber · requiredHow many TODOs created from this template
messageCountnumber · requiredTotal messages across all TODOs
totalCostnumber · requiredTotal cost across all TODOs (USD)
totalDurationnumber · requiredTotal AI processing duration across all TODOs (ms), summed from RunMeta.elapsed
ShareCreateInputtext(stringMaxLength100000)undefined
textstring · maxLength: 100000todoIdstringShare the first user prompt of this TODO instead of raw text.
AdminUser
idstring · requiredemailstring · requiredcreatedAtstring · date-time · requiredupdatedAtstring · date-time · requiredisAnonymousboolean · required
namestringimage
AdminStats
totalUsersnumber · requiredregisteredUsersnumber · requiredanonymousUsersnumber · requirednewUsers7dnumber · requireddailyobject[] · requiredgeneratedAtnumber · required
Challenge
idstring · requiredchallengestring · requiredcreatedAtstring · date-time · required
emailstring
HexGrid
idstring · requiredprojectIdstring · requirednamestring · requiredcreatedAtnumber · requiredupdatedAtnumber · required
descriptionstring
GridTile
idstring · requiredgridIdstring · requiredqnumber · requiredrnumber · requiredcreatedAtnumber · requiredupdatedAtnumber · required
todoIdstringlabelstringmetadataobjectConstruct a type with a set of properties K of type T
GridTileCreateInput
gridIdstring · requiredqnumber · requiredrnumber · required
labelstringmetadataobjectConstruct a type with a set of properties K of type T
GridTileUpdateInput
gridIdstring · requiredqnumber · requiredrnumber · required
labelstringmetadataobjectConstruct a type with a set of properties K of type T
GridTileMoveInput
gridIdstring · requiredqnumber · requiredrnumber · requirednewQnumber · requirednewRnumber · required
GridTileAttachTodoInput
gridIdstring · requiredqnumber · requiredrnumber · requiredtodoIdstring · required
GridTileSwapInput
gridIdstring · requiredq1number · requiredr1number · requiredq2number · requiredr2number · required
Recommendation
idstring · requiredprojectIdstring · requiredtemplateIdstring · requiredRegistry template this recommendation references.
createdAtnumber · required
businessContextIdstringBusiness context to pin when the todo is created.
titlestringShort human title for the card (falls back to the template name).
notestringWhy this is recommended — shown on the card.
priority
RecommendationCreateInput
projectIdstring · requiredtemplateIdstring · requiredRegistry template to reference (required).
businessContextIdstringtitlestringnotestringpriority
OnboardingUpdateInput
patchobject · requiredMake all properties in T optional
expectedUpdatedAtnumberClient's last known updatedAt; reject if server doc is newer
PartialOmitOnboardingversionidupdatedAt
startedAtnumbercompletedAtnumbercurrentStepstringwebsiteUrlstringstyleAnswersobjectConstruct a type with a set of properties K of type T
styleAiAnswersobjectConstruct a type with a set of properties K of type T
voiceProfilesobjectConstruct a type with a set of properties K of type T
SandboxRecord
idstring · requireduser_idstring · requiredtemplatestring · requiredstaterequiredSandbox lifecycle state change. Published by sandbox-manager on Redis (
sandbox:events:<userId>), re-emitted by backend to subscribed frontends.- On create/pause/resume/error/terminate:
sandboxholds the full record. - On delete:
deleted: trueandsandboxis omitted; frontend drops the row.
- On create/pause/resume/error/terminate:
ip_addressrequiredtap_devicerequiredpidrequiredcreated_atnumber · requiredlast_activitynumber · requirederrorrequired
kindDefaults to 'vm' for legacy records that pre-date the field.
sizeVmSize tier; not modelled in TS — frontend passes through as-is.
device_idstringId of the backend Device row representing this sandbox's bridge. Lite: set at create time. VM: set after the bridge enrolls and the backend calls
attach-device. Absent when not yet linked.
SandboxStateValue
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
CodexImageGenInput
contentarray · requiredsizerequired
modelstringqualitybackgroundoutputFormatinstructionsstring
CodexImageGenContent
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: type, text | |
| type = object · requires: type, imageUrl |
typeconst · requiredConst value: input_texttextstring · required
CodexImageSize
Decision Table
| Variant | Matching Criteria |
|---|---|
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria | |
| No specific criteria |
CodexImageGenOutput
imagestring · requiredBase64-encoded image bytes (no data URL prefix).
formatstring · requiredOutput format: png | webp | jpeg
costnumberelapsednumberrevisedPromptstring
RcloneOauthStartInput
providerstring · requiredCatalog key — must be a registered OAuth provider (see
rcloneProviders.ts).deviceIdstring · requiredDevice the remote is configured on — the host whose rclone panel opened the flow. Must be owned by the caller and online.
RcloneOauthStartOutput
authUrlstring · requiredProvider's authorization URL — open in a popup.
remoteNamestring · requiredThe rclone remote name we'll create on success — frontend can pre-display it.