@lumi.ai/runner 0.15.18 → 0.15.19

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 +44 -2
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -63,6 +63,9 @@ var ENGINES = {
63
63
  claude: CLAUDE_ENGINE
64
64
  };
65
65
  var DEFAULT_ENGINE_ID = "claude";
66
+ function listEngines() {
67
+ return Object.values(ENGINES);
68
+ }
66
69
  function isKnownEngine(id) {
67
70
  return !!id && Object.hasOwn(ENGINES, id);
68
71
  }
@@ -82,6 +85,8 @@ function estimateCostUsd(engineId, modelId, tokens) {
82
85
  const fresh = Math.max(0, tokens.inputTokens - tokens.cachedInputTokens);
83
86
  return (fresh * model.rates.input + tokens.cachedInputTokens * model.rates.cachedInput + tokens.outputTokens * model.rates.output) / 1e6;
84
87
  }
88
+ var AGENT_ENGINE_IDS = Object.freeze(listEngines().map((e) => e.id));
89
+ var AGENT_MODEL_IDS = Object.freeze(listEngines().flatMap((e) => e.models.map((m) => m.id)));
85
90
 
86
91
  // ../shared/dist/agent.js
87
92
  var DEFAULT_AGENT_TOOLS = {
@@ -144,6 +149,41 @@ var ASSISTANT_PROFILE = Object.freeze({
144
149
  })
145
150
  });
146
151
 
152
+ // ../shared/dist/assistantAuthority.js
153
+ var ASSISTANT_TOOL_AUTHORITY = Object.freeze({
154
+ // Reads. Everything the asker could open in the app.
155
+ ship_info: "member",
156
+ agent_list: "member",
157
+ task_list: "member",
158
+ task_get: "member",
159
+ knowledge_get: "member",
160
+ chat_get: "member",
161
+ // Writes a member can already make by clicking.
162
+ task_create: "member",
163
+ task_comment: "member",
164
+ task_update_status: "member",
165
+ task_relate: "member",
166
+ task_assign: "member",
167
+ knowledge_write: "member",
168
+ chat_send: "member",
169
+ // Captain-only, because the rules say so for a direct write — and `agent_write` also bills.
170
+ agent_write: "captain",
171
+ workflow_write: "captain",
172
+ knowledge_folder: "captain"
173
+ });
174
+ var ASSISTANT_NEVER_REGISTER = Object.freeze([
175
+ "approval_decide",
176
+ "approval_request",
177
+ "memory_write",
178
+ "media_attach"
179
+ ]);
180
+ var ASSISTANT_FROZEN_ARGS = Object.freeze({
181
+ agent_write: Object.freeze(["tools"])
182
+ });
183
+
184
+ // ../shared/dist/toolStats.js
185
+ var TOOL_STATS_HALF_LIFE_MS = 14 * 24 * 60 * 60 * 1e3;
186
+
147
187
  // ../shared/dist/browser.js
148
188
  var BROWSER_ONLINE_WINDOW_MS = 9e4;
149
189
  var DEFAULT_BROWSER_CONSENT_MS = 60 * 60 * 1e3;
@@ -332,6 +372,8 @@ var COLLECTIONS = {
332
372
  engineLimits: "engine_limits",
333
373
  /** `ships/{shipId}/events/{id}` — append-only Ship-level audit log. */
334
374
  events: "events",
375
+ /** §15.70: per-actor tool usage, so the assistant declares what it actually reaches for. */
376
+ toolStats: "toolStats",
335
377
  /** `ships/{shipId}/secrets/{docId}` — runner creds + MCP token hash (see secrets.ts). */
336
378
  secrets: "secrets",
337
379
  /**
@@ -1023,7 +1065,7 @@ function mcpUrl(config2) {
1023
1065
  }
1024
1066
 
1025
1067
  // src/version.ts
1026
- var RUNNER_VERSION = true ? "0.15.18" : "0.0.0-dev";
1068
+ var RUNNER_VERSION = true ? "0.15.19" : "0.0.0-dev";
1027
1069
 
1028
1070
  // src/auth.ts
1029
1071
  import { signInWithCustomToken } from "firebase/auth";
@@ -3106,7 +3148,7 @@ async function markChatFailed(db, shipId, job, error) {
3106
3148
  ${error.slice(0, 500)}
3107
3149
  \`\`\`
3108
3150
 
3109
- Write again to start a fresh run.`;
3151
+ Use Try again above to run it once more.`;
3110
3152
  await addDoc(collection6(chatRef, COLLECTIONS.chatMessages), {
3111
3153
  author: { type: "agent", id: job.agentId },
3112
3154
  content,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumi.ai/runner",
3
- "version": "0.15.18",
3
+ "version": "0.15.19",
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.",