mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 20:51:49 +00:00
init
This commit is contained in:
62
negot8/backend/features/generic.py
Normal file
62
negot8/backend/features/generic.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from features.base_feature import BaseFeature
|
||||
|
||||
|
||||
class GenericFeature(BaseFeature):
|
||||
"""Fallback feature for any coordination type not matched by the 8 specific features."""
|
||||
|
||||
async def get_context(self, preferences_a: dict, preferences_b: dict, user_a_id: int = None, user_b_id: int = None) -> str:
|
||||
goal_a = preferences_a.get("goal", "")
|
||||
goal_b = preferences_b.get("goal", "")
|
||||
|
||||
lines = [
|
||||
"GENERIC COORDINATION RULES:",
|
||||
"• Find the solution that satisfies both parties' stated goals and hard constraints.",
|
||||
"• Be creative — there may be a win-win that isn't obvious from the positions stated.",
|
||||
"• Concede on nice-to-haves first, protect hard constraints at all costs.",
|
||||
"• If completely stuck, propose 2-3 concrete options for humans to choose from.",
|
||||
]
|
||||
if goal_a:
|
||||
lines.append(f"\nPerson A's goal: {goal_a}")
|
||||
if goal_b:
|
||||
lines.append(f"Person B's goal: {goal_b}")
|
||||
|
||||
return "\n".join(lines)
|
||||
|
||||
def format_resolution(
|
||||
self, resolution: dict, preferences_a: dict, preferences_b: dict
|
||||
) -> str:
|
||||
status = resolution.get("status", "resolved")
|
||||
final = resolution.get("final_proposal", {})
|
||||
details = final.get("details", {})
|
||||
rounds = resolution.get("rounds_taken", "?")
|
||||
summary = resolution.get("summary", "Agreement reached")
|
||||
|
||||
if status == "escalated":
|
||||
return (
|
||||
f"⚠️ *Coordination — Human Decision Needed*\n\n"
|
||||
f"_{summary}_\n\n"
|
||||
f"Agents explored options but couldn't decide in {rounds} round(s)."
|
||||
)
|
||||
|
||||
for_a = final.get("for_party_a") or details.get("for_a") or ""
|
||||
for_b = final.get("for_party_b") or details.get("for_b") or ""
|
||||
|
||||
lines = ["✅ *Agreement Reached!*\n"]
|
||||
lines.append(f"_{summary}_")
|
||||
if for_a:
|
||||
lines.append(f"\n👤 *For you:* {for_a}")
|
||||
if for_b:
|
||||
lines.append(f"👤 *For them:* {for_b}")
|
||||
|
||||
# Show key details generically
|
||||
filtered = {
|
||||
k: v for k, v in details.items()
|
||||
if k not in ("for_a", "for_b") and v
|
||||
}
|
||||
if filtered:
|
||||
lines.append("\n📋 *Details:*")
|
||||
for k, v in list(filtered.items())[:6]:
|
||||
lines.append(f" • {k.replace('_', ' ').title()}: {v}")
|
||||
|
||||
lines.append(f"\n⏱ Agreed in {rounds} round(s)")
|
||||
return "\n".join(lines)
|
||||
Reference in New Issue
Block a user