assistme 0.8.11 → 0.8.12

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 (188) hide show
  1. package/dist/{chunk-RUP2IQG3.js → chunk-5ML5YMCM.js} +12 -225
  2. package/dist/chunk-MP4E522X.js +8587 -0
  3. package/dist/chunk-YHUARPU7.js +161 -0
  4. package/dist/{chunk-BGMIIZLF.js → chunk-ZUUASYPZ.js} +26 -1
  5. package/dist/{config-V2EJC3EH.js → config-D6BMAQGN.js} +1 -1
  6. package/dist/index.js +1880 -2138
  7. package/dist/job-runner-NA3KJCKA.js +8 -0
  8. package/dist/logger-5TGLXZKK.js +20 -0
  9. package/dist/workers/entry.js +7 -3430
  10. package/eslint.config.mjs +154 -0
  11. package/package.json +7 -1
  12. package/src/agent/execution/coach-prompt.md +26 -0
  13. package/src/agent/{event-hooks.ts → execution/event-hooks.ts} +17 -30
  14. package/src/agent/execution/index.ts +38 -0
  15. package/src/agent/execution/processor-qa.ts +142 -0
  16. package/src/agent/execution/processor-setup.ts +111 -0
  17. package/src/agent/execution/processor.ts +279 -0
  18. package/src/agent/execution/prompt-builder.ts +106 -0
  19. package/src/agent/execution/self-scoring-coach.ts +113 -0
  20. package/src/agent/execution/self-scoring.ts +321 -0
  21. package/src/agent/{system-prompt.ts → execution/system-prompt.md} +48 -21
  22. package/src/agent/execution/system-prompt.ts +21 -0
  23. package/src/agent/execution/task-verifier.ts +272 -0
  24. package/src/agent/{title-generator.ts → execution/title-generator.ts} +4 -3
  25. package/src/agent/execution/verification-prompt.md +16 -0
  26. package/src/agent/execution/verification-session.ts +129 -0
  27. package/src/agent/heartbeat/compiler-prompt.md +27 -0
  28. package/src/agent/{heartbeat-checks.ts → heartbeat/heartbeat-checks.ts} +7 -5
  29. package/src/agent/{heartbeat-compiler.ts → heartbeat/heartbeat-compiler.ts} +9 -33
  30. package/src/agent/heartbeat/heartbeat-io.ts +138 -0
  31. package/src/agent/heartbeat/heartbeat-system-prompt.md +16 -0
  32. package/src/agent/heartbeat/index.ts +28 -0
  33. package/src/agent/{proactive-monitor.ts → heartbeat/proactive-monitor.ts} +60 -197
  34. package/src/agent/{session-heartbeat.ts → heartbeat/session-heartbeat.ts} +2 -2
  35. package/src/agent/memory/index.ts +6 -0
  36. package/src/agent/memory/manager.ts +158 -0
  37. package/src/agent/{self-analyzer.ts → memory/self-analyzer.ts} +30 -51
  38. package/src/agent/scheduling/index.ts +15 -0
  39. package/src/agent/{job-analysis-poller.ts → scheduling/job-analysis-poller.ts} +2 -2
  40. package/src/agent/{job-runner.ts → scheduling/job-runner.ts} +29 -27
  41. package/src/agent/{scheduler.ts → scheduling/scheduler.ts} +5 -4
  42. package/src/agent/{task-poller.ts → scheduling/task-poller.ts} +4 -4
  43. package/src/agent/shared/index.ts +5 -0
  44. package/src/agent/{sdk-stream.ts → shared/sdk-stream.ts} +10 -5
  45. package/src/agent/shared/types.ts +18 -0
  46. package/src/agent/skills/index.ts +49 -0
  47. package/src/agent/{skills.ts → skills/manager.ts} +61 -270
  48. package/src/agent/skills/skill-crud.ts +216 -0
  49. package/src/agent/{skill-db.ts → skills/skill-db.ts} +2 -2
  50. package/src/agent/skills/skill-discovery.ts +62 -0
  51. package/src/agent/{skill-evaluator.ts → skills/skill-evaluator.ts} +8 -7
  52. package/src/agent/{skill-format.ts → skills/skill-format.ts} +4 -15
  53. package/src/agent/{skill-marketplace.ts → skills/skill-marketplace.ts} +21 -18
  54. package/src/agent/skills/skill-sync.ts +87 -0
  55. package/src/agent/{skill-types.ts → skills/skill-types.ts} +12 -9
  56. package/src/agent/{skill-utils.ts → skills/skill-utils.ts} +55 -11
  57. package/src/browser/actions-basic.ts +285 -0
  58. package/src/browser/actions.ts +293 -0
  59. package/src/browser/chrome-discovery.ts +119 -0
  60. package/src/browser/chrome-launcher.ts +14 -359
  61. package/src/browser/chrome-profile.ts +243 -0
  62. package/src/browser/connection.ts +352 -0
  63. package/src/browser/controller.ts +86 -1858
  64. package/src/browser/delays.ts +35 -0
  65. package/src/browser/navigation.ts +189 -0
  66. package/src/browser/scripts.ts +168 -0
  67. package/src/browser/snapshot-scripts.ts +327 -0
  68. package/src/browser/snapshot.ts +346 -0
  69. package/src/commands/auth.ts +24 -27
  70. package/src/commands/browser.ts +31 -37
  71. package/src/commands/config.ts +13 -20
  72. package/src/commands/credential.ts +26 -25
  73. package/src/commands/job.ts +37 -33
  74. package/src/commands/memory.ts +28 -24
  75. package/src/commands/monitor.ts +31 -40
  76. package/src/commands/schedule.ts +25 -23
  77. package/src/commands/skill.ts +19 -37
  78. package/src/commands/start.ts +25 -24
  79. package/src/commands/status.ts +14 -21
  80. package/src/credentials/credential-store.ts +97 -39
  81. package/src/credentials/encryption.ts +3 -3
  82. package/src/credentials/index.ts +4 -5
  83. package/src/credentials/local-store.ts +1 -0
  84. package/src/credentials/program-store.ts +33 -5
  85. package/src/db/analysis-data.ts +1 -1
  86. package/src/db/auth-store.ts +1 -0
  87. package/src/db/auth.ts +1 -1
  88. package/src/db/conversation.ts +6 -4
  89. package/src/db/event.ts +15 -25
  90. package/src/db/job-poll.ts +1 -1
  91. package/src/db/session-log.ts +5 -14
  92. package/src/db/session.ts +3 -2
  93. package/src/db/supabase.ts +11 -11
  94. package/src/db/task.ts +3 -2
  95. package/src/index.ts +9 -8
  96. package/src/mcp/agent-tools-server.ts +27 -1398
  97. package/src/mcp/ask-user.ts +8 -6
  98. package/src/mcp/browser-server.ts +52 -43
  99. package/src/mcp/office-server.ts +119 -0
  100. package/src/mcp/skill-confirmation.ts +2 -4
  101. package/src/mcp/tools/ask-user-tools.ts +82 -0
  102. package/src/mcp/tools/credential-tools.ts +131 -0
  103. package/src/mcp/tools/heartbeat-tools.ts +91 -0
  104. package/src/mcp/tools/job-tools.ts +224 -0
  105. package/src/mcp/tools/memory-tools.ts +54 -0
  106. package/src/mcp/tools/program-tools.ts +162 -0
  107. package/src/mcp/tools/response.ts +30 -0
  108. package/src/mcp/tools/skill-tools-discovery.ts +288 -0
  109. package/src/mcp/tools/skill-tools.ts +215 -0
  110. package/src/mcp/tools/types.ts +10 -0
  111. package/src/office/document.ts +277 -0
  112. package/src/office/index.ts +48 -0
  113. package/src/office/presentation.ts +252 -0
  114. package/src/office/reader.ts +434 -0
  115. package/src/office/schemas.ts +196 -0
  116. package/src/office/spreadsheet.ts +77 -0
  117. package/src/orchestrator.ts +54 -57
  118. package/src/tools/browser.ts +9 -9
  119. package/src/tools/filesystem.ts +7 -18
  120. package/src/tools/index.ts +84 -47
  121. package/src/tools/shell.ts +8 -75
  122. package/src/types/modules.d.ts +309 -0
  123. package/src/utils/config.ts +2 -1
  124. package/src/utils/constants.ts +54 -97
  125. package/src/utils/errors.ts +46 -1
  126. package/src/utils/fire-and-forget.ts +29 -0
  127. package/src/utils/logger.ts +3 -3
  128. package/src/utils/rate-limiter.ts +5 -115
  129. package/src/utils/retry.ts +7 -120
  130. package/src/utils/template-loader.ts +49 -0
  131. package/src/workers/base-handler.ts +3 -3
  132. package/src/workers/conversation.ts +6 -4
  133. package/src/workers/entry.ts +2 -2
  134. package/src/workers/index.ts +5 -5
  135. package/src/workers/manager.ts +45 -24
  136. package/src/workers/worker-lifecycle.ts +12 -11
  137. package/tests/agent/command-injection.test.ts +154 -0
  138. package/tests/agent/event-hooks.test.ts +29 -24
  139. package/tests/agent/heartbeat-checks.test.ts +11 -6
  140. package/tests/agent/mcp-servers.test.ts +4 -3
  141. package/tests/agent/memory.test.ts +2 -70
  142. package/tests/agent/proactive-monitor.test.ts +31 -29
  143. package/tests/agent/processor.test.ts +195 -16
  144. package/tests/agent/qa-pipeline.test.ts +389 -0
  145. package/tests/agent/scheduler.test.ts +3 -2
  146. package/tests/agent/sdk-stream.test.ts +3 -2
  147. package/tests/agent/self-analyzer.test.ts +5 -3
  148. package/tests/agent/self-scoring.test.ts +451 -0
  149. package/tests/agent/session.test.ts +3 -3
  150. package/tests/agent/skill-format.test.ts +8 -4
  151. package/tests/agent/skill-search.test.ts +4 -3
  152. package/tests/agent/skill-types.test.ts +68 -0
  153. package/tests/agent/skill-utils.test.ts +3 -3
  154. package/tests/agent/skills.test.ts +3 -3
  155. package/tests/agent/task-verifier.test.ts +386 -0
  156. package/tests/agent/title-generator.test.ts +4 -3
  157. package/tests/browser/snapshot.test.ts +185 -0
  158. package/tests/credentials/credential-store.test.ts +9 -8
  159. package/tests/credentials/encryption.test.ts +5 -4
  160. package/tests/credentials/program-store.test.ts +13 -12
  161. package/tests/db/supabase.test.ts +1 -1
  162. package/tests/mcp/ask-user.test.ts +1 -1
  163. package/tests/mcp/skill-confirmation.integration.test.ts +17 -17
  164. package/tests/mcp/skill-confirmation.test.ts +4 -3
  165. package/tests/office/document.test.ts +239 -0
  166. package/tests/office/error-recovery.test.ts +328 -0
  167. package/tests/office/executeTool.test.ts +283 -0
  168. package/tests/office/office-server.test.ts +21 -0
  169. package/tests/office/presentation.test.ts +296 -0
  170. package/tests/office/reader.test.ts +326 -0
  171. package/tests/office/spreadsheet.test.ts +184 -0
  172. package/tests/tools/filesystem.test.ts +7 -7
  173. package/tests/tools/shell.test.ts +41 -72
  174. package/tests/utils/config.test.ts +1 -1
  175. package/tests/utils/errors.test.ts +89 -0
  176. package/tests/utils/rate-limiter.test.ts +8 -96
  177. package/tests/utils/retry.test.ts +3 -110
  178. package/dist/chunk-RJBLIGFJ.js +0 -3802
  179. package/dist/job-runner-OT3HZQEF.js +0 -7
  180. package/eslint.config.js +0 -20
  181. package/src/agent/mcp-servers.ts +0 -7
  182. package/src/agent/memory.ts +0 -280
  183. package/src/agent/processor.ts +0 -317
  184. package/src/agent/prompt-builder.ts +0 -83
  185. package/src/agent/skill-extractor.ts +0 -8
  186. package/src/agent/task-timeout.ts +0 -50
  187. /package/src/agent/{heartbeat-types.ts → heartbeat/heartbeat-types.ts} +0 -0
  188. /package/src/agent/{skill-search.ts → skills/skill-search.ts} +0 -0
@@ -1,8 +1,11 @@
1
+ import {
2
+ log
3
+ } from "./chunk-YHUARPU7.js";
1
4
  import {
2
5
  errorMessage,
3
6
  getConfig,
4
7
  getDataDir
5
- } from "./chunk-BGMIIZLF.js";
8
+ } from "./chunk-ZUUASYPZ.js";
6
9
 
7
10
  // src/db/auth-store.ts
8
11
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -57,154 +60,6 @@ async function callMcpHandler(action, params = {}, overrideToken) {
57
60
  return body.data;
58
61
  }
59
62
 
60
- // src/utils/logger.ts
61
- import chalk from "chalk";
62
- import { randomUUID } from "crypto";
63
- import { readFileSync as readFileSync2 } from "fs";
64
- import { join as join2, dirname } from "path";
65
- import { fileURLToPath } from "url";
66
- var currentLevel = "info";
67
- var currentCorrelationId = null;
68
- var currentConversationId = null;
69
- var logHook = null;
70
- var logTransport = null;
71
- var PKG_VERSION = (() => {
72
- try {
73
- const __dirname = dirname(fileURLToPath(import.meta.url));
74
- for (const rel of ["../package.json", "../../package.json"]) {
75
- try {
76
- const pkg = JSON.parse(readFileSync2(join2(__dirname, rel), "utf-8"));
77
- if (pkg.version) return pkg.version;
78
- } catch {
79
- }
80
- }
81
- } catch {
82
- }
83
- return "unknown";
84
- })();
85
- var LEVEL_ORDER = {
86
- debug: 0,
87
- info: 1,
88
- warn: 2,
89
- error: 3
90
- };
91
- function setLogLevel(level) {
92
- currentLevel = level;
93
- }
94
- function setLogHook(hook) {
95
- logHook = hook;
96
- }
97
- function setLogTransport(transport) {
98
- logTransport = transport;
99
- }
100
- function setCorrelationId(id) {
101
- currentCorrelationId = id;
102
- }
103
- function setLogConversationId(id) {
104
- currentConversationId = id;
105
- }
106
- function newCorrelationId() {
107
- const id = randomUUID().slice(0, 8);
108
- currentCorrelationId = id;
109
- return id;
110
- }
111
- function shouldLog(level) {
112
- return LEVEL_ORDER[level] >= LEVEL_ORDER[currentLevel];
113
- }
114
- function timestamp() {
115
- return (/* @__PURE__ */ new Date()).toISOString().slice(11, 23);
116
- }
117
- function prefix() {
118
- const ts = timestamp();
119
- const base = `${ts} v${PKG_VERSION}`;
120
- return currentCorrelationId ? `${base} ${currentCorrelationId}` : base;
121
- }
122
- var log = {
123
- debug(msg, ...args) {
124
- if (shouldLog("debug")) {
125
- const text = formatArgs(msg, args);
126
- if (logTransport) {
127
- logTransport("debug", text);
128
- return;
129
- }
130
- logHook?.("stdout", `[DEBUG] ${text}`, currentConversationId);
131
- console.log(chalk.gray(`[${prefix()}] DEBUG`), msg, ...args);
132
- }
133
- },
134
- info(msg, ...args) {
135
- if (shouldLog("info")) {
136
- const text = formatArgs(msg, args);
137
- if (logTransport) {
138
- logTransport("info", text);
139
- return;
140
- }
141
- logHook?.("stdout", text, currentConversationId);
142
- console.log(chalk.blue(`[${prefix()}]`), msg, ...args);
143
- }
144
- },
145
- success(msg, ...args) {
146
- if (shouldLog("info")) {
147
- const text = formatArgs(msg, args);
148
- if (logTransport) {
149
- logTransport("success", text);
150
- return;
151
- }
152
- logHook?.("stdout", `\u2713 ${text}`, currentConversationId);
153
- console.log(chalk.green(`[${prefix()}] \u2713`), msg, ...args);
154
- }
155
- },
156
- warn(msg, ...args) {
157
- if (shouldLog("warn")) {
158
- const text = formatArgs(msg, args);
159
- if (logTransport) {
160
- logTransport("warn", text);
161
- return;
162
- }
163
- logHook?.("stderr", `[WARN] ${text}`, currentConversationId);
164
- console.log(chalk.yellow(`[${prefix()}] WARN`), msg, ...args);
165
- }
166
- },
167
- error(msg, ...args) {
168
- if (shouldLog("error")) {
169
- const text = formatArgs(msg, args);
170
- if (logTransport) {
171
- logTransport("error", text);
172
- return;
173
- }
174
- logHook?.("stderr", `[ERROR] ${text}`, currentConversationId);
175
- console.error(chalk.red(`[${prefix()}] ERROR`), msg, ...args);
176
- }
177
- },
178
- agent(msg) {
179
- if (logTransport) {
180
- logTransport("agent", msg);
181
- return;
182
- }
183
- logHook?.("stdout", `\u25B8 ${msg}`, currentConversationId);
184
- console.log(chalk.cyan(" \u25B8"), msg);
185
- },
186
- tool(name, msg) {
187
- if (logTransport) {
188
- logTransport("tool", msg, name);
189
- return;
190
- }
191
- logHook?.("stdout", `\u26A1 ${name}: ${msg}`, currentConversationId);
192
- console.log(chalk.magenta(` \u26A1 ${name}:`), msg);
193
- },
194
- result(msg) {
195
- if (logTransport) {
196
- logTransport("result", msg);
197
- return;
198
- }
199
- logHook?.("stdout", `\u2190 ${msg}`, currentConversationId);
200
- console.log(chalk.green(" \u2190"), msg);
201
- }
202
- };
203
- function formatArgs(msg, args) {
204
- if (args.length === 0) return msg;
205
- return `${msg} ${args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ")}`;
206
- }
207
-
208
63
  // src/utils/schemas.ts
209
64
  import { z } from "zod";
210
65
  function safeParse(schema, data) {
@@ -321,40 +176,7 @@ var SelfAnalysisResultSchema = z.object({
321
176
  summary: z.string()
322
177
  });
323
178
 
324
- // src/utils/constants.ts
325
- var MAX_RESPONSE_CONTENT_LENGTH = 5e4;
326
- var MAX_TOOL_RESULT_LENGTH = 1e4;
327
- var MAX_SKILL_RECORD_RESULT_LENGTH = 300;
328
- var MAX_TOOL_INPUT_LOG_LENGTH = 200;
329
- var MAX_JOB_SUMMARY_LENGTH = 1e4;
330
- var MAX_HISTORY_RESPONSE_LENGTH = 1500;
331
- var MAX_HISTORY_ENTRIES = 10;
332
- var SKILL_DESCRIPTION_BUDGET_CHARS = 16e3;
333
- var SHELL_TIMEOUT_MS = 3e4;
334
- var SHELL_MAX_OUTPUT = 5e4;
335
- var CDP_COMMAND_TIMEOUT_MS = 15e3;
336
- var WS_CONNECT_TIMEOUT_MS = 5e3;
337
- var SCHEDULER_INTERVAL_MS = 3e4;
338
- var FRAME_CONTEXTS_MAX_SIZE = 500;
339
- var MAX_FILE_SEARCH_RESULTS = 50;
340
- var MAX_CONTENT_SEARCH_FILES = 200;
341
- var MAX_CONTENT_SEARCH_RESULTS = 30;
342
- var MEMORY_DEDUP_SIMILARITY_THRESHOLD = 0.75;
343
- var MEMORY_COMPRESSION_THRESHOLD = 50;
344
- var MEMORY_COMPRESSION_TARGET = 30;
345
- var SELF_ANALYSIS_MAX_SESSION_LOGS = 200;
346
- var SELF_ANALYSIS_MAX_MESSAGE_EVENTS = 300;
347
- var SELF_ANALYSIS_MAX_CONVERSATION_MESSAGES = 10;
348
- var SELF_ANALYSIS_LOG_CONTEXT_CHARS = 2e4;
349
- var SELF_ANALYSIS_EVENT_CONTEXT_CHARS = 2e4;
350
- var SELF_ANALYSIS_TIMEOUT_MS = 18e4;
351
- var EDSGER_PRODUCT_SLUG = "assistme";
352
- var HEARTBEAT_INTERVAL_MS = 30 * 6e4;
353
- var HEARTBEAT_MAX_BUDGET_USD = 0.25;
354
- var HEARTBEAT_LOG_MAX_ENTRIES = 100;
355
- var MAX_COMPLETE_TASK_RETRIES = 2;
356
-
357
- // src/agent/job-runner.ts
179
+ // src/agent/scheduling/job-runner.ts
358
180
  var JobRunner = class {
359
181
  /**
360
182
  * Load a job and its linked skills from the database.
@@ -368,7 +190,7 @@ var JobRunner = class {
368
190
  if (!data || !Array.isArray(data) || data.length === 0) {
369
191
  return null;
370
192
  }
371
- const rows = data.map((row) => safeParse(JobRowSchema, row)).filter(Boolean);
193
+ const rows = data.map((row) => safeParse(JobRowSchema, row)).filter((r) => r != null);
372
194
  if (rows.length === 0) return null;
373
195
  const first = rows[0];
374
196
  return {
@@ -377,7 +199,7 @@ var JobRunner = class {
377
199
  jobDescription: first.job_description,
378
200
  jobPrompt: first.job_prompt ?? null,
379
201
  skills: rows.filter((row) => row.skill_id).map((row) => ({
380
- skillId: row.skill_id,
202
+ skillId: row.skill_id ?? "",
381
203
  skillName: row.skill_name || "",
382
204
  skillDescription: row.skill_description,
383
205
  skillEmoji: row.skill_emoji,
@@ -395,7 +217,7 @@ var JobRunner = class {
395
217
  async listJobs() {
396
218
  try {
397
219
  const data = await callMcpHandler("job.list");
398
- return (data || []).map((row) => safeParse(JobListRowSchema, row)).filter(Boolean).map((row) => ({
220
+ return (data || []).map((row) => safeParse(JobListRowSchema, row)).filter((r) => r != null).map((row) => ({
399
221
  id: row.id,
400
222
  name: row.name,
401
223
  description: row.description,
@@ -433,7 +255,7 @@ var JobRunner = class {
433
255
  await callMcpHandler("job.complete_run", {
434
256
  run_id: runId,
435
257
  status,
436
- summary: summary?.slice(0, MAX_JOB_SUMMARY_LENGTH) || null
258
+ summary: summary || null
437
259
  });
438
260
  }
439
261
  /**
@@ -445,7 +267,7 @@ var JobRunner = class {
445
267
  job_name: jobName || null,
446
268
  limit
447
269
  });
448
- return (data || []).map((row) => safeParse(JobRunRowSchema, row)).filter(Boolean).map((row) => ({
270
+ return (data || []).map((row) => safeParse(JobRunRowSchema, row)).filter((r) => r != null).map((row) => ({
449
271
  runId: row.run_id,
450
272
  jobName: row.job_name,
451
273
  status: row.status,
@@ -545,6 +367,8 @@ var JobRunner = class {
545
367
  }
546
368
  prompt += `
547
369
  ### How to Work
370
+ `;
371
+ prompt += `- **IMPORTANT \u2014 do NOT call \`job_run\` again**: You are already executing this job. Calling \`job_run\` would create an infinite loop. Use \`skill_invoke\` to load individual skills instead.
548
372
  `;
549
373
  prompt += `- **Plan first**: Before jumping into actions, briefly plan your approach \u2014 which sites/tools to use, in what order, and how to verify results.
550
374
  `;
@@ -578,43 +402,6 @@ export {
578
402
  readAuthStore,
579
403
  writeAuthStore,
580
404
  callMcpHandler,
581
- setLogLevel,
582
- setLogHook,
583
- setLogTransport,
584
- setCorrelationId,
585
- setLogConversationId,
586
- newCorrelationId,
587
- log,
588
- MAX_RESPONSE_CONTENT_LENGTH,
589
- MAX_TOOL_RESULT_LENGTH,
590
- MAX_SKILL_RECORD_RESULT_LENGTH,
591
- MAX_TOOL_INPUT_LOG_LENGTH,
592
- MAX_HISTORY_RESPONSE_LENGTH,
593
- MAX_HISTORY_ENTRIES,
594
- SKILL_DESCRIPTION_BUDGET_CHARS,
595
- SHELL_TIMEOUT_MS,
596
- SHELL_MAX_OUTPUT,
597
- CDP_COMMAND_TIMEOUT_MS,
598
- WS_CONNECT_TIMEOUT_MS,
599
- SCHEDULER_INTERVAL_MS,
600
- FRAME_CONTEXTS_MAX_SIZE,
601
- MAX_FILE_SEARCH_RESULTS,
602
- MAX_CONTENT_SEARCH_FILES,
603
- MAX_CONTENT_SEARCH_RESULTS,
604
- MEMORY_DEDUP_SIMILARITY_THRESHOLD,
605
- MEMORY_COMPRESSION_THRESHOLD,
606
- MEMORY_COMPRESSION_TARGET,
607
- SELF_ANALYSIS_MAX_SESSION_LOGS,
608
- SELF_ANALYSIS_MAX_MESSAGE_EVENTS,
609
- SELF_ANALYSIS_MAX_CONVERSATION_MESSAGES,
610
- SELF_ANALYSIS_LOG_CONTEXT_CHARS,
611
- SELF_ANALYSIS_EVENT_CONTEXT_CHARS,
612
- SELF_ANALYSIS_TIMEOUT_MS,
613
- EDSGER_PRODUCT_SLUG,
614
- HEARTBEAT_INTERVAL_MS,
615
- HEARTBEAT_MAX_BUDGET_USD,
616
- HEARTBEAT_LOG_MAX_ENTRIES,
617
- MAX_COMPLETE_TASK_RETRIES,
618
405
  safeParse,
619
406
  SkillRowSchema,
620
407
  SkillCreateResultSchema,