spanforge 1.0.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 (174) hide show
  1. spanforge/__init__.py +815 -0
  2. spanforge/_ansi.py +93 -0
  3. spanforge/_batch_exporter.py +409 -0
  4. spanforge/_cli.py +2094 -0
  5. spanforge/_cli_audit.py +639 -0
  6. spanforge/_cli_compliance.py +711 -0
  7. spanforge/_cli_cost.py +243 -0
  8. spanforge/_cli_ops.py +791 -0
  9. spanforge/_cli_phase11.py +356 -0
  10. spanforge/_hooks.py +337 -0
  11. spanforge/_server.py +1708 -0
  12. spanforge/_span.py +1036 -0
  13. spanforge/_store.py +288 -0
  14. spanforge/_stream.py +664 -0
  15. spanforge/_trace.py +335 -0
  16. spanforge/_tracer.py +254 -0
  17. spanforge/actor.py +141 -0
  18. spanforge/alerts.py +469 -0
  19. spanforge/auto.py +464 -0
  20. spanforge/baseline.py +335 -0
  21. spanforge/cache.py +635 -0
  22. spanforge/compliance.py +325 -0
  23. spanforge/config.py +532 -0
  24. spanforge/consent.py +228 -0
  25. spanforge/consumer.py +377 -0
  26. spanforge/core/__init__.py +5 -0
  27. spanforge/core/compliance_mapping.py +1254 -0
  28. spanforge/cost.py +600 -0
  29. spanforge/debug.py +548 -0
  30. spanforge/deprecations.py +205 -0
  31. spanforge/drift.py +482 -0
  32. spanforge/egress.py +58 -0
  33. spanforge/eval.py +648 -0
  34. spanforge/event.py +1064 -0
  35. spanforge/exceptions.py +240 -0
  36. spanforge/explain.py +178 -0
  37. spanforge/export/__init__.py +69 -0
  38. spanforge/export/append_only.py +337 -0
  39. spanforge/export/cloud.py +357 -0
  40. spanforge/export/datadog.py +497 -0
  41. spanforge/export/grafana.py +320 -0
  42. spanforge/export/jsonl.py +195 -0
  43. spanforge/export/openinference.py +158 -0
  44. spanforge/export/otel_bridge.py +294 -0
  45. spanforge/export/otlp.py +811 -0
  46. spanforge/export/otlp_bridge.py +233 -0
  47. spanforge/export/redis_backend.py +282 -0
  48. spanforge/export/siem_schema.py +98 -0
  49. spanforge/export/siem_splunk.py +264 -0
  50. spanforge/export/siem_syslog.py +212 -0
  51. spanforge/export/webhook.py +299 -0
  52. spanforge/exporters/__init__.py +30 -0
  53. spanforge/exporters/console.py +271 -0
  54. spanforge/exporters/jsonl.py +144 -0
  55. spanforge/exporters/sqlite.py +142 -0
  56. spanforge/gate.py +1150 -0
  57. spanforge/governance.py +181 -0
  58. spanforge/hitl.py +295 -0
  59. spanforge/http.py +187 -0
  60. spanforge/inspect.py +427 -0
  61. spanforge/integrations/__init__.py +45 -0
  62. spanforge/integrations/_pricing.py +280 -0
  63. spanforge/integrations/anthropic.py +388 -0
  64. spanforge/integrations/azure_openai.py +133 -0
  65. spanforge/integrations/bedrock.py +292 -0
  66. spanforge/integrations/crewai.py +251 -0
  67. spanforge/integrations/gemini.py +351 -0
  68. spanforge/integrations/groq.py +442 -0
  69. spanforge/integrations/langchain.py +349 -0
  70. spanforge/integrations/langgraph.py +306 -0
  71. spanforge/integrations/llamaindex.py +373 -0
  72. spanforge/integrations/ollama.py +287 -0
  73. spanforge/integrations/openai.py +368 -0
  74. spanforge/integrations/together.py +483 -0
  75. spanforge/io.py +214 -0
  76. spanforge/lint.py +322 -0
  77. spanforge/metrics.py +417 -0
  78. spanforge/metrics_export.py +343 -0
  79. spanforge/migrate.py +402 -0
  80. spanforge/model_registry.py +278 -0
  81. spanforge/models.py +389 -0
  82. spanforge/namespaces/__init__.py +254 -0
  83. spanforge/namespaces/audit.py +256 -0
  84. spanforge/namespaces/cache.py +237 -0
  85. spanforge/namespaces/chain.py +77 -0
  86. spanforge/namespaces/confidence.py +72 -0
  87. spanforge/namespaces/consent.py +92 -0
  88. spanforge/namespaces/cost.py +179 -0
  89. spanforge/namespaces/decision.py +143 -0
  90. spanforge/namespaces/diff.py +157 -0
  91. spanforge/namespaces/drift.py +80 -0
  92. spanforge/namespaces/eval_.py +251 -0
  93. spanforge/namespaces/feedback.py +241 -0
  94. spanforge/namespaces/fence.py +193 -0
  95. spanforge/namespaces/guard.py +105 -0
  96. spanforge/namespaces/hitl.py +91 -0
  97. spanforge/namespaces/latency.py +72 -0
  98. spanforge/namespaces/prompt.py +190 -0
  99. spanforge/namespaces/redact.py +173 -0
  100. spanforge/namespaces/retrieval.py +379 -0
  101. spanforge/namespaces/runtime_governance.py +494 -0
  102. spanforge/namespaces/template.py +208 -0
  103. spanforge/namespaces/tool_call.py +77 -0
  104. spanforge/namespaces/trace.py +1029 -0
  105. spanforge/normalizer.py +171 -0
  106. spanforge/plugins.py +82 -0
  107. spanforge/presidio_backend.py +349 -0
  108. spanforge/processor.py +258 -0
  109. spanforge/prompt_registry.py +418 -0
  110. spanforge/py.typed +0 -0
  111. spanforge/redact.py +914 -0
  112. spanforge/regression.py +192 -0
  113. spanforge/runtime_policy.py +159 -0
  114. spanforge/sampling.py +511 -0
  115. spanforge/schema.py +183 -0
  116. spanforge/schemas/v1.0/schema.json +170 -0
  117. spanforge/schemas/v2.0/schema.json +536 -0
  118. spanforge/sdk/__init__.py +625 -0
  119. spanforge/sdk/_base.py +584 -0
  120. spanforge/sdk/_base.pyi +71 -0
  121. spanforge/sdk/_exceptions.py +1096 -0
  122. spanforge/sdk/_types.py +2184 -0
  123. spanforge/sdk/alert.py +1514 -0
  124. spanforge/sdk/alert.pyi +56 -0
  125. spanforge/sdk/audit.py +1196 -0
  126. spanforge/sdk/audit.pyi +67 -0
  127. spanforge/sdk/cec.py +1215 -0
  128. spanforge/sdk/cec.pyi +37 -0
  129. spanforge/sdk/config.py +641 -0
  130. spanforge/sdk/config.pyi +55 -0
  131. spanforge/sdk/enterprise.py +714 -0
  132. spanforge/sdk/enterprise.pyi +79 -0
  133. spanforge/sdk/explain.py +170 -0
  134. spanforge/sdk/fallback.py +432 -0
  135. spanforge/sdk/feedback.py +351 -0
  136. spanforge/sdk/gate.py +874 -0
  137. spanforge/sdk/gate.pyi +51 -0
  138. spanforge/sdk/identity.py +2114 -0
  139. spanforge/sdk/identity.pyi +47 -0
  140. spanforge/sdk/lineage.py +175 -0
  141. spanforge/sdk/observe.py +1065 -0
  142. spanforge/sdk/observe.pyi +50 -0
  143. spanforge/sdk/operator.py +338 -0
  144. spanforge/sdk/pii.py +1473 -0
  145. spanforge/sdk/pii.pyi +119 -0
  146. spanforge/sdk/pipelines.py +458 -0
  147. spanforge/sdk/pipelines.pyi +39 -0
  148. spanforge/sdk/policy.py +930 -0
  149. spanforge/sdk/rag.py +594 -0
  150. spanforge/sdk/rbac.py +280 -0
  151. spanforge/sdk/registry.py +430 -0
  152. spanforge/sdk/registry.pyi +46 -0
  153. spanforge/sdk/scope.py +279 -0
  154. spanforge/sdk/secrets.py +293 -0
  155. spanforge/sdk/secrets.pyi +25 -0
  156. spanforge/sdk/security.py +560 -0
  157. spanforge/sdk/security.pyi +57 -0
  158. spanforge/sdk/trust.py +472 -0
  159. spanforge/sdk/trust.pyi +41 -0
  160. spanforge/secrets.py +799 -0
  161. spanforge/signing.py +1179 -0
  162. spanforge/stats.py +100 -0
  163. spanforge/stream.py +560 -0
  164. spanforge/testing.py +378 -0
  165. spanforge/testing_mocks.py +1052 -0
  166. spanforge/trace.py +199 -0
  167. spanforge/types.py +696 -0
  168. spanforge/ulid.py +300 -0
  169. spanforge/validate.py +379 -0
  170. spanforge-1.0.0.dist-info/METADATA +1509 -0
  171. spanforge-1.0.0.dist-info/RECORD +174 -0
  172. spanforge-1.0.0.dist-info/WHEEL +4 -0
  173. spanforge-1.0.0.dist-info/entry_points.txt +5 -0
  174. spanforge-1.0.0.dist-info/licenses/LICENSE +128 -0
@@ -0,0 +1,174 @@
1
+ spanforge/__init__.py,sha256=IIVBf1k2cWjv1NTNm4JGMSjUD1QAM6U4923djgtvaJg,24344
2
+ spanforge/_ansi.py,sha256=xeb6EtEG6kjEHc02LxemaP7seH6b4HD8EogOwtNjNXA,2541
3
+ spanforge/_batch_exporter.py,sha256=N8LkR3E2WkaykM96VkBtm4gfZ9rVIXGeMI8RYKYx0kQ,15868
4
+ spanforge/_cli.py,sha256=eMGg-B19j62tKDPbMXdWhCjY2oFoCon4rixnaidbC2k,72255
5
+ spanforge/_cli_audit.py,sha256=Ju2ajrIm-HWem835AUxx4YPud0izLdrW6AgEGyzDd7Y,19838
6
+ spanforge/_cli_compliance.py,sha256=_4jAGsYyaaUuW9PCco_pL0v4mORgjjwiSUYidD0npSg,25248
7
+ spanforge/_cli_cost.py,sha256=LIVAKlQLYCQehm3gMjYccQtBhmHO1tqUWeqwsvXMieo,8411
8
+ spanforge/_cli_ops.py,sha256=JZeH8J41g4MN4YWmTV2uuU7JXMcYoSIibXb5LIpogRs,26037
9
+ spanforge/_cli_phase11.py,sha256=yEIc1e0nj4ozqcnWcUWY_upolfYb14atvAHRHjBtBaM,11342
10
+ spanforge/_hooks.py,sha256=IAfLSgec6acsoHjX9N_h6z2_w95aaQaAahk4FARhCYw,12953
11
+ spanforge/_server.py,sha256=Wl_tRwEDYGzjMjsClrFRc7Z_Oyi5BbJc8bUQoOt9Y1I,81666
12
+ spanforge/_span.py,sha256=ibBsA3HlVpHJlWqCf3rpJQZ_WVfss4zdQzrHc97N0Ak,39133
13
+ spanforge/_store.py,sha256=1Cb90q_QVV69i1T7FaYFQpY09JSfjf3pr3PN4yhUyJ4,10941
14
+ spanforge/_stream.py,sha256=sFZnx6_YmyeZJFE4UFiKzFQ_1sxIG_CVay7qRMzDJfw,24368
15
+ spanforge/_trace.py,sha256=b8SSGQyqqguayDkg_UfEKCtNcBrNbrlWJSh9PsEN6Ac,11481
16
+ spanforge/_tracer.py,sha256=4E-K21qyZcmH-6ZNXag2wt4-LdassBlmFeVhqAN01PM,9360
17
+ spanforge/actor.py,sha256=VNuoHw6Z2tbd_hkiYZ5Sn3qX-lOiCVCt8MCz4KSQJuE,5160
18
+ spanforge/alerts.py,sha256=bkDWth_64ghmN-UtYyk0SpK4MO9jYHDy3r3RlL6EsEo,17686
19
+ spanforge/auto.py,sha256=dtl2b5SbI6T8re4yBhZI2J5GvtyzFwY7lQLlNiE0hG8,16898
20
+ spanforge/baseline.py,sha256=AYmtpEaMLJ5wJojuBMsTKp9F3q9gop4-ATkaQFeWLFI,13427
21
+ spanforge/cache.py,sha256=m91Jt3BFoKHLvOgNkDkj4kyY-hX-uy6Hj7RRZcBgf58,22482
22
+ spanforge/compliance.py,sha256=VrUTBJxr_x3-B6EPg8P79fUnauOkZYZNljzUNau0cmE,10196
23
+ spanforge/config.py,sha256=RXIeeE4Ec-JARTJhfXy8mGSZfXn_hKR60RnMjcJ_UUY,25081
24
+ spanforge/consent.py,sha256=7LSGycwJDLSb2rCFubSF3DXT5J9Qmvp8lPrC4iL6dik,7642
25
+ spanforge/consumer.py,sha256=MOHLis3rJiP2m0_d_0XQGcJgnNFuUZnlmRKuAwxuXx4,13440
26
+ spanforge/cost.py,sha256=7eTaTBMSCBM_Di-aoYvfpAwG2sgp-H976P6eQdYJyp4,21860
27
+ spanforge/debug.py,sha256=KEfJPPg229ily43uoXNTrBePjg63rvHOhGtHaMfn8mE,18468
28
+ spanforge/deprecations.py,sha256=MXFy2tH1hrDXwFfMF10gthyg87lywlhuaQjx-F1ogDs,7034
29
+ spanforge/drift.py,sha256=UqwmfbLPu8l4Bv3SEGADsoArPsf3yEYXt0THouwd7wA,18735
30
+ spanforge/egress.py,sha256=EuqKodd_VmbiJ2cbzry6vqspCM9vGnJaivMyFAxo0mY,1842
31
+ spanforge/eval.py,sha256=lYh2-pyb6WLzbUocXJI0xLZC2iQ2Gp5zsqDZzL9nInM,22799
32
+ spanforge/event.py,sha256=xkD4K_iKpnSF427_yAFWzDBsex_5xAsfs2Ugk3Un958,40070
33
+ spanforge/exceptions.py,sha256=nrD3t2MujJPOAS-q-9JAyuVN4ft4_6nhSE46TUM5JCg,7981
34
+ spanforge/explain.py,sha256=-owW25xYCCzvdbJjCP3dtDkYB6rd1lkR0SRUkIjt46Y,6119
35
+ spanforge/gate.py,sha256=607Rt0jkJRRzAVxdIf67P2Bxwdgtj1J_W7iNrO_mKsM,42753
36
+ spanforge/governance.py,sha256=_jkY74JPOkRb5ftNILX3JyrjAUdsInZL4LXD11OJgx0,6430
37
+ spanforge/hitl.py,sha256=EaDiHzR92ziTiViVU2BzP_Qwv0INWICmtiC3X2Xesho,9600
38
+ spanforge/http.py,sha256=M5KRfkbJ-o2_5OwCKNL9f-CpeYLWdtSMkGDJ_0mHCcY,6823
39
+ spanforge/inspect.py,sha256=_NdbyMYhE0t7MvJYC15sUiK1yTX9Sk8HaaBHbNwkGo4,15659
40
+ spanforge/io.py,sha256=VfMALp_V2Vgu3VleWunaRADv-Z-JTc-OD_M2BjLzxKs,7005
41
+ spanforge/lint.py,sha256=N6pesu0qytOIkQHYAgPU2s3LQenlpWU3ByJrflIoM64,11876
42
+ spanforge/metrics.py,sha256=fo5tEnZ03p3v8EFJR2aMLQ92cBMr8odR98G7LIoeei0,14631
43
+ spanforge/metrics_export.py,sha256=ac0I5kWVs12n96Qpy832HCxDIJGi0nfhapLMzvl7Uv0,13535
44
+ spanforge/migrate.py,sha256=1H0Kg4nUFIcb9I2mc6UmsrmyfsQBCgO-YrfLakV9gMs,14493
45
+ spanforge/model_registry.py,sha256=bnXzr-7KdUdevWO-S11xs8sDrQvYcLUB4Tlb5K4-6Cc,9973
46
+ spanforge/models.py,sha256=f0F1zU1SnEBIzdh3wgsssmpwMpxOrnhyEm55cgSxECY,14568
47
+ spanforge/normalizer.py,sha256=ZtZoBX_yBFluOQaTDS14FcOvWN_H4Znng2muwfPdfs8,6379
48
+ spanforge/plugins.py,sha256=Y0c_vuj4av9FXTbSx9SPdbZ3If027JNxU3dJ3L56srA,2720
49
+ spanforge/presidio_backend.py,sha256=2xUlvPye7tLeTMcuI9T0WriugMh0tcMriv4E3vM8-bA,13890
50
+ spanforge/processor.py,sha256=wDnz6-bUkepYhtEW3oCty5L7Crl2emkBHu0AtY2-9MY,8826
51
+ spanforge/prompt_registry.py,sha256=oGYhi3WJ6k26HohnXfVBWu3cQ2JAOnk3g6YbW7KA8K4,14486
52
+ spanforge/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ spanforge/redact.py,sha256=C_VgxlSqtkJ-Uf7qkfm0fRF_nyrTUvW2KwtsBTxdYnI,33838
54
+ spanforge/regression.py,sha256=bW8EmVkdzV-TvnFfBjInCGTDbbpF6L0UHReDnKnUlGY,6862
55
+ spanforge/runtime_policy.py,sha256=Zla6M_TxoMS4eUhFBbjyPXK5J4bLkVaOaTh7CXAQGFY,5775
56
+ spanforge/sampling.py,sha256=bQCUgwpXfco02QK-QrgcjNQcS5TySwWR-P17mOSN3Xc,19066
57
+ spanforge/schema.py,sha256=HZmiQGOwC3dpaqlweMLSLbtjBCf9IO54TyHnbx6z_zY,6837
58
+ spanforge/secrets.py,sha256=NsqQkDjiD8MbOxAmBnEEILxmxINt16AqdVjD3hLzl5I,28826
59
+ spanforge/signing.py,sha256=gDVMxhkIVQ1ZOS-aaa-K4D7pgJ7mHY0xxUDYnttLcoc,42853
60
+ spanforge/stats.py,sha256=-7p-DJq_TlJ2SYOXal0SibKTkvOpyimQYlzAQ1n9seQ,2978
61
+ spanforge/stream.py,sha256=kZVtJ3DoOFxu-z3EoKBf6W3JkMzMGaYwGA0USSRu400,19509
62
+ spanforge/testing.py,sha256=MJb0vwQYN4M8kzVEa8dFG0gdGbyVBriKyukPeTwe57U,12199
63
+ spanforge/testing_mocks.py,sha256=AhIMY_t98EzVVXkmYKfG9lt7KJfDfQMbuKf9Fev19jw,37964
64
+ spanforge/trace.py,sha256=C5KhZRtjHlAuIHoeEoAk3PIW9qoFIza2XMIXEIZlpmA,7054
65
+ spanforge/types.py,sha256=73Z-vcHRzB1O6jBRroHAz6VIzVOsRhSlAn80f8X0DYk,24928
66
+ spanforge/ulid.py,sha256=YXv7LlPBAIQDU_EHhamoUssIKcqwOcoVtfLlsT1-JCg,10401
67
+ spanforge/validate.py,sha256=svnlFajhntgr5ermZXeoWwME9_VdZ7A2QffT9Q_WslE,14363
68
+ spanforge/core/__init__.py,sha256=qVozFPRxiWsNDk1jfkfP-Az5unbwtRZsU5Hxi40PzP0,128
69
+ spanforge/core/compliance_mapping.py,sha256=XtfEHXX3BaKU5tv3S-5jSwR-P5M0Ec9WqaisujLOVUM,52570
70
+ spanforge/export/__init__.py,sha256=YIdRM4NbdX3b9DKRzuWQ1tM8v177Nm18EOrWooJT5Rw,2707
71
+ spanforge/export/append_only.py,sha256=a_j_stWj5lbyRN3JE8wj7JnIDuEL287PhAcSwcW2d5k,11493
72
+ spanforge/export/cloud.py,sha256=JJiZXCEOIHr7AaMVMTWguBGWJpFZaueIViBNwTCyxNA,13473
73
+ spanforge/export/datadog.py,sha256=oRwU_ZRQm7Gz3DhC7y1RYg4ACe7m0tzajda1pJXhlxc,17604
74
+ spanforge/export/grafana.py,sha256=fOanYcvFBTraR2loNOMqm49vIL3JggKGkocpvavWPRQ,11401
75
+ spanforge/export/jsonl.py,sha256=liRsFLis93bcQivOdhs4CO_-vIW26xNiK6JS40DMpPk,6412
76
+ spanforge/export/openinference.py,sha256=KKXUUqGCG7KZuqFRuRWSsyfq-lrZuoQY-UMh9pVDmS0,5485
77
+ spanforge/export/otel_bridge.py,sha256=QTv7kFyNqdDH-kUjU30bpJqsB4FB4ZEBzvBUNT4EnDU,11059
78
+ spanforge/export/otlp.py,sha256=RCche1CPoPDC4jTcrRPhhPzl8dwhHY0WCqUPkhODUDU,30053
79
+ spanforge/export/otlp_bridge.py,sha256=jXkoRJ3fxLbUluWgSKKRDzeICxRX-YGcR50oLqmITtg,8465
80
+ spanforge/export/redis_backend.py,sha256=5e2s6INIrf0uEXDSM8zjjg7GxzaLbBcqr0I9n7OaVfM,10530
81
+ spanforge/export/siem_schema.py,sha256=pWSeehz4zKllKmA2ADyzmRjaJJFJzCqDomBk_uC05gA,3152
82
+ spanforge/export/siem_splunk.py,sha256=NgyfhVYfuPrEqpee8ETfFzHa-cJ16LHV0XOm3_bfdB8,10015
83
+ spanforge/export/siem_syslog.py,sha256=MlbKeEHIdzqBZ6cj7emb5YR-_nfsOuA5I0QV_rNQV9U,7788
84
+ spanforge/export/webhook.py,sha256=h2ytq6KHZ0gSyJ2-x_QZh1tEhGMwIupg1fGqMlqJd7E,11015
85
+ spanforge/exporters/__init__.py,sha256=JTepbmWInBlCvMBWooyPI0QCP9UHwcmmSnchQgjnPUo,1184
86
+ spanforge/exporters/console.py,sha256=fmaf6apIY8o_E4FpYSKE7cLQ1d42IfWsG03JpBe7-aU,8843
87
+ spanforge/exporters/jsonl.py,sha256=ckf4I8X2LZRy3kB8k0_4OWFXACM72f0x9ScNgRsCaX4,4849
88
+ spanforge/exporters/sqlite.py,sha256=xMrf2INSZzyTFK2dSDAmmS-pNHkB5E6T1pD7vl25InA,4786
89
+ spanforge/integrations/__init__.py,sha256=AZxaBYNtwJpX5cZrW_XHES-lq4fqH05dQaUiJPLKg8w,1867
90
+ spanforge/integrations/_pricing.py,sha256=zFvfQXyejk3WGS7S5yWnzC-H314WsylL-Ik2vRkAfmA,8699
91
+ spanforge/integrations/anthropic.py,sha256=C7gzOCF5D-FJJgvghepAXzx0udA_k5xqfYgEASuG6w4,13178
92
+ spanforge/integrations/azure_openai.py,sha256=e3K7cx0l-ORUbtK0788j75B7oQbUIzO5vGmoBheZDuc,4863
93
+ spanforge/integrations/bedrock.py,sha256=gd81KVyVFxPhJjxRs5xrStG32hcv1WiQsy3W7ok48Dg,9206
94
+ spanforge/integrations/crewai.py,sha256=HJG_qfNJEu644i6GsbrSsISnLFkKS0aBG2gio2MHsJE,9236
95
+ spanforge/integrations/gemini.py,sha256=Y1z-uoObm7hAdlaKYSEsxmPWZncD6zX0IWrzZ2SGG4I,11759
96
+ spanforge/integrations/groq.py,sha256=tbm7KJ3dK6lmynl6Io_NAjTXO-1KAlA_hs-Ktq2tvYA,14835
97
+ spanforge/integrations/langchain.py,sha256=C4dGm0ZJq-4DLs94CkgkTXH3Ah9YeWibLZX1e8E7nIY,11455
98
+ spanforge/integrations/langgraph.py,sha256=nyTy8ZJc-8jlnazxkPVhvmpEwIH5wHvoYTO9hAh5pFE,9942
99
+ spanforge/integrations/llamaindex.py,sha256=mK_UgOIVGN-w9kLwp81DwObNHMzV8wYLifVSush9404,13074
100
+ spanforge/integrations/ollama.py,sha256=mIjac1Vy6WEVNfOOLzP_1206GWRrRSZ_PaLxJ97XNzs,10044
101
+ spanforge/integrations/openai.py,sha256=WVu28AmZ_EDx38L0quwep3RCWAOFd3gnd8j9TbjhGv4,13639
102
+ spanforge/integrations/together.py,sha256=RGGCpv5MhDNgB9LRUcO5IVidMYWFL6xdHyWcNXAJImE,16770
103
+ spanforge/namespaces/__init__.py,sha256=A9-ZBHqxm-NeubhebDcQBqlA6PXuoHuhfQvS3jt0BMk,7716
104
+ spanforge/namespaces/audit.py,sha256=LEA9WpbSx2LYoLHTGnVdsGG2cF8SBcC9XeDHw7iZvg4,10894
105
+ spanforge/namespaces/cache.py,sha256=Xm6VRFxtJd5Zl9cLy3KYkQFfaf-uCA0C-uMONymfvec,8690
106
+ spanforge/namespaces/chain.py,sha256=zpEtQp_hNj3dM6-8qrSfsJuTaWxtd3ADlaFGVLZHTz4,3015
107
+ spanforge/namespaces/confidence.py,sha256=EJ1BJKdgUMY5E-jMWp4CueqLRTzhDaFtju-ObXzJTPM,2584
108
+ spanforge/namespaces/consent.py,sha256=xdIL6V5lxcXMN5gVINbAmrkIueck-gB_VXvKH3gBZsk,3186
109
+ spanforge/namespaces/cost.py,sha256=Q_ndnBUxlw7APPldZrYxXPwFTDGa2IxXRCsIwl8bMWM,6919
110
+ spanforge/namespaces/decision.py,sha256=cxp3wFozoEH77hOUdRu13l50gdg-lVjhe0C5NrRkmRI,5325
111
+ spanforge/namespaces/diff.py,sha256=8BdYIA9L44hy0ONlr39amO_AmTUcY81gAs6NMzeCRxk,6545
112
+ spanforge/namespaces/drift.py,sha256=hWOxDzj8BO0_qN1VH-K2HOdqcHb2orHXqNB0tECNqmY,2872
113
+ spanforge/namespaces/eval_.py,sha256=smE-DYEHhaAprnddm0mJ5TAjCXXbVzzz_emJc5ZgvyM,9675
114
+ spanforge/namespaces/feedback.py,sha256=h-w5pz7reXDpT3sWunjYZ_1lWAVFpiVWBCCw8tNUW_U,9241
115
+ spanforge/namespaces/fence.py,sha256=1WBnQYLh13OVFJc5r-CbbKB5I-Cyvqr1RaQ9lHPZ2KY,7667
116
+ spanforge/namespaces/guard.py,sha256=kms9cI_O_tEynlG21hiCyDIFbCSgpBsMNwi_oQXf1Fk,4353
117
+ spanforge/namespaces/hitl.py,sha256=Ny4BR5cBNHKEPIZ8nJSdU9WedIQAAEZHjrNCIB9_9jo,3542
118
+ spanforge/namespaces/latency.py,sha256=pAOBNdkqchZdnYESpyA1oHDxE7-tgGenYAMFhTwUn3M,2347
119
+ spanforge/namespaces/prompt.py,sha256=YCikzxHcBV3uvy4U5nunMkv5q_9G5G1GtWvHRT2HjwE,7476
120
+ spanforge/namespaces/redact.py,sha256=z5Kgwg93-gr3Ggx_S9IQ5z0nXnAAX41ElzC_BoBppaw,7213
121
+ spanforge/namespaces/retrieval.py,sha256=HuTCpU5qsAtyL1GtwTnOyCaOQndnSgjf19h2kd5AaD8,15533
122
+ spanforge/namespaces/runtime_governance.py,sha256=mdKWb1iT5iNbMlGkf3CxmGaHn_UbeRYXVrcxhMby1Vg,18702
123
+ spanforge/namespaces/template.py,sha256=bRtZbnUpRJk4qNgtYOh8QBZQunolQjl9Qf2QN7BAq5E,8162
124
+ spanforge/namespaces/tool_call.py,sha256=OetB72bU43gCXmFB-Q7ZlD660G3RZTDslrpP5G3yOv4,2744
125
+ spanforge/namespaces/trace.py,sha256=HDMDLbNTMx9F5ljSBTj6ozQT-mhMcegr2P-kbKClqxg,44054
126
+ spanforge/schemas/v1.0/schema.json,sha256=3oqTTPfWABis7Fqdacs1X7U40Ha0KfK4YCk4SjSgqHc,6140
127
+ spanforge/schemas/v2.0/schema.json,sha256=L7F8fKE1gLL9-vbLaXcQM6QQ8OvH-AIqu-yDBgpxda0,19107
128
+ spanforge/sdk/__init__.py,sha256=Rq6JgBGSKXkM_pKvXXjGW-VKldcWpanqawvNMqrQYzY,17883
129
+ spanforge/sdk/_base.py,sha256=WNY3n8H8lfH_eW5QjyJ1ZPrzj0ORtNqRul9ifGI0bg4,22814
130
+ spanforge/sdk/_base.pyi,sha256=-MPwS4CN90FIf3cHC8PD_vyC0NADPtRSAJK1BKfcxJg,1953
131
+ spanforge/sdk/_exceptions.py,sha256=Jfv8gUn6g76brgDjo5fQTs1YPg5uh_DPgkn8jbohNyU,35125
132
+ spanforge/sdk/_types.py,sha256=rQzEkdO9iLhZCQMNL3FZJnGQ7k6OHHqb2L3h2wTy1-A,74427
133
+ spanforge/sdk/alert.py,sha256=VDJ0cZb23Pcw1iS7QRFX16gSENfsjNkBaad1s6wuVcE,56795
134
+ spanforge/sdk/alert.pyi,sha256=zWfQtXxB5pGFlbl7_HTKyqUq4sDQl0ThVOxGdqB1CIk,1693
135
+ spanforge/sdk/audit.py,sha256=TS2HP6PWc7WZ8fTE29OwYgu4Jdamm6f3XOAoNjNA0Ns,45811
136
+ spanforge/sdk/audit.pyi,sha256=S-OcFjBh4WDsmQmMBYW23o7lGqIQgiQpxY0l4MtoQZo,1940
137
+ spanforge/sdk/cec.py,sha256=qljMly4tn6MKy2NeWMmb9cjAlwc4nctaxhXF_GqRR0U,46984
138
+ spanforge/sdk/cec.pyi,sha256=lBvQf1hRMjKzzBvZ_OgC83GO9UMPvfjFmjAvbq2wa8Y,1280
139
+ spanforge/sdk/config.py,sha256=LW7nLO0uzidqtQzwwBtB2X20lOlKRcDQ2N3y9XZkg9s,22112
140
+ spanforge/sdk/config.pyi,sha256=m7FiBr70ieL4H8KA7FhHcu2PuQL2i6pJCV9e_aU_GBE,1471
141
+ spanforge/sdk/enterprise.py,sha256=RnUC-cqAdyb5AgxeqrjwKG2AsAGWGxbqE2JA5sd9qbw,27349
142
+ spanforge/sdk/enterprise.pyi,sha256=zGGNJ0GvKDgYYfNHNvbdbrKKuKtupvuh6pnTDOaXp00,2596
143
+ spanforge/sdk/explain.py,sha256=JQTFx9Cgchb15AbSTHPeiOsB4MfBVFg4dPEytfGEPlk,5739
144
+ spanforge/sdk/fallback.py,sha256=GUvaxtVaC45zh5NoXw4oab8Q0TOixsrMOC9mT6LBoIs,15511
145
+ spanforge/sdk/feedback.py,sha256=YRcgXoWwiBXx-LRojZ0BTK-xm7wlJCaUxAVdoPeyCaI,12692
146
+ spanforge/sdk/gate.py,sha256=4ea7TWc397HWH6sDpYx8aygnus6rKIWiBVB-qdCILyc,32775
147
+ spanforge/sdk/gate.pyi,sha256=r_f9mlf_MV1HirW-qOwy33gAEo-8undTbcQe0_JU-Jw,1368
148
+ spanforge/sdk/identity.py,sha256=dATZRkJzZzK9Em0xrTljH6qDXel3F8OJsE-35V1XKkA,80171
149
+ spanforge/sdk/identity.pyi,sha256=MkYy-77V1hhSsgS-FTnYQ1DvL-iZQpwUuL0FiURInmM,1966
150
+ spanforge/sdk/lineage.py,sha256=SoHbL_2ZSWnSdSX9vzYGok93WBxHR5AQXe6k3aN_q9E,6157
151
+ spanforge/sdk/observe.py,sha256=DU7bCthoQjiympibYDRXQmCqSAHhHY0QG0o3gYYMEr8,40793
152
+ spanforge/sdk/observe.pyi,sha256=mSyHXs8DsyFjM3P63O9ByHgHIZhEIgDsxC5vRlk-9mc,1315
153
+ spanforge/sdk/operator.py,sha256=QzKxl7Zw9LoUkriuTjBg9k0Xkla0dElAbTbS4I5A-vo,13280
154
+ spanforge/sdk/pii.py,sha256=khx0LNtY3ayeRzs5yGQqu9fRqFC9lMRe8mqGv66inxo,59241
155
+ spanforge/sdk/pii.pyi,sha256=louW7fZlwIh4nQeWGBC86iEXWRERzATWN2Qyx3ufdxQ,3287
156
+ spanforge/sdk/pipelines.py,sha256=BJ1j5GJP4kPRIJZ9bS7LVaxj2Cm75ktLH9L2nX-98kw,14839
157
+ spanforge/sdk/pipelines.pyi,sha256=9QsZ9rnujsNJyXRk03rF6Ka1iD1ZDbFmewNiyC2sO3I,929
158
+ spanforge/sdk/policy.py,sha256=3xXmT_1umuu0gUQpU4wf02nfE3-SUYDQu0iDPnJURdk,35306
159
+ spanforge/sdk/rag.py,sha256=f5xOyVL2wAFC315EnmqKBSCFSvMviWoD1t5Zp5mnRF8,22611
160
+ spanforge/sdk/rbac.py,sha256=cGoRsjJek2-C2ekjPQjFQ_A4D4jkZ-yfWe_8oBueeZ8,9771
161
+ spanforge/sdk/registry.py,sha256=BC8hDKV1Dz68qeaYJhQTKFkh1Z9g42j5LNNmtEw7zFQ,15722
162
+ spanforge/sdk/registry.pyi,sha256=4VShGJSZmACp34aefEel08QSeLMIeWLRdOC0jCFweDI,1462
163
+ spanforge/sdk/scope.py,sha256=xVlfi5iqRlPSwh4oXqPYtpS04_CUZBge8vqRptHLqfM,9783
164
+ spanforge/sdk/secrets.py,sha256=ZYBYGSgANu1RYeCVaaEYWbNCleqwBIXqfceXeMBTRT4,11526
165
+ spanforge/sdk/secrets.pyi,sha256=KEmYOZSUn0xZFWsNZvcnzlVokDmD9vTCkm1fiFYvL-A,742
166
+ spanforge/sdk/security.py,sha256=zLsY_IVt1pT0lt973uEXByczDA35WYj-gH8Qh9h6OZo,20274
167
+ spanforge/sdk/security.pyi,sha256=XKSXEqc3aneCRVI_bQoYwOUAYz0oyA_De7z_ayF33I8,1927
168
+ spanforge/sdk/trust.py,sha256=Ew6lG_eU4ZTHoTuvWwxv5zaPBl-iWoZjHrFukC1RE2Q,16604
169
+ spanforge/sdk/trust.pyi,sha256=v579TACOl6tE0YtN4PmdlYwYoIvThAy8w45WtGAMWhM,1158
170
+ spanforge-1.0.0.dist-info/METADATA,sha256=WALoSSiEBO46ttZV_ZhU9FZXo0zJMsJTiv7sZweem_I,74374
171
+ spanforge-1.0.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
172
+ spanforge-1.0.0.dist-info/entry_points.txt,sha256=G5IKdVwQQHCJ_Yrb9GzlLt4XgsqFm-O5CKQE1GLj3tY,107
173
+ spanforge-1.0.0.dist-info/licenses/LICENSE,sha256=u6J9J7thUoZN8RlI0Qxg7kKJWbre283wj5Ue3bByvcU,5010
174
+ spanforge-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ spanforge = spanforge._cli:main
3
+
4
+ [flake8.extension]
5
+ AO = spanforge.lint:SpanForgeChecker
@@ -0,0 +1,128 @@
1
+ PolyForm Noncommercial License 1.0.0
2
+
3
+ Copyright (c) 2026 viswanathanstartup
4
+
5
+ Acceptance
6
+
7
+ In order to get any license under these terms, you must agree to them as both
8
+ strict obligations and conditions to all your licenses.
9
+
10
+ Copyright License
11
+
12
+ The licensor grants you a copyright license for the software to do everything
13
+ you might do with the software that would otherwise infringe the licensor's
14
+ copyright in it for any permitted purpose. However, you may only distribute
15
+ the software according to Distribution License and make changes or new works
16
+ based on the software according to Changes and New Works License.
17
+
18
+ Distribution License
19
+
20
+ The licensor grants you an additional copyright license to distribute copies
21
+ of the software. Your license to distribute covers distributing the software
22
+ with changes and new works permitted by Changes and New Works License.
23
+
24
+ Notices
25
+
26
+ You must ensure that anyone who gets a copy of any part of the software from
27
+ you also gets a copy of these terms or the URL for them above, as well as
28
+ copies of any plain-text lines beginning with "Required Notice:" that the
29
+ licensor provided with the software. For example:
30
+
31
+ Required Notice: Copyright (c) 2026 viswanathanstartup (https://getspanforge.com)
32
+
33
+ Changes and New Works License
34
+
35
+ The licensor grants you an additional copyright license to make changes and
36
+ new works based on the software for any permitted purpose.
37
+
38
+ Patent License
39
+
40
+ The licensor grants you a patent license for the software that covers patent
41
+ claims the licensor can license, or will be able to license, that you would
42
+ infringe by using the software.
43
+
44
+ Noncommercial Purposes
45
+
46
+ Any noncommercial purpose is a permitted purpose.
47
+
48
+ Personal Uses
49
+
50
+ Personal use for research, experiment, and testing for the benefit of public
51
+ knowledge, personal study, private entertainment, hobby projects, amateur
52
+ pursuits, or religious observance, without any anticipated commercial
53
+ application, is use for a permitted purpose.
54
+
55
+ Noncommercial Organizations
56
+
57
+ Use by any charitable organization, educational institution, public research
58
+ organization, public safety or health organization, environmental protection
59
+ organization, or government institution is use for a permitted purpose
60
+ regardless of the source of funding or obligations resulting from the funding.
61
+
62
+ Fair Use
63
+
64
+ You may have "fair use" rights for the software under the law. These terms do
65
+ not limit them.
66
+
67
+ No Other Rights
68
+
69
+ These terms do not allow you to sublicense or transfer any of your licenses to
70
+ anyone else, or prevent the licensor from granting licenses to anyone else.
71
+ These terms do not imply any other licenses.
72
+
73
+ Patent Defense
74
+
75
+ If you make any written claim that the software infringes or contributes to
76
+ infringement of any patent, your patent license for the software granted under
77
+ these terms ends immediately. If your employer makes such a claim, your patent
78
+ license ends immediately for work on behalf of your employer.
79
+
80
+ Violations
81
+
82
+ The first time you are notified in writing that you have violated any of these
83
+ terms, or done anything with the software not covered by your licenses, you
84
+ may avoid losing your licenses by taking all practical steps to comply within
85
+ 30 days after the notice. If you do not do so, your licenses end immediately.
86
+
87
+ No Liability
88
+
89
+ As far as the law allows, the software comes as is, without any warranty or
90
+ condition, and the licensor will not be liable to you for any damages arising
91
+ out of these terms or the use or nature of the software, under any kind of
92
+ legal claim.
93
+
94
+ Definitions
95
+
96
+ The "licensor" is the individual or entity offering these terms.
97
+
98
+ The "software" is the software the licensor makes available under these terms.
99
+
100
+ "You" refers to the individual or entity agreeing to these terms.
101
+
102
+ "Your company" is any legal entity, sole proprietorship, or other kind of
103
+ organization that you work for, plus all organizations that have control over,
104
+ are under the control of, or are under common control with that organization.
105
+ "Control" means ownership of substantially all the assets of an entity, or the
106
+ power to direct its management and legal commitments.
107
+
108
+ "Your licenses" are all the licenses granted to you for the software under
109
+ these terms.
110
+
111
+ "Use" means anything you do with the software requiring one of your licenses.
112
+
113
+ ---
114
+
115
+ COMMERCIAL USE
116
+
117
+ Use of this software for any commercial purpose — including but not limited to:
118
+ - running this software as part of a paid product or service,
119
+ - using this software to process data on behalf of a business,
120
+ - integrating this software into a product offered to customers,
121
+ - using this software internally at a for-profit company —
122
+
123
+ requires a separate commercial license from the copyright holder.
124
+
125
+ To obtain a commercial license, contact: sriram@getspanforge.com
126
+ Commercial licensing details: https://getspanforge.com/pricing
127
+
128
+ SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0