@justfortytwo/installer 1.0.0-1 → 1.0.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/dist/engine.d.ts +22 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +77 -27
- package/dist/engine.js.map +1 -1
- package/dist/render.d.ts +4 -3
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +13 -10
- package/dist/render.js.map +1 -1
- package/package.json +1 -1
package/dist/engine.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Directory of an installed sibling, found by walking up `<dir>/node_modules`
|
|
3
|
+
* from the project root exactly like Node's resolver; null if absent. Pure fs,
|
|
4
|
+
* so import-only `exports` maps (gate, telegram) can't defeat it the way they
|
|
5
|
+
* defeat require.resolve.
|
|
6
|
+
*/
|
|
7
|
+
export declare function findSiblingDir(spec: string, projectRoot?: string): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* The ESM entry file of a package's root export, relative to its dir: `exports`
|
|
10
|
+
* (string, `"."`, or a bare conditions object; conditions `import` > `node` >
|
|
11
|
+
* `default`, nested allowed), then `main`, then `index.js`. Null if the root is
|
|
12
|
+
* not exported for import.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveEsmEntry(pkg: {
|
|
15
|
+
exports?: unknown;
|
|
16
|
+
main?: unknown;
|
|
17
|
+
}): string | null;
|
|
18
|
+
/** Dynamically import an engine sibling from the project; null if it is not installed. */
|
|
19
|
+
export declare function loadSibling<T = Record<string, unknown>>(spec: string, projectRoot?: string): Promise<T | null>;
|
|
3
20
|
export declare const loadGate: () => Promise<{
|
|
4
21
|
POLICY_SCHEMA_VERSION?: number;
|
|
5
22
|
} | null>;
|
|
@@ -16,13 +33,10 @@ export declare const loadMemory: () => Promise<{
|
|
|
16
33
|
} | null>;
|
|
17
34
|
export declare const loadTelegram: () => Promise<Record<string, unknown> | null>;
|
|
18
35
|
/**
|
|
19
|
-
* Installed version of a sibling (its package.json `version`), or
|
|
20
|
-
*
|
|
21
|
-
* immune to import-only `exports` maps (which defeat require.resolve) and to
|
|
22
|
-
* bundled test runners where import.meta.resolve is unavailable. Matches where
|
|
23
|
-
* loadSibling's dynamic import would find the package.
|
|
36
|
+
* Installed version of a sibling in the project (its package.json `version`), or
|
|
37
|
+
* null. Same lookup as loadSibling, so the two always agree.
|
|
24
38
|
*/
|
|
25
|
-
export declare function readInstalledVersion(spec: string): string | null;
|
|
39
|
+
export declare function readInstalledVersion(spec: string, projectRoot?: string): string | null;
|
|
26
40
|
/** The CLI's declared compat ranges (package.json `fortytwo.compat`). */
|
|
27
41
|
export declare function readSelfCompatRanges(): Record<string, string>;
|
|
28
42
|
/**
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAU/F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAoBzF;AAED,0FAA0F;AAC1F,wBAAsB,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWnB;AAED,eAAO,MAAM,QAAQ;4BAA+C,MAAM;SAAyB,CAAC;AACpG,eAAO,MAAM,UAAU;mCAEY,MAAM;aAG5B,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,CAAC,EAAE;YAAE,MAAM,EAAE;gBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE;oBAC1E,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;SACrB,CAAC;AAC7B,eAAO,MAAM,YAAY,+CAA8C,CAAC;AAExE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAQrG;AAoBD,yEAAyE;AACzE,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI7D;AAWD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0B1D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAYtE;AAED,oFAAoF;AACpF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CASjF;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE1E;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAehF"}
|
package/dist/engine.js
CHANGED
|
@@ -7,12 +7,73 @@
|
|
|
7
7
|
// crashes the CLI — a missing sibling makes the dependent command/check report
|
|
8
8
|
// "not installed" instead of throwing.
|
|
9
9
|
import { readFileSync, existsSync } from 'node:fs';
|
|
10
|
-
import { fileURLToPath } from 'node:url';
|
|
11
|
-
import { dirname, join, parse } from 'node:path';
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
11
|
+
import { dirname, join, parse, resolve } from 'node:path';
|
|
12
|
+
// PROJECT-ROOTED RESOLUTION. Siblings live in the TARGET PROJECT's node_modules,
|
|
13
|
+
// never next to the installer: under `npx create-fortytwo` the installer runs from
|
|
14
|
+
// npm's exec cache (~/.npm/_npx/<hash>/node_modules), a separate tree. So every
|
|
15
|
+
// lookup below starts at the project root (the cwd every command operates on),
|
|
16
|
+
// not at import.meta.url — a bare `import(spec)` / `createRequire(import.meta.url)`
|
|
17
|
+
// would resolve from the exec cache and miss the engine `init` just installed.
|
|
18
|
+
/**
|
|
19
|
+
* Directory of an installed sibling, found by walking up `<dir>/node_modules`
|
|
20
|
+
* from the project root exactly like Node's resolver; null if absent. Pure fs,
|
|
21
|
+
* so import-only `exports` maps (gate, telegram) can't defeat it the way they
|
|
22
|
+
* defeat require.resolve.
|
|
23
|
+
*/
|
|
24
|
+
export function findSiblingDir(spec, projectRoot = process.cwd()) {
|
|
25
|
+
const segments = spec.split('/'); // e.g. ['@justfortytwo', 'gate']
|
|
26
|
+
let dir = resolve(projectRoot);
|
|
27
|
+
const root = parse(dir).root;
|
|
28
|
+
while (true) {
|
|
29
|
+
const candidate = join(dir, 'node_modules', ...segments);
|
|
30
|
+
if (existsSync(join(candidate, 'package.json')))
|
|
31
|
+
return candidate;
|
|
32
|
+
if (dir === root)
|
|
33
|
+
return null;
|
|
34
|
+
dir = dirname(dir);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The ESM entry file of a package's root export, relative to its dir: `exports`
|
|
39
|
+
* (string, `"."`, or a bare conditions object; conditions `import` > `node` >
|
|
40
|
+
* `default`, nested allowed), then `main`, then `index.js`. Null if the root is
|
|
41
|
+
* not exported for import.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveEsmEntry(pkg) {
|
|
44
|
+
const pick = (target) => {
|
|
45
|
+
if (typeof target === 'string')
|
|
46
|
+
return target;
|
|
47
|
+
if (!target || typeof target !== 'object' || Array.isArray(target))
|
|
48
|
+
return null;
|
|
49
|
+
const conditions = target;
|
|
50
|
+
for (const c of ['import', 'node', 'default']) {
|
|
51
|
+
if (c in conditions) {
|
|
52
|
+
const hit = pick(conditions[c]);
|
|
53
|
+
if (hit)
|
|
54
|
+
return hit;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
};
|
|
59
|
+
const { exports } = pkg;
|
|
60
|
+
if (exports !== undefined && exports !== null) {
|
|
61
|
+
const isSubpathMap = typeof exports === 'object' && !Array.isArray(exports) && Object.keys(exports).some((k) => k.startsWith('.'));
|
|
62
|
+
return pick(isSubpathMap ? exports['.'] : exports);
|
|
63
|
+
}
|
|
64
|
+
return typeof pkg.main === 'string' && pkg.main ? pkg.main : 'index.js';
|
|
65
|
+
}
|
|
66
|
+
/** Dynamically import an engine sibling from the project; null if it is not installed. */
|
|
67
|
+
export async function loadSibling(spec, projectRoot = process.cwd()) {
|
|
68
|
+
const dir = findSiblingDir(spec, projectRoot);
|
|
69
|
+
if (!dir)
|
|
70
|
+
return null;
|
|
14
71
|
try {
|
|
15
|
-
|
|
72
|
+
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
|
|
73
|
+
const entry = resolveEsmEntry(pkg);
|
|
74
|
+
if (!entry)
|
|
75
|
+
return null;
|
|
76
|
+
return (await import(pathToFileURL(join(dir, entry)).href));
|
|
16
77
|
}
|
|
17
78
|
catch {
|
|
18
79
|
return null;
|
|
@@ -22,29 +83,18 @@ export const loadGate = () => loadSibling('@justfortytwo/gate');
|
|
|
22
83
|
export const loadMemory = () => loadSibling('@justfortytwo/memory');
|
|
23
84
|
export const loadTelegram = () => loadSibling('@justfortytwo/telegram');
|
|
24
85
|
/**
|
|
25
|
-
* Installed version of a sibling (its package.json `version`), or
|
|
26
|
-
*
|
|
27
|
-
* immune to import-only `exports` maps (which defeat require.resolve) and to
|
|
28
|
-
* bundled test runners where import.meta.resolve is unavailable. Matches where
|
|
29
|
-
* loadSibling's dynamic import would find the package.
|
|
86
|
+
* Installed version of a sibling in the project (its package.json `version`), or
|
|
87
|
+
* null. Same lookup as loadSibling, so the two always agree.
|
|
30
88
|
*/
|
|
31
|
-
export function readInstalledVersion(spec) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (dir === root)
|
|
46
|
-
return null;
|
|
47
|
-
dir = dirname(dir);
|
|
89
|
+
export function readInstalledVersion(spec, projectRoot = process.cwd()) {
|
|
90
|
+
const dir = findSiblingDir(spec, projectRoot);
|
|
91
|
+
if (!dir)
|
|
92
|
+
return null;
|
|
93
|
+
try {
|
|
94
|
+
return JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')).version ?? null;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
48
98
|
}
|
|
49
99
|
}
|
|
50
100
|
/** Walk up from this module to find the installer's own package.json. */
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,kFAAkF;AAClF,mFAAmF;AACnF,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,uCAAuC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
CHANGED
|
@@ -60,12 +60,13 @@ export declare function renderTemplate(template: string, answers: Answers): stri
|
|
|
60
60
|
/**
|
|
61
61
|
* Locate the persona package and read its manifest. With `personaPackageDir`
|
|
62
62
|
* (tests, or an explicitly-resolved path) we read `<dir>/manifest.json`;
|
|
63
|
-
* otherwise we
|
|
64
|
-
*
|
|
63
|
+
* otherwise we locate `@justfortytwo/persona` in the TARGET PROJECT's
|
|
64
|
+
* node_modules (from `projectRoot`, not from this module: under npx the installer
|
|
65
|
+
* runs from npm's exec cache, a separate tree) so we honor the installed version. The manifest's `files`
|
|
65
66
|
* map drives rendering; `fields` (required flag) gives the required/optional
|
|
66
67
|
* var split; templates live under `<packageDir>/templates`.
|
|
67
68
|
*/
|
|
68
|
-
export declare function loadPersonaManifest(personaPackageDir?: string): PersonaManifest;
|
|
69
|
+
export declare function loadPersonaManifest(personaPackageDir?: string, projectRoot?: string): PersonaManifest;
|
|
69
70
|
/**
|
|
70
71
|
* Render the whole persona surface. Idempotent and non-clobbering:
|
|
71
72
|
* - MANAGED outputs: always (re)written from templates.
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGpD,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;CAC9B;AAED,uFAAuF;AACvF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,yEAAyE;IACzE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,sFAAsF;IACtF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CASzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,eAAe,CA6BpH;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAkCxF"}
|
package/dist/render.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// run; CAPTURED outputs are written only on first render (when absent).
|
|
15
15
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
16
16
|
import { dirname, join, resolve, sep } from 'node:path';
|
|
17
|
-
import {
|
|
17
|
+
import { findSiblingDir } from './engine.js';
|
|
18
18
|
/**
|
|
19
19
|
* Substitute `{{key}}` references with captured answers (flat, keyed by the
|
|
20
20
|
* persona manifest field keys — snake_case, exactly what templates use).
|
|
@@ -39,23 +39,26 @@ export function renderTemplate(template, answers) {
|
|
|
39
39
|
/**
|
|
40
40
|
* Locate the persona package and read its manifest. With `personaPackageDir`
|
|
41
41
|
* (tests, or an explicitly-resolved path) we read `<dir>/manifest.json`;
|
|
42
|
-
* otherwise we
|
|
43
|
-
*
|
|
42
|
+
* otherwise we locate `@justfortytwo/persona` in the TARGET PROJECT's
|
|
43
|
+
* node_modules (from `projectRoot`, not from this module: under npx the installer
|
|
44
|
+
* runs from npm's exec cache, a separate tree) so we honor the installed version. The manifest's `files`
|
|
44
45
|
* map drives rendering; `fields` (required flag) gives the required/optional
|
|
45
46
|
* var split; templates live under `<packageDir>/templates`.
|
|
46
47
|
*/
|
|
47
|
-
export function loadPersonaManifest(personaPackageDir) {
|
|
48
|
-
let manifestPath;
|
|
48
|
+
export function loadPersonaManifest(personaPackageDir, projectRoot = process.cwd()) {
|
|
49
49
|
let pkgDir;
|
|
50
50
|
if (personaPackageDir) {
|
|
51
51
|
pkgDir = resolve(personaPackageDir);
|
|
52
|
-
manifestPath = join(pkgDir, 'manifest.json');
|
|
53
52
|
}
|
|
54
53
|
else {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const found = findSiblingDir('@justfortytwo/persona', projectRoot);
|
|
55
|
+
if (!found) {
|
|
56
|
+
throw new Error(`@justfortytwo/persona is not installed in ${resolve(projectRoot)} (looked in node_modules up from there). ` +
|
|
57
|
+
'Run `fortytwo init` (it installs the engine) or `npm install @justfortytwo/persona`.');
|
|
58
|
+
}
|
|
59
|
+
pkgDir = found;
|
|
58
60
|
}
|
|
61
|
+
const manifestPath = join(pkgDir, 'manifest.json');
|
|
59
62
|
const raw = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
60
63
|
const fields = raw.fields ?? [];
|
|
61
64
|
return {
|
|
@@ -80,7 +83,7 @@ export function renderPersona(identity, opts = {}) {
|
|
|
80
83
|
let files = opts.files;
|
|
81
84
|
let tplRoot = opts.templatesDir ? resolve(opts.templatesDir) : undefined;
|
|
82
85
|
if (!files || !tplRoot) {
|
|
83
|
-
const manifest = loadPersonaManifest(opts.personaPackageDir);
|
|
86
|
+
const manifest = loadPersonaManifest(opts.personaPackageDir, root);
|
|
84
87
|
files = files ?? manifest.files;
|
|
85
88
|
tplRoot = tplRoot ?? resolve(manifest.templatesDir);
|
|
86
89
|
}
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,qBAAqB;AACrB,gFAAgF;AAChF,4EAA4E;AAC5E,mFAAmF;AACnF,uEAAuE;AACvE,gFAAgF;AAChF,qEAAqE;AACrE,EAAE;AACF,kFAAkF;AAClF,sEAAsE;AACtE,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@justfortytwo/installer",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-2",
|
|
4
4
|
"description": "All-in-one installer and lifecycle CLI for fortytwo — scaffolds the persona surface and provisions the npm engine (memory MCP, safety gate, channel adapters, embedder).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|