Skip to content

Feature: Interactive Checklists for Task Management and Workflows #303

@JeanMertz

Description

@JeanMertz

This enhancement proposes the introduction of an interactive checklist feature within JP. This would allow users and the AI to create, manage, and track tasks, ensuring that multi-step processes are followed correctly. This feature could be a standalone utility or a core component of a larger "workflow" or "pipeline" engine.

Context

The core idea is to have a system for managing stateful task lists. Key features would include:

  • Task Management: Creating checklists and adding tasks to them.
  • State Tracking: Marking checklist items as completed, in-progress, or incomplete.
  • Scoping: Defining the lifecycle and visibility of a checklist (e.g., for a single turn, an entire conversation, or globally).
  • Hooks & Gates: Using the state of a checklist to control the execution of tools or other actions. For example, preventing a git commit if the "tests passed" checklist item is not marked as complete.
  • Triggers: Defining actions to be performed when a checklist or a specific item reaches a certain state (e.g., when all items are completed).

A major part of this proposal is its potential integration into a future "workflow" engine. In this scenario, checklists would act as a state-passing mechanism between different nodes in a processing pipeline.

Alternatives

A simpler, initial implementation could focus only on the core checklist functionality as a user-facing tool, without the complex workflow integration. The workflow engine could be a separate, future enhancement that builds upon the basic checklist feature.

Proposed Implementation

One possible implementation could leverage a pipeline architecture, potentially using something like VRL (Vector Remap Language) for logic and verification. Here's a conceptual flow:

  1. A pipeline is initiated, and a named checklist is created at the start.
  2. The pipeline progresses through various nodes. Some nodes are LLM-powered, tasked with completing a specific job and then marking the corresponding item in the checklist.
  3. A subsequent "verification" node could use VRL to inspect the named checklist and confirm that all items are marked as "completed".
  4. If items are incomplete, the pipeline could loop back to the LLM node, re-prompting it to complete the task. This loop could have a maximum number of retries.
  5. To ensure integrity, checklists could be designed to be immutable. Nodes could verify the state of an item (e.g., code_quality.tests_passing) and then trigger an external tool (e.g., run the test suite). If the tool fails, the node could "uncheck" the item, preventing the workflow from proceeding on a false assumption.

This is just a high-level concept, and the final design should be open to discussion and refinement. The goal is to create a flexible and powerful system for managing complex, multi-step tasks within JP.

Tasks

  • Design the data structure for checklists and their items.
  • Implement the basic API for creating and modifying checklists.
  • Define and implement the scoping rules (turn, conversation, global).
  • Brainstorm and design the hook/gate mechanism for tools.
  • Draft a more detailed proposal for the workflow engine integration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions