@lumi.ai/runner 0.15.15 → 0.15.17

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 +39 -5
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -125,6 +125,25 @@ function effectiveAgentTools(agent) {
125
125
  };
126
126
  }
127
127
 
128
+ // ../shared/dist/assistant.js
129
+ var ASSISTANT_ACTOR_ID = "assistant";
130
+ var ASSISTANT_ACTOR = Object.freeze({
131
+ type: "agent",
132
+ id: ASSISTANT_ACTOR_ID
133
+ });
134
+ var ASSISTANT_PROFILE = Object.freeze({
135
+ autonomy: 2,
136
+ riskyActions: [],
137
+ tools: Object.freeze({
138
+ workspaceMcp: true,
139
+ github: Object.freeze({ enabled: false, repos: [] }),
140
+ bash: false,
141
+ webSearch: false,
142
+ extraMcps: [],
143
+ browser: false
144
+ })
145
+ });
146
+
128
147
  // ../shared/dist/browser.js
129
148
  var BROWSER_ONLINE_WINDOW_MS = 9e4;
130
149
  var DEFAULT_BROWSER_CONSENT_MS = 60 * 60 * 1e3;
@@ -894,7 +913,7 @@ var WEBHOOK_ACK_REASONS = {
894
913
  };
895
914
 
896
915
  // ../shared/dist/workflow.js
897
- var WORKFLOW_SENTINELS = ["generic", "assigned", "activity", "chat"];
916
+ var WORKFLOW_SENTINELS = ["generic", "assigned", "activity", "chat", "assistant"];
898
917
  function isWorkflowSentinel(id) {
899
918
  return WORKFLOW_SENTINELS.includes(id);
900
919
  }
@@ -1019,7 +1038,7 @@ function mcpUrl(config2) {
1019
1038
  }
1020
1039
 
1021
1040
  // src/version.ts
1022
- var RUNNER_VERSION = true ? "0.15.15" : "0.0.0-dev";
1041
+ var RUNNER_VERSION = true ? "0.15.17" : "0.0.0-dev";
1023
1042
 
1024
1043
  // src/auth.ts
1025
1044
  import { signInWithCustomToken } from "firebase/auth";
@@ -2044,6 +2063,15 @@ function normalizeClaudeUsage(resultEvent, model, fallbackDurationS) {
2044
2063
  const costReported = typeof result.total_cost_usd === "number";
2045
2064
  const usage = {
2046
2065
  engine: CLAUDE_DRIVER_ID,
2066
+ // The model the session was LAUNCHED with (§15.69), which is the parameter this function
2067
+ // already receives and used to drop on the floor. It is `engine`'s sibling: the pair is what
2068
+ // identifies a rate, and it is the only place the workspace assistant's model can come from,
2069
+ // since the assistant has no `agents/{id}` document to read one off.
2070
+ //
2071
+ // OUR REGISTRY'S ALIAS, not a resolved API id. The driver reads only the CLI's final `result`
2072
+ // event, and this file's header is explicit that the CLI is not a contract — so a reader
2073
+ // renders the registry LABEL and never invents a full version string.
2074
+ model,
2047
2075
  inputTokens,
2048
2076
  cachedInputTokens: cacheRead,
2049
2077
  outputTokens,
@@ -3080,7 +3108,11 @@ async function markChatStopped(db, shipId, job, stoppedBy) {
3080
3108
  author: { type: "agent", id: job.agentId },
3081
3109
  content,
3082
3110
  chars: content.length,
3083
- createdAt: Date.now()
3111
+ createdAt: Date.now(),
3112
+ // The run that produced this message (§15.69) — the same join key `chat_send` stamps. These
3113
+ // three runner-written messages are exactly the ones a person most wants the run meta on,
3114
+ // because they are the ones explaining why a reply is missing or short.
3115
+ jobId: job.id
3084
3116
  });
3085
3117
  }
3086
3118
  async function markChatFailed(db, shipId, job, error) {
@@ -3098,7 +3130,8 @@ Write again to start a fresh run.`;
3098
3130
  author: { type: "agent", id: job.agentId },
3099
3131
  content,
3100
3132
  chars: content.length,
3101
- createdAt: now
3133
+ createdAt: now,
3134
+ jobId: job.id
3102
3135
  });
3103
3136
  }
3104
3137
  var REPLY_SCAN_LIMIT = 20;
@@ -3132,7 +3165,8 @@ async function ensureChatReply(db, shipId, job, resultText2) {
3132
3165
  author: { type: "agent", id: job.agentId },
3133
3166
  content,
3134
3167
  chars: content.length,
3135
- createdAt: Date.now()
3168
+ createdAt: Date.now(),
3169
+ jobId: job.id
3136
3170
  });
3137
3171
  return resultText2.trim() ? "posted-final-text" : "posted-silence-note";
3138
3172
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumi.ai/runner",
3
- "version": "0.15.15",
3
+ "version": "0.15.17",
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.",