@nexus-framework/cli 0.2.0 → 0.3.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.
- package/README.md +62 -6
- package/dist/cli.js +87 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +4 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +47 -8
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pack.d.ts +28 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +206 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/skill.d.ts +53 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +371 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +100 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/generators/ai-config.js +40 -1
- package/dist/generators/ai-config.js.map +1 -1
- package/dist/generators/docs.d.ts +10 -1
- package/dist/generators/docs.d.ts.map +1 -1
- package/dist/generators/docs.js +40 -65
- package/dist/generators/docs.js.map +1 -1
- package/dist/generators/index.d.ts +2 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +85 -9
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/skills.d.ts +32 -0
- package/dist/generators/skills.d.ts.map +1 -0
- package/dist/generators/skills.js +220 -0
- package/dist/generators/skills.js.map +1 -0
- package/dist/generators/spring-boot.d.ts +12 -0
- package/dist/generators/spring-boot.d.ts.map +1 -0
- package/dist/generators/spring-boot.js +220 -0
- package/dist/generators/spring-boot.js.map +1 -0
- package/dist/generators/structure.d.ts +1 -0
- package/dist/generators/structure.d.ts.map +1 -1
- package/dist/generators/structure.js +129 -24
- package/dist/generators/structure.js.map +1 -1
- package/dist/prompts/adoption.d.ts +35 -0
- package/dist/prompts/adoption.d.ts.map +1 -0
- package/dist/prompts/adoption.js +153 -0
- package/dist/prompts/adoption.js.map +1 -0
- package/dist/prompts/frameworks.d.ts +5 -1
- package/dist/prompts/frameworks.d.ts.map +1 -1
- package/dist/prompts/frameworks.js +49 -1
- package/dist/prompts/frameworks.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +32 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/project-type.d.ts.map +1 -1
- package/dist/prompts/project-type.js +6 -1
- package/dist/prompts/project-type.js.map +1 -1
- package/dist/prompts/skill-config.d.ts +19 -0
- package/dist/prompts/skill-config.d.ts.map +1 -0
- package/dist/prompts/skill-config.js +22 -0
- package/dist/prompts/skill-config.js.map +1 -0
- package/dist/types/config.d.ts +9 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +4 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +49 -36
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/project-detector.d.ts +20 -4
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +156 -27
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/utils/update-check.d.ts +27 -0
- package/dist/utils/update-check.d.ts.map +1 -0
- package/dist/utils/update-check.js +111 -0
- package/dist/utils/update-check.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +9 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Update Check Utility
|
|
3
|
+
*
|
|
4
|
+
* Fetches the latest published version of @nexus-framework/cli from the npm registry
|
|
5
|
+
* and compares it to the installed version. Used by:
|
|
6
|
+
* - `nexus update` command (explicit check + auto-install)
|
|
7
|
+
* - cli.ts startup hook (silent background check → notification banner)
|
|
8
|
+
*
|
|
9
|
+
* No external dependencies beyond Node's built-in fetch (Node 20+).
|
|
10
|
+
*/
|
|
11
|
+
export interface UpdateInfo {
|
|
12
|
+
current: string;
|
|
13
|
+
latest: string;
|
|
14
|
+
hasUpdate: boolean;
|
|
15
|
+
/** One-line headline describing the most notable thing in the new version. */
|
|
16
|
+
headline: string;
|
|
17
|
+
/** npm install command for the detected package manager. */
|
|
18
|
+
installCmd: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check npm registry for the latest @nexus-framework/cli version.
|
|
22
|
+
*
|
|
23
|
+
* @param timeoutMs Network timeout in ms (default 4000 — fast, non-blocking)
|
|
24
|
+
* @returns UpdateInfo, or null if the check could not complete (offline, error)
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkForUpdate(timeoutMs?: number): Promise<UpdateInfo | null>;
|
|
27
|
+
//# sourceMappingURL=update-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/utils/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AA0ED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAkCjF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Update Check Utility
|
|
3
|
+
*
|
|
4
|
+
* Fetches the latest published version of @nexus-framework/cli from the npm registry
|
|
5
|
+
* and compares it to the installed version. Used by:
|
|
6
|
+
* - `nexus update` command (explicit check + auto-install)
|
|
7
|
+
* - cli.ts startup hook (silent background check → notification banner)
|
|
8
|
+
*
|
|
9
|
+
* No external dependencies beyond Node's built-in fetch (Node 20+).
|
|
10
|
+
*/
|
|
11
|
+
import { version as currentVersion } from '../version.js';
|
|
12
|
+
// ─── Release Headlines ────────────────────────────────────────
|
|
13
|
+
// Manually maintained map of version → headline string.
|
|
14
|
+
// When a new version is published, add its entry here.
|
|
15
|
+
// The check walks from the target version downward to find the best match.
|
|
16
|
+
const RELEASE_HEADLINES = {
|
|
17
|
+
'0.3.0': '🧠 Skills System, nexus skill registry, nexus pack/unpack, nexus update + auto-notifications',
|
|
18
|
+
'0.2.1': '🐛 Bug fixes — backend scaffolding improvements & Spring Boot support',
|
|
19
|
+
'0.2.0': '🎭 Agent Persona — configure your AI\'s tone, verbosity, and identity',
|
|
20
|
+
'0.1.4': '📖 Full AI instructions embedded in every tool file (Cursor, Windsurf, Copilot)',
|
|
21
|
+
'0.1.3': '🧠 Knowledge Base & upgrade/repair commands — progressive project memory',
|
|
22
|
+
'0.1.2': '📦 Sample project generation & README improvements',
|
|
23
|
+
'0.1.1': '🐛 Bug fixes and test improvements',
|
|
24
|
+
'0.1.0': '🚀 Initial release — nexus init, adopt, 5 frameworks, AI config',
|
|
25
|
+
};
|
|
26
|
+
// ─── Package Manager Detection ────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* Detect how the CLI was installed to use the same package manager for updates.
|
|
29
|
+
* Falls back to `npm install -g` if detection fails.
|
|
30
|
+
*/
|
|
31
|
+
function detectInstallCommand(pkg) {
|
|
32
|
+
// Check if running inside a yarn global install
|
|
33
|
+
const execPath = process.env['npm_execpath'] ?? '';
|
|
34
|
+
if (execPath.includes('yarn')) {
|
|
35
|
+
return `yarn global add ${pkg}`;
|
|
36
|
+
}
|
|
37
|
+
// Check if pnpm is the executor
|
|
38
|
+
if (execPath.includes('pnpm') || process.env['npm_config_user_agent']?.includes('pnpm')) {
|
|
39
|
+
return `pnpm add -g ${pkg}`;
|
|
40
|
+
}
|
|
41
|
+
return `npm install -g ${pkg}`;
|
|
42
|
+
}
|
|
43
|
+
// ─── Semver Comparison ────────────────────────────────────────
|
|
44
|
+
/**
|
|
45
|
+
* Simple semver comparison. Returns true if `a` is strictly greater than `b`.
|
|
46
|
+
* Handles major.minor.patch only (no pre-release tags).
|
|
47
|
+
*/
|
|
48
|
+
function isNewer(a, b) {
|
|
49
|
+
const parse = (v) => v.replace(/^v/, '').split('.').map(Number);
|
|
50
|
+
const [aMaj, aMin, aPatch] = parse(a);
|
|
51
|
+
const [bMaj, bMin, bPatch] = parse(b);
|
|
52
|
+
if (aMaj !== bMaj)
|
|
53
|
+
return (aMaj ?? 0) > (bMaj ?? 0);
|
|
54
|
+
if (aMin !== bMin)
|
|
55
|
+
return (aMin ?? 0) > (bMin ?? 0);
|
|
56
|
+
return (aPatch ?? 0) > (bPatch ?? 0);
|
|
57
|
+
}
|
|
58
|
+
// ─── Headline Lookup ──────────────────────────────────────────
|
|
59
|
+
/**
|
|
60
|
+
* Find the best headline to show for a version.
|
|
61
|
+
* Exact match first, then the nearest older registered version.
|
|
62
|
+
*/
|
|
63
|
+
function getHeadline(version) {
|
|
64
|
+
if (RELEASE_HEADLINES[version])
|
|
65
|
+
return RELEASE_HEADLINES[version];
|
|
66
|
+
// Walk the sorted keys (desc) and return the first one that is <= version
|
|
67
|
+
const sorted = Object.keys(RELEASE_HEADLINES).sort((a, b) => isNewer(b, a) ? 1 : -1);
|
|
68
|
+
for (const v of sorted) {
|
|
69
|
+
if (!isNewer(v, version))
|
|
70
|
+
return RELEASE_HEADLINES[v] ?? 'New features and improvements';
|
|
71
|
+
}
|
|
72
|
+
return 'New features and improvements';
|
|
73
|
+
}
|
|
74
|
+
// ─── Main Export ─────────────────────────────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Check npm registry for the latest @nexus-framework/cli version.
|
|
77
|
+
*
|
|
78
|
+
* @param timeoutMs Network timeout in ms (default 4000 — fast, non-blocking)
|
|
79
|
+
* @returns UpdateInfo, or null if the check could not complete (offline, error)
|
|
80
|
+
*/
|
|
81
|
+
export async function checkForUpdate(timeoutMs = 4000) {
|
|
82
|
+
const pkg = '@nexus-framework/cli';
|
|
83
|
+
try {
|
|
84
|
+
const controller = new AbortController();
|
|
85
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
86
|
+
const res = await fetch(`https://registry.npmjs.org/${pkg}/latest`, {
|
|
87
|
+
signal: controller.signal,
|
|
88
|
+
headers: { Accept: 'application/json' },
|
|
89
|
+
});
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
if (!res.ok)
|
|
92
|
+
return null;
|
|
93
|
+
const data = (await res.json());
|
|
94
|
+
const latest = data.version;
|
|
95
|
+
if (!latest || typeof latest !== 'string')
|
|
96
|
+
return null;
|
|
97
|
+
const hasUpdate = isNewer(latest, currentVersion);
|
|
98
|
+
return {
|
|
99
|
+
current: currentVersion,
|
|
100
|
+
latest,
|
|
101
|
+
hasUpdate,
|
|
102
|
+
headline: hasUpdate ? getHeadline(latest) : '',
|
|
103
|
+
installCmd: detectInstallCommand(pkg),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Offline, timeout, or any network error — silently return null
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/utils/update-check.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexus-framework/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "The AI-Native Development Framework — turns every project into an AI-powered workspace with structured docs, progressive memory, and configurable agent personas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -51,29 +51,36 @@
|
|
|
51
51
|
"bugs": {
|
|
52
52
|
"url": "https://github.com/GDA-Africa/nexus-cli/issues"
|
|
53
53
|
},
|
|
54
|
-
"homepage": "https://
|
|
54
|
+
"homepage": "https://nexus.glenhalton.com",
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=20.0.0"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@inquirer/prompts": "^7.3.2",
|
|
60
|
+
"@nexus-framework/skills": "^0.1.0",
|
|
61
|
+
"archiver": "^7.0.1",
|
|
62
|
+
"boxen": "^8.0.1",
|
|
60
63
|
"chalk": "^5.3.0",
|
|
61
64
|
"commander": "^12.1.0",
|
|
62
65
|
"execa": "^9.5.2",
|
|
63
66
|
"figlet": "^1.8.0",
|
|
64
67
|
"fs-extra": "^11.2.0",
|
|
68
|
+
"gradient-string": "^3.0.0",
|
|
65
69
|
"inquirer": "^12.3.2",
|
|
66
70
|
"mustache": "^4.2.0",
|
|
67
71
|
"ora": "^8.1.1",
|
|
72
|
+
"unzipper": "^0.12.3",
|
|
68
73
|
"update-notifier": "^7.3.1",
|
|
69
74
|
"validate-npm-package-name": "^6.0.0"
|
|
70
75
|
},
|
|
71
76
|
"devDependencies": {
|
|
77
|
+
"@types/archiver": "^7.0.0",
|
|
72
78
|
"@types/figlet": "^1.7.0",
|
|
73
79
|
"@types/fs-extra": "^11.0.4",
|
|
74
80
|
"@types/inquirer": "^9.0.7",
|
|
75
81
|
"@types/mustache": "^4.2.5",
|
|
76
82
|
"@types/node": "^22.13.1",
|
|
83
|
+
"@types/unzipper": "^0.10.11",
|
|
77
84
|
"@types/update-notifier": "^6.0.8",
|
|
78
85
|
"@types/validate-npm-package-name": "^4.0.2",
|
|
79
86
|
"@typescript-eslint/eslint-plugin": "^8.22.0",
|