Collaboration API Reference
Module: fcc.collaboration
The collaboration module provides human-in-the-loop session management with scoring, approval gates, progress tracking, shared context, and session recording.
stateDiagram-v2
[*] --> CREATED : create_session()
CREATED --> ACTIVE : start_session()
ACTIVE --> ACTIVE : take_turn()
ACTIVE --> PAUSED : pause_session()
PAUSED --> ACTIVE : resume_session()
ACTIVE --> COMPLETED : complete_session()
CREATED --> ABORTED : abort_session()
ACTIVE --> ABORTED : abort_session()
PAUSED --> ABORTED : abort_session()
COMPLETED --> [*]
ABORTED --> [*]
Module Structure
| Module |
Description |
fcc.collaboration.models |
11 frozen dataclasses for session data |
fcc.collaboration.engine |
CollaborationEngine session lifecycle management |
fcc.collaboration.scoring |
ScoringEngine deliverable quality evaluation |
fcc.collaboration.progress |
ProgressTracker completion monitoring |
fcc.collaboration.context |
SharedContext auditable key-value workspace |
fcc.collaboration.recording |
SessionRecorder JSON persistence and replay |
CollaborationEngine
from fcc.collaboration.engine import CollaborationEngine
| Method |
Signature |
Returns |
Description |
create_session() |
(workflow_id, participants=None, gates=None, handoff_protocol=None) |
CollaborationSession |
Create a new session |
start_session() |
(session_id: str) |
CollaborationSession |
CREATED -> ACTIVE |
take_turn() |
(session_id, participant, turn_type, content, metadata=None) |
CollaborationSession |
Record a turn |
pause_session() |
(session_id: str) |
CollaborationSession |
ACTIVE -> PAUSED |
resume_session() |
(session_id: str) |
CollaborationSession |
PAUSED -> ACTIVE |
complete_session() |
(session_id: str) |
CollaborationSession |
ACTIVE -> COMPLETED |
abort_session() |
(session_id: str) |
CollaborationSession |
Any -> ABORTED |
get_session() |
(session_id: str) |
CollaborationSession |
Get current session state |
list_sessions() |
(status=None) |
list[CollaborationSession] |
List all or filtered sessions |
Usage
from fcc.collaboration.engine import CollaborationEngine
from fcc.collaboration.models import ApprovalGate, TurnType
engine = CollaborationEngine()
session = engine.create_session(
workflow_id="base_sequence",
participants=["reviewer", "RC"],
gates=[ApprovalGate(gate_id="g1", workflow_node_id="n2")],
)
session = engine.start_session(session.session_id)
session = engine.take_turn(
session.session_id, "RC", TurnType.AGENT,
content="Research findings...",
)
session = engine.complete_session(session.session_id)
ScoringEngine
from fcc.collaboration.scoring import ScoringEngine
| Method |
Signature |
Returns |
Description |
score_deliverable() |
(deliverable_id, scorer, score, rubric_scores=None, justification="") |
QualityScore |
Score a deliverable (1-5) |
evaluate_at_gate() |
(gate, deliverable_id, scorer, score, persona_id=None) |
tuple[ApprovalDecision, QualityScore] |
Evaluate against gate threshold |
compute_capability_rating() |
(persona_id: str) |
AgentCapabilityRating |
Compute aggregate rating |
scores |
property |
list[QualityScore] |
All recorded scores |
decisions |
property |
list[tuple[str, ApprovalDecision]] |
All gate decisions |
Usage
from fcc.collaboration.scoring import ScoringEngine
from fcc.collaboration.models import ApprovalGate
scoring = ScoringEngine()
qs = scoring.score_deliverable("d1", "reviewer", 4.2,
rubric_scores={"completeness": 4.5, "accuracy": 3.9})
gate = ApprovalGate(gate_id="g1", workflow_node_id="n2", required_score=3.5)
decision, score = scoring.evaluate_at_gate(gate, "d1", "reviewer", 4.2)
# decision == ApprovalDecision.APPROVED
ProgressTracker
from fcc.collaboration.progress import ProgressTracker
| Method |
Signature |
Returns |
Description |
register() |
(entity_id, entity_type, total_steps) |
ProgressState |
Register entity for tracking |
advance() |
(entity_id, steps=1) |
ProgressState |
Advance progress |
complete() |
(entity_id) |
ProgressState |
Mark as completed |
fail() |
(entity_id) |
ProgressState |
Mark as failed |
get() |
(entity_id) |
ProgressState |
Get current state |
all_states() |
() |
list[ProgressState] |
Get all tracked states |
Usage
from fcc.collaboration.progress import ProgressTracker
tracker = ProgressTracker()
state = tracker.register("s1", "session", total_steps=5)
state = tracker.advance("s1", steps=2)
print(state.percentage) # 40.0
state = tracker.complete("s1")
print(state.status) # "completed"
SharedContext
from fcc.collaboration.context import SharedContext
| Method |
Signature |
Returns |
Description |
get() |
(key, default=None) |
Any |
Get a value |
set() |
(key, value, actor="system") |
None |
Set a value (recorded in history) |
delete() |
(key, actor="system") |
bool |
Remove key; returns True if found |
keys() |
() |
list[str] |
All current keys |
to_dict() |
() |
dict |
Copy of current data |
history |
property |
list[dict] |
Full audit trail of changes |
Usage
from fcc.collaboration.context import SharedContext
ctx = SharedContext()
ctx.set("status", "in_progress", actor="RC")
ctx.set("status", "complete", actor="DE")
print(ctx.get("status")) # "complete"
print(len(ctx.history)) # 2 (both set operations recorded)
SessionRecorder
from fcc.collaboration.recording import SessionRecorder
| Method |
Signature |
Returns |
Description |
save_json() |
(session, path) |
None |
Save session to JSON file |
load_json() |
(path) |
CollaborationSession |
Load session from JSON file |
replay_session() |
(session, bus) |
int |
Replay session events through bus |
Usage
from fcc.collaboration.recording import SessionRecorder
SessionRecorder.save_json(session, "output/session.json")
restored = SessionRecorder.load_json("output/session.json")
from fcc.messaging.bus import EventBus
bus = EventBus()
deliveries = SessionRecorder.replay_session(restored, bus)
Data Models
All models are frozen dataclasses from fcc.collaboration.models:
| Class |
Description |
SessionStatus |
Enum: CREATED, ACTIVE, PAUSED, COMPLETED, ABORTED |
TurnType |
Enum: HUMAN, AGENT, SYSTEM |
ApprovalDecision |
Enum: APPROVED, REJECTED, NEEDS_REVISION, DEFERRED |
ApprovalGate |
Checkpoint with required_score and rubric |
QualityScore |
Deliverable quality evaluation |
SessionTurn |
Single turn in a session |
HandoffProtocol |
Turn transition rules |
CollaborationSession |
Full session snapshot |
ProgressState |
Progress tracking state |
AgentCapabilityRating |
Aggregate capability rating |
DeliverableRating |
Per-deliverable rating |
All models support to_dict() and from_dict() for serialization.