@decohere/cli 0.0.1-dev.5 → 0.0.1-dev.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ require("./logger.setup.js");
7
+ const _scribe = require("@decohere/scribe");
8
+ const _product = require("./product.js");
9
+ const configIndex = process.argv.indexOf("--config-file");
10
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
11
+ const logLevelIndex = process.argv.indexOf("--log-level");
12
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
13
+ _scribe.scribe.withPinoPretty({
14
+ logLevel: (0, _scribe.resolveLogLevel)(logLevel) ?? _scribe.DefaultLogLevel,
15
+ when: "always"
16
+ });
17
+ const logger = _scribe.scribe.logger("@decohere/cli");
18
+ const app = await _product.productCli.create({
19
+ configFile,
20
+ logLevel
21
+ });
22
+ let exitCode = 0;
23
+ try {
24
+ await app.run();
25
+ } catch (err) {
26
+ logger.error(err);
27
+ exitCode = -1;
28
+ } finally{
29
+ _scribe.scribe.flush(()=>process.exit(exitCode));
30
+ }
31
+
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCBcIi4vbG9nZ2VyLnNldHVwLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TG9nTGV2ZWwsIHJlc29sdmVMb2dMZXZlbCwgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IHByb2R1Y3RDbGkgfSBmcm9tIFwiLi9wcm9kdWN0LmpzXCI7XG5cbmNvbnN0IGNvbmZpZ0luZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWNvbmZpZy1maWxlXCIpO1xuY29uc3QgY29uZmlnRmlsZSA9IGNvbmZpZ0luZGV4ICE9PSAtMSA/IHByb2Nlc3MuYXJndltjb25maWdJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuY29uc3QgbG9nTGV2ZWxJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKFwiLS1sb2ctbGV2ZWxcIik7XG5jb25zdCBsb2dMZXZlbCA9IGxvZ0xldmVsSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2xvZ0xldmVsSW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcblxuc2NyaWJlLndpdGhQaW5vUHJldHR5KHtcblx0bG9nTGV2ZWw6IHJlc29sdmVMb2dMZXZlbChsb2dMZXZlbCkgPz8gRGVmYXVsdExvZ0xldmVsLFxuXHR3aGVuOiBcImFsd2F5c1wiLFxufSk7XG5cbmNvbnN0IGxvZ2dlciA9IHNjcmliZS5sb2dnZXIoXCJAZGVjb2hlcmUvY2xpXCIpO1xuY29uc3QgYXBwID0gYXdhaXQgcHJvZHVjdENsaS5jcmVhdGUoeyBjb25maWdGaWxlLCBsb2dMZXZlbCB9KTtcbmxldCBleGl0Q29kZSA9IDA7XG50cnkge1xuXHRhd2FpdCBhcHAucnVuKCk7XG59IGNhdGNoIChlcnIpIHtcblx0bG9nZ2VyLmVycm9yKGVycik7XG5cdGV4aXRDb2RlID0gLTE7XG59IGZpbmFsbHkge1xuXHRzY3JpYmUuZmx1c2goKCkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSk7XG59XG4iXSwibmFtZXMiOlsiY29uZmlnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJjb25maWdGaWxlIiwidW5kZWZpbmVkIiwibG9nTGV2ZWxJbmRleCIsImxvZ0xldmVsIiwic2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJyZXNvbHZlTG9nTGV2ZWwiLCJEZWZhdWx0TG9nTGV2ZWwiLCJ3aGVuIiwibG9nZ2VyIiwiYXBwIiwicHJvZHVjdENsaSIsImNyZWF0ZSIsImV4aXRDb2RlIiwicnVuIiwiZXJyIiwiZXJyb3IiLCJmbHVzaCIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7O1FBQ087d0JBQ2tEO3lCQUM5QjtBQUUzQixNQUFNQSxjQUFjQyxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUN6QyxNQUFNQyxhQUFhSixnQkFBZ0IsQ0FBQyxJQUFJQyxRQUFRQyxJQUFJLENBQUNGLGNBQWMsRUFBRSxHQUFHSztBQUN4RSxNQUFNQyxnQkFBZ0JMLFFBQVFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0FBQzNDLE1BQU1JLFdBQVdELGtCQUFrQixDQUFDLElBQUlMLFFBQVFDLElBQUksQ0FBQ0ksZ0JBQWdCLEVBQUUsR0FBR0Q7QUFFMUVHLGNBQU0sQ0FBQ0MsY0FBYyxDQUFDO0lBQ3JCRixVQUFVRyxJQUFBQSx1QkFBZSxFQUFDSCxhQUFhSSx1QkFBZTtJQUN0REMsTUFBTTtBQUNQO0FBRUEsTUFBTUMsU0FBU0wsY0FBTSxDQUFDSyxNQUFNLENBQUM7QUFDN0IsTUFBTUMsTUFBTSxNQUFNQyxtQkFBVSxDQUFDQyxNQUFNLENBQUM7SUFBRVo7SUFBWUc7QUFBUztBQUMzRCxJQUFJVSxXQUFXO0FBQ2YsSUFBSTtJQUNILE1BQU1ILElBQUlJLEdBQUc7QUFDZCxFQUFFLE9BQU9DLEtBQUs7SUFDYk4sT0FBT08sS0FBSyxDQUFDRDtJQUNiRixXQUFXLENBQUM7QUFDYixTQUFVO0lBQ1RULGNBQU0sQ0FBQ2EsS0FBSyxDQUFDLElBQU1wQixRQUFRcUIsSUFBSSxDQUFDTDtBQUNqQyJ9
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ require("./logger.setup.js");
7
+ const _flux = require("@decohere/flux");
8
+ const _scribe = require("@decohere/scribe");
9
+ const _rootmodule = require("./root.module.js");
10
+ const configIndex = process.argv.indexOf("--config-file");
11
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
12
+ const logLevelIndex = process.argv.indexOf("--log-level");
13
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
14
+ _scribe.scribe.withPinoPretty({
15
+ logLevel: (0, _scribe.resolveLogLevel)(logLevel) ?? _scribe.DefaultLogLevel,
16
+ when: "always"
17
+ });
18
+ const logger = _scribe.scribe.logger("@decohere/cli");
19
+ const app = await _rootmodule.RootModule.create([
20
+ _flux.FluxModule
21
+ ], {
22
+ configFile,
23
+ logLevel
24
+ });
25
+ let exitCode = 0;
26
+ try {
27
+ // Route directly to the flux module — users invoke as `flux serve`, not `flux flux serve`
28
+ logger.trace("running flux");
29
+ await app.run([
30
+ "flux",
31
+ ...process.argv.slice(2)
32
+ ]);
33
+ } catch (err) {
34
+ logger.error(err);
35
+ exitCode = -1;
36
+ } finally{
37
+ _scribe.scribe.flush(()=>process.exit(exitCode));
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvZmx1eC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgXCIuL2xvZ2dlci5zZXR1cC5qc1wiO1xuaW1wb3J0IHsgRmx1eE1vZHVsZSB9IGZyb20gXCJAZGVjb2hlcmUvZmx1eFwiO1xuaW1wb3J0IHsgRGVmYXVsdExvZ0xldmVsLCByZXNvbHZlTG9nTGV2ZWwsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBSb290TW9kdWxlIH0gZnJvbSBcIi4vcm9vdC5tb2R1bGUuanNcIjtcblxuY29uc3QgY29uZmlnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tY29uZmlnLWZpbGVcIik7XG5jb25zdCBjb25maWdGaWxlID0gY29uZmlnSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2NvbmZpZ0luZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5jb25zdCBsb2dMZXZlbEluZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWxvZy1sZXZlbFwiKTtcbmNvbnN0IGxvZ0xldmVsID0gbG9nTGV2ZWxJbmRleCAhPT0gLTEgPyBwcm9jZXNzLmFyZ3ZbbG9nTGV2ZWxJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuXG5zY3JpYmUud2l0aFBpbm9QcmV0dHkoe1xuXHRsb2dMZXZlbDogcmVzb2x2ZUxvZ0xldmVsKGxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWwsXG5cdHdoZW46IFwiYWx3YXlzXCIsXG59KTtcblxuY29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIkBkZWNvaGVyZS9jbGlcIik7XG5jb25zdCBhcHAgPSBhd2FpdCBSb290TW9kdWxlLmNyZWF0ZShbRmx1eE1vZHVsZV0sIHsgY29uZmlnRmlsZSwgbG9nTGV2ZWwgfSk7XG5sZXQgZXhpdENvZGUgPSAwO1xudHJ5IHtcblx0Ly8gUm91dGUgZGlyZWN0bHkgdG8gdGhlIGZsdXggbW9kdWxlIOKAlCB1c2VycyBpbnZva2UgYXMgYGZsdXggc2VydmVgLCBub3QgYGZsdXggZmx1eCBzZXJ2ZWBcblx0bG9nZ2VyLnRyYWNlKFwicnVubmluZyBmbHV4XCIpO1xuXHRhd2FpdCBhcHAucnVuKFtcImZsdXhcIiwgLi4ucHJvY2Vzcy5hcmd2LnNsaWNlKDIpXSk7XG59IGNhdGNoIChlcnIpIHtcblx0bG9nZ2VyLmVycm9yKGVycik7XG5cdGV4aXRDb2RlID0gLTE7XG59IGZpbmFsbHkge1xuXHRzY3JpYmUuZmx1c2goKCkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSk7XG59XG4iXSwibmFtZXMiOlsiY29uZmlnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJjb25maWdGaWxlIiwidW5kZWZpbmVkIiwibG9nTGV2ZWxJbmRleCIsImxvZ0xldmVsIiwic2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJyZXNvbHZlTG9nTGV2ZWwiLCJEZWZhdWx0TG9nTGV2ZWwiLCJ3aGVuIiwibG9nZ2VyIiwiYXBwIiwiUm9vdE1vZHVsZSIsImNyZWF0ZSIsIkZsdXhNb2R1bGUiLCJleGl0Q29kZSIsInRyYWNlIiwicnVuIiwic2xpY2UiLCJlcnIiLCJlcnJvciIsImZsdXNoIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFDTztzQkFDb0I7d0JBQzhCOzRCQUM5QjtBQUUzQixNQUFNQSxjQUFjQyxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUN6QyxNQUFNQyxhQUFhSixnQkFBZ0IsQ0FBQyxJQUFJQyxRQUFRQyxJQUFJLENBQUNGLGNBQWMsRUFBRSxHQUFHSztBQUN4RSxNQUFNQyxnQkFBZ0JMLFFBQVFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0FBQzNDLE1BQU1JLFdBQVdELGtCQUFrQixDQUFDLElBQUlMLFFBQVFDLElBQUksQ0FBQ0ksZ0JBQWdCLEVBQUUsR0FBR0Q7QUFFMUVHLGNBQU0sQ0FBQ0MsY0FBYyxDQUFDO0lBQ3JCRixVQUFVRyxJQUFBQSx1QkFBZSxFQUFDSCxhQUFhSSx1QkFBZTtJQUN0REMsTUFBTTtBQUNQO0FBRUEsTUFBTUMsU0FBU0wsY0FBTSxDQUFDSyxNQUFNLENBQUM7QUFDN0IsTUFBTUMsTUFBTSxNQUFNQyxzQkFBVSxDQUFDQyxNQUFNLENBQUM7SUFBQ0MsZ0JBQVU7Q0FBQyxFQUFFO0lBQUViO0lBQVlHO0FBQVM7QUFDekUsSUFBSVcsV0FBVztBQUNmLElBQUk7SUFDSCwwRkFBMEY7SUFDMUZMLE9BQU9NLEtBQUssQ0FBQztJQUNiLE1BQU1MLElBQUlNLEdBQUcsQ0FBQztRQUFDO1dBQVduQixRQUFRQyxJQUFJLENBQUNtQixLQUFLLENBQUM7S0FBRztBQUNqRCxFQUFFLE9BQU9DLEtBQUs7SUFDYlQsT0FBT1UsS0FBSyxDQUFDRDtJQUNiSixXQUFXLENBQUM7QUFDYixTQUFVO0lBQ1RWLGNBQU0sQ0FBQ2dCLEtBQUssQ0FBQyxJQUFNdkIsUUFBUXdCLElBQUksQ0FBQ1A7QUFDakMifQ==
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ require("./logger.setup.js");
7
+ const _forge = require("@decohere/forge");
8
+ const _scribe = require("@decohere/scribe");
9
+ const _rootmodule = require("./root.module.js");
10
+ const configIndex = process.argv.indexOf("--config-file");
11
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
12
+ const logLevelIndex = process.argv.indexOf("--log-level");
13
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
14
+ _scribe.scribe.withPinoPretty({
15
+ logLevel: (0, _scribe.resolveLogLevel)(logLevel) ?? _scribe.DefaultLogLevel,
16
+ when: "always"
17
+ });
18
+ const logger = _scribe.scribe.logger("@decohere/cli");
19
+ const app = await _rootmodule.RootModule.create([
20
+ _forge.ForgeModule
21
+ ], {
22
+ configFile,
23
+ logLevel
24
+ });
25
+ let exitCode = 0;
26
+ try {
27
+ // Route directly to the forge module — users invoke as `forge build`, not `forge forge build`
28
+ await app.run([
29
+ "forge",
30
+ ...process.argv.slice(2)
31
+ ]);
32
+ } catch (err) {
33
+ logger.error("Error running forge", err);
34
+ exitCode = -1;
35
+ } finally{
36
+ _scribe.scribe.flush(()=>process.exit(exitCode));
37
+ }
38
+
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvZm9yZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IFwiLi9sb2dnZXIuc2V0dXAuanNcIjtcbmltcG9ydCB7IEZvcmdlTW9kdWxlIH0gZnJvbSBcIkBkZWNvaGVyZS9mb3JnZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExvZ0xldmVsLCByZXNvbHZlTG9nTGV2ZWwsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBSb290TW9kdWxlIH0gZnJvbSBcIi4vcm9vdC5tb2R1bGUuanNcIjtcblxuY29uc3QgY29uZmlnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tY29uZmlnLWZpbGVcIik7XG5jb25zdCBjb25maWdGaWxlID0gY29uZmlnSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2NvbmZpZ0luZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5jb25zdCBsb2dMZXZlbEluZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWxvZy1sZXZlbFwiKTtcbmNvbnN0IGxvZ0xldmVsID0gbG9nTGV2ZWxJbmRleCAhPT0gLTEgPyBwcm9jZXNzLmFyZ3ZbbG9nTGV2ZWxJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuXG5zY3JpYmUud2l0aFBpbm9QcmV0dHkoe1xuXHRsb2dMZXZlbDogcmVzb2x2ZUxvZ0xldmVsKGxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWwsXG5cdHdoZW46IFwiYWx3YXlzXCIsXG59KTtcblxuY29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIkBkZWNvaGVyZS9jbGlcIik7XG5jb25zdCBhcHAgPSBhd2FpdCBSb290TW9kdWxlLmNyZWF0ZShbRm9yZ2VNb2R1bGVdLCB7IGNvbmZpZ0ZpbGUsIGxvZ0xldmVsIH0pO1xubGV0IGV4aXRDb2RlID0gMDtcbnRyeSB7XG5cdC8vIFJvdXRlIGRpcmVjdGx5IHRvIHRoZSBmb3JnZSBtb2R1bGUg4oCUIHVzZXJzIGludm9rZSBhcyBgZm9yZ2UgYnVpbGRgLCBub3QgYGZvcmdlIGZvcmdlIGJ1aWxkYFxuXHRhd2FpdCBhcHAucnVuKFtcImZvcmdlXCIsIC4uLnByb2Nlc3MuYXJndi5zbGljZSgyKV0pO1xufSBjYXRjaCAoZXJyKSB7XG5cdGxvZ2dlci5lcnJvcihcIkVycm9yIHJ1bm5pbmcgZm9yZ2VcIiwgZXJyKTtcblx0ZXhpdENvZGUgPSAtMTtcbn0gZmluYWxseSB7XG5cdHNjcmliZS5mbHVzaCgoKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKTtcbn1cbiJdLCJuYW1lcyI6WyJjb25maWdJbmRleCIsInByb2Nlc3MiLCJhcmd2IiwiaW5kZXhPZiIsImNvbmZpZ0ZpbGUiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbEluZGV4IiwibG9nTGV2ZWwiLCJzY3JpYmUiLCJ3aXRoUGlub1ByZXR0eSIsInJlc29sdmVMb2dMZXZlbCIsIkRlZmF1bHRMb2dMZXZlbCIsIndoZW4iLCJsb2dnZXIiLCJhcHAiLCJSb290TW9kdWxlIiwiY3JlYXRlIiwiRm9yZ2VNb2R1bGUiLCJleGl0Q29kZSIsInJ1biIsInNsaWNlIiwiZXJyIiwiZXJyb3IiLCJmbHVzaCIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7O1FBQ087dUJBQ3FCO3dCQUM2Qjs0QkFDOUI7QUFFM0IsTUFBTUEsY0FBY0MsUUFBUUMsSUFBSSxDQUFDQyxPQUFPLENBQUM7QUFDekMsTUFBTUMsYUFBYUosZ0JBQWdCLENBQUMsSUFBSUMsUUFBUUMsSUFBSSxDQUFDRixjQUFjLEVBQUUsR0FBR0s7QUFDeEUsTUFBTUMsZ0JBQWdCTCxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUMzQyxNQUFNSSxXQUFXRCxrQkFBa0IsQ0FBQyxJQUFJTCxRQUFRQyxJQUFJLENBQUNJLGdCQUFnQixFQUFFLEdBQUdEO0FBRTFFRyxjQUFNLENBQUNDLGNBQWMsQ0FBQztJQUNyQkYsVUFBVUcsSUFBQUEsdUJBQWUsRUFBQ0gsYUFBYUksdUJBQWU7SUFDdERDLE1BQU07QUFDUDtBQUVBLE1BQU1DLFNBQVNMLGNBQU0sQ0FBQ0ssTUFBTSxDQUFDO0FBQzdCLE1BQU1DLE1BQU0sTUFBTUMsc0JBQVUsQ0FBQ0MsTUFBTSxDQUFDO0lBQUNDLGtCQUFXO0NBQUMsRUFBRTtJQUFFYjtJQUFZRztBQUFTO0FBQzFFLElBQUlXLFdBQVc7QUFDZixJQUFJO0lBQ0gsOEZBQThGO0lBQzlGLE1BQU1KLElBQUlLLEdBQUcsQ0FBQztRQUFDO1dBQVlsQixRQUFRQyxJQUFJLENBQUNrQixLQUFLLENBQUM7S0FBRztBQUNsRCxFQUFFLE9BQU9DLEtBQUs7SUFDYlIsT0FBT1MsS0FBSyxDQUFDLHVCQUF1QkQ7SUFDcENILFdBQVcsQ0FBQztBQUNiLFNBQVU7SUFDVFYsY0FBTSxDQUFDZSxLQUFLLENBQUMsSUFBTXRCLFFBQVF1QixJQUFJLENBQUNOO0FBQ2pDIn0=
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ require("@decohere/scribe-pino");
6
+ require("pino-pretty");
7
+
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvbG9nZ2VyLnNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIkBkZWNvaGVyZS9zY3JpYmUtcGlub1wiO1xuaW1wb3J0IFwicGluby1wcmV0dHlcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1FBQU87UUFDQSJ9
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ModuleFactory", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ModuleFactory;
9
+ }
10
+ });
11
+ const _crucible = require("@decohere/crucible");
12
+ class ModuleFactory {
13
+ static create(module, onResponse, config) {
14
+ const moduleConfig = config?.[module.id];
15
+ const actions = {
16
+ ...module.actions,
17
+ ...moduleConfig?.actions
18
+ };
19
+ const commands = {
20
+ ...module.commands,
21
+ ...moduleConfig?.commands
22
+ };
23
+ const workspaceOptions = {
24
+ configFile: config?.configFile,
25
+ rootDir: config?.rootDir
26
+ };
27
+ let container;
28
+ const handler = async (_optionVals, program)=>{
29
+ const commandOptions = program.optsWithGlobals();
30
+ container = await buildContainer(module, actions, workspaceOptions);
31
+ const resolved = resolveActions(container, actions);
32
+ const response = await program.run(resolved, commandOptions);
33
+ onResponse(module.id, response);
34
+ };
35
+ const command = new module.command(commands, handler);
36
+ command.name(module.id);
37
+ return {
38
+ id: module.id,
39
+ command,
40
+ dispose: ()=>container?.[Symbol.dispose](),
41
+ asyncDispose: ()=>container?.[Symbol.asyncDispose]()
42
+ };
43
+ }
44
+ }
45
+ async function buildContainer(module, actions, workspaceOptions) {
46
+ const builder = new _crucible.CrucibleBuilder();
47
+ const workspace = await module.createWorkspace(workspaceOptions ?? {});
48
+ if (workspace !== null) {
49
+ builder.registerSingleton(workspace.constructor, workspace);
50
+ }
51
+ module.registerServices(builder);
52
+ for (const ActionClass of Object.values(actions)){
53
+ builder.registerSingleton(ActionClass);
54
+ }
55
+ return builder.build();
56
+ }
57
+ function resolveActions(container, actions) {
58
+ return Object.fromEntries(Object.entries(actions).map(([key, ActionClass])=>[
59
+ key,
60
+ container.resolve(ActionClass)
61
+ ]));
62
+ }
63
+
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvbW9kdWxlLmZhY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1Y2libGVCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZVwiO1xuaW1wb3J0IHR5cGUge1xuXHRBY3Rpb25DbGFzc01hcCxcblx0QWN0aW9ucyxcblx0QXBwbGljYXRpb25Nb2R1bGUsXG5cdENvbW1hbmRIYW5kbGVyLFxuXHRDb21tYW5kUmVzcG9uc2UsXG5cdE1vZHVsZUNvbmZpZyxcblx0TW9kdWxlTWFuaWZlc3QsXG5cdFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zLFxufSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogV2lyZXMgYSBNb2R1bGVNYW5pZmVzdCBpbnRvIGEgZnVsbHkgZnVuY3Rpb25hbCBBcHBsaWNhdGlvbk1vZHVsZS5cbiAqIEhhbmRsZXMgREkgY29udGFpbmVyIHNldHVwLCBhY3Rpb24gcmVnaXN0cmF0aW9uL3Jlc29sdXRpb24sIGFuZFxuICogZm9yd2FyZGluZyB0aGUgY29tbWFuZCByZXNwb25zZSB0byB0aGUgY2FsbGVyLlxuICovXG5leHBvcnQgY2xhc3MgTW9kdWxlRmFjdG9yeSB7XG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKFxuXHRcdG1vZHVsZTogTW9kdWxlTWFuaWZlc3QsXG5cdFx0b25SZXNwb25zZTogKG1vZHVsZUlkOiBzdHJpbmcsIHJlc3BvbnNlOiBDb21tYW5kUmVzcG9uc2UpID0+IHZvaWQsXG5cdFx0Y29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdCk6IEFwcGxpY2F0aW9uTW9kdWxlIHtcblx0XHRjb25zdCBtb2R1bGVDb25maWcgPSBjb25maWc/Llttb2R1bGUuaWRdIGFzIE1vZHVsZUNvbmZpZyB8IHVuZGVmaW5lZDtcblx0XHRjb25zdCBhY3Rpb25zOiBBY3Rpb25DbGFzc01hcCA9IHsgLi4ubW9kdWxlLmFjdGlvbnMsIC4uLm1vZHVsZUNvbmZpZz8uYWN0aW9ucyB9O1xuXHRcdGNvbnN0IGNvbW1hbmRzID0geyAuLi5tb2R1bGUuY29tbWFuZHMsIC4uLm1vZHVsZUNvbmZpZz8uY29tbWFuZHMgfTtcblx0XHRjb25zdCB3b3Jrc3BhY2VPcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucyA9IHtcblx0XHRcdGNvbmZpZ0ZpbGU6IGNvbmZpZz8uY29uZmlnRmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0XHRyb290RGlyOiBjb25maWc/LnJvb3REaXIgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdH07XG5cdFx0bGV0IGNvbnRhaW5lcjogUmV0dXJuVHlwZTxDcnVjaWJsZUJ1aWxkZXJbXCJidWlsZFwiXT4gfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBoYW5kbGVyOiBDb21tYW5kSGFuZGxlciA9IGFzeW5jIChfb3B0aW9uVmFscywgcHJvZ3JhbSkgPT4ge1xuXHRcdFx0Y29uc3QgY29tbWFuZE9wdGlvbnMgPSBwcm9ncmFtLm9wdHNXaXRoR2xvYmFscygpO1xuXHRcdFx0Y29udGFpbmVyID0gYXdhaXQgYnVpbGRDb250YWluZXIobW9kdWxlLCBhY3Rpb25zLCB3b3Jrc3BhY2VPcHRpb25zKTtcblx0XHRcdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUFjdGlvbnMoY29udGFpbmVyLCBhY3Rpb25zKTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcHJvZ3JhbS5ydW4ocmVzb2x2ZWQgYXMgQWN0aW9ucywgY29tbWFuZE9wdGlvbnMpO1xuXHRcdFx0b25SZXNwb25zZShtb2R1bGUuaWQsIHJlc3BvbnNlKTtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29tbWFuZCA9IG5ldyBtb2R1bGUuY29tbWFuZChjb21tYW5kcywgaGFuZGxlcik7XG5cdFx0Y29tbWFuZC5uYW1lKG1vZHVsZS5pZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aWQ6IG1vZHVsZS5pZCxcblx0XHRcdGNvbW1hbmQsXG5cdFx0XHRkaXNwb3NlOiAoKSA9PiBjb250YWluZXI/LltTeW1ib2wuZGlzcG9zZV0oKSxcblx0XHRcdGFzeW5jRGlzcG9zZTogKCkgPT4gY29udGFpbmVyPy5bU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSxcblx0XHR9O1xuXHR9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29udGFpbmVyKFxuXHRtb2R1bGU6IE1vZHVsZU1hbmlmZXN0LFxuXHRhY3Rpb25zOiBBY3Rpb25DbGFzc01hcCxcblx0d29ya3NwYWNlT3B0aW9ucz86IFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zLFxuKSB7XG5cdGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3J1Y2libGVCdWlsZGVyKCk7XG5cdGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IG1vZHVsZS5jcmVhdGVXb3Jrc3BhY2Uod29ya3NwYWNlT3B0aW9ucyA/PyB7fSk7XG5cdGlmICh3b3Jrc3BhY2UgIT09IG51bGwpIHtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKHdvcmtzcGFjZS5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlLCB3b3Jrc3BhY2UpO1xuXHR9XG5cblx0bW9kdWxlLnJlZ2lzdGVyU2VydmljZXMoYnVpbGRlcik7XG5cdGZvciAoY29uc3QgQWN0aW9uQ2xhc3Mgb2YgT2JqZWN0LnZhbHVlcyhhY3Rpb25zKSkge1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oQWN0aW9uQ2xhc3MgYXMgQ29uc3RydWN0YWJsZSk7XG5cdH1cblx0cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbnMoXG5cdGNvbnRhaW5lcjogUmV0dXJuVHlwZTxDcnVjaWJsZUJ1aWxkZXJbXCJidWlsZFwiXT4sXG5cdGFjdGlvbnM6IEFjdGlvbkNsYXNzTWFwLFxuKTogUmVjb3JkPHN0cmluZywgb2JqZWN0PiB7XG5cdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0T2JqZWN0LmVudHJpZXMoYWN0aW9ucykubWFwKChba2V5LCBBY3Rpb25DbGFzc10pID0+IFtcblx0XHRcdGtleSxcblx0XHRcdGNvbnRhaW5lci5yZXNvbHZlKEFjdGlvbkNsYXNzIGFzIENvbnN0cnVjdGFibGUpLFxuXHRcdF0pLFxuXHQpO1xufVxuIl0sIm5hbWVzIjpbIk1vZHVsZUZhY3RvcnkiLCJjcmVhdGUiLCJtb2R1bGUiLCJvblJlc3BvbnNlIiwiY29uZmlnIiwibW9kdWxlQ29uZmlnIiwiaWQiLCJhY3Rpb25zIiwiY29tbWFuZHMiLCJ3b3Jrc3BhY2VPcHRpb25zIiwiY29uZmlnRmlsZSIsInJvb3REaXIiLCJjb250YWluZXIiLCJoYW5kbGVyIiwiX29wdGlvblZhbHMiLCJwcm9ncmFtIiwiY29tbWFuZE9wdGlvbnMiLCJvcHRzV2l0aEdsb2JhbHMiLCJidWlsZENvbnRhaW5lciIsInJlc29sdmVkIiwicmVzb2x2ZUFjdGlvbnMiLCJyZXNwb25zZSIsInJ1biIsImNvbW1hbmQiLCJuYW1lIiwiZGlzcG9zZSIsIlN5bWJvbCIsImFzeW5jRGlzcG9zZSIsImJ1aWxkZXIiLCJDcnVjaWJsZUJ1aWxkZXIiLCJ3b3Jrc3BhY2UiLCJjcmVhdGVXb3Jrc3BhY2UiLCJyZWdpc3RlclNpbmdsZXRvbiIsInJlZ2lzdGVyU2VydmljZXMiLCJBY3Rpb25DbGFzcyIsIk9iamVjdCIsInZhbHVlcyIsImJ1aWxkIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwibWFwIiwia2V5IiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQmFBOzs7ZUFBQUE7OzswQkFsQm1CO0FBa0J6QixNQUFNQTtJQUNaLE9BQWNDLE9BQ2JDLE1BQXNCLEVBQ3RCQyxVQUFpRSxFQUNqRUMsTUFBZ0MsRUFDWjtRQUNwQixNQUFNQyxlQUFlRCxRQUFRLENBQUNGLE9BQU9JLEVBQUUsQ0FBQztRQUN4QyxNQUFNQyxVQUEwQjtZQUFFLEdBQUdMLE9BQU9LLE9BQU87WUFBRSxHQUFHRixjQUFjRSxPQUFPO1FBQUM7UUFDOUUsTUFBTUMsV0FBVztZQUFFLEdBQUdOLE9BQU9NLFFBQVE7WUFBRSxHQUFHSCxjQUFjRyxRQUFRO1FBQUM7UUFDakUsTUFBTUMsbUJBQTRDO1lBQ2pEQyxZQUFZTixRQUFRTTtZQUNwQkMsU0FBU1AsUUFBUU87UUFDbEI7UUFDQSxJQUFJQztRQUVKLE1BQU1DLFVBQTBCLE9BQU9DLGFBQWFDO1lBQ25ELE1BQU1DLGlCQUFpQkQsUUFBUUUsZUFBZTtZQUM5Q0wsWUFBWSxNQUFNTSxlQUFlaEIsUUFBUUssU0FBU0U7WUFDbEQsTUFBTVUsV0FBV0MsZUFBZVIsV0FBV0w7WUFDM0MsTUFBTWMsV0FBVyxNQUFNTixRQUFRTyxHQUFHLENBQUNILFVBQXFCSDtZQUN4RGIsV0FBV0QsT0FBT0ksRUFBRSxFQUFFZTtRQUN2QjtRQUVBLE1BQU1FLFVBQVUsSUFBSXJCLE9BQU9xQixPQUFPLENBQUNmLFVBQVVLO1FBQzdDVSxRQUFRQyxJQUFJLENBQUN0QixPQUFPSSxFQUFFO1FBRXRCLE9BQU87WUFDTkEsSUFBSUosT0FBT0ksRUFBRTtZQUNiaUI7WUFDQUUsU0FBUyxJQUFNYixXQUFXLENBQUNjLE9BQU9ELE9BQU8sQ0FBQztZQUMxQ0UsY0FBYyxJQUFNZixXQUFXLENBQUNjLE9BQU9DLFlBQVksQ0FBQztRQUNyRDtJQUNEO0FBQ0Q7QUFFQSxlQUFlVCxlQUNkaEIsTUFBc0IsRUFDdEJLLE9BQXVCLEVBQ3ZCRSxnQkFBMEM7SUFFMUMsTUFBTW1CLFVBQVUsSUFBSUMseUJBQWU7SUFDbkMsTUFBTUMsWUFBWSxNQUFNNUIsT0FBTzZCLGVBQWUsQ0FBQ3RCLG9CQUFvQixDQUFDO0lBQ3BFLElBQUlxQixjQUFjLE1BQU07UUFDdkJGLFFBQVFJLGlCQUFpQixDQUFDRixVQUFVLFdBQVcsRUFBbUJBO0lBQ25FO0lBRUE1QixPQUFPK0IsZ0JBQWdCLENBQUNMO0lBQ3hCLEtBQUssTUFBTU0sZUFBZUMsT0FBT0MsTUFBTSxDQUFDN0IsU0FBVTtRQUNqRHFCLFFBQVFJLGlCQUFpQixDQUFDRTtJQUMzQjtJQUNBLE9BQU9OLFFBQVFTLEtBQUs7QUFDckI7QUFFQSxTQUFTakIsZUFDUlIsU0FBK0MsRUFDL0NMLE9BQXVCO0lBRXZCLE9BQU80QixPQUFPRyxXQUFXLENBQ3hCSCxPQUFPSSxPQUFPLENBQUNoQyxTQUFTaUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0MsS0FBS1AsWUFBWSxHQUFLO1lBQ25ETztZQUNBN0IsVUFBVThCLE9BQU8sQ0FBQ1I7U0FDbEI7QUFFSCJ9
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "productCli", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return productCli;
9
+ }
10
+ });
11
+ const _flux = require("@decohere/flux");
12
+ const _forge = require("@decohere/forge");
13
+ const _rootmodule = require("./root.module.js");
14
+ const _scaffoldhost = require("./scaffold-host.js");
15
+ const modules = [
16
+ _forge.ForgeModule,
17
+ _flux.FluxModule,
18
+ _scaffoldhost.HostCreateModule,
19
+ _scaffoldhost.HostAddModule
20
+ ];
21
+ function create(options) {
22
+ return _rootmodule.RootModule.create(modules, options);
23
+ }
24
+ const productCli = {
25
+ create,
26
+ modules
27
+ };
28
+
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcHJvZHVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbHV4TW9kdWxlIH0gZnJvbSBcIkBkZWNvaGVyZS9mbHV4XCI7XG5pbXBvcnQgeyBGb3JnZU1vZHVsZSB9IGZyb20gXCJAZGVjb2hlcmUvZm9yZ2VcIjtcbmltcG9ydCB7IFJvb3RNb2R1bGUgfSBmcm9tIFwiLi9yb290Lm1vZHVsZS5qc1wiO1xuaW1wb3J0IHsgSG9zdEFkZE1vZHVsZSwgSG9zdENyZWF0ZU1vZHVsZSB9IGZyb20gXCIuL3NjYWZmb2xkLWhvc3QuanNcIjtcblxuY29uc3QgbW9kdWxlcyA9IFtGb3JnZU1vZHVsZSwgRmx1eE1vZHVsZSwgSG9zdENyZWF0ZU1vZHVsZSwgSG9zdEFkZE1vZHVsZV0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zPzoge1xuXHRjb25maWdGaWxlPzogc3RyaW5nO1xuXHRsb2dMZXZlbD86IHN0cmluZztcblx0cm9vdERpcj86IHN0cmluZztcbn0pOiBQcm9taXNlPFJvb3RNb2R1bGU+IHtcblx0cmV0dXJuIFJvb3RNb2R1bGUuY3JlYXRlKG1vZHVsZXMsIG9wdGlvbnMpO1xufVxuXG4vKiogU2hpcHBlZCBgZGVjb2hlcmVgIGJpbiDigJQgZm9yZ2UsIGZsdXgsIGNyZWF0ZSwgYWRkLiAqL1xuZXhwb3J0IGNvbnN0IHByb2R1Y3RDbGkgPSB7IGNyZWF0ZSwgbW9kdWxlcyB9O1xuIl0sIm5hbWVzIjpbInByb2R1Y3RDbGkiLCJtb2R1bGVzIiwiRm9yZ2VNb2R1bGUiLCJGbHV4TW9kdWxlIiwiSG9zdENyZWF0ZU1vZHVsZSIsIkhvc3RBZGRNb2R1bGUiLCJjcmVhdGUiLCJvcHRpb25zIiwiUm9vdE1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFnQmFBOzs7ZUFBQUE7OztzQkFoQmM7dUJBQ0M7NEJBQ0Q7OEJBQ3FCO0FBRWhELE1BQU1DLFVBQVU7SUFBQ0Msa0JBQVc7SUFBRUMsZ0JBQVU7SUFBRUMsOEJBQWdCO0lBQUVDLDJCQUFhO0NBQUM7QUFFMUUsU0FBU0MsT0FBT0MsT0FJZjtJQUNBLE9BQU9DLHNCQUFVLENBQUNGLE1BQU0sQ0FBQ0wsU0FBU007QUFDbkM7QUFHTyxNQUFNUCxhQUFhO0lBQUVNO0lBQVFMO0FBQVEifQ==
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "RootCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return RootCommand;
9
+ }
10
+ });
11
+ const _mesh = require("@decohere/mesh");
12
+ const _cli = require("@decohere/nexus/cli");
13
+ const _commander = require("commander");
14
+ class RootCommand extends _cli.DecohereCommand {
15
+ #configFile;
16
+ constructor(modules, configFile){
17
+ super();
18
+ this.#configFile = configFile;
19
+ this.addOption(new _cli.ConfigFileOption());
20
+ this.addOption(new _cli.LogLevelOption());
21
+ for (const mod of modules){
22
+ this.addCommand(mod.command);
23
+ }
24
+ }
25
+ async parseAsync(argv, options) {
26
+ if (argv?.includes("--version") || argv?.includes("-V")) {
27
+ const workspace = await _mesh.WorkspaceFactory.create({
28
+ configFile: this.#configFile
29
+ });
30
+ const version = await workspace.getVersion() ?? "unknown";
31
+ process.stdout.write(`${version}\n`);
32
+ throw new _commander.CommanderError(0, "commander.version", version);
33
+ }
34
+ return super.parseAsync(argv, options);
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcm9vdC5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7XG5cdHR5cGUgQXBwbGljYXRpb25Nb2R1bGUsXG5cdENvbmZpZ0ZpbGVPcHRpb24sXG5cdERlY29oZXJlQ29tbWFuZCxcblx0TG9nTGV2ZWxPcHRpb24sXG59IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBDb21tYW5kZXJFcnJvciwgdHlwZSBQYXJzZU9wdGlvbnMgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBSb290Q29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHJlYWRvbmx5ICNjb25maWdGaWxlPzogc3RyaW5nO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihtb2R1bGVzOiBBcHBsaWNhdGlvbk1vZHVsZVtdLCBjb25maWdGaWxlPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLiNjb25maWdGaWxlID0gY29uZmlnRmlsZTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlnRmlsZU9wdGlvbigpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgTG9nTGV2ZWxPcHRpb24oKSk7XG5cblx0XHRmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzKSB7XG5cdFx0XHR0aGlzLmFkZENvbW1hbmQobW9kLmNvbW1hbmQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBwYXJzZUFzeW5jKFxuXHRcdGFyZ3Y/OiByZWFkb25seSBzdHJpbmdbXSxcblx0XHRvcHRpb25zPzogUGFyc2VPcHRpb25zLFxuXHQpOiBQcm9taXNlPHRoaXM+IHtcblx0XHRpZiAoYXJndj8uaW5jbHVkZXMoXCItLXZlcnNpb25cIikgfHwgYXJndj8uaW5jbHVkZXMoXCItVlwiKSkge1xuXHRcdFx0Y29uc3Qgd29ya3NwYWNlID0gYXdhaXQgV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoeyBjb25maWdGaWxlOiB0aGlzLiNjb25maWdGaWxlIH0pO1xuXHRcdFx0Y29uc3QgdmVyc2lvbiA9IChhd2FpdCB3b3Jrc3BhY2UuZ2V0VmVyc2lvbigpKSA/PyBcInVua25vd25cIjtcblx0XHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3ZlcnNpb259XFxuYCk7XG5cdFx0XHR0aHJvdyBuZXcgQ29tbWFuZGVyRXJyb3IoMCwgXCJjb21tYW5kZXIudmVyc2lvblwiLCB2ZXJzaW9uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gc3VwZXIucGFyc2VBc3luYyhhcmd2IGFzIHN0cmluZ1tdLCBvcHRpb25zKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlJvb3RDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwibW9kdWxlcyIsImNvbmZpZ0ZpbGUiLCJhZGRPcHRpb24iLCJDb25maWdGaWxlT3B0aW9uIiwiTG9nTGV2ZWxPcHRpb24iLCJtb2QiLCJhZGRDb21tYW5kIiwiY29tbWFuZCIsInBhcnNlQXN5bmMiLCJhcmd2Iiwib3B0aW9ucyIsImluY2x1ZGVzIiwid29ya3NwYWNlIiwiV29ya3NwYWNlRmFjdG9yeSIsImNyZWF0ZSIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwicHJvY2VzcyIsInN0ZG91dCIsIndyaXRlIiwiQ29tbWFuZGVyRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBU2FBOzs7ZUFBQUE7OztzQkFUb0I7cUJBTTFCOzJCQUMyQztBQUUzQyxNQUFNQSxvQkFBb0JDLG9CQUFlO0lBQ3RDLENBQUEsVUFBVyxDQUFVO0lBRTlCLFlBQW1CQyxPQUE0QixFQUFFQyxVQUFtQixDQUFFO1FBQ3JFLEtBQUs7UUFDTCxJQUFJLENBQUMsQ0FBQSxVQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlDLHFCQUFnQjtRQUNuQyxJQUFJLENBQUNELFNBQVMsQ0FBQyxJQUFJRSxtQkFBYztRQUVqQyxLQUFLLE1BQU1DLE9BQU9MLFFBQVM7WUFDMUIsSUFBSSxDQUFDTSxVQUFVLENBQUNELElBQUlFLE9BQU87UUFDNUI7SUFDRDtJQUVBLE1BQXNCQyxXQUNyQkMsSUFBd0IsRUFDeEJDLE9BQXNCLEVBQ047UUFDaEIsSUFBSUQsTUFBTUUsU0FBUyxnQkFBZ0JGLE1BQU1FLFNBQVMsT0FBTztZQUN4RCxNQUFNQyxZQUFZLE1BQU1DLHNCQUFnQixDQUFDQyxNQUFNLENBQUM7Z0JBQUViLFlBQVksSUFBSSxDQUFDLENBQUEsVUFBVztZQUFDO1lBQy9FLE1BQU1jLFVBQVUsQUFBQyxNQUFNSCxVQUFVSSxVQUFVLE1BQU87WUFDbERDLFFBQVFDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLEdBQUdKLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSUsseUJBQWMsQ0FBQyxHQUFHLHFCQUFxQkw7UUFDbEQ7UUFFQSxPQUFPLEtBQUssQ0FBQ1AsV0FBV0MsTUFBa0JDO0lBQzNDO0FBQ0QifQ==
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "RootModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return RootModule;
9
+ }
10
+ });
11
+ const _mesh = require("@decohere/mesh");
12
+ const _cli = require("@decohere/nexus/cli");
13
+ const _diagnostics = require("@decohere/nexus/diagnostics");
14
+ const _commander = require("commander");
15
+ const _modulefactory = require("./module.factory.js");
16
+ const _rootcommand = require("./root.command.js");
17
+ function _ts_decorate(decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ }
23
+ function _ts_metadata(k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ }
26
+ class RootModule {
27
+ static async create(moduleTypes, options) {
28
+ const userConfig = await _mesh.UserConfigFactory.getUserConfig(options?.configFile);
29
+ return new RootModule(moduleTypes, {
30
+ ...userConfig,
31
+ configFile: options?.configFile,
32
+ rootDir: options?.rootDir
33
+ });
34
+ }
35
+ #command;
36
+ #modules;
37
+ #lastResponse = {};
38
+ constructor(manifestClasses, config){
39
+ const modules = manifestClasses.map((ManifestClass)=>{
40
+ const manifest = new ManifestClass();
41
+ return _modulefactory.ModuleFactory.create(manifest, this.onResponse, config);
42
+ });
43
+ this.#modules = modules;
44
+ this.#command = new _rootcommand.RootCommand(modules, config.configFile);
45
+ }
46
+ onResponse = (_moduleId, response)=>{
47
+ this.#lastResponse = response;
48
+ };
49
+ async run(argv) {
50
+ try {
51
+ await this.#command.parseAsync(argv, argv ? {
52
+ from: "user"
53
+ } : undefined);
54
+ if (this.isBlocking(this.#lastResponse)) {
55
+ await new Promise((resolve)=>process.once("SIGINT", resolve));
56
+ }
57
+ return this.#lastResponse;
58
+ } catch (error) {
59
+ if (this.isCommanderHelpOrVersion(error)) {
60
+ return _cli.CommandResponse.help();
61
+ }
62
+ throw error;
63
+ } finally{
64
+ await this[Symbol.asyncDispose]();
65
+ }
66
+ }
67
+ get commands() {
68
+ return this.#command.commands;
69
+ }
70
+ [Symbol.dispose]() {
71
+ for (const mod of this.#modules){
72
+ mod.dispose?.();
73
+ }
74
+ }
75
+ async [Symbol.asyncDispose]() {
76
+ for (const mod of this.#modules){
77
+ await mod.asyncDispose?.();
78
+ }
79
+ }
80
+ isBlocking(response) {
81
+ return Object.values(response).some((r)=>r?.blocking === true);
82
+ }
83
+ isCommanderHelpOrVersion(error) {
84
+ const isCommanderError = error instanceof _commander.CommanderError;
85
+ const helpCodes = [
86
+ "commander.helpDisplayed",
87
+ "commander.version",
88
+ "commander.help"
89
+ ];
90
+ return isCommanderError && helpCodes.includes(error.code);
91
+ }
92
+ }
93
+ RootModule = _ts_decorate([
94
+ _diagnostics.Trace,
95
+ _ts_metadata("design:type", Function),
96
+ _ts_metadata("design:paramtypes", [
97
+ Object,
98
+ typeof Record === "undefined" ? Object : Record
99
+ ])
100
+ ], RootModule);
101
+
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcm9vdC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9ucywgQXBwbGljYXRpb25Nb2R1bGUsIE1vZHVsZU1hbmlmZXN0IH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IENvbW1hbmRSZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ29tbWFuZGVyRXJyb3IgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBNb2R1bGVGYWN0b3J5IH0gZnJvbSBcIi4vbW9kdWxlLmZhY3RvcnkuanNcIjtcbmltcG9ydCB7IFJvb3RDb21tYW5kIH0gZnJvbSBcIi4vcm9vdC5jb21tYW5kLmpzXCI7XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFJvb3RNb2R1bGUge1xuXHRwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZShcblx0XHRtb2R1bGVUeXBlczogcmVhZG9ubHkgQ29uc3RydWN0YWJsZTxNb2R1bGVNYW5pZmVzdD5bXSxcblx0XHRvcHRpb25zPzogeyBjb25maWdGaWxlPzogc3RyaW5nOyBsb2dMZXZlbD86IHN0cmluZzsgcm9vdERpcj86IHN0cmluZyB9LFxuXHQpOiBQcm9taXNlPFJvb3RNb2R1bGU+IHtcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zPy5jb25maWdGaWxlKTtcblx0XHRyZXR1cm4gbmV3IFJvb3RNb2R1bGUobW9kdWxlVHlwZXMsIHtcblx0XHRcdC4uLnVzZXJDb25maWcsXG5cdFx0XHRjb25maWdGaWxlOiBvcHRpb25zPy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucz8ucm9vdERpcixcblx0XHR9KTtcblx0fVxuXG5cdHJlYWRvbmx5ICNjb21tYW5kOiBSb290Q29tbWFuZDtcblx0cmVhZG9ubHkgI21vZHVsZXM6IEFwcGxpY2F0aW9uTW9kdWxlW107XG5cdCNsYXN0UmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSA9IHt9O1xuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoXG5cdFx0bWFuaWZlc3RDbGFzc2VzOiByZWFkb25seSBDb25zdHJ1Y3RhYmxlPE1vZHVsZU1hbmlmZXN0PltdLFxuXHRcdGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdCkge1xuXHRcdGNvbnN0IG1vZHVsZXMgPSBtYW5pZmVzdENsYXNzZXMubWFwKChNYW5pZmVzdENsYXNzKSA9PiB7XG5cdFx0XHRjb25zdCBtYW5pZmVzdCA9IG5ldyBNYW5pZmVzdENsYXNzKCk7XG5cdFx0XHRyZXR1cm4gTW9kdWxlRmFjdG9yeS5jcmVhdGUobWFuaWZlc3QsIHRoaXMub25SZXNwb25zZSwgY29uZmlnKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuI21vZHVsZXMgPSBtb2R1bGVzO1xuXHRcdHRoaXMuI2NvbW1hbmQgPSBuZXcgUm9vdENvbW1hbmQobW9kdWxlcywgY29uZmlnLmNvbmZpZ0ZpbGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcblx0fVxuXG5cdHByaXZhdGUgb25SZXNwb25zZSA9IChfbW9kdWxlSWQ6IHN0cmluZywgcmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSkgPT4ge1xuXHRcdHRoaXMuI2xhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xuXHR9O1xuXG5cdHB1YmxpYyBhc3luYyBydW48VEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zPihcblx0XHRhcmd2Pzogc3RyaW5nW10sXG5cdCk6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPFRBY3Rpb25zPj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLiNjb21tYW5kLnBhcnNlQXN5bmMoYXJndiwgYXJndiA/IHsgZnJvbTogXCJ1c2VyXCIgfSA6IHVuZGVmaW5lZCk7XG5cdFx0XHRpZiAodGhpcy5pc0Jsb2NraW5nKHRoaXMuI2xhc3RSZXNwb25zZSkpIHtcblx0XHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCByZXNvbHZlKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy4jbGFzdFJlc3BvbnNlIGFzIENvbW1hbmRSZXNwb25zZTxUQWN0aW9ucz47XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICh0aGlzLmlzQ29tbWFuZGVySGVscE9yVmVyc2lvbihlcnJvcikpIHtcblx0XHRcdFx0cmV0dXJuIENvbW1hbmRSZXNwb25zZS5oZWxwPFRBY3Rpb25zPigpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0YXdhaXQgdGhpc1tTeW1ib2wuYXN5bmNEaXNwb3NlXSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXQgY29tbWFuZHMoKTogQ29tbWFuZFtdIHtcblx0XHRyZXR1cm4gdGhpcy4jY29tbWFuZC5jb21tYW5kcyBhcyBDb21tYW5kW107XG5cdH1cblxuXHRwdWJsaWMgW1N5bWJvbC5kaXNwb3NlXSgpIHtcblx0XHRmb3IgKGNvbnN0IG1vZCBvZiB0aGlzLiNtb2R1bGVzKSB7XG5cdFx0XHRtb2QuZGlzcG9zZT8uKCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFzeW5jIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcblx0XHRmb3IgKGNvbnN0IG1vZCBvZiB0aGlzLiNtb2R1bGVzKSB7XG5cdFx0XHRhd2FpdCBtb2QuYXN5bmNEaXNwb3NlPy4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzQmxvY2tpbmcocmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBPYmplY3QudmFsdWVzKHJlc3BvbnNlKS5zb21lKChyKSA9PiByPy5ibG9ja2luZyA9PT0gdHJ1ZSk7XG5cdH1cblxuXHRwcml2YXRlIGlzQ29tbWFuZGVySGVscE9yVmVyc2lvbihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGlzQ29tbWFuZGVyRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENvbW1hbmRlckVycm9yO1xuXHRcdGNvbnN0IGhlbHBDb2RlcyA9IFtcImNvbW1hbmRlci5oZWxwRGlzcGxheWVkXCIsIFwiY29tbWFuZGVyLnZlcnNpb25cIiwgXCJjb21tYW5kZXIuaGVscFwiXTtcblx0XHRyZXR1cm4gaXNDb21tYW5kZXJFcnJvciAmJiBoZWxwQ29kZXMuaW5jbHVkZXMoZXJyb3IuY29kZSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJSb290TW9kdWxlIiwiY3JlYXRlIiwibW9kdWxlVHlwZXMiLCJvcHRpb25zIiwidXNlckNvbmZpZyIsIlVzZXJDb25maWdGYWN0b3J5IiwiZ2V0VXNlckNvbmZpZyIsImNvbmZpZ0ZpbGUiLCJyb290RGlyIiwibWFuaWZlc3RDbGFzc2VzIiwiY29uZmlnIiwibW9kdWxlcyIsIm1hcCIsIk1hbmlmZXN0Q2xhc3MiLCJtYW5pZmVzdCIsIk1vZHVsZUZhY3RvcnkiLCJvblJlc3BvbnNlIiwiUm9vdENvbW1hbmQiLCJfbW9kdWxlSWQiLCJyZXNwb25zZSIsInJ1biIsImFyZ3YiLCJwYXJzZUFzeW5jIiwiZnJvbSIsInVuZGVmaW5lZCIsImlzQmxvY2tpbmciLCJQcm9taXNlIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJvbmNlIiwiZXJyb3IiLCJpc0NvbW1hbmRlckhlbHBPclZlcnNpb24iLCJDb21tYW5kUmVzcG9uc2UiLCJoZWxwIiwiU3ltYm9sIiwiYXN5bmNEaXNwb3NlIiwiY29tbWFuZHMiLCJkaXNwb3NlIiwibW9kIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsInIiLCJibG9ja2luZyIsImlzQ29tbWFuZGVyRXJyb3IiLCJDb21tYW5kZXJFcnJvciIsImhlbHBDb2RlcyIsImluY2x1ZGVzIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFXYUE7OztlQUFBQTs7O3NCQVhxQjtxQkFFRjs2QkFDVjsyQkFHUzsrQkFDRDs2QkFDRjs7Ozs7Ozs7OztBQUdyQixNQUFNQTtJQUNaLGFBQW9CQyxPQUNuQkMsV0FBcUQsRUFDckRDLE9BQXNFLEVBQ2hEO1FBQ3RCLE1BQU1DLGFBQWEsTUFBTUMsdUJBQWlCLENBQUNDLGFBQWEsQ0FBQ0gsU0FBU0k7UUFDbEUsT0FBTyxJQUFJUCxXQUFXRSxhQUFhO1lBQ2xDLEdBQUdFLFVBQVU7WUFDYkcsWUFBWUosU0FBU0k7WUFDckJDLFNBQVNMLFNBQVNLO1FBQ25CO0lBQ0Q7SUFFUyxDQUFBLE9BQVEsQ0FBYztJQUN0QixDQUFBLE9BQVEsQ0FBc0I7SUFDdkMsQ0FBQSxZQUFhLEdBQW9CLENBQUMsRUFBRTtJQUVwQyxZQUNDQyxlQUF5RCxFQUN6REMsTUFBK0IsQ0FDOUI7UUFDRCxNQUFNQyxVQUFVRixnQkFBZ0JHLEdBQUcsQ0FBQyxDQUFDQztZQUNwQyxNQUFNQyxXQUFXLElBQUlEO1lBQ3JCLE9BQU9FLDRCQUFhLENBQUNkLE1BQU0sQ0FBQ2EsVUFBVSxJQUFJLENBQUNFLFVBQVUsRUFBRU47UUFDeEQ7UUFFQSxJQUFJLENBQUMsQ0FBQSxPQUFRLEdBQUdDO1FBQ2hCLElBQUksQ0FBQyxDQUFBLE9BQVEsR0FBRyxJQUFJTSx3QkFBVyxDQUFDTixTQUFTRCxPQUFPSCxVQUFVO0lBQzNEO0lBRVFTLGFBQWEsQ0FBQ0UsV0FBbUJDO1FBQ3hDLElBQUksQ0FBQyxDQUFBLFlBQWEsR0FBR0E7SUFDdEIsRUFBRTtJQUVGLE1BQWFDLElBQ1pDLElBQWUsRUFDc0I7UUFDckMsSUFBSTtZQUNILE1BQU0sSUFBSSxDQUFDLENBQUEsT0FBUSxDQUFDQyxVQUFVLENBQUNELE1BQU1BLE9BQU87Z0JBQUVFLE1BQU07WUFBTyxJQUFJQztZQUMvRCxJQUFJLElBQUksQ0FBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLFlBQWEsR0FBRztnQkFDeEMsTUFBTSxJQUFJQyxRQUFjLENBQUNDLFVBQVlDLFFBQVFDLElBQUksQ0FBQyxVQUFVRjtZQUM3RDtZQUNBLE9BQU8sSUFBSSxDQUFDLENBQUEsWUFBYTtRQUMxQixFQUFFLE9BQU9HLE9BQU87WUFDZixJQUFJLElBQUksQ0FBQ0Msd0JBQXdCLENBQUNELFFBQVE7Z0JBQ3pDLE9BQU9FLG9CQUFlLENBQUNDLElBQUk7WUFDNUI7WUFFQSxNQUFNSDtRQUNQLFNBQVU7WUFDVCxNQUFNLElBQUksQ0FBQ0ksT0FBT0MsWUFBWSxDQUFDO1FBQ2hDO0lBQ0Q7SUFFQSxJQUFXQyxXQUFzQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFBLE9BQVEsQ0FBQ0EsUUFBUTtJQUM5QjtJQUVPLENBQUNGLE9BQU9HLE9BQU8sQ0FBQyxHQUFHO1FBQ3pCLEtBQUssTUFBTUMsT0FBTyxJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUU7WUFDaENBLElBQUlELE9BQU87UUFDWjtJQUNEO0lBRUEsTUFBYSxDQUFDSCxPQUFPQyxZQUFZLENBQUMsR0FBRztRQUNwQyxLQUFLLE1BQU1HLE9BQU8sSUFBSSxDQUFDLENBQUEsT0FBUSxDQUFFO1lBQ2hDLE1BQU1BLElBQUlILFlBQVk7UUFDdkI7SUFDRDtJQUVRVixXQUFXTixRQUF5QixFQUFXO1FBQ3RELE9BQU9vQixPQUFPQyxNQUFNLENBQUNyQixVQUFVc0IsSUFBSSxDQUFDLENBQUNDLElBQU1BLEdBQUdDLGFBQWE7SUFDNUQ7SUFFUVoseUJBQXlCRCxLQUFjLEVBQVc7UUFDekQsTUFBTWMsbUJBQW1CZCxpQkFBaUJlLHlCQUFjO1FBQ3hELE1BQU1DLFlBQVk7WUFBQztZQUEyQjtZQUFxQjtTQUFpQjtRQUNwRixPQUFPRixvQkFBb0JFLFVBQVVDLFFBQVEsQ0FBQ2pCLE1BQU1rQixJQUFJO0lBQ3pEO0FBQ0QifQ==
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get HostAddModule () {
13
+ return HostAddModule;
14
+ },
15
+ get HostCreateModule () {
16
+ return HostCreateModule;
17
+ }
18
+ });
19
+ const _create = require("@decohere/create");
20
+ const _decorators = require("@decohere/crucible/decorators");
21
+ const _scaffold = require("@decohere/scaffold");
22
+ function _ts_decorate(decorators, target, key, desc) {
23
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ }
28
+ class HostWebapiAction extends _scaffold.WebapiAction {
29
+ async run(options) {
30
+ if (process.env.DECOHERE_BUILDER !== "1") {
31
+ (0, _create.runInBuilder)((0, _create.containerArgvFromHost)(process.argv));
32
+ }
33
+ return super.run(options);
34
+ }
35
+ }
36
+ HostWebapiAction = _ts_decorate([
37
+ (0, _decorators.injectable)()
38
+ ], HostWebapiAction);
39
+ class HostAddApiAction extends _scaffold.AddApiAction {
40
+ async run(options) {
41
+ if (process.env.DECOHERE_BUILDER !== "1") {
42
+ (0, _create.runInBuilder)((0, _create.containerArgvFromHost)(process.argv));
43
+ }
44
+ return super.run(options);
45
+ }
46
+ }
47
+ HostAddApiAction = _ts_decorate([
48
+ (0, _decorators.injectable)()
49
+ ], HostAddApiAction);
50
+ class HostCreateModule extends _scaffold.CreateModule {
51
+ actions = {
52
+ webapi: HostWebapiAction
53
+ };
54
+ }
55
+ class HostAddModule extends _scaffold.AddModule {
56
+ actions = {
57
+ api: HostAddApiAction
58
+ };
59
+ }
60
+
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvc2NhZmZvbGQtaG9zdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb250YWluZXJBcmd2RnJvbUhvc3QsIHJ1bkluQnVpbGRlciB9IGZyb20gXCJAZGVjb2hlcmUvY3JlYXRlXCI7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7XG5cdEFkZEFwaUFjdGlvbixcblx0dHlwZSBBZGRBcGlPcHRpb25zLFxuXHRBZGRNb2R1bGUsXG5cdENyZWF0ZU1vZHVsZSxcblx0V2ViYXBpQWN0aW9uLFxuXHR0eXBlIFdlYmFwaU9wdGlvbnMsXG59IGZyb20gXCJAZGVjb2hlcmUvc2NhZmZvbGRcIjtcblxuQGluamVjdGFibGUoKVxuY2xhc3MgSG9zdFdlYmFwaUFjdGlvbiBleHRlbmRzIFdlYmFwaUFjdGlvbiB7XG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4ob3B0aW9uczogV2ViYXBpT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihjb250YWluZXJBcmd2RnJvbUhvc3QocHJvY2Vzcy5hcmd2KSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5ydW4ob3B0aW9ucyk7XG5cdH1cbn1cblxuQGluamVjdGFibGUoKVxuY2xhc3MgSG9zdEFkZEFwaUFjdGlvbiBleHRlbmRzIEFkZEFwaUFjdGlvbiB7XG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4ob3B0aW9uczogQWRkQXBpT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihjb250YWluZXJBcmd2RnJvbUhvc3QocHJvY2Vzcy5hcmd2KSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5ydW4ob3B0aW9ucyk7XG5cdH1cbn1cblxuLyoqIEhvc3QgYGRlY29oZXJlIGNyZWF0ZWAg4oCUIERvY2tlci1kZWxlZ2F0ZXMgdW5sZXNzIGFscmVhZHkgaW5zaWRlIHRoZSBidWlsZGVyIGltYWdlLiAqL1xuZXhwb3J0IGNsYXNzIEhvc3RDcmVhdGVNb2R1bGUgZXh0ZW5kcyBDcmVhdGVNb2R1bGUge1xuXHRwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgYWN0aW9ucyA9IHsgd2ViYXBpOiBIb3N0V2ViYXBpQWN0aW9uIH07XG59XG5cbi8qKiBIb3N0IGBkZWNvaGVyZSBhZGRgIOKAlCBEb2NrZXItZGVsZWdhdGVzIHVubGVzcyBhbHJlYWR5IGluc2lkZSB0aGUgYnVpbGRlciBpbWFnZS4gKi9cbmV4cG9ydCBjbGFzcyBIb3N0QWRkTW9kdWxlIGV4dGVuZHMgQWRkTW9kdWxlIHtcblx0cHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGFjdGlvbnMgPSB7IGFwaTogSG9zdEFkZEFwaUFjdGlvbiB9O1xufVxuIl0sIm5hbWVzIjpbIkhvc3RBZGRNb2R1bGUiLCJIb3N0Q3JlYXRlTW9kdWxlIiwiSG9zdFdlYmFwaUFjdGlvbiIsIldlYmFwaUFjdGlvbiIsInJ1biIsIm9wdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsInJ1bkluQnVpbGRlciIsImNvbnRhaW5lckFyZ3ZGcm9tSG9zdCIsImFyZ3YiLCJIb3N0QWRkQXBpQWN0aW9uIiwiQWRkQXBpQWN0aW9uIiwiQ3JlYXRlTW9kdWxlIiwiYWN0aW9ucyIsIndlYmFwaSIsIkFkZE1vZHVsZSIsImFwaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFzQ2FBO2VBQUFBOztRQUxBQztlQUFBQTs7O3dCQWpDdUM7NEJBQ3pCOzBCQVNwQjs7Ozs7OztBQUVQLE1BQ01DLHlCQUF5QkMsc0JBQVk7SUFDMUMsTUFBc0JDLElBQUlDLE9BQXNCLEVBQTJCO1FBQzFFLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztZQUN6Q0MsSUFBQUEsb0JBQVksRUFBQ0MsSUFBQUEsNkJBQXFCLEVBQUNKLFFBQVFLLElBQUk7UUFDaEQ7UUFDQSxPQUFPLEtBQUssQ0FBQ1AsSUFBSUM7SUFDbEI7QUFDRDs7OztBQUVBLE1BQ01PLHlCQUF5QkMsc0JBQVk7SUFDMUMsTUFBc0JULElBQUlDLE9BQXNCLEVBQTJCO1FBQzFFLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztZQUN6Q0MsSUFBQUEsb0JBQVksRUFBQ0MsSUFBQUEsNkJBQXFCLEVBQUNKLFFBQVFLLElBQUk7UUFDaEQ7UUFDQSxPQUFPLEtBQUssQ0FBQ1AsSUFBSUM7SUFDbEI7QUFDRDs7OztBQUdPLE1BQU1KLHlCQUF5QmEsc0JBQVk7SUFDeEJDLFVBQVU7UUFBRUMsUUFBUWQ7SUFBaUIsRUFBRTtBQUNqRTtBQUdPLE1BQU1GLHNCQUFzQmlCLG1CQUFTO0lBQ2xCRixVQUFVO1FBQUVHLEtBQUtOO0lBQWlCLEVBQUU7QUFDOUQifQ==
package/es6/src/cli.js ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
3
+ import { DefaultLogLevel, resolveLogLevel, scribe } from "@decohere/scribe";
4
+ import { productCli } from "./product.js";
5
+ const configIndex = process.argv.indexOf("--config-file");
6
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
7
+ const logLevelIndex = process.argv.indexOf("--log-level");
8
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
9
+ scribe.withPinoPretty({
10
+ logLevel: resolveLogLevel(logLevel) ?? DefaultLogLevel,
11
+ when: "always"
12
+ });
13
+ const logger = scribe.logger("@decohere/cli");
14
+ const app = await productCli.create({
15
+ configFile,
16
+ logLevel
17
+ });
18
+ let exitCode = 0;
19
+ try {
20
+ await app.run();
21
+ } catch (err) {
22
+ logger.error(err);
23
+ exitCode = -1;
24
+ } finally{
25
+ scribe.flush(()=>process.exit(exitCode));
26
+ }
27
+
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCBcIi4vbG9nZ2VyLnNldHVwLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TG9nTGV2ZWwsIHJlc29sdmVMb2dMZXZlbCwgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IHByb2R1Y3RDbGkgfSBmcm9tIFwiLi9wcm9kdWN0LmpzXCI7XG5cbmNvbnN0IGNvbmZpZ0luZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWNvbmZpZy1maWxlXCIpO1xuY29uc3QgY29uZmlnRmlsZSA9IGNvbmZpZ0luZGV4ICE9PSAtMSA/IHByb2Nlc3MuYXJndltjb25maWdJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuY29uc3QgbG9nTGV2ZWxJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKFwiLS1sb2ctbGV2ZWxcIik7XG5jb25zdCBsb2dMZXZlbCA9IGxvZ0xldmVsSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2xvZ0xldmVsSW5kZXggKyAxXSA6IHVuZGVmaW5lZDtcblxuc2NyaWJlLndpdGhQaW5vUHJldHR5KHtcblx0bG9nTGV2ZWw6IHJlc29sdmVMb2dMZXZlbChsb2dMZXZlbCkgPz8gRGVmYXVsdExvZ0xldmVsLFxuXHR3aGVuOiBcImFsd2F5c1wiLFxufSk7XG5cbmNvbnN0IGxvZ2dlciA9IHNjcmliZS5sb2dnZXIoXCJAZGVjb2hlcmUvY2xpXCIpO1xuY29uc3QgYXBwID0gYXdhaXQgcHJvZHVjdENsaS5jcmVhdGUoeyBjb25maWdGaWxlLCBsb2dMZXZlbCB9KTtcbmxldCBleGl0Q29kZSA9IDA7XG50cnkge1xuXHRhd2FpdCBhcHAucnVuKCk7XG59IGNhdGNoIChlcnIpIHtcblx0bG9nZ2VyLmVycm9yKGVycik7XG5cdGV4aXRDb2RlID0gLTE7XG59IGZpbmFsbHkge1xuXHRzY3JpYmUuZmx1c2goKCkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSk7XG59XG4iXSwibmFtZXMiOlsiRGVmYXVsdExvZ0xldmVsIiwicmVzb2x2ZUxvZ0xldmVsIiwic2NyaWJlIiwicHJvZHVjdENsaSIsImNvbmZpZ0luZGV4IiwicHJvY2VzcyIsImFyZ3YiLCJpbmRleE9mIiwiY29uZmlnRmlsZSIsInVuZGVmaW5lZCIsImxvZ0xldmVsSW5kZXgiLCJsb2dMZXZlbCIsIndpdGhQaW5vUHJldHR5Iiwid2hlbiIsImxvZ2dlciIsImFwcCIsImNyZWF0ZSIsImV4aXRDb2RlIiwicnVuIiwiZXJyIiwiZXJyb3IiLCJmbHVzaCIsImV4aXQiXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLG9CQUFvQjtBQUMzQixTQUFTQSxlQUFlLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxRQUFRLG1CQUFtQjtBQUM1RSxTQUFTQyxVQUFVLFFBQVEsZUFBZTtBQUUxQyxNQUFNQyxjQUFjQyxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUN6QyxNQUFNQyxhQUFhSixnQkFBZ0IsQ0FBQyxJQUFJQyxRQUFRQyxJQUFJLENBQUNGLGNBQWMsRUFBRSxHQUFHSztBQUN4RSxNQUFNQyxnQkFBZ0JMLFFBQVFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0FBQzNDLE1BQU1JLFdBQVdELGtCQUFrQixDQUFDLElBQUlMLFFBQVFDLElBQUksQ0FBQ0ksZ0JBQWdCLEVBQUUsR0FBR0Q7QUFFMUVQLE9BQU9VLGNBQWMsQ0FBQztJQUNyQkQsVUFBVVYsZ0JBQWdCVSxhQUFhWDtJQUN2Q2EsTUFBTTtBQUNQO0FBRUEsTUFBTUMsU0FBU1osT0FBT1ksTUFBTSxDQUFDO0FBQzdCLE1BQU1DLE1BQU0sTUFBTVosV0FBV2EsTUFBTSxDQUFDO0lBQUVSO0lBQVlHO0FBQVM7QUFDM0QsSUFBSU0sV0FBVztBQUNmLElBQUk7SUFDSCxNQUFNRixJQUFJRyxHQUFHO0FBQ2QsRUFBRSxPQUFPQyxLQUFLO0lBQ2JMLE9BQU9NLEtBQUssQ0FBQ0Q7SUFDYkYsV0FBVyxDQUFDO0FBQ2IsU0FBVTtJQUNUZixPQUFPbUIsS0FBSyxDQUFDLElBQU1oQixRQUFRaUIsSUFBSSxDQUFDTDtBQUNqQyJ9
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
3
+ import { FluxModule } from "@decohere/flux";
4
+ import { DefaultLogLevel, resolveLogLevel, scribe } from "@decohere/scribe";
5
+ import { RootModule } from "./root.module.js";
6
+ const configIndex = process.argv.indexOf("--config-file");
7
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
8
+ const logLevelIndex = process.argv.indexOf("--log-level");
9
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
10
+ scribe.withPinoPretty({
11
+ logLevel: resolveLogLevel(logLevel) ?? DefaultLogLevel,
12
+ when: "always"
13
+ });
14
+ const logger = scribe.logger("@decohere/cli");
15
+ const app = await RootModule.create([
16
+ FluxModule
17
+ ], {
18
+ configFile,
19
+ logLevel
20
+ });
21
+ let exitCode = 0;
22
+ try {
23
+ // Route directly to the flux module — users invoke as `flux serve`, not `flux flux serve`
24
+ logger.trace("running flux");
25
+ await app.run([
26
+ "flux",
27
+ ...process.argv.slice(2)
28
+ ]);
29
+ } catch (err) {
30
+ logger.error(err);
31
+ exitCode = -1;
32
+ } finally{
33
+ scribe.flush(()=>process.exit(exitCode));
34
+ }
35
+
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvZmx1eC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgXCIuL2xvZ2dlci5zZXR1cC5qc1wiO1xuaW1wb3J0IHsgRmx1eE1vZHVsZSB9IGZyb20gXCJAZGVjb2hlcmUvZmx1eFwiO1xuaW1wb3J0IHsgRGVmYXVsdExvZ0xldmVsLCByZXNvbHZlTG9nTGV2ZWwsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBSb290TW9kdWxlIH0gZnJvbSBcIi4vcm9vdC5tb2R1bGUuanNcIjtcblxuY29uc3QgY29uZmlnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tY29uZmlnLWZpbGVcIik7XG5jb25zdCBjb25maWdGaWxlID0gY29uZmlnSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2NvbmZpZ0luZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5jb25zdCBsb2dMZXZlbEluZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWxvZy1sZXZlbFwiKTtcbmNvbnN0IGxvZ0xldmVsID0gbG9nTGV2ZWxJbmRleCAhPT0gLTEgPyBwcm9jZXNzLmFyZ3ZbbG9nTGV2ZWxJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuXG5zY3JpYmUud2l0aFBpbm9QcmV0dHkoe1xuXHRsb2dMZXZlbDogcmVzb2x2ZUxvZ0xldmVsKGxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWwsXG5cdHdoZW46IFwiYWx3YXlzXCIsXG59KTtcblxuY29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIkBkZWNvaGVyZS9jbGlcIik7XG5jb25zdCBhcHAgPSBhd2FpdCBSb290TW9kdWxlLmNyZWF0ZShbRmx1eE1vZHVsZV0sIHsgY29uZmlnRmlsZSwgbG9nTGV2ZWwgfSk7XG5sZXQgZXhpdENvZGUgPSAwO1xudHJ5IHtcblx0Ly8gUm91dGUgZGlyZWN0bHkgdG8gdGhlIGZsdXggbW9kdWxlIOKAlCB1c2VycyBpbnZva2UgYXMgYGZsdXggc2VydmVgLCBub3QgYGZsdXggZmx1eCBzZXJ2ZWBcblx0bG9nZ2VyLnRyYWNlKFwicnVubmluZyBmbHV4XCIpO1xuXHRhd2FpdCBhcHAucnVuKFtcImZsdXhcIiwgLi4ucHJvY2Vzcy5hcmd2LnNsaWNlKDIpXSk7XG59IGNhdGNoIChlcnIpIHtcblx0bG9nZ2VyLmVycm9yKGVycik7XG5cdGV4aXRDb2RlID0gLTE7XG59IGZpbmFsbHkge1xuXHRzY3JpYmUuZmx1c2goKCkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSk7XG59XG4iXSwibmFtZXMiOlsiRmx1eE1vZHVsZSIsIkRlZmF1bHRMb2dMZXZlbCIsInJlc29sdmVMb2dMZXZlbCIsInNjcmliZSIsIlJvb3RNb2R1bGUiLCJjb25maWdJbmRleCIsInByb2Nlc3MiLCJhcmd2IiwiaW5kZXhPZiIsImNvbmZpZ0ZpbGUiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbEluZGV4IiwibG9nTGV2ZWwiLCJ3aXRoUGlub1ByZXR0eSIsIndoZW4iLCJsb2dnZXIiLCJhcHAiLCJjcmVhdGUiLCJleGl0Q29kZSIsInRyYWNlIiwicnVuIiwic2xpY2UiLCJlcnIiLCJlcnJvciIsImZsdXNoIiwiZXhpdCJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sb0JBQW9CO0FBQzNCLFNBQVNBLFVBQVUsUUFBUSxpQkFBaUI7QUFDNUMsU0FBU0MsZUFBZSxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sUUFBUSxtQkFBbUI7QUFDNUUsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUU5QyxNQUFNQyxjQUFjQyxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUN6QyxNQUFNQyxhQUFhSixnQkFBZ0IsQ0FBQyxJQUFJQyxRQUFRQyxJQUFJLENBQUNGLGNBQWMsRUFBRSxHQUFHSztBQUN4RSxNQUFNQyxnQkFBZ0JMLFFBQVFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0FBQzNDLE1BQU1JLFdBQVdELGtCQUFrQixDQUFDLElBQUlMLFFBQVFDLElBQUksQ0FBQ0ksZ0JBQWdCLEVBQUUsR0FBR0Q7QUFFMUVQLE9BQU9VLGNBQWMsQ0FBQztJQUNyQkQsVUFBVVYsZ0JBQWdCVSxhQUFhWDtJQUN2Q2EsTUFBTTtBQUNQO0FBRUEsTUFBTUMsU0FBU1osT0FBT1ksTUFBTSxDQUFDO0FBQzdCLE1BQU1DLE1BQU0sTUFBTVosV0FBV2EsTUFBTSxDQUFDO0lBQUNqQjtDQUFXLEVBQUU7SUFBRVM7SUFBWUc7QUFBUztBQUN6RSxJQUFJTSxXQUFXO0FBQ2YsSUFBSTtJQUNILDBGQUEwRjtJQUMxRkgsT0FBT0ksS0FBSyxDQUFDO0lBQ2IsTUFBTUgsSUFBSUksR0FBRyxDQUFDO1FBQUM7V0FBV2QsUUFBUUMsSUFBSSxDQUFDYyxLQUFLLENBQUM7S0FBRztBQUNqRCxFQUFFLE9BQU9DLEtBQUs7SUFDYlAsT0FBT1EsS0FBSyxDQUFDRDtJQUNiSixXQUFXLENBQUM7QUFDYixTQUFVO0lBQ1RmLE9BQU9xQixLQUFLLENBQUMsSUFBTWxCLFFBQVFtQixJQUFJLENBQUNQO0FBQ2pDIn0=
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
3
+ import { ForgeModule } from "@decohere/forge";
4
+ import { DefaultLogLevel, resolveLogLevel, scribe } from "@decohere/scribe";
5
+ import { RootModule } from "./root.module.js";
6
+ const configIndex = process.argv.indexOf("--config-file");
7
+ const configFile = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
8
+ const logLevelIndex = process.argv.indexOf("--log-level");
9
+ const logLevel = logLevelIndex !== -1 ? process.argv[logLevelIndex + 1] : undefined;
10
+ scribe.withPinoPretty({
11
+ logLevel: resolveLogLevel(logLevel) ?? DefaultLogLevel,
12
+ when: "always"
13
+ });
14
+ const logger = scribe.logger("@decohere/cli");
15
+ const app = await RootModule.create([
16
+ ForgeModule
17
+ ], {
18
+ configFile,
19
+ logLevel
20
+ });
21
+ let exitCode = 0;
22
+ try {
23
+ // Route directly to the forge module — users invoke as `forge build`, not `forge forge build`
24
+ await app.run([
25
+ "forge",
26
+ ...process.argv.slice(2)
27
+ ]);
28
+ } catch (err) {
29
+ logger.error("Error running forge", err);
30
+ exitCode = -1;
31
+ } finally{
32
+ scribe.flush(()=>process.exit(exitCode));
33
+ }
34
+
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvZm9yZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IFwiLi9sb2dnZXIuc2V0dXAuanNcIjtcbmltcG9ydCB7IEZvcmdlTW9kdWxlIH0gZnJvbSBcIkBkZWNvaGVyZS9mb3JnZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExvZ0xldmVsLCByZXNvbHZlTG9nTGV2ZWwsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBSb290TW9kdWxlIH0gZnJvbSBcIi4vcm9vdC5tb2R1bGUuanNcIjtcblxuY29uc3QgY29uZmlnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tY29uZmlnLWZpbGVcIik7XG5jb25zdCBjb25maWdGaWxlID0gY29uZmlnSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2NvbmZpZ0luZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5jb25zdCBsb2dMZXZlbEluZGV4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoXCItLWxvZy1sZXZlbFwiKTtcbmNvbnN0IGxvZ0xldmVsID0gbG9nTGV2ZWxJbmRleCAhPT0gLTEgPyBwcm9jZXNzLmFyZ3ZbbG9nTGV2ZWxJbmRleCArIDFdIDogdW5kZWZpbmVkO1xuXG5zY3JpYmUud2l0aFBpbm9QcmV0dHkoe1xuXHRsb2dMZXZlbDogcmVzb2x2ZUxvZ0xldmVsKGxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWwsXG5cdHdoZW46IFwiYWx3YXlzXCIsXG59KTtcblxuY29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIkBkZWNvaGVyZS9jbGlcIik7XG5jb25zdCBhcHAgPSBhd2FpdCBSb290TW9kdWxlLmNyZWF0ZShbRm9yZ2VNb2R1bGVdLCB7IGNvbmZpZ0ZpbGUsIGxvZ0xldmVsIH0pO1xubGV0IGV4aXRDb2RlID0gMDtcbnRyeSB7XG5cdC8vIFJvdXRlIGRpcmVjdGx5IHRvIHRoZSBmb3JnZSBtb2R1bGUg4oCUIHVzZXJzIGludm9rZSBhcyBgZm9yZ2UgYnVpbGRgLCBub3QgYGZvcmdlIGZvcmdlIGJ1aWxkYFxuXHRhd2FpdCBhcHAucnVuKFtcImZvcmdlXCIsIC4uLnByb2Nlc3MuYXJndi5zbGljZSgyKV0pO1xufSBjYXRjaCAoZXJyKSB7XG5cdGxvZ2dlci5lcnJvcihcIkVycm9yIHJ1bm5pbmcgZm9yZ2VcIiwgZXJyKTtcblx0ZXhpdENvZGUgPSAtMTtcbn0gZmluYWxseSB7XG5cdHNjcmliZS5mbHVzaCgoKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKTtcbn1cbiJdLCJuYW1lcyI6WyJGb3JnZU1vZHVsZSIsIkRlZmF1bHRMb2dMZXZlbCIsInJlc29sdmVMb2dMZXZlbCIsInNjcmliZSIsIlJvb3RNb2R1bGUiLCJjb25maWdJbmRleCIsInByb2Nlc3MiLCJhcmd2IiwiaW5kZXhPZiIsImNvbmZpZ0ZpbGUiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbEluZGV4IiwibG9nTGV2ZWwiLCJ3aXRoUGlub1ByZXR0eSIsIndoZW4iLCJsb2dnZXIiLCJhcHAiLCJjcmVhdGUiLCJleGl0Q29kZSIsInJ1biIsInNsaWNlIiwiZXJyIiwiZXJyb3IiLCJmbHVzaCIsImV4aXQiXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLG9CQUFvQjtBQUMzQixTQUFTQSxXQUFXLFFBQVEsa0JBQWtCO0FBQzlDLFNBQVNDLGVBQWUsRUFBRUMsZUFBZSxFQUFFQyxNQUFNLFFBQVEsbUJBQW1CO0FBQzVFLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsTUFBTUMsY0FBY0MsUUFBUUMsSUFBSSxDQUFDQyxPQUFPLENBQUM7QUFDekMsTUFBTUMsYUFBYUosZ0JBQWdCLENBQUMsSUFBSUMsUUFBUUMsSUFBSSxDQUFDRixjQUFjLEVBQUUsR0FBR0s7QUFDeEUsTUFBTUMsZ0JBQWdCTCxRQUFRQyxJQUFJLENBQUNDLE9BQU8sQ0FBQztBQUMzQyxNQUFNSSxXQUFXRCxrQkFBa0IsQ0FBQyxJQUFJTCxRQUFRQyxJQUFJLENBQUNJLGdCQUFnQixFQUFFLEdBQUdEO0FBRTFFUCxPQUFPVSxjQUFjLENBQUM7SUFDckJELFVBQVVWLGdCQUFnQlUsYUFBYVg7SUFDdkNhLE1BQU07QUFDUDtBQUVBLE1BQU1DLFNBQVNaLE9BQU9ZLE1BQU0sQ0FBQztBQUM3QixNQUFNQyxNQUFNLE1BQU1aLFdBQVdhLE1BQU0sQ0FBQztJQUFDakI7Q0FBWSxFQUFFO0lBQUVTO0lBQVlHO0FBQVM7QUFDMUUsSUFBSU0sV0FBVztBQUNmLElBQUk7SUFDSCw4RkFBOEY7SUFDOUYsTUFBTUYsSUFBSUcsR0FBRyxDQUFDO1FBQUM7V0FBWWIsUUFBUUMsSUFBSSxDQUFDYSxLQUFLLENBQUM7S0FBRztBQUNsRCxFQUFFLE9BQU9DLEtBQUs7SUFDYk4sT0FBT08sS0FBSyxDQUFDLHVCQUF1QkQ7SUFDcENILFdBQVcsQ0FBQztBQUNiLFNBQVU7SUFDVGYsT0FBT29CLEtBQUssQ0FBQyxJQUFNakIsUUFBUWtCLElBQUksQ0FBQ047QUFDakMifQ==
@@ -0,0 +1,4 @@
1
+ import "@decohere/scribe-pino";
2
+ import "pino-pretty";
3
+
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvbG9nZ2VyLnNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIkBkZWNvaGVyZS9zY3JpYmUtcGlub1wiO1xuaW1wb3J0IFwicGluby1wcmV0dHlcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLHdCQUF3QjtBQUMvQixPQUFPLGNBQWMifQ==
@@ -0,0 +1,58 @@
1
+ import { CrucibleBuilder } from "@decohere/crucible";
2
+ /**
3
+ * Wires a ModuleManifest into a fully functional ApplicationModule.
4
+ * Handles DI container setup, action registration/resolution, and
5
+ * forwarding the command response to the caller.
6
+ */ export class ModuleFactory {
7
+ static create(module, onResponse, config) {
8
+ const moduleConfig = config?.[module.id];
9
+ const actions = {
10
+ ...module.actions,
11
+ ...moduleConfig?.actions
12
+ };
13
+ const commands = {
14
+ ...module.commands,
15
+ ...moduleConfig?.commands
16
+ };
17
+ const workspaceOptions = {
18
+ configFile: config?.configFile,
19
+ rootDir: config?.rootDir
20
+ };
21
+ let container;
22
+ const handler = async (_optionVals, program)=>{
23
+ const commandOptions = program.optsWithGlobals();
24
+ container = await buildContainer(module, actions, workspaceOptions);
25
+ const resolved = resolveActions(container, actions);
26
+ const response = await program.run(resolved, commandOptions);
27
+ onResponse(module.id, response);
28
+ };
29
+ const command = new module.command(commands, handler);
30
+ command.name(module.id);
31
+ return {
32
+ id: module.id,
33
+ command,
34
+ dispose: ()=>container?.[Symbol.dispose](),
35
+ asyncDispose: ()=>container?.[Symbol.asyncDispose]()
36
+ };
37
+ }
38
+ }
39
+ async function buildContainer(module, actions, workspaceOptions) {
40
+ const builder = new CrucibleBuilder();
41
+ const workspace = await module.createWorkspace(workspaceOptions ?? {});
42
+ if (workspace !== null) {
43
+ builder.registerSingleton(workspace.constructor, workspace);
44
+ }
45
+ module.registerServices(builder);
46
+ for (const ActionClass of Object.values(actions)){
47
+ builder.registerSingleton(ActionClass);
48
+ }
49
+ return builder.build();
50
+ }
51
+ function resolveActions(container, actions) {
52
+ return Object.fromEntries(Object.entries(actions).map(([key, ActionClass])=>[
53
+ key,
54
+ container.resolve(ActionClass)
55
+ ]));
56
+ }
57
+
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvbW9kdWxlLmZhY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1Y2libGVCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZVwiO1xuaW1wb3J0IHR5cGUge1xuXHRBY3Rpb25DbGFzc01hcCxcblx0QWN0aW9ucyxcblx0QXBwbGljYXRpb25Nb2R1bGUsXG5cdENvbW1hbmRIYW5kbGVyLFxuXHRDb21tYW5kUmVzcG9uc2UsXG5cdE1vZHVsZUNvbmZpZyxcblx0TW9kdWxlTWFuaWZlc3QsXG5cdFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zLFxufSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogV2lyZXMgYSBNb2R1bGVNYW5pZmVzdCBpbnRvIGEgZnVsbHkgZnVuY3Rpb25hbCBBcHBsaWNhdGlvbk1vZHVsZS5cbiAqIEhhbmRsZXMgREkgY29udGFpbmVyIHNldHVwLCBhY3Rpb24gcmVnaXN0cmF0aW9uL3Jlc29sdXRpb24sIGFuZFxuICogZm9yd2FyZGluZyB0aGUgY29tbWFuZCByZXNwb25zZSB0byB0aGUgY2FsbGVyLlxuICovXG5leHBvcnQgY2xhc3MgTW9kdWxlRmFjdG9yeSB7XG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKFxuXHRcdG1vZHVsZTogTW9kdWxlTWFuaWZlc3QsXG5cdFx0b25SZXNwb25zZTogKG1vZHVsZUlkOiBzdHJpbmcsIHJlc3BvbnNlOiBDb21tYW5kUmVzcG9uc2UpID0+IHZvaWQsXG5cdFx0Y29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdCk6IEFwcGxpY2F0aW9uTW9kdWxlIHtcblx0XHRjb25zdCBtb2R1bGVDb25maWcgPSBjb25maWc/Llttb2R1bGUuaWRdIGFzIE1vZHVsZUNvbmZpZyB8IHVuZGVmaW5lZDtcblx0XHRjb25zdCBhY3Rpb25zOiBBY3Rpb25DbGFzc01hcCA9IHsgLi4ubW9kdWxlLmFjdGlvbnMsIC4uLm1vZHVsZUNvbmZpZz8uYWN0aW9ucyB9O1xuXHRcdGNvbnN0IGNvbW1hbmRzID0geyAuLi5tb2R1bGUuY29tbWFuZHMsIC4uLm1vZHVsZUNvbmZpZz8uY29tbWFuZHMgfTtcblx0XHRjb25zdCB3b3Jrc3BhY2VPcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucyA9IHtcblx0XHRcdGNvbmZpZ0ZpbGU6IGNvbmZpZz8uY29uZmlnRmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0XHRyb290RGlyOiBjb25maWc/LnJvb3REaXIgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdH07XG5cdFx0bGV0IGNvbnRhaW5lcjogUmV0dXJuVHlwZTxDcnVjaWJsZUJ1aWxkZXJbXCJidWlsZFwiXT4gfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBoYW5kbGVyOiBDb21tYW5kSGFuZGxlciA9IGFzeW5jIChfb3B0aW9uVmFscywgcHJvZ3JhbSkgPT4ge1xuXHRcdFx0Y29uc3QgY29tbWFuZE9wdGlvbnMgPSBwcm9ncmFtLm9wdHNXaXRoR2xvYmFscygpO1xuXHRcdFx0Y29udGFpbmVyID0gYXdhaXQgYnVpbGRDb250YWluZXIobW9kdWxlLCBhY3Rpb25zLCB3b3Jrc3BhY2VPcHRpb25zKTtcblx0XHRcdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUFjdGlvbnMoY29udGFpbmVyLCBhY3Rpb25zKTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcHJvZ3JhbS5ydW4ocmVzb2x2ZWQgYXMgQWN0aW9ucywgY29tbWFuZE9wdGlvbnMpO1xuXHRcdFx0b25SZXNwb25zZShtb2R1bGUuaWQsIHJlc3BvbnNlKTtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29tbWFuZCA9IG5ldyBtb2R1bGUuY29tbWFuZChjb21tYW5kcywgaGFuZGxlcik7XG5cdFx0Y29tbWFuZC5uYW1lKG1vZHVsZS5pZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aWQ6IG1vZHVsZS5pZCxcblx0XHRcdGNvbW1hbmQsXG5cdFx0XHRkaXNwb3NlOiAoKSA9PiBjb250YWluZXI/LltTeW1ib2wuZGlzcG9zZV0oKSxcblx0XHRcdGFzeW5jRGlzcG9zZTogKCkgPT4gY29udGFpbmVyPy5bU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSxcblx0XHR9O1xuXHR9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29udGFpbmVyKFxuXHRtb2R1bGU6IE1vZHVsZU1hbmlmZXN0LFxuXHRhY3Rpb25zOiBBY3Rpb25DbGFzc01hcCxcblx0d29ya3NwYWNlT3B0aW9ucz86IFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zLFxuKSB7XG5cdGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3J1Y2libGVCdWlsZGVyKCk7XG5cdGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IG1vZHVsZS5jcmVhdGVXb3Jrc3BhY2Uod29ya3NwYWNlT3B0aW9ucyA/PyB7fSk7XG5cdGlmICh3b3Jrc3BhY2UgIT09IG51bGwpIHtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKHdvcmtzcGFjZS5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlLCB3b3Jrc3BhY2UpO1xuXHR9XG5cblx0bW9kdWxlLnJlZ2lzdGVyU2VydmljZXMoYnVpbGRlcik7XG5cdGZvciAoY29uc3QgQWN0aW9uQ2xhc3Mgb2YgT2JqZWN0LnZhbHVlcyhhY3Rpb25zKSkge1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oQWN0aW9uQ2xhc3MgYXMgQ29uc3RydWN0YWJsZSk7XG5cdH1cblx0cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbnMoXG5cdGNvbnRhaW5lcjogUmV0dXJuVHlwZTxDcnVjaWJsZUJ1aWxkZXJbXCJidWlsZFwiXT4sXG5cdGFjdGlvbnM6IEFjdGlvbkNsYXNzTWFwLFxuKTogUmVjb3JkPHN0cmluZywgb2JqZWN0PiB7XG5cdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0T2JqZWN0LmVudHJpZXMoYWN0aW9ucykubWFwKChba2V5LCBBY3Rpb25DbGFzc10pID0+IFtcblx0XHRcdGtleSxcblx0XHRcdGNvbnRhaW5lci5yZXNvbHZlKEFjdGlvbkNsYXNzIGFzIENvbnN0cnVjdGFibGUpLFxuXHRcdF0pLFxuXHQpO1xufVxuIl0sIm5hbWVzIjpbIkNydWNpYmxlQnVpbGRlciIsIk1vZHVsZUZhY3RvcnkiLCJjcmVhdGUiLCJtb2R1bGUiLCJvblJlc3BvbnNlIiwiY29uZmlnIiwibW9kdWxlQ29uZmlnIiwiaWQiLCJhY3Rpb25zIiwiY29tbWFuZHMiLCJ3b3Jrc3BhY2VPcHRpb25zIiwiY29uZmlnRmlsZSIsInJvb3REaXIiLCJjb250YWluZXIiLCJoYW5kbGVyIiwiX29wdGlvblZhbHMiLCJwcm9ncmFtIiwiY29tbWFuZE9wdGlvbnMiLCJvcHRzV2l0aEdsb2JhbHMiLCJidWlsZENvbnRhaW5lciIsInJlc29sdmVkIiwicmVzb2x2ZUFjdGlvbnMiLCJyZXNwb25zZSIsInJ1biIsImNvbW1hbmQiLCJuYW1lIiwiZGlzcG9zZSIsIlN5bWJvbCIsImFzeW5jRGlzcG9zZSIsImJ1aWxkZXIiLCJ3b3Jrc3BhY2UiLCJjcmVhdGVXb3Jrc3BhY2UiLCJyZWdpc3RlclNpbmdsZXRvbiIsInJlZ2lzdGVyU2VydmljZXMiLCJBY3Rpb25DbGFzcyIsIk9iamVjdCIsInZhbHVlcyIsImJ1aWxkIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwibWFwIiwia2V5IiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxRQUFRLHFCQUFxQjtBQWFyRDs7OztDQUlDLEdBQ0QsT0FBTyxNQUFNQztJQUNaLE9BQWNDLE9BQ2JDLE1BQXNCLEVBQ3RCQyxVQUFpRSxFQUNqRUMsTUFBZ0MsRUFDWjtRQUNwQixNQUFNQyxlQUFlRCxRQUFRLENBQUNGLE9BQU9JLEVBQUUsQ0FBQztRQUN4QyxNQUFNQyxVQUEwQjtZQUFFLEdBQUdMLE9BQU9LLE9BQU87WUFBRSxHQUFHRixjQUFjRSxPQUFPO1FBQUM7UUFDOUUsTUFBTUMsV0FBVztZQUFFLEdBQUdOLE9BQU9NLFFBQVE7WUFBRSxHQUFHSCxjQUFjRyxRQUFRO1FBQUM7UUFDakUsTUFBTUMsbUJBQTRDO1lBQ2pEQyxZQUFZTixRQUFRTTtZQUNwQkMsU0FBU1AsUUFBUU87UUFDbEI7UUFDQSxJQUFJQztRQUVKLE1BQU1DLFVBQTBCLE9BQU9DLGFBQWFDO1lBQ25ELE1BQU1DLGlCQUFpQkQsUUFBUUUsZUFBZTtZQUM5Q0wsWUFBWSxNQUFNTSxlQUFlaEIsUUFBUUssU0FBU0U7WUFDbEQsTUFBTVUsV0FBV0MsZUFBZVIsV0FBV0w7WUFDM0MsTUFBTWMsV0FBVyxNQUFNTixRQUFRTyxHQUFHLENBQUNILFVBQXFCSDtZQUN4RGIsV0FBV0QsT0FBT0ksRUFBRSxFQUFFZTtRQUN2QjtRQUVBLE1BQU1FLFVBQVUsSUFBSXJCLE9BQU9xQixPQUFPLENBQUNmLFVBQVVLO1FBQzdDVSxRQUFRQyxJQUFJLENBQUN0QixPQUFPSSxFQUFFO1FBRXRCLE9BQU87WUFDTkEsSUFBSUosT0FBT0ksRUFBRTtZQUNiaUI7WUFDQUUsU0FBUyxJQUFNYixXQUFXLENBQUNjLE9BQU9ELE9BQU8sQ0FBQztZQUMxQ0UsY0FBYyxJQUFNZixXQUFXLENBQUNjLE9BQU9DLFlBQVksQ0FBQztRQUNyRDtJQUNEO0FBQ0Q7QUFFQSxlQUFlVCxlQUNkaEIsTUFBc0IsRUFDdEJLLE9BQXVCLEVBQ3ZCRSxnQkFBMEM7SUFFMUMsTUFBTW1CLFVBQVUsSUFBSTdCO0lBQ3BCLE1BQU04QixZQUFZLE1BQU0zQixPQUFPNEIsZUFBZSxDQUFDckIsb0JBQW9CLENBQUM7SUFDcEUsSUFBSW9CLGNBQWMsTUFBTTtRQUN2QkQsUUFBUUcsaUJBQWlCLENBQUNGLFVBQVUsV0FBVyxFQUFtQkE7SUFDbkU7SUFFQTNCLE9BQU84QixnQkFBZ0IsQ0FBQ0o7SUFDeEIsS0FBSyxNQUFNSyxlQUFlQyxPQUFPQyxNQUFNLENBQUM1QixTQUFVO1FBQ2pEcUIsUUFBUUcsaUJBQWlCLENBQUNFO0lBQzNCO0lBQ0EsT0FBT0wsUUFBUVEsS0FBSztBQUNyQjtBQUVBLFNBQVNoQixlQUNSUixTQUErQyxFQUMvQ0wsT0FBdUI7SUFFdkIsT0FBTzJCLE9BQU9HLFdBQVcsQ0FDeEJILE9BQU9JLE9BQU8sQ0FBQy9CLFNBQVNnQyxHQUFHLENBQUMsQ0FBQyxDQUFDQyxLQUFLUCxZQUFZLEdBQUs7WUFDbkRPO1lBQ0E1QixVQUFVNkIsT0FBTyxDQUFDUjtTQUNsQjtBQUVIIn0=
@@ -0,0 +1,19 @@
1
+ import { FluxModule } from "@decohere/flux";
2
+ import { ForgeModule } from "@decohere/forge";
3
+ import { RootModule } from "./root.module.js";
4
+ import { HostAddModule, HostCreateModule } from "./scaffold-host.js";
5
+ const modules = [
6
+ ForgeModule,
7
+ FluxModule,
8
+ HostCreateModule,
9
+ HostAddModule
10
+ ];
11
+ function create(options) {
12
+ return RootModule.create(modules, options);
13
+ }
14
+ /** Shipped `decohere` bin — forge, flux, create, add. */ export const productCli = {
15
+ create,
16
+ modules
17
+ };
18
+
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcHJvZHVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbHV4TW9kdWxlIH0gZnJvbSBcIkBkZWNvaGVyZS9mbHV4XCI7XG5pbXBvcnQgeyBGb3JnZU1vZHVsZSB9IGZyb20gXCJAZGVjb2hlcmUvZm9yZ2VcIjtcbmltcG9ydCB7IFJvb3RNb2R1bGUgfSBmcm9tIFwiLi9yb290Lm1vZHVsZS5qc1wiO1xuaW1wb3J0IHsgSG9zdEFkZE1vZHVsZSwgSG9zdENyZWF0ZU1vZHVsZSB9IGZyb20gXCIuL3NjYWZmb2xkLWhvc3QuanNcIjtcblxuY29uc3QgbW9kdWxlcyA9IFtGb3JnZU1vZHVsZSwgRmx1eE1vZHVsZSwgSG9zdENyZWF0ZU1vZHVsZSwgSG9zdEFkZE1vZHVsZV0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zPzoge1xuXHRjb25maWdGaWxlPzogc3RyaW5nO1xuXHRsb2dMZXZlbD86IHN0cmluZztcblx0cm9vdERpcj86IHN0cmluZztcbn0pOiBQcm9taXNlPFJvb3RNb2R1bGU+IHtcblx0cmV0dXJuIFJvb3RNb2R1bGUuY3JlYXRlKG1vZHVsZXMsIG9wdGlvbnMpO1xufVxuXG4vKiogU2hpcHBlZCBgZGVjb2hlcmVgIGJpbiDigJQgZm9yZ2UsIGZsdXgsIGNyZWF0ZSwgYWRkLiAqL1xuZXhwb3J0IGNvbnN0IHByb2R1Y3RDbGkgPSB7IGNyZWF0ZSwgbW9kdWxlcyB9O1xuIl0sIm5hbWVzIjpbIkZsdXhNb2R1bGUiLCJGb3JnZU1vZHVsZSIsIlJvb3RNb2R1bGUiLCJIb3N0QWRkTW9kdWxlIiwiSG9zdENyZWF0ZU1vZHVsZSIsIm1vZHVsZXMiLCJjcmVhdGUiLCJvcHRpb25zIiwicHJvZHVjdENsaSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLGlCQUFpQjtBQUM1QyxTQUFTQyxXQUFXLFFBQVEsa0JBQWtCO0FBQzlDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsU0FBU0MsYUFBYSxFQUFFQyxnQkFBZ0IsUUFBUSxxQkFBcUI7QUFFckUsTUFBTUMsVUFBVTtJQUFDSjtJQUFhRDtJQUFZSTtJQUFrQkQ7Q0FBYztBQUUxRSxTQUFTRyxPQUFPQyxPQUlmO0lBQ0EsT0FBT0wsV0FBV0ksTUFBTSxDQUFDRCxTQUFTRTtBQUNuQztBQUVBLHVEQUF1RCxHQUN2RCxPQUFPLE1BQU1DLGFBQWE7SUFBRUY7SUFBUUQ7QUFBUSxFQUFFIn0=
@@ -0,0 +1,28 @@
1
+ import { WorkspaceFactory } from "@decohere/mesh";
2
+ import { ConfigFileOption, DecohereCommand, LogLevelOption } from "@decohere/nexus/cli";
3
+ import { CommanderError } from "commander";
4
+ export class RootCommand extends DecohereCommand {
5
+ #configFile;
6
+ constructor(modules, configFile){
7
+ super();
8
+ this.#configFile = configFile;
9
+ this.addOption(new ConfigFileOption());
10
+ this.addOption(new LogLevelOption());
11
+ for (const mod of modules){
12
+ this.addCommand(mod.command);
13
+ }
14
+ }
15
+ async parseAsync(argv, options) {
16
+ if (argv?.includes("--version") || argv?.includes("-V")) {
17
+ const workspace = await WorkspaceFactory.create({
18
+ configFile: this.#configFile
19
+ });
20
+ const version = await workspace.getVersion() ?? "unknown";
21
+ process.stdout.write(`${version}\n`);
22
+ throw new CommanderError(0, "commander.version", version);
23
+ }
24
+ return super.parseAsync(argv, options);
25
+ }
26
+ }
27
+
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcm9vdC5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7XG5cdHR5cGUgQXBwbGljYXRpb25Nb2R1bGUsXG5cdENvbmZpZ0ZpbGVPcHRpb24sXG5cdERlY29oZXJlQ29tbWFuZCxcblx0TG9nTGV2ZWxPcHRpb24sXG59IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBDb21tYW5kZXJFcnJvciwgdHlwZSBQYXJzZU9wdGlvbnMgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBSb290Q29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHJlYWRvbmx5ICNjb25maWdGaWxlPzogc3RyaW5nO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihtb2R1bGVzOiBBcHBsaWNhdGlvbk1vZHVsZVtdLCBjb25maWdGaWxlPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLiNjb25maWdGaWxlID0gY29uZmlnRmlsZTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlnRmlsZU9wdGlvbigpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgTG9nTGV2ZWxPcHRpb24oKSk7XG5cblx0XHRmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzKSB7XG5cdFx0XHR0aGlzLmFkZENvbW1hbmQobW9kLmNvbW1hbmQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBwYXJzZUFzeW5jKFxuXHRcdGFyZ3Y/OiByZWFkb25seSBzdHJpbmdbXSxcblx0XHRvcHRpb25zPzogUGFyc2VPcHRpb25zLFxuXHQpOiBQcm9taXNlPHRoaXM+IHtcblx0XHRpZiAoYXJndj8uaW5jbHVkZXMoXCItLXZlcnNpb25cIikgfHwgYXJndj8uaW5jbHVkZXMoXCItVlwiKSkge1xuXHRcdFx0Y29uc3Qgd29ya3NwYWNlID0gYXdhaXQgV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoeyBjb25maWdGaWxlOiB0aGlzLiNjb25maWdGaWxlIH0pO1xuXHRcdFx0Y29uc3QgdmVyc2lvbiA9IChhd2FpdCB3b3Jrc3BhY2UuZ2V0VmVyc2lvbigpKSA/PyBcInVua25vd25cIjtcblx0XHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3ZlcnNpb259XFxuYCk7XG5cdFx0XHR0aHJvdyBuZXcgQ29tbWFuZGVyRXJyb3IoMCwgXCJjb21tYW5kZXIudmVyc2lvblwiLCB2ZXJzaW9uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gc3VwZXIucGFyc2VBc3luYyhhcmd2IGFzIHN0cmluZ1tdLCBvcHRpb25zKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldvcmtzcGFjZUZhY3RvcnkiLCJDb25maWdGaWxlT3B0aW9uIiwiRGVjb2hlcmVDb21tYW5kIiwiTG9nTGV2ZWxPcHRpb24iLCJDb21tYW5kZXJFcnJvciIsIlJvb3RDb21tYW5kIiwibW9kdWxlcyIsImNvbmZpZ0ZpbGUiLCJhZGRPcHRpb24iLCJtb2QiLCJhZGRDb21tYW5kIiwiY29tbWFuZCIsInBhcnNlQXN5bmMiLCJhcmd2Iiwib3B0aW9ucyIsImluY2x1ZGVzIiwid29ya3NwYWNlIiwiY3JlYXRlIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJwcm9jZXNzIiwic3Rkb3V0Iiwid3JpdGUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGdCQUFnQixRQUFRLGlCQUFpQjtBQUNsRCxTQUVDQyxnQkFBZ0IsRUFDaEJDLGVBQWUsRUFDZkMsY0FBYyxRQUNSLHNCQUFzQjtBQUM3QixTQUFTQyxjQUFjLFFBQTJCLFlBQVk7QUFFOUQsT0FBTyxNQUFNQyxvQkFBb0JIO0lBQ3ZCLENBQUEsVUFBVyxDQUFVO0lBRTlCLFlBQW1CSSxPQUE0QixFQUFFQyxVQUFtQixDQUFFO1FBQ3JFLEtBQUs7UUFDTCxJQUFJLENBQUMsQ0FBQSxVQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlQO1FBQ25CLElBQUksQ0FBQ08sU0FBUyxDQUFDLElBQUlMO1FBRW5CLEtBQUssTUFBTU0sT0FBT0gsUUFBUztZQUMxQixJQUFJLENBQUNJLFVBQVUsQ0FBQ0QsSUFBSUUsT0FBTztRQUM1QjtJQUNEO0lBRUEsTUFBc0JDLFdBQ3JCQyxJQUF3QixFQUN4QkMsT0FBc0IsRUFDTjtRQUNoQixJQUFJRCxNQUFNRSxTQUFTLGdCQUFnQkYsTUFBTUUsU0FBUyxPQUFPO1lBQ3hELE1BQU1DLFlBQVksTUFBTWhCLGlCQUFpQmlCLE1BQU0sQ0FBQztnQkFBRVYsWUFBWSxJQUFJLENBQUMsQ0FBQSxVQUFXO1lBQUM7WUFDL0UsTUFBTVcsVUFBVSxBQUFDLE1BQU1GLFVBQVVHLFVBQVUsTUFBTztZQUNsREMsUUFBUUMsTUFBTSxDQUFDQyxLQUFLLENBQUMsR0FBR0osUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJZCxlQUFlLEdBQUcscUJBQXFCYztRQUNsRDtRQUVBLE9BQU8sS0FBSyxDQUFDTixXQUFXQyxNQUFrQkM7SUFDM0M7QUFDRCJ9
@@ -0,0 +1,92 @@
1
+ function _ts_decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ function _ts_metadata(k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ }
10
+ import { UserConfigFactory } from "@decohere/mesh";
11
+ import { CommandResponse } from "@decohere/nexus/cli";
12
+ import { Trace } from "@decohere/nexus/diagnostics";
13
+ import { CommanderError } from "commander";
14
+ import { ModuleFactory } from "./module.factory.js";
15
+ import { RootCommand } from "./root.command.js";
16
+ export class RootModule {
17
+ static async create(moduleTypes, options) {
18
+ const userConfig = await UserConfigFactory.getUserConfig(options?.configFile);
19
+ return new RootModule(moduleTypes, {
20
+ ...userConfig,
21
+ configFile: options?.configFile,
22
+ rootDir: options?.rootDir
23
+ });
24
+ }
25
+ #command;
26
+ #modules;
27
+ #lastResponse = {};
28
+ constructor(manifestClasses, config){
29
+ const modules = manifestClasses.map((ManifestClass)=>{
30
+ const manifest = new ManifestClass();
31
+ return ModuleFactory.create(manifest, this.onResponse, config);
32
+ });
33
+ this.#modules = modules;
34
+ this.#command = new RootCommand(modules, config.configFile);
35
+ }
36
+ onResponse = (_moduleId, response)=>{
37
+ this.#lastResponse = response;
38
+ };
39
+ async run(argv) {
40
+ try {
41
+ await this.#command.parseAsync(argv, argv ? {
42
+ from: "user"
43
+ } : undefined);
44
+ if (this.isBlocking(this.#lastResponse)) {
45
+ await new Promise((resolve)=>process.once("SIGINT", resolve));
46
+ }
47
+ return this.#lastResponse;
48
+ } catch (error) {
49
+ if (this.isCommanderHelpOrVersion(error)) {
50
+ return CommandResponse.help();
51
+ }
52
+ throw error;
53
+ } finally{
54
+ await this[Symbol.asyncDispose]();
55
+ }
56
+ }
57
+ get commands() {
58
+ return this.#command.commands;
59
+ }
60
+ [Symbol.dispose]() {
61
+ for (const mod of this.#modules){
62
+ mod.dispose?.();
63
+ }
64
+ }
65
+ async [Symbol.asyncDispose]() {
66
+ for (const mod of this.#modules){
67
+ await mod.asyncDispose?.();
68
+ }
69
+ }
70
+ isBlocking(response) {
71
+ return Object.values(response).some((r)=>r?.blocking === true);
72
+ }
73
+ isCommanderHelpOrVersion(error) {
74
+ const isCommanderError = error instanceof CommanderError;
75
+ const helpCodes = [
76
+ "commander.helpDisplayed",
77
+ "commander.version",
78
+ "commander.help"
79
+ ];
80
+ return isCommanderError && helpCodes.includes(error.code);
81
+ }
82
+ }
83
+ RootModule = _ts_decorate([
84
+ Trace,
85
+ _ts_metadata("design:type", Function),
86
+ _ts_metadata("design:paramtypes", [
87
+ Object,
88
+ typeof Record === "undefined" ? Object : Record
89
+ ])
90
+ ], RootModule);
91
+
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvcm9vdC5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9ucywgQXBwbGljYXRpb25Nb2R1bGUsIE1vZHVsZU1hbmlmZXN0IH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IENvbW1hbmRSZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ29tbWFuZGVyRXJyb3IgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBNb2R1bGVGYWN0b3J5IH0gZnJvbSBcIi4vbW9kdWxlLmZhY3RvcnkuanNcIjtcbmltcG9ydCB7IFJvb3RDb21tYW5kIH0gZnJvbSBcIi4vcm9vdC5jb21tYW5kLmpzXCI7XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFJvb3RNb2R1bGUge1xuXHRwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZShcblx0XHRtb2R1bGVUeXBlczogcmVhZG9ubHkgQ29uc3RydWN0YWJsZTxNb2R1bGVNYW5pZmVzdD5bXSxcblx0XHRvcHRpb25zPzogeyBjb25maWdGaWxlPzogc3RyaW5nOyBsb2dMZXZlbD86IHN0cmluZzsgcm9vdERpcj86IHN0cmluZyB9LFxuXHQpOiBQcm9taXNlPFJvb3RNb2R1bGU+IHtcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zPy5jb25maWdGaWxlKTtcblx0XHRyZXR1cm4gbmV3IFJvb3RNb2R1bGUobW9kdWxlVHlwZXMsIHtcblx0XHRcdC4uLnVzZXJDb25maWcsXG5cdFx0XHRjb25maWdGaWxlOiBvcHRpb25zPy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucz8ucm9vdERpcixcblx0XHR9KTtcblx0fVxuXG5cdHJlYWRvbmx5ICNjb21tYW5kOiBSb290Q29tbWFuZDtcblx0cmVhZG9ubHkgI21vZHVsZXM6IEFwcGxpY2F0aW9uTW9kdWxlW107XG5cdCNsYXN0UmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSA9IHt9O1xuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoXG5cdFx0bWFuaWZlc3RDbGFzc2VzOiByZWFkb25seSBDb25zdHJ1Y3RhYmxlPE1vZHVsZU1hbmlmZXN0PltdLFxuXHRcdGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdCkge1xuXHRcdGNvbnN0IG1vZHVsZXMgPSBtYW5pZmVzdENsYXNzZXMubWFwKChNYW5pZmVzdENsYXNzKSA9PiB7XG5cdFx0XHRjb25zdCBtYW5pZmVzdCA9IG5ldyBNYW5pZmVzdENsYXNzKCk7XG5cdFx0XHRyZXR1cm4gTW9kdWxlRmFjdG9yeS5jcmVhdGUobWFuaWZlc3QsIHRoaXMub25SZXNwb25zZSwgY29uZmlnKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuI21vZHVsZXMgPSBtb2R1bGVzO1xuXHRcdHRoaXMuI2NvbW1hbmQgPSBuZXcgUm9vdENvbW1hbmQobW9kdWxlcywgY29uZmlnLmNvbmZpZ0ZpbGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcblx0fVxuXG5cdHByaXZhdGUgb25SZXNwb25zZSA9IChfbW9kdWxlSWQ6IHN0cmluZywgcmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSkgPT4ge1xuXHRcdHRoaXMuI2xhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xuXHR9O1xuXG5cdHB1YmxpYyBhc3luYyBydW48VEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zPihcblx0XHRhcmd2Pzogc3RyaW5nW10sXG5cdCk6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPFRBY3Rpb25zPj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLiNjb21tYW5kLnBhcnNlQXN5bmMoYXJndiwgYXJndiA/IHsgZnJvbTogXCJ1c2VyXCIgfSA6IHVuZGVmaW5lZCk7XG5cdFx0XHRpZiAodGhpcy5pc0Jsb2NraW5nKHRoaXMuI2xhc3RSZXNwb25zZSkpIHtcblx0XHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCByZXNvbHZlKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy4jbGFzdFJlc3BvbnNlIGFzIENvbW1hbmRSZXNwb25zZTxUQWN0aW9ucz47XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICh0aGlzLmlzQ29tbWFuZGVySGVscE9yVmVyc2lvbihlcnJvcikpIHtcblx0XHRcdFx0cmV0dXJuIENvbW1hbmRSZXNwb25zZS5oZWxwPFRBY3Rpb25zPigpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0YXdhaXQgdGhpc1tTeW1ib2wuYXN5bmNEaXNwb3NlXSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXQgY29tbWFuZHMoKTogQ29tbWFuZFtdIHtcblx0XHRyZXR1cm4gdGhpcy4jY29tbWFuZC5jb21tYW5kcyBhcyBDb21tYW5kW107XG5cdH1cblxuXHRwdWJsaWMgW1N5bWJvbC5kaXNwb3NlXSgpIHtcblx0XHRmb3IgKGNvbnN0IG1vZCBvZiB0aGlzLiNtb2R1bGVzKSB7XG5cdFx0XHRtb2QuZGlzcG9zZT8uKCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFzeW5jIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcblx0XHRmb3IgKGNvbnN0IG1vZCBvZiB0aGlzLiNtb2R1bGVzKSB7XG5cdFx0XHRhd2FpdCBtb2QuYXN5bmNEaXNwb3NlPy4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzQmxvY2tpbmcocmVzcG9uc2U6IENvbW1hbmRSZXNwb25zZSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBPYmplY3QudmFsdWVzKHJlc3BvbnNlKS5zb21lKChyKSA9PiByPy5ibG9ja2luZyA9PT0gdHJ1ZSk7XG5cdH1cblxuXHRwcml2YXRlIGlzQ29tbWFuZGVySGVscE9yVmVyc2lvbihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGlzQ29tbWFuZGVyRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENvbW1hbmRlckVycm9yO1xuXHRcdGNvbnN0IGhlbHBDb2RlcyA9IFtcImNvbW1hbmRlci5oZWxwRGlzcGxheWVkXCIsIFwiY29tbWFuZGVyLnZlcnNpb25cIiwgXCJjb21tYW5kZXIuaGVscFwiXTtcblx0XHRyZXR1cm4gaXNDb21tYW5kZXJFcnJvciAmJiBoZWxwQ29kZXMuaW5jbHVkZXMoZXJyb3IuY29kZSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJVc2VyQ29uZmlnRmFjdG9yeSIsIkNvbW1hbmRSZXNwb25zZSIsIlRyYWNlIiwiQ29tbWFuZGVyRXJyb3IiLCJNb2R1bGVGYWN0b3J5IiwiUm9vdENvbW1hbmQiLCJSb290TW9kdWxlIiwiY3JlYXRlIiwibW9kdWxlVHlwZXMiLCJvcHRpb25zIiwidXNlckNvbmZpZyIsImdldFVzZXJDb25maWciLCJjb25maWdGaWxlIiwicm9vdERpciIsIm1hbmlmZXN0Q2xhc3NlcyIsImNvbmZpZyIsIm1vZHVsZXMiLCJtYXAiLCJNYW5pZmVzdENsYXNzIiwibWFuaWZlc3QiLCJvblJlc3BvbnNlIiwiX21vZHVsZUlkIiwicmVzcG9uc2UiLCJydW4iLCJhcmd2IiwicGFyc2VBc3luYyIsImZyb20iLCJ1bmRlZmluZWQiLCJpc0Jsb2NraW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwcm9jZXNzIiwib25jZSIsImVycm9yIiwiaXNDb21tYW5kZXJIZWxwT3JWZXJzaW9uIiwiaGVscCIsIlN5bWJvbCIsImFzeW5jRGlzcG9zZSIsImNvbW1hbmRzIiwiZGlzcG9zZSIsIm1vZCIsIk9iamVjdCIsInZhbHVlcyIsInNvbWUiLCJyIiwiYmxvY2tpbmciLCJpc0NvbW1hbmRlckVycm9yIiwiaGVscENvZGVzIiwiaW5jbHVkZXMiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSxpQkFBaUIsUUFBUSxpQkFBaUI7QUFFbkQsU0FBU0MsZUFBZSxRQUFRLHNCQUFzQjtBQUN0RCxTQUFTQyxLQUFLLFFBQVEsOEJBQThCO0FBR3BELFNBQVNDLGNBQWMsUUFBUSxZQUFZO0FBQzNDLFNBQVNDLGFBQWEsUUFBUSxzQkFBc0I7QUFDcEQsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUdoRCxPQUFPLE1BQU1DO0lBQ1osYUFBb0JDLE9BQ25CQyxXQUFxRCxFQUNyREMsT0FBc0UsRUFDaEQ7UUFDdEIsTUFBTUMsYUFBYSxNQUFNVixrQkFBa0JXLGFBQWEsQ0FBQ0YsU0FBU0c7UUFDbEUsT0FBTyxJQUFJTixXQUFXRSxhQUFhO1lBQ2xDLEdBQUdFLFVBQVU7WUFDYkUsWUFBWUgsU0FBU0c7WUFDckJDLFNBQVNKLFNBQVNJO1FBQ25CO0lBQ0Q7SUFFUyxDQUFBLE9BQVEsQ0FBYztJQUN0QixDQUFBLE9BQVEsQ0FBc0I7SUFDdkMsQ0FBQSxZQUFhLEdBQW9CLENBQUMsRUFBRTtJQUVwQyxZQUNDQyxlQUF5RCxFQUN6REMsTUFBK0IsQ0FDOUI7UUFDRCxNQUFNQyxVQUFVRixnQkFBZ0JHLEdBQUcsQ0FBQyxDQUFDQztZQUNwQyxNQUFNQyxXQUFXLElBQUlEO1lBQ3JCLE9BQU9kLGNBQWNHLE1BQU0sQ0FBQ1ksVUFBVSxJQUFJLENBQUNDLFVBQVUsRUFBRUw7UUFDeEQ7UUFFQSxJQUFJLENBQUMsQ0FBQSxPQUFRLEdBQUdDO1FBQ2hCLElBQUksQ0FBQyxDQUFBLE9BQVEsR0FBRyxJQUFJWCxZQUFZVyxTQUFTRCxPQUFPSCxVQUFVO0lBQzNEO0lBRVFRLGFBQWEsQ0FBQ0MsV0FBbUJDO1FBQ3hDLElBQUksQ0FBQyxDQUFBLFlBQWEsR0FBR0E7SUFDdEIsRUFBRTtJQUVGLE1BQWFDLElBQ1pDLElBQWUsRUFDc0I7UUFDckMsSUFBSTtZQUNILE1BQU0sSUFBSSxDQUFDLENBQUEsT0FBUSxDQUFDQyxVQUFVLENBQUNELE1BQU1BLE9BQU87Z0JBQUVFLE1BQU07WUFBTyxJQUFJQztZQUMvRCxJQUFJLElBQUksQ0FBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLFlBQWEsR0FBRztnQkFDeEMsTUFBTSxJQUFJQyxRQUFjLENBQUNDLFVBQVlDLFFBQVFDLElBQUksQ0FBQyxVQUFVRjtZQUM3RDtZQUNBLE9BQU8sSUFBSSxDQUFDLENBQUEsWUFBYTtRQUMxQixFQUFFLE9BQU9HLE9BQU87WUFDZixJQUFJLElBQUksQ0FBQ0Msd0JBQXdCLENBQUNELFFBQVE7Z0JBQ3pDLE9BQU9oQyxnQkFBZ0JrQyxJQUFJO1lBQzVCO1lBRUEsTUFBTUY7UUFDUCxTQUFVO1lBQ1QsTUFBTSxJQUFJLENBQUNHLE9BQU9DLFlBQVksQ0FBQztRQUNoQztJQUNEO0lBRUEsSUFBV0MsV0FBc0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUNBLFFBQVE7SUFDOUI7SUFFTyxDQUFDRixPQUFPRyxPQUFPLENBQUMsR0FBRztRQUN6QixLQUFLLE1BQU1DLE9BQU8sSUFBSSxDQUFDLENBQUEsT0FBUSxDQUFFO1lBQ2hDQSxJQUFJRCxPQUFPO1FBQ1o7SUFDRDtJQUVBLE1BQWEsQ0FBQ0gsT0FBT0MsWUFBWSxDQUFDLEdBQUc7UUFDcEMsS0FBSyxNQUFNRyxPQUFPLElBQUksQ0FBQyxDQUFBLE9BQVEsQ0FBRTtZQUNoQyxNQUFNQSxJQUFJSCxZQUFZO1FBQ3ZCO0lBQ0Q7SUFFUVQsV0FBV04sUUFBeUIsRUFBVztRQUN0RCxPQUFPbUIsT0FBT0MsTUFBTSxDQUFDcEIsVUFBVXFCLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxHQUFHQyxhQUFhO0lBQzVEO0lBRVFYLHlCQUF5QkQsS0FBYyxFQUFXO1FBQ3pELE1BQU1hLG1CQUFtQmIsaUJBQWlCOUI7UUFDMUMsTUFBTTRDLFlBQVk7WUFBQztZQUEyQjtZQUFxQjtTQUFpQjtRQUNwRixPQUFPRCxvQkFBb0JDLFVBQVVDLFFBQVEsQ0FBQ2YsTUFBTWdCLElBQUk7SUFDekQ7QUFDRCJ9
@@ -0,0 +1,43 @@
1
+ function _ts_decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ import { containerArgvFromHost, runInBuilder } from "@decohere/create";
8
+ import { injectable } from "@decohere/crucible/decorators";
9
+ import { AddApiAction, AddModule, CreateModule, WebapiAction } from "@decohere/scaffold";
10
+ class HostWebapiAction extends WebapiAction {
11
+ async run(options) {
12
+ if (process.env.DECOHERE_BUILDER !== "1") {
13
+ runInBuilder(containerArgvFromHost(process.argv));
14
+ }
15
+ return super.run(options);
16
+ }
17
+ }
18
+ HostWebapiAction = _ts_decorate([
19
+ injectable()
20
+ ], HostWebapiAction);
21
+ class HostAddApiAction extends AddApiAction {
22
+ async run(options) {
23
+ if (process.env.DECOHERE_BUILDER !== "1") {
24
+ runInBuilder(containerArgvFromHost(process.argv));
25
+ }
26
+ return super.run(options);
27
+ }
28
+ }
29
+ HostAddApiAction = _ts_decorate([
30
+ injectable()
31
+ ], HostAddApiAction);
32
+ /** Host `decohere create` — Docker-delegates unless already inside the builder image. */ export class HostCreateModule extends CreateModule {
33
+ actions = {
34
+ webapi: HostWebapiAction
35
+ };
36
+ }
37
+ /** Host `decohere add` — Docker-delegates unless already inside the builder image. */ export class HostAddModule extends AddModule {
38
+ actions = {
39
+ api: HostAddApiAction
40
+ };
41
+ }
42
+
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NsaS9zcmMvc2NhZmZvbGQtaG9zdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb250YWluZXJBcmd2RnJvbUhvc3QsIHJ1bkluQnVpbGRlciB9IGZyb20gXCJAZGVjb2hlcmUvY3JlYXRlXCI7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7XG5cdEFkZEFwaUFjdGlvbixcblx0dHlwZSBBZGRBcGlPcHRpb25zLFxuXHRBZGRNb2R1bGUsXG5cdENyZWF0ZU1vZHVsZSxcblx0V2ViYXBpQWN0aW9uLFxuXHR0eXBlIFdlYmFwaU9wdGlvbnMsXG59IGZyb20gXCJAZGVjb2hlcmUvc2NhZmZvbGRcIjtcblxuQGluamVjdGFibGUoKVxuY2xhc3MgSG9zdFdlYmFwaUFjdGlvbiBleHRlbmRzIFdlYmFwaUFjdGlvbiB7XG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4ob3B0aW9uczogV2ViYXBpT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihjb250YWluZXJBcmd2RnJvbUhvc3QocHJvY2Vzcy5hcmd2KSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5ydW4ob3B0aW9ucyk7XG5cdH1cbn1cblxuQGluamVjdGFibGUoKVxuY2xhc3MgSG9zdEFkZEFwaUFjdGlvbiBleHRlbmRzIEFkZEFwaUFjdGlvbiB7XG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4ob3B0aW9uczogQWRkQXBpT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihjb250YWluZXJBcmd2RnJvbUhvc3QocHJvY2Vzcy5hcmd2KSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5ydW4ob3B0aW9ucyk7XG5cdH1cbn1cblxuLyoqIEhvc3QgYGRlY29oZXJlIGNyZWF0ZWAg4oCUIERvY2tlci1kZWxlZ2F0ZXMgdW5sZXNzIGFscmVhZHkgaW5zaWRlIHRoZSBidWlsZGVyIGltYWdlLiAqL1xuZXhwb3J0IGNsYXNzIEhvc3RDcmVhdGVNb2R1bGUgZXh0ZW5kcyBDcmVhdGVNb2R1bGUge1xuXHRwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgYWN0aW9ucyA9IHsgd2ViYXBpOiBIb3N0V2ViYXBpQWN0aW9uIH07XG59XG5cbi8qKiBIb3N0IGBkZWNvaGVyZSBhZGRgIOKAlCBEb2NrZXItZGVsZWdhdGVzIHVubGVzcyBhbHJlYWR5IGluc2lkZSB0aGUgYnVpbGRlciBpbWFnZS4gKi9cbmV4cG9ydCBjbGFzcyBIb3N0QWRkTW9kdWxlIGV4dGVuZHMgQWRkTW9kdWxlIHtcblx0cHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGFjdGlvbnMgPSB7IGFwaTogSG9zdEFkZEFwaUFjdGlvbiB9O1xufVxuIl0sIm5hbWVzIjpbImNvbnRhaW5lckFyZ3ZGcm9tSG9zdCIsInJ1bkluQnVpbGRlciIsImluamVjdGFibGUiLCJBZGRBcGlBY3Rpb24iLCJBZGRNb2R1bGUiLCJDcmVhdGVNb2R1bGUiLCJXZWJhcGlBY3Rpb24iLCJIb3N0V2ViYXBpQWN0aW9uIiwicnVuIiwib3B0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwiYXJndiIsIkhvc3RBZGRBcGlBY3Rpb24iLCJIb3N0Q3JlYXRlTW9kdWxlIiwiYWN0aW9ucyIsIndlYmFwaSIsIkhvc3RBZGRNb2R1bGUiLCJhcGkiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLHFCQUFxQixFQUFFQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ3ZFLFNBQVNDLFVBQVUsUUFBUSxnQ0FBZ0M7QUFFM0QsU0FDQ0MsWUFBWSxFQUVaQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsWUFBWSxRQUVOLHFCQUFxQjtBQUU1QixNQUNNQyx5QkFBeUJEO0lBQzlCLE1BQXNCRSxJQUFJQyxPQUFzQixFQUEyQjtRQUMxRSxJQUFJQyxRQUFRQyxHQUFHLENBQUNDLGdCQUFnQixLQUFLLEtBQUs7WUFDekNYLGFBQWFELHNCQUFzQlUsUUFBUUcsSUFBSTtRQUNoRDtRQUNBLE9BQU8sS0FBSyxDQUFDTCxJQUFJQztJQUNsQjtBQUNEOzs7O0FBRUEsTUFDTUsseUJBQXlCWDtJQUM5QixNQUFzQkssSUFBSUMsT0FBc0IsRUFBMkI7UUFDMUUsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1lBQ3pDWCxhQUFhRCxzQkFBc0JVLFFBQVFHLElBQUk7UUFDaEQ7UUFDQSxPQUFPLEtBQUssQ0FBQ0wsSUFBSUM7SUFDbEI7QUFDRDs7OztBQUVBLHVGQUF1RixHQUN2RixPQUFPLE1BQU1NLHlCQUF5QlY7SUFDWlcsVUFBVTtRQUFFQyxRQUFRVjtJQUFpQixFQUFFO0FBQ2pFO0FBRUEsb0ZBQW9GLEdBQ3BGLE9BQU8sTUFBTVcsc0JBQXNCZDtJQUNUWSxVQUFVO1FBQUVHLEtBQUtMO0lBQWlCLEVBQUU7QUFDOUQifQ==
package/package.json CHANGED
@@ -1,14 +1,44 @@
1
1
  {
2
2
  "name": "@decohere/cli",
3
- "version": "0.0.1-dev.5",
4
- "description": "Bootstrap placeholder so trusted publishing can be configured. Real artifacts ship from CI.",
3
+ "version": "0.0.1-dev.80",
4
+ "description": "CLI for the Decohere toolchain — build, serve, publish, and manage TypeScript monorepos",
5
+ "keywords": [
6
+ "typescript",
7
+ "cli",
8
+ "monorepo",
9
+ "build",
10
+ "decohere"
11
+ ],
5
12
  "license": "ISC",
6
13
  "author": "Typesmiths",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/typesmiths/decohere.git"
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./types/src/index.d.ts",
18
+ "import": "./es6/src/index.js",
19
+ "require": "./commonjs/src/index.js"
20
+ }
10
21
  },
11
- "publishConfig": {
12
- "access": "public"
13
- }
22
+ "bin": {
23
+ "decohere": "./es6/src/cli.js",
24
+ "forge": "./es6/src/forge.js",
25
+ "flux": "./es6/src/flux.js"
26
+ },
27
+ "scripts": {
28
+ "test": "echo \"Error: no test specified\" && exit 1"
29
+ },
30
+ "dependencies": {
31
+ "@decohere/create": "0.0.1-dev.80",
32
+ "@decohere/crucible": "0.0.1-dev.80",
33
+ "@decohere/flux": "0.0.1-dev.80",
34
+ "@decohere/forge": "0.0.1-dev.80",
35
+ "@decohere/mesh": "0.0.1-dev.80",
36
+ "@decohere/nexus": "0.0.1-dev.80",
37
+ "@decohere/scaffold": "0.0.1-dev.80",
38
+ "@decohere/scribe": "0.0.1-dev.80",
39
+ "@decohere/scribe-pino": "0.0.1-dev.80",
40
+ "commander": "^13.1.0",
41
+ "pino-pretty": "^13.1.3"
42
+ },
43
+ "devDependencies": {}
14
44
  }
@@ -0,0 +1,6 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ writeFileSync(join(dirname(fileURLToPath(import.meta.url)), "deferred.marker"), "1");
6
+ setInterval(() => {}, 60_000);
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "./logger.setup.js";
@@ -0,0 +1,2 @@
1
+ import "@decohere/scribe-pino";
2
+ import "pino-pretty";
@@ -0,0 +1,9 @@
1
+ import type { ApplicationModule, CommandResponse, ModuleManifest } from "@decohere/nexus/cli";
2
+ /**
3
+ * Wires a ModuleManifest into a fully functional ApplicationModule.
4
+ * Handles DI container setup, action registration/resolution, and
5
+ * forwarding the command response to the caller.
6
+ */
7
+ export declare class ModuleFactory {
8
+ static create(module: ModuleManifest, onResponse: (moduleId: string, response: CommandResponse) => void, config?: Record<string, unknown>): ApplicationModule;
9
+ }
@@ -0,0 +1,15 @@
1
+ import { FluxModule } from "@decohere/flux";
2
+ import { ForgeModule } from "@decohere/forge";
3
+ import { RootModule } from "./root.module.js";
4
+ import { HostAddModule, HostCreateModule } from "./scaffold-host.js";
5
+ declare function create(options?: {
6
+ configFile?: string;
7
+ logLevel?: string;
8
+ rootDir?: string;
9
+ }): Promise<RootModule>;
10
+ /** Shipped `decohere` bin — forge, flux, create, add. */
11
+ export declare const productCli: {
12
+ create: typeof create;
13
+ modules: readonly [typeof ForgeModule, typeof FluxModule, typeof HostCreateModule, typeof HostAddModule];
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { type ApplicationModule, DecohereCommand } from "@decohere/nexus/cli";
2
+ import { type ParseOptions } from "commander";
3
+ export declare class RootCommand extends DecohereCommand {
4
+ #private;
5
+ constructor(modules: ApplicationModule[], configFile?: string);
6
+ parseAsync(argv?: readonly string[], options?: ParseOptions): Promise<this>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import type { Actions, ModuleManifest } from "@decohere/nexus/cli";
2
+ import { CommandResponse } from "@decohere/nexus/cli";
3
+ import type { Constructable } from "@decohere/nexus/reflection";
4
+ import type { Command } from "commander";
5
+ export declare class RootModule {
6
+ #private;
7
+ static create(moduleTypes: readonly Constructable<ModuleManifest>[], options?: {
8
+ configFile?: string;
9
+ logLevel?: string;
10
+ rootDir?: string;
11
+ }): Promise<RootModule>;
12
+ private constructor();
13
+ private onResponse;
14
+ run<TActions extends Actions>(argv?: string[]): Promise<CommandResponse<TActions>>;
15
+ get commands(): Command[];
16
+ [Symbol.dispose](): void;
17
+ [Symbol.asyncDispose](): Promise<void>;
18
+ private isBlocking;
19
+ private isCommanderHelpOrVersion;
20
+ }
@@ -0,0 +1,21 @@
1
+ import type { ActionResponse } from "@decohere/nexus/cli";
2
+ import { AddApiAction, type AddApiOptions, AddModule, CreateModule, WebapiAction, type WebapiOptions } from "@decohere/scaffold";
3
+ declare class HostWebapiAction extends WebapiAction {
4
+ run(options: WebapiOptions): Promise<ActionResponse>;
5
+ }
6
+ declare class HostAddApiAction extends AddApiAction {
7
+ run(options: AddApiOptions): Promise<ActionResponse>;
8
+ }
9
+ /** Host `decohere create` — Docker-delegates unless already inside the builder image. */
10
+ export declare class HostCreateModule extends CreateModule {
11
+ readonly actions: {
12
+ webapi: typeof HostWebapiAction;
13
+ };
14
+ }
15
+ /** Host `decohere add` — Docker-delegates unless already inside the builder image. */
16
+ export declare class HostAddModule extends AddModule {
17
+ readonly actions: {
18
+ api: typeof HostAddApiAction;
19
+ };
20
+ }
21
+ export {};
package/README.md DELETED
@@ -1 +0,0 @@
1
- Placeholder package for npm trusted-publisher setup. Ignore this version; CI publishes the real CLI.