lastlight 0.18.6 → 0.20.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lastlight",
3
- "version": "0.18.6",
3
+ "version": "0.20.0",
4
4
  "description": "Last Light CLI — a lean global client + host-local `server` lifecycle for the Last Light GitHub maintenance agent, plus the Claude Code plugin.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -33,8 +33,8 @@
33
33
  "@clack/prompts": "^1.2.0",
34
34
  "chalk": "^5.6.2",
35
35
  "cli-table3": "^0.6.5",
36
- "lastlight-workflow-engine": "0.1.1",
37
- "lastlight-shared": "0.1.1"
36
+ "lastlight-workflow-engine": "0.1.2",
37
+ "lastlight-shared": "0.1.2"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^22.0.0",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin.json",
3
3
  "name": "lastlight",
4
4
  "displayName": "Last Light",
5
- "version": "0.18.6",
5
+ "version": "0.20.0",
6
6
  "description": "Install, configure and operate Last Light (GitHub maintenance agent) — its server, CLI client, deployment overlay, and the Last Light Evals harness.",
7
7
  "author": {
8
8
  "name": "Clifton Cunningham"
@@ -16,6 +16,7 @@ Light's *internal* sandbox skills under the repo's top-level `skills/` dir
16
16
  | `lastlight-guide` | **Not sure which of the below you need** — orientation & router across all the Last Light skills. Start here (or `/lastlight-guide`). |
17
17
  | `lastlight-server` | Install & configure a Last Light **server** (the agent + docker stack) on a host. |
18
18
  | `lastlight-client` | Point the `lastlight` **CLI client** at an existing server and log in. |
19
+ | `lastlight-debug` | **Debug a running instance** over its admin API (no SSH): find failed/stuck workflows, tail sessions, read server/docker logs, crons, approvals, stats. |
19
20
  | `lastlight-overlay` | Create a deployment **overlay** instance and fork/customize workflows, prompts, skills, or the agent persona. |
20
21
  | `lastlight-evals` | Scaffold and run a **Last Light Evals** workspace (datasets, models, model comparisons). |
21
22
  | `lastlight-evals-loop` | **Drive an eval toward a target score** with a disciplined, anti-gaming improvement loop — diagnose on a train split, validate on a blind held-out split, propose one generic fix at a time. |
@@ -76,6 +76,9 @@ lastlight logs search "<text>" # search errors / transcripts
76
76
  lastlight approvals list|approve|reject
77
77
  ```
78
78
 
79
+ For a full debugging runbook (find a failed/stuck run, tail sessions, read
80
+ server/docker logs, crons, stats) use **`lastlight-debug`**.
81
+
79
82
  ## Done when
80
83
 
81
84
  `lastlight status` reports the server healthy and the token valid. Report the
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: lastlight-debug
3
+ description: Debug a running Last Light instance over its admin API with the `lastlight` CLI — no SSH. Use when the user wants to "look at / debug a failed or stuck workflow", "why didn't the bot do X", "check a bad agent run / phase error on <instance>", "tail a session", "search the logs", "read the server/docker logs", "list/trigger a cron", "resolve an approval", or "check stats/cost" against a deployed server. Needs a CLI already connected (see lastlight-client to log in). For standing up the server use lastlight-server; for editing config/workflows use lastlight-overlay.
4
+ version: 1.0.0
5
+ tags: [lastlight, debug, ops, cli, workflows, sessions, logs]
6
+ ---
7
+
8
+ # Debug a Last Light instance via the CLI
9
+
10
+ Read a running instance's state over its admin API with the `lastlight` CLI — no
11
+ SSH, no poking SQLite or jsonl files on the box. Every command takes `--json`
12
+ for machine-parseable output; prefer it when you need to extract fields.
13
+
14
+ This is the operator counterpart to **`lastlight-client`** (which logs the CLI
15
+ in). If `lastlight status` errors with no saved config, run `lastlight-client`
16
+ first.
17
+
18
+ ## 1. Connect
19
+
20
+ The CLI talks to whatever instance you logged into (saved in
21
+ `~/.lastlight/config.json`). Confirm you're pointed at the right one and the
22
+ token is valid:
23
+
24
+ ```bash
25
+ lastlight status # instance URL, server health, token validity
26
+ ```
27
+
28
+ If the token is missing/expired, log in (`lastlight login https://<instance>`,
29
+ or `--password` for headless) — that's the **`lastlight-client`** flow. For
30
+ one-off targeting without saving, pass `--url` / `--token` on any command, or
31
+ set `LASTLIGHT_URL` / `LASTLIGHT_TOKEN` (env wins over the saved config).
32
+
33
+ ## 2. Find the broken run
34
+
35
+ ```bash
36
+ lastlight workflow list --status failed # recent failures
37
+ lastlight workflow list --status active # running + paused now
38
+ lastlight workflow list --workflow pr-review --limit 50
39
+ ```
40
+
41
+ Copy the run `ID` from the table. The `PHASE` column names the phase the run is
42
+ at (or failed on).
43
+
44
+ ## 3. Inspect the run's phases
45
+
46
+ ```bash
47
+ lastlight workflow log <run-id> # run header + per-phase table (✓/✗/…, duration, session id, error)
48
+ lastlight workflow log <run-id> --follow # then tail the current phase live
49
+ ```
50
+
51
+ The phase table shows which phase failed, its error snippet, and the `SESSION`
52
+ id you need for the transcript. A phase stuck at `…` never finished (still
53
+ `started`); a `✗` finished failed.
54
+
55
+ If it failed on a transient/infra hiccup, re-run from the failed phase:
56
+
57
+ ```bash
58
+ lastlight workflow retry <run-id> # resumes from the phase that failed (same workspace/context)
59
+ ```
60
+
61
+ ## 4. Read / tail the agent transcript
62
+
63
+ ```bash
64
+ lastlight session list # recent sandbox sessions (TYPE, MODEL, LIVE)
65
+ lastlight session log <session-id> # full transcript
66
+ lastlight session log <session-id> --follow # live tail (SSE) of an in-flight phase
67
+ ```
68
+
69
+ ## 5. Search across runs
70
+
71
+ ```bash
72
+ lastlight logs search "ECONNREFUSED" # errors ledger (default)
73
+ lastlight logs search "rate limit" --scope all # errors + transcript content
74
+ lastlight logs search "could not clone" --scope messages --limit 20
75
+ ```
76
+
77
+ `--scope errors` (default) matches the executions ledger (error/skill/repo);
78
+ `messages` greps recent session transcripts; `all` does both.
79
+
80
+ ## 6. Raw server / docker logs
81
+
82
+ When the workflow + session views aren't enough — a crash before any session was
83
+ written, a sidecar misbehaving, harness boot errors — read the actual container
84
+ logs (`docker logs`) over the API:
85
+
86
+ ```bash
87
+ lastlight server list # the lastlight-* containers + status
88
+ lastlight server logs # the agent harness (default), last 200 lines
89
+ lastlight server logs --tail 500 --since 10m
90
+ lastlight server logs --follow # live tail (Ctrl-C to stop)
91
+ lastlight server logs coredns-strict # a specific sidecar by service or container name
92
+ ```
93
+
94
+ ## 7. Crons
95
+
96
+ Scheduled workflows (health scans, PR-review fanout, dependabot merge, …):
97
+
98
+ ```bash
99
+ lastlight cron list # schedule, next/last run, status
100
+ lastlight cron trigger <name> # run one now (fire-and-forget; handy for repro)
101
+ lastlight cron disable <name> # pause a noisy/broken job (idempotent)
102
+ lastlight cron enable <name> # re-enable it
103
+ ```
104
+
105
+ ## 8. Approvals & stats
106
+
107
+ ```bash
108
+ lastlight approvals list # paused gates waiting on a human
109
+ lastlight approvals approve <id> --reason "looks good"
110
+ lastlight approvals reject <id> --reason "wrong approach"
111
+
112
+ lastlight stats # totals + per-skill success/fail
113
+ lastlight stats --daily 14 # last 14 days of cost/tokens
114
+ lastlight stats --hourly 24 # last 24 hours (spot a spike / stuck loop)
115
+ ```
116
+
117
+ ## Tips
118
+
119
+ - Add `--json` to any command to pipe into `jq` (e.g.
120
+ `lastlight workflow list --status failed --json | jq -r '.workflowRuns[].id'`).
121
+ - Per-command help is authoritative: `lastlight <cmd> help` (e.g.
122
+ `lastlight cron help`); the bare `lastlight --help` is a compact index.
123
+ - Triage flow: `workflow list --status failed` → `workflow log <id>` → grab the
124
+ failed phase's session → `session log <session-id>` → if it's a recurring
125
+ symptom, `logs search "<error text>"` to see how often it happens.
126
+ - These are read-only except `approvals approve/reject`, `cron
127
+ enable/disable/trigger`, `workflow retry`, and the trigger commands
128
+ (`build`/`triage`/`review`/…) — plain debugging never mutates the box.
129
+
130
+ ## Done when
131
+
132
+ You've located the failing run/phase and its cause — named the phase, quoted the
133
+ error, and pointed at the session transcript (or server log) that shows it — and,
134
+ if asked, kicked off a `workflow retry` or resolved the approval. Report findings
135
+ concisely; don't dump whole transcripts.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lastlight-guide
3
- description: Orientation & router for the Last Light skills. Use ONLY when the user has NOT named a concrete Last Light task — i.e. they're unsure which skill/flow they need, ask "what can Last Light do / where do I start", say "help me with Last Light" with no specific goal, or want a guided tour across server / client / overlay / evals. Do NOT use when the ask already names a task — "set up/deploy a server" → lastlight-server, "connect/log in my CLI" → lastlight-client, "customize a workflow/prompt/persona/config" → lastlight-overlay, "run evals / compare models / author a case / build a PR-review dataset" → lastlight-evals, "iteratively improve an eval toward a target score" → lastlight-evals-loop: invoke that skill directly. This skill only routes and, when the goal is ambiguous, asks. Also invocable as /lastlight-guide.
3
+ description: Orientation & router for the Last Light skills. Use ONLY when the user has NOT named a concrete Last Light task — i.e. they're unsure which skill/flow they need, ask "what can Last Light do / where do I start", say "help me with Last Light" with no specific goal, or want a guided tour across server / client / overlay / debug / evals. Do NOT use when the ask already names a task — "set up/deploy a server" → lastlight-server, "connect/log in my CLI" → lastlight-client, "customize a workflow/prompt/persona/config" → lastlight-overlay, "debug a failed/stuck workflow or run on an instance" → lastlight-debug, "run evals / compare models / author a case / build a PR-review dataset" → lastlight-evals, "iteratively improve an eval toward a target score" → lastlight-evals-loop: invoke that skill directly. This skill only routes and, when the goal is ambiguous, asks. Also invocable as /lastlight-guide.
4
4
  version: 1.0.0
5
5
  tags: [lastlight, guide, router, orientation, help]
6
6
  ---
@@ -43,6 +43,11 @@ first time; each is also usable on its own later.
43
43
  (`agent-context`), and tune `config.yaml` — overriding only what you name,
44
44
  layered over the packaged defaults. Reach for it whenever you want to change
45
45
  *what the agent does or how it behaves* on an existing deployment.
46
+ 4. **`lastlight-debug`** — inspect a **running** instance over its admin API
47
+ (no SSH): find a failed/stuck workflow, read the phase table, tail a session
48
+ transcript, search logs, read server/docker logs, trigger/pause crons,
49
+ resolve approvals, check stats. Reach for it when something already deployed
50
+ *misbehaved* and you need to see why.
46
51
 
47
52
  ## Flow 2 — measure quality with Last Light Evals
48
53
 
@@ -77,6 +82,7 @@ time (stopping for sign-off before it touches a gold answer).
77
82
  |---|---|
78
83
  | Stand up / install / deploy a server for the first time | **`lastlight-server`** |
79
84
  | Connect my CLI to a server / log in / run commands against it | **`lastlight-client`** |
85
+ | Debug a failed/stuck workflow, tail a session, read logs, check crons/stats | **`lastlight-debug`** |
80
86
  | Customize a workflow, prompt, skill, or the agent's persona; tune config | **`lastlight-overlay`** |
81
87
  | Run evals, compare models, browse past runs | **`lastlight-evals`** |
82
88
  | Author an eval case from a GitHub PR or issue | **`lastlight-evals`** (§6) |