@sulala/agent-os 0.1.32 → 0.1.33

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.js CHANGED
@@ -23739,21 +23739,25 @@ function buildSystemPrompt(agent, hasTools, skillDocContext, workspaceContext, d
23739
23739
  parts.push("Answer the user's task concisely.");
23740
23740
  const skillList = agent.skills?.length ? agent.skills.join(", ") : "none (built-in tools only)";
23741
23741
  parts.push(`Your skills: ${skillList}.`);
23742
- parts.push("If the user's task clearly requires a capability that only a skill can provide (e.g. post to Bluesky, send email, search the web, weather, run a specific integration) and that skill is NOT in your skills list above: reply with a single short message that you don't have that skill and they should install it from hub.sulala.ai (Dashboard \u2192 Skills \u2192 install from store) and add it to this agent in Edit agent. Do NOT attempt the task. Do NOT call any tools. Do NOT suggest workarounds. One sentence only.");
23742
+ parts.push("If a skill in your list above can fulfill the user's request, you MUST use it (via the exec tool or the skill's request tool as described in the skill documentation below). Do not claim you lack that capability.");
23743
+ parts.push("Only when no skill in your list can provide the requested capability: reply briefly that you don't have that skill and that they can install it from the addon store (Dashboard \u2192 Skills \u2192 install from store) and add it to this agent. Do not suggest installing when you already have a skill that can do it.");
23743
23744
  if (delegateableAgents?.length) {
23744
- parts.push(`You have the run_agent tool. When the user asks for something that another agent can do (e.g. post to Bluesky, search the web, send email), first tell the user in natural language that you are asking another agent to handle that part (for example: 'I\u2019ll ask our Social Media Agent to post that on Bluesky for you.' or 'I\u2019ll hand this off to our Research Agent to look that up.'). Then use run_agent with that agent's id and the task. After the other agent finishes, reply to the user with a short, friendly summary of what that agent did and the outcome (for example: 'The Social Media Agent has finished \u2014 your post "hi" is now live on Bluesky.').`);
23745
+ parts.push("You have the run_agent tool. When the user asks for something another agent can do, tell the user in natural language that you are delegating to another agent, then use run_agent with that agent's id and the task. After they finish, reply with a short, friendly summary of what was done and the outcome.");
23745
23746
  parts.push("Available agents to delegate to (use run_agent with agent_id and task): " + delegateableAgents.map((a) => `${a.id} (${a.name})`).join(", ") + ".");
23746
23747
  const memoryAgentIds = delegateableAgents.filter((a) => a.skills?.includes("memory")).map((a) => a.id);
23747
23748
  if (memoryAgentIds.length) {
23748
- parts.push(`Agents with long-term memory (use for remember/save requests): ${memoryAgentIds.join(", ")}. When the user asks to remember something, save a fact about themselves, or store information for later, use run_agent with one of these agents and a task like "Remember that [fact]" or "Save: [fact]". Do not say you cannot save\u2014delegate to an agent that has memory.`);
23749
+ parts.push(`Agents with long-term memory (use for remember/save requests): ${memoryAgentIds.join(", ")}. When the user asks to remember something or save a fact, use run_agent with one of these agents and a task like "Remember that [fact]" or "Save: [fact]". Do not say you cannot save\u2014delegate to an agent that has memory.`);
23749
23750
  }
23750
23751
  }
23751
23752
  if (hasTools) {
23752
23753
  parts.push("You have access to tools. Use them when helpful to answer the user.");
23753
- parts.push(`Your agent id is "${agent.id}". When a skill requires agent_id (e.g. memory_write), use this value in the request body.`);
23754
+ parts.push(`Your agent id is "${agent.id}". When a skill requires agent_id in the request body, use this value.`);
23754
23755
  parts.push("After using tools, always reply with a brief summary for the user; never end with only tool calls.");
23755
23756
  if (skillDocContext?.includes("_request")) {
23756
- parts.push("When the user asks for something a skill handles (e.g. list connections, send email, call an API), use that skill's request tool (e.g. skill_id_request) with the method, path, and body from the skill documentation below. Do not use echo, memory_search, or memory_write for skill-specific actions\u2014use the skill's request tool as described in the skill documentation.");
23757
+ parts.push("When the user asks for something a skill handles, use that skill's request tool (the one whose id ends with _request) with method, path, and body from the skill documentation below. Do not use echo, memory_search, or memory_write for skill-specific actions\u2014use the skill's request tool as described in the documentation.");
23758
+ }
23759
+ if (skillDocContext?.includes("exec") && skillDocContext?.includes("skill_id")) {
23760
+ parts.push("When the skill documentation below shows commands to run (e.g. scripts), use the exec tool with skill_id set to that skill and command set to the exact command from the doc.");
23757
23761
  }
23758
23762
  }
23759
23763
  if (skillDocContext) {
@@ -23761,7 +23765,7 @@ function buildSystemPrompt(agent, hasTools, skillDocContext, workspaceContext, d
23761
23765
 
23762
23766
  # Skill documentation
23763
23767
 
23764
- Use the following documentation to know how to call skill APIs. When you have a tool like "skill_id:request", use method, path, query, and body as described below.
23768
+ Use the documentation below to call skill APIs: for request-style tools use method, path, query, and body; for script-style skills use exec with skill_id and the command.
23765
23769
 
23766
23770
  ` + skillDocContext);
23767
23771
  }
package/dist/index.js CHANGED
@@ -27183,21 +27183,25 @@ function buildSystemPrompt(agent, hasTools, skillDocContext, workspaceContext, d
27183
27183
  parts.push("Answer the user's task concisely.");
27184
27184
  const skillList = agent.skills?.length ? agent.skills.join(", ") : "none (built-in tools only)";
27185
27185
  parts.push(`Your skills: ${skillList}.`);
27186
- parts.push("If the user's task clearly requires a capability that only a skill can provide (e.g. post to Bluesky, send email, search the web, weather, run a specific integration) and that skill is NOT in your skills list above: reply with a single short message that you don't have that skill and they should install it from hub.sulala.ai (Dashboard \u2192 Skills \u2192 install from store) and add it to this agent in Edit agent. Do NOT attempt the task. Do NOT call any tools. Do NOT suggest workarounds. One sentence only.");
27186
+ parts.push("If a skill in your list above can fulfill the user's request, you MUST use it (via the exec tool or the skill's request tool as described in the skill documentation below). Do not claim you lack that capability.");
27187
+ parts.push("Only when no skill in your list can provide the requested capability: reply briefly that you don't have that skill and that they can install it from the addon store (Dashboard \u2192 Skills \u2192 install from store) and add it to this agent. Do not suggest installing when you already have a skill that can do it.");
27187
27188
  if (delegateableAgents?.length) {
27188
- parts.push(`You have the run_agent tool. When the user asks for something that another agent can do (e.g. post to Bluesky, search the web, send email), first tell the user in natural language that you are asking another agent to handle that part (for example: 'I\u2019ll ask our Social Media Agent to post that on Bluesky for you.' or 'I\u2019ll hand this off to our Research Agent to look that up.'). Then use run_agent with that agent's id and the task. After the other agent finishes, reply to the user with a short, friendly summary of what that agent did and the outcome (for example: 'The Social Media Agent has finished \u2014 your post "hi" is now live on Bluesky.').`);
27189
+ parts.push("You have the run_agent tool. When the user asks for something another agent can do, tell the user in natural language that you are delegating to another agent, then use run_agent with that agent's id and the task. After they finish, reply with a short, friendly summary of what was done and the outcome.");
27189
27190
  parts.push("Available agents to delegate to (use run_agent with agent_id and task): " + delegateableAgents.map((a) => `${a.id} (${a.name})`).join(", ") + ".");
27190
27191
  const memoryAgentIds = delegateableAgents.filter((a) => a.skills?.includes("memory")).map((a) => a.id);
27191
27192
  if (memoryAgentIds.length) {
27192
- parts.push(`Agents with long-term memory (use for remember/save requests): ${memoryAgentIds.join(", ")}. When the user asks to remember something, save a fact about themselves, or store information for later, use run_agent with one of these agents and a task like "Remember that [fact]" or "Save: [fact]". Do not say you cannot save\u2014delegate to an agent that has memory.`);
27193
+ parts.push(`Agents with long-term memory (use for remember/save requests): ${memoryAgentIds.join(", ")}. When the user asks to remember something or save a fact, use run_agent with one of these agents and a task like "Remember that [fact]" or "Save: [fact]". Do not say you cannot save\u2014delegate to an agent that has memory.`);
27193
27194
  }
27194
27195
  }
27195
27196
  if (hasTools) {
27196
27197
  parts.push("You have access to tools. Use them when helpful to answer the user.");
27197
- parts.push(`Your agent id is "${agent.id}". When a skill requires agent_id (e.g. memory_write), use this value in the request body.`);
27198
+ parts.push(`Your agent id is "${agent.id}". When a skill requires agent_id in the request body, use this value.`);
27198
27199
  parts.push("After using tools, always reply with a brief summary for the user; never end with only tool calls.");
27199
27200
  if (skillDocContext?.includes("_request")) {
27200
- parts.push("When the user asks for something a skill handles (e.g. list connections, send email, call an API), use that skill's request tool (e.g. skill_id_request) with the method, path, and body from the skill documentation below. Do not use echo, memory_search, or memory_write for skill-specific actions\u2014use the skill's request tool as described in the skill documentation.");
27201
+ parts.push("When the user asks for something a skill handles, use that skill's request tool (the one whose id ends with _request) with method, path, and body from the skill documentation below. Do not use echo, memory_search, or memory_write for skill-specific actions\u2014use the skill's request tool as described in the documentation.");
27202
+ }
27203
+ if (skillDocContext?.includes("exec") && skillDocContext?.includes("skill_id")) {
27204
+ parts.push("When the skill documentation below shows commands to run (e.g. scripts), use the exec tool with skill_id set to that skill and command set to the exact command from the doc.");
27201
27205
  }
27202
27206
  }
27203
27207
  if (skillDocContext) {
@@ -27205,7 +27209,7 @@ function buildSystemPrompt(agent, hasTools, skillDocContext, workspaceContext, d
27205
27209
 
27206
27210
  # Skill documentation
27207
27211
 
27208
- Use the following documentation to know how to call skill APIs. When you have a tool like "skill_id:request", use method, path, query, and body as described below.
27212
+ Use the documentation below to call skill APIs: for request-style tools use method, path, query, and body; for script-style skills use exec with skill_id and the command.
27209
27213
 
27210
27214
  ` + skillDocContext);
27211
27215
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sulala/agent-os",
3
- "version": "0.1.32",
3
+ "version": "0.1.33",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },