@withandeo/cli 0.9.0 → 0.9.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/package.json +1 -1
- package/skill/tender-accounts/SKILL.md +4 -2
- package/templates/shopify-customer-account/AGENTS.md +1 -1
- package/templates/shopify-customer-account/README.md +1 -1
- package/templates/shopify-customer-account/apps/gateway/AGENTS.md +2 -2
- package/templates/shopify-customer-account/apps/gateway/README.md +2 -2
- package/templates/shopify-customer-account/apps/gateway/dot.dev.vars.example +1 -1
- package/templates/shopify-customer-account/apps/portal/AGENTS.md +1 -1
package/package.json
CHANGED
|
@@ -5,6 +5,8 @@ description: Create, build, validate, and preview merchant-owned Andeo applicati
|
|
|
5
5
|
|
|
6
6
|
# Andeo application delivery
|
|
7
7
|
|
|
8
|
+
The product name is **Andeo**. In customer-facing copy, describe sign-in, organization membership, app access, and application storage without naming infrastructure providers. Keep exact technical identifiers in executable code and configuration, and name merchant integrations when they explain the feature.
|
|
9
|
+
|
|
8
10
|
Use the `andeo` CLI (`npx @withandeo/cli`) as the only platform interface. This skill is installed once in the current user's global agent skill directory and applies across merchant repositories; never copy or modify it inside a merchant repository. Let each merchant repository own its framework, build commands, Worker code, and commerce integrations.
|
|
9
11
|
|
|
10
12
|
## Start a new application only when requested
|
|
@@ -193,7 +195,7 @@ npx @withandeo/cli source history replace \
|
|
|
193
195
|
Inspect the returned `sop_` operation with `source operation status`. Apply the
|
|
194
196
|
same request without `--dry-run` only after the dry-run evidence matches the
|
|
195
197
|
intended repository, project, branches, SHA, preview build, and composition.
|
|
196
|
-
Never substitute a raw token, direct API, Git force push, ref deletion, or
|
|
198
|
+
Never substitute a raw token, direct API, Git force push, ref deletion, or database
|
|
197
199
|
edit. Andeo creates and verifies an archive before history replacement and
|
|
198
200
|
uses an expected-SHA compare-and-swap for the target. History migration always
|
|
199
201
|
suppresses automatic production publication; protected gateways always remain
|
|
@@ -242,7 +244,7 @@ Inspect the merchant's current storefront or portal, repository, existing API cl
|
|
|
242
244
|
Use the smallest correct application slice:
|
|
243
245
|
|
|
244
246
|
- **Portal only:** presentation, interaction, accessibility, responsive behavior, or a feature already supported by existing same-origin routes.
|
|
245
|
-
- **Portal and gateway:** a new authenticated read or mutation, Shopify Customer Account query, provider integration, application
|
|
247
|
+
- **Portal and gateway:** a new authenticated read or mutation, Shopify Customer Account query, provider integration, application database state, runtime variable, resource, service, or security policy.
|
|
246
248
|
- **Gateway only:** authentication, session, route, provider, binding, or runtime-policy work with no visual change.
|
|
247
249
|
|
|
248
250
|
A portal release cannot add a gateway API contract. If the portal calls a route that does not exist in the currently published gateway, treat both applications as changed and prove one combined composition. Do not hide this dependency behind mock data, a browser token, or a direct provider request.
|
|
@@ -6,7 +6,7 @@ This is a merchant-owned Andeo application. The gateway and portal are independe
|
|
|
6
6
|
|
|
7
7
|
- For portal-only requests, change `apps/portal` and do not edit `apps/gateway`.
|
|
8
8
|
- Keep Shopify authentication, confidential bindings, sessions, and protected API routes in `apps/gateway`.
|
|
9
|
-
- Keep `apps/portal` free of Shopify customer tokens, session storage,
|
|
9
|
+
- Keep `apps/portal` free of Shopify customer tokens, session storage, database access, and provider secrets.
|
|
10
10
|
- Treat the `PORTAL_UI` binding as a privilege boundary inside one product: never forward browser cookies or authorization headers to the portal, and never relay portal cookie-control headers onto the customer hostname.
|
|
11
11
|
- Use `npx @withandeo/cli` for project linking, validation, and previews. Never call Andeo internal APIs directly.
|
|
12
12
|
- Never run `wrangler deploy`; production and preview delivery are controlled by Andeo.
|
|
@@ -9,7 +9,7 @@ customer hostname
|
|
|
9
9
|
apps/gateway -- PORTAL_UI service binding --> apps/portal
|
|
10
10
|
Shopify auth React UI
|
|
11
11
|
HttpOnly sessions no customer tokens
|
|
12
|
-
application
|
|
12
|
+
application database no confidential bindings
|
|
13
13
|
/auth/* and /api/*
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Gateway boundary
|
|
2
2
|
|
|
3
|
-
This app owns authentication, HttpOnly sessions, application
|
|
3
|
+
This app owns authentication, HttpOnly sessions, application database state, `/auth/*`, and protected `/api/*` routes.
|
|
4
4
|
|
|
5
5
|
- Do not put presentation-only changes here; make those in `../portal`.
|
|
6
6
|
- Preserve exact-host preview session isolation and Shopify PKCE protections.
|
|
7
|
-
- Never expose customer access tokens, ID tokens,
|
|
7
|
+
- Never expose customer access tokens, ID tokens, database data, or confidential provider credentials to the portal.
|
|
8
8
|
- Never forward shopper or authorization-flow cookies to `PORTAL_UI`, and never accept `Set-Cookie` or `Clear-Site-Data` from it. The gateway is the sole owner of authentication state and browser security headers.
|
|
9
9
|
- Add new resources and services to both `wrangler.jsonc` and `tender-app.config.json`; packaging must fail if they disagree.
|
|
10
10
|
- Run `npm run check` from this directory after gateway changes.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Gateway
|
|
2
2
|
|
|
3
|
-
Stable backend for __APP_NAME__. It owns Shopify Customer Account PKCE authentication, shopper sessions in
|
|
3
|
+
Stable backend for __APP_NAME__. It owns Shopify Customer Account PKCE authentication, shopper sessions in the application database, application API routes, and the `PORTAL_UI` service binding.
|
|
4
4
|
|
|
5
|
-
The customer-auth implementation is normal merchant source code copied by the starter. The merchant can inspect, edit, or replace it. Shopify remains the customer system of record;
|
|
5
|
+
The customer-auth implementation is normal merchant source code copied by the starter. The merchant can inspect, edit, or replace it. Shopify remains the customer system of record; The application database stores only transient auth state and application sessions.
|
|
6
6
|
|
|
7
7
|
Local HTTP development returns an explicit signed-out state. Real Shopify sign-in must use an HTTPS Tender preview whose canonical callback and logout URLs are registered in Shopify.
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Public Shopify and Tender runtime configuration. Replace these locally.
|
|
2
2
|
ACCOUNT_TENANT_ID=ten_replace_me
|
|
3
3
|
ACCOUNT_PROJECT_ID=prj_replace_me
|
|
4
|
-
ACCOUNT_RUNTIME_BASE_DOMAIN=
|
|
4
|
+
ACCOUNT_RUNTIME_BASE_DOMAIN=andeo.dev
|
|
5
5
|
ACCOUNT_VANITY_HOSTNAMES=
|
|
6
6
|
SHOPIFY_STOREFRONT_DOMAIN=example.myshopify.com
|
|
7
7
|
SHOPIFY_CUSTOMER_ACCOUNT_CLIENT_ID=replace_me
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This React app is the normal merchant and marketing-team editing surface.
|
|
4
4
|
|
|
5
|
-
- Keep it presentation-only. It may call same-origin gateway routes but must not receive Shopify customer tokens,
|
|
5
|
+
- Keep it presentation-only. It may call same-origin gateway routes but must not receive Shopify customer tokens, database bindings, or provider secrets.
|
|
6
6
|
- Do not request forwarded browser cookies or authorization headers from the gateway. React should use same-origin `/api/*` calls; the browser supplies the `HttpOnly` session directly to the gateway.
|
|
7
7
|
- For UI-only work, never edit `../gateway`.
|
|
8
8
|
- Use real gateway responses; do not add fake authenticated customer data to production code.
|