@aotter/mantle 0.1.0-alpha.13 → 0.1.0-alpha.14
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/docs/adapter-guide.md
CHANGED
|
@@ -106,6 +106,15 @@ optional `/libsql` subpath adapts a caller-owned remote Turso/libSQL client to
|
|
|
106
106
|
the canonical SQLite chain; the default entry has no database-vendor policy.
|
|
107
107
|
Vercel's read-only filesystem and writable `/tmp` are never durable state.
|
|
108
108
|
|
|
109
|
+
### Browser IndexedDB embedding
|
|
110
|
+
|
|
111
|
+
`@aotter/mantle-indexeddb` implements the same required semantic storage ports
|
|
112
|
+
over one application-owned IndexedDB database. It keeps browser globals out of
|
|
113
|
+
Runtime Core, supports declarative Views with a documented O(n) collection
|
|
114
|
+
scan, and exposes `deleteDatabase()` only on the concrete adapter. The host owns
|
|
115
|
+
database naming, `navigator.storage` persistence requests, active-runtime
|
|
116
|
+
selection, UI invalidation, and any remote synchronization.
|
|
117
|
+
|
|
109
118
|
## HTTP and MCP surfaces
|
|
110
119
|
|
|
111
120
|
The runtime is a library, not an HTTP server. A new adapter must mount equivalent framework routes:
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
**Status:** Accepted
|
|
4
4
|
|
|
5
|
-
**Date:** 2026-08-16; last amended 2026-
|
|
5
|
+
**Date:** 2026-08-16; last amended 2026-09-01
|
|
6
6
|
|
|
7
7
|
**Related:** [#656](https://github.com/aotter/mantle/issues/656),
|
|
8
8
|
[#662](https://github.com/aotter/mantle/issues/662),
|
|
9
|
+
[#759](https://github.com/aotter/mantle/issues/759),
|
|
10
|
+
[#760](https://github.com/aotter/mantle/issues/760),
|
|
9
11
|
[#546](https://github.com/aotter/mantle/issues/546), ADR-0008, ADR-0009,
|
|
10
12
|
ADR-0011, ADR-0018
|
|
11
13
|
|
|
@@ -106,6 +108,15 @@ Concrete D1/SQLite drivers and SQL repositories remain implementation details.
|
|
|
106
108
|
An existing application may either pass its already-owned database/client to
|
|
107
109
|
an official adapter or implement the semantic ports over its own tables.
|
|
108
110
|
|
|
111
|
+
`@aotter/mantle-indexeddb` is the optional browser storage implementation of
|
|
112
|
+
the same semantic ports. One adapter exclusively owns one application-selected
|
|
113
|
+
database name, uses structured-clone persistence and IndexedDB transaction
|
|
114
|
+
completion as its write boundary, and exposes database deletion only on the
|
|
115
|
+
concrete adapter. Runtime Core gains no browser global, browser facade,
|
|
116
|
+
namespace, persistence request, reactive binding, or synchronization port.
|
|
117
|
+
Declarative browser Views use a documented O(n) scan until measured use proves
|
|
118
|
+
an IndexedDB query planner necessary.
|
|
119
|
+
|
|
109
120
|
Declarative Views compile to logical plans once. Storage preparation lowers
|
|
110
121
|
those plans to native queries. The v0.1 `View.spec.sql` form remains explicitly
|
|
111
122
|
SQLite-only and is rejected by unsupported storage during preparation; Mantle
|
|
@@ -123,11 +134,18 @@ select a surface and bind transport or browser lifecycle, but do not rescan raw
|
|
|
123
134
|
manifests or maintain a second registry.
|
|
124
135
|
|
|
125
136
|
`@aotter/mantle-web/webmcp` is an opt-in host binding over that projection. It
|
|
126
|
-
feature-detects `document.modelContext`,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
137
|
+
feature-detects `document.modelContext`, adds public capabilities without
|
|
138
|
+
replacing existing host tools, and uses the registration `AbortSignal` only for
|
|
139
|
+
teardown. A browser-local host supplies the projected capabilities and a
|
|
140
|
+
late-bound invoker; Procedure calls retain their explicit MCP Trigger identity.
|
|
141
|
+
For a server-backed host, the Cloudflare adapter publishes a minimal public View
|
|
142
|
+
catalog at `GET /api/views`; the binding validates that wire catalog and invokes
|
|
143
|
+
the existing same-origin `GET /api/views/<name>` route. The catalog contains no
|
|
144
|
+
raw manifest or staff capability.
|
|
145
|
+
Invocation hooks may drive host UI effects but cannot replace Runtime
|
|
146
|
+
validation, authorization, dispatch, or domain results. The binding does not
|
|
147
|
+
add browser globals to Runtime Core, expose staff capabilities, or introduce a
|
|
148
|
+
second manifest/runtime path.
|
|
131
149
|
|
|
132
150
|
### Naming and code generation
|
|
133
151
|
|
package/docs/release-process.md
CHANGED
|
@@ -121,17 +121,18 @@ gh api --method POST repos/aotter/mantle/releases/generate-notes \
|
|
|
121
121
|
--jq .body
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
The
|
|
124
|
+
The ten public packages publish in dependency order:
|
|
125
125
|
|
|
126
126
|
1. `@aotter/mantle-spec`
|
|
127
127
|
2. `@aotter/mantle-admin-ui`
|
|
128
128
|
3. `@aotter/mantle-runtime`
|
|
129
|
-
4. `@aotter/mantle-
|
|
130
|
-
5. `@aotter/mantle-
|
|
131
|
-
6. `@aotter/mantle-
|
|
132
|
-
7. `@aotter/mantle-
|
|
133
|
-
8. `@aotter/mantle-
|
|
134
|
-
9. `@aotter/mantle`
|
|
129
|
+
4. `@aotter/mantle-indexeddb`
|
|
130
|
+
5. `@aotter/mantle-web`
|
|
131
|
+
6. `@aotter/mantle-admin`
|
|
132
|
+
7. `@aotter/mantle-bun`
|
|
133
|
+
8. `@aotter/mantle-vercel`
|
|
134
|
+
9. `@aotter/mantle-cloudflare`
|
|
135
|
+
10. `@aotter/mantle`
|
|
135
136
|
|
|
136
137
|
The umbrella package must contain its version-matched `docs/` and `skills/`
|
|
137
138
|
payload. No tarball may contain `workspace:*` dependencies, secrets, local
|
|
@@ -156,7 +157,7 @@ Before creating the Core tag, the controller proves:
|
|
|
156
157
|
- the requested version matches every package, plugin, and marketplace ref;
|
|
157
158
|
- `pnpm check` passes;
|
|
158
159
|
- packed Core passes in the exact pinned Starter source;
|
|
159
|
-
- all
|
|
160
|
+
- all ten release tarballs exist;
|
|
160
161
|
- npm and cross-repository credentials are present and readable;
|
|
161
162
|
- a fresh version is unused across npmjs, GitHub Packages, and Starter tags;
|
|
162
163
|
- the pinned Starter commit is still the remote `develop` tip.
|
|
@@ -194,7 +195,7 @@ Core repository secrets:
|
|
|
194
195
|
|
|
195
196
|
| Secret | Minimum purpose |
|
|
196
197
|
|---|---|
|
|
197
|
-
| `NPM_TOKEN` | Publish the
|
|
198
|
+
| `NPM_TOKEN` | Publish the ten `@aotter/*` packages on npmjs. |
|
|
198
199
|
| `RELEASE_FANOUT_TOKEN` | Read and dispatch `aotter/mantle-starters`; also read and dispatch `aotter/mantle-landing` only when Landing is enabled. |
|
|
199
200
|
|
|
200
201
|
Core's job-scoped `GITHUB_TOKEN` creates the Core tag and release and mirrors
|
|
@@ -217,6 +218,7 @@ for p in \
|
|
|
217
218
|
@aotter/mantle-spec \
|
|
218
219
|
@aotter/mantle-admin-ui \
|
|
219
220
|
@aotter/mantle-runtime \
|
|
221
|
+
@aotter/mantle-indexeddb \
|
|
220
222
|
@aotter/mantle-web \
|
|
221
223
|
@aotter/mantle-admin \
|
|
222
224
|
@aotter/mantle-bun \
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.14",
|
|
4
4
|
"description": "Embeddable Mantle Core umbrella with Spec and Runtime; Web, Admin, Bun, Vercel, Cloudflare, and Admin UI are optional peer packages.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://mantle.tools/",
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"README.md"
|
|
84
84
|
],
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@aotter/mantle-
|
|
87
|
-
"@aotter/mantle-
|
|
86
|
+
"@aotter/mantle-spec": "0.1.0-alpha.14",
|
|
87
|
+
"@aotter/mantle-runtime": "0.1.0-alpha.14"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"aws4fetch": "^1.0.20",
|
|
@@ -92,12 +92,12 @@
|
|
|
92
92
|
"hono": "^4.12.0",
|
|
93
93
|
"@libsql/client": "^0.17.4",
|
|
94
94
|
"zod": "^4.5.0",
|
|
95
|
-
"@aotter/mantle-admin": "0.1.0-alpha.
|
|
96
|
-
"@aotter/mantle-
|
|
97
|
-
"@aotter/mantle-
|
|
98
|
-
"@aotter/mantle-
|
|
99
|
-
"@aotter/mantle-
|
|
100
|
-
"@aotter/mantle-
|
|
95
|
+
"@aotter/mantle-admin-ui": "0.1.0-alpha.14",
|
|
96
|
+
"@aotter/mantle-cloudflare": "0.1.0-alpha.14",
|
|
97
|
+
"@aotter/mantle-vercel": "0.1.0-alpha.14",
|
|
98
|
+
"@aotter/mantle-web": "0.1.0-alpha.14",
|
|
99
|
+
"@aotter/mantle-admin": "0.1.0-alpha.14",
|
|
100
|
+
"@aotter/mantle-bun": "0.1.0-alpha.14"
|
|
101
101
|
},
|
|
102
102
|
"peerDependenciesMeta": {
|
|
103
103
|
"@aotter/mantle-admin": {
|
|
@@ -140,12 +140,12 @@
|
|
|
140
140
|
"typescript": "^6.0.3",
|
|
141
141
|
"vitest": "^4.1.10",
|
|
142
142
|
"zod": "^4.5.4",
|
|
143
|
-
"@aotter/mantle-admin
|
|
144
|
-
"@aotter/mantle-
|
|
145
|
-
"@aotter/mantle-
|
|
146
|
-
"@aotter/mantle-
|
|
147
|
-
"@aotter/mantle-vercel": "0.1.0-alpha.
|
|
148
|
-
"@aotter/mantle-web": "0.1.0-alpha.
|
|
143
|
+
"@aotter/mantle-admin": "0.1.0-alpha.14",
|
|
144
|
+
"@aotter/mantle-admin-ui": "0.1.0-alpha.14",
|
|
145
|
+
"@aotter/mantle-bun": "0.1.0-alpha.14",
|
|
146
|
+
"@aotter/mantle-cloudflare": "0.1.0-alpha.14",
|
|
147
|
+
"@aotter/mantle-vercel": "0.1.0-alpha.14",
|
|
148
|
+
"@aotter/mantle-web": "0.1.0-alpha.14"
|
|
149
149
|
},
|
|
150
150
|
"engines": {
|
|
151
151
|
"node": ">=22"
|