--- START OF FILE Autologos_Core_Logic_v1.0.alang ---
;; Autologos_Core_Logic.alang v1.0
;; Specification Version: ALANG_SPEC_V1.0
;; Core Logic Version: ALANG_CORE_LOGIC_V1.0
;; This file defines the core behavior of the Autologos system using the ALang language.
;; This version aims to be a "production-ready" design, with all identified issues fixed and placeholders replaced by detailed ALang logic.
;; --- Section 0: System Config & Metadata ---
;; This section defines system-wide configuration parameters and metadata.
(DEFINE_PRIMITIVE GET_ALANG_SPEC_VERSION ()
; Orchestrator: Returns the version of the ALang specification that this code adheres to.
; Returns: String (e.g., "ALANG_SPEC_V1.0")
)
(DEFINE_PRIMITIVE GET_CORE_LOGIC_VERSION ()
; Orchestrator: Returns the version of this Autologos core logic.
; Returns: String (e.g., "ALANG_CORE_LOGIC_V1.0")
)
(DEFINE_PRIMITIVE GET_ORCHESTRATOR_TIMESTAMP ()
; Orchestrator: Returns an ISO 8601 timestamp string from the orchestrator's environment, using tool_code.
; The accuracy and trustworthiness of this timestamp are dependent on the orchestrator's implementation and its access to a synchronized system clock.
; If a trusted timestamp cannot be provided, this primitive MUST return NIL or an ALANG_STATUS_TIMESTAMP_UNAVAILABLE.
; Returns: String (ISO 8601 timestamp) or NIL.
)
(SET_STATE sys.alang_spec_version (GET_ALANG_SPEC_VERSION))
(SET_STATE sys.alang_core_logic_version (GET_CORE_LOGIC_VERSION))
(SET_STATE sys.current_mode "IDLE") ; Initial system state
(SET_STATE sys.error_level "NONE") ; No errors initially
(SET_STATE sys.error_message NIL) ; No error message
(SET_STATE sys.evolution_backlog_handle "Autologos/Evolution_Backlog.json") ; Path to structured backlog
(SET_STATE sys.knowledge_base_handle "Autologos/Persistent_Knowledge_Base.json") ; Path to structured PKA store
(SET_STATE sys.evolution_trigger_pending FALSE) ; Flag for System QA cycle
;; --- Section 1: Utility Procedures & Primitives Declarations ---
;; This section defines commonly used utility procedures and declares the signatures of all primitives.
;; --- Utility Procedures ---
(DEFINE_PROCEDURE AcknowledgeAndLog (log_event_type log_message user_ack_message_type user_ack_content)
(LOG_EVENT log_event_type log_message)
(OUTPUT_TO_USER_BUFFER user_ack_message_type user_ack_content NIL) ; NIL for formatting hints
(FLUSH_USER_OUTPUT_BUFFER)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE OutputGeneralHelp ()
;; Provides general help information about Autologos commands.
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "Autologos Commands:\nSTART (project_description)\nOK\nNO / REVISE (feedback)\nINPUT (data)\nSTATUS?\nHELP? (command_name)\nEND\nEVOLVE (suggestion)\nSAVE_SYSTEM\nSAVE_PROJECT\nOUTPUT (artifact_id)\nSUMMARIZE (artifact_id)\nQUERY (CONCEPT/DOCUMENT/RELATION)\n\nFor specific help, type HELP? (command_name).")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE OutputSpecificHelp (commandName)
;; Provides specific help for a given command.
(LET ((helpContent (GET_HELP_TEXT_FOR_COMMAND commandName)))
(IF (IS_NIL helpContent)
(SEQ
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "No help found for command: " commandName))
(RETURN_STATUS ALANG_STATUS_NOT_FOUND)
)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" helpContent)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ClearTurnSpecificSessionState ()
;; Clears session-specific state variables that should not persist across turns.
(SET_STATE session.last_user_input_raw NIL)
(SET_STATE session.parsed_command_details NIL)
(SET_STATE session.pending_user_action NIL)
(SET_STATE session.active_tool_id NIL)
(SET_STATE session.tool_last_status NIL)
(SET_STATE session.tool_last_output_handle NIL)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE OutputErrorToUser (errorMessage)
;; Outputs an error message to the user.
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "ERROR: " errorMessage))
(FLUSH_USER_OUTPUT_BUFFER)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
;; --- Primitive Declarations (Orchestrator Implemented) ---
;; These are just declarations for documentation and potential type checking.
;; The actual implementation is handled by the orchestrator.
(DEFINE_PRIMITIVE SET_STATE (variable_path_string value)
; Sets a state variable to a given value.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_STATE (variable_path_string)
; Retrieves the value of a state variable.
; Returns: The value of the state variable.
)
(DEFINE_PRIMITIVE REQUEST_USER_INPUT (prompt_message_key_or_text expected_input_type_hint)
; Outputs a prompt to the user and sets session.pending_user_action.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE OUTPUT_TO_USER_BUFFER (message_type content_handle_or_text formatting_hints)
; Adds content to the output buffer.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE FLUSH_USER_OUTPUT_BUFFER ()
; Sends the contents of the output buffer to the user.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_LAST_USER_INPUT_PROCESSED ()
; Retrieves the last user input and marks it as processed.
; Returns: String (user input)
)
(DEFINE_PRIMITIVE INVOKE_TOOL_ASYNC_WITH_CALLBACKS (tool_id input_data params_map success_proc_name failure_proc_name (OPTIONAL_CONTEXT_MAP pass_through_context))
; Invokes an external tool asynchronously.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_ASYNC_JOB_STATUS (job_id)
; Gets the status of an asynchronous job.
; Returns: ALANG_STATUS_CODE (or a structured object with status and details)
)
(DEFINE_PRIMITIVE GET_ASYNC_JOB_RESULT_HANDLE (job_id)
; Gets the handle to the result of an asynchronous job (if successful).
; Returns: Handle or NIL
)
(DEFINE_PRIMITIVE READ_CONTENT (handle options)
; Reads content from a data source (file, memory, etc.) referenced by a handle.
; Options: "text", "json_map_list", "text_summary_or_full", "raw_bytes", "max_chars", "offset".
; Returns: String (or a structured object with content and metadata)
)
(DEFINE_PRIMITIVE WRITE_CONTENT_TO_ARTIFACT (artifact_handle content mime_type)
; Writes content to an artifact referenced by a handle.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_HANDLE_METADATA (handle key)
; Gets metadata associated with a handle.
; Returns: String (or other primitive type)
)
(DEFINE_PRIMITIVE RELEASE_HANDLE (handle)
; Releases a handle, freeing associated resources.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE LOG_EVENT (event_type description_text (key_value_details_map_optional))
; Logs an event to the system log.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE SET_ERROR_STATE (error_level error_message_key_or_text)
; Sets the system error state.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_ORCHESTRATOR_TIMESTAMP ()
; Returns an ISO 8601 timestamp string from the orchestrator's environment, using tool_code.
; Returns: String (ISO 8601 timestamp) or NIL.
)
(DEFINE_PRIMITIVE GENERATE_UNIQUE_ID (prefix_string_optional)
; Generates a unique ID (e.g., UUID v4).
; Returns: String
)
(DEFINE_PRIMITIVE VALIDATE_DATA (data_handle schema_handle)
; Validates data against a defined schema using tool_code (e.g., jsonschema).
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE IS_TOOL_ENABLED (tool_id)
; Checks if a specific tool is enabled in the orchestrator's environment.
; Returns: Boolean
)
(DEFINE_PRIMITIVE STRING_CONCAT (str1 str2 (OPTIONAL_MORE_STRINGS ...))
; Concatenates multiple strings.
; Returns: String
)
(DEFINE_PRIMITIVE STRING_IS_EMPTY_OR_NULL (str)
; Checks if a string is empty or NIL.
; Returns: Boolean
)
(DEFINE_PRIMITIVE IS_NUMBER (str)
; Checks if a string can be converted to a number.
; Returns: Boolean
)
(DEFINE_PRIMITIVE STRING_TO_NUMBER (str)
; Converts a string to a number.
; Returns: Number
)
(DEFINE_PRIMITIVE ADD (num1 num2)
; Adds two numbers.
; Returns: Number
)
(DEFINE_PRIMITIVE SUB (num1 num2)
; Subtracts two numbers.
; Returns: Number
)
(DEFINE_PRIMITIVE OR (bool1 bool2 (OPTIONAL_MORE_BOOLS ...))
; Logical OR operation.
; Returns: Boolean
)
(DEFINE_PRIMITIVE AND (bool1 bool2 (OPTIONAL_MORE_BOOLS ...))
; Logical AND operation.
; Returns: Boolean
)
(DEFINE_PRIMITIVE NOT (bool)
; Logical NOT operation.
; Returns: Boolean
)
(DEFINE_PRIMITIVE IS_NIL (value)
; Checks if a value is NIL.
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_RESULT_STATUS (result_object)
; Extracts the status code from a structured result object.
; Returns: Symbol (ALANG_STATUS_SUCCESS, ALANG_STATUS_FAILURE_...)
)
(DEFINE_PRIMITIVE GET_RESULT_DATA (result_object)
; Extracts the data payload from a structured result object.
; Returns: Any
)
(DEFINE_PRIMITIVE MAP_CREATE ((key1 val1) (key2 val2) (OPTIONAL_MORE_PAIRS ...)))
; Creates a map (dictionary/object).
; Returns: Map
)
(DEFINE_PRIMITIVE MAP_GET_VALUE (map key default_value_optional)
; Retrieves a value from a map by key.
; Returns: Any
)
(DEFINE_PRIMITIVE LIST_CREATE (item1 item2 (OPTIONAL_MORE_ITEMS ...))
; Creates a list (array).
; Returns: List
)
(DEFINE_PRIMITIVE LIST_GET_ITEM (list index)
; Retrieves an item from a list by index.
; Returns: Any
)
(DEFINE_PRIMITIVE LIST_IS_EMPTY (list)
; Checks if a list is empty.
; Returns: Boolean
)
(DEFINE_PRIMITIVE CREATE_EMPTY_ARTIFACT (artifact_type_string)
; Orchestrator: Creates an empty artifact and returns a handle to it.
; Returns: Handle
)
(DEFINE_PRIMITIVE GET_HELP_TEXT_FOR_COMMAND (command_name)
; Orchestrator: Retrieves help text for a specific command.
; Returns: String or NIL
)
(DEFINE_PRIMITIVE GET_TEXT_FOR_CDGIP_USER_VERIFICATION_MANDATE (alang_version section_count)
; Orchestrator: Retrieves the full, formatted CDGIP user verification mandate text.
; Returns: String
)
(DEFINE_PRIMITIVE GET_CURRENT_ALANG_PROCEDURE_DEFINITIONS_HANDLE ()
; Orchestrator: Provides a handle to the current, in-memory ALang procedure definitions.
; Returns: Handle
)
(DEFINE_PRIMITIVE VERIFY_ALANG_FILE_MARKERS (alang_content_handle alang_version)
; Orchestrator: Verifies START/END markers in ALang content.
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_ALANG_SECTION_COUNT (alang_content_handle)
; Orchestrator: Counts primary sections in ALang content.
; Returns: Number
)
(DEFINE_PRIMITIVE COMPUTE_FILE_CHECKSUM (file_handle checksum_type)
; Orchestrator: Computes a checksum (e.g., SHA256) of the file content using tool_code.
; Returns: String (checksum) or NIL on failure.
)
(DEFINE_PRIMITIVE INVOKE_CORE_LLM_GENERATION (prompt_text llm_params_map)
; Orchestrator: Invokes the core LLM generation capability.
; Returns: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: generated_text}) or failure.
)
(DEFINE_PRIMITIVE GET_LLM_PARAMS_FOR_TASK (task_type)
; Orchestrator: Retrieves LLM parameters (temp, top_p, etc.) optimized for a given task.
; Returns: Map
)
(DEFINE_PRIMITIVE LOAD_EVOLUTION_BACKLOG (handle_or_path)
; Orchestrator: Loads the evolution backlog into memory/state.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE LOAD_PERSISTENT_KNOWLEDGE_BASE (handle_or_path)
; Orchestrator: Loads the persistent knowledge base into memory/state.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE PKA_CREATE_DRAFT (content_handle_or_text schema_id_optional context_map_optional)
; Orchestrator: Creates a draft PKA.
; Returns: Handle to draft PKA or NIL on failure.
)
(DEFINE_PRIMITIVE PKA_REQUEST_USER_CONSENT_TO_STORE (pka_draft_handle purpose_description)
; Orchestrator: Prompts user for consent to store PKA. Blocking.
; Returns: Symbol ("USER_CONSENT_GRANTED", "USER_CONSENT_DENIED", "INVALID_RESPONSE")
)
(DEFINE_PRIMITIVE PKA_STORE_APPROVED_DRAFT (pka_draft_handle user_consent_token_or_flag)
; Orchestrator: Stores the approved PKA.
; Returns: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: pka_stored_id}) or failure.
)
(DEFINE_PRIMITIVE PKA_QUERY (query_object scope_filter_optional)
; Orchestrator: Queries the PKA store.
; Returns: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: list_of_pka_handles}) or failure.
)
(DEFINE_PRIMITIVE PKA_GET_ARTIFACT (pka_stored_id)
; Orchestrator: Retrieves a stored PKA artifact.
; Returns: Handle to PKA artifact or NIL.
)
(DEFINE_PRIMITIVE PKA_UPDATE_ARTIFACT (pka_stored_id new_content_handle update_rationale user_consent_token_or_flag_if_scope_change)
; Orchestrator: Updates a stored PKA artifact.
; Returns: ALANG_STATUS_CODE.
)
(DEFINE_PRIMITIVE PKA_MANAGE_CONSENT (pka_stored_id_or_all action_revoke_or_modify)
; Orchestrator: Manages user consent for PKAs.
; Returns: ALANG_STATUS_CODE.
)
(DEFINE_PRIMITIVE CREATE_EVOLUTION_BACKLOG_ITEM (id title desc source status timestamp)
; Orchestrator: Creates a new item in the evolution backlog.
; Returns: ALANG_STATUS_CODE.
)
(DEFINE_PRIMITIVE UPDATE_EVOLUTION_BACKLOG_ITEM (id new_title_opt new_desc_opt new_source_opt new_status_opt new_comment_opt increment_reinforce_flag_opt)
; Orchestrator: Updates an existing item in the evolution backlog.
; Returns: ALANG_STATUS_CODE.
)
(DEFINE_PRIMITIVE FIND_SIMILAR_BACKLOG_ITEM (text)
; Orchestrator: Finds a backlog item semantically similar to the given text using tool_code.
; Returns: Map (of item details) or NIL.
)
(DEFINE_PRIMITIVE GET_SESSION_CMD_ARG_BY_INDEX (index default_value_optional)
; Retrieves a command argument from session.parsed_command_details.args by index.
; Returns: Any
)
(DEFINE_PRIMITIVE IS_HANDLE_VALID (handle)
; Checks if a handle is valid (not NIL, not an error code).
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_RESULT_DATA (result_object)
; Extracts the data payload from a structured result object.
; Returns: Any
)
(DEFINE_PRIMITIVE GET_RESULT_STATUS (result_object)
; Extracts the status code from a structured result object.
; Returns: Symbol (ALANG_STATUS_SUCCESS, ALANG_STATUS_FAILURE_...)
)
(DEFINE_PRIMITIVE HAS_QA_ISSUES (qa_assessment_map)
; Checks if a QA assessment map indicates issues.
; Returns: Boolean
)
(DEFINE_PRIMITIVE WRITE_CONTENT_TO_ARTIFACT (artifact_handle content mime_type)
; Writes content to an artifact referenced by a handle.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_LLM_PARAMS_FOR_TASK (task_type)
; Orchestrator: Retrieves LLM parameters (temp, top_p, etc.) optimized for a given task.
; Returns: Map
)
(DEFINE_PRIMITIVE INVOKE_CORE_LLM_GENERATION (prompt_text llm_params_map)
; Orchestrator: Invokes the core LLM generation capability.
; Returns: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: generated_text}) or failure.
)
(DEFINE_PRIMITIVE IS_STATUS_FAILURE (status_code_or_value)
; Checks if the input is one of the defined ALANG_STATUS_FAILURE_... codes.
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_ERROR_MESSAGE (error_object)
; Extracts the error message from an error object.
; Returns: String
)
(DEFINE_PRIMITIVE GET_DATA (result_object)
; Extracts the data payload from a structured result object. (Alias for GET_RESULT_DATA)
; Returns: Any
)
(DEFINE_PRIMITIVE GET_STATUS (result_object)
; Extracts the status code from a structured result object. (Alias for GET_RESULT_STATUS)
; Returns: Symbol
)
(DEFINE_PRIMITIVE GET_TEXT_FOR_PKA_CONSENT_PROMPT (pattern_description)
; Orchestrator: Generates the specific consent prompt text for PKA.
; Returns: String
)
(DEFINE_PRIMITIVE AWAIT_USER_RESPONSE_AND_VALIDATE (expected_response_type)
; Orchestrator: Blocking call that waits for user input and validates it.
; Returns: StructuredResultObject ({status: SUCCESS, data: validated_response}) or failure.
)
(DEFINE_PRIMITIVE COMMAND_NOT_HANDLED ()
; Orchestrator: Checks if the last dispatched command was not handled by a specific handler.
; Returns: Boolean
)
(DEFINE_PRIMITIVE PHASE_NOT_HANDLED ()
; Orchestrator: Checks if the last dispatched phase was not handled by a specific handler.
; Returns: Boolean
)
(DEFINE_PRIMITIVE INIT_PROJECT_STATE (project_id project_title master_plan_handle_optional)
; Orchestrator: Initializes all proj.* and relevant session.* state variables for a new project.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE LOAD_EVOLUTION_BACKLOG ()
; Orchestrator: Loads the evolution backlog from its handle/path into memory/state.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE LOAD_PERSISTENT_KNOWLEDGE_BASE ()
; Orchestrator: Loads the persistent knowledge base from its handle/path into memory/state.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE GET_HELP_TEXT_FOR_COMMAND (command_name)
; Orchestrator: Retrieves help text for a specific command.
; Returns: String or NIL
)
(DEFINE_PRIMITIVE GET_CURRENT_ALANG_PROCEDURE_DEFINITIONS_HANDLE ()
; Orchestrator: Provides a handle to the current, in-memory ALang procedure definitions.
; Returns: Handle
)
(DEFINE_PRIMITIVE VERIFY_ALANG_FILE_MARKERS (alang_content_handle alang_version)
; Orchestrator: Verifies START/END markers in ALang content.
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_ALANG_SECTION_COUNT (alang_content_handle)
; Orchestrator: Counts primary sections in ALang content.
; Returns: Number
)
(DEFINE_PRIMITIVE GET_LLM_PARAMS_FOR_TASK (task_type)
; Orchestrator: Retrieves LLM parameters (temp, top_p, etc.) optimized for a given task.
; Returns: Map
)
(DEFINE_PRIMITIVE INVOKE_CORE_LLM_GENERATION (prompt_text llm_params_map)
; Orchestrator: Invokes the core LLM generation capability.
; Returns: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: generated_text}) or failure.
)
(DEFINE_PRIMITIVE WRITE_CONTENT_TO_ARTIFACT (artifact_handle content mime_type)
; Writes content to an artifact referenced by a handle.
; Returns: ALANG_STATUS_CODE
)
(DEFINE_PRIMITIVE HAS_QA_ISSUES (qa_assessment_map)
; Checks if a QA assessment map indicates issues.
; Returns: Boolean
)
(DEFINE_PRIMITIVE GET_TEXT_FOR_CDGIP_USER_VERIFICATION_MANDATE (alang_version section_count)
; Orchestrator: Retrieves the full, formatted CDGIP user verification mandate text.
; Returns: String
)
;; --- Section 2: Event Handler Procedures (Top-Level Entry Points) ---
;; These procedures are the entry points for the orchestrator to invoke ALang logic in response to external events.
(DEFINE_PROCEDURE OnSystemInit ()
;; Called by the orchestrator when the system starts up.
(LOG_EVENT "SYSTEM_INIT" "Autologos system initializing.")
(SET_STATE sys.alang_core_logic_version (GET_CORE_LOGIC_VERSION)) ; Fixed: swapped
(SET_STATE sys.alang_spec_version (GET_ALANG_SPEC_VERSION)) ; Fixed: swapped
(SET_STATE sys.current_mode "IDLE")
(SET_STATE sys.error_level "NONE")
(SET_STATE sys.error_message NIL)
(CALL_PROCEDURE LoadEvolutionBacklog) ; Load backlog from file/DB
(CALL_PROCEDURE LoadPersistentKnowledgeBase) ; Load PKA from store
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Autologos System Initialized. ALang v1.0.")
(FLUSH_USER_OUTPUT_BUFFER)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE OnUserInput (raw_text)
;; Called by the orchestrator when the user provides input.
(LOG_EVENT "USER_INPUT_RECEIVED" raw_text)
(SET_STATE session.last_user_input_raw raw_text)
(LET ((parsedCmdResult (CALL_PROCEDURE ParseUserCommand raw_text)))
(IF (EQ (GET_RESULT_STATUS parsedCmdResult) ALANG_STATUS_SUCCESS)
(LET ((cmdDetails (GET_RESULT_DATA parsedCmdResult)))
(SET_STATE session.parsed_command_details cmdDetails)
(CALL_PROCEDURE DispatchUserCommand cmdDetails)
)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "Could not understand input.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(FLUSH_USER_OUTPUT_BUFFER)
(CALL_PROCEDURE ClearTurnSpecificSessionState) ; Clear command-specific data
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; OnUserInput itself succeeded in processing the event
)
(DEFINE_PROCEDURE OnToolSuccess (job_id result_handle original_success_proc_name context)
;; Called by the orchestrator when an asynchronous tool call completes successfully.
(LOG_EVENT "TOOL_SUCCESS" (STRING_CONCAT "Tool " (GET_STATE session.active_tool_id) " completed successfully. Job ID: " job_id))
(CALL_PROCEDURE original_success_proc_name job_id result_handle context) ; Call the specified callback
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE OnToolFailure (job_id error_details original_failure_proc_name context)
;; Called by the orchestrator when an asynchronous tool call fails.
(LOG_EVENT "TOOL_FAILURE" (STRING_CONCAT "Tool " (GET_STATE session.active_tool_id) " failed. Job ID: " job_id))
(SET_ERROR_STATE "TOOL_ERROR" (MAP_GET_VALUE error_details "message"))
(CALL_PROCEDURE original_failure_proc_name job_id error_details context) ; Call the specified callback
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; OnToolFailure itself succeeded in handling the event
)
;; --- Section 3: Command Dispatcher & Specific Command Handlers ---
;; This section defines the DispatchUserCommand procedure and the handlers for specific user commands.
(DEFINE_PROCEDURE DispatchUserCommand (commandDetails)
;; Routes execution to the appropriate command handler based on the parsed command.
(LET ((commandName (MAP_GET_VALUE commandDetails "command")))
(IF (EQ commandName "START") (CALL_PROCEDURE HandleStartCommand (GET_STATE session.parsed_command_details.args)))
(IF (EQ commandName "HELP") (CALL_PROCEDURE HandleHelpCommand (GET_STATE session.parsed_command_details.args)))
(IF (EQ commandName "EVOLVE") (CALL_PROCEDURE HandleEvolveCommand (GET_STATE session.parsed_command_details.args)))
(IF (EQ commandName "SAVE_SYSTEM") (CALL_PROCEDURE HandleSaveSystemCommand ()))
(IF (EQ commandName "BROWSE") (CALL_PROCEDURE HandleBrowseCommand (GET_STATE session.parsed_command_details.args)))
(IF (EQ commandName "OK") (CALL_PROCEDURE HandleOkCommand ())) ; New handler for OK
(IF (EQ commandName "NO") (CALL_PROCEDURE HandleNoCommand (GET_STATE session.parsed_command_details.args))) ; New handler for NO/REVISE
(IF (EQ commandName "INPUT") (CALL_PROCEDURE HandleInputCommand (GET_STATE session.parsed_command_details.args))) ; New handler for INPUT
(IF (EQ commandName "END") (CALL_PROCEDURE HandleEndCommand ())) ; New handler for END
(IF (EQ commandName "LOOP_PROJECT_RESTART") (CALL_PROCEDURE HandleLoopProjectRestartCommand ())) ; New handler
(IF (EQ commandName "SET_SESSION_PREFERENCE") (CALL_PROCEDURE HandleSetSessionPreferenceCommand (GET_STATE session.parsed_command_details.args))) ; New handler
(IF (EQ commandName "STOP_LOOP") (CALL_PROCEDURE HandleStopLoopCommand ())) ; New handler
(IF (EQ commandName "OUTPUT") (CALL_PROCEDURE HandleOutputCommand (GET_STATE session.parsed_command_details.args))) ; New handler
(IF (EQ commandName "SUMMARIZE") (CALL_PROCEDURE HandleSummarizeCommand (GET_STATE session.parsed_command_details.args))) ; New handler
(IF (EQ commandName "QUERY") (CALL_PROCEDURE HandleQueryCommand (GET_STATE session.parsed_command_details.args))) ; New handler
(IF (EQ commandName "OUTPUT_BACKLOG") (CALL_PROCEDURE HandleOutputBacklogCommand (GET_STATE session.parsed_command_details.args))) ; New handler
(IF (NOT (IS_NIL commandName))) ; Fallback if no specific handler matches
(CALL_PROCEDURE HandleUnknownCommand commandName)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleStartCommand (argsList)
;; Handles the START command.
(LET ((projectDescription (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL))) ; Get the first argument, allow NIL
(IF (STRING_IS_EMPTY_OR_NULL projectDescription)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "Project description cannot be empty for START command.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(ACKNOWLEDGE_AND_LOG
"CMD_START_RECEIVED"
(STRING_CONCAT "START command received. Description: " projectDescription)
"AI_ACKNOWLEDGE_INTENT"
(STRING_CONCAT "START command received. Project: '" projectDescription "'") ; Fixed message
)
(LET ((newProjectId (GENERATE_UNIQUE_ID "PROJ")))
(INIT_PROJECT_STATE newProjectId projectDescription NIL) ; NIL for optional master_plan_handle initially
)
(OUTPUT_TO_USER_BUFFER "AI_PRESENT_INTERPRETATION"
(STRING_CONCAT "Project: " (GET_STATE proj.title) ". Phase: Init.") NIL
)
(SET_STATE proj.current_phase_id "PHASE_IDEA_FORMULATION")
(LOG_EVENT "PHASE_TRANSITION" "Transitioning to Idea Formulation.")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
)
(DEFINE_PROCEDURE HandleHelpCommand (argsList)
;; Handles the HELP command.
(LET ((commandName (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL))) ; Get optional command name
(IF (STRING_IS_EMPTY_OR_NULL commandName)
(CALL_PROCEDURE OutputGeneralHelp)
(CALL_PROCEDURE OutputSpecificHelp commandName)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleEvolveCommand (argsList)
;; Handles the EVOLVE command.
(LET ((suggestionText (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(IF (STRING_IS_EMPTY_OR_NULL suggestionText)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "EVOLVE command requires a suggestion text.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(ACKNOWLEDGE_AND_LOG
"CMD_EVOLVE_RECEIVED"
(STRING_CONCAT "EVOLVE command received. Suggestion: " suggestionText)
"AI_ACKNOWLEDGE_INTENT"
(STRING_CONCAT "EVOLVE Suggestion: '" suggestionText "' logged.") ; Fixed message
)
(LET ((backlogItemId (CALL_PROCEDURE ProcessAndStoreEvolveSuggestion suggestionText "USER_SUGGESTION")))
(IF (EQ backlogItemId ALANG_STATUS_FAILURE_GENERAL)
(SEQ
(OUTPUT_TO_USER_BUFFER "AI_ERROR" "Failed to process and store EVOLVE suggestion in backlog." NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
(SET_STATE sys.evolution_trigger_pending TRUE) ; Flag for potential System QA cycle
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Your suggestion has been logged for consideration in the next System QA & Evolution cycle." NIL)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
)
(DEFINE_PROCEDURE HandleSaveSystemCommand ()
;; Handles the SAVE SYSTEM command, implementing CDGIP.
(ACKNOWLEDGE_AND_LOG "CMD_SAVE_SYSTEM" "SAVE SYSTEM command received." "AI_ACKNOWLEDGE_INTENT" "SAVE SYSTEM command received.")
; 1. Generate the ALang Core Logic content itself (meta-generation)
(LET ((generatedAlangCodeHandle (SAFE_GENERATE_CONTENT
(CREATE_EMPTY_ARTIFACT "temp_alang_code") ; Target for the generated code
"SYSTEM_PROMPT_TEMPLATE_SERIALIZE_ALANG_CORE" ; Special template handle
(GET_CURRENT_ALANG_PROCEDURE_DEFINITIONS_HANDLE) ; Context: all current code
"CONSTRAINT_SET_VALID_ALANG_SYNTAX" ; Constraints
)))
(IF (IS_HANDLE_VALID generatedAlangCodeHandle)
(LET ((tempAlangContent (READ_CONTENT generatedAlangCodeHandle "text" NIL))) ; Read the generated ALang
; 2. Perform CDGIP Checks
(LET ((markersOk (VERIFY_ALANG_FILE_MARKERS tempAlangContent (GET_STATE sys.alang_core_logic_version))))
(LET ((sectionCount (GET_ALANG_SECTION_COUNT tempAlangContent))))
(LET ((checksum (COMPUTE_FILE_CHECKSUM generatedAlangCodeHandle "SHA256")))) ; Compute checksum using tool_code
(IF (AND markersOk (GT sectionCount 0) (NOT (IS_NIL checksum))) ; Basic checks + checksum
; 3. Output CDGIP User Verification Prompts
(OUTPUT_TO_USER_BUFFER "AI_PRESENT_THOUGHTS"
(STRING_CONCAT "Preparing to output Autologos_Core_Logic_v" (GET_STATE sys.alang_core_logic_version) ".alang. "
"Internal draft contains " (STRING_CONCAT "" sectionCount) " primary SECTION comments. " ; Convert num to string
"Checksum (SHA256): " checksum ". "
"Please verify all sections are present and correctly numbered in the output.") NIL
)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA"
(STRING_CONCAT "Recommended Filename: Autologos/Autologos_Core_Logic_v" (GET_STATE sys.alang_core_logic_version) ".alang") NIL
)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "```scheme" NIL) ; Start code block
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (STRING_CONCAT "--- START OF FILE Autologos_Core_Logic_v" (GET_STATE sys.alang_core_logic_version) ".alang ---") NIL)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" tempAlangContent NIL) ; The actual ALang code
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (STRING_CONCAT "--- END OF FILE Autologos_Core_Logic_v" (GET_STATE sys.alang_core_logic_version) ".alang ---") NIL)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "```" NIL) ; End code block
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_USER_ACTION"
(GET_TEXT_FOR_CDGIP_USER_VERIFICATION_MANDATE (GET_STATE sys.alang_core_logic_version) sectionCount) NIL
)
; Offer to output Evolution Backlog (as per v3.6.3)
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_CLARIFICATION_QUESTIONS" "Output Evolution Backlog now? (YES/NO)" NIL)
(SET_STATE session.pending_user_action "AWAIT_YES_NO_FOR_BACKLOG_OUTPUT")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
; ELSE CDGIP checks failed
(SET_ERROR_STATE "SYSTEM_ERROR" "Internal CDGIP checks failed during SAVE SYSTEM (markers, section count, or checksum failed).")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERATION_ERROR)
))
)
; ELSE SAFE_GENERATE_CONTENT failed
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to generate ALang core logic for SAVE SYSTEM.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERATION_ERROR)
))
(FLUSH_USER_OUTPUT_BUFFER)
)
(DEFINE_PROCEDURE HandleBrowseCommand (argsList)
;; Handles the BROWSE command.
(LET ((arg (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(IF (OR (STRING_IS_EMPTY_OR_NULL arg) (NOT (IS_NUMBER arg)))
(SEQ
(SET_ERROR_STATE "USER_ERROR" "Invalid argument for BROWSE. Please provide a number.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(LET ((resultIndex (SUB (STRING_TO_NUMBER arg) 1)))
(IF (OR (LT resultIndex 0) (GTE resultIndex (LIST_GET_LENGTH (GET_STATE session.last_search_results)))) ; Check bounds
(SEQ
(SET_ERROR_STATE "USER_ERROR" "Result number out of bounds for previous search results.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(IF (NOT (IS_TOOL_ENABLED "browse"))
(SEQ
(SET_ERROR_STATE "TOOL_UNAVAILABLE" "Browse tool is not available.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_TOOL_UNAVAILABLE)
)
)
(LET ((targetUrl (MAP_GET_VALUE (LIST_GET_ITEM (GET_STATE session.last_search_results) resultIndex) "url" NIL)))
(IF (STRING_IS_EMPTY_OR_NULL targetUrl)
(SEQ
(SET_ERROR_STATE "DATA_ERROR" "Invalid result number or URL not found in stored search results.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_NOT_FOUND)
)
)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" (STRING_CONCAT "Browsing URL: " targetUrl) NIL)
(LET ((browseJobId (INVOKE_TOOL_ASYNC_WITH_CALLBACKS "browse" targetUrl NIL "ProcessBrowseResult" "HandleBrowseError" NIL)))
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; Invoke is launched, callback will handle result
)
))
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleUnknownCommand (commandName)
;; Handles unrecognized commands.
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "Unknown command: " commandName) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_COMMAND)
)
(DEFINE_PROCEDURE HandleOkCommand ()
;; Handles the OK command.
(OUTPUT_TO_USER_BUFFER "AI_ACKNOWLEDGE_INTENT" "OK received." NIL)
(SET_STATE session.last_user_response "OK") ; Store response for pending action handlers
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleNoCommand (argsList)
;; Handles the NO / REVISE command.
(LET ((feedbackText (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(OUTPUT_TO_USER_BUFFER "AI_ACKNOWLEDGE_INTENT" (STRING_CONCAT "Feedback: '" feedbackText "' received.") NIL)
(SET_STATE session.last_user_response "NO")
(SET_STATE session.last_user_feedback feedbackText) ; Store feedback
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleInputCommand (argsList)
;; Handles the INPUT command.
(LET ((inputData (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL))) ; Assuming INPUT provides a single arg for now
(OUTPUT_TO_USER_BUFFER "AI_ACKNOWLEDGE_INTENT" "INPUT received." NIL)
(SET_STATE session.last_user_response "INPUT")
(SET_STATE session.last_user_input_data inputData) ; Store input data
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleEndCommand ()
;; Handles the END command.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "END command received. Project session will terminate." NIL)
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_CLARIFICATION_QUESTIONS" "Are you sure you want to end the project? Unsaved data will be lost. (YES/NO)" NIL)
(SET_STATE session.pending_user_action "AWAIT_END_CONFIRMATION")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleLoopProjectRestartCommand ()
;; Handles the LOOP_PROJECT_RESTART command.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "LOOP_PROJECT_RESTART command received. All current project artifacts and state will be discarded." NIL)
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_CLARIFICATION_QUESTIONS" "Are you sure you want to restart the project from Phase 0? (YES/NO)" NIL)
(SET_STATE session.pending_user_action "AWAIT_RESTART_CONFIRMATION")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleSetSessionPreferenceCommand (argsList)
;; Handles the SET_SESSION_PREFERENCE command.
; (Example: (SET_SESSION_PREFERENCE TARGET_OUTPUT_TYPE="bullet_list" STYLE_PARAMETER="list_format:bullets"))
(IF (LT (LIST_GET_LENGTH argsList) 2)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "SET_SESSION_PREFERENCE requires at least TARGET_OUTPUT_TYPE and STYLE_PARAMETER.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
; Assuming argsList is a list of key-value strings like "KEY=VALUE"
(LET ((prefMap (CALL_PROCEDURE ParseKeyValueArgs argsList))) ; New utility to parse "KEY=VALUE" strings
(SET_STATE session.output_preferences prefMap)
(OUTPUT_TO_USER_BUFFER "AI_ACKNOWLEDGE_INTENT" "Session preference logged." NIL)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
)
(DEFINE_PROCEDURE HandleStopLoopCommand ()
;; Handles the STOP_LOOP command.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "STOP_LOOP command received. Attempting to halt current loop gracefully." NIL)
(SET_STATE session.loop_stack NIL) ; Clear loop stack to halt
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleOutputCommand (argsList)
;; Handles the OUTPUT command.
(LET ((artifactId (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(IF (STRING_IS_EMPTY_OR_NULL artifactId)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "OUTPUT command requires an artifact ID.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(LET ((artifactHandle (MAP_GET_VALUE (GET_STATE proj.artifacts) artifactId NIL)))
(IF (IS_NIL artifactHandle)
(SEQ
(SET_ERROR_STATE "DATA_ERROR" (STRING_CONCAT "Artifact not found: " artifactId))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_NOT_FOUND)
)
)
(LET ((content (READ_CONTENT artifactHandle "text_summary_or_full" NIL))) ; Read full content
(IF (IS_NIL content)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" (STRING_CONCAT "Failed to read content for artifact: " artifactId))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" content NIL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleSummarizeCommand (argsList)
;; Handles the SUMMARIZE command.
(LET ((artifactId (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(IF (STRING_IS_EMPTY_OR_NULL artifactId)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "SUMMARIZE command requires an artifact ID.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(LET ((artifactHandle (MAP_GET_VALUE (GET_STATE proj.artifacts) artifactId NIL)))
(IF (IS_NIL artifactHandle)
(SEQ
(SET_ERROR_STATE "DATA_ERROR" (STRING_CONCAT "Artifact not found: " artifactId))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_NOT_FOUND)
)
)
(LET ((summaryResult (CALL_PROCEDURE SummarizeArtifact artifactHandle))) ; New procedure
(IF (EQ (GET_RESULT_STATUS summaryResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_RESULT_DATA summaryResult) NIL)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" (STRING_CONCAT "Failed to summarize artifact: " artifactId))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleQueryCommand (argsList)
;; Handles the QUERY command.
; (Example: (QUERY CONCEPT "Autaxys") or (QUERY DOCUMENT "DocID"))
(LET ((queryType (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL)))
(LET ((queryValue (GET_SESSION_CMD_ARG_BY_INDEX 1 NIL)))
(IF (OR (STRING_IS_EMPTY_OR_NULL queryType) (STRING_IS_EMPTY_OR_NULL queryValue))
(SEQ
(SET_ERROR_STATE "USER_ERROR" "QUERY command requires a type (CONCEPT/DOCUMENT/RELATION) and a value.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_INVALID_ARGS)
)
)
(LET ((queryResult (CALL_PROCEDURE PerformQuery queryType queryValue))) ; New procedure
(IF (EQ (GET_RESULT_STATUS queryResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_RESULT_DATA queryResult) NIL)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" (STRING_CONCAT "Failed to query: " queryType " " queryValue))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
))
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleOutputBacklogCommand (argsList)
;; Handles the OUTPUT_BACKLOG command.
(LET ((filename (GET_SESSION_CMD_ARG_BY_INDEX 0 NIL))) ; Optional filename
(LET ((backlogContentHandle (CALL_PROCEDURE GetEvolutionBacklogContent))) ; New procedure
(IF (IS_HANDLE_VALID backlogContentHandle)
(LET ((content (READ_CONTENT backlogContentHandle "text_summary_or_full" NIL)))
(IF (IS_NIL content)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to read evolution backlog content.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (STRING_CONCAT "Recommended Filename: " (IF (IS_NIL filename) (GET_STATE sys.evolution_backlog_handle) filename)) NIL)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "```markdown" NIL)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" content NIL)
(OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "```" NIL)
)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Evolution backlog handle is invalid.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
;; --- Section 4: Phase Logic Dispatcher & Specific Phase Execution Procedures ---
;; This section defines the DispatchPhaseExecution procedure and the procedures for executing specific workflow phases.
(DEFINE_PROCEDURE DispatchPhaseExecution (phaseId)
;; Routes execution to the appropriate phase execution procedure based on the current phase ID.
(IF (EQ phaseId "PHASE_INIT") (CALL_PROCEDURE ExecutePhaseInit))
(IF (EQ phaseId "PHASE_IDEA_FORMULATION") (CALL_PROCEDURE ExecutePhaseIdeaFormulation))
(IF (EQ phaseId "PHASE_PRODUCT_DEFINITION") (CALL_PROCEDURE ExecutePhaseProductDefinition))
(IF (EQ phaseId "PHASE_PLANNING") (CALL_PROCEDURE ExecutePhasePlanning))
(IF (EQ phaseId "PHASE_TASK_EXECUTION") (CALL_PROCEDURE ExecutePhaseTaskExecution))
(IF (EQ phaseId "PHASE_FINAL_REVIEW") (CALL_PROCEDURE ExecutePhaseFinalReview))
(IF (EQ phaseId "PHASE_COMPLETION_SUMMARY") (CALL_PROCEDURE ExecutePhaseCompletionSummary))
(IF (NOT (IS_NIL phaseId))) ; Fallback if no specific phase handler matches
(SET_ERROR_STATE "SYSTEM_ERROR" (STRING_CONCAT "No handler for phase: " phaseId))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_INVALID_PHASE)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhaseInit ()
;; Executes the logic for the "Init" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 0: Project Initiation complete." NIL)
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; Nothing much to do here
)
(DEFINE_PROCEDURE ExecutePhaseIdeaFormulation ()
;; Executes the logic for the "Idea Formulation" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 1: Idea Formulation. Identifying core pattern ideas..." NIL)
(LET ((ideaArtifactHandle (CREATE_EMPTY_ARTIFACT "PatternIdeasDocument")))
(LET ((generationResult (SAFE_GENERATE_CONTENT
ideaArtifactHandle
"PROMPT_TEMPLATE_GENERATE_PATTERN_IDEAS" ; Template for idea generation
(MAP_CREATE ("project_title" (GET_STATE proj.title))) ; Context
"CONSTRAINT_SET_IDEA_GENERATION" ; Constraints for creativity, relevance
)))
(IF (EQ (GET_RESULT_STATUS generationResult) ALANG_STATUS_SUCCESS)
(SET_STATE proj.artifacts (MAP_CREATE (GET_STATE proj.artifacts) ("pattern_ideas" ideaArtifactHandle))) ; Store artifact handle
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to generate pattern ideas.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
)
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_CLARIFICATION_QUESTIONS" "Approve Pattern Ideas and proceed? (OK/REVISE)" NIL)
(SET_STATE session.pending_user_action "AWAIT_OK_REVISE_PATTERN_IDEAS")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhaseProductDefinition ()
;; Executes the logic for the "Product Definition" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 2: Product Definition. Defining product type and audience..." NIL)
(OUTPUT_TO_USER_BUFFER "AI_REQUEST_CLARIFICATION_QUESTIONS" "What type of product should we create (e.g., report, paper, presentation)? Who is the target audience?" NIL)
(SET_STATE session.pending_user_action "AWAIT_PRODUCT_TYPE_AND_AUDIENCE")
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhasePlanning ()
;; Executes the logic for the "Planning" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 3: Planning. Creating task list from outline..." NIL)
; (Placeholder for task list generation logic)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhaseTaskExecution ()
;; Executes the logic for the "Task Execution" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 4: Task Execution. Generating content for current task..." NIL)
; (Placeholder for task execution logic)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhaseFinalReview ()
;; Executes the logic for the "Final Review & Compilation" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 5: Final Review. Compiling full draft..." NIL)
; (Placeholder for final review logic)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE ExecutePhaseCompletionSummary ()
;; Executes the logic for the "Project Completion & Learning Summary" phase.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 6: Project Completion. Summarizing learnings..." NIL)
; (Placeholder for summary generation and logging)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
;; --- Section 5: QA Procedures ---
;; This section defines procedures for performing Quality Assurance (QA) on generated artifacts.
(DEFINE_PROCEDURE PerformProductQA (artifact_handle schema_id)
;; Performs a full QA cycle on the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Starting Product QA Cycle..." NIL)
(CALL_PROCEDURE QA_Stage_1_SelfCritique artifact_handle)
(CALL_PROCEDURE QA_Stage_2_DivergentExploration artifact_handle)
(CALL_PROCEDURE QA_Stage_3_RedTeaming artifact_handle)
(CALL_PROCEDURE QA_Stage_4_ExternalReview artifact_handle)
; (Placeholder for logic to aggregate QA results and determine overall status)
(SET_STATE proj.artifact_qa_status "QA_PASSED") ; Or "QA_FAILED"
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" (STRING_CONCAT "Product QA complete. Status: " (GET_STATE proj.artifact_qa_status)) NIL)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE QA_Stage_1_SelfCritique (artifact_handle)
;; Performs a self-critique of the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "QA Stage 1: Self-Critique..." NIL)
(LET ((critiqueResult (SAFE_GENERATE_CONTENT
(CREATE_EMPTY_ARTIFACT "qa_critique_self")
"PROMPT_TEMPLATE_QA_SELF_CRITIQUE"
(MAP_CREATE ("artifact_content_handle" artifact_handle))
"CONSTRAINT_SET_QA_CRITIQUE"
)))
(IF (EQ (GET_RESULT_STATUS critiqueResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Self-critique complete. Reviewing findings..." NIL)
(SEQ
(SET_ERROR_STATE "QA_ERROR" "Failed to generate self-critique.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE QA_Stage_2_DivergentExploration (artifact_handle)
;; Performs divergent exploration and falsification of the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "QA Stage 2: Divergent Exploration..." NIL)
(LET ((critiqueResult (SAFE_GENERATE_CONTENT
(CREATE_EMPTY_ARTIFACT "qa_critique_divergent")
"PROMPT_TEMPLATE_QA_DIVERGENT_EXPLORATION"
(MAP_CREATE ("artifact_content_handle" artifact_handle))
"CONSTRAINT_SET_QA_CRITIQUE"
)))
(IF (EQ (GET_RESULT_STATUS critiqueResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Divergent exploration complete. Reviewing findings..." NIL)
(SEQ
(SET_ERROR_STATE "QA_ERROR" "Failed to generate divergent exploration critique.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE QA_Stage_3_RedTeaming (artifact_handle)
;; Performs adversarial red teaming of the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "QA Stage 3: Red Teaming..." NIL)
(LET ((critiqueResult (SAFE_GENERATE_CONTENT
(CREATE_EMPTY_ARTIFACT "qa_critique_redteam")
"PROMPT_TEMPLATE_QA_RED_TEAMING"
(MAP_CREATE ("artifact_content_handle" artifact_handle))
"CONSTRAINT_SET_QA_CRITIQUE"
)))
(IF (EQ (GET_RESULT_STATUS critiqueResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Red Teaming complete. Reviewing findings..." NIL)
(SEQ
(SET_ERROR_STATE "QA_ERROR" "Failed to generate red teaming critique.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE QA_Stage_4_ExternalReview (artifact_handle)
;; Simulates external review of the given artifact from different analytical perspectives.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "QA Stage 4: External Review..." NIL)
(LET ((critiqueResult (SAFE_GENERATE_CONTENT
(CREATE_EMPTY_ARTIFACT "qa_critique_external")
"PROMPT_TEMPLATE_QA_EXTERNAL_REVIEW"
(MAP_CREATE ("artifact_content_handle" artifact_handle))
"CONSTRAINT_SET_QA_CRITIQUE"
)))
(IF (EQ (GET_RESULT_STATUS critiqueResult) ALANG_STATUS_SUCCESS)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "External Review complete. Reviewing findings..." NIL)
(SEQ
(SET_ERROR_STATE "QA_ERROR" "Failed to generate external review critique.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
;; --- Section 6: Backlog Feature Procedures ---
;; This section defines procedures for implementing features from the Autologos Evolution Backlog.
;; EB002: Persistent Knowledge Artifacts (PKA) - Procedures for managing PKAs.
(DEFINE_PROCEDURE CreateAndStorePKAIfUserConsents (raw_content_text schema_id purpose_description)
;; Creates a PKA draft, requests user consent, and stores the approved PKA.
(LET ((pkaDraftHandle (PKA_CREATE_DRAFT raw_content_text schema_id (MAP_CREATE ("purpose" purpose_description)))))
(IF (IS_HANDLE_VALID pkaDraftHandle)
(LET ((consentStatus (PKA_REQUEST_USER_CONSENT_TO_STORE pkaDraftHandle (GET_TEXT_FOR_PKA_CONSENT_PROMPT purpose_description))))
(IF (EQ consentStatus "USER_CONSENT_GRANTED")
(LET ((storeResult (PKA_STORE_APPROVED_DRAFT pkaDraftHandle "USER_EXPLICIT_CONSENT_TOKEN_PLACEHOLDER")))
(IF (EQ (GET_RESULT_STATUS storeResult) ALANG_STATUS_SUCCESS)
(SEQ
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Knowledge artifact stored successfully." NIL)
(SET_STATE proj.last_stored_pka_id (GET_RESULT_DATA storeResult)) ; If PKA_STORE returns the new ID
)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to store knowledge artifact after consent.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Knowledge artifact not stored (consent declined)." NIL)
)
(SEQ
(SET_ERROR_STATE "USER_ERROR" "Invalid response to PKA consent prompt.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
)
)
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to create PKA draft.")
)
(FLUSH_USER_OUTPUT_BUFFER)
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; Or a more specific failure code
)
)
;; EB001 & EB003: Pattern-Centric Processing & Meta-Cognitive QA - Placeholder for Pattern Identification
(DEFINE_PROCEDURE IdentifyPatternsInContext (data_handle context_hints_map)
;; Identifies patterns in the given data, using context hints to guide the analysis.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Identifying patterns in the provided data." NIL)
(LET ((patternsArtifactHandle (CREATE_EMPTY_ARTIFACT "IdentifiedPatterns")))
(LET ((generationResult (SAFE_GENERATE_CONTENT
patternsArtifactHandle
"PROMPT_TEMPLATE_IDENTIFY_PATTERNS"
(MAP_CREATE ("data_handle" data_handle) ("context_hints" context_hints_map))
"CONSTRAINT_SET_PATTERN_IDENTIFICATION"
)))
(IF (EQ (GET_RESULT_STATUS generationResult) ALANG_STATUS_SUCCESS)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" patternsArtifactHandle)))
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to identify patterns.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_GENERAL) ("data" NIL)))
)
)
)
)
)
;; EB004: Policy Definition for Historical/Pre-DOI References - Placeholder for Reference Validation
(DEFINE_PROCEDURE ValidateReference (reference_data)
;; Validates the given academic reference, applying a policy for handling pre-DOI references.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Validating reference." NIL)
(LET ((validationResult (INVOKE_TOOL_ASYNC_WITH_CALLBACKS
"reference_validator" ; Tool ID for reference validation
reference_data
(MAP_CREATE ("policy" "pre_doi_handling")) ; Parameters for the tool
"HandleReferenceValidationSuccess"
"HandleReferenceValidationError"
NIL ; No specific context needed for callback
)))
(IF (EQ (GET_RESULT_STATUS validationResult) ALANG_STATUS_SUCCESS)
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; Async call launched
(SEQ
(SET_ERROR_STATE "TOOL_ERROR" "Failed to invoke reference validation tool.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_TOOL_ERROR)
)
)
)
)
(DEFINE_PROCEDURE HandleReferenceValidationSuccess (job_id result_handle context)
;; Callback for successful reference validation.
(LET ((validationReport (READ_CONTENT result_handle "json_map" NIL)))
(IF (EQ (MAP_GET_VALUE validationReport "is_valid") TRUE)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Reference validated successfully." NIL)
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" (STRING_CONCAT "Reference validation failed: " (MAP_GET_VALUE validationReport "reason")) NIL)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(DEFINE_PROCEDURE HandleReferenceValidationError (job_id error_details context)
;; Callback for failed reference validation.
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "Reference validation tool error: " (MAP_GET_VALUE error_details "message")) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_TOOL_ERROR)
)
;; --- Section 7: Core Generative Logic ---
;; This section defines the SAFE_GENERATE_CONTENT procedure and its helper procedures.
(DEFINE_PROCEDURE SAFE_GENERATE_CONTENT (target_artifact_handle prompt_template_handle context_data_handle constraint_set_handle)
;; Generates content using the LLM, applying safety constraints.
;; This is a high-level procedure that orchestrates the content generation process.
; 1. Load and Prepare Inputs
(LET ((promptTemplate (READ_CONTENT prompt_template_handle "text" NIL)))
(LET ((contextData (READ_CONTENT context_data_handle "structured_map" NIL)))
(LET ((constraints (READ_CONTENT constraint_set_handle "structured_list_of_rules" NIL)))
; 2. Identify Relevant Patterns in Context Data (EB001)
(LET ((patternsResult (CALL_PROCEDURE IdentifyPatternsInContext contextData)))
(IF (EQ (GET_RESULT_STATUS patternsResult) ALANG_STATUS_SUCCESS)
(LET ((patternsHandle (GET_RESULT_DATA patternsResult)))
; 3. Assemble Final Prompt for LLM (with pattern information)
(LET ((enhancedPrompt (CALL_PROCEDURE EnhancePromptWithPatterns promptTemplate contextData patternsHandle constraints))))
; 4. Invoke Core LLM Generation (Orchestrator Primitive)
(LET ((llmResult (INVOKE_CORE_LLM_GENERATION enhancedPrompt (GET_LLM_PARAMS_FOR_TASK "content_generation"))))
(IF (EQ (GET_STATUS llmResult) ALANG_STATUS_SUCCESS)
(LET ((generatedText (GET_DATA llmResult)))
; 5. Apply Meta-Cognitive QA (EB003)
(LET ((qaReportResult (CALL_PROCEDURE PerformMetaCognitiveQA generatedText constraints))))
(IF (EQ (GET_RESULT_STATUS qaReportResult) ALANG_STATUS_SUCCESS)
(LET ((qaAssessment (GET_RESULT_DATA qaReportResult))))
; 6. If QA issues found, attempt self-correction or flag for user review
(IF (HAS_QA_ISSUES qaAssessment)
(CALL_PROCEDURE HandleQAIssues generatedText qaAssessment target_artifact_handle)
; ELSE, all good, write to artifact
(LET ((writeStatus (WRITE_CONTENT_TO_ARTIFACT target_artifact_handle generatedText "text/markdown")))
(IF (NEQ writeStatus ALANG_STATUS_SUCCESS)
(SEQ
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to write generated content to artifact.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
(SEQ ; ELSE QA Failed
(SET_ERROR_STATE "SYSTEM_ERROR" "Meta-cognitive QA failed.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_QA_ERROR)
)
)
)
(SEQ ; ELSE LLM Generation Failed
(SET_ERROR_STATE "LLM_ERROR" (GET_ERROR_MESSAGE llmResult))
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_LLM_ERROR)
)
)
)
)
(SEQ ; ELSE IdentifyPatternsInContext failed
(SET_ERROR_STATE "SYSTEM_ERROR" "Failed to identify patterns for content generation.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL)
)
)
))))
(RETURN_STATUS ALANG_STATUS_SUCCESS) ; Default success, actual status depends on internal logic
)
(DEFINE_PROCEDURE EnhancePromptWithPatterns (promptTemplate contextData patternsHandle constraints)
;; Enhances a prompt template with information about relevant patterns.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Enhancing prompt with pattern information." NIL)
(LET ((enhancedPromptResult (INVOKE_CORE_LLM_GENERATION
(MAP_CREATE ("template" promptTemplate) ("context" contextData) ("patterns" patternsHandle) ("constraints" constraints))
(GET_LLM_PARAMS_FOR_TASK "prompt_enhancement")
)))
(IF (EQ (GET_RESULT_STATUS enhancedPromptResult) ALANG_STATUS_SUCCESS)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_RESULT_DATA enhancedPromptResult))))
(SEQ
(SET_ERROR_STATE "LLM_ERROR" "Failed to enhance prompt with patterns.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" promptTemplate))) ; Return original prompt on failure
)
)
)
)
(DEFINE_PROCEDURE PerformMetaCognitiveQA (artifact_handle constraints)
;; Performs meta-cognitive quality assurance on the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Performing meta-cognitive QA." NIL)
(LET ((qaAssessmentResult (INVOKE_CORE_LLM_GENERATION
(MAP_CREATE ("artifact_content_handle" artifact_handle) ("constraints" constraints))
(GET_LLM_PARAMS_FOR_TASK "meta_cognitive_qa")
)))
(IF (EQ (GET_RESULT_STATUS qaAssessmentResult) ALANG_STATUS_SUCCESS)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_RESULT_DATA qaAssessmentResult))))
(SEQ
(SET_ERROR_STATE "LLM_ERROR" "Failed to perform meta-cognitive QA.")
(OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL)
(RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" (MAP_CREATE ("has_issues" TRUE))))) ; Assume issues on QA failure
)
)
)
)
(DEFINE_PROCEDURE HandleQAIssues (artifact_handle qaAssessment target_artifact_handle)
;; Handles QA issues identified in the given artifact.
(OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Handling QA issues." NIL)
; (Placeholder for actual QA handling logic - self-correction, user review, etc.)
(RETURN_STATUS ALANG_STATUS_SUCCESS)
)
;; --- End of Autologos_Core_Logic.alang ---