frontpage-host 0.3.6 → 0.3.8
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/AGENTS.md +4 -4
- package/CUSTOMER-INBOX.md +5 -3
- package/MAIL.md +4 -2
- package/PEOPLE.md +1 -1
- package/README.md +4 -0
- package/dist/commands/customer-inbox.js +2 -2
- package/dist/registry.js +3 -3
- package/llms.txt +3 -3
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -262,7 +262,7 @@ Use `frontpage people overview`, `groups`, `stages`, `membership`, `rules`, `att
|
|
|
262
262
|
|
|
263
263
|
Manual group selection uses `groups.people` (20 per page, phone-only contacts included, no email-permission filter) and `membership.addMany` (1 to 20 IDs, real per-person outcomes, safe retries). Use these through `frontpage people workspace OPERATION --file payload.json`; existing CLI versions support that route. Conditional groups use the read-only `groups.preview`, with `checked`, `unknown`, cursor/limit and optional `expectedConditions` to detect changes between pages. Do not turn a conditional preview into additions or exceptions. See PEOPLE.md for mode changes, partial results and bounds.
|
|
264
264
|
|
|
265
|
-
##
|
|
265
|
+
## AI Support Agent
|
|
266
266
|
|
|
267
267
|
Scale and internal sites, after owner activation. No pilot allowlist. Use `frontpage customer-inbox get|put|post RESOURCE`, stable write keys and current versions. Full guide: [CUSTOMER-INBOX.md](./CUSTOMER-INBOX.md). `export CONVERSATION_ID --out FILE` writes authorized paginated history and file metadata; `download FILE_ID --out FILE` downloads through a file grant. Outputs never overwrite existing files. `frontpage usage` reports shared site credits, mail and storage. The owner toolbar uses `manage_customer_inbox` for all site-wide Inbox settings, unlocked knowledge, files, customer conversations, private guidance, replies, takeover/return and recovery. The support agent has a separate server-bound customer scope and requires verification for People data. Both agents cannot edit or unlock locked knowledge; human UI/CLI can unlock it. Never lend a website agent a human CLI key.
|
|
268
268
|
|
|
@@ -274,13 +274,13 @@ Offerings own every standalone Pay now payment. Use `frontpage payments buttons
|
|
|
274
274
|
|
|
275
275
|
Currency is owned by Payments and read by Store, Offerings and invoices. Offering create/get/update responses include exact receiptVariables. For custom confirmations, declare those names with existing mail template commands, attach receiptTemplateId, and verify both records. Only include expressly selected answers; keep private answers excluded. Forms still use input-name tokens and confirmTemplateId.
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
AI Support Agent setup: enable website chat through Inbox settings; Frontpage public sites load it without a file edit or publish. Other websites use the explicit widget snippet. `get website` reports managed addresses/public availability. Website knowledge is default-on, read-only public retrieval; `websiteKnowledge.enabled:false` disables it. Source toggles, attention filtering and receipt cursors use the documented versioned resources.
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
AI Support Agent team guidance: administrators may set `guidanceEmail` through the versioned settings write. The owner toolbar has the same setting. Teammates reply as the configured mailbox; no teammate account or separate mailbox activation is needed. Do not set it to the public Inbox address. Conversation management uses close/reopen; do not use read/trash/restore.
|
|
280
280
|
|
|
281
281
|
## Emails workspace workflows
|
|
282
282
|
|
|
283
|
-
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
283
|
+
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. New series default On; existing series retain their saved state. Save email steps before enrolling anyone. Check the returned series status before attaching it to a rule; an Off series holds enrollment until turned On. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
284
284
|
|
|
285
285
|
Rule placement: read a rule revision, then use `people workspace rules.place` with `id`, `owner` and `expectedRevision`. This only organizes the rule; it does not change its trigger or execution. New UI rules/attachments save paused. Generic attachment calls still need explicit `enabled:false` for paused creation. Saved optional conditions and exact duration minutes remain supported through CLI and agent calls.
|
|
286
286
|
|
package/CUSTOMER-INBOX.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AI Support Agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The product name is AI Support Agent. The existing `frontpage customer-inbox` command, `/customer-inbox` routes and `manage_customer_inbox` tool identifiers stay unchanged.
|
|
4
|
+
|
|
5
|
+
AI Support Agent uses the site's existing AI credits and storage allowance. It is available on Scale and internal plans after owner activation. Other public plans do not include Inbox. No pilot allowlist is required. The support agent uses fixed GPT-6 Luna and bills AI usage at 10× raw provider cost. During human handling, customer messages use ordinary routing. Normal owner-control email uses a small metered Luna Decisions call to keep private guidance, ownership controls and customer-facing replies distinct; the full support agent stays paused. UI and CLI controls need no intent call.
|
|
4
6
|
|
|
5
7
|
Run `frontpage help customer-inbox`. Use the site's normal CLI key:
|
|
6
8
|
|
|
@@ -303,7 +305,7 @@ A new direct email to the public agent address can receive general business answ
|
|
|
303
305
|
|
|
304
306
|
Unverified visitors can ask general business questions in their provisional chat. They cannot read or update an existing People contact, notes, orders or customer history. The same gate protects automatic People capture and every customer-data tool. After proof, People receives the customer and subsequent factual updates; the existing customer notes receipt remains idempotent. Public support and identity-protected support are distinct permissions.
|
|
305
307
|
|
|
306
|
-
Browser access lasts 30 days from creation or successful email verification/recovery. Verification links last one hour and work once; confirming rotates the credential. The widget retains access in that browser's storage and keeps it through temporary network failures. Returning browsers with valid access reopen their history automatically. When access is missing, ordinary **Continue** and email confirmation select the verified customer's continuous public-support conversation for that site. Both empty and nonempty provisional chats join only after proof; approved public origins can share the customer history through their own verified sessions. Typed email never restores history. Revoked credentials remain revoked; fresh proof does not reactivate an old token. Signed app identities remain separate by site, origin and subject.
|
|
308
|
+
Browser access lasts 30 days from creation or successful email verification/recovery. Verification links last one hour and work once; confirming rotates the credential. The widget retains access in that browser's storage and keeps it through temporary network failures. Returning browsers with valid access reopen their history automatically. When access is missing, ordinary **Continue** and email confirmation select the verified customer's continuous public-support conversation for that site. Both empty and nonempty provisional chats join only after proof; approved public origins can share the customer history through their own verified sessions. Typed email never restores history. Revoked credentials remain revoked; fresh proof does not reactivate an old token. Signed app identities remain separate by site, origin and subject. Open confirmation links in the same browser and on the same device where you want to continue chatting. If confirmation elsewhere replaces the loaded chat's access, the widget offers **Send a new link** to its original email through the existing recovery endpoint. This recovery action has no email-change field and grants no history before fresh proof. An empty unverified saved session with an email requests confirmation automatically; a receipt prevents duplicate requests during the link's one-hour lifetime, then rotates so an expired link cannot block a fresh confirmation.
|
|
307
309
|
|
|
308
310
|
The same conversation's customer-visible email and chat messages load together, including owner replies relayed through Inbox. They stay stored after browser access expires. Private guidance, internal notes and system notices never enter that public history. Recovery restores access to the saved conversation rather than starting its history over.
|
|
309
311
|
|
package/MAIL.md
CHANGED
|
@@ -23,7 +23,7 @@ Use `frontpage help mail --json` for command discovery. The existing CLI binary
|
|
|
23
23
|
}
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
This creates a shared template and an
|
|
26
|
+
This creates a shared template and an On series with one step. It sends nothing and enrolls no one. The first step always has zero delay. Later step delays accept integer minutes from 0 through 525600; a series has at most 12 steps.
|
|
27
27
|
|
|
28
28
|
For an existing record, supply `id` and `expectedUpdatedAt` from `mail template get` / `mail email get` / `mail series get`. To edit an existing shared template from a series, send both the complete `document` and complete pending `series` in one save, omitting `append`. **Save & return saves both**, including pending names, steps, removals and waits. To add a new step, send a new template plus the source series and `append:true`.
|
|
29
29
|
|
|
@@ -94,7 +94,9 @@ Use existing `frontpage people workspace series.preview --file preview.json` the
|
|
|
94
94
|
- **Turning Off:** pending series messages stop before provider handoff. A message already accepted by the provider cannot be recalled.
|
|
95
95
|
- **Turning On again:** new waiting people begin at step 1. Started people resume their next unsent step with its saved due date; an overdue step can send on the next pass. Each later wait starts after successful provider acceptance. Off time never skips a new person's first email or causes all later steps to send at once.
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
New series start **On** (`active`), including those created through `mail save`. Creating a series saves its definition; it does not enroll anyone or send email. Save at least one valid email step before enrolling people. Existing series keep their saved On/Off state when edited. Pause a new series explicitly if it should wait.
|
|
98
|
+
|
|
99
|
+
`mail series activate SERIES_ID` sets status active (On); `mail series pause SERIES_ID` sets paused (Off). Stored draft and paused both display Off. The series editor and progress view show an Off warning, even with no people enrolled. `mail series get/list` includes enrolledCount (waiting + current in progress/paused; excludes completed/cancelled) and waitingCount. `mail enrolments list` shows progress; cancel remains available while Off. The direct `mail send series` command also enrolls while Off and returns accepted enrollment IDs with no sends. Empty sends is not a delivery claim.
|
|
98
100
|
|
|
99
101
|
Selections with IDs use a read-only `POST /api/v1/sites/YOUR_SITE/mail/people` body to avoid URL limits. Ordinary directory queries use GET. Both call the same scoped query; neither writes CRM records.
|
|
100
102
|
|
package/PEOPLE.md
CHANGED
|
@@ -351,7 +351,7 @@ Timed rules use minutes: 2880 is two days. They run through the worker, not a br
|
|
|
351
351
|
|
|
352
352
|
## Attach an email to a group or stage
|
|
353
353
|
|
|
354
|
-
Use one action, **Attach an email**, then choose a saved email template or a series with saved steps. An Off series enrolls people waiting at step 1; turning it On starts them. An attachment creates a normal editable rule on group entry or stage entry. Campaigns are one-off emails and cannot be selected for automation.
|
|
354
|
+
Use one action, **Attach an email**, then choose a saved email template or a series with saved steps. An Off series enrolls people waiting at step 1; turning it On starts them. New series start On; existing Off series stay Off. The group Email section, group/stage rule cards, rule editor and attachment picker warn when a linked series is Off and offer **Open series**. A rule can be Active while its series is Off: enrollment waits, and other rule actions keep working. Activating a rule or attaching a series never turns the series On. An attachment creates a normal editable rule on group entry or stage entry. Campaigns are one-off emails and cannot be selected for automation.
|
|
355
355
|
|
|
356
356
|
Save a reusable template as `welcome.json`:
|
|
357
357
|
|
package/README.md
CHANGED
|
@@ -110,3 +110,7 @@ Read `items get` first. Include `expectedStock` only when changing stock; copy t
|
|
|
110
110
|
To turn versions on in the same edit, send `optionNames` and `firstVariant` using the normal variant fields. Do not combine `firstVariant` with `variantUpdates`. To turn versions off, send `optionNames:[]`; optional changes then address the `default` variant. Existing stock and variant commands remain available for explicit individual operations. IDs, order history, site/role/plan gates, and provider ownership stay unchanged. Browser forms use the same service. A successful save returns the saved product; a later list refresh cannot undo it.
|
|
111
111
|
|
|
112
112
|
An explicit stock target already equal to the current count is a no-op. Repeating that same target after a lost response does not fail merely because the earlier save applied it. A different current count still requires review; never automatically replace expectedStock.
|
|
113
|
+
|
|
114
|
+
### AI Support Agent
|
|
115
|
+
|
|
116
|
+
Included on Scale and internal sites after owner activation. Use `frontpage customer-inbox` for settings, knowledge and customer conversations. The command and API paths keep their existing names. See [AI Support Agent](./CUSTOMER-INBOX.md) for permissions, private guidance, takeover, verification and shared usage.
|
|
@@ -112,7 +112,7 @@ export async function runCustomerInbox(args) {
|
|
|
112
112
|
else {
|
|
113
113
|
const bytes = await readFile(operation.file);
|
|
114
114
|
if (bytes.length > 65536)
|
|
115
|
-
throw new CliHttpError("
|
|
115
|
+
throw new CliHttpError("AI Support Agent JSON exceeds 64 KiB.", EXIT_USAGE, 413, "payload_too_large");
|
|
116
116
|
let value;
|
|
117
117
|
try {
|
|
118
118
|
value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
@@ -151,7 +151,7 @@ export async function runCustomerInbox(args) {
|
|
|
151
151
|
if (isJson())
|
|
152
152
|
emitErr("customer-inbox", e);
|
|
153
153
|
else
|
|
154
|
-
console.error(e instanceof Error ? e.message : "
|
|
154
|
+
console.error(e instanceof Error ? e.message : "AI Support Agent request failed.");
|
|
155
155
|
return exitCodeForError(e);
|
|
156
156
|
}
|
|
157
157
|
}
|
package/dist/registry.js
CHANGED
|
@@ -417,7 +417,7 @@ export const COMMANDS = [
|
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
name: "customer-inbox",
|
|
420
|
-
summary: "Manage
|
|
420
|
+
summary: "Manage AI Support Agent settings, knowledge and customer conversations",
|
|
421
421
|
usage: "frontpage customer-inbox get|put|post <resource> [--file <json>] [--request-key <key>] [--site <slug>] [--json]; export|download <id> --out <new-file>",
|
|
422
422
|
topics: ["content"],
|
|
423
423
|
examples: [
|
|
@@ -427,9 +427,9 @@ export const COMMANDS = [
|
|
|
427
427
|
"frontpage customer-inbox get knowledge",
|
|
428
428
|
],
|
|
429
429
|
flags: [
|
|
430
|
-
"
|
|
430
|
+
"Available on Scale and internal sites after owner activation; no pilot allowlist",
|
|
431
431
|
"Writes require a stable --request-key and a JSON file; reuse both on retries",
|
|
432
|
-
"Human CLI
|
|
432
|
+
"Human CLI and owner-agent tools manage authorized conversations; customer support tools stay bound to the verified customer",
|
|
433
433
|
"Luna and 10× AI billing are fixed",
|
|
434
434
|
"Full request examples: CUSTOMER-INBOX.md",
|
|
435
435
|
],
|
package/llms.txt
CHANGED
|
@@ -38,7 +38,7 @@ New owner-added and CSV-imported contacts default to allowed for marketing. Expl
|
|
|
38
38
|
|
|
39
39
|
Use `frontpage people overview`, `groups`, `stages`, `membership`, `rules`, `attachments`, `import`. Use `frontpage mail campaign` for one-off group/stage/list audiences in Emails. Every editor action is available through these commands or `frontpage people workspace OPERATION --file payload.json`. Full operations and examples: [PEOPLE.md](./PEOPLE.md); public guide: https://frontpage.host/developers/people. Automated emails select a saved template or series. Campaigns use their own drafts.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
AI Support Agent (Scale and internal sites): CUSTOMER-INBOX.md. Settings, widget, knowledge, human guidance/relay, lifecycle, export/download and recovery. The owner toolbar manages all site-wide Inbox operations through manage_customer_inbox, including conversations, files and recovery, but cannot edit/unlock locked knowledge. The support agent is restricted to its verified customer and cannot change shared knowledge from customer input. No borrowed human credentials.
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
Payments, invoices and recurring billing: see packaged [PAYMENTS.md](./PAYMENTS.md), `frontpage help payments`, and https://frontpage.host/developers/payments. Version 0.2.0 removes writable currency, Store checkout mode and Store-owned money commands; Store stays cart-only. Preview/review before sends; keep stable operation keys on retries. Autopay requires the customer’s own verified authorization.
|
|
@@ -48,11 +48,11 @@ Offerings own every standalone Pay now payment. Use `frontpage payments buttons
|
|
|
48
48
|
|
|
49
49
|
Payments owns Stripe currency. Read Offering receiptVariables before creating a confirmation template; attach it through Payments. Forms use submitted input names. Full receipt contract: PAYMENTS.md.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
AI Support Agent: Frontpage website chat uses one settings toggle, no website edit/publish. get website shows public availability/managed addresses. websiteKnowledge.enabled controls default-on support website reads; no source or private-preview access. Source-ID toggles, attention filtering and held receipt pagination are supported. See CUSTOMER-INBOX.md.
|
|
52
52
|
|
|
53
53
|
## Emails workspace workflows
|
|
54
54
|
|
|
55
|
-
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
55
|
+
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. New series default On; existing series retain their saved state. Save email steps before enrolling anyone. Check the returned series status before attaching it to a rule; an Off series holds enrollment until turned On. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
56
56
|
|
|
57
57
|
The workspace validates and saves unfinished group settings before opening email setup. CLI and agent callers use `groups.create` / `groups.update` with a stable `requestKey` before attaching; `groups.count` reads the full visible match count. Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
|
58
58
|
|