@duckmind/dm-darwin-x64 0.43.8 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dm +0 -0
- package/extensions/.dm-extensions.json +147 -218
- package/extensions/dm-9router-ext/package.json +0 -6
- package/extensions/dm-9router-ext/src/index.js +1 -1
- package/extensions/dm-ask-user/package.json +0 -4
- package/extensions/dm-caveman/LICENSE +21 -0
- package/extensions/dm-caveman/extensions/caveman.js +29 -0
- package/extensions/dm-caveman/package.json +20 -0
- package/extensions/dm-cli-anything/index.js +5 -5
- package/extensions/dm-cli-anything/package.json +0 -7
- package/extensions/dm-cli-anything/skills/cli-anything/SKILL.md +1 -3
- package/extensions/dm-context/package.json +0 -1
- package/extensions/dm-cua/package.json +0 -7
- package/extensions/dm-fff/package.json +0 -6
- package/extensions/dm-goal/package.json +0 -8
- package/extensions/dm-grill-me/index.js +2 -2
- package/extensions/dm-grill-me/package.json +0 -7
- package/extensions/dm-image2/package.json +0 -8
- package/extensions/dm-subagents/package.json +0 -11
- package/extensions/dm-tasks/package.json +0 -7
- package/extensions/dm-usage/package.json +0 -7
- package/extensions/greedysearch-dm/bin/cdp-greedy.mjs +1 -8
- package/extensions/greedysearch-dm/bin/gschrome.mjs +3 -3
- package/extensions/greedysearch-dm/bin/launch-visible.mjs +3 -3
- package/extensions/greedysearch-dm/bin/launch.mjs +4 -4
- package/extensions/greedysearch-dm/bin/search.mjs +106 -106
- package/extensions/greedysearch-dm/extractors/consensus.mjs +35 -35
- package/extensions/greedysearch-dm/extractors/gemini.mjs +38 -38
- package/extensions/greedysearch-dm/extractors/logically.mjs +35 -35
- package/extensions/greedysearch-dm/package.json +0 -10
- package/extensions/greedysearch-dm/src/search/chrome.mjs +23 -23
- package/extensions/greedysearch-dm/src/search/fetch-source.mjs +35 -35
- package/extensions/greedysearch-dm/src/search/research.mjs +77 -77
- package/extensions/greedysearch-dm/src/search/synthesis-runner.mjs +10 -10
- package/package.json +1 -1
- package/extensions/dm-9router-ext/README.md +0 -142
- package/extensions/dm-9router-ext/tsconfig.json +0 -17
- package/extensions/dm-ask-user/README.md +0 -226
- package/extensions/dm-cli-anything/README.md +0 -33
- package/extensions/dm-cli-anything/vendor/UPSTREAM.md +0 -14
- package/extensions/dm-context/AGENTS.md +0 -41
- package/extensions/dm-context/README.md +0 -18
- package/extensions/dm-context/tsconfig.json +0 -16
- package/extensions/dm-cua/README.md +0 -24
- package/extensions/dm-fff/README.md +0 -36
- package/extensions/dm-fff/tsconfig.json +0 -13
- package/extensions/dm-goal/CHANGELOG.md +0 -12
- package/extensions/dm-goal/README.md +0 -29
- package/extensions/dm-goal/tsconfig.json +0 -15
- package/extensions/dm-grill-me/DESIGN.md +0 -301
- package/extensions/dm-grill-me/README.md +0 -82
- package/extensions/dm-grill-me/tsconfig.json +0 -17
- package/extensions/dm-image2/README.md +0 -33
- package/extensions/dm-subagents/CHANGELOG.md +0 -1211
- package/extensions/dm-subagents/README.md +0 -29
- package/extensions/dm-subagents/biome.json +0 -26
- package/extensions/dm-subagents/tsconfig.json +0 -18
- package/extensions/dm-tasks/README.md +0 -30
- package/extensions/dm-tasks/biome.json +0 -26
- package/extensions/dm-tasks/tsconfig.json +0 -14
- package/extensions/dm-usage/README.md +0 -29
- package/extensions/greedysearch-dm/README.md +0 -222
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# dm-cua
|
|
2
|
-
|
|
3
|
-
Browser-first Computer Use extension for DM.
|
|
4
|
-
|
|
5
|
-
What it does:
|
|
6
|
-
|
|
7
|
-
- launches or reuses a dedicated browser profile via the bundled `greedysearch-dm` CDP helpers
|
|
8
|
-
- bootstraps a blank tab on fresh empty profiles so browser automation does not fail on the first run
|
|
9
|
-
- exposes one tool, `browser_cua`, for list / navigate / snapshot / screenshot / click / type / evaluate / stop
|
|
10
|
-
- stores browser screenshots under `~/.dm/agent/cua/screenshots/` by default
|
|
11
|
-
|
|
12
|
-
Browser selection:
|
|
13
|
-
|
|
14
|
-
- default: Chrome/Chromium auto-detected by `greedysearch-dm`
|
|
15
|
-
- opt-in CloakBrowser trial: set `DM_CUA_BROWSER=cloak` and one of `DM_CUA_BROWSER_PATH`, `DM_CUA_CLOAK_PATH`, `CLOAKBROWSER_BINARY_PATH`, or `CHROME_PATH` to the CloakBrowser Chromium executable
|
|
16
|
-
- DM does not bundle or auto-download the compiled CloakBrowser binary; install/pre-download it outside DM first because upstream permits use but not redistribution
|
|
17
|
-
- Current `browser_cua` actions still use CDP commands through `greedysearch-dm`; full CloakBrowser stealth parity would require a future Playwright-backed CUA lane.
|
|
18
|
-
|
|
19
|
-
What it does **not** do yet:
|
|
20
|
-
|
|
21
|
-
- it does not replace the macOS `computer-use` Codex plugin lane
|
|
22
|
-
- it does not replace Android `adbridge`
|
|
23
|
-
|
|
24
|
-
Those broader lanes are still tracked separately. This extension closes the most actionable CUA gap from the current DM snapshot: a first-class browser lane that works from a fresh dedicated browser profile instead of overloading `coding_task`.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# dm-fff
|
|
2
|
-
|
|
3
|
-
Bundled DM extension that adds FFF-powered fuzzy file and content search.
|
|
4
|
-
|
|
5
|
-
Technical provenance: this package is synced from `dmtrKovalenko/fff` at commit `18f546a4fe8939d884b495a7d761f4905ad205a3`; the exact upstream package path is recorded in `extensions/.dm-extensions.json`. DM ships the adapted source as `dm-fff`.
|
|
6
|
-
|
|
7
|
-
## What it does
|
|
8
|
-
|
|
9
|
-
| Built-in tool | dm-fff replacement | Improvement |
|
|
10
|
-
|---|---|---|
|
|
11
|
-
| `find` | `fffind` | Fuzzy matching, frecency ranking, git-aware, pre-indexed |
|
|
12
|
-
| `grep` | `ffgrep` | SIMD-accelerated, frecency-ordered, mmap-cached, no subprocess |
|
|
13
|
-
| *(none)* | `fff-multi-grep` | OR-logic multi-pattern search via Aho-Corasick |
|
|
14
|
-
| `@` file autocomplete | FFF-backed autocomplete | Fuzzy ranking from FFF index/frecency |
|
|
15
|
-
|
|
16
|
-
## Tools
|
|
17
|
-
|
|
18
|
-
- `ffgrep` — search file contents with smart case, optional regex/literal mode, context, limit, and cursor pagination.
|
|
19
|
-
- `fffind` — fuzzy file name search with frecency ranking.
|
|
20
|
-
- `fff-multi-grep` — OR-logic multi-pattern content search when `DM_FFF_MULTIGREP=1`.
|
|
21
|
-
|
|
22
|
-
## Commands
|
|
23
|
-
|
|
24
|
-
- `/fff-mode` — show or set FFF mode: `tools-and-ui`, `tools-only`, or `override`.
|
|
25
|
-
- `/fff-health` — show FFF status.
|
|
26
|
-
- `/fff-rescan` — trigger a file rescan.
|
|
27
|
-
|
|
28
|
-
## Configuration
|
|
29
|
-
|
|
30
|
-
- `--fff-mode` / `DM_FFF_MODE`
|
|
31
|
-
- `--fff-frecency-db` / `FFF_FRECENCY_DB`
|
|
32
|
-
- `--fff-history-db` / `FFF_HISTORY_DB`
|
|
33
|
-
- `--fff-enable-root-scan` / `FFF_ENABLE_ROOT_SCAN`
|
|
34
|
-
- `DM_FFF_MULTIGREP=1` to enable `fff-multi-grep`.
|
|
35
|
-
|
|
36
|
-
No separate install step is required. Install `dm`; this extension is bundled.
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# dm-goal changelog
|
|
2
|
-
|
|
3
|
-
This managed bundled copy is generated by the DM rebrand pipeline from the pinned source recorded in `extensions/.dm-extensions.json`.
|
|
4
|
-
|
|
5
|
-
## DM integration
|
|
6
|
-
|
|
7
|
-
- Rebrands the package and user-facing copy to `dm-goal`.
|
|
8
|
-
- Tracks the pinned single-extension source path recorded in `extensions/.dm-extensions.json`.
|
|
9
|
-
- Keeps `/goal` plus the `goal_complete` completion tool.
|
|
10
|
-
- Stores goal state under the `goal-state` entry type and DM state file path.
|
|
11
|
-
- Rewrites hidden continuation markers to `dm-goal-continuation`.
|
|
12
|
-
- Uses installable DM runtime package aliases for local typecheck and test runs.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# dm-goal
|
|
2
|
-
|
|
3
|
-
Bundled DM extension that keeps a long-running objective active until the assistant proves it is complete.
|
|
4
|
-
|
|
5
|
-
## Included command surface
|
|
6
|
-
|
|
7
|
-
- `/goal`
|
|
8
|
-
- `/goal <objective>`
|
|
9
|
-
- `/goal status`
|
|
10
|
-
- `/goal pause`
|
|
11
|
-
- `/goal resume`
|
|
12
|
-
- `/goal clear`
|
|
13
|
-
- `/goal budget <tokens>`
|
|
14
|
-
|
|
15
|
-
## Included tools
|
|
16
|
-
|
|
17
|
-
- `goal_complete`
|
|
18
|
-
|
|
19
|
-
## Runtime notes
|
|
20
|
-
|
|
21
|
-
- Active goals add a hidden continuation prompt before each agent turn.
|
|
22
|
-
- The assistant must call `goal_complete` with concrete evidence before DM clears the goal.
|
|
23
|
-
- Goal state is stored in the DM coding-agent state directory, defaulting to `~/.dm/agent/dm-goal-state.json`.
|
|
24
|
-
- Set `DM_CODING_AGENT_DIR` to move that state file with the rest of the coding-agent runtime data.
|
|
25
|
-
- Hidden continuation prompts XML-escape the objective before embedding it in untrusted blocks.
|
|
26
|
-
|
|
27
|
-
## Bundled with dm
|
|
28
|
-
|
|
29
|
-
No separate install step is required. Install `dm`, then run `/goal` inside the TUI.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "NodeNext",
|
|
5
|
-
"moduleResolution": "NodeNext",
|
|
6
|
-
"strict": false,
|
|
7
|
-
"skipLibCheck": true,
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"allowSyntheticDefaultImports": true,
|
|
10
|
-
"resolveJsonModule": true,
|
|
11
|
-
"types": ["node"],
|
|
12
|
-
"noEmit": true
|
|
13
|
-
},
|
|
14
|
-
"include": ["src/**/*.ts", "test/**/*.ts"]
|
|
15
|
-
}
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
# Grill Me DM Extension Design
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Create a DM extension inspired by Claude's `grill-me` skill. The extension applies a Socratic, one-question-at-a-time planning process to reach shared understanding of a project, plan, idea, learning goal, or design.
|
|
6
|
-
|
|
7
|
-
The extension should be useful both for:
|
|
8
|
-
|
|
9
|
-
- beginners who do not yet know which dimensions should be explored, and
|
|
10
|
-
- expert users who want a planning/stress-test mode as an alternative to plan mode.
|
|
11
|
-
|
|
12
|
-
## Core Principles
|
|
13
|
-
|
|
14
|
-
1. **Shared understanding first**: the goal is not to immediately implement, but to converge on a clear, useful understanding of the user's intent.
|
|
15
|
-
2. **Thorough by default**: Grill Me uses one thorough, collaborative Socratic style that asks enough follow-up questions to resolve or intentionally defer major branches before readiness.
|
|
16
|
-
3. **Adaptive interview, hardcoded ending**: avoid fixed product/UX/architecture interview phases. Use adaptive dimensions such as objective, constraints, outcome mode, risks, tradeoffs, unknowns, and next steps. The final output-selection phase is the one mandatory hardcoded phase before stopping or producing outputs.
|
|
17
|
-
4. **Mostly one question at a time**: default pacing asks one focused question per assistant turn, with small grouped questions allowed only when inseparable.
|
|
18
|
-
5. **Alternatives included by default**: each grill question should include 2-5 concrete answer alternatives, including the assistant's recommended answer, and expose them through Tab reply selection.
|
|
19
|
-
6. **Stateful memory**: maintain a single evolving Markdown checkpoint representing current shared understanding, including coverage and decision-branch status when useful.
|
|
20
|
-
7. **Automatic checkpointing**: whenever shared understanding changes meaningfully, the assistant must update the checkpoint before asking the next question.
|
|
21
|
-
8. **Read-only during grilling**: while interviewing/planning, the extension blocks implementation mutations. Output selection is a mandatory workflow step before the session can end or output production can begin. Output production is a deliberate approved phase and can temporarily use the tools required for that output.
|
|
22
|
-
|
|
23
|
-
## User Experience
|
|
24
|
-
|
|
25
|
-
### Starting
|
|
26
|
-
|
|
27
|
-
- `/grill <topic>` starts immediately when the topic is clear.
|
|
28
|
-
- `/grill` with no topic uses recent conversation as an inferred topic and asks for confirmation/editing.
|
|
29
|
-
- The default intent is `auto`.
|
|
30
|
-
|
|
31
|
-
### Interaction
|
|
32
|
-
|
|
33
|
-
The user interacts through normal chat, not a rigid wizard. The extension adds:
|
|
34
|
-
|
|
35
|
-
- a persistent active state,
|
|
36
|
-
- a status widget/footer indicator,
|
|
37
|
-
- checkpoint review commands,
|
|
38
|
-
- prompt injection while active,
|
|
39
|
-
- read-only enforcement during the interview, and
|
|
40
|
-
- checkpoint update/output-selection/output-phase tools available to the assistant, and
|
|
41
|
-
- Tab-cyclable suggested replies for each grill question or output-selection choice.
|
|
42
|
-
|
|
43
|
-
### Commands for v1
|
|
44
|
-
|
|
45
|
-
- `/grill <topic>`: start or resume a grill session.
|
|
46
|
-
- `/grill stop`: stop grill mode and clear active status.
|
|
47
|
-
- `/grill checkpoint`: review the current Markdown checkpoint; supports quick display and editable review.
|
|
48
|
-
- `/grill status`: show operational state.
|
|
49
|
-
- `/grill intent <auto|plan|learn|research|content|decide>`: set intent preset. Default: `auto`.
|
|
50
|
-
- `/grill output <outputs>`: set one or more output preferences, e.g. `github-issues`, `design-doc`, `readme`, `adr`, `prd`, `summary`, or comma-separated combinations. This preference is never production approval; the assistant still explicitly asks/confirm outputs later.
|
|
51
|
-
- `/grill research <off|ask|auto>`: set research behavior. Default: `auto`.
|
|
52
|
-
|
|
53
|
-
### Checkpoint
|
|
54
|
-
|
|
55
|
-
The checkpoint is a single adaptive Markdown document. It should start generic, but sections may be added/removed based on the topic. For thorough grilling, the assistant should maintain a lightweight coverage checklist and decision-branch ledger when useful, marking branches resolved, open, contradicted, or intentionally deferred.
|
|
56
|
-
|
|
57
|
-
Example sections:
|
|
58
|
-
|
|
59
|
-
```md
|
|
60
|
-
# Shared Understanding
|
|
61
|
-
|
|
62
|
-
## Topic
|
|
63
|
-
|
|
64
|
-
## Current Understanding
|
|
65
|
-
|
|
66
|
-
## Decisions
|
|
67
|
-
|
|
68
|
-
## Assumptions
|
|
69
|
-
|
|
70
|
-
## Constraints
|
|
71
|
-
|
|
72
|
-
## Risks / Unknowns
|
|
73
|
-
|
|
74
|
-
## Coverage Checklist
|
|
75
|
-
|
|
76
|
-
## Decision Branches
|
|
77
|
-
|
|
78
|
-
## Open Questions
|
|
79
|
-
|
|
80
|
-
## Likely Output Strategy
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
The checkpoint should not force every topic into a product-design template. For example, `I want to make a game engine` might become a learning roadmap, an implementation plan, a tutorial series, or a research project depending on the grilled outcome mode.
|
|
84
|
-
|
|
85
|
-
## Output Model
|
|
86
|
-
|
|
87
|
-
Output generation is part of the normal `/grill` workflow, not only a separate export command.
|
|
88
|
-
|
|
89
|
-
When the assistant believes shared understanding is sufficient, it must enter a hardcoded output-selection phase. This phase is mandatory before stopping, stopping without outputs, or producing outputs. The phase shows a readiness gate containing:
|
|
90
|
-
|
|
91
|
-
1. why it thinks the session is ready,
|
|
92
|
-
2. recommended output destination(s),
|
|
93
|
-
3. recommended output strategy,
|
|
94
|
-
4. an explicit question asking which output(s) to produce, and
|
|
95
|
-
5. choices: continue grilling, review checkpoint, or produce one or more outputs.
|
|
96
|
-
|
|
97
|
-
There is no default output mode for a grilling session. A missing output preference means no output has been chosen yet. Even when `/grill output` was used, the assistant must explicitly ask/confirm the final output set before output production. The user may choose 1..n outputs, such as both a design doc and uploaded GitHub issues.
|
|
98
|
-
|
|
99
|
-
Output generation should choose both:
|
|
100
|
-
|
|
101
|
-
- **destination/format**: explicit options include GitHub issues, design doc, README.md, ADR doc(s), PRD, implementation plan, research brief, summary/decision memo, tutorial/content outline, test plan/QA checklist, and changelog/release notes; one or more destinations may be chosen or customized.
|
|
102
|
-
- **strategy**: implementation vertical slices, tutorial chapters, research investigations, content outline, ADR candidates, milestone experiments, etc.
|
|
103
|
-
|
|
104
|
-
The output-selection phase should show the explicit destination catalog before asking the user to decide:
|
|
105
|
-
|
|
106
|
-
- GitHub issues
|
|
107
|
-
- Design doc
|
|
108
|
-
- README.md
|
|
109
|
-
- ADR doc
|
|
110
|
-
- PRD
|
|
111
|
-
- Implementation plan
|
|
112
|
-
- Research brief
|
|
113
|
-
- Summary / decision memo
|
|
114
|
-
- Tutorial / content outline
|
|
115
|
-
- Test plan / QA checklist
|
|
116
|
-
- Changelog / release notes
|
|
117
|
-
|
|
118
|
-
For example, GitHub issues might mean:
|
|
119
|
-
|
|
120
|
-
- implementation vertical-slice tickets,
|
|
121
|
-
- tutorial chapter issues,
|
|
122
|
-
- research investigation issues,
|
|
123
|
-
- blog/content installment issues, or
|
|
124
|
-
- prototype experiment milestones.
|
|
125
|
-
|
|
126
|
-
### Approval Before Mutations
|
|
127
|
-
|
|
128
|
-
Before writing files or creating issues:
|
|
129
|
-
|
|
130
|
-
- For file outputs: draft first, then write after approval.
|
|
131
|
-
- For GitHub issues: preview issue titles/bodies/labels first, then create after approval.
|
|
132
|
-
|
|
133
|
-
During output selection, the user may choose to continue grilling, review the checkpoint, stop without output, or approve one or more concrete outputs. During approved output production, the assistant can enter an output phase that permits the required tools for the job. Approved mutating actions, such as creating GitHub issues, should not be refused merely because they mutate state; if DM, a CLI, a platform, or the OS blocks the mutation for permission/authentication reasons, the assistant must ask the user for the needed permission, confirmation, credentials, or a revised plan instead of bypassing the gate.
|
|
134
|
-
|
|
135
|
-
For approved GitHub issue output with no git repo or remote, the assistant asks to initialize, create, or select a repo/remote before creating the previewed issues; it uses drafts only if the user chooses.
|
|
136
|
-
|
|
137
|
-
## Technical Design
|
|
138
|
-
|
|
139
|
-
### Extension State
|
|
140
|
-
|
|
141
|
-
Persist state using `dm.appendEntry("grill-me-state", state)`.
|
|
142
|
-
|
|
143
|
-
State fields:
|
|
144
|
-
|
|
145
|
-
- `active`: whether grill mode is active.
|
|
146
|
-
- `topic`: current topic.
|
|
147
|
-
- `intent`: `auto | plan | learn | research | content | decide`.
|
|
148
|
-
- `outputPreference`: user-provided output preference(s), if any. Empty means unset; it must not imply a default.
|
|
149
|
-
- `researchMode`: `off | ask | auto`.
|
|
150
|
-
- `checkpoint`: evolving Markdown shared-understanding document.
|
|
151
|
-
- `phase`: `interview | output-selection | output`.
|
|
152
|
-
- `outputPhase`: legacy/compatibility boolean for whether the user has approved output production and mutating tools may be used.
|
|
153
|
-
- `outputSelection`: readiness rationale, recommended outputs, recommended strategy, and output-selection question while the mandatory output-selection phase is active.
|
|
154
|
-
- `approvedOutputPlan`: approved concrete output plan while output phase is active.
|
|
155
|
-
- `currentQuestion`: the latest grill question or output-selection question that has Tab alternatives.
|
|
156
|
-
- `alternatives`: suggested replies exposed in the widget and Tab reply-selection UX.
|
|
157
|
-
- `updatedAt`: last state update timestamp.
|
|
158
|
-
- `lastChangeSummary`: latest checkpoint change summary.
|
|
159
|
-
|
|
160
|
-
On session start/resume, restore the latest state entry from the current branch.
|
|
161
|
-
|
|
162
|
-
### Prompt Injection
|
|
163
|
-
|
|
164
|
-
When active, `before_agent_start` appends grill instructions to the system prompt:
|
|
165
|
-
|
|
166
|
-
- apply Socratic method,
|
|
167
|
-
- use one thorough default style,
|
|
168
|
-
- ask mostly one question at a time,
|
|
169
|
-
- ask enough follow-up questions to resolve the decision tree instead of rushing to output selection,
|
|
170
|
-
- include 2-5 concrete answer alternatives and a recommended answer by default,
|
|
171
|
-
- call `grill_set_alternatives` before each question so Tab can fill/cycle those alternatives and Enter can send the selected or edited reply,
|
|
172
|
-
- adapt dimensions to topic and intent,
|
|
173
|
-
- maintain coverage checklist and decision-branch status in the checkpoint when useful,
|
|
174
|
-
- inspect code/files instead of asking when research mode allows and the answer is discoverable,
|
|
175
|
-
- do not implement during interview,
|
|
176
|
-
- update checkpoint with `grill_update_checkpoint` before the next question whenever shared understanding changes,
|
|
177
|
-
- when major coverage branches are resolved or intentionally deferred, call `grill_enter_output_selection_phase` to enter the mandatory hardcoded output-selection phase, explicitly list concrete output options (GitHub issues, design doc, README.md, ADR doc, PRD, etc.), ask for one or more outputs/continue/review/stop, and wait for the user's selection,
|
|
178
|
-
- after output approval from that phase, call `grill_enter_output_phase` before using mutating tools,
|
|
179
|
-
- during output phase, perform only approved mutations; if a permission/authentication/tool gate blocks an approved mutation, ask the user for the needed permission, confirmation, credentials, or plan change instead of refusing the approved output or bypassing the gate,
|
|
180
|
-
- for approved GitHub issue output with no git repo or remote, ask to initialize/create/select a repo/remote before creating the previewed issues,
|
|
181
|
-
- if the user continues grilling or stops without output, call `grill_finish_output_selection_phase`.
|
|
182
|
-
|
|
183
|
-
### Tools
|
|
184
|
-
|
|
185
|
-
#### `grill_set_alternatives`
|
|
186
|
-
|
|
187
|
-
Parameters:
|
|
188
|
-
|
|
189
|
-
- `question`: the question these alternatives answer.
|
|
190
|
-
- `alternatives`: 2-5 objects containing:
|
|
191
|
-
- `value`: exact reply inserted into the user's editor via Tab reply selection.
|
|
192
|
-
- `label`: short visible label.
|
|
193
|
-
- `description`: optional explanation/recommendation note.
|
|
194
|
-
|
|
195
|
-
Behavior:
|
|
196
|
-
|
|
197
|
-
- stores the current question and alternatives in state,
|
|
198
|
-
- shows them in the status widget below the editor,
|
|
199
|
-
- exposes them through the active reply-selection editor so pressing Tab fills/cycles them, and
|
|
200
|
-
- does not prevent the user from typing a custom answer.
|
|
201
|
-
|
|
202
|
-
#### `grill_update_checkpoint`
|
|
203
|
-
|
|
204
|
-
Parameters:
|
|
205
|
-
|
|
206
|
-
- `markdown`: full replacement checkpoint Markdown.
|
|
207
|
-
- `changeSummary`: brief visible summary of what changed.
|
|
208
|
-
|
|
209
|
-
Behavior:
|
|
210
|
-
|
|
211
|
-
- replaces the stored checkpoint,
|
|
212
|
-
- persists state,
|
|
213
|
-
- displays a visible confirmation,
|
|
214
|
-
- does not terminate the conversation.
|
|
215
|
-
|
|
216
|
-
#### `grill_enter_output_selection_phase`
|
|
217
|
-
|
|
218
|
-
Parameters:
|
|
219
|
-
|
|
220
|
-
- `readinessRationale`: why shared understanding is sufficient to leave interview mode.
|
|
221
|
-
- `recommendedOutputs`: recommended output destination(s)/format(s) from the explicit catalog, or none.
|
|
222
|
-
- `recommendedStrategy`: recommended output strategy, distinct from destination.
|
|
223
|
-
- `question`: the explicit output-selection question.
|
|
224
|
-
- `alternatives`: 2-5 choices for Tab reply selection.
|
|
225
|
-
|
|
226
|
-
Behavior:
|
|
227
|
-
|
|
228
|
-
- marks `phase = "output-selection"`,
|
|
229
|
-
- stores the output-selection summary,
|
|
230
|
-
- updates the current question/alternatives,
|
|
231
|
-
- persists state, and
|
|
232
|
-
- makes output selection visible in status/widget.
|
|
233
|
-
|
|
234
|
-
#### `grill_finish_output_selection_phase`
|
|
235
|
-
|
|
236
|
-
Parameters:
|
|
237
|
-
|
|
238
|
-
- `outcome`: `continue-grilling` or `stop-without-output`.
|
|
239
|
-
- `summary`: optional summary of the user's choice.
|
|
240
|
-
|
|
241
|
-
Behavior:
|
|
242
|
-
|
|
243
|
-
- resolves the mandatory output-selection phase without entering output production,
|
|
244
|
-
- either returns to `interview` or stops Grill Me after a no-output choice,
|
|
245
|
-
- persists state, and
|
|
246
|
-
- clears the output-selection alternatives.
|
|
247
|
-
|
|
248
|
-
#### `grill_enter_output_phase`
|
|
249
|
-
|
|
250
|
-
Parameters:
|
|
251
|
-
|
|
252
|
-
- `outputPlan`: description of approved outputs and planned mutations.
|
|
253
|
-
|
|
254
|
-
Behavior:
|
|
255
|
-
|
|
256
|
-
- requires the mandatory `output-selection` phase first,
|
|
257
|
-
- marks `phase = "output"` and `outputPhase = true` for the approved 1..n output plan,
|
|
258
|
-
- persists state,
|
|
259
|
-
- displays that output tools are enabled, and
|
|
260
|
-
- instructs the assistant to ask the user for permission/authentication if an approved mutation is blocked by DM, a CLI, a platform, or the OS.
|
|
261
|
-
|
|
262
|
-
#### `grill_finish_output_phase`
|
|
263
|
-
|
|
264
|
-
Behavior:
|
|
265
|
-
|
|
266
|
-
- marks `outputPhase = false`,
|
|
267
|
-
- returns to read-only grill enforcement.
|
|
268
|
-
|
|
269
|
-
### Read-only Enforcement
|
|
270
|
-
|
|
271
|
-
While `active && !outputPhase`:
|
|
272
|
-
|
|
273
|
-
- block `edit` and `write`,
|
|
274
|
-
- block bash commands that appear mutating,
|
|
275
|
-
- allow read/search/inspection commands,
|
|
276
|
-
- allow checkpoint/output-selection/output-phase tools.
|
|
277
|
-
|
|
278
|
-
When `outputPhase` is true, the assistant may use tools required for the approved output step. If an approved mutation is blocked by permissions, auth, or missing repo setup, it asks the user for permission, credentials, repo selection, or a revised plan instead of bypassing the gate, claiming success, or defaulting to drafts.
|
|
279
|
-
|
|
280
|
-
## MVP Scope
|
|
281
|
-
|
|
282
|
-
The first working version implements:
|
|
283
|
-
|
|
284
|
-
- stateful `/grill` command,
|
|
285
|
-
- config commands for intent, research behavior, and output preference,
|
|
286
|
-
- prompt injection,
|
|
287
|
-
- persistent Markdown checkpoint,
|
|
288
|
-
- `grill_update_checkpoint`,
|
|
289
|
-
- checkpoint review/editing,
|
|
290
|
-
- Tab reply-selection alternatives for each question,
|
|
291
|
-
- read-only enforcement during interview,
|
|
292
|
-
- mandatory output-selection tools,
|
|
293
|
-
- output-phase tool for approved output production,
|
|
294
|
-
- status widget.
|
|
295
|
-
|
|
296
|
-
## Known Limitations / Future Work
|
|
297
|
-
|
|
298
|
-
- Automatic checkpoint quality depends on the model following tool-use instructions.
|
|
299
|
-
- Output-selection is now a typed phase, but output strategies are still free-text rather than separate structured strategy objects.
|
|
300
|
-
- GitHub issue creation is not wrapped by a dedicated tool yet; the assistant uses `gh` during approved output phase.
|
|
301
|
-
- Later versions could add richer structured state, custom strategy templates, issue-preview tools, and automatic diffing of checkpoint changes.
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# DM Grill Me
|
|
2
|
-
|
|
3
|
-
A DM extension for thorough Socratic planning sessions and DM Deep Interview intake. It keeps a shared-understanding checkpoint, asks one focused question at a time, tracks coverage and decision branches, offers Tab-cyclable answer alternatives, forces a mandatory output-selection phase at the end of the interview, and blocks implementation mutations until output production is explicitly approved.
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
DM bundles `dm-grill-me` with the published CLI. Install or upgrade `dm`, then use `/deep-interview`, `/grill`, or `/checkpoint` in the TUI. For local source development, run `dm -e /path/to/dm-grill-me`.
|
|
8
|
-
|
|
9
|
-
## Commands
|
|
10
|
-
|
|
11
|
-
- `/deep-interview <topic>` — start the DM Deep Interview workflow. This is an alias for the same protected Grill Me interview engine.
|
|
12
|
-
- `/grill <topic>` — start a grill session.
|
|
13
|
-
- `/grill` — infer the topic from the current conversation and ask for confirmation/editing.
|
|
14
|
-
- `/grill stop` — stop grill mode.
|
|
15
|
-
- `/checkpoint [edit|chat]` — show the current checkpoint in an overlay by default; use `edit` to edit or `chat` to print it.
|
|
16
|
-
- `/grill checkpoint [edit|chat]` — same checkpoint controls from the `/grill` command.
|
|
17
|
-
- `/grill status` — show current grill state.
|
|
18
|
-
- `/grill intent auto|plan|learn|research|content|decide` — set the intent preset.
|
|
19
|
-
- `/grill output <outputs>` — set one or more preferred output formats, such as `github-issues`, `design-doc`, `readme`, `adr`, `prd`, `summary`, or `design-doc,github-issues`. This is a preference only; Grill Me still explicitly asks/gets approval before producing outputs.
|
|
20
|
-
- `/grill research off|ask|auto` — configure whether the assistant should inspect/research while grilling.
|
|
21
|
-
|
|
22
|
-
## Behavior
|
|
23
|
-
|
|
24
|
-
While active, the extension injects Grill Me instructions into the agent context and exposes these assistant tools:
|
|
25
|
-
|
|
26
|
-
- `grill_set_alternatives`
|
|
27
|
-
- `grill_update_checkpoint`
|
|
28
|
-
- `grill_enter_output_selection_phase`
|
|
29
|
-
- `grill_finish_output_selection_phase`
|
|
30
|
-
- `grill_enter_output_phase`
|
|
31
|
-
- `grill_finish_output_phase`
|
|
32
|
-
|
|
33
|
-
During interview mode it blocks `edit`, `write`, and bash commands that appear mutating. Grill Me uses one thorough default grilling style. The assistant is instructed to maintain a coverage checklist, clarity ledger, and decision-branch ledger in the checkpoint, ask enough follow-up questions to resolve or intentionally defer major branches, route repo/docs facts to read-only inspection while asking the user for judgments, and avoid premature readiness. Before ending the interview it must run a pressure pass over assumptions, risks, and unresolved branches. Grill Me does not assume a default output mode; when the interview is ready to end, the assistant must enter the hardcoded output-selection phase, ask which output(s) to produce, and support one or many outputs, such as a design doc and uploaded GitHub issues. Output production can only start after the user approves a concrete plan from that selection phase; choosing to continue grilling or stop without output is recorded separately.
|
|
34
|
-
|
|
35
|
-
## Tab reply selection
|
|
36
|
-
|
|
37
|
-
When Grill Me alternatives are active, `Tab` fills the editor with a suggested reply and repeated `Tab` cycles through the available replies. `Shift+Tab` cycles backward. Press `Enter` to send the selected reply, or edit the inserted text before pressing `Enter` to send a custom answer. If you type a short filter first, `Tab` selects the first matching alternative; free-form text is left alone.
|
|
38
|
-
|
|
39
|
-
## Output selection options
|
|
40
|
-
|
|
41
|
-
The mandatory output-selection phase explicitly names concrete artifact options, including:
|
|
42
|
-
|
|
43
|
-
- GitHub issues
|
|
44
|
-
- Design doc
|
|
45
|
-
- README.md
|
|
46
|
-
- ADR doc
|
|
47
|
-
- PRD
|
|
48
|
-
- Implementation plan
|
|
49
|
-
- Research brief
|
|
50
|
-
- Summary / decision memo
|
|
51
|
-
- Tutorial / content outline
|
|
52
|
-
- Test plan / QA checklist
|
|
53
|
-
- Changelog / release notes
|
|
54
|
-
|
|
55
|
-
The user can choose one, choose multiple, customize the set, continue grilling, review the checkpoint, or stop without producing output.
|
|
56
|
-
|
|
57
|
-
## Permissions and mutating outputs
|
|
58
|
-
|
|
59
|
-
Grill Me remains read-only until the user approves a concrete output plan and the assistant enters output phase. During output phase, approved mutating actions such as writing files or creating GitHub issues are allowed, but only within the approved plan. If DM, GitHub CLI, the OS, or another tool blocks an approved mutation because it needs permission, confirmation, authentication, or credentials, the assistant should stop and ask the user for that permission or a revised plan instead of bypassing the gate or pretending the action succeeded.
|
|
60
|
-
|
|
61
|
-
For approved GitHub issue output with no git repo or remote, the assistant asks to initialize, create, or select a repo/remote before creating the previewed issues; it falls back to drafts only if the user chooses.
|
|
62
|
-
|
|
63
|
-
## Acknowledgements
|
|
64
|
-
|
|
65
|
-
Kudos to [Matt Pocock](https://github.com/mattpocock) for the idea that inspired this extension.
|
|
66
|
-
|
|
67
|
-
## Testing
|
|
68
|
-
|
|
69
|
-
This package currently has no npm scripts. Useful checks:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
npm pack --dry-run
|
|
73
|
-
tsc --noEmit --target ES2022 --module NodeNext --moduleResolution NodeNext --skipLibCheck index.ts
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
The TypeScript check requires DM peer dependencies to be resolvable in the local environment.
|
|
77
|
-
|
|
78
|
-
See [DESIGN.md](./DESIGN.md) for the design notes.
|
|
79
|
-
|
|
80
|
-
## License
|
|
81
|
-
|
|
82
|
-
This source is available under the [MIT License](./LICENSE).
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "NodeNext",
|
|
5
|
-
"moduleResolution": "NodeNext",
|
|
6
|
-
"strict": false,
|
|
7
|
-
"noEmit": true,
|
|
8
|
-
"allowImportingTsExtensions": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"types": [
|
|
11
|
-
"node"
|
|
12
|
-
]
|
|
13
|
-
},
|
|
14
|
-
"include": [
|
|
15
|
-
"index.ts"
|
|
16
|
-
]
|
|
17
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# dm-image2
|
|
2
|
-
|
|
3
|
-
Local bundled DM extension that exposes a dedicated `image_generation` tool.
|
|
4
|
-
|
|
5
|
-
What it does:
|
|
6
|
-
|
|
7
|
-
- vendors the `imagen.py` lane from M inside the DM package
|
|
8
|
-
- uses the active DM Ultradex / Codex account via a generated auth shim
|
|
9
|
-
- runs the bundled `imagen.py` orchestrator as the primary image lane
|
|
10
|
-
- bundles a pattern-only image prompt cookbook in `skills/image-generation/SKILL.md`, distilled from public prompt/reference case patterns, without calling third-party image APIs or external skill archives
|
|
11
|
-
- fails closed by default if `imagen.py` cannot run with a healthy credential source, so DM does not silently mask the required tool path
|
|
12
|
-
- keeps the image-generation workflow saved-to-disk instead of dumping raw image data inline
|
|
13
|
-
- returns the saved path plus an inline PNG preview in the TUI
|
|
14
|
-
- cooperates with DM abort signals so `Esc` / `Ctrl+C` can stop long image runs cleanly
|
|
15
|
-
|
|
16
|
-
Default save behavior:
|
|
17
|
-
|
|
18
|
-
- `save=project` → `<cwd>/.dm/generated-images/`
|
|
19
|
-
- `save=global` → `~/.dm/agent/generated-images/`
|
|
20
|
-
- `save=custom` → `saveDir`
|
|
21
|
-
|
|
22
|
-
This is a practical DM wrapper lane for image artifacts. It now uses the bundled `imagen.py` orchestrator from M as the required default PNG path so DM calls the same image-first tool family the operator requested.
|
|
23
|
-
|
|
24
|
-
Pattern skill note:
|
|
25
|
-
|
|
26
|
-
- `dm-image2` does not depend on external image-generation skill archives
|
|
27
|
-
- prompt patterns live directly in `skills/image-generation/SKILL.md`
|
|
28
|
-
- the skill teaches reusable visual workflows only; generation still happens through DM's `image_generation` tool and active DM credentials
|
|
29
|
-
|
|
30
|
-
Legacy fallback note:
|
|
31
|
-
|
|
32
|
-
- emergency-only debugging can opt into the older fallback lane with `DM_IMAGE_ALLOW_LEGACY_FALLBACK=1`
|
|
33
|
-
- the default behavior is intentionally strict so REQUESTS evidence is about the real `imagen.py` lane, not a masked fallback
|