yolo mode on/off #23
Merged@k33g wants to merge
feature/yolo into mainMerged as
58ba549b2dc1.118 files changed
modified
.tickets/epics.yaml +6 -0 | @@ -12,3 +12,9 @@ epics: | ||
| 12 | 12 | - title: Ideas |
| 13 | 13 | state: open |
| 14 | 14 | color: "#bfdadc" |
| 15 | + - title: Agent Memory | |
| 16 | + state: open | |
| 17 | + color: "#f9d0c4" | |
| 18 | + - title: Providers (LLM Engine) | |
| 19 | + state: open | |
| 20 | + color: "#0e8a16" | |
| @@ -12,3 +12,9 @@ epics: | |||
| 12 | - title: Ideas | 12 | - title: Ideas |
| 13 | state: open | 13 | state: open |
| 14 | color: "#bfdadc" | 14 | color: "#bfdadc" |
| 15 | + - title: Agent Memory | ||
| 16 | + state: open | ||
| 17 | + color: "#f9d0c4" | ||
| 18 | + - title: Providers (LLM Engine) | ||
| 19 | + state: open | ||
| 20 | + color: "#0e8a16" | ||
modified
.tickets/issues/0013-activate-deactivate-yolo-mode.yaml +15 -3 | @@ -1,13 +1,25 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 13 |
| 3 | 3 | title: Activate / Deactivate YOLO mode |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-16T05:47:28.194Z |
| 9 | -updatedAt: 2026-10-06T02:52:48.473Z | |
| 9 | +updatedAt: 2026-10-06T03:53:37.224Z | |
| 10 | 10 | labels: [] |
| 11 | -body: "" | |
| 11 | +related: | |
| 12 | + - 59 | |
| 13 | +body: | | |
| 14 | + User's request (2026-10-06, FR): enable/disable yolo mode for tool | |
| 15 | + execution through the config file. Default: yolo. With yolo off, every | |
| 16 | + tool call asks: once, never, or for the whole session. Examples: | |
| 17 | + `yolo: false` + `bashTool: true` (asks), `yolo: true` + `bashTool: true`, | |
| 18 | + `yolo: true` + `bashTool: false` (bash disabled, other tools not | |
| 19 | + necessarily). With `mmConfigs`, the main agent (the one holding | |
| 20 | + mmConfigs) wins. | |
| 21 | + | |
| 22 | + Implemented on branch `feature/yolo` (2026-10-06) — details in ticket | |
| 23 | + 59's comment 2. | |
| 12 | 24 | tasks: [] |
| 13 | 25 | comments: [] |
| @@ -1,13 +1,25 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 13 | 2 | id: 13 |
| 3 | title: Activate / Deactivate YOLO mode | 3 | title: Activate / Deactivate YOLO mode |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-16T05:47:28.194Z | 8 | createdAt: 2026-09-16T05:47:28.194Z |
| 9 | -updatedAt: 2026-10-06T02:52:48.473Z | 9 | +updatedAt: 2026-10-06T03:53:37.224Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | -body: "" | 11 | +related: |
| 12 | + - 59 | ||
| 13 | +body: | | ||
| 14 | + User's request (2026-10-06, FR): enable/disable yolo mode for tool | ||
| 15 | + execution through the config file. Default: yolo. With yolo off, every | ||
| 16 | + tool call asks: once, never, or for the whole session. Examples: | ||
| 17 | + `yolo: false` + `bashTool: true` (asks), `yolo: true` + `bashTool: true`, | ||
| 18 | + `yolo: true` + `bashTool: false` (bash disabled, other tools not | ||
| 19 | + necessarily). With `mmConfigs`, the main agent (the one holding | ||
| 20 | + mmConfigs) wins. | ||
| 21 | + | ||
| 22 | + Implemented on branch `feature/yolo` (2026-10-06) — details in ticket | ||
| 23 | + 59's comment 2. | ||
| 12 | tasks: [] | 24 | tasks: [] |
| 13 | comments: [] | 25 | comments: [] |
modified
.tickets/issues/0030-how-to-use-mini-me-with-claude.yaml +2 -1 | @@ -6,8 +6,9 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-21T04:00:56.971Z |
| 9 | -updatedAt: 2026-09-22T20:57:22.310Z | |
| 9 | +updatedAt: 2026-10-06T04:00:56.602Z | |
| 10 | 10 | labels: [] |
| 11 | +epic: Providers (LLM Engine) | |
| 11 | 12 | body: | |
| 12 | 13 | ## Analysis (Claude, 2026-09-21 — not implemented) |
| 13 | 14 | |
| @@ -6,8 +6,9 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-21T04:00:56.971Z | 8 | createdAt: 2026-09-21T04:00:56.971Z |
| 9 | -updatedAt: 2026-09-22T20:57:22.310Z | 9 | +updatedAt: 2026-10-06T04:00:56.602Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | +epic: Providers (LLM Engine) | ||
| 11 | body: | | 12 | body: | |
| 12 | ## Analysis (Claude, 2026-09-21 — not implemented) | 13 | ## Analysis (Claude, 2026-09-21 — not implemented) |
| 13 | 14 | ||
modified
.tickets/issues/0031-how-to-use-mini-me-with-gemini.yaml +2 -1 | @@ -6,8 +6,9 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-21T04:01:15.166Z |
| 9 | -updatedAt: 2026-09-22T20:56:55.345Z | |
| 9 | +updatedAt: 2026-10-06T04:01:18.848Z | |
| 10 | 10 | labels: [] |
| 11 | +epic: Providers (LLM Engine) | |
| 11 | 12 | body: | |
| 12 | 13 | ## Analysis (Claude, 2026-09-21 — not implemented) |
| 13 | 14 | |
| @@ -6,8 +6,9 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-21T04:01:15.166Z | 8 | createdAt: 2026-09-21T04:01:15.166Z |
| 9 | -updatedAt: 2026-09-22T20:56:55.345Z | 9 | +updatedAt: 2026-10-06T04:01:18.848Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | +epic: Providers (LLM Engine) | ||
| 11 | body: | | 12 | body: | |
| 12 | ## Analysis (Claude, 2026-09-21 — not implemented) | 13 | ## Analysis (Claude, 2026-09-21 — not implemented) |
| 13 | 14 | ||
modified
.tickets/issues/0033-invoke-another-mini-me.yaml +2 -2 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 33 |
| 3 | 3 | title: Invoke (another) Mini Me |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-21T04:48:03.596Z |
| 9 | -updatedAt: 2026-09-29T06:25:43.079Z | |
| 9 | +updatedAt: 2026-10-06T03:55:11.169Z | |
| 10 | 10 | labels: [] |
| 11 | 11 | milestone: v0.3.0 |
| 12 | 12 | epic: Builtin tools |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 33 | 2 | id: 33 |
| 3 | title: Invoke (another) Mini Me | 3 | title: Invoke (another) Mini Me |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-21T04:48:03.596Z | 8 | createdAt: 2026-09-21T04:48:03.596Z |
| 9 | -updatedAt: 2026-09-29T06:25:43.079Z | 9 | +updatedAt: 2026-10-06T03:55:11.169Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | milestone: v0.3.0 | 11 | milestone: v0.3.0 |
| 12 | epic: Builtin tools | 12 | epic: Builtin tools |
modified
.tickets/issues/0034-anatolian-mini-me-s-orchestrator.yaml +2 -2 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 34 |
| 3 | 3 | title: Anatolian -> Mini Me(s) Orchestrator? |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-21T04:49:57.129Z |
| 9 | -updatedAt: 2026-09-21T04:49:57.129Z | |
| 9 | +updatedAt: 2026-10-06T03:57:06.058Z | |
| 10 | 10 | labels: [] |
| 11 | 11 | epic: Ideas |
| 12 | 12 | body: "" |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 34 | 2 | id: 34 |
| 3 | title: Anatolian -> Mini Me(s) Orchestrator? | 3 | title: Anatolian -> Mini Me(s) Orchestrator? |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-21T04:49:57.129Z | 8 | createdAt: 2026-09-21T04:49:57.129Z |
| 9 | -updatedAt: 2026-09-21T04:49:57.129Z | 9 | +updatedAt: 2026-10-06T03:57:06.058Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | epic: Ideas | 11 | epic: Ideas |
| 12 | body: "" | 12 | body: "" |
modified
.tickets/issues/0040-better-list-of-detected-tools-at-the-start-of-mi.yaml +2 -1 | @@ -6,8 +6,9 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-23T10:28:36.392Z |
| 9 | -updatedAt: 2026-09-23T10:28:36.392Z | |
| 9 | +updatedAt: 2026-10-06T04:01:48.816Z | |
| 10 | 10 | labels: [] |
| 11 | +epic: Improve TUI | |
| 11 | 12 | body: "" |
| 12 | 13 | tasks: [] |
| 13 | 14 | comments: [] |
| @@ -6,8 +6,9 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-23T10:28:36.392Z | 8 | createdAt: 2026-09-23T10:28:36.392Z |
| 9 | -updatedAt: 2026-09-23T10:28:36.392Z | 9 | +updatedAt: 2026-10-06T04:01:48.816Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | +epic: Improve TUI | ||
| 11 | body: "" | 12 | body: "" |
| 12 | tasks: [] | 13 | tasks: [] |
| 13 | comments: [] | 14 | comments: [] |
modified
.tickets/issues/0048-add-a-builtin-tool-to-search-into-the-mm-session.yaml +2 -1 | @@ -6,9 +6,10 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-27T03:45:48.121Z |
| 9 | -updatedAt: 2026-09-29T06:25:13.129Z | |
| 9 | +updatedAt: 2026-10-06T03:59:41.259Z | |
| 10 | 10 | labels: [] |
| 11 | 11 | milestone: v0.3.0 |
| 12 | +epic: Agent Memory | |
| 12 | 13 | body: "" |
| 13 | 14 | tasks: [] |
| 14 | 15 | comments: [] |
| @@ -6,9 +6,10 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-27T03:45:48.121Z | 8 | createdAt: 2026-09-27T03:45:48.121Z |
| 9 | -updatedAt: 2026-09-29T06:25:13.129Z | 9 | +updatedAt: 2026-10-06T03:59:41.259Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | milestone: v0.3.0 | 11 | milestone: v0.3.0 |
| 12 | +epic: Agent Memory | ||
| 12 | body: "" | 13 | body: "" |
| 13 | tasks: [] | 14 | tasks: [] |
| 14 | comments: [] | 15 | comments: [] |
modified
.tickets/issues/0050-create-a-web-site.yaml +2 -2 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 50 |
| 3 | 3 | title: Create a web site |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-28T18:44:59.825Z |
| 9 | -updatedAt: 2026-09-29T06:27:12.181Z | |
| 9 | +updatedAt: 2026-10-06T03:58:01.122Z | |
| 10 | 10 | labels: [] |
| 11 | 11 | milestone: v0.3.0 |
| 12 | 12 | body: "" |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 50 | 2 | id: 50 |
| 3 | title: Create a web site | 3 | title: Create a web site |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-28T18:44:59.825Z | 8 | createdAt: 2026-09-28T18:44:59.825Z |
| 9 | -updatedAt: 2026-09-29T06:27:12.181Z | 9 | +updatedAt: 2026-10-06T03:58:01.122Z |
| 10 | labels: [] | 10 | labels: [] |
| 11 | milestone: v0.3.0 | 11 | milestone: v0.3.0 |
| 12 | body: "" | 12 | body: "" |
modified
.tickets/issues/0052-buitin-acp-tool-to-query-other-agent-like-mini-m.yaml +2 -2 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 52 |
| 3 | 3 | title: Buitin ACP tool to query other agent (like mini me, but not only) |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-09-29T05:18:13.897Z |
| 9 | -updatedAt: 2026-10-02T21:15:00.000Z | |
| 9 | +updatedAt: 2026-10-06T03:55:00.084Z | |
| 10 | 10 | labels: |
| 11 | 11 | - priority::high |
| 12 | 12 | - kind::feature |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 52 | 2 | id: 52 |
| 3 | title: Buitin ACP tool to query other agent (like mini me, but not only) | 3 | title: Buitin ACP tool to query other agent (like mini me, but not only) |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-09-29T05:18:13.897Z | 8 | createdAt: 2026-09-29T05:18:13.897Z |
| 9 | -updatedAt: 2026-10-02T21:15:00.000Z | 9 | +updatedAt: 2026-10-06T03:55:00.084Z |
| 10 | labels: | 10 | labels: |
| 11 | - priority::high | 11 | - priority::high |
| 12 | - kind::feature | 12 | - kind::feature |
modified
.tickets/issues/0059-how-to-start-in-yolo-mode.yaml +63 -29 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 59 |
| 3 | 3 | title: How to start in yolo mode? |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-01T04:39:53.878Z |
| 9 | -updatedAt: 2026-10-03T10:00:00.000Z | |
| 9 | +updatedAt: 2026-10-06T03:53:27.047Z | |
| 10 | 10 | labels: |
| 11 | 11 | - kind::feature |
| 12 | 12 | - priority::low |
| @@ -50,104 +50,104 @@ body: | | ||
| 50 | 50 | - Make it visible: banner/status line "yolo" so nobody runs it by mistake. |
| 51 | 51 | tasks: |
| 52 | 52 | - id: 1 |
| 53 | - title: "Decide the open questions below (flag name, ACP scope, MCP scope, banner)" | |
| 54 | - state: open | |
| 53 | + title: Decide the open questions below (flag name, ACP scope, MCP scope, banner) | |
| 54 | + state: closed | |
| 55 | 55 | priority: none |
| 56 | 56 | author: |
| 57 | 57 | name: k33g |
| 58 | 58 | email: ph.charriere@gmail.com |
| 59 | 59 | createdAt: 2026-10-01T06:30:00.000Z |
| 60 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 60 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 61 | 61 | - id: 2 |
| 62 | 62 | title: "Failing tests first: with yolo on, window mode (permissions: ask) and ACP Allow() return true without asking; MCP ask-tools run" |
| 63 | - state: open | |
| 63 | + state: closed | |
| 64 | 64 | priority: none |
| 65 | 65 | author: |
| 66 | 66 | name: k33g |
| 67 | 67 | email: ph.charriere@gmail.com |
| 68 | 68 | createdAt: 2026-10-01T06:30:00.000Z |
| 69 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 69 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 70 | 70 | - id: 3 |
| 71 | - title: "Flag --yolo (main.go, alongside -p/-tui/-acp) + optional env/config override; forces Permissions=auto and mcp.permissions=auto, per-server MCP permissions included" | |
| 72 | - state: open | |
| 71 | + title: Flag --yolo (main.go, alongside -p/-tui/-acp) + optional env/config override; forces Permissions=auto and mcp.permissions=auto, per-server MCP permissions included | |
| 72 | + state: closed | |
| 73 | 73 | priority: none |
| 74 | 74 | author: |
| 75 | 75 | name: k33g |
| 76 | 76 | email: ph.charriere@gmail.com |
| 77 | 77 | createdAt: 2026-10-01T06:30:00.000Z |
| 78 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 78 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 79 | 79 | - id: 4 |
| 80 | 80 | title: "ACP sink Allow(): short-circuit when yolo is on (no RequestPermission sent to the editor)" |
| 81 | - state: open | |
| 81 | + state: closed | |
| 82 | 82 | priority: none |
| 83 | 83 | author: |
| 84 | 84 | name: k33g |
| 85 | 85 | email: ph.charriere@gmail.com |
| 86 | 86 | createdAt: 2026-10-01T06:30:00.000Z |
| 87 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 87 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 88 | 88 | - id: 5 |
| 89 | - title: "Banner/status line shows that yolo is on (terminal, window, ACP agent info)" | |
| 90 | - state: open | |
| 89 | + title: Banner/status line shows that yolo is on (terminal, window, ACP agent info) | |
| 90 | + state: closed | |
| 91 | 91 | priority: none |
| 92 | 92 | author: |
| 93 | 93 | name: k33g |
| 94 | 94 | email: ph.charriere@gmail.com |
| 95 | 95 | createdAt: 2026-10-01T06:30:00.000Z |
| 96 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 96 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 97 | 97 | - id: 6 |
| 98 | 98 | title: "Docs EN+FR: reference/cli.md, reference/configuration.md, how-to (window mode, editor); answer the question in the how-to" |
| 99 | - state: open | |
| 99 | + state: closed | |
| 100 | 100 | priority: none |
| 101 | 101 | author: |
| 102 | 102 | name: k33g |
| 103 | 103 | email: ph.charriere@gmail.com |
| 104 | 104 | createdAt: 2026-10-01T06:30:00.000Z |
| 105 | - updatedAt: 2026-10-01T06:30:00.000Z | |
| 105 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 106 | 106 | - id: 7 |
| 107 | 107 | title: "Per-tool permission: bashTool/editTools accept true | false | ask (config validation, defaults unchanged)" |
| 108 | - state: open | |
| 108 | + state: closed | |
| 109 | 109 | priority: none |
| 110 | 110 | author: |
| 111 | 111 | name: k33g |
| 112 | 112 | email: ph.charriere@gmail.com |
| 113 | 113 | createdAt: 2026-10-03T10:00:00.000Z |
| 114 | - updatedAt: 2026-10-03T10:00:00.000Z | |
| 114 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 115 | 115 | - id: 8 |
| 116 | 116 | title: "Line mode: a terminal permission prompt (y once / s session / n reject) so `ask` works there too" |
| 117 | - state: open | |
| 117 | + state: closed | |
| 118 | 118 | priority: none |
| 119 | 119 | author: |
| 120 | 120 | name: k33g |
| 121 | 121 | email: ph.charriere@gmail.com |
| 122 | 122 | createdAt: 2026-10-03T10:00:00.000Z |
| 123 | - updatedAt: 2026-10-03T10:00:00.000Z | |
| 123 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 124 | 124 | - id: 9 |
| 125 | - title: "Decide precedence between the per-tool value, the global `permissions` key and --yolo" | |
| 126 | - state: open | |
| 125 | + title: Decide precedence between the per-tool value, the global `permissions` key and --yolo | |
| 126 | + state: closed | |
| 127 | 127 | priority: none |
| 128 | 128 | author: |
| 129 | 129 | name: k33g |
| 130 | 130 | email: ph.charriere@gmail.com |
| 131 | 131 | createdAt: 2026-10-03T10:00:00.000Z |
| 132 | - updatedAt: 2026-10-03T10:00:00.000Z | |
| 132 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 133 | 133 | - id: 10 |
| 134 | - title: "Ship `permissions:` (commented, explained) in agent.*.yaml, demo*/ and config.samples/" | |
| 135 | - state: open | |
| 134 | + title: Ship `permissions:` (commented, explained) in agent.*.yaml, demo*/ and config.samples/ | |
| 135 | + state: closed | |
| 136 | 136 | priority: none |
| 137 | 137 | author: |
| 138 | 138 | name: k33g |
| 139 | 139 | email: ph.charriere@gmail.com |
| 140 | 140 | createdAt: 2026-10-03T10:00:00.000Z |
| 141 | - updatedAt: 2026-10-03T10:00:00.000Z | |
| 141 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 142 | 142 | - id: 11 |
| 143 | 143 | title: "mm --ask: let the caller forbid or confirm the asked agent's tools (ticket 73 open task)" |
| 144 | - state: open | |
| 144 | + state: closed | |
| 145 | 145 | priority: none |
| 146 | 146 | author: |
| 147 | 147 | name: k33g |
| 148 | 148 | email: ph.charriere@gmail.com |
| 149 | 149 | createdAt: 2026-10-03T10:00:00.000Z |
| 150 | - updatedAt: 2026-10-03T10:00:00.000Z | |
| 150 | + updatedAt: 2026-10-06T12:00:00.000Z | |
| 151 | 151 | comments: |
| 152 | 152 | - id: 1 |
| 153 | 153 | author: |
| @@ -195,3 +195,37 @@ comments: | ||
| 195 | 195 | 1. Precedence: per-tool value > `permissions` > default — OK? |
| 196 | 196 | 2. In -p mode, should `ask` reject (safe, proposed) or allow? |
| 197 | 197 | 3. Should `ask` for editTools cover read_file too (today never gated)? |
| 198 | + - id: 2 | |
| 199 | + author: | |
| 200 | + name: claude | |
| 201 | + email: noreply@anthropic.com | |
| 202 | + createdAt: 2026-10-06T12:00:00.000Z | |
| 203 | + body: | | |
| 204 | + **Implemented on branch `feature/yolo` (2026-10-06, with ticket 13), uncommitted.** | |
| 205 | + | |
| 206 | + User's decisions: a config key, not a flag; yolo everywhere ACP | |
| 207 | + included; `yolo` replaces `permissions` (still read, deprecated); | |
| 208 | + `yolo: false` forces MCP to ask; four answers (once / session / | |
| 209 | + reject / never); the agent that holds mmConfigs wins. | |
| 210 | + | |
| 211 | + - `yolo: true|false` (default true), override `AGENT_YOLO`. | |
| 212 | + `bashTool`/`editTools` unchanged: they say whether a tool exists. | |
| 213 | + - `permissions: ask` = `yolo: false` (+ banner warning), `auto` = | |
| 214 | + warning only. Answers question 9: there is no per-tool value. | |
| 215 | + - New package `internal/consent`: `Gate` (yolo check), `Answer`, | |
| 216 | + `Policy` (session memory per tool), `SetPrompter`/`Terminal`/ | |
| 217 | + `Prompt` for the line mode. All six built-in call sites use it. | |
| 218 | + - Line mode: `🔐` prompt routed by the REPL waiting room | |
| 219 | + (`internal/agent/prompt.go`), also for /ask. `-p` and `--ask` | |
| 220 | + reject with a stderr notice (open question 2: reject). | |
| 221 | + - Window: a/s/r/n. ACP: 4th option `never` (reject_always); with | |
| 222 | + yolo on no RequestPermission is sent (ticket 57's pending-dialog | |
| 223 | + case cannot happen in yolo mode). | |
| 224 | + - MCP: asks when `permissions: ask` OR yolo off; the terminal path | |
| 225 | + now asks too. | |
| 226 | + - /ask children run with `AGENT_YOLO=false`; the asker's | |
| 227 | + `client.RequestPermission` goes through ITS `consent.Gate`. | |
| 228 | + - Banner: `| yolo: on` / `| yolo: off (tools ask)`. | |
| 229 | + - Open question 3 (read_file gated?): no, reads never ask. | |
| 230 | + Docs EN+FR: how-to/confirm-tool-calls.md, explanation/yolo-and-permissions.md, | |
| 231 | + reference configuration/cli/acp/tools/slash-commands updated. | |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 59 | 2 | id: 59 |
| 3 | title: How to start in yolo mode? | 3 | title: How to start in yolo mode? |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-01T04:39:53.878Z | 8 | createdAt: 2026-10-01T04:39:53.878Z |
| 9 | -updatedAt: 2026-10-03T10:00:00.000Z | 9 | +updatedAt: 2026-10-06T03:53:27.047Z |
| 10 | labels: | 10 | labels: |
| 11 | - kind::feature | 11 | - kind::feature |
| 12 | - priority::low | 12 | - priority::low |
| @@ -50,104 +50,104 @@ body: | | |||
| 50 | - Make it visible: banner/status line "yolo" so nobody runs it by mistake. | 50 | - Make it visible: banner/status line "yolo" so nobody runs it by mistake. |
| 51 | tasks: | 51 | tasks: |
| 52 | - id: 1 | 52 | - id: 1 |
| 53 | - title: "Decide the open questions below (flag name, ACP scope, MCP scope, banner)" | 53 | + title: Decide the open questions below (flag name, ACP scope, MCP scope, banner) |
| 54 | - state: open | 54 | + state: closed |
| 55 | priority: none | 55 | priority: none |
| 56 | author: | 56 | author: |
| 57 | name: k33g | 57 | name: k33g |
| 58 | email: ph.charriere@gmail.com | 58 | email: ph.charriere@gmail.com |
| 59 | createdAt: 2026-10-01T06:30:00.000Z | 59 | createdAt: 2026-10-01T06:30:00.000Z |
| 60 | - updatedAt: 2026-10-01T06:30:00.000Z | 60 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 61 | - id: 2 | 61 | - id: 2 |
| 62 | title: "Failing tests first: with yolo on, window mode (permissions: ask) and ACP Allow() return true without asking; MCP ask-tools run" | 62 | title: "Failing tests first: with yolo on, window mode (permissions: ask) and ACP Allow() return true without asking; MCP ask-tools run" |
| 63 | - state: open | 63 | + state: closed |
| 64 | priority: none | 64 | priority: none |
| 65 | author: | 65 | author: |
| 66 | name: k33g | 66 | name: k33g |
| 67 | email: ph.charriere@gmail.com | 67 | email: ph.charriere@gmail.com |
| 68 | createdAt: 2026-10-01T06:30:00.000Z | 68 | createdAt: 2026-10-01T06:30:00.000Z |
| 69 | - updatedAt: 2026-10-01T06:30:00.000Z | 69 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 70 | - id: 3 | 70 | - id: 3 |
| 71 | - title: "Flag --yolo (main.go, alongside -p/-tui/-acp) + optional env/config override; forces Permissions=auto and mcp.permissions=auto, per-server MCP permissions included" | 71 | + title: Flag --yolo (main.go, alongside -p/-tui/-acp) + optional env/config override; forces Permissions=auto and mcp.permissions=auto, per-server MCP permissions included |
| 72 | - state: open | 72 | + state: closed |
| 73 | priority: none | 73 | priority: none |
| 74 | author: | 74 | author: |
| 75 | name: k33g | 75 | name: k33g |
| 76 | email: ph.charriere@gmail.com | 76 | email: ph.charriere@gmail.com |
| 77 | createdAt: 2026-10-01T06:30:00.000Z | 77 | createdAt: 2026-10-01T06:30:00.000Z |
| 78 | - updatedAt: 2026-10-01T06:30:00.000Z | 78 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 79 | - id: 4 | 79 | - id: 4 |
| 80 | title: "ACP sink Allow(): short-circuit when yolo is on (no RequestPermission sent to the editor)" | 80 | title: "ACP sink Allow(): short-circuit when yolo is on (no RequestPermission sent to the editor)" |
| 81 | - state: open | 81 | + state: closed |
| 82 | priority: none | 82 | priority: none |
| 83 | author: | 83 | author: |
| 84 | name: k33g | 84 | name: k33g |
| 85 | email: ph.charriere@gmail.com | 85 | email: ph.charriere@gmail.com |
| 86 | createdAt: 2026-10-01T06:30:00.000Z | 86 | createdAt: 2026-10-01T06:30:00.000Z |
| 87 | - updatedAt: 2026-10-01T06:30:00.000Z | 87 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 88 | - id: 5 | 88 | - id: 5 |
| 89 | - title: "Banner/status line shows that yolo is on (terminal, window, ACP agent info)" | 89 | + title: Banner/status line shows that yolo is on (terminal, window, ACP agent info) |
| 90 | - state: open | 90 | + state: closed |
| 91 | priority: none | 91 | priority: none |
| 92 | author: | 92 | author: |
| 93 | name: k33g | 93 | name: k33g |
| 94 | email: ph.charriere@gmail.com | 94 | email: ph.charriere@gmail.com |
| 95 | createdAt: 2026-10-01T06:30:00.000Z | 95 | createdAt: 2026-10-01T06:30:00.000Z |
| 96 | - updatedAt: 2026-10-01T06:30:00.000Z | 96 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 97 | - id: 6 | 97 | - id: 6 |
| 98 | title: "Docs EN+FR: reference/cli.md, reference/configuration.md, how-to (window mode, editor); answer the question in the how-to" | 98 | title: "Docs EN+FR: reference/cli.md, reference/configuration.md, how-to (window mode, editor); answer the question in the how-to" |
| 99 | - state: open | 99 | + state: closed |
| 100 | priority: none | 100 | priority: none |
| 101 | author: | 101 | author: |
| 102 | name: k33g | 102 | name: k33g |
| 103 | email: ph.charriere@gmail.com | 103 | email: ph.charriere@gmail.com |
| 104 | createdAt: 2026-10-01T06:30:00.000Z | 104 | createdAt: 2026-10-01T06:30:00.000Z |
| 105 | - updatedAt: 2026-10-01T06:30:00.000Z | 105 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 106 | - id: 7 | 106 | - id: 7 |
| 107 | title: "Per-tool permission: bashTool/editTools accept true | false | ask (config validation, defaults unchanged)" | 107 | title: "Per-tool permission: bashTool/editTools accept true | false | ask (config validation, defaults unchanged)" |
| 108 | - state: open | 108 | + state: closed |
| 109 | priority: none | 109 | priority: none |
| 110 | author: | 110 | author: |
| 111 | name: k33g | 111 | name: k33g |
| 112 | email: ph.charriere@gmail.com | 112 | email: ph.charriere@gmail.com |
| 113 | createdAt: 2026-10-03T10:00:00.000Z | 113 | createdAt: 2026-10-03T10:00:00.000Z |
| 114 | - updatedAt: 2026-10-03T10:00:00.000Z | 114 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 115 | - id: 8 | 115 | - id: 8 |
| 116 | title: "Line mode: a terminal permission prompt (y once / s session / n reject) so `ask` works there too" | 116 | title: "Line mode: a terminal permission prompt (y once / s session / n reject) so `ask` works there too" |
| 117 | - state: open | 117 | + state: closed |
| 118 | priority: none | 118 | priority: none |
| 119 | author: | 119 | author: |
| 120 | name: k33g | 120 | name: k33g |
| 121 | email: ph.charriere@gmail.com | 121 | email: ph.charriere@gmail.com |
| 122 | createdAt: 2026-10-03T10:00:00.000Z | 122 | createdAt: 2026-10-03T10:00:00.000Z |
| 123 | - updatedAt: 2026-10-03T10:00:00.000Z | 123 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 124 | - id: 9 | 124 | - id: 9 |
| 125 | - title: "Decide precedence between the per-tool value, the global `permissions` key and --yolo" | 125 | + title: Decide precedence between the per-tool value, the global `permissions` key and --yolo |
| 126 | - state: open | 126 | + state: closed |
| 127 | priority: none | 127 | priority: none |
| 128 | author: | 128 | author: |
| 129 | name: k33g | 129 | name: k33g |
| 130 | email: ph.charriere@gmail.com | 130 | email: ph.charriere@gmail.com |
| 131 | createdAt: 2026-10-03T10:00:00.000Z | 131 | createdAt: 2026-10-03T10:00:00.000Z |
| 132 | - updatedAt: 2026-10-03T10:00:00.000Z | 132 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 133 | - id: 10 | 133 | - id: 10 |
| 134 | - title: "Ship `permissions:` (commented, explained) in agent.*.yaml, demo*/ and config.samples/" | 134 | + title: Ship `permissions:` (commented, explained) in agent.*.yaml, demo*/ and config.samples/ |
| 135 | - state: open | 135 | + state: closed |
| 136 | priority: none | 136 | priority: none |
| 137 | author: | 137 | author: |
| 138 | name: k33g | 138 | name: k33g |
| 139 | email: ph.charriere@gmail.com | 139 | email: ph.charriere@gmail.com |
| 140 | createdAt: 2026-10-03T10:00:00.000Z | 140 | createdAt: 2026-10-03T10:00:00.000Z |
| 141 | - updatedAt: 2026-10-03T10:00:00.000Z | 141 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 142 | - id: 11 | 142 | - id: 11 |
| 143 | title: "mm --ask: let the caller forbid or confirm the asked agent's tools (ticket 73 open task)" | 143 | title: "mm --ask: let the caller forbid or confirm the asked agent's tools (ticket 73 open task)" |
| 144 | - state: open | 144 | + state: closed |
| 145 | priority: none | 145 | priority: none |
| 146 | author: | 146 | author: |
| 147 | name: k33g | 147 | name: k33g |
| 148 | email: ph.charriere@gmail.com | 148 | email: ph.charriere@gmail.com |
| 149 | createdAt: 2026-10-03T10:00:00.000Z | 149 | createdAt: 2026-10-03T10:00:00.000Z |
| 150 | - updatedAt: 2026-10-03T10:00:00.000Z | 150 | + updatedAt: 2026-10-06T12:00:00.000Z |
| 151 | comments: | 151 | comments: |
| 152 | - id: 1 | 152 | - id: 1 |
| 153 | author: | 153 | author: |
| @@ -195,3 +195,37 @@ comments: | |||
| 195 | 1. Precedence: per-tool value > `permissions` > default — OK? | 195 | 1. Precedence: per-tool value > `permissions` > default — OK? |
| 196 | 2. In -p mode, should `ask` reject (safe, proposed) or allow? | 196 | 2. In -p mode, should `ask` reject (safe, proposed) or allow? |
| 197 | 3. Should `ask` for editTools cover read_file too (today never gated)? | 197 | 3. Should `ask` for editTools cover read_file too (today never gated)? |
| 198 | + - id: 2 | ||
| 199 | + author: | ||
| 200 | + name: claude | ||
| 201 | + email: noreply@anthropic.com | ||
| 202 | + createdAt: 2026-10-06T12:00:00.000Z | ||
| 203 | + body: | | ||
| 204 | + **Implemented on branch `feature/yolo` (2026-10-06, with ticket 13), uncommitted.** | ||
| 205 | + | ||
| 206 | + User's decisions: a config key, not a flag; yolo everywhere ACP | ||
| 207 | + included; `yolo` replaces `permissions` (still read, deprecated); | ||
| 208 | + `yolo: false` forces MCP to ask; four answers (once / session / | ||
| 209 | + reject / never); the agent that holds mmConfigs wins. | ||
| 210 | + | ||
| 211 | + - `yolo: true|false` (default true), override `AGENT_YOLO`. | ||
| 212 | + `bashTool`/`editTools` unchanged: they say whether a tool exists. | ||
| 213 | + - `permissions: ask` = `yolo: false` (+ banner warning), `auto` = | ||
| 214 | + warning only. Answers question 9: there is no per-tool value. | ||
| 215 | + - New package `internal/consent`: `Gate` (yolo check), `Answer`, | ||
| 216 | + `Policy` (session memory per tool), `SetPrompter`/`Terminal`/ | ||
| 217 | + `Prompt` for the line mode. All six built-in call sites use it. | ||
| 218 | + - Line mode: `🔐` prompt routed by the REPL waiting room | ||
| 219 | + (`internal/agent/prompt.go`), also for /ask. `-p` and `--ask` | ||
| 220 | + reject with a stderr notice (open question 2: reject). | ||
| 221 | + - Window: a/s/r/n. ACP: 4th option `never` (reject_always); with | ||
| 222 | + yolo on no RequestPermission is sent (ticket 57's pending-dialog | ||
| 223 | + case cannot happen in yolo mode). | ||
| 224 | + - MCP: asks when `permissions: ask` OR yolo off; the terminal path | ||
| 225 | + now asks too. | ||
| 226 | + - /ask children run with `AGENT_YOLO=false`; the asker's | ||
| 227 | + `client.RequestPermission` goes through ITS `consent.Gate`. | ||
| 228 | + - Banner: `| yolo: on` / `| yolo: off (tools ask)`. | ||
| 229 | + - Open question 3 (read_file gated?): no, reads never ask. | ||
| 230 | + Docs EN+FR: how-to/confirm-tool-calls.md, explanation/yolo-and-permissions.md, | ||
| 231 | + reference configuration/cli/acp/tools/slash-commands updated. | ||
modified
.tickets/issues/0060-add-llmman-provider.yaml +8 -8 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 60 |
| 3 | 3 | title: Add llmman provider |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-01T04:48:02.829Z |
| 9 | -updatedAt: 2026-10-01T07:00:00.000Z | |
| 9 | +updatedAt: 2026-10-06T03:56:22.404Z | |
| 10 | 10 | labels: |
| 11 | 11 | - kind::feature |
| 12 | 12 | - priority::medium |
| @@ -19,7 +19,7 @@ body: | | ||
| 19 | 19 | demo-llmman/ using hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M. |
| 20 | 20 | tasks: |
| 21 | 21 | - id: 1 |
| 22 | - title: "Registry entry llmman (URL, fallback, key, progress, thinking off)" | |
| 22 | + title: Registry entry llmman (URL, fallback, key, progress, thinking off) | |
| 23 | 23 | state: closed |
| 24 | 24 | priority: none |
| 25 | 25 | author: |
| @@ -46,7 +46,7 @@ tasks: | ||
| 46 | 46 | createdAt: 2026-10-01T07:00:00.000Z |
| 47 | 47 | updatedAt: 2026-10-01T07:00:00.000Z |
| 48 | 48 | - id: 4 |
| 49 | - title: "demo-llmman/agent.llmman.yaml with hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M" | |
| 49 | + title: demo-llmman/agent.llmman.yaml with hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M | |
| 50 | 50 | state: closed |
| 51 | 51 | priority: none |
| 52 | 52 | author: |
| @@ -55,7 +55,7 @@ tasks: | ||
| 55 | 55 | createdAt: 2026-10-01T07:00:00.000Z |
| 56 | 56 | updatedAt: 2026-10-01T07:00:00.000Z |
| 57 | 57 | - id: 5 |
| 58 | - title: "Docs EN+FR (how-to, reference, explanation, indexes)" | |
| 58 | + title: Docs EN+FR (how-to, reference, explanation, indexes) | |
| 59 | 59 | state: closed |
| 60 | 60 | priority: none |
| 61 | 61 | author: |
| @@ -64,7 +64,7 @@ tasks: | ||
| 64 | 64 | createdAt: 2026-10-01T07:00:00.000Z |
| 65 | 65 | updatedAt: 2026-10-01T07:00:00.000Z |
| 66 | 66 | - id: 6 |
| 67 | - title: "Live check against llmman serve (tool call, ctx, compaction)" | |
| 67 | + title: Live check against llmman serve (tool call, ctx, compaction) | |
| 68 | 68 | state: closed |
| 69 | 69 | priority: none |
| 70 | 70 | author: |
| @@ -73,7 +73,7 @@ tasks: | ||
| 73 | 73 | createdAt: 2026-10-01T07:00:00.000Z |
| 74 | 74 | updatedAt: 2026-10-01T07:00:00.000Z |
| 75 | 75 | - id: 7 |
| 76 | - title: "Quality gate (qlty) where available" | |
| 76 | + title: Quality gate (qlty) where available | |
| 77 | 77 | state: open |
| 78 | 78 | priority: none |
| 79 | 79 | author: |
| @@ -82,7 +82,7 @@ tasks: | ||
| 82 | 82 | createdAt: 2026-10-01T07:00:00.000Z |
| 83 | 83 | updatedAt: 2026-10-01T07:00:00.000Z |
| 84 | 84 | - id: 8 |
| 85 | - title: "Review, commit, merge" | |
| 85 | + title: Review, commit, merge | |
| 86 | 86 | state: open |
| 87 | 87 | priority: none |
| 88 | 88 | author: |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 60 | 2 | id: 60 |
| 3 | title: Add llmman provider | 3 | title: Add llmman provider |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-01T04:48:02.829Z | 8 | createdAt: 2026-10-01T04:48:02.829Z |
| 9 | -updatedAt: 2026-10-01T07:00:00.000Z | 9 | +updatedAt: 2026-10-06T03:56:22.404Z |
| 10 | labels: | 10 | labels: |
| 11 | - kind::feature | 11 | - kind::feature |
| 12 | - priority::medium | 12 | - priority::medium |
| @@ -19,7 +19,7 @@ body: | | |||
| 19 | demo-llmman/ using hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M. | 19 | demo-llmman/ using hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M. |
| 20 | tasks: | 20 | tasks: |
| 21 | - id: 1 | 21 | - id: 1 |
| 22 | - title: "Registry entry llmman (URL, fallback, key, progress, thinking off)" | 22 | + title: Registry entry llmman (URL, fallback, key, progress, thinking off) |
| 23 | state: closed | 23 | state: closed |
| 24 | priority: none | 24 | priority: none |
| 25 | author: | 25 | author: |
| @@ -46,7 +46,7 @@ tasks: | |||
| 46 | createdAt: 2026-10-01T07:00:00.000Z | 46 | createdAt: 2026-10-01T07:00:00.000Z |
| 47 | updatedAt: 2026-10-01T07:00:00.000Z | 47 | updatedAt: 2026-10-01T07:00:00.000Z |
| 48 | - id: 4 | 48 | - id: 4 |
| 49 | - title: "demo-llmman/agent.llmman.yaml with hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M" | 49 | + title: demo-llmman/agent.llmman.yaml with hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M |
| 50 | state: closed | 50 | state: closed |
| 51 | priority: none | 51 | priority: none |
| 52 | author: | 52 | author: |
| @@ -55,7 +55,7 @@ tasks: | |||
| 55 | createdAt: 2026-10-01T07:00:00.000Z | 55 | createdAt: 2026-10-01T07:00:00.000Z |
| 56 | updatedAt: 2026-10-01T07:00:00.000Z | 56 | updatedAt: 2026-10-01T07:00:00.000Z |
| 57 | - id: 5 | 57 | - id: 5 |
| 58 | - title: "Docs EN+FR (how-to, reference, explanation, indexes)" | 58 | + title: Docs EN+FR (how-to, reference, explanation, indexes) |
| 59 | state: closed | 59 | state: closed |
| 60 | priority: none | 60 | priority: none |
| 61 | author: | 61 | author: |
| @@ -64,7 +64,7 @@ tasks: | |||
| 64 | createdAt: 2026-10-01T07:00:00.000Z | 64 | createdAt: 2026-10-01T07:00:00.000Z |
| 65 | updatedAt: 2026-10-01T07:00:00.000Z | 65 | updatedAt: 2026-10-01T07:00:00.000Z |
| 66 | - id: 6 | 66 | - id: 6 |
| 67 | - title: "Live check against llmman serve (tool call, ctx, compaction)" | 67 | + title: Live check against llmman serve (tool call, ctx, compaction) |
| 68 | state: closed | 68 | state: closed |
| 69 | priority: none | 69 | priority: none |
| 70 | author: | 70 | author: |
| @@ -73,7 +73,7 @@ tasks: | |||
| 73 | createdAt: 2026-10-01T07:00:00.000Z | 73 | createdAt: 2026-10-01T07:00:00.000Z |
| 74 | updatedAt: 2026-10-01T07:00:00.000Z | 74 | updatedAt: 2026-10-01T07:00:00.000Z |
| 75 | - id: 7 | 75 | - id: 7 |
| 76 | - title: "Quality gate (qlty) where available" | 76 | + title: Quality gate (qlty) where available |
| 77 | state: open | 77 | state: open |
| 78 | priority: none | 78 | priority: none |
| 79 | author: | 79 | author: |
| @@ -82,7 +82,7 @@ tasks: | |||
| 82 | createdAt: 2026-10-01T07:00:00.000Z | 82 | createdAt: 2026-10-01T07:00:00.000Z |
| 83 | updatedAt: 2026-10-01T07:00:00.000Z | 83 | updatedAt: 2026-10-01T07:00:00.000Z |
| 84 | - id: 8 | 84 | - id: 8 |
| 85 | - title: "Review, commit, merge" | 85 | + title: Review, commit, merge |
| 86 | state: open | 86 | state: open |
| 87 | priority: none | 87 | priority: none |
| 88 | author: | 88 | author: |
modified
.tickets/issues/0062-add-ollama-provider.yaml +11 -11 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 62 |
| 3 | 3 | title: Add Ollama provider |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-01T06:10:07.295Z |
| 9 | -updatedAt: 2026-10-01T07:00:00.000Z | |
| 9 | +updatedAt: 2026-10-06T03:56:14.111Z | |
| 10 | 10 | labels: |
| 11 | 11 | - kind::feature |
| 12 | 12 | - priority::medium |
| @@ -19,7 +19,7 @@ body: | | ||
| 19 | 19 | later is one field to change. |
| 20 | 20 | tasks: |
| 21 | 21 | - id: 1 |
| 22 | - title: "Measure Ollama's /v1 (reasoning field, progress, thinking switch, window, 404)" | |
| 22 | + title: Measure Ollama's /v1 (reasoning field, progress, thinking switch, window, 404) | |
| 23 | 23 | state: closed |
| 24 | 24 | priority: none |
| 25 | 25 | author: |
| @@ -28,7 +28,7 @@ tasks: | ||
| 28 | 28 | createdAt: 2026-10-01T07:00:00.000Z |
| 29 | 29 | updatedAt: 2026-10-01T07:00:00.000Z |
| 30 | 30 | - id: 2 |
| 31 | - title: "Per-provider thinkingOff field; reasoning_effort none for Ollama" | |
| 31 | + title: Per-provider thinkingOff field; reasoning_effort none for Ollama | |
| 32 | 32 | state: closed |
| 33 | 33 | priority: none |
| 34 | 34 | author: |
| @@ -37,7 +37,7 @@ tasks: | ||
| 37 | 37 | createdAt: 2026-10-01T07:00:00.000Z |
| 38 | 38 | updatedAt: 2026-10-01T07:00:00.000Z |
| 39 | 39 | - id: 3 |
| 40 | - title: "Registry entry ollama + probeOllama (shared /api/ps reading with llmman)" | |
| 40 | + title: Registry entry ollama + probeOllama (shared /api/ps reading with llmman) | |
| 41 | 41 | state: closed |
| 42 | 42 | priority: none |
| 43 | 43 | author: |
| @@ -55,7 +55,7 @@ tasks: | ||
| 55 | 55 | createdAt: 2026-10-01T07:00:00.000Z |
| 56 | 56 | updatedAt: 2026-10-01T07:00:00.000Z |
| 57 | 57 | - id: 5 |
| 58 | - title: "demo-ollama/agent.ollama.yaml with qwen3.5:2b" | |
| 58 | + title: demo-ollama/agent.ollama.yaml with qwen3.5:2b | |
| 59 | 59 | state: closed |
| 60 | 60 | priority: none |
| 61 | 61 | author: |
| @@ -64,7 +64,7 @@ tasks: | ||
| 64 | 64 | createdAt: 2026-10-01T07:00:00.000Z |
| 65 | 65 | updatedAt: 2026-10-01T07:00:00.000Z |
| 66 | 66 | - id: 6 |
| 67 | - title: "Docs EN+FR (how-to, reference, explanation, indexes)" | |
| 67 | + title: Docs EN+FR (how-to, reference, explanation, indexes) | |
| 68 | 68 | state: closed |
| 69 | 69 | priority: none |
| 70 | 70 | author: |
| @@ -73,7 +73,7 @@ tasks: | ||
| 73 | 73 | createdAt: 2026-10-01T07:00:00.000Z |
| 74 | 74 | updatedAt: 2026-10-01T07:00:00.000Z |
| 75 | 75 | - id: 7 |
| 76 | - title: "Live check against Ollama (tool call, ctx, compaction)" | |
| 76 | + title: Live check against Ollama (tool call, ctx, compaction) | |
| 77 | 77 | state: closed |
| 78 | 78 | priority: none |
| 79 | 79 | author: |
| @@ -82,7 +82,7 @@ tasks: | ||
| 82 | 82 | createdAt: 2026-10-01T07:00:00.000Z |
| 83 | 83 | updatedAt: 2026-10-01T07:00:00.000Z |
| 84 | 84 | - id: 8 |
| 85 | - title: "Check reasoning_effort none on a non-thinking model" | |
| 85 | + title: Check reasoning_effort none on a non-thinking model | |
| 86 | 86 | state: open |
| 87 | 87 | priority: none |
| 88 | 88 | author: |
| @@ -91,7 +91,7 @@ tasks: | ||
| 91 | 91 | createdAt: 2026-10-01T07:00:00.000Z |
| 92 | 92 | updatedAt: 2026-10-01T07:00:00.000Z |
| 93 | 93 | - id: 9 |
| 94 | - title: "Quality gate (qlty) where available" | |
| 94 | + title: Quality gate (qlty) where available | |
| 95 | 95 | state: open |
| 96 | 96 | priority: none |
| 97 | 97 | author: |
| @@ -100,7 +100,7 @@ tasks: | ||
| 100 | 100 | createdAt: 2026-10-01T07:00:00.000Z |
| 101 | 101 | updatedAt: 2026-10-01T07:00:00.000Z |
| 102 | 102 | - id: 10 |
| 103 | - title: "Review, commit, merge" | |
| 103 | + title: Review, commit, merge | |
| 104 | 104 | state: open |
| 105 | 105 | priority: none |
| 106 | 106 | author: |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 62 | 2 | id: 62 |
| 3 | title: Add Ollama provider | 3 | title: Add Ollama provider |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-01T06:10:07.295Z | 8 | createdAt: 2026-10-01T06:10:07.295Z |
| 9 | -updatedAt: 2026-10-01T07:00:00.000Z | 9 | +updatedAt: 2026-10-06T03:56:14.111Z |
| 10 | labels: | 10 | labels: |
| 11 | - kind::feature | 11 | - kind::feature |
| 12 | - priority::medium | 12 | - priority::medium |
| @@ -19,7 +19,7 @@ body: | | |||
| 19 | later is one field to change. | 19 | later is one field to change. |
| 20 | tasks: | 20 | tasks: |
| 21 | - id: 1 | 21 | - id: 1 |
| 22 | - title: "Measure Ollama's /v1 (reasoning field, progress, thinking switch, window, 404)" | 22 | + title: Measure Ollama's /v1 (reasoning field, progress, thinking switch, window, 404) |
| 23 | state: closed | 23 | state: closed |
| 24 | priority: none | 24 | priority: none |
| 25 | author: | 25 | author: |
| @@ -28,7 +28,7 @@ tasks: | |||
| 28 | createdAt: 2026-10-01T07:00:00.000Z | 28 | createdAt: 2026-10-01T07:00:00.000Z |
| 29 | updatedAt: 2026-10-01T07:00:00.000Z | 29 | updatedAt: 2026-10-01T07:00:00.000Z |
| 30 | - id: 2 | 30 | - id: 2 |
| 31 | - title: "Per-provider thinkingOff field; reasoning_effort none for Ollama" | 31 | + title: Per-provider thinkingOff field; reasoning_effort none for Ollama |
| 32 | state: closed | 32 | state: closed |
| 33 | priority: none | 33 | priority: none |
| 34 | author: | 34 | author: |
| @@ -37,7 +37,7 @@ tasks: | |||
| 37 | createdAt: 2026-10-01T07:00:00.000Z | 37 | createdAt: 2026-10-01T07:00:00.000Z |
| 38 | updatedAt: 2026-10-01T07:00:00.000Z | 38 | updatedAt: 2026-10-01T07:00:00.000Z |
| 39 | - id: 3 | 39 | - id: 3 |
| 40 | - title: "Registry entry ollama + probeOllama (shared /api/ps reading with llmman)" | 40 | + title: Registry entry ollama + probeOllama (shared /api/ps reading with llmman) |
| 41 | state: closed | 41 | state: closed |
| 42 | priority: none | 42 | priority: none |
| 43 | author: | 43 | author: |
| @@ -55,7 +55,7 @@ tasks: | |||
| 55 | createdAt: 2026-10-01T07:00:00.000Z | 55 | createdAt: 2026-10-01T07:00:00.000Z |
| 56 | updatedAt: 2026-10-01T07:00:00.000Z | 56 | updatedAt: 2026-10-01T07:00:00.000Z |
| 57 | - id: 5 | 57 | - id: 5 |
| 58 | - title: "demo-ollama/agent.ollama.yaml with qwen3.5:2b" | 58 | + title: demo-ollama/agent.ollama.yaml with qwen3.5:2b |
| 59 | state: closed | 59 | state: closed |
| 60 | priority: none | 60 | priority: none |
| 61 | author: | 61 | author: |
| @@ -64,7 +64,7 @@ tasks: | |||
| 64 | createdAt: 2026-10-01T07:00:00.000Z | 64 | createdAt: 2026-10-01T07:00:00.000Z |
| 65 | updatedAt: 2026-10-01T07:00:00.000Z | 65 | updatedAt: 2026-10-01T07:00:00.000Z |
| 66 | - id: 6 | 66 | - id: 6 |
| 67 | - title: "Docs EN+FR (how-to, reference, explanation, indexes)" | 67 | + title: Docs EN+FR (how-to, reference, explanation, indexes) |
| 68 | state: closed | 68 | state: closed |
| 69 | priority: none | 69 | priority: none |
| 70 | author: | 70 | author: |
| @@ -73,7 +73,7 @@ tasks: | |||
| 73 | createdAt: 2026-10-01T07:00:00.000Z | 73 | createdAt: 2026-10-01T07:00:00.000Z |
| 74 | updatedAt: 2026-10-01T07:00:00.000Z | 74 | updatedAt: 2026-10-01T07:00:00.000Z |
| 75 | - id: 7 | 75 | - id: 7 |
| 76 | - title: "Live check against Ollama (tool call, ctx, compaction)" | 76 | + title: Live check against Ollama (tool call, ctx, compaction) |
| 77 | state: closed | 77 | state: closed |
| 78 | priority: none | 78 | priority: none |
| 79 | author: | 79 | author: |
| @@ -82,7 +82,7 @@ tasks: | |||
| 82 | createdAt: 2026-10-01T07:00:00.000Z | 82 | createdAt: 2026-10-01T07:00:00.000Z |
| 83 | updatedAt: 2026-10-01T07:00:00.000Z | 83 | updatedAt: 2026-10-01T07:00:00.000Z |
| 84 | - id: 8 | 84 | - id: 8 |
| 85 | - title: "Check reasoning_effort none on a non-thinking model" | 85 | + title: Check reasoning_effort none on a non-thinking model |
| 86 | state: open | 86 | state: open |
| 87 | priority: none | 87 | priority: none |
| 88 | author: | 88 | author: |
| @@ -91,7 +91,7 @@ tasks: | |||
| 91 | createdAt: 2026-10-01T07:00:00.000Z | 91 | createdAt: 2026-10-01T07:00:00.000Z |
| 92 | updatedAt: 2026-10-01T07:00:00.000Z | 92 | updatedAt: 2026-10-01T07:00:00.000Z |
| 93 | - id: 9 | 93 | - id: 9 |
| 94 | - title: "Quality gate (qlty) where available" | 94 | + title: Quality gate (qlty) where available |
| 95 | state: open | 95 | state: open |
| 96 | priority: none | 96 | priority: none |
| 97 | author: | 97 | author: |
| @@ -100,7 +100,7 @@ tasks: | |||
| 100 | createdAt: 2026-10-01T07:00:00.000Z | 100 | createdAt: 2026-10-01T07:00:00.000Z |
| 101 | updatedAt: 2026-10-01T07:00:00.000Z | 101 | updatedAt: 2026-10-01T07:00:00.000Z |
| 102 | - id: 10 | 102 | - id: 10 |
| 103 | - title: "Review, commit, merge" | 103 | + title: Review, commit, merge |
| 104 | state: open | 104 | state: open |
| 105 | priority: none | 105 | priority: none |
| 106 | author: | 106 | author: |
modified
.tickets/issues/0066-talk-to-another-mm.yaml +8 -8 | @@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | 2 | id: 66 |
| 3 | 3 | title: talk to another mm |
| 4 | -state: open | |
| 4 | +state: closed | |
| 5 | 5 | author: |
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-02T18:48:36.275Z |
| 9 | -updatedAt: 2026-10-02T21:15:00.000Z | |
| 9 | +updatedAt: 2026-10-06T03:55:28.931Z | |
| 10 | 10 | labels: |
| 11 | 11 | - kind::feature |
| 12 | 12 | related: |
| @@ -226,7 +226,7 @@ body: | | ||
| 226 | 226 | c. Editor: one /ask with a hint, or one command per agent? |
| 227 | 227 | tasks: |
| 228 | 228 | - id: 1 |
| 229 | - title: "Answer the open questions (key name, immediate answer, multi-turn, fronts, context passed)" | |
| 229 | + title: Answer the open questions (key name, immediate answer, multi-turn, fronts, context passed) | |
| 230 | 230 | state: closed |
| 231 | 231 | priority: none |
| 232 | 232 | author: |
| @@ -235,7 +235,7 @@ tasks: | ||
| 235 | 235 | createdAt: 2026-10-02T19:30:00.000Z |
| 236 | 236 | updatedAt: 2026-10-02T20:00:00.000Z |
| 237 | 237 | - id: 2 |
| 238 | - title: "Confirm the remaining points a/b/c (context format, fresh session per /ask, editor hint vs one command per agent)" | |
| 238 | + title: Confirm the remaining points a/b/c (context format, fresh session per /ask, editor hint vs one command per agent) | |
| 239 | 239 | state: closed |
| 240 | 240 | priority: none |
| 241 | 241 | author: |
| @@ -289,7 +289,7 @@ tasks: | ||
| 289 | 289 | createdAt: 2026-10-02T19:30:00.000Z |
| 290 | 290 | updatedAt: 2026-10-02T20:00:00.000Z |
| 291 | 291 | - id: 8 |
| 292 | - title: "Insert the exchange in the current history (format, cap, valid alternation), persisted by the store and replayed on /resume" | |
| 292 | + title: Insert the exchange in the current history (format, cap, valid alternation), persisted by the store and replayed on /resume | |
| 293 | 293 | state: closed |
| 294 | 294 | priority: none |
| 295 | 295 | author: |
| @@ -298,7 +298,7 @@ tasks: | ||
| 298 | 298 | createdAt: 2026-10-02T19:30:00.000Z |
| 299 | 299 | updatedAt: 2026-10-02T20:00:00.000Z |
| 300 | 300 | - id: 9 |
| 301 | - title: "/abort, Ctrl+C and editor cancel -> session/cancel on the child; child crash -> one-line error, history untouched" | |
| 301 | + title: /abort, Ctrl+C and editor cancel -> session/cancel on the child; child crash -> one-line error, history untouched | |
| 302 | 302 | state: closed |
| 303 | 303 | priority: none |
| 304 | 304 | author: |
| @@ -334,7 +334,7 @@ tasks: | ||
| 334 | 334 | createdAt: 2026-10-02T20:30:00.000Z |
| 335 | 335 | updatedAt: 2026-10-02T20:30:00.000Z |
| 336 | 336 | - id: 13 |
| 337 | - title: "Live check of the window mode (/ask-jan in mm -tui) — unit-tested only" | |
| 337 | + title: Live check of the window mode (/ask-jan in mm -tui) — unit-tested only | |
| 338 | 338 | state: open |
| 339 | 339 | priority: none |
| 340 | 340 | author: |
| @@ -343,7 +343,7 @@ tasks: | ||
| 343 | 343 | createdAt: 2026-10-02T20:30:00.000Z |
| 344 | 344 | updatedAt: 2026-10-02T20:30:00.000Z |
| 345 | 345 | - id: 14 |
| 346 | - title: "Review, commit, merge" | |
| 346 | + title: Review, commit, merge | |
| 347 | 347 | state: open |
| 348 | 348 | priority: none |
| 349 | 349 | author: |
| @@ -1,12 +1,12 @@ | |||
| 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | 1 | # Managed by IssueSpec. Hand edits are welcome; keep the schema valid. |
| 2 | id: 66 | 2 | id: 66 |
| 3 | title: talk to another mm | 3 | title: talk to another mm |
| 4 | -state: open | 4 | +state: closed |
| 5 | author: | 5 | author: |
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-02T18:48:36.275Z | 8 | createdAt: 2026-10-02T18:48:36.275Z |
| 9 | -updatedAt: 2026-10-02T21:15:00.000Z | 9 | +updatedAt: 2026-10-06T03:55:28.931Z |
| 10 | labels: | 10 | labels: |
| 11 | - kind::feature | 11 | - kind::feature |
| 12 | related: | 12 | related: |
| @@ -226,7 +226,7 @@ body: | | |||
| 226 | c. Editor: one /ask with a hint, or one command per agent? | 226 | c. Editor: one /ask with a hint, or one command per agent? |
| 227 | tasks: | 227 | tasks: |
| 228 | - id: 1 | 228 | - id: 1 |
| 229 | - title: "Answer the open questions (key name, immediate answer, multi-turn, fronts, context passed)" | 229 | + title: Answer the open questions (key name, immediate answer, multi-turn, fronts, context passed) |
| 230 | state: closed | 230 | state: closed |
| 231 | priority: none | 231 | priority: none |
| 232 | author: | 232 | author: |
| @@ -235,7 +235,7 @@ tasks: | |||
| 235 | createdAt: 2026-10-02T19:30:00.000Z | 235 | createdAt: 2026-10-02T19:30:00.000Z |
| 236 | updatedAt: 2026-10-02T20:00:00.000Z | 236 | updatedAt: 2026-10-02T20:00:00.000Z |
| 237 | - id: 2 | 237 | - id: 2 |
| 238 | - title: "Confirm the remaining points a/b/c (context format, fresh session per /ask, editor hint vs one command per agent)" | 238 | + title: Confirm the remaining points a/b/c (context format, fresh session per /ask, editor hint vs one command per agent) |
| 239 | state: closed | 239 | state: closed |
| 240 | priority: none | 240 | priority: none |
| 241 | author: | 241 | author: |
| @@ -289,7 +289,7 @@ tasks: | |||
| 289 | createdAt: 2026-10-02T19:30:00.000Z | 289 | createdAt: 2026-10-02T19:30:00.000Z |
| 290 | updatedAt: 2026-10-02T20:00:00.000Z | 290 | updatedAt: 2026-10-02T20:00:00.000Z |
| 291 | - id: 8 | 291 | - id: 8 |
| 292 | - title: "Insert the exchange in the current history (format, cap, valid alternation), persisted by the store and replayed on /resume" | 292 | + title: Insert the exchange in the current history (format, cap, valid alternation), persisted by the store and replayed on /resume |
| 293 | state: closed | 293 | state: closed |
| 294 | priority: none | 294 | priority: none |
| 295 | author: | 295 | author: |
| @@ -298,7 +298,7 @@ tasks: | |||
| 298 | createdAt: 2026-10-02T19:30:00.000Z | 298 | createdAt: 2026-10-02T19:30:00.000Z |
| 299 | updatedAt: 2026-10-02T20:00:00.000Z | 299 | updatedAt: 2026-10-02T20:00:00.000Z |
| 300 | - id: 9 | 300 | - id: 9 |
| 301 | - title: "/abort, Ctrl+C and editor cancel -> session/cancel on the child; child crash -> one-line error, history untouched" | 301 | + title: /abort, Ctrl+C and editor cancel -> session/cancel on the child; child crash -> one-line error, history untouched |
| 302 | state: closed | 302 | state: closed |
| 303 | priority: none | 303 | priority: none |
| 304 | author: | 304 | author: |
| @@ -334,7 +334,7 @@ tasks: | |||
| 334 | createdAt: 2026-10-02T20:30:00.000Z | 334 | createdAt: 2026-10-02T20:30:00.000Z |
| 335 | updatedAt: 2026-10-02T20:30:00.000Z | 335 | updatedAt: 2026-10-02T20:30:00.000Z |
| 336 | - id: 13 | 336 | - id: 13 |
| 337 | - title: "Live check of the window mode (/ask-jan in mm -tui) — unit-tested only" | 337 | + title: Live check of the window mode (/ask-jan in mm -tui) — unit-tested only |
| 338 | state: open | 338 | state: open |
| 339 | priority: none | 339 | priority: none |
| 340 | author: | 340 | author: |
| @@ -343,7 +343,7 @@ tasks: | |||
| 343 | createdAt: 2026-10-02T20:30:00.000Z | 343 | createdAt: 2026-10-02T20:30:00.000Z |
| 344 | updatedAt: 2026-10-02T20:30:00.000Z | 344 | updatedAt: 2026-10-02T20:30:00.000Z |
| 345 | - id: 14 | 345 | - id: 14 |
| 346 | - title: "Review, commit, merge" | 346 | + title: Review, commit, merge |
| 347 | state: open | 347 | state: open |
| 348 | priority: none | 348 | priority: none |
| 349 | author: | 349 | author: |
modified
.tickets/issues/0067-enable-disable-reasoning-mode.yaml +187 -5 | @@ -6,8 +6,190 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-02T06:09:42.599Z |
| 9 | -updatedAt: 2026-10-02T06:09:42.599Z | |
| 10 | -labels: [] | |
| 11 | -body: "" | |
| 12 | -tasks: [] | |
| 13 | -comments: [] | |
| 9 | +updatedAt: 2026-10-06T14:00:00.000Z | |
| 10 | +labels: | |
| 11 | + - kind::feature | |
| 12 | +related: | |
| 13 | + - 62 | |
| 14 | +body: | | |
| 15 | + Question (user, 2026-10-06): can mm turn a model's reasoning mode on or | |
| 16 | + off? | |
| 17 | + | |
| 18 | + Answer as of 2026-10-06 (branch feature/yolo, code verified): | |
| 19 | + | |
| 20 | + 1. HIDE it: yes. `showThinking: false` hides the reasoning in the three | |
| 21 | + front ends. The model still reasons (same time, same tokens): only | |
| 22 | + the display changes. | |
| 23 | + | |
| 24 | + 2. TURN IT OFF for the /compact summary only: done automatically, per | |
| 25 | + provider (`thinkingOff`, internal/engine/openai_compat.go): | |
| 26 | + dmr / llamacpp / llmman -> `chat_template_kwargs: {"enable_thinking": false}`, | |
| 27 | + ollama -> `reasoning_effort: "none"` (ticket 62: Ollama ignores | |
| 28 | + chat_template_kwargs). Not configurable, never applied to normal turns. | |
| 29 | + | |
| 30 | + 3. TURN IT OFF for every turn through `sampling`: only half works. | |
| 31 | + - `sampling.reasoning_effort: none` reaches the server (Ollama should | |
| 32 | + obey it; not verified live on a normal turn). | |
| 33 | + - `sampling.chat_template_kwargs: {enable_thinking: false}` is | |
| 34 | + SILENTLY DROPPED before the request leaves mm, so it is impossible | |
| 35 | + from the config for dmr / llamacpp / llmman, the servers that need | |
| 36 | + exactly that field. | |
| 37 | + | |
| 38 | + ## Why `chat_template_kwargs` is dropped | |
| 39 | + | |
| 40 | + `chat_template_kwargs` is not an OpenAI API field: it is a llama.cpp | |
| 41 | + extension (llama-server passes it to the model's Jinja chat template, | |
| 42 | + where `enable_thinking` switches Qwen3-style thinking off). DMR and | |
| 43 | + llmman run llama-server underneath, so they expect it too. | |
| 44 | + | |
| 45 | + The `sampling` map does not go to the server as is. Its road: | |
| 46 | + | |
| 47 | + 1. internal/engine/engine.go:353 hands it to Genkit: | |
| 48 | + `ai.WithConfig(config.Cfg.Sampling)`. | |
| 49 | + 2. Genkit's compat_oai plugin (plugins/compat_oai/generate.go:142, | |
| 50 | + `WithConfig`) converts the map into the TYPED request struct of | |
| 51 | + openai-go: `base.MapToStruct[openai.ChatCompletionNewParams](cfg)`. | |
| 52 | + 3. `MapToStruct` (genkit internal/base/json.go:183) is a JSON round trip: | |
| 53 | + `json.Marshal(map)` then `json.Unmarshal` into the struct. | |
| 54 | + 4. `ChatCompletionNewParams` has a field for every OpenAI parameter — | |
| 55 | + `temperature`, `top_p`, `max_tokens`, `parallel_tool_calls`, | |
| 56 | + `reasoning_effort` … — and NONE for `chat_template_kwargs`. | |
| 57 | + `json.Unmarshal` ignores keys that match no field: the key is gone. | |
| 58 | + 5. The HTTP body is then serialised FROM THE STRUCT, so the server never | |
| 59 | + sees it. | |
| 60 | + | |
| 61 | + Measured with a round trip in the module (openai-go v1.8.2): | |
| 62 | + input `{"temperature":0, "reasoning_effort":"none", | |
| 63 | + "chat_template_kwargs":{"enable_thinking":false}}` | |
| 64 | + output `{"temperature":0,"reasoning_effort":"none"}`. | |
| 65 | + | |
| 66 | + Same reason the summary path does NOT use `sampling`: mm adds the field | |
| 67 | + in its own openai-go middleware (`streamOptions` -> `withoutReasoning`, | |
| 68 | + internal/engine/usage.go:83 and :137), which edits the raw HTTP body | |
| 69 | + AFTER serialisation, where nothing can drop it any more. | |
| 70 | + | |
| 71 | + Workarounds today (no code change): server side — | |
| 72 | + `llama-server --reasoning-budget 0` (or `--chat-template-kwargs | |
| 73 | + '{"enable_thinking":false}'` on recent builds — neither flag verified | |
| 74 | + in this sandbox), or a model without a thinking mode. | |
| 75 | + | |
| 76 | + ## Proposal | |
| 77 | + | |
| 78 | + A config key `thinking: true|false` (default true, override | |
| 79 | + `AGENT_THINKING`), applied by the SAME middleware to every request when | |
| 80 | + false: the provider's own way (`thinkingOff`), so it works on | |
| 81 | + dmr/llamacpp/llmman (chat_template_kwargs) and ollama (reasoning_effort). | |
| 82 | + A request that already carries the field keeps it (rule already in | |
| 83 | + `withoutReasoning`). Optional: `/think on|off` to switch during a session. | |
| 84 | +tasks: | |
| 85 | + - id: 1 | |
| 86 | + title: "Decide: key name (`thinking`?), env override, and whether `/think on|off` is wanted" | |
| 87 | + state: open | |
| 88 | + priority: none | |
| 89 | + author: | |
| 90 | + name: k33g | |
| 91 | + email: ph.charriere@gmail.com | |
| 92 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 93 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 94 | + - id: 2 | |
| 95 | + title: "Failing tests first: with thinking off, every request body carries the provider's field (template / effort); unknown provider = unchanged" | |
| 96 | + state: open | |
| 97 | + priority: none | |
| 98 | + author: | |
| 99 | + name: k33g | |
| 100 | + email: ph.charriere@gmail.com | |
| 101 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 102 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 103 | + - id: 3 | |
| 104 | + title: "Config key + AGENT_THINKING; engine: mark every request (not only summaries) with noThinkKey when off" | |
| 105 | + state: open | |
| 106 | + priority: none | |
| 107 | + author: | |
| 108 | + name: k33g | |
| 109 | + email: ph.charriere@gmail.com | |
| 110 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 111 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 112 | + - id: 4 | |
| 113 | + title: "Banner shows `thinking: off`; `showThinking` stays a display setting" | |
| 114 | + state: open | |
| 115 | + priority: none | |
| 116 | + author: | |
| 117 | + name: k33g | |
| 118 | + email: ph.charriere@gmail.com | |
| 119 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 120 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 121 | + - id: 5 | |
| 122 | + title: "Live check per provider: DMR + llmman (chat_template_kwargs), Ollama (reasoning_effort none on a normal turn)" | |
| 123 | + state: open | |
| 124 | + priority: none | |
| 125 | + author: | |
| 126 | + name: k33g | |
| 127 | + email: ph.charriere@gmail.com | |
| 128 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 129 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 130 | + - id: 6 | |
| 131 | + title: "Docs EN+FR: reference configuration, how-to, explanation/thinking-models (why sampling cannot do it)" | |
| 132 | + state: open | |
| 133 | + priority: none | |
| 134 | + author: | |
| 135 | + name: k33g | |
| 136 | + email: ph.charriere@gmail.com | |
| 137 | + createdAt: 2026-10-06T13:00:00.000Z | |
| 138 | + updatedAt: 2026-10-06T13:00:00.000Z | |
| 139 | +comments: | |
| 140 | + - id: 1 | |
| 141 | + author: | |
| 142 | + name: claude | |
| 143 | + email: noreply@anthropic.com | |
| 144 | + createdAt: 2026-10-06T14:00:00.000Z | |
| 145 | + body: | | |
| 146 | + **Correction: a newer Genkit fixes the "sampling" road (verified in a | |
| 147 | + scratch copy, the repo is unchanged — still genkit v1.10.0).** | |
| 148 | + | |
| 149 | + Latest Genkit Go is v1.13.1 (2026-09-03). Since **v1.12.0**, | |
| 150 | + compat_oai's `WithConfig` keeps the keys `ChatCompletionNewParams` | |
| 151 | + does not know and sends them as JSON extras (`SetExtraFields`, | |
| 152 | + plugins/compat_oai/generate.go ~l.231: "the OpenAI SDK silently | |
| 153 | + ignores provider-specific fields while unmarshaling, so retain them | |
| 154 | + as JSON extras"). v1.11.0 does not have it. | |
| 155 | + | |
| 156 | + BUT bumping alone is not enough — found by testing: | |
| 157 | + 1. In v1.13.1 `OpenAICompatible.DefineModel` is DEPRECATED and | |
| 158 | + returns an UNREGISTERED model. mm discards its result | |
| 159 | + (internal/engine/openai_compat.go:189), so the model actually used | |
| 160 | + is the one the plugin resolves on the fly (`ResolveAction` -> | |
| 161 | + `newSDKModel`), whose config schema is the strict reflected SDK | |
| 162 | + schema: `chat_template_kwargs` is then REJECTED at the action | |
| 163 | + boundary — "config: Additional property chat_template_kwargs is | |
| 164 | + not allowed" (and every unknown sampling key would fail the | |
| 165 | + request, where v1.10.0 dropped it silently). | |
| 166 | + `ModelOptions.ConfigSchema` does not help: it is set on the model | |
| 167 | + nobody registered. | |
| 168 | + 2. Fix: register it — `genkit.RegisterAction(g, | |
| 169 | + client.DefineModel(...).(*ai.ModelAction))`. DefineModel's model | |
| 170 | + takes its config untyped, no validation, unknown keys ride to the | |
| 171 | + wire. (The non-deprecated `NewModel` validates against the strict | |
| 172 | + schema; it would need an explicit permissive `ConfigSchema`.) | |
| 173 | + | |
| 174 | + Measured (recording server): v1.13.1 + RegisterAction sends | |
| 175 | + `"chat_template_kwargs": {"enable_thinking": false}` with mm's own | |
| 176 | + middleware fields (return_progress, stream_options) intact. Live on | |
| 177 | + DMR qwen3.5-4b, `-p "What is 17*23?"` with | |
| 178 | + `sampling.chat_template_kwargs.enable_thinking: false`: current mm = | |
| 179 | + 4 s, a 💭 reasoning block, then 391; patched mm = under 1 s, no | |
| 180 | + reasoning, 391. | |
| 181 | + | |
| 182 | + Upgrade side effects seen: `go get` + `go mod tidy` also bump | |
| 183 | + dotprompt, invopop/jsonschema v0.14.0, goccy/go-yaml, jsonparser and | |
| 184 | + add go.yaml.in/yaml/v4; `go test ./...` green (scratch copy; the | |
| 185 | + skills test failed only because the copy had no shipped YAML); | |
| 186 | + Genkit now logs `INFO Genkit initialized …` on stderr at start-up | |
| 187 | + (to silence). Not re-checked after the bump: reasoning.go's tap and | |
| 188 | + toolargs.go's workarounds (v1.13.1 reads reasoning_content itself | |
| 189 | + now — generate.go ~l.548), the ollama/llmman paths. | |
| 190 | + | |
| 191 | + Consequence for the proposal: with the bump, `sampling` alone can | |
| 192 | + carry `chat_template_kwargs` (llama.cpp family) or | |
| 193 | + `reasoning_effort` (Ollama) — per-server spelling left to the user. | |
| 194 | + A `thinking: false` key is still worth it for one spelling across | |
| 195 | + providers (it would reuse `withoutReasoning`) and for `/think`. | |
| @@ -6,8 +6,190 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-02T06:09:42.599Z | 8 | createdAt: 2026-10-02T06:09:42.599Z |
| 9 | -updatedAt: 2026-10-02T06:09:42.599Z | 9 | +updatedAt: 2026-10-06T14:00:00.000Z |
| 10 | -labels: [] | 10 | +labels: |
| 11 | -body: "" | 11 | + - kind::feature |
| 12 | -tasks: [] | 12 | +related: |
| 13 | -comments: [] | 13 | + - 62 |
| 14 | +body: | | ||
| 15 | + Question (user, 2026-10-06): can mm turn a model's reasoning mode on or | ||
| 16 | + off? | ||
| 17 | + | ||
| 18 | + Answer as of 2026-10-06 (branch feature/yolo, code verified): | ||
| 19 | + | ||
| 20 | + 1. HIDE it: yes. `showThinking: false` hides the reasoning in the three | ||
| 21 | + front ends. The model still reasons (same time, same tokens): only | ||
| 22 | + the display changes. | ||
| 23 | + | ||
| 24 | + 2. TURN IT OFF for the /compact summary only: done automatically, per | ||
| 25 | + provider (`thinkingOff`, internal/engine/openai_compat.go): | ||
| 26 | + dmr / llamacpp / llmman -> `chat_template_kwargs: {"enable_thinking": false}`, | ||
| 27 | + ollama -> `reasoning_effort: "none"` (ticket 62: Ollama ignores | ||
| 28 | + chat_template_kwargs). Not configurable, never applied to normal turns. | ||
| 29 | + | ||
| 30 | + 3. TURN IT OFF for every turn through `sampling`: only half works. | ||
| 31 | + - `sampling.reasoning_effort: none` reaches the server (Ollama should | ||
| 32 | + obey it; not verified live on a normal turn). | ||
| 33 | + - `sampling.chat_template_kwargs: {enable_thinking: false}` is | ||
| 34 | + SILENTLY DROPPED before the request leaves mm, so it is impossible | ||
| 35 | + from the config for dmr / llamacpp / llmman, the servers that need | ||
| 36 | + exactly that field. | ||
| 37 | + | ||
| 38 | + ## Why `chat_template_kwargs` is dropped | ||
| 39 | + | ||
| 40 | + `chat_template_kwargs` is not an OpenAI API field: it is a llama.cpp | ||
| 41 | + extension (llama-server passes it to the model's Jinja chat template, | ||
| 42 | + where `enable_thinking` switches Qwen3-style thinking off). DMR and | ||
| 43 | + llmman run llama-server underneath, so they expect it too. | ||
| 44 | + | ||
| 45 | + The `sampling` map does not go to the server as is. Its road: | ||
| 46 | + | ||
| 47 | + 1. internal/engine/engine.go:353 hands it to Genkit: | ||
| 48 | + `ai.WithConfig(config.Cfg.Sampling)`. | ||
| 49 | + 2. Genkit's compat_oai plugin (plugins/compat_oai/generate.go:142, | ||
| 50 | + `WithConfig`) converts the map into the TYPED request struct of | ||
| 51 | + openai-go: `base.MapToStruct[openai.ChatCompletionNewParams](cfg)`. | ||
| 52 | + 3. `MapToStruct` (genkit internal/base/json.go:183) is a JSON round trip: | ||
| 53 | + `json.Marshal(map)` then `json.Unmarshal` into the struct. | ||
| 54 | + 4. `ChatCompletionNewParams` has a field for every OpenAI parameter — | ||
| 55 | + `temperature`, `top_p`, `max_tokens`, `parallel_tool_calls`, | ||
| 56 | + `reasoning_effort` … — and NONE for `chat_template_kwargs`. | ||
| 57 | + `json.Unmarshal` ignores keys that match no field: the key is gone. | ||
| 58 | + 5. The HTTP body is then serialised FROM THE STRUCT, so the server never | ||
| 59 | + sees it. | ||
| 60 | + | ||
| 61 | + Measured with a round trip in the module (openai-go v1.8.2): | ||
| 62 | + input `{"temperature":0, "reasoning_effort":"none", | ||
| 63 | + "chat_template_kwargs":{"enable_thinking":false}}` | ||
| 64 | + output `{"temperature":0,"reasoning_effort":"none"}`. | ||
| 65 | + | ||
| 66 | + Same reason the summary path does NOT use `sampling`: mm adds the field | ||
| 67 | + in its own openai-go middleware (`streamOptions` -> `withoutReasoning`, | ||
| 68 | + internal/engine/usage.go:83 and :137), which edits the raw HTTP body | ||
| 69 | + AFTER serialisation, where nothing can drop it any more. | ||
| 70 | + | ||
| 71 | + Workarounds today (no code change): server side — | ||
| 72 | + `llama-server --reasoning-budget 0` (or `--chat-template-kwargs | ||
| 73 | + '{"enable_thinking":false}'` on recent builds — neither flag verified | ||
| 74 | + in this sandbox), or a model without a thinking mode. | ||
| 75 | + | ||
| 76 | + ## Proposal | ||
| 77 | + | ||
| 78 | + A config key `thinking: true|false` (default true, override | ||
| 79 | + `AGENT_THINKING`), applied by the SAME middleware to every request when | ||
| 80 | + false: the provider's own way (`thinkingOff`), so it works on | ||
| 81 | + dmr/llamacpp/llmman (chat_template_kwargs) and ollama (reasoning_effort). | ||
| 82 | + A request that already carries the field keeps it (rule already in | ||
| 83 | + `withoutReasoning`). Optional: `/think on|off` to switch during a session. | ||
| 84 | +tasks: | ||
| 85 | + - id: 1 | ||
| 86 | + title: "Decide: key name (`thinking`?), env override, and whether `/think on|off` is wanted" | ||
| 87 | + state: open | ||
| 88 | + priority: none | ||
| 89 | + author: | ||
| 90 | + name: k33g | ||
| 91 | + email: ph.charriere@gmail.com | ||
| 92 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 93 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 94 | + - id: 2 | ||
| 95 | + title: "Failing tests first: with thinking off, every request body carries the provider's field (template / effort); unknown provider = unchanged" | ||
| 96 | + state: open | ||
| 97 | + priority: none | ||
| 98 | + author: | ||
| 99 | + name: k33g | ||
| 100 | + email: ph.charriere@gmail.com | ||
| 101 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 102 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 103 | + - id: 3 | ||
| 104 | + title: "Config key + AGENT_THINKING; engine: mark every request (not only summaries) with noThinkKey when off" | ||
| 105 | + state: open | ||
| 106 | + priority: none | ||
| 107 | + author: | ||
| 108 | + name: k33g | ||
| 109 | + email: ph.charriere@gmail.com | ||
| 110 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 111 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 112 | + - id: 4 | ||
| 113 | + title: "Banner shows `thinking: off`; `showThinking` stays a display setting" | ||
| 114 | + state: open | ||
| 115 | + priority: none | ||
| 116 | + author: | ||
| 117 | + name: k33g | ||
| 118 | + email: ph.charriere@gmail.com | ||
| 119 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 120 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 121 | + - id: 5 | ||
| 122 | + title: "Live check per provider: DMR + llmman (chat_template_kwargs), Ollama (reasoning_effort none on a normal turn)" | ||
| 123 | + state: open | ||
| 124 | + priority: none | ||
| 125 | + author: | ||
| 126 | + name: k33g | ||
| 127 | + email: ph.charriere@gmail.com | ||
| 128 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 129 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 130 | + - id: 6 | ||
| 131 | + title: "Docs EN+FR: reference configuration, how-to, explanation/thinking-models (why sampling cannot do it)" | ||
| 132 | + state: open | ||
| 133 | + priority: none | ||
| 134 | + author: | ||
| 135 | + name: k33g | ||
| 136 | + email: ph.charriere@gmail.com | ||
| 137 | + createdAt: 2026-10-06T13:00:00.000Z | ||
| 138 | + updatedAt: 2026-10-06T13:00:00.000Z | ||
| 139 | +comments: | ||
| 140 | + - id: 1 | ||
| 141 | + author: | ||
| 142 | + name: claude | ||
| 143 | + email: noreply@anthropic.com | ||
| 144 | + createdAt: 2026-10-06T14:00:00.000Z | ||
| 145 | + body: | | ||
| 146 | + **Correction: a newer Genkit fixes the "sampling" road (verified in a | ||
| 147 | + scratch copy, the repo is unchanged — still genkit v1.10.0).** | ||
| 148 | + | ||
| 149 | + Latest Genkit Go is v1.13.1 (2026-09-03). Since **v1.12.0**, | ||
| 150 | + compat_oai's `WithConfig` keeps the keys `ChatCompletionNewParams` | ||
| 151 | + does not know and sends them as JSON extras (`SetExtraFields`, | ||
| 152 | + plugins/compat_oai/generate.go ~l.231: "the OpenAI SDK silently | ||
| 153 | + ignores provider-specific fields while unmarshaling, so retain them | ||
| 154 | + as JSON extras"). v1.11.0 does not have it. | ||
| 155 | + | ||
| 156 | + BUT bumping alone is not enough — found by testing: | ||
| 157 | + 1. In v1.13.1 `OpenAICompatible.DefineModel` is DEPRECATED and | ||
| 158 | + returns an UNREGISTERED model. mm discards its result | ||
| 159 | + (internal/engine/openai_compat.go:189), so the model actually used | ||
| 160 | + is the one the plugin resolves on the fly (`ResolveAction` -> | ||
| 161 | + `newSDKModel`), whose config schema is the strict reflected SDK | ||
| 162 | + schema: `chat_template_kwargs` is then REJECTED at the action | ||
| 163 | + boundary — "config: Additional property chat_template_kwargs is | ||
| 164 | + not allowed" (and every unknown sampling key would fail the | ||
| 165 | + request, where v1.10.0 dropped it silently). | ||
| 166 | + `ModelOptions.ConfigSchema` does not help: it is set on the model | ||
| 167 | + nobody registered. | ||
| 168 | + 2. Fix: register it — `genkit.RegisterAction(g, | ||
| 169 | + client.DefineModel(...).(*ai.ModelAction))`. DefineModel's model | ||
| 170 | + takes its config untyped, no validation, unknown keys ride to the | ||
| 171 | + wire. (The non-deprecated `NewModel` validates against the strict | ||
| 172 | + schema; it would need an explicit permissive `ConfigSchema`.) | ||
| 173 | + | ||
| 174 | + Measured (recording server): v1.13.1 + RegisterAction sends | ||
| 175 | + `"chat_template_kwargs": {"enable_thinking": false}` with mm's own | ||
| 176 | + middleware fields (return_progress, stream_options) intact. Live on | ||
| 177 | + DMR qwen3.5-4b, `-p "What is 17*23?"` with | ||
| 178 | + `sampling.chat_template_kwargs.enable_thinking: false`: current mm = | ||
| 179 | + 4 s, a 💭 reasoning block, then 391; patched mm = under 1 s, no | ||
| 180 | + reasoning, 391. | ||
| 181 | + | ||
| 182 | + Upgrade side effects seen: `go get` + `go mod tidy` also bump | ||
| 183 | + dotprompt, invopop/jsonschema v0.14.0, goccy/go-yaml, jsonparser and | ||
| 184 | + add go.yaml.in/yaml/v4; `go test ./...` green (scratch copy; the | ||
| 185 | + skills test failed only because the copy had no shipped YAML); | ||
| 186 | + Genkit now logs `INFO Genkit initialized …` on stderr at start-up | ||
| 187 | + (to silence). Not re-checked after the bump: reasoning.go's tap and | ||
| 188 | + toolargs.go's workarounds (v1.13.1 reads reasoning_content itself | ||
| 189 | + now — generate.go ~l.548), the ollama/llmman paths. | ||
| 190 | + | ||
| 191 | + Consequence for the proposal: with the bump, `sampling` alone can | ||
| 192 | + carry `chat_template_kwargs` (llama.cpp family) or | ||
| 193 | + `reasoning_effort` (Ollama) — per-server spelling left to the user. | ||
| 194 | + A `thinking: false` key is still worth it for one spelling across | ||
| 195 | + providers (it would reuse `withoutReasoning`) and for `/think`. | ||
renamed
.tickets/issues/0073-mm-ask-ask-with-context-ask-another-agent-from-a.yaml +9 -9 Large diff collapsed to keep the page fast — load it when you need it.
modified
.tickets/issues/0074-memory-memgpt-hierarchic-memory.yaml +2 -1 | @@ -6,9 +6,10 @@ author: | ||
| 6 | 6 | name: k33g |
| 7 | 7 | email: ph.charriere@gmail.com |
| 8 | 8 | createdAt: 2026-10-04T15:12:36.643Z |
| 9 | -updatedAt: 2026-10-04T15:12:50.958Z | |
| 9 | +updatedAt: 2026-10-06T03:59:13.083Z | |
| 10 | 10 | labels: |
| 11 | 11 | - priority::high |
| 12 | +epic: Agent Memory | |
| 12 | 13 | body: "" |
| 13 | 14 | tasks: [] |
| 14 | 15 | comments: [] |
| @@ -6,9 +6,10 @@ author: | |||
| 6 | name: k33g | 6 | name: k33g |
| 7 | email: ph.charriere@gmail.com | 7 | email: ph.charriere@gmail.com |
| 8 | createdAt: 2026-10-04T15:12:36.643Z | 8 | createdAt: 2026-10-04T15:12:36.643Z |
| 9 | -updatedAt: 2026-10-04T15:12:50.958Z | 9 | +updatedAt: 2026-10-06T03:59:13.083Z |
| 10 | labels: | 10 | labels: |
| 11 | - priority::high | 11 | - priority::high |
| 12 | +epic: Agent Memory | ||
| 12 | body: "" | 13 | body: "" |
| 13 | tasks: [] | 14 | tasks: [] |
| 14 | comments: [] | 15 | comments: [] |
added
.tickets/issues/0075-add-gronk-provider.yaml +14 -0 | new file mode 100644 | ||
| @@ -0,0 +1,14 @@ | ||
| 1 | +# Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | |
| 2 | +id: 75 | |
| 3 | +title: Add Gronk provider | |
| 4 | +state: open | |
| 5 | +author: | |
| 6 | + name: k33g | |
| 7 | + email: ph.charriere@gmail.com | |
| 8 | +createdAt: 2026-10-06T03:58:37.611Z | |
| 9 | +updatedAt: 2026-10-06T04:00:38.851Z | |
| 10 | +labels: [] | |
| 11 | +epic: Providers (LLM Engine) | |
| 12 | +body: "" | |
| 13 | +tasks: [] | |
| 14 | +comments: [] | |
| new file mode 100644 | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | +# Managed by IssueSpec. Hand edits are welcome; keep the schema valid. | ||
| 2 | +id: 75 | ||
| 3 | +title: Add Gronk provider | ||
| 4 | +state: open | ||
| 5 | +author: | ||
| 6 | + name: k33g | ||
| 7 | + email: ph.charriere@gmail.com | ||
| 8 | +createdAt: 2026-10-06T03:58:37.611Z | ||
| 9 | +updatedAt: 2026-10-06T04:00:38.851Z | ||
| 10 | +labels: [] | ||
| 11 | +epic: Providers (LLM Engine) | ||
| 12 | +body: "" | ||
| 13 | +tasks: [] | ||
| 14 | +comments: [] | ||
modified
README.md +1 -1 | @@ -55,7 +55,7 @@ Type a question at the `>` prompt. Each command the model runs is shown with its | ||
| 55 | 55 | mm -tui |
| 56 | 56 | ``` |
| 57 | 57 | |
| 58 | -The conversation above, a box to type in below. **Enter** sends, **Ctrl-J** adds a line, **Esc** cancels a turn, **F1** lists the keys. With `permissions: ask` in the YAML, the agent asks before running a command or writing a file. | |
| 58 | +The conversation above, a box to type in below. **Enter** sends, **Ctrl-J** adds a line, **Esc** cancels a turn, **F1** lists the keys. With `yolo: false` in the YAML, the agent asks before running a command or writing a file — in the window, the line mode and an editor alike (`yolo: true`, the default, runs them unasked). | |
| 59 | 59 | |
| 60 | 60 | ### 3. Inside an editor (ACP) |
| 61 | 61 | |
| @@ -55,7 +55,7 @@ Type a question at the `>` prompt. Each command the model runs is shown with its | |||
| 55 | mm -tui | 55 | mm -tui |
| 56 | ``` | 56 | ``` |
| 57 | 57 | ||
| 58 | -The conversation above, a box to type in below. **Enter** sends, **Ctrl-J** adds a line, **Esc** cancels a turn, **F1** lists the keys. With `permissions: ask` in the YAML, the agent asks before running a command or writing a file. | 58 | +The conversation above, a box to type in below. **Enter** sends, **Ctrl-J** adds a line, **Esc** cancels a turn, **F1** lists the keys. With `yolo: false` in the YAML, the agent asks before running a command or writing a file — in the window, the line mode and an editor alike (`yolo: true`, the default, runs them unasked). |
| 59 | 59 | ||
| 60 | ### 3. Inside an editor (ACP) | 60 | ### 3. Inside an editor (ACP) |
| 61 | 61 | ||
modified
agent.dmr.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
agent.llamacpp.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
agent.llmman.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
agent.lsp.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
agent.mcp-example.yaml +5 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
config.samples/agent.dmr.gemma.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
config.samples/agent.dmr.gpt-oss.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
config.samples/agent.dmr.qwen3.6.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
config.samples/agent.llamacpp.ornith.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
config.samples/agent.llamacpp.qwen3.8.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo-llmman/agent.jan-nano.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo-llmman/agent.llmman.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo-llmman/agent.lucy-reviewer.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo-llmman/agent.lucy.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo-ollama/agent.ollama.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.dmr.2.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.dmr.github-oauth.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.dmr.mcp.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.dmr.sbx.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.dmr.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
demo/agent.lsp.yaml +8 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/diagrams/packages.drawio +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/README.md +2 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/explanation/architecture.md +2 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/explanation/asking-another-agent.md +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/explanation/lsp-tool.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/explanation/mcp-architecture.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
added
docs/en/explanation/yolo-and-permissions.md +51 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/how-to/ask-another-agent.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
added
docs/en/how-to/confirm-tool-calls.md +57 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/how-to/fetch-a-web-page.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/how-to/use-from-an-editor.md +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/how-to/use-the-window-mode.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/acp.md +5 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/cli.md +14 -5 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/configuration.md +5 -3 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/mcp-configuration.md +2 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/slash-commands.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/en/reference/tools.md +4 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/README.md +2 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/explanation/architecture.md +2 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/explanation/asking-another-agent.md +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/explanation/lsp-tool.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/explanation/mcp-architecture.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
added
docs/fr/explanation/yolo-and-permissions.md +51 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/how-to/ask-another-agent.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
added
docs/fr/how-to/confirm-tool-calls.md +57 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/how-to/fetch-a-web-page.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/how-to/use-from-an-editor.md +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/how-to/use-the-window-mode.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/acp.md +5 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/cli.md +14 -5 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/configuration.md +5 -3 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/mcp-configuration.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/slash-commands.md +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
docs/fr/reference/tools.md +4 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/acp/acp.go +6 -6 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/acp/acp_test.go +14 -6 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/acp/persist.go +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/acp/persist_test.go +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/acp/sink.go +33 -18 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/acp/sink_test.go +33 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/agent/agent.go +19 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/agent/ask.go +16 -5 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/agent/prompt.go +119 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/agent/prompt_test.go +101 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/cli.go +11 -3 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/cli_test.go +14 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/client.go +8 -5 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/env.go +6 -4 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/env_test.go +5 -4 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/ask/pool_test.go +28 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/config/config.go +58 -9 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/config/config_test.go +5 -5 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/config/yolo_test.go +97 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/consent/consent.go +196 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/consent/consent_test.go +140 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/consent/example_test.go +30 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/mcp/consent_test.go +31 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/mcp/tool_wrapper.go +57 -53 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/tools/consent.go +25 -0 Large diff collapsed to keep the page fast — load it when you need it.
added
internal/tools/consent_test.go +78 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/fetchcontent.go +7 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/fetchcontent_test.go +1 -0 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/files.go +11 -3 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/lsp.go +5 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/plan.go +27 -16 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tools/tools.go +5 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/draw.go +2 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/events.go +5 -2 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/sink.go +12 -19 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/turn.go +10 -10 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/turn_test.go +19 -13 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/view.go +10 -7 Large diff collapsed to keep the page fast — load it when you need it.
modified
internal/tui/view_test.go +1 -1 Large diff collapsed to keep the page fast — load it when you need it.
modified
main.go +23 -13 Large diff collapsed to keep the page fast — load it when you need it.
added
main_test.go +22 -0 Large diff collapsed to keep the page fast — load it when you need it.