CommandCodeAI / CommandCodeAI/command-code
feat: Mod - Adding test harness to Mod Api to make it easier to write tests and have agent verify mod works
まだ誰も着手していません。
- 主要言語
- 言語のデータがありません
- スター
- 4k
- フォーク
- 350
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Summary
When writing and iterating on a mod, I find the the model will write a temp script which imports some of the mod functions to test the output and if it works properly, for example:
xecute Shell Command
Command Code needs to execute node --experimental-strip-types --no-warnings -e "
Promise.all([
import('./.commandcode/mods/erd.ts'),
import('./.commandcode/mods/erd/markdown.ts'),
import('./.commandcode/mods/erd/renderer.ts'),
import('./.commandcode/mods/erd/commands.ts'),
import('./.commandcode/mods/erd/tools.ts'),
]).then(() => { console.log('ALL MODULES LOAD OK'); }).catch(e => { console.error('FAIL', e); process.exit(1); });
" 2>&1 | head -20.
Press [ctrl+e] to explain this command
❯ 1. Yes
Some are more involved and check output not just if load.
Execute Shell Command
Command Code needs to execute node --experimental-strip-types --no-warnings -e "
const fs = require('fs');
Promise.all([
import('./.commandcode/mods/erd/parser.ts'),
import('./.commandcode/mods/erd/queries.ts'),
import('./.commandcode/mods/erd/markdown.ts'),
]).then(([p, q, md]) => {
const sql = fs.readFileSync('schema/schema.sql', 'utf8');
const schema = p.parseSchema(sql, 'sqlite');
console.log('listTables →', md.renderMarkdown(q.listTables(schema)).length, 'lines');
console.log('listIndexes →', md.renderMarkdown(q.listIndexes(schema)).length, 'lines');
console.log('listForeignKeys →', md.renderMarkdown(q.listForeignKeys(schema)).length, 'lines');
console.log('findColumn →', md.renderMarkdown(q.findColumn(schema, 'id')).length, 'lines');
console.log('schemaSummary →', md.renderMarkdown(q.schemaSummary(schema, 'sqlite')).length, 'lines');
console.log('describeTable →', md.renderMarkdown(q.describeTable(schema, 'users', 'sqlite')).length, 'lines');
console.log('ALL QUERY FUNCTIONS RENDER CLEANLY');
}).catch(e => { console.error('FAIL', e); process.exit(1); });
" 2>&1 | head -20.
Press [ctrl+e] to explain this command
❯ 1. Yes
2. Yes, don't ask again for this exact command in this project
3. No, tell Command Code what to do differently
Expected Behavior
Would be useful as mods get more complex an refactor to have a proper test harness or suite like vitest that can be run easily manually or within agent as part of th mod-builder skill.
Actual Behavior
Mode has to cobble together one off scripts and runs that have to be permitted each Tim since the command is unique often per run so hard to write permissions to allow.
Can see from example above the shell command on-line a script and not sure I'd want to permit blanket node --experimental-strip-types --no-warnings -e allow permissions here.
Steps to reproduce the issue
- build mod
- try to test it
Command Code Version
1.7.0
Operating System
macOS
Terminal/IDE
ghostty
Shell
zsh
Additional context
No response
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず Mod API と th-mod-builder skill を確認し、その後、issue にある Node コマンドの例を現在の mod workflow と比較します。harness がカバーすべき内容、手動または agent 経由での実行方法、モジュールの正常な読み込みと出力チェックがどのようなものかを定義します。具体的な実装ファイルやテストは特定されていません。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- node.js, typescript
- 領域
- cli, developer-experience, testing
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 静か
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 35/100