Allow disabling/replacing built-in todo intents and tools #226

Closed
opened 2026-09-02 17:27:43 +00:00 by nsaspy · 2 comments
Owner

Problem

Zara currently hard-codes todo/reminder/task words in kb/intents.pl to internal Python todo skills such as capture_todo, schedule_todo, and list_todos, while the agent also registers built-in todo tools backed by Zara's internal todo storage.

That makes the todo subsystem effectively non-replaceable. An external plugin such as zara-org-todos cannot become the authoritative Org-mode backend without leaving two competing todo stores and ambiguous routing behind.

This is currently broken for plugin-backed todo replacement:

  • todo, add, note, remind, remember, reminder, task route to capture_todo;
  • schedule, sched, plan, set route to schedule_todo;
  • list, todos, tasks, show route to list_todos;
  • edit, update, export route to internal todo skills;
  • built-in agent todo tools remain registered independently;
  • the plugin API has no supported way to disable those intents/tools or declare a replacement todo backend.

Required behavior

Add an explicit supported way to disable or replace Zara's built-in todo surface.

A minimal acceptable design is a configuration switch such as:

todos.enabled = false

When disabled:

  1. built-in todo Python-skill intents are not materialized/routed;
  2. built-in todo agent tools are not registered;
  3. unrelated intents such as timers remain intact;
  4. external plugins may register their own todo tools without duplicate-name/authority ambiguity;
  5. startup diagnostics clearly report that the built-in todo backend is disabled.

A stronger future-proof design may expose a named todo backend/provider selection, but the first slice must at least make the built-in backend cleanly disable-able.

Plugin integration

Related plugin publishing issue: lost-rob0t/zara-plugins#23 (zara-org-todos). That plugin is intended to make the user's recursive Org agenda + durable gpt-todos Git repository authoritative.

Tests

Add deterministic regression coverage proving:

  • default behavior remains unchanged when todos are enabled;
  • disabled mode suppresses todo Python-skill intent resolution;
  • disabled mode suppresses built-in todo agent tools;
  • timer/alarm and unrelated intents still work;
  • a plugin-provided todo tool/backend can start without colliding with the built-in surface.

Scope

Do not remove the current todo subsystem. Make it optional/replacable.

## Problem Zara currently hard-codes todo/reminder/task words in `kb/intents.pl` to internal Python todo skills such as `capture_todo`, `schedule_todo`, and `list_todos`, while the agent also registers built-in todo tools backed by Zara's internal todo storage. That makes the todo subsystem effectively non-replaceable. An external plugin such as `zara-org-todos` cannot become the authoritative Org-mode backend without leaving two competing todo stores and ambiguous routing behind. This is currently broken for plugin-backed todo replacement: - `todo`, `add`, `note`, `remind`, `remember`, `reminder`, `task` route to `capture_todo`; - `schedule`, `sched`, `plan`, `set` route to `schedule_todo`; - `list`, `todos`, `tasks`, `show` route to `list_todos`; - `edit`, `update`, `export` route to internal todo skills; - built-in agent todo tools remain registered independently; - the plugin API has no supported way to disable those intents/tools or declare a replacement todo backend. ## Required behavior Add an explicit supported way to disable or replace Zara's built-in todo surface. A minimal acceptable design is a configuration switch such as: ```text todos.enabled = false ``` When disabled: 1. built-in todo Python-skill intents are not materialized/routed; 2. built-in todo agent tools are not registered; 3. unrelated intents such as timers remain intact; 4. external plugins may register their own todo tools without duplicate-name/authority ambiguity; 5. startup diagnostics clearly report that the built-in todo backend is disabled. A stronger future-proof design may expose a named todo backend/provider selection, but the first slice must at least make the built-in backend cleanly disable-able. ## Plugin integration Related plugin publishing issue: `lost-rob0t/zara-plugins#23` (`zara-org-todos`). That plugin is intended to make the user's recursive Org agenda + durable `gpt-todos` Git repository authoritative. ## Tests Add deterministic regression coverage proving: - default behavior remains unchanged when todos are enabled; - disabled mode suppresses todo Python-skill intent resolution; - disabled mode suppresses built-in todo agent tools; - timer/alarm and unrelated intents still work; - a plugin-provided todo tool/backend can start without colliding with the built-in surface. ## Scope Do not remove the current todo subsystem. Make it optional/replacable.
Author
Owner

Plugin side is now implemented in lost-rob0t/zara-plugins#24. It deliberately exposes org_todos_* tools rather than colliding with Zara's built-in todo tool names. Once this issue provides a supported disable/replace path for built-in todo intents/tools, zara-org-todos can be selected as the authoritative todo backend.

Plugin side is now implemented in lost-rob0t/zara-plugins#24. It deliberately exposes `org_todos_*` tools rather than colliding with Zara's built-in todo tool names. Once this issue provides a supported disable/replace path for built-in todo intents/tools, `zara-org-todos` can be selected as the authoritative todo backend.
Author
Owner

Implemented in #248. The switch is [todo] enabled = false and gates the built-in todo LangChain tools, Python skills, Prolog intent mappings/resolver shortcuts, and legacy console path together. This is intended to let external providers such as lost-rob0t/zara-plugins#24 become authoritative without a second internal todo store remaining active.

Implemented in #248. The switch is `[todo] enabled = false` and gates the built-in todo LangChain tools, Python skills, Prolog intent mappings/resolver shortcuts, and legacy console path together. This is intended to let external providers such as lost-rob0t/zara-plugins#24 become authoritative without a second internal todo store remaining active.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara#226
No description provided.