Skip to main content

Module db

Module db 

Source

Structs§

RelatedTask
Score-weighted relationship between a fresh prompt’s artifacts and every prior task’s artifacts. Higher score = stronger continuation signal. Threshold tuning is the caller’s job; v0.6.0 auto-link keeps anything with score > 0.0.
StaleTask
One row of the stale-task report: an open task whose last event crossed the inactivity threshold.
TaskMetadata
Read-only metadata bundle used by pack rendering (and TUI list teasers in v0.4.0+). Returns None for unknown tasks.
TaskRow
One row of the task list rendered by the TUI: enough to render the list view without round-tripping for each task. event_count joins events_index so we don’t need a second query per row.

Functions§

add_task_external
Append an external reference to tasks.external. The column is stored as a comma-separated list — small, append-mostly, no uniqueness constraint. Acceptable shapes (loose, not enforced): beads:claude-memory-rsw, github:#42, jira:PROJ-1234.
find_related_tasks
Find tasks whose events overlap the given artifacts on any dimension we have a signal for. Weights: shared linked_issue → +1.0 (strongest, ticket id is unique) shared commit_hash → +0.8 (commits are nearly unique) shared file path → +0.3 (files churn across tasks)
find_tasks_by_linked_issues
Find tasks (open or closed) whose events reference any of the given issue identifiers (FIN-868, JIRA-123, INC-7…). Looks at the per-event artifacts.linked_issues column populated on ingest. Returns (task_id, status) deduplicated, most-recent first. Used by the v0.5.0 Phase C auto-link flow to recognise that a fresh prompt is a continuation of a prior task.
index_event
ingest_new_events
Read only the tail of the JSONL log since the last call. The cheap path for hot loops (every MCP tool invocation): scan to the marker, ingest the rest, update the marker.
list_all_projects
list_tasks_by_project
All tasks for a project, ordered with open ones first (by recency) then closed ones. The TUI list view binds directly to this — there is no other consumer, so the shape is tuned for that callsite.
open
rebuild_state
reclassify_task_artifacts
Re-run artifact extraction over every event of a task and write the result back to events_index.artifacts. Used to backfill events that were ingested before Phase B landed. Returns the number of events touched. Wipes the pack cache for the task so the next render reflects the freshly extracted artifacts.
set_task_goal
Set or replace tasks.goal for an existing task. Caller is expected to have validated the task exists (via task_exists); we don’t error on no-op rows so the upsert pattern is uniform.
set_task_outcome
Set or replace the closure metadata. Pass None for outcome_tag to leave it unset; pass Some("done"|"abandoned"|"superseded") for a structured tag. Free-text outcome is the primary field.
stale_tasks
Find open tasks with no event in the last days days. Sorted by idle time descending so the user sees the most ancient first.
task_artifacts
Aggregate artifacts (commit hashes, PR URLs, ticket IDs, files, branches) across every event of a task, deduplicated. Reads the per-event JSON payload that ingest_new_events populated. Skips events whose artifacts column is NULL or unparseable rather than failing the pack render.
task_exists
Returns whether a task with this id has been recorded in the derived state. Cheap O(1) lookup against the tasks primary key. Callers should run ingest_new_events first if they want to see the latest JSONL state.
task_metadata
task_status
Status string for an existing task (e.g. “open”, “closed”). Returns None when the task is unknown — caller decides whether that’s a hard error or a route-to-pending case.
upsert_task_from_event