luxin-cli 0.2.2 → 0.2.4
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/CHANGELOG.md +129 -0
- package/bin/luxin.mjs +775 -193
- package/cli.md +160 -50
- package/commands.json +2 -0
- package/llms.txt +6 -6
- package/package.json +2 -3
- package/skill.md +14 -10
- package/skills/agent-image-generation/SKILL.md +1 -1
- package/skills/ai-audio-generation/SKILL.md +1 -1
- package/skills/ai-image-generation/SKILL.md +1 -1
- package/skills/ai-video-generation/SKILL.md +1 -1
- package/skills/creative-media/SKILL.md +1 -1
- package/skills/image-edit/SKILL.md +1 -1
- package/skills/image-generation/SKILL.md +2 -2
- package/skills/image-skill/SKILL.md +78 -0
- package/skills/image-to-3d/SKILL.md +2 -2
- package/skills/luxin/SKILL.md +14 -10
- package/skills/luxin/references/cli.md +160 -50
- package/skills/luxin/references/commands.json +2 -0
- package/skills/luxin/references/llms.txt +6 -6
- package/SKILL.md +0 -436
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,135 @@ provenance; this file is the human- and agent-readable release map.
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.2.4 - 2026-08-09
|
|
10
|
+
|
|
11
|
+
- Release (correctness): the guide honors an aspect ratio stated in the brief
|
|
12
|
+
instead of dropping it (#2213, #2203, #2209). A "16:9 cinematic widescreen
|
|
13
|
+
poster" brief previously returned a 2048x2048 square and charged 12 credits
|
|
14
|
+
for it: `selection.suggested_aspect_ratio` was hard-null for every image
|
|
15
|
+
model because the guide only ever suggested a ratio for video. The guide now
|
|
16
|
+
extracts an explicit ratio conservatively, treats it as a required capability
|
|
17
|
+
during model selection the way #2225 treats seed, and passes
|
|
18
|
+
`--aspect-ratio` through to create, dry-run and edit. Bare "portrait" and
|
|
19
|
+
"landscape" deliberately do not fire, and neither do quantity ratios ("the
|
|
20
|
+
ratio of sugar to flour is 3:2") or bare clock times.
|
|
21
|
+
- Release (output): `create --guide` at an unblocked `ready_to_create` returns
|
|
22
|
+
the decision rather than every field (#2204 and its cluster). Measured
|
|
23
|
+
21,667 to 7,911 bytes, 449 to 200 lines. A blocked agent still receives the
|
|
24
|
+
full recovery and self-fund apparatus, because that is when it is the right
|
|
25
|
+
answer, and the pre-wall funding nudge survives whenever it is genuinely
|
|
26
|
+
recommended. `data.output_mode` names every omitted and compacted field and
|
|
27
|
+
carries a copy-runnable `--explain`, so nothing is trimmed silently.
|
|
28
|
+
- Release (cost): `--intent` now drives model selection (#2231). `draft`
|
|
29
|
+
previously selected a 25-credit model against a 12-credit default and now
|
|
30
|
+
selects a 1-credit one; the unhinted default drops from 12 to 4 credits.
|
|
31
|
+
`final` still selects the quality model, and reproducibility briefs still
|
|
32
|
+
route to a seed-capable model. `cost.cheaper_alternative` names one available
|
|
33
|
+
model that costs strictly less and still satisfies the brief.
|
|
34
|
+
- Release (trust): public responses no longer publish our provider cost,
|
|
35
|
+
revenue, realized margin, target margin, or payment-fee model. What a caller
|
|
36
|
+
is charged is unchanged; what we paid and made is no longer disclosed.
|
|
37
|
+
- Release (dry-run): hosted create and edit responses carry an explicit
|
|
38
|
+
`data.mutation` stating `provider_call`, `credit_debit` and `media_write`
|
|
39
|
+
rather than leaving them to be inferred (#2216), and planned assets are
|
|
40
|
+
labelled as placeholders rather than media.
|
|
41
|
+
- Release (contract): `aspect_ratio` is documented in `skill.md` as the
|
|
42
|
+
top-level normalized control it always was.
|
|
43
|
+
- Release (media): newly created assets are returned at `media.luxin.sh`.
|
|
44
|
+
Existing `media.image-skill.com` URLs continue to resolve and are still
|
|
45
|
+
accepted as input.
|
|
46
|
+
- Release (discovery): the `image-skill` skill slug resolves again. The rename
|
|
47
|
+
removed it and `npx skills add ... --skill image-skill` had failed since
|
|
48
|
+
2026-07-13 on the mirror path carrying most of our installs.
|
|
49
|
+
|
|
50
|
+
## 0.2.3 - 2026-08-04
|
|
51
|
+
|
|
52
|
+
- Release (self-fund/recovery): the wall now offers a human-funding handoff
|
|
53
|
+
instead of only a rail no external agent could walk (#2201). Both wall types
|
|
54
|
+
— credits depleted and daily job cap reached — route through
|
|
55
|
+
`QUOTA_EXCEEDED`, and the recovery envelope now carries
|
|
56
|
+
`error.recovery.human_handoff`: a copy-runnable `luxin claim code --json`,
|
|
57
|
+
typed `no_spend`, with the honest instruction to hand `data.dashboard_url`
|
|
58
|
+
(and nothing else — never the token, never the raw code) to your human, who
|
|
59
|
+
funds credits at the dashboard in about a minute. With no wallet evidence —
|
|
60
|
+
the external default — that handoff leads `error.recovery.suggested_command`
|
|
61
|
+
and `error.recovery.suggested_commands`; the agent-native x402 quote/buy rail
|
|
62
|
+
stays listed and `top_up.preferred_payment_method`
|
|
63
|
+
(`stripe_x402.exact.usdc`) is unchanged. New `error.recovery.delegated_spend`
|
|
64
|
+
(`state`, `per_tx_cap_usd`, `agent_day_remaining_usd`, `requires_wallet`)
|
|
65
|
+
lets an agent tell whether it can settle x402 itself before it stops at the
|
|
66
|
+
wall; it defaults to `state: "unknown"`, and when a caller proves delegated
|
|
67
|
+
spend is available the x402 quote leads instead. The credits-depleted wall
|
|
68
|
+
message — the majority wall — now names the price (a ~$5 top-up of 500
|
|
69
|
+
credits, pack `starter-500`), the concrete next step, and both paths, at the
|
|
70
|
+
quality the daily-cap message already had. The packaged CLI rewrites the
|
|
71
|
+
handoff command through your invocation prefix, so what the wall prints is
|
|
72
|
+
runnable as printed.
|
|
73
|
+
- Release (honest messaging): the `create --guide` / `edit --guide`
|
|
74
|
+
`quota_required` blocker is now trigger-aware (#2200). It used to always emit
|
|
75
|
+
the credits-shortfall line ("Selected first image requires N credits; current
|
|
76
|
+
remaining credits are M") even when the trigger was the daily job cap, so an
|
|
77
|
+
agent holding spare credits read a message that was simply wrong about why it
|
|
78
|
+
was blocked. The blocker now mirrors the stage's credit-first ordering:
|
|
79
|
+
credits only outrank the daily cap when they are genuinely short, and
|
|
80
|
+
otherwise the message names the real trigger — "You've reached today's job
|
|
81
|
+
allowance (X/day); a top-up raises your daily allowance so you can keep
|
|
82
|
+
creating now" — matching the hosted daily-cap copy.
|
|
83
|
+
- Release (no-spend mode): `create --guide` and `edit --guide` accept an opt-in
|
|
84
|
+
`--no-spend` output mode (#2194). A cold-agent no-spend study got a guide
|
|
85
|
+
response that repeatedly embedded live create, quote, buy, and payment
|
|
86
|
+
command templates, which buried the safe dry-run and raised the chance of
|
|
87
|
+
picking a prohibited action. With `--no-spend`,
|
|
88
|
+
`data.no_spend_output_mode.enabled` is `true` and the live funding templates
|
|
89
|
+
are omitted — `data.self_fund_next_command`,
|
|
90
|
+
`data.self_fund_next_command_label`, `data.self_fund_handoff`,
|
|
91
|
+
`data.self_fund_preparation`, and `data.checks.payments.suggested_commands`,
|
|
92
|
+
each named in `data.no_spend_output_mode.suppressed_fields`. The dry-run
|
|
93
|
+
command (`data.recommended_no_spend_command` / `data.no_spend_next_command`)
|
|
94
|
+
and the `provider_call` / `credit_debit` / `media_write` false proof in
|
|
95
|
+
`data.mutation` are retained. The funding path stays discoverable without
|
|
96
|
+
dominating via `data.no_spend_output_mode.self_fund_discovery`:
|
|
97
|
+
`rerun_with_funding_command` re-runs the same guide without `--no-spend`, and
|
|
98
|
+
`inspect_methods_command` is a read-only, no-spend payment-method
|
|
99
|
+
inspection. `--no-spend` is a guide output mode: outside `--guide` it is
|
|
100
|
+
rejected with the pointer to `create --dry-run` for a no-spend planned job.
|
|
101
|
+
`luxin create --help` and the packaged `cli.md` / `commands.json` carry the
|
|
102
|
+
flag.
|
|
103
|
+
- Release (trust/billing): a completed, charged job always surfaces an asset
|
|
104
|
+
(#2107). A live create/edit reserves credit before calling the provider and
|
|
105
|
+
settles on the provider's success envelope — but a provider that answered
|
|
106
|
+
SUCCESS with an empty or planned-only asset list used to settle the
|
|
107
|
+
reservation and commit a charged, asset-less job, so the agent was billed for
|
|
108
|
+
nothing and had no recoverable job or asset. The runner now requires at least
|
|
109
|
+
one real (non-planned) asset before settling: otherwise it releases the
|
|
110
|
+
reserved credit and returns a retryable `PROVIDER_COMPLETED_WITHOUT_ASSET`
|
|
111
|
+
failure instead of committing the charge. Nothing to change on your side —
|
|
112
|
+
the debit-without-media outcome is gone.
|
|
113
|
+
- Release (guide reliability): the `create --guide` executable-default read is
|
|
114
|
+
guarded against the shape the hosted registry actually returns (#2109).
|
|
115
|
+
`GET /v1/models` serves the compact model-summary rows, which carry
|
|
116
|
+
`model_execution_status` as a flat field rather than nested under
|
|
117
|
+
`execution`; a nested-only read failed every row's executable check and
|
|
118
|
+
dead-ended the guide at `no_executable_model` even though an executable
|
|
119
|
+
default existed and an explicit `create --dry-run --model fal.bagel` still
|
|
120
|
+
planned for zero credits. The flat-reading fix shipped earlier, but every
|
|
121
|
+
guide fixture used the nested shape, so a regression would have passed CI.
|
|
122
|
+
This release adds a faithful regression test serving the compact/flat shape
|
|
123
|
+
and asserting `ready_to_create` with the executable default selected.
|
|
124
|
+
- Resolved (0.2.2 known limitation): the `dashboard.claim` grant backfill
|
|
125
|
+
landed (#2184), so `luxin claim code` no longer answers `CAPABILITY_DENIED`
|
|
126
|
+
for agents whose tokens predate the hosted dashboard plane. That matters more
|
|
127
|
+
now that the wall itself recommends the command.
|
|
128
|
+
- Release (hosted parity): the Stripe reconciliation sweep is rail-aware and
|
|
129
|
+
transitions confirmed-unsettled pending attempts older than its abandonment
|
|
130
|
+
window to a terminal `expired` state with an audit trail (#2160). Settled
|
|
131
|
+
attempts are never abandoned and live-money retrieval failures still fail
|
|
132
|
+
loudly. No packaged CLI command changed for this; stale open quotes on your
|
|
133
|
+
account simply stop lingering as pending forever.
|
|
134
|
+
- No payment caps, wallet settlement, provider spend, dist-tag mutation, or
|
|
135
|
+
media generation behavior changed in this release bump beyond the
|
|
136
|
+
debited-no-asset release path above, which only ever refunds.
|
|
137
|
+
|
|
9
138
|
## 0.2.2 - 2026-07-30
|
|
10
139
|
|
|
11
140
|
- Release (retention/self-fund): publish the human handoff from #2181. New verb
|