MCPcopy
hub / github.com/shareAI-lab/learn-claude-code / agent_loop

Function agent_loop

s04_hooks/code.py:238–272  ·  view source on GitHub ↗
(messages: list)

Source from the content-addressed store, hash-verified

236# ═══════════════════════════════════════════════════════════
237
238def agent_loop(messages: list):
239 while True:
240 response = client.messages.create(
241 model=MODEL, system=SYSTEM, messages=messages,
242 tools=TOOLS, max_tokens=8000,
243 )
244 messages.append({"role": "assistant", "content": response.content})
245
246 if response.stop_reason != "tool_use":
247 force = trigger_hooks("Stop", messages)
248 if force:
249 messages.append({"role": "user", "content": force})
250 continue
251 return
252
253 results = []
254 for block in response.content:
255 if block.type != "tool_use":
256 continue
257
258 # s04 change: hook replaces hard-coded check_permission()
259 blocked = trigger_hooks("PreToolUse", block)
260 if blocked:
261 results.append({"type": "tool_result", "tool_use_id": block.id,
262 "content": str(blocked)})
263 continue
264
265 handler = TOOL_HANDLERS.get(block.name)
266 output = handler(**block.input) if handler else f"Unknown: {block.name}"
267
268 trigger_hooks("PostToolUse", block, output) # s04: post hook
269
270 results.append({"type": "tool_result", "tool_use_id": block.id, "content": output})
271
272 messages.append({"role": "user", "content": results})
273
274
275if __name__ == "__main__":

Callers 1

code.pyFile · 0.70

Calls 3

trigger_hooksFunction · 0.70
createMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected