mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-30 06:32:24 +00:00
* Add JSON-RPC schema definition and HTTP schema endpoint - Introduced a new `schema.json` file containing detailed definitions for various JSON-RPC methods, including their inputs, outputs, and descriptions. - Implemented a new HTTP endpoint `/schema` in the core server to serve the JSON-RPC schema, enhancing API documentation and accessibility. - Updated the core HTTP router to include the new schema route, improving the overall structure and usability of the API. - Enhanced error handling and response formatting in the server to ensure consistent feedback for schema requests. * Update TypeScript configuration and refactor core RPC client - Changed TypeScript target from ES2020 to ESNext and updated library references in `tsconfig.json` for improved compatibility with modern features. - Refactored `coreRpcClient.ts` to enhance JSON-RPC request handling, including the introduction of legacy method aliases and improved error handling. - Updated API service methods in `authApi.ts` and `channelConnectionsApi.ts` to utilize the new core RPC client structure, streamlining authentication and channel connection processes. - Added new utility functions for managing JSON-RPC requests and responses, improving code organization and maintainability. - Enhanced test coverage for the new RPC client methods and refactored existing tests to align with the updated structure. * Enhance Tauri configuration and refactor daemon program arguments - Updated `tauri.conf.json` to include additional macOS infoPlist settings for better application identification and icon management. - Refactored the `daemon_program_args` function in `common.rs` to improve clarity by renaming the parameter to `_exe`, indicating it is unused. This change enhances code readability and maintainability. * Refactor Tauri configuration by removing unused macOS infoPlist settings - Updated `tauri.conf.json` to streamline macOS configuration by removing unnecessary infoPlist entries while retaining essential settings for the application. - This change enhances clarity and maintainability of the Tauri configuration file. * Enhance authentication flow and testing documentation - Introduced a new `isAuthBootstrapComplete` state in the authentication slice to manage the completion of the authentication bootstrap process. - Updated the `UserProvider` to set the `isAuthBootstrapComplete` state based on the authentication status, improving session restoration logic. - Modified route components (`DefaultRedirect`, `ProtectedRoute`, `PublicRoute`) to conditionally render based on the `isAuthBootstrapComplete` state, enhancing user experience during the authentication process. - Added a comprehensive testing guide in `CLAUDE.md`, detailing unit and E2E testing practices, including setup, authoring rules, and a checklist for test coverage. - Updated the `SettingsHome` component to redirect to the home page instead of the login page upon logout, streamlining user navigation. - Enhanced the `LocalModelPanel` to track download progress and manage local AI assets more effectively, improving overall functionality. * Add resolutions for @tauri-apps/api dependency in package.json - Introduced a resolutions field in package.json to enforce the use of @tauri-apps/api version 2.10.1, ensuring compatibility across workspaces. - Updated dependencies in app/package.json to include @tauri-apps/api version 2.10.1, aligning with the new resolution. - Adjusted yarn.lock to reflect the updated version of @tauri-apps/api, enhancing dependency management and consistency. * Refactor Tauri configuration and enhance E2E build process - Updated `tauri.conf.json` to remove unused resource paths, streamlining the configuration for better maintainability. - Modified `wdio.conf.ts` to improve application path resolution for macOS, allowing for multiple bundle base checks to enhance compatibility. - Refactored `e2e-build.sh` to disable updater artifacts for E2E builds and introduced a conditional cargo clean mechanism, improving build efficiency and clarity. * Enhance E2E testing setup and documentation - Updated `CLAUDE.md` to clarify the default behavior of `OPENHUMAN_WORKSPACE` in `e2e-run-spec.sh`, emphasizing automatic creation and cleanup for reproducible E2E runs. - Modified `e2e-run-spec.sh` to implement automatic temporary workspace creation when `OPENHUMAN_WORKSPACE` is not set, improving usability for debugging and testing. - Enhanced cleanup logic in `e2e-run-spec.sh` to ensure proper removal of temporary workspaces after tests, contributing to a cleaner testing environment. * Implement shared mock backend for testing and enhance documentation - Introduced a shared mock backend for unit and integration tests, allowing for deterministic API behavior across app and Rust tests. - Updated `CLAUDE.md` to include detailed instructions on using the shared mock backend, including key admin endpoints and manual run commands. - Modified `package.json` to add scripts for running the mock API server and Rust tests with the mock backend. - Refactored test setup to utilize the new mock backend, improving test reliability and isolation. - Removed obsolete MSW handlers and server setup, streamlining the testing framework. * Enhance authentication state management and testing coverage - Introduced `isAuthBootstrapComplete` state in the authentication slice to track the completion of the authentication process. - Updated `ProtectedRoute` and `PublicRoute` components to utilize the new state, improving user experience during authentication. - Enhanced test cases for `ProtectedRoute` and `PublicRoute` to reflect the updated authentication state structure. - Added a new end-to-end test for the authentication flow, ensuring proper handling of OAuth tokens and session management. - Improved mock setup in tests to better simulate authentication scenarios, enhancing test reliability and coverage. * Enhance README.md with architecture overview and component roles - Added detailed descriptions of the OpenHuman architecture, highlighting the separation of business logic and UI components. - Explained the roles of Rust and the UI in the monorepo, including the use of JSON-RPC, QuickJS, Vite, React, and Tauri. - Documented the structure of controllers and the RPC surface, emphasizing the shared contract for automation and testing. - Provided links to further documentation for architecture, frontend structure, and Tauri commands. * Integrate ServiceBlockingGate component and enhance loading states - Added the `ServiceBlockingGate` component to manage service availability and display appropriate loading screens. - Updated `DefaultRedirect`, `ProtectedRoute`, and `PublicRoute` components to show a loading indicator while authentication bootstrap is in progress. - Implemented timeout handling in `UserProvider` for improved authentication state management. - Introduced tests for `ServiceBlockingGate` to ensure proper rendering and functionality under various service states. * Implement core RPC URL resolution and default hash route handling - Added a function to resolve the core RPC URL based on the environment, improving flexibility for Tauri and non-Tauri contexts. - Introduced a default hash route handler in the main application entry point to ensure proper navigation behavior. - Updated the core RPC command to expose the resolved RPC URL, enhancing the integration with the frontend. - Refactored the core RPC client to utilize the new URL resolution logic, ensuring consistent API calls. * Refactor backend URL usage to API_BASE_URL - Replaced all instances of BACKEND_URL with API_BASE_URL across various components and services to standardize API endpoint references. - Updated OAuth provider configurations, settings panels, hooks, and services to ensure consistent API calls. - Enhanced test setups to reflect the new API_BASE_URL, improving test reliability and alignment with the updated configuration. * Implement RouteLoadingScreen for improved loading states - Introduced a new `RouteLoadingScreen` component to provide a consistent loading experience across various routes. - Updated `DefaultRedirect`, `ProtectedRoute`, and `PublicRoute` components to utilize `RouteLoadingScreen` while waiting for authentication bootstrap completion. - Enhanced `MiniSidebar` to hide on additional public/setup routes, improving user navigation experience. - Refactored `UserProvider` to streamline authentication state management by removing unnecessary references. * Add feature design workflow section to CLAUDE.md - Introduced a comprehensive workflow for feature design, outlining steps from specification to UI implementation and testing. - Emphasized the importance of grounding designs in existing codebases and defined planning rules for E2E scenarios. - Provided detailed instructions for implementing features in Rust, conducting JSON-RPC tests, and building UI components in the Tauri app. * Refactor backend URL handling and improve OAuth flow - Replaced static API_BASE_URL references with dynamic backend URL resolution across various components and services, enhancing flexibility for Tauri and non-Tauri environments. - Updated OAuth provider configurations to utilize the new backend URL logic, ensuring consistent login URL generation. - Refactored API client and socket service to fetch the backend URL dynamically, improving reliability in different deployment contexts. - Introduced a new service for resolving the backend URL, streamlining the configuration and enhancing test setups. * Add debug logging guidelines to CLAUDE.md - Introduced comprehensive guidelines for implementing development-oriented debug logging in both Rust and the app. - Emphasized the importance of logging at appropriate levels (`debug`/`trace`) and following existing patterns for consistency. - Provided instructions on avoiding sensitive information in logs and ensuring terminal output is grep-friendly for easier debugging during development. * Enhance service management with new mock functionality and E2E tests - Added a mock service manager to facilitate deterministic service behavior during end-to-end tests, enabling better simulation of service states. - Introduced new buttons in the `ServiceBlockingGate` component for restarting and uninstalling services, improving user control over service management. - Implemented a comprehensive E2E test suite for the service connectivity flow, covering installation, starting, stopping, restarting, and uninstalling services. - Updated package scripts to include a new E2E test for service connectivity, enhancing testing coverage and reliability. - Refactored service operations to support mock functionality, ensuring consistent behavior across testing and production environments. * Enhance ServiceBlockingGate with improved logging and periodic health polling - Introduced periodic health polling in the `ServiceBlockingGate` component to refresh service status every 3 seconds, enhancing responsiveness to service state changes. - Added detailed logging for various operations, including service status checks and error handling, to improve traceability and debugging. - Updated E2E tests to include logging steps for better visibility during service connectivity flow tests. - Refactored error handling to ensure consistent logging of error messages across service operations. * Refactor E2E testing scripts and enhance CLAUDE.md documentation - Updated paths in CLAUDE.md to reflect the new location of the E2E run script, ensuring accurate instructions for running tests. - Removed outdated E2E test scripts from package.json and migrated relevant functionality to app/package.json for better organization. - Introduced new E2E testing scripts for specific flows (auth, login, payment, etc.) to streamline testing processes and improve modularity. - Added a script to run all E2E flows sequentially, enhancing test coverage and simplifying execution. - Improved documentation for E2E testing procedures in CLAUDE.md, providing clearer guidance for developers. * Refactor imports and enhance code readability - Removed duplicate import of `ServiceBlockingGate` in `App.tsx` for cleaner code. - Improved readability in `MiniSidebar.tsx` by formatting conditional statements. - Reordered imports in `PublicRoute.tsx` for consistency. - Enhanced formatting in `ServiceBlockingGate.tsx` for better clarity in asynchronous operations. - Streamlined import statements in various test files and components for improved organization. - Updated `LocalModelPanel.tsx` to enhance button disable logic readability. - Refactored CORS headers in `jsonrpc.rs` for better formatting. * ci: align build and test workflows with app workspace e2e * ci: align release and typecheck workflows with current workspace * Enhance ServiceBlockingGate functionality with improved refresh options - Introduced a new `RefreshOptions` type to customize the behavior of the `refreshStatus` function, allowing for conditional error clearing and status checking. - Updated the `refreshStatus` function to utilize the new options, enhancing control over service state updates. - Modified the button click handler to pass the new options, improving user experience during service refresh operations. - Adjusted state updates to prevent unnecessary re-renders and maintain consistency in service state management. * Refactor RefreshOptions type for improved clarity in ServiceBlockingGate - Consolidated the definition of the `RefreshOptions` type into a single line for better readability. - Maintained existing functionality while enhancing code clarity in the `ServiceBlockingGate` component.
1941 lines
56 KiB
JSON
1941 lines
56 KiB
JSON
{
|
|
"methods": [
|
|
{
|
|
"description": "Liveness probe for the core JSON-RPC server.",
|
|
"function": "ping",
|
|
"inputs": [],
|
|
"method": "core.ping",
|
|
"namespace": "core",
|
|
"outputs": [
|
|
{
|
|
"comment": "Always true when the server is reachable.",
|
|
"name": "ok",
|
|
"required": true,
|
|
"ty": "Bool"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Lists all JSON-RPC methods and their input/output schemas.",
|
|
"function": "rpc_schema_dump",
|
|
"inputs": [],
|
|
"method": "core.rpc_schema_dump",
|
|
"namespace": "core",
|
|
"outputs": [
|
|
{
|
|
"comment": "All JSON-RPC method schemas available to clients.",
|
|
"name": "methods",
|
|
"required": true,
|
|
"ty": {
|
|
"Array": {
|
|
"Object": {
|
|
"fields": [
|
|
{
|
|
"comment": "Fully-qualified JSON-RPC method name.",
|
|
"name": "method",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Method namespace.",
|
|
"name": "namespace",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Method function name within the namespace.",
|
|
"name": "function",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Human-readable method description.",
|
|
"name": "description",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Ordered list of accepted input fields.",
|
|
"name": "inputs",
|
|
"required": true,
|
|
"ty": { "Array": { "Ref": "FieldSchema" } }
|
|
},
|
|
{
|
|
"comment": "Ordered list of output fields.",
|
|
"name": "outputs",
|
|
"required": true,
|
|
"ty": { "Array": { "Ref": "FieldSchema" } }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Returns the core binary version.",
|
|
"function": "version",
|
|
"inputs": [],
|
|
"method": "core.version",
|
|
"namespace": "core",
|
|
"outputs": [
|
|
{
|
|
"comment": "Semantic version string for the running core binary.",
|
|
"name": "version",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Run one-shot agent chat with optional model overrides.",
|
|
"function": "chat",
|
|
"inputs": [
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.agent_chat",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Agent response payload.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Run one-shot lightweight provider chat.",
|
|
"function": "chat_simple",
|
|
"inputs": [
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.agent_chat_simple",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Agent response payload.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Send a message through REPL agent session.",
|
|
"function": "repl_session_chat",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" },
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.agent_repl_session_chat",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Session chat response.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Terminate REPL session.",
|
|
"function": "repl_session_end",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.agent_repl_session_end",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Session end result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Clear REPL session history.",
|
|
"function": "repl_session_reset",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.agent_repl_session_reset",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Session reset result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a persistent REPL agent session.",
|
|
"function": "repl_session_start",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional session id.",
|
|
"name": "session_id",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.agent_repl_session_start",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{ "comment": "Session creation result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Return core runtime URL and status for agent calls.",
|
|
"function": "server_status",
|
|
"inputs": [],
|
|
"method": "openhuman.agent_server_status",
|
|
"namespace": "agent",
|
|
"outputs": [
|
|
{
|
|
"comment": "Agent server status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Remove stored app session credentials.",
|
|
"function": "clear_session",
|
|
"inputs": [],
|
|
"method": "openhuman.auth_clear_session",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Session clear result payload.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Consume login handoff token and return session JWT.",
|
|
"function": "consume_login_token",
|
|
"inputs": [
|
|
{
|
|
"comment": "One-time login token.",
|
|
"name": "loginToken",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.auth_consume_login_token",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Consumed login token result.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Read stored app session token.",
|
|
"function": "get_session_token",
|
|
"inputs": [],
|
|
"method": "openhuman.auth_get_session_token",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{ "comment": "Session token payload.", "name": "token", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Get current auth/session state.",
|
|
"function": "get_state",
|
|
"inputs": [],
|
|
"method": "openhuman.auth_get_state",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Current auth state response.",
|
|
"name": "state",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "List stored provider credentials.",
|
|
"function": "list_provider_credentials",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional provider filter.",
|
|
"name": "provider",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.auth_list_provider_credentials",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Listed provider credentials.",
|
|
"name": "profiles",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Create OAuth connect URL for provider.",
|
|
"function": "oauth_connect",
|
|
"inputs": [
|
|
{ "comment": "Provider id.", "name": "provider", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional skill id.",
|
|
"name": "skillId",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional OAuth response type.",
|
|
"name": "responseType",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.auth_oauth_connect",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{ "comment": "OAuth connect payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Fetch integration handoff tokens.",
|
|
"function": "oauth_fetch_integration_tokens",
|
|
"inputs": [
|
|
{ "comment": "Integration id.", "name": "integrationId", "required": true, "ty": "String" },
|
|
{ "comment": "Encryption key.", "name": "key", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.auth_oauth_fetch_integration_tokens",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Integration tokens handoff payload.",
|
|
"name": "tokens",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "List OAuth integrations for current session.",
|
|
"function": "oauth_list_integrations",
|
|
"inputs": [],
|
|
"method": "openhuman.auth_oauth_list_integrations",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "OAuth integration list.",
|
|
"name": "integrations",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Revoke OAuth integration.",
|
|
"function": "oauth_revoke_integration",
|
|
"inputs": [
|
|
{ "comment": "Integration id.", "name": "integrationId", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.auth_oauth_revoke_integration",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Integration revoke result.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Remove provider credentials for a profile.",
|
|
"function": "remove_provider_credentials",
|
|
"inputs": [
|
|
{ "comment": "Provider id.", "name": "provider", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional profile name.",
|
|
"name": "profile",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.auth_remove_provider_credentials",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Provider credential removal result.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Store provider credentials for a profile.",
|
|
"function": "store_provider_credentials",
|
|
"inputs": [
|
|
{ "comment": "Provider id.", "name": "provider", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional profile name.",
|
|
"name": "profile",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Provider access token.",
|
|
"name": "token",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Additional credential fields.",
|
|
"name": "fields",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
},
|
|
{
|
|
"comment": "Whether to set profile as active.",
|
|
"name": "setActive",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.auth_store_provider_credentials",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Stored provider profile summary.",
|
|
"name": "profile",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Store and validate app session JWT.",
|
|
"function": "store_session",
|
|
"inputs": [
|
|
{ "comment": "Session JWT token.", "name": "token", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional user id hint.",
|
|
"name": "user_id",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
},
|
|
{
|
|
"comment": "Optional user payload.",
|
|
"name": "user",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
}
|
|
],
|
|
"method": "openhuman.auth_store_session",
|
|
"namespace": "auth",
|
|
"outputs": [
|
|
{
|
|
"comment": "Stored auth profile summary.",
|
|
"name": "profile",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Accept and apply current or provided autocomplete suggestion.",
|
|
"function": "accept",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional explicit suggestion value to apply.",
|
|
"name": "suggestion",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.autocomplete_accept",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Suggestion acceptance result.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteAcceptResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Compute current suggestion for provided or captured context.",
|
|
"function": "current",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional explicit context to score suggestions against.",
|
|
"name": "context",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.autocomplete_current",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Current suggestion payload.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteCurrentResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Inspect focused element and text context used by autocomplete.",
|
|
"function": "debug_focus",
|
|
"inputs": [],
|
|
"method": "openhuman.autocomplete_debug_focus",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Focused context diagnostics.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteDebugFocusResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update autocomplete style configuration fields.",
|
|
"function": "set_style",
|
|
"inputs": [
|
|
{
|
|
"comment": "Enable or disable autocomplete.",
|
|
"name": "enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
},
|
|
{
|
|
"comment": "Debounce interval override in milliseconds.",
|
|
"name": "debounce_ms",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
},
|
|
{
|
|
"comment": "Maximum suggestion length in characters.",
|
|
"name": "max_chars",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
},
|
|
{
|
|
"comment": "Named style preset.",
|
|
"name": "style_preset",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Custom style instructions.",
|
|
"name": "style_instructions",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Style examples used for prompt shaping.",
|
|
"name": "style_examples",
|
|
"required": false,
|
|
"ty": { "Option": { "Array": "String" } }
|
|
},
|
|
{
|
|
"comment": "App allow/deny override list.",
|
|
"name": "disabled_apps",
|
|
"required": false,
|
|
"ty": { "Option": { "Array": "String" } }
|
|
},
|
|
{
|
|
"comment": "Whether tab key applies suggestion.",
|
|
"name": "accept_with_tab",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.autocomplete_set_style",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated autocomplete style config.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteSetStyleResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Start autocomplete engine with optional debounce override.",
|
|
"function": "start",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional debounce interval in milliseconds.",
|
|
"name": "debounce_ms",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.autocomplete_start",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Whether the engine started.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteStartResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Read autocomplete engine status and latest suggestion metadata.",
|
|
"function": "status",
|
|
"inputs": [],
|
|
"method": "openhuman.autocomplete_status",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Current runtime status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Stop autocomplete engine and optionally record stop reason.",
|
|
"function": "stop",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional reason for stopping.",
|
|
"name": "reason",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.autocomplete_stop",
|
|
"namespace": "autocomplete",
|
|
"outputs": [
|
|
{
|
|
"comment": "Whether the engine stopped.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": { "Ref": "AutocompleteStopResult" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Return agent server runtime URL and status.",
|
|
"function": "agent_server_status",
|
|
"inputs": [],
|
|
"method": "openhuman.config_agent_server_status",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Agent server status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Read persisted config snapshot and resolved paths.",
|
|
"function": "get",
|
|
"inputs": [],
|
|
"method": "openhuman.config_get",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Config snapshot with workspace and config paths.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Read environment-driven runtime flags.",
|
|
"function": "get_runtime_flags",
|
|
"inputs": [],
|
|
"method": "openhuman.config_get_runtime_flags",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Runtime flag state.",
|
|
"name": "flags",
|
|
"required": true,
|
|
"ty": { "Ref": "RuntimeFlagsOut" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Set OPENHUMAN_BROWSER_ALLOW_ALL runtime flag.",
|
|
"function": "set_browser_allow_all",
|
|
"inputs": [
|
|
{
|
|
"comment": "Whether to enable browser allow-all mode.",
|
|
"name": "enabled",
|
|
"required": true,
|
|
"ty": "Bool"
|
|
}
|
|
],
|
|
"method": "openhuman.config_set_browser_allow_all",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated runtime flag state.",
|
|
"name": "flags",
|
|
"required": true,
|
|
"ty": { "Ref": "RuntimeFlagsOut" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update browser automation settings.",
|
|
"function": "update_browser_settings",
|
|
"inputs": [
|
|
{
|
|
"comment": "Enable browser integration.",
|
|
"name": "enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_browser_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update memory backend and embedding settings.",
|
|
"function": "update_memory_settings",
|
|
"inputs": [
|
|
{
|
|
"comment": "Memory backend identifier.",
|
|
"name": "backend",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Enable auto-save.",
|
|
"name": "auto_save",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
},
|
|
{
|
|
"comment": "Embedding provider identifier.",
|
|
"name": "embedding_provider",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Embedding model identifier.",
|
|
"name": "embedding_model",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Embedding dimensions.",
|
|
"name": "embedding_dimensions",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_memory_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update model and API connection settings.",
|
|
"function": "update_model_settings",
|
|
"inputs": [
|
|
{
|
|
"comment": "Provider API key.",
|
|
"name": "api_key",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Backend API URL.",
|
|
"name": "api_url",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Default model id.",
|
|
"name": "default_model",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Default model temperature.",
|
|
"name": "default_temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_model_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update runtime execution strategy settings.",
|
|
"function": "update_runtime_settings",
|
|
"inputs": [
|
|
{
|
|
"comment": "Runtime kind.",
|
|
"name": "kind",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Enable reasoning mode.",
|
|
"name": "reasoning_enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_runtime_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Update screen intelligence runtime settings.",
|
|
"function": "update_screen_intelligence_settings",
|
|
"inputs": [
|
|
{
|
|
"comment": "Enable screen intelligence.",
|
|
"name": "enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
},
|
|
{
|
|
"comment": "Capture policy mode.",
|
|
"name": "capture_policy",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Policy mode override.",
|
|
"name": "policy_mode",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Baseline capture FPS.",
|
|
"name": "baseline_fps",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
},
|
|
{
|
|
"comment": "Enable vision analysis.",
|
|
"name": "vision_enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
},
|
|
{
|
|
"comment": "Enable autocomplete integration.",
|
|
"name": "autocomplete_enabled",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
},
|
|
{
|
|
"comment": "Allowed app list.",
|
|
"name": "allowlist",
|
|
"required": false,
|
|
"ty": { "Option": { "Array": "String" } }
|
|
},
|
|
{
|
|
"comment": "Denied app list.",
|
|
"name": "denylist",
|
|
"required": false,
|
|
"ty": { "Option": { "Array": "String" } }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_screen_intelligence_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Replace tunnel settings with provided config payload.",
|
|
"function": "update_tunnel_settings",
|
|
"inputs": [
|
|
{ "comment": "Tunnel provider id.", "name": "provider", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Cloudflare tunnel settings.",
|
|
"name": "cloudflare",
|
|
"required": false,
|
|
"ty": { "Option": { "Ref": "CloudflareTunnelConfig" } }
|
|
},
|
|
{
|
|
"comment": "Tailscale tunnel settings.",
|
|
"name": "tailscale",
|
|
"required": false,
|
|
"ty": { "Option": { "Ref": "TailscaleTunnelConfig" } }
|
|
},
|
|
{
|
|
"comment": "ngrok tunnel settings.",
|
|
"name": "ngrok",
|
|
"required": false,
|
|
"ty": { "Option": { "Ref": "NgrokTunnelConfig" } }
|
|
},
|
|
{
|
|
"comment": "Custom tunnel settings.",
|
|
"name": "custom",
|
|
"required": false,
|
|
"ty": { "Option": { "Ref": "CustomTunnelConfig" } }
|
|
}
|
|
],
|
|
"method": "openhuman.config_update_tunnel_settings",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated config snapshot.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Check if onboarding flag file exists in workspace.",
|
|
"function": "workspace_onboarding_flag_exists",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional onboarding flag name override.",
|
|
"name": "flag_name",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.config_workspace_onboarding_flag_exists",
|
|
"namespace": "config",
|
|
"outputs": [
|
|
{
|
|
"comment": "True when the flag file is present.",
|
|
"name": "exists",
|
|
"required": true,
|
|
"ty": "Bool"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "List all configured cron jobs ordered by next run.",
|
|
"function": "list",
|
|
"inputs": [],
|
|
"method": "openhuman.cron_list",
|
|
"namespace": "cron",
|
|
"outputs": [
|
|
{
|
|
"comment": "Cron jobs currently stored in the workspace.",
|
|
"name": "jobs",
|
|
"required": true,
|
|
"ty": { "Array": { "Ref": "CronJob" } }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Remove a cron job by id.",
|
|
"function": "remove",
|
|
"inputs": [
|
|
{
|
|
"comment": "Identifier of the cron job to remove.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.cron_remove",
|
|
"namespace": "cron",
|
|
"outputs": [
|
|
{
|
|
"comment": "Removal result payload.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": {
|
|
"Object": {
|
|
"fields": [
|
|
{
|
|
"comment": "Identifier that was requested for removal.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "True when the job was removed.",
|
|
"name": "removed",
|
|
"required": true,
|
|
"ty": "Bool"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Run a cron job immediately and record run metadata.",
|
|
"function": "run",
|
|
"inputs": [
|
|
{
|
|
"comment": "Identifier of the cron job to execute immediately.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.cron_run",
|
|
"namespace": "cron",
|
|
"outputs": [
|
|
{
|
|
"comment": "Immediate execution result payload.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": {
|
|
"Object": {
|
|
"fields": [
|
|
{
|
|
"comment": "Executed cron job identifier.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Execution status.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Enum": { "variants": ["ok", "error"] } }
|
|
},
|
|
{
|
|
"comment": "Execution duration in milliseconds.",
|
|
"name": "duration_ms",
|
|
"required": true,
|
|
"ty": "I64"
|
|
},
|
|
{
|
|
"comment": "Captured command output (possibly truncated).",
|
|
"name": "output",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Read historical run records for one cron job.",
|
|
"function": "runs",
|
|
"inputs": [
|
|
{
|
|
"comment": "Identifier of the cron job whose history to read.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Maximum number of records to return; defaults to 20.",
|
|
"name": "limit",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.cron_runs",
|
|
"namespace": "cron",
|
|
"outputs": [
|
|
{
|
|
"comment": "Ordered cron run history entries.",
|
|
"name": "runs",
|
|
"required": true,
|
|
"ty": { "Array": { "Ref": "CronRun" } }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Apply a partial patch to an existing cron job.",
|
|
"function": "update",
|
|
"inputs": [
|
|
{
|
|
"comment": "Identifier of the cron job to update.",
|
|
"name": "job_id",
|
|
"required": true,
|
|
"ty": "String"
|
|
},
|
|
{
|
|
"comment": "Partial update payload with the fields to mutate.",
|
|
"name": "patch",
|
|
"required": true,
|
|
"ty": { "Ref": "CronJobPatch" }
|
|
}
|
|
],
|
|
"method": "openhuman.cron_update",
|
|
"namespace": "cron",
|
|
"outputs": [
|
|
{
|
|
"comment": "Updated cron job after applying the patch.",
|
|
"name": "job",
|
|
"required": true,
|
|
"ty": { "Ref": "CronJob" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Decrypt a previously encrypted secret payload.",
|
|
"function": "secret",
|
|
"inputs": [
|
|
{
|
|
"comment": "Encrypted secret payload to decrypt.",
|
|
"name": "ciphertext",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.decrypt_secret",
|
|
"namespace": "decrypt",
|
|
"outputs": [
|
|
{
|
|
"comment": "Decrypted plaintext secret.",
|
|
"name": "plaintext",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Probe provider model availability and auth status.",
|
|
"function": "models",
|
|
"inputs": [
|
|
{
|
|
"comment": "Reuse cached provider metadata when available.",
|
|
"name": "use_cache",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.doctor_models",
|
|
"namespace": "doctor",
|
|
"outputs": [
|
|
{
|
|
"comment": "Model probe summary grouped by provider.",
|
|
"name": "report",
|
|
"required": true,
|
|
"ty": { "Ref": "ModelProbeReport" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Run diagnostics for workspace and runtime configuration.",
|
|
"function": "report",
|
|
"inputs": [],
|
|
"method": "openhuman.doctor_report",
|
|
"namespace": "doctor",
|
|
"outputs": [
|
|
{
|
|
"comment": "Aggregated diagnostics report.",
|
|
"name": "report",
|
|
"required": true,
|
|
"ty": { "Ref": "DoctorReport" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Encrypt a plaintext secret using local secret storage.",
|
|
"function": "secret",
|
|
"inputs": [
|
|
{
|
|
"comment": "Plaintext value to encrypt.",
|
|
"name": "plaintext",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.encrypt_secret",
|
|
"namespace": "encrypt",
|
|
"outputs": [
|
|
{
|
|
"comment": "Encrypted secret payload.",
|
|
"name": "ciphertext",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Return process and component health snapshot.",
|
|
"function": "snapshot",
|
|
"inputs": [],
|
|
"method": "openhuman.health_snapshot",
|
|
"namespace": "health",
|
|
"outputs": [
|
|
{
|
|
"comment": "Serialized health snapshot payload.",
|
|
"name": "snapshot",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Run one-shot agent chat with optional model overrides.",
|
|
"function": "agent_chat",
|
|
"inputs": [
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_agent_chat",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Agent response payload.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Run one-shot lightweight provider chat.",
|
|
"function": "agent_chat_simple",
|
|
"inputs": [
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_agent_chat_simple",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Agent response payload.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Send a message through REPL agent session.",
|
|
"function": "agent_repl_session_chat",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" },
|
|
{ "comment": "User message.", "name": "message", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.local_ai_agent_repl_session_chat",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Session chat response.", "name": "response", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Terminate REPL session.",
|
|
"function": "agent_repl_session_end",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.local_ai_agent_repl_session_end",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Session end result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Clear REPL session history.",
|
|
"function": "agent_repl_session_reset",
|
|
"inputs": [
|
|
{ "comment": "REPL session id.", "name": "session_id", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.local_ai_agent_repl_session_reset",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Session reset result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a persistent REPL agent session.",
|
|
"function": "agent_repl_session_start",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional session id.",
|
|
"name": "session_id",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional model override.",
|
|
"name": "model_override",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional temperature override.",
|
|
"name": "temperature",
|
|
"required": false,
|
|
"ty": { "Option": "F64" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_agent_repl_session_start",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Session creation result.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Get local AI asset installation status.",
|
|
"function": "assets_status",
|
|
"inputs": [],
|
|
"method": "openhuman.local_ai_assets_status",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Assets status payload.", "name": "status", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Trigger local AI model download bootstrap.",
|
|
"function": "download",
|
|
"inputs": [
|
|
{
|
|
"comment": "Reset state before download.",
|
|
"name": "force",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_download",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Local AI status payload.", "name": "status", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Trigger full local AI asset download.",
|
|
"function": "download_all_assets",
|
|
"inputs": [
|
|
{
|
|
"comment": "Reset state before download.",
|
|
"name": "force",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_download_all_assets",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{
|
|
"comment": "Download progress payload.",
|
|
"name": "progress",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Trigger download for one local AI asset capability.",
|
|
"function": "download_asset",
|
|
"inputs": [
|
|
{
|
|
"comment": "Asset capability id.",
|
|
"name": "capability",
|
|
"required": true,
|
|
"ty": "String"
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_download_asset",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Assets status payload.", "name": "status", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Get local AI download progress.",
|
|
"function": "downloads_progress",
|
|
"inputs": [],
|
|
"method": "openhuman.local_ai_downloads_progress",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{
|
|
"comment": "Download progress payload.",
|
|
"name": "progress",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Generate embeddings for text inputs.",
|
|
"function": "embed",
|
|
"inputs": [
|
|
{
|
|
"comment": "Texts to embed.",
|
|
"name": "inputs",
|
|
"required": true,
|
|
"ty": { "Array": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_embed",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{
|
|
"comment": "Embedding result payload.",
|
|
"name": "embedding",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Run direct local AI prompt.",
|
|
"function": "prompt",
|
|
"inputs": [
|
|
{ "comment": "Prompt text.", "name": "prompt", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional max output tokens.",
|
|
"name": "max_tokens",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
},
|
|
{
|
|
"comment": "Disable thinking mode.",
|
|
"name": "no_think",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_prompt",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Prompt output text.", "name": "output", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Read local AI service status.",
|
|
"function": "status",
|
|
"inputs": [],
|
|
"method": "openhuman.local_ai_status",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Local AI status payload.", "name": "status", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Suggest questions for provided context.",
|
|
"function": "suggest_questions",
|
|
"inputs": [
|
|
{
|
|
"comment": "Context text.",
|
|
"name": "context",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "Alternative context as lines.",
|
|
"name": "lines",
|
|
"required": false,
|
|
"ty": { "Option": { "Array": "String" } }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_suggest_questions",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{
|
|
"comment": "Suggested questions payload.",
|
|
"name": "suggestions",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Summarize text with local AI model.",
|
|
"function": "summarize",
|
|
"inputs": [
|
|
{ "comment": "Input text.", "name": "text", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional max output tokens.",
|
|
"name": "max_tokens",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_summarize",
|
|
"namespace": "local_ai",
|
|
"outputs": [{ "comment": "Summary text.", "name": "summary", "required": true, "ty": "Json" }]
|
|
},
|
|
{
|
|
"description": "Transcribe audio from file path.",
|
|
"function": "transcribe",
|
|
"inputs": [
|
|
{ "comment": "Input audio path.", "name": "audio_path", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.local_ai_transcribe",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Transcription payload.", "name": "speech", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Transcribe audio from raw bytes.",
|
|
"function": "transcribe_bytes",
|
|
"inputs": [
|
|
{ "comment": "Raw audio bytes.", "name": "audio_bytes", "required": true, "ty": "Bytes" },
|
|
{
|
|
"comment": "Optional audio extension.",
|
|
"name": "extension",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_transcribe_bytes",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Transcription payload.", "name": "speech", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Synthesize speech from text.",
|
|
"function": "tts",
|
|
"inputs": [
|
|
{ "comment": "Input text.", "name": "text", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Optional output path.",
|
|
"name": "output_path",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_tts",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "TTS result payload.", "name": "tts", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Run multimodal local AI prompt with image refs.",
|
|
"function": "vision_prompt",
|
|
"inputs": [
|
|
{ "comment": "Prompt text.", "name": "prompt", "required": true, "ty": "String" },
|
|
{
|
|
"comment": "Image references to include.",
|
|
"name": "image_refs",
|
|
"required": true,
|
|
"ty": { "Array": "String" }
|
|
},
|
|
{
|
|
"comment": "Optional max output tokens.",
|
|
"name": "max_tokens",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.local_ai_vision_prompt",
|
|
"namespace": "local_ai",
|
|
"outputs": [
|
|
{ "comment": "Prompt output text.", "name": "output", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Migrate OpenClaw memory into current workspace.",
|
|
"function": "openclaw",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional source workspace path override.",
|
|
"name": "source_workspace",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
},
|
|
{
|
|
"comment": "When true, report migration plan only.",
|
|
"name": "dry_run",
|
|
"required": false,
|
|
"ty": { "Option": "Bool" }
|
|
}
|
|
],
|
|
"method": "openhuman.migrate_openclaw",
|
|
"namespace": "migrate",
|
|
"outputs": [
|
|
{
|
|
"comment": "Migration report and stats.",
|
|
"name": "report",
|
|
"required": true,
|
|
"ty": { "Ref": "MigrationReport" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Capture screenshot and return image ref.",
|
|
"function": "capture_image_ref",
|
|
"inputs": [],
|
|
"method": "openhuman.screen_intelligence_capture_image_ref",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{
|
|
"comment": "Capture image_ref payload.",
|
|
"name": "capture",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Trigger immediate screen capture.",
|
|
"function": "capture_now",
|
|
"inputs": [],
|
|
"method": "openhuman.screen_intelligence_capture_now",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{ "comment": "Capture result payload.", "name": "capture", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Perform input action through accessibility automation.",
|
|
"function": "input_action",
|
|
"inputs": [
|
|
{
|
|
"comment": "Input action payload.",
|
|
"name": "action",
|
|
"required": true,
|
|
"ty": { "Ref": "InputActionParams" }
|
|
}
|
|
],
|
|
"method": "openhuman.screen_intelligence_input_action",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{
|
|
"comment": "Input action result payload.",
|
|
"name": "result",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Request one accessibility permission.",
|
|
"function": "request_permission",
|
|
"inputs": [
|
|
{ "comment": "Permission name.", "name": "permission", "required": true, "ty": "String" }
|
|
],
|
|
"method": "openhuman.screen_intelligence_request_permission",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{
|
|
"comment": "Permission status payload.",
|
|
"name": "permissions",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Request required accessibility permissions.",
|
|
"function": "request_permissions",
|
|
"inputs": [],
|
|
"method": "openhuman.screen_intelligence_request_permissions",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{
|
|
"comment": "Permission status payload.",
|
|
"name": "permissions",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Start screen intelligence session.",
|
|
"function": "start_session",
|
|
"inputs": [
|
|
{
|
|
"comment": "Capture interval in milliseconds.",
|
|
"name": "sample_interval_ms",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
},
|
|
{
|
|
"comment": "Capture policy mode.",
|
|
"name": "capture_policy",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.screen_intelligence_start_session",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{ "comment": "Session status payload.", "name": "session", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Read screen intelligence accessibility status.",
|
|
"function": "status",
|
|
"inputs": [],
|
|
"method": "openhuman.screen_intelligence_status",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{
|
|
"comment": "Accessibility status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": "Json"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Stop screen intelligence session.",
|
|
"function": "stop_session",
|
|
"inputs": [
|
|
{
|
|
"comment": "Optional stop reason.",
|
|
"name": "reason",
|
|
"required": false,
|
|
"ty": { "Option": "String" }
|
|
}
|
|
],
|
|
"method": "openhuman.screen_intelligence_stop_session",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{ "comment": "Session status payload.", "name": "session", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Flush stored vision summaries.",
|
|
"function": "vision_flush",
|
|
"inputs": [],
|
|
"method": "openhuman.screen_intelligence_vision_flush",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{ "comment": "Vision flush payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Read recent vision summaries.",
|
|
"function": "vision_recent",
|
|
"inputs": [
|
|
{
|
|
"comment": "Maximum number of summaries.",
|
|
"name": "limit",
|
|
"required": false,
|
|
"ty": { "Option": "U64" }
|
|
}
|
|
],
|
|
"method": "openhuman.screen_intelligence_vision_recent",
|
|
"namespace": "screen_intelligence",
|
|
"outputs": [
|
|
{ "comment": "Vision recent payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Manage desktop service lifecycle.",
|
|
"function": "install",
|
|
"inputs": [],
|
|
"method": "openhuman.service_install",
|
|
"namespace": "service",
|
|
"outputs": [
|
|
{
|
|
"comment": "Service status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "ServiceStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Manage desktop service lifecycle.",
|
|
"function": "start",
|
|
"inputs": [],
|
|
"method": "openhuman.service_start",
|
|
"namespace": "service",
|
|
"outputs": [
|
|
{
|
|
"comment": "Service status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "ServiceStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Manage desktop service lifecycle.",
|
|
"function": "status",
|
|
"inputs": [],
|
|
"method": "openhuman.service_status",
|
|
"namespace": "service",
|
|
"outputs": [
|
|
{
|
|
"comment": "Service status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "ServiceStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Manage desktop service lifecycle.",
|
|
"function": "stop",
|
|
"inputs": [],
|
|
"method": "openhuman.service_stop",
|
|
"namespace": "service",
|
|
"outputs": [
|
|
{
|
|
"comment": "Service status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "ServiceStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Manage desktop service lifecycle.",
|
|
"function": "uninstall",
|
|
"inputs": [],
|
|
"method": "openhuman.service_uninstall",
|
|
"namespace": "service",
|
|
"outputs": [
|
|
{
|
|
"comment": "Service status payload.",
|
|
"name": "status",
|
|
"required": true,
|
|
"ty": { "Ref": "ServiceStatus" }
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "Skill runtime socket manager bridge.",
|
|
"function": "connect",
|
|
"inputs": [
|
|
{
|
|
"comment": "Socket request payload.",
|
|
"name": "payload",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
}
|
|
],
|
|
"method": "openhuman.socket_connect",
|
|
"namespace": "socket",
|
|
"outputs": [
|
|
{ "comment": "Socket response payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Skill runtime socket manager bridge.",
|
|
"function": "disconnect",
|
|
"inputs": [
|
|
{
|
|
"comment": "Socket request payload.",
|
|
"name": "payload",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
}
|
|
],
|
|
"method": "openhuman.socket_disconnect",
|
|
"namespace": "socket",
|
|
"outputs": [
|
|
{ "comment": "Socket response payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Skill runtime socket manager bridge.",
|
|
"function": "emit",
|
|
"inputs": [
|
|
{
|
|
"comment": "Socket request payload.",
|
|
"name": "payload",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
}
|
|
],
|
|
"method": "openhuman.socket_emit",
|
|
"namespace": "socket",
|
|
"outputs": [
|
|
{ "comment": "Socket response payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
},
|
|
{
|
|
"description": "Skill runtime socket manager bridge.",
|
|
"function": "state",
|
|
"inputs": [
|
|
{
|
|
"comment": "Socket request payload.",
|
|
"name": "payload",
|
|
"required": false,
|
|
"ty": { "Option": "Json" }
|
|
}
|
|
],
|
|
"method": "openhuman.socket_state",
|
|
"namespace": "socket",
|
|
"outputs": [
|
|
{ "comment": "Socket response payload.", "name": "result", "required": true, "ty": "Json" }
|
|
]
|
|
}
|
|
]
|
|
}
|