@nockdev/cli 1.0.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +85 -0
  3. package/bin/nock.js +17 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +149 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/core/plugins.d.ts +3 -0
  9. package/dist/core/plugins.d.ts.map +1 -0
  10. package/dist/core/plugins.js +90 -0
  11. package/dist/core/plugins.js.map +1 -0
  12. package/dist/core/telemetry.d.ts +2 -0
  13. package/dist/core/telemetry.d.ts.map +1 -0
  14. package/dist/core/telemetry.js +63 -0
  15. package/dist/core/telemetry.js.map +1 -0
  16. package/dist/core/version.d.ts +4 -0
  17. package/dist/core/version.d.ts.map +1 -0
  18. package/dist/core/version.js +23 -0
  19. package/dist/core/version.js.map +1 -0
  20. package/dist/index.d.ts +7 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +8 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/plugins/manager.d.ts +77 -0
  25. package/dist/plugins/manager.d.ts.map +1 -0
  26. package/dist/plugins/manager.js +474 -0
  27. package/dist/plugins/manager.js.map +1 -0
  28. package/dist/plugins/types.d.ts +131 -0
  29. package/dist/plugins/types.d.ts.map +1 -0
  30. package/dist/plugins/types.js +4 -0
  31. package/dist/plugins/types.js.map +1 -0
  32. package/dist/utils/constants.d.ts +11 -0
  33. package/dist/utils/constants.d.ts.map +1 -0
  34. package/dist/utils/constants.js +13 -0
  35. package/dist/utils/constants.js.map +1 -0
  36. package/dist/utils/errors.d.ts +17 -0
  37. package/dist/utils/errors.d.ts.map +1 -0
  38. package/dist/utils/errors.js +32 -0
  39. package/dist/utils/errors.js.map +1 -0
  40. package/dist/utils/exit-codes.d.ts +22 -0
  41. package/dist/utils/exit-codes.d.ts.map +1 -0
  42. package/dist/utils/exit-codes.js +23 -0
  43. package/dist/utils/exit-codes.js.map +1 -0
  44. package/dist/utils/manifest-cache.d.ts +71 -0
  45. package/dist/utils/manifest-cache.d.ts.map +1 -0
  46. package/dist/utils/manifest-cache.js +154 -0
  47. package/dist/utils/manifest-cache.js.map +1 -0
  48. package/dist/utils/official-plugins.d.ts +13 -0
  49. package/dist/utils/official-plugins.d.ts.map +1 -0
  50. package/dist/utils/official-plugins.js +25 -0
  51. package/dist/utils/official-plugins.js.map +1 -0
  52. package/dist/utils/telemetry.d.ts +58 -0
  53. package/dist/utils/telemetry.d.ts.map +1 -0
  54. package/dist/utils/telemetry.js +191 -0
  55. package/dist/utils/telemetry.js.map +1 -0
  56. package/package.json +74 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@nockdev/cli` will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2026-02-06
9
+
10
+ ### Added
11
+
12
+ - Initial release of NOCK CLI
13
+ - Microkernel plugin architecture
14
+ - Plugin Manager with install/remove/update
15
+ - Core commands: help, version, plugins
16
+ - TypeScript type exports for plugin authors
17
+ - ESM module support
18
+ - Node.js 18+ requirement
19
+
20
+ ### Plugin System
21
+
22
+ - Dynamic ESM plugin loading
23
+ - Plugin lifecycle hooks (init/destroy)
24
+ - Command routing by topic
25
+ - Flag definitions support
26
+
27
+ ### Developer Experience
28
+
29
+ - Colored terminal output
30
+ - Verbose/quiet modes
31
+ - Standard POSIX exit codes
package/README.md ADDED
@@ -0,0 +1,85 @@
1
+ # @nockdev/cli
2
+
3
+ > 🚀 Extensible Development Platform by NockDev
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@nockdev/cli.svg)](https://www.npmjs.com/package/@nockdev/cli)
6
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g @nockdev/cli
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ ```bash
18
+ nock --help # Show help
19
+ nock plugins install @nockdev/awf # Install a plugin
20
+ nock awf init # Use plugin commands
21
+ ```
22
+
23
+ ## Commands
24
+
25
+ | Command | Description |
26
+ | ---------------------------- | ---------------------- |
27
+ | `nock --help` | Show help |
28
+ | `nock version` | Show version info |
29
+ | `nock plugins list` | List installed plugins |
30
+ | `nock plugins install <pkg>` | Install plugin |
31
+ | `nock plugins remove <pkg>` | Remove plugin |
32
+ | `nock plugins update [pkg]` | Update plugin(s) |
33
+ | `nock telemetry status` | Telemetry status |
34
+ | `nock cache clear` | Clear command cache |
35
+
36
+ ## Auto-Install
37
+
38
+ Official plugins are auto-installed on first use:
39
+
40
+ ```
41
+ $ nock awf init
42
+ âš¡ Plugin 'awf' is not installed.
43
+ â—† Would you like to install @nockdev/awf?
44
+ 📦 Installing @nockdev/awf...
45
+ ✔ Installed @nockdev/awf@6.2.0
46
+ 🚀 Running: nock awf init
47
+ ```
48
+
49
+ ## Plugin Development
50
+
51
+ ```typescript
52
+ import type { NockPlugin } from "@nockdev/cli";
53
+
54
+ const myPlugin: NockPlugin = {
55
+ name: "@my/plugin",
56
+ version: "1.0.0",
57
+ topic: "my",
58
+ description: "My awesome plugin",
59
+ commands: [
60
+ {
61
+ name: "hello",
62
+ id: "my:hello",
63
+ description: "Say hello",
64
+ run: async () => console.log("Hello!"),
65
+ },
66
+ ],
67
+ };
68
+
69
+ export default myPlugin;
70
+ ```
71
+
72
+ ## Official Plugins
73
+
74
+ | Plugin | Description |
75
+ | ------------------------------------------------------------ | ---------------------------------------- |
76
+ | [`@nockdev/awf`](https://www.npmjs.com/package/@nockdev/awf) | AI dev assistant — 57 skills, 21 IDEs |
77
+ | [`@nockdev/hsa`](https://www.npmjs.com/package/@nockdev/hsa) | HSA MCP Server — semantic context engine |
78
+
79
+ ## Requirements
80
+
81
+ - Node.js ≥ 18.0.0
82
+
83
+ ## License
84
+
85
+ MIT © NockDev
package/bin/nock.js ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * NOCK CLI - Extensible Development Platform
4
+ * @version 1.0.0
5
+ * @author NockDev
6
+ *
7
+ * Usage:
8
+ * nock --help Show help
9
+ * nock plugins list List installed plugins
10
+ * nock plugins install <pkg> Install a plugin
11
+ * nock <plugin> <command> Run plugin command
12
+ */
13
+ import('../dist/cli.js').catch((err) => {
14
+ console.error('Failed to load CLI:', err.message);
15
+ console.error('\nPlease run: npm run build');
16
+ process.exit(1);
17
+ });
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,149 @@
1
+ // packages/cli/src/cli.ts
2
+ // NOCK CLI - Core Entry Point v1.0.0
3
+ import mri from "mri";
4
+ import pc from "picocolors";
5
+ import * as prompts from "@clack/prompts";
6
+ import { PluginManager } from "./plugins/manager.js";
7
+ import { pluginsCommand } from "./core/plugins.js";
8
+ import { telemetryCommand } from "./core/telemetry.js";
9
+ import { versionCommand, getVersion } from "./core/version.js";
10
+ import { EXIT_CODES } from "./utils/exit-codes.js";
11
+ import { manifestCache } from "./utils/manifest-cache.js";
12
+ import { getOfficialPlugin } from "./utils/official-plugins.js";
13
+ const VERSION = getVersion();
14
+ const HELP = `
15
+ ${pc.cyan("NOCK CLI")} ${pc.dim(`v${VERSION}`)}
16
+ Extensible Development Platform by NockDev
17
+
18
+ ${pc.bold("Usage:")}
19
+ nock [command] [options]
20
+ nock <plugin> <command> [options]
21
+
22
+ ${pc.bold("Core Commands:")}
23
+ ${pc.green("help")} Show this help
24
+ ${pc.green("version")} Show version info
25
+ ${pc.green("plugins")} Manage plugins
26
+ ${pc.dim("list")} List installed plugins
27
+ ${pc.dim("install <pkg>")} Install plugin from npm
28
+ ${pc.dim("remove <pkg>")} Remove plugin
29
+ ${pc.dim("update [pkg]")} Update plugin(s)
30
+ ${pc.dim("link <path>")} Link local plugin (dev)
31
+ ${pc.dim("unlink <path>")} Unlink local plugin
32
+ ${pc.green("telemetry")} Manage anonymous usage data
33
+ ${pc.dim("status")} Show telemetry status
34
+ ${pc.dim("enable")} Enable telemetry
35
+ ${pc.dim("disable")} Disable telemetry
36
+ ${pc.green("cache")} Manage manifest cache
37
+ ${pc.dim("clear")} Clear command cache
38
+
39
+ ${pc.bold("Examples:")}
40
+ ${pc.dim("$")} nock plugins install @nockdev/awf
41
+ ${pc.dim("$")} nock awf init
42
+ ${pc.dim("$")} nock awf add react typescript
43
+ ${pc.dim("$")} nock plugins link ./my-plugin
44
+
45
+ ${pc.bold("Documentation:")}
46
+ ${pc.dim("https://github.com/nockasdd/domyh-awf-code")}
47
+ `;
48
+ async function main() {
49
+ const argv = mri(process.argv.slice(2), {
50
+ boolean: ["help", "version", "verbose", "quiet"],
51
+ string: ["config"],
52
+ alias: {
53
+ h: "help",
54
+ v: "version",
55
+ V: "verbose",
56
+ q: "quiet",
57
+ },
58
+ });
59
+ const [command, ...args] = argv._;
60
+ // --version (no command)
61
+ if (argv.version && !command) {
62
+ console.log(VERSION);
63
+ return;
64
+ }
65
+ // --help or no command
66
+ if (argv.help || !command) {
67
+ console.log(HELP);
68
+ return;
69
+ }
70
+ // Initialize Plugin Manager
71
+ const plugins = new PluginManager({
72
+ verbose: argv.verbose,
73
+ quiet: argv.quiet,
74
+ });
75
+ try {
76
+ // Load installed plugins
77
+ await plugins.loadAll();
78
+ // Core commands
79
+ switch (command) {
80
+ case "help":
81
+ console.log(HELP);
82
+ plugins.showAllPluginsHelp();
83
+ return;
84
+ case "version":
85
+ versionCommand(plugins);
86
+ return;
87
+ case "plugins":
88
+ case "plugin":
89
+ await pluginsCommand(args, argv, plugins);
90
+ return;
91
+ case "telemetry":
92
+ await telemetryCommand(args, argv);
93
+ return;
94
+ case "cache":
95
+ if (args[0] === "clear") {
96
+ manifestCache.invalidate();
97
+ console.log(pc.green("✔ Cache cleared"));
98
+ }
99
+ else {
100
+ const stats = manifestCache.stats();
101
+ console.log(`\n${pc.bold("Cache Status:")}`);
102
+ console.log(` Valid: ${stats.valid ? pc.green("Yes") : pc.yellow("No")}`);
103
+ console.log(` Plugins: ${stats.pluginCount}`);
104
+ console.log(` Commands: ${stats.commandCount}`);
105
+ console.log(` Age: ${stats.age}\n`);
106
+ }
107
+ return;
108
+ }
109
+ // Route to plugin
110
+ const handled = await plugins.route(command, args, argv);
111
+ if (handled)
112
+ return;
113
+ // Check if command matches an official plugin (auto-install)
114
+ const officialPackage = getOfficialPlugin(command);
115
+ if (officialPackage) {
116
+ console.log(pc.yellow(`\nâš¡ Plugin '${command}' is not installed.\n`));
117
+ const shouldInstall = await prompts.confirm({
118
+ message: `Would you like to install ${pc.cyan(officialPackage)}?`,
119
+ });
120
+ if (prompts.isCancel(shouldInstall) || !shouldInstall) {
121
+ console.log(pc.dim("Installation cancelled."));
122
+ return;
123
+ }
124
+ // Install the plugin
125
+ console.log("");
126
+ await plugins.install(officialPackage);
127
+ // Reload and retry
128
+ await plugins.loadAll();
129
+ const retryHandled = await plugins.route(command, args, argv);
130
+ if (retryHandled)
131
+ return;
132
+ }
133
+ // Unknown command
134
+ console.log(pc.yellow(`Unknown command: ${command}`));
135
+ console.log(pc.dim("Run 'nock --help' for usage"));
136
+ process.exit(EXIT_CODES.INVALID_COMMAND);
137
+ }
138
+ catch (error) {
139
+ if (!argv.quiet) {
140
+ console.error(pc.red("Error:"), error instanceof Error ? error.message : String(error));
141
+ }
142
+ if (argv.verbose && error instanceof Error && error.stack) {
143
+ console.error(pc.dim(error.stack));
144
+ }
145
+ process.exit(EXIT_CODES.GENERAL_ERROR);
146
+ }
147
+ }
148
+ main();
149
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PluginManager } from "../plugins/manager.js";
2
+ export declare function pluginsCommand(args: string[], flags: Record<string, unknown>, plugins: PluginManager): Promise<void>;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAmEf"}
@@ -0,0 +1,90 @@
1
+ // packages/cli/src/core/plugins.ts
2
+ // Core 'plugins' command handler
3
+ import pc from "picocolors";
4
+ import { showUsageError } from "../utils/errors.js";
5
+ export async function pluginsCommand(args, flags, plugins) {
6
+ const [subcommand, ...rest] = args;
7
+ switch (subcommand) {
8
+ case "list":
9
+ case "ls":
10
+ case undefined:
11
+ listPlugins(plugins);
12
+ break;
13
+ case "install":
14
+ case "add":
15
+ case "i":
16
+ if (!rest[0]) {
17
+ showUsageError("Package name required", "nock plugins install <package>", "nock plugins install @nockdev/awf");
18
+ return;
19
+ }
20
+ await plugins.install(rest[0]);
21
+ break;
22
+ case "remove":
23
+ case "uninstall":
24
+ case "rm":
25
+ if (!rest[0]) {
26
+ showUsageError("Package name required", "nock plugins remove <package>");
27
+ return;
28
+ }
29
+ await plugins.remove(rest[0]);
30
+ break;
31
+ case "update":
32
+ case "upgrade":
33
+ await plugins.update(rest[0]); // Optional: specific package
34
+ break;
35
+ case "link":
36
+ if (!rest[0]) {
37
+ showUsageError("Path required", "nock plugins link <path>", "nock plugins link ./my-plugin");
38
+ return;
39
+ }
40
+ await plugins.link(rest[0]);
41
+ break;
42
+ case "unlink":
43
+ if (!rest[0]) {
44
+ showUsageError("Path required", "nock plugins unlink <path>", "nock plugins unlink ./my-plugin");
45
+ return;
46
+ }
47
+ await plugins.unlink(rest[0]);
48
+ break;
49
+ default:
50
+ console.log(pc.yellow(`Unknown subcommand: ${subcommand}`));
51
+ showPluginsHelp();
52
+ }
53
+ }
54
+ function listPlugins(plugins) {
55
+ const installed = plugins.list();
56
+ if (installed.length === 0) {
57
+ console.log(pc.yellow("No plugins installed."));
58
+ console.log();
59
+ console.log(pc.dim("Get started:"));
60
+ console.log(pc.cyan(" nock plugins install @nockdev/awf"));
61
+ return;
62
+ }
63
+ console.log(pc.bold("Installed Plugins:"));
64
+ console.log();
65
+ for (const p of installed) {
66
+ console.log(` ${pc.green(p.topic)} ${pc.dim(`(${p.name}@${p.version})`)}`);
67
+ console.log(` ${p.description}`);
68
+ console.log(` ${pc.dim(`${p.commandCount} commands`)}`);
69
+ console.log();
70
+ }
71
+ }
72
+ function showPluginsHelp() {
73
+ console.log(`
74
+ ${pc.bold("Plugin Management:")}
75
+ ${pc.green("list")} List installed plugins
76
+ ${pc.green("install")} <package> Install a plugin
77
+ ${pc.green("remove")} <package> Remove a plugin
78
+ ${pc.green("update")} [package] Update plugin(s)
79
+ ${pc.green("link")} <path> Link local plugin (dev)
80
+ ${pc.green("unlink")} <path> Unlink local plugin
81
+
82
+ ${pc.bold("Examples:")}
83
+ nock plugins list
84
+ nock plugins install @nockdev/awf
85
+ nock plugins remove @nockdev/awf
86
+ nock plugins update
87
+ nock plugins link ./my-plugin
88
+ `);
89
+ }
90
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function telemetryCommand(args: string[], _flags: Record<string, unknown>): Promise<void>;
2
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -0,0 +1,63 @@
1
+ // packages/cli/src/core/telemetry.ts
2
+ // Core 'telemetry' command handler
3
+ import pc from "picocolors";
4
+ import { telemetry } from "../utils/telemetry.js";
5
+ export async function telemetryCommand(args, _flags) {
6
+ const [subcommand] = args;
7
+ switch (subcommand) {
8
+ case "enable":
9
+ telemetry.enable();
10
+ console.log(pc.green("✔ Telemetry enabled"));
11
+ console.log(pc.dim(" Thank you for helping improve NOCK CLI!"));
12
+ console.log(pc.dim(" We collect anonymous usage data only."));
13
+ break;
14
+ case "disable":
15
+ telemetry.disable();
16
+ console.log(pc.green("✔ Telemetry disabled"));
17
+ console.log(pc.dim(" No data will be collected."));
18
+ break;
19
+ case "status":
20
+ case undefined:
21
+ showStatus();
22
+ break;
23
+ default:
24
+ console.log(pc.yellow(`Unknown subcommand: ${subcommand}`));
25
+ showTelemetryHelp();
26
+ }
27
+ }
28
+ function showStatus() {
29
+ const status = telemetry.status();
30
+ console.log(`
31
+ ${pc.bold("Telemetry Status:")}
32
+
33
+ Status: ${status.enabled ? pc.green("Enabled ✔") : pc.yellow("Disabled")}
34
+ Buffered: ${status.eventCount} events
35
+
36
+ ${pc.bold("What we collect:")}
37
+ ${pc.dim("• Command names (not arguments)")}
38
+ ${pc.dim("• CLI version")}
39
+ ${pc.dim("• OS type and Node version")}
40
+ ${pc.dim("• Execution duration")}
41
+ ${pc.dim("• CI environment detection")}
42
+
43
+ ${pc.bold("What we DON'T collect:")}
44
+ ${pc.dim("• Personal information")}
45
+ ${pc.dim("• File paths or content")}
46
+ ${pc.dim("• API keys or secrets")}
47
+ ${pc.dim("• Any identifiable data")}
48
+ `);
49
+ }
50
+ function showTelemetryHelp() {
51
+ console.log(`
52
+ ${pc.bold("Telemetry Commands:")}
53
+ ${pc.green("status")} Show telemetry status
54
+ ${pc.green("enable")} Enable anonymous usage data
55
+ ${pc.green("disable")} Disable telemetry
56
+
57
+ ${pc.bold("Examples:")}
58
+ nock telemetry status
59
+ nock telemetry enable
60
+ nock telemetry disable
61
+ `);
62
+ }
63
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,mCAAmC;AAEnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAc,EACd,MAA+B;IAE/B,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAE1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAC/D,MAAM;QAER,KAAK,SAAS;YACZ,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACpD,MAAM;QAER,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,UAAU,EAAE,CAAC;YACb,MAAM;QAER;YACE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5D,iBAAiB,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC;EACZ,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;;kBAEZ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;kBAC9D,MAAM,CAAC,UAAU;;EAEjC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzB,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC;IACzC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC;IACvB,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACpC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC9B,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;;EAEtC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC/B,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAChC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACjC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC/B,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;CACpC,CAAC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,GAAG,CAAC;EACZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5B,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;;EAErB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;;;CAIrB,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PluginManager } from "../plugins/manager.js";
2
+ export declare function versionCommand(plugins: PluginManager): void;
3
+ export declare function getVersion(): string;
4
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAe3D;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,23 @@
1
+ // packages/cli/src/core/version.ts
2
+ // Version command handler
3
+ import pc from "picocolors";
4
+ import { CLI_VERSION } from "../utils/constants.js";
5
+ export function versionCommand(plugins) {
6
+ console.log(pc.bold("NOCK CLI"));
7
+ console.log(` CLI: ${pc.cyan(`v${CLI_VERSION}`)}`);
8
+ console.log(` Node: ${pc.dim(process.version)}`);
9
+ console.log(` Platform: ${pc.dim(process.platform)}`);
10
+ console.log(` Arch: ${pc.dim(process.arch)}`);
11
+ const installed = plugins.list();
12
+ if (installed.length > 0) {
13
+ console.log();
14
+ console.log(pc.bold("Plugins:"));
15
+ for (const p of installed) {
16
+ console.log(` ${pc.green(p.topic)}: ${pc.cyan(`v${p.version}`)}`);
17
+ }
18
+ }
19
+ }
20
+ export function getVersion() {
21
+ return CLI_VERSION;
22
+ }
23
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,0BAA0B;AAE1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type { NockPlugin, PluginCommand, PluginHook, PluginContext, FlagDefinition, ArgumentDefinition, InstalledPlugin, PluginManagerOptions, } from "./plugins/types.js";
2
+ export { PluginManager } from "./plugins/manager.js";
3
+ export { EXIT_CODES, type ExitCode } from "./utils/exit-codes.js";
4
+ export { CLI_VERSION, CLI_NAME } from "./utils/constants.js";
5
+ export { getVersion } from "./core/version.js";
6
+ export { showUsageError, showWarning, showInfo, showSuccess } from "./utils/errors.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ // packages/cli/src/index.ts
2
+ // Public exports for @nockdev/cli
3
+ export { PluginManager } from "./plugins/manager.js";
4
+ export { EXIT_CODES } from "./utils/exit-codes.js";
5
+ export { CLI_VERSION, CLI_NAME } from "./utils/constants.js";
6
+ export { getVersion } from "./core/version.js";
7
+ export { showUsageError, showWarning, showInfo, showSuccess } from "./utils/errors.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,kCAAkC;AAalC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,77 @@
1
+ import type { PluginCommand, InstalledPlugin, PluginManagerOptions } from "./types.js";
2
+ export declare class PluginManager {
3
+ private plugins;
4
+ private linkedPlugins;
5
+ private nockDir;
6
+ private pluginsDir;
7
+ private manifestPath;
8
+ private options;
9
+ constructor(options?: PluginManagerOptions);
10
+ private ensureDirectories;
11
+ /**
12
+ * Load all installed plugins
13
+ */
14
+ loadAll(): Promise<void>;
15
+ /**
16
+ * Load a single plugin by package name
17
+ */
18
+ load(packageName: string): Promise<void>;
19
+ /**
20
+ * Load plugin from absolute path (for linked plugins)
21
+ */
22
+ loadFromPath(pluginPath: string): Promise<void>;
23
+ /**
24
+ * Link a local plugin for development
25
+ */
26
+ link(pluginPath: string): Promise<void>;
27
+ /**
28
+ * Unlink a local plugin
29
+ */
30
+ unlink(pluginPath: string): Promise<void>;
31
+ /**
32
+ * Install plugin from npm
33
+ */
34
+ install(packageName: string): Promise<void>;
35
+ /**
36
+ * Remove plugin
37
+ */
38
+ remove(packageName: string): Promise<void>;
39
+ /**
40
+ * Update plugin(s)
41
+ */
42
+ update(packageName?: string): Promise<void>;
43
+ /**
44
+ * Route command to plugin
45
+ */
46
+ route(topic: string, args: string[], flags: Record<string, unknown>): Promise<boolean>;
47
+ /**
48
+ * List installed plugins
49
+ */
50
+ list(): InstalledPlugin[];
51
+ /**
52
+ * Get all commands from all plugins
53
+ */
54
+ getAllCommands(): PluginCommand[];
55
+ /**
56
+ * Show help for all plugins
57
+ */
58
+ showAllPluginsHelp(): void;
59
+ private showPluginHelp;
60
+ private validate;
61
+ private createContext;
62
+ private readManifest;
63
+ private writeManifest;
64
+ /**
65
+ * Run hooks of a specific type across all plugins
66
+ */
67
+ private runHook;
68
+ /**
69
+ * Find similar command name for suggestions (Levenshtein distance)
70
+ */
71
+ private findSimilar;
72
+ /**
73
+ * Simple Levenshtein distance implementation
74
+ */
75
+ private levenshtein;
76
+ }
77
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAEf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAUpB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAiC;gBAEpC,OAAO,GAAE,oBAAyB;IAc9C,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC9B;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9C;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrD;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC7C;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDjD;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ChD;;OAEG;IACG,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCjD;;OAEG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC;IAwCnB;;OAEG;IACH,IAAI,IAAI,eAAe,EAAE;IAWzB;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAU1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAIrB;;OAEG;YACW,OAAO;IAsBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,WAAW;CA0BpB"}