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

Abierto
#612 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Sin datos de lenguaje
Estrellas
4k
Forks
350
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza revisando la Mod API y la skill th-mod-builder, y luego compara los comandos de Node de ejemplo del issue con el flujo de trabajo actual de mod. Define qué debería cubrir el harness, cómo debería ejecutarse manualmente o a través del agente y cómo deberían ser las comprobaciones de carga correcta del módulo y de la salida; no se identifican archivos de implementación ni tests específicos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
node.js, typescript
Área
cli, developer-experience, testing
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.