@base44-preview/cli 0.0.31-pr.227.5bb703f → 0.0.31-pr.228.ffa357a

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/dist/cli/index.js CHANGED
@@ -160583,15 +160583,16 @@ async function fetchAgents() {
160583
160583
  }
160584
160584
  // src/core/resources/agent/config.ts
160585
160585
  import { join as join3 } from "node:path";
160586
+ import { isDeepStrictEqual } from "node:util";
160586
160587
  async function readAgentFile(agentPath) {
160587
- const parsed = await readJsonFile(agentPath);
160588
- const result = AgentConfigSchema.safeParse(parsed);
160588
+ const raw2 = await readJsonFile(agentPath);
160589
+ const result = AgentConfigSchema.safeParse(raw2);
160589
160590
  if (!result.success) {
160590
160591
  throw new SchemaValidationError("Invalid agent file", result.error, agentPath);
160591
160592
  }
160592
- return result.data;
160593
+ return { data: result.data, raw: raw2 };
160593
160594
  }
160594
- async function readAllAgents(agentsDir) {
160595
+ async function readAgentFiles(agentsDir) {
160595
160596
  if (!await pathExists(agentsDir)) {
160596
160597
  return [];
160597
160598
  }
@@ -160599,35 +160600,49 @@ async function readAllAgents(agentsDir) {
160599
160600
  cwd: agentsDir,
160600
160601
  absolute: true
160601
160602
  });
160602
- const agents = await Promise.all(files.map((filePath) => readAgentFile(filePath)));
160603
+ return await Promise.all(files.map(async (filePath) => {
160604
+ const { data, raw: raw2 } = await readAgentFile(filePath);
160605
+ return { data, raw: raw2, filePath };
160606
+ }));
160607
+ }
160608
+ async function readAllAgents(agentsDir) {
160609
+ const entries = await readAgentFiles(agentsDir);
160603
160610
  const names = new Set;
160604
- for (const agent of agents) {
160605
- if (names.has(agent.name)) {
160606
- throw new Error(`Duplicate agent name "${agent.name}"`);
160611
+ for (const { data } of entries) {
160612
+ if (names.has(data.name)) {
160613
+ throw new Error(`Duplicate agent name "${data.name}"`);
160607
160614
  }
160608
- names.add(agent.name);
160615
+ names.add(data.name);
160609
160616
  }
160610
- return agents;
160617
+ return entries.map((e2) => e2.data);
160611
160618
  }
160612
160619
  async function writeAgents(agentsDir, remoteAgents) {
160613
- const existingAgents = await readAllAgents(agentsDir);
160620
+ const entries = await readAgentFiles(agentsDir);
160621
+ const nameToEntry = new Map;
160622
+ for (const entry of entries) {
160623
+ if (nameToEntry.has(entry.data.name)) {
160624
+ throw new Error(`Duplicate agent name "${entry.data.name}"`);
160625
+ }
160626
+ nameToEntry.set(entry.data.name, entry);
160627
+ }
160614
160628
  const newNames = new Set(remoteAgents.map((a) => a.name));
160615
- const toDelete = existingAgents.filter((a) => !newNames.has(a.name));
160616
- for (const agent of toDelete) {
160617
- const files = await globby(`${agent.name}.${CONFIG_FILE_EXTENSION_GLOB}`, {
160618
- cwd: agentsDir,
160619
- absolute: true
160620
- });
160621
- for (const filePath of files) {
160622
- await deleteFile(filePath);
160629
+ const deleted = [];
160630
+ for (const [name2, entry] of nameToEntry) {
160631
+ if (!newNames.has(name2)) {
160632
+ await deleteFile(entry.filePath);
160633
+ deleted.push(name2);
160623
160634
  }
160624
160635
  }
160636
+ const written = [];
160625
160637
  for (const agent of remoteAgents) {
160626
- const filePath = join3(agentsDir, `${agent.name}.${CONFIG_FILE_EXTENSION}`);
160638
+ const existing = nameToEntry.get(agent.name);
160639
+ if (existing && isDeepStrictEqual(existing.raw, agent)) {
160640
+ continue;
160641
+ }
160642
+ const filePath = existing?.filePath ?? join3(agentsDir, `${agent.name}.${CONFIG_FILE_EXTENSION}`);
160627
160643
  await writeJsonFile(filePath, agent);
160644
+ written.push(agent.name);
160628
160645
  }
160629
- const written = remoteAgents.map((a) => a.name);
160630
- const deleted = toDelete.map((a) => a.name);
160631
160646
  return { written, deleted };
160632
160647
  }
160633
160648
  // src/core/resources/agent/resource.ts
@@ -168946,6 +168961,9 @@ async function pullAgentsAction() {
168946
168961
  if (deleted.length > 0) {
168947
168962
  M2.warn(`Deleted: ${deleted.join(", ")}`);
168948
168963
  }
168964
+ if (written.length === 0 && deleted.length === 0) {
168965
+ M2.info("All agents are already up to date");
168966
+ }
168949
168967
  return {
168950
168968
  outroMessage: `Pulled ${remoteAgents.total} agents to ${agentsDir}`
168951
168969
  };
@@ -174653,4 +174671,4 @@ export {
174653
174671
  CLIExitError
174654
174672
  };
174655
174673
 
174656
- //# debugId=7DB4F7ABF0AFAEA664756E2164756E21
174674
+ //# debugId=D51712CD0A4E94DA64756E2164756E21