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.
Files changed (93) hide show
  1. {machina_cli-0.4.3 → machina_cli-0.4.4}/CHANGELOG.md +5 -0
  2. {machina_cli-0.4.3 → machina_cli-0.4.4}/PKG-INFO +1 -1
  3. {machina_cli-0.4.3 → machina_cli-0.4.4}/pyproject.toml +1 -1
  4. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/org.py +6 -2
  5. {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_org_usage.py +17 -0
  6. {machina_cli-0.4.3 → machina_cli-0.4.4}/.github/workflows/ci.yml +0 -0
  7. {machina_cli-0.4.3 → machina_cli-0.4.4}/.github/workflows/release.yml +0 -0
  8. {machina_cli-0.4.3 → machina_cli-0.4.4}/.gitignore +0 -0
  9. {machina_cli-0.4.3 → machina_cli-0.4.4}/CLAUDE.md +0 -0
  10. {machina_cli-0.4.3 → machina_cli-0.4.4}/README.md +0 -0
  11. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/agentic-harness-loop.md +0 -0
  12. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/credentials.md +0 -0
  13. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/PLAYBOOK-SCORECARD.md +0 -0
  14. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/README.md +0 -0
  15. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/VALIDATION.md +0 -0
  16. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/context-verify.py +0 -0
  17. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/harness-loop-kit/provision.py +0 -0
  18. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs/loop-tools-connector.py +0 -0
  19. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.gitignore +0 -0
  20. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/config.mts +0 -0
  21. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/theme/custom.css +0 -0
  22. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/.vitepress/theme/index.ts +0 -0
  23. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/README.md +0 -0
  24. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/agent.md +0 -0
  25. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/config.md +0 -0
  26. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/connector.md +0 -0
  27. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/credentials.md +0 -0
  28. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/deploy.md +0 -0
  29. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/document.md +0 -0
  30. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/execution.md +0 -0
  31. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/factory.md +0 -0
  32. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/login.md +0 -0
  33. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/loop.md +0 -0
  34. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/mapping.md +0 -0
  35. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/org.md +0 -0
  36. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/project.md +0 -0
  37. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/prompt.md +0 -0
  38. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/skills.md +0 -0
  39. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/sports.md +0 -0
  40. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/template.md +0 -0
  41. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/update.md +0 -0
  42. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/commands/workflow.md +0 -0
  43. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/authentication.md +0 -0
  44. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/configuration.md +0 -0
  45. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/installation.md +0 -0
  46. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/quickstart.md +0 -0
  47. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/repl.md +0 -0
  48. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/guide/running.md +0 -0
  49. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/index.md +0 -0
  50. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/package-lock.json +0 -0
  51. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/package.json +0 -0
  52. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/favicon.ico +0 -0
  53. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/machina-logo-dark.png +0 -0
  54. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/public/machina-logo-light.png +0 -0
  55. {machina_cli-0.4.3 → machina_cli-0.4.4}/docs-site/vercel.json +0 -0
  56. {machina_cli-0.4.3 → machina_cli-0.4.4}/install.ps1 +0 -0
  57. {machina_cli-0.4.3 → machina_cli-0.4.4}/install.sh +0 -0
  58. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/__init__.py +0 -0
  59. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/browser_auth.py +0 -0
  60. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/client.py +0 -0
  61. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/__init__.py +0 -0
  62. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/agent.py +0 -0
  63. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/auth.py +0 -0
  64. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/config_cmd.py +0 -0
  65. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/connect.py +0 -0
  66. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/connector.py +0 -0
  67. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/credentials.py +0 -0
  68. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/deploy.py +0 -0
  69. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/document.py +0 -0
  70. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/execution.py +0 -0
  71. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/factory.py +0 -0
  72. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/loop.py +0 -0
  73. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/mapping.py +0 -0
  74. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/mcp.py +0 -0
  75. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/project.py +0 -0
  76. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/prompt.py +0 -0
  77. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/skills.py +0 -0
  78. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/sports.py +0 -0
  79. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/template.py +0 -0
  80. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/commands/workflow.py +0 -0
  81. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/config.py +0 -0
  82. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/factory_client.py +0 -0
  83. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/loop_client.py +0 -0
  84. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/main.py +0 -0
  85. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/models/__init__.py +0 -0
  86. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/project_client.py +0 -0
  87. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/repl.py +0 -0
  88. {machina_cli-0.4.3 → machina_cli-0.4.4}/src/machina_cli/updater.py +0 -0
  89. {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/__init__.py +0 -0
  90. {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_cli_output.py +0 -0
  91. {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_connect.py +0 -0
  92. {machina_cli-0.4.3 → machina_cli-0.4.4}/tests/test_mcp_url.py +0 -0
  93. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machina-cli
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: CLI for the Machina AI Agent platform
5
5
  Project-URL: Homepage, https://machina.gg
6
6
  Project-URL: Repository, https://github.com/machina-sports/machina-cli
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "machina-cli"
7
- version = "0.4.3"
7
+ version = "0.4.4"
8
8
  description = "CLI for the Machina AI Agent platform"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -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", proj.get("_id", ""))
173
- pname = proj.get("project_name", proj.get("name", pid))
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