context-compiler 0.9.0.dev6__tar.gz → 0.9.0.dev7__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 (37) hide show
  1. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/PKG-INFO +1 -1
  2. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/pyproject.toml +1 -1
  3. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/grammar.py +2 -33
  4. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/.gitignore +0 -0
  5. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/LICENSE +0 -0
  6. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/README.md +0 -0
  7. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/01_llm_contradiction_error.py +0 -0
  8. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/02_llm_constraint_guardrail.py +0 -0
  9. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/03_llm_premise_guardrail.py +0 -0
  10. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/04_llm_tool_denylist_guardrail.py +0 -0
  11. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/05_llm_prompt_drift_vs_state.py +0 -0
  12. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/06_llm_context_compaction.py +0 -0
  13. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/07_llm_prompt_vs_state.py +0 -0
  14. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/08_llm_replacement_precondition.py +0 -0
  15. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/09_llm_confirmation_no_directive.py +0 -0
  16. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/README.md +0 -0
  17. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/__init__.py +0 -0
  18. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/common.py +0 -0
  19. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/llm_client.py +0 -0
  20. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/demos/run_demo.py +0 -0
  21. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/01_persistent_guardrails.py +0 -0
  22. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/02_configuration_and_correction.py +0 -0
  23. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/03_ambiguity_with_error.py +0 -0
  24. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/04_tool_governance_denylist.py +0 -0
  25. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/05_llm_integration_pattern.py +0 -0
  26. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/06_step_sequence_and_state_restore.py +0 -0
  27. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/07_single_policy_correction.py +0 -0
  28. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/README.md +0 -0
  29. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/examples/_util.py +0 -0
  30. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/host_support/__init__.py +0 -0
  31. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/host_support/provider_mode.py +0 -0
  32. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/__init__.py +0 -0
  33. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/const.py +0 -0
  34. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/decision_helpers.py +0 -0
  35. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/engine.py +0 -0
  36. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/py.typed +0 -0
  37. {context_compiler-0.9.0.dev6 → context_compiler-0.9.0.dev7}/src/context_compiler/repl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: context-compiler
3
- Version: 0.9.0.dev6
3
+ Version: 0.9.0.dev7
4
4
  Summary: Deterministic conversational state engine for LLM applications.
5
5
  Project-URL: Homepage, https://github.com/rlippmann/context-compiler
6
6
  Project-URL: Repository, https://github.com/rlippmann/context-compiler
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "context-compiler"
7
- version = "0.9.0dev6"
7
+ version = "0.9.0dev7"
8
8
  description = "Deterministic conversational state engine for LLM applications."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -21,19 +21,6 @@ class DirectiveKind(StrEnum):
21
21
  CLEAR_STATE = "clear_state"
22
22
 
23
23
 
24
- @dataclass(frozen=True, slots=True)
25
- class ValidatedDirective:
26
- """Classify accepted input text as one canonical directive kind.
27
-
28
- ``text`` preserves the accepted input text used for classification rather
29
- than a canonical rendered representation, so caller casing and formatting
30
- may remain visible here.
31
- """
32
-
33
- text: str
34
- kind: DirectiveKind
35
-
36
-
37
24
  @dataclass(frozen=True, slots=True)
38
25
  class CanonicalDirective:
39
26
  """Represent one parsed canonical directive and its named operands.
@@ -409,22 +396,6 @@ def decompose_directive(text: str) -> CanonicalDirective | None:
409
396
  return None
410
397
 
411
398
 
412
- def validate_directive(text: str) -> ValidatedDirective | None:
413
- """Classify whether text is a canonical directive.
414
-
415
- This determines whether ``text`` belongs to one canonical directive family
416
- and returns only the normalized semantic kind needed for classification.
417
- Callers can determine whether ``text`` is a canonical directive by checking
418
- whether this returns a non-`None` result while only receiving
419
- classification information. It does not expose operands, render directives,
420
- repair malformed text, or evaluate any state transition.
421
- """
422
- parsed = decompose_directive(text)
423
- if parsed is None:
424
- return None
425
- return ValidatedDirective(text=parsed.text, kind=parsed.kind)
426
-
427
-
428
399
  def render_directive(kind: DirectiveKind, /, **operands: str) -> str:
429
400
  """Produce canonical directive text from a semantic kind and operands.
430
401
 
@@ -461,8 +432,8 @@ def render_directive(kind: DirectiveKind, /, **operands: str) -> str:
461
432
 
462
433
  operand_view = MappingProxyType(normalized_operands)
463
434
  rendered = spec.renderer(operand_view)
464
- validated = validate_directive(rendered)
465
- if validated is None or validated.kind is not normalized_kind:
435
+ decomposed = decompose_directive(rendered)
436
+ if decomposed is None or decomposed.kind is not normalized_kind:
466
437
  raise ValueError(f"Operands do not produce a canonical {normalized_kind.value} directive.")
467
438
  return rendered
468
439
 
@@ -470,10 +441,8 @@ def render_directive(kind: DirectiveKind, /, **operands: str) -> str:
470
441
  __all__ = [
471
442
  "CanonicalDirective",
472
443
  "DirectiveKind",
473
- "ValidatedDirective",
474
444
  "contains_multiple_canonical_directives",
475
445
  "decompose_directive",
476
446
  "match_canonical_directive_start",
477
447
  "render_directive",
478
- "validate_directive",
479
448
  ]