from claude_dspy import ClaudeCode, ClaudeCodeConfig from pydantic import BaseModel from modaic import AutoProgram import dspy class Output(BaseModel): files: list[str] class ClaudeCodeSignature(dspy.Signature): message: str = dspy.InputField(desc="Request to process") output: Output = dspy.OutputField(desc="List of files modified or created") def main(): # create config config = ClaudeCodeConfig() # create agent cc = ClaudeCode( config, signature=ClaudeCodeSignature, working_directory=".", permission_mode="acceptEdits", allowed_tools=["Read", "Bash", "Write"], ) cc.push_to_hub( "farouk1/claude-code", with_code=True, commit_message="Add more functionality to signature description parsing", ) # agent = AutoProgram.from_precompiled("farouk1/claude-code", signature=ClaudeCodeSignature, working_directory=".", permission_mode="acceptEdits", allowed_tools=["Read", "Write", "Bash"]) # Test the agent result = cc(message="create a python program that prints 'Hello, World!' and save it to a file in this directory") print(result.output.files) print(result.output) print(result.usage) print() print("Trace:") for i, item in enumerate(result.trace): print(f" {i}: {item}") if __name__ == "__main__": main()