machina-cli 0.4.3__tar.gz → 0.4.4__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.
- {machina_cli-0.4.3 → machina_cli-0.4.4}/CHANGELOG.md +5 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/PKG-INFO +1 -1
- {machina_cli-0.4.3 → machina_cli-0.4.4}/pyproject.toml +1 -1
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/org.py +6 -2
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_org_usage.py +17 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/.github/workflows/ci.yml +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/.github/workflows/release.yml +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/.gitignore +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/CLAUDE.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/README.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/agentic-harness-loop.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/credentials.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/PLAYBOOK-SCORECARD.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/README.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/VALIDATION.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/context-verify.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/provision.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/loop-tools-connector.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.gitignore +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/config.mts +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/theme/custom.css +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/theme/index.ts +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/README.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/agent.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/config.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/connector.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/credentials.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/deploy.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/document.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/execution.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/factory.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/login.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/loop.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/mapping.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/org.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/project.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/prompt.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/skills.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/sports.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/template.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/update.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/workflow.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/authentication.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/configuration.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/installation.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/quickstart.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/repl.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/running.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/index.md +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/package-lock.json +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/package.json +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/favicon.ico +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/machina-logo-dark.png +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/machina-logo-light.png +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/vercel.json +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/install.ps1 +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/install.sh +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/__init__.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/browser_auth.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/client.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/__init__.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/agent.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/auth.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/config_cmd.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/connect.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/connector.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/credentials.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/deploy.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/document.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/execution.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/factory.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/loop.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/mapping.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/mcp.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/project.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/prompt.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/skills.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/sports.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/template.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/workflow.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/config.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/factory_client.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/loop_client.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/main.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/models/__init__.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/project_client.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/repl.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/updater.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/__init__.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_cli_output.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_connect.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_mcp_url.py +0 -0
- {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_sports_integration.py +0 -0
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to machina-cli are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.4.4] - 2026-06-30
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **`machina org usage` shows a readable label for nameless project stubs.** Some `user/projects/search` records are bare membership stubs (`project_id` only, no `project_name` — e.g. a deleted project's leftover association); they were rendered as a raw 24-char ObjectId in the "Skipped" line. They now show `(unnamed:<id8>)`. The project is still scanned (never silently excluded over a missing name), so a real project can't be dropped this way.
|
|
9
|
+
|
|
5
10
|
## [0.4.3] - 2026-06-30
|
|
6
11
|
|
|
7
12
|
### Fixed
|
|
@@ -169,8 +169,12 @@ def _resolve_org_projects(org_id: str) -> list[tuple[str, str]]:
|
|
|
169
169
|
for proj in rows:
|
|
170
170
|
if proj.get("organization_id") != org_id:
|
|
171
171
|
continue
|
|
172
|
-
pid = proj.get("project_id"
|
|
173
|
-
|
|
172
|
+
pid = proj.get("project_id") or proj.get("_id") or ""
|
|
173
|
+
# Some membership records are bare stubs (project_id only, no name — e.g. a
|
|
174
|
+
# deleted project's leftover association). Show a readable label instead of a
|
|
175
|
+
# raw 24-char ObjectId, but still scan them so a real project is never
|
|
176
|
+
# silently dropped just because its name didn't resolve.
|
|
177
|
+
pname = proj.get("project_name") or proj.get("name") or f"(unnamed:{pid[:8]})"
|
|
174
178
|
if pid and proj.get("status") != "archived":
|
|
175
179
|
targets.append((pid, pname))
|
|
176
180
|
pagination = res.get("pagination", {})
|
|
@@ -155,6 +155,23 @@ def test_usage_resolves_projects_for_org():
|
|
|
155
155
|
assert payload["totals"]["total"] == _TOTAL
|
|
156
156
|
|
|
157
157
|
|
|
158
|
+
def test_resolve_org_projects_labels_unnamed_stub():
|
|
159
|
+
# a bare membership stub (project_id only, no name) gets a readable label, not a
|
|
160
|
+
# raw ObjectId — and is still returned as a target (never silently excluded)
|
|
161
|
+
from machina_cli.commands import org as org_mod
|
|
162
|
+
|
|
163
|
+
projects = [
|
|
164
|
+
{"project_id": "p1", "project_name": "Real One", "organization_id": "org_1"},
|
|
165
|
+
{"project_id": "69ffa178815a5305f540dcac", "organization_id": "org_1"}, # bare stub
|
|
166
|
+
{"project_id": "p3", "project_name": "Other Org", "organization_id": "org_2"},
|
|
167
|
+
]
|
|
168
|
+
with patch("machina_cli.commands.org.MachinaClient", _projects_client(projects)):
|
|
169
|
+
targets = dict(org_mod._resolve_org_projects("org_1"))
|
|
170
|
+
assert targets["p1"] == "Real One"
|
|
171
|
+
assert targets["69ffa178815a5305f540dcac"] == "(unnamed:69ffa178)"
|
|
172
|
+
assert "p3" not in targets # other org excluded
|
|
173
|
+
|
|
174
|
+
|
|
158
175
|
def test_usage_skips_undeployed_project_as_benign():
|
|
159
176
|
# ProjectClient() (session login) fails persistently -> undeployed/no access ->
|
|
160
177
|
# benign skip, NOT marked incomplete.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|