twf-cli 0.9.0__py3-none-macosx_11_0_arm64.whl
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.
- twf_cli/__init__.py +3 -0
- twf_cli/__main__.py +46 -0
- twf_cli/_binary/twf +0 -0
- twf_cli-0.9.0.dist-info/METADATA +89 -0
- twf_cli-0.9.0.dist-info/RECORD +7 -0
- twf_cli-0.9.0.dist-info/WHEEL +5 -0
- twf_cli-0.9.0.dist-info/entry_points.txt +2 -0
twf_cli/__init__.py
ADDED
twf_cli/__main__.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Resolve and exec the bundled twf binary with the wrapper's argv.
|
|
2
|
+
|
|
3
|
+
Pattern: the wheel ships a single platform-specific binary at
|
|
4
|
+
``twf_cli/_binary/twf`` (or ``twf.exe`` on Windows). The wrapper's
|
|
5
|
+
console-script (``twf = twf_cli.__main__:main``) execs it.
|
|
6
|
+
|
|
7
|
+
On POSIX, ``os.execv`` replaces the Python process so the binary's exit
|
|
8
|
+
code and signals propagate directly. On Windows, ``os.execv`` exists but
|
|
9
|
+
doesn't quite share the same semantics, so we use ``subprocess`` and
|
|
10
|
+
forward the return code.
|
|
11
|
+
"""
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _binary_path() -> Path:
|
|
18
|
+
here = Path(__file__).parent / "_binary"
|
|
19
|
+
name = "twf.exe" if sys.platform == "win32" else "twf"
|
|
20
|
+
return here / name
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def main() -> int:
|
|
24
|
+
binary = _binary_path()
|
|
25
|
+
if not binary.exists():
|
|
26
|
+
sys.stderr.write(
|
|
27
|
+
f"twf-cli: bundled binary not found at {binary}.\n"
|
|
28
|
+
"Reinstall twf-cli from PyPI. If you installed from source, "
|
|
29
|
+
"stage the binary into this directory first.\n"
|
|
30
|
+
)
|
|
31
|
+
return 1
|
|
32
|
+
|
|
33
|
+
if sys.platform == "win32":
|
|
34
|
+
import subprocess
|
|
35
|
+
|
|
36
|
+
return subprocess.call([str(binary), *sys.argv[1:]])
|
|
37
|
+
|
|
38
|
+
# POSIX: replace this process with the binary so signals + exit code
|
|
39
|
+
# propagate naturally.
|
|
40
|
+
os.execv(str(binary), [str(binary), *sys.argv[1:]])
|
|
41
|
+
# Unreachable, but satisfies type checkers / linters.
|
|
42
|
+
return 0
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
sys.exit(main())
|
twf_cli/_binary/twf
ADDED
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: twf-cli
|
|
3
|
+
Version: 0.9.0
|
|
4
|
+
Summary: Toolchain for designing and validating entire Temporal systems in .twf — CLI, language server, and MCP server.
|
|
5
|
+
Project-URL: Homepage, https://github.com/jmbarzee/temporal-architect
|
|
6
|
+
Project-URL: Source, https://github.com/jmbarzee/temporal-architect-dist
|
|
7
|
+
Project-URL: Issues, https://github.com/jmbarzee/temporal-architect-dist/issues
|
|
8
|
+
Author: Jamie Barzee
|
|
9
|
+
License: MIT
|
|
10
|
+
Keywords: architecture,cli,lsp,mcp,system design,temporal,twf,workflow
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Software Development
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# twf-cli
|
|
21
|
+
|
|
22
|
+
The `twf` CLI for Python projects — design and validate **entire Temporal
|
|
23
|
+
systems** in `.twf`, emit the deployment graph, and serve Language Server /
|
|
24
|
+
MCP protocols. A thin wrapper around the bundled platform binary: same tool,
|
|
25
|
+
same flags, same output as the standalone `twf` distribution, installable via
|
|
26
|
+
`pip`. See the [project README](https://github.com/jmbarzee/temporal-architect)
|
|
27
|
+
for the full picture (visualizer, skills, examples).
|
|
28
|
+
|
|
29
|
+
## Install
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install twf-cli
|
|
33
|
+
twf --help
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The wheel for your platform ships the matching `twf` binary. Supported
|
|
37
|
+
platforms (one wheel each):
|
|
38
|
+
|
|
39
|
+
| Platform | Wheel tag |
|
|
40
|
+
|---|---|
|
|
41
|
+
| macOS arm64 (Apple Silicon) | `macosx_11_0_arm64` |
|
|
42
|
+
| macOS x64 (Intel) | `macosx_10_15_x86_64` |
|
|
43
|
+
| Linux x64 | `manylinux2014_x86_64` |
|
|
44
|
+
| Linux arm64 | `manylinux2014_aarch64` |
|
|
45
|
+
| Windows x64 | `win_amd64` |
|
|
46
|
+
|
|
47
|
+
## Use as an MCP server
|
|
48
|
+
|
|
49
|
+
Once installed:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"mcpServers": {
|
|
54
|
+
"twf": {
|
|
55
|
+
"command": "twf",
|
|
56
|
+
"args": ["mcp"]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Works in any MCP-compatible client (Claude Desktop, Cursor MCP,
|
|
63
|
+
Continue, Windsurf, Zed). See the
|
|
64
|
+
[main project README](https://github.com/jmbarzee/temporal-architect) for
|
|
65
|
+
the full MCP feature surface.
|
|
66
|
+
|
|
67
|
+
## Subprocess use from Python
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
import subprocess
|
|
71
|
+
import json
|
|
72
|
+
|
|
73
|
+
result = subprocess.run(
|
|
74
|
+
["twf", "parse", "workflow.twf"],
|
|
75
|
+
capture_output=True,
|
|
76
|
+
text=True,
|
|
77
|
+
check=True,
|
|
78
|
+
)
|
|
79
|
+
ast = json.loads(result.stdout)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Versioning
|
|
83
|
+
|
|
84
|
+
Versions are synced to the upstream `temporal-architect` Git tag, so `0.3.x`
|
|
85
|
+
of this package corresponds to `v0.3.x` of the toolchain.
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT. See [LICENSE](https://github.com/jmbarzee/temporal-architect/blob/main/LICENSE).
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
twf_cli/__init__.py,sha256=TuvtrzB1L_0DtvBQ_jN-3sdg5fuVIvKLMTvX1nqpBEM,91
|
|
2
|
+
twf_cli/__main__.py,sha256=vqP9iQTgvvzwnwQGLVNiE8XQkEApv7BlN3I_lSqxxFo,1431
|
|
3
|
+
twf_cli/_binary/twf,sha256=Ik-sxqEHuoWHg5ud7x2I4QI_K8H9AN1lDJAIeWnFi_Q,17595346
|
|
4
|
+
twf_cli-0.9.0.dist-info/METADATA,sha256=_6-WNmM04bt151GN2s47HB6D9DKNllycB0NSbyFBgvE,2587
|
|
5
|
+
twf_cli-0.9.0.dist-info/WHEEL,sha256=HORzynITIhbJIvameEsMHqxPAqxnsl0biSKiW5kn4Ks,102
|
|
6
|
+
twf_cli-0.9.0.dist-info/entry_points.txt,sha256=nx2Dn14Ciffkyh3B4qEcs6Fj-N16--zJefsecSSfOHw,46
|
|
7
|
+
twf_cli-0.9.0.dist-info/RECORD,,
|