create-ampless 1.0.0-beta.187 → 1.0.0-beta.193
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/index.js +3 -0
- package/dist/templates/_shared/AGENTS.ja.md +2 -0
- package/dist/templates/_shared/AGENTS.md +2 -0
- package/dist/templates/_shared/README.ja.md +5 -3
- package/dist/templates/_shared/README.md +5 -3
- package/dist/templates/_shared/amplify/auth/resource.custom.ts +1 -1
- package/dist/templates/_shared/cms.config.ts +2 -2
- package/dist/templates/_shared/docs/plugin-author-guide.ja.md +10 -10
- package/dist/templates/_shared/docs/plugin-author-guide.md +10 -10
- package/dist/templates/_shared/package.json +21 -21
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -125,6 +125,9 @@ amplify_outputs.json
|
|
|
125
125
|
# Ampless plugin-secret encryption key \u2014 NEVER commit (decrypts all stored secrets)
|
|
126
126
|
amplify/secrets/encryption-key.ts
|
|
127
127
|
|
|
128
|
+
# MCP client config \u2014 holds the MCP Bearer token (amk_...). NEVER commit
|
|
129
|
+
.mcp.json
|
|
130
|
+
|
|
128
131
|
# TypeScript build artifacts
|
|
129
132
|
*.tsbuildinfo
|
|
130
133
|
|
|
@@ -67,6 +67,8 @@ Registration:
|
|
|
67
67
|
}
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
`.mcp.json` contains a secret Bearer token. Never commit it; it is already listed in the default `.gitignore`.
|
|
71
|
+
|
|
70
72
|
Post bodies accept three formats: `markdown`, `html`, or `tiptap` (JSON document).
|
|
71
73
|
|
|
72
74
|
## Verification expectations
|
|
@@ -66,11 +66,11 @@ npm run sandbox
|
|
|
66
66
|
|
|
67
67
|
- **Format** — `tiptap`(リッチテキスト)/ `markdown` / `html`(生 HTML、サニタイズなし)/ `static`(HTML/CSS/JS の zip アップロード)
|
|
68
68
|
- **No layout** フラグ(`format: 'html'` のときのみ)— 本文をそのまま出力し、Next.js のレイアウトもテーマのクロームも適用しない。URL は `/<slug>` のままで、middleware がリクエストを内部のベア HTML ハンドラーに書き換える
|
|
69
|
-
- **キャッシュ戦略**(`metadata.cache`)— 投稿ごとに `Cache-Control` を上書き: `'auto'`(デフォルト、編集時刻ベースのクールダウン)、`'deep'`(常に長期キャッシュ)、`'hot'`(常に no-store)。詳細は `
|
|
69
|
+
- **キャッシュ戦略**(`metadata.cache`)— 投稿ごとに `Cache-Control` を上書き: `'auto'`(デフォルト、編集時刻ベースのクールダウン)、`'deep'`(常に長期キャッシュ)、`'hot'`(常に no-store)。詳細は `https://github.com/heavymoons/ampless/wiki/CONTENT.ja`
|
|
70
70
|
- **Slug** — 公開 URL
|
|
71
71
|
- **Status** — `draft`(管理者のみ)または `published`
|
|
72
72
|
|
|
73
|
-
詳細リファレンス: [
|
|
73
|
+
詳細リファレンス: [CONTENT.ja(GitHub)](https://github.com/heavymoons/ampless/wiki/CONTENT.ja) ([English](https://github.com/heavymoons/ampless/wiki/CONTENT))
|
|
74
74
|
|
|
75
75
|
## テーマ
|
|
76
76
|
|
|
@@ -212,7 +212,9 @@ ampless は HTTP トランスポート + Bearer トークン認証による MCP
|
|
|
212
212
|
}
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
`.mcp.json` には秘密の Bearer トークンが含まれます。コミットしないでください(デフォルトの `.gitignore` に登録済みです)。
|
|
216
|
+
|
|
217
|
+
MCP のセットアップとトークン管理の詳細については [architecture-04-access-layer-mcp](https://github.com/heavymoons/ampless/wiki/architecture-04-access-layer-mcp) を参照してください。
|
|
216
218
|
|
|
217
219
|
## ampless の更新
|
|
218
220
|
|
|
@@ -66,11 +66,11 @@ Posts are the single content type. Each post has:
|
|
|
66
66
|
|
|
67
67
|
- **Format** — `tiptap` (rich text) / `markdown` / `html` (raw, no sanitization) / `static` (zip-upload of HTML/CSS/JS)
|
|
68
68
|
- **No layout** flag (`format: 'html'` only) — render the body verbatim with no Next.js layout and no theme chrome. URL stays `/<slug>`; middleware rewrites the request to the internal bare-HTML handler.
|
|
69
|
-
- **Cache strategy** (`metadata.cache`) — override the per-post Cache-Control: `'auto'` (default; cooldown by edit time), `'deep'` (always long-cache), or `'hot'` (always no-store). See `
|
|
69
|
+
- **Cache strategy** (`metadata.cache`) — override the per-post Cache-Control: `'auto'` (default; cooldown by edit time), `'deep'` (always long-cache), or `'hot'` (always no-store). See `https://github.com/heavymoons/ampless/wiki/CONTENT` for details.
|
|
70
70
|
- **Slug** — the public URL
|
|
71
71
|
- **Status** — `draft` (admin only) or `published`
|
|
72
72
|
|
|
73
|
-
Full reference: [
|
|
73
|
+
Full reference: [CONTENT on GitHub](https://github.com/heavymoons/ampless/wiki/CONTENT) ([日本語](https://github.com/heavymoons/ampless/wiki/CONTENT.ja)).
|
|
74
74
|
|
|
75
75
|
## Themes
|
|
76
76
|
|
|
@@ -212,7 +212,9 @@ ampless ships an MCP (Model Context Protocol) server so Claude Desktop / Cursor
|
|
|
212
212
|
}
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
`.mcp.json` contains a secret Bearer token. Never commit it; it is already listed in the default `.gitignore`.
|
|
216
|
+
|
|
217
|
+
See [architecture-04-access-layer-mcp](https://github.com/heavymoons/ampless/wiki/architecture-04-access-layer-mcp) for the full MCP setup and token management guide.
|
|
216
218
|
|
|
217
219
|
## Updating ampless
|
|
218
220
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
// ⚠️ Changing the RP ID after operators have registered passkeys
|
|
34
34
|
// invalidates every existing credential — they'll have to register
|
|
35
35
|
// again from the account page. The password flow always stays available
|
|
36
|
-
// as the fallback. See `
|
|
36
|
+
// as the fallback. See `https://github.com/heavymoons/ampless/wiki/passkeys`.
|
|
37
37
|
//
|
|
38
38
|
// ⚠️ cms.config.ts must not import theme CSS or browser-only modules —
|
|
39
39
|
// it is loaded at CDK synth time when deriving the RP ID.
|
|
@@ -58,7 +58,7 @@ export default defineConfig({
|
|
|
58
58
|
// discovery metadata so AI clients can find the endpoint on their own:
|
|
59
59
|
// a catalog at `/.well-known/mcp/catalog.json` and a Server Card at
|
|
60
60
|
// `/api/mcp/server-card`. Requires `publicMcp: true` + an http(s)
|
|
61
|
-
// `site.url`. See https://github.com/heavymoons/ampless/
|
|
61
|
+
// `site.url`. See https://github.com/heavymoons/ampless/wiki/mcp.
|
|
62
62
|
// ai: { markdownRoutes: false, llmsTxt: { limit: 100 }, publicMcp: true, mcpDiscovery: true },
|
|
63
63
|
// Active plugins. Order doesn't matter; the runtime aggregates metadata
|
|
64
64
|
// and runs hooks for events each plugin subscribes to.
|
|
@@ -95,7 +95,7 @@ export default defineConfig({
|
|
|
95
95
|
//
|
|
96
96
|
// Cookie consent banner. Installs `window.amplessConsent` so other
|
|
97
97
|
// plugins can gate themselves on user consent (see the Consent
|
|
98
|
-
// Convention in `
|
|
98
|
+
// Convention in `https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture`).
|
|
99
99
|
//
|
|
100
100
|
// IMPORTANT: cookieConsentPlugin() must come BEFORE any analytics
|
|
101
101
|
// plugin in this array — both run `afterInteractive` and the consent
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
このガイドは、初めての `definePlugin()` 呼び出しから admin 編集可能な設定パネル、そして npm 公開に至るまで、ampless プラグインを ship するために必要な手順を一通りカバーします。Phase 1〜4 の機能を網羅 — descriptor ベースの `<head>` / `<body>` / 投稿単位 body 注入、非同期イベントフック、admin 管理の `settings.public` 値です。
|
|
13
13
|
|
|
14
|
-
設計の経緯と背景は [`
|
|
14
|
+
設計の経緯と背景は [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture) に集約。本ページはその実装ハンドブック側です。
|
|
15
15
|
|
|
16
|
-
> **ポジショニング**: ampless はエンジニア向けのカスタマイズベース CMS です — プラグインは**サイトエンジニアが `cms.config.ts` でインポート + 設定する npm dep** です。エンジニアは他の npm ライブラリと同様にインストール前に各 dep を審査します(Astro integration / Next.js plugin パターン)。このガイドで説明する trust framework(`trust_level`、capabilities、IAM スコープ付き Lambda)は v1 において**ファーストパーティプラグインの code organization**として実装されています — どの trust 階層の Lambda が各イベントフックを実行するか、各階層が保有する IAM 権限、そして狭い範囲のポイントでのみ runtime hard gate を適用する(最も重要: `settings.secret` は `trust_level: 'trusted'` を要求、シークレット読み取りに trusted Lambda の IAM 権限が必要なため)。ほとんどの capability 宣言は runtime の hard gate ではなく soft warning + admin ラベル + 将来の allow-list surface です。任意の未審査サードパーティ untrusted プラグインを自動的に安全に動かすための marketplace-grade automatic sandbox としては**設計されていません**。マーケットプレイス + ランタイムサンドボックスは v2.0+ の探索であり、v1 の保証ではありません。詳細な trust model は [`
|
|
16
|
+
> **ポジショニング**: ampless はエンジニア向けのカスタマイズベース CMS です — プラグインは**サイトエンジニアが `cms.config.ts` でインポート + 設定する npm dep** です。エンジニアは他の npm ライブラリと同様にインストール前に各 dep を審査します(Astro integration / Next.js plugin パターン)。このガイドで説明する trust framework(`trust_level`、capabilities、IAM スコープ付き Lambda)は v1 において**ファーストパーティプラグインの code organization**として実装されています — どの trust 階層の Lambda が各イベントフックを実行するか、各階層が保有する IAM 権限、そして狭い範囲のポイントでのみ runtime hard gate を適用する(最も重要: `settings.secret` は `trust_level: 'trusted'` を要求、シークレット読み取りに trusted Lambda の IAM 権限が必要なため)。ほとんどの capability 宣言は runtime の hard gate ではなく soft warning + admin ラベル + 将来の allow-list surface です。任意の未審査サードパーティ untrusted プラグインを自動的に安全に動かすための marketplace-grade automatic sandbox としては**設計されていません**。マーケットプレイス + ランタイムサンドボックスは v2.0+ の探索であり、v1 の保証ではありません。詳細な trust model は [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#trust-model-v1-scope) を参照してください。
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -43,7 +43,7 @@ ampless はテーマとプラグインの両方を提供します。用途に合
|
|
|
43
43
|
- **ストレージ / DynamoDB / 外部 API 書き込みはプラグインに置く**。テーマは読み取り専用です。
|
|
44
44
|
- **admin が `/admin/plugins` からオン・オフしたい機能はプラグインに置く**。表面上の効果が純粋に見た目だけであっても同様です。テーマも独自の設定を持てますが、それはテーマ表示設定であり、サイト運用設定ではありません。
|
|
45
45
|
|
|
46
|
-
境界線上に本当に乗っている機能については [`
|
|
46
|
+
境界線上に本当に乗っている機能については [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture) で詳しく議論しています。
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
@@ -208,7 +208,7 @@ interface AmplessPlugin {
|
|
|
208
208
|
|
|
209
209
|
Phase 1 の compat-break reservation すべて(PR #220、#222、#230、#232、#234)は `apiVersion: 1` 内に収まります。これらをプラグインで declare するかどうかは契約バージョンに影響しません。
|
|
210
210
|
|
|
211
|
-
将来 `apiVersion: 2` が導入される場合は、changeset とこのガイドおよび architecture doc のセクション更新を通じてアナウンスされます。それまでは、**`apiVersion: 1` でプラグインを publish し、唯一の有効値として扱ってください**。v2 bump の trigger となるもの(ならないもの)の全基準については、architecture doc の [apiVersion bump policy](https://github.com/heavymoons/ampless/
|
|
211
|
+
将来 `apiVersion: 2` が導入される場合は、changeset とこのガイドおよび architecture doc のセクション更新を通じてアナウンスされます。それまでは、**`apiVersion: 1` でプラグインを publish し、唯一の有効値として扱ってください**。v2 bump の trigger となるもの(ならないもの)の全基準については、architecture doc の [apiVersion bump policy](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#apiversion-bump-policy) セクションを参照してください。
|
|
212
212
|
|
|
213
213
|
### `instanceId`
|
|
214
214
|
|
|
@@ -290,7 +290,7 @@ runtime がチェックする内容:
|
|
|
290
290
|
|
|
291
291
|
## 4. `trust_level` の選び方
|
|
292
292
|
|
|
293
|
-
trust 階層は v1 において**ファーストパーティプラグインの code organization**として実装されています — イベントフックがどの IAM スコープ付き Lambda で実行されるか、その Lambda が保有する権限を決定します。これはエンジニアが審査した npm dep 向けの code organization surface であり、任意のサードパーティ未審査プラグインを自動的に安全に動かすための marketplace-grade automatic sandbox ではありません(上記の[ポジショニング注記](#ampless-プラグインの書き方)と[詳細な trust model](https://github.com/heavymoons/ampless/
|
|
293
|
+
trust 階層は v1 において**ファーストパーティプラグインの code organization**として実装されています — イベントフックがどの IAM スコープ付き Lambda で実行されるか、その Lambda が保有する権限を決定します。これはエンジニアが審査した npm dep 向けの code organization surface であり、任意のサードパーティ未審査プラグインを自動的に安全に動かすための marketplace-grade automatic sandbox ではありません(上記の[ポジショニング注記](#ampless-プラグインの書き方)と[詳細な trust model](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#trust-model-v1-scope) を参照)。
|
|
294
294
|
|
|
295
295
|
3 階層、選択基準は **イベントフック (hooks) が何を必要とするか** で決まります (sync サーフェスは IAM に触れない):
|
|
296
296
|
|
|
@@ -632,7 +632,7 @@ hooks: {
|
|
|
632
632
|
|
|
633
633
|
`content.published` の発火を保存時ではなく `publishedAt` のタイミングに合わせる機能 — EventBridge Scheduler または DynamoDB TTL トリガー Lambda によるスケジューラーコンポーネントが必要 — は計画中の機能強化です。現リリースのスコープには含まれていません。それまでの間は上記のパターンが通知プラグインにおける推奨ガードです。
|
|
634
634
|
|
|
635
|
-
オペレーター視点からの `publishedAt` セマンティクスの全体像は [`
|
|
635
|
+
オペレーター視点からの `publishedAt` セマンティクスの全体像は [`scheduled-publishing`](https://github.com/heavymoons/ampless/wiki/scheduled-publishing.ja) を参照してください。
|
|
636
636
|
|
|
637
637
|
---
|
|
638
638
|
|
|
@@ -1190,7 +1190,7 @@ public/plugins/<instanceId ?? name>/<key>
|
|
|
1190
1190
|
### ベストプラクティス
|
|
1191
1191
|
|
|
1192
1192
|
- **冪等にする**。SQS は at-least-once 配送 — 同じイベントが 2 回 fire する可能性があります。同じ入力で同じ出力 (決定論的なフィード等) を生成するようにしてください
|
|
1193
|
-
- **宣言していない `event.payload.*` を読まない**。形は [`
|
|
1193
|
+
- **宣言していない `event.payload.*` を読まない**。形は [`architecture-05-event-system`](https://github.com/heavymoons/ampless/wiki/architecture-05-event-system) に文書化されています。形がドリフトすると暗黙の読み出しが silent に壊れます
|
|
1194
1194
|
- **エラーは DLQ に行く**。フック内で throw すると最終的にメッセージは dead-letter queue に届きます。失敗のサーフェスは通常の CloudWatch ダッシュボードで
|
|
1195
1195
|
|
|
1196
1196
|
---
|
|
@@ -1452,7 +1452,7 @@ admin は再デプロイなしにいつでも secret をローテーションで
|
|
|
1452
1452
|
|
|
1453
1453
|
**独自 DynamoDB テーブル。** プラグインが ampless スキーマ外に独自の DynamoDB テーブルを持つ場合、lifecycle 管理(アンインストール時の cleanup を含む)はプラグイン著者の責任です。ampless は外部テーブルを把握しておらず、将来の `uninstall` cleanup grant は上記 5 領域のみをカバーします。
|
|
1454
1454
|
|
|
1455
|
-
詳細な設計根拠と IAM grant 設計については [`
|
|
1455
|
+
詳細な設計根拠と IAM grant 設計については [`architecture-08-plugin-architecture.ja`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture.ja#プラグインが所有するデータ領域) を参照してください。
|
|
1456
1456
|
|
|
1457
1457
|
---
|
|
1458
1458
|
|
|
@@ -1671,7 +1671,7 @@ it('admin が空文字保存した場合は空配列', () => {
|
|
|
1671
1671
|
|
|
1672
1672
|
- **パッケージ名**: `@your-scope/plugin-foo`。`@ampless/plugin-*` スコープは本モノレポから ship する公式プラグイン用に予約
|
|
1673
1673
|
- **エントリ**: ESM のみ、default export (factory) + 設定インターフェイス (ユーザの `cms.config.ts` から型付きで引数を渡せるように) を export
|
|
1674
|
-
- **`apiVersion`**: 現状は `1` を declare してください — 唯一の有効値で、literal type が他の値を compile-time に reject します。`apiVersion` はプラグイン契約の **breaking-change marker** であって semver 風のチャンネルではありません。additive な追加 (optional field、reserved capability など) は `apiVersion: 1` 内に収まり、bump は不要です。詳細は architecture doc の [apiVersion bump policy](https://github.com/heavymoons/ampless/
|
|
1674
|
+
- **`apiVersion`**: 現状は `1` を declare してください — 唯一の有効値で、literal type が他の値を compile-time に reject します。`apiVersion` はプラグイン契約の **breaking-change marker** であって semver 風のチャンネルではありません。additive な追加 (optional field、reserved capability など) は `apiVersion: 1` 内に収まり、bump は不要です。詳細は architecture doc の [apiVersion bump policy](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#apiversion-bump-policy) を参照
|
|
1675
1675
|
- **Dist-tag**: ampless 自体が beta のうちは `@beta`。`@latest` は ampless v1.0 まで予約
|
|
1676
1676
|
|
|
1677
1677
|
参考実装:
|
|
@@ -1785,7 +1785,7 @@ export default defineConfig({
|
|
|
1785
1785
|
|
|
1786
1786
|
## 15. 質問先
|
|
1787
1787
|
|
|
1788
|
-
- アーキテクチャ / 設計の質問 → [`
|
|
1788
|
+
- アーキテクチャ / 設計の質問 → [`architecture-08-plugin-architecture.ja`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture.ja)
|
|
1789
1789
|
- ファーストパーティプラグインの bug → `heavymoons/ampless` にプラグインの package 名つきで issue
|
|
1790
1790
|
- プラグインランタイム / admin form の bug → 同じレポ、ラベル `area:plugins`
|
|
1791
1791
|
|
|
@@ -16,10 +16,10 @@ Phase 1–4 surfaces — descriptor-based `<head>` / `<body>` /
|
|
|
16
16
|
per-post body injection, the async event hooks, and admin-managed
|
|
17
17
|
`settings.public` values.
|
|
18
18
|
|
|
19
|
-
The design rationale is in [`
|
|
19
|
+
The design rationale is in [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture);
|
|
20
20
|
this page is the hands-on companion.
|
|
21
21
|
|
|
22
|
-
> **Positioning**: ampless is a customization-based CMS for engineers — plugins are **npm dependencies that the site engineer imports + configures in `cms.config.ts`**. The engineer audits each dep before installing, the way they would for any other npm library (Astro integration / Next.js plugin pattern). The trust framework described in this guide (`trust_level`, capabilities, IAM-scoped Lambdas) is implemented in v1 as **first-party plugin organization** — it decides which trust tier's Lambda runs each event hook, which IAM permissions each tier holds, and applies hard runtime gates only at narrowly-scoped points (most notably: `settings.secret` requires `trust_level: 'trusted'` because secret read needs the trusted Lambda's IAM permission). Most capability declarations are soft warnings + admin labels + future allow-list surfaces, not hard runtime gates. It is **not** designed as a marketplace-grade automatic sandbox that safely runs arbitrary untrusted third-party plugins. Marketplace + runtime sandbox is a v2.0+ exploration, not a v1 guarantee. See [`
|
|
22
|
+
> **Positioning**: ampless is a customization-based CMS for engineers — plugins are **npm dependencies that the site engineer imports + configures in `cms.config.ts`**. The engineer audits each dep before installing, the way they would for any other npm library (Astro integration / Next.js plugin pattern). The trust framework described in this guide (`trust_level`, capabilities, IAM-scoped Lambdas) is implemented in v1 as **first-party plugin organization** — it decides which trust tier's Lambda runs each event hook, which IAM permissions each tier holds, and applies hard runtime gates only at narrowly-scoped points (most notably: `settings.secret` requires `trust_level: 'trusted'` because secret read needs the trusted Lambda's IAM permission). Most capability declarations are soft warnings + admin labels + future allow-list surfaces, not hard runtime gates. It is **not** designed as a marketplace-grade automatic sandbox that safely runs arbitrary untrusted third-party plugins. Marketplace + runtime sandbox is a v2.0+ exploration, not a v1 guarantee. See [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#trust-model-v1-scope) for the full trust model.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -56,7 +56,7 @@ The two boundaries that frequently catch new authors:
|
|
|
56
56
|
carry their own settings, but those are theme-display settings, not
|
|
57
57
|
site-operational ones.
|
|
58
58
|
|
|
59
|
-
Some features genuinely sit at the boundary — see [`
|
|
59
|
+
Some features genuinely sit at the boundary — see [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture)
|
|
60
60
|
for the longer discussion.
|
|
61
61
|
|
|
62
62
|
---
|
|
@@ -250,7 +250,7 @@ If a future `apiVersion: 2` is ever introduced, it will be announced
|
|
|
250
250
|
through a changeset and a section update in this guide and the
|
|
251
251
|
architecture doc. Until then, **publish your plugin with
|
|
252
252
|
`apiVersion: 1` and treat it as the only valid value**. See the
|
|
253
|
-
[apiVersion bump policy](https://github.com/heavymoons/ampless/
|
|
253
|
+
[apiVersion bump policy](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#apiversion-bump-policy)
|
|
254
254
|
section in the architecture doc for the full criteria around what
|
|
255
255
|
would (and would not) trigger a v2 bump.
|
|
256
256
|
|
|
@@ -361,7 +361,7 @@ not a runtime block.
|
|
|
361
361
|
|
|
362
362
|
## 4. Picking a `trust_level`
|
|
363
363
|
|
|
364
|
-
The trust tiers are implemented in v1 as **first-party plugin organization** — they decide which IAM-scoped Lambda runs your event hooks and which permissions that Lambda holds. This is a code organization surface for engineer-audited npm deps, not a marketplace-grade automatic sandbox for arbitrary third-party untrusted plugins (see the [Positioning note](#writing-an-ampless-plugin) above and the [full trust model](https://github.com/heavymoons/ampless/
|
|
364
|
+
The trust tiers are implemented in v1 as **first-party plugin organization** — they decide which IAM-scoped Lambda runs your event hooks and which permissions that Lambda holds. This is a code organization surface for engineer-audited npm deps, not a marketplace-grade automatic sandbox for arbitrary third-party untrusted plugins (see the [Positioning note](#writing-an-ampless-plugin) above and the [full trust model](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#trust-model-v1-scope)).
|
|
365
365
|
|
|
366
366
|
Three tiers, picked by what the plugin needs to do **inside
|
|
367
367
|
event hooks** (the sync surfaces — metadata, head, body — don't
|
|
@@ -833,7 +833,7 @@ current release. Until then, the pattern above is the recommended
|
|
|
833
833
|
guard for notification plugins.
|
|
834
834
|
|
|
835
835
|
For a full description of `publishedAt` semantics from the operator's
|
|
836
|
-
perspective, see [`
|
|
836
|
+
perspective, see [`scheduled-publishing`](https://github.com/heavymoons/ampless/wiki/scheduled-publishing).
|
|
837
837
|
|
|
838
838
|
---
|
|
839
839
|
|
|
@@ -1610,7 +1610,7 @@ keep working. Plugins that do declare `capabilities` but omit
|
|
|
1610
1610
|
may fire twice. Writing the same output twice should produce the
|
|
1611
1611
|
same effect (e.g. a deterministic feed).
|
|
1612
1612
|
- **Don't read events.payload.\* fields you didn't declare.** The
|
|
1613
|
-
shape is documented in [`
|
|
1613
|
+
shape is documented in [`architecture-05-event-system`](https://github.com/heavymoons/ampless/wiki/architecture-05-event-system);
|
|
1614
1614
|
drifting consumers break silently when the shape moves.
|
|
1615
1615
|
- **Errors propagate to DLQ.** Throwing inside a hook eventually
|
|
1616
1616
|
parks the message in the dead-letter queue. Use the normal
|
|
@@ -2013,7 +2013,7 @@ outside the ampless schema, lifecycle management (including cleanup on uninstall
|
|
|
2013
2013
|
is your responsibility. ampless has no visibility into external tables and the
|
|
2014
2014
|
future `uninstall` cleanup grants cover only the five areas above.
|
|
2015
2015
|
|
|
2016
|
-
See [`
|
|
2016
|
+
See [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#plugin-owned-data-areas)
|
|
2017
2017
|
for the full rationale and the IAM grant design.
|
|
2018
2018
|
|
|
2019
2019
|
---
|
|
@@ -2294,7 +2294,7 @@ a normal npm package:
|
|
|
2294
2294
|
contract, not a semver-style channel: additive changes (new
|
|
2295
2295
|
optional fields, new reserved capabilities) stay within
|
|
2296
2296
|
`apiVersion: 1` and do NOT require a bump. See the [apiVersion
|
|
2297
|
-
bump policy](https://github.com/heavymoons/ampless/
|
|
2297
|
+
bump policy](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture#apiversion-bump-policy)
|
|
2298
2298
|
in the architecture doc for the full criteria.
|
|
2299
2299
|
- **Dist-tag**: `@beta` while ampless itself is in beta. The
|
|
2300
2300
|
`@latest` tag stays reserved until ampless v1.0.
|
|
@@ -2452,7 +2452,7 @@ PROTECTED), so the scaffolded code is safe across ampless upgrades.
|
|
|
2452
2452
|
|
|
2453
2453
|
## 15. Where to ask
|
|
2454
2454
|
|
|
2455
|
-
- Architecture / design questions → [`
|
|
2455
|
+
- Architecture / design questions → [`architecture-08-plugin-architecture`](https://github.com/heavymoons/ampless/wiki/architecture-08-plugin-architecture)
|
|
2456
2456
|
- Bugs in a first-party plugin → file an issue against
|
|
2457
2457
|
`heavymoons/ampless` referencing the plugin's package name.
|
|
2458
2458
|
- Bugs in the plugin runtime / admin form → same repo, label
|
|
@@ -20,28 +20,28 @@
|
|
|
20
20
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
21
21
|
"@radix-ui/react-label": "^2.1.8",
|
|
22
22
|
"@radix-ui/react-slot": "^1.2.4",
|
|
23
|
-
"@tiptap/core": "^3.
|
|
24
|
-
"@tiptap/extension-image": "^3.
|
|
25
|
-
"@tiptap/extension-link": "^3.
|
|
26
|
-
"@tiptap/pm": "^3.
|
|
27
|
-
"@tiptap/react": "^3.
|
|
28
|
-
"@tiptap/starter-kit": "^3.
|
|
29
|
-
"@ampless/plugin-ai-actions": "^0.1.0-beta.
|
|
30
|
-
"@ampless/plugin-analytics-ga4": "^0.2.0-beta.
|
|
31
|
-
"@ampless/plugin-cookie-consent": "^0.1.0-beta.
|
|
32
|
-
"@ampless/plugin-gtm": "^0.2.0-beta.
|
|
33
|
-
"@ampless/plugin-og-image": "^0.2.0-beta.
|
|
34
|
-
"@ampless/plugin-plausible": "^0.2.0-beta.
|
|
35
|
-
"@ampless/plugin-reading-time": "^0.1.0-beta.
|
|
36
|
-
"@ampless/plugin-rss": "^0.2.0-beta.
|
|
37
|
-
"@ampless/plugin-schema-jsonld": "^0.1.1-beta.
|
|
38
|
-
"@ampless/plugin-seo": "^0.2.0-beta.
|
|
39
|
-
"@ampless/plugin-webhook": "^0.2.0-beta.
|
|
40
|
-
"@ampless/admin": "^1.0.0-beta.
|
|
41
|
-
"@ampless/backend": "^1.0.0-beta.
|
|
42
|
-
"@ampless/runtime": "^1.0.0-beta.
|
|
23
|
+
"@tiptap/core": "^3.30.5",
|
|
24
|
+
"@tiptap/extension-image": "^3.30.5",
|
|
25
|
+
"@tiptap/extension-link": "^3.30.5",
|
|
26
|
+
"@tiptap/pm": "^3.30.5",
|
|
27
|
+
"@tiptap/react": "^3.30.5",
|
|
28
|
+
"@tiptap/starter-kit": "^3.30.5",
|
|
29
|
+
"@ampless/plugin-ai-actions": "^0.1.0-beta.7",
|
|
30
|
+
"@ampless/plugin-analytics-ga4": "^0.2.0-beta.47",
|
|
31
|
+
"@ampless/plugin-cookie-consent": "^0.1.0-beta.38",
|
|
32
|
+
"@ampless/plugin-gtm": "^0.2.0-beta.46",
|
|
33
|
+
"@ampless/plugin-og-image": "^0.2.0-beta.63",
|
|
34
|
+
"@ampless/plugin-plausible": "^0.2.0-beta.46",
|
|
35
|
+
"@ampless/plugin-reading-time": "^0.1.0-beta.37",
|
|
36
|
+
"@ampless/plugin-rss": "^0.2.0-beta.63",
|
|
37
|
+
"@ampless/plugin-schema-jsonld": "^0.1.1-beta.42",
|
|
38
|
+
"@ampless/plugin-seo": "^0.2.0-beta.63",
|
|
39
|
+
"@ampless/plugin-webhook": "^0.2.0-beta.64",
|
|
40
|
+
"@ampless/admin": "^1.0.0-beta.113",
|
|
41
|
+
"@ampless/backend": "^1.0.0-beta.93",
|
|
42
|
+
"@ampless/runtime": "^1.0.0-beta.78",
|
|
43
43
|
"@digital-go-jp/tailwind-theme-plugin": "^0.3.4",
|
|
44
|
-
"ampless": "^1.0.0-beta.
|
|
44
|
+
"ampless": "^1.0.0-beta.63",
|
|
45
45
|
"aws-amplify": "^6.17.0",
|
|
46
46
|
"class-variance-authority": "^0.7.1",
|
|
47
47
|
"clsx": "^2.1.1",
|