shopstack 0.2.5 → 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/README.md +117 -39
- package/SKILL.md +45 -32
- package/bin/shopstack +1 -3
- package/package.json +13 -23
- package/specs/openapi.json +3293 -0
- package/src/checkout-monitor.js +126 -0
- package/src/cli.js +232 -142
- package/src/client.d.ts +258 -26
- package/src/client.js +188 -173
- package/src/config.d.ts +7 -0
- package/src/config.js +12 -0
- package/src/reservation-progress.js +132 -0
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
# shopstack
|
|
2
2
|
|
|
3
|
-
JavaScript client and CLI for Shopstack
|
|
3
|
+
Dependency-free JavaScript client and CLI for Shopstack checkouts and guided
|
|
4
|
+
guest restaurant reservations.
|
|
4
5
|
|
|
5
6
|
## Install
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
|
-
npm install shopstack
|
|
9
|
+
npm install shopstack@0.3.0
|
|
9
10
|
# or
|
|
10
|
-
npm install -g shopstack
|
|
11
|
+
npm install -g shopstack@0.3.0
|
|
11
12
|
```
|
|
12
13
|
|
|
13
14
|
Node.js 18 or newer is required.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
`checkout run` uses WebSocket update notifications on runtimes that provide
|
|
17
|
+
WebSocket (Node.js 22 or newer). It reads the authenticated checkout resource
|
|
18
|
+
after each notification. Older runtimes, or a failed socket connection, use the
|
|
19
|
+
bounded HTTP update wait. The one-time socket token is never placed in a URL.
|
|
20
|
+
|
|
21
|
+
This preview release pairs `shopstack@0.3.0` with `shopstack-mcp@0.2.0`.
|
|
22
|
+
Both packages use the `preview` distribution tag. The `latest` versions are
|
|
23
|
+
unchanged. Use the exact versions above to install this release.
|
|
24
|
+
|
|
25
|
+
Set `SHOPSTACK_API_URL` to the Shopstack API address supplied for your environment,
|
|
26
|
+
including `/v1`. There is no staging or production default. Use a separate
|
|
27
|
+
`SHOPSTACK_CONFIG_FILE` for each environment. Both features use that one API and
|
|
28
|
+
verified profile; customers do not run a Worker, model, database, or proxy.
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
# Isolated hosted release preview; not staging or production.
|
|
32
|
+
export SHOPSTACK_API_URL="https://shopstack-release-preview.shopstack.workers.dev/v1"
|
|
33
|
+
export SHOPSTACK_CONFIG_FILE="/absolute/private/path/shopstack-config.json"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
New profiles remember their API address. A conflicting environment override
|
|
37
|
+
fails before the credential is sent. Existing profiles without an address need
|
|
38
|
+
an explicit `SHOPSTACK_API_URL`; their keys and scopes are not changed.
|
|
18
39
|
|
|
19
40
|
## Verified signup
|
|
20
41
|
|
|
@@ -55,22 +76,41 @@ Configure any stdio MCP client to run:
|
|
|
55
76
|
"mcpServers": {
|
|
56
77
|
"shopstack": {
|
|
57
78
|
"command": "npx",
|
|
58
|
-
"args": ["-y", "shopstack-mcp"]
|
|
79
|
+
"args": ["-y", "shopstack-mcp@0.2.0"],
|
|
80
|
+
"env": {
|
|
81
|
+
"SHOPSTACK_API_URL": "https://shopstack-release-preview.shopstack.workers.dev/v1",
|
|
82
|
+
"SHOPSTACK_CONFIG_FILE": "/absolute/private/path/shopstack-config.json"
|
|
83
|
+
}
|
|
59
84
|
}
|
|
60
85
|
}
|
|
61
86
|
}
|
|
62
87
|
```
|
|
63
88
|
|
|
89
|
+
Use a different API address only when Shopstack supplies one for your environment.
|
|
90
|
+
That command uses the coordinated packages. See `packages/mcp/README.md` for the release
|
|
91
|
+
gate and local development setup. The old source-only launcher is not evidence
|
|
92
|
+
that a registry installation contains the current SDK.
|
|
93
|
+
|
|
64
94
|
The MCP server can start and poll verified signup, manage local profiles,
|
|
65
95
|
create developer-owned users, list/connect Link, and create/poll/message/cancel
|
|
66
|
-
checkouts.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
96
|
+
checkouts. It also creates, reads, continues, and cancels reservation
|
|
97
|
+
conversations. It exposes status, activity, and the latest bounded mechanical
|
|
98
|
+
intent phase. It deliberately has no card-input or payment-approval tool.
|
|
99
|
+
|
|
100
|
+
## Codex plugin
|
|
101
|
+
|
|
102
|
+
The repository contains one Shopstack plugin in `plugins/shopstack`. It uses
|
|
103
|
+
one MCP server and three focused skills:
|
|
70
104
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
`
|
|
105
|
+
- `shopstack-reservations` for natural restaurant search, selection, booking,
|
|
106
|
+
and cancellation;
|
|
107
|
+
- `shopstack-checkout` for checkout creation and monitoring;
|
|
108
|
+
- `shopstack-onboarding` for verified signup and private local profiles.
|
|
109
|
+
|
|
110
|
+
The plugin pins `shopstack-mcp@0.2.0`, which installs the matching
|
|
111
|
+
reservation-capable `shopstack` client. Configure the API address
|
|
112
|
+
before starting the plugin or use a profile already bound to that API. The existing top-level
|
|
113
|
+
`SKILL.md` remains in the npm client package for compatibility.
|
|
74
114
|
|
|
75
115
|
## Connections
|
|
76
116
|
|
|
@@ -80,10 +120,43 @@ shopstack connect link
|
|
|
80
120
|
```
|
|
81
121
|
|
|
82
122
|
Link is currently the only persistent payment provider. Connecting it is
|
|
83
|
-
optional.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
123
|
+
optional.
|
|
124
|
+
|
|
125
|
+
## Run a guest reservation
|
|
126
|
+
|
|
127
|
+
Create `reservation.json` with the diner details, location name, and a detailed
|
|
128
|
+
natural-language request. Do not add coordinates or a time zone:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"diner": {
|
|
133
|
+
"country": "US",
|
|
134
|
+
"first_name": "Ada",
|
|
135
|
+
"last_name": "Lovelace",
|
|
136
|
+
"phone_number": "+12125550123"
|
|
137
|
+
},
|
|
138
|
+
"location": {
|
|
139
|
+
"query": "Times Square, New York"
|
|
140
|
+
},
|
|
141
|
+
"request": "Dinner tomorrow for two around 7:30 PM. Quiet Italian, vegetarian choices required, about $80 per person."
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Then run:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
shopstack reservation run --file reservation.json
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The CLI asks natural follow-up questions and displays current location,
|
|
152
|
+
restaurant, and time IDs. It shows the exact locked booking summary before it
|
|
153
|
+
asks for confirmation. A clear confirmation is sent through the same
|
|
154
|
+
reservation message route; there is no separate reservation approval command.
|
|
155
|
+
Use `shopstack reservation get`, `message`, or `cancel` for individual API
|
|
156
|
+
operations. Use `shopstack reservation options RESERVATION_ID` for another
|
|
157
|
+
stored page and `shopstack reservation option RESERVATION_ID OPTION_ID` for
|
|
158
|
+
full provider details. These reads do not repeat model inference or restaurant
|
|
159
|
+
search.
|
|
87
160
|
|
|
88
161
|
## Run a checkout
|
|
89
162
|
|
|
@@ -118,19 +191,6 @@ Then run:
|
|
|
118
191
|
shopstack checkout run --file checkout.json
|
|
119
192
|
```
|
|
120
193
|
|
|
121
|
-
The CLI prints the private owner live-view URL as soon as checkout creation
|
|
122
|
-
succeeds. Do not redirect it into shared logs or expose it to a model. The page
|
|
123
|
-
is view-only unless the model explicitly requests human assistance; while that
|
|
124
|
-
request is active, one owner viewer can use **Take control** and **Return
|
|
125
|
-
control**. **Stop** is always available and never approves payment.
|
|
126
|
-
|
|
127
|
-
Treat the printed URL as opaque and open it exactly as returned, including its
|
|
128
|
-
`#token=...` fragment. If that fragment is lost while the checkout is active,
|
|
129
|
-
run `shopstack checkout view CHECKOUT_ID` to receive a replacement URL. The
|
|
130
|
-
replacement disconnects an older viewer session but does not restart checkout.
|
|
131
|
-
Omit `model_handle` to use the production GLM route. Set it to `qwen` only when
|
|
132
|
-
you explicitly need the fixed Qwen comparison route.
|
|
133
|
-
|
|
134
194
|
When no provider is selected, the checkout runs normally until the payment
|
|
135
195
|
form, then asks for card details through a no-echo terminal prompt. Card data is
|
|
136
196
|
sent only to the protected payment-details endpoint. The CLI separately shows
|
|
@@ -172,11 +232,29 @@ restart recovery and durable credential storage; never use browser storage.
|
|
|
172
232
|
|
|
173
233
|
`runCheckout` returns at a required input if its corresponding callback is
|
|
174
234
|
omitted. Final payment approval is never inferred from a message or from
|
|
175
|
-
supplying a card.
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
235
|
+
supplying a card.
|
|
236
|
+
|
|
237
|
+
Set `SHOPSTACK_API_URL` to select the intended Shopstack API and
|
|
238
|
+
`SHOPSTACK_CONFIG_FILE` to select its private profile store.
|
|
239
|
+
|
|
240
|
+
## Release verification
|
|
241
|
+
|
|
242
|
+
```sh
|
|
243
|
+
npm test
|
|
244
|
+
npm run test:types
|
|
245
|
+
npm run test:coverage
|
|
246
|
+
npm run test:packed
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
The packed test creates actual SDK and MCP archives, installs them in a clean
|
|
250
|
+
directory, and runs both features through TCP HTTP and stdio MCP. It checks
|
|
251
|
+
verified signup, shared private profiles, exact package versions, progress,
|
|
252
|
+
restaurant details, stale revisions, and single-attempt failure handling.
|
|
253
|
+
Only package dependency downloads use the public network. The API is a local
|
|
254
|
+
fixture; this does not create a real booking or order.
|
|
255
|
+
The coverage gate needs Node.js 22.7 or newer and excludes test files. It enforces
|
|
256
|
+
80% source line/function coverage and 75% branch coverage.
|
|
257
|
+
|
|
258
|
+
Release order: validate the hosted preview, freeze the SDK archive, publish that
|
|
259
|
+
exact SDK archive, then publish the matching MCP archive. Do not publish only one
|
|
260
|
+
package or promote the hosted API before the release checks pass.
|
package/SKILL.md
CHANGED
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: shopstack-checkout
|
|
3
|
-
description: Use Shopstack to onboard a verified personal account or a developer with independently scoped end users, inspect optional Link connectivity, and run asynchronous online checkouts
|
|
3
|
+
description: Use Shopstack to onboard a verified personal account or a developer with independently scoped end users, run guided guest restaurant reservations, inspect optional Link connectivity, and run asynchronous online checkouts. Trigger for restaurant search or booking, buying products, automating checkout, integrating Shopstack into an agent, or managing developer-owned users.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Shopstack Checkout
|
|
7
7
|
|
|
8
8
|
Use Shopstack as the checkout execution layer. Keep account verification, user ownership, protected payment input, and final payment approval at their typed boundaries.
|
|
9
9
|
|
|
10
|
+
Use one Shopstack API and verified user profile for checkout and reservations.
|
|
11
|
+
Before signup, configure the issued API address, including `/v1`, through
|
|
12
|
+
`SHOPSTACK_API_URL`; the release has no staging or production default. Use a
|
|
13
|
+
separate private profile store for each environment. New profiles save their API
|
|
14
|
+
address and reject a conflicting override. Never ask the user to paste a key in
|
|
15
|
+
chat to fix an environment mismatch.
|
|
16
|
+
|
|
10
17
|
## Install
|
|
11
18
|
|
|
12
19
|
For the JavaScript client and CLI:
|
|
13
20
|
|
|
14
21
|
```bash
|
|
15
|
-
npm install shopstack
|
|
16
|
-
npm install -g shopstack
|
|
22
|
+
npm install shopstack@0.3.0
|
|
23
|
+
npm install -g shopstack@0.3.0
|
|
17
24
|
```
|
|
18
25
|
|
|
19
26
|
For MCP clients, configure the local stdio server:
|
|
@@ -23,13 +30,45 @@ For MCP clients, configure the local stdio server:
|
|
|
23
30
|
"mcpServers": {
|
|
24
31
|
"shopstack": {
|
|
25
32
|
"command": "npx",
|
|
26
|
-
"args": ["-y", "shopstack-mcp"]
|
|
33
|
+
"args": ["-y", "shopstack-mcp@0.2.0"]
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
37
|
```
|
|
31
38
|
|
|
32
39
|
Never ask the model to print or relay a Shopstack API key. The CLI and MCP server save verified keys in the private local Shopstack profile file.
|
|
40
|
+
The install commands require the coordinated published release. Use the
|
|
41
|
+
verified release archives while it is unpublished; an old registry package is
|
|
42
|
+
not equivalent to the current source.
|
|
43
|
+
|
|
44
|
+
## Run a guest restaurant reservation
|
|
45
|
+
|
|
46
|
+
Give Shopstack the diner name, phone number, two-letter country, a location
|
|
47
|
+
name, and one detailed natural-language request. Do not supply coordinates or a
|
|
48
|
+
time zone. Shopstack resolves the valid OpenTable location and its time zone.
|
|
49
|
+
Include as much useful detail as possible: date, local time or range, party
|
|
50
|
+
size, cuisine, budget, travel distance, atmosphere, dietary needs, seating,
|
|
51
|
+
accessibility, occasion, and anything to avoid.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
shopstack reservation run --file reservation.json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Shopstack resolves the location name, asks a natural follow-up when needed, and
|
|
58
|
+
returns the first six compact observed restaurants. Use
|
|
59
|
+
`list_reservation_options` or `shopstack reservation options` for another page.
|
|
60
|
+
Use `get_reservation_option` or `shopstack reservation option` for the exact
|
|
61
|
+
stored provider description, photos, facts, and time IDs. These reads do not
|
|
62
|
+
run another model inference or OpenTable search. Preserve every current
|
|
63
|
+
`option_id` and `time_id`. A new search makes older IDs stale.
|
|
64
|
+
|
|
65
|
+
Selection rechecks availability, locks the slot, and returns one exact booking
|
|
66
|
+
summary. Send a clear confirmation only when the user confirms that exact
|
|
67
|
+
summary. This confirmation is an ordinary reservation message and can create
|
|
68
|
+
the booking. There is no separate reservation approval endpoint or MCP tool.
|
|
69
|
+
An ambiguous reply must not be treated as confirmation. The anonymous guest
|
|
70
|
+
profile and temporary email are created only when booking. Cancel a confirmed
|
|
71
|
+
reservation with the typed reservation cancellation operation.
|
|
33
72
|
|
|
34
73
|
## Choose the account shape
|
|
35
74
|
|
|
@@ -69,11 +108,6 @@ shopstack connect list
|
|
|
69
108
|
shopstack connect link
|
|
70
109
|
```
|
|
71
110
|
|
|
72
|
-
The Link command opens the HTTPS setup page, displays the confirmation phrase,
|
|
73
|
-
and checks every five seconds for up to five minutes. Continue only after it
|
|
74
|
-
prints `Link connected` and reports `checkout_ready: true`. If the browser does
|
|
75
|
-
not open automatically, open the exact URL printed in the terminal.
|
|
76
|
-
|
|
77
111
|
Include `payment_provider: "link"` only when the active user's Link connection reports checkout-ready. Otherwise omit `payment_provider`. Shopstack will run until card entry and request one protected checkout-scoped card through the SDK or no-echo CLI prompt.
|
|
78
112
|
|
|
79
113
|
Never put card data in MCP arguments, natural-language messages, model output, logs, or ordinary CLI flags.
|
|
@@ -114,39 +148,18 @@ shopstack checkout run --file checkout.json
|
|
|
114
148
|
Or create with MCP, then call `poll_checkout`. Display these authoritative fields to the user when they change:
|
|
115
149
|
|
|
116
150
|
- `status`: one of exactly `queued`, `started`, `help_required`, `approval_required`, `submitting`, `complete`, `failed`, `cancelled`;
|
|
117
|
-
- `presentation_revision`: the monotonic revision for user-visible checkout state;
|
|
118
151
|
- `activity`: bounded present-tense display text;
|
|
119
152
|
- `intent.name`, `intent.phase`, and `intent.updated_at`: bounded mechanical action progress with no arguments or reasoning;
|
|
120
153
|
- `required_input`: a typed handoff such as protected payment-card input;
|
|
121
154
|
- `approval`: the exact amount-bound approval request when present.
|
|
122
155
|
|
|
123
|
-
|
|
124
|
-
WebSocket capability. Each valid notification means the presentation revision
|
|
125
|
-
changed; the client then fetches the canonical checkout before displaying or
|
|
126
|
-
acting on it. The notification is not checkout state truth and never grants
|
|
127
|
-
payment authority. The capability belongs in the WebSocket subprotocol, never
|
|
128
|
-
the URL, logs, model context, or messages. If WebSocket delivery is unavailable,
|
|
129
|
-
the client falls back to bounded HTTP waiting and then fixed polling.
|
|
130
|
-
|
|
131
|
-
MCP and manual integrations poll every two seconds for `queued`, `started`, and
|
|
132
|
-
`submitting`; every five seconds for `help_required` and `approval_required`;
|
|
133
|
-
stop at `complete`, `failed`, or `cancelled`.
|
|
134
|
-
|
|
135
|
-
The optional `live_view_url` is a private owner-viewer capability. Show it only
|
|
136
|
-
to the initiating user. Do not store it in browser storage, analytics, logs,
|
|
137
|
-
model context, or ordinary messages.
|
|
138
|
-
|
|
139
|
-
Present `live_view_url` exactly as returned, including its fragment; never
|
|
140
|
-
construct a viewer URL from the checkout ID. MCP returns it as a clickable
|
|
141
|
-
resource link. If it is lost while the checkout is active, call
|
|
142
|
-
`get_live_view` (or `shopstack checkout view CHECKOUT_ID`) once and present the
|
|
143
|
-
replacement verbatim.
|
|
156
|
+
Poll every two seconds for `queued`, `started`, and `submitting`; every five seconds for `help_required` and `approval_required`; stop at `complete`, `failed`, or `cancelled`.
|
|
144
157
|
|
|
145
158
|
## Respond at typed boundaries
|
|
146
159
|
|
|
147
160
|
- Use `GET/POST /v1/checkout/{id}/messages` only for ordinary missing information.
|
|
148
161
|
- Use protected SDK/CLI payment input when `required_input.type` is `payment_card`.
|
|
149
|
-
- Use only the dedicated payment-approval endpoint
|
|
162
|
+
- Use only the dedicated payment-approval endpoint from a separately scoped trusted backend.
|
|
150
163
|
- MCP and messages cannot approve payment and expose no approval tool.
|
|
151
164
|
- Never infer approval from a user's conversational message.
|
|
152
165
|
- Cancel with the typed cancellation operation if the user withdraws the request.
|
package/bin/shopstack
CHANGED
|
@@ -5,8 +5,6 @@ import { runCli } from "../src/cli.js";
|
|
|
5
5
|
try {
|
|
6
6
|
await runCli(process.argv.slice(2));
|
|
7
7
|
} catch (error) {
|
|
8
|
-
process.stderr.write(
|
|
9
|
-
`${error instanceof Error ? error.message : String(error)}\n`,
|
|
10
|
-
);
|
|
8
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
11
9
|
process.exitCode = 1;
|
|
12
10
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shopstack",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Shopstack API client and command-line checkout and reservation tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -11,24 +11,26 @@
|
|
|
11
11
|
"./config": {
|
|
12
12
|
"types": "./src/config.d.ts",
|
|
13
13
|
"import": "./src/config.js"
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
|
+
"./openapi": "./specs/openapi.json"
|
|
15
16
|
},
|
|
16
17
|
"types": "./src/client.d.ts",
|
|
17
18
|
"files": [
|
|
18
19
|
"SKILL.md",
|
|
19
20
|
"bin",
|
|
21
|
+
"specs",
|
|
20
22
|
"src"
|
|
21
23
|
],
|
|
22
24
|
"bin": {
|
|
23
25
|
"shopstack": "bin/shopstack"
|
|
24
26
|
},
|
|
25
27
|
"scripts": {
|
|
26
|
-
"check": "npm run format:check && npm run test:coverage",
|
|
27
|
-
"format:check": "prettier --check .",
|
|
28
28
|
"shopstack": "node ./bin/shopstack",
|
|
29
|
-
"test": "node --test
|
|
30
|
-
"test:
|
|
31
|
-
"
|
|
29
|
+
"test": "node --test",
|
|
30
|
+
"test:packed": "SHOPSTACK_PACKED_RELEASE_TEST=1 node --test test/packed-release.test.js",
|
|
31
|
+
"test:types": "tsc --noEmit --strict --module nodenext --moduleResolution nodenext --target es2022 --lib es2022,dom type-tests/public-contract.ts",
|
|
32
|
+
"sync:contract": "node scripts/sync-contract.mjs",
|
|
33
|
+
"test:coverage": "node --experimental-test-coverage --test --test-coverage-include='src/*.js' --test-coverage-include='packages/mcp/src/*.js' --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=75"
|
|
32
34
|
},
|
|
33
35
|
"engines": {
|
|
34
36
|
"node": ">=18"
|
|
@@ -37,27 +39,15 @@
|
|
|
37
39
|
"type": "git",
|
|
38
40
|
"url": "git+https://github.com/jimbo132/shopstack-cli.git"
|
|
39
41
|
},
|
|
40
|
-
"homepage": "https://github.com/jimbo132/shopstack-cli#readme",
|
|
41
|
-
"bugs": {
|
|
42
|
-
"url": "https://github.com/jimbo132/shopstack-cli/issues"
|
|
43
|
-
},
|
|
44
|
-
"publishConfig": {
|
|
45
|
-
"access": "public"
|
|
46
|
-
},
|
|
47
|
-
"sideEffects": false,
|
|
48
|
-
"dependencies": {
|
|
49
|
-
"ws": "8.21.3"
|
|
50
|
-
},
|
|
51
42
|
"license": "MIT",
|
|
52
43
|
"keywords": [
|
|
53
44
|
"shopstack",
|
|
54
45
|
"cli",
|
|
55
46
|
"checkout",
|
|
56
|
-
"payments"
|
|
57
|
-
"agentic-commerce",
|
|
58
|
-
"agents"
|
|
47
|
+
"payments"
|
|
59
48
|
],
|
|
60
49
|
"devDependencies": {
|
|
61
|
-
"
|
|
50
|
+
"typescript": "6.0.3",
|
|
51
|
+
"yaml": "2.9.0"
|
|
62
52
|
}
|
|
63
53
|
}
|