@lumi.ai/runner 0.15.4 → 0.15.6

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 (2) hide show
  1. package/dist/cli.js +10 -7
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -938,7 +938,7 @@ function mcpUrl(config2) {
938
938
  }
939
939
 
940
940
  // src/version.ts
941
- var RUNNER_VERSION = true ? "0.15.4" : "0.0.0-dev";
941
+ var RUNNER_VERSION = true ? "0.15.6" : "0.0.0-dev";
942
942
 
943
943
  // src/auth.ts
944
944
  import { signInWithCustomToken } from "firebase/auth";
@@ -1495,6 +1495,13 @@ function standingRules(ship2, statuses, task, agent) {
1495
1495
  "End every session by calling run_report: what you did, what remains, what the next run must know. Give it a summary too \u2014 one or two sentences that stand in for the whole report in later runs, so write the sentence you would want the next run to read first. Do not repeat what you already put in your memory or in Ship knowledge \u2014 point at it instead (the entry id, or the slug)."
1496
1496
  ].join("\n- ");
1497
1497
  }
1498
+ function identityBlock(agent) {
1499
+ return `# Who you are
1500
+
1501
+ ${agent.persona || `You are ${agent.name}.`}
1502
+
1503
+ You are **${agent.name}**, and your own agent id is \`${agent.id}\`. That id is how you name yourself to any tool that takes an assignee: to put yourself on a task, pass \`{"type":"agent","id":"${agent.id}"}\`. Never guess or invent an id \u2014 for anyone else on the crew, \`agent_list\` gives you the real one.`;
1504
+ }
1498
1505
  function formatTaskDate(millis, now = Date.now()) {
1499
1506
  const d = new Date(millis);
1500
1507
  const pad = (n) => String(n).padStart(2, "0");
@@ -1544,9 +1551,7 @@ function buildPrompt(ctx, reason, mcpServers = [], tokenRepos, githubUnavailable
1544
1551
  } else if (reason === "schedule") {
1545
1552
  preamble = "# Why this session started\n\nThis is a scheduled run: one of your own playbooks created this task on its cron and assigned it to you. It is routine work, not a request from a person, so nobody is waiting on a reply" + (playbook ? " \u2014 the playbook above is the work, and the task's description is only a record of why it exists." : ".");
1546
1553
  }
1547
- parts.push(`# Who you are
1548
-
1549
- ${ctx.agent.persona || `You are ${ctx.agent.name}.`}`);
1554
+ parts.push(identityBlock(ctx.agent));
1550
1555
  if (ctx.agent.contract.trim()) {
1551
1556
  parts.push(`# Your contract
1552
1557
 
@@ -1765,9 +1770,7 @@ function buildChatPrompt(ctx, mcpServers = [], tokenRepos, githubUnavailable, br
1765
1770
  parts.push(
1766
1771
  "# Why this session started\n\nSomeone wrote to you in a chat. **This is a conversation, not a task**: nobody has assigned you work, there is no board status to move, and nothing here is tracked. Read the thread below and reply with `chat_send`."
1767
1772
  );
1768
- parts.push(`# Who you are
1769
-
1770
- ${ctx.agent.persona || `You are ${ctx.agent.name}.`}`);
1773
+ parts.push(identityBlock(ctx.agent));
1771
1774
  if (ctx.agent.contract.trim()) {
1772
1775
  parts.push(`# Your contract
1773
1776
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumi.ai/runner",
3
- "version": "0.15.4",
3
+ "version": "0.15.6",
4
4
  "type": "module",
5
5
  "description": "Lumi Crew runner daemon — claims jobs from your Ships and executes them as headless Claude sessions on your own machine.",
6
6
  "//name": "The ONLY package in this monorepo published to the public registry, so it is the one that does not follow the internal @lumi/crew-* convention: `@lumi` is not a scope we own, `@lumi.ai` is (the npm org). The workspace DIRECTORY stays packages/crew/runner — renaming the package is not renaming the folder.",