nomoreide 0.1.36 → 0.1.37

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.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Read/write a single setting in a project-scoped `.claude/settings.json`.
3
+ * Keep this narrow — we only touch the keys the UI exposes, and preserve the
4
+ * rest of the file verbatim so users who hand-edit it don't lose data.
5
+ */
6
+ export interface ClaudeAttribution {
7
+ /** Trailer Claude Code appends to commits (empty = no trailer). */
8
+ commit?: string;
9
+ /** Trailer Claude Code appends to PR bodies (empty = no trailer). */
10
+ pr?: string;
11
+ }
12
+ /**
13
+ * Claude Code defaults to including the co-author trailer, so a missing file
14
+ * or missing `attribution` key reads as "on". Only an explicit
15
+ * `{ commit: "", pr: "" }` (or both blank) counts as opted-out.
16
+ */
17
+ export declare function getCoAuthorWithClaude(cwd: string): Promise<boolean>;
18
+ export declare function setCoAuthorWithClaude(cwd: string, enabled: boolean): Promise<boolean>;
@@ -0,0 +1,47 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ function settingsPath(cwd) {
4
+ return join(cwd, ".claude", "settings.json");
5
+ }
6
+ async function readSettings(cwd) {
7
+ try {
8
+ const raw = await readFile(settingsPath(cwd), "utf8");
9
+ const parsed = JSON.parse(raw);
10
+ return parsed && typeof parsed === "object" ? parsed : {};
11
+ }
12
+ catch (error) {
13
+ if (error.code === "ENOENT")
14
+ return {};
15
+ throw error;
16
+ }
17
+ }
18
+ async function writeSettings(cwd, settings) {
19
+ const path = settingsPath(cwd);
20
+ await mkdir(dirname(path), { recursive: true });
21
+ await writeFile(path, `${JSON.stringify(settings, null, 2)}\n`);
22
+ }
23
+ /**
24
+ * Claude Code defaults to including the co-author trailer, so a missing file
25
+ * or missing `attribution` key reads as "on". Only an explicit
26
+ * `{ commit: "", pr: "" }` (or both blank) counts as opted-out.
27
+ */
28
+ export async function getCoAuthorWithClaude(cwd) {
29
+ const { attribution } = await readSettings(cwd);
30
+ if (!attribution)
31
+ return true;
32
+ const commit = attribution.commit ?? "";
33
+ const pr = attribution.pr ?? "";
34
+ return !(commit === "" && pr === "");
35
+ }
36
+ export async function setCoAuthorWithClaude(cwd, enabled) {
37
+ const settings = await readSettings(cwd);
38
+ if (enabled) {
39
+ delete settings.attribution;
40
+ }
41
+ else {
42
+ settings.attribution = { commit: "", pr: "" };
43
+ }
44
+ await writeSettings(cwd, settings);
45
+ return enabled;
46
+ }
47
+ //# sourceMappingURL=claude-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../../src/core/claude-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoB1C,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,QAAuB;IAC/D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAChC,OAAO,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC,WAAW,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -6,7 +6,7 @@ export interface AgentMemoryFile {
6
6
  }
7
7
  export interface AgentSkill {
8
8
  name: string;
9
- scope: "user" | "project" | "plugin";
9
+ scope: "user" | "project" | "plugin" | "system";
10
10
  path: string;
11
11
  description?: string;
12
12
  }
@@ -14,6 +14,7 @@ export interface AgentMcpServer {
14
14
  name: string;
15
15
  scope: "user" | "project";
16
16
  command?: string;
17
+ args?: string[];
17
18
  type?: string;
18
19
  url?: string;
19
20
  }
@@ -24,15 +25,12 @@ export interface AgentProjectEntry {
24
25
  lastSessionModified?: string;
25
26
  mcpServerCount: number;
26
27
  }
27
- export interface AgentInfo {
28
- detected: {
29
- name: "claude-code" | "codex" | "gemini" | "unknown";
30
- label: string;
31
- signals: string[];
32
- parentProcess?: string;
33
- };
28
+ export interface AgentProfile {
34
29
  project: {
35
30
  cwd: string;
31
+ instructionFilePath?: string;
32
+ instructionFileName?: string;
33
+ instructionFilePreview?: string;
36
34
  claudeMdPath?: string;
37
35
  claudeMdPreview?: string;
38
36
  memoryDir?: string;
@@ -42,5 +40,17 @@ export interface AgentInfo {
42
40
  mcpServers: AgentMcpServer[];
43
41
  projects: AgentProjectEntry[];
44
42
  }
43
+ export interface AgentInfo extends AgentProfile {
44
+ detected: {
45
+ name: "claude-code" | "codex" | "gemini" | "unknown";
46
+ label: string;
47
+ signals: string[];
48
+ parentProcess?: string;
49
+ };
50
+ agents: {
51
+ "claude-code": AgentProfile;
52
+ codex: AgentProfile;
53
+ };
54
+ }
45
55
  export declare function buildAgentInfo(cwd: string): Promise<AgentInfo>;
46
56
  export declare function detectAgent(): Promise<AgentInfo["detected"]>;
@@ -1,4 +1,4 @@
1
- import { readdir, readFile, stat } from "node:fs/promises";
1
+ import { open, readdir, readFile, stat } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { basename, join, resolve } from "node:path";
4
4
  import { execFile } from "node:child_process";
@@ -8,14 +8,37 @@ const PREVIEW_BYTES = 1200;
8
8
  export async function buildAgentInfo(cwd) {
9
9
  const detected = await detectAgent();
10
10
  const home = homedir();
11
- const [project, skills, claudeJson] = await Promise.all([
12
- collectProjectMemory(cwd, home),
13
- collectSkills(home, cwd),
11
+ const codexHome = process.env.CODEX_HOME || join(home, ".codex");
12
+ const [claudeProject, claudeSkills, claudeJson, codexProject, codexSkills, codexConfig, codexProjects,] = await Promise.all([
13
+ collectClaudeProjectMemory(cwd, home),
14
+ collectClaudeSkills(home, cwd),
14
15
  readClaudeJson(home),
16
+ collectCodexProjectMemory(cwd, codexHome),
17
+ collectCodexSkills(codexHome, cwd),
18
+ readCodexConfig(codexHome),
19
+ collectCodexProjects(codexHome, cwd),
15
20
  ]);
16
- const mcpServers = collectMcpServers(claudeJson, cwd);
17
- const projects = collectProjects(claudeJson, cwd);
18
- return { detected, project, skills, mcpServers, projects };
21
+ const claudeProfile = {
22
+ project: claudeProject,
23
+ skills: claudeSkills,
24
+ mcpServers: collectClaudeMcpServers(claudeJson, cwd),
25
+ projects: collectClaudeProjects(claudeJson, cwd),
26
+ };
27
+ const codexProfile = {
28
+ project: codexProject,
29
+ skills: codexSkills,
30
+ mcpServers: collectCodexMcpServers(codexConfig),
31
+ projects: mergeCodexProjects(codexConfig, codexProjects, cwd),
32
+ };
33
+ const activeProfile = detected.name === "codex" ? codexProfile : claudeProfile;
34
+ return {
35
+ detected,
36
+ ...activeProfile,
37
+ agents: {
38
+ "claude-code": claudeProfile,
39
+ codex: codexProfile,
40
+ },
41
+ };
19
42
  }
20
43
  export async function detectAgent() {
21
44
  const env = process.env;
@@ -83,7 +106,7 @@ function projectSlug(cwd) {
83
106
  // Claude Code encodes project dirs by replacing path separators with "-"
84
107
  return cwd.replace(/[/\\]/g, "-").replace(/\s+/g, "-");
85
108
  }
86
- async function collectProjectMemory(cwd, home) {
109
+ async function collectClaudeProjectMemory(cwd, home) {
87
110
  const result = {
88
111
  cwd,
89
112
  memoryFiles: [],
@@ -93,6 +116,9 @@ async function collectProjectMemory(cwd, home) {
93
116
  if (claudeMdContent !== undefined) {
94
117
  result.claudeMdPath = claudeMdPath;
95
118
  result.claudeMdPreview = claudeMdContent;
119
+ result.instructionFilePath = claudeMdPath;
120
+ result.instructionFileName = "CLAUDE.md";
121
+ result.instructionFilePreview = claudeMdContent;
96
122
  }
97
123
  const slug = projectSlug(cwd);
98
124
  const memoryDir = join(home, ".claude", "projects", slug, "memory");
@@ -130,7 +156,51 @@ async function collectProjectMemory(cwd, home) {
130
156
  }
131
157
  return result;
132
158
  }
133
- async function collectSkills(home, cwd) {
159
+ async function collectCodexProjectMemory(cwd, codexHome) {
160
+ const result = {
161
+ cwd,
162
+ memoryFiles: [],
163
+ };
164
+ const agentsMdPath = resolve(cwd, "AGENTS.md");
165
+ const agentsMdContent = await safeReadPreview(agentsMdPath);
166
+ if (agentsMdContent !== undefined) {
167
+ result.instructionFilePath = agentsMdPath;
168
+ result.instructionFileName = "AGENTS.md";
169
+ result.instructionFilePreview = agentsMdContent;
170
+ }
171
+ await readMemoryFiles(join(codexHome, "memories"), result);
172
+ await readMemoryFiles(join(cwd, ".codex", "memories"), result);
173
+ result.memoryFiles.sort((a, b) => a.name.localeCompare(b.name));
174
+ return result;
175
+ }
176
+ async function readMemoryFiles(dir, out) {
177
+ try {
178
+ const entries = await readdir(dir);
179
+ out.memoryDir ??= dir;
180
+ const files = await Promise.all(entries
181
+ .filter((name) => name.endsWith(".md"))
182
+ .map(async (name) => {
183
+ const filePath = join(dir, name);
184
+ const [s, preview] = await Promise.all([
185
+ stat(filePath).catch(() => null),
186
+ safeReadPreview(filePath),
187
+ ]);
188
+ if (!s || preview === undefined)
189
+ return null;
190
+ return {
191
+ path: filePath,
192
+ name,
193
+ size: s.size,
194
+ preview,
195
+ };
196
+ }));
197
+ out.memoryFiles.push(...files.filter((file) => file !== null));
198
+ }
199
+ catch {
200
+ // memory dir doesn't exist for this agent/project
201
+ }
202
+ }
203
+ async function collectClaudeSkills(home, cwd) {
134
204
  const skills = [];
135
205
  const userSkills = join(home, ".claude", "skills");
136
206
  const projectSkills = join(cwd, ".claude", "skills");
@@ -143,12 +213,28 @@ async function collectSkills(home, cwd) {
143
213
  skills.sort((a, b) => a.name.localeCompare(b.name));
144
214
  return skills;
145
215
  }
146
- async function readSkillsDir(dir, scope, out) {
216
+ async function collectCodexSkills(codexHome, cwd) {
217
+ const skills = [];
218
+ await Promise.all([
219
+ readSkillsDir(join(codexHome, "skills"), "user", skills, true),
220
+ readSkillsDir(join(codexHome, "skills", ".system"), "system", skills),
221
+ readSkillsDir(join(cwd, ".codex", "skills"), "project", skills),
222
+ ]);
223
+ skills.sort((a, b) => {
224
+ if (a.scope !== b.scope)
225
+ return a.scope.localeCompare(b.scope);
226
+ return a.name.localeCompare(b.name);
227
+ });
228
+ return skills;
229
+ }
230
+ async function readSkillsDir(dir, scope, out, skipDotDirs = false) {
147
231
  try {
148
232
  const entries = await readdir(dir, { withFileTypes: true });
149
233
  for (const entry of entries) {
150
234
  if (!entry.isDirectory())
151
235
  continue;
236
+ if (skipDotDirs && entry.name.startsWith("."))
237
+ continue;
152
238
  const skillDir = join(dir, entry.name);
153
239
  const description = await readSkillDescription(skillDir);
154
240
  out.push({ name: entry.name, scope, path: skillDir, description });
@@ -208,7 +294,7 @@ async function readClaudeJson(home) {
208
294
  return null;
209
295
  }
210
296
  }
211
- function collectMcpServers(claudeJson, cwd) {
297
+ function collectClaudeMcpServers(claudeJson, cwd) {
212
298
  if (!claudeJson)
213
299
  return [];
214
300
  const results = [];
@@ -228,6 +314,9 @@ function mcpEntry(name, scope, raw) {
228
314
  const value = raw;
229
315
  if (typeof value.command === "string")
230
316
  entry.command = value.command;
317
+ if (Array.isArray(value.args)) {
318
+ entry.args = value.args.filter((item) => typeof item === "string");
319
+ }
231
320
  if (typeof value.type === "string")
232
321
  entry.type = value.type;
233
322
  if (typeof value.url === "string")
@@ -235,7 +324,7 @@ function mcpEntry(name, scope, raw) {
235
324
  }
236
325
  return entry;
237
326
  }
238
- function collectProjects(claudeJson, cwd) {
327
+ function collectClaudeProjects(claudeJson, cwd) {
239
328
  if (!claudeJson?.projects)
240
329
  return [];
241
330
  const entries = Object.entries(claudeJson.projects).map(([path, value]) => ({
@@ -258,6 +347,214 @@ function collectProjects(claudeJson, cwd) {
258
347
  });
259
348
  return entries.slice(0, 25);
260
349
  }
350
+ async function readCodexConfig(codexHome) {
351
+ const result = { mcpServers: {}, projects: {} };
352
+ try {
353
+ const raw = await readFile(join(codexHome, "config.toml"), "utf8");
354
+ const sections = parseTomlSections(raw);
355
+ for (const [section, values] of Object.entries(sections)) {
356
+ const parts = splitTomlSection(section);
357
+ if (parts[0] === "mcp_servers" && parts.length === 2) {
358
+ result.mcpServers[parts[1]] = values;
359
+ }
360
+ else if (parts[0] === "projects" && parts.length === 2) {
361
+ result.projects[parts[1]] = values;
362
+ }
363
+ }
364
+ }
365
+ catch {
366
+ // Codex config is optional.
367
+ }
368
+ return result;
369
+ }
370
+ function collectCodexMcpServers(config) {
371
+ return Object.entries(config.mcpServers)
372
+ .map(([name, raw]) => mcpEntry(name, "user", raw))
373
+ .sort((a, b) => a.name.localeCompare(b.name));
374
+ }
375
+ async function collectCodexProjects(codexHome, cwd) {
376
+ const files = [];
377
+ await collectJsonlFiles(join(codexHome, "sessions"), files);
378
+ const byPath = new Map();
379
+ for (const file of files) {
380
+ const meta = await readCodexSessionMeta(file);
381
+ if (!meta?.cwd)
382
+ continue;
383
+ const existing = byPath.get(meta.cwd);
384
+ const nextTime = meta.timestamp ? Date.parse(meta.timestamp) : 0;
385
+ const existingTime = existing?.lastSessionModified
386
+ ? Date.parse(existing.lastSessionModified)
387
+ : 0;
388
+ if (!existing || nextTime >= existingTime) {
389
+ byPath.set(meta.cwd, {
390
+ path: meta.cwd,
391
+ current: meta.cwd === cwd,
392
+ lastSessionModified: meta.timestamp,
393
+ mcpServerCount: 0,
394
+ });
395
+ }
396
+ }
397
+ return Array.from(byPath.values());
398
+ }
399
+ function mergeCodexProjects(config, sessionProjects, cwd) {
400
+ const byPath = new Map();
401
+ for (const path of Object.keys(config.projects)) {
402
+ byPath.set(path, {
403
+ path,
404
+ current: path === cwd,
405
+ mcpServerCount: 0,
406
+ });
407
+ }
408
+ for (const project of sessionProjects) {
409
+ byPath.set(project.path, {
410
+ ...byPath.get(project.path),
411
+ ...project,
412
+ current: project.path === cwd,
413
+ });
414
+ }
415
+ const entries = Array.from(byPath.values());
416
+ entries.sort((a, b) => {
417
+ if (a.current && !b.current)
418
+ return -1;
419
+ if (!a.current && b.current)
420
+ return 1;
421
+ const aTime = a.lastSessionModified ? Date.parse(a.lastSessionModified) : 0;
422
+ const bTime = b.lastSessionModified ? Date.parse(b.lastSessionModified) : 0;
423
+ if (aTime !== bTime)
424
+ return bTime - aTime;
425
+ return basename(a.path).localeCompare(basename(b.path));
426
+ });
427
+ return entries.slice(0, 25);
428
+ }
429
+ async function collectJsonlFiles(dir, out) {
430
+ try {
431
+ const entries = await readdir(dir, { withFileTypes: true });
432
+ await Promise.all(entries.map(async (entry) => {
433
+ const path = join(dir, entry.name);
434
+ if (entry.isDirectory()) {
435
+ await collectJsonlFiles(path, out);
436
+ }
437
+ else if (entry.isFile() && entry.name.endsWith(".jsonl")) {
438
+ out.push(path);
439
+ }
440
+ }));
441
+ }
442
+ catch {
443
+ // sessions are optional
444
+ }
445
+ }
446
+ async function readCodexSessionMeta(path) {
447
+ const firstLine = await readFirstLine(path);
448
+ if (!firstLine)
449
+ return undefined;
450
+ try {
451
+ const event = JSON.parse(firstLine);
452
+ if (event.type !== "session_meta")
453
+ return undefined;
454
+ return {
455
+ cwd: event.payload?.cwd,
456
+ timestamp: event.payload?.timestamp ?? event.timestamp,
457
+ };
458
+ }
459
+ catch {
460
+ return undefined;
461
+ }
462
+ }
463
+ async function readFirstLine(path) {
464
+ let handle;
465
+ try {
466
+ handle = await open(path, "r");
467
+ const buffer = Buffer.alloc(64 * 1024);
468
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
469
+ if (!bytesRead)
470
+ return undefined;
471
+ return buffer.toString("utf8", 0, bytesRead).split(/\r?\n/, 1)[0];
472
+ }
473
+ catch {
474
+ return undefined;
475
+ }
476
+ finally {
477
+ await handle?.close();
478
+ }
479
+ }
480
+ function parseTomlSections(raw) {
481
+ const sections = {};
482
+ let current;
483
+ for (const line of raw.split(/\r?\n/)) {
484
+ const trimmed = line.trim();
485
+ if (!trimmed || trimmed.startsWith("#"))
486
+ continue;
487
+ const sectionMatch = trimmed.match(/^\[([^\]]+)]$/);
488
+ if (sectionMatch) {
489
+ current = sectionMatch[1];
490
+ sections[current] ??= {};
491
+ continue;
492
+ }
493
+ if (!current)
494
+ continue;
495
+ const valueMatch = trimmed.match(/^("[^"]+"|[\w.-]+)\s*=\s*(.+)$/);
496
+ if (!valueMatch)
497
+ continue;
498
+ sections[current][unquoteToml(valueMatch[1])] = parseTomlValue(valueMatch[2]);
499
+ }
500
+ return sections;
501
+ }
502
+ function splitTomlSection(section) {
503
+ const parts = [];
504
+ let current = "";
505
+ let quoted = false;
506
+ for (let index = 0; index < section.length; index += 1) {
507
+ const char = section[index];
508
+ if (char === '"') {
509
+ quoted = !quoted;
510
+ current += char;
511
+ }
512
+ else if (char === "." && !quoted) {
513
+ parts.push(unquoteToml(current));
514
+ current = "";
515
+ }
516
+ else {
517
+ current += char;
518
+ }
519
+ }
520
+ if (current)
521
+ parts.push(unquoteToml(current));
522
+ return parts;
523
+ }
524
+ function parseTomlValue(value) {
525
+ const trimmed = stripTomlComment(value.trim());
526
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
527
+ const body = trimmed.slice(1, -1).trim();
528
+ if (!body)
529
+ return [];
530
+ return body
531
+ .split(",")
532
+ .map((item) => parseTomlValue(item.trim()))
533
+ .filter((item) => typeof item === "string");
534
+ }
535
+ if (trimmed === "true")
536
+ return true;
537
+ if (trimmed === "false")
538
+ return false;
539
+ return unquoteToml(trimmed);
540
+ }
541
+ function stripTomlComment(value) {
542
+ let quoted = false;
543
+ for (let index = 0; index < value.length; index += 1) {
544
+ const char = value[index];
545
+ if (char === '"')
546
+ quoted = !quoted;
547
+ if (char === "#" && !quoted)
548
+ return value.slice(0, index).trim();
549
+ }
550
+ return value;
551
+ }
552
+ function unquoteToml(value) {
553
+ const trimmed = value.trim();
554
+ if (trimmed.startsWith('"') && trimmed.endsWith('"'))
555
+ return trimmed.slice(1, -1);
556
+ return trimmed;
557
+ }
261
558
  async function safeReadPreview(path, bytes = PREVIEW_BYTES) {
262
559
  try {
263
560
  const content = await readFile(path, "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"agent-info.js","sourceRoot":"","sources":["../../src/web/agent-info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-info.js","sourceRoot":"","sources":["../../src/web/agent-info.ts"],"names":[],"mappings":"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"}