Refresh docs and examples for workspaces
Rewrite the user-facing persistent sandbox story around pyro workspace ..., including the install guide, first-run transcript, integrations notes, and public contract reference. Rename the Python example to examples/python_workspace.py and update the docs to use the new workspace create, sync, exec, status, logs, and delete flows with seed_path/workspace_id terminology. Mark the 2.4.0 workspace-contract pivot as done in the roadmap now that the shipped CLI, SDK, MCP, docs, and tests all use the workspace-first surface.
This commit is contained in:
parent
48b82d8386
commit
2de31306b6
9 changed files with 148 additions and 150 deletions
|
|
@ -1,30 +0,0 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from pyro_mcp import Pyro
|
||||
|
||||
|
||||
def main() -> None:
|
||||
pyro = Pyro()
|
||||
with (
|
||||
tempfile.TemporaryDirectory(prefix="pyro-task-seed-") as seed_dir,
|
||||
tempfile.TemporaryDirectory(prefix="pyro-task-sync-") as sync_dir,
|
||||
):
|
||||
Path(seed_dir, "note.txt").write_text("hello from seed\n", encoding="utf-8")
|
||||
Path(sync_dir, "note.txt").write_text("hello from sync\n", encoding="utf-8")
|
||||
created = pyro.create_task(environment="debian:12", source_path=seed_dir)
|
||||
task_id = str(created["task_id"])
|
||||
try:
|
||||
pyro.push_task_sync(task_id, sync_dir)
|
||||
result = pyro.exec_task(task_id, command="cat note.txt")
|
||||
print(result["stdout"], end="")
|
||||
logs = pyro.logs_task(task_id)
|
||||
print(f"task_id={task_id} command_count={logs['count']}")
|
||||
finally:
|
||||
pyro.delete_task(task_id)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
30
examples/python_workspace.py
Normal file
30
examples/python_workspace.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from pyro_mcp import Pyro
|
||||
|
||||
|
||||
def main() -> None:
|
||||
pyro = Pyro()
|
||||
with (
|
||||
tempfile.TemporaryDirectory(prefix="pyro-workspace-seed-") as seed_dir,
|
||||
tempfile.TemporaryDirectory(prefix="pyro-workspace-sync-") as sync_dir,
|
||||
):
|
||||
Path(seed_dir, "note.txt").write_text("hello from seed\n", encoding="utf-8")
|
||||
Path(sync_dir, "note.txt").write_text("hello from sync\n", encoding="utf-8")
|
||||
created = pyro.create_workspace(environment="debian:12", seed_path=seed_dir)
|
||||
workspace_id = str(created["workspace_id"])
|
||||
try:
|
||||
pyro.push_workspace_sync(workspace_id, sync_dir)
|
||||
result = pyro.exec_workspace(workspace_id, command="cat note.txt")
|
||||
print(result["stdout"], end="")
|
||||
logs = pyro.logs_workspace(workspace_id)
|
||||
print(f"workspace_id={workspace_id} command_count={logs['count']}")
|
||||
finally:
|
||||
pyro.delete_workspace(workspace_id)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue