Originally posted by **cowboyd** July 12, 2024
I wanted to get the ball rolling on a zero-dependency `interactors` cli that can build a set of interactors into an agent that can be injected into any browsing context. We need to lay out
@wKich has implemented a [working prototype](#264) and so this will focus on what is needed to make that into a delightful product. This list of questions is by no means exhaustive.
## Versioning
How will `interactor` CLI be versioned? Will it share a version with interactors core? Or should there be some slippage allowed. For example, should you be able to build with different versions of `@interactors/html` ? It seems to me that if a patch release for interactors comes out, then you shouldn't have to install a completely new version of the CLI just in order to avail yourself of it.
## Distribution Channels
Once we have the binary, how will we install it? Being able to codesign would be nice, but I think we can circumvent that by using curl / pkgx
However, we still need a NPM package to be able to use the binary from a javascript project. In the same way that there is a JS api for `esbuild`, but rebuild itself is a platform executable.
## Plugins
We need to describe a round trip scenario of how the interactors CLI will be used in conjunction with some javascript to show how this can be used with Playwright and vitest browser. The goal would be that we can make this happen with a few moving parts as possible. For example `@interactors/vitest` would use our npm package to interface with the CLI, but then what? How would it integrate the creation and loading of interactors into the runtime?
## LSP Integration
When using interactors with the CLI, they will not be built, linted, formatted etc by the rest of the project. They might exist completely outside the project and have different settings like the fact that the `Dom` lib will be there, not `Node`.
How will it look when the user opens one of their Interactor files with VSCode? How will it get the types for `@interactors/html`? How do we make this as smooth as possible?
Discussed in https://github.com/thefrontside/interactors/discussions/270