nemoris 0.1.13 → 0.1.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nemoris",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "description": "Personal AI agent runtime — persistent memory, delivery guarantees, task contracts, self-healing. Local-first, no cloud.",
6
6
  "license": "MIT",
@@ -28,9 +28,9 @@ export function stripAnsi(str) {
28
28
  return str.replace(/\x1b\[[0-9;]*m/g, "");
29
29
  }
30
30
 
31
- export function buildTelegramToml({ botTokenEnv, pollingMode, webhookUrl, operatorChatId, authorizedChatIds, defaultAgent }) {
31
+ export function buildTelegramToml({ botTokenEnv, pollingMode, webhookUrl, operatorChatId, authorizedChatIds, defaultAgent, botUsername }) {
32
32
  const authIds = (authorizedChatIds || []).map((id) => `"${id}"`).join(", ");
33
- return [
33
+ const lines = [
34
34
  "",
35
35
  "[telegram]",
36
36
  `bot_token_env = "${botTokenEnv}"`,
@@ -39,8 +39,10 @@ export function buildTelegramToml({ botTokenEnv, pollingMode, webhookUrl, operat
39
39
  `operator_chat_id = "${operatorChatId || ""}"`,
40
40
  `authorized_chat_ids = [${authIds}]`,
41
41
  `default_agent = "${defaultAgent}"`,
42
- "",
43
- ].join("\n");
42
+ ];
43
+ if (botUsername) lines.push(`bot_username = "${botUsername}"`);
44
+ lines.push("");
45
+ return lines.join("\n");
44
46
  }
45
47
 
46
48
  export function patchRuntimeToml(installDir, telegramToml) {
@@ -227,6 +229,7 @@ export async function runTelegramPhase({ installDir, agentId, nonInteractive = f
227
229
  patchRuntimeToml(installDir, buildTelegramToml({
228
230
  botTokenEnv, pollingMode: mode === "polling", webhookUrl,
229
231
  operatorChatId: chatId, authorizedChatIds, defaultAgent: agentId,
232
+ botUsername: me.username,
230
233
  }));
231
234
 
232
235
  return { configured: true, verified: false, botUsername: me.username, botToken: token, operatorChatId: chatId };
@@ -323,6 +326,7 @@ export async function runTelegramPhase({ installDir, agentId, nonInteractive = f
323
326
  patchRuntimeToml(installDir, buildTelegramToml({
324
327
  botTokenEnv, pollingMode, webhookUrl,
325
328
  operatorChatId: chatId || "", authorizedChatIds, defaultAgent: agentId,
329
+ botUsername,
326
330
  }));
327
331
 
328
332
  // Wire delivery.toml so the telegram profile is enabled
@@ -332,21 +336,6 @@ export async function runTelegramPhase({ installDir, agentId, nonInteractive = f
332
336
  chatIdPending: !chatId,
333
337
  });
334
338
 
335
- // Persist bot_username to runtime.toml for finish screen / status
336
- if (botUsername) {
337
- const runtimePath = path.join(installDir, "config", "runtime.toml");
338
- try {
339
- let runtime = fs.readFileSync(runtimePath, "utf8");
340
- if (runtime.includes("[telegram]") && !runtime.includes("bot_username")) {
341
- runtime = runtime.replace(
342
- /(\[telegram\][^\[]*)/s,
343
- (section) => section.trimEnd() + `\nbot_username = "${botUsername}"\n`
344
- );
345
- fs.writeFileSync(runtimePath, runtime);
346
- }
347
- } catch { /* non-fatal */ }
348
- }
349
-
350
339
  // Store chat_id in state for later phases (e.g. hatch)
351
340
  const result = { configured: true, verified: false, botUsername, botToken: token, operatorChatId: chatId || "" };
352
341