@usenaive-sdk/cli 0.2.3 → 0.2.5

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.
@@ -0,0 +1,267 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const ecommerceCmd = new Command("ecommerce")
5
+ .description("E-commerce data — Google Shopping and Amazon product/seller/review data")
6
+ .addHelpText("after", `
7
+ Subcommands:
8
+ naive ecommerce google <endpoint> Google Shopping data (products, product-info, sellers, reviews)
9
+ naive ecommerce google sellers-ad-url Resolve a Google Sellers ad click URL
10
+ naive ecommerce amazon <endpoint> Amazon data (products, asin, sellers)
11
+ naive ecommerce task-get <id> Retrieve results for a completed task
12
+ naive ecommerce tasks-ready List tasks that are ready to retrieve
13
+
14
+ Google Shopping endpoints:
15
+ products Search Google Shopping products by keyword
16
+ product-info Get detailed info for a specific product
17
+ sellers Get sellers for a specific product
18
+ reviews Get reviews for a specific product
19
+
20
+ Amazon endpoints:
21
+ products Search Amazon products by keyword
22
+ asin Get product details by ASIN
23
+ sellers Get sellers for a product by ASIN
24
+
25
+ All endpoints use the Standard (async) method:
26
+ 1. Submit a task with the initial command (task_post)
27
+ 2. Check if task is ready with 'naive ecommerce tasks-ready'
28
+ 3. Retrieve results with 'naive ecommerce task-get <id>'
29
+
30
+ Examples:
31
+ $ naive ecommerce google products --keyword "laptop"
32
+ $ naive ecommerce google product-info --product-id "123456"
33
+ $ naive ecommerce google sellers --product-id "123456"
34
+ $ naive ecommerce google reviews --product-id "123456"
35
+ $ naive ecommerce google sellers-ad-url --aclk "DChcSEwi..."
36
+ $ naive ecommerce amazon products --keyword "headphones"
37
+ $ naive ecommerce amazon asin --asin "B08N5WRWNW"
38
+ $ naive ecommerce amazon sellers --asin "B08N5WRWNW"
39
+ $ naive ecommerce task-get abc123 --platform google --endpoint products
40
+ $ naive ecommerce tasks-ready --platform google --endpoint products
41
+
42
+ Costs:
43
+ Task submission (task_post): free
44
+ Task retrieval (task_get): 2 credits
45
+ `);
46
+ // ---------------------------------------------------------------------------
47
+ // google <endpoint>
48
+ // ---------------------------------------------------------------------------
49
+ const googleCmd = ecommerceCmd
50
+ .command("google <endpoint>")
51
+ .description("Google Shopping — products, product-info, sellers, reviews (task_post)")
52
+ .option("--keyword <keyword>", "Search keyword (for products)")
53
+ .option("--product-id <id>", "Product ID (for product-info, sellers, reviews)")
54
+ .option("--language-code <code>", "Language code (e.g., en)")
55
+ .option("--location-code <code>", "Location code (e.g., 2840 for US)")
56
+ .option("--tag <tag>", "Tag for the task")
57
+ .addHelpText("after", `
58
+ Endpoints:
59
+ products Requires --keyword
60
+ product-info Requires --product-id
61
+ sellers Requires --product-id
62
+ reviews Requires --product-id
63
+
64
+ Examples:
65
+ $ naive ecommerce google products --keyword "laptop" --location-code 2840
66
+ $ naive ecommerce google product-info --product-id "123456"
67
+ $ naive ecommerce google sellers --product-id "123456"
68
+ $ naive ecommerce google reviews --product-id "123456"
69
+
70
+ Submits a task_post. Use 'naive ecommerce task-get <id>' to retrieve results.
71
+ `)
72
+ .action(async (endpoint, opts) => {
73
+ const body = {};
74
+ if (opts.keyword)
75
+ body.keyword = opts.keyword;
76
+ if (opts.productId)
77
+ body.product_id = opts.productId;
78
+ if (opts.languageCode)
79
+ body.language_code = opts.languageCode;
80
+ if (opts.locationCode)
81
+ body.location_code = parseInt(opts.locationCode);
82
+ if (opts.tag)
83
+ body.tag = opts.tag;
84
+ const slug = endpoint.replace(/_/g, "-");
85
+ const resp = await apiRequest("POST", `/v1/ecommerce/google/${slug}/task`, body);
86
+ handleApiError("ecommerce.google", resp);
87
+ const data = resp.data;
88
+ const taskId = data.tasks?.[0]?.id;
89
+ agentOutput({
90
+ action: `ecommerce.google.${endpoint}`,
91
+ result: resp.data,
92
+ next_steps: [
93
+ ...(taskId
94
+ ? [
95
+ { command: `naive ecommerce tasks-ready --platform google --endpoint ${slug}`, description: "Check if the task is ready" },
96
+ { command: `naive ecommerce task-get ${taskId} --platform google --endpoint ${slug}`, description: "Retrieve results when ready" },
97
+ ]
98
+ : []),
99
+ { command: `naive ecommerce google ${slug} --help`, description: "See all options" },
100
+ ],
101
+ hints: [
102
+ `Google Shopping ${endpoint} task submitted`,
103
+ ...(taskId ? [`Task ID: ${taskId}`] : []),
104
+ "Task submission is free — credits are charged on retrieval (2 credits)",
105
+ ],
106
+ related_commands: ["naive ecommerce task-get", "naive ecommerce tasks-ready"],
107
+ });
108
+ });
109
+ // google sellers-ad-url
110
+ ecommerceCmd
111
+ .command("google-sellers-ad-url")
112
+ .description("Resolve a Google Sellers ad click URL")
113
+ .requiredOption("--aclk <aclk>", "Ad click URL identifier")
114
+ .addHelpText("after", `
115
+ Examples:
116
+ $ naive ecommerce google-sellers-ad-url --aclk "DChcSEwi..."
117
+
118
+ Returns the resolved seller URL from a Google Shopping ad click.
119
+ `)
120
+ .action(async (opts) => {
121
+ const resp = await apiRequest("GET", `/v1/ecommerce/google/sellers/ad-url/${encodeURIComponent(opts.aclk)}`);
122
+ handleApiError("ecommerce.google.sellers-ad-url", resp);
123
+ agentOutput({
124
+ action: "ecommerce.google.sellers-ad-url",
125
+ result: resp.data,
126
+ next_steps: [
127
+ { command: 'naive ecommerce google sellers --product-id "<id>"', description: "Get sellers for a product" },
128
+ ],
129
+ hints: [
130
+ "Resolved Google Sellers ad URL",
131
+ ],
132
+ related_commands: ["naive ecommerce google sellers"],
133
+ });
134
+ });
135
+ // ---------------------------------------------------------------------------
136
+ // amazon <endpoint>
137
+ // ---------------------------------------------------------------------------
138
+ ecommerceCmd
139
+ .command("amazon <endpoint>")
140
+ .description("Amazon — products, asin, sellers (task_post)")
141
+ .option("--keyword <keyword>", "Search keyword (for products)")
142
+ .option("--asin <asin>", "Amazon ASIN (for asin, sellers)")
143
+ .option("--language-code <code>", "Language code")
144
+ .option("--location-code <code>", "Location code")
145
+ .option("--tag <tag>", "Tag for the task")
146
+ .addHelpText("after", `
147
+ Endpoints:
148
+ products Requires --keyword
149
+ asin Requires --asin
150
+ sellers Requires --asin
151
+
152
+ Examples:
153
+ $ naive ecommerce amazon products --keyword "headphones"
154
+ $ naive ecommerce amazon asin --asin "B08N5WRWNW"
155
+ $ naive ecommerce amazon sellers --asin "B08N5WRWNW"
156
+
157
+ Submits a task_post. Use 'naive ecommerce task-get <id>' to retrieve results.
158
+ `)
159
+ .action(async (endpoint, opts) => {
160
+ const body = {};
161
+ if (opts.keyword)
162
+ body.keyword = opts.keyword;
163
+ if (opts.asin)
164
+ body.asin = opts.asin;
165
+ if (opts.languageCode)
166
+ body.language_code = opts.languageCode;
167
+ if (opts.locationCode)
168
+ body.location_code = parseInt(opts.locationCode);
169
+ if (opts.tag)
170
+ body.tag = opts.tag;
171
+ const slug = endpoint.replace(/_/g, "-");
172
+ const resp = await apiRequest("POST", `/v1/ecommerce/amazon/${slug}/task`, body);
173
+ handleApiError("ecommerce.amazon", resp);
174
+ const data = resp.data;
175
+ const taskId = data.tasks?.[0]?.id;
176
+ agentOutput({
177
+ action: `ecommerce.amazon.${endpoint}`,
178
+ result: resp.data,
179
+ next_steps: [
180
+ ...(taskId
181
+ ? [
182
+ { command: `naive ecommerce tasks-ready --platform amazon --endpoint ${slug}`, description: "Check if the task is ready" },
183
+ { command: `naive ecommerce task-get ${taskId} --platform amazon --endpoint ${slug}`, description: "Retrieve results when ready" },
184
+ ]
185
+ : []),
186
+ { command: `naive ecommerce amazon ${slug} --help`, description: "See all options" },
187
+ ],
188
+ hints: [
189
+ `Amazon ${endpoint} task submitted`,
190
+ ...(taskId ? [`Task ID: ${taskId}`] : []),
191
+ "Task submission is free — credits are charged on retrieval (2 credits)",
192
+ ],
193
+ related_commands: ["naive ecommerce task-get", "naive ecommerce tasks-ready"],
194
+ });
195
+ });
196
+ // ---------------------------------------------------------------------------
197
+ // task-get <id>
198
+ // ---------------------------------------------------------------------------
199
+ ecommerceCmd
200
+ .command("task-get <id>")
201
+ .description("Retrieve results for a completed e-commerce task")
202
+ .requiredOption("--platform <platform>", "Platform: google | amazon")
203
+ .requiredOption("--endpoint <endpoint>", "Endpoint: products, product-info, sellers, reviews, asin")
204
+ .option("--format <format>", "Response format: advanced | html (default: advanced)", "advanced")
205
+ .addHelpText("after", `
206
+ Examples:
207
+ $ naive ecommerce task-get abc123 --platform google --endpoint products
208
+ $ naive ecommerce task-get abc123 --platform amazon --endpoint asin --format html
209
+
210
+ Cost: 2 credits
211
+ `)
212
+ .action(async (id, opts) => {
213
+ const slug = opts.endpoint.replace(/_/g, "-");
214
+ let path = `/v1/ecommerce/${opts.platform}/${slug}/task/${id}`;
215
+ if (opts.format === "html")
216
+ path += "/html";
217
+ const resp = await apiRequest("GET", path);
218
+ handleApiError("ecommerce.task-get", resp);
219
+ agentOutput({
220
+ action: "ecommerce.task-get",
221
+ result: resp.data,
222
+ next_steps: [
223
+ ...(opts.format !== "html"
224
+ ? [{ command: `naive ecommerce task-get ${id} --platform ${opts.platform} --endpoint ${opts.endpoint} --format html`, description: "Get HTML format" }]
225
+ : []),
226
+ { command: `naive ecommerce ${opts.platform} ${slug} --help`, description: "Submit another task" },
227
+ ],
228
+ hints: [
229
+ `Retrieved ${opts.platform} ${opts.endpoint} task ${id} (${opts.format} format)`,
230
+ "Cost: 2 credits",
231
+ ],
232
+ related_commands: ["naive ecommerce tasks-ready"],
233
+ });
234
+ });
235
+ // ---------------------------------------------------------------------------
236
+ // tasks-ready
237
+ // ---------------------------------------------------------------------------
238
+ ecommerceCmd
239
+ .command("tasks-ready")
240
+ .description("List e-commerce tasks that are ready to retrieve")
241
+ .requiredOption("--platform <platform>", "Platform: google | amazon")
242
+ .requiredOption("--endpoint <endpoint>", "Endpoint: products, product-info, sellers, reviews, asin")
243
+ .addHelpText("after", `
244
+ Examples:
245
+ $ naive ecommerce tasks-ready --platform google --endpoint products
246
+ $ naive ecommerce tasks-ready --platform amazon --endpoint asin
247
+ `)
248
+ .action(async (opts) => {
249
+ const slug = opts.endpoint.replace(/_/g, "-");
250
+ const resp = await apiRequest("GET", `/v1/ecommerce/${opts.platform}/${slug}/tasks-ready`);
251
+ handleApiError("ecommerce.tasks-ready", resp);
252
+ const data = resp.data;
253
+ const count = data.tasks?.length ?? 0;
254
+ agentOutput({
255
+ action: "ecommerce.tasks-ready",
256
+ result: resp.data,
257
+ next_steps: count > 0
258
+ ? [{ command: `naive ecommerce task-get ${data.tasks[0].id} --platform ${opts.platform} --endpoint ${opts.endpoint}`, description: "Retrieve the first ready task" }]
259
+ : [{ command: `naive ecommerce ${opts.platform} ${slug} --help`, description: "Submit a new task" }],
260
+ hints: [
261
+ `${count} task(s) ready for ${opts.platform} ${opts.endpoint}`,
262
+ ...(count > 0 ? ["Use 'naive ecommerce task-get <id>' to retrieve results (2 credits each)"] : ["No tasks ready yet — check back later"]),
263
+ ],
264
+ related_commands: ["naive ecommerce task-get"],
265
+ });
266
+ });
267
+ //# sourceMappingURL=ecommerce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecommerce.js","sourceRoot":"","sources":["../../src/commands/ecommerce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const seoCmd: Command;