vb-os 0.1.0__py3-none-any.whl

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 (82) hide show
  1. vb_os-0.1.0.dist-info/METADATA +500 -0
  2. vb_os-0.1.0.dist-info/RECORD +82 -0
  3. vb_os-0.1.0.dist-info/WHEEL +4 -0
  4. vb_os-0.1.0.dist-info/entry_points.txt +2 -0
  5. vb_os-0.1.0.dist-info/licenses/LICENSE +6 -0
  6. vbos/__init__.py +229 -0
  7. vbos/_transport.py +40 -0
  8. vbos/client.py +505 -0
  9. vbos/exceptions.py +136 -0
  10. vbos/models.py +920 -0
  11. vbos/py.typed +0 -0
  12. vbos/resources/__init__.py +0 -0
  13. vbos/resources/account.py +96 -0
  14. vbos/resources/alert_rules.py +125 -0
  15. vbos/resources/analytics.py +144 -0
  16. vbos/resources/audit_log.py +80 -0
  17. vbos/resources/billing.py +64 -0
  18. vbos/resources/boundaries.py +278 -0
  19. vbos/resources/certification_models.py +107 -0
  20. vbos/resources/certifications.py +147 -0
  21. vbos/resources/connector_providers.py +67 -0
  22. vbos/resources/connectors.py +541 -0
  23. vbos/resources/deployments.py +261 -0
  24. vbos/resources/environments.py +171 -0
  25. vbos/resources/flow_templates.py +67 -0
  26. vbos/resources/flows.py +458 -0
  27. vbos/resources/governed_workspaces.py +349 -0
  28. vbos/resources/keys.py +251 -0
  29. vbos/resources/members.py +135 -0
  30. vbos/resources/named_sets.py +146 -0
  31. vbos/resources/notifications.py +83 -0
  32. vbos/resources/org.py +135 -0
  33. vbos/resources/projects.py +210 -0
  34. vbos/resources/service_accounts.py +111 -0
  35. vbos/resources/templates.py +80 -0
  36. vbos/resources/users.py +53 -0
  37. vbos/resources/webhooks.py +194 -0
  38. vbos/resources/workspaces.py +170 -0
  39. vbos/retry.py +72 -0
  40. vbos_cli/__init__.py +3 -0
  41. vbos_cli/__main__.py +5 -0
  42. vbos_cli/cli.py +218 -0
  43. vbos_cli/client.py +215 -0
  44. vbos_cli/commands/__init__.py +1 -0
  45. vbos_cli/commands/account.py +155 -0
  46. vbos_cli/commands/alert_rules.py +205 -0
  47. vbos_cli/commands/analytics.py +53 -0
  48. vbos_cli/commands/audit_log.py +109 -0
  49. vbos_cli/commands/auth.py +397 -0
  50. vbos_cli/commands/boundaries.py +504 -0
  51. vbos_cli/commands/certify.py +316 -0
  52. vbos_cli/commands/completions.py +36 -0
  53. vbos_cli/commands/config_cmd.py +101 -0
  54. vbos_cli/commands/connectors.py +596 -0
  55. vbos_cli/commands/deployments.py +248 -0
  56. vbos_cli/commands/environments.py +213 -0
  57. vbos_cli/commands/evaluations.py +236 -0
  58. vbos_cli/commands/flows.py +812 -0
  59. vbos_cli/commands/governed_workspaces.py +239 -0
  60. vbos_cli/commands/keys.py +221 -0
  61. vbos_cli/commands/members.py +187 -0
  62. vbos_cli/commands/named_sets.py +190 -0
  63. vbos_cli/commands/notifications.py +135 -0
  64. vbos_cli/commands/org.py +83 -0
  65. vbos_cli/commands/org_mgmt.py +121 -0
  66. vbos_cli/commands/projects.py +330 -0
  67. vbos_cli/commands/replay.py +44 -0
  68. vbos_cli/commands/templates.py +128 -0
  69. vbos_cli/commands/verify.py +150 -0
  70. vbos_cli/commands/webhooks.py +353 -0
  71. vbos_cli/commands/workspaces.py +163 -0
  72. vbos_cli/config.py +99 -0
  73. vbos_cli/credentials/__init__.py +1 -0
  74. vbos_cli/credentials/file.py +141 -0
  75. vbos_cli/credentials/keychain.py +54 -0
  76. vbos_cli/credentials/migration.py +39 -0
  77. vbos_cli/credentials/store.py +124 -0
  78. vbos_cli/errors.py +40 -0
  79. vbos_cli/formatters.py +288 -0
  80. vbos_cli/local_bridge.py +233 -0
  81. vbos_cli/output.py +67 -0
  82. vbos_cli/profiles.py +15 -0
@@ -0,0 +1,500 @@
1
+ Metadata-Version: 2.5
2
+ Name: vb-os
3
+ Version: 0.1.0
4
+ Summary: Python SDK for the VB-OS Verification Cloud Platform
5
+ Project-URL: Homepage, https://vb-os.org
6
+ Project-URL: Documentation, https://docs.vb-os.org
7
+ Project-URL: Repository, https://github.com/VB-OS/vb-os-python-sdk
8
+ Author-email: "MNC Labs, Inc." <engineering@vb-os.org>
9
+ Maintainer-email: "Asaad N. Riaz" <asaad@vb-os.org>
10
+ License-Expression: LicenseRef-Proprietary
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: Other/Proprietary License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: httpx<1.0.0,>=0.27.0
23
+ Requires-Dist: pydantic<3.0.0,>=2.0.0
24
+ Provides-Extra: cli
25
+ Requires-Dist: click<9.0.0,>=8.1.0; extra == 'cli'
26
+ Requires-Dist: cryptography<45.0.0,>=43.0.0; extra == 'cli'
27
+ Requires-Dist: keyring<26.0.0,>=25.0.0; extra == 'cli'
28
+ Requires-Dist: tomli-w<2.0.0,>=1.0.0; extra == 'cli'
29
+ Provides-Extra: dev
30
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
31
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
32
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
33
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
34
+ Requires-Dist: respx>=0.22.0; extra == 'dev'
35
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
36
+ Description-Content-Type: text/markdown
37
+
38
+ # VB-OS Python SDK
39
+
40
+ Python SDK for the VB-OS Verification Cloud Platform.
41
+
42
+ ## Installation
43
+
44
+ ```bash
45
+ pip install vb-os
46
+ ```
47
+
48
+ ## Quick Start
49
+
50
+ ```python
51
+ from vbos import VBOSClient
52
+
53
+ with VBOSClient(api_key="your-api-key") as client:
54
+ result = client.verify(
55
+ workload={"amount": 5000, "currency": "USD"},
56
+ boundary_ref="B_FIN_PAYMENT",
57
+ )
58
+ print(result.decision) # ASSERT or DEFER
59
+ ```
60
+
61
+ ### Async Usage
62
+
63
+ ```python
64
+ from vbos import AsyncVBOSClient
65
+
66
+ async with AsyncVBOSClient(api_key="your-api-key") as client:
67
+ result = await client.verify(
68
+ workload={"amount": 5000, "currency": "USD"},
69
+ boundary_ref="B_FIN_PAYMENT",
70
+ )
71
+ print(result.decision)
72
+ ```
73
+
74
+ ## Configuration
75
+
76
+ ```python
77
+ client = VBOSClient(
78
+ api_key="your-api-key",
79
+ base_url="https://api.vb-os.org", # default
80
+ max_retries=3, # default; 5xx only
81
+ timeout=30.0, # seconds
82
+ )
83
+ ```
84
+
85
+ ## Resource Namespaces
86
+
87
+ All 27 resource groups are available as namespaced sub-clients on both
88
+ `VBOSClient` (sync) and `AsyncVBOSClient` (async).
89
+
90
+ ### Verification
91
+
92
+ ```python
93
+ # Single verification
94
+ result = client.verify(workload={"amount": 5000}, boundary_ref="B_FIN")
95
+
96
+ # Batch verification
97
+ results = client.verify_batch(
98
+ workloads=[{"amount": 1000}, {"amount": 2000}],
99
+ boundary_ref="B_FIN",
100
+ )
101
+
102
+ # Dry-run validation (no record created)
103
+ validation = client.validate(
104
+ workload={"amount": 5000},
105
+ boundary_ref="B_FIN",
106
+ )
107
+
108
+ # Trigger certification run
109
+ run = client.certify(project_id="proj-id", scope="full")
110
+ ```
111
+
112
+ ### Evaluations
113
+
114
+ ```python
115
+ # List evaluations
116
+ page = client.evaluations.list("project-id", limit=50)
117
+
118
+ # Get evaluation detail
119
+ detail = client.evaluations.get("project-id", "eval-id")
120
+
121
+ # Replay an evaluation
122
+ replay = client.evaluations.replay("project-id", "eval-id")
123
+
124
+ # Export evaluations
125
+ export = client.evaluations.export("project-id", format="csv")
126
+
127
+ # Share an evaluation
128
+ share = client.evaluations.share("project-id", "eval-id")
129
+
130
+ # Retrieve a shared evaluation by token
131
+ shared = client.evaluations.get_shared("share-token")
132
+ ```
133
+
134
+ ### Boundaries
135
+
136
+ ```python
137
+ boundaries = client.boundaries.list("project-id")
138
+ boundary = client.boundaries.create(
139
+ "project-id",
140
+ boundary_ref="B_KYC_CHECK",
141
+ display_name="KYC Check",
142
+ )
143
+ boundary = client.boundaries.get("project-id", "B_KYC_CHECK")
144
+ client.boundaries.update_draft(
145
+ "project-id", "B_KYC_CHECK",
146
+ dsl_source="require_evidence: license_number",
147
+ )
148
+ client.boundaries.submit("project-id", "B_KYC_CHECK")
149
+ versions = client.boundaries.versions("project-id", "B_KYC_CHECK")
150
+ version = client.boundaries.get_version("project-id", "B_KYC_CHECK", "v1")
151
+ client.boundaries.approve("project-id", "B_KYC_CHECK", "v1")
152
+ client.boundaries.reject("project-id", "B_KYC_CHECK", "v1")
153
+ diff = client.boundaries.diff("project-id", "B_KYC_CHECK", "v1", "v2")
154
+ ```
155
+
156
+ ### Deployments
157
+
158
+ ```python
159
+ deployments = client.deployments.list("project-id", "env-id")
160
+ deployment = client.deployments.create("project-id", "env-id", version_id="v1")
161
+ active = client.deployments.active("project-id", "env-id")
162
+ client.deployments.approve("project-id", "env-id", "deploy-id")
163
+ client.deployments.reject("project-id", "env-id", "deploy-id")
164
+ client.deployments.promote("project-id", "env-id", "deploy-id")
165
+ client.deployments.rollback("project-id", "env-id", "deploy-id")
166
+ ```
167
+
168
+ ### Certifications
169
+
170
+ ```python
171
+ runs = client.certifications.list("project-id")
172
+ run = client.certifications.get("project-id", "run-id")
173
+ report = client.certifications.get_report("project-id", "run-id")
174
+
175
+ # Poll until terminal status (COMPLETED/FAILED/CANCELLED)
176
+ result = client.certifications.wait(
177
+ "project-id", "run-id",
178
+ poll_interval_seconds=2.0,
179
+ max_attempts=150,
180
+ )
181
+ ```
182
+
183
+ ### Certification Models
184
+
185
+ ```python
186
+ models = client.certification_models.list("project-id")
187
+ model = client.certification_models.create("project-id", name="Model A")
188
+ version = client.certification_models.create_version(
189
+ "project-id", "model-id",
190
+ )
191
+ ```
192
+
193
+ ### Projects
194
+
195
+ ```python
196
+ projects = client.projects.list()
197
+ project = client.projects.create(name="My Project", slug="my-project")
198
+ project = client.projects.get("project-id")
199
+ client.projects.update("project-id", name="Renamed")
200
+ client.projects.archive("project-id")
201
+ client.projects.delete("project-id")
202
+ members = client.projects.list_members("project-id")
203
+ client.projects.add_member("project-id", user_id="user-id", role="editor")
204
+ client.projects.remove_member("project-id", "user-id")
205
+ client.projects.update_member("project-id", "user-id", role="viewer")
206
+ ```
207
+
208
+ ### Environments
209
+
210
+ ```python
211
+ envs = client.environments.list("project-id")
212
+ env = client.environments.create("project-id", name="staging")
213
+ env = client.environments.get("project-id", "env-id")
214
+ client.environments.update("project-id", "env-id", name="production")
215
+ client.environments.deactivate("project-id", "env-id")
216
+ client.environments.reactivate("project-id", "env-id")
217
+ ```
218
+
219
+ ### Templates
220
+
221
+ ```python
222
+ templates = client.templates.list()
223
+ template = client.templates.get("template-id")
224
+ fork = client.templates.fork("template-id", project_id="proj-id")
225
+ ```
226
+
227
+ ### Organization
228
+
229
+ ```python
230
+ org = client.org.get()
231
+ client.org.update(display_name="My Org")
232
+ settings = client.org.get_settings()
233
+ client.org.update_settings(default_project="proj-id")
234
+ policy = client.org.get_ai_policy()
235
+ client.org.update_ai_policy(allowed_models=["gpt-4"])
236
+ client.org.transfer_ownership(new_owner_id="user-id")
237
+ client.org.accept_transfer("transfer-id")
238
+ client.org.cancel_transfer("transfer-id")
239
+ transfer = client.org.get_transfer()
240
+ ```
241
+
242
+ ### Members
243
+
244
+ ```python
245
+ members = client.members.list()
246
+ client.members.invite(email="user@example.com", role="member")
247
+ client.members.set_role("user-id", role="admin")
248
+ client.members.remove("user-id")
249
+ client.members.suspend("user-id")
250
+ client.members.reactivate("user-id")
251
+ client.members.revoke_invitation("invitation-id")
252
+ ```
253
+
254
+ ### API Keys
255
+
256
+ ```python
257
+ keys = client.keys.list()
258
+ created = client.keys.create(name="CI Key", scopes=["verify"])
259
+ key = client.keys.get("key-id")
260
+ client.keys.rotate("key-id")
261
+ client.keys.revoke("key-id")
262
+ client.keys.disable("key-id")
263
+ client.keys.enable("key-id")
264
+ ```
265
+
266
+ ### Service Accounts
267
+
268
+ ```python
269
+ accounts = client.service_accounts.list()
270
+ account = client.service_accounts.create(name="deploy-bot")
271
+ client.service_accounts.update("sa-id", name="deploy-bot-v2")
272
+ client.service_accounts.disable("sa-id")
273
+ client.service_accounts.enable("sa-id")
274
+ ```
275
+
276
+ ### Webhooks
277
+
278
+ ```python
279
+ hooks = client.webhooks.list("project-id")
280
+ hook = client.webhooks.create("project-id", url="https://...")
281
+ client.webhooks.update("project-id", "hook-id", url="https://new")
282
+ client.webhooks.delete("project-id", "hook-id")
283
+ client.webhooks.rotate_secret("project-id", "hook-id")
284
+ deliveries = client.webhooks.deliveries("project-id", "hook-id")
285
+ org_hooks = client.webhooks.list_org()
286
+ client.webhooks.create_org(url="https://org-level")
287
+ ```
288
+
289
+ ### Analytics
290
+
291
+ ```python
292
+ rate = client.analytics.assertion_rate("project-id")
293
+ deferral = client.analytics.deferral_rate("project-id")
294
+ summary = client.analytics.evaluations("project-id")
295
+ failures = client.analytics.failure_reasons("project-id")
296
+ latency = client.analytics.latency("project-id")
297
+ ```
298
+
299
+ ### Audit Log
300
+
301
+ ```python
302
+ logs = client.audit_log.list()
303
+ job = client.audit_log.export(start="2025-01-01", end="2025-02-01")
304
+ status = client.audit_log.export_status("job-id")
305
+ ```
306
+
307
+ ### Billing
308
+
309
+ ```python
310
+ usage = client.billing.usage()
311
+ subscription = client.billing.subscription()
312
+ invoices = client.billing.invoices()
313
+ ```
314
+
315
+ ### Flows
316
+
317
+ ```python
318
+ flow = client.flows.create("project-id", name="Onboarding")
319
+ flows = client.flows.list("project-id")
320
+ flow = client.flows.get("project-id", "flow-id")
321
+ client.flows.update("project-id", "flow-id", name="Updated")
322
+ client.flows.delete("project-id", "flow-id")
323
+ export = client.flows.export("project-id", "flow-id")
324
+ client.flows.import_flow("project-id", definition={...})
325
+ client.flows.from_template("project-id", template_id="tmpl-id")
326
+ v = client.flows.create_version("project-id", "flow-id")
327
+ versions = client.flows.list_versions("project-id", "flow-id")
328
+ v = client.flows.get_version("project-id", "flow-id", "v1")
329
+ client.flows.update_version("project-id", "flow-id", "v1", name="v1-fix")
330
+ client.flows.delete_version("project-id", "flow-id", "v1")
331
+ client.flows.approve_version("project-id", "flow-id", "v1")
332
+ client.flows.deploy("project-id", "flow-id", env_id="env-id")
333
+ client.flows.suspend("project-id", "flow-id")
334
+ dry = client.flows.dry_run("project-id", "flow-id", workload={...})
335
+ execs = client.flows.list_executions("project-id", "flow-id")
336
+ recon = client.flows.reconstruct_execution(
337
+ "project-id", "flow-id", "exec-id",
338
+ )
339
+ ```
340
+
341
+ ### Flow Templates
342
+
343
+ ```python
344
+ templates = client.flow_templates.list()
345
+ template = client.flow_templates.get("template-id")
346
+ ```
347
+
348
+ ### Alert Rules
349
+
350
+ ```python
351
+ rule = client.alert_rules.create("project-id", name="High Defer")
352
+ rules = client.alert_rules.list("project-id")
353
+ rule = client.alert_rules.get("project-id", "rule-id")
354
+ client.alert_rules.update("project-id", "rule-id", name="Updated")
355
+ client.alert_rules.delete("project-id", "rule-id")
356
+ ```
357
+
358
+ ### Connectors
359
+
360
+ ```python
361
+ connector = client.connectors.create("project-id", provider="npi")
362
+ connectors = client.connectors.list("project-id")
363
+ connector = client.connectors.get("project-id", "conn-id")
364
+ client.connectors.update("project-id", "conn-id", name="Renamed")
365
+ client.connectors.delete("project-id", "conn-id")
366
+ test = client.connectors.test("project-id", "conn-id")
367
+ gather = client.connectors.gather("project-id", "conn-id")
368
+ analytics = client.connectors.analytics("project-id", "conn-id")
369
+ resources = client.connectors.resources("project-id", "conn-id")
370
+ schema = client.connectors.schema("project-id", "conn-id")
371
+ schedule = client.connectors.get_schedule("project-id", "conn-id")
372
+ client.connectors.set_schedule("project-id", "conn-id", cron="0 * * * *")
373
+ gathers = client.connectors.list_gathers("project-id", "conn-id")
374
+ ```
375
+
376
+ ### Connector Providers
377
+
378
+ ```python
379
+ providers = client.connector_providers.list()
380
+ schema = client.connector_providers.schema("npi")
381
+ ```
382
+
383
+ ### Named Sets
384
+
385
+ ```python
386
+ ns = client.named_sets.create("project-id", name="Exclusions")
387
+ sets = client.named_sets.list("project-id")
388
+ ns = client.named_sets.get("project-id", "set-id")
389
+ client.named_sets.update("project-id", "set-id", name="Updated")
390
+ client.named_sets.delete("project-id", "set-id")
391
+ usage = client.named_sets.usage("project-id", "set-id")
392
+ ```
393
+
394
+ ### Governed Workspaces
395
+
396
+ ```python
397
+ gw = client.governed_workspaces.create("project-id", name="Prod")
398
+ gws = client.governed_workspaces.list("project-id")
399
+ gw = client.governed_workspaces.get("project-id", "gw-id")
400
+ v = client.governed_workspaces.create_version("project-id", "gw-id")
401
+ v = client.governed_workspaces.get_version("project-id", "gw-id", "v1")
402
+ client.governed_workspaces.submit("project-id", "gw-id", "v1")
403
+ client.governed_workspaces.approve("project-id", "gw-id", "v1")
404
+ client.governed_workspaces.deploy("project-id", "gw-id", "v1")
405
+ client.governed_workspaces.archive("project-id", "gw-id")
406
+ inst = client.governed_workspaces.create_instance(
407
+ "project-id", "gw-id",
408
+ )
409
+ client.governed_workspaces.submit_instance(
410
+ "project-id", "gw-id", "inst-id",
411
+ )
412
+ inst = client.governed_workspaces.get_instance(
413
+ "project-id", "gw-id", "inst-id",
414
+ )
415
+ ```
416
+
417
+ ### Notifications
418
+
419
+ ```python
420
+ notifications = client.notifications.list()
421
+ client.notifications.read("notification-id")
422
+ client.notifications.unread("notification-id")
423
+ ```
424
+
425
+ ### Account
426
+
427
+ ```python
428
+ client.account.delete()
429
+ client.account.cancel_delete()
430
+ status = client.account.deletion_status()
431
+ export = client.account.export()
432
+ latest = client.account.export_latest()
433
+ status = client.account.export_status("export-id")
434
+ download = client.account.export_download("export-id")
435
+ ```
436
+
437
+ ### Workspaces
438
+
439
+ ```python
440
+ workspaces = client.workspaces.list()
441
+ ws = client.workspaces.create(name="Engineering")
442
+ ws = client.workspaces.get("ws-id")
443
+ client.workspaces.update("ws-id", name="Renamed")
444
+ client.workspaces.archive("ws-id")
445
+ client.workspaces.delete("ws-id")
446
+ members = client.workspaces.list_members("ws-id")
447
+ client.workspaces.add_member("ws-id", user_id="user-id")
448
+ client.workspaces.remove_member("ws-id", "user-id")
449
+ ```
450
+
451
+ ### Users
452
+
453
+ ```python
454
+ me = client.users.me()
455
+ orgs = client.users.organizations()
456
+ ```
457
+
458
+ ## Error Handling
459
+
460
+ ```python
461
+ from vbos import (
462
+ VBOSError,
463
+ VBOSAuthenticationError,
464
+ VBOSAuthorizationError,
465
+ VBOSNotFoundError,
466
+ VBOSRateLimitError,
467
+ VBOSServerError,
468
+ VBOSValidationError,
469
+ )
470
+
471
+ try:
472
+ result = client.verify(workload={"amount": 5000})
473
+ except VBOSRateLimitError as e:
474
+ print(f"Rate limited, retry after {e.retry_after}s")
475
+ except VBOSAuthenticationError:
476
+ print("Invalid API key")
477
+ except VBOSNotFoundError:
478
+ print("Resource not found")
479
+ except VBOSServerError:
480
+ print("Server error (retried automatically)")
481
+ except VBOSError as e:
482
+ print(f"[{e.status_code}] {e.error_code}: {e.message}")
483
+ ```
484
+
485
+ ## Retry Behavior
486
+
487
+ - **5xx responses** are retried with full-jitter exponential backoff
488
+ (up to `max_retries`, default 3).
489
+ - **429 (rate limited)** raises `VBOSRateLimitError` immediately
490
+ (no automatic retry). The `retry_after` attribute contains the
491
+ server-suggested wait time.
492
+ - All other errors raise immediately without retry.
493
+
494
+ ## Development
495
+
496
+ ```bash
497
+ pip install -e ".[dev]"
498
+ python -m pytest tests/ -v
499
+ python -m ruff check vbos/ tests/
500
+ ```
@@ -0,0 +1,82 @@
1
+ vbos/__init__.py,sha256=xLJRzoLNpripdn4JJR6rCeom8f0N0uME-_IjKl5W0YQ,4858
2
+ vbos/_transport.py,sha256=iIv3ViIYB88pJqRlLUahJmCBisiQdwrt7wu6STDZkdE,1123
3
+ vbos/client.py,sha256=bA9n-Wl_WZzd2v0Q6n952E4NbaZfz_Ib3_X7FYzBChc,21594
4
+ vbos/exceptions.py,sha256=aNYqsNf5lD9_bzk8ECLLKWZnlxF2b201DJZKl8bbPHQ,3574
5
+ vbos/models.py,sha256=ua6UF9QY_LeyHrJcnNP8Z-c48TdvGP22NP8CaiYEQbA,23832
6
+ vbos/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ vbos/retry.py,sha256=W5l0FlusJqU3is8BVxu_tdSznCHweBnLwUn_2M6Pms0,2060
8
+ vbos/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ vbos/resources/account.py,sha256=ZcFXUT7lz6YYGD7p4IW0A333ouFx6qEY0Gdv80bZE28,3565
10
+ vbos/resources/alert_rules.py,sha256=snWS-uQ9-tyw3MhW37bYM3s7gUUn5LXEYNtctwzeyPM,4420
11
+ vbos/resources/analytics.py,sha256=VWTIRK4s3ftJPCgN41Fh0gJTrsmVYJ4jJCn9ZlODQVY,5025
12
+ vbos/resources/audit_log.py,sha256=Mo1K2hlnA78q3LelxdbA6vGWlkrLZOToeiB_weeJWdM,3102
13
+ vbos/resources/billing.py,sha256=4NLBEH_Vj9Sl_KMtcSwD3TrDefs2ZRmOodxB-kE2Chg,2517
14
+ vbos/resources/boundaries.py,sha256=sCGw8FQNVO6i7shJJdOa3wAKCoODRAVkSNCBADU_LGE,9335
15
+ vbos/resources/certification_models.py,sha256=5-JkWpnIGnCd89KDdeMN89JFEWMkT4MI6ksk3S73drU,3803
16
+ vbos/resources/certifications.py,sha256=RLMaetbDLqjjxbMDqT3I7kLN4m74k3yd16ZxmlioiJw,4915
17
+ vbos/resources/connector_providers.py,sha256=3-XTa-Rqo2iFVpPRgUZShBRb3dTL-R7SL0lf2lajC6s,2426
18
+ vbos/resources/connectors.py,sha256=2io_N6EOcWBEhEsCH5r7vNY-mD5B4gD1_mpTufHZNFk,17483
19
+ vbos/resources/deployments.py,sha256=QQO2L4dqyVqsPmoddX4A-ICyihGGIH6HN1kn1o8M0pw,8080
20
+ vbos/resources/environments.py,sha256=uReLgd53-HbLg5SGjH8FEth7mtpfPuQdgn1TJ75qrCw,5713
21
+ vbos/resources/flow_templates.py,sha256=WRiuvEnSKWa5HamnADXkY-fBtIffSEM5eYKeMRcCsKc,2351
22
+ vbos/resources/flows.py,sha256=Yyu7xUH22tQlNklcC_5FvKX-b5hTZQLgnkTsZweKFeY,15632
23
+ vbos/resources/governed_workspaces.py,sha256=_ubnUTGsyd1Cw74NhIUlRx6wJhAjjT4Ohlx_DRikDC0,11183
24
+ vbos/resources/keys.py,sha256=RkRPqmgkwLSzJ0JiGnDVBJ2Zqi397X1yUisItWZd0IU,7339
25
+ vbos/resources/members.py,sha256=HQKzSporCu05MduyHZimVvkbu_TuFKTaCx-n_ku3Q0s,4783
26
+ vbos/resources/named_sets.py,sha256=jGKMPCUejxKX_k4DiFa5x6xfVbJEssyq6w31ssTILa0,5201
27
+ vbos/resources/notifications.py,sha256=G_2gBIJrkV0n9qQY7UnNKtG3-DqxFq2_0e0rG47N9ao,2926
28
+ vbos/resources/org.py,sha256=K0p-EPTW0Ar8s7YGpzt_mVTiD0Dt-M6zt-ZcBHggyk0,5220
29
+ vbos/resources/projects.py,sha256=YcUCHXCWIsdYhOApiqzGhadUEpfKr-WnTfNXtVeQBF0,7196
30
+ vbos/resources/service_accounts.py,sha256=rzTSS_iYY-G-TfLiBt_1OE_W9Cry7Ruydecq6-XqrXk,4157
31
+ vbos/resources/templates.py,sha256=mqNQYj3wktfBizZSeB-q8iBIg8-sVSjrjUCGkv8_LRY,2879
32
+ vbos/resources/users.py,sha256=-45njunQOZheHNHNrxbViVRGQHN1fQJ3KyI3prqmzJM,1814
33
+ vbos/resources/webhooks.py,sha256=HBWRhef8qW1kfUp6UIQCqzMVmEEqUit3nb0GsB7CYpE,6808
34
+ vbos/resources/workspaces.py,sha256=prCWxuFeSmMf6noAhcD2pddoOK5ZMV_swkTyaBJd594,6324
35
+ vbos_cli/__init__.py,sha256=vimvws_sGXTa8Hj3u-mfsBFvzpJH2ZKgYntWj86NIDY,109
36
+ vbos_cli/__main__.py,sha256=uszDTQhxHgYhxbkFJNYVE15FzKE_pmEbwehL7bxYlFA,77
37
+ vbos_cli/cli.py,sha256=pqDwe9N-ZTVP2hkEYQ3koMRAm-tt4-TJtIDiu6XZPCQ,7511
38
+ vbos_cli/client.py,sha256=ksIJdIR52DWc4r_w_JqS4aAUkTY4Cy7QN5IOIIhcaTU,6800
39
+ vbos_cli/config.py,sha256=azoj1wuvz6rwHv12FlRZay8cd8-3DfhB-T3XqQgsxcc,2473
40
+ vbos_cli/errors.py,sha256=v0XStV-RtDODTgnBzHc-awzSX5PkcDYmOEyLcQW6Mug,1142
41
+ vbos_cli/formatters.py,sha256=2xqFdSP4a7ueRRm4WQLH-ipL1nuSiatQ8j8HcxEpNDE,8337
42
+ vbos_cli/local_bridge.py,sha256=ocN8WkV32MpD2sm4qoQW0t9jLynahhJ_Sy0RK37Syo8,7219
43
+ vbos_cli/output.py,sha256=oB7HZEqlCcdnATe-rcN7O1ygq6QPl6MjQLa0XOEKvOU,2509
44
+ vbos_cli/profiles.py,sha256=8yuycwFoxpJ2a-z6mdu381O3WNOG-12CuckwgnA5AFg,414
45
+ vbos_cli/commands/__init__.py,sha256=gQ6tnU0Rvm0-ESWFUBU-KDl5dpNOpUTG509hXOQQjwY,27
46
+ vbos_cli/commands/account.py,sha256=qOyEhuM8f6-xUSRrnRKokeNKV8ONx2c9RVd1Sgf-zjo,3712
47
+ vbos_cli/commands/alert_rules.py,sha256=8jLKTqLzpvS0oXqB8fV_yF13NHQ8Wwh9JX9gI6R9mco,5789
48
+ vbos_cli/commands/analytics.py,sha256=ZFGDI_Ceow601ppfG6myJH7JuXjj0vWOI63gkvEMNjc,1474
49
+ vbos_cli/commands/audit_log.py,sha256=WjN_ncPKLPorxRr0iOb2IYavnGxuAubSOz-ua6KgUTQ,3223
50
+ vbos_cli/commands/auth.py,sha256=gOoZxgx8lZNO4xmfkBVVJUv-GoOnX4Ic8p2-gTCw7Xo,12567
51
+ vbos_cli/commands/boundaries.py,sha256=_GHoQYkpqP4QJmui3jEQMod9cd3rKZ2rUOpFPWYZ9Cw,15735
52
+ vbos_cli/commands/certify.py,sha256=OYedk4qjFn4E4DKwCwB_bYv81E7eNDed-wwXhXnn9kU,9791
53
+ vbos_cli/commands/completions.py,sha256=o_kNn82tedJPa6oe5hiFMAbnq3k4UHwIxuaRH3bkQHQ,1010
54
+ vbos_cli/commands/config_cmd.py,sha256=zY7wFUsbEeO4xT36GumInO3cu2sSW8GztX4ODXWBHmw,3080
55
+ vbos_cli/commands/connectors.py,sha256=CMsiOT98PPw-KnQ53ZEmJorFSEl9npR3NR_DAIUzgJs,18513
56
+ vbos_cli/commands/deployments.py,sha256=m6JYZePnSvmFP9c9EMPyBZi14a2MLhV9-N57u0BuFhY,7800
57
+ vbos_cli/commands/environments.py,sha256=SrZ5wCjjefnIScOhbEa-Teit_9tev0j-Y4k-Mfz-Myo,6106
58
+ vbos_cli/commands/evaluations.py,sha256=_YhflMP4GHYRxNdW8tBIGXr4w_gn7zngehy1rpfFhOU,7062
59
+ vbos_cli/commands/flows.py,sha256=4nPolbJxBkEyInXqJ5xZWJAzCbx1es5qsvB9sM8c4pA,23157
60
+ vbos_cli/commands/governed_workspaces.py,sha256=K__7yt9Gi8Wwg_HwEwQyIHtr-KJ_hjsGIStZ1yjfgy8,7133
61
+ vbos_cli/commands/keys.py,sha256=JFNundyX9WTscq8oyCO5yPnPn5gkZNyE0tWw4eCw-UA,6552
62
+ vbos_cli/commands/members.py,sha256=dlcVMzPCrNDL_qSnolhm7mj5d7J4_nK5YmBTESzjUwg,5101
63
+ vbos_cli/commands/named_sets.py,sha256=kAyOwJzR1VRqwlCgtLXkjzrco-JMLvg3Xyw5lcEdvw8,5630
64
+ vbos_cli/commands/notifications.py,sha256=oJ7Ntnbs6QVkdyPojLZZtGqRXLDkDs654IFQx9CfWKU,3482
65
+ vbos_cli/commands/org.py,sha256=jbxgn2wkR8tgUhqSSZGGARq7Vu-n5Ze1yru-eanIQMs,2769
66
+ vbos_cli/commands/org_mgmt.py,sha256=_FmZAJntWPIGgPTp5LKIwde1jnRKRytGOc7UxFGzDoI,2895
67
+ vbos_cli/commands/projects.py,sha256=e3qXneyNBuEvq4cWVkgfi2eHfw0oe_DH7Q4Dij6r6Ds,8967
68
+ vbos_cli/commands/replay.py,sha256=XqgfrmZTygtz5MTv44hrzgGxt5aQ0CBcIsx_YzlYGZw,1134
69
+ vbos_cli/commands/templates.py,sha256=QDwdVh8uGyqjkRFtR0Z08-sn2lBFvc7N_ye8qOCSht4,3284
70
+ vbos_cli/commands/verify.py,sha256=aq_jLukUBTgY9vf9UrCU91ZalDVdWFwVHuQSqsuKlWc,4326
71
+ vbos_cli/commands/webhooks.py,sha256=zfDZJD2swGZ5y1qZPjtN0wJNu_bcF3j_R2MrvyUxd1I,10450
72
+ vbos_cli/commands/workspaces.py,sha256=QygShYE-r1rzSS37WilJDEOUI1bVoeDkh5sWB1qGRu0,4614
73
+ vbos_cli/credentials/__init__.py,sha256=7KYPgtc0f3rqedCJsIwVx_SV-5YY5__KiipfiMLND4o,35
74
+ vbos_cli/credentials/file.py,sha256=hotXrRzywNIvlXXze9IKsSLBrS0VyhFJtZ-kJaEDsBM,4664
75
+ vbos_cli/credentials/keychain.py,sha256=reeSuOwJUJIRxE202BsB_8DMjRJpXHbppeo4H0N3_eU,1360
76
+ vbos_cli/credentials/migration.py,sha256=9aJbBklmiX2gFee9ZVShqfFDEpUoSqz_mSfz16Btk2o,1255
77
+ vbos_cli/credentials/store.py,sha256=YlzR-zP1B1cc80xnCvdlUpwNLPB2aGfNHKF5O4q92s0,3732
78
+ vb_os-0.1.0.dist-info/METADATA,sha256=Lc49bH7eJ5rnSvHTXRknFsu1fkCgFxCkkm4dAqYWZR4,14918
79
+ vb_os-0.1.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
80
+ vb_os-0.1.0.dist-info/entry_points.txt,sha256=GjXI4O3hOCI6zq6Jzo1PJaNjz-2Kkq-yHHk3pdUjsqc,43
81
+ vb_os-0.1.0.dist-info/licenses/LICENSE,sha256=oamqAH3dCQ3s0Sm57KXbA7Nu2mG8TEU98gLMHDGXs44,274
82
+ vb_os-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ vbos = vbos_cli.cli:main
@@ -0,0 +1,6 @@
1
+ Copyright (c) 2024-2026 MNC Labs, Inc. All rights reserved.
2
+
3
+ This software is proprietary and confidential. Unauthorized copying, modification,
4
+ distribution, or use of this software, via any medium, is strictly prohibited.
5
+
6
+ For licensing inquiries, contact: legal@vb-os.org