# Example using Flask
from flask import Flask, request, jsonify
from cloudcode import Local
import os
import uuid
app = Flask(__name__)
# Store tasks in memory (in a real app, use a database)
tasks = {}
sdk = Local(
working_dir="/path/to/your/project",
api_key=os.getenv("CLOUDCODE_API_KEY")
)
@app.route('/api/code', methods=['POST'])
def start_code_task():
data = request.json
# Generate a unique ID for the client
client_task_id = str(uuid.uuid4())
# Start the headless task
headless_task = sdk.code_headless(
prompt=data["prompt"],
editable_files=data["editable_files"],
readonly_files=data.get("readonly_files"),
task_id=client_task_id # Use the client-generated ID
)
# Store task info
tasks[client_task_id] = {
"prompt": data["prompt"],
"files": data["editable_files"],
"status": "pending",
"created_at": datetime.now().isoformat()
}
return jsonify({
"task_id": client_task_id,
"status": "pending"
})
@app.route('/api/code/<task_id>', methods=['GET'])
def get_task_status(task_id):
if task_id not in tasks:
return jsonify({"status": "not_found"}), 404
# Get the latest status
status = sdk.get_headless_task_status(task_id)
# Update our stored task info
if status["status"] == "completed":
tasks[task_id]["status"] = "completed"
tasks[task_id]["result"] = status["result"]
elif status["status"] == "failed":
tasks[task_id]["status"] = "failed"
tasks[task_id]["error"] = status.get("error")
return jsonify(status)
if __name__ == '__main__':
app.run(debug=True)