mirror of
https://github.com/SHOGGOTH-SECTOR/sica-fondt.git
synced 2026-07-31 16:16:26 +00:00
Delete mafiabot.adb
This commit is contained in:
parent
03360c761a
commit
614e6d66d3
@ -1,131 +0,0 @@
|
|||||||
-- NullClaw / AI Mafia Bot Gen.03 — MCP stdio server entry point.
|
|
||||||
--
|
|
||||||
-- Speaks JSON-RPC over stdin/stdout so the Hermes Agent harness can mount it
|
|
||||||
-- as an `mcp_servers` entry. On start it fixes the global Big-3 identity and
|
|
||||||
-- writes ~/.hermes/SOUL.md, then serves: initialize, tools/list, tools/call.
|
|
||||||
-- Each tools/call runs the 23-step organ-systems inference cycle, scoped to a
|
|
||||||
-- session keyed by (uid, channel, server) drawn from the call arguments.
|
|
||||||
--
|
|
||||||
-- SPARK_Mode Off: the driver performs I/O and orchestration only — it calls
|
|
||||||
-- into the SPARK-proven organs (Ada_Medium, Soul.State, Trust_Boundary) and
|
|
||||||
-- the SPARK_Mode-Off protocol bridge. No proof obligations live here.
|
|
||||||
pragma SPARK_Mode (Off);
|
|
||||||
with Mafiabot_Types; use Mafiabot_Types;
|
|
||||||
with Soul.Tarot;
|
|
||||||
with Soul.State;
|
|
||||||
with Ada_Medium;
|
|
||||||
with Hermes_Protocol;
|
|
||||||
|
|
||||||
procedure Mafiabot is
|
|
||||||
|
|
||||||
-- Default identity anchors (three distinct Majors). A config-driven Big-3
|
|
||||||
-- is a follow-up item; these give a stable, valid starting identity.
|
|
||||||
Default_Big_Three : constant Soul.Tarot.Big_Three :=
|
|
||||||
(Sun => (Kind => Soul.Tarot.Major, Major_Value => Soul.Tarot.The_Sun),
|
|
||||||
Moon => (Kind => Soul.Tarot.Major, Major_Value => Soul.Tarot.The_Moon),
|
|
||||||
Ascendant => (Kind => Soul.Tarot.Major,
|
|
||||||
Major_Value => Soul.Tarot.SD_Singularity));
|
|
||||||
|
|
||||||
procedure Compare (A : Bounded_Text; B : String; Equal : out Boolean) is
|
|
||||||
begin
|
|
||||||
Equal := A.Length = B'Length
|
|
||||||
and then A.Data (1 .. A.Length) = B;
|
|
||||||
end Compare;
|
|
||||||
|
|
||||||
Status : Operation_Status;
|
|
||||||
Soul_Buf : Bounded_Text;
|
|
||||||
|
|
||||||
begin
|
|
||||||
-- --- Organ init: fix identity, publish SOUL.md ---------------------
|
|
||||||
Soul.State.Soul_State.Initialize_Big_Three (Default_Big_Three, Status);
|
|
||||||
if Status /= OK then
|
|
||||||
return; -- cannot run without a valid identity
|
|
||||||
end if;
|
|
||||||
|
|
||||||
Soul.State.Soul_State.Generate_Soul_MD (Soul_Buf, Status);
|
|
||||||
if Status = OK then
|
|
||||||
Hermes_Protocol.Write_Soul_MD (Soul_Buf, Status);
|
|
||||||
-- A failed SOUL.md write is non-fatal: Hermes can still call tools.
|
|
||||||
end if;
|
|
||||||
|
|
||||||
-- --- MCP serve loop ------------------------------------------------
|
|
||||||
loop
|
|
||||||
declare
|
|
||||||
In_Buf : Hermes_Protocol.JSON_Buffer;
|
|
||||||
Out_Buf : Hermes_Protocol.JSON_Buffer;
|
|
||||||
Read_St : Operation_Status;
|
|
||||||
Id : Bounded_Text;
|
|
||||||
Method : Bounded_Text;
|
|
||||||
Is_Init : Boolean;
|
|
||||||
Is_List : Boolean;
|
|
||||||
Is_Call : Boolean;
|
|
||||||
Is_Notif : Boolean;
|
|
||||||
begin
|
|
||||||
Hermes_Protocol.Read_Message (In_Buf, Read_St);
|
|
||||||
exit when Read_St /= OK; -- stdin closed -> shut down
|
|
||||||
|
|
||||||
if In_Buf.Length > 0 then -- skip blank lines
|
|
||||||
Hermes_Protocol.Extract_Raw_Field (In_Buf, "id", Id);
|
|
||||||
Hermes_Protocol.Extract_Field (In_Buf, "method", Method);
|
|
||||||
|
|
||||||
Compare (Method, "initialize", Is_Init);
|
|
||||||
Compare (Method, "tools/list", Is_List);
|
|
||||||
Compare (Method, "tools/call", Is_Call);
|
|
||||||
Compare (Method, "notifications/initialized", Is_Notif);
|
|
||||||
|
|
||||||
if Is_Init then
|
|
||||||
Hermes_Protocol.Make_Init_Response (Id, Out_Buf);
|
|
||||||
Hermes_Protocol.Write_Message (Out_Buf);
|
|
||||||
|
|
||||||
elsif Is_List then
|
|
||||||
Hermes_Protocol.Make_Tools_List_Response (Id, Out_Buf);
|
|
||||||
Hermes_Protocol.Write_Message (Out_Buf);
|
|
||||||
|
|
||||||
elsif Is_Call then
|
|
||||||
declare
|
|
||||||
Input_Txt : Bounded_Text;
|
|
||||||
Uid_Txt : Bounded_Text;
|
|
||||||
Chan_Txt : Bounded_Text;
|
|
||||||
Srv_Txt : Bounded_Text;
|
|
||||||
Key : Bounded_Text;
|
|
||||||
Result : Bounded_Text;
|
|
||||||
Cyc_St : Operation_Status;
|
|
||||||
begin
|
|
||||||
Hermes_Protocol.Extract_Field (In_Buf, "input", Input_Txt);
|
|
||||||
Hermes_Protocol.Extract_Field (In_Buf, "uid", Uid_Txt);
|
|
||||||
Hermes_Protocol.Extract_Field (In_Buf, "channel", Chan_Txt);
|
|
||||||
Hermes_Protocol.Extract_Field (In_Buf, "server", Srv_Txt);
|
|
||||||
|
|
||||||
if Input_Txt.Length = 0 then
|
|
||||||
Hermes_Protocol.Make_Error_Response
|
|
||||||
(Id, -32602, "missing 'input' argument", Out_Buf);
|
|
||||||
else
|
|
||||||
Key := Soul.State.Make_Session_Key
|
|
||||||
(To_String (Uid_Txt),
|
|
||||||
To_String (Chan_Txt),
|
|
||||||
To_String (Srv_Txt));
|
|
||||||
Ada_Medium.Run_Inference_Cycle
|
|
||||||
(Key, Input_Txt, Result, Cyc_St);
|
|
||||||
if Cyc_St = OK then
|
|
||||||
Hermes_Protocol.Make_Tool_Result_Response
|
|
||||||
(Id, Result, Out_Buf);
|
|
||||||
else
|
|
||||||
Hermes_Protocol.Make_Error_Response
|
|
||||||
(Id, -32000, "inference cycle failed", Out_Buf);
|
|
||||||
end if;
|
|
||||||
end if;
|
|
||||||
Hermes_Protocol.Write_Message (Out_Buf);
|
|
||||||
end;
|
|
||||||
|
|
||||||
elsif Is_Notif then
|
|
||||||
null; -- notifications take no response
|
|
||||||
|
|
||||||
else
|
|
||||||
Hermes_Protocol.Make_Error_Response
|
|
||||||
(Id, -32601, "method not found", Out_Buf);
|
|
||||||
Hermes_Protocol.Write_Message (Out_Buf);
|
|
||||||
end if;
|
|
||||||
end if;
|
|
||||||
end;
|
|
||||||
end loop;
|
|
||||||
end Mafiabot;
|
|
||||||
Loading…
x
Reference in New Issue
Block a user