@rubicon-caliga/cli 0.1.0 → 0.1.1
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/dist/format.d.ts +5 -0
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +81 -6
- package/dist/format.js.map +1 -1
- package/dist/index.js +220 -39
- package/dist/index.js.map +1 -1
- package/dist/payments.d.ts +1 -0
- package/dist/payments.d.ts.map +1 -1
- package/dist/payments.js +3 -1
- package/dist/payments.js.map +1 -1
- package/package.json +3 -3
- package/src/format.ts +87 -6
- package/src/index.ts +231 -37
- package/src/payments.ts +4 -1
package/dist/format.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ArticleSummary, ArticleNavigation, SellerPaymentTerms } from "@rubicon-caliga/core";
|
|
2
2
|
import type { ReadReceipt } from "@rubicon-caliga/agent-sdk";
|
|
3
|
+
import type { StoredReceipt } from "./receipts.js";
|
|
3
4
|
export declare function printJson(value: unknown): void;
|
|
4
5
|
export declare function printJsonEvent(type: string, value: unknown): void;
|
|
5
6
|
export declare function articleJson(article: ArticleSummary): Record<string, unknown>;
|
|
@@ -7,5 +8,9 @@ export declare function humanArticle(article: ArticleSummary): string;
|
|
|
7
8
|
export declare function humanPaymentTerms(terms: SellerPaymentTerms): string[];
|
|
8
9
|
export declare function humanNavigation(navigation: ArticleNavigation): string;
|
|
9
10
|
export declare function humanReceipt(receipt: ReadReceipt): string;
|
|
11
|
+
export declare function receiptSummaryJson(stored: StoredReceipt): Record<string, unknown>;
|
|
12
|
+
export declare function readReceiptSummaryJson(receipt: ReadReceipt): Record<string, unknown>;
|
|
13
|
+
export declare function humanReceiptSummary(receipt: ReadReceipt, receiptId?: string): string;
|
|
10
14
|
export declare function formatAtomic(value: string | bigint): string;
|
|
15
|
+
export declare function recommendedReadCommandFor(articleId: string, sectionId: string): string;
|
|
11
16
|
//# sourceMappingURL=format.d.ts.map
|
package/dist/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEjE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAe5E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAoB5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAYrE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAsBrE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgCzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBpF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBpF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtF"}
|
package/dist/format.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatAtomicUsdc } from "@rubicon-caliga/core";
|
|
1
|
+
import { formatAtomicUsdc, settlementNetworkInfo } from "@rubicon-caliga/core";
|
|
2
2
|
export function printJson(value) {
|
|
3
3
|
process.stdout.write(`${JSON.stringify(value)}\n`);
|
|
4
4
|
}
|
|
@@ -6,6 +6,7 @@ export function printJsonEvent(type, value) {
|
|
|
6
6
|
printJson({ type, ...asRecord(value) });
|
|
7
7
|
}
|
|
8
8
|
export function articleJson(article) {
|
|
9
|
+
const paymentTerms = article.paymentTerms ? enrichedPaymentTerms(article.paymentTerms) : undefined;
|
|
9
10
|
return {
|
|
10
11
|
articleId: article.articleId,
|
|
11
12
|
title: article.title,
|
|
@@ -16,7 +17,7 @@ export function articleJson(article) {
|
|
|
16
17
|
totalWords: article.totalWords,
|
|
17
18
|
pricePerWordAtomic: article.pricePerWordAtomic,
|
|
18
19
|
maxArticlePriceAtomic: article.maxArticlePriceAtomic,
|
|
19
|
-
paymentTerms
|
|
20
|
+
paymentTerms,
|
|
20
21
|
sections: article.sections,
|
|
21
22
|
};
|
|
22
23
|
}
|
|
@@ -42,20 +43,26 @@ export function humanArticle(article) {
|
|
|
42
43
|
return lines.join("\n");
|
|
43
44
|
}
|
|
44
45
|
export function humanPaymentTerms(terms) {
|
|
46
|
+
const enriched = enrichedPaymentTerms(terms);
|
|
45
47
|
return [
|
|
46
48
|
"Payment terms:",
|
|
47
|
-
`- Asset: ${
|
|
48
|
-
`- Network: ${
|
|
49
|
+
`- Asset: ${enriched.asset}`,
|
|
50
|
+
`- Network: ${enriched.networkLabel ?? enriched.network}`,
|
|
51
|
+
enriched.circleChain ? `- Circle chain: ${enriched.circleChain}` : undefined,
|
|
52
|
+
enriched.environment ? `- Environment: ${enriched.environment}` : undefined,
|
|
53
|
+
enriched.fundingMethod ? `- Funding: ${enriched.fundingMethod}` : undefined,
|
|
49
54
|
`- Pay to: ${terms.payTo}`,
|
|
50
55
|
`- Price/word: ${formatAtomic(terms.pricePerWordAtomic)} USDC`,
|
|
51
|
-
];
|
|
56
|
+
].filter((line) => line !== undefined);
|
|
52
57
|
}
|
|
53
58
|
export function humanNavigation(navigation) {
|
|
54
59
|
const seller = navigation.sellerAgent;
|
|
60
|
+
const recommendedReadCommand = recommendedReadCommandFor(navigation.articleId, seller.recommendedSectionId);
|
|
55
61
|
const lines = [
|
|
56
62
|
`Recommended section: ${seller.recommendedSectionId}`,
|
|
57
63
|
`Alternatives: ${seller.alternativeSectionIds.length ? seller.alternativeSectionIds.join(", ") : "none"}`,
|
|
58
64
|
`Rationale: ${seller.rationale}`,
|
|
65
|
+
`Recommended read: ${recommendedReadCommand}`,
|
|
59
66
|
];
|
|
60
67
|
if (seller.safeHints.length > 0) {
|
|
61
68
|
lines.push("", "Safe hints:", ...seller.safeHints.map((hint) => `- ${hint}`));
|
|
@@ -72,6 +79,7 @@ export function humanNavigation(navigation) {
|
|
|
72
79
|
return lines.join("\n");
|
|
73
80
|
}
|
|
74
81
|
export function humanReceipt(receipt) {
|
|
82
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
75
83
|
const lines = [
|
|
76
84
|
"Receipt:",
|
|
77
85
|
`- Session: ${receipt.sessionId}`,
|
|
@@ -93,13 +101,80 @@ export function humanReceipt(receipt) {
|
|
|
93
101
|
lines.push(`- Seller pay to: ${receipt.sellerPayTo}`);
|
|
94
102
|
}
|
|
95
103
|
if (receipt.network) {
|
|
96
|
-
lines.push(`- Network: ${receipt.network}`);
|
|
104
|
+
lines.push(`- Network: ${networkInfo.networkLabel} (${receipt.network})`);
|
|
105
|
+
}
|
|
106
|
+
if (networkInfo.circleChain) {
|
|
107
|
+
lines.push(`- Circle chain: ${networkInfo.circleChain}`);
|
|
108
|
+
}
|
|
109
|
+
if (receipt.buyerWalletAddress && networkInfo.buyerWalletExplanation) {
|
|
110
|
+
lines.push(`- Buyer wallet note: ${networkInfo.buyerWalletExplanation}`);
|
|
97
111
|
}
|
|
98
112
|
return lines.join("\n");
|
|
99
113
|
}
|
|
114
|
+
export function receiptSummaryJson(stored) {
|
|
115
|
+
return {
|
|
116
|
+
receiptId: stored.receiptId,
|
|
117
|
+
savedAt: stored.savedAt,
|
|
118
|
+
...readReceiptSummaryJson(stored.receipt),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function readReceiptSummaryJson(receipt) {
|
|
122
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
123
|
+
return {
|
|
124
|
+
articleId: receipt.articleId,
|
|
125
|
+
sessionId: receipt.sessionId,
|
|
126
|
+
wordsRead: receipt.wordsRead,
|
|
127
|
+
amountPaidAtomic: receipt.amountPaidAtomic,
|
|
128
|
+
amountPaidUsdc: formatAtomic(receipt.amountPaidAtomic),
|
|
129
|
+
stopReason: receipt.stopReason,
|
|
130
|
+
completed: receipt.completed,
|
|
131
|
+
buyerWalletAddress: receipt.buyerWalletAddress,
|
|
132
|
+
sellerPayTo: receipt.sellerPayTo,
|
|
133
|
+
network: receipt.network,
|
|
134
|
+
circleChain: networkInfo.circleChain,
|
|
135
|
+
buyerWalletExplanation: receipt.buyerWalletAddress ? networkInfo.buyerWalletExplanation : undefined,
|
|
136
|
+
settlementIds: receipt.settlementIds,
|
|
137
|
+
transactionHashes: receipt.transactionHashes,
|
|
138
|
+
text: receipt.text,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export function humanReceiptSummary(receipt, receiptId) {
|
|
142
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
143
|
+
const lines = [
|
|
144
|
+
"Summary:",
|
|
145
|
+
receiptId ? `- Receipt ID: ${receiptId}` : undefined,
|
|
146
|
+
`- Article: ${receipt.articleId}`,
|
|
147
|
+
`- Words read: ${receipt.wordsRead.toLocaleString("en-US")}`,
|
|
148
|
+
`- Amount paid: ${formatAtomic(receipt.amountPaidAtomic)} USDC`,
|
|
149
|
+
`- Stop reason: ${receipt.stopReason}`,
|
|
150
|
+
receipt.buyerWalletAddress ? `- Buyer wallet: ${receipt.buyerWalletAddress}` : undefined,
|
|
151
|
+
receipt.sellerPayTo ? `- Seller pay to: ${receipt.sellerPayTo}` : undefined,
|
|
152
|
+
receipt.network ? `- Network: ${networkInfo.networkLabel} (${receipt.network})` : undefined,
|
|
153
|
+
networkInfo.circleChain ? `- Circle chain: ${networkInfo.circleChain}` : undefined,
|
|
154
|
+
receipt.buyerWalletAddress && networkInfo.buyerWalletExplanation
|
|
155
|
+
? `- Buyer wallet note: ${networkInfo.buyerWalletExplanation}`
|
|
156
|
+
: undefined,
|
|
157
|
+
"",
|
|
158
|
+
receipt.text,
|
|
159
|
+
];
|
|
160
|
+
return lines.filter((line) => line !== undefined).join("\n");
|
|
161
|
+
}
|
|
100
162
|
export function formatAtomic(value) {
|
|
101
163
|
return formatAtomicUsdc(typeof value === "bigint" ? value : BigInt(value));
|
|
102
164
|
}
|
|
165
|
+
export function recommendedReadCommandFor(articleId, sectionId) {
|
|
166
|
+
return `rubicon read ${articleId} --section ${sectionId} --stop-after-section --max-usdc <amount>`;
|
|
167
|
+
}
|
|
168
|
+
function enrichedPaymentTerms(terms) {
|
|
169
|
+
const networkInfo = settlementNetworkInfo(terms.network);
|
|
170
|
+
return {
|
|
171
|
+
...terms,
|
|
172
|
+
networkLabel: terms.networkLabel ?? networkInfo.networkLabel,
|
|
173
|
+
circleChain: terms.circleChain ?? networkInfo.circleChain,
|
|
174
|
+
environment: terms.environment ?? networkInfo.environment,
|
|
175
|
+
fundingMethod: terms.fundingMethod ?? networkInfo.fundingMethod,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
103
178
|
function asRecord(value) {
|
|
104
179
|
return typeof value === "object" && value !== null ? value : { value };
|
|
105
180
|
}
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { mkdir } from "node:fs/promises";
|
|
3
3
|
import { dirname } from "node:path";
|
|
4
4
|
import { RubiconClient } from "@rubicon-caliga/agent-sdk";
|
|
5
|
-
import { parseUsdcToAtomic } from "@rubicon-caliga/core";
|
|
5
|
+
import { parseUsdcToAtomic, settlementNetworkInfo } from "@rubicon-caliga/core";
|
|
6
6
|
import { parseArgs, booleanFlag, stringFlag } from "./args.js";
|
|
7
7
|
import { configPath, HOSTED_GATEWAY_URL, readConfig, writeConfig } from "./config.js";
|
|
8
8
|
import { CliError, toCliError } from "./errors.js";
|
|
9
|
-
import { articleJson, formatAtomic, humanArticle, humanNavigation, humanReceipt, printJson, printJsonEvent, } from "./format.js";
|
|
9
|
+
import { articleJson, formatAtomic, humanArticle, humanNavigation, humanReceipt, humanReceiptSummary, printJson, printJsonEvent, readReceiptSummaryJson, recommendedReadCommandFor, receiptSummaryJson, } from "./format.js";
|
|
10
10
|
import { selectPaymentEngine } from "./payments.js";
|
|
11
11
|
import { listReceipts, loadReceipt, saveReceipt } from "./receipts.js";
|
|
12
12
|
async function main() {
|
|
@@ -29,7 +29,7 @@ async function main() {
|
|
|
29
29
|
authorization: apiKey ? `Bearer ${apiKey}` : undefined,
|
|
30
30
|
paymentEngine: payment.engine,
|
|
31
31
|
});
|
|
32
|
-
await dispatch({ parsed, json, config, gatewayUrl, apiKey, paymentMode: payment.mode, client });
|
|
32
|
+
await dispatch({ parsed, json, config, gatewayUrl, apiKey, paymentMode: payment.mode, circleChain: payment.circleChain, client });
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
const cliError = toCliError(error);
|
|
@@ -130,8 +130,9 @@ async function articleNavigation(runtime, articleId) {
|
|
|
130
130
|
if (!goal)
|
|
131
131
|
throw new CliError("MISSING_GOAL", "rubicon article navigation requires --goal.");
|
|
132
132
|
const response = await runtime.client.getNavigation(articleId, goal);
|
|
133
|
+
const recommendedReadCommand = recommendedReadCommandFor(response.article.articleId, response.navigation.sellerAgent.recommendedSectionId);
|
|
133
134
|
if (runtime.json) {
|
|
134
|
-
printJson({ success: true, article: articleJson(response.article), navigation: response.navigation });
|
|
135
|
+
printJson({ success: true, article: articleJson(response.article), navigation: response.navigation, recommendedReadCommand });
|
|
135
136
|
return;
|
|
136
137
|
}
|
|
137
138
|
process.stdout.write(`${humanArticle(response.article)}\n\n${humanNavigation(response.navigation)}\n`);
|
|
@@ -141,72 +142,174 @@ async function readArticle(runtime, articleId) {
|
|
|
141
142
|
throw new CliError("MISSING_ARTICLE_ID", "rubicon read requires an article id.");
|
|
142
143
|
const maxSpendAtomic = parseBudget(runtime.parsed);
|
|
143
144
|
const goal = stringFlag(runtime.parsed.flags, "goal");
|
|
145
|
+
const sectionId = sectionFlag(runtime.parsed);
|
|
146
|
+
const stopAfterSection = booleanFlag(runtime.parsed.flags, "stop-after-section");
|
|
147
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
148
|
+
const chunkWords = chunkWordsFlag(runtime.parsed);
|
|
149
|
+
const streamMode = streamModeFlag(runtime.parsed);
|
|
144
150
|
const maxWordsFlag = stringFlag(runtime.parsed.flags, "max-words");
|
|
145
151
|
const maxWords = maxWordsFlag === undefined ? undefined : Number(maxWordsFlag);
|
|
146
152
|
if (maxWords !== undefined && (!Number.isInteger(maxWords) || maxWords < 1)) {
|
|
147
153
|
throw new CliError("INVALID_MAX_WORDS", "--max-words must be a positive integer.");
|
|
148
154
|
}
|
|
155
|
+
if (stopAfterSection && !sectionId && !goal) {
|
|
156
|
+
throw new CliError("MISSING_SECTION", "--stop-after-section requires --section/--section-id or --goal.");
|
|
157
|
+
}
|
|
158
|
+
if (sectionId) {
|
|
159
|
+
await validateSection(runtime, articleId, sectionId);
|
|
160
|
+
}
|
|
149
161
|
if (booleanFlag(runtime.parsed.flags, "dry-run")) {
|
|
150
|
-
await dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords);
|
|
162
|
+
await dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords, sectionId, stopAfterSection, chunkWords, streamMode);
|
|
151
163
|
return;
|
|
152
164
|
}
|
|
153
165
|
let finalReceipt = undefined;
|
|
166
|
+
let storedReceipt = undefined;
|
|
167
|
+
let currentSessionId;
|
|
168
|
+
let cancelled = false;
|
|
169
|
+
const abortOnSigint = () => {
|
|
170
|
+
cancelled = true;
|
|
171
|
+
process.exitCode = 130;
|
|
172
|
+
if (!runtime.json) {
|
|
173
|
+
process.stderr.write("\nCancelling read and aborting the active session...\n");
|
|
174
|
+
}
|
|
175
|
+
if (currentSessionId) {
|
|
176
|
+
void runtime.client.abort(currentSessionId, "agent_cancelled").catch(() => { });
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
process.once("SIGINT", abortOnSigint);
|
|
154
180
|
const stream = runtime.client.read({
|
|
155
181
|
articleId,
|
|
156
182
|
goal,
|
|
183
|
+
sectionId,
|
|
157
184
|
maxSpendAtomic,
|
|
158
185
|
maxWords,
|
|
186
|
+
chunkWords,
|
|
187
|
+
streamMode,
|
|
188
|
+
metadata: stopAfterSection ? { stopAfterSection: true } : undefined,
|
|
159
189
|
});
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
finalReceipt = event.receipt;
|
|
190
|
+
try {
|
|
191
|
+
for await (const event of stream) {
|
|
192
|
+
if (event.type === "session.started") {
|
|
193
|
+
currentSessionId = event.session.sessionId;
|
|
165
194
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
195
|
+
if (runtime.json && !summary) {
|
|
196
|
+
printJsonEvent("event", { event });
|
|
197
|
+
if (event.type === "article.completed") {
|
|
198
|
+
finalReceipt = event.receipt;
|
|
199
|
+
}
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
if (runtime.json && summary) {
|
|
203
|
+
if (event.type === "article.completed") {
|
|
204
|
+
finalReceipt = event.receipt;
|
|
205
|
+
}
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
switch (event.type) {
|
|
209
|
+
case "seller.message":
|
|
210
|
+
if (!summary)
|
|
211
|
+
process.stdout.write(`Seller: ${event.content}\n\n`);
|
|
212
|
+
break;
|
|
213
|
+
case "session.started":
|
|
214
|
+
if (!summary)
|
|
215
|
+
process.stdout.write(`Session: ${event.session.sessionId}\n\n`);
|
|
216
|
+
break;
|
|
217
|
+
case "article.word":
|
|
218
|
+
if (!summary)
|
|
219
|
+
process.stdout.write(`${event.word} `);
|
|
220
|
+
break;
|
|
221
|
+
case "article.bundle":
|
|
222
|
+
case "article.chunk":
|
|
223
|
+
if (!summary)
|
|
224
|
+
process.stdout.write(`${event.words.map((entry) => entry.word).join(" ")} `);
|
|
225
|
+
break;
|
|
226
|
+
case "article.error":
|
|
227
|
+
process.stderr.write(`\nError: ${event.message}\n`);
|
|
228
|
+
break;
|
|
229
|
+
case "article.completed":
|
|
230
|
+
finalReceipt = event.receipt;
|
|
231
|
+
if (!summary) {
|
|
232
|
+
process.stdout.write(`\n\n${humanReceipt(event.receipt)}\n`);
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
case "article.usage":
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
if (cancelled) {
|
|
186
239
|
break;
|
|
240
|
+
}
|
|
187
241
|
}
|
|
188
242
|
}
|
|
243
|
+
finally {
|
|
244
|
+
process.removeListener("SIGINT", abortOnSigint);
|
|
245
|
+
}
|
|
189
246
|
if (finalReceipt) {
|
|
190
|
-
|
|
247
|
+
storedReceipt = await saveReceipt(finalReceipt);
|
|
248
|
+
if (runtime.json && !summary) {
|
|
249
|
+
printJson({ type: "receipt.saved", success: true, receiptId: storedReceipt.receiptId, savedAt: storedReceipt.savedAt, receipt: storedReceipt.receipt });
|
|
250
|
+
}
|
|
251
|
+
else if (!runtime.json && !summary) {
|
|
252
|
+
process.stdout.write(`Receipt ID: ${storedReceipt.receiptId}\n`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (summary && finalReceipt) {
|
|
191
256
|
if (runtime.json) {
|
|
192
|
-
printJson({
|
|
257
|
+
printJson({
|
|
258
|
+
success: true,
|
|
259
|
+
receiptId: storedReceipt?.receiptId,
|
|
260
|
+
savedAt: storedReceipt?.savedAt,
|
|
261
|
+
receipt: readReceiptSummaryJson(finalReceipt),
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
process.stdout.write(`${humanReceiptSummary(finalReceipt, storedReceipt?.receiptId)}\n`);
|
|
193
266
|
}
|
|
194
267
|
}
|
|
195
268
|
}
|
|
196
|
-
async function dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords) {
|
|
269
|
+
async function dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords, sectionId, stopAfterSection, chunkWords, streamMode) {
|
|
197
270
|
const article = await findArticle(runtime, articleId);
|
|
271
|
+
const navigation = goal && !sectionId ? await runtime.client.getNavigation(articleId, goal).catch(() => undefined) : undefined;
|
|
272
|
+
const effectiveSectionId = sectionId ?? navigation?.navigation.sellerAgent.recommendedSectionId;
|
|
273
|
+
const effectiveSection = effectiveSectionId ? findSection(article, effectiveSectionId) : undefined;
|
|
274
|
+
const estimatedWords = Math.min(maxWords ?? Number.MAX_SAFE_INTEGER, effectiveSection?.wordCount ?? article.totalWords);
|
|
275
|
+
const estimatedMaxCostAtomic = BigInt(article.pricePerWordAtomic) * BigInt(estimatedWords);
|
|
276
|
+
const budgetAtomic = BigInt(maxSpendAtomic);
|
|
277
|
+
const networkInfo = settlementNetworkInfo(article.paymentTerms?.network);
|
|
278
|
+
const fundingMethod = article.paymentTerms?.fundingMethod ?? networkInfo.fundingMethod;
|
|
279
|
+
const balanceCheck = {
|
|
280
|
+
checked: false,
|
|
281
|
+
sufficient: undefined,
|
|
282
|
+
reason: "Live Circle Gateway balance is not checked during dry-run.",
|
|
283
|
+
};
|
|
284
|
+
const budgetSufficiency = {
|
|
285
|
+
sufficientForEstimatedMax: budgetAtomic >= estimatedMaxCostAtomic,
|
|
286
|
+
estimatedMaxCostAtomic: `${estimatedMaxCostAtomic}`,
|
|
287
|
+
estimatedMaxCostUsdc: formatAtomic(`${estimatedMaxCostAtomic}`),
|
|
288
|
+
estimatedWords,
|
|
289
|
+
};
|
|
198
290
|
if (runtime.json) {
|
|
199
291
|
printJson({
|
|
200
292
|
success: true,
|
|
201
293
|
dryRun: true,
|
|
202
294
|
gatewayUrl: runtime.gatewayUrl,
|
|
203
295
|
paymentMode: runtime.paymentMode,
|
|
296
|
+
circleChain: article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain,
|
|
204
297
|
budget: {
|
|
205
298
|
maxSpendAtomic,
|
|
206
299
|
maxSpendUsdc: formatAtomic(maxSpendAtomic),
|
|
207
300
|
maxWords,
|
|
208
301
|
},
|
|
209
302
|
goal,
|
|
303
|
+
sectionId,
|
|
304
|
+
recommendedSectionId: navigation?.navigation.sellerAgent.recommendedSectionId,
|
|
305
|
+
effectiveSectionId,
|
|
306
|
+
readStartsAt: effectiveSectionId ? `section:${effectiveSectionId}` : "full-article",
|
|
307
|
+
stopAfterSection,
|
|
308
|
+
chunkWords,
|
|
309
|
+
streamMode,
|
|
310
|
+
fundingMethod,
|
|
311
|
+
estimatedMax: budgetSufficiency,
|
|
312
|
+
walletBalance: balanceCheck,
|
|
210
313
|
article: articleJson(article),
|
|
211
314
|
});
|
|
212
315
|
return;
|
|
@@ -215,9 +318,22 @@ async function dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords) {
|
|
|
215
318
|
"Dry run: no paid read started.",
|
|
216
319
|
`Gateway: ${runtime.gatewayUrl}`,
|
|
217
320
|
`Payment mode: ${runtime.paymentMode}`,
|
|
321
|
+
article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain
|
|
322
|
+
? `Circle chain: ${article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain}`
|
|
323
|
+
: undefined,
|
|
218
324
|
`Budget: ${formatAtomic(maxSpendAtomic)} USDC (${maxSpendAtomic} atomic)`,
|
|
325
|
+
`Estimated max for ${effectiveSectionId ? effectiveSectionId : "full article"}: ${formatAtomic(`${estimatedMaxCostAtomic}`)} USDC (${estimatedWords.toLocaleString("en-US")} words)`,
|
|
326
|
+
`Budget covers estimate: ${budgetSufficiency.sufficientForEstimatedMax ? "yes" : "no"}`,
|
|
327
|
+
`Wallet balance check: not checked`,
|
|
328
|
+
fundingMethod ? `Funding: ${fundingMethod}` : undefined,
|
|
219
329
|
maxWords ? `Max words: ${maxWords}` : undefined,
|
|
220
330
|
goal ? `Goal: ${goal}` : undefined,
|
|
331
|
+
navigation?.navigation.sellerAgent.recommendedSectionId ? `Recommended section: ${navigation.navigation.sellerAgent.recommendedSectionId}` : undefined,
|
|
332
|
+
`Read starts at: ${effectiveSectionId ? `section ${effectiveSectionId}` : "full article"}`,
|
|
333
|
+
sectionId ? `Section: ${sectionId}` : undefined,
|
|
334
|
+
stopAfterSection ? "Stop after section: yes" : undefined,
|
|
335
|
+
`Stream mode: ${streamMode}`,
|
|
336
|
+
streamMode === "bundled" ? `Bundle words: ${chunkWords ?? 32}` : undefined,
|
|
221
337
|
"",
|
|
222
338
|
humanArticle(article),
|
|
223
339
|
"",
|
|
@@ -226,9 +342,11 @@ async function dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords) {
|
|
|
226
342
|
.join("\n"));
|
|
227
343
|
}
|
|
228
344
|
async function receiptsList(runtime) {
|
|
229
|
-
const
|
|
345
|
+
const limit = limitFlag(runtime.parsed);
|
|
346
|
+
const receipts = (await listReceipts()).slice(0, limit);
|
|
347
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
230
348
|
if (runtime.json) {
|
|
231
|
-
printJson({ success: true, receipts });
|
|
349
|
+
printJson({ success: true, receipts: summary ? receipts.map(receiptSummaryJson) : receipts });
|
|
232
350
|
return;
|
|
233
351
|
}
|
|
234
352
|
if (receipts.length === 0) {
|
|
@@ -243,8 +361,13 @@ async function receiptsShow(runtime, receiptId) {
|
|
|
243
361
|
if (!receiptId)
|
|
244
362
|
throw new CliError("MISSING_RECEIPT_ID", "rubicon receipts show requires a receipt id.");
|
|
245
363
|
const stored = await loadReceipt(receiptId);
|
|
364
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
246
365
|
if (runtime.json) {
|
|
247
|
-
printJson({ success: true, ...stored });
|
|
366
|
+
printJson({ success: true, ...(summary ? receiptSummaryJson(stored) : stored) });
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (summary) {
|
|
370
|
+
process.stdout.write(`${humanReceiptSummary(stored.receipt, stored.receiptId)}\n`);
|
|
248
371
|
return;
|
|
249
372
|
}
|
|
250
373
|
process.stdout.write(`Receipt ID: ${stored.receiptId}\nSaved: ${stored.savedAt}\n${humanReceipt(stored.receipt)}\n`);
|
|
@@ -261,6 +384,7 @@ async function configShow(runtime) {
|
|
|
261
384
|
gatewayUrl: runtime.gatewayUrl,
|
|
262
385
|
apiKey: runtime.apiKey ? "set" : undefined,
|
|
263
386
|
paymentMode: runtime.paymentMode,
|
|
387
|
+
circleChain: runtime.circleChain,
|
|
264
388
|
},
|
|
265
389
|
};
|
|
266
390
|
if (runtime.json) {
|
|
@@ -335,6 +459,63 @@ function parseBudget(parsed) {
|
|
|
335
459
|
throw new CliError("INVALID_BUDGET", "--max-usdc must be a decimal USDC amount.");
|
|
336
460
|
}
|
|
337
461
|
}
|
|
462
|
+
function sectionFlag(parsed) {
|
|
463
|
+
const section = stringFlag(parsed.flags, "section");
|
|
464
|
+
const sectionId = stringFlag(parsed.flags, "section-id");
|
|
465
|
+
if (section && sectionId && section !== sectionId) {
|
|
466
|
+
throw new CliError("MULTIPLE_SECTIONS", "Use either --section or --section-id, not both.");
|
|
467
|
+
}
|
|
468
|
+
return section ?? sectionId;
|
|
469
|
+
}
|
|
470
|
+
function limitFlag(parsed) {
|
|
471
|
+
const rawLimit = stringFlag(parsed.flags, "limit");
|
|
472
|
+
if (rawLimit === undefined)
|
|
473
|
+
return undefined;
|
|
474
|
+
const limit = Number(rawLimit);
|
|
475
|
+
if (!Number.isInteger(limit) || limit < 1) {
|
|
476
|
+
throw new CliError("INVALID_LIMIT", "--limit must be a positive integer.");
|
|
477
|
+
}
|
|
478
|
+
return limit;
|
|
479
|
+
}
|
|
480
|
+
function chunkWordsFlag(parsed) {
|
|
481
|
+
const fast = booleanFlag(parsed.flags, "fast");
|
|
482
|
+
const mode = stringFlag(parsed.flags, "mode");
|
|
483
|
+
if (mode !== undefined && mode !== "batch" && mode !== "word") {
|
|
484
|
+
throw new CliError("INVALID_READ_MODE", "--mode must be batch or word.");
|
|
485
|
+
}
|
|
486
|
+
const rawChunkWords = stringFlag(parsed.flags, "chunk-words");
|
|
487
|
+
if (rawChunkWords === undefined)
|
|
488
|
+
return fast || mode === "batch" ? 32 : undefined;
|
|
489
|
+
const chunkWords = Number(rawChunkWords);
|
|
490
|
+
if (!Number.isInteger(chunkWords) || chunkWords < 1) {
|
|
491
|
+
throw new CliError("INVALID_CHUNK_WORDS", "--chunk-words must be a positive integer.");
|
|
492
|
+
}
|
|
493
|
+
return Math.min(chunkWords, 256);
|
|
494
|
+
}
|
|
495
|
+
function streamModeFlag(parsed) {
|
|
496
|
+
const streamMode = stringFlag(parsed.flags, "stream-mode");
|
|
497
|
+
const legacyMode = stringFlag(parsed.flags, "mode");
|
|
498
|
+
const perWord = booleanFlag(parsed.flags, "per-word");
|
|
499
|
+
if (streamMode !== undefined && streamMode !== "bundled" && streamMode !== "word") {
|
|
500
|
+
throw new CliError("INVALID_STREAM_MODE", "--stream-mode must be bundled or word.");
|
|
501
|
+
}
|
|
502
|
+
if (perWord && streamMode === "bundled") {
|
|
503
|
+
throw new CliError("INVALID_STREAM_MODE", "--per-word cannot be combined with --stream-mode bundled.");
|
|
504
|
+
}
|
|
505
|
+
if ((perWord || legacyMode === "word" || streamMode === "word") && stringFlag(parsed.flags, "chunk-words") !== undefined) {
|
|
506
|
+
throw new CliError("INVALID_STREAM_MODE", "Per-word mode cannot be combined with --chunk-words.");
|
|
507
|
+
}
|
|
508
|
+
return perWord || legacyMode === "word" ? "word" : streamMode ?? "bundled";
|
|
509
|
+
}
|
|
510
|
+
function findSection(article, sectionId) {
|
|
511
|
+
return article.sections.find((section) => section.sectionId === sectionId);
|
|
512
|
+
}
|
|
513
|
+
async function validateSection(runtime, articleId, sectionId) {
|
|
514
|
+
const article = await findArticle(runtime, articleId);
|
|
515
|
+
if (!article.sections.some((section) => section.sectionId === sectionId)) {
|
|
516
|
+
throw new CliError("SECTION_NOT_FOUND", `Section not found for ${articleId}: ${sectionId}`);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
338
519
|
function matchesQuery(article, query) {
|
|
339
520
|
const haystack = [
|
|
340
521
|
article.articleId,
|
|
@@ -358,9 +539,9 @@ function showHelp(json) {
|
|
|
358
539
|
"rubicon search \"<query>\"",
|
|
359
540
|
"rubicon article show <article-id>",
|
|
360
541
|
"rubicon article navigation <article-id> --goal \"<goal>\"",
|
|
361
|
-
"rubicon read <article-id> --max-usdc 0.10 [--goal \"...\"] [--max-words 50] [--dry-run]",
|
|
362
|
-
"rubicon receipts list",
|
|
363
|
-
"rubicon receipts show <receipt-id>",
|
|
542
|
+
"rubicon read <article-id> --max-usdc 0.10 [--goal \"...\"] [--section <section-id>] [--stop-after-section] [--stream-mode bundled|word] [--chunk-words 32] [--per-word] [--max-words 50] [--summary] [--dry-run]",
|
|
543
|
+
"rubicon receipts list [--limit 10] [--summary]",
|
|
544
|
+
"rubicon receipts show <receipt-id> [--summary]",
|
|
364
545
|
"rubicon config show",
|
|
365
546
|
"rubicon config set gateway-url <url>",
|
|
366
547
|
"rubicon config set api-key <key>",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/payments.d.ts
CHANGED
package/dist/payments.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../src/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../src/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GAAG,gBAAgB,CAiBnB"}
|
package/dist/payments.js
CHANGED
|
@@ -7,12 +7,14 @@ export function selectPaymentEngine(input) {
|
|
|
7
7
|
if (selectedMode === "static") {
|
|
8
8
|
return { mode: selectedMode, engine: new StaticPaymentEngine() };
|
|
9
9
|
}
|
|
10
|
+
const circleChain = process.env.CIRCLE_CLI_CHAIN ?? input.config.circleChain ?? "ARC-TESTNET";
|
|
10
11
|
return {
|
|
11
12
|
mode: selectedMode,
|
|
12
13
|
engine: new CircleCliGatewayPaymentEngine({
|
|
13
14
|
agentWalletAddress: envAddress("CIRCLE_AGENT_WALLET_ADDRESS") ?? input.config.agentWalletAddress,
|
|
14
|
-
chain:
|
|
15
|
+
chain: circleChain,
|
|
15
16
|
}),
|
|
17
|
+
circleChain,
|
|
16
18
|
};
|
|
17
19
|
}
|
|
18
20
|
function normalizeMode(value) {
|
package/dist/payments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../src/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,GAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../src/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,GAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUvC,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAChH,MAAM,YAAY,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAElE,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,mBAAmB,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC;IAC9F,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,IAAI,6BAA6B,CAAC;YACxC,kBAAkB,EAAE,UAAU,CAAC,6BAA6B,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,kBAAkB;YAChG,KAAK,EAAE,WAAW;SACnB,CAAC;QACF,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG;YAAE,OAAO,YAAY,CAAC;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B;YAAE,OAAO,YAAY,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC/D,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,4CAA4C,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,IAAI,cAAc,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B;QAAE,OAAO,YAAY,CAAC;IAC3G,IAAI,UAAU,KAAK,kBAAkB;QAAE,OAAO,YAAY,CAAC;IAC3D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,KAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubicon-caliga/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Terminal-native Rubicon CLI for buyer agents consuming pay-per-word articles.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@rubicon-caliga/agent-sdk": "0.1.
|
|
32
|
-
"@rubicon-caliga/core": "0.1.
|
|
31
|
+
"@rubicon-caliga/agent-sdk": "0.1.4",
|
|
32
|
+
"@rubicon-caliga/core": "0.1.2"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.2",
|
package/src/format.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { formatAtomicUsdc } from "@rubicon-caliga/core";
|
|
1
|
+
import { formatAtomicUsdc, settlementNetworkInfo } from "@rubicon-caliga/core";
|
|
2
2
|
import type { ArticleSummary, ArticleNavigation, SellerPaymentTerms } from "@rubicon-caliga/core";
|
|
3
3
|
import type { ReadReceipt } from "@rubicon-caliga/agent-sdk";
|
|
4
|
+
import type { StoredReceipt } from "./receipts.js";
|
|
4
5
|
|
|
5
6
|
export function printJson(value: unknown): void {
|
|
6
7
|
process.stdout.write(`${JSON.stringify(value)}\n`);
|
|
@@ -11,6 +12,7 @@ export function printJsonEvent(type: string, value: unknown): void {
|
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export function articleJson(article: ArticleSummary): Record<string, unknown> {
|
|
15
|
+
const paymentTerms = article.paymentTerms ? enrichedPaymentTerms(article.paymentTerms) : undefined;
|
|
14
16
|
return {
|
|
15
17
|
articleId: article.articleId,
|
|
16
18
|
title: article.title,
|
|
@@ -21,7 +23,7 @@ export function articleJson(article: ArticleSummary): Record<string, unknown> {
|
|
|
21
23
|
totalWords: article.totalWords,
|
|
22
24
|
pricePerWordAtomic: article.pricePerWordAtomic,
|
|
23
25
|
maxArticlePriceAtomic: article.maxArticlePriceAtomic,
|
|
24
|
-
paymentTerms
|
|
26
|
+
paymentTerms,
|
|
25
27
|
sections: article.sections,
|
|
26
28
|
};
|
|
27
29
|
}
|
|
@@ -49,21 +51,27 @@ export function humanArticle(article: ArticleSummary): string {
|
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
export function humanPaymentTerms(terms: SellerPaymentTerms): string[] {
|
|
54
|
+
const enriched = enrichedPaymentTerms(terms);
|
|
52
55
|
return [
|
|
53
56
|
"Payment terms:",
|
|
54
|
-
`- Asset: ${
|
|
55
|
-
`- Network: ${
|
|
57
|
+
`- Asset: ${enriched.asset}`,
|
|
58
|
+
`- Network: ${enriched.networkLabel ?? enriched.network}`,
|
|
59
|
+
enriched.circleChain ? `- Circle chain: ${enriched.circleChain}` : undefined,
|
|
60
|
+
enriched.environment ? `- Environment: ${enriched.environment}` : undefined,
|
|
61
|
+
enriched.fundingMethod ? `- Funding: ${enriched.fundingMethod}` : undefined,
|
|
56
62
|
`- Pay to: ${terms.payTo}`,
|
|
57
63
|
`- Price/word: ${formatAtomic(terms.pricePerWordAtomic)} USDC`,
|
|
58
|
-
];
|
|
64
|
+
].filter((line): line is string => line !== undefined);
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
export function humanNavigation(navigation: ArticleNavigation): string {
|
|
62
68
|
const seller = navigation.sellerAgent;
|
|
69
|
+
const recommendedReadCommand = recommendedReadCommandFor(navigation.articleId, seller.recommendedSectionId);
|
|
63
70
|
const lines = [
|
|
64
71
|
`Recommended section: ${seller.recommendedSectionId}`,
|
|
65
72
|
`Alternatives: ${seller.alternativeSectionIds.length ? seller.alternativeSectionIds.join(", ") : "none"}`,
|
|
66
73
|
`Rationale: ${seller.rationale}`,
|
|
74
|
+
`Recommended read: ${recommendedReadCommand}`,
|
|
67
75
|
];
|
|
68
76
|
if (seller.safeHints.length > 0) {
|
|
69
77
|
lines.push("", "Safe hints:", ...seller.safeHints.map((hint) => `- ${hint}`));
|
|
@@ -81,6 +89,7 @@ export function humanNavigation(navigation: ArticleNavigation): string {
|
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
export function humanReceipt(receipt: ReadReceipt): string {
|
|
92
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
84
93
|
const lines = [
|
|
85
94
|
"Receipt:",
|
|
86
95
|
`- Session: ${receipt.sessionId}`,
|
|
@@ -102,15 +111,87 @@ export function humanReceipt(receipt: ReadReceipt): string {
|
|
|
102
111
|
lines.push(`- Seller pay to: ${receipt.sellerPayTo}`);
|
|
103
112
|
}
|
|
104
113
|
if (receipt.network) {
|
|
105
|
-
lines.push(`- Network: ${receipt.network}`);
|
|
114
|
+
lines.push(`- Network: ${networkInfo.networkLabel} (${receipt.network})`);
|
|
115
|
+
}
|
|
116
|
+
if (networkInfo.circleChain) {
|
|
117
|
+
lines.push(`- Circle chain: ${networkInfo.circleChain}`);
|
|
118
|
+
}
|
|
119
|
+
if (receipt.buyerWalletAddress && networkInfo.buyerWalletExplanation) {
|
|
120
|
+
lines.push(`- Buyer wallet note: ${networkInfo.buyerWalletExplanation}`);
|
|
106
121
|
}
|
|
107
122
|
return lines.join("\n");
|
|
108
123
|
}
|
|
109
124
|
|
|
125
|
+
export function receiptSummaryJson(stored: StoredReceipt): Record<string, unknown> {
|
|
126
|
+
return {
|
|
127
|
+
receiptId: stored.receiptId,
|
|
128
|
+
savedAt: stored.savedAt,
|
|
129
|
+
...readReceiptSummaryJson(stored.receipt),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function readReceiptSummaryJson(receipt: ReadReceipt): Record<string, unknown> {
|
|
134
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
135
|
+
return {
|
|
136
|
+
articleId: receipt.articleId,
|
|
137
|
+
sessionId: receipt.sessionId,
|
|
138
|
+
wordsRead: receipt.wordsRead,
|
|
139
|
+
amountPaidAtomic: receipt.amountPaidAtomic,
|
|
140
|
+
amountPaidUsdc: formatAtomic(receipt.amountPaidAtomic),
|
|
141
|
+
stopReason: receipt.stopReason,
|
|
142
|
+
completed: receipt.completed,
|
|
143
|
+
buyerWalletAddress: receipt.buyerWalletAddress,
|
|
144
|
+
sellerPayTo: receipt.sellerPayTo,
|
|
145
|
+
network: receipt.network,
|
|
146
|
+
circleChain: networkInfo.circleChain,
|
|
147
|
+
buyerWalletExplanation: receipt.buyerWalletAddress ? networkInfo.buyerWalletExplanation : undefined,
|
|
148
|
+
settlementIds: receipt.settlementIds,
|
|
149
|
+
transactionHashes: receipt.transactionHashes,
|
|
150
|
+
text: receipt.text,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function humanReceiptSummary(receipt: ReadReceipt, receiptId?: string): string {
|
|
155
|
+
const networkInfo = settlementNetworkInfo(receipt.network);
|
|
156
|
+
const lines = [
|
|
157
|
+
"Summary:",
|
|
158
|
+
receiptId ? `- Receipt ID: ${receiptId}` : undefined,
|
|
159
|
+
`- Article: ${receipt.articleId}`,
|
|
160
|
+
`- Words read: ${receipt.wordsRead.toLocaleString("en-US")}`,
|
|
161
|
+
`- Amount paid: ${formatAtomic(receipt.amountPaidAtomic)} USDC`,
|
|
162
|
+
`- Stop reason: ${receipt.stopReason}`,
|
|
163
|
+
receipt.buyerWalletAddress ? `- Buyer wallet: ${receipt.buyerWalletAddress}` : undefined,
|
|
164
|
+
receipt.sellerPayTo ? `- Seller pay to: ${receipt.sellerPayTo}` : undefined,
|
|
165
|
+
receipt.network ? `- Network: ${networkInfo.networkLabel} (${receipt.network})` : undefined,
|
|
166
|
+
networkInfo.circleChain ? `- Circle chain: ${networkInfo.circleChain}` : undefined,
|
|
167
|
+
receipt.buyerWalletAddress && networkInfo.buyerWalletExplanation
|
|
168
|
+
? `- Buyer wallet note: ${networkInfo.buyerWalletExplanation}`
|
|
169
|
+
: undefined,
|
|
170
|
+
"",
|
|
171
|
+
receipt.text,
|
|
172
|
+
];
|
|
173
|
+
return lines.filter((line): line is string => line !== undefined).join("\n");
|
|
174
|
+
}
|
|
175
|
+
|
|
110
176
|
export function formatAtomic(value: string | bigint): string {
|
|
111
177
|
return formatAtomicUsdc(typeof value === "bigint" ? value : BigInt(value));
|
|
112
178
|
}
|
|
113
179
|
|
|
180
|
+
export function recommendedReadCommandFor(articleId: string, sectionId: string): string {
|
|
181
|
+
return `rubicon read ${articleId} --section ${sectionId} --stop-after-section --max-usdc <amount>`;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function enrichedPaymentTerms(terms: SellerPaymentTerms): SellerPaymentTerms {
|
|
185
|
+
const networkInfo = settlementNetworkInfo(terms.network);
|
|
186
|
+
return {
|
|
187
|
+
...terms,
|
|
188
|
+
networkLabel: terms.networkLabel ?? networkInfo.networkLabel,
|
|
189
|
+
circleChain: terms.circleChain ?? networkInfo.circleChain,
|
|
190
|
+
environment: terms.environment ?? networkInfo.environment,
|
|
191
|
+
fundingMethod: terms.fundingMethod ?? networkInfo.fundingMethod,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
114
195
|
function asRecord(value: unknown): Record<string, unknown> {
|
|
115
196
|
return typeof value === "object" && value !== null ? (value as Record<string, unknown>) : { value };
|
|
116
197
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { mkdir } from "node:fs/promises";
|
|
3
3
|
import { dirname } from "node:path";
|
|
4
4
|
import { RubiconClient } from "@rubicon-caliga/agent-sdk";
|
|
5
|
-
import { parseUsdcToAtomic, type ArticleSummary } from "@rubicon-caliga/core";
|
|
5
|
+
import { parseUsdcToAtomic, settlementNetworkInfo, type ArticleSectionSummary, type ArticleSummary, type StreamMode } from "@rubicon-caliga/core";
|
|
6
6
|
import { parseArgs, booleanFlag, stringFlag, type ParsedArgs } from "./args.js";
|
|
7
7
|
import { configPath, HOSTED_GATEWAY_URL, readConfig, writeConfig, type RubiconCliConfig } from "./config.js";
|
|
8
8
|
import { CliError, toCliError } from "./errors.js";
|
|
@@ -12,8 +12,12 @@ import {
|
|
|
12
12
|
humanArticle,
|
|
13
13
|
humanNavigation,
|
|
14
14
|
humanReceipt,
|
|
15
|
+
humanReceiptSummary,
|
|
15
16
|
printJson,
|
|
16
17
|
printJsonEvent,
|
|
18
|
+
readReceiptSummaryJson,
|
|
19
|
+
recommendedReadCommandFor,
|
|
20
|
+
receiptSummaryJson,
|
|
17
21
|
} from "./format.js";
|
|
18
22
|
import { selectPaymentEngine, type PaymentMode } from "./payments.js";
|
|
19
23
|
import { listReceipts, loadReceipt, saveReceipt } from "./receipts.js";
|
|
@@ -25,6 +29,7 @@ interface Runtime {
|
|
|
25
29
|
gatewayUrl: string;
|
|
26
30
|
apiKey?: string;
|
|
27
31
|
paymentMode: PaymentMode;
|
|
32
|
+
circleChain?: string;
|
|
28
33
|
client: RubiconClient;
|
|
29
34
|
}
|
|
30
35
|
|
|
@@ -50,7 +55,7 @@ async function main(): Promise<void> {
|
|
|
50
55
|
authorization: apiKey ? `Bearer ${apiKey}` : undefined,
|
|
51
56
|
paymentEngine: payment.engine,
|
|
52
57
|
});
|
|
53
|
-
await dispatch({ parsed, json, config, gatewayUrl, apiKey, paymentMode: payment.mode, client });
|
|
58
|
+
await dispatch({ parsed, json, config, gatewayUrl, apiKey, paymentMode: payment.mode, circleChain: payment.circleChain, client });
|
|
54
59
|
} catch (error) {
|
|
55
60
|
const cliError = toCliError(error);
|
|
56
61
|
if (json) {
|
|
@@ -156,8 +161,12 @@ async function articleNavigation(runtime: Runtime, articleId: string | undefined
|
|
|
156
161
|
const goal = stringFlag(runtime.parsed.flags, "goal");
|
|
157
162
|
if (!goal) throw new CliError("MISSING_GOAL", "rubicon article navigation requires --goal.");
|
|
158
163
|
const response = await runtime.client.getNavigation(articleId, goal);
|
|
164
|
+
const recommendedReadCommand = recommendedReadCommandFor(
|
|
165
|
+
response.article.articleId,
|
|
166
|
+
response.navigation.sellerAgent.recommendedSectionId,
|
|
167
|
+
);
|
|
159
168
|
if (runtime.json) {
|
|
160
|
-
printJson({ success: true, article: articleJson(response.article), navigation: response.navigation });
|
|
169
|
+
printJson({ success: true, article: articleJson(response.article), navigation: response.navigation, recommendedReadCommand });
|
|
161
170
|
return;
|
|
162
171
|
}
|
|
163
172
|
process.stdout.write(`${humanArticle(response.article)}\n\n${humanNavigation(response.navigation)}\n`);
|
|
@@ -167,60 +176,129 @@ async function readArticle(runtime: Runtime, articleId: string | undefined): Pro
|
|
|
167
176
|
if (!articleId) throw new CliError("MISSING_ARTICLE_ID", "rubicon read requires an article id.");
|
|
168
177
|
const maxSpendAtomic = parseBudget(runtime.parsed);
|
|
169
178
|
const goal = stringFlag(runtime.parsed.flags, "goal");
|
|
179
|
+
const sectionId = sectionFlag(runtime.parsed);
|
|
180
|
+
const stopAfterSection = booleanFlag(runtime.parsed.flags, "stop-after-section");
|
|
181
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
182
|
+
const chunkWords = chunkWordsFlag(runtime.parsed);
|
|
183
|
+
const streamMode = streamModeFlag(runtime.parsed);
|
|
170
184
|
const maxWordsFlag = stringFlag(runtime.parsed.flags, "max-words");
|
|
171
185
|
const maxWords = maxWordsFlag === undefined ? undefined : Number(maxWordsFlag);
|
|
172
186
|
if (maxWords !== undefined && (!Number.isInteger(maxWords) || maxWords < 1)) {
|
|
173
187
|
throw new CliError("INVALID_MAX_WORDS", "--max-words must be a positive integer.");
|
|
174
188
|
}
|
|
189
|
+
if (stopAfterSection && !sectionId && !goal) {
|
|
190
|
+
throw new CliError("MISSING_SECTION", "--stop-after-section requires --section/--section-id or --goal.");
|
|
191
|
+
}
|
|
192
|
+
if (sectionId) {
|
|
193
|
+
await validateSection(runtime, articleId, sectionId);
|
|
194
|
+
}
|
|
175
195
|
|
|
176
196
|
if (booleanFlag(runtime.parsed.flags, "dry-run")) {
|
|
177
|
-
await dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords);
|
|
197
|
+
await dryRun(runtime, articleId, maxSpendAtomic, goal, maxWords, sectionId, stopAfterSection, chunkWords, streamMode);
|
|
178
198
|
return;
|
|
179
199
|
}
|
|
180
200
|
|
|
181
201
|
let finalReceipt = undefined;
|
|
202
|
+
let storedReceipt = undefined;
|
|
203
|
+
let currentSessionId: string | undefined;
|
|
204
|
+
let cancelled = false;
|
|
205
|
+
const abortOnSigint = (): void => {
|
|
206
|
+
cancelled = true;
|
|
207
|
+
process.exitCode = 130;
|
|
208
|
+
if (!runtime.json) {
|
|
209
|
+
process.stderr.write("\nCancelling read and aborting the active session...\n");
|
|
210
|
+
}
|
|
211
|
+
if (currentSessionId) {
|
|
212
|
+
void runtime.client.abort(currentSessionId, "agent_cancelled").catch(() => {});
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
process.once("SIGINT", abortOnSigint);
|
|
216
|
+
|
|
182
217
|
const stream = runtime.client.read({
|
|
183
218
|
articleId,
|
|
184
219
|
goal,
|
|
220
|
+
sectionId,
|
|
185
221
|
maxSpendAtomic,
|
|
186
222
|
maxWords,
|
|
223
|
+
chunkWords,
|
|
224
|
+
streamMode,
|
|
225
|
+
metadata: stopAfterSection ? { stopAfterSection: true } : undefined,
|
|
187
226
|
});
|
|
188
227
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
228
|
+
try {
|
|
229
|
+
for await (const event of stream) {
|
|
230
|
+
if (event.type === "session.started") {
|
|
231
|
+
currentSessionId = event.session.sessionId;
|
|
232
|
+
}
|
|
233
|
+
if (runtime.json && !summary) {
|
|
234
|
+
printJsonEvent("event", { event });
|
|
235
|
+
if (event.type === "article.completed") {
|
|
236
|
+
finalReceipt = event.receipt;
|
|
237
|
+
}
|
|
238
|
+
continue;
|
|
194
239
|
}
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
240
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
241
|
+
if (runtime.json && summary) {
|
|
242
|
+
if (event.type === "article.completed") {
|
|
243
|
+
finalReceipt = event.receipt;
|
|
244
|
+
}
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
switch (event.type) {
|
|
249
|
+
case "seller.message":
|
|
250
|
+
if (!summary) process.stdout.write(`Seller: ${event.content}\n\n`);
|
|
251
|
+
break;
|
|
252
|
+
case "session.started":
|
|
253
|
+
if (!summary) process.stdout.write(`Session: ${event.session.sessionId}\n\n`);
|
|
254
|
+
break;
|
|
255
|
+
case "article.word":
|
|
256
|
+
if (!summary) process.stdout.write(`${event.word} `);
|
|
257
|
+
break;
|
|
258
|
+
case "article.bundle":
|
|
259
|
+
case "article.chunk":
|
|
260
|
+
if (!summary) process.stdout.write(`${event.words.map((entry) => entry.word).join(" ")} `);
|
|
261
|
+
break;
|
|
262
|
+
case "article.error":
|
|
263
|
+
process.stderr.write(`\nError: ${event.message}\n`);
|
|
264
|
+
break;
|
|
265
|
+
case "article.completed":
|
|
266
|
+
finalReceipt = event.receipt;
|
|
267
|
+
if (!summary) {
|
|
268
|
+
process.stdout.write(`\n\n${humanReceipt(event.receipt)}\n`);
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
case "article.usage":
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (cancelled) {
|
|
216
276
|
break;
|
|
277
|
+
}
|
|
217
278
|
}
|
|
279
|
+
} finally {
|
|
280
|
+
process.removeListener("SIGINT", abortOnSigint);
|
|
218
281
|
}
|
|
219
282
|
|
|
220
283
|
if (finalReceipt) {
|
|
221
|
-
|
|
284
|
+
storedReceipt = await saveReceipt(finalReceipt);
|
|
285
|
+
if (runtime.json && !summary) {
|
|
286
|
+
printJson({ type: "receipt.saved", success: true, receiptId: storedReceipt.receiptId, savedAt: storedReceipt.savedAt, receipt: storedReceipt.receipt });
|
|
287
|
+
} else if (!runtime.json && !summary) {
|
|
288
|
+
process.stdout.write(`Receipt ID: ${storedReceipt.receiptId}\n`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (summary && finalReceipt) {
|
|
222
293
|
if (runtime.json) {
|
|
223
|
-
printJson({
|
|
294
|
+
printJson({
|
|
295
|
+
success: true,
|
|
296
|
+
receiptId: storedReceipt?.receiptId,
|
|
297
|
+
savedAt: storedReceipt?.savedAt,
|
|
298
|
+
receipt: readReceiptSummaryJson(finalReceipt),
|
|
299
|
+
});
|
|
300
|
+
} else {
|
|
301
|
+
process.stdout.write(`${humanReceiptSummary(finalReceipt, storedReceipt?.receiptId)}\n`);
|
|
224
302
|
}
|
|
225
303
|
}
|
|
226
304
|
}
|
|
@@ -231,20 +309,54 @@ async function dryRun(
|
|
|
231
309
|
maxSpendAtomic: `${bigint}`,
|
|
232
310
|
goal: string | undefined,
|
|
233
311
|
maxWords: number | undefined,
|
|
312
|
+
sectionId: string | undefined,
|
|
313
|
+
stopAfterSection: boolean,
|
|
314
|
+
chunkWords: number | undefined,
|
|
315
|
+
streamMode: StreamMode,
|
|
234
316
|
): Promise<void> {
|
|
235
317
|
const article = await findArticle(runtime, articleId);
|
|
318
|
+
const navigation = goal && !sectionId ? await runtime.client.getNavigation(articleId, goal).catch(() => undefined) : undefined;
|
|
319
|
+
const effectiveSectionId = sectionId ?? navigation?.navigation.sellerAgent.recommendedSectionId;
|
|
320
|
+
const effectiveSection = effectiveSectionId ? findSection(article, effectiveSectionId) : undefined;
|
|
321
|
+
const estimatedWords = Math.min(maxWords ?? Number.MAX_SAFE_INTEGER, effectiveSection?.wordCount ?? article.totalWords);
|
|
322
|
+
const estimatedMaxCostAtomic = BigInt(article.pricePerWordAtomic) * BigInt(estimatedWords);
|
|
323
|
+
const budgetAtomic = BigInt(maxSpendAtomic);
|
|
324
|
+
const networkInfo = settlementNetworkInfo(article.paymentTerms?.network);
|
|
325
|
+
const fundingMethod = article.paymentTerms?.fundingMethod ?? networkInfo.fundingMethod;
|
|
326
|
+
const balanceCheck = {
|
|
327
|
+
checked: false,
|
|
328
|
+
sufficient: undefined,
|
|
329
|
+
reason: "Live Circle Gateway balance is not checked during dry-run.",
|
|
330
|
+
};
|
|
331
|
+
const budgetSufficiency = {
|
|
332
|
+
sufficientForEstimatedMax: budgetAtomic >= estimatedMaxCostAtomic,
|
|
333
|
+
estimatedMaxCostAtomic: `${estimatedMaxCostAtomic}`,
|
|
334
|
+
estimatedMaxCostUsdc: formatAtomic(`${estimatedMaxCostAtomic}`),
|
|
335
|
+
estimatedWords,
|
|
336
|
+
};
|
|
236
337
|
if (runtime.json) {
|
|
237
338
|
printJson({
|
|
238
339
|
success: true,
|
|
239
340
|
dryRun: true,
|
|
240
341
|
gatewayUrl: runtime.gatewayUrl,
|
|
241
342
|
paymentMode: runtime.paymentMode,
|
|
343
|
+
circleChain: article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain,
|
|
242
344
|
budget: {
|
|
243
345
|
maxSpendAtomic,
|
|
244
346
|
maxSpendUsdc: formatAtomic(maxSpendAtomic),
|
|
245
347
|
maxWords,
|
|
246
348
|
},
|
|
247
349
|
goal,
|
|
350
|
+
sectionId,
|
|
351
|
+
recommendedSectionId: navigation?.navigation.sellerAgent.recommendedSectionId,
|
|
352
|
+
effectiveSectionId,
|
|
353
|
+
readStartsAt: effectiveSectionId ? `section:${effectiveSectionId}` : "full-article",
|
|
354
|
+
stopAfterSection,
|
|
355
|
+
chunkWords,
|
|
356
|
+
streamMode,
|
|
357
|
+
fundingMethod,
|
|
358
|
+
estimatedMax: budgetSufficiency,
|
|
359
|
+
walletBalance: balanceCheck,
|
|
248
360
|
article: articleJson(article),
|
|
249
361
|
});
|
|
250
362
|
return;
|
|
@@ -255,9 +367,22 @@ async function dryRun(
|
|
|
255
367
|
"Dry run: no paid read started.",
|
|
256
368
|
`Gateway: ${runtime.gatewayUrl}`,
|
|
257
369
|
`Payment mode: ${runtime.paymentMode}`,
|
|
370
|
+
article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain
|
|
371
|
+
? `Circle chain: ${article.paymentTerms?.circleChain ?? networkInfo.circleChain ?? runtime.circleChain}`
|
|
372
|
+
: undefined,
|
|
258
373
|
`Budget: ${formatAtomic(maxSpendAtomic)} USDC (${maxSpendAtomic} atomic)`,
|
|
374
|
+
`Estimated max for ${effectiveSectionId ? effectiveSectionId : "full article"}: ${formatAtomic(`${estimatedMaxCostAtomic}`)} USDC (${estimatedWords.toLocaleString("en-US")} words)`,
|
|
375
|
+
`Budget covers estimate: ${budgetSufficiency.sufficientForEstimatedMax ? "yes" : "no"}`,
|
|
376
|
+
`Wallet balance check: not checked`,
|
|
377
|
+
fundingMethod ? `Funding: ${fundingMethod}` : undefined,
|
|
259
378
|
maxWords ? `Max words: ${maxWords}` : undefined,
|
|
260
379
|
goal ? `Goal: ${goal}` : undefined,
|
|
380
|
+
navigation?.navigation.sellerAgent.recommendedSectionId ? `Recommended section: ${navigation.navigation.sellerAgent.recommendedSectionId}` : undefined,
|
|
381
|
+
`Read starts at: ${effectiveSectionId ? `section ${effectiveSectionId}` : "full article"}`,
|
|
382
|
+
sectionId ? `Section: ${sectionId}` : undefined,
|
|
383
|
+
stopAfterSection ? "Stop after section: yes" : undefined,
|
|
384
|
+
`Stream mode: ${streamMode}`,
|
|
385
|
+
streamMode === "bundled" ? `Bundle words: ${chunkWords ?? 32}` : undefined,
|
|
261
386
|
"",
|
|
262
387
|
humanArticle(article),
|
|
263
388
|
"",
|
|
@@ -268,9 +393,11 @@ async function dryRun(
|
|
|
268
393
|
}
|
|
269
394
|
|
|
270
395
|
async function receiptsList(runtime: Runtime): Promise<void> {
|
|
271
|
-
const
|
|
396
|
+
const limit = limitFlag(runtime.parsed);
|
|
397
|
+
const receipts = (await listReceipts()).slice(0, limit);
|
|
398
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
272
399
|
if (runtime.json) {
|
|
273
|
-
printJson({ success: true, receipts });
|
|
400
|
+
printJson({ success: true, receipts: summary ? receipts.map(receiptSummaryJson) : receipts });
|
|
274
401
|
return;
|
|
275
402
|
}
|
|
276
403
|
if (receipts.length === 0) {
|
|
@@ -290,8 +417,13 @@ async function receiptsList(runtime: Runtime): Promise<void> {
|
|
|
290
417
|
async function receiptsShow(runtime: Runtime, receiptId: string | undefined): Promise<void> {
|
|
291
418
|
if (!receiptId) throw new CliError("MISSING_RECEIPT_ID", "rubicon receipts show requires a receipt id.");
|
|
292
419
|
const stored = await loadReceipt(receiptId);
|
|
420
|
+
const summary = booleanFlag(runtime.parsed.flags, "summary") || booleanFlag(runtime.parsed.flags, "receipt-summary");
|
|
293
421
|
if (runtime.json) {
|
|
294
|
-
printJson({ success: true, ...stored });
|
|
422
|
+
printJson({ success: true, ...(summary ? receiptSummaryJson(stored) : stored) });
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
if (summary) {
|
|
426
|
+
process.stdout.write(`${humanReceiptSummary(stored.receipt, stored.receiptId)}\n`);
|
|
295
427
|
return;
|
|
296
428
|
}
|
|
297
429
|
process.stdout.write(`Receipt ID: ${stored.receiptId}\nSaved: ${stored.savedAt}\n${humanReceipt(stored.receipt)}\n`);
|
|
@@ -309,6 +441,7 @@ async function configShow(runtime: Runtime): Promise<void> {
|
|
|
309
441
|
gatewayUrl: runtime.gatewayUrl,
|
|
310
442
|
apiKey: runtime.apiKey ? "set" : undefined,
|
|
311
443
|
paymentMode: runtime.paymentMode,
|
|
444
|
+
circleChain: runtime.circleChain,
|
|
312
445
|
},
|
|
313
446
|
};
|
|
314
447
|
if (runtime.json) {
|
|
@@ -381,6 +514,67 @@ function parseBudget(parsed: ParsedArgs): `${bigint}` {
|
|
|
381
514
|
}
|
|
382
515
|
}
|
|
383
516
|
|
|
517
|
+
function sectionFlag(parsed: ParsedArgs): string | undefined {
|
|
518
|
+
const section = stringFlag(parsed.flags, "section");
|
|
519
|
+
const sectionId = stringFlag(parsed.flags, "section-id");
|
|
520
|
+
if (section && sectionId && section !== sectionId) {
|
|
521
|
+
throw new CliError("MULTIPLE_SECTIONS", "Use either --section or --section-id, not both.");
|
|
522
|
+
}
|
|
523
|
+
return section ?? sectionId;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
function limitFlag(parsed: ParsedArgs): number | undefined {
|
|
527
|
+
const rawLimit = stringFlag(parsed.flags, "limit");
|
|
528
|
+
if (rawLimit === undefined) return undefined;
|
|
529
|
+
const limit = Number(rawLimit);
|
|
530
|
+
if (!Number.isInteger(limit) || limit < 1) {
|
|
531
|
+
throw new CliError("INVALID_LIMIT", "--limit must be a positive integer.");
|
|
532
|
+
}
|
|
533
|
+
return limit;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
function chunkWordsFlag(parsed: ParsedArgs): number | undefined {
|
|
537
|
+
const fast = booleanFlag(parsed.flags, "fast");
|
|
538
|
+
const mode = stringFlag(parsed.flags, "mode");
|
|
539
|
+
if (mode !== undefined && mode !== "batch" && mode !== "word") {
|
|
540
|
+
throw new CliError("INVALID_READ_MODE", "--mode must be batch or word.");
|
|
541
|
+
}
|
|
542
|
+
const rawChunkWords = stringFlag(parsed.flags, "chunk-words");
|
|
543
|
+
if (rawChunkWords === undefined) return fast || mode === "batch" ? 32 : undefined;
|
|
544
|
+
const chunkWords = Number(rawChunkWords);
|
|
545
|
+
if (!Number.isInteger(chunkWords) || chunkWords < 1) {
|
|
546
|
+
throw new CliError("INVALID_CHUNK_WORDS", "--chunk-words must be a positive integer.");
|
|
547
|
+
}
|
|
548
|
+
return Math.min(chunkWords, 256);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
function streamModeFlag(parsed: ParsedArgs): StreamMode {
|
|
552
|
+
const streamMode = stringFlag(parsed.flags, "stream-mode");
|
|
553
|
+
const legacyMode = stringFlag(parsed.flags, "mode");
|
|
554
|
+
const perWord = booleanFlag(parsed.flags, "per-word");
|
|
555
|
+
if (streamMode !== undefined && streamMode !== "bundled" && streamMode !== "word") {
|
|
556
|
+
throw new CliError("INVALID_STREAM_MODE", "--stream-mode must be bundled or word.");
|
|
557
|
+
}
|
|
558
|
+
if (perWord && streamMode === "bundled") {
|
|
559
|
+
throw new CliError("INVALID_STREAM_MODE", "--per-word cannot be combined with --stream-mode bundled.");
|
|
560
|
+
}
|
|
561
|
+
if ((perWord || legacyMode === "word" || streamMode === "word") && stringFlag(parsed.flags, "chunk-words") !== undefined) {
|
|
562
|
+
throw new CliError("INVALID_STREAM_MODE", "Per-word mode cannot be combined with --chunk-words.");
|
|
563
|
+
}
|
|
564
|
+
return perWord || legacyMode === "word" ? "word" : streamMode ?? "bundled";
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
function findSection(article: ArticleSummary, sectionId: string): ArticleSectionSummary | undefined {
|
|
568
|
+
return article.sections.find((section) => section.sectionId === sectionId);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
async function validateSection(runtime: Runtime, articleId: string, sectionId: string): Promise<void> {
|
|
572
|
+
const article = await findArticle(runtime, articleId);
|
|
573
|
+
if (!article.sections.some((section) => section.sectionId === sectionId)) {
|
|
574
|
+
throw new CliError("SECTION_NOT_FOUND", `Section not found for ${articleId}: ${sectionId}`);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
384
578
|
function matchesQuery(article: ArticleSummary, query: string): boolean {
|
|
385
579
|
const haystack = [
|
|
386
580
|
article.articleId,
|
|
@@ -405,9 +599,9 @@ function showHelp(json: boolean): void {
|
|
|
405
599
|
"rubicon search \"<query>\"",
|
|
406
600
|
"rubicon article show <article-id>",
|
|
407
601
|
"rubicon article navigation <article-id> --goal \"<goal>\"",
|
|
408
|
-
"rubicon read <article-id> --max-usdc 0.10 [--goal \"...\"] [--max-words 50] [--dry-run]",
|
|
409
|
-
"rubicon receipts list",
|
|
410
|
-
"rubicon receipts show <receipt-id>",
|
|
602
|
+
"rubicon read <article-id> --max-usdc 0.10 [--goal \"...\"] [--section <section-id>] [--stop-after-section] [--stream-mode bundled|word] [--chunk-words 32] [--per-word] [--max-words 50] [--summary] [--dry-run]",
|
|
603
|
+
"rubicon receipts list [--limit 10] [--summary]",
|
|
604
|
+
"rubicon receipts show <receipt-id> [--summary]",
|
|
411
605
|
"rubicon config show",
|
|
412
606
|
"rubicon config set gateway-url <url>",
|
|
413
607
|
"rubicon config set api-key <key>",
|
package/src/payments.ts
CHANGED
|
@@ -11,6 +11,7 @@ export type PaymentMode = "static" | "circle-cli";
|
|
|
11
11
|
export interface PaymentSelection {
|
|
12
12
|
mode: PaymentMode;
|
|
13
13
|
engine: AgentPaymentEngine;
|
|
14
|
+
circleChain?: string;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export function selectPaymentEngine(input: {
|
|
@@ -25,12 +26,14 @@ export function selectPaymentEngine(input: {
|
|
|
25
26
|
return { mode: selectedMode, engine: new StaticPaymentEngine() };
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
const circleChain = process.env.CIRCLE_CLI_CHAIN ?? input.config.circleChain ?? "ARC-TESTNET";
|
|
28
30
|
return {
|
|
29
31
|
mode: selectedMode,
|
|
30
32
|
engine: new CircleCliGatewayPaymentEngine({
|
|
31
33
|
agentWalletAddress: envAddress("CIRCLE_AGENT_WALLET_ADDRESS") ?? input.config.agentWalletAddress,
|
|
32
|
-
chain:
|
|
34
|
+
chain: circleChain,
|
|
33
35
|
}),
|
|
36
|
+
circleChain,
|
|
34
37
|
};
|
|
35
38
|
}
|
|
36
39
|
|