gumloop 0.4.2__tar.gz → 0.4.3__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 (154) hide show
  1. gumloop-0.4.3/.github/workflows/release.yml +46 -0
  2. {gumloop-0.4.2 → gumloop-0.4.3}/PKG-INFO +1 -1
  3. {gumloop-0.4.2 → gumloop-0.4.3}/pyproject.toml +4 -1
  4. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/_version.py +1 -1
  5. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/types.py +9 -0
  6. {gumloop-0.4.2 → gumloop-0.4.3}/uv.lock +0 -1
  7. {gumloop-0.4.2 → gumloop-0.4.3}/.env.example +0 -0
  8. {gumloop-0.4.2 → gumloop-0.4.3}/.gitignore +0 -0
  9. {gumloop-0.4.2 → gumloop-0.4.3}/.pre-commit-config.yaml +0 -0
  10. {gumloop-0.4.2 → gumloop-0.4.3}/.python-version +0 -0
  11. {gumloop-0.4.2 → gumloop-0.4.3}/LICENSE +0 -0
  12. {gumloop-0.4.2 → gumloop-0.4.3}/README.md +0 -0
  13. {gumloop-0.4.2 → gumloop-0.4.3}/scripts/check +0 -0
  14. {gumloop-0.4.2 → gumloop-0.4.3}/scripts/fmt +0 -0
  15. {gumloop-0.4.2 → gumloop-0.4.3}/scripts/sdk_examples.py +0 -0
  16. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/__init__.py +0 -0
  17. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/_auth.py +0 -0
  18. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/_client.py +0 -0
  19. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/_http.py +0 -0
  20. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/__init__.py +0 -0
  21. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/__init__.py +0 -0
  22. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/_args_input.py +0 -0
  23. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/_downloads.py +0 -0
  24. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/_sync_output.py +0 -0
  25. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/agents.py +0 -0
  26. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/artifacts.py +0 -0
  27. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/auth.py +0 -0
  28. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/brain.py +0 -0
  29. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/chat.py +0 -0
  30. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/mcp.py +0 -0
  31. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/sessions.py +0 -0
  32. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/skills.py +0 -0
  33. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/commands/sync.py +0 -0
  34. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/console.py +0 -0
  35. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/context.py +0 -0
  36. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/credentials.py +0 -0
  37. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/errors.py +0 -0
  38. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/main.py +0 -0
  39. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/cli/oauth.py +0 -0
  40. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/errors.py +0 -0
  41. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/oauth.py +0 -0
  42. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/py.typed +0 -0
  43. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/__init__.py +0 -0
  44. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/agents.py +0 -0
  45. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/artifacts.py +0 -0
  46. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/brain.py +0 -0
  47. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/chat.py +0 -0
  48. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/mcp.py +0 -0
  49. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/sessions.py +0 -0
  50. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/skills.py +0 -0
  51. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/sync.py +0 -0
  52. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/resources/teams.py +0 -0
  53. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/spec/__init__.py +0 -0
  54. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/spec/_compat.py +0 -0
  55. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/spec/_extensions.py +0 -0
  56. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/__init__.py +0 -0
  57. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/archive.py +0 -0
  58. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/bundle.py +0 -0
  59. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/bundle_validation.py +0 -0
  60. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/errors.py +0 -0
  61. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/hashing.py +0 -0
  62. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/installed.py +0 -0
  63. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/local_state.py +0 -0
  64. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/lock.py +0 -0
  65. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/markers.py +0 -0
  66. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/reconcile.py +0 -0
  67. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/reporting.py +0 -0
  68. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/results.py +0 -0
  69. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/run.py +0 -0
  70. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/scheduler.py +0 -0
  71. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/target_files.py +0 -0
  72. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/targets.py +0 -0
  73. {gumloop-0.4.2 → gumloop-0.4.3}/src/gumloop/sync/wire.py +0 -0
  74. {gumloop-0.4.2 → gumloop-0.4.3}/tests/__init__.py +0 -0
  75. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/__init__.py +0 -0
  76. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/conftest.py +0 -0
  77. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/sync_scenario_helpers.py +0 -0
  78. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/sync_test_fakes.py +0 -0
  79. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_agents.py +0 -0
  80. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_args_input.py +0 -0
  81. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_artifacts.py +0 -0
  82. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_brain.py +0 -0
  83. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_chat.py +0 -0
  84. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_context.py +0 -0
  85. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_credentials.py +0 -0
  86. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_home_isolation.py +0 -0
  87. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_login.py +0 -0
  88. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_main.py +0 -0
  89. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_mcp.py +0 -0
  90. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sessions.py +0 -0
  91. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_skills.py +0 -0
  92. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_bundle.py +0 -0
  93. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_command.py +0 -0
  94. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_command_safety.py +0 -0
  95. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_contract_fixtures.py +0 -0
  96. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_enrollment.py +0 -0
  97. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_fixture_corpus.py +0 -0
  98. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_hashing.py +0 -0
  99. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_installed.py +0 -0
  100. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_reconciliation_safety.py +0 -0
  101. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_scheduler_macos.py +0 -0
  102. {gumloop-0.4.2 → gumloop-0.4.3}/tests/cli/test_sync_targets.py +0 -0
  103. {gumloop-0.4.2 → gumloop-0.4.3}/tests/conftest.py +0 -0
  104. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/README.md +0 -0
  105. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/generated-bundle-transfer-limit.json +0 -0
  106. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-absolute-path.zip +0 -0
  107. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-bytes-per-file-limit.zip +0 -0
  108. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-device.zip +0 -0
  109. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-duplicate-entry.zip +0 -0
  110. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-fifo.zip +0 -0
  111. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-files-per-skill-limit.zip +0 -0
  112. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-nul-name.zip +0 -0
  113. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-parent-traversal.zip +0 -0
  114. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-reserved-marker.zip +0 -0
  115. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-socket.zip +0 -0
  116. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-symlink.zip +0 -0
  117. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-total-uncompressed-limit.zip +0 -0
  118. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/invalid-windows-drive-prefix.zip +0 -0
  119. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/valid-single-skill-stored.zip +0 -0
  120. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/archives/valid-single-skill.zip +0 -0
  121. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/bundles/newer-than-plan.zip +0 -0
  122. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/bundles/normal.zip +0 -0
  123. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/catalog.json +0 -0
  124. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/corpus.sha256 +0 -0
  125. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/hashes/content-v1.json +0 -0
  126. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/hashes/manifest-v1.json +0 -0
  127. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/manifests/invalid-duplicate-identity.json +0 -0
  128. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/manifests/invalid-duplicate-install-name.json +0 -0
  129. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/manifests/invalid-manifest-hash.json +0 -0
  130. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/manifests/newer-than-plan.json +0 -0
  131. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/manifests/normal-bundle.json +0 -0
  132. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/responses/below-pro.json +0 -0
  133. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/responses/cli-upgrade-required.json +0 -0
  134. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/responses/lost-membership.json +0 -0
  135. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/responses/normal-empty-plan.json +0 -0
  136. {gumloop-0.4.2 → gumloop-0.4.3}/tests/fixtures/skill_sync/v1/responses/normal-plan.json +0 -0
  137. {gumloop-0.4.2 → gumloop-0.4.3}/tests/integration/conftest.py +0 -0
  138. {gumloop-0.4.2 → gumloop-0.4.3}/tests/integration/test_live.py +0 -0
  139. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/__init__.py +0 -0
  140. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/conftest.py +0 -0
  141. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/helpers.py +0 -0
  142. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_agents.py +0 -0
  143. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_artifacts.py +0 -0
  144. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_brain.py +0 -0
  145. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_chat.py +0 -0
  146. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_client.py +0 -0
  147. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_mcp.py +0 -0
  148. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_oauth.py +0 -0
  149. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_sessions.py +0 -0
  150. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_skills.py +0 -0
  151. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_sync.py +0 -0
  152. {gumloop-0.4.2 → gumloop-0.4.3}/tests/sdk/test_teams.py +0 -0
  153. {gumloop-0.4.2 → gumloop-0.4.3}/tests/skill_sync_fixtures.py +0 -0
  154. {gumloop-0.4.2 → gumloop-0.4.3}/tests/test_client.py +0 -0
@@ -0,0 +1,46 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+ environment: pypi
12
+ permissions:
13
+ id-token: write # PyPI trusted publishing
14
+ contents: write # create the GitHub Release
15
+ steps:
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
17
+
18
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
19
+
20
+ - name: Verify tag matches package version
21
+ run: |
22
+ version="$(uvx hatchling version)"
23
+ if [ "v${version}" != "${GITHUB_REF_NAME}" ]; then
24
+ echo "Tag ${GITHUB_REF_NAME} does not match package version ${version}" >&2
25
+ exit 1
26
+ fi
27
+
28
+ - name: Build
29
+ run: uv build
30
+
31
+ # --check-url skips files already on PyPI so the job is safe to rerun
32
+ # if a later step fails.
33
+ - name: Publish to PyPI
34
+ run: uv publish --trusted-publishing always --check-url https://pypi.org/simple/
35
+
36
+ # A tag created via the Releases UI already has a release; just attach
37
+ # the artifacts to it.
38
+ - name: Create GitHub Release
39
+ env:
40
+ GH_TOKEN: ${{ github.token }}
41
+ run: |
42
+ if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then
43
+ gh release upload "${GITHUB_REF_NAME}" dist/* --clobber
44
+ else
45
+ gh release create "${GITHUB_REF_NAME}" dist/* --generate-notes --verify-tag
46
+ fi
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gumloop
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Python client for the Gumloop API
5
5
  Project-URL: Homepage, https://github.com/gumloop/gumloop-py
6
6
  Project-URL: Bug Tracker, https://github.com/gumloop/gumloop-py/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "gumloop"
7
- version = "0.4.2"
7
+ dynamic = ["version"]
8
8
  description = "Python client for the Gumloop API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -32,6 +32,9 @@ dependencies = [
32
32
  "typer>=0.25.1",
33
33
  ]
34
34
 
35
+ [tool.hatch.version]
36
+ path = "src/gumloop/_version.py"
37
+
35
38
  [project.scripts]
36
39
  gumloop = "gumloop.cli.main:main"
37
40
 
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.4.2"
3
+ __version__ = "0.4.3"
@@ -180,6 +180,14 @@ class MessagePayload(_Model):
180
180
  parts: list[dict[str, Any]] | None = None
181
181
 
182
182
 
183
+ class SessionUsage(_Model):
184
+ credit_cost: float | None = None
185
+ tool_credit_cost: float | None = None
186
+ flow_credit_cost: float | None = None
187
+ input_tokens: int | None = None
188
+ output_tokens: int | None = None
189
+
190
+
183
191
  class Session(_Model):
184
192
  id: str
185
193
  agent_id: str
@@ -195,6 +203,7 @@ class Session(_Model):
195
203
  agent_tools: list[dict[str, Any]] = Field(default_factory=list)
196
204
  participants: dict[str, dict[str, Any]] = Field(default_factory=dict)
197
205
  creator: CreatorPayload | None = None
206
+ usage: SessionUsage | None = None
198
207
 
199
208
 
200
209
  class SessionResponse(_Model):
@@ -355,7 +355,6 @@ wheels = [
355
355
 
356
356
  [[package]]
357
357
  name = "gumloop"
358
- version = "0.4.2"
359
358
  source = { editable = "." }
360
359
  dependencies = [
361
360
  { name = "click" },
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