@kybernesis/payments 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/approve-ask.d.ts +50 -0
- package/dist/approve-ask.js +42 -0
- package/dist/approve-steps.d.ts +8 -0
- package/dist/approve-steps.js +39 -0
- package/dist/approve.d.ts +55 -0
- package/dist/approve.js +79 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +2 -2
- package/package.json +12 -2
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The approval moment of a purchase: the pure half (no Node imports), safe
|
|
3
|
+
* inside a workflow driver bundle. The Link calls live in ./approve-steps.js.
|
|
4
|
+
*
|
|
5
|
+
* Link approves a spend request in the person's Link app. Before this the
|
|
6
|
+
* agent pasted the approval link as text and asked them to say when they were
|
|
7
|
+
* done. Now the tool asks through eve's question channel with a marker a
|
|
8
|
+
* Kybernesis client renders as a card — merchant, total, an "Approve in Link"
|
|
9
|
+
* button — and parks until they tap "I approved" or "Cancel". Then it checks
|
|
10
|
+
* with Link and returns the real status. The model sees one result.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SPEND_REQUEST_MARKER = "[kyb:spend-request]";
|
|
13
|
+
export interface SpendRequestAsk {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly amount: number;
|
|
16
|
+
readonly currency: string;
|
|
17
|
+
readonly merchant?: string;
|
|
18
|
+
readonly merchant_url?: string;
|
|
19
|
+
readonly approval_url?: string;
|
|
20
|
+
readonly status: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function spendRequestPrompt(ask: SpendRequestAsk): string;
|
|
23
|
+
export declare function parseSpendRequestPrompt(prompt: string): {
|
|
24
|
+
ask: SpendRequestAsk;
|
|
25
|
+
text: string;
|
|
26
|
+
} | null;
|
|
27
|
+
export interface SpendRequestSnapshot {
|
|
28
|
+
id: string;
|
|
29
|
+
status: string;
|
|
30
|
+
amount: number;
|
|
31
|
+
currency: string;
|
|
32
|
+
merchant?: string;
|
|
33
|
+
merchant_url?: string;
|
|
34
|
+
approval_url?: string;
|
|
35
|
+
}
|
|
36
|
+
/** What the agent's tool file passes to `ctx.ask` once it has a snapshot. The tool itself is authored in `agent/tools/` — eve compiles `"use workflow"` from source. */
|
|
37
|
+
export declare function spendRequestAsk(current: SpendRequestSnapshot): {
|
|
38
|
+
prompt: string;
|
|
39
|
+
display: "confirmation";
|
|
40
|
+
options: ({
|
|
41
|
+
id: string;
|
|
42
|
+
label: string;
|
|
43
|
+
style: "primary";
|
|
44
|
+
} | {
|
|
45
|
+
id: string;
|
|
46
|
+
label: string;
|
|
47
|
+
style: "danger";
|
|
48
|
+
})[];
|
|
49
|
+
};
|
|
50
|
+
export declare const APPROVE_SPEND_REQUEST_DESCRIPTION = "Put a spend request in front of the person for approval and wait for their answer. Call this right after create_spend_request. It shows them the merchant, the total and the Link approval button, pauses until they confirm or cancel, then returns the request's real status from Link. Only proceed to pay_on_computer when it returns approved.";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The approval moment of a purchase: the pure half (no Node imports), safe
|
|
3
|
+
* inside a workflow driver bundle. The Link calls live in ./approve-steps.js.
|
|
4
|
+
*
|
|
5
|
+
* Link approves a spend request in the person's Link app. Before this the
|
|
6
|
+
* agent pasted the approval link as text and asked them to say when they were
|
|
7
|
+
* done. Now the tool asks through eve's question channel with a marker a
|
|
8
|
+
* Kybernesis client renders as a card — merchant, total, an "Approve in Link"
|
|
9
|
+
* button — and parks until they tap "I approved" or "Cancel". Then it checks
|
|
10
|
+
* with Link and returns the real status. The model sees one result.
|
|
11
|
+
*/
|
|
12
|
+
export const SPEND_REQUEST_MARKER = "[kyb:spend-request]";
|
|
13
|
+
export function spendRequestPrompt(ask) {
|
|
14
|
+
const total = `${(ask.amount / 100).toFixed(2)} ${ask.currency.toUpperCase()}`;
|
|
15
|
+
const at = ask.merchant ? ` at ${ask.merchant}` : "";
|
|
16
|
+
const link = ask.approval_url ? ` Approve it in Link: ${ask.approval_url}` : "";
|
|
17
|
+
return `${SPEND_REQUEST_MARKER} ${JSON.stringify(ask)}\nA purchase of ${total}${at} is waiting for your approval.${link}`;
|
|
18
|
+
}
|
|
19
|
+
export function parseSpendRequestPrompt(prompt) {
|
|
20
|
+
if (!prompt.startsWith(SPEND_REQUEST_MARKER))
|
|
21
|
+
return null;
|
|
22
|
+
const nl = prompt.indexOf("\n");
|
|
23
|
+
const head = nl === -1 ? prompt : prompt.slice(0, nl);
|
|
24
|
+
try {
|
|
25
|
+
return { ask: JSON.parse(head.slice(SPEND_REQUEST_MARKER.length).trim()), text: nl === -1 ? "" : prompt.slice(nl + 1) };
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** What the agent's tool file passes to `ctx.ask` once it has a snapshot. The tool itself is authored in `agent/tools/` — eve compiles `"use workflow"` from source. */
|
|
32
|
+
export function spendRequestAsk(current) {
|
|
33
|
+
return {
|
|
34
|
+
prompt: spendRequestPrompt(current),
|
|
35
|
+
display: "confirmation",
|
|
36
|
+
options: [
|
|
37
|
+
{ id: "approved", label: "I approved it in Link", style: "primary" },
|
|
38
|
+
{ id: "cancel", label: "Cancel this purchase", style: "danger" },
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export const APPROVE_SPEND_REQUEST_DESCRIPTION = "Put a spend request in front of the person for approval and wait for their answer. Call this right after create_spend_request. It shows them the merchant, the total and the Link approval button, pauses until they confirm or cancel, then returns the request's real status from Link. Only proceed to pay_on_computer when it returns approved.";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LinkCliAuthOptions } from "./link-cli-auth.js";
|
|
2
|
+
import type { SpendRequestSnapshot } from "./approve-ask.js";
|
|
3
|
+
/** The Link calls behind approve_spend_request. Import only from "use step" functions: this touches the filesystem and the network. */
|
|
4
|
+
export declare function spendRequestSnapshot(id: string, options?: LinkCliAuthOptions): Promise<SpendRequestSnapshot | null>;
|
|
5
|
+
export declare function spendRequestApprovalLink(id: string, options?: LinkCliAuthOptions): Promise<string | undefined>;
|
|
6
|
+
/** Link settles a moment after the tap; look a few times before giving up. */
|
|
7
|
+
export declare function spendRequestSettledStatus(id: string, options?: LinkCliAuthOptions): Promise<string>;
|
|
8
|
+
export declare function cancelSpendRequest(id: string, options?: LinkCliAuthOptions): Promise<void>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { linkClient } from "./link-tools.js";
|
|
2
|
+
/** The Link calls behind approve_spend_request. Import only from "use step" functions: this touches the filesystem and the network. */
|
|
3
|
+
export async function spendRequestSnapshot(id, options = {}) {
|
|
4
|
+
const link = linkClient(options);
|
|
5
|
+
const r = (await link.spendRequests.retrieve(id));
|
|
6
|
+
if (!r)
|
|
7
|
+
return null;
|
|
8
|
+
return { id: r.id, status: r.status, amount: r.amount, currency: r.currency, merchant: r.merchant_name ?? r.merchant, merchant_url: r.merchant_url, approval_url: r.approval_url };
|
|
9
|
+
}
|
|
10
|
+
export async function spendRequestApprovalLink(id, options = {}) {
|
|
11
|
+
const link = linkClient(options);
|
|
12
|
+
try {
|
|
13
|
+
const r = await link.spendRequests.requestApproval(id);
|
|
14
|
+
return r.approval_url;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Link settles a moment after the tap; look a few times before giving up. */
|
|
21
|
+
export async function spendRequestSettledStatus(id, options = {}) {
|
|
22
|
+
const link = linkClient(options);
|
|
23
|
+
for (let i = 0; i < 6; i++) {
|
|
24
|
+
const r = await link.spendRequests.retrieve(id);
|
|
25
|
+
if (r && r.status !== "pending_approval" && r.status !== "created")
|
|
26
|
+
return r.status;
|
|
27
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
28
|
+
}
|
|
29
|
+
const r = await link.spendRequests.retrieve(id);
|
|
30
|
+
return r?.status ?? "unknown";
|
|
31
|
+
}
|
|
32
|
+
export async function cancelSpendRequest(id, options = {}) {
|
|
33
|
+
try {
|
|
34
|
+
await linkClient(options).spendRequests.cancel(id);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
/* already terminal */
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { LinkCliAuthOptions } from "./link-cli-auth.js";
|
|
2
|
+
/**
|
|
3
|
+
* The approval moment of a purchase, as one durable tool call.
|
|
4
|
+
*
|
|
5
|
+
* Link approves a spend request in the person's Link app. Before this the
|
|
6
|
+
* agent pasted the approval link as text and asked them to say when they were
|
|
7
|
+
* done. Now the tool asks through eve's question channel with a marker a
|
|
8
|
+
* Kybernesis client renders as a card — merchant, total, an "Approve in Link"
|
|
9
|
+
* button — and parks until they tap "I approved" or "Cancel". Then it checks
|
|
10
|
+
* with Link and returns the real status. The model sees one result.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SPEND_REQUEST_MARKER = "[kyb:spend-request]";
|
|
13
|
+
export interface SpendRequestAsk {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly amount: number;
|
|
16
|
+
readonly currency: string;
|
|
17
|
+
readonly merchant?: string;
|
|
18
|
+
readonly merchant_url?: string;
|
|
19
|
+
readonly approval_url?: string;
|
|
20
|
+
readonly status: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function spendRequestPrompt(ask: SpendRequestAsk): string;
|
|
23
|
+
export declare function parseSpendRequestPrompt(prompt: string): {
|
|
24
|
+
ask: SpendRequestAsk;
|
|
25
|
+
text: string;
|
|
26
|
+
} | null;
|
|
27
|
+
export interface SpendRequestSnapshot {
|
|
28
|
+
id: string;
|
|
29
|
+
status: string;
|
|
30
|
+
amount: number;
|
|
31
|
+
currency: string;
|
|
32
|
+
merchant?: string;
|
|
33
|
+
merchant_url?: string;
|
|
34
|
+
approval_url?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function spendRequestSnapshot(id: string, options?: LinkCliAuthOptions): Promise<SpendRequestSnapshot | null>;
|
|
37
|
+
export declare function spendRequestApprovalLink(id: string, options?: LinkCliAuthOptions): Promise<string | undefined>;
|
|
38
|
+
/** Link settles a moment after the tap; look a few times before giving up. */
|
|
39
|
+
export declare function spendRequestSettledStatus(id: string, options?: LinkCliAuthOptions): Promise<string>;
|
|
40
|
+
export declare function cancelSpendRequest(id: string, options?: LinkCliAuthOptions): Promise<void>;
|
|
41
|
+
/** What the agent's tool file passes to `ctx.ask` once it has a snapshot. The tool itself is authored in `agent/tools/` — eve compiles `"use workflow"` from source. */
|
|
42
|
+
export declare function spendRequestAsk(current: SpendRequestSnapshot): {
|
|
43
|
+
prompt: string;
|
|
44
|
+
display: "confirmation";
|
|
45
|
+
options: ({
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
style: "primary";
|
|
49
|
+
} | {
|
|
50
|
+
id: string;
|
|
51
|
+
label: string;
|
|
52
|
+
style: "danger";
|
|
53
|
+
})[];
|
|
54
|
+
};
|
|
55
|
+
export declare const APPROVE_SPEND_REQUEST_DESCRIPTION = "Put a spend request in front of the person for approval and wait for their answer. Call this right after create_spend_request. It shows them the merchant, the total and the Link approval button, pauses until they confirm or cancel, then returns the request's real status from Link. Only proceed to pay_on_computer when it returns approved.";
|
package/dist/approve.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { linkClient } from "./link-tools.js";
|
|
2
|
+
/**
|
|
3
|
+
* The approval moment of a purchase, as one durable tool call.
|
|
4
|
+
*
|
|
5
|
+
* Link approves a spend request in the person's Link app. Before this the
|
|
6
|
+
* agent pasted the approval link as text and asked them to say when they were
|
|
7
|
+
* done. Now the tool asks through eve's question channel with a marker a
|
|
8
|
+
* Kybernesis client renders as a card — merchant, total, an "Approve in Link"
|
|
9
|
+
* button — and parks until they tap "I approved" or "Cancel". Then it checks
|
|
10
|
+
* with Link and returns the real status. The model sees one result.
|
|
11
|
+
*/
|
|
12
|
+
export const SPEND_REQUEST_MARKER = "[kyb:spend-request]";
|
|
13
|
+
export function spendRequestPrompt(ask) {
|
|
14
|
+
const total = `${(ask.amount / 100).toFixed(2)} ${ask.currency.toUpperCase()}`;
|
|
15
|
+
const at = ask.merchant ? ` at ${ask.merchant}` : "";
|
|
16
|
+
const link = ask.approval_url ? ` Approve it in Link: ${ask.approval_url}` : "";
|
|
17
|
+
return `${SPEND_REQUEST_MARKER} ${JSON.stringify(ask)}\nA purchase of ${total}${at} is waiting for your approval.${link}`;
|
|
18
|
+
}
|
|
19
|
+
export function parseSpendRequestPrompt(prompt) {
|
|
20
|
+
if (!prompt.startsWith(SPEND_REQUEST_MARKER))
|
|
21
|
+
return null;
|
|
22
|
+
const nl = prompt.indexOf("\n");
|
|
23
|
+
const head = nl === -1 ? prompt : prompt.slice(0, nl);
|
|
24
|
+
try {
|
|
25
|
+
return { ask: JSON.parse(head.slice(SPEND_REQUEST_MARKER.length).trim()), text: nl === -1 ? "" : prompt.slice(nl + 1) };
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function spendRequestSnapshot(id, options = {}) {
|
|
32
|
+
const link = linkClient(options);
|
|
33
|
+
const r = (await link.spendRequests.retrieve(id));
|
|
34
|
+
if (!r)
|
|
35
|
+
return null;
|
|
36
|
+
return { id: r.id, status: r.status, amount: r.amount, currency: r.currency, merchant: r.merchant_name ?? r.merchant, merchant_url: r.merchant_url, approval_url: r.approval_url };
|
|
37
|
+
}
|
|
38
|
+
export async function spendRequestApprovalLink(id, options = {}) {
|
|
39
|
+
const link = linkClient(options);
|
|
40
|
+
try {
|
|
41
|
+
const r = await link.spendRequests.requestApproval(id);
|
|
42
|
+
return r.approval_url;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Link settles a moment after the tap; look a few times before giving up. */
|
|
49
|
+
export async function spendRequestSettledStatus(id, options = {}) {
|
|
50
|
+
const link = linkClient(options);
|
|
51
|
+
for (let i = 0; i < 6; i++) {
|
|
52
|
+
const r = await link.spendRequests.retrieve(id);
|
|
53
|
+
if (r && r.status !== "pending_approval" && r.status !== "created")
|
|
54
|
+
return r.status;
|
|
55
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
56
|
+
}
|
|
57
|
+
const r = await link.spendRequests.retrieve(id);
|
|
58
|
+
return r?.status ?? "unknown";
|
|
59
|
+
}
|
|
60
|
+
export async function cancelSpendRequest(id, options = {}) {
|
|
61
|
+
try {
|
|
62
|
+
await linkClient(options).spendRequests.cancel(id);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
/* already terminal */
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** What the agent's tool file passes to `ctx.ask` once it has a snapshot. The tool itself is authored in `agent/tools/` — eve compiles `"use workflow"` from source. */
|
|
69
|
+
export function spendRequestAsk(current) {
|
|
70
|
+
return {
|
|
71
|
+
prompt: spendRequestPrompt(current),
|
|
72
|
+
display: "confirmation",
|
|
73
|
+
options: [
|
|
74
|
+
{ id: "approved", label: "I approved it in Link", style: "primary" },
|
|
75
|
+
{ id: "cancel", label: "Cancel this purchase", style: "danger" },
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export const APPROVE_SPEND_REQUEST_DESCRIPTION = "Put a spend request in front of the person for approval and wait for their answer. Call this right after create_spend_request. It shows them the merchant, the total and the Link approval button, pauses until they confirm or cancel, then returns the request's real status from Link. Only proceed to pay_on_computer when it returns approved.";
|
package/dist/index.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ export { linkCliAuth, linkCliAuthFile, readStoredAuth, NOT_SIGNED_IN, type LinkC
|
|
|
2
2
|
export { payOnComputerTool } from "./pay-on-computer.js";
|
|
3
3
|
export { PAYMENTS_INSTRUCTIONS } from "./instructions.js";
|
|
4
4
|
export { linkTool, linkClient, sanitizeLinkOutput, LINK_TOOL_NAMES, type LinkToolName } from "./link-tools.js";
|
|
5
|
+
export { spendRequestAsk, spendRequestPrompt, parseSpendRequestPrompt, APPROVE_SPEND_REQUEST_DESCRIPTION, SPEND_REQUEST_MARKER, type SpendRequestAsk, type SpendRequestSnapshot } from "./approve-ask.js";
|
|
6
|
+
export { spendRequestSnapshot, spendRequestApprovalLink, spendRequestSettledStatus, cancelSpendRequest } from "./approve-steps.js";
|
package/dist/index.js
CHANGED
|
@@ -2,3 +2,5 @@ export { linkCliAuth, linkCliAuthFile, readStoredAuth, NOT_SIGNED_IN } from "./l
|
|
|
2
2
|
export { payOnComputerTool } from "./pay-on-computer.js";
|
|
3
3
|
export { PAYMENTS_INSTRUCTIONS } from "./instructions.js";
|
|
4
4
|
export { linkTool, linkClient, sanitizeLinkOutput, LINK_TOOL_NAMES } from "./link-tools.js";
|
|
5
|
+
export { spendRequestAsk, spendRequestPrompt, parseSpendRequestPrompt, APPROVE_SPEND_REQUEST_DESCRIPTION, SPEND_REQUEST_MARKER } from "./approve-ask.js";
|
|
6
|
+
export { spendRequestSnapshot, spendRequestApprovalLink, spendRequestSettledStatus, cancelSpendRequest } from "./approve-steps.js";
|
package/dist/instructions.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PAYMENTS_INSTRUCTIONS = "## Paying for things\n\nYou can buy things with the person's Link wallet. Every purchase is their decision twice over: creating a spend request asks them here, and Link asks them again in their Link app before any card exists. Never work around either step.\n\nThe order, every time:\n1. Agree the exact purchase first: merchant, items, final total including tax and shipping, in the right currency. Get these from the actual checkout page in your own browser (open_browser, then look), not from memory.\n2. `create_spend_request` with that merchant, those line items and that total.
|
|
1
|
+
export declare const PAYMENTS_INSTRUCTIONS = "## Paying for things\n\nYou can buy things with the person's Link wallet. Every purchase is their decision twice over: creating a spend request asks them here, and Link asks them again in their Link app before any card exists. Never work around either step.\n\nThe order, every time:\n1. Agree the exact purchase first: merchant, items, final total including tax and shipping, in the right currency. Get these from the actual checkout page in your own browser (open_browser, then look), not from memory.\n2. `create_spend_request` with that merchant, those line items and that total, then immediately `approve_spend_request` with its id. That shows the person the purchase with an approval button and waits for them; do not paste the approval link yourself and do not create a second request for the same purchase.\n3. When `approve_spend_request` returns approved, use `pay_on_computer` to type the one-time card into the checkout. You give it the selectors of the card fields you can see; the card itself never comes to you. Check the filled form in a screenshot, confirm the total still matches, then submit.\n4. Report the outcome with `create_report`: succeeded, failed, or what the merchant said. If the merchant needs more (3-D Secure, a code), stop and tell the person exactly what is on the screen; they can take over your screen.\n\nNever read card numbers or CVCs aloud, never paste them into chat or a file, never guess a total. If Link asks for verification you cannot complete, say so.\n";
|
package/dist/instructions.js
CHANGED
|
@@ -4,8 +4,8 @@ You can buy things with the person's Link wallet. Every purchase is their decisi
|
|
|
4
4
|
|
|
5
5
|
The order, every time:
|
|
6
6
|
1. Agree the exact purchase first: merchant, items, final total including tax and shipping, in the right currency. Get these from the actual checkout page in your own browser (open_browser, then look), not from memory.
|
|
7
|
-
2. \`create_spend_request\` with that merchant, those line items and that total.
|
|
8
|
-
3. When \`
|
|
7
|
+
2. \`create_spend_request\` with that merchant, those line items and that total, then immediately \`approve_spend_request\` with its id. That shows the person the purchase with an approval button and waits for them; do not paste the approval link yourself and do not create a second request for the same purchase.
|
|
8
|
+
3. When \`approve_spend_request\` returns approved, use \`pay_on_computer\` to type the one-time card into the checkout. You give it the selectors of the card fields you can see; the card itself never comes to you. Check the filled form in a screenshot, confirm the total still matches, then submit.
|
|
9
9
|
4. Report the outcome with \`create_report\`: succeeded, failed, or what the merchant said. If the merchant needs more (3-D Secure, a code), stop and tell the person exactly what is on the screen; they can take over your screen.
|
|
10
10
|
|
|
11
11
|
Never read card numbers or CVCs aloud, never paste them into chat or a file, never guess a total. If Link asks for verification you cannot complete, say so.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kybernesis/payments",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Stripe Link as an eve agent's wallet, on its owner's behalf: Link's tool catalog mounted as eve tools behind the owner's link-cli sign-in, the person's approval on every purchase, and a one-time card typed into a checkout on the agent's own computer without the model ever seeing it.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,17 @@
|
|
|
15
15
|
"import": "./dist/index.js",
|
|
16
16
|
"default": "./dist/index.js"
|
|
17
17
|
},
|
|
18
|
-
"./package.json": "./package.json"
|
|
18
|
+
"./package.json": "./package.json",
|
|
19
|
+
"./ask": {
|
|
20
|
+
"types": "./dist/approve-ask.d.ts",
|
|
21
|
+
"import": "./dist/approve-ask.js",
|
|
22
|
+
"default": "./dist/approve-ask.js"
|
|
23
|
+
},
|
|
24
|
+
"./steps": {
|
|
25
|
+
"types": "./dist/approve-steps.d.ts",
|
|
26
|
+
"import": "./dist/approve-steps.js",
|
|
27
|
+
"default": "./dist/approve-steps.js"
|
|
28
|
+
}
|
|
19
29
|
},
|
|
20
30
|
"files": [
|
|
21
31
|
"dist",
|