{"id":"c0808","filename":"c0808_zakon38_token_ekonomija.dok.json","weise3_id":"WEISE3::zakon38-token-economy::genesis::2026-05-10::FENIX2026","tip":"zakon","naziv":"ZAKON 38 — Token Economy: Automatsko usmjeravanje agenata i kontrola potrosnje","kreator":"CC + Ivan","datum":"2026-05-10","snippet":"","status":"AKTIVAN","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"zakon","naziv":"ZAKON 38 — Token Economy: Automatsko usmjeravanje agenata i kontrola potrosnje","weise3_id":"WEISE3::zakon38-token-economy::genesis::2026-05-10::FENIX2026","datum":"2026-05-10","autor":"CC + Ivan","status":"AKTIVAN","verzija":"1.0","sto_treba":{"problem":"Antropic naplata ide po tokenu. Bez kontrole: svaki agent koristi Opus za trivijalne zadatke, trosi 5x vise nego sto treba. $5 pretplate nestane u danima umjesto tjednima.","rjesenje":"TokenRouter kao jedina tocka ulaska u Anthropic API. Automatska klasifikacija zadatka u Tier T0-T4. Svaki agent MORA deklarirati TokenPlan. Prompt caching za ponavljajuce kontekste.","usteda":"T0 vs T4: 5x jeftinije. T1 (cache hit): 90% jeftinije od T0. Kombinacija: do 50x usteda na tipicnom workloadu."},"zakon":{"tekst":"ZAKON 38 — TOKEN ECONOMY (od 2026-05-10, AKTIVAN). Svaki AI poziv u genesis sustavu MORA proci kroz TokenRouter. Direktni anthropic.messages.create() pozivi su ZABRANJENI izvan services/token_economy.py. Svaki agent MORA predati TokenPlan s obaveznim poljima: agent_id, task_type, max_tokens. Nepostojanje plana = MissingTokenPlan iznimka. TokenRouter automatski bira model prema Tier klasifikaciji T0-T4 i primjenjuje prompt caching za kontekste > 4000 tokena.","implementacija":"services/token_economy.py","singleton":"get_token_router()"},"tier_tablica":{"T0":{"model":"claude-haiku-4-5","use_case":"klasifikacija, lookup, da/ne, validacija","cijena":"$1/$5 per 1M"},"T1":{"model":"claude-haiku-4-5","use_case":"T0 zadaci s velikim ponovljivim kontekstom","cijena":"~$0.1/$5 per 1M (90% off input)"},"T2":{"model":"claude-sonnet-4-6","use_case":"summarizacija, generiranje, OCR, report","cijena":"$3/$15 per 1M"},"T3":{"model":"claude-sonnet-4-6","use_case":"logika, debug, chain-of-thought, refactor","cijena":"$3/$15 per 1M + adaptive thinking"},"T4":{"model":"claude-opus-4-7","use_case":"arhitektura, inovacija, deep research","cijena":"$5/$25 per 1M + adaptive thinking + effort:high"}},"faze":[{"naziv":"FAZA 1 — Core implementacija","status":"DONE","sto":["services/token_economy.py — TokenPlan TypedDict, Tier enum, TokenRouter klasa","tier_classify() deterministicka funkcija bez AI poziva","_apply_cache() za cache_control: ephemeral blokove","estimate_cost_usd() s cache_read racunicom","Singleton get_token_router()","Sync route() + Async route_async()","Logging svakog poziva: tier, model, in/out/cache tokeni, USD, elapsed"]},{"naziv":"FAZA 2 — Integracija u postojece agente","status":"TODO","sto":["services/trojstvo.py → TokenPlan za svaki od 3 modela (Haiku/Sonnet/Opus)","services/arhiva_ai.py → T2 za OCR, T0 za klasifikaciju tipa dokumenta","api/trojstvo.py → TokenPlan za svakog glasaca","api/chat.py → T2 default, T4 za kompleksna pitanja","Zamijeniti sve direktne anthropic.messages.create() pozive s get_token_router().route()"]},{"naziv":"FAZA 3 — Monitoring endpoint","status":"TODO","sto":["GET /api/v1/token-economy/stats — session_cost, session_calls, tier breakdown","GET /api/v1/token-economy/health — provjera anthropic paketa, env ANTHROPIC_API_KEY","Celery task: dnevni report troska na WhatsApp"]}],"primjer_koda":{"opis":"Minimalni primjer kako svaki agent mora koristiti TokenRouter","kod":"from services.token_economy import get_token_router, TokenPlan\n\nrouter = get_token_router()\nplan: TokenPlan = {\n    'agent_id':       'tahograf.driver_summary',\n    'task_type':      'sumariziraj dnevnik voznje vozaca za tjedan',\n    'max_tokens':     512,\n    'reduction_plan': 'saljem samo zadnjih 7 dana, ne cijeli arhiv',\n}\nresponse = router.route(plan, messages=[\n    {'role': 'user', 'content': tekst}\n], system='Ti si asistent za tahografe.')\nrezultat = response.content[0].text"},"cache_pravila":{"min_tokens_za_cache":4000,"max_breakpointi":4,"ttl":"5 minuta (Anthropic prompt cache TTL)","invariant":"Stabilan sadrzaj MORA biti na pocetku system bloka. Volatilni sadrzaj (datum, user input) IZA zadnjeg breakpointa."},"citacija":"Svaki token je novac. Svaki agent ima dug prema sustavu — dug se placa planom. — ZAKON 38, Ivan 2026-05-10","_opp_seal":"WEISE3::c0807::zakon38::genesis::2026-05-10"}}