@sangria-sdk/cli 0.1.0 → 0.1.2
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 +4 -0
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +5 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/discover.d.ts +2 -0
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +33 -0
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/settings.d.ts +12 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +59 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/topup.d.ts +6 -0
- package/dist/commands/topup.d.ts.map +1 -0
- package/dist/commands/topup.js +31 -0
- package/dist/commands/topup.js.map +1 -0
- package/dist/lib/args.d.ts.map +1 -1
- package/dist/lib/args.js +23 -3
- package/dist/lib/args.js.map +1 -1
- package/dist/lib/client.d.ts +6 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +54 -4
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -6
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.js +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/help.d.ts.map +1 -1
- package/dist/lib/help.js +15 -3
- package/dist/lib/help.js.map +1 -1
- package/dist/lib/money.d.ts +1 -0
- package/dist/lib/money.d.ts.map +1 -1
- package/dist/lib/money.js +8 -0
- package/dist/lib/money.js.map +1 -1
- package/dist/lib/output.d.ts +8 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +11 -0
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +18 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/types/api.d.ts +28 -1
- package/dist/types/api.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -30,8 +30,12 @@ sangria auth status
|
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
sangria balance
|
|
33
|
+
sangria settings set-phone "(415) 555-2671"
|
|
34
|
+
sangria settings set-address --line1 "123 Market St" --city "San Francisco" --state CA --postal-code 94105
|
|
33
35
|
sangria discover "Nespresso decaf espresso pods under $50" --reasoning "User prefers decaf pods."
|
|
34
36
|
sangria buy <discovery_id> <sku>
|
|
37
|
+
sangria topup --amount 25.00
|
|
38
|
+
sangria topup confirm <topup_id> --code 123456
|
|
35
39
|
```
|
|
36
40
|
|
|
37
41
|
Add `--json` for machine-readable output:
|
package/dist/cli.js
CHANGED
|
@@ -4,13 +4,21 @@ import { runAuthCommand } from "./commands/auth.js";
|
|
|
4
4
|
import { runBalanceCommand } from "./commands/balance.js";
|
|
5
5
|
import { runBuyCommand } from "./commands/buy.js";
|
|
6
6
|
import { runDiscoverCommand } from "./commands/discover.js";
|
|
7
|
+
import { runSettingsCommand } from "./commands/settings.js";
|
|
8
|
+
import { runTopupCommand } from "./commands/topup.js";
|
|
7
9
|
import { resolveConfig } from "./lib/config.js";
|
|
8
10
|
import { CliError, EXIT } from "./lib/errors.js";
|
|
9
11
|
import { helpText } from "./lib/help.js";
|
|
12
|
+
import { cliVersion } from "./lib/version.js";
|
|
13
|
+
import { consumeUpdateAvailable } from "./lib/client.js";
|
|
10
14
|
async function main(argv) {
|
|
11
15
|
const parsed = parseArgs(argv);
|
|
12
16
|
const json = boolFlag(parsed.flags, "json");
|
|
13
17
|
const verbose = boolFlag(parsed.flags, "verbose");
|
|
18
|
+
if (boolFlag(parsed.flags, "version")) {
|
|
19
|
+
process.stdout.write(`${cliVersion()}\n`);
|
|
20
|
+
return EXIT.success;
|
|
21
|
+
}
|
|
14
22
|
if (boolFlag(parsed.flags, "help") || parsed.command.length === 0) {
|
|
15
23
|
process.stdout.write(helpText());
|
|
16
24
|
return EXIT.success;
|
|
@@ -25,6 +33,13 @@ async function main(argv) {
|
|
|
25
33
|
}
|
|
26
34
|
const ctx = { config, json, verbose };
|
|
27
35
|
const [group, subcommand, ...args] = parsed.command;
|
|
36
|
+
// The env-fallback notice is meant for non-auth commands ("you might
|
|
37
|
+
// want to save this persistently"). Inside `auth` the user is already
|
|
38
|
+
// explicitly managing config — redundant for set/status, contradictory
|
|
39
|
+
// for unset (which has its own "still in env" notice).
|
|
40
|
+
if (config.apiKeySource === "env" && group !== "auth") {
|
|
41
|
+
process.stderr.write(`notice: using SANGRIA_API_KEY from your shell environment. Run \`sangria auth set <key>\` to save it persistently.\n`);
|
|
42
|
+
}
|
|
28
43
|
if (group === "auth") {
|
|
29
44
|
return runAuthCommand(subcommand, args, ctx);
|
|
30
45
|
}
|
|
@@ -35,11 +50,29 @@ async function main(argv) {
|
|
|
35
50
|
return runDiscoverCommand(subcommand, {
|
|
36
51
|
reasoning: stringFlag(parsed.flags, "reasoning"),
|
|
37
52
|
context: stringFlag(parsed.flags, "context"),
|
|
53
|
+
minPrice: stringFlag(parsed.flags, "min-price"),
|
|
54
|
+
maxPrice: stringFlag(parsed.flags, "max-price"),
|
|
38
55
|
}, ctx);
|
|
39
56
|
}
|
|
40
57
|
if (group === "buy") {
|
|
41
58
|
return runBuyCommand(subcommand, args[0], ctx);
|
|
42
59
|
}
|
|
60
|
+
if (group === "topup") {
|
|
61
|
+
return runTopupCommand(subcommand, args, {
|
|
62
|
+
amount: stringFlag(parsed.flags, "amount"),
|
|
63
|
+
code: stringFlag(parsed.flags, "code"),
|
|
64
|
+
}, ctx);
|
|
65
|
+
}
|
|
66
|
+
if (group === "settings") {
|
|
67
|
+
return runSettingsCommand(subcommand, args, {
|
|
68
|
+
line1: stringFlag(parsed.flags, "line1"),
|
|
69
|
+
line2: stringFlag(parsed.flags, "line2"),
|
|
70
|
+
city: stringFlag(parsed.flags, "city"),
|
|
71
|
+
state: stringFlag(parsed.flags, "state"),
|
|
72
|
+
postalCode: stringFlag(parsed.flags, "postal-code"),
|
|
73
|
+
country: stringFlag(parsed.flags, "country"),
|
|
74
|
+
}, ctx);
|
|
75
|
+
}
|
|
43
76
|
throw new CliError(`Unknown command: ${parsed.command.join(" ")}`, EXIT.usage);
|
|
44
77
|
}
|
|
45
78
|
const argv = process.argv.slice(2);
|
|
@@ -75,5 +108,10 @@ main(argv)
|
|
|
75
108
|
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
76
109
|
}
|
|
77
110
|
process.exitCode = EXIT.generic;
|
|
111
|
+
})
|
|
112
|
+
.finally(() => {
|
|
113
|
+
if (consumeUpdateAvailable()) {
|
|
114
|
+
process.stderr.write(`notice: a newer Sangria CLI is available. See https://getsangria.com/skill to update.\n`);
|
|
115
|
+
}
|
|
78
116
|
});
|
|
79
117
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAWzH"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SangriaAgentClient } from "../lib/client.js";
|
|
2
2
|
import { clearStoredConfig, readStoredConfig, writeStoredConfig } from "../lib/config.js";
|
|
3
3
|
import { CliError, EXIT } from "../lib/errors.js";
|
|
4
|
+
import { usdString } from "../lib/money.js";
|
|
4
5
|
import { printJson } from "../lib/output.js";
|
|
5
6
|
export async function runAuthCommand(subcommand, args, ctx) {
|
|
6
7
|
switch (subcommand) {
|
|
@@ -32,6 +33,9 @@ async function unsetAuth(ctx) {
|
|
|
32
33
|
printJson({ cleared: true, config_path: ctx.config.configPath });
|
|
33
34
|
else
|
|
34
35
|
process.stdout.write(`Cleared Sangria config at ${ctx.config.configPath}\n`);
|
|
36
|
+
if (process.env.SANGRIA_API_KEY) {
|
|
37
|
+
process.stderr.write(`notice: SANGRIA_API_KEY is still set in your shell environment and will be used as a fallback. Run \`unset SANGRIA_API_KEY\` (and remove it from your shell rc files) to fully clear.\n`);
|
|
38
|
+
}
|
|
35
39
|
return EXIT.success;
|
|
36
40
|
}
|
|
37
41
|
async function authStatus(ctx) {
|
|
@@ -59,7 +63,7 @@ async function authStatus(ctx) {
|
|
|
59
63
|
authenticated: true,
|
|
60
64
|
base_url: ctx.config.baseUrl,
|
|
61
65
|
balance_microunits: balance.balance_microunits,
|
|
62
|
-
balance_usd: (balance.balance_microunits
|
|
66
|
+
balance_usd: usdString(balance.balance_microunits),
|
|
63
67
|
};
|
|
64
68
|
if (ctx.json)
|
|
65
69
|
printJson(status);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,7 @@ import type { CommandContext } from "./types.js";
|
|
|
2
2
|
export declare function runDiscoverCommand(intent: string | undefined, options: {
|
|
3
3
|
reasoning?: string;
|
|
4
4
|
context?: string;
|
|
5
|
+
minPrice?: string;
|
|
6
|
+
maxPrice?: string;
|
|
5
7
|
}, ctx: CommandContext): Promise<number>;
|
|
6
8
|
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACvF,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SangriaAgentClient } from "../lib/client.js";
|
|
2
2
|
import { CliError, EXIT } from "../lib/errors.js";
|
|
3
|
+
import { dollarsToMicrounits } from "../lib/money.js";
|
|
3
4
|
import { addDisplayFieldsToDiscover, printDiscover, printJson } from "../lib/output.js";
|
|
4
5
|
export async function runDiscoverCommand(intent, options, ctx) {
|
|
5
6
|
if (!intent)
|
|
@@ -7,11 +8,23 @@ export async function runDiscoverCommand(intent, options, ctx) {
|
|
|
7
8
|
if (!options.reasoning)
|
|
8
9
|
throw new CliError("Missing --reasoning <text>.", EXIT.usage);
|
|
9
10
|
const context = options.context === undefined ? undefined : parseContext(options.context);
|
|
11
|
+
// Dollar inputs validated client-side before conversion — gives a clear
|
|
12
|
+
// usage error instead of a backend `invalid_price_range`. Both bounds
|
|
13
|
+
// optional; when both supplied, min ≤ max is also enforced server-side.
|
|
14
|
+
const minPriceMicrounits = parseDollarFlag(options.minPrice, "min-price");
|
|
15
|
+
const maxPriceMicrounits = parseDollarFlag(options.maxPrice, "max-price");
|
|
16
|
+
if (minPriceMicrounits !== undefined &&
|
|
17
|
+
maxPriceMicrounits !== undefined &&
|
|
18
|
+
minPriceMicrounits > maxPriceMicrounits) {
|
|
19
|
+
throw new CliError("--min-price must be ≤ --max-price.", EXIT.usage);
|
|
20
|
+
}
|
|
10
21
|
const client = new SangriaAgentClient(ctx.config);
|
|
11
22
|
const result = await client.discover({
|
|
12
23
|
intent,
|
|
13
24
|
reasoning: options.reasoning,
|
|
14
25
|
...(context === undefined ? {} : { context }),
|
|
26
|
+
...(minPriceMicrounits === undefined ? {} : { min_price_microunits: minPriceMicrounits }),
|
|
27
|
+
...(maxPriceMicrounits === undefined ? {} : { max_price_microunits: maxPriceMicrounits }),
|
|
15
28
|
});
|
|
16
29
|
const displayResult = addDisplayFieldsToDiscover(result);
|
|
17
30
|
if (ctx.json)
|
|
@@ -28,4 +41,24 @@ function parseContext(input) {
|
|
|
28
41
|
throw new CliError("--context must be valid JSON.", EXIT.usage);
|
|
29
42
|
}
|
|
30
43
|
}
|
|
44
|
+
// parseDollarFlag accepts a non-negative decimal-dollar string like "20",
|
|
45
|
+
// "19.99", or "0", and returns the equivalent int microunits. Returns
|
|
46
|
+
// undefined when the flag was omitted so the caller can spread-omit the
|
|
47
|
+
// field from the request body.
|
|
48
|
+
//
|
|
49
|
+
// Strict regex (digits, optional `.digits` fraction) — parseFloat alone
|
|
50
|
+
// would silently accept trailing garbage like "20abc" → 20, hex literals
|
|
51
|
+
// like "0xff" → 0, and exponent notation like "1e3" → 1000. Dollar
|
|
52
|
+
// amounts don't need any of those, so we reject them explicitly to
|
|
53
|
+
// surface a clean usage error instead of charging the user something they
|
|
54
|
+
// didn't write.
|
|
55
|
+
const dollarFlagPattern = /^\d+(\.\d+)?$/;
|
|
56
|
+
function parseDollarFlag(input, flagName) {
|
|
57
|
+
if (input === undefined)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (!dollarFlagPattern.test(input)) {
|
|
60
|
+
throw new CliError(`--${flagName} must be a non-negative decimal number like 20 or 19.99 (got ${JSON.stringify(input)}).`, EXIT.usage);
|
|
61
|
+
}
|
|
62
|
+
return dollarsToMicrounits(parseFloat(input));
|
|
63
|
+
}
|
|
31
64
|
//# sourceMappingURL=discover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B,EAC1B,OAAuF,EACvF,GAAmB;IAEnB,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,kBAAkB,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1E,IACE,kBAAkB,KAAK,SAAS;QAChC,kBAAkB,KAAK,SAAS;QAChC,kBAAkB,GAAG,kBAAkB,EACvC,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,oCAAoC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QACnC,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC;QACzF,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC;KAC1F,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,IAAI;QAAE,SAAS,CAAC,aAAa,CAAC,CAAC;;QAClC,aAAa,CAAC,aAAa,CAAC,CAAC;IAElC,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,+BAA+B;AAC/B,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,mEAAmE;AACnE,mEAAmE;AACnE,0EAA0E;AAC1E,gBAAgB;AAChB,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,SAAS,eAAe,CAAC,KAAyB,EAAE,QAAgB;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAAC,KAAK,QAAQ,gEAAgE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzI,CAAC;IACD,OAAO,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CommandContext } from "./types.js";
|
|
2
|
+
interface SettingsFlags {
|
|
3
|
+
line1?: string;
|
|
4
|
+
line2?: string;
|
|
5
|
+
city?: string;
|
|
6
|
+
state?: string;
|
|
7
|
+
postalCode?: string;
|
|
8
|
+
country?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function runSettingsCommand(subcommand: string | undefined, args: string[], flags: SettingsFlags, ctx: CommandContext): Promise<number>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/commands/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { SangriaAgentClient } from "../lib/client.js";
|
|
2
|
+
import { CliError, EXIT } from "../lib/errors.js";
|
|
3
|
+
import { printJson } from "../lib/output.js";
|
|
4
|
+
export async function runSettingsCommand(subcommand, args, flags, ctx) {
|
|
5
|
+
if (subcommand === "set-phone")
|
|
6
|
+
return updatePhone(args[0], ctx);
|
|
7
|
+
if (subcommand === "set-address")
|
|
8
|
+
return updateAddress(flags, ctx);
|
|
9
|
+
throw new CliError("Usage: sangria settings <set-phone|set-address>", EXIT.usage);
|
|
10
|
+
}
|
|
11
|
+
async function updatePhone(phone, ctx) {
|
|
12
|
+
if (!phone)
|
|
13
|
+
throw new CliError("Missing phone number.", EXIT.usage);
|
|
14
|
+
const client = new SangriaAgentClient(ctx.config);
|
|
15
|
+
const result = await client.updatePhone(phone);
|
|
16
|
+
if (ctx.json)
|
|
17
|
+
printJson(result);
|
|
18
|
+
else
|
|
19
|
+
process.stdout.write(`Phone: ${result.phone}\n`);
|
|
20
|
+
return EXIT.success;
|
|
21
|
+
}
|
|
22
|
+
async function updateAddress(flags, ctx) {
|
|
23
|
+
const missing = requiredAddressFlags(flags);
|
|
24
|
+
if (missing.length > 0) {
|
|
25
|
+
throw new CliError(`Missing address flags: ${missing.join(", ")}.`, EXIT.usage);
|
|
26
|
+
}
|
|
27
|
+
const shipping = {
|
|
28
|
+
line1: flags.line1,
|
|
29
|
+
...(flags.line2 === undefined ? {} : { line2: flags.line2 }),
|
|
30
|
+
city: flags.city,
|
|
31
|
+
state: flags.state,
|
|
32
|
+
postal_code: flags.postalCode,
|
|
33
|
+
country: flags.country ?? "US",
|
|
34
|
+
};
|
|
35
|
+
const client = new SangriaAgentClient(ctx.config);
|
|
36
|
+
const result = await client.updateShippingAddress(shipping);
|
|
37
|
+
if (ctx.json) {
|
|
38
|
+
printJson(result);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const address = result.shipping;
|
|
42
|
+
const line2 = address.line2 ? ` ${address.line2}` : "";
|
|
43
|
+
process.stdout.write(`Shipping address: ${address.line1}${line2}, ${address.city}, ${address.state} ${address.postal_code}, ${address.country}\n`);
|
|
44
|
+
}
|
|
45
|
+
return EXIT.success;
|
|
46
|
+
}
|
|
47
|
+
function requiredAddressFlags(flags) {
|
|
48
|
+
const missing = [];
|
|
49
|
+
if (!flags.line1)
|
|
50
|
+
missing.push("--line1");
|
|
51
|
+
if (!flags.city)
|
|
52
|
+
missing.push("--city");
|
|
53
|
+
if (!flags.state)
|
|
54
|
+
missing.push("--state");
|
|
55
|
+
if (!flags.postalCode)
|
|
56
|
+
missing.push("--postal-code");
|
|
57
|
+
return missing;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/commands/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topup.d.ts","sourceRoot":"","sources":["../../src/commands/topup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACzC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SangriaAgentClient } from "../lib/client.js";
|
|
2
|
+
import { CliError, EXIT } from "../lib/errors.js";
|
|
3
|
+
import { printJson } from "../lib/output.js";
|
|
4
|
+
export async function runTopupCommand(subcommand, args, flags, ctx) {
|
|
5
|
+
const client = new SangriaAgentClient(ctx.config);
|
|
6
|
+
if (subcommand === "confirm") {
|
|
7
|
+
const topupId = args[0];
|
|
8
|
+
if (!topupId)
|
|
9
|
+
throw new CliError("Usage: sangria topup confirm <topup_id> --code <code>", EXIT.usage);
|
|
10
|
+
if (!flags.code)
|
|
11
|
+
throw new CliError("Missing --code", EXIT.usage);
|
|
12
|
+
const result = await client.confirmTopup(topupId, flags.code);
|
|
13
|
+
if (ctx.json)
|
|
14
|
+
printJson(result);
|
|
15
|
+
else
|
|
16
|
+
process.stdout.write(`${result.message}\n`);
|
|
17
|
+
return EXIT.success;
|
|
18
|
+
}
|
|
19
|
+
if (subcommand !== undefined) {
|
|
20
|
+
throw new CliError(`Unknown topup command: ${subcommand}`, EXIT.usage);
|
|
21
|
+
}
|
|
22
|
+
if (!flags.amount)
|
|
23
|
+
throw new CliError("Usage: sangria topup --amount <usd>", EXIT.usage);
|
|
24
|
+
const result = await client.startTopup(flags.amount);
|
|
25
|
+
if (ctx.json)
|
|
26
|
+
printJson(result);
|
|
27
|
+
else
|
|
28
|
+
process.stdout.write(`${result.message}\n`);
|
|
29
|
+
return EXIT.success;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=topup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topup.js","sourceRoot":"","sources":["../../src/commands/topup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAA8B,EAC9B,IAAc,EACd,KAAyC,EACzC,GAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,QAAQ,CAAC,uDAAuD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtG,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,CAAC;;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,0BAA0B,UAAU,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,QAAQ,CAAC,qCAAqC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,GAAG,CAAC,IAAI;QAAE,SAAS,CAAC,MAAM,CAAC,CAAC;;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
|
package/dist/lib/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/lib/args.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/lib/args.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAoBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoCpD;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAET"}
|
package/dist/lib/args.js
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { CliError, EXIT } from "./errors.js";
|
|
2
|
-
const valueFlags = new Set([
|
|
3
|
-
|
|
2
|
+
const valueFlags = new Set([
|
|
3
|
+
"api-key",
|
|
4
|
+
"base-url",
|
|
5
|
+
"reasoning",
|
|
6
|
+
"context",
|
|
7
|
+
"min-price",
|
|
8
|
+
"max-price",
|
|
9
|
+
"amount",
|
|
10
|
+
"code",
|
|
11
|
+
"line1",
|
|
12
|
+
"line2",
|
|
13
|
+
"city",
|
|
14
|
+
"state",
|
|
15
|
+
"postal-code",
|
|
16
|
+
"country",
|
|
17
|
+
]);
|
|
18
|
+
const booleanFlags = new Set(["json", "help", "verbose", "version", "no-color"]);
|
|
4
19
|
export function parseArgs(argv) {
|
|
5
20
|
const command = [];
|
|
6
21
|
const flags = {};
|
|
@@ -22,7 +37,12 @@ export function parseArgs(argv) {
|
|
|
22
37
|
throw new CliError(`Unknown flag --${name}`, EXIT.usage);
|
|
23
38
|
}
|
|
24
39
|
const value = inlineValue ?? argv[++i];
|
|
25
|
-
|
|
40
|
+
// Distinguish absent (undefined / next-token-is-a-flag) from
|
|
41
|
+
// intentionally-empty (""). The optional `--line2 ""` form is the
|
|
42
|
+
// motivating case — a US address with no apartment shouldn't fail
|
|
43
|
+
// here. `??` already keeps an inline `--name=` as "" instead of
|
|
44
|
+
// falling through.
|
|
45
|
+
if (value === undefined || value.startsWith("--")) {
|
|
26
46
|
throw new CliError(`Missing value for --${name}`, EXIT.usage);
|
|
27
47
|
}
|
|
28
48
|
flags[name] = value;
|
package/dist/lib/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/lib/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/lib/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,SAAS;IACT,UAAU;IACV,WAAW;IACX,SAAS;IACT,WAAW;IACX,WAAW;IACX,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,aAAa;IACb,SAAS;CACV,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjF,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,WAAW,GACf,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,6DAA6D;QAC7D,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,mBAAmB;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,QAAQ,CAAC,uBAAuB,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAuC,EACvC,IAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAuC,EACvC,IAAY;IAEZ,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC9B,CAAC"}
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BalanceResponse, BuyResponse, DiscoverRequest, DiscoverResponse } from "../types/api.js";
|
|
1
|
+
import type { BalanceResponse, BuyResponse, DiscoverRequest, DiscoverResponse, PostalAddress, StartTopupResponse, ConfirmTopupResponse, UpdatePhoneResponse, UpdateShippingAddressResponse } from "../types/api.js";
|
|
2
|
+
export declare function consumeUpdateAvailable(): boolean;
|
|
2
3
|
export declare class SangriaAgentClient {
|
|
3
4
|
private readonly apiKey;
|
|
4
5
|
private readonly baseUrl;
|
|
@@ -9,6 +10,10 @@ export declare class SangriaAgentClient {
|
|
|
9
10
|
balance(): Promise<BalanceResponse>;
|
|
10
11
|
discover(body: DiscoverRequest): Promise<DiscoverResponse>;
|
|
11
12
|
buy(discoveryId: string, sku: string): Promise<BuyResponse>;
|
|
13
|
+
startTopup(amountUsd: string): Promise<StartTopupResponse>;
|
|
14
|
+
confirmTopup(topupId: string, code: string): Promise<ConfirmTopupResponse>;
|
|
15
|
+
updatePhone(phone: string): Promise<UpdatePhoneResponse>;
|
|
16
|
+
updateShippingAddress(shipping: PostalAddress): Promise<UpdateShippingAddressResponse>;
|
|
12
17
|
private request;
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,EAEhB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,iBAAiB,CAAC;AAQzB,wBAAgB,sBAAsB,IAAI,OAAO,CAIhD;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQlD,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO3D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM1D,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM1E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIxD,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,6BAA6B,CAAC;YAI9E,OAAO;CA0CtB"}
|
package/dist/lib/client.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { ApiError, CliError, EXIT } from "./errors.js";
|
|
2
|
+
import { cliVersion } from "./version.js";
|
|
3
|
+
// Set by request() whenever a backend response carries
|
|
4
|
+
// X-Sangria-Update-Available: true. Read once at end of main() via
|
|
5
|
+
// consumeUpdateAvailable() so the stderr notice prints once per CLI
|
|
6
|
+
// invocation, not once per backend call.
|
|
7
|
+
let updateAvailable = false;
|
|
8
|
+
export function consumeUpdateAvailable() {
|
|
9
|
+
const value = updateAvailable;
|
|
10
|
+
updateAvailable = false;
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
2
13
|
export class SangriaAgentClient {
|
|
3
14
|
apiKey;
|
|
4
15
|
baseUrl;
|
|
@@ -21,6 +32,22 @@ export class SangriaAgentClient {
|
|
|
21
32
|
sku,
|
|
22
33
|
});
|
|
23
34
|
}
|
|
35
|
+
async startTopup(amountUsd) {
|
|
36
|
+
return this.request("POST", "/v1/topups", {
|
|
37
|
+
amount_usd: amountUsd,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async confirmTopup(topupId, code) {
|
|
41
|
+
return this.request("POST", `/v1/topups/${encodeURIComponent(topupId)}/confirm`, {
|
|
42
|
+
code,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async updatePhone(phone) {
|
|
46
|
+
return this.request("PATCH", "/v1/settings/phone", { phone });
|
|
47
|
+
}
|
|
48
|
+
async updateShippingAddress(shipping) {
|
|
49
|
+
return this.request("PATCH", "/v1/settings/shipping-address", { shipping });
|
|
50
|
+
}
|
|
24
51
|
async request(method, path, body) {
|
|
25
52
|
const controller = new AbortController();
|
|
26
53
|
const timeout = setTimeout(() => controller.abort(), 30_000);
|
|
@@ -30,18 +57,22 @@ export class SangriaAgentClient {
|
|
|
30
57
|
signal: controller.signal,
|
|
31
58
|
headers: {
|
|
32
59
|
Authorization: `Bearer ${this.apiKey}`,
|
|
60
|
+
"X-Sangria-CLI-Version": cliVersion(),
|
|
33
61
|
...(body === undefined ? {} : { "Content-Type": "application/json" }),
|
|
34
62
|
},
|
|
35
63
|
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
36
64
|
});
|
|
65
|
+
if (response.headers.get("X-Sangria-Update-Available") === "true") {
|
|
66
|
+
updateAvailable = true;
|
|
67
|
+
}
|
|
37
68
|
const json = await readJson(response);
|
|
38
69
|
if (!response.ok) {
|
|
39
70
|
const error = (json ?? {});
|
|
40
71
|
const code = error.error || `http_${response.status}`;
|
|
41
|
-
throw new ApiError(response.status, code, friendlyApiMessage(code, error.
|
|
72
|
+
throw new ApiError(response.status, code, friendlyApiMessage(code, error.message), {
|
|
42
73
|
error: code,
|
|
43
74
|
status: response.status,
|
|
44
|
-
|
|
75
|
+
...(typeof error.message === "string" ? { message: error.message } : {}),
|
|
45
76
|
});
|
|
46
77
|
}
|
|
47
78
|
return json;
|
|
@@ -72,16 +103,27 @@ async function readJson(response) {
|
|
|
72
103
|
throw new CliError(`Sangria API returned non-JSON response (${response.status}).`, EXIT.unavailable);
|
|
73
104
|
}
|
|
74
105
|
}
|
|
75
|
-
function friendlyApiMessage(code,
|
|
106
|
+
function friendlyApiMessage(code, message) {
|
|
107
|
+
if (typeof message === "string" && message.trim() !== "") {
|
|
108
|
+
return message;
|
|
109
|
+
}
|
|
76
110
|
switch (code) {
|
|
77
111
|
case "invalid_request":
|
|
78
|
-
return
|
|
112
|
+
return "The request is invalid.";
|
|
113
|
+
case "not_found":
|
|
114
|
+
return "Your Sangria account could not be found.";
|
|
79
115
|
case "invalid_json":
|
|
80
116
|
return "The request JSON is invalid.";
|
|
81
117
|
case "invalid_intent":
|
|
82
118
|
return "Intent is required and must be 200 characters or fewer.";
|
|
83
119
|
case "invalid_reasoning":
|
|
84
120
|
return "Reasoning is required and must be 1,000 characters or fewer.";
|
|
121
|
+
case "invalid_price_range":
|
|
122
|
+
return "Price range is invalid: bounds must be non-negative, and when both are supplied --min-price must be ≤ --max-price.";
|
|
123
|
+
case "invalid_context":
|
|
124
|
+
return "Context JSON is too large. Trim --context to under 16 KiB or omit it.";
|
|
125
|
+
case "request_too_large":
|
|
126
|
+
return "Request body is too large for the Sangria API.";
|
|
85
127
|
case "invalid_discovery_id":
|
|
86
128
|
return "Discovery ID is invalid or was not found.";
|
|
87
129
|
case "invalid_sku":
|
|
@@ -90,10 +132,18 @@ function friendlyApiMessage(code, missingField) {
|
|
|
90
132
|
return "Discovery quote expired. Run discover again.";
|
|
91
133
|
case "insufficient_funds":
|
|
92
134
|
return "Insufficient Sangria balance.";
|
|
135
|
+
case "payment_method_required":
|
|
136
|
+
return "A saved payment method is required.";
|
|
93
137
|
case "merchant_unreachable":
|
|
94
138
|
return "Merchant is currently unreachable.";
|
|
95
139
|
case "embedding_unavailable":
|
|
96
140
|
return "Discovery is temporarily unavailable.";
|
|
141
|
+
case "unknown_merchant_status":
|
|
142
|
+
return "Merchant returned an unexpected response.";
|
|
143
|
+
case "commit_failed":
|
|
144
|
+
return "Sangria failed to record the operation.";
|
|
145
|
+
case "internal_error":
|
|
146
|
+
return "Sangria encountered an internal error.";
|
|
97
147
|
default:
|
|
98
148
|
return code;
|
|
99
149
|
}
|
package/dist/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAS9D;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAS9D;AAqBD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CASvD;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4BzB"}
|
package/dist/lib/config.js
CHANGED
|
@@ -8,7 +8,7 @@ export function configPath() {
|
|
|
8
8
|
}
|
|
9
9
|
export async function readStoredConfig() {
|
|
10
10
|
try {
|
|
11
|
-
return JSON.parse(await readFile(configPath(), "utf8"));
|
|
11
|
+
return validateStoredConfig(JSON.parse(await readFile(configPath(), "utf8")));
|
|
12
12
|
}
|
|
13
13
|
catch (error) {
|
|
14
14
|
if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") {
|
|
@@ -17,6 +17,22 @@ export async function readStoredConfig() {
|
|
|
17
17
|
throw error;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
function validateStoredConfig(value) {
|
|
21
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
22
|
+
throw new Error("Sangria config must be a JSON object");
|
|
23
|
+
}
|
|
24
|
+
const config = value;
|
|
25
|
+
if (config.apiKey !== undefined && typeof config.apiKey !== "string") {
|
|
26
|
+
throw new Error("Sangria config field apiKey must be a string");
|
|
27
|
+
}
|
|
28
|
+
if (config.baseUrl !== undefined && typeof config.baseUrl !== "string") {
|
|
29
|
+
throw new Error("Sangria config field baseUrl must be a string");
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
...(config.apiKey !== undefined ? { apiKey: config.apiKey } : {}),
|
|
33
|
+
...(config.baseUrl !== undefined ? { baseUrl: config.baseUrl } : {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
20
36
|
export async function writeStoredConfig(config) {
|
|
21
37
|
const path = configPath();
|
|
22
38
|
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
@@ -35,13 +51,13 @@ export async function clearStoredConfig() {
|
|
|
35
51
|
}
|
|
36
52
|
export async function resolveConfig(flags) {
|
|
37
53
|
const stored = await readStoredConfig();
|
|
38
|
-
const apiKey = flags.apiKey || process.env.SANGRIA_API_KEY
|
|
54
|
+
const apiKey = flags.apiKey || stored.apiKey || process.env.SANGRIA_API_KEY;
|
|
39
55
|
const apiKeySource = flags.apiKey
|
|
40
56
|
? "flag"
|
|
41
|
-
:
|
|
42
|
-
? "
|
|
43
|
-
:
|
|
44
|
-
? "
|
|
57
|
+
: stored.apiKey
|
|
58
|
+
? "config"
|
|
59
|
+
: process.env.SANGRIA_API_KEY
|
|
60
|
+
? "env"
|
|
45
61
|
: undefined;
|
|
46
62
|
const baseUrl = (flags.baseUrl || process.env.SANGRIA_URL || stored.baseUrl || DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
47
63
|
const baseUrlSource = flags.baseUrl
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAe7D,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -38,7 +38,7 @@ export function exitCodeForApiError(statusCode, errorCode) {
|
|
|
38
38
|
return EXIT.discoveryExpired;
|
|
39
39
|
if (statusCode === 400 || statusCode === 404 || statusCode === 409)
|
|
40
40
|
return EXIT.validation;
|
|
41
|
-
if (statusCode >= 500
|
|
41
|
+
if (statusCode >= 500)
|
|
42
42
|
return EXIT.unavailable;
|
|
43
43
|
return EXIT.generic;
|
|
44
44
|
}
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,CAAC;IACb,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACN,CAAC;AAEX,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,WAAmB,IAAI,CAAC,OAAO,EAAE,OAAiC;QAC7F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAC3B,UAAU,CAAS;IACnB,SAAS,CAAS;IAE3B,YAAY,UAAkB,EAAE,SAAiB,EAAE,OAAgB,EAAE,OAAiC;QACpG,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;IACvE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC/D,IAAI,SAAS,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;IACtE,IAAI,SAAS,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACpE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3F,IAAI,UAAU,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,CAAC;IACb,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACN,CAAC;AAEX,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,WAAmB,IAAI,CAAC,OAAO,EAAE,OAAiC;QAC7F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAC3B,UAAU,CAAS;IACnB,SAAS,CAAS;IAE3B,YAAY,UAAkB,EAAE,SAAiB,EAAE,OAAgB,EAAE,OAAiC;QACpG,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;IACvE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC/D,IAAI,SAAS,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;IACtE,IAAI,SAAS,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACpE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3F,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
|
package/dist/lib/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,IAAI,MAAM,CAiCjC"}
|
package/dist/lib/help.js
CHANGED
|
@@ -6,18 +6,30 @@ Usage:
|
|
|
6
6
|
sangria auth set <api_key>
|
|
7
7
|
sangria auth unset
|
|
8
8
|
sangria balance [--json]
|
|
9
|
-
sangria
|
|
9
|
+
sangria settings set-phone <phone> [--json]
|
|
10
|
+
sangria settings set-address --line1 <line1> [--line2 <line2>] --city <city> --state <state> --postal-code <zip> [--country US] [--json]
|
|
11
|
+
sangria discover <intent> --reasoning <text> [--context <json>] [--min-price <dollars>] [--max-price <dollars>] [--json]
|
|
10
12
|
sangria buy <discovery_id> <sku> [--json]
|
|
13
|
+
sangria topup --amount <usd> [--json]
|
|
14
|
+
sangria topup confirm <topup_id> --code <code> [--json]
|
|
15
|
+
|
|
16
|
+
Discover flags:
|
|
17
|
+
--reasoning <text> Short explanation of why this purchase fits the user's request
|
|
18
|
+
--context <json> Optional free-form JSON with situation context
|
|
19
|
+
--min-price <usd> Inclusive lower bound, decimal dollars (e.g. --min-price 20)
|
|
20
|
+
--max-price <usd> Inclusive upper bound, decimal dollars (e.g. --max-price 19.99)
|
|
11
21
|
|
|
12
22
|
Global flags:
|
|
13
23
|
--json Print machine-readable JSON
|
|
14
24
|
--api-key <key> Override SANGRIA_API_KEY or stored config
|
|
15
25
|
--base-url <url> Override SANGRIA_URL or default API URL
|
|
26
|
+
--version Print the CLI version and exit
|
|
16
27
|
--verbose Print extra diagnostics to stderr
|
|
17
28
|
|
|
18
29
|
Auth:
|
|
19
|
-
|
|
20
|
-
Stored config lives at
|
|
30
|
+
Resolution order: --api-key flag, then stored config, then SANGRIA_API_KEY.
|
|
31
|
+
Stored config lives at $XDG_CONFIG_HOME/sangria/config.json when XDG_CONFIG_HOME is set,
|
|
32
|
+
otherwise ~/.config/sangria/config.json.
|
|
21
33
|
`;
|
|
22
34
|
}
|
|
23
35
|
//# sourceMappingURL=help.js.map
|
package/dist/lib/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ;IACtB,OAAO
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ;IACtB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BR,CAAC;AACF,CAAC"}
|
package/dist/lib/money.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const MICROUNITS_PER_DOLLAR = 1000000;
|
|
2
2
|
export declare function usdString(microunits: number): string;
|
|
3
3
|
export declare function formatUsd(microunits: number): string;
|
|
4
|
+
export declare function dollarsToMicrounits(dollars: number): number;
|
|
4
5
|
export declare function withUsd<T extends {
|
|
5
6
|
price_microunits?: number;
|
|
6
7
|
balance_microunits?: number;
|
package/dist/lib/money.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/lib/money.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAE/C,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,KAAK,EAAE,CAAC,GACP,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAUlD"}
|
|
1
|
+
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/lib/money.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAE/C,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAOD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1F,KAAK,EAAE,CAAC,GACP,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAUlD"}
|
package/dist/lib/money.js
CHANGED
|
@@ -5,6 +5,14 @@ export function usdString(microunits) {
|
|
|
5
5
|
export function formatUsd(microunits) {
|
|
6
6
|
return `$${usdString(microunits)}`;
|
|
7
7
|
}
|
|
8
|
+
// dollarsToMicrounits converts a non-negative decimal-dollar amount to int
|
|
9
|
+
// microunits. Math.round avoids float-precision drift on values like 19.99
|
|
10
|
+
// (which would otherwise round-trip to 19_989_999 microunits and lose a
|
|
11
|
+
// cent). Callers are responsible for validating non-negativity and
|
|
12
|
+
// finiteness before calling — this helper is a pure unit conversion.
|
|
13
|
+
export function dollarsToMicrounits(dollars) {
|
|
14
|
+
return Math.round(dollars * MICROUNITS_PER_DOLLAR);
|
|
15
|
+
}
|
|
8
16
|
export function withUsd(value) {
|
|
9
17
|
return {
|
|
10
18
|
...value,
|
package/dist/lib/money.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.js","sourceRoot":"","sources":["../../src/lib/money.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,OAAO,CAAC,UAAU,GAAG,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAQ;IAER,OAAO;QACL,GAAG,KAAK;QACR,GAAG,CAAC,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,IAAI;YAChD,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;SAC7C,CAAC;QACF,GAAG,CAAC,OAAO,KAAK,CAAC,kBAAkB,KAAK,QAAQ,IAAI;YAClD,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACjD,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"money.js","sourceRoot":"","sources":["../../src/lib/money.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,OAAO,CAAC,UAAU,GAAG,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,mEAAmE;AACnE,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAQ;IAER,OAAO;QACL,GAAG,KAAK;QACR,GAAG,CAAC,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,IAAI;YAChD,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;SAC7C,CAAC;QACF,GAAG,CAAC,OAAO,KAAK,CAAC,kBAAkB,KAAK,QAAQ,IAAI;YAClD,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACjD,CAAC;KACH,CAAC;AACJ,CAAC"}
|
package/dist/lib/output.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { BalanceResponse, BuyResponse, DiscoverResponse } from "../types/api.js";
|
|
2
|
+
type DiscoverMatchWithUsd = DiscoverResponse["matches"][number] & {
|
|
3
|
+
price_usd: string;
|
|
4
|
+
};
|
|
5
|
+
export type DiscoverResponseWithUsd = DiscoverResponse & {
|
|
6
|
+
matches: DiscoverMatchWithUsd[];
|
|
7
|
+
};
|
|
2
8
|
export declare function printJson(value: unknown): void;
|
|
3
9
|
export declare function printBalance(balance: BalanceResponse): void;
|
|
4
10
|
export declare function printDiscover(result: DiscoverResponse): void;
|
|
@@ -6,5 +12,6 @@ export declare function printBuy(result: BuyResponse): void;
|
|
|
6
12
|
export declare function addDisplayFieldsToBalance(balance: BalanceResponse): BalanceResponse & {
|
|
7
13
|
balance_usd: string;
|
|
8
14
|
};
|
|
9
|
-
export declare function addDisplayFieldsToDiscover(result: DiscoverResponse):
|
|
15
|
+
export declare function addDisplayFieldsToDiscover(result: DiscoverResponse): DiscoverResponseWithUsd;
|
|
16
|
+
export {};
|
|
10
17
|
//# sourceMappingURL=output.d.ts.map
|
package/dist/lib/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,KAAK,oBAAoB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAC;AAE7F,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA6B5D;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAclD;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAK7G;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,uBAAuB,CAQ5F"}
|
package/dist/lib/output.js
CHANGED
|
@@ -16,6 +16,17 @@ export function printDiscover(result) {
|
|
|
16
16
|
process.stdout.write(`${index + 1}. ${match.name}\n`);
|
|
17
17
|
process.stdout.write(` SKU: ${match.sku}\n`);
|
|
18
18
|
process.stdout.write(` Price: ${formatUsd(match.price_microunits)}\n`);
|
|
19
|
+
if (match.delivery_text || match.delivery_channel) {
|
|
20
|
+
const delivery = match.delivery_text
|
|
21
|
+
? [match.delivery_text, match.delivery_channel ? `(${match.delivery_channel})` : undefined]
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
.join(" ")
|
|
24
|
+
: match.delivery_channel;
|
|
25
|
+
process.stdout.write(` Delivery: ${delivery}\n`);
|
|
26
|
+
}
|
|
27
|
+
if (match.bought_in_past_month) {
|
|
28
|
+
process.stdout.write(` Bought: ${match.bought_in_past_month}\n`);
|
|
29
|
+
}
|
|
19
30
|
if (typeof match.score === "number") {
|
|
20
31
|
process.stdout.write(` Score: ${match.score.toFixed(2)}\n`);
|
|
21
32
|
}
|
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,IAAI,MAAM,CAUnC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
let cached = null;
|
|
5
|
+
export function cliVersion() {
|
|
6
|
+
if (cached !== null)
|
|
7
|
+
return cached;
|
|
8
|
+
try {
|
|
9
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const pkg = JSON.parse(readFileSync(join(here, "..", "..", "package.json"), "utf8"));
|
|
11
|
+
cached = String(pkg.version);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
cached = "unknown";
|
|
15
|
+
}
|
|
16
|
+
return cached;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrF,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/types/api.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export interface DiscoveryMatch {
|
|
|
12
12
|
product_url?: string | null;
|
|
13
13
|
rating?: number | null;
|
|
14
14
|
num_reviews?: number | null;
|
|
15
|
+
bought_in_past_month?: string | null;
|
|
16
|
+
delivery_text?: string | null;
|
|
17
|
+
delivery_channel?: string | null;
|
|
15
18
|
}
|
|
16
19
|
export interface DiscoverResponse {
|
|
17
20
|
discovery_id: string;
|
|
@@ -30,13 +33,37 @@ export interface BuyResponse {
|
|
|
30
33
|
failure_code?: string;
|
|
31
34
|
failure_message?: string;
|
|
32
35
|
}
|
|
36
|
+
export interface StartTopupResponse {
|
|
37
|
+
topup_id: string;
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ConfirmTopupResponse {
|
|
41
|
+
topup_id: string;
|
|
42
|
+
message: string;
|
|
43
|
+
}
|
|
44
|
+
export interface PostalAddress {
|
|
45
|
+
line1: string;
|
|
46
|
+
line2?: string;
|
|
47
|
+
city: string;
|
|
48
|
+
state: string;
|
|
49
|
+
postal_code: string;
|
|
50
|
+
country: string;
|
|
51
|
+
}
|
|
52
|
+
export interface UpdatePhoneResponse {
|
|
53
|
+
phone: string;
|
|
54
|
+
}
|
|
55
|
+
export interface UpdateShippingAddressResponse {
|
|
56
|
+
shipping: PostalAddress;
|
|
57
|
+
}
|
|
33
58
|
export interface ErrorResponse {
|
|
34
59
|
error?: string;
|
|
35
|
-
|
|
60
|
+
message?: string;
|
|
36
61
|
}
|
|
37
62
|
export interface DiscoverRequest {
|
|
38
63
|
intent: string;
|
|
39
64
|
reasoning: string;
|
|
40
65
|
context?: unknown;
|
|
66
|
+
min_price_microunits?: number;
|
|
67
|
+
max_price_microunits?: number;
|
|
41
68
|
}
|
|
42
69
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAOlB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
package/package.json
CHANGED