@aglyn/aglyn 1.0.0-beta.151 → 1.0.0-beta.152
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 +10 -10
- package/src/lib/app-utils/docs-index.generated.js +5 -5
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/notifications.d.ts +11 -0
- package/src/lib/app-utils/notifications.js +11 -1
- package/src/lib/app-utils/notifications.js.map +1 -1
- package/src/lib/plugin-manager/plugin-permissions.d.ts +7 -0
- package/src/lib/plugin-manager/plugin-permissions.js +30 -0
- package/src/lib/plugin-manager/plugin-permissions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-trust-signing.d.ts +51 -0
- package/src/lib/plugin-manager/plugin-trust-signing.js +119 -0
- package/src/lib/plugin-manager/plugin-trust-signing.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aglyn/aglyn",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.152",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://aglyn.com",
|
|
6
6
|
"repository": {
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"./package.json": "./package.json"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aglyn/shared-data-enums": "1.0.0-beta.
|
|
37
|
-
"@aglyn/shared-data-mdi": "1.0.0-beta.
|
|
38
|
-
"@aglyn/shared-data-types": "1.0.0-beta.
|
|
39
|
-
"@aglyn/shared-util-email": "1.0.0-beta.
|
|
40
|
-
"@aglyn/shared-util-http": "1.0.0-beta.
|
|
41
|
-
"@aglyn/shared-util-logger": "1.0.0-beta.
|
|
42
|
-
"@aglyn/shared-util-timestamp": "1.0.0-beta.
|
|
43
|
-
"@aglyn/shared-util-tools": "1.0.0-beta.
|
|
44
|
-
"@aglyn/shared-util-vendor": "1.0.0-beta.
|
|
36
|
+
"@aglyn/shared-data-enums": "1.0.0-beta.152",
|
|
37
|
+
"@aglyn/shared-data-mdi": "1.0.0-beta.152",
|
|
38
|
+
"@aglyn/shared-data-types": "1.0.0-beta.152",
|
|
39
|
+
"@aglyn/shared-util-email": "1.0.0-beta.152",
|
|
40
|
+
"@aglyn/shared-util-http": "1.0.0-beta.152",
|
|
41
|
+
"@aglyn/shared-util-logger": "1.0.0-beta.152",
|
|
42
|
+
"@aglyn/shared-util-timestamp": "1.0.0-beta.152",
|
|
43
|
+
"@aglyn/shared-util-tools": "1.0.0-beta.152",
|
|
44
|
+
"@aglyn/shared-util-vendor": "1.0.0-beta.152",
|
|
45
45
|
"@data-driven-forms/react-form-renderer": "^4.2.0",
|
|
46
46
|
"@msgpack/msgpack": "^3.1.3",
|
|
47
47
|
"@types/unist": "^3.0.3",
|
|
@@ -4237,7 +4237,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4237
4237
|
title: 'Sequences',
|
|
4238
4238
|
heading: 'Compliance settings',
|
|
4239
4239
|
anchor: '#compliance-settings',
|
|
4240
|
-
text: 'Every email a sequence sends ends with a footer saying who sent it, where they can be reached by post, that the email is a
|
|
4240
|
+
text: 'Every email a sequence sends ends with a footer saying who sent it, where they can be reached by post, that the email is a sales email, and how to stop more of them:\nThe United States\' CAN-SPAM Act requires those things of a commercial email, so the footer is added to every email after your text — no template or merge field can leave it off. You set what it says in Sequences → Compliance:\n- Legal name — your organization\'s legal name, as the footer prints it.\n- Brand name — the name the solicitation sentence uses, when it isn\'t the legal name. Leave it empty to use the legal name.\n- Postal address — a valid physical postal address: a street address, a post office box registered with the US Postal Service, or a private mailbox registered with the US Postal Service under its rules for commercial mail receiving agencies. Write it over as many lines as it takes; the footer prints them on one line.\nNo sequence can be activated while the legal name or the postal address is empty, and an email with neither is never sent.\nAllowed countries {#allowed-countries}\nThe countries a sequence may send to at all, United States by default. Every sequence sends only to the countries both it and this list allow, so taking a country off here takes it off every sequence at once.\nThe others are off because the law is different there. Canada, the United Kingdom and most of the European Union require a consent basis that an email to someone who never contacted you does not have. So a cold email — to someone who never filled in a form, signed up, ordered or booked with you, or wrote to you — never goes outside the United States, whatever this list says. Add another country only for people who came to you first.'
|
|
4241
4241
|
},
|
|
4242
4242
|
{
|
|
4243
4243
|
path: '/content-and-data/crm/sequences',
|
|
@@ -4937,7 +4937,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4937
4937
|
title: 'Building feature plugins',
|
|
4938
4938
|
heading: 'Remote bundles: the trusted realm tier (AGL-420)',
|
|
4939
4939
|
anchor: '#remote-bundles-the-trusted-realm-tier-agl-420',
|
|
4940
|
-
text: 'Marketplace plugins normally run sandboxed in the cross-origin PluginFrame. Listings a staff member has reviewed and signed (trust: \'realm\' + an Ed25519 signature over the bundle\'s sha256 on the version doc) instead load INTO the app realm and use every registry above — first-party-grade extensions installed per workspace, no repo change.\n- Build with tools/plugin-loader/realm/rollup.config.mjs: your react, react/jsx-runtime, and @aglyn/aglyn imports compile to lookups on globalThis.AGLYNPLUGINHOST (the app\'s own singletons), so the emitted bundle imports nothing. Export register(host) for client surfaces; registerApi() for server handlers.\n- Publish through the marketplace pipeline, install (pins {version, sha256}), then staff grant trust via POST /api/admin/
|
|
4940
|
+
text: 'Marketplace plugins normally run sandboxed in the cross-origin PluginFrame. Listings a staff member has reviewed and signed (trust: \'realm\' + an Ed25519 signature over the bundle\'s sha256 on the version doc) instead load INTO the app realm and use every registry above — first-party-grade extensions installed per workspace, no repo change.\n- Build with tools/plugin-loader/realm/rollup.config.mjs: your react, react/jsx-runtime, and @aglyn/aglyn imports compile to lookups on globalThis.AGLYNPLUGINHOST (the app\'s own singletons), so the emitted bundle imports nothing. Export register(host) for client surfaces; registerApi() for server handlers.\n- Publish through the marketplace pipeline, install (pins {version, sha256}), then staff grant trust via POST /api/marketplace/admin/trust.\n- The console loads an org\'s realm installs before the shell renders; published sites load them post-hydration (additive runtimes — first paint never waits on a marketplace CDN). Every load verifies the sha256 pin and the platform signature and fails closed; revocations is the hard kill switch.\n- Server handler bundles are additionally gated by PLUGINREMOTESERVER=enabled + a per-deploy PLUGINREMOTESERVERBUNDLES allowlist, default off everywhere.\nFull trust chain, env matrix, and walkthrough: docs/PLUGINLOADING.md in the repo; a runnable demo lives at tools/plugin-loader/realm/demo.'
|
|
4941
4941
|
},
|
|
4942
4942
|
{
|
|
4943
4943
|
path: '/developers/plugins/building-feature-plugins',
|
|
@@ -5105,7 +5105,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5105
5105
|
title: 'Guide: trusted realm bundles',
|
|
5106
5106
|
heading: 'Granting trust (staff)',
|
|
5107
5107
|
anchor: '#granting-trust-staff',
|
|
5108
|
-
text: 'Admin → Plugin reviews has a Listed plugins — realm trust section: every listed and verified plugin with its recent versions, each showing a Realm-trusted or Sandboxed chip and a Latest marker, with per-version Grant realm trust and Revoke realm trust buttons. Trust is granted to a specific reviewed version, not to the listing — a newer version stays sandboxed until it is reviewed and granted in turn.\nBoth actions are super-staff only and adminAudit\'d. The equivalent API is POST /api/admin/
|
|
5108
|
+
text: 'Admin → Plugin reviews has a Listed plugins — realm trust section: every listed and verified plugin with its recent versions, each showing a Realm-trusted or Sandboxed chip and a Latest marker, with per-version Grant realm trust and Revoke realm trust buttons. Trust is granted to a specific reviewed version, not to the listing — a newer version stays sandboxed until it is reviewed and granted in turn.\nBoth actions are super-staff only and adminAudit\'d. The equivalent API is POST /api/marketplace/admin/trust { listingId, version }, with { action: \'revoke\' } to revoke; a hard-kill still needs a revocation doc. Signing requires PLUGINTRUSTPRIVATEKEY on the console deployment — generate the pair with tools/scripts/generate-plugin-trust-key.mjs.'
|
|
5109
5109
|
},
|
|
5110
5110
|
{
|
|
5111
5111
|
path: '/developers/plugins/guides/realm-bundles',
|
|
@@ -5455,7 +5455,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5455
5455
|
title: 'Manifests, trust lifecycle & environment',
|
|
5456
5456
|
heading: 'Review & trust lifecycle',
|
|
5457
5457
|
anchor: '#review--trust-lifecycle',
|
|
5458
|
-
text: '- listed/verified (or legacy/absent) plugin listings appear in browse; everything else is owner-and-staff-only. Verified adds the ✅ badge.\n- Realm trust is separate and orthogonal: a super-staff signature over a version\'s sha256 (POST /api/admin/
|
|
5458
|
+
text: '- listed/verified (or legacy/absent) plugin listings appear in browse; everything else is owner-and-staff-only. Verified adds the ✅ badge.\n- Realm trust is separate and orthogonal: a super-staff signature over a version\'s sha256 (POST /api/marketplace/admin/trust) sets trust: \'realm\', letting that version load into the app realm. The revocations/{listingId} kill switch beats everything.'
|
|
5459
5459
|
},
|
|
5460
5460
|
{
|
|
5461
5461
|
path: '/developers/plugins/reference/manifest-and-envs',
|
|
@@ -6344,7 +6344,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
6344
6344
|
title: 'The console tour',
|
|
6345
6345
|
heading: 'Workspace settings & notifications',
|
|
6346
6346
|
anchor: '#workspace-settings--notifications',
|
|
6347
|
-
text: 'Organization-wide settings (name, workspace URL) live under Organization → Settings, which also holds Profile, API keys, Branding, Single sign-on, Privacy, Ownership and Delete. Turning plugins on and off for the workspace is its own section, Organization → Plugins — Marketplace is for finding and installing new ones, not for administering what you already run:\nThe notifications feed\nYour in-app notification feed — billing, publishing, workflow failures — lives under Notifications. The
|
|
6347
|
+
text: 'Organization-wide settings (name, workspace URL) live under Organization → Settings, which also holds Profile, API keys, Branding, Single sign-on, Privacy, Ownership and Delete. Turning plugins on and off for the workspace is its own section, Organization → Plugins — Marketplace is for finding and installing new ones, not for administering what you already run:\nThe notifications feed\nYour in-app notification feed — billing, publishing, workflow failures — lives under Notifications, which has two sections in the rail on the left: All notifications and Settings. The first shows what arrived, newest first, with Mark all read above it:\nNotification settings\nEverything about what reaches you lives on the second section, Settings.\nWhat you are told about is a table: one row per category, one column for In console and one for Email.\n- In console is on for every category. Switching it off stops that category appearing in the feed and in the bell.\n- Email is off for every category. Switch one on and you also get a message in your inbox when one of those notifications arrives. This does not touch the mail Aglyn already sends you — invites, verification, receipts, password resets and dunning are separate, and are not affected by anything on this page.\nWorkspace and site overrides\nOne workspace or one site sets the same answers for a single workspace or a single site, rather than for your whole account. Each cell starts at Inherit, which means it follows the level above it: a site follows its workspace, a workspace follows your account. Set one to On or Off and only that scope changes. This is how you take form submissions by email from one busy site without taking them from the other five.\nDaily digests\nDaily CRM digest is on by default. Each morning it sends you one notification '
|
|
6348
6348
|
},
|
|
6349
6349
|
{
|
|
6350
6350
|
path: '/getting-started/create-a-site',
|