--- 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. ;; --- General Utilities --- (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 (SET_ERROR_STATE "USER_ERROR" (STRING_CONCAT "No help found for command: " commandName)) (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_NOT_FOUND) ) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" helpContent NIL) ) ) (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) (SET_STATE session.last_user_response NIL) (SET_STATE session.last_user_feedback NIL) (SET_STATE session.last_user_input_data NIL) (RETURN_STATUS ALANG_STATUS_SUCCESS) ) (DEFINE_PROCEDURE ParseKeyValueArgs (argsList) ;; Parses a list of "KEY=VALUE" strings into a map. (LET ((resultMap (MAP_CREATE))) (LOOP_FOR_EACH argString argsList (LET ((parts (STRING_SPLIT argString "="))) (IF (EQ (LIST_GET_LENGTH parts) 2) (SET_STATE resultMap (MAP_SET_VALUE resultMap (LIST_GET_ITEM parts 0) (LIST_GET_ITEM parts 1))) (LOG_EVENT "WARNING" (STRING_CONCAT "Skipping malformed key-value arg: " argString)) ) ) ) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" resultMap))) ) ) (DEFINE_PROCEDURE SummarizeArtifact (artifactHandle) ;; Summarizes the content of a given artifact using LLM. (LET ((artifactContentResult (READ_CONTENT artifactHandle "text_summary_or_full" NIL))) (IF (EQ (GET_STATUS artifactContentResult) ALANG_STATUS_SUCCESS) (LET ((artifactContent (GET_DATA artifactContentResult))) (IF (IS_NIL artifactContent) (SEQ (SET_ERROR_STATE "DATA_ERROR" "Artifact content is empty or unreadable for summarization.") (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_GENERAL) ("data" NIL))) ) ) ) ) ) (LET ((summaryResult (INVOKE_CORE_LLM_GENERATION (MAP_CREATE ("template" "PROMPT_TEMPLATE_SUMMARIZE_ARTIFACT") ("content" artifactContent)) (GET_LLM_PARAMS_FOR_TASK "summarization") ))) (IF (EQ (GET_STATUS summaryResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA summaryResult)))) (SEQ (SET_ERROR_STATE "LLM_ERROR" (STRING_CONCAT "LLM failed to summarize: " (GET_ERROR_MESSAGE summaryResult))) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" NIL))) ) ) ) ) (DEFINE_PROCEDURE PerformQuery (queryType queryValue) ;; Performs a query based on type (CONCEPT/DOCUMENT/RELATION) using LLM and PKA. (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" (STRING_CONCAT "Performing query for " queryType ": " queryValue) NIL) (LET ((queryResult (INVOKE_CORE_LLM_GENERATION (MAP_CREATE ("template" "PROMPT_TEMPLATE_PERFORM_QUERY") ("query_type" queryType) ("query_value" queryValue) ("pka_handle" (GET_STATE sys.knowledge_base_handle))) (GET_LLM_PARAMS_FOR_TASK "query_answering") ))) (IF (EQ (GET_STATUS queryResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA queryResult)))) (SEQ (SET_ERROR_STATE "LLM_ERROR" (STRING_CONCAT "LLM failed to answer query: " (GET_ERROR_MESSAGE queryResult))) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" NIL))) ) ) ) ) (DEFINE_PROCEDURE GetEvolutionBacklogContent () ;; Retrieves the content of the evolution backlog. (LET ((backlogHandle (GET_STATE sys.evolution_backlog_handle))) (IF (IS_NIL backlogHandle) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Evolution backlog handle is not set.") (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_GENERAL) ("data" NIL))) ) ) (LET ((contentResult (READ_CONTENT backlogHandle "text_summary_or_full" NIL))) (IF (EQ (GET_STATUS contentResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA contentResult)))) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to read evolution backlog content.") (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_GENERAL) ("data" NIL))) ) ) ) ) ) (DEFINE_PROCEDURE LoadEvolutionBacklog (handle_or_path) ;; Orchestrator: Loads the evolution backlog from its handle/path into memory/state. (LOG_EVENT "SYSTEM_LOAD" (STRING_CONCAT "Loading Evolution Backlog from: " handle_or_path)) ; In a real orchestrator, this would load the JSON file into a structured object. ; For now, assume it's loaded and accessible via sys.evolution_backlog_handle. (RETURN_STATUS ALANG_STATUS_SUCCESS) ) (DEFINE_PROCEDURE LoadPersistentKnowledgeBase (handle_or_path) ;; Orchestrator: Loads the persistent knowledge base from its handle/path into memory/state. (LOG_EVENT "SYSTEM_LOAD" (STRING_CONCAT "Loading Persistent Knowledge Base from: " handle_or_path)) ; Similar to backlog, assume loaded. (RETURN_STATUS ALANG_STATUS_SUCCESS) ) ;; --- Error Handling Utilities --- (DEFINE_PROCEDURE OutputErrorToUser (errorMessage) ;; Outputs an error message to the user. (OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "ERROR: " errorMessage) NIL) (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 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: StructuredResultObject ({status: ALANG_STATUS_SUCCESS, data: content}) 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 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 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 MAP_SET_VALUE (map key value) ; Sets a value in a map by key. ; Returns: Map (new map with updated value) ) (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 LIST_GET_LENGTH (list) ; Returns the length of a list. ; Returns: Number ) (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 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 HAS_QA_ISSUES (qa_assessment_map) ; Checks if a QA assessment map indicates issues. ; Returns: Boolean ) (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 STRING_SPLIT (str delimiter) ; Splits a string by a delimiter into a list of strings. ; Returns: List ) (DEFINE_PRIMITIVE GT (num1 num2) ; Checks if num1 is greater than num2. ; Returns: Boolean ) (DEFINE_PRIMITIVE LT (num1 num2) ; Checks if num1 is less than num2. ; Returns: Boolean ) (DEFINE_PRIMITIVE GTE (num1 num2) ; Checks if num1 is greater than or equal to num2. ; Returns: Boolean ) (DEFINE_PRIMITIVE EQ (val1 val2) ; Checks if two values are equal. ; Returns: Boolean ) (DEFINE_PRIMITIVE NEQ (val1 val2) ; Checks if two values are not equal. ; Returns: Boolean ) ;; --- 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 (GET_STATE sys.evolution_backlog_handle)) ; Load backlog from file/DB (CALL_PROCEDURE LoadPersistentKnowledgeBase (GET_STATE sys.knowledge_base_handle)) ; Load PKA from store (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Autologos System Initialized. ALang v1.0." NIL) (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_STATUS parsedCmdResult) ALANG_STATUS_SUCCESS) (LET ((cmdDetails (GET_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 ) ;; --- Tool Callback Handlers --- (DEFINE_PROCEDURE HandleBrowseResult (job_id result_handle context) ;; Callback for successful browse tool execution. (LET ((browseContentResult (READ_CONTENT result_handle "text_summary_or_full" NIL))) (IF (EQ (GET_STATUS browseContentResult) ALANG_STATUS_SUCCESS) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" "Browsed Content:" NIL) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_DATA browseContentResult) NIL) (SEQ (SET_ERROR_STATE "TOOL_ERROR" "Failed to read browsed content.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) ) ) ) (RETURN_STATUS ALANG_STATUS_SUCCESS) ) (DEFINE_PROCEDURE HandleBrowseError (job_id error_details context) ;; Callback for failed browse tool execution. (OUTPUT_TO_USER_BUFFER "AI_ERROR" (STRING_CONCAT "Browse tool error: " (MAP_GET_VALUE error_details "message")) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_TOOL_ERROR) ) (DEFINE_PROCEDURE HandleReferenceValidationSuccess (job_id result_handle context) ;; Callback for successful reference validation. (LET ((validationReportResult (READ_CONTENT result_handle "json_map" NIL))) (IF (EQ (GET_STATUS validationReportResult) ALANG_STATUS_SUCCESS) (LET ((validationReport (GET_DATA validationReportResult))) (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) ) ) (SEQ (SET_ERROR_STATE "TOOL_ERROR" "Failed to read reference validation report.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) 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 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 ())) (IF (EQ commandName "NO") (CALL_PROCEDURE HandleNoCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "INPUT") (CALL_PROCEDURE HandleInputCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "END") (CALL_PROCEDURE HandleEndCommand ())) (IF (EQ commandName "LOOP_PROJECT_RESTART") (CALL_PROCEDURE HandleLoopProjectRestartCommand ())) (IF (EQ commandName "SET_SESSION_PREFERENCE") (CALL_PROCEDURE HandleSetSessionPreferenceCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "STOP_LOOP") (CALL_PROCEDURE HandleStopLoopCommand ())) (IF (EQ commandName "OUTPUT") (CALL_PROCEDURE HandleOutputCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "SUMMARIZE") (CALL_PROCEDURE HandleSummarizeCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "QUERY") (CALL_PROCEDURE HandleQueryCommand (GET_STATE session.parsed_command_details.args))) (IF (EQ commandName "OUTPUT_BACKLOG") (CALL_PROCEDURE HandleOutputBacklogCommand (GET_STATE session.parsed_command_details.args))) (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 ((tempAlangContentResult (READ_CONTENT generatedAlangCodeHandle "text" NIL))) ; Read the generated ALang (IF (EQ (GET_STATUS tempAlangContentResult) ALANG_STATUS_SUCCESS) (LET ((tempAlangContent (GET_DATA tempAlangContentResult))) ; 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) )) (SEQ ; ELSE Failed to read generated ALang content (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to read generated ALang content from handle.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) ; 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 "HandleBrowseResult" "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 ((prefMapResult (CALL_PROCEDURE ParseKeyValueArgs argsList))) ; Use ParseKeyValueArgs (IF (EQ (GET_STATUS prefMapResult) ALANG_STATUS_SUCCESS) (LET ((prefMap (GET_DATA prefMapResult))) (SET_STATE session.output_preferences prefMap) (OUTPUT_TO_USER_BUFFER "AI_ACKNOWLEDGE_INTENT" "Session preference logged." NIL) (RETURN_STATUS ALANG_STATUS_SUCCESS) ) (SEQ (SET_ERROR_STATE "USER_ERROR" "Failed to parse session preferences.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) ) (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 ((contentResult (READ_CONTENT artifactHandle "text_summary_or_full" NIL))) ; Read full content (IF (EQ (GET_STATUS contentResult) ALANG_STATUS_SUCCESS) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_DATA contentResult) NIL) (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) ) ) ) ) ) (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_STATUS summaryResult) ALANG_STATUS_SUCCESS) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_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_STATUS queryResult) ALANG_STATUS_SUCCESS) (OUTPUT_TO_USER_BUFFER "AI_PROVIDE_DATA" (GET_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 ((backlogContentResult (CALL_PROCEDURE GetEvolutionBacklogContent))) ; New procedure (IF (EQ (GET_STATUS backlogContentResult) ALANG_STATUS_SUCCESS) (LET ((content (GET_DATA backlogContentResult))) (IF (IS_NIL content) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Evolution backlog content is empty.") (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" "Failed to retrieve evolution backlog content.") (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_STATUS generationResult) ALANG_STATUS_SUCCESS) (SET_STATE proj.artifacts (MAP_SET_VALUE (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) (LET ((productDefinitionArtifactHandle (CREATE_EMPTY_ARTIFACT "ProductDefinitionDocument"))) (LET ((generationResult (SAFE_GENERATE_CONTENT productDefinitionArtifactHandle "PROMPT_TEMPLATE_PRODUCT_DEFINITION" (MAP_CREATE ("project_title" (GET_STATE proj.title)) ("pattern_ideas_handle" (MAP_GET_VALUE (GET_STATE proj.artifacts) "pattern_ideas"))) "CONSTRAINT_SET_PRODUCT_DEFINITION" ))) (IF (EQ (GET_STATUS generationResult) ALANG_STATUS_SUCCESS) (SET_STATE proj.artifacts (MAP_SET_VALUE (GET_STATE proj.artifacts) "product_definition" productDefinitionArtifactHandle)) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to generate product definition.") (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 Product Definition and proceed? (OK/REVISE)" NIL) (SET_STATE session.pending_user_action "AWAIT_OK_REVISE_PRODUCT_DEFINITION") (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) (LET ((taskListArtifactHandle (CREATE_EMPTY_ARTIFACT "TaskListDocument"))) (LET ((generationResult (SAFE_GENERATE_CONTENT taskListArtifactHandle "PROMPT_TEMPLATE_GENERATE_TASK_LIST" (MAP_CREATE ("project_title" (GET_STATE proj.title)) ("product_definition_handle" (MAP_GET_VALUE (GET_STATE proj.artifacts) "product_definition"))) "CONSTRAINT_SET_PLANNING" ))) (IF (EQ (GET_STATUS generationResult) ALANG_STATUS_SUCCESS) (SET_STATE proj.artifacts (MAP_SET_VALUE (GET_STATE proj.artifacts) "task_list" taskListArtifactHandle)) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to generate task list.") (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 Task List and proceed? (OK/REVISE)" NIL) (SET_STATE session.pending_user_action "AWAIT_OK_REVISE_TASK_LIST") (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) ; This phase would typically involve a loop over tasks defined in proj.artifacts.task_list (LET ((taskListHandle (MAP_GET_VALUE (GET_STATE proj.artifacts) "task_list" NIL))) (IF (IS_NIL taskListHandle) (SEQ (SET_ERROR_STATE "DATA_ERROR" "Task list not found for execution.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) (LET ((taskListContentResult (READ_CONTENT taskListHandle "json_map_list" NIL))) ; Assuming task list is a structured list (IF (EQ (GET_STATUS taskListContentResult) ALANG_STATUS_SUCCESS) (LET ((taskList (GET_DATA taskListContentResult))) (LOOP_FOR_EACH taskItem taskList (LET ((taskId (MAP_GET_VALUE taskItem "id"))) (LET ((taskDescription (MAP_GET_VALUE taskItem "description"))) (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" (STRING_CONCAT "Executing task: " taskId " - " taskDescription) NIL) (LET ((taskArtifactHandle (CREATE_EMPTY_ARTIFACT (STRING_CONCAT "Task_" taskId "_Output")))) (LET ((generationResult (SAFE_GENERATE_CONTENT taskArtifactHandle "PROMPT_TEMPLATE_EXECUTE_TASK" (MAP_CREATE ("task_id" taskId) ("task_description" taskDescription) ("project_context" (GET_STATE proj.artifacts))) "CONSTRAINT_SET_TASK_EXECUTION" ))) (IF (EQ (GET_STATUS generationResult) ALANG_STATUS_SUCCESS) (LOG_EVENT "TASK_COMPLETED" (STRING_CONCAT "Task " taskId " completed.")) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" (STRING_CONCAT "Failed to execute task: " taskId)) (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (LOG_EVENT "TASK_FAILED" (STRING_CONCAT "Task " taskId " failed.")) ) ) ) ) ) ) ) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to read task list content.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) ) (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Phase 4: Task Execution complete." NIL) (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) (LET ((compiledDraftHandle (CREATE_EMPTY_ARTIFACT "CompiledProjectDraft"))) (LET ((generationResult (SAFE_GENERATE_CONTENT compiledDraftHandle "PROMPT_TEMPLATE_COMPILE_DRAFT" (MAP_CREATE ("project_artifacts" (GET_STATE proj.artifacts))) "CONSTRAINT_SET_FINAL_REVIEW" ))) (IF (EQ (GET_STATUS generationResult) ALANG_STATUS_SUCCESS) (SET_STATE proj.artifacts (MAP_SET_VALUE (GET_STATE proj.artifacts) "final_draft" compiledDraftHandle)) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to compile final draft.") (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 Final Draft and proceed to completion? (OK/REVISE)" NIL) (SET_STATE session.pending_user_action "AWAIT_OK_REVISE_FINAL_DRAFT") (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) (LET ((summaryArtifactHandle (CREATE_EMPTY_ARTIFACT "ProjectSummary"))) (LET ((generationResult (SAFE_GENERATE_CONTENT summaryArtifactHandle "PROMPT_TEMPLATE_PROJECT_SUMMARY" (MAP_CREATE ("project_id" (GET_STATE proj.id)) ("project_artifacts" (GET_STATE proj.artifacts)) ("tau_project_log" (GET_STATE proj.tau_project_log))) "CONSTRAINT_SET_SUMMARY" ))) (IF (EQ (GET_STATUS generationResult) ALANG_STATUS_SUCCESS) (SET_STATE proj.artifacts (MAP_SET_VALUE (GET_STATE proj.artifacts) "project_summary" summaryArtifactHandle)) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to generate project summary.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) ) (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Project completion summary generated. All deliverables provided for archival." NIL) (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_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_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_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_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_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_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_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_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 ProcessAndStoreEvolveSuggestion (suggestionText source_enum) ;; Processes and stores an EVOLVE suggestion in the backlog. (LET ((newItemId (GENERATE_UNIQUE_ID "EB"))) (LET ((timestampOrStatus (GET_ORCHESTRATOR_TIMESTAMP))) (LET ((timestamp (IF (OR (IS_NIL timestampOrStatus) (IS_STATUS_FAILURE timestampOrStatus)) "TIMESTAMP_UNAVAILABLE_IN_LOG" timestampOrStatus))) (LET ((existingItem (FIND_SIMILAR_BACKLOG_ITEM suggestionText))) (IF (NOT (IS_NIL existingItem)) (SEQ ; Update existing item: increment reinforcement count, add new suggestion text as comment/variant (LET ((updateStatus (UPDATE_EVOLUTION_BACKLOG_ITEM (MAP_GET_VALUE existingItem "id") NIL ; title - no change NIL ; description - no change NIL ; source - no change NIL ; status - no change (STRING_CONCAT "Reinforced by: " suggestionText " at " timestamp) ; new_comment TRUE ; increment_reinforcement_flag ))) (IF (EQ updateStatus ALANG_STATUS_SUCCESS) (SET_STATE newItemId (MAP_GET_VALUE existingItem "id")) ; Use existing ID (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "This suggestion reinforces an existing backlog item." NIL) ) ) ) (SEQ ; ELSE: This is a new item (LET ((creationStatus (CREATE_EVOLUTION_BACKLOG_ITEM newItemId (CALL_PROCEDURE GenerateTitleFromText suggestionText) ; New utility: LLM generates a short title suggestionText source_enum "PENDING_REVIEW" ; initial status timestamp ))) (IF (NEQ creationStatus ALANG_STATUS_SUCCESS) (SEQ (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to create new evolution backlog item.") (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) ) ) (RETURN_STATUS newItemId) ; Return the ID of the new or updated item, or failure status ) ) ) ) ) (DEFINE_PROCEDURE GenerateTitleFromText (text) ;; Generates a short title from a given text using LLM. (LET ((titleResult (INVOKE_CORE_LLM_GENERATION (MAP_CREATE ("template" "PROMPT_TEMPLATE_GENERATE_TITLE") ("content" text)) (GET_LLM_PARAMS_FOR_TASK "title_generation") ))) (IF (EQ (GET_STATUS titleResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA titleResult)))) (SEQ (SET_ERROR_STATE "LLM_ERROR" (STRING_CONCAT "LLM failed to generate title: " (GET_ERROR_MESSAGE titleResult))) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" "Untitled Suggestion"))) ; Fallback title ) ) ) ) ;; --- Section 7: Core Generative Logic --- ;; This section defines the SAFE_GENERATE_CONTENT procedure and its helper procedures. (DEFINE_PROCEDURE ParseUserCommand (raw_text) ;; Parses raw user input into a structured command object using LLM. (OUTPUT_TO_USER_BUFFER "AI_THOUGHTS" "Parsing user command..." NIL) (LET ((parsedCmdResult (INVOKE_CORE_LLM_GENERATION (MAP_CREATE ("template" "PROMPT_TEMPLATE_PARSE_COMMAND") ("raw_text" raw_text)) (GET_LLM_PARAMS_FOR_TASK "command_parsing") ))) (IF (EQ (GET_STATUS parsedCmdResult) ALANG_STATUS_SUCCESS) (LET ((parsedData (GET_DATA parsedCmdResult))) ; Validate the structure of the parsed command (e.g., has "command" and "args" fields) (IF (AND (NOT (IS_NIL (MAP_GET_VALUE parsedData "command"))) (NOT (IS_NIL (MAP_GET_VALUE parsedData "args")))) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" parsedData))) (SEQ (SET_ERROR_STATE "LLM_ERROR" "LLM returned malformed command structure.") (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" NIL))) ) ) ) (SEQ (SET_ERROR_STATE "LLM_ERROR" (STRING_CONCAT "LLM failed to parse command: " (GET_ERROR_MESSAGE parsedCmdResult))) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_FAILURE_LLM_ERROR) ("data" NIL))) ) ) ) ) (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 ((promptTemplateResult (READ_CONTENT prompt_template_handle "text" NIL))) (LET ((contextDataResult (READ_CONTENT context_data_handle "structured_map" NIL))) (LET ((constraintsResult (READ_CONTENT constraint_set_handle "structured_list_of_rules" NIL))) (IF (AND (EQ (GET_STATUS promptTemplateResult) ALANG_STATUS_SUCCESS) (EQ (GET_STATUS contextDataResult) ALANG_STATUS_SUCCESS) (EQ (GET_STATUS constraintsResult) ALANG_STATUS_SUCCESS)) (LET ((promptTemplate (GET_DATA promptTemplateResult))) (LET ((contextData (GET_DATA contextDataResult))) (LET ((constraints (GET_DATA constraintsResult))) ; 2. Identify Relevant Patterns in Context Data (EB001) (LET ((patternsResult (CALL_PROCEDURE IdentifyPatternsInContext contextData))) (IF (EQ (GET_STATUS patternsResult) ALANG_STATUS_SUCCESS) (LET ((patternsHandle (GET_DATA patternsResult))) ; 3. Assemble Final Prompt for LLM (with pattern information) (LET ((enhancedPromptResult (CALL_PROCEDURE EnhancePromptWithPatterns promptTemplate contextData patternsHandle constraints)))) (IF (EQ (GET_STATUS enhancedPromptResult) ALANG_STATUS_SUCCESS) (LET ((enhancedPrompt (GET_DATA enhancedPromptResult))) ; 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_STATUS qaReportResult) ALANG_STATUS_SUCCESS) (LET ((qaAssessment (GET_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 EnhancePromptWithPatterns failed (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to enhance prompt with patterns.") (OUTPUT_TO_USER_BUFFER "AI_ERROR" (GET_STATE sys.error_message) NIL) (RETURN_STATUS ALANG_STATUS_FAILURE_GENERAL) ) ) ) (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) ) ) )) (SEQ ; ELSE Failed to load prompt, context, or constraints (SET_ERROR_STATE "SYSTEM_ERROR" "Failed to load prompt template, context data, or constraints for SAFE_GENERATE_CONTENT.") (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_STATUS enhancedPromptResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA enhancedPromptResult)))) (SEQ (SET_ERROR_STATE "LLM_ERROR" "LLM 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_STATUS qaAssessmentResult) ALANG_STATUS_SUCCESS) (RETURN_STATUS (MAP_CREATE ("status" ALANG_STATUS_SUCCESS) ("data" (GET_DATA qaAssessmentResult)))) (SEQ (SET_ERROR_STATE "LLM_ERROR" "LLM 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) ; This procedure would contain logic for: ; 1. Analyzing qaAssessment to understand specific issues. ; 2. Deciding on a remediation strategy (e.g., self-correction, requesting user input, adding disclaimers). ; 3. Potentially calling SAFE_GENERATE_CONTENT again for self-correction. (RETURN_STATUS ALANG_STATUS_SUCCESS) ) --- END OF FILE Autologos_Core_Logic_v1.0.alang ---