Flowkit is a core package used by the CLI commands. It features APIs for interacting with the Flow network in the context of flow.json configuration values. Flowkit is defined by the interface here.
Flowkit contains multiple subpackages, the most important ones are:
It is important we define clear boundaries between flowkit and other CLI packages. If we are in doubt where certain methods should be implemented we must ask ourselves if the method provides value for any other consumers of the pacakge or only provides utility for CLI usage, if it's only providing utility for CLI then it should be added inside the internal package, instead of flowkit. If in doubt better to add things to internal package and then move to flowkit if such need is identified.