Skip to main content

Python library making org-mode files first-class citizens for AI agent workflows

Project description

org-workspace

Python library that makes org-mode files first-class citizens for AI agent workflows.

Built on a vendored fork of orgparse with write support (PR #77), org-workspace adds multi-file workspace management, structured mutations, concurrency primitives, and query capabilities designed for autonomous AI agents.

Install

pip install org-workspace

Quick start

from pathlib import Path
from org_workspace import OrgWorkspace, Query

# Load workspace
ws = OrgWorkspace(roots=[Path("~/org")])

# Query tasks
q = Query(ws)
next_up = q.next_action()
ai_tasks = q.ai_tasks(states=["TODO"])
deadlines = q.deadlines(days=14)

# Create a task
task = ws.create_node(
    file=Path("~/org/inbox.org"),
    heading="Research org-mode parsing",
    state="TODO",
    tags=["AI", "research"],
    body="Investigate approaches for org-mode mutation",
)

# Transition state
ws.transition(task, "DONE", agent="my-agent")

# Save changes (only modified files are written)
ws.save()

Features

Workspace management

  • Multi-file loading with dirty-file tracking
  • Content-addressed ID generation with dedup
  • Round-trip safe serialization (zero byte-diff on unchanged files)

NodeView pattern

  • Stateless, non-caching read-only views over org nodes
  • Generation-counter staleness detection
  • Safe for concurrent access patterns

Mutations (via OrgWorkspace)

  • create_node() — create headings with state, tags, properties, body
  • refile() — move nodes between files preserving subtree
  • remove_node() — delete nodes from files
  • transition() — state changes with LOGBOOK entries
  • set_property(), set_heading(), set_tags()

Query system

  • agenda(), deadlines(), overdue(), stale()
  • by_state(), by_tag(), by_property()
  • ai_tasks() — find :AI: tagged tasks for agent execution
  • next_action() — GTD next action selection

Dependency DAG (Plan)

  • Parse DEPENDS_ON properties into dependency graphs
  • Topological sort for execution ordering
  • ready_tasks(), blocked_tasks(), cycle detection

Concurrency

  • FileLock — file-level locking
  • OptimisticLock — hash-based conflict detection
  • TaskClaim — agent-level task claiming with staleness timeout
  • multi_lock() — deadlock-free multi-file locking (lexicographic order)

LOGBOOK and session logging

  • add_logbook_entry(), add_state_change_entry(), add_clock_entry()
  • SessionLog for buffered per-session logging

Archive

  • archive_node() — archive with hierarchy preservation
  • archive_done() — bulk archive completed tasks
  • archive_plan() — archive entire dependency plans

Context extraction (for AI agents)

  • build_execution_context() — structured context from task properties
  • get_prompt() — PROMPT property with body fallback
  • get_role() — agent persona from ROLE property

GTD state configuration

from org_workspace import StateConfig

# Default GTD states
config = StateConfig.default()
# sequences: {"gtd": ["TODO", "NEXT", "WAITING", "DONE"]}

# With nightshift (autonomous execution) states
config = StateConfig.nightshift()
# adds: QUEUED, EXECUTING, REVIEW, FAILED

License

BSD 2-Clause. See LICENSE.

This library includes a vendored copy of orgparse (BSD 2-Clause, Copyright 2012 Takafumi Arakaki) with modifications from datacore-one/orgparse PR #77 adding write support.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

org_workspace-0.4.2.tar.gz (79.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

org_workspace-0.4.2-py3-none-any.whl (63.1 kB view details)

Uploaded Python 3

File details

Details for the file org_workspace-0.4.2.tar.gz.

File metadata

  • Download URL: org_workspace-0.4.2.tar.gz
  • Upload date:
  • Size: 79.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for org_workspace-0.4.2.tar.gz
Algorithm Hash digest
SHA256 1e1f396884d58f537a29d877e4254b6df5cd40200fc4184cd5a488db63c2898e
MD5 a4d0f45278710f04c05f17d128e4863f
BLAKE2b-256 a97d85044f1ed92f16a9cc0c9cb8aff5d96822b32f9926458a5fff6f84e3ff90

See more details on using hashes here.

File details

Details for the file org_workspace-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: org_workspace-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 63.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for org_workspace-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ae0d0d030bbd7322143edfc9e3ee6ae90e1f713170a32fe054bfcbcf0eab44b2
MD5 2a396fd37a31c2462ef88f69550fecc2
BLAKE2b-256 677787b24998a4eacf0e6c31b2de764e21670cc16e7263d974f15e21a8166016

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page