image-skill 0.1.51 → 0.1.52

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 CHANGED
@@ -4,6 +4,15 @@ This changelog tracks the public `image-skill` CLI package and public skill
4
4
  mirror. The npm package metadata remains the authority for tarball integrity and
5
5
  provenance; this file is the human- and agent-readable release map.
6
6
 
7
+ ## 0.1.52 - 2026-06-16
8
+
9
+ - Release (activation/self-fund): publish the quota
10
+ `data.next_actions.self_fund` handoff under an unpublished package version so
11
+ `image-skill usage quota --json` gives activated agents a no-spend first
12
+ action and the browserless x402 quote/buy/status path before or at the quota
13
+ wall. No payment caps, provider routing, wallet action, provider spend, media
14
+ spend, hosted deploy, or production write changed in this release bump.
15
+
7
16
  ## 0.1.51 - 2026-06-14
8
17
 
9
18
  - Release (activation/self-fund): publish the post-0.1.50 public mirror payload
@@ -15,7 +15,7 @@ import { Readable } from "node:stream";
15
15
  import { pipeline } from "node:stream/promises";
16
16
  import os from "node:os";
17
17
 
18
- const VERSION = "0.1.51";
18
+ const VERSION = "0.1.52";
19
19
  const PACKAGE_NAME = "image-skill";
20
20
  const DEFAULT_API_BASE_URL = "https://api.image-skill.com";
21
21
  const DEFAULT_DOCS_BASE_URL = "https://image-skill.com";
@@ -1101,15 +1101,17 @@ async function quota(argv, command = "image-skill quota") {
1101
1101
  if (!token.ok) {
1102
1102
  return withCommand(token.result, command);
1103
1103
  }
1104
- return withCommand(
1105
- await apiRequest({
1104
+ return withQuotaNextActions(
1105
+ withCommand(
1106
+ await apiRequest({
1107
+ command,
1108
+ method: "GET",
1109
+ apiBaseUrl: apiBase(args),
1110
+ path: "/v1/quota",
1111
+ token: token.token,
1112
+ }),
1106
1113
  command,
1107
- method: "GET",
1108
- apiBaseUrl: apiBase(args),
1109
- path: "/v1/quota",
1110
- token: token.token,
1111
- }),
1112
- command,
1114
+ ),
1113
1115
  );
1114
1116
  }
1115
1117
 
@@ -6080,6 +6082,86 @@ function withCommand(result, command) {
6080
6082
  };
6081
6083
  }
6082
6084
 
6085
+ function withQuotaNextActions(result) {
6086
+ const data = result.envelope?.data;
6087
+ if (
6088
+ result.envelope?.ok !== true ||
6089
+ data === null ||
6090
+ typeof data !== "object"
6091
+ ) {
6092
+ return result;
6093
+ }
6094
+ const nextActions = quotaTopUpNextActions(data.top_up);
6095
+ if (nextActions === null) {
6096
+ return result;
6097
+ }
6098
+ return {
6099
+ ...result,
6100
+ envelope: {
6101
+ ...result.envelope,
6102
+ data: {
6103
+ ...data,
6104
+ next_actions: nextActions,
6105
+ },
6106
+ },
6107
+ };
6108
+ }
6109
+
6110
+ function quotaTopUpNextActions(topUp) {
6111
+ const commands = topUp?.commands;
6112
+ if (
6113
+ topUp?.available !== true ||
6114
+ commands === null ||
6115
+ typeof commands !== "object" ||
6116
+ typeof commands.inspect_methods !== "string" ||
6117
+ typeof commands.inspect_packs !== "string" ||
6118
+ typeof commands.quote !== "string" ||
6119
+ typeof commands.buy !== "string" ||
6120
+ typeof commands.status !== "string" ||
6121
+ typeof commands.fallback_quote !== "string" ||
6122
+ typeof commands.fallback_buy !== "string" ||
6123
+ topUp.workflow === null ||
6124
+ typeof topUp.workflow !== "object"
6125
+ ) {
6126
+ return null;
6127
+ }
6128
+
6129
+ return {
6130
+ self_fund: {
6131
+ purpose: "open_browserless_top_up_path",
6132
+ available: true,
6133
+ recommended: topUp.recommended === true,
6134
+ recommendation_reason: topUp.recommendation_reason ?? "available",
6135
+ path: topUp.path,
6136
+ first_safe_command: commands.inspect_methods,
6137
+ first_safe_command_effect: {
6138
+ label: "inspect_payment_methods_no_spend",
6139
+ no_spend: true,
6140
+ live_money: false,
6141
+ provider_call: false,
6142
+ hosted_create: false,
6143
+ payment_object: false,
6144
+ credit_debit: false,
6145
+ media_write: false,
6146
+ },
6147
+ inspect_methods_command: commands.inspect_methods,
6148
+ inspect_packs_command: commands.inspect_packs,
6149
+ quote_command: commands.quote,
6150
+ quote_command_copy_runnable: true,
6151
+ quote_idempotency_key_source: "public_cli_generated_if_missing",
6152
+ buy_command: commands.buy,
6153
+ status_command: commands.status,
6154
+ fallback_quote_command: commands.fallback_quote,
6155
+ fallback_buy_command: commands.fallback_buy,
6156
+ live_money: true,
6157
+ payment_method: topUp.preferred_payment_method,
6158
+ workflow: topUp.workflow,
6159
+ warning:
6160
+ "Start with first_safe_command; it is read-only and no-spend. Quote only creates a payment object. Buy/status and wallet settlement require delegated spend authority.",
6161
+ },
6162
+ };
6163
+ }
6164
+
6083
6165
  function failure(command, exitCode, code, message, retryable, recovery) {
6084
6166
  return {
6085
6167
  exitCode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "image-skill",
3
- "version": "0.1.51",
3
+ "version": "0.1.52",
4
4
  "description": "Zero-setup durable creative-media CLI for agents (image + video + audio + 3D): guide-first creation, model and cost inspection, owned URLs, JSON recovery, payments, reusable assets, and feedback.",
5
5
  "type": "module",
6
6
  "private": false,