spaps 0.5.0__tar.gz → 0.6.2__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 (101) hide show
  1. {spaps-0.5.0 → spaps-0.6.2}/.gitignore +33 -0
  2. spaps-0.6.2/CHANGELOG.md +137 -0
  3. {spaps-0.5.0 → spaps-0.6.2}/FULL_CHECKLIST.md +1 -1
  4. spaps-0.6.2/PKG-INFO +799 -0
  5. spaps-0.6.2/README.md +743 -0
  6. {spaps-0.5.0 → spaps-0.6.2}/TDD_PLAN.md +1 -1
  7. {spaps-0.5.0 → spaps-0.6.2}/pyproject.toml +5 -1
  8. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/__init__.py +214 -4
  9. spaps-0.6.2/src/spaps_client/app_links.py +230 -0
  10. spaps-0.6.2/src/spaps_client/app_links_async.py +183 -0
  11. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/async_client.py +56 -1
  12. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/auth.py +456 -26
  13. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/auth_async.py +287 -15
  14. spaps-0.6.2/src/spaps_client/capability.py +785 -0
  15. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/client.py +114 -1
  16. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/crypto.py +11 -6
  17. spaps-0.6.2/src/spaps_client/dayrate.py +239 -0
  18. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/dayrate_async.py +17 -0
  19. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/email.py +16 -0
  20. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/email_async.py +3 -0
  21. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/entitlements.py +281 -5
  22. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/entitlements_async.py +230 -4
  23. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/issue_reporting.py +248 -7
  24. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/issue_reporting_async.py +147 -3
  25. spaps-0.6.2/src/spaps_client/marketing.py +306 -0
  26. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/payments.py +295 -55
  27. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/payments_async.py +66 -65
  28. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/sessions.py +4 -3
  29. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/sessions_async.py +4 -4
  30. spaps-0.6.2/src/spaps_client/skill_evals.py +226 -0
  31. spaps-0.6.2/src/spaps_client/skill_evals_async.py +226 -0
  32. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/storage.py +39 -3
  33. spaps-0.6.2/src/spaps_client/usage.py +430 -0
  34. spaps-0.6.2/src/spaps_client/usage_async.py +216 -0
  35. spaps-0.6.2/src/spaps_client/users.py +409 -0
  36. spaps-0.6.2/src/spaps_client/users_async.py +272 -0
  37. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/whitelist.py +5 -8
  38. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/whitelist_async.py +5 -9
  39. spaps-0.6.2/src/spaps_client/x402.py +201 -0
  40. spaps-0.6.2/src/spaps_client/x402_async.py +241 -0
  41. {spaps-0.5.0 → spaps-0.6.2}/tests/integration/test_build.py +23 -1
  42. spaps-0.6.2/tests/unit/test_app_links.py +177 -0
  43. spaps-0.6.2/tests/unit/test_async_client.py +838 -0
  44. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_auth.py +521 -3
  45. spaps-0.6.2/tests/unit/test_capability.py +215 -0
  46. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_client.py +4 -4
  47. spaps-0.6.2/tests/unit/test_dayrate.py +137 -0
  48. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_email.py +31 -0
  49. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_entitlements.py +343 -0
  50. spaps-0.6.2/tests/unit/test_issue_reporting.py +635 -0
  51. spaps-0.6.2/tests/unit/test_marketing.py +237 -0
  52. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_payments.py +343 -212
  53. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_quickstart_full_adoption_async.py +80 -11
  54. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_readme_snippets.py +17 -5
  55. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_sessions.py +2 -4
  56. spaps-0.6.2/tests/unit/test_skill_evals.py +476 -0
  57. spaps-0.6.2/tests/unit/test_storage.py +110 -0
  58. spaps-0.6.2/tests/unit/test_usage.py +405 -0
  59. spaps-0.6.2/tests/unit/test_users.py +343 -0
  60. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_users_async.py +148 -1
  61. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_whitelist.py +7 -10
  62. spaps-0.6.2/tests/unit/test_x402.py +206 -0
  63. spaps-0.5.0/CHANGELOG.md +0 -83
  64. spaps-0.5.0/PKG-INFO +0 -330
  65. spaps-0.5.0/README.md +0 -274
  66. spaps-0.5.0/src/spaps_client/usage.py +0 -266
  67. spaps-0.5.0/src/spaps_client/usage_async.py +0 -140
  68. spaps-0.5.0/src/spaps_client/users.py +0 -156
  69. spaps-0.5.0/src/spaps_client/users_async.py +0 -102
  70. spaps-0.5.0/tests/unit/test_async_client.py +0 -376
  71. spaps-0.5.0/tests/unit/test_issue_reporting.py +0 -189
  72. spaps-0.5.0/tests/unit/test_storage.py +0 -39
  73. spaps-0.5.0/tests/unit/test_usage.py +0 -205
  74. {spaps-0.5.0 → spaps-0.6.2}/LICENSE +0 -0
  75. {spaps-0.5.0 → spaps-0.6.2}/TODO.md +0 -0
  76. {spaps-0.5.0 → spaps-0.6.2}/docs/RELEASE_CHECKLIST.md +0 -0
  77. {spaps-0.5.0 → spaps-0.6.2}/scripts/manage_version.py +0 -0
  78. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/config.py +0 -0
  79. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/crypto_async.py +0 -0
  80. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/device_flow.py +0 -0
  81. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/http.py +0 -0
  82. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/http_async.py +0 -0
  83. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/metrics.py +0 -0
  84. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/metrics_async.py +0 -0
  85. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/permissions.py +0 -0
  86. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/py.typed +0 -0
  87. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/secure_messages.py +0 -0
  88. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/secure_messages_async.py +0 -0
  89. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/support_telemetry.py +0 -0
  90. {spaps-0.5.0 → spaps-0.6.2}/src/spaps_client/webhooks.py +0 -0
  91. {spaps-0.5.0 → spaps-0.6.2}/tests/conftest.py +0 -0
  92. {spaps-0.5.0 → spaps-0.6.2}/tests/integration/test_smoke.py +0 -0
  93. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_config.py +0 -0
  94. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_device_flow.py +0 -0
  95. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_http.py +0 -0
  96. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_metadata.py +0 -0
  97. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_metrics.py +0 -0
  98. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_permissions.py +0 -0
  99. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_secure_messages.py +0 -0
  100. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_support_telemetry.py +0 -0
  101. {spaps-0.5.0 → spaps-0.6.2}/tests/unit/test_webhooks.py +0 -0
@@ -22,6 +22,7 @@ coverage-*/
22
22
  **/coverage/
23
23
  **/coverage-*/
24
24
  **/.coverage
25
+ **/.coverage.*
25
26
  **/.pytest_cache/
26
27
  **/.mypy_cache/
27
28
  **/.ruff_cache/
@@ -78,7 +79,13 @@ storybook-static/
78
79
  # IDE
79
80
  .vscode/
80
81
  .idea/
82
+ .codex/
83
+ .mcp.json
81
84
  .claude/settings.local.json
85
+ .claude/skills/
86
+ .beads/*.db
87
+ .beads/*.db-shm
88
+ .beads/*.db-wal
82
89
  *.swp
83
90
  *.swo
84
91
  *.swn
@@ -151,6 +158,18 @@ backup-feb8.sql
151
158
  # Stripe CLI
152
159
  .stripe-listen.pid
153
160
 
161
+ # Local Solana Devnet keypairs
162
+ *-devnet.json
163
+
164
+ # Local modes/swarm artifacts
165
+ .ntm/
166
+ .skillbox/
167
+ artifacts/openapi-contract/
168
+ MODES_ANALYSIS_PROGRESS.md
169
+ MODES_OF_REASONING_REPORT_AND_ANALYSIS_OF_PROJECT.md
170
+ MODE_OUTPUT_*.md
171
+ MODES_SWARM/
172
+
154
173
  # OS files
155
174
  Thumbs.db
156
175
  Desktop.ini
@@ -164,6 +183,7 @@ Desktop.ini
164
183
  test-results/
165
184
  playwright-report/
166
185
  playwright/.cache/
186
+ tests/artifacts/
167
187
 
168
188
  # Lock files that shouldn't be committed for libraries
169
189
  # (keep package-lock.json for applications)
@@ -171,3 +191,16 @@ playwright/.cache/
171
191
  # pnpm-lock.yaml*.tgz
172
192
 
173
193
  **/coverage.xml
194
+
195
+ context.yaml
196
+ MODES_OF_REASONING_SECOND_PASS_REPORT.md
197
+ skillbox-config/
198
+
199
+ # Simplify/refactor tool run artifacts
200
+ refactor/
201
+
202
+ # bv (beads viewer) local config and caches
203
+ .bv/
204
+
205
+ # Beads compliance audit dir (managed by /beads-compliance-and-completion-verification skill)
206
+ /beads_compliance_audit/
@@ -0,0 +1,137 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.6.2] - 2026-06-16
10
+
11
+ ### Fixed
12
+
13
+ - Accepted `stream`, `owner_id`, `subject_override`, and `body_override` on `EmailClient.send()` and accepted `stream` on `AsyncEmailClient.send()` so Python consumers can delegate SPAPS email sends without hand-rolling the `/api/email/send` envelope.
14
+
15
+ ### Changed
16
+
17
+ - Bumped the Python client package metadata to `0.6.2`.
18
+
19
+ ## [0.6.1] - 2026-06-14
20
+
21
+ ### Added
22
+
23
+ - Added sync `DayrateClient` helpers and sync/async `AppLinksClient` helpers, with high-level `SpapsClient.dayrate`, `SpapsClient.app_links`, and `AsyncSpapsClient.app_links` accessors.
24
+ - Added sync and async `UsersClient.memberships` helpers for listing, inviting/adding, and removing app account users.
25
+ - Added sync and async `EntitlementsClient.project_grants` helpers for granting, revoking, listing, checking, and claiming project access grants.
26
+
27
+ ### Fixed
28
+
29
+ - Accepted canonical SPAPS password reset request envelopes that return `success`, `data.email`, `data.sent_at`, `request_id`, and `timestamp` without requiring a top-level English `message`.
30
+ - Exposed omitted password reset request messages as `None` instead of an empty string placeholder so apps keep ownership of success copy.
31
+ - Preserved password reset confirmation parsing for canonical envelopes where the success copy lives at `data.message`.
32
+
33
+ ### Changed
34
+
35
+ - Bumped the Python client package metadata to `0.6.1`; HTMA should consume `spaps>=0.6.1` or the matching unreleased local wheel/source checkout before retrying the reset flow.
36
+
37
+ ## [0.6.0] - 2026-06-13
38
+
39
+ ### Added
40
+
41
+ - Added sync and async auth helpers for OIDC nonce/sign-in, WebAuthn registration/assertion, TOTP MFA enrollment/verification/disable, and SMS OTP request/verify flows.
42
+ - Added typed MFA challenge responses so token-issuing auth methods can return either tokens or an MFA challenge without storing incomplete credentials.
43
+
44
+ ### Changed
45
+
46
+ - Bumped the Python client package metadata to `0.6.0`.
47
+
48
+ ## [0.5.1] - 2026-06-04
49
+
50
+ ### Added
51
+
52
+ - Added sync and async issue-reporting screenshot attachment helpers for private upload, list, access URL, delete, and attach-by-ID create/update/reply flows.
53
+
54
+ ## [0.5.0] - 2026-03-29
55
+
56
+ ### Added
57
+
58
+ - End-user issue-report flows across the Python client surface.
59
+ - Support-telemetry helpers aligned with the current SPAPS platform APIs.
60
+
61
+ ### Changed
62
+
63
+ - Refreshed package docs and OSS-facing references for the published client surface.
64
+
65
+ ## [0.4.1] - 2026-02-18
66
+
67
+ ### Changed
68
+
69
+ - Relaxed required fields in email and entitlement schemas for forward compatibility.
70
+ - Relaxed `Entitlement.source` from `Literal` to `str` to accept newly introduced source types without forcing immediate client upgrades.
71
+
72
+ ## [0.4.0] - 2026-02-17
73
+
74
+ ### Added
75
+
76
+ - `UsersClient` and `AsyncUsersClient` for user management operations.
77
+ - Async quickstart parity wrappers aligned with server-side helpers.
78
+ - Referral fields in registration flow.
79
+
80
+ ## [0.3.0] - 2026-02-11
81
+
82
+ ### Changed
83
+
84
+ - Consolidated SPAPS integration patterns into published packages.
85
+ - Aligned Python client surface area with production SPAPS APIs.
86
+
87
+ ## [0.2.0] - 2025-12-30
88
+
89
+ ### Added
90
+
91
+ - Broader SDK coverage to support production cutover requirements.
92
+ - Email-service and set-password endpoint client stubs.
93
+
94
+ ### Changed
95
+
96
+ - Standardized configuration defaults (including port `3301` and environment symlink conventions).
97
+
98
+ ## [0.1.4] - 2025-11-09
99
+
100
+ ### Fixed
101
+
102
+ - Session validation response parsing for the `valid` field contract.
103
+
104
+ ## [0.1.3] - 2025-10-14
105
+
106
+ ### Added
107
+
108
+ - Subscription list/detail/cancel/swap helpers to match TypeScript SDK behavior.
109
+ - Checkout session lookup/list/expire and guest checkout lifecycle helpers.
110
+ - Stripe payment history summaries and payment-detail retrieval.
111
+ - Client-side role/permission utilities in `spaps_client.permissions`.
112
+
113
+ ### Changed
114
+
115
+ - Refreshed README examples for newly added helpers.
116
+
117
+ ## [0.1.2] - 2025-10-12
118
+
119
+ ### Changed
120
+
121
+ - Standardized crypto invoice lookup helper behavior and logging paths.
122
+
123
+ ## [0.1.1] - 2025-10-11
124
+
125
+ ### Changed
126
+
127
+ - Widened `httpx` dependency range to `<0.29` for FastAPI default-stack compatibility (`0.28.x`).
128
+
129
+ ## [0.1.0] - 2025-10-11
130
+
131
+ ### Added
132
+
133
+ - Initial public PyPI release under the `spaps` distribution name.
134
+ - Sync and async clients for sessions, payments (including crypto), usage, whitelist, secure messages, and metrics.
135
+ - Configurable retry/backoff behavior, logging hooks, and token storage abstractions.
136
+ - Linting/type-checking/coverage gates integrated with the release workflow.
137
+ - Python quickstart documentation and backend integration guide.
@@ -12,7 +12,7 @@
12
12
  - [x] Payments: update payment method
13
13
  - [x] Payments: Stripe checkout (existing)
14
14
  - [x] Payments: Stripe payment intent (existing)
15
- - [x] Payments: wallet deposit/status (existing)
15
+ - [x] Payments: wallet deposit/status helpers intentionally raise `NotImplementedError` for backend 501 stubs
16
16
  - [x] Payments: subscription details/cancel (existing)
17
17
  - [x] Payments: crypto invoices (create/get/reconcile)
18
18
  - [x] Payments: crypto webhooks signature helper