|
37 | 37 | {"_type":"issue","id":"dirge-bw2","title":"Phase 9 epic: pi-style extension API for plugins","description":"Refactor dirge's plugin architecture to mirror pi's extension API. Goal: a unified ExtensionApi surface (in Rust + Janet harness) that lets plugins register tools, commands, providers, shortcuts, and message renderers using one consistent shape. Current state: dirge has harness/register-command, harness/register-provider, harness/register-hook (string-based slot-setters). Missing: registerTool (biggest gap), registerShortcut, registerMessageRenderer. Sub-phases tracked separately.","status":"closed","priority":2,"issue_type":"feature","owner":"yogthos@gmail.com","created_at":"2026-05-23T00:18:53Z","created_by":"Yogthos","updated_at":"2026-05-23T00:48:54Z","closed_at":"2026-05-23T00:48:54Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
38 | 38 | {"_type":"issue","id":"dirge-ho5","title":"H10/H17/M7b/M13 followup — reviewer flagged incomplete","description":"Reviewer caught 4 partial/missing fixes after R-batch: H10 needed agent interject too; H17 needed AgentEvent::ContextOverflow + auto-respawn; M7b grep had no per-line cap; M13 still .write() on the outer RwLock.","status":"closed","priority":2,"issue_type":"task","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T01:19:08Z","created_by":"Yogthos","updated_at":"2026-05-22T01:19:15Z","started_at":"2026-05-22T01:19:14Z","closed_at":"2026-05-22T01:19:15Z","close_reason":"Addressed in this commit. H10 also fires interject; H17 emits AgentEvent::ContextOverflow → UI auto-compacts + respawns; grep adds 4 KiB per-line cap with UTF-8-safe truncation marker; SymbolIndex now uses Mutex\u003cFileCache\u003e so all 5 semantic tools hold .read() on the outer RwLock.","dependency_count":0,"dependent_count":0,"comment_count":0} |
39 | 39 | {"_type":"issue","id":"dirge-mtm","title":"Plugin hooks have no timeout; can hang every tool","description":"plugin/hook.rs:101 mgr.dispatch_tool_hook runs synchronously under a Mutex with no time bound. A plugin that loops or makes a blocking net call hangs every subsequent tool. Wrap in tokio::time::timeout(5s).","status":"closed","priority":2,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:38:32Z","created_by":"Yogthos","updated_at":"2026-05-22T00:42:41Z","started_at":"2026-05-22T00:38:46Z","closed_at":"2026-05-22T00:42:41Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
40 | | -{"_type":"issue","id":"dirge-7nx","title":"(H12 followup) apply_patch should also pin to canonical path","description":"read/edit/write now use check_perm_path_resolve. apply_patch has per-op iteration with multiple check_perm_path calls; refactor to use the resolve variant for each op's file I/O.","status":"open","priority":2,"issue_type":"bug","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:30:58Z","created_by":"Yogthos","updated_at":"2026-05-22T00:30:58Z","dependency_count":0,"dependent_count":0,"comment_count":0} |
| 40 | +{"_type":"issue","id":"dirge-7nx","title":"(H12 followup) apply_patch should also pin to canonical path","description":"read/edit/write now use check_perm_path_resolve. apply_patch has per-op iteration with multiple check_perm_path calls; refactor to use the resolve variant for each op's file I/O.","status":"closed","priority":2,"issue_type":"bug","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:30:58Z","created_by":"Yogthos","updated_at":"2026-05-23T04:47:45Z","closed_at":"2026-05-23T04:47:45Z","close_reason":"Closed by C1 fix in commit c70b757 — apply_patch now routes every PatchOp through check_perm_path_resolve and uses the resolved path for the apply_* calls. Verified with the new test in src/agent/tools/apply_patch.rs.","dependency_count":0,"dependent_count":0,"comment_count":0} |
41 | 41 | {"_type":"issue","id":"dirge-e8s","title":"No auto-continue after auto-compaction","description":"ui/mod.rs:2043+ auto-compact runs after is_running=false but doesn't re-submit the user's last prompt or continue the in-flight stream. Also ContextLength errors in runner just emit and break, no in-flight compact-and-retry.","status":"closed","priority":2,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:13:32Z","created_by":"Yogthos","updated_at":"2026-05-22T00:31:20Z","started_at":"2026-05-22T00:22:55Z","closed_at":"2026-05-22T00:31:20Z","close_reason":"Superseded by followup dirge-fqo — needs proper compact-and-resume runner plumbing, deferred to dedicated round","dependency_count":0,"dependent_count":0,"comment_count":0} |
42 | 42 | {"_type":"issue","id":"dirge-d1q","title":"ACP build_agent passes None for bg_store","description":"extras/acp/mod.rs:163-181 — background tool degrades silently under ACP. Provide a real BackgroundStore (with no UI sink is fine).","status":"closed","priority":2,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:13:31Z","created_by":"Yogthos","updated_at":"2026-05-22T00:31:19Z","started_at":"2026-05-22T00:22:55Z","closed_at":"2026-05-22T00:31:19Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
43 | 43 | {"_type":"issue","id":"dirge-95n","title":"Skill discovery: outer monorepo skills override inner","description":"skill.rs:24-97 — find_project_ancestor_dirs walks cwd→parents (inner first, outer last). map.insert at line 69 is last-write-wins so outer wins, opposite of 'more specific wins'. Reverse the iteration.","status":"closed","priority":2,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:13:30Z","created_by":"Yogthos","updated_at":"2026-05-22T00:31:19Z","started_at":"2026-05-22T00:22:54Z","closed_at":"2026-05-22T00:31:19Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
|
102 | 102 | {"_type":"issue","id":"dirge-46l","title":"LSP coverage: 4 servers for 10 semantic languages","description":"lsp/server.rs:155 builtin_servers returns rust, typescript, pyright, clojure-lsp only. Semantic adapters: bash, c, cpp, go, java, python, ruby + above. Add gopls, jdtls (or eclipse.jdt.ls), clangd (c/cpp), ruby-lsp/solargraph, bash-language-server.","status":"closed","priority":3,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:32:12Z","created_by":"Yogthos","updated_at":"2026-05-22T00:37:38Z","started_at":"2026-05-22T00:33:24Z","closed_at":"2026-05-22T00:37:38Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
103 | 103 | {"_type":"issue","id":"dirge-05r","title":"find_callers is regex-based, not tree-sitter structural","description":"semantic/index.rs:148 uses regex \\b{name}\\b. Hits string literals, comments, identifier collisions. find_callees correctly uses tree-sitter find_callees_in_range. Match the approach.","status":"closed","priority":3,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:32:11Z","created_by":"Yogthos","updated_at":"2026-05-22T00:37:40Z","started_at":"2026-05-22T00:33:23Z","closed_at":"2026-05-22T00:37:40Z","close_reason":"Substantial — needs new adapter API mirroring find_callees_in_range across all 10 adapters. Deferred to dedicated round.","dependency_count":0,"dependent_count":0,"comment_count":0} |
104 | 104 | {"_type":"issue","id":"dirge-d4b","title":"Semantic tools acquire exclusive write lock even on reads","description":"list_symbols, find_definition, find_callers, find_callees, get_symbol_body all call RwLock::write() because ensure_file takes \u0026mut self. After populate, repeat reads should use read() — needs interior mutability on the cache (RefCell or Mutex inside) so ensure_file can be \u0026self.","status":"closed","priority":3,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:32:10Z","created_by":"Yogthos","updated_at":"2026-05-22T01:19:23Z","started_at":"2026-05-22T00:33:22Z","closed_at":"2026-05-22T01:19:23Z","close_reason":"Implemented in this commit. SymbolIndex now uses Mutex\u003cFileCache\u003e for interior mutability; all public methods take \u0026self; 5 semantic tools switched .write() → .read() on the outer RwLock.","dependency_count":0,"dependent_count":0,"comment_count":0} |
105 | | -{"_type":"issue","id":"dirge-dvi","title":"(H15 followup) Auto-reconnect MCP on tool-call failure","description":"Manual reconnect API exists via McpClientManager::reconnect. Auto path requires swappable Peer shared across McpTool clones for the same server. Design + implement.","status":"open","priority":3,"issue_type":"feature","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:30:57Z","created_by":"Yogthos","updated_at":"2026-05-22T00:30:57Z","dependency_count":0,"dependent_count":0,"comment_count":0} |
| 105 | +{"_type":"issue","id":"dirge-dvi","title":"(H15 followup) Auto-reconnect MCP on tool-call failure","description":"Manual reconnect API exists via McpClientManager::reconnect. Auto path requires swappable Peer shared across McpTool clones for the same server. Design + implement.","status":"closed","priority":3,"issue_type":"feature","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:30:57Z","created_by":"Yogthos","updated_at":"2026-05-23T04:58:55Z","started_at":"2026-05-23T04:48:27Z","closed_at":"2026-05-23T04:58:55Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
106 | 106 | {"_type":"issue","id":"dirge-fqo","title":"(H17 followup) Auto-continue after auto-compaction","description":"Implement compact-and-resume: on ContextLength error mid-stream, fire compaction then re-submit the last prompt. Needs runner/session API plumbing. Opencode compaction.ts:477-558 is the reference.","status":"closed","priority":3,"issue_type":"feature","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:30:56Z","created_by":"Yogthos","updated_at":"2026-05-22T01:19:22Z","closed_at":"2026-05-22T01:19:22Z","close_reason":"Implemented in this commit via AgentEvent::ContextOverflow + UI auto-compact+respawn handler. opencode-style automatic recovery (compaction.ts:477-558 equivalent).","dependency_count":0,"dependent_count":0,"comment_count":0} |
107 | 107 | {"_type":"issue","id":"dirge-4jx","title":"grep/find_files truncation footer reads 'and 0 more'","description":"agent/tools/find_files.rs:140-148 + grep.rs:280-288 break the walk at MAX_RESULTS so total - MAX = 0. Footer should reflect 'more results not shown' OR continue counting past MAX without pushing.","status":"closed","priority":3,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:08:07Z","created_by":"Yogthos","updated_at":"2026-05-22T00:12:35Z","started_at":"2026-05-22T00:08:14Z","closed_at":"2026-05-22T00:12:35Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
108 | 108 | {"_type":"issue","id":"dirge-4ks","title":"list_dir has no entry cap","description":"agent/tools/list_dir.rs accumulates every entry. Pulling node_modules with include_hidden=true returns 100k+ paths. Add MAX_LIST_DIR_RESULTS mirroring grep/find_files.","status":"closed","priority":3,"issue_type":"bug","assignee":"Yogthos","owner":"yogthos@gmail.com","created_at":"2026-05-22T00:08:07Z","created_by":"Yogthos","updated_at":"2026-05-22T00:12:35Z","started_at":"2026-05-22T00:08:13Z","closed_at":"2026-05-22T00:12:35Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0} |
|
0 commit comments