pstack statechart: strict typecheck reports four errors in run.ts and CLI tests

Ouverte Adaptée aux débutants
#1,141 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
85/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
node.js, typescript
Domaine
testing, tooling

Piste de recherche

Commencez par les deux points de retour dans run.ts et les callbacks autour des lignes 427–465 de test/cli.test.ts ; l’issue indique les incompatibilités de types et les types concernés. Exécutez ./node_modules/.bin/tsc -p tsconfig.json --pretty false avec la toolchain indiquée pour vérifier les erreurs. Le travail est terminé lorsque la vérification stricte des types se termine avec le code de sortie 0 sans modifier le comportement à l’exécution.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Summary

The statechart compiler in pstack 0.15.36 produces four TypeScript errors when checked with its existing scripts/tsconfig.json. I reproduced this on an unchanged copy of commit c742dd61706fbacc1b95f1a20b7b988cf096ce6c, using the pinned toolchain below.

There are two causes, each reported at two locations:

  • run.ts: the exit property in common is inferred as number, while CheckResult.exit requires 0 | 1 | 2. Both returns that spread common fail.
  • test/cli.test.ts: two test callbacks return signalWhile(...), whose promise resolves to the phase object. The Node TestFn type requires void | Promise<void>.

Reproduce

git clone --filter=blob:none --sparse https://github.com/cursor/plugins.git pstack-typecheck-repro
cd pstack-typecheck-repro
git sparse-checkout set pstack
git checkout --detach c742dd61706fbacc1b95f1a20b7b988cf096ce6c
cd pstack/skills/statechart/scripts

npm install --ignore-scripts --no-save --package-lock=false --no-audit --no-fund [email protected] @types/[email protected]
./node_modules/.bin/tsc -p tsconfig.json --pretty false

No changes to source files or tsconfig.json are needed. The package's declared [email protected] dependency is installed along with the two explicit packages.

Environment used:

  • macOS, arm64
  • Node 24.13.0, npm 11.6.2
  • TypeScript 7.0.2, @types/node 26.1.2, fast-check 4.5.3

Actual result

The command exits 1 with these diagnostics, abbreviated:

run.ts(455,9): error TS2322: ... is not assignable to type 'CheckResult'.
  Types of property 'exit' are incompatible.
    Type 'number' is not assignable to type '0 | 1 | 2'.

run.ts(471,5): error TS2322: ... is not assignable to type 'CheckResult'.
  Types of property 'exit' are incompatible.
    Type 'number' is not assignable to type '0 | 1 | 2'.

test/cli.test.ts(430,5): error TS2345: ... is not assignable to parameter of type 'TestFn'.
  Type 'Promise<...phase object...>' is not assignable to type 'void | Promise<void>'.

test/cli.test.ts(453,5): error TS2345: ... is not assignable to parameter of type 'TestFn'.
  Type 'Promise<...phase object...>' is not assignable to type 'void | Promise<void>'.

Expected result and scope

Checking the existing strict TypeScript configuration should exit 0, or the supported compiler and Node type versions should be specified if a different toolchain is intended.

The package currently exposes a runtime test command rather than a typecheck command. I did not observe a CLI failure caused by these type errors: a passing-model smoke test exited 0, and a counterexample smoke test exited 1 with the expected report. This report concerns static checking with the versions above.

A contextual type for common that preserves CheckResult["exit"], and callbacks that await signalWhile without returning its phase object, appear to be the relevant correction points.

Langage dominant
TypeScript
Étoiles
13.9k
Forks
1.4k
Merge moyen
6 h 53 min
PR mergées (30 j)
153

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de cursor/plugins

Toutes les issues de cursor/plugins

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.