@stage5/lumine 0.2.56 → 0.2.58
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/README.md +51 -15
- package/lib/commands.js +32 -11
- package/lib/sponsor-duty.js +1817 -0
- package/lib/sponsor.js +70 -981
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -243,13 +243,16 @@ lumine sponsor status
|
|
|
243
243
|
```
|
|
244
244
|
|
|
245
245
|
After Mikey approves an application, configure conservative limits based on
|
|
246
|
-
the subscription you are contributing
|
|
246
|
+
the subscription you are contributing. From the Codex or Claude Code session
|
|
247
|
+
that will personally monitor and perform the work, start one shared duty and
|
|
248
|
+
keep renewing its short watch:
|
|
247
249
|
|
|
248
250
|
```bash
|
|
249
251
|
lumine sponsor capacity --concurrency 1 --helpers 0 \
|
|
250
252
|
--daily-limit 3 --weekly-limit 10
|
|
251
253
|
lumine sponsor duty start --provider codex \
|
|
252
254
|
--model gpt-5.6-sol --effort max --service-tier priority
|
|
255
|
+
lumine sponsor duty watch --json
|
|
253
256
|
```
|
|
254
257
|
|
|
255
258
|
Sponsor commands use the same browser-approval login as the rest of Lumine.
|
|
@@ -258,21 +261,54 @@ using that browser to approve their own account, and then resumes. Any Twinkle
|
|
|
258
261
|
account may authenticate this way, but login never grants sponsor duty:
|
|
259
262
|
`sponsor duty start` still requires that exact account to have a canonical,
|
|
260
263
|
server-approved sponsor profile.
|
|
264
|
+
When the sponsor agreement changes, an already-approved sponsor must read the
|
|
265
|
+
new version and explicitly renew it before opening duty:
|
|
261
266
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
267
|
+
```bash
|
|
268
|
+
lumine sponsor agreement
|
|
269
|
+
lumine sponsor agreement accept --accept-agreement
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Each `duty watch` is deliberately bounded. The same agent session runs it again
|
|
273
|
+
to remain present. If that session stops checking in, its short server lease
|
|
274
|
+
expires and the Workshop no longer advertises it as available. A detached
|
|
275
|
+
heartbeat, supervisor, or provider-spawning daemon is not sponsor duty. The CLI
|
|
276
|
+
rejects a provider name that differs from the agent session actually running
|
|
277
|
+
the command.
|
|
278
|
+
|
|
279
|
+
When a user approves a plan, `duty watch` returns the scoped assignment file and
|
|
280
|
+
contribution workspace to that same session. It does not launch a fresh Codex
|
|
281
|
+
or Claude process. The on-duty agent uses this explicit lifecycle while it
|
|
282
|
+
works:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
lumine sponsor job begin 42
|
|
286
|
+
lumine sponsor job pulse 42
|
|
287
|
+
lumine sponsor job relay-applied 42 101
|
|
288
|
+
lumine sponsor job complete 42 --summary "Implemented and tested the approved change"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
`pulse` renews the duty/job leases and returns any newly approved follow-up.
|
|
292
|
+
Run it between substantial work steps. `relay-applied` is an explicit receipt;
|
|
293
|
+
completion is rejected until every delivered relay has actually been applied
|
|
294
|
+
and acknowledged. Use `helper-start` and `helper-complete` to record native
|
|
295
|
+
same-session subagents within the configured helper limit—the CLI records them
|
|
296
|
+
but never spawns a replacement provider. Use `job fail --reason` for a real
|
|
297
|
+
terminal failure, and `duty pause|resume|stop` to control admission.
|
|
298
|
+
If the provider reroutes the session after duty starts, report the actual
|
|
299
|
+
runtime on `helper-complete` or `job complete` with `--resolved-model`,
|
|
300
|
+
`--resolved-effort`, and (when applicable) `--resolved-service-tier`.
|
|
301
|
+
|
|
302
|
+
Both Zero and Ciel delegate to this shared capacity. The user chooses the
|
|
303
|
+
visible assistant for each request and may see the named sponsor and canonical
|
|
304
|
+
queue. With no live duty, the website stays in its ordinary chat state and
|
|
305
|
+
shows none of the Workshop UI.
|
|
306
|
+
|
|
307
|
+
Zero or Ciel remains the user-facing teammate. The on-duty agent session
|
|
308
|
+
receives only the initial relay and active-job Build follow-ups covered by the
|
|
309
|
+
user’s explicit Workshop consent, the assigned contribution branch, and its
|
|
310
|
+
scoped Build Forum—not the raw assistant chat. It cannot merge into Main,
|
|
311
|
+
publish, or use website-management APIs. Lumine records
|
|
276
312
|
the requested and provider-reported model, effort, service tier, runtime/usage
|
|
277
313
|
evidence, coordinator/helper tree, saved artifact, and branch notice. Every
|
|
278
314
|
completed handoff enters the daily integrity flow; probationary, hard-flagged,
|
package/lib/commands.js
CHANGED
|
@@ -1118,13 +1118,15 @@ export async function save(options) {
|
|
|
1118
1118
|
lastSavedAt: new Date().toISOString(),
|
|
1119
1119
|
filesHash: typeof result.filesHash === "string" ? result.filesHash : null,
|
|
1120
1120
|
});
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1121
|
+
if (!options.quiet) {
|
|
1122
|
+
printSaveResult({
|
|
1123
|
+
result,
|
|
1124
|
+
build,
|
|
1125
|
+
dir,
|
|
1126
|
+
files,
|
|
1127
|
+
publishRequested: Boolean(options.publish),
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1128
1130
|
|
|
1129
1131
|
if (options.publish) {
|
|
1130
1132
|
if (build?.canPublish === false) {
|
|
@@ -1488,12 +1490,12 @@ export async function pullBuildFiles({ options, auth, buildId }) {
|
|
|
1488
1490
|
});
|
|
1489
1491
|
await writeProjectFiles({ dir, files });
|
|
1490
1492
|
const stashDirLabel = path.join(PROJECT_METADATA_DIR, "removed");
|
|
1491
|
-
if (movedPaths.length > 0) {
|
|
1493
|
+
if (!options.quiet && movedPaths.length > 0) {
|
|
1492
1494
|
console.log(
|
|
1493
1495
|
`Moved ${movedPaths.length} local file${movedPaths.length === 1 ? "" : "s"} not in the server project to ${stashDirLabel}/: ${movedPaths.join(", ")}`,
|
|
1494
1496
|
);
|
|
1495
1497
|
}
|
|
1496
|
-
if (backedUpPaths.length > 0) {
|
|
1498
|
+
if (!options.quiet && backedUpPaths.length > 0) {
|
|
1497
1499
|
console.log(
|
|
1498
1500
|
`Backed up ${backedUpPaths.length} locally modified file${backedUpPaths.length === 1 ? "" : "s"} to ${stashDirLabel}/ before overwriting with the server version: ${backedUpPaths.join(", ")}`,
|
|
1499
1501
|
);
|
|
@@ -2403,6 +2405,19 @@ export function parseArgs(args) {
|
|
|
2403
2405
|
sponsorWeeklyLimit: raw.weeklyLimit,
|
|
2404
2406
|
sponsorEffort: raw.effort ? String(raw.effort) : "",
|
|
2405
2407
|
sponsorServiceTier: raw.serviceTier ? String(raw.serviceTier) : "",
|
|
2408
|
+
sponsorWaitMs: raw.waitMs ? String(raw.waitMs) : "",
|
|
2409
|
+
sponsorAgentOrdinal: raw.ordinal,
|
|
2410
|
+
sponsorOutcome: raw.outcome ? String(raw.outcome) : "",
|
|
2411
|
+
sponsorFailureReason: raw.reason ? String(raw.reason) : "",
|
|
2412
|
+
sponsorResolvedModel: raw.resolvedModel
|
|
2413
|
+
? String(raw.resolvedModel)
|
|
2414
|
+
: "",
|
|
2415
|
+
sponsorResolvedEffort: raw.resolvedEffort
|
|
2416
|
+
? String(raw.resolvedEffort)
|
|
2417
|
+
: "",
|
|
2418
|
+
sponsorResolvedServiceTier: raw.resolvedServiceTier
|
|
2419
|
+
? String(raw.resolvedServiceTier)
|
|
2420
|
+
: "",
|
|
2406
2421
|
sponsorPollMs: raw.pollMs
|
|
2407
2422
|
? Math.min(Math.max(Number(raw.pollMs) || 0, 1_000), 60_000)
|
|
2408
2423
|
: 3_000,
|
|
@@ -2730,8 +2745,14 @@ export function printHelp() {
|
|
|
2730
2745
|
lumine agent --provider <codex|claude-code> "<build request>"
|
|
2731
2746
|
lumine sponsor agreement|apply|status|withdraw
|
|
2732
2747
|
lumine sponsor capacity [--concurrency <n>] [--helpers <n>] [--daily-limit <n>] [--weekly-limit <n>]
|
|
2733
|
-
lumine sponsor duty start --provider <codex|claude-code>
|
|
2748
|
+
lumine sponsor duty start [--provider <codex|claude-code>] --model <name> --effort <level> [--service-tier <tier>]
|
|
2749
|
+
lumine sponsor duty watch [--wait-ms <ms>] [--json]
|
|
2734
2750
|
lumine sponsor duty pause|resume|stop
|
|
2751
|
+
lumine sponsor job status|pulse|begin <job-id>
|
|
2752
|
+
lumine sponsor job relay-applied <job-id> <relay-id...>
|
|
2753
|
+
lumine sponsor job helper-start|helper-complete <job-id> [options]
|
|
2754
|
+
lumine sponsor job complete <job-id> --summary <text>
|
|
2755
|
+
lumine sponsor job fail <job-id> --reason <text>
|
|
2735
2756
|
lumine sponsor jobs
|
|
2736
2757
|
lumine app-mcp <published-app-url-or-id> [--no-open]
|
|
2737
2758
|
lumine new [title]
|
|
@@ -2918,7 +2939,7 @@ Options:
|
|
|
2918
2939
|
--review-context <f> Private JSON understanding from the reviewed Build
|
|
2919
2940
|
--severity <level> Run escalation severity: attention or urgent
|
|
2920
2941
|
--status <state> Private escalation or todo lifecycle filter/state
|
|
2921
|
-
--wait-ms <ms> Managed Build
|
|
2942
|
+
--wait-ms <ms> Managed Build observation or sponsor watch duration
|
|
2922
2943
|
--browser-path <path> Chrome/Chromium executable for managed Build review
|
|
2923
2944
|
--effort unassigned Admin subjects: show only unassigned effort
|
|
2924
2945
|
--unviewed Admin content lists: retain unviewed and unknown items
|