@lumi.ai/runner 0.15.13 → 0.15.15
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 +30 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -277,6 +277,34 @@ var COLLECTIONS = {
|
|
|
277
277
|
/** ROOT collection (§15.44): one liveness document per relay instance, overwritten each
|
|
278
278
|
* report. Not a Ship subcollection — a relay serves every Ship and belongs to none. */
|
|
279
279
|
browserRelays: "browserRelays",
|
|
280
|
+
/**
|
|
281
|
+
* ROOT (§15.64): `crew_stripe_events/{eventId}` — the webhook idempotency ledger.
|
|
282
|
+
*
|
|
283
|
+
* Root rather than Ship-scoped because a Stripe event is addressed to an ACCOUNT, and the Ship
|
|
284
|
+
* it concerns is read out of its metadata AFTER the duplicate check. Scoping it under a Ship
|
|
285
|
+
* would mean resolving the Ship before knowing whether the event had already been handled,
|
|
286
|
+
* which is the wrong order — and would strand the ledger row when that Ship is purged.
|
|
287
|
+
*/
|
|
288
|
+
crewStripeEvents: "crewStripeEvents",
|
|
289
|
+
/**
|
|
290
|
+
* ROOT (§15.64): `crewBillingAccounts/{uid}` — one person's subscription, entire.
|
|
291
|
+
*
|
|
292
|
+
* Keyed by auth uid, not by Ship, because ONE PERSON HAS ONE SUBSCRIPTION covering every
|
|
293
|
+
* workspace they own. That is the whole of §15.64's second shape: a workspace is free, a seat is
|
|
294
|
+
* paid, and the seat count is pooled across the account — so the subscription cannot live on a
|
|
295
|
+
* Ship without being copied onto each of them, and N copies of one fact is N chances for a stale
|
|
296
|
+
* one.
|
|
297
|
+
*
|
|
298
|
+
* What a Ship still carries is only what `firestore.rules` and the triggers must read without a
|
|
299
|
+
* network call: `billing.status` and `billing.trialEnd`. Everything else — customer, subscription
|
|
300
|
+
* id, seats, interval, period end, the seat-sync error — is here, once.
|
|
301
|
+
*
|
|
302
|
+
* Deny-all to clients. Writable it is an account-takeover primitive (point your uid at somebody
|
|
303
|
+
* else's customer and the Portal session minted for you opens their card); readable it leaks who
|
|
304
|
+
* is a customer. The app never touches it — the Billing page gets its numbers from
|
|
305
|
+
* `crewBillingPreview`, which asks Stripe.
|
|
306
|
+
*/
|
|
307
|
+
crewBillingAccounts: "crewBillingAccounts",
|
|
280
308
|
/** `ships/{shipId}/notifications/{id}` — per-member in-app notifications. */
|
|
281
309
|
notifications: "notifications",
|
|
282
310
|
/** `ships/{shipId}/usage_daily/{yyyy-mm-dd}` — token-tracking aggregates. */
|
|
@@ -861,6 +889,7 @@ var WEBHOOK_ACK_REASONS = {
|
|
|
861
889
|
duplicate: "Already delivered \u2014 this is a retry of a delivery that was accepted.",
|
|
862
890
|
noListener: "No enabled playbook on this Ship is listening to this hook.",
|
|
863
891
|
rateLimited: "Deliveries are arriving faster than one per second; this one was dropped.",
|
|
892
|
+
shipPaused: "This Ship's subscription is not active, so the delivery was accepted and no agent was woken.",
|
|
864
893
|
fanout: `Woke the first ${MAX_WEBHOOK_FANOUT} playbooks listening; the rest were skipped.`
|
|
865
894
|
};
|
|
866
895
|
|
|
@@ -990,7 +1019,7 @@ function mcpUrl(config2) {
|
|
|
990
1019
|
}
|
|
991
1020
|
|
|
992
1021
|
// src/version.ts
|
|
993
|
-
var RUNNER_VERSION = true ? "0.15.
|
|
1022
|
+
var RUNNER_VERSION = true ? "0.15.15" : "0.0.0-dev";
|
|
994
1023
|
|
|
995
1024
|
// src/auth.ts
|
|
996
1025
|
import { signInWithCustomToken } from "firebase/auth";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lumi.ai/runner",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.15",
|
|
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.",
|