Skip to content

Commit 91f85fe

Browse files
authored
Merge pull request #18 from Sankhya-AI/alpha
V2.2.3
2 parents d9fd81f + d056563 commit 91f85fe

7 files changed

Lines changed: 928 additions & 401 deletions

File tree

dhee/adapters/base.py

Lines changed: 34 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,12 @@ def __init__(
7979
in_memory=in_memory,
8080
)
8181

82-
# Build the Buddhi (cognition) layer
82+
# Build the CognitionKernel (state) + Buddhi (intelligence) layers
83+
from dhee.core.cognition_kernel import CognitionKernel
8384
from dhee.core.buddhi import Buddhi
8485
buddhi_dir = str(self._engram.data_dir / "buddhi")
85-
self._buddhi = Buddhi(data_dir=buddhi_dir)
86+
self._kernel = CognitionKernel(data_dir=buddhi_dir)
87+
self._buddhi = Buddhi(data_dir=buddhi_dir, kernel=self._kernel)
8688

8789
# Passive session tracker — auto-context + auto-checkpoint
8890
from dhee.core.session_tracker import SessionTracker
@@ -316,72 +318,31 @@ def checkpoint(
316318
)
317319
result["intention_stored"] = intention.to_dict()
318320

319-
# 6. Episode closure
320-
try:
321-
ep_store = self._buddhi._get_episode_store()
322-
ep_store.record_event(
321+
# 6. Episode closure (via kernel)
322+
ep_result = self._kernel.record_checkpoint_event(
323+
uid, summary, status, outcome_score,
324+
)
325+
result.update(ep_result)
326+
327+
# 7. Task state update (via kernel)
328+
if goal or plan or blockers:
329+
task_result = self._kernel.update_task_on_checkpoint(
323330
user_id=uid,
324-
event_type="checkpoint",
325-
content=summary[:500],
326-
metadata={"status": status, "outcome_score": outcome_score},
331+
goal=goal,
332+
plan=plan,
333+
plan_rationale=plan_rationale,
334+
blockers=blockers,
335+
task_type=task_type or "general",
336+
status=status,
337+
outcome_score=outcome_score,
338+
outcome_evidence=outcome_evidence,
339+
summary=summary,
327340
)
328-
if status == "completed":
329-
episode = ep_store.end_episode(uid, outcome_score, summary)
330-
if episode:
331-
result["episode_closed"] = episode.id
332-
except Exception:
333-
pass
334-
335-
# 7. Task state update
336-
try:
337-
ts_store = self._buddhi._get_task_state_store()
338-
active_task = ts_store.get_active_task(uid)
339-
340-
if goal or plan:
341-
# Create or update task state
342-
if not active_task or active_task.goal != (goal or active_task.goal):
343-
active_task = ts_store.create_task(
344-
user_id=uid,
345-
goal=goal or summary,
346-
task_type=task_type or "general",
347-
plan=plan,
348-
plan_rationale=plan_rationale,
349-
)
350-
active_task.start()
351-
result["task_created"] = active_task.id
352-
elif plan:
353-
active_task.set_plan(plan, plan_rationale)
354-
355-
if active_task:
356-
# Add blockers
357-
if blockers:
358-
for b in blockers:
359-
active_task.add_blocker(b, severity="soft")
360-
361-
# Complete task if outcome provided
362-
if status == "completed" and outcome_score is not None:
363-
if outcome_score >= 0.5:
364-
active_task.complete(
365-
score=outcome_score,
366-
summary=summary,
367-
evidence=outcome_evidence,
368-
)
369-
else:
370-
active_task.fail(summary, evidence=outcome_evidence)
371-
result["task_completed"] = active_task.id
372-
373-
ts_store.update_task(active_task)
374-
except Exception:
375-
pass
341+
result.update(task_result)
376342

377-
# 8. Selective forgetting (periodic cleanup)
378-
try:
379-
ep_store = self._buddhi._get_episode_store()
380-
archived = ep_store.selective_forget(uid)
381-
if archived > 0:
382-
result["episodes_archived"] = archived
383-
except Exception:
384-
pass
343+
# 8. Selective forgetting (via kernel)
344+
forget_result = self._kernel.selective_forget(uid)
345+
result.update(forget_result)
385346

386347
return result
387348

@@ -408,10 +369,9 @@ def session_start(
408369
self._session_id = str(uuid.uuid4())
409370
self._session_start_time = time.time()
410371

411-
# Begin episode
372+
# Begin episode (via kernel)
412373
try:
413-
ep_store = self._buddhi._get_episode_store()
414-
ep_store.begin_episode(
374+
self._kernel.episodes.begin_episode(
415375
user_id=uid,
416376
task_description=task_description or "session",
417377
task_type=task_type or "general",
@@ -479,8 +439,7 @@ def add_belief(
479439
) -> Dict[str, Any]:
480440
"""Explicitly add a belief with confidence tracking."""
481441
uid = user_id or self._user_id
482-
b_store = self._buddhi._get_belief_store()
483-
belief, contradictions = b_store.add_belief(
442+
belief, contradictions = self._kernel.beliefs.add_belief(
484443
user_id=uid, claim=claim, domain=domain,
485444
confidence=confidence, source="user",
486445
)
@@ -499,8 +458,7 @@ def challenge_belief(
499458
user_id: Optional[str] = None,
500459
) -> Optional[Dict[str, Any]]:
501460
"""Present contradicting evidence to a belief."""
502-
b_store = self._buddhi._get_belief_store()
503-
belief = b_store.challenge_belief(belief_id, evidence)
461+
belief = self._kernel.beliefs.challenge_belief(belief_id, evidence)
504462
if belief:
505463
return belief.to_compact()
506464
return None
@@ -518,12 +476,11 @@ def create_task(
518476
) -> Dict[str, Any]:
519477
"""Create a structured task with optional plan."""
520478
uid = user_id or self._user_id
521-
ts_store = self._buddhi._get_task_state_store()
522-
task = ts_store.create_task(
479+
task = self._kernel.tasks.create_task(
523480
user_id=uid, goal=goal, task_type=task_type, plan=plan,
524481
)
525482
task.start()
526-
ts_store.update_task(task)
483+
self._kernel.tasks.update_task(task)
527484
return task.to_compact()
528485

529486
def advance_task(
@@ -533,12 +490,11 @@ def advance_task(
533490
) -> Optional[Dict[str, Any]]:
534491
"""Advance the active task to the next step."""
535492
uid = user_id or self._user_id
536-
ts_store = self._buddhi._get_task_state_store()
537-
task = ts_store.get_active_task(uid)
493+
task = self._kernel.tasks.get_active_task(uid)
538494
if not task:
539495
return None
540496
task.advance_step(note)
541-
ts_store.update_task(task)
497+
self._kernel.tasks.update_task(task)
542498
return task.to_compact()
543499

544500
# ------------------------------------------------------------------

0 commit comments

Comments
 (0)