@@ -31,10 +31,10 @@ Token present
3131
3232Two Tauri event listeners run continuously:
3333
34- | Event | What it does |
35- | ---| ---|
36- | ` skill-state-changed ` | Dispatches ` setSkillState ` into Redux ` skillsSlice.skillStates[skillId] ` |
37- | ` runtime:skill-status-changed ` | Updates ` skillsSlice.skills[skillId].status ` ; surfaces errors |
34+ | Event | What it does |
35+ | ------------------------------ | ------------------------------------------------------------------------ |
36+ | ` skill-state-changed ` | Dispatches ` setSkillState ` into Redux ` skillsSlice.skillStates[skillId] ` |
37+ | ` runtime:skill-status-changed ` | Updates ` skillsSlice.skills[skillId].status ` ; surfaces errors |
3838
3939---
4040
@@ -48,7 +48,8 @@ It is constructed with the user's JWT (`authSlice.token`) and stored as `Arc<Mem
4848in ` MemoryState ` (a ` Mutex<Option<MemoryClientRef>> ` ).
4949
5050Base URL resolution (in priority order):
51- 1 . ` ALPHAHUMAN_BASE_URL ` env var
51+
52+ 1 . ` OPENHUMAN_BASE_URL ` env var
52532 . ` TINYHUMANS_BASE_URL ` env var
53543 . SDK default
5455
@@ -109,12 +110,12 @@ Examples: `skill:gmail:user@example.com`, `skill:notion:default`.
109110
110111** File** : ` src-tauri/src/memory/mod.rs `
111112
112- | Method | SDK call | When used |
113- | ---| ---| ---|
114- | ` store_skill_sync(...) ` | ` insert_memory ` | OAuth complete, periodic sync |
115- | ` query_skill_context(...) ` | ` query_memory ` | RAG query — fetch relevant chunks for a user question |
116- | ` recall_skill_context(...) ` | ` recall_memory ` | Recall synthesised summary from Master node |
117- | ` clear_skill_memory(...) ` | ` delete_memory ` | OAuth revoke / disconnect |
113+ | Method | SDK call | When used |
114+ | --------------------------- | --------------- | ----------------------------------------------------- |
115+ | ` store_skill_sync(...) ` | ` insert_memory ` | OAuth complete, periodic sync |
116+ | ` query_skill_context(...) ` | ` query_memory ` | RAG query — fetch relevant chunks for a user question |
117+ | ` recall_skill_context(...) ` | ` recall_memory ` | Recall synthesised summary from Master node |
118+ | ` clear_skill_memory(...) ` | ` delete_memory ` | OAuth revoke / disconnect |
118119
119120---
120121
@@ -141,16 +142,17 @@ chatSend({ threadId, message, model, authToken, backendUrl, messages, notionCont
141142
142143Completion events flow back over Tauri events:
143144
144- | Event | Frontend handler |
145- | ---| ---|
146- | ` chat:tool_call ` | shows active tool indicator |
147- | ` chat:tool_result ` | clears tool indicator |
148- | ` chat:done ` | ` dispatch(addInferenceResponse(...)) ` |
149- | ` chat:error ` | shows error, clears loading state |
145+ | Event | Frontend handler |
146+ | ------------------ | ------------------------------------- |
147+ | ` chat:tool_call ` | shows active tool indicator |
148+ | ` chat:tool_result ` | clears tool indicator |
149+ | ` chat:done ` | ` dispatch(addInferenceResponse(...)) ` |
150+ | ` chat:error ` | shows error, clears loading state |
150151
151152### 5b. Web/Fallback Path
152153
153154Used when not running in Tauri (browser). Runs the agentic loop entirely in TypeScript:
155+
154156- Calls ` inferenceApi.createChatCompletion(request) ` directly
155157- Executes tools via ` skillManager.callTool(skillId, toolName, args) `
156158- Both paths share the same 5-round ` MAX_TOOL_ROUNDS ` limit and ` {skillId}__{toolName} ` naming convention
@@ -215,6 +217,7 @@ Step 6: Agentic loop (max 5 rounds)
215217** File** : ` src-tauri/src/runtime/qjs_engine.rs ` — ` call_tool(skill_id, tool_name, args) `
216218
217219The Rust runtime routes ` call_tool ` into the running QuickJS/V8 skill instance:
220+
218221- Serialises ` args ` as JSON
219222- Calls the JS tool handler registered by the skill
220223- Returns ` ToolCallResult { content: Vec<ToolContent>, is_error: bool } `
@@ -262,14 +265,14 @@ Separately (async, fire-and-forget):
262265
263266## Key Files Reference
264267
265- | File | Role |
266- | ---| ---|
267- | ` src/providers/SkillProvider.tsx ` | Discovery, lifecycle, Redux state sync |
268- | ` src/pages/Conversations.tsx ` | Message send, both code paths, Notion context |
269- | ` src/services/chatService.ts ` | ` chatSend() ` , ` chatCancel() ` , ` useRustChat() ` |
270- | ` src-tauri/src/commands/chat.rs ` | Rust agentic loop, context assembly, tool dispatch |
271- | ` src-tauri/src/commands/memory.rs ` | ` recall_memory ` Tauri command |
272- | ` src-tauri/src/memory/mod.rs ` | ` MemoryClient ` wrapping tinyhumansai SDK |
273- | ` src-tauri/src/runtime/qjs_skill_instance.rs ` | Skill sync → memory write triggers |
274- | ` src-tauri/src/runtime/qjs_engine.rs ` | ` discover_skills() ` , ` call_tool() ` , ` all_tools() ` |
275- | ` skills/skills/*/manifest.json ` | Skill metadata (git submodule) |
268+ | File | Role |
269+ | --------------------------------------------- | -------------------------------------------------- |
270+ | ` src/providers/SkillProvider.tsx ` | Discovery, lifecycle, Redux state sync |
271+ | ` src/pages/Conversations.tsx ` | Message send, both code paths, Notion context |
272+ | ` src/services/chatService.ts ` | ` chatSend() ` , ` chatCancel() ` , ` useRustChat() ` |
273+ | ` src-tauri/src/commands/chat.rs ` | Rust agentic loop, context assembly, tool dispatch |
274+ | ` src-tauri/src/commands/memory.rs ` | ` recall_memory ` Tauri command |
275+ | ` src-tauri/src/memory/mod.rs ` | ` MemoryClient ` wrapping tinyhumansai SDK |
276+ | ` src-tauri/src/runtime/qjs_skill_instance.rs ` | Skill sync → memory write triggers |
277+ | ` src-tauri/src/runtime/qjs_engine.rs ` | ` discover_skills() ` , ` call_tool() ` , ` all_tools() ` |
278+ | ` skills/skills/*/manifest.json ` | Skill metadata (git submodule) |
0 commit comments