@aotter/mantle 0.1.0-alpha.12 → 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
|
@@ -99,15 +99,17 @@ rollback or unpublish behavior, or deploy Landing unless
|
|
|
99
99
|
3. Set that exact version in every workspace package and in all four agent
|
|
100
100
|
plugin manifests. Set `.agents/plugins/marketplace.json` to the immutable
|
|
101
101
|
`v<version>` ref.
|
|
102
|
-
4. Pin
|
|
103
|
-
`mantle-
|
|
104
|
-
branch, latest tag, or inferred
|
|
102
|
+
4. Pin the controller to the exact reviewed `mantle-starters/develop` and
|
|
103
|
+
`mantle-landing/develop` commits intended for this release, and Core CI to
|
|
104
|
+
the same Starter commit. Do not use a branch, latest tag, or inferred
|
|
105
|
+
fallback.
|
|
105
106
|
5. If an SDK type changed, audit downstream literal constructors and exhaustive
|
|
106
107
|
switches before publication. CI in Core cannot prove downstream source
|
|
107
108
|
compatibility by itself.
|
|
108
109
|
6. Run `pnpm check`, inspect the packed umbrella package, and run the exact
|
|
109
|
-
packed-consumer
|
|
110
|
-
|
|
110
|
+
packed-consumer gates against both pinned Starter and Landing commits before
|
|
111
|
+
tagging. Review and merge a same-repository PR into `develop`; the
|
|
112
|
+
controller rejects a direct-push release commit.
|
|
111
113
|
|
|
112
114
|
Preview the native notes before merging the release PR:
|
|
113
115
|
|
|
@@ -119,17 +121,18 @@ gh api --method POST repos/aotter/mantle/releases/generate-notes \
|
|
|
119
121
|
--jq .body
|
|
120
122
|
```
|
|
121
123
|
|
|
122
|
-
The
|
|
124
|
+
The ten public packages publish in dependency order:
|
|
123
125
|
|
|
124
126
|
1. `@aotter/mantle-spec`
|
|
125
127
|
2. `@aotter/mantle-admin-ui`
|
|
126
128
|
3. `@aotter/mantle-runtime`
|
|
127
|
-
4. `@aotter/mantle-
|
|
128
|
-
5. `@aotter/mantle-
|
|
129
|
-
6. `@aotter/mantle-
|
|
130
|
-
7. `@aotter/mantle-
|
|
131
|
-
8. `@aotter/mantle-
|
|
132
|
-
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`
|
|
133
136
|
|
|
134
137
|
The umbrella package must contain its version-matched `docs/` and `skills/`
|
|
135
138
|
payload. No tarball may contain `workspace:*` dependencies, secrets, local
|
|
@@ -154,7 +157,7 @@ Before creating the Core tag, the controller proves:
|
|
|
154
157
|
- the requested version matches every package, plugin, and marketplace ref;
|
|
155
158
|
- `pnpm check` passes;
|
|
156
159
|
- packed Core passes in the exact pinned Starter source;
|
|
157
|
-
- all
|
|
160
|
+
- all ten release tarballs exist;
|
|
158
161
|
- npm and cross-repository credentials are present and readable;
|
|
159
162
|
- a fresh version is unused across npmjs, GitHub Packages, and Starter tags;
|
|
160
163
|
- the pinned Starter commit is still the remote `develop` tip.
|
|
@@ -192,7 +195,7 @@ Core repository secrets:
|
|
|
192
195
|
|
|
193
196
|
| Secret | Minimum purpose |
|
|
194
197
|
|---|---|
|
|
195
|
-
| `NPM_TOKEN` | Publish the
|
|
198
|
+
| `NPM_TOKEN` | Publish the ten `@aotter/*` packages on npmjs. |
|
|
196
199
|
| `RELEASE_FANOUT_TOKEN` | Read and dispatch `aotter/mantle-starters`; also read and dispatch `aotter/mantle-landing` only when Landing is enabled. |
|
|
197
200
|
|
|
198
201
|
Core's job-scoped `GITHUB_TOKEN` creates the Core tag and release and mirrors
|
|
@@ -215,6 +218,7 @@ for p in \
|
|
|
215
218
|
@aotter/mantle-spec \
|
|
216
219
|
@aotter/mantle-admin-ui \
|
|
217
220
|
@aotter/mantle-runtime \
|
|
221
|
+
@aotter/mantle-indexeddb \
|
|
218
222
|
@aotter/mantle-web \
|
|
219
223
|
@aotter/mantle-admin \
|
|
220
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-web": "0.1.0-alpha.
|
|
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-admin": "0.1.0-alpha.
|
|
145
|
-
"@aotter/mantle-bun": "0.1.0-alpha.
|
|
146
|
-
"@aotter/mantle-cloudflare": "0.1.0-alpha.
|
|
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"
|