aethershell 0.3.1

The world's first multi-agent shell with typed functional pipelines and multi-modal AI
Documentation
# Example 18: Distributed Computing
# Demonstrates cluster management, job scheduling, and result aggregation

print("=== Distributed Computing Demo ===")
print("")

# Create a compute cluster
print("Creating cluster...")
let cluster = cluster_create("demo-cluster")
print("Cluster: " + cluster.name)
print("")

# Add compute nodes
print("Adding compute nodes...")
let node1 = cluster_add_node("node-1", "192.168.1.10:8080")
let node2 = cluster_add_node("node-2", "192.168.1.11:8080", ["gpu", "compute"])
let node3 = add_node("node-3", "192.168.1.12:8080", ["compute", "storage"])

print("Node 1: " + node1.id + " at " + node1.address)
print("Node 2: " + node2.id + " (capabilities: gpu, compute)")
print("Node 3: " + node3.id + " (capabilities: compute, storage)")
print("")

# Check cluster status
print("Cluster status:")
let status = cluster_status()
print("  Total nodes: " + status.total_nodes)
print("  Online nodes: " + status.online_nodes)
print("  Average load: " + status.average_load)
print("")

# List all nodes
print("All nodes:")
let all_nodes = cluster_nodes()
all_nodes | each(fn(n) => print("  - " + n.id + ": " + n.status))
print("")

# Submit some jobs
print("Submitting jobs...")
let job1 = job_submit("data-processing", "process_data batch1")
let job2 = submit("ml-training", "train_model dataset.csv", 10)
let job3 = job_submit("report-gen", "generate_report")

print("Job 1: " + job1.job_id + " (" + job1.status + ")")
print("Job 2: " + job2.job_id + " (priority: 10)")
print("Job 3: " + job3.job_id)
print("")

# Check job status
print("Job statuses:")
job_list() | each(fn(j) => print("  " + j.name + ": " + j.status))
print("")

# Remote execution
print("Remote execution:")
let exec_result = remote_exec("node-1", "ls -la /data")
print("  Node: " + exec_result.node_id)
print("  Status: " + exec_result.status)
print("")

# Result aggregation
print("Result aggregation examples:")
let numbers = [10, 20, 30, 40, 50]
print("  Data: " + numbers)
print("  Sum: " + aggregate(numbers, "sum"))
print("  Count: " + aggregate(numbers, "count"))
print("  First: " + aggregate(numbers, "first"))
print("  Last: " + aggregate(numbers, "last"))
print("")

# Cleanup - cancel a job
print("Cancelling job: " + job3.job_id)
let cancelled = job_cancel(job3.job_id)
print("  Cancelled: " + cancelled)
print("")

# Remove a node
print("Removing node-3...")
let removed = cluster_remove_node("node-3")
print("  Removed: " + removed)
print("")

# Final status
print("Final cluster status:")
let final_status = cluster_status()
print("  Nodes: " + final_status.total_nodes)
print("  Jobs: " + final_status.total_jobs)
print("")

print("=== Distributed Computing Demo Complete ===")