spanforge 2.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 (101) hide show
  1. spanforge/__init__.py +695 -0
  2. spanforge/_batch_exporter.py +322 -0
  3. spanforge/_cli.py +3081 -0
  4. spanforge/_hooks.py +340 -0
  5. spanforge/_server.py +953 -0
  6. spanforge/_span.py +1015 -0
  7. spanforge/_store.py +287 -0
  8. spanforge/_stream.py +654 -0
  9. spanforge/_trace.py +334 -0
  10. spanforge/_tracer.py +253 -0
  11. spanforge/actor.py +141 -0
  12. spanforge/alerts.py +464 -0
  13. spanforge/auto.py +181 -0
  14. spanforge/baseline.py +336 -0
  15. spanforge/config.py +460 -0
  16. spanforge/consent.py +227 -0
  17. spanforge/consumer.py +379 -0
  18. spanforge/core/__init__.py +5 -0
  19. spanforge/core/compliance_mapping.py +1060 -0
  20. spanforge/cost.py +597 -0
  21. spanforge/debug.py +514 -0
  22. spanforge/drift.py +488 -0
  23. spanforge/egress.py +63 -0
  24. spanforge/eval.py +575 -0
  25. spanforge/event.py +1052 -0
  26. spanforge/exceptions.py +246 -0
  27. spanforge/explain.py +181 -0
  28. spanforge/export/__init__.py +50 -0
  29. spanforge/export/append_only.py +342 -0
  30. spanforge/export/cloud.py +349 -0
  31. spanforge/export/datadog.py +495 -0
  32. spanforge/export/grafana.py +331 -0
  33. spanforge/export/jsonl.py +198 -0
  34. spanforge/export/otel_bridge.py +291 -0
  35. spanforge/export/otlp.py +817 -0
  36. spanforge/export/otlp_bridge.py +231 -0
  37. spanforge/export/redis_backend.py +282 -0
  38. spanforge/export/webhook.py +302 -0
  39. spanforge/exporters/__init__.py +29 -0
  40. spanforge/exporters/console.py +271 -0
  41. spanforge/exporters/jsonl.py +144 -0
  42. spanforge/hitl.py +297 -0
  43. spanforge/inspect.py +429 -0
  44. spanforge/integrations/__init__.py +39 -0
  45. spanforge/integrations/_pricing.py +277 -0
  46. spanforge/integrations/anthropic.py +388 -0
  47. spanforge/integrations/bedrock.py +306 -0
  48. spanforge/integrations/crewai.py +251 -0
  49. spanforge/integrations/gemini.py +349 -0
  50. spanforge/integrations/groq.py +444 -0
  51. spanforge/integrations/langchain.py +349 -0
  52. spanforge/integrations/llamaindex.py +370 -0
  53. spanforge/integrations/ollama.py +286 -0
  54. spanforge/integrations/openai.py +370 -0
  55. spanforge/integrations/together.py +485 -0
  56. spanforge/metrics.py +393 -0
  57. spanforge/metrics_export.py +342 -0
  58. spanforge/migrate.py +278 -0
  59. spanforge/model_registry.py +282 -0
  60. spanforge/models.py +407 -0
  61. spanforge/namespaces/__init__.py +215 -0
  62. spanforge/namespaces/audit.py +253 -0
  63. spanforge/namespaces/cache.py +209 -0
  64. spanforge/namespaces/chain.py +74 -0
  65. spanforge/namespaces/confidence.py +69 -0
  66. spanforge/namespaces/consent.py +85 -0
  67. spanforge/namespaces/cost.py +175 -0
  68. spanforge/namespaces/decision.py +135 -0
  69. spanforge/namespaces/diff.py +146 -0
  70. spanforge/namespaces/drift.py +79 -0
  71. spanforge/namespaces/eval_.py +232 -0
  72. spanforge/namespaces/fence.py +180 -0
  73. spanforge/namespaces/guard.py +104 -0
  74. spanforge/namespaces/hitl.py +92 -0
  75. spanforge/namespaces/latency.py +69 -0
  76. spanforge/namespaces/prompt.py +185 -0
  77. spanforge/namespaces/redact.py +172 -0
  78. spanforge/namespaces/template.py +197 -0
  79. spanforge/namespaces/tool_call.py +76 -0
  80. spanforge/namespaces/trace.py +1006 -0
  81. spanforge/normalizer.py +183 -0
  82. spanforge/presidio_backend.py +149 -0
  83. spanforge/processor.py +258 -0
  84. spanforge/prompt_registry.py +415 -0
  85. spanforge/py.typed +0 -0
  86. spanforge/redact.py +780 -0
  87. spanforge/sampling.py +500 -0
  88. spanforge/schemas/v1.0/schema.json +170 -0
  89. spanforge/schemas/v2.0/schema.json +536 -0
  90. spanforge/signing.py +1152 -0
  91. spanforge/stream.py +559 -0
  92. spanforge/testing.py +376 -0
  93. spanforge/trace.py +199 -0
  94. spanforge/types.py +696 -0
  95. spanforge/ulid.py +304 -0
  96. spanforge/validate.py +383 -0
  97. spanforge-2.0.0.dist-info/METADATA +1777 -0
  98. spanforge-2.0.0.dist-info/RECORD +101 -0
  99. spanforge-2.0.0.dist-info/WHEEL +4 -0
  100. spanforge-2.0.0.dist-info/entry_points.txt +5 -0
  101. spanforge-2.0.0.dist-info/licenses/LICENSE +21 -0
spanforge/__init__.py ADDED
@@ -0,0 +1,695 @@
1
+ """SpanForge — AI lifecycle and governance platform (RFC-0001 SPANFORGE v2.0).
2
+
3
+ Every tool in the LLM Developer Toolkit emits events that conform to the
4
+ :class:`~spanforge.event.Event` envelope defined here. The schema is
5
+ OpenTelemetry-compatible, tamper-evident, and enterprise-grade.
6
+
7
+ Quick start
8
+ -----------
9
+ ::
10
+
11
+ from spanforge import Event, EventType, Tags
12
+
13
+ event = Event(
14
+ event_type=EventType.TRACE_SPAN_COMPLETED,
15
+ source="my-agent@1.0.0",
16
+ payload={"span_name": "run_agent", "status": "ok"},
17
+ tags=Tags(env="production", model="gpt-4o"),
18
+ )
19
+ event.validate()
20
+ print(event.to_json())
21
+
22
+ Public API
23
+ ----------
24
+ Core envelope
25
+ ~~~~~~~~~~~~~
26
+ * :class:`~spanforge.event.Event`
27
+ * :class:`~spanforge.event.Tags`
28
+ * :data:`~spanforge.event.SCHEMA_VERSION`
29
+
30
+ Event types
31
+ ~~~~~~~~~~~
32
+ * :class:`~spanforge.types.EventType` — RFC Appendix B canonical types
33
+ * :func:`~spanforge.types.is_registered`
34
+ * :func:`~spanforge.types.namespace_of`
35
+ * :func:`~spanforge.types.validate_custom`
36
+ * :func:`~spanforge.types.get_by_value`
37
+
38
+ ULID
39
+ ~~~~
40
+ * :func:`~spanforge.ulid.generate`
41
+ * :func:`~spanforge.ulid.validate`
42
+ * :func:`~spanforge.ulid.extract_timestamp_ms`
43
+
44
+ PII redaction (RFC §12)
45
+ ~~~~~~~~~~~~~~~~~~~~~~~
46
+ * :class:`~spanforge.redact.Sensitivity`
47
+ * :class:`~spanforge.redact.Redactable`
48
+ * :class:`~spanforge.redact.RedactionPolicy`
49
+ * :class:`~spanforge.redact.RedactionResult`
50
+ * :class:`~spanforge.redact.PIINotRedactedError`
51
+ * :func:`~spanforge.redact.contains_pii`
52
+ * :func:`~spanforge.redact.assert_redacted`
53
+
54
+ HMAC signing & audit chain (RFC §11)
55
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56
+ * :func:`~spanforge.signing.sign`
57
+ * :func:`~spanforge.signing.verify`
58
+ * :func:`~spanforge.signing.verify_chain`
59
+ * :func:`~spanforge.signing.assert_verified`
60
+ * :class:`~spanforge.signing.ChainVerificationResult`
61
+ * :class:`~spanforge.signing.AuditStream`
62
+
63
+ Export backends (RFC §14)
64
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
65
+ * :class:`~spanforge.export.otlp.OTLPExporter`
66
+ * :class:`~spanforge.export.otlp.ResourceAttributes`
67
+ * :class:`~spanforge.export.webhook.WebhookExporter`
68
+ * :class:`~spanforge.export.jsonl.JSONLExporter`
69
+
70
+ Event routing (RFC §14)
71
+ ~~~~~~~~~~~~~~~~~~~~~~~
72
+ * :class:`~spanforge.stream.EventStream`
73
+ * :class:`~spanforge.stream.Exporter`
74
+ * :func:`~spanforge.stream.iter_file`
75
+ * :func:`~spanforge.stream.aiter_file`
76
+
77
+ Observability spans & tracing
78
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79
+ * :class:`~spanforge._span.SpanEvent`
80
+ * :data:`~spanforge.types.SpanErrorCategory`
81
+
82
+ Debug utilities
83
+ ~~~~~~~~~~~~~~~
84
+ * :func:`~spanforge.debug.print_tree`
85
+ * :func:`~spanforge.debug.summary`
86
+ * :func:`~spanforge.debug.visualize`
87
+
88
+ Governance (RFC §13)
89
+ ~~~~~~~~~~~~~~~~~~~~~
90
+ * :class:`~spanforge.governance.EventGovernancePolicy`
91
+ * :class:`~spanforge.governance.GovernanceViolationError`
92
+ * :class:`~spanforge.governance.GovernanceWarning`
93
+
94
+ Consumer registration (RFC §16)
95
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96
+ * :class:`~spanforge.consumer.ConsumerRecord`
97
+ * :class:`~spanforge.consumer.ConsumerRegistry`
98
+ * :class:`~spanforge.consumer.IncompatibleSchemaError`
99
+ * :func:`~spanforge.consumer.register_consumer`
100
+ * :func:`~spanforge.consumer.assert_compatible`
101
+
102
+ Validation
103
+ ~~~~~~~~~~
104
+ * :func:`~spanforge.validate.validate_event`
105
+
106
+ Exceptions
107
+ ~~~~~~~~~~
108
+ * :class:`~spanforge.exceptions.LLMSchemaError`
109
+ * :class:`~spanforge.exceptions.SchemaValidationError`
110
+ * :class:`~spanforge.exceptions.SchemaVersionError`
111
+ * :class:`~spanforge.exceptions.ULIDError`
112
+ * :class:`~spanforge.exceptions.SerializationError`
113
+ * :class:`~spanforge.exceptions.DeserializationError`
114
+ * :class:`~spanforge.exceptions.EventTypeError`
115
+ * :class:`~spanforge.exceptions.SigningError`
116
+ * :class:`~spanforge.exceptions.VerificationError`
117
+ * :class:`~spanforge.exceptions.ExportError`
118
+
119
+ Version history
120
+ ---------------
121
+ v2.0 — RFC-0001 SPANFORGE v2.0 SDK baseline. Canonical 36-type EventType
122
+ registry (Appendix B), v2.0 envelope (SCHEMA_VERSION="2.0"),
123
+ microsecond-precision timestamp mandate, RFC §6.3 ULID first-char
124
+ constraint, source pattern allowing mixed-case, SchemaVersionError,
125
+ 11 namespace payload modules (RFC §8–§10), audit chain helpers.
126
+ """
127
+
128
+ from __future__ import annotations
129
+
130
+ from spanforge.debug import print_tree, summary, visualize
131
+ from spanforge._span import (
132
+ AgentRunContext,
133
+ AgentRunContextManager,
134
+ AgentStepContext,
135
+ AgentStepContextManager,
136
+ Span,
137
+ SpanContextManager,
138
+ copy_context,
139
+ )
140
+
141
+ # ---------------------------------------------------------------------------
142
+ # Phase 1: Trace object and start_trace()
143
+ # ---------------------------------------------------------------------------
144
+ from spanforge._trace import Trace, start_trace
145
+
146
+ # ---------------------------------------------------------------------------
147
+ # Phase 4: Metrics extraction + in-process trace store
148
+ # ---------------------------------------------------------------------------
149
+ import spanforge.metrics as metrics
150
+ from spanforge._store import (
151
+ TraceStore,
152
+ get_last_agent_run,
153
+ get_store,
154
+ get_trace,
155
+ list_llm_calls,
156
+ list_tool_calls,
157
+ trace_store,
158
+ )
159
+
160
+ # ---------------------------------------------------------------------------
161
+ # Phase 5: Hook registry
162
+ # ---------------------------------------------------------------------------
163
+ from spanforge._hooks import AsyncHookFn, HookRegistry, hooks
164
+
165
+ # ---------------------------------------------------------------------------
166
+ # Phase 2: Core tracer + span
167
+ # ---------------------------------------------------------------------------
168
+ from spanforge._tracer import Tracer, tracer
169
+ from spanforge.actor import ActorContext
170
+
171
+ # ---------------------------------------------------------------------------
172
+ # Phase 1: Configuration layer
173
+ # ---------------------------------------------------------------------------
174
+ from spanforge.config import SpanForgeConfig, configure, get_config
175
+ from spanforge.consumer import (
176
+ ConsumerRecord,
177
+ ConsumerRegistry,
178
+ IncompatibleSchemaError,
179
+ assert_compatible,
180
+ register_consumer,
181
+ )
182
+ from spanforge.consumer import (
183
+ get_registry as get_consumer_registry,
184
+ )
185
+ from spanforge.event import SCHEMA_VERSION, Event, Tags
186
+ from spanforge.exceptions import (
187
+ AuditStorageError,
188
+ DeserializationError,
189
+ EgressViolationError,
190
+ EventTypeError,
191
+ ExportError,
192
+ LLMSchemaError,
193
+ SchemaValidationError,
194
+ SchemaVersionError,
195
+ SerializationError,
196
+ SigningError,
197
+ ULIDError,
198
+ VerificationError,
199
+ )
200
+ from spanforge.export import (
201
+ AppendOnlyJSONLExporter,
202
+ JSONLExporter,
203
+ OTLPExporter,
204
+ OTelBridgeExporter,
205
+ ResourceAttributes,
206
+ WORMBackend,
207
+ WORMUploadResult,
208
+ WebhookExporter,
209
+ )
210
+ # ---------------------------------------------------------------------------
211
+ # Namespace payload dataclasses (RFC §8-§10, §11 audit)
212
+ # ---------------------------------------------------------------------------
213
+ from spanforge.namespaces.audit import (
214
+ AuditChainTamperedPayload,
215
+ AuditChainVerifiedPayload,
216
+ AuditKeyRotatedPayload,
217
+ )
218
+ from spanforge.namespaces.cache import (
219
+ CacheEvictedPayload,
220
+ CacheHitPayload,
221
+ CacheMissPayload,
222
+ CacheWrittenPayload,
223
+ )
224
+ from spanforge.namespaces.cost import (
225
+ CostAttributedPayload,
226
+ CostSessionRecordedPayload,
227
+ CostTokenRecordedPayload,
228
+ )
229
+ from spanforge.namespaces.diff import (
230
+ DiffComputedPayload,
231
+ DiffRegressionFlaggedPayload,
232
+ )
233
+ from spanforge.namespaces.eval_ import (
234
+ EvalRegressionDetectedPayload,
235
+ EvalScenarioCompletedPayload,
236
+ EvalScenarioStartedPayload,
237
+ EvalScoreRecordedPayload,
238
+ )
239
+ from spanforge.namespaces.fence import (
240
+ FenceMaxRetriesExceededPayload,
241
+ FenceRetryTriggeredPayload,
242
+ FenceValidatedPayload,
243
+ )
244
+ from spanforge.namespaces.guard import GuardPayload
245
+ from spanforge.namespaces.prompt import (
246
+ PromptRenderedPayload,
247
+ PromptTemplateLoadedPayload,
248
+ PromptVersionChangedPayload,
249
+ )
250
+ from spanforge.namespaces.redact import (
251
+ RedactAppliedPayload,
252
+ RedactPhiDetectedPayload,
253
+ RedactPiiDetectedPayload,
254
+ )
255
+ from spanforge.namespaces.template import (
256
+ TemplateRegisteredPayload,
257
+ TemplateValidationFailedPayload,
258
+ TemplateVariableBoundPayload,
259
+ )
260
+ from spanforge.namespaces.trace import (
261
+ AgentRunPayload,
262
+ AgentStepPayload,
263
+ CostBreakdown,
264
+ DecisionPoint,
265
+ GenAIOperationName,
266
+ GenAISystem,
267
+ ModelInfo,
268
+ PricingTier,
269
+ ReasoningStep,
270
+ SpanEvent,
271
+ SpanKind,
272
+ SpanPayload,
273
+ TokenUsage,
274
+ ToolCall,
275
+ )
276
+ from spanforge.redact import (
277
+ DPDP_PATTERNS,
278
+ PII_TYPES,
279
+ PIINotRedactedError,
280
+ PIIScanResult,
281
+ Redactable,
282
+ RedactionPolicy,
283
+ RedactionResult,
284
+ Sensitivity,
285
+ assert_redacted,
286
+ contains_pii,
287
+ scan_payload,
288
+ )
289
+ from spanforge.signing import (
290
+ AsyncAuditStream,
291
+ AuditStream,
292
+ ChainVerificationResult,
293
+ DictKeyResolver,
294
+ EnvKeyResolver,
295
+ KeyResolver,
296
+ StaticKeyResolver,
297
+ assert_verified,
298
+ check_key_expiry,
299
+ derive_key,
300
+ sign,
301
+ validate_key_strength,
302
+ verify,
303
+ verify_chain,
304
+ )
305
+ from spanforge.stream import EventStream, Exporter, aiter_file, iter_file
306
+ from spanforge.types import (
307
+ EventType,
308
+ SpanErrorCategory,
309
+ get_by_value,
310
+ is_registered,
311
+ namespace_of,
312
+ validate_custom,
313
+ )
314
+ from spanforge.ulid import extract_timestamp_ms
315
+ from spanforge.ulid import generate as generate_ulid
316
+ from spanforge.ulid import validate as validate_ulid
317
+ from spanforge.validate import validate_event
318
+ from spanforge.normalizer import GenericNormalizer, ProviderNormalizer
319
+ from spanforge.trace import trace
320
+ from spanforge.export.otlp_bridge import SpanOTLPBridge, span_to_otlp_dict
321
+ from spanforge.cost import CostTracker, BudgetMonitor, budget_alert, emit_cost_event, emit_cost_attributed, cost_summary, CostRecord
322
+ from spanforge.inspect import InspectorSession, ToolCallRecord, inspect_trace
323
+ from spanforge._stream import flush, shutdown
324
+ from spanforge._span import extract_traceparent, inject_traceparent
325
+ from spanforge.processor import (
326
+ SpanProcessor,
327
+ ProcessorChain,
328
+ NoopSpanProcessor,
329
+ add_processor,
330
+ clear_processors,
331
+ )
332
+ from spanforge._batch_exporter import BatchExporter
333
+ from spanforge.sampling import (
334
+ AlwaysOffSampler,
335
+ AlwaysOnSampler,
336
+ ComplianceSampler,
337
+ ParentBasedSampler,
338
+ RatioSampler,
339
+ RuleBasedSampler,
340
+ Sampler,
341
+ TailBasedSampler,
342
+ bypass_sampling,
343
+ )
344
+ from spanforge.eval import (
345
+ EvalReport,
346
+ EvalRunner,
347
+ EvalScore,
348
+ EvalScorer,
349
+ FaithfulnessScorer,
350
+ PIILeakageScorer,
351
+ RefusalDetectionScorer,
352
+ RegressionDetector,
353
+ record_eval_score,
354
+ )
355
+ from spanforge.prompt_registry import (
356
+ PromptRegistry,
357
+ PromptVersion,
358
+ get_prompt_version,
359
+ register_prompt,
360
+ render_prompt,
361
+ )
362
+ from spanforge.metrics_export import (
363
+ MetricsSummary,
364
+ PrometheusMetricsExporter,
365
+ serve_metrics,
366
+ )
367
+ from spanforge._server import TraceViewerServer
368
+ from spanforge.egress import check_egress
369
+ from spanforge.migrate import MigrationStats, migrate_file, v1_to_v2
370
+ # ---------------------------------------------------------------------------
371
+ # T.R.U.S.T. Framework — Consent, HITL, Model Registry, Explainability
372
+ # ---------------------------------------------------------------------------
373
+ from spanforge.consent import (
374
+ ConsentBoundary,
375
+ ConsentRecord,
376
+ check_consent,
377
+ grant_consent,
378
+ revoke_consent,
379
+ )
380
+ from spanforge.hitl import (
381
+ HITLItem,
382
+ HITLQueue,
383
+ list_pending,
384
+ queue_for_review,
385
+ review_item,
386
+ )
387
+ from spanforge.model_registry import (
388
+ ModelRegistry,
389
+ ModelRegistryEntry,
390
+ deprecate_model,
391
+ get_model,
392
+ list_models,
393
+ register_model,
394
+ retire_model,
395
+ )
396
+ from spanforge.explain import (
397
+ ExplainabilityRecord,
398
+ generate_explanation,
399
+ )
400
+ from spanforge.namespaces.consent import ConsentPayload
401
+ from spanforge.namespaces.hitl import HITLPayload
402
+ __version__: str = "2.0.0"
403
+ #: RFC-0001 SPANFORGE conformance profile label.
404
+ from typing import Final as _Final
405
+ CONFORMANCE_PROFILE: _Final[str] = "SPANFORGE-Enterprise-2.0"
406
+
407
+ # Optional sub-modules — import on demand to keep startup cost zero.
408
+ import spanforge.testing as testing # noqa: E402
409
+ import spanforge.auto as auto # noqa: E402
410
+
411
+ __all__: list[str] = [
412
+ "PII_TYPES",
413
+ "SCHEMA_VERSION",
414
+ # Actor identity context
415
+ "ActorContext",
416
+ "AgentRunContext",
417
+ "AgentRunContextManager",
418
+ "AgentRunPayload",
419
+ "AgentStepContext",
420
+ "AgentStepContextManager",
421
+ "AgentStepPayload",
422
+ "AuditChainTamperedPayload",
423
+ "AuditChainVerifiedPayload",
424
+ # audit
425
+ "AuditKeyRotatedPayload",
426
+ "AuditStream",
427
+ "CacheEvictedPayload",
428
+ # cache
429
+ "CacheHitPayload",
430
+ "CacheMissPayload",
431
+ "CacheWrittenPayload",
432
+ "ChainVerificationResult",
433
+ # Consumer registration (RFC §16)
434
+ "ConsumerRecord",
435
+ "ConsumerRegistry",
436
+ "CostAttributedPayload",
437
+ "CostBreakdown",
438
+ "CostSessionRecordedPayload",
439
+ # cost
440
+ "CostTokenRecordedPayload",
441
+ "DecisionPoint",
442
+ "DeserializationError",
443
+ # diff
444
+ "DiffComputedPayload",
445
+ "DiffRegressionFlaggedPayload",
446
+ "EvalRegressionDetectedPayload",
447
+ "EvalScenarioCompletedPayload",
448
+ "EvalScenarioStartedPayload",
449
+ # eval
450
+ "EvalScoreRecordedPayload",
451
+ # Core envelope
452
+ "Event",
453
+ # Event routing (RFC §14)
454
+ "EventStream",
455
+ # Event types
456
+ "EventType",
457
+ "EventTypeError",
458
+ "ExportError",
459
+ "Exporter",
460
+ "FenceMaxRetriesExceededPayload",
461
+ "FenceRetryTriggeredPayload",
462
+ # fence
463
+ "FenceValidatedPayload",
464
+ "GenAIOperationName",
465
+ # Namespace payload dataclasses (RFC §8-§11)
466
+ # trace — value objects
467
+ "GenAISystem",
468
+ # guard
469
+ "GuardPayload",
470
+ "IncompatibleSchemaError",
471
+ "JSONLExporter",
472
+ # Exceptions
473
+ "LLMSchemaError",
474
+ "ModelInfo",
475
+ # Export backends (RFC §14)
476
+ "OTelBridgeExporter",
477
+ "OTLPExporter",
478
+ "PIINotRedactedError",
479
+ "PricingTier",
480
+ # prompt
481
+ "PromptRenderedPayload",
482
+ "PromptTemplateLoadedPayload",
483
+ "PromptVersionChangedPayload",
484
+ "ReasoningStep",
485
+ "RedactAppliedPayload",
486
+ "RedactPhiDetectedPayload",
487
+ # redact
488
+ "RedactPiiDetectedPayload",
489
+ "Redactable",
490
+ "RedactionPolicy",
491
+ "RedactionResult",
492
+ "ResourceAttributes",
493
+ "SchemaValidationError",
494
+ "SchemaVersionError",
495
+ # PII Redaction (RFC §12)
496
+ "Sensitivity",
497
+ "SerializationError",
498
+ "SigningError",
499
+ "Span",
500
+ "SpanContextManager",
501
+ "SpanErrorCategory",
502
+ "SpanEvent",
503
+ "SpanKind",
504
+ # trace — payloads
505
+ "SpanPayload",
506
+ "Tags",
507
+ # template
508
+ "TemplateRegisteredPayload",
509
+ "TemplateValidationFailedPayload",
510
+ "TemplateVariableBoundPayload",
511
+ "TokenUsage",
512
+ "ToolCall",
513
+ # Phase 3 — Debug utilities
514
+ "print_tree",
515
+ "summary",
516
+ "visualize",
517
+ # Phase 1 — Trace object
518
+ "Trace",
519
+ # Phase 2 — Tracer + Span
520
+ "Tracer",
521
+ # Phase 4 — Metrics + trace store
522
+ "metrics",
523
+ "TraceStore",
524
+ "get_store",
525
+ "get_trace",
526
+ "get_last_agent_run",
527
+ "list_tool_calls",
528
+ "list_llm_calls",
529
+ "trace_store",
530
+ # Phase 5 — Hooks
531
+ "AsyncHookFn",
532
+ "HookRegistry",
533
+ "hooks",
534
+ # Phase 1 — Configuration
535
+ "SpanForgeConfig",
536
+ "ULIDError",
537
+ "VerificationError",
538
+ "WebhookExporter",
539
+ # Metadata
540
+ "__version__",
541
+ "testing",
542
+ "auto",
543
+ "aiter_file",
544
+ "assert_compatible",
545
+ "assert_redacted",
546
+ "assert_verified",
547
+ "configure",
548
+ "contains_pii",
549
+ # Context propagation helper (Phase 1)
550
+ "copy_context",
551
+ "extract_timestamp_ms",
552
+ # ULID
553
+ "generate_ulid",
554
+ "get_by_value",
555
+ "get_config",
556
+ "get_consumer_registry",
557
+ "is_registered",
558
+ "iter_file",
559
+ "namespace_of",
560
+ "register_consumer",
561
+ # HMAC Signing & Audit Chain (RFC §11)
562
+ "sign",
563
+ "start_trace",
564
+ "tracer",
565
+ "validate_custom",
566
+ # Validation
567
+ "validate_event",
568
+ "validate_ulid",
569
+ "verify",
570
+ "verify_chain",
571
+ # Normalizer (RFC-0001 §10.4)
572
+ "ProviderNormalizer",
573
+ "GenericNormalizer",
574
+ # Conformance
575
+ "CONFORMANCE_PROFILE",
576
+ # Tool 1 — @trace() decorator + OTLP bridge
577
+ "trace",
578
+ "SpanOTLPBridge",
579
+ "span_to_otlp_dict",
580
+ # Tool 2 — Cost Calculation Engine
581
+ "BudgetMonitor",
582
+ "CostRecord",
583
+ "CostTracker",
584
+ "budget_alert",
585
+ "cost_summary",
586
+ "emit_cost_attributed",
587
+ "emit_cost_event",
588
+ # Tool 3 — Tool Call Inspector
589
+ "InspectorSession",
590
+ "ToolCallRecord",
591
+ "inspect_trace",
592
+ # Graceful shutdown
593
+ "flush",
594
+ "shutdown",
595
+ # W3C context propagation
596
+ "extract_traceparent",
597
+ "inject_traceparent",
598
+ # Span processor pipeline
599
+ "SpanProcessor",
600
+ "ProcessorChain",
601
+ "NoopSpanProcessor",
602
+ "add_processor",
603
+ "clear_processors",
604
+ # Batch exporter
605
+ "BatchExporter",
606
+ # Sampling
607
+ "AlwaysOffSampler",
608
+ "AlwaysOnSampler",
609
+ "ParentBasedSampler",
610
+ "RatioSampler",
611
+ "RuleBasedSampler",
612
+ "Sampler",
613
+ "TailBasedSampler",
614
+ # Evaluation hooks
615
+ "EvalReport",
616
+ "EvalRunner",
617
+ "EvalScore",
618
+ "EvalScorer",
619
+ "FaithfulnessScorer",
620
+ "PIILeakageScorer",
621
+ "RefusalDetectionScorer",
622
+ "RegressionDetector",
623
+ "record_eval_score",
624
+ # Prompt registry
625
+ "PromptRegistry",
626
+ "PromptVersion",
627
+ "get_prompt_version",
628
+ "register_prompt",
629
+ "render_prompt",
630
+ # Prometheus metrics
631
+ "MetricsSummary",
632
+ "PrometheusMetricsExporter",
633
+ "serve_metrics",
634
+ # Local trace viewer
635
+ "TraceViewerServer",
636
+ # Egress enforcement (SF-14)
637
+ "check_egress",
638
+ # Schema migration (GA-05)
639
+ "MigrationStats",
640
+ "migrate_file",
641
+ "v1_to_v2",
642
+ # PII deep scan (GA-03)
643
+ "PIIScanResult",
644
+ "scan_payload",
645
+ # Async audit stream (GA-06)
646
+ "AsyncAuditStream",
647
+ # Multi-tenant key resolvers (GA-04)
648
+ "KeyResolver",
649
+ "StaticKeyResolver",
650
+ "EnvKeyResolver",
651
+ "DictKeyResolver",
652
+ # Key management (GA-01)
653
+ "check_key_expiry",
654
+ "derive_key",
655
+ "validate_key_strength",
656
+ # Append-only export + WORM (SF-13)
657
+ "AppendOnlyJSONLExporter",
658
+ "WORMBackend",
659
+ "WORMUploadResult",
660
+ # Egress enforcement exceptions (SF-14)
661
+ "EgressViolationError",
662
+ "AuditStorageError",
663
+ # Compliance sampling (SF-16)
664
+ "ComplianceSampler",
665
+ "bypass_sampling",
666
+ # ---------------------------------------------------------------------------
667
+ # T.R.U.S.T. Framework — Consent, HITL, Model Registry, Explainability
668
+ # ---------------------------------------------------------------------------
669
+ # Consent boundary
670
+ "ConsentBoundary",
671
+ "ConsentPayload",
672
+ "ConsentRecord",
673
+ "check_consent",
674
+ "grant_consent",
675
+ "revoke_consent",
676
+ # Human-in-the-loop
677
+ "HITLItem",
678
+ "HITLPayload",
679
+ "HITLQueue",
680
+ "list_pending",
681
+ "queue_for_review",
682
+ "review_item",
683
+ # Model registry
684
+ "ModelRegistry",
685
+ "ModelRegistryEntry",
686
+ "deprecate_model",
687
+ "get_model",
688
+ "list_models",
689
+ "register_model",
690
+ "retire_model",
691
+ # Explainability
692
+ "ExplainabilityRecord",
693
+ "generate_explanation",
694
+ ]
695
+