feat: Mod - Adding test harness to Mod Api to make it easier to write tests and have agent verify mod works

オープン
#612 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
静か
技術スタック
node.js, typescript

調査の方向性

まず Mod API と th-mod-builder skill を確認し、その後、issue にある Node コマンドの例を現在の mod workflow と比較します。harness がカバーすべき内容、手動または agent 経由での実行方法、モジュールの正常な読み込みと出力チェックがどのようなものかを定義します。具体的な実装ファイルやテストは特定されていません。

索引モデルが issue の本文から書いたものです。

説明

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
  1. build mod
  2. try to test it
Command Code Version

1.7.0

Operating System

macOS

Terminal/IDE

ghostty

Shell

zsh

Additional context

No response

主要言語
言語のデータがありません
スター
4k
フォーク
350
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CommandCodeAI/command-code のほかの issue

CommandCodeAI/command-code の issue をすべて見る

似ている issue

CLI の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。