mtrx-cli 0.1.29 → 0.1.30
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.
- package/README.md +0 -16
- package/package.json +1 -1
- package/src/matrx/__init__.py +1 -1
- package/src/matrx/cli/launcher.py +21 -0
package/README.md
CHANGED
|
@@ -30,19 +30,3 @@ npx mtrx help
|
|
|
30
30
|
- Python 3.10+ available as `python3`, `python`, or `py -3`
|
|
31
31
|
|
|
32
32
|
This npm package is a thin wrapper around the Python CLI bundled in this repo.
|
|
33
|
-
|
|
34
|
-
## Python dependencies
|
|
35
|
-
|
|
36
|
-
The tarball only ships the CLI source under `src/` and sets `PYTHONPATH` so Python can import it. **Third-party libraries** (for example `httpx`, `fastapi`, etc.) are **not** bundled—you still need the **`matrx`** Python package installed into the same interpreter npm invokes:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
pip install matrx
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Or from a checkout of this repo:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
pip install -e .
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Use `mtrx doctor` after install if commands fail with missing-module errors.
|
package/package.json
CHANGED
package/src/matrx/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.30"
|
|
@@ -998,6 +998,8 @@ def _heartbeat_cli_agent(orchestration: dict, stop_event) -> None:
|
|
|
998
998
|
headers["X-Matrx-Project-Id"] = project_id
|
|
999
999
|
|
|
1000
1000
|
interval = int(orchestration.get("heartbeat_interval_seconds") or 60)
|
|
1001
|
+
_announced_task_ids: set[str] = set()
|
|
1002
|
+
|
|
1001
1003
|
while True:
|
|
1002
1004
|
try:
|
|
1003
1005
|
with httpx.Client(timeout=5) as client:
|
|
@@ -1015,6 +1017,25 @@ def _heartbeat_cli_agent(orchestration: dict, stop_event) -> None:
|
|
|
1015
1017
|
)
|
|
1016
1018
|
if response.status_code in {404, 401, 403}:
|
|
1017
1019
|
return
|
|
1020
|
+
# Print a visual notification for any new incoming subtasks
|
|
1021
|
+
try:
|
|
1022
|
+
data = response.json()
|
|
1023
|
+
pending = data.get("pending_tasks") or []
|
|
1024
|
+
for task in pending:
|
|
1025
|
+
task_id = task.get("task_id") or ""
|
|
1026
|
+
if task_id and task_id not in _announced_task_ids:
|
|
1027
|
+
_announced_task_ids.add(task_id)
|
|
1028
|
+
sub_q = (task.get("sub_question") or "").strip()
|
|
1029
|
+
cap = (task.get("required_capability") or "").strip()
|
|
1030
|
+
label = sub_q or cap or "incoming subtask"
|
|
1031
|
+
import sys as _sys
|
|
1032
|
+
print(
|
|
1033
|
+
f"\n\033[33m[matrx]\033[0m \u26a1 Subtask incoming: \"{label}\"",
|
|
1034
|
+
file=_sys.stderr,
|
|
1035
|
+
flush=True,
|
|
1036
|
+
)
|
|
1037
|
+
except Exception:
|
|
1038
|
+
pass
|
|
1018
1039
|
except httpx.HTTPError:
|
|
1019
1040
|
return
|
|
1020
1041
|
if stop_event.wait(interval):
|