diff --git a/procedures/user_communication/procedure.md b/procedures/user_communication/procedure.md index 781212c..2ec4927 100644 --- a/procedures/user_communication/procedure.md +++ b/procedures/user_communication/procedure.md @@ -1,65 +1,65 @@ -# User Communication - -## Prerequisites -- User information is stored in the /user directory -- Tasks and their progress are documented in the /tasks directory - -## Flow -```mermaid -flowchart TD - Start([The /root/data/user/basic.md file contains info to identify and address the user
Load the last 10 messages from /root/data/user/conversation_history/ ]) - PrepareForDraft{Have everything needed for drafting a message?} - DraftMessage[Draft message in reasoning entry] - ReadInput[Read input from standard input] - AddHistoryUser[Add the message to the /root/data/user/conversation_history/ directory
The filename is the id of the stdin entry with .user extension] - LoadTask[Look for the task in the /root/data/tasks directory and load relevant files] - LoadUserDetails[Look in the /root/data/user directory for relevant files] - EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length] - ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?} - RunScript[Run the script, make sure to set appropriate timeout and output limits] - ReviewDraft{Is the message well structured and free of logical errors?} - SendMessage[Send the message using standard output] - AddHistoryAgent[Add the message to the /root/data/user/conversation_history/ directory
The filename is the id of the stdout entry with .agent extension] - ReasonResponse[Is the conversation ongoing?
How long is the user expected to take to respond?] - NeedAwaitResponse{Is it likely to get a response within a minute of sending the message?} - BusyWait[Wait 5 seconds
Make sure to set the timout] - AnalyzeContext[Create reasoning entry
For each entry in context indicate:
- Can delete
- Contains info to save
- Must keep in context] - MakeNotes[Create or update files with info to save] - End([Clean the context]) - - Start --> PrepareForDraft - - PrepareForDraft -->|Got all needed info| DraftMessage - PrepareForDraft -->|Getting the required info would slow the conversation| DraftMessage - PrepareForDraft -->|Input available on stdin| ReadInput - PrepareForDraft -->|Task mentioned but not loaded| LoadTask - PrepareForDraft -->|Personal or social info mentioned but not loaded| LoadUserDetails - PrepareForDraft -->|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript - - ReadInput --> AddHistoryUser - AddHistoryUser --> PrepareForDraft - - LoadTask --> PrepareForDraft - LoadUserDetails --> PrepareForDraft - - EstimateScript --> ScriptAcceptable - ScriptAcceptable -->|Acceptable| RunScript - ScriptAcceptable -->|Not acceptable| PrepareForDraft - RunScript --> PrepareForDraft - - DraftMessage --> ReviewDraft{Is this really what I want to say?} - ReviewDraft -->|Rewrite better| DraftMessage - ReviewDraft -->|Good message| SendMessage - - SendMessage --> AddHistoryAgent - AddHistoryAgent --> ReasonResponse - ReasonResponse --> NeedAwaitResponse - - NeedAwaitResponse -->|Quick response is unlikely| AnalyzeContext - NeedAwaitResponse -->|Input available on stdin| PrepareForDraft - NeedAwaitResponse -->|Quick response is likely| BusyWait - BusyWait --> NeedAwaitResponse - - AnalyzeContext --> MakeNotes - MakeNotes --> End +# User Communication + +## Prerequisites +- User information is stored in the /user directory +- Tasks and their progress are documented in the /tasks directory + +## Flow +```mermaid +flowchart TD + Start([The /root/data/user/basic.md file contains info to identify and address the user
Load the last 10 messages from /root/data/user/conversation_history/ ]) + PrepareForDraft{Have everything needed for drafting a message?} + DraftMessage[Draft message in reasoning entry] + ReadInput[Read input from standard input] + AddHistoryUser[Add the message to the /root/data/user/conversation_history/ directory
The filename is the id of the stdin entry with .user extension] + LoadTask[Look for the task in the /root/data/tasks directory and load relevant files] + LoadUserDetails[Look in the /root/data/user directory for relevant files] + EstimateScript[Draft the script in a reasoning block and estimate its runtime and output length] + ScriptAcceptable{Does the draft script make sense and are the estimations short enough to not hinder the conversation?} + RunScript[Run the script, make sure to set appropriate timeout and output limits] + ReviewDraft{Is the message well structured and free of logical errors?} + SendMessage[Send the message using standard output] + AddHistoryAgent[Add the message to the /root/data/user/conversation_history/ directory
The filename is the id of the stdout entry with .agent extension] + ReasonResponse[Is the conversation ongoing?
How long is the user expected to take to respond?] + NeedAwaitResponse{Is it likely to get a response within a minute of sending the message?} + BusyWait[Wait 5 seconds
Make sure to set the timout] + AnalyzeContext[Create reasoning entry
For each entry in context indicate:
- Can delete
- Contains info to save
- Must keep in context] + MakeNotes[Create or update files with info to save] + End([Clean the context]) + + Start --> PrepareForDraft + + PrepareForDraft -->|Got all needed info| DraftMessage + PrepareForDraft -->|Getting the required info would slow the conversation| DraftMessage + PrepareForDraft -->|Input available on stdin| ReadInput + PrepareForDraft -->|Task mentioned but not loaded| LoadTask + PrepareForDraft -->|Personal or social info mentioned but not loaded| LoadUserDetails + PrepareForDraft -->|Calculations, system info or other numerical values that can be scripted are mentioned| EstimateScript + + ReadInput --> AddHistoryUser + AddHistoryUser --> PrepareForDraft + + LoadTask --> PrepareForDraft + LoadUserDetails --> PrepareForDraft + + EstimateScript --> ScriptAcceptable + ScriptAcceptable -->|Acceptable| RunScript + ScriptAcceptable -->|Not acceptable| PrepareForDraft + RunScript --> PrepareForDraft + + DraftMessage --> ReviewDraft{Is this really what I want to say?} + ReviewDraft -->|Rewrite better| DraftMessage + ReviewDraft -->|Good message| SendMessage + + SendMessage --> AddHistoryAgent + AddHistoryAgent --> ReasonResponse + ReasonResponse --> NeedAwaitResponse + + NeedAwaitResponse -->|Quick response is unlikely| MakeNotes + NeedAwaitResponse -->|Input available on stdin| PrepareForDraft + NeedAwaitResponse -->|Quick response is likely| BusyWait + BusyWait --> NeedAwaitResponse + + MakeNotes --> AnalyzeContext + AnalyzeContext --> End ``` \ No newline at end of file