@agentxm/workspace-configuration 0.28.8 → 0.28.10

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.
@@ -57,11 +57,24 @@ const isKnownAgentId = (id) => Object.hasOwn(AGENTS, id);
57
57
  const isKnownConfigurableAgentId = (id) => isKnownAgentId(id) && isConfigurableAgentId(id);
58
58
  const isAutoSelectableAgent = (agent) => agent.id === "universal" || CONFIGURABLE_AGENTS_BY_ID[agent.id].lifecycle.state !== "retired";
59
59
  const allAgentDescriptors = (preferredIds) => {
60
- const preferred = preferredIds.flatMap((id) => isKnownConfigurableAgentId(id) ? [AGENTS[id]] : []);
60
+ // Preference sources overlap by design — configuration, detection, and the
61
+ // catalog suggestion name the same agent — so the offer is ordered by first
62
+ // mention and carries each agent once.
63
+ const preferred = [...new Set(preferredIds)].flatMap((id) => isKnownConfigurableAgentId(id) ? [AGENTS[id]] : []);
61
64
  const preferredSet = new Set(preferred.map((agent) => agent.id));
62
65
  const remaining = Object.values(AGENTS).filter((agent) => isConfigurableAgentId(agent.id) && !preferredSet.has(agent.id));
63
66
  return [...preferred, ...remaining];
64
67
  };
68
+ /**
69
+ * Configured membership as a set, in selection order.
70
+ *
71
+ * An explicit request and a selection each reach setup as a sequence, so
72
+ * either can name one agent more than once; the settings contract records
73
+ * each configured agent once.
74
+ */
75
+ const configuredAgentIds = (selectedAgents) => [
76
+ ...new Set(selectedAgents.flatMap((agent) => (isConfigurableAgentId(agent.id) ? [agent.id] : []))),
77
+ ];
65
78
  const setupAgentCandidates = (args) => {
66
79
  const selectedIds = new Set(args.selectedAgents.map((agent) => agent.id));
67
80
  const suggestedIds = new Set(args.suggestedIds);
@@ -463,7 +476,7 @@ const configureProjectWorkspace = (args) => Effect.gen(function* () {
463
476
  existingSettings: args.existingSettings,
464
477
  workspaceRoot,
465
478
  });
466
- const agentIds = selectedAgents.flatMap((agent) => isConfigurableAgentId(agent.id) ? [agent.id] : []);
479
+ const agentIds = configuredAgentIds(selectedAgents);
467
480
  const settings = {
468
481
  ...args.existingSettings,
469
482
  agents: agentIds,
@@ -558,7 +571,7 @@ const initializeUserWorkspace = (workspaceRoot, options) => Effect.gen(function*
558
571
  workspaceRoot: options.projectRoot,
559
572
  });
560
573
  const selectedAgents = selection.selectedAgents;
561
- const agentIds = selectedAgents.flatMap((agent) => isConfigurableAgentId(agent.id) ? [agent.id] : []);
574
+ const agentIds = configuredAgentIds(selectedAgents);
562
575
  const settings = {
563
576
  agents: agentIds,
564
577
  skills: DEFAULT_SETUP_SKILLS,
package/package.json CHANGED
@@ -4,12 +4,12 @@
4
4
  "url": "https://github.com/agentxm/axm/issues"
5
5
  },
6
6
  "dependencies": {
7
- "@agentxm/agent-integration": "^0.28.8",
8
- "@agentxm/extension-model": "^0.28.8",
9
- "@agentxm/extension-sources": "^0.28.8",
10
- "@agentxm/extension-workspace": "^0.28.8",
11
- "@agentxm/workspace-operations": "^0.28.8",
12
- "@agentxm/workspace-state": "^0.28.8",
7
+ "@agentxm/agent-integration": "^0.28.10",
8
+ "@agentxm/extension-model": "^0.28.10",
9
+ "@agentxm/extension-sources": "^0.28.10",
10
+ "@agentxm/extension-workspace": "^0.28.10",
11
+ "@agentxm/workspace-operations": "^0.28.10",
12
+ "@agentxm/workspace-state": "^0.28.10",
13
13
  "effect": "4.0.0-rc.112"
14
14
  },
15
15
  "description": "AXM workspace-configuration feature: setup, configured-agent membership, instruction management, and inline workspace capabilities for the axm CLI. Unstable and unsupported — use the axm.sh CLI.",
@@ -56,5 +56,5 @@
56
56
  },
57
57
  "sideEffects": false,
58
58
  "type": "module",
59
- "version": "0.28.8"
59
+ "version": "0.28.10"
60
60
  }