From ddf6f0e1bc756935cd257ff7a2cf0d720c215ad5 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 23 Feb 2026 11:53:12 -0500 Subject: [PATCH] chore(conductor): Add new track 'Add full api/hooks so that gemini cli can test, interact, and manipulate the state of the gui & program backend for automated testing.' --- conductor/tracks.md | 7 +++++- conductor/tracks/test_hooks_20260223/index.md | 5 +++++ .../tracks/test_hooks_20260223/metadata.json | 8 +++++++ conductor/tracks/test_hooks_20260223/plan.md | 22 +++++++++++++++++++ conductor/tracks/test_hooks_20260223/spec.md | 21 ++++++++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 conductor/tracks/test_hooks_20260223/index.md create mode 100644 conductor/tracks/test_hooks_20260223/metadata.json create mode 100644 conductor/tracks/test_hooks_20260223/plan.md create mode 100644 conductor/tracks/test_hooks_20260223/spec.md diff --git a/conductor/tracks.md b/conductor/tracks.md index 66fd218..04eca8d 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -10,4 +10,9 @@ This file tracks all major tracks for the project. Each track has its own detail --- - [ ] **Track: Review vendor api usage in regards to conservative context handling** - *Link: [./tracks/api_metrics_20260223/](./tracks/api_metrics_20260223/)* \ No newline at end of file + *Link: [./tracks/api_metrics_20260223/](./tracks/api_metrics_20260223/)* + +--- + +- [ ] **Track: Add full api/hooks so that gemini cli can test, interact, and manipulate the state of the gui & program backend for automated testing.** + *Link: [./tracks/test_hooks_20260223/](./tracks/test_hooks_20260223/)* \ No newline at end of file diff --git a/conductor/tracks/test_hooks_20260223/index.md b/conductor/tracks/test_hooks_20260223/index.md new file mode 100644 index 0000000..655c34b --- /dev/null +++ b/conductor/tracks/test_hooks_20260223/index.md @@ -0,0 +1,5 @@ +# Track test_hooks_20260223 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) \ No newline at end of file diff --git a/conductor/tracks/test_hooks_20260223/metadata.json b/conductor/tracks/test_hooks_20260223/metadata.json new file mode 100644 index 0000000..7231231 --- /dev/null +++ b/conductor/tracks/test_hooks_20260223/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "test_hooks_20260223", + "type": "feature", + "status": "new", + "created_at": "2026-02-23T10:00:00Z", + "updated_at": "2026-02-23T10:00:00Z", + "description": "Add full api/hooks so that gemini cli can test, interact, and manipulate the state of the gui & program backend for automated testing." +} \ No newline at end of file diff --git a/conductor/tracks/test_hooks_20260223/plan.md b/conductor/tracks/test_hooks_20260223/plan.md new file mode 100644 index 0000000..c73394b --- /dev/null +++ b/conductor/tracks/test_hooks_20260223/plan.md @@ -0,0 +1,22 @@ +# Implementation Plan + +## Phase 1: Foundation and Opt-in Mechanisms +- [ ] Task: Implement CLI flag/env-var to enable the hook system + - [ ] Sub-task: Write Tests + - [ ] Sub-task: Implement Feature +- [ ] Task: Set up lightweight local IPC server (e.g., standard library socket/HTTP) for receiving hook commands + - [ ] Sub-task: Write Tests + - [ ] Sub-task: Implement Feature +- [ ] Task: Conductor - User Manual Verification 'Phase 1: Foundation and Opt-in Mechanisms' (Protocol in workflow.md) + +## Phase 2: Hook Implementations and Logging +- [ ] Task: Implement project and AI session state manipulation hooks + - [ ] Sub-task: Write Tests + - [ ] Sub-task: Implement Feature +- [ ] Task: Implement GUI state manipulation hooks with thread-safe queueing + - [ ] Sub-task: Write Tests + - [ ] Sub-task: Implement Feature +- [ ] Task: Integrate aggressive logging for all hook invocations + - [ ] Sub-task: Write Tests + - [ ] Sub-task: Implement Feature +- [ ] Task: Conductor - User Manual Verification 'Phase 2: Hook Implementations and Logging' (Protocol in workflow.md) \ No newline at end of file diff --git a/conductor/tracks/test_hooks_20260223/spec.md b/conductor/tracks/test_hooks_20260223/spec.md new file mode 100644 index 0000000..b84db3d --- /dev/null +++ b/conductor/tracks/test_hooks_20260223/spec.md @@ -0,0 +1,21 @@ +# Specification: Add full api/hooks so that gemini cli can test, interact, and manipulate the state of the gui & program backend for automated testing + +## Overview +This track introduces a comprehensive suite of API hooks designed specifically for the Gemini CLI and the Conductor framework. These hooks will allow automated agents to manipulate and test the internal state of the application without requiring manual GUI interaction, enabling automated test-driven development and track progression validation. + +## Use Cases +- **Automated Testing & Progression:** Expose low-level state manipulation hooks so that the Gemini CLI + Conductor can autonomously verify track completion, test UI logic, and validate backend states. + +## Functional Requirements +- **Comprehensive Access:** The hooks must provide full, unrestricted access to the entire program, including: + - GUI state (Dear PyGui nodes, values, layout data). + - AI session state (history, active caches, tool configurations). + - Project configurations and discussion state. +- **Security & Logging:** The hook system MUST be strictly opt-in (e.g., enabled via a specific command-line argument like `--enable-test-hooks` or an environment variable). When enabled, any invocation of these hooks MUST be aggressively logged to ensure transparency. + +## Non-Functional Requirements +- **Thread Safety:** Hooks interacting with the GUI state must respect the main render loop locks and threading model defined in the architecture guidelines. +- **Dependency Minimalism:** The hook interface should utilize built-in mechanisms (like sockets, a lightweight local HTTP server, or standard inter-process communication) without introducing heavy external web frameworks. + +## Out of Scope +- Building the actual Gemini CLI or Conductor automation logic itself; this track only builds the *hooks* within Manual Slop that those external agents will consume. \ No newline at end of file