@justfortytwo/installer 1.0.0-1 → 1.0.0-3
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 +19 -4
- package/dist/commands/init.d.ts +42 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/engine.d.ts +30 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +112 -27
- package/dist/engine.js.map +1 -1
- package/dist/index.js +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 +2 -2
package/README.md
CHANGED
|
@@ -16,15 +16,15 @@ npx create-fortytwo init # capture your details, install the engine
|
|
|
16
16
|
|
|
17
17
|
You only install **this** package — `init` installs the engine packages it needs
|
|
18
18
|
on demand (`@justfortytwo/gate`, `/memory`, `/persona`, `/telegram`, `/scheduler`).
|
|
19
|
-
During the 1.0 pre-release, `/telegram` and `/
|
|
20
|
-
`1.0.0-0`;
|
|
19
|
+
During the 1.0 pre-release, `/telegram`, `/scheduler` and `/persona` are pinned
|
|
20
|
+
exactly to `1.0.0-0`; telegram and scheduler pull in `@justfortytwo/runner` themselves, so the installer never
|
|
21
21
|
installs runner directly. Engine versions live only in `package.json`
|
|
22
22
|
`fortytwo.compat` (not in `peerDependencies`), so upgrading the installer never
|
|
23
23
|
trips npm's peer resolution. Pass
|
|
24
24
|
`--no-install` to manage them yourself, and `--yes` (with `--answers <file.json>`
|
|
25
25
|
or `FORTYTWO_*` env) for non-interactive installs. Point the memory engine at a
|
|
26
26
|
remote embedder with `--ollama-base-url https://host` (threaded into `.mcp.json`,
|
|
27
|
-
so the memory MCP server uses it), and pre-seed the optional Telegram channel
|
|
27
|
+
so the memory MCP server uses it — see [The embedder](#the-embedder)), and pre-seed the optional Telegram channel
|
|
28
28
|
with `--telegram-bot-token <token>` / `--allowed-chat-ids <ids>` (or the matching
|
|
29
29
|
env vars) — secrets are written to the gitignored `.env`, never prompted.
|
|
30
30
|
|
|
@@ -79,7 +79,22 @@ is manual**: the prior version set is recorded before every update, so
|
|
|
79
79
|
|
|
80
80
|
The engine uses a **local** embedder for privacy — personal data never leaves
|
|
81
81
|
your machine. The standard model is `qwen3-embedding:0.6b`, served by Ollama;
|
|
82
|
-
`init`
|
|
82
|
+
`init` makes sure it is available and `doctor` verifies it.
|
|
83
|
+
|
|
84
|
+
`init` asks where Ollama runs:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Ollama base URL — where the embedder runs (Enter for http://localhost:11434):
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Press Enter for a local install, or type another endpoint — e.g.
|
|
91
|
+
`http://ollama:11434` when Ollama runs in a sibling container. The default shown
|
|
92
|
+
is `$OLLAMA_BASE_URL` if it is set, else `http://localhost:11434`; an explicit
|
|
93
|
+
`--ollama-base-url <url>` skips the question, and `--yes`/non-TTY runs use the
|
|
94
|
+
default. The chosen URL is written to both `.env` and the memory server's
|
|
95
|
+
`.mcp.json` entry, and `init` checks for the model on **that** server
|
|
96
|
+
(`GET /api/tags`), pulling it there over HTTP (`POST /api/pull`) only if it is
|
|
97
|
+
missing — the `ollama` CLI is not needed on the installer's machine.
|
|
83
98
|
|
|
84
99
|
## Requirements
|
|
85
100
|
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -48,6 +48,34 @@ export declare function buildMcpConfig(existing: McpConfig | null, opts: {
|
|
|
48
48
|
export declare function buildVersionPins(compatRanges: Record<string, string>, readVersion: (spec: string) => string | null): VersionPin[];
|
|
49
49
|
/** Engine packages (from compat ranges) not yet resolvable, as `name@range` install specs. */
|
|
50
50
|
export declare function engineInstallSpecs(compatRanges: Record<string, string>, isPresent: (spec: string) => boolean): string[];
|
|
51
|
+
/** Ollama HTTP calls ensureEmbedModel makes (injectable for tests). */
|
|
52
|
+
export interface EmbedModelDeps {
|
|
53
|
+
listModels: (baseUrl: string) => Promise<string[] | null>;
|
|
54
|
+
pullModel: (baseUrl: string, model: string) => Promise<string | null>;
|
|
55
|
+
log: (line: string) => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Make sure `model` is available on the Ollama server at `baseUrl` — the SAME
|
|
59
|
+
* endpoint written to .env and .mcp.json. Checks /api/tags first and pulls (over
|
|
60
|
+
* HTTP, on that server) only when missing. Warn-only: returns a status note.
|
|
61
|
+
*/
|
|
62
|
+
export declare function ensureEmbedModel(baseUrl: string, model: string, deps?: EmbedModelDeps): Promise<string>;
|
|
63
|
+
/**
|
|
64
|
+
* A list field's manifest prompt without its "one per line" hint. readline is
|
|
65
|
+
* single-line (Enter — or Shift+Enter in many terminals — submits), so that hint
|
|
66
|
+
* promised input the UI can't take; askList gives the real instructions instead.
|
|
67
|
+
*/
|
|
68
|
+
export declare function listPromptLabel(prompt: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Collect a list one item per prompt; a blank entry ends it. Each answer is ONE
|
|
71
|
+
* item, verbatim (trimmed) — commas inside it are kept. A required list re-asks
|
|
72
|
+
* on an immediate blank instead of returning []. Pure: `ask` is injected.
|
|
73
|
+
*/
|
|
74
|
+
export declare function askList(label: string, ask: (prompt: string) => Promise<string>, opts?: {
|
|
75
|
+
required?: boolean;
|
|
76
|
+
}): Promise<string[]>;
|
|
77
|
+
/** Ask for the required fields still missing, in order; lists item by item. Pure: `ask` is injected. */
|
|
78
|
+
export declare function askMissingAnswers(fields: ManifestField[], missing: string[], answers: Answers, ask: (prompt: string) => Promise<string>): Promise<void>;
|
|
51
79
|
/**
|
|
52
80
|
* Interactively offer to capture the OPTIONAL Telegram channel secrets that
|
|
53
81
|
* weren't already supplied (via `--telegram-bot-token` / `--allowed-chat-ids` or
|
|
@@ -56,5 +84,19 @@ export declare function engineInstallSpecs(compatRanges: Record<string, string>,
|
|
|
56
84
|
* secrets to ADD (existing ones are never re-prompted).
|
|
57
85
|
*/
|
|
58
86
|
export declare function collectChannelSecrets(existing: Record<string, string>, ask: (prompt: string) => Promise<string>): Promise<Record<string, string>>;
|
|
87
|
+
/**
|
|
88
|
+
* Choose the Ollama endpoint for this init. Precedence:
|
|
89
|
+
* 1. an explicit `--ollama-base-url` — used as-is, never re-asked;
|
|
90
|
+
* 2. interactive: ask, with the inherited OLLAMA_BASE_URL env (else
|
|
91
|
+
* http://localhost:11434) as the Enter-to-accept default; a typed URL is
|
|
92
|
+
* used exactly as entered (an invalid one is re-asked, up to 3 tries);
|
|
93
|
+
* 3. non-interactive (`ask` absent): that same default.
|
|
94
|
+
* Pure: `ask` is injected, so it unit-tests without a TTY.
|
|
95
|
+
*/
|
|
96
|
+
export declare function resolveOllamaBaseUrl(opts: {
|
|
97
|
+
flag?: string;
|
|
98
|
+
env?: string;
|
|
99
|
+
ask?: (prompt: string) => Promise<string>;
|
|
100
|
+
}): Promise<string>;
|
|
59
101
|
export declare function runInit(argv: string[]): Promise<number>;
|
|
60
102
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAY,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMjE,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAiBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,EAAE,aAAa,GACrB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAajD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAetF;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,GAAG,IAAI,EAC1B,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,SAAS,CAeX;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAC3C,UAAU,EAAE,CAOd;AAsBD,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACnC,MAAM,EAAE,CAIV;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// - .env written with secrets + runtime config (gitignored)
|
|
6
6
|
// - CLAUDE.md + context/* rendered from @justfortytwo/persona templates
|
|
7
7
|
// - .mcp.json wired to the memory MCP server
|
|
8
|
-
// - Ollama EMBED_MODEL pulled (warn-only); the memory DB migrated
|
|
8
|
+
// - Ollama EMBED_MODEL checked/pulled at the chosen OLLAMA_BASE_URL (warn-only); the memory DB migrated
|
|
9
9
|
// - .fortytwo/state.json records the resolved sibling version set (rollback baseline)
|
|
10
10
|
// - next-step guidance: set ALLOWED_CHAT_IDS / attach the channel
|
|
11
11
|
//
|
|
@@ -19,7 +19,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
19
19
|
import { createInterface } from 'node:readline/promises';
|
|
20
20
|
import { writeIdentity, recordVersionSet } from '../state.js';
|
|
21
21
|
import { renderPersona, loadPersonaManifest } from '../render.js';
|
|
22
|
-
import { loadMemory, readInstalledVersion, readSelfCompatRanges } from '../engine.js';
|
|
22
|
+
import { loadMemory, readInstalledVersion, readSelfCompatRanges, fetchOllamaModels, pullOllamaModel } from '../engine.js';
|
|
23
23
|
// The embedder model the engine standardizes on (privacy: local-only embeddings).
|
|
24
24
|
export const EMBED_MODEL = 'qwen3-embedding:0.6b';
|
|
25
25
|
export const DEFAULT_OLLAMA_BASE_URL = 'http://localhost:11434';
|
|
@@ -168,19 +168,39 @@ function recordInstalledSet(root) {
|
|
|
168
168
|
recordVersionSet(pins, root);
|
|
169
169
|
return pins;
|
|
170
170
|
}
|
|
171
|
+
const defaultEmbedModelDeps = {
|
|
172
|
+
listModels: fetchOllamaModels,
|
|
173
|
+
pullModel: pullOllamaModel,
|
|
174
|
+
log: (line) => { process.stdout.write(line + '\n'); },
|
|
175
|
+
};
|
|
171
176
|
/**
|
|
172
|
-
*
|
|
177
|
+
* Make sure `model` is available on the Ollama server at `baseUrl` — the SAME
|
|
178
|
+
* endpoint written to .env and .mcp.json. Checks /api/tags first and pulls (over
|
|
179
|
+
* HTTP, on that server) only when missing. Warn-only: returns a status note.
|
|
180
|
+
*/
|
|
181
|
+
export async function ensureEmbedModel(baseUrl, model, deps = defaultEmbedModelDeps) {
|
|
182
|
+
const models = await deps.listModels(baseUrl);
|
|
183
|
+
if (models === null) {
|
|
184
|
+
return `! Ollama unreachable at ${baseUrl} — could not check or pull ${model} (semantic recall will degrade until it is available)`;
|
|
185
|
+
}
|
|
186
|
+
if (models.includes(model))
|
|
187
|
+
return `✓ embedder ${model} available at ${baseUrl}`;
|
|
188
|
+
deps.log(`Pulling ${model} on ${baseUrl} (this can take a few minutes)…`);
|
|
189
|
+
const err = await deps.pullModel(baseUrl, model);
|
|
190
|
+
if (err)
|
|
191
|
+
return `! could not pull ${model} via ${baseUrl}: ${err} (semantic recall will degrade until it is present)`;
|
|
192
|
+
return `✓ pulled ${model} on ${baseUrl}`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Provision local infra: make the embedder model available (warn-only, like wakeup.sh —
|
|
173
196
|
* the engine degrades to a fake embedder rather than hard-failing) and run the
|
|
174
197
|
* memory DB migrations via the memory package (the engine owns the schema; the
|
|
175
198
|
* CLI must not duplicate it).
|
|
176
199
|
*/
|
|
177
200
|
async function provision(opts) {
|
|
178
201
|
const notes = [];
|
|
179
|
-
// 1. embedder model (best-effort)
|
|
180
|
-
|
|
181
|
-
if (pulled.status !== 0) {
|
|
182
|
-
notes.push(`! could not pull ${opts.embedModel} via ollama (semantic recall will degrade until it is present)`);
|
|
183
|
-
}
|
|
202
|
+
// 1. embedder model (best-effort), on the configured endpoint
|
|
203
|
+
notes.push(await ensureEmbedModel(opts.ollamaBaseUrl, opts.embedModel));
|
|
184
204
|
// 2. db migrations via the memory engine
|
|
185
205
|
const mem = await loadMemory();
|
|
186
206
|
if (mem && typeof mem.openDb === 'function' && typeof mem.runMigrations === 'function') {
|
|
@@ -213,7 +233,7 @@ function parseInitArgs(argv) {
|
|
|
213
233
|
let yes = false;
|
|
214
234
|
let noInstall = false;
|
|
215
235
|
let answersFile;
|
|
216
|
-
let ollamaBaseUrl
|
|
236
|
+
let ollamaBaseUrl;
|
|
217
237
|
let dbPath = process.env.DB_PATH ?? DEFAULT_DB_PATH;
|
|
218
238
|
const SECRET_FLAGS = {
|
|
219
239
|
'telegram-bot-token': 'TELEGRAM_BOT_TOKEN',
|
|
@@ -238,7 +258,7 @@ function parseInitArgs(argv) {
|
|
|
238
258
|
if (name === 'answers')
|
|
239
259
|
answersFile = val;
|
|
240
260
|
else if (name === 'ollama-base-url')
|
|
241
|
-
ollamaBaseUrl = val;
|
|
261
|
+
ollamaBaseUrl = val.trim() || undefined;
|
|
242
262
|
else if (name === 'db-path')
|
|
243
263
|
dbPath = val;
|
|
244
264
|
else if (SECRET_FLAGS[name])
|
|
@@ -252,15 +272,50 @@ function parseInitArgs(argv) {
|
|
|
252
272
|
secrets.ALLOWED_CHAT_IDS ??= process.env.ALLOWED_CHAT_IDS;
|
|
253
273
|
return { yes, noInstall, answersFile, flags, secrets, ollamaBaseUrl, dbPath };
|
|
254
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* A list field's manifest prompt without its "one per line" hint. readline is
|
|
277
|
+
* single-line (Enter — or Shift+Enter in many terminals — submits), so that hint
|
|
278
|
+
* promised input the UI can't take; askList gives the real instructions instead.
|
|
279
|
+
*/
|
|
280
|
+
export function listPromptLabel(prompt) {
|
|
281
|
+
return prompt.replace(/,?\s*one (?:item |step )?per line\.?\s*$/i, '').trim();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Collect a list one item per prompt; a blank entry ends it. Each answer is ONE
|
|
285
|
+
* item, verbatim (trimmed) — commas inside it are kept. A required list re-asks
|
|
286
|
+
* on an immediate blank instead of returning []. Pure: `ask` is injected.
|
|
287
|
+
*/
|
|
288
|
+
export async function askList(label, ask, opts = {}) {
|
|
289
|
+
const items = [];
|
|
290
|
+
let prompt = `${label} — enter one at a time.\nPress Enter on an empty line when done.\n> `;
|
|
291
|
+
while (true) {
|
|
292
|
+
const item = (await ask(prompt)).trim();
|
|
293
|
+
if (item) {
|
|
294
|
+
items.push(item);
|
|
295
|
+
prompt = '> ';
|
|
296
|
+
}
|
|
297
|
+
else if (items.length === 0 && opts.required) {
|
|
298
|
+
prompt = ' (at least one is required)\n> ';
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
return items;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/** Ask for the required fields still missing, in order; lists item by item. Pure: `ask` is injected. */
|
|
306
|
+
export async function askMissingAnswers(fields, missing, answers, ask) {
|
|
307
|
+
for (const key of missing) {
|
|
308
|
+
const field = fields.find((f) => f.key === key);
|
|
309
|
+
answers[key] = field.type === 'list'
|
|
310
|
+
? await askList(listPromptLabel(field.prompt), ask, { required: field.required })
|
|
311
|
+
: (await ask(`${field.prompt}\n> `)).trim();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
255
314
|
/** Prompt (readline) for the required fields still missing. TTY only. */
|
|
256
315
|
async function promptMissing(fields, missing, answers) {
|
|
257
316
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
258
317
|
try {
|
|
259
|
-
|
|
260
|
-
const field = fields.find((f) => f.key === key);
|
|
261
|
-
const ans = (await rl.question(`${field.prompt}\n> `)).trim();
|
|
262
|
-
answers[key] = field.type === 'list' ? coerceList(ans) : ans;
|
|
263
|
-
}
|
|
318
|
+
await askMissingAnswers(fields, missing, answers, (q) => rl.question(q));
|
|
264
319
|
}
|
|
265
320
|
finally {
|
|
266
321
|
rl.close();
|
|
@@ -287,6 +342,41 @@ export async function collectChannelSecrets(existing, ask) {
|
|
|
287
342
|
}
|
|
288
343
|
return added;
|
|
289
344
|
}
|
|
345
|
+
const isHttpUrl = (v) => {
|
|
346
|
+
try {
|
|
347
|
+
const u = new URL(v);
|
|
348
|
+
return (u.protocol === 'http:' || u.protocol === 'https:') && u.hostname !== '';
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
/**
|
|
355
|
+
* Choose the Ollama endpoint for this init. Precedence:
|
|
356
|
+
* 1. an explicit `--ollama-base-url` — used as-is, never re-asked;
|
|
357
|
+
* 2. interactive: ask, with the inherited OLLAMA_BASE_URL env (else
|
|
358
|
+
* http://localhost:11434) as the Enter-to-accept default; a typed URL is
|
|
359
|
+
* used exactly as entered (an invalid one is re-asked, up to 3 tries);
|
|
360
|
+
* 3. non-interactive (`ask` absent): that same default.
|
|
361
|
+
* Pure: `ask` is injected, so it unit-tests without a TTY.
|
|
362
|
+
*/
|
|
363
|
+
export async function resolveOllamaBaseUrl(opts) {
|
|
364
|
+
if (opts.flag)
|
|
365
|
+
return opts.flag;
|
|
366
|
+
const fallback = opts.env?.trim() || DEFAULT_OLLAMA_BASE_URL;
|
|
367
|
+
if (!opts.ask)
|
|
368
|
+
return fallback;
|
|
369
|
+
let prompt = `Ollama base URL — where the embedder runs (Enter for ${fallback}): `;
|
|
370
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
371
|
+
const answer = (await opts.ask(prompt)).trim();
|
|
372
|
+
if (!answer)
|
|
373
|
+
return fallback;
|
|
374
|
+
if (isHttpUrl(answer))
|
|
375
|
+
return answer;
|
|
376
|
+
prompt = ` "${answer}" is not an http(s) URL (e.g. http://ollama:11434). Ollama base URL (Enter for ${fallback}): `;
|
|
377
|
+
}
|
|
378
|
+
throw new Error('init: no valid Ollama base URL given (expected http(s)://host:port)');
|
|
379
|
+
}
|
|
290
380
|
export async function runInit(argv) {
|
|
291
381
|
const root = process.cwd();
|
|
292
382
|
const opts = parseInitArgs(argv);
|
|
@@ -321,28 +411,34 @@ export async function runInit(argv) {
|
|
|
321
411
|
updatedAt: new Date().toISOString(),
|
|
322
412
|
};
|
|
323
413
|
writeIdentity(identity, root);
|
|
324
|
-
// Interactively
|
|
325
|
-
// the
|
|
326
|
-
// runs are unaffected (
|
|
414
|
+
// Interactively ask for the Ollama endpoint (Enter keeps the default) and offer
|
|
415
|
+
// the optional Telegram secrets not already provided, so neither needs a second
|
|
416
|
+
// manual .env edit. Non-TTY/--yes runs are unaffected (flags/env/defaults).
|
|
417
|
+
let ollamaBaseUrl;
|
|
327
418
|
if (interactive) {
|
|
328
419
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
329
420
|
try {
|
|
330
|
-
|
|
421
|
+
const ask = (q) => rl.question(q);
|
|
422
|
+
ollamaBaseUrl = await resolveOllamaBaseUrl({ flag: opts.ollamaBaseUrl, env: process.env.OLLAMA_BASE_URL, ask });
|
|
423
|
+
Object.assign(opts.secrets, await collectChannelSecrets(opts.secrets, ask));
|
|
331
424
|
}
|
|
332
425
|
finally {
|
|
333
426
|
rl.close();
|
|
334
427
|
}
|
|
335
428
|
}
|
|
429
|
+
else {
|
|
430
|
+
ollamaBaseUrl = await resolveOllamaBaseUrl({ flag: opts.ollamaBaseUrl, env: process.env.OLLAMA_BASE_URL });
|
|
431
|
+
}
|
|
336
432
|
// Seed runtime config alongside any provided secrets.
|
|
337
433
|
writeEnv({
|
|
338
|
-
OLLAMA_BASE_URL:
|
|
434
|
+
OLLAMA_BASE_URL: ollamaBaseUrl, // same value as .mcp.json + the provision check/pull
|
|
339
435
|
EMBED_MODEL,
|
|
340
436
|
DB_PATH: opts.dbPath,
|
|
341
437
|
...opts.secrets,
|
|
342
438
|
}, root);
|
|
343
439
|
const render = renderPersona(identity, { root });
|
|
344
|
-
writeMcpJson(root, opts.dbPath,
|
|
345
|
-
const provisionNotes = await provision({ ollamaBaseUrl
|
|
440
|
+
writeMcpJson(root, opts.dbPath, ollamaBaseUrl);
|
|
441
|
+
const provisionNotes = await provision({ ollamaBaseUrl, embedModel: EMBED_MODEL, dbPath: opts.dbPath });
|
|
346
442
|
const pins = recordInstalledSet(root);
|
|
347
443
|
// Report.
|
|
348
444
|
const out = process.stdout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
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
|
/**
|
|
@@ -42,6 +56,14 @@ export declare function compareSemver(a: string, b: string): number;
|
|
|
42
56
|
export declare function satisfiesRange(version: string, range: string): boolean;
|
|
43
57
|
/** GET {baseUrl}/api/tags; return installed model names, or null if unreachable. */
|
|
44
58
|
export declare function fetchOllamaModels(baseUrl: string): Promise<string[] | null>;
|
|
59
|
+
/**
|
|
60
|
+
* POST {baseUrl}/api/pull and wait for it to finish. Talks to the server over
|
|
61
|
+
* HTTP — not the local `ollama` CLI, which only reaches localhost — so a remote
|
|
62
|
+
* or sibling-container endpoint works. Streams progress (so a multi-minute pull
|
|
63
|
+
* never sits idle long enough to trip fetch's timeouts). Returns null on success,
|
|
64
|
+
* else a short error.
|
|
65
|
+
*/
|
|
66
|
+
export declare function pullOllamaModel(baseUrl: string, model: string): Promise<string | null>;
|
|
45
67
|
export type MigrationState = 'ok' | 'missing' | 'pending' | 'unavailable';
|
|
46
68
|
/**
|
|
47
69
|
* Migration health for the memory DB: 'missing' (no DB file → run init),
|
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;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkB5F;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. */
|
|
@@ -159,6 +209,41 @@ export async function fetchOllamaModels(baseUrl) {
|
|
|
159
209
|
return null;
|
|
160
210
|
}
|
|
161
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* POST {baseUrl}/api/pull and wait for it to finish. Talks to the server over
|
|
214
|
+
* HTTP — not the local `ollama` CLI, which only reaches localhost — so a remote
|
|
215
|
+
* or sibling-container endpoint works. Streams progress (so a multi-minute pull
|
|
216
|
+
* never sits idle long enough to trip fetch's timeouts). Returns null on success,
|
|
217
|
+
* else a short error.
|
|
218
|
+
*/
|
|
219
|
+
export async function pullOllamaModel(baseUrl, model) {
|
|
220
|
+
try {
|
|
221
|
+
const res = await fetch(`${baseUrl.replace(/\/$/, '')}/api/pull`, {
|
|
222
|
+
method: 'POST',
|
|
223
|
+
headers: { 'content-type': 'application/json' },
|
|
224
|
+
body: JSON.stringify({ model, name: model, stream: true }), // `name`: older Ollama servers
|
|
225
|
+
});
|
|
226
|
+
if (!res.ok)
|
|
227
|
+
return `HTTP ${res.status}`;
|
|
228
|
+
let last = {};
|
|
229
|
+
for (const line of (await res.text()).split('\n')) {
|
|
230
|
+
if (!line.trim())
|
|
231
|
+
continue;
|
|
232
|
+
try {
|
|
233
|
+
last = JSON.parse(line);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
if (last.error)
|
|
239
|
+
return last.error;
|
|
240
|
+
}
|
|
241
|
+
return last.status === 'success' ? null : `pull ended with status "${last.status ?? 'unknown'}"`;
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
return err.message;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
162
247
|
/**
|
|
163
248
|
* Migration health for the memory DB: 'missing' (no DB file → run init),
|
|
164
249
|
* 'ok' (the migrated `memories` table exists), 'pending' (DB present but not
|
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/index.js
CHANGED
|
@@ -32,7 +32,7 @@ Usage:
|
|
|
32
32
|
|
|
33
33
|
Verbs:
|
|
34
34
|
init Capture identity, write .env + .fortytwo/identity.json, render
|
|
35
|
-
persona, provision (
|
|
35
|
+
persona, provision (embedder check/pull at OLLAMA_BASE_URL + db migrate).
|
|
36
36
|
pair Issue a one-time /login pairing code for a channel (e.g. Telegram).
|
|
37
37
|
doctor Health-check the engine: memory MCP contract, gate, db migrations,
|
|
38
38
|
embedder model, and installed versions vs fortytwo.compat.
|
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-3",
|
|
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": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"compat": {
|
|
50
50
|
"@justfortytwo/memory": "^0.1.5",
|
|
51
51
|
"@justfortytwo/gate": "^0.1.0",
|
|
52
|
-
"@justfortytwo/persona": "
|
|
52
|
+
"@justfortytwo/persona": "1.0.0-0",
|
|
53
53
|
"@justfortytwo/telegram": "1.0.0-0",
|
|
54
54
|
"@justfortytwo/scheduler": "1.0.0-0"
|
|
55
55
|
}
|