agent-software
The agent-software worked example.
Run it from sema/:
sema check examples/agent-softwareSEMA_STRICT=1 sema run examples/agent-softwaresema assure examples/agent-software --grade silverSource
Section titled “Source”src/main.sema
Section titled “src/main.sema”"""Explorer→engineer→hardener delivery circuit with owned task handoff."""
assure silver
struct ChangeRequest: goal: str
struct PatchArtifact: summary: str verified: bool
def inspect(query: str) -> str !{}: return "project evidence for " + query
agent explorer(request: ChangeRequest) -> str by explorer_model: sem "Inspect read-only context and return a bounded evidence packet" use tools [inspect] budget model_calls=2, tokens=512
agent engineer(evidence: str) -> PatchArtifact by engineer_model: sem "Produce one isolated patch artifact; do not change unassigned files" budget model_calls=2, tokens=1024 ensure result.verified == true
agent hardener(patch: PatchArtifact) -> PatchArtifact by reviewer_model: sem "Review correctness, security, recovery, and acceptance evidence" budget model_calls=2, tokens=768 ensure result.verified == true
circuit deliver(request: ChangeRequest) -> PatchArtifact !{agent.spawn, model.invoke}: budget agents=4, spawn_depth=1, model_calls=8, tokens=6000 evidence = explorer(request) implementation = spawn engineer(evidence) patch = implementation.join()? return hardener(patch)
def main() -> PatchArtifact !{agent.spawn, model.invoke}: result = deliver(ChangeRequest(goal="add bounded retry handling")) print(result.summary) return resultReflected API
Section titled “Reflected API”Explorer→engineer→hardener delivery circuit with owned task handoff.
struct ChangeRequest
Section titled “struct ChangeRequest”Fields
| field | type | descriptor |
|---|---|---|
goal | str |
struct PatchArtifact
Section titled “struct PatchArtifact”Fields
| field | type | descriptor |
|---|---|---|
summary | str | |
verified | bool |
def inspect
Section titled “def inspect”def inspect(query: str) -> str !{}Parameters
| name | type |
|---|---|
query | str |
Returns str
Effects !{}
agent explorer
Section titled “agent explorer”agent explorer(request: ChangeRequest) -> strParameters
| name | type |
|---|---|
request | ChangeRequest |
Returns str
agent engineer
Section titled “agent engineer”agent engineer(evidence: str) -> PatchArtifactParameters
| name | type |
|---|---|
evidence | str |
Returns PatchArtifact
agent hardener
Section titled “agent hardener”agent hardener(patch: PatchArtifact) -> PatchArtifactParameters
| name | type |
|---|---|
patch | PatchArtifact |
Returns PatchArtifact
circuit deliver
Section titled “circuit deliver”circuit deliver(request: ChangeRequest) -> PatchArtifact !{agent.spawn, model.invoke}Parameters
| name | type |
|---|---|
request | ChangeRequest |
Returns PatchArtifact
Effects !{agent.spawn, model.invoke}
def main
Section titled “def main”def main() -> PatchArtifact !{agent.spawn, model.invoke}Returns PatchArtifact
Effects !{agent.spawn, model.invoke}