@usenaive-sdk/cli 0.15.1 → 1.0.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/README.md +43 -402
- package/dist/index.js +51775 -502
- package/package.json +22 -18
- package/dist/client.d.ts +0 -108
- package/dist/client.js +0 -458
- package/dist/client.js.map +0 -1
- package/dist/commands/account-kits.d.ts +0 -2
- package/dist/commands/account-kits.js +0 -71
- package/dist/commands/account-kits.js.map +0 -1
- package/dist/commands/aeo.d.ts +0 -2
- package/dist/commands/aeo.js +0 -451
- package/dist/commands/aeo.js.map +0 -1
- package/dist/commands/agent-profiles.d.ts +0 -11
- package/dist/commands/agent-profiles.js +0 -120
- package/dist/commands/agent-profiles.js.map +0 -1
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -916
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/app-data.d.ts +0 -2
- package/dist/commands/app-data.js +0 -445
- package/dist/commands/app-data.js.map +0 -1
- package/dist/commands/approvals.d.ts +0 -2
- package/dist/commands/approvals.js +0 -242
- package/dist/commands/approvals.js.map +0 -1
- package/dist/commands/apps.d.ts +0 -9
- package/dist/commands/apps.js +0 -844
- package/dist/commands/apps.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -9
- package/dist/commands/audio.js +0 -391
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -31
- package/dist/commands/auth.js +0 -428
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/billing.d.ts +0 -2
- package/dist/commands/billing.js +0 -250
- package/dist/commands/billing.js.map +0 -1
- package/dist/commands/brain.d.ts +0 -2
- package/dist/commands/brain.js +0 -1300
- package/dist/commands/brain.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js +0 -378
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/business.d.ts +0 -2
- package/dist/commands/business.js +0 -566
- package/dist/commands/business.js.map +0 -1
- package/dist/commands/cards.d.ts +0 -2
- package/dist/commands/cards.js +0 -419
- package/dist/commands/cards.js.map +0 -1
- package/dist/commands/ceo.d.ts +0 -2
- package/dist/commands/ceo.js +0 -369
- package/dist/commands/ceo.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -203
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/companies.d.ts +0 -10
- package/dist/commands/companies.js +0 -283
- package/dist/commands/companies.js.map +0 -1
- package/dist/commands/company-data.d.ts +0 -2
- package/dist/commands/company-data.js +0 -168
- package/dist/commands/company-data.js.map +0 -1
- package/dist/commands/compute.d.ts +0 -2
- package/dist/commands/compute.js +0 -498
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -36
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connections.d.ts +0 -8
- package/dist/commands/connections.js +0 -137
- package/dist/commands/connections.js.map +0 -1
- package/dist/commands/cron-jobs.d.ts +0 -2
- package/dist/commands/cron-jobs.js +0 -245
- package/dist/commands/cron-jobs.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -2
- package/dist/commands/domains.js +0 -474
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/ecommerce.d.ts +0 -2
- package/dist/commands/ecommerce.js +0 -277
- package/dist/commands/ecommerce.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js +0 -336
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/employees.d.ts +0 -2
- package/dist/commands/employees.js +0 -190
- package/dist/commands/employees.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -112
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/formation.d.ts +0 -2
- package/dist/commands/formation.js +0 -273
- package/dist/commands/formation.js.map +0 -1
- package/dist/commands/identity.d.ts +0 -2
- package/dist/commands/identity.js +0 -110
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/images.d.ts +0 -2
- package/dist/commands/images.js +0 -371
- package/dist/commands/images.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/jobs.d.ts +0 -2
- package/dist/commands/jobs.js +0 -144
- package/dist/commands/jobs.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -2
- package/dist/commands/keys.js +0 -156
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/legacy-auth.d.ts +0 -27
- package/dist/commands/legacy-auth.js +0 -64
- package/dist/commands/legacy-auth.js.map +0 -1
- package/dist/commands/llm.d.ts +0 -2
- package/dist/commands/llm.js +0 -125
- package/dist/commands/llm.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -65
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -7
- package/dist/commands/logout.js +0 -55
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -42
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -2
- package/dist/commands/loops.js +0 -260
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/media.d.ts +0 -2
- package/dist/commands/media.js +0 -183
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js +0 -151
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/mobile.d.ts +0 -4
- package/dist/commands/mobile.js +0 -382
- package/dist/commands/mobile.js.map +0 -1
- package/dist/commands/module.d.ts +0 -8
- package/dist/commands/module.js +0 -48
- package/dist/commands/module.js.map +0 -1
- package/dist/commands/objectives.d.ts +0 -2
- package/dist/commands/objectives.js +0 -243
- package/dist/commands/objectives.js.map +0 -1
- package/dist/commands/payments.d.ts +0 -2
- package/dist/commands/payments.js +0 -131
- package/dist/commands/payments.js.map +0 -1
- package/dist/commands/people.d.ts +0 -2
- package/dist/commands/people.js +0 -197
- package/dist/commands/people.js.map +0 -1
- package/dist/commands/phone.d.ts +0 -2
- package/dist/commands/phone.js +0 -289
- package/dist/commands/phone.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -13
- package/dist/commands/projects.js +0 -220
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -2
- package/dist/commands/queue.js +0 -121
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/register.d.ts +0 -2
- package/dist/commands/register.js +0 -88
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/report.d.ts +0 -17
- package/dist/commands/report.js +0 -109
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js +0 -558
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -223
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/seo.d.ts +0 -2
- package/dist/commands/seo.js +0 -528
- package/dist/commands/seo.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -6
- package/dist/commands/sessions.js +0 -109
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/social-data.d.ts +0 -2
- package/dist/commands/social-data.js +0 -245
- package/dist/commands/social-data.js.map +0 -1
- package/dist/commands/social.d.ts +0 -2
- package/dist/commands/social.js +0 -407
- package/dist/commands/social.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js +0 -79
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/support.d.ts +0 -2
- package/dist/commands/support.js +0 -134
- package/dist/commands/support.js.map +0 -1
- package/dist/commands/tasks.d.ts +0 -2
- package/dist/commands/tasks.js +0 -409
- package/dist/commands/tasks.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -69
- package/dist/commands/teams.js +0 -503
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/trading.d.ts +0 -2
- package/dist/commands/trading.js +0 -333
- package/dist/commands/trading.js.map +0 -1
- package/dist/commands/up.d.ts +0 -551
- package/dist/commands/up.js +0 -1149
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -2
- package/dist/commands/usage.js +0 -73
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/use.d.ts +0 -12
- package/dist/commands/use.js +0 -96
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/users.d.ts +0 -10
- package/dist/commands/users.js +0 -82
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -2
- package/dist/commands/vault.js +0 -101
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verification.d.ts +0 -2
- package/dist/commands/verification.js +0 -152
- package/dist/commands/verification.js.map +0 -1
- package/dist/commands/verify-email.d.ts +0 -19
- package/dist/commands/verify-email.js +0 -130
- package/dist/commands/verify-email.js.map +0 -1
- package/dist/commands/video.d.ts +0 -2
- package/dist/commands/video.js +0 -417
- package/dist/commands/video.js.map +0 -1
- package/dist/commands/voice.d.ts +0 -2
- package/dist/commands/voice.js +0 -516
- package/dist/commands/voice.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -2
- package/dist/commands/wallet.js +0 -244
- package/dist/commands/wallet.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -13
- package/dist/commands/webhooks.js +0 -119
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -53
- package/dist/commands/whoami.js.map +0 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/lib/brain-select.d.ts +0 -193
- package/dist/lib/brain-select.js +0 -403
- package/dist/lib/brain-select.js.map +0 -1
- package/dist/lib/cli-validation.d.ts +0 -12
- package/dist/lib/cli-validation.js +0 -46
- package/dist/lib/cli-validation.js.map +0 -1
- package/dist/lib/config-errors.d.ts +0 -4
- package/dist/lib/config-errors.js +0 -13
- package/dist/lib/config-errors.js.map +0 -1
- package/dist/lib/deprecation.d.ts +0 -158
- package/dist/lib/deprecation.js +0 -140
- package/dist/lib/deprecation.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -8
- package/dist/lib/duration.js +0 -11
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/http-response.d.ts +0 -11
- package/dist/lib/http-response.js +0 -96
- package/dist/lib/http-response.js.map +0 -1
- package/dist/lib/llm-paywall.d.ts +0 -82
- package/dist/lib/llm-paywall.js +0 -231
- package/dist/lib/llm-paywall.js.map +0 -1
- package/dist/lib/pricing.d.ts +0 -132
- package/dist/lib/pricing.js +0 -148
- package/dist/lib/pricing.js.map +0 -1
- package/dist/lib/starter-config.d.ts +0 -13
- package/dist/lib/starter-config.js +0 -71
- package/dist/lib/starter-config.js.map +0 -1
- package/dist/lib/stream-frames.d.ts +0 -114
- package/dist/lib/stream-frames.js +0 -169
- package/dist/lib/stream-frames.js.map +0 -1
- package/dist/lib/teams-catalog.d.ts +0 -141
- package/dist/lib/teams-catalog.js +0 -841
- package/dist/lib/teams-catalog.js.map +0 -1
- package/dist/lib/unknown-command.d.ts +0 -71
- package/dist/lib/unknown-command.js +0 -132
- package/dist/lib/unknown-command.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -26
- package/dist/lib/version-check.js +0 -21
- package/dist/lib/version-check.js.map +0 -1
- package/dist/output.d.ts +0 -246
- package/dist/output.js +0 -539
- package/dist/output.js.map +0 -1
- package/dist/prompt.d.ts +0 -17
- package/dist/prompt.js +0 -70
- package/dist/prompt.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -14
- package/dist/version.js.map +0 -1
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
-
import { agentOutput, creditCostHint } from "../output.js";
|
|
4
|
-
import { DATA_API_CREDIT_COSTS as P } from "../lib/pricing.js";
|
|
5
|
-
export const ecommerceCmd = new Command("ecommerce")
|
|
6
|
-
.description("E-commerce data — Google Shopping and Amazon product/seller/review data")
|
|
7
|
-
.addHelpText("after", `
|
|
8
|
-
Subcommands:
|
|
9
|
-
naive ecommerce google <endpoint> Google Shopping data (products, product-info, sellers, reviews)
|
|
10
|
-
naive ecommerce google sellers-ad-url Resolve a Google Sellers ad click URL
|
|
11
|
-
naive ecommerce amazon <endpoint> Amazon data (products, asin, sellers)
|
|
12
|
-
naive ecommerce task-get <id> Retrieve results for a completed task
|
|
13
|
-
naive ecommerce tasks-ready List tasks that are ready to retrieve
|
|
14
|
-
|
|
15
|
-
Google Shopping endpoints:
|
|
16
|
-
products Search Google Shopping products by keyword
|
|
17
|
-
product-info Get detailed info for a specific product
|
|
18
|
-
sellers Get sellers for a specific product
|
|
19
|
-
reviews Get reviews for a specific product
|
|
20
|
-
|
|
21
|
-
Amazon endpoints:
|
|
22
|
-
products Search Amazon products by keyword
|
|
23
|
-
asin Get product details by ASIN
|
|
24
|
-
sellers Get sellers for a product by ASIN
|
|
25
|
-
|
|
26
|
-
All endpoints use the Standard (async) method:
|
|
27
|
-
1. Submit a task with the initial command (task_post)
|
|
28
|
-
2. Check if task is ready with 'naive ecommerce tasks-ready'
|
|
29
|
-
3. Retrieve results with 'naive ecommerce task-get <id>'
|
|
30
|
-
|
|
31
|
-
Examples:
|
|
32
|
-
$ naive ecommerce google products --keyword "laptop"
|
|
33
|
-
$ naive ecommerce google product-info --product-id "123456"
|
|
34
|
-
$ naive ecommerce google sellers --product-id "123456"
|
|
35
|
-
$ naive ecommerce google reviews --product-id "123456"
|
|
36
|
-
$ naive ecommerce google sellers-ad-url --aclk "DChcSEwi..."
|
|
37
|
-
$ naive ecommerce amazon products --keyword "headphones"
|
|
38
|
-
$ naive ecommerce amazon asin --asin "B08N5WRWNW"
|
|
39
|
-
$ naive ecommerce amazon sellers --asin "B08N5WRWNW"
|
|
40
|
-
$ naive ecommerce task-get abc123 --platform google --endpoint products
|
|
41
|
-
$ naive ecommerce tasks-ready --platform google --endpoint products
|
|
42
|
-
|
|
43
|
-
Costs (charged on task SUBMISSION; retrieval and tasks-ready are free):
|
|
44
|
-
google products ${P.ecommerceGoogleProducts} google product-info ${P.ecommerceGoogleProductInfo}
|
|
45
|
-
google sellers ${P.ecommerceGoogleSellers} google reviews ${P.ecommerceGoogleReviews}
|
|
46
|
-
amazon products ${P.ecommerceAmazonProducts} amazon asin ${P.ecommerceAmazonAsin}
|
|
47
|
-
amazon sellers ${P.ecommerceAmazonSellers} google sellers-ad-url free
|
|
48
|
-
|
|
49
|
-
The provider bills only for setting a task, so nothing is charged when you
|
|
50
|
-
collect the results. A review- or row-heavy task settles above the list price
|
|
51
|
-
when it costs us more; the charge is the response's own credits_used.
|
|
52
|
-
`);
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
// google <endpoint>
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
const googleCmd = ecommerceCmd
|
|
57
|
-
.command("google <endpoint>")
|
|
58
|
-
.description("Google Shopping — products, product-info, sellers, reviews (task_post)")
|
|
59
|
-
.option("--keyword <keyword>", "Search keyword (for products)")
|
|
60
|
-
.option("--product-id <id>", "Product ID (for product-info, sellers, reviews)")
|
|
61
|
-
.option("--language-code <code>", "Language code (e.g., en)")
|
|
62
|
-
.option("--location-code <code>", "Location code (e.g., 2840 for US)")
|
|
63
|
-
.option("--tag <tag>", "Tag for the task")
|
|
64
|
-
.addHelpText("after", `
|
|
65
|
-
Endpoints:
|
|
66
|
-
products Requires --keyword
|
|
67
|
-
product-info Requires --product-id
|
|
68
|
-
sellers Requires --product-id
|
|
69
|
-
reviews Requires --product-id
|
|
70
|
-
|
|
71
|
-
Examples:
|
|
72
|
-
$ naive ecommerce google products --keyword "laptop" --location-code 2840
|
|
73
|
-
$ naive ecommerce google product-info --product-id "123456"
|
|
74
|
-
$ naive ecommerce google sellers --product-id "123456"
|
|
75
|
-
$ naive ecommerce google reviews --product-id "123456"
|
|
76
|
-
|
|
77
|
-
Submits a task_post. Use 'naive ecommerce task-get <id>' to retrieve results.
|
|
78
|
-
`)
|
|
79
|
-
.action(async (endpoint, opts) => {
|
|
80
|
-
const body = {};
|
|
81
|
-
if (opts.keyword)
|
|
82
|
-
body.keyword = opts.keyword;
|
|
83
|
-
if (opts.productId)
|
|
84
|
-
body.product_id = opts.productId;
|
|
85
|
-
if (opts.languageCode)
|
|
86
|
-
body.language_code = opts.languageCode;
|
|
87
|
-
if (opts.locationCode)
|
|
88
|
-
body.location_code = parseInt(opts.locationCode);
|
|
89
|
-
if (opts.tag)
|
|
90
|
-
body.tag = opts.tag;
|
|
91
|
-
const slug = endpoint.replace(/_/g, "-");
|
|
92
|
-
const resp = await apiRequest("POST", `/v1/ecommerce/google/${slug}/task`, body);
|
|
93
|
-
handleApiError("ecommerce.google", resp);
|
|
94
|
-
const data = resp.data;
|
|
95
|
-
const taskId = data.tasks?.[0]?.id;
|
|
96
|
-
agentOutput({
|
|
97
|
-
action: `ecommerce.google.${endpoint}`,
|
|
98
|
-
result: resp.data,
|
|
99
|
-
next_steps: [
|
|
100
|
-
...(taskId
|
|
101
|
-
? [
|
|
102
|
-
{ command: `naive ecommerce tasks-ready --platform google --endpoint ${slug}`, description: "Check if the task is ready" },
|
|
103
|
-
{ command: `naive ecommerce task-get ${taskId} --platform google --endpoint ${slug}`, description: "Retrieve results when ready" },
|
|
104
|
-
]
|
|
105
|
-
: []),
|
|
106
|
-
{ command: `naive ecommerce google ${slug} --help`, description: "See all options" },
|
|
107
|
-
],
|
|
108
|
-
hints: [
|
|
109
|
-
`Google Shopping ${endpoint} task submitted`,
|
|
110
|
-
...(taskId ? [`Task ID: ${taskId}`] : []),
|
|
111
|
-
"Credits are charged on submission; retrieving the results is free.",
|
|
112
|
-
...(creditCostHint(resp.data) ? [creditCostHint(resp.data)] : []),
|
|
113
|
-
],
|
|
114
|
-
related_commands: ["naive ecommerce amazon", "naive ecommerce task-get"],
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
// google sellers-ad-url
|
|
118
|
-
ecommerceCmd
|
|
119
|
-
.command("google-sellers-ad-url")
|
|
120
|
-
.description("Resolve a Google Sellers ad click URL")
|
|
121
|
-
.requiredOption("--aclk <aclk>", "Ad click URL identifier")
|
|
122
|
-
.addHelpText("after", `
|
|
123
|
-
Examples:
|
|
124
|
-
$ naive ecommerce google-sellers-ad-url --aclk "DChcSEwi..."
|
|
125
|
-
|
|
126
|
-
Returns the resolved seller URL from a Google Shopping ad click.
|
|
127
|
-
`)
|
|
128
|
-
.action(async (opts) => {
|
|
129
|
-
const resp = await apiRequest("GET", `/v1/ecommerce/google/sellers/ad-url/${encodeURIComponent(opts.aclk)}`);
|
|
130
|
-
handleApiError("ecommerce.google.sellers-ad-url", resp);
|
|
131
|
-
agentOutput({
|
|
132
|
-
action: "ecommerce.google.sellers-ad-url",
|
|
133
|
-
result: resp.data,
|
|
134
|
-
next_steps: [
|
|
135
|
-
{ command: 'naive ecommerce google sellers --product-id "<id>"', description: "Get sellers for a product" },
|
|
136
|
-
],
|
|
137
|
-
hints: [
|
|
138
|
-
"Resolved Google Sellers ad URL",
|
|
139
|
-
],
|
|
140
|
-
related_commands: ["naive ecommerce google products", "naive ecommerce google sellers"],
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
// ---------------------------------------------------------------------------
|
|
144
|
-
// amazon <endpoint>
|
|
145
|
-
// ---------------------------------------------------------------------------
|
|
146
|
-
ecommerceCmd
|
|
147
|
-
.command("amazon <endpoint>")
|
|
148
|
-
.description("Amazon — products, asin, sellers (task_post)")
|
|
149
|
-
.option("--keyword <keyword>", "Search keyword (for products)")
|
|
150
|
-
.option("--asin <asin>", "Amazon ASIN (for asin, sellers)")
|
|
151
|
-
.option("--language-code <code>", "Language code")
|
|
152
|
-
.option("--location-code <code>", "Location code")
|
|
153
|
-
.option("--tag <tag>", "Tag for the task")
|
|
154
|
-
.addHelpText("after", `
|
|
155
|
-
Endpoints:
|
|
156
|
-
products Requires --keyword
|
|
157
|
-
asin Requires --asin
|
|
158
|
-
sellers Requires --asin
|
|
159
|
-
|
|
160
|
-
Examples:
|
|
161
|
-
$ naive ecommerce amazon products --keyword "headphones"
|
|
162
|
-
$ naive ecommerce amazon asin --asin "B08N5WRWNW"
|
|
163
|
-
$ naive ecommerce amazon sellers --asin "B08N5WRWNW"
|
|
164
|
-
|
|
165
|
-
Submits a task_post. Use 'naive ecommerce task-get <id>' to retrieve results.
|
|
166
|
-
`)
|
|
167
|
-
.action(async (endpoint, opts) => {
|
|
168
|
-
const body = {};
|
|
169
|
-
if (opts.keyword)
|
|
170
|
-
body.keyword = opts.keyword;
|
|
171
|
-
if (opts.asin)
|
|
172
|
-
body.asin = opts.asin;
|
|
173
|
-
if (opts.languageCode)
|
|
174
|
-
body.language_code = opts.languageCode;
|
|
175
|
-
if (opts.locationCode)
|
|
176
|
-
body.location_code = parseInt(opts.locationCode);
|
|
177
|
-
if (opts.tag)
|
|
178
|
-
body.tag = opts.tag;
|
|
179
|
-
const slug = endpoint.replace(/_/g, "-");
|
|
180
|
-
const resp = await apiRequest("POST", `/v1/ecommerce/amazon/${slug}/task`, body);
|
|
181
|
-
handleApiError("ecommerce.amazon", resp);
|
|
182
|
-
const data = resp.data;
|
|
183
|
-
const taskId = data.tasks?.[0]?.id;
|
|
184
|
-
agentOutput({
|
|
185
|
-
action: `ecommerce.amazon.${endpoint}`,
|
|
186
|
-
result: resp.data,
|
|
187
|
-
next_steps: [
|
|
188
|
-
...(taskId
|
|
189
|
-
? [
|
|
190
|
-
{ command: `naive ecommerce tasks-ready --platform amazon --endpoint ${slug}`, description: "Check if the task is ready" },
|
|
191
|
-
{ command: `naive ecommerce task-get ${taskId} --platform amazon --endpoint ${slug}`, description: "Retrieve results when ready" },
|
|
192
|
-
]
|
|
193
|
-
: []),
|
|
194
|
-
{ command: `naive ecommerce amazon ${slug} --help`, description: "See all options" },
|
|
195
|
-
],
|
|
196
|
-
hints: [
|
|
197
|
-
`Amazon ${endpoint} task submitted`,
|
|
198
|
-
...(taskId ? [`Task ID: ${taskId}`] : []),
|
|
199
|
-
"Credits are charged on submission; retrieving the results is free.",
|
|
200
|
-
...(creditCostHint(resp.data) ? [creditCostHint(resp.data)] : []),
|
|
201
|
-
],
|
|
202
|
-
related_commands: ["naive ecommerce google", "naive ecommerce task-get"],
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
// ---------------------------------------------------------------------------
|
|
206
|
-
// task-get <id>
|
|
207
|
-
// ---------------------------------------------------------------------------
|
|
208
|
-
ecommerceCmd
|
|
209
|
-
.command("task-get <id>")
|
|
210
|
-
.description("Retrieve results for a completed e-commerce task")
|
|
211
|
-
.requiredOption("--platform <platform>", "Platform: google | amazon")
|
|
212
|
-
.requiredOption("--endpoint <endpoint>", "Endpoint: products, product-info, sellers, reviews, asin")
|
|
213
|
-
.option("--format <format>", "Response format: advanced | html (default: advanced)", "advanced")
|
|
214
|
-
.addHelpText("after", `
|
|
215
|
-
Examples:
|
|
216
|
-
$ naive ecommerce task-get abc123 --platform google --endpoint products
|
|
217
|
-
$ naive ecommerce task-get abc123 --platform amazon --endpoint asin --format html
|
|
218
|
-
|
|
219
|
-
Cost: free — the task was charged when you submitted it.
|
|
220
|
-
`)
|
|
221
|
-
.action(async (id, opts) => {
|
|
222
|
-
const slug = opts.endpoint.replace(/_/g, "-");
|
|
223
|
-
let path = `/v1/ecommerce/${opts.platform}/${slug}/task/${id}`;
|
|
224
|
-
if (opts.format === "html")
|
|
225
|
-
path += "/html";
|
|
226
|
-
const resp = await apiRequest("GET", path);
|
|
227
|
-
handleApiError("ecommerce.task-get", resp);
|
|
228
|
-
agentOutput({
|
|
229
|
-
action: "ecommerce.task-get",
|
|
230
|
-
result: resp.data,
|
|
231
|
-
next_steps: [
|
|
232
|
-
...(opts.format !== "html"
|
|
233
|
-
? [{ command: `naive ecommerce task-get ${id} --platform ${opts.platform} --endpoint ${opts.endpoint} --format html`, description: "Get HTML format" }]
|
|
234
|
-
: []),
|
|
235
|
-
{ command: `naive ecommerce ${opts.platform} ${slug} --help`, description: "Submit another task" },
|
|
236
|
-
],
|
|
237
|
-
hints: [
|
|
238
|
-
`Retrieved ${opts.platform} ${opts.endpoint} task ${id} (${opts.format} format)`,
|
|
239
|
-
// Derived from the response's authoritative credits_used, not a constant (N7).
|
|
240
|
-
...(creditCostHint(resp.data) ? [creditCostHint(resp.data)] : []),
|
|
241
|
-
],
|
|
242
|
-
related_commands: ["naive ecommerce tasks-ready"],
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
// ---------------------------------------------------------------------------
|
|
246
|
-
// tasks-ready
|
|
247
|
-
// ---------------------------------------------------------------------------
|
|
248
|
-
ecommerceCmd
|
|
249
|
-
.command("tasks-ready")
|
|
250
|
-
.description("List e-commerce tasks that are ready to retrieve")
|
|
251
|
-
.requiredOption("--platform <platform>", "Platform: google | amazon")
|
|
252
|
-
.requiredOption("--endpoint <endpoint>", "Endpoint: products, product-info, sellers, reviews, asin")
|
|
253
|
-
.addHelpText("after", `
|
|
254
|
-
Examples:
|
|
255
|
-
$ naive ecommerce tasks-ready --platform google --endpoint products
|
|
256
|
-
$ naive ecommerce tasks-ready --platform amazon --endpoint asin
|
|
257
|
-
`)
|
|
258
|
-
.action(async (opts) => {
|
|
259
|
-
const slug = opts.endpoint.replace(/_/g, "-");
|
|
260
|
-
const resp = await apiRequest("GET", `/v1/ecommerce/${opts.platform}/${slug}/tasks-ready`);
|
|
261
|
-
handleApiError("ecommerce.tasks-ready", resp);
|
|
262
|
-
const data = resp.data;
|
|
263
|
-
const count = data.tasks?.length ?? 0;
|
|
264
|
-
agentOutput({
|
|
265
|
-
action: "ecommerce.tasks-ready",
|
|
266
|
-
result: resp.data,
|
|
267
|
-
next_steps: count > 0
|
|
268
|
-
? [{ command: `naive ecommerce task-get ${data.tasks[0].id} --platform ${opts.platform} --endpoint ${opts.endpoint}`, description: "Retrieve the first ready task" }]
|
|
269
|
-
: [{ command: `naive ecommerce ${opts.platform} ${slug} --help`, description: "Submit a new task" }],
|
|
270
|
-
hints: [
|
|
271
|
-
`${count} task(s) ready for ${opts.platform} ${opts.endpoint}`,
|
|
272
|
-
...(count > 0 ? ["Use 'naive ecommerce task-get <id>' to retrieve results (free — charged at submission)"] : ["No tasks ready yet — check back later"]),
|
|
273
|
-
],
|
|
274
|
-
related_commands: ["naive ecommerce task-get"],
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
//# sourceMappingURL=ecommerce.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ecommerce.js","sourceRoot":"","sources":["../../src/commands/ecommerce.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/email.d.ts
DELETED
package/dist/commands/email.js
DELETED
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
-
import { agentOutput, creditCostHint } from "../output.js";
|
|
4
|
-
import { FIXED_CREDIT_COSTS, reportedCreditsUsed } from "../lib/pricing.js";
|
|
5
|
-
import { parseIntegerOption } from "../lib/cli-validation.js";
|
|
6
|
-
export const emailCmd = new Command("email")
|
|
7
|
-
.description("Send and manage emails using provisioned inboxes")
|
|
8
|
-
.addHelpText("after", `
|
|
9
|
-
Subcommands:
|
|
10
|
-
naive email inboxes List available email inboxes (get UUIDs for sending)
|
|
11
|
-
naive email create Create a new email inbox
|
|
12
|
-
naive email delete Delete (deactivate) an email inbox
|
|
13
|
-
naive email send Send an email from a specific inbox
|
|
14
|
-
naive email inbox List received emails
|
|
15
|
-
naive email sent List sent emails
|
|
16
|
-
naive email read Read full email content by ID
|
|
17
|
-
|
|
18
|
-
Workflow:
|
|
19
|
-
1. naive email create --local-part support → create a new inbox
|
|
20
|
-
2. naive email inboxes → discover available from addresses
|
|
21
|
-
3. naive email send --from-inbox <uuid> --to ... → send an email
|
|
22
|
-
4. naive email inbox → check for replies
|
|
23
|
-
5. naive email read <id> → read full email content
|
|
24
|
-
|
|
25
|
-
Identity-aware: All operations are scoped to inboxes provisioned
|
|
26
|
-
for your company. Use 'naive identity emails' to see all inboxes.
|
|
27
|
-
|
|
28
|
-
Examples:
|
|
29
|
-
$ naive email create --local-part support
|
|
30
|
-
$ naive email inboxes
|
|
31
|
-
$ naive email send --from-inbox abc-123 --to client@example.com --subject "Hello" --body "Hi there"
|
|
32
|
-
$ naive email inbox --limit 10
|
|
33
|
-
$ naive email read msg-uuid-456
|
|
34
|
-
$ naive email delete <inbox-uuid>
|
|
35
|
-
`);
|
|
36
|
-
emailCmd
|
|
37
|
-
.command("inboxes")
|
|
38
|
-
.description("List all email inboxes available for sending (returns inbox UUIDs)")
|
|
39
|
-
.addHelpText("after", `
|
|
40
|
-
Examples:
|
|
41
|
-
$ naive email inboxes
|
|
42
|
-
|
|
43
|
-
Output includes:
|
|
44
|
-
- id: inbox UUID (use as --from-inbox when sending)
|
|
45
|
-
- address: the email address (e.g., support@yourcompany.com)
|
|
46
|
-
- name: display name
|
|
47
|
-
- status: active or disabled
|
|
48
|
-
|
|
49
|
-
Note: This is equivalent to 'naive identity emails'. Use either command.
|
|
50
|
-
`)
|
|
51
|
-
.action(async () => {
|
|
52
|
-
const resp = await apiRequest("GET", "/v1/email/inboxes");
|
|
53
|
-
handleApiError("email.inboxes", resp);
|
|
54
|
-
const data = resp.data;
|
|
55
|
-
const count = data.inboxes?.length ?? 0;
|
|
56
|
-
agentOutput({
|
|
57
|
-
action: "email.inboxes",
|
|
58
|
-
result: resp.data,
|
|
59
|
-
next_steps: [
|
|
60
|
-
...(count > 0
|
|
61
|
-
? [{ command: `naive email send --from-inbox ${data.inboxes[0].id} --to <recipient> --subject <subject> --body <body>`, description: "Send an email using the first inbox" }]
|
|
62
|
-
: []),
|
|
63
|
-
{ command: "naive email inbox", description: "Check received emails" },
|
|
64
|
-
],
|
|
65
|
-
hints: [
|
|
66
|
-
`${count} inbox${count !== 1 ? "es" : ""} available for sending`,
|
|
67
|
-
"Use the inbox 'id' field as the --from-inbox parameter when sending",
|
|
68
|
-
"Create new inboxes with 'naive email create --local-part <name>'",
|
|
69
|
-
],
|
|
70
|
-
related_commands: ["naive email create", "naive email send", "naive email inbox", "naive identity emails"],
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
emailCmd
|
|
74
|
-
.command("create")
|
|
75
|
-
.description("Create a new email inbox on your company's domain")
|
|
76
|
-
.requiredOption("--local-part <name>", "The part before the @ sign (e.g., 'support', 'hello', 'sales-team')")
|
|
77
|
-
.option("--domain-id <uuid>", "Specific domain UUID (uses company's default domain if not set)")
|
|
78
|
-
.addHelpText("after", `
|
|
79
|
-
Examples:
|
|
80
|
-
$ naive email create --local-part support
|
|
81
|
-
$ naive email create --local-part sales-team
|
|
82
|
-
$ naive email create --local-part hello --domain-id <domain-uuid>
|
|
83
|
-
|
|
84
|
-
What this does:
|
|
85
|
-
1. Validates the local_part (letters, numbers, dots, hyphens, min 2 chars)
|
|
86
|
-
2. Finds your company's active domain (or uses --domain-id)
|
|
87
|
-
3. Creates the inbox as local_part@yourdomain.com
|
|
88
|
-
4. Returns the inbox UUID for use in 'naive email send'
|
|
89
|
-
|
|
90
|
-
Requirements:
|
|
91
|
-
- Your company must have at least one active domain
|
|
92
|
-
- The email address must not already exist
|
|
93
|
-
|
|
94
|
-
The resulting address will be: <local_part>@<your-company-domain>
|
|
95
|
-
`)
|
|
96
|
-
.action(async (opts) => {
|
|
97
|
-
const resp = await apiRequest("POST", "/v1/email/inboxes", {
|
|
98
|
-
local_part: opts.localPart,
|
|
99
|
-
...(opts.domainId && { domain_id: opts.domainId }),
|
|
100
|
-
});
|
|
101
|
-
handleApiError("email.create", resp);
|
|
102
|
-
const data = resp.data;
|
|
103
|
-
agentOutput({
|
|
104
|
-
action: "email.create",
|
|
105
|
-
result: resp.data,
|
|
106
|
-
next_steps: [
|
|
107
|
-
{ command: `naive email send --from-inbox ${data.id} --to <recipient> --subject <subject> --body <body>`, description: "Send an email from this new inbox" },
|
|
108
|
-
{ command: "naive email inboxes", description: "List all inboxes including the new one" },
|
|
109
|
-
{ command: "naive email inbox", description: "Monitor this inbox for incoming emails" },
|
|
110
|
-
],
|
|
111
|
-
hints: [
|
|
112
|
-
`Inbox created: ${data.address}`,
|
|
113
|
-
`Inbox UUID: ${data.id}`,
|
|
114
|
-
"Use this UUID as --from-inbox when sending emails",
|
|
115
|
-
],
|
|
116
|
-
related_commands: ["naive email send", "naive email inboxes", "naive email delete"],
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
emailCmd
|
|
120
|
-
.command("delete <inbox_id>")
|
|
121
|
-
.description("Delete (deactivate) an email inbox — emails to this address will no longer be received")
|
|
122
|
-
.addHelpText("after", `
|
|
123
|
-
Examples:
|
|
124
|
-
$ naive email delete 550e8400-e29b-41d4-a716-446655440000
|
|
125
|
-
|
|
126
|
-
What this does:
|
|
127
|
-
Soft-deletes the inbox (marks as inactive). Emails sent to this
|
|
128
|
-
address will no longer be routed to your company.
|
|
129
|
-
|
|
130
|
-
Notes:
|
|
131
|
-
- This is a soft delete — the address can be reclaimed later
|
|
132
|
-
- Any emails already received remain accessible via 'naive email inbox'
|
|
133
|
-
- Use 'naive email inboxes' to find the inbox UUID
|
|
134
|
-
`)
|
|
135
|
-
.action(async (inboxId) => {
|
|
136
|
-
const resp = await apiRequest("DELETE", `/v1/email/inboxes/${inboxId}`);
|
|
137
|
-
handleApiError("email.delete", resp);
|
|
138
|
-
const data = resp.data;
|
|
139
|
-
agentOutput({
|
|
140
|
-
action: "email.delete",
|
|
141
|
-
result: resp.data,
|
|
142
|
-
next_steps: [
|
|
143
|
-
{ command: "naive email inboxes", description: "Verify inbox is removed from active list" },
|
|
144
|
-
{ command: "naive email create --local-part <name>", description: "Create a replacement inbox" },
|
|
145
|
-
],
|
|
146
|
-
hints: [
|
|
147
|
-
`Inbox deactivated: ${data.address}`,
|
|
148
|
-
"Emails to this address will no longer be received",
|
|
149
|
-
"Existing emails remain accessible",
|
|
150
|
-
],
|
|
151
|
-
related_commands: ["naive email inboxes", "naive email create"],
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
emailCmd
|
|
155
|
-
.command("send")
|
|
156
|
-
.description("Send an email from a specific provisioned inbox")
|
|
157
|
-
.requiredOption("--from-inbox <uuid>", "Inbox UUID to send from (get via 'naive email inboxes')")
|
|
158
|
-
.requiredOption("--to <email>", "Recipient email address")
|
|
159
|
-
.requiredOption("--subject <subject>", "Email subject line")
|
|
160
|
-
.requiredOption("--body <body>", "Email body (plain text or HTML)")
|
|
161
|
-
.option("--reply-to <email>", "Reply-to address (if different from inbox)")
|
|
162
|
-
.addHelpText("after", `
|
|
163
|
-
Examples:
|
|
164
|
-
$ naive email send --from-inbox abc-123-uuid --to client@example.com --subject "Invoice Ready" --body "Your invoice is attached."
|
|
165
|
-
$ naive email send --from-inbox abc-123-uuid --to support@vendor.com --subject "Question" --body "<h1>Hi</h1><p>Body here</p>"
|
|
166
|
-
|
|
167
|
-
What this does:
|
|
168
|
-
1. Validates the inbox UUID belongs to your company
|
|
169
|
-
2. Sends the email via the provisioned email service
|
|
170
|
-
3. Deducts ${FIXED_CREDIT_COSTS.emailSend} credits immediately
|
|
171
|
-
4. Returns a Naive message ID that works with 'naive email read'
|
|
172
|
-
|
|
173
|
-
Parameters:
|
|
174
|
-
--from-inbox The UUID of the inbox (NOT the email address). Get this from 'naive email inboxes'
|
|
175
|
-
--to Recipient email address
|
|
176
|
-
--subject Subject line
|
|
177
|
-
--body Body content (plain text or HTML — HTML tags are auto-detected)
|
|
178
|
-
--reply-to Optional reply-to override
|
|
179
|
-
|
|
180
|
-
Cost: ${FIXED_CREDIT_COSTS.emailSend} credits per email sent
|
|
181
|
-
`)
|
|
182
|
-
.action(async (opts) => {
|
|
183
|
-
const resp = await apiRequest("POST", "/v1/email/send", {
|
|
184
|
-
from_inbox: opts.fromInbox,
|
|
185
|
-
to: opts.to,
|
|
186
|
-
subject: opts.subject,
|
|
187
|
-
body: opts.body,
|
|
188
|
-
...(opts.replyTo && { reply_to: opts.replyTo }),
|
|
189
|
-
});
|
|
190
|
-
handleApiError("email.send", resp);
|
|
191
|
-
const data = resp.data;
|
|
192
|
-
const creditsUsed = reportedCreditsUsed(resp.data, FIXED_CREDIT_COSTS.emailSend);
|
|
193
|
-
const readableMessageId = data.message_id;
|
|
194
|
-
agentOutput({
|
|
195
|
-
action: "email.send",
|
|
196
|
-
result: resp.data,
|
|
197
|
-
next_steps: [
|
|
198
|
-
{ command: "naive email inbox", description: "Monitor inbox for replies" },
|
|
199
|
-
...(!readableMessageId
|
|
200
|
-
? []
|
|
201
|
-
: [{ command: `naive email read ${readableMessageId}`, description: "View the sent message details", when: "You want to review the sent content" }]),
|
|
202
|
-
{ command: "naive email sent", description: "List sent messages" },
|
|
203
|
-
{ command: "naive usage", description: "Check credit deduction" },
|
|
204
|
-
],
|
|
205
|
-
hints: [
|
|
206
|
-
`Email sent successfully (id: ${data.id})`,
|
|
207
|
-
...(readableMessageId ? [`Naive message id: ${readableMessageId}`] : []),
|
|
208
|
-
// Prefer the response's authoritative credits_used via creditCostHint (N7);
|
|
209
|
-
// fall back to the fixed pricing constant when the response omits it.
|
|
210
|
-
// Either way the credits are deducted immediately on send (not on a later job).
|
|
211
|
-
creditCostHint(resp.data)
|
|
212
|
-
? `${creditCostHint(resp.data)} (deducted immediately)`
|
|
213
|
-
: `Cost: ${creditsUsed} credits (deducted immediately)`,
|
|
214
|
-
...(data.tracking_available === false
|
|
215
|
-
? ["Delivery succeeded, but sent-message tracking is temporarily unavailable"]
|
|
216
|
-
: []),
|
|
217
|
-
"Monitor for replies with 'naive email inbox'",
|
|
218
|
-
],
|
|
219
|
-
related_commands: ["naive email inbox", "naive email read", "naive email inboxes"],
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
emailCmd
|
|
223
|
-
.command("sent")
|
|
224
|
-
.description("List sent emails")
|
|
225
|
-
.option("--limit <n>", "Maximum number of sent emails to return (default: 20, max: 100)", (value) => parseIntegerOption(value, "limit", 1, 100), 20)
|
|
226
|
-
.option("--offset <n>", "Number of sent emails to skip (default: 0)", (value) => parseIntegerOption(value, "offset", 0), 0)
|
|
227
|
-
.action(async (opts) => {
|
|
228
|
-
const params = new URLSearchParams({ limit: String(opts.limit), offset: String(opts.offset) });
|
|
229
|
-
const resp = await apiRequest("GET", `/v1/email/sent?${params}`);
|
|
230
|
-
handleApiError("email.sent", resp);
|
|
231
|
-
const data = resp.data;
|
|
232
|
-
const messages = data.emails ?? [];
|
|
233
|
-
const nextOffset = opts.offset + messages.length;
|
|
234
|
-
agentOutput({
|
|
235
|
-
action: "email.sent",
|
|
236
|
-
result: resp.data,
|
|
237
|
-
next_steps: [
|
|
238
|
-
...(messages[0]
|
|
239
|
-
? [{ command: `naive email read ${messages[0].id}`, description: "Read the most recent sent message" }]
|
|
240
|
-
: []),
|
|
241
|
-
...(data.has_more
|
|
242
|
-
? [{ command: `naive email sent --limit ${opts.limit} --offset ${nextOffset}`, description: "Load the next page of sent messages" }]
|
|
243
|
-
: []),
|
|
244
|
-
],
|
|
245
|
-
hints: [`Found ${messages.length} sent email${messages.length === 1 ? "" : "s"}`],
|
|
246
|
-
related_commands: ["naive email read", "naive email inbox", "naive email send"],
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
emailCmd
|
|
250
|
-
.command("inbox")
|
|
251
|
-
.description("List received emails for your inboxes")
|
|
252
|
-
.option("--inbox <uuid>", "Filter by specific inbox UUID")
|
|
253
|
-
.option("--limit <n>", "Maximum number of emails to return (default: 20)", "20")
|
|
254
|
-
.addHelpText("after", `
|
|
255
|
-
Examples:
|
|
256
|
-
$ naive email inbox
|
|
257
|
-
$ naive email inbox --limit 5
|
|
258
|
-
$ naive email inbox --inbox abc-123-uuid --limit 10
|
|
259
|
-
|
|
260
|
-
What this does:
|
|
261
|
-
Returns received emails for your company's inboxes, ordered by
|
|
262
|
-
most recent. Each email includes:
|
|
263
|
-
- id: message UUID (use with 'naive email read')
|
|
264
|
-
- from: sender address
|
|
265
|
-
- to: recipient (your inbox)
|
|
266
|
-
- subject: email subject
|
|
267
|
-
- received_at: timestamp
|
|
268
|
-
- snippet: preview of body text
|
|
269
|
-
|
|
270
|
-
Use --inbox to filter to a specific inbox, or omit to see all.
|
|
271
|
-
`)
|
|
272
|
-
.action(async (opts) => {
|
|
273
|
-
const params = new URLSearchParams({ limit: opts.limit });
|
|
274
|
-
if (opts.inbox)
|
|
275
|
-
params.set("from_inbox", opts.inbox);
|
|
276
|
-
const resp = await apiRequest("GET", `/v1/email/inbox?${params}`);
|
|
277
|
-
handleApiError("email.inbox", resp);
|
|
278
|
-
const data = resp.data;
|
|
279
|
-
const count = data.emails?.length ?? 0;
|
|
280
|
-
agentOutput({
|
|
281
|
-
action: "email.inbox",
|
|
282
|
-
result: resp.data,
|
|
283
|
-
next_steps: [
|
|
284
|
-
...(count > 0
|
|
285
|
-
? [{ command: `naive email read ${data.emails[0].id}`, description: "Read the most recent email" }]
|
|
286
|
-
: []),
|
|
287
|
-
{ command: "naive email inbox --limit 50", description: "Load more emails" },
|
|
288
|
-
{ command: "naive email send --from-inbox <uuid> --to <email> --subject <subject> --body <body>", description: "Reply to an email" },
|
|
289
|
-
],
|
|
290
|
-
hints: [
|
|
291
|
-
`${count} email${count !== 1 ? "s" : ""} found`,
|
|
292
|
-
"Use 'naive email read <id>' to see full email content",
|
|
293
|
-
],
|
|
294
|
-
related_commands: ["naive email read", "naive email send", "naive email inboxes"],
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
emailCmd
|
|
298
|
-
.command("read <message_id>")
|
|
299
|
-
.description("Read the full content of a specific email by its ID")
|
|
300
|
-
.addHelpText("after", `
|
|
301
|
-
Examples:
|
|
302
|
-
$ naive email read 550e8400-e29b-41d4-a716-446655440000
|
|
303
|
-
|
|
304
|
-
What this does:
|
|
305
|
-
Returns the full email content including:
|
|
306
|
-
- From, To, Subject, Date
|
|
307
|
-
- Full body (HTML and/or plain text)
|
|
308
|
-
- Attachments list (if any)
|
|
309
|
-
- Headers
|
|
310
|
-
|
|
311
|
-
Use this to:
|
|
312
|
-
- Read a full email after seeing it in 'naive email inbox'
|
|
313
|
-
- Review a sent email after seeing it in 'naive email sent'
|
|
314
|
-
- Extract information from an email for further processing
|
|
315
|
-
`)
|
|
316
|
-
.action(async (id) => {
|
|
317
|
-
const resp = await apiRequest("GET", `/v1/email/${id}`);
|
|
318
|
-
handleApiError("email.read", resp);
|
|
319
|
-
const data = resp.data;
|
|
320
|
-
const replyAddress = data.direction === "sent" ? data.to : data.from;
|
|
321
|
-
agentOutput({
|
|
322
|
-
action: "email.read",
|
|
323
|
-
result: resp.data,
|
|
324
|
-
next_steps: [
|
|
325
|
-
{ command: "naive email inbox", description: "Go back to inbox list" },
|
|
326
|
-
{ command: `naive email send --from-inbox <uuid> --to ${replyAddress} --subject "Re: ${data.subject}" --body <reply>`, description: data.direction === "sent" ? "Send a follow-up" : "Reply to this email" },
|
|
327
|
-
],
|
|
328
|
-
hints: [
|
|
329
|
-
data.direction === "sent"
|
|
330
|
-
? "This is a sent message; use the recipient address to follow up"
|
|
331
|
-
: "Use the sender address with 'naive email send' to reply",
|
|
332
|
-
],
|
|
333
|
-
related_commands: ["naive email inbox", "naive email send"],
|
|
334
|
-
});
|
|
335
|
-
});
|
|
336
|
-
//# sourceMappingURL=email.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/commands/email.ts"],"names":[],"mappings":"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"}
|