mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-05-28 17:16:29 +03:00
152 lines
6.0 KiB
Python
152 lines
6.0 KiB
Python
import sys
|
|
import json
|
|
import time
|
|
|
|
def send_notification(method, params):
|
|
msg = {"jsonrpc": "2.0", "method": method, "params": params}
|
|
sys.stdout.write(json.dumps(msg) + "\n")
|
|
sys.stdout.flush()
|
|
|
|
def send_request(msg_id, method, params):
|
|
msg = {"jsonrpc": "2.0", "id": msg_id, "method": method, "params": params}
|
|
sys.stdout.write(json.dumps(msg) + "\n")
|
|
sys.stdout.flush()
|
|
|
|
def main():
|
|
last_req_id = 1000
|
|
|
|
for line in sys.stdin:
|
|
try:
|
|
req = json.loads(line)
|
|
method = req.get("method")
|
|
msg_id = req.get("id")
|
|
|
|
if not method and "result" in req:
|
|
# This is a response to one of our requests (like terminal/create)
|
|
result = req.get("result")
|
|
if "terminalId" in result:
|
|
term_id = result["terminalId"]
|
|
# Now link this terminal to our tool call
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "tool_call_update",
|
|
"toolCallId": "build-1",
|
|
"status": "running",
|
|
"terminalId": term_id
|
|
}
|
|
})
|
|
# Wait 2 seconds then complete it
|
|
time.sleep(2)
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "tool_call_update",
|
|
"toolCallId": "build-1",
|
|
"status": "completed",
|
|
"rawOutput": "Build successful: 0 errors, 0 warnings"
|
|
}
|
|
})
|
|
# Final message
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "agent_message_chunk",
|
|
"content": {"text": "\n\nAll tasks finished successfully!"}
|
|
}
|
|
})
|
|
continue
|
|
|
|
if method == "initialize":
|
|
sys.stdout.write(json.dumps({"jsonrpc": "2.0", "id": msg_id, "result": {
|
|
"protocolVersion": 1,
|
|
"agentCapabilities": {"loadSession": True}
|
|
}}) + "\n")
|
|
sys.stdout.flush()
|
|
|
|
elif method == "session/new":
|
|
sys.stdout.write(json.dumps({"jsonrpc": "2.0", "id": msg_id, "result": {
|
|
"sessionId": "test-session", "configOptions": []
|
|
}}) + "\n")
|
|
sys.stdout.flush()
|
|
|
|
# Send available commands
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "available_commands_update",
|
|
"availableCommands": [
|
|
{"name": "search", "description": "Search in codebase"},
|
|
{"name": "build", "description": "Build the project"},
|
|
{"name": "test", "description": "Run tests"}
|
|
]
|
|
}
|
|
})
|
|
|
|
elif method == "session/prompt":
|
|
# 1. Send Plan
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "plan",
|
|
"plan": {
|
|
"entries": [
|
|
{"title": "Analyzing project structure", "status": "completed"},
|
|
{"title": "Running build tests", "status": "running"},
|
|
{"title": "Deploying changes", "status": "pending"}
|
|
]
|
|
}
|
|
}
|
|
})
|
|
|
|
# 2. Tool Call 1 (Synchronous style)
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "tool_call",
|
|
"toolCallId": "search-1",
|
|
"title": "Searching for UI components",
|
|
"status": "completed",
|
|
"rawInput": {"pattern": "UIButton", "dir": "src/"},
|
|
"rawOutput": ["src/ui/button.cpp", "src/ui/button.hpp"]
|
|
}
|
|
})
|
|
|
|
# 3. Thought
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "agent_thought_chunk",
|
|
"content": {"text": "I found the buttons. Now I will try to build the project."}
|
|
}
|
|
})
|
|
|
|
# 4. Tool Call 2 (Terminal style)
|
|
send_notification("session/update", {
|
|
"sessionId": "test-session",
|
|
"update": {
|
|
"sessionUpdate": "tool_call",
|
|
"toolCallId": "build-1",
|
|
"title": "Compiling project",
|
|
"status": "running"
|
|
}
|
|
})
|
|
|
|
# 5. Request Terminal for Tool Call 2
|
|
last_req_id += 1
|
|
send_request(last_req_id, "terminal/create", {
|
|
"sessionId": "test-session",
|
|
"command": "make",
|
|
"args": ["-j4"]
|
|
})
|
|
|
|
# Confirm prompt request
|
|
sys.stdout.write(json.dumps({"jsonrpc": "2.0", "id": msg_id, "result": {"stopReason": "complete"}}) + "\n")
|
|
sys.stdout.flush()
|
|
|
|
except Exception as e:
|
|
sys.stderr.write(f"Error: {str(e)}\n")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|