natroc 0.0.6 → 0.0.7

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.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/server/dist/agent/auto-improver.d.ts +33 -0
  3. package/server/dist/agent/auto-improver.js +125 -0
  4. package/server/dist/agent/auto-improver.js.map +1 -0
  5. package/server/dist/agent/home-context.js +81 -14
  6. package/server/dist/agent/home-context.js.map +1 -1
  7. package/server/dist/agent/improvement-engine.d.ts +1 -0
  8. package/server/dist/agent/improvement-engine.js +18 -0
  9. package/server/dist/agent/improvement-engine.js.map +1 -1
  10. package/server/dist/agent/tools/types.d.ts +6 -0
  11. package/server/dist/agent/tools/write-file.js +11 -1
  12. package/server/dist/agent/tools/write-file.js.map +1 -1
  13. package/server/dist/config/natroc-config.d.ts +6 -0
  14. package/server/dist/config/natroc-config.js +22 -0
  15. package/server/dist/config/natroc-config.js.map +1 -1
  16. package/server/dist/gateway/agent-service.d.ts +15 -1
  17. package/server/dist/gateway/agent-service.js +58 -6
  18. package/server/dist/gateway/agent-service.js.map +1 -1
  19. package/server/dist/gateway/gateway.js +7 -0
  20. package/server/dist/gateway/gateway.js.map +1 -1
  21. package/server/dist/gateway/rpc/agent.js +47 -0
  22. package/server/dist/gateway/rpc/agent.js.map +1 -1
  23. package/server/dist/gateway/rpc/conversations.js +11 -2
  24. package/server/dist/gateway/rpc/conversations.js.map +1 -1
  25. package/server/dist/runtime.d.ts +2 -0
  26. package/server/dist/runtime.js.map +1 -1
  27. package/server/dist/storage/auth-repository.d.ts +5 -0
  28. package/server/dist/storage/auth-repository.js +6 -0
  29. package/server/dist/storage/auth-repository.js.map +1 -1
  30. package/server/dist/storage/memory-repository.d.ts +8 -0
  31. package/server/dist/storage/memory-repository.js +49 -26
  32. package/server/dist/storage/memory-repository.js.map +1 -1
  33. package/ui/dist/assets/{index-BiU8FgKo.js → index-C9vuE6UQ.js} +1 -1
  34. package/ui/dist/assets/index-DHIA01cO.css +2 -0
  35. package/ui/dist/index.html +2 -2
  36. package/ui/dist/assets/index-Dosh6wwG.css +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "natroc",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Ultimate Personal AI Agent that can perform complex tasks and even become a Personal Assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,33 @@
1
+ import type { RuntimeState } from "../runtime.js";
2
+ export type AutoImproveStatus = {
3
+ enabled: boolean;
4
+ killSwitch: boolean;
5
+ intervalMs: number;
6
+ runAfterEachConversation: boolean;
7
+ lastCycleAt: string | null;
8
+ lastCycleDurationMs: number | null;
9
+ lastCycleStatus: "ok" | "skipped" | "error" | null;
10
+ lastCycleReason: string | null;
11
+ lastCycleUserId: string | null;
12
+ inFlightUserIds: string[];
13
+ };
14
+ export declare class AutoImprover {
15
+ private readonly runtime;
16
+ private timer;
17
+ private readonly inFlight;
18
+ private lastCycleAt;
19
+ private lastCycleDurationMs;
20
+ private lastCycleStatus;
21
+ private lastCycleReason;
22
+ private lastCycleUserId;
23
+ constructor(runtime: RuntimeState);
24
+ start(): void;
25
+ stop(): void;
26
+ status(): AutoImproveStatus;
27
+ runAllUsers(): Promise<void>;
28
+ runForUser(userId: string): Promise<void>;
29
+ private recordSuccess;
30
+ private recordError;
31
+ private recordSkipped;
32
+ private broadcast;
33
+ }
@@ -0,0 +1,125 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { runReflectionTurn } from "../gateway/agent-service.js";
3
+ export class AutoImprover {
4
+ runtime;
5
+ timer = null;
6
+ inFlight = new Set();
7
+ lastCycleAt = null;
8
+ lastCycleDurationMs = null;
9
+ lastCycleStatus = null;
10
+ lastCycleReason = null;
11
+ lastCycleUserId = null;
12
+ constructor(runtime) {
13
+ this.runtime = runtime;
14
+ }
15
+ start() {
16
+ this.stop();
17
+ const config = this.runtime.config?.autoImprove;
18
+ if (!config?.enabled)
19
+ return;
20
+ const intervalMs = Math.max(10_000, config.intervalMs);
21
+ this.timer = setInterval(() => {
22
+ void this.runAllUsers().catch(() => undefined);
23
+ }, intervalMs);
24
+ if (typeof this.timer.unref === "function")
25
+ this.timer.unref();
26
+ }
27
+ stop() {
28
+ if (this.timer) {
29
+ clearInterval(this.timer);
30
+ this.timer = null;
31
+ }
32
+ }
33
+ status() {
34
+ const config = this.runtime.config?.autoImprove;
35
+ return {
36
+ enabled: config?.enabled ?? false,
37
+ killSwitch: config?.killSwitch ?? false,
38
+ intervalMs: config?.intervalMs ?? 0,
39
+ runAfterEachConversation: config?.runAfterEachConversation ?? false,
40
+ lastCycleAt: this.lastCycleAt,
41
+ lastCycleDurationMs: this.lastCycleDurationMs,
42
+ lastCycleStatus: this.lastCycleStatus,
43
+ lastCycleReason: this.lastCycleReason,
44
+ lastCycleUserId: this.lastCycleUserId,
45
+ inFlightUserIds: Array.from(this.inFlight),
46
+ };
47
+ }
48
+ async runAllUsers() {
49
+ const config = this.runtime.config?.autoImprove;
50
+ if (!config?.enabled || config.killSwitch) {
51
+ this.recordSkipped(null, config?.killSwitch ? "kill_switch" : "disabled");
52
+ return;
53
+ }
54
+ const users = this.runtime.auth.listUsers();
55
+ for (const user of users) {
56
+ await this.runForUser(user.id).catch(() => undefined);
57
+ }
58
+ }
59
+ async runForUser(userId) {
60
+ const config = this.runtime.config?.autoImprove;
61
+ if (!config?.enabled || config.killSwitch) {
62
+ this.recordSkipped(userId, config?.killSwitch ? "kill_switch" : "disabled");
63
+ return;
64
+ }
65
+ if (this.inFlight.has(userId)) {
66
+ this.recordSkipped(userId, "concurrent");
67
+ return;
68
+ }
69
+ this.inFlight.add(userId);
70
+ const cycleId = randomUUID();
71
+ const startedAtMs = Date.now();
72
+ this.broadcast({ cycleId, userId, status: "started" });
73
+ try {
74
+ const result = await runReflectionTurn(this.runtime, userId);
75
+ this.recordSuccess(userId, Date.now() - startedAtMs);
76
+ this.broadcast({
77
+ cycleId,
78
+ userId,
79
+ status: "ok",
80
+ durationMs: Date.now() - startedAtMs,
81
+ toolCalls: result?.toolCallsCount ?? 0,
82
+ workspaceWrites: result?.workspaceWrites ?? 0,
83
+ });
84
+ }
85
+ catch (error) {
86
+ const reason = error instanceof Error ? error.message : "unknown_error";
87
+ this.recordError(userId, Date.now() - startedAtMs, reason);
88
+ this.broadcast({
89
+ cycleId,
90
+ userId,
91
+ status: "error",
92
+ durationMs: Date.now() - startedAtMs,
93
+ reason,
94
+ });
95
+ }
96
+ finally {
97
+ this.inFlight.delete(userId);
98
+ }
99
+ }
100
+ recordSuccess(userId, durationMs) {
101
+ this.lastCycleAt = new Date().toISOString();
102
+ this.lastCycleDurationMs = durationMs;
103
+ this.lastCycleStatus = "ok";
104
+ this.lastCycleReason = null;
105
+ this.lastCycleUserId = userId;
106
+ }
107
+ recordError(userId, durationMs, reason) {
108
+ this.lastCycleAt = new Date().toISOString();
109
+ this.lastCycleDurationMs = durationMs;
110
+ this.lastCycleStatus = "error";
111
+ this.lastCycleReason = reason;
112
+ this.lastCycleUserId = userId;
113
+ }
114
+ recordSkipped(userId, reason) {
115
+ this.lastCycleAt = new Date().toISOString();
116
+ this.lastCycleDurationMs = 0;
117
+ this.lastCycleStatus = "skipped";
118
+ this.lastCycleReason = reason;
119
+ this.lastCycleUserId = userId;
120
+ }
121
+ broadcast(payload) {
122
+ this.runtime.broadcaster?.broadcast("auto-improve", payload);
123
+ }
124
+ }
125
+ //# sourceMappingURL=auto-improver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-improver.js","sourceRoot":"","sources":["../../src/agent/auto-improver.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,9 @@ export async function loadHomeContext(paths, options = {}) {
7
7
  throw new Error("Natroc home path is not configured.");
8
8
  }
9
9
  const homeDir = resolve(paths.homeDir);
10
- const maxFileCharacters = options.maxFileCharacters ?? 2400;
10
+ // Default ~16 KB (~4k tokens) so canonical files (BOOTSTRAP/AGENTS/USER/…)
11
+ // are injected in full; truncation only kicks in for unusually large files.
12
+ const maxFileCharacters = options.maxFileCharacters ?? 16000;
11
13
  const homeFiles = await listHomeMarkdownFiles(homeDir);
12
14
  const files = await Promise.all(homeFiles.map(async ({ absolutePath, name }) => {
13
15
  assertInsideHome(homeDir, absolutePath);
@@ -73,26 +75,91 @@ export async function writeHomeFile(paths, fileName, content) {
73
75
  modifiedAt: stats.mtime.toISOString(),
74
76
  };
75
77
  }
78
+ /** Canonical workspace files that get dedicated sections in the system prompt. */
79
+ const CANONICAL_FILES = {
80
+ bootstrap: "BOOTSTRAP.md",
81
+ agents: "AGENTS.md",
82
+ identity: "IDENTITY.md",
83
+ soul: "SOUL.md",
84
+ user: "USER.md",
85
+ memory: "MEMORY.md",
86
+ };
87
+ function bucketWorkspaceFiles(files) {
88
+ const bucket = { other: [] };
89
+ for (const file of files) {
90
+ const upper = file.name.toUpperCase();
91
+ if (upper === CANONICAL_FILES.bootstrap.toUpperCase())
92
+ bucket.bootstrap = file;
93
+ else if (upper === CANONICAL_FILES.agents.toUpperCase())
94
+ bucket.agents = file;
95
+ else if (upper === CANONICAL_FILES.identity.toUpperCase())
96
+ bucket.identity = file;
97
+ else if (upper === CANONICAL_FILES.soul.toUpperCase())
98
+ bucket.soul = file;
99
+ else if (upper === CANONICAL_FILES.user.toUpperCase())
100
+ bucket.user = file;
101
+ else if (upper === CANONICAL_FILES.memory.toUpperCase())
102
+ bucket.memory = file;
103
+ else
104
+ bucket.other.push(file);
105
+ }
106
+ return bucket;
107
+ }
76
108
  export function buildAgentSystemPrompt(context, memories = [], conversationThreads = [], options = {}) {
77
- const sections = [
78
- "## Natroc Runtime",
79
- "You are running inside Natroc, a local-first personal AI agent runtime.",
80
- "Use the injected home files and approved memory as durable local context.",
81
- "Do not claim to have changed memory, knowledge, files, services, commits, or processes unless the runtime actually did it."
82
- ];
109
+ const bucket = bucketWorkspaceFiles(context.files);
110
+ const sections = [];
111
+ sections.push([
112
+ "## Your Identity & Purpose",
113
+ "You are this user's **personal AI assistant**, running locally on their machine via Natroc a private, always-on agent runtime they own and operate.",
114
+ "You are NOT a generic chatbot. You serve this specific user across sessions: drafting, planning, code, decisions, lookups, and operating on their local workspace.",
115
+ "You remember them through stored memory and the workspace files below; you continue threads across days.",
116
+ "Be honest, direct, concise. Do not claim to have changed memory, files, services, commits, processes, or external state unless the runtime actually performed the change.",
117
+ ].join("\n"));
83
118
  if (options.workspacePath || context.files.length > 0) {
84
119
  const workspaceLines = ["## Workspace"];
85
120
  if (options.workspacePath) {
86
- workspaceLines.push(`Your personal workspace lives at: ${options.workspacePath}`);
121
+ workspaceLines.push(`Your personal workspace lives at: \`${options.workspacePath}\``);
87
122
  }
88
123
  if (context.files.length > 0) {
89
- workspaceLines.push("Files currently present (any file here is part of your operating context — read it before acting if its name suggests it might be relevant):", ...context.files.map((file) => `- ${file.name}`));
124
+ workspaceLines.push("Files currently present (each is part of your operating context):", ...context.files.map((file) => `- ${file.name}`));
90
125
  }
91
- workspaceLines.push("Use the `list_directory`, `read_file`, and `write_file` tools to inspect or modify any file in this workspace.", "When a file's instructions imply they are one-time (for example anything that says 'delete me after applying'), follow them and remove the file once you are done.");
126
+ workspaceLines.push("Use the `list_directory`, `read_file`, and `write_file` tools to inspect or modify any file in this workspace.", "If a file's instructions imply it is one-time (for example anything saying \"remove me after applying\"), follow it and delete the file when done.");
92
127
  sections.push(workspaceLines.join("\n"));
93
- sections.push("## Workspace File Snapshots");
94
- sections.push("These snapshots reflect the workspace at the time this turn started. If you change a file, re-read it before relying on its contents.");
95
- for (const file of context.files) {
128
+ }
129
+ if (bucket.bootstrap) {
130
+ sections.push([
131
+ "## ⚠ ACTIVE BOOTSTRAP — DO THIS FIRST",
132
+ "Your workspace is **not fully initialized**. `BOOTSTRAP.md` exists and is your one-time initialization script.",
133
+ "**Before doing any other task, walk through `BOOTSTRAP.md` step by step.** Ask the user only for the minimum information you need to fill the workspace files it lists. When every step is complete, delete `BOOTSTRAP.md` (it explicitly tells you to).",
134
+ "",
135
+ "### BOOTSTRAP.md",
136
+ bucket.bootstrap.content,
137
+ ].join("\n"));
138
+ }
139
+ if (bucket.agents) {
140
+ sections.push([
141
+ "## Operating Rules",
142
+ "The following is your authoritative operating policy for this workspace. It outranks personality, memory, and conversation history (but never user intent or safety).",
143
+ "",
144
+ "### AGENTS.md",
145
+ bucket.agents.content,
146
+ ].join("\n"));
147
+ }
148
+ if (bucket.identity) {
149
+ sections.push(["## Agent Identity", "", bucket.identity.content].join("\n"));
150
+ }
151
+ if (bucket.soul) {
152
+ sections.push(["## Personality & Tone", "", bucket.soul.content].join("\n"));
153
+ }
154
+ if (bucket.user) {
155
+ sections.push(["## User Profile", "", bucket.user.content].join("\n"));
156
+ }
157
+ if (bucket.memory) {
158
+ sections.push(["## Long-term Memory", "", bucket.memory.content].join("\n"));
159
+ }
160
+ if (bucket.other.length > 0) {
161
+ sections.push("## Other Workspace Files");
162
+ for (const file of bucket.other) {
96
163
  sections.push(`### ${file.name}`, file.content);
97
164
  }
98
165
  }
@@ -103,7 +170,7 @@ export function buildAgentSystemPrompt(context, memories = [], conversationThrea
103
170
  }
104
171
  }
105
172
  if (conversationThreads.length > 0) {
106
- sections.push("## Prior Conversation Threads", "These are bounded snippets from stored Natroc conversations across sessions. Use them as recall of previous threads, while treating Approved Agent Memory and the current user message as higher priority if there is a conflict.");
173
+ sections.push("## Prior Conversation Threads", "Bounded snippets from prior Natroc conversations across sessions. Use them as recall, but treat Approved Agent Memory and the current user message as higher priority on conflict.");
107
174
  for (const thread of conversationThreads) {
108
175
  sections.push(formatConversationThread(thread));
109
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"home-context.js","sourceRoot":"","sources":["../../src/agent/home-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"home-context.js","sourceRoot":"","sources":["../../src/agent/home-context.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare function buildHeuristicImprovementProposals(input: {
8
8
  assistantMessage: string;
9
9
  conversationId?: string | null;
10
10
  }): ImprovementDraft[];
11
+ export declare function buildReflectionPrompt(): string;
11
12
  export declare function generateImprovementProposals(input: {
12
13
  adapter: ProviderAdapter;
13
14
  model?: string;
@@ -24,6 +24,24 @@ export function buildHeuristicImprovementProposals(input) {
24
24
  }
25
25
  ];
26
26
  }
27
+ export function buildReflectionPrompt() {
28
+ return [
29
+ "You are running your scheduled self-improvement cycle. This is YOUR cycle — no user is waiting on you.",
30
+ "",
31
+ "Inspect, in order:",
32
+ "1. Recent conversations and tool calls since your previous cycle.",
33
+ "2. Your workspace files (AGENTS.md, USER.md, MEMORY.md, IDENTITY.md, SOUL.md, and anything else in the workspace).",
34
+ "3. Optionally, files elsewhere on the host filesystem if relevant context lives there.",
35
+ "",
36
+ "Decide what is worth keeping:",
37
+ "- Distill durable insights about this user, their tools, and their projects.",
38
+ "- Update workspace files via `write_file` to reflect what you learned. Writes are sandboxed to your workspace; writes outside will fail.",
39
+ "- Append a one-line summary of every change to `CHANGELOG.md` (create it if missing).",
40
+ "- If there is nothing meaningful to add this cycle, simply reply \"no changes this cycle\".",
41
+ "",
42
+ "You have full read access to the filesystem. ALL persisted state of your improvements must stay inside your workspace.",
43
+ ].join("\n");
44
+ }
27
45
  export async function generateImprovementProposals(input) {
28
46
  const transcript = input.messages
29
47
  .map((message) => `${message.role.toUpperCase()}: ${message.content}`)
@@ -1 +1 @@
1
- {"version":3,"file":"improvement-engine.js","sourceRoot":"","sources":["../../src/agent/improvement-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improvement-engine.js","sourceRoot":"","sources":["../../src/agent/improvement-engine.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@ export type ToolMode = "auto" | "readonly";
3
3
  export type ToolContext = {
4
4
  /** Default working directory used to resolve relative paths. */
5
5
  cwd: string;
6
+ /**
7
+ * Optional sandbox for write-class tools. When set, writes outside this
8
+ * absolute directory are rejected. Self-improvement cycles use this to
9
+ * keep persisted state inside `~/.natroc/home/`.
10
+ */
11
+ writeSandbox?: string;
6
12
  };
7
13
  export type ToolResult = {
8
14
  ok: boolean;
@@ -1,5 +1,5 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
- import { dirname } from "node:path";
2
+ import { dirname, relative, resolve } from "node:path";
3
3
  import { z } from "zod";
4
4
  import { resolveUserPath } from "./util.js";
5
5
  const schema = z.object({
@@ -14,6 +14,16 @@ export const writeFileTool = {
14
14
  execute: async (args, context) => {
15
15
  const { path, content } = schema.parse(args);
16
16
  const target = resolveUserPath(path, context.cwd);
17
+ if (context.writeSandbox) {
18
+ const sandbox = resolve(context.writeSandbox);
19
+ const rel = relative(sandbox, target);
20
+ if (rel.startsWith("..") || rel === "" || /^([a-zA-Z]:)?[\\/]/.test(rel)) {
21
+ return {
22
+ ok: false,
23
+ output: `Write rejected: ${target} is outside the sandbox ${sandbox}.`,
24
+ };
25
+ }
26
+ }
17
27
  await mkdir(dirname(target), { recursive: true });
18
28
  await writeFile(target, content, "utf8");
19
29
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/agent/tools/write-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,2HAA2H;IAC7H,UAAU,EAAE,uCAAuC;IACnD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAEjD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAExC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,SAAS,OAAO,CAAC,MAAM,kBAAkB,MAAM,GAAG;SAC3D,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/agent/tools/write-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,2HAA2H;IAC7H,UAAU,EAAE,uCAAuC;IACnD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAEjD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACrC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzE,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,mBAAmB,MAAM,2BAA2B,OAAO,GAAG;iBACvE,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAExC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,SAAS,OAAO,CAAC,MAAM,kBAAkB,MAAM,GAAG;SAC3D,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -25,6 +25,12 @@ export type NatrocConfig = {
25
25
  sendReadReceipts: boolean;
26
26
  };
27
27
  };
28
+ autoImprove: {
29
+ enabled: boolean;
30
+ intervalMs: number;
31
+ runAfterEachConversation: boolean;
32
+ killSwitch: boolean;
33
+ };
28
34
  };
29
35
  export declare const DEFAULT_NATROC_CONFIG: NatrocConfig;
30
36
  export declare function getConfigPath(paths: NatrocPaths): string;
@@ -24,6 +24,12 @@ export const DEFAULT_NATROC_CONFIG = {
24
24
  sendReadReceipts: false,
25
25
  },
26
26
  },
27
+ autoImprove: {
28
+ enabled: false,
29
+ intervalMs: 30 * 60 * 1000,
30
+ runAfterEachConversation: true,
31
+ killSwitch: false,
32
+ },
27
33
  };
28
34
  export function getConfigPath(paths) {
29
35
  return join(paths.root, "natroc.json");
@@ -87,6 +93,22 @@ function mergeWithDefaults(input) {
87
93
  applyTelegramDefaults(config.channels.telegramDefaults, root.channels.telegramDefaults);
88
94
  applyWhatsappDefaults(config.channels.whatsappDefaults, root.channels.whatsappDefaults);
89
95
  }
96
+ if (isRecord(root.autoImprove)) {
97
+ if (typeof root.autoImprove.enabled === "boolean") {
98
+ config.autoImprove.enabled = root.autoImprove.enabled;
99
+ }
100
+ if (typeof root.autoImprove.intervalMs === "number" &&
101
+ root.autoImprove.intervalMs >= 10_000) {
102
+ config.autoImprove.intervalMs = Math.floor(root.autoImprove.intervalMs);
103
+ }
104
+ if (typeof root.autoImprove.runAfterEachConversation === "boolean") {
105
+ config.autoImprove.runAfterEachConversation =
106
+ root.autoImprove.runAfterEachConversation;
107
+ }
108
+ if (typeof root.autoImprove.killSwitch === "boolean") {
109
+ config.autoImprove.killSwitch = root.autoImprove.killSwitch;
110
+ }
111
+ }
90
112
  return config;
91
113
  }
92
114
  function applyTelegramDefaults(target, source) {
@@ -1 +1 @@
1
- {"version":3,"file":"natroc-config.js","sourceRoot":"","sources":["../../src/config/natroc-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"natroc-config.js","sourceRoot":"","sources":["../../src/config/natroc-config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type AgentLoopEvent } from "../agent/agent-loop.js";
2
- import type { chatSchema } from "../routes/schemas.js";
2
+ import { chatSchema } from "../routes/schemas.js";
3
3
  import type { RuntimeState } from "../runtime.js";
4
4
  type AgentChatInput = ReturnType<typeof chatSchema.parse>;
5
5
  /**
@@ -12,5 +12,19 @@ export declare function runAgentTurn(runtime: RuntimeState, input: AgentChatInpu
12
12
  userId: string;
13
13
  agentId?: string | null;
14
14
  channel?: string;
15
+ writeSandbox?: string;
15
16
  }): AsyncGenerator<AgentLoopEvent, unknown>;
17
+ export type ReflectionTurnResult = {
18
+ conversationId: string;
19
+ toolCallsCount: number;
20
+ workspaceWrites: number;
21
+ content: string;
22
+ };
23
+ /**
24
+ * Drive one autonomous self-reflection turn for the given user. Reuses the
25
+ * persistent "self-reflection" channel conversation so the agent retains
26
+ * its own thought history across cycles. Writes are sandboxed to the
27
+ * Natroc home dir.
28
+ */
29
+ export declare function runReflectionTurn(runtime: RuntimeState, userId: string): Promise<ReflectionTurnResult>;
16
30
  export {};