anyfs 0.1.0.dev2__tar.gz → 0.1.0.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/PKG-INFO +1 -1
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/PKG-INFO +1 -1
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/apps/cli/src/anyfs_cli/main.py +58 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/pyproject.toml +1 -1
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/README.md +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/SOURCES.txt +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/dependency_links.txt +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/entry_points.txt +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/requires.txt +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/anyfs.egg-info/top_level.txt +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/apps/cli/src/anyfs_cli/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-claude-code/src/anyfs_adapter_claude_code/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-claude-code/src/anyfs_adapter_claude_code/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-codex-cli/src/anyfs_adapter_codex_cli/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-codex-cli/src/anyfs_adapter_codex_cli/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-gemini-cli/src/anyfs_adapter_gemini_cli/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-gemini-cli/src/anyfs_adapter_gemini_cli/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-hermes/src/anyfs_adapter_hermes/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-hermes/src/anyfs_adapter_hermes/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-nanobot/src/anyfs_adapter_nanobot/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-nanobot/src/anyfs_adapter_nanobot/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-openclaw/src/anyfs_adapter_openclaw/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-openclaw/src/anyfs_adapter_openclaw/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-opencode/src/anyfs_adapter_opencode/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-opencode/src/anyfs_adapter_opencode/adapter.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapters-core/src/anyfs_adapters_core/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapters-core/src/anyfs_adapters_core/base.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/crypto/src/anyfs_crypto/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/crypto/src/anyfs_crypto/keys.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/lineage/src/anyfs_lineage/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/lineage/src/anyfs_lineage/graph.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/local-state/src/anyfs_local_state/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/local-state/src/anyfs_local_state/state.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/packaging/src/anyfs_packaging/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/packaging/src/anyfs_packaging/afpkg.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/schemas/src/anyfs_schemas/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/schemas/src/anyfs_schemas/models.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/schemas/src/anyfs_schemas/transcript.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/sdk-python/src/anyfs_sdk/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/sdk-python/src/anyfs_sdk/service.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/sdk-python/src/anyfs_sdk/skill_runtime.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/skill-spec/src/anyfs_skill_spec/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/skill-spec/src/anyfs_skill_spec/actions.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/claude_code.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/codex_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/gemini_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/hermes.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/nanobot.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/openclaw.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/opencode.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/claude_code.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/codex_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/context.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/cursor.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/gemini_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/base.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/claude_code.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/codex_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/gemini_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/hermes.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/nanobot.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/openclaw.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/opencode.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/registry.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/__init__.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/chat.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/markdown.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/setup.cfg +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_claude_code.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_codex_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_gemini_cli.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_hermes.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_nanobot.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_openclaw.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapter_opencode.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_adapters_core.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_crypto.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_lineage.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_local_state.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_packaging.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_schemas.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_sdk_flow.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_skill_spec.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_transcript_resume.py +0 -0
- {anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/tests/test_transfer_matrix_tools.py +0 -0
|
@@ -33,6 +33,63 @@ def service() -> AnyFSService:
|
|
|
33
33
|
return AnyFSService()
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
def _workspace_next_steps(result: dict, workspace: str) -> list[str]:
|
|
37
|
+
if result.get("namespace") != "workspace":
|
|
38
|
+
return []
|
|
39
|
+
output_file = result.get("output_file")
|
|
40
|
+
restore_dir = result.get("restore_dir")
|
|
41
|
+
if not output_file:
|
|
42
|
+
return []
|
|
43
|
+
try:
|
|
44
|
+
bundle = json.loads(Path(output_file).read_text(encoding="utf-8"))
|
|
45
|
+
except Exception:
|
|
46
|
+
return []
|
|
47
|
+
binding = bundle.get("binding") or {}
|
|
48
|
+
mode = bundle.get("mode") or result.get("workspace_mode") or "changed"
|
|
49
|
+
steps: list[str] = []
|
|
50
|
+
remote = binding.get("remote")
|
|
51
|
+
commit_sha = binding.get("commit_sha")
|
|
52
|
+
if remote:
|
|
53
|
+
checkout = f" and checkout {commit_sha}" if commit_sha else ""
|
|
54
|
+
steps.append(f"Clone {remote}{checkout}.")
|
|
55
|
+
if restore_dir:
|
|
56
|
+
if mode == "full":
|
|
57
|
+
steps.append(f"Workspace was fully restored at {restore_dir}. You can continue directly from that directory.")
|
|
58
|
+
elif mode == "changed":
|
|
59
|
+
steps.append(f"Workspace overlay was restored at {restore_dir}. Review and apply those files onto your local checkout.")
|
|
60
|
+
else:
|
|
61
|
+
steps.append(f"Workspace metadata was restored at {restore_dir}.")
|
|
62
|
+
if binding.get("branch") and not remote:
|
|
63
|
+
steps.append(f"Use branch {binding['branch']} when recreating the workspace locally.")
|
|
64
|
+
return steps
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _process_next_steps(result: dict, workspace: str, target: str | None) -> list[str]:
|
|
68
|
+
if result.get("namespace") != "process":
|
|
69
|
+
return []
|
|
70
|
+
output_file = result.get("output_file")
|
|
71
|
+
if not output_file:
|
|
72
|
+
return []
|
|
73
|
+
suggested_target = target or "<target-agent>"
|
|
74
|
+
return [
|
|
75
|
+
f"Read the restored process at {output_file}.",
|
|
76
|
+
f"When you want native session restore, run: anyfs resume {output_file} --target {suggested_target} -w {workspace}",
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _emit_open_next_steps(results: list[dict], workspace: str, target: str | None) -> None:
|
|
81
|
+
steps: list[str] = []
|
|
82
|
+
for result in results:
|
|
83
|
+
steps.extend(_workspace_next_steps(result, workspace))
|
|
84
|
+
for result in results:
|
|
85
|
+
steps.extend(_process_next_steps(result, workspace, target))
|
|
86
|
+
if not steps:
|
|
87
|
+
return
|
|
88
|
+
typer.echo("\nNext:")
|
|
89
|
+
for idx, step in enumerate(steps, start=1):
|
|
90
|
+
typer.echo(f" {idx}. {step}")
|
|
91
|
+
|
|
92
|
+
|
|
36
93
|
# ── Primary commands (register / share / open) ─────────────────
|
|
37
94
|
|
|
38
95
|
@app.command("register")
|
|
@@ -191,6 +248,7 @@ def open_command(
|
|
|
191
248
|
msg = next((r["message"] for r in results if r.get("message")), None)
|
|
192
249
|
if msg:
|
|
193
250
|
typer.echo(f"\n Message: {msg}")
|
|
251
|
+
_emit_open_next_steps(results, workspace, target)
|
|
194
252
|
if resume:
|
|
195
253
|
process_results = [r for r in results if r["namespace"] == "process"]
|
|
196
254
|
for result in process_results:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-hermes/src/anyfs_adapter_hermes/__init__.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-hermes/src/anyfs_adapter_hermes/adapter.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-nanobot/src/anyfs_adapter_nanobot/__init__.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapter-nanobot/src/anyfs_adapter_nanobot/adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapters-core/src/anyfs_adapters_core/__init__.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/adapters-core/src/anyfs_adapters_core/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/local-state/src/anyfs_local_state/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/hermes.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/nanobot.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/openclaw.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/exporters/opencode.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/context.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/injectors/cursor.py
RENAMED
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/__init__.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/codex_cli.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/gemini_cli.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/hermes.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/nanobot.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/openclaw.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/parsers/opencode.py
RENAMED
|
File without changes
|
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/__init__.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/chat.py
RENAMED
|
File without changes
|
{anyfs-0.1.0.dev2 → anyfs-0.1.0.dev3}/packages/transcript/src/anyfs_transcript/renderers/markdown.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|