@nockdev/cli 1.0.0 → 1.0.2
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.
- package/README.md +65 -39
- package/dist/cli.js +32 -1
- package/dist/cli.js.map +1 -1
- package/dist/notifications/announcement-client.d.ts +14 -0
- package/dist/notifications/announcement-client.d.ts.map +1 -0
- package/dist/notifications/announcement-client.js +50 -0
- package/dist/notifications/announcement-client.js.map +1 -0
- package/dist/notifications/index.d.ts +48 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +165 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/renderer.d.ts +28 -0
- package/dist/notifications/renderer.d.ts.map +1 -0
- package/dist/notifications/renderer.js +87 -0
- package/dist/notifications/renderer.js.map +1 -0
- package/dist/notifications/types.d.ts +47 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +4 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/notifications/update-checker.d.ts +10 -0
- package/dist/notifications/update-checker.d.ts.map +1 -0
- package/dist/notifications/update-checker.js +52 -0
- package/dist/notifications/update-checker.js.map +1 -0
- package/dist/plugins/manager.d.ts +5 -0
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +25 -7
- package/dist/plugins/manager.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/official-plugins.d.ts +18 -1
- package/dist/utils/official-plugins.d.ts.map +1 -1
- package/dist/utils/official-plugins.js +12 -2
- package/dist/utils/official-plugins.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,52 +1,78 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:1E40AF,100:6D28D9&height=160§ion=header&text=NOCK%20CLI&fontSize=42&fontColor=FFFFFF&animation=fadeIn&fontAlignY=35&desc=Extensible%20AI%20Development%20Platform&descAlignY=55&descSize=16" width="100%" />
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@nockdev/cli"><img src="https://img.shields.io/npm/v/@nockdev/cli?style=for-the-badge&logo=npm&logoColor=white&labelColor=CB3837&color=000000" alt="npm" /></a>
|
|
7
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A518.0.0-10B981?style=for-the-badge&logo=nodedotjs&logoColor=white" alt="Node.js" />
|
|
8
|
+
<img src="https://img.shields.io/badge/license-MIT-3B82F6?style=for-the-badge&logo=opensourceinitiative&logoColor=white" alt="License" />
|
|
9
|
+
</p>
|
|
4
10
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
<p align="center">
|
|
12
|
+
<b>Microkernel CLI</b> with auto-discovery plugins. Install once, extend with official and community packages.
|
|
13
|
+
</p>
|
|
8
14
|
|
|
9
|
-
|
|
15
|
+
---
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
npm install -g @nockdev/cli
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Quick Start
|
|
17
|
+
## ⚡ Quick Start
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
|
|
19
|
-
nock
|
|
20
|
-
nock awf init # Use plugin commands
|
|
20
|
+
npm install -g @nockdev/cli # Install globally
|
|
21
|
+
nock awf init # Initialize AI assistant in your project
|
|
21
22
|
```
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
> 💡 Plugins install automatically on first use — no manual setup needed.
|
|
24
25
|
|
|
25
|
-
|
|
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 |
|
|
26
|
+
---
|
|
35
27
|
|
|
36
|
-
##
|
|
28
|
+
## 🔌 Plugin System
|
|
37
29
|
|
|
38
|
-
|
|
30
|
+
NOCK CLI uses a **microkernel architecture** — the core is lightweight, plugins provide all functionality.
|
|
39
31
|
|
|
40
32
|
```
|
|
41
33
|
$ nock awf init
|
|
42
34
|
⚡ Plugin 'awf' is not installed.
|
|
43
35
|
◆ Would you like to install @nockdev/awf?
|
|
44
36
|
📦 Installing @nockdev/awf...
|
|
45
|
-
✔ Installed @nockdev/awf@
|
|
37
|
+
✔ Installed @nockdev/awf@latest
|
|
46
38
|
🚀 Running: nock awf init
|
|
47
39
|
```
|
|
48
40
|
|
|
49
|
-
|
|
41
|
+
### Official Plugins
|
|
42
|
+
|
|
43
|
+
| Plugin | Description |
|
|
44
|
+
| :----------------------------------------------------------- | :------------------------------------------------------------------------ |
|
|
45
|
+
| [`@nockdev/awf`](https://www.npmjs.com/package/@nockdev/awf) | 🧠 AI development assistant — 82 skills, 22 IDEs, 34 workflows |
|
|
46
|
+
| [`@nockdev/hsa`](https://www.npmjs.com/package/@nockdev/hsa) | 🔍 HSA MCP Server — semantic code search, project analysis, web dashboard |
|
|
47
|
+
|
|
48
|
+
### Plugin Management
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
nock plugins list # List installed plugins
|
|
52
|
+
nock plugins install <package> # Install a plugin
|
|
53
|
+
nock plugins remove <package> # Remove a plugin
|
|
54
|
+
nock plugins update [package] # Update plugin(s)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 🎯 Core Commands
|
|
60
|
+
|
|
61
|
+
| Command | Description |
|
|
62
|
+
| :------------------------------- | :----------------------------------------- |
|
|
63
|
+
| `nock --help` | Show help and available topics |
|
|
64
|
+
| `nock version` | Show CLI and plugin versions |
|
|
65
|
+
| `nock awf init` | Initialize AI assistant in current project |
|
|
66
|
+
| `nock awf install --ide <name>` | Setup IDE-specific configuration |
|
|
67
|
+
| `nock awf mcp install --ide all` | Configure MCP server for all IDEs |
|
|
68
|
+
| `nock awf doctor` | Diagnose IDE configuration issues |
|
|
69
|
+
| `nock awf hsa status` | Check HSA MCP server status |
|
|
70
|
+
| `nock telemetry status` | View telemetry status |
|
|
71
|
+
| `nock cache clear` | Clear command cache |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 🛠️ Build Your Own Plugin
|
|
50
76
|
|
|
51
77
|
```typescript
|
|
52
78
|
import type { NockPlugin } from "@nockdev/cli";
|
|
@@ -61,7 +87,7 @@ const myPlugin: NockPlugin = {
|
|
|
61
87
|
name: "hello",
|
|
62
88
|
id: "my:hello",
|
|
63
89
|
description: "Say hello",
|
|
64
|
-
run: async () => console.log("Hello!"),
|
|
90
|
+
run: async () => console.log("Hello from my plugin!"),
|
|
65
91
|
},
|
|
66
92
|
],
|
|
67
93
|
};
|
|
@@ -69,17 +95,17 @@ const myPlugin: NockPlugin = {
|
|
|
69
95
|
export default myPlugin;
|
|
70
96
|
```
|
|
71
97
|
|
|
72
|
-
|
|
98
|
+
---
|
|
73
99
|
|
|
74
|
-
|
|
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 |
|
|
100
|
+
## 📋 Requirements
|
|
78
101
|
|
|
79
|
-
|
|
102
|
+
- **Node.js** ≥ 18.0.0
|
|
103
|
+
- **npm** ≥ 8.0.0
|
|
80
104
|
|
|
81
|
-
|
|
105
|
+
## 📄 License
|
|
82
106
|
|
|
83
|
-
|
|
107
|
+
MIT © [**NockDev**](https://github.com/nockasdd)
|
|
84
108
|
|
|
85
|
-
|
|
109
|
+
<p align="center">
|
|
110
|
+
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:6D28D9,100:1E40AF&height=100§ion=footer" width="100%" />
|
|
111
|
+
</p>
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,8 @@ import { telemetryCommand } from "./core/telemetry.js";
|
|
|
9
9
|
import { versionCommand, getVersion } from "./core/version.js";
|
|
10
10
|
import { EXIT_CODES } from "./utils/exit-codes.js";
|
|
11
11
|
import { manifestCache } from "./utils/manifest-cache.js";
|
|
12
|
-
import { getOfficialPlugin } from "./utils/official-plugins.js";
|
|
12
|
+
import { getOfficialPlugin, getTopicAlias } from "./utils/official-plugins.js";
|
|
13
|
+
import { notifications } from "./notifications/index.js";
|
|
13
14
|
const VERSION = getVersion();
|
|
14
15
|
const HELP = `
|
|
15
16
|
${pc.cyan("NOCK CLI")} ${pc.dim(`v${VERSION}`)}
|
|
@@ -46,6 +47,8 @@ ${pc.bold("Documentation:")}
|
|
|
46
47
|
${pc.dim("https://github.com/nockasdd/domyh-awf-code")}
|
|
47
48
|
`;
|
|
48
49
|
async function main() {
|
|
50
|
+
// Start notification check (non-blocking, runs in parallel with command)
|
|
51
|
+
const notificationCheck = notifications.check();
|
|
49
52
|
const argv = mri(process.argv.slice(2), {
|
|
50
53
|
boolean: ["help", "version", "verbose", "quiet"],
|
|
51
54
|
string: ["config"],
|
|
@@ -110,6 +113,31 @@ async function main() {
|
|
|
110
113
|
const handled = await plugins.route(command, args, argv);
|
|
111
114
|
if (handled)
|
|
112
115
|
return;
|
|
116
|
+
// Check topic aliases (e.g. `nock hsa` → `nock awf hsa`)
|
|
117
|
+
const alias = getTopicAlias(command);
|
|
118
|
+
if (alias) {
|
|
119
|
+
const parentPackage = getOfficialPlugin(alias.plugin);
|
|
120
|
+
const parentPlugin = plugins.list().find(p => p.topic === alias.plugin);
|
|
121
|
+
// Auto-install parent plugin if not installed
|
|
122
|
+
if (!parentPlugin && parentPackage) {
|
|
123
|
+
console.log(pc.yellow(`\n⚡ '${command}' requires plugin '${alias.plugin}'.\n`));
|
|
124
|
+
const shouldInstall = await prompts.confirm({
|
|
125
|
+
message: `Would you like to install ${pc.cyan(parentPackage)}?`,
|
|
126
|
+
});
|
|
127
|
+
if (prompts.isCancel(shouldInstall) || !shouldInstall) {
|
|
128
|
+
console.log(pc.dim("Installation cancelled."));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
console.log("");
|
|
132
|
+
await plugins.install(parentPackage);
|
|
133
|
+
await plugins.loadAll();
|
|
134
|
+
}
|
|
135
|
+
// Route: prepend subcommand to args → nock awf hsa [args]
|
|
136
|
+
const aliasArgs = [alias.subcommand, ...args];
|
|
137
|
+
const aliasHandled = await plugins.route(alias.plugin, aliasArgs, argv);
|
|
138
|
+
if (aliasHandled)
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
113
141
|
// Check if command matches an official plugin (auto-install)
|
|
114
142
|
const officialPackage = getOfficialPlugin(command);
|
|
115
143
|
if (officialPackage) {
|
|
@@ -144,6 +172,9 @@ async function main() {
|
|
|
144
172
|
}
|
|
145
173
|
process.exit(EXIT_CODES.GENERAL_ERROR);
|
|
146
174
|
}
|
|
175
|
+
// Display notifications after command completes
|
|
176
|
+
await notificationCheck;
|
|
177
|
+
notifications.display();
|
|
147
178
|
}
|
|
148
179
|
main();
|
|
149
180
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,qCAAqC;AAErC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BootstrapResponse } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fetch bootstrap data from the backend API.
|
|
4
|
+
*
|
|
5
|
+
* Returns updates, announcements, entitlements, and MOTD in a single call.
|
|
6
|
+
* Returns null if backend is unavailable (graceful fallback).
|
|
7
|
+
*
|
|
8
|
+
* When api.autodomyh.com is not deployed yet:
|
|
9
|
+
* → fetch fails with connection error or 404
|
|
10
|
+
* → catch block returns null
|
|
11
|
+
* → CLI operates 100% normally
|
|
12
|
+
*/
|
|
13
|
+
export declare function fetchBootstrap(dismissed?: string[]): Promise<BootstrapResponse | null>;
|
|
14
|
+
//# sourceMappingURL=announcement-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announcement-client.d.ts","sourceRoot":"","sources":["../../src/notifications/announcement-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKpD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoCnC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// packages/cli/src/notifications/announcement-client.ts
|
|
2
|
+
// Announcement Client v1.0.0 — Fetch bootstrap data from api.autodomyh.com
|
|
3
|
+
// Pattern: HashiCorp Checkpoint (unified endpoint for updates + announcements)
|
|
4
|
+
import { CLI_VERSION, API_BASE_URL } from "../utils/constants.js";
|
|
5
|
+
const BOOTSTRAP_PATH = "/api/v1/cli/bootstrap";
|
|
6
|
+
const TIMEOUT_MS = 5000;
|
|
7
|
+
/**
|
|
8
|
+
* Fetch bootstrap data from the backend API.
|
|
9
|
+
*
|
|
10
|
+
* Returns updates, announcements, entitlements, and MOTD in a single call.
|
|
11
|
+
* Returns null if backend is unavailable (graceful fallback).
|
|
12
|
+
*
|
|
13
|
+
* When api.autodomyh.com is not deployed yet:
|
|
14
|
+
* → fetch fails with connection error or 404
|
|
15
|
+
* → catch block returns null
|
|
16
|
+
* → CLI operates 100% normally
|
|
17
|
+
*/
|
|
18
|
+
export async function fetchBootstrap(dismissed = []) {
|
|
19
|
+
try {
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
22
|
+
const params = new URLSearchParams({
|
|
23
|
+
version: CLI_VERSION,
|
|
24
|
+
platform: process.platform,
|
|
25
|
+
arch: process.arch,
|
|
26
|
+
node: process.version,
|
|
27
|
+
});
|
|
28
|
+
if (dismissed.length > 0) {
|
|
29
|
+
params.set("dismissed", dismissed.join(","));
|
|
30
|
+
}
|
|
31
|
+
const url = `${API_BASE_URL}${BOOTSTRAP_PATH}?${params.toString()}`;
|
|
32
|
+
const res = await fetch(url, {
|
|
33
|
+
headers: {
|
|
34
|
+
Accept: "application/json",
|
|
35
|
+
"User-Agent": `nock-cli/${CLI_VERSION}`,
|
|
36
|
+
},
|
|
37
|
+
signal: controller.signal,
|
|
38
|
+
});
|
|
39
|
+
clearTimeout(timeout);
|
|
40
|
+
if (!res.ok)
|
|
41
|
+
return null;
|
|
42
|
+
return (await res.json());
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Backend not deployed, network error, timeout, offline
|
|
46
|
+
// → graceful fallback, CLI works normally
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=announcement-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announcement-client.js","sourceRoot":"","sources":["../../src/notifications/announcement-client.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,2EAA2E;AAC3E,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGlE,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC/C,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAAsB,EAAE;IAExB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,cAAc,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAEpE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,YAAY,WAAW,EAAE;aACxC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,0CAA0C;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { NotificationCache } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Notification Gateway — single entry point for all CLI notifications.
|
|
4
|
+
*
|
|
5
|
+
* Lifecycle:
|
|
6
|
+
* 1. CLI startup → gateway.check() (non-blocking, parallel with command)
|
|
7
|
+
* 2. Command executes normally
|
|
8
|
+
* 3. After command → gateway.display() shows pending notifications
|
|
9
|
+
*
|
|
10
|
+
* Opt-out: NOCK_NO_NOTIFICATIONS=1
|
|
11
|
+
* Cache: ~/.nock/notifications.json
|
|
12
|
+
* Check interval: 6 hours (configurable via constants.ts)
|
|
13
|
+
*/
|
|
14
|
+
export declare class NotificationGateway {
|
|
15
|
+
private cachePath;
|
|
16
|
+
private cache;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Run all notification checks.
|
|
20
|
+
*
|
|
21
|
+
* This method is designed to be called at CLI startup and awaited
|
|
22
|
+
* after the main command completes. It checks both npm registry
|
|
23
|
+
* and the backend API in parallel.
|
|
24
|
+
*
|
|
25
|
+
* Errors are silently caught — never breaks CLI experience.
|
|
26
|
+
*/
|
|
27
|
+
check(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Display pending notifications to stderr.
|
|
30
|
+
*
|
|
31
|
+
* Called AFTER the main command completes.
|
|
32
|
+
* Shows at most 1 announcement per CLI invocation to avoid noise.
|
|
33
|
+
*/
|
|
34
|
+
display(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Dismiss an announcement so it won't show again.
|
|
37
|
+
*/
|
|
38
|
+
dismiss(announcementId: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get current entitlement data from cache.
|
|
41
|
+
* Returns null if no entitlements cached.
|
|
42
|
+
*/
|
|
43
|
+
getEntitlements(): NotificationCache["entitlements"] | null;
|
|
44
|
+
private readCache;
|
|
45
|
+
private writeCache;
|
|
46
|
+
}
|
|
47
|
+
export declare const notifications: NotificationGateway;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAkC;;IAU/C;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD5B;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IA+Bf;;OAEG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASrC;;;OAGG;IACH,eAAe,IAAI,iBAAiB,CAAC,cAAc,CAAC,GAAG,IAAI;IAO3D,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,UAAU;CAenB;AAGD,eAAO,MAAM,aAAa,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// packages/cli/src/notifications/index.ts
|
|
2
|
+
// Notification Gateway v1.0.0 — Unified notification orchestrator
|
|
3
|
+
// Pattern: HashiCorp Checkpoint + vercel/update-check hybrid
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
import { CLI_VERSION, NOCK_DIR_NAME, NOTIFICATION_CHECK_INTERVAL, } from "../utils/constants.js";
|
|
8
|
+
import { checkForUpdate } from "./update-checker.js";
|
|
9
|
+
import { fetchBootstrap } from "./announcement-client.js";
|
|
10
|
+
import { renderUpdateBox, renderAnnouncement, renderMotd, } from "./renderer.js";
|
|
11
|
+
const CACHE_FILE = "notifications.json";
|
|
12
|
+
/**
|
|
13
|
+
* Notification Gateway — single entry point for all CLI notifications.
|
|
14
|
+
*
|
|
15
|
+
* Lifecycle:
|
|
16
|
+
* 1. CLI startup → gateway.check() (non-blocking, parallel with command)
|
|
17
|
+
* 2. Command executes normally
|
|
18
|
+
* 3. After command → gateway.display() shows pending notifications
|
|
19
|
+
*
|
|
20
|
+
* Opt-out: NOCK_NO_NOTIFICATIONS=1
|
|
21
|
+
* Cache: ~/.nock/notifications.json
|
|
22
|
+
* Check interval: 6 hours (configurable via constants.ts)
|
|
23
|
+
*/
|
|
24
|
+
export class NotificationGateway {
|
|
25
|
+
cachePath;
|
|
26
|
+
cache = null;
|
|
27
|
+
constructor() {
|
|
28
|
+
this.cachePath = path.join(homedir(), NOCK_DIR_NAME, CACHE_FILE);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run all notification checks.
|
|
32
|
+
*
|
|
33
|
+
* This method is designed to be called at CLI startup and awaited
|
|
34
|
+
* after the main command completes. It checks both npm registry
|
|
35
|
+
* and the backend API in parallel.
|
|
36
|
+
*
|
|
37
|
+
* Errors are silently caught — never breaks CLI experience.
|
|
38
|
+
*/
|
|
39
|
+
async check() {
|
|
40
|
+
// Opt-out: respect user preference
|
|
41
|
+
if (process.env.NOCK_NO_NOTIFICATIONS)
|
|
42
|
+
return;
|
|
43
|
+
// CI detection: skip in CI environments
|
|
44
|
+
if (process.env.CI || process.env.CONTINUOUS_INTEGRATION)
|
|
45
|
+
return;
|
|
46
|
+
// Rate limit: check at most every N hours
|
|
47
|
+
const cache = this.readCache();
|
|
48
|
+
if (cache && Date.now() - cache.lastChecked < NOTIFICATION_CHECK_INTERVAL) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
// Parallel fetch: npm registry + backend API
|
|
53
|
+
const [updateResult, bootstrapResult] = await Promise.allSettled([
|
|
54
|
+
checkForUpdate(),
|
|
55
|
+
fetchBootstrap(cache?.dismissed ?? []),
|
|
56
|
+
]);
|
|
57
|
+
const newCache = {
|
|
58
|
+
version: CLI_VERSION,
|
|
59
|
+
lastChecked: Date.now(),
|
|
60
|
+
dismissed: cache?.dismissed ?? [],
|
|
61
|
+
};
|
|
62
|
+
// npm registry update info
|
|
63
|
+
if (updateResult.status === "fulfilled" &&
|
|
64
|
+
updateResult.value) {
|
|
65
|
+
newCache.update = updateResult.value;
|
|
66
|
+
}
|
|
67
|
+
// Backend bootstrap data (overrides npm if available)
|
|
68
|
+
if (bootstrapResult.status === "fulfilled" &&
|
|
69
|
+
bootstrapResult.value) {
|
|
70
|
+
const bs = bootstrapResult.value;
|
|
71
|
+
if (bs.update)
|
|
72
|
+
newCache.update = bs.update;
|
|
73
|
+
newCache.announcements = bs.announcements;
|
|
74
|
+
newCache.entitlements = bs.entitlements;
|
|
75
|
+
newCache.motd = bs.motd;
|
|
76
|
+
}
|
|
77
|
+
this.writeCache(newCache);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Silent failure — CLI must always work
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Display pending notifications to stderr.
|
|
85
|
+
*
|
|
86
|
+
* Called AFTER the main command completes.
|
|
87
|
+
* Shows at most 1 announcement per CLI invocation to avoid noise.
|
|
88
|
+
*/
|
|
89
|
+
display() {
|
|
90
|
+
if (process.env.NOCK_NO_NOTIFICATIONS)
|
|
91
|
+
return;
|
|
92
|
+
if (process.env.CI || process.env.CONTINUOUS_INTEGRATION)
|
|
93
|
+
return;
|
|
94
|
+
const cache = this.readCache();
|
|
95
|
+
if (!cache)
|
|
96
|
+
return;
|
|
97
|
+
// 1. Version update notification
|
|
98
|
+
if (cache.update) {
|
|
99
|
+
renderUpdateBox(CLI_VERSION, cache.update);
|
|
100
|
+
}
|
|
101
|
+
// 2. Announcements — show highest priority, max 1 per run
|
|
102
|
+
const activeAnnouncements = (cache.announcements ?? [])
|
|
103
|
+
.filter((a) => !cache.dismissed.includes(a.id))
|
|
104
|
+
.filter((a) => !a.expires_at || new Date(a.expires_at) > new Date())
|
|
105
|
+
.sort((a, b) => b.priority - a.priority);
|
|
106
|
+
if (activeAnnouncements.length > 0) {
|
|
107
|
+
renderAnnouncement(activeAnnouncements[0]);
|
|
108
|
+
}
|
|
109
|
+
// 3. MOTD (message of the day)
|
|
110
|
+
if (cache.motd) {
|
|
111
|
+
renderMotd(cache.motd);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Dismiss an announcement so it won't show again.
|
|
116
|
+
*/
|
|
117
|
+
dismiss(announcementId) {
|
|
118
|
+
const cache = this.readCache();
|
|
119
|
+
if (!cache)
|
|
120
|
+
return;
|
|
121
|
+
if (!cache.dismissed.includes(announcementId)) {
|
|
122
|
+
cache.dismissed.push(announcementId);
|
|
123
|
+
this.writeCache(cache);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get current entitlement data from cache.
|
|
128
|
+
* Returns null if no entitlements cached.
|
|
129
|
+
*/
|
|
130
|
+
getEntitlements() {
|
|
131
|
+
const cache = this.readCache();
|
|
132
|
+
return cache?.entitlements ?? null;
|
|
133
|
+
}
|
|
134
|
+
// ─── Private: Cache I/O (ManifestCacheManager pattern) ───
|
|
135
|
+
readCache() {
|
|
136
|
+
if (this.cache)
|
|
137
|
+
return this.cache;
|
|
138
|
+
try {
|
|
139
|
+
if (fs.existsSync(this.cachePath)) {
|
|
140
|
+
this.cache = JSON.parse(fs.readFileSync(this.cachePath, "utf-8"));
|
|
141
|
+
return this.cache;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Corrupt cache → ignore, will be overwritten
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
writeCache(cache) {
|
|
150
|
+
try {
|
|
151
|
+
const dir = path.dirname(this.cachePath);
|
|
152
|
+
if (!fs.existsSync(dir)) {
|
|
153
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
154
|
+
}
|
|
155
|
+
fs.writeFileSync(this.cachePath, JSON.stringify(cache, null, 2));
|
|
156
|
+
this.cache = cache;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Write failure → ignore, will retry next check
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Singleton instance
|
|
164
|
+
export const notifications = new NotificationGateway();
|
|
165
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Announcement, UpdateInfo } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render update notification box to stderr.
|
|
4
|
+
* Output to stderr so it doesn't interfere with stdout piping.
|
|
5
|
+
*
|
|
6
|
+
* Example:
|
|
7
|
+
* ╭──────────────────────────────────────────╮
|
|
8
|
+
* │ │
|
|
9
|
+
* │ Update available! 1.0.0 → 1.2.0 [minor]│
|
|
10
|
+
* │ Run: npm i -g @nockdev/cli │
|
|
11
|
+
* │ │
|
|
12
|
+
* ╰──────────────────────────────────────────╯
|
|
13
|
+
*/
|
|
14
|
+
export declare function renderUpdateBox(current: string, update: UpdateInfo): void;
|
|
15
|
+
/**
|
|
16
|
+
* Render a single announcement to stderr.
|
|
17
|
+
*
|
|
18
|
+
* Icons by type:
|
|
19
|
+
* critical → 🚨
|
|
20
|
+
* warning → ⚠️
|
|
21
|
+
* info → ℹ️
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderAnnouncement(ann: Announcement): void;
|
|
24
|
+
/**
|
|
25
|
+
* Render MOTD (message of the day) to stderr.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderMotd(message: string): void;
|
|
28
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/notifications/renderer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,IAAI,CA6BN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAuB1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// packages/cli/src/notifications/renderer.ts
|
|
2
|
+
// Notification Renderer v1.0.0 — Terminal UI for notifications
|
|
3
|
+
// Uses picocolors (already a dependency), outputs to stderr
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
/**
|
|
6
|
+
* Render update notification box to stderr.
|
|
7
|
+
* Output to stderr so it doesn't interfere with stdout piping.
|
|
8
|
+
*
|
|
9
|
+
* Example:
|
|
10
|
+
* ╭──────────────────────────────────────────╮
|
|
11
|
+
* │ │
|
|
12
|
+
* │ Update available! 1.0.0 → 1.2.0 [minor]│
|
|
13
|
+
* │ Run: npm i -g @nockdev/cli │
|
|
14
|
+
* │ │
|
|
15
|
+
* ╰──────────────────────────────────────────╯
|
|
16
|
+
*/
|
|
17
|
+
export function renderUpdateBox(current, update) {
|
|
18
|
+
const typeLabel = update.type === "major"
|
|
19
|
+
? pc.red("MAJOR")
|
|
20
|
+
: update.type === "minor"
|
|
21
|
+
? pc.yellow("minor")
|
|
22
|
+
: pc.green("patch");
|
|
23
|
+
const WIDTH = 46;
|
|
24
|
+
const top = "╭" + "─".repeat(WIDTH) + "╮";
|
|
25
|
+
const bot = "╰" + "─".repeat(WIDTH) + "╯";
|
|
26
|
+
const empty = "│" + " ".repeat(WIDTH) + "│";
|
|
27
|
+
const line1 = `Update available! ${pc.dim(current)} → ${pc.green(update.latest)} [${typeLabel}]`;
|
|
28
|
+
const line2 = `Run: ${pc.cyan("npm i -g @nockdev/cli")}`;
|
|
29
|
+
console.error("");
|
|
30
|
+
console.error(top);
|
|
31
|
+
console.error(empty);
|
|
32
|
+
console.error(padLine(line1, WIDTH));
|
|
33
|
+
console.error(padLine(line2, WIDTH));
|
|
34
|
+
if (update.changelog_url) {
|
|
35
|
+
console.error(padLine(`${pc.dim("Changelog:")} ${update.changelog_url}`, WIDTH));
|
|
36
|
+
}
|
|
37
|
+
console.error(empty);
|
|
38
|
+
console.error(bot);
|
|
39
|
+
console.error("");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Render a single announcement to stderr.
|
|
43
|
+
*
|
|
44
|
+
* Icons by type:
|
|
45
|
+
* critical → 🚨
|
|
46
|
+
* warning → ⚠️
|
|
47
|
+
* info → ℹ️
|
|
48
|
+
*/
|
|
49
|
+
export function renderAnnouncement(ann) {
|
|
50
|
+
const icon = ann.type === "critical"
|
|
51
|
+
? "🚨"
|
|
52
|
+
: ann.type === "warning"
|
|
53
|
+
? "⚠️"
|
|
54
|
+
: "ℹ️";
|
|
55
|
+
const color = ann.type === "critical"
|
|
56
|
+
? pc.red
|
|
57
|
+
: ann.type === "warning"
|
|
58
|
+
? pc.yellow
|
|
59
|
+
: pc.cyan;
|
|
60
|
+
console.error("");
|
|
61
|
+
console.error(color(`${icon} ${ann.title}`));
|
|
62
|
+
console.error(color("─".repeat(48)));
|
|
63
|
+
console.error(` ${ann.body}`);
|
|
64
|
+
if (ann.action_url) {
|
|
65
|
+
console.error(` ${pc.dim("→")} ${pc.underline(ann.action_url)}`);
|
|
66
|
+
}
|
|
67
|
+
console.error("");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Render MOTD (message of the day) to stderr.
|
|
71
|
+
*/
|
|
72
|
+
export function renderMotd(message) {
|
|
73
|
+
console.error(pc.dim(message));
|
|
74
|
+
}
|
|
75
|
+
// ─── Helpers ──────────────────────────────────────────
|
|
76
|
+
/** Pad a line with ANSI-aware width calculation */
|
|
77
|
+
function padLine(text, width) {
|
|
78
|
+
const visibleLen = stripAnsi(text).length;
|
|
79
|
+
const pad = Math.max(0, width - visibleLen - 4);
|
|
80
|
+
return "│ " + text + " ".repeat(pad) + "│";
|
|
81
|
+
}
|
|
82
|
+
/** Strip ANSI escape codes for accurate width calculation */
|
|
83
|
+
function stripAnsi(str) {
|
|
84
|
+
// eslint-disable-next-line no-control-regex
|
|
85
|
+
return str.replace(/\x1B\[[0-9;]*m/g, "");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/notifications/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** API response from api.autodomyh.com/api/v1/cli/bootstrap */
|
|
2
|
+
export interface BootstrapResponse {
|
|
3
|
+
update?: UpdateInfo;
|
|
4
|
+
announcements?: Announcement[];
|
|
5
|
+
entitlements?: EntitlementData;
|
|
6
|
+
motd?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Version update info */
|
|
9
|
+
export interface UpdateInfo {
|
|
10
|
+
latest: string;
|
|
11
|
+
type: "major" | "minor" | "patch";
|
|
12
|
+
changelog_url?: string;
|
|
13
|
+
critical: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Server-side announcement */
|
|
16
|
+
export interface Announcement {
|
|
17
|
+
id: string;
|
|
18
|
+
type: "info" | "warning" | "critical";
|
|
19
|
+
title: string;
|
|
20
|
+
body: string;
|
|
21
|
+
action_url?: string;
|
|
22
|
+
target?: {
|
|
23
|
+
versions?: string;
|
|
24
|
+
tiers?: string[];
|
|
25
|
+
};
|
|
26
|
+
priority: number;
|
|
27
|
+
dismissible: boolean;
|
|
28
|
+
expires_at?: string;
|
|
29
|
+
}
|
|
30
|
+
/** User entitlement data */
|
|
31
|
+
export interface EntitlementData {
|
|
32
|
+
tier: "free" | "pro" | "enterprise";
|
|
33
|
+
features: string[];
|
|
34
|
+
limits?: Record<string, number>;
|
|
35
|
+
signature?: string;
|
|
36
|
+
}
|
|
37
|
+
/** Local notification cache */
|
|
38
|
+
export interface NotificationCache {
|
|
39
|
+
version: string;
|
|
40
|
+
lastChecked: number;
|
|
41
|
+
dismissed: string[];
|
|
42
|
+
update?: UpdateInfo;
|
|
43
|
+
announcements?: Announcement[];
|
|
44
|
+
entitlements?: EntitlementData;
|
|
45
|
+
motd?: string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,0BAA0B;AAC1B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,oCAAoC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UpdateInfo } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Check npm registry for a newer CLI version.
|
|
4
|
+
*
|
|
5
|
+
* - Non-blocking: caller should `await` or use `Promise.allSettled`
|
|
6
|
+
* - Timeout: 5 seconds max
|
|
7
|
+
* - Returns null on any error (network, parse, offline)
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkForUpdate(): Promise<UpdateInfo | null>;
|
|
10
|
+
//# sourceMappingURL=update-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/notifications/update-checker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C;;;;;;GAMG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6BjE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// packages/cli/src/notifications/update-checker.ts
|
|
2
|
+
// Update Checker v1.0.0 — Check npm registry for newer CLI version
|
|
3
|
+
// Pattern: vercel/update-check (minimalistic, full control)
|
|
4
|
+
import { CLI_NAME, CLI_VERSION } from "../utils/constants.js";
|
|
5
|
+
const NPM_REGISTRY = "https://registry.npmjs.org";
|
|
6
|
+
const TIMEOUT_MS = 5000;
|
|
7
|
+
/**
|
|
8
|
+
* Check npm registry for a newer CLI version.
|
|
9
|
+
*
|
|
10
|
+
* - Non-blocking: caller should `await` or use `Promise.allSettled`
|
|
11
|
+
* - Timeout: 5 seconds max
|
|
12
|
+
* - Returns null on any error (network, parse, offline)
|
|
13
|
+
*/
|
|
14
|
+
export async function checkForUpdate() {
|
|
15
|
+
try {
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
18
|
+
const res = await fetch(`${NPM_REGISTRY}/${CLI_NAME}/latest`, {
|
|
19
|
+
headers: { Accept: "application/json" },
|
|
20
|
+
signal: controller.signal,
|
|
21
|
+
});
|
|
22
|
+
clearTimeout(timeout);
|
|
23
|
+
if (!res.ok)
|
|
24
|
+
return null;
|
|
25
|
+
const data = (await res.json());
|
|
26
|
+
const latest = data.version;
|
|
27
|
+
if (!latest || latest === CLI_VERSION)
|
|
28
|
+
return null;
|
|
29
|
+
// Determine update type via simple semver compare
|
|
30
|
+
const type = getUpdateType(CLI_VERSION, latest);
|
|
31
|
+
return {
|
|
32
|
+
latest,
|
|
33
|
+
type,
|
|
34
|
+
critical: type === "major",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Network error, timeout, offline — silent fallback
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Simple semver comparison to determine update type */
|
|
43
|
+
function getUpdateType(current, latest) {
|
|
44
|
+
const [curMajor, curMinor] = current.split(".").map(Number);
|
|
45
|
+
const [latMajor, latMinor] = latest.split(".").map(Number);
|
|
46
|
+
if (latMajor > curMajor)
|
|
47
|
+
return "major";
|
|
48
|
+
if (latMinor > curMinor)
|
|
49
|
+
return "minor";
|
|
50
|
+
return "patch";
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=update-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/notifications/update-checker.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,mEAAmE;AACnE,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAClD,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,IAAI,QAAQ,SAAS,EAAE;YAC5D,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAEnD,kDAAkD;QAClD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEhD,OAAO;YACL,MAAM;YACN,IAAI;YACJ,QAAQ,EAAE,IAAI,KAAK,OAAO;SAC3B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,SAAS,aAAa,CACpB,OAAe,EACf,MAAc;IAEd,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,QAAQ,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IACxC,IAAI,QAAQ,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -73,5 +73,10 @@ export declare class PluginManager {
|
|
|
73
73
|
* Simple Levenshtein distance implementation
|
|
74
74
|
*/
|
|
75
75
|
private levenshtein;
|
|
76
|
+
/**
|
|
77
|
+
* Validate and sanitize npm package name to prevent command injection.
|
|
78
|
+
* Matches npm's package name spec: optional @scope/ + name, optional @version.
|
|
79
|
+
*/
|
|
80
|
+
private sanitizePackageName;
|
|
76
81
|
}
|
|
77
82
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +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;
|
|
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;IA2C9C;;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;IAoDjD;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ChD;;OAEG;IACG,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCjD;;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;IA2BnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
|
package/dist/plugins/manager.js
CHANGED
|
@@ -84,10 +84,13 @@ export class PluginManager {
|
|
|
84
84
|
if (!fs.existsSync(entryPath)) {
|
|
85
85
|
throw new Error(`Plugin entry not found: ${mainEntry}`);
|
|
86
86
|
}
|
|
87
|
-
// Dynamic import (ESM)
|
|
87
|
+
// Dynamic import (ESM with CJS fallback)
|
|
88
88
|
const fileUrl = pathToFileURL(entryPath).href;
|
|
89
89
|
const module = await import(fileUrl);
|
|
90
|
-
const plugin = module.default;
|
|
90
|
+
const plugin = module.default ?? module;
|
|
91
|
+
if (!plugin || typeof plugin !== "object") {
|
|
92
|
+
throw new Error(`Plugin "${packageName}" has no valid default export`);
|
|
93
|
+
}
|
|
91
94
|
// Validate plugin structure
|
|
92
95
|
this.validate(plugin);
|
|
93
96
|
// Register by topic
|
|
@@ -197,8 +200,9 @@ export class PluginManager {
|
|
|
197
200
|
if (!fs.existsSync(pkgJsonPath)) {
|
|
198
201
|
fs.writeFileSync(pkgJsonPath, JSON.stringify({ private: true, type: "module" }, null, 2));
|
|
199
202
|
}
|
|
200
|
-
// Install via npm
|
|
201
|
-
|
|
203
|
+
// Install via npm (sanitize packageName to prevent command injection)
|
|
204
|
+
const safeName = this.sanitizePackageName(packageName);
|
|
205
|
+
execSync(`npm install ${safeName}`, {
|
|
202
206
|
cwd: this.pluginsDir,
|
|
203
207
|
stdio: this.options.verbose ? "inherit" : "pipe",
|
|
204
208
|
});
|
|
@@ -238,8 +242,9 @@ export class PluginManager {
|
|
|
238
242
|
if (plugin?.destroy) {
|
|
239
243
|
await plugin.destroy();
|
|
240
244
|
}
|
|
241
|
-
// Uninstall via npm
|
|
242
|
-
|
|
245
|
+
// Uninstall via npm (sanitize packageName to prevent command injection)
|
|
246
|
+
const safeName = this.sanitizePackageName(packageName);
|
|
247
|
+
execSync(`npm uninstall ${safeName}`, {
|
|
243
248
|
cwd: this.pluginsDir,
|
|
244
249
|
stdio: this.options.verbose ? "inherit" : "pipe",
|
|
245
250
|
});
|
|
@@ -272,7 +277,8 @@ export class PluginManager {
|
|
|
272
277
|
console.log(pc.cyan(`⬆ Updating ${pkg}...`));
|
|
273
278
|
}
|
|
274
279
|
try {
|
|
275
|
-
|
|
280
|
+
const safePkg = this.sanitizePackageName(pkg);
|
|
281
|
+
execSync(`npm update ${safePkg}`, {
|
|
276
282
|
cwd: this.pluginsDir,
|
|
277
283
|
stdio: this.options.verbose ? "inherit" : "pipe",
|
|
278
284
|
});
|
|
@@ -470,5 +476,17 @@ ${pc.bold("Usage:")}
|
|
|
470
476
|
}
|
|
471
477
|
return matrix[b.length][a.length];
|
|
472
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* Validate and sanitize npm package name to prevent command injection.
|
|
481
|
+
* Matches npm's package name spec: optional @scope/ + name, optional @version.
|
|
482
|
+
*/
|
|
483
|
+
sanitizePackageName(name) {
|
|
484
|
+
// npm package name spec: ^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*(?:@[\w.^~>=<|-]+)?$
|
|
485
|
+
const NPM_PKG_RE = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(?:@[\w.^~>=<|-]+)?$/;
|
|
486
|
+
if (!NPM_PKG_RE.test(name)) {
|
|
487
|
+
throw new Error(`Invalid package name: "${name}"`);
|
|
488
|
+
}
|
|
489
|
+
return name;
|
|
490
|
+
}
|
|
473
491
|
}
|
|
474
492
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,wBAAwB;AAExB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAiBpG,MAAM,OAAO,aAAa;IAChB,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAC;IAC7C,aAAa,GAAwB,IAAI,GAAG,EAAE,CAAC,CAAE,gBAAgB;IACjE,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,YAAY,CAAS;IACrB,OAAO,CAAiC;IAEhD,YAAY,UAAgC,EAAE;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE3D,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAErC,yBAAyB;QACzB,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CACV,EAAE,CAAC,MAAM,CACP,oBAAoB,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/D,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CACV,EAAE,CAAC,MAAM,CACP,2BAA2B,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CACrE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAE3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,uBAAuB;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAe,MAAM,CAAC,OAAO,CAAC;QAE1C,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtB,oBAAoB;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvC,4BAA4B;QAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAe,MAAM,CAAC,OAAO,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,YAAY,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAEtC,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,CACtD,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,MAAM,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;gBAClE,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;oBACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA2B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,YAAY,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,6BAA6B;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAC9B,EAAE,CAAC,CAAC,CAAC,CAAC;QAEP,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,WAAW,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC;YACH,4CAA4C;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,EAAE,CAAC,aAAa,CACd,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3D,CAAC;YACJ,CAAC;YAED,kBAAkB;YAClB,QAAQ,CAAC,eAAe,WAAW,EAAE,EAAE;gBACrC,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aACjD,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrC,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAED,kBAAkB;YAClB,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAC9B,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CACxE,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,qBAAqB,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,WAAmB;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,WAAW,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAC9B,CAAC;YAEF,8BAA8B;YAC9B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YAED,oBAAoB;YACpB,QAAQ,CAAC,iBAAiB,WAAW,EAAE,EAAE;gBACvC,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aACjD,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;YACzE,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE7B,qBAAqB;YACrB,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oBAAoB,WAAW,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,WAAoB;QAC/B,MAAM,QAAQ,GAAG,WAAW;YAC1B,CAAC,CAAC,CAAC,WAAW,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC;gBACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE;oBAC5B,GAAG,EAAE,IAAI,CAAC,UAAU;oBACpB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;iBACjD,CAAC,CAAC;gBAEH,SAAS;gBACT,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAErB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;oBACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,MAAM,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CACV,EAAE,CAAC,MAAM,CAAC,sBAAsB,GAAG,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CACpE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,KAAa,EACb,IAAc,EACd,KAA8B;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;QAExC,kCAAkC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAClE,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,KAAK,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,UAAU;QACV,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEnC,oBAAoB;QACpB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC;SACzD,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAkB;QACvC,OAAO,CAAC,GAAG,CAAC;EACd,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;EACpD,MAAM,CAAC,WAAW;;EAElB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;EACpB,MAAM,CAAC,QAAQ;aACd,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;MACrF,CAAC,CAAC,WAAW,EAAE,CAClB;aACA,IAAI,CAAC,IAAI,CAAC;;EAEX,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SACV,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC;IACD,CAAC;IAEO,QAAQ,CAAC,MAAkB;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,OAAO,EAAE,OAAO,EAAE;YAClB,QAAQ,EAAE,QAAQ,EAAE;SACrB,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAAwB;QAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAgB;QACnD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK;gBAAE,SAAS;YAE5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;iBACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,CACV,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,YAAa,KAAe,CAAC,OAAO,EAAE,CAAC,CACjE,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa,EAAE,UAAoB;QACrD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,oBAAoB;QACzC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,YAAY,GAAG,QAAQ,CAAC;QAE5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,IAAI,QAAQ,GAAG,YAAY,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACrD,YAAY,GAAG,QAAQ,CAAC;gBACxB,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,CAAS,EAAE,CAAS;QACtC,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACrB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,4 +8,8 @@ export declare const PLUGINS_DIR_NAME = "plugins";
|
|
|
8
8
|
export declare const MANIFEST_FILE = "plugins.json";
|
|
9
9
|
/** NOCK home directory name */
|
|
10
10
|
export declare const NOCK_DIR_NAME = ".nock";
|
|
11
|
+
/** API base URL — backend for notifications, entitlements, etc. */
|
|
12
|
+
export declare const API_BASE_URL = "https://api.autodomyh.com";
|
|
13
|
+
/** Notification check interval (6 hours in ms) */
|
|
14
|
+
export declare const NOTIFICATION_CHECK_INTERVAL: number;
|
|
11
15
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAe;AACf,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,yBAAyB;AACzB,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,+BAA+B;AAC/B,eAAO,MAAM,aAAa,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAe;AACf,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,yBAAyB;AACzB,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,+BAA+B;AAC/B,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,mEAAmE;AACnE,eAAO,MAAM,YAAY,8BAA8B,CAAC;AAExD,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,QAAqB,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -10,4 +10,8 @@ export const PLUGINS_DIR_NAME = "plugins";
|
|
|
10
10
|
export const MANIFEST_FILE = "plugins.json";
|
|
11
11
|
/** NOCK home directory name */
|
|
12
12
|
export const NOCK_DIR_NAME = ".nock";
|
|
13
|
+
/** API base URL — backend for notifications, entitlements, etc. */
|
|
14
|
+
export const API_BASE_URL = "https://api.autodomyh.com";
|
|
15
|
+
/** Notification check interval (6 hours in ms) */
|
|
16
|
+
export const NOTIFICATION_CHECK_INTERVAL = 6 * 60 * 60 * 1000;
|
|
13
17
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2CAA2C;AAE3C,yBAAyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,yBAAyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2CAA2C;AAE3C,yBAAyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,yBAAyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAExD,kDAAkD;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Official plugins that can be auto-installed when user tries to use them
|
|
2
|
+
* Official plugins that can be auto-installed when user tries to use them.
|
|
3
|
+
* Only includes packages that export NockPlugin interface.
|
|
4
|
+
* MCP servers (like @nockdev/hsa) should NOT be listed here.
|
|
3
5
|
*/
|
|
4
6
|
export declare const OFFICIAL_PLUGINS: Record<string, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Topic aliases — commands that route through a parent plugin's subcommand.
|
|
9
|
+
* Example: `nock hsa start` → installs @nockdev/awf, then runs `nock awf hsa start`
|
|
10
|
+
*/
|
|
11
|
+
export interface TopicAlias {
|
|
12
|
+
/** Parent plugin topic (e.g. "awf") */
|
|
13
|
+
plugin: string;
|
|
14
|
+
/** Subcommand to prepend (e.g. "hsa") */
|
|
15
|
+
subcommand: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const TOPIC_ALIASES: Record<string, TopicAlias>;
|
|
5
18
|
/**
|
|
6
19
|
* Check if topic matches an official plugin
|
|
7
20
|
*/
|
|
8
21
|
export declare function getOfficialPlugin(topic: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Check if topic is an alias that routes through another plugin
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTopicAlias(topic: string): TopicAlias | null;
|
|
9
26
|
/**
|
|
10
27
|
* Get all official plugin topics
|
|
11
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-plugins.d.ts","sourceRoot":"","sources":["../../src/utils/official-plugins.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"official-plugins.d.ts","sourceRoot":"","sources":["../../src/utils/official-plugins.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAEpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
// packages/cli/src/utils/official-plugins.ts
|
|
2
2
|
// Official Plugins Registry - Auto-install support
|
|
3
3
|
/**
|
|
4
|
-
* Official plugins that can be auto-installed when user tries to use them
|
|
4
|
+
* Official plugins that can be auto-installed when user tries to use them.
|
|
5
|
+
* Only includes packages that export NockPlugin interface.
|
|
6
|
+
* MCP servers (like @nockdev/hsa) should NOT be listed here.
|
|
5
7
|
*/
|
|
6
8
|
export const OFFICIAL_PLUGINS = {
|
|
7
9
|
// Topic -> npm package name
|
|
8
10
|
awf: "@nockdev/awf", // AI Workflow Framework
|
|
9
|
-
hsa: "@nockdev/hsa", // Hierarchical Smart Agent (MCP Server)
|
|
10
11
|
// Future plugins:
|
|
11
12
|
// ui: "@nockdev/ui", // UI Components
|
|
12
13
|
};
|
|
14
|
+
export const TOPIC_ALIASES = {
|
|
15
|
+
hsa: { plugin: "awf", subcommand: "hsa" },
|
|
16
|
+
};
|
|
13
17
|
/**
|
|
14
18
|
* Check if topic matches an official plugin
|
|
15
19
|
*/
|
|
16
20
|
export function getOfficialPlugin(topic) {
|
|
17
21
|
return OFFICIAL_PLUGINS[topic] || null;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if topic is an alias that routes through another plugin
|
|
25
|
+
*/
|
|
26
|
+
export function getTopicAlias(topic) {
|
|
27
|
+
return TOPIC_ALIASES[topic] || null;
|
|
28
|
+
}
|
|
19
29
|
/**
|
|
20
30
|
* Get all official plugin topics
|
|
21
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-plugins.js","sourceRoot":"","sources":["../../src/utils/official-plugins.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,mDAAmD;AAEnD
|
|
1
|
+
{"version":3,"file":"official-plugins.js","sourceRoot":"","sources":["../../src/utils/official-plugins.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,mDAAmD;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,4BAA4B;IAC5B,GAAG,EAAE,cAAc,EAAM,wBAAwB;IACjD,kBAAkB;IAClB,0CAA0C;CAC3C,CAAC;AAaF,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvC,CAAC"}
|