ATM

REFERINȚĂ

Referință de implementare

Puncte de intrare, vocabularul rezultatelor și documentele primare pentru integrare.

Codul de context — îl rulezi oriunde

Ăsta e blocul care contează dacă vrei doar să-l folosești, nu să testezi biblioteca. Nu are nevoie de Claude Code, de MCP sau de vreun cont — merge în orice proces Python: propriul tău agent, un notebook, un job CI, sau lipit direct într-o sesiune de chat ca să dai contextul dintr-o dată. Adaptat direct din README-ul pachetului:

pip install fpf-thinking-map
from fpf_thinking_map.state import SemanticMap, RuntimeBinding
from fpf_thinking_map.primitives import (
    ContextPrimitive, RolePrimitive, GatePrimitive, GateCheck, TransitionPrimitive,
)
from fpf_thinking_map.logic import LogicLayer, DecisionRule, RuleKind, EvidencePresent, GatePasses
from fpf_thinking_map.traversal import ThinkingMapTraversal

# 1. your domain: contexts, roles, gates, transitions
sm = SemanticMap()
sm.register_context(ContextPrimitive("my_domain", "My Domain",
    glossary={"review": "check code for correctness"}))
sm.register_role(RolePrimitive("reviewer", "Reviewer", "my_domain"))
sm.register_gate(GatePrimitive("review_gate", "Review Gate", "my_domain", checks=[
    GateCheck("tests", "Tests must pass", required_evidence=["test_results"]),
]))
sm.register_transition(TransitionPrimitive(
    "start_to_reviewed", "Start -> Reviewed", "my_domain",
    from_state="start", to_state="reviewed",
    required_gate_id="review_gate", required_evidence=["test_results"],
))

# 2. optional: your own logic rules
logic = LogicLayer()
logic.add_rule(DecisionRule(
    name="review_ready",
    condition=EvidencePresent("test_results").AND(GatePasses("review_gate")),
    action_if_true="proceed_to_review", action_if_false="not_ready",
    kind=RuleKind.ROUTE, tags=["review"],
))

# 3. the engine, one step
engine = ThinkingMapTraversal(sm, logic_layer=logic)
binding = RuntimeBinding(
    task="review PR #42", actor_role_ids=["reviewer"],
    active_context_id="my_domain", current_evidence=["test_results"],
)
state = engine.build_active_state(binding, current_state="start")
outcome = engine.step(state, transition_id="start_to_reviewed")
print(outcome.kind, outcome.llm_prompt_state)

Schimbă my_domain/reviewer/review_gate cu propriul tău context, rol și poartă — restul mecanismului (starea, felia, rezultatul tipizat) rămâne identic.

Vrei să-l încerci fără să scrii cod? Mod utilizator vs. mod dezvoltator, în Claude Code

Șase pași de instalare, apoi alegi ce vrei să faci:

  1. 1.Clonează repo-ulgit clone https://github.com/igareosh/fpf-agentic-thinking-map
  2. 2.Intră în foldercd fpf-agentic-thinking-map
  3. 3.Instalează localpip install -e .
  4. 4.Instalează serverul de testpip install -r dev_mcp/requirements.txt
  5. 5.Verifică-lpython -m dev_mcp.test_server — trebuie să vezi 13/13
  6. 6.Adaugă-l în Claude Code, dintr-o comandăclaude mcp add fpf-test -- python -m dev_mcp.server

Mod utilizator

Testezi propriul tău domeniu, conversațional. Îi ceri lui Claude: „construiește un run_scenario cu scope="user-extension" pentru cazul meu, pornind de la codul de context de mai sus" — Claude scrie și rulează scenariul, tu vezi rezultatul.

Mod dezvoltator

Auditezi chiar biblioteca. Îi ceri lui Claude: „rulează get_audit_gaps cu scope="core" și arată-mi un gol de acoperire" — util dacă vrei să contribui sau să verifici limitele, nu ca să înveți să-l folosești.

Ambele sunt modul de inspectat, nu cel de producție — perfect ca să-l simți în 10 minute înainte să decizi dacă merită integrat undeva serios. Pentru producție, folosești direct codul de context de mai sus, în propriul tău proces.

Obiecte principale

SemanticMapStructura statică și relațiile permise.
RuntimeBindingRolul, starea și dovezile curente.
ThinkingMapTraversalSelectarea candidaților, porțile și rezultatul.

Rezultate tipizate

CONTINUE · COLLECT_EVIDENCE · BRIDGE · IDLE · ESCALATE

Documente din repository

Vrei asta în propriul proiect?

Dacă vrei ATM integrat într-un sistem agentic real — finanțe, e-commerce, orice unde un agent trebuie să respecte un cadru, nu doar să improvizeze — scrie direct: igareosh@igareosh.com — adresa mea personală, citesc și răspund eu, nu un formular de contact anonim.