@aeptus/aexeo-emdash 0.8.18 → 0.8.19
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/CHANGELOG.md +104 -6
- package/INSTALL.md +13 -4
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/dist/adapter.d.ts +0 -0
- package/dist/adapter.d.ts.map +0 -0
- package/dist/admin/Absorbability.d.ts +0 -0
- package/dist/admin/Absorbability.d.ts.map +0 -0
- package/dist/admin/Accessibility.d.ts +0 -0
- package/dist/admin/Accessibility.d.ts.map +0 -0
- package/dist/admin/Citability.d.ts +0 -0
- package/dist/admin/Citability.d.ts.map +0 -0
- package/dist/admin/EntityLegitimacy.d.ts +0 -0
- package/dist/admin/EntityLegitimacy.d.ts.map +0 -0
- package/dist/admin/EntityPresence.d.ts +0 -0
- package/dist/admin/EntityPresence.d.ts.map +0 -0
- package/dist/admin/Facts.d.ts +0 -0
- package/dist/admin/Facts.d.ts.map +0 -0
- package/dist/admin/Findings.d.ts +0 -0
- package/dist/admin/Findings.d.ts.map +0 -0
- package/dist/admin/PillarView.d.ts +0 -0
- package/dist/admin/PillarView.d.ts.map +0 -0
- package/dist/admin/Retrievability.d.ts +0 -0
- package/dist/admin/Retrievability.d.ts.map +0 -0
- package/dist/admin.d.ts +0 -0
- package/dist/admin.d.ts.map +0 -0
- package/dist/admin.js +0 -0
- package/dist/configured.d.ts +0 -0
- package/dist/configured.d.ts.map +1 -1
- package/dist/configured.js +331 -283
- package/dist/data-route.d.ts +0 -0
- package/dist/data-route.d.ts.map +0 -0
- package/dist/evaluator-sandbox.d.ts +0 -0
- package/dist/evaluator-sandbox.d.ts.map +0 -0
- package/dist/evaluator.d.ts +0 -0
- package/dist/evaluator.d.ts.map +0 -0
- package/dist/facts-route.d.ts +0 -0
- package/dist/facts-route.d.ts.map +0 -0
- package/dist/findings-view.d.ts +136 -0
- package/dist/findings-view.d.ts.map +1 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +13 -2
- package/dist/plugin.d.ts +22 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/presence-check.d.ts +0 -0
- package/dist/presence-check.d.ts.map +0 -0
- package/dist/presence-route.d.ts +0 -0
- package/dist/presence-route.d.ts.map +0 -0
- package/dist/sandbox-entry.d.ts +2 -22
- package/dist/sandbox-entry.d.ts.map +1 -1
- package/dist/sandbox-entry.js +410 -353
- package/dist/sandbox.d.ts +2 -0
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sidecar-url.d.ts +18 -0
- package/dist/sidecar-url.d.ts.map +1 -0
- package/dist/sidecar.d.ts +0 -0
- package/dist/sidecar.d.ts.map +0 -0
- package/dist/suppressions.d.ts +0 -0
- package/dist/suppressions.d.ts.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +0 -0
- package/dist/wasm-init.d.ts +0 -0
- package/dist/wasm-init.d.ts.map +0 -0
- package/package.json +4 -2
- package/wasm/aexeo_emdash_bridge.d.ts +0 -0
- package/wasm/aexeo_emdash_bridge.js +0 -0
- package/wasm/aexeo_emdash_bridge_bg.d.ts +0 -0
- package/wasm/aexeo_emdash_bridge_bg.js +0 -0
- package/wasm/aexeo_emdash_bridge_bg.wasm +0 -0
- package/wasm/aexeo_emdash_bridge_bg.wasm.d.ts +0 -0
- package/dist/indexnow.d.ts +0 -15
- package/dist/indexnow.d.ts.map +0 -1
- package/dist/mcp.d.ts +0 -28
- package/dist/mcp.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,16 +4,73 @@ All notable changes to `@aeptus/aexeo-emdash` are listed here.
|
|
|
4
4
|
The format follows [Keep a Changelog](https://keepachangelog.com/),
|
|
5
5
|
and the project follows [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
-
## [
|
|
8
|
-
|
|
9
|
-
## [0.8.18] - 2026-09-27
|
|
7
|
+
## [0.8.19] - 2026-09-29
|
|
10
8
|
|
|
11
|
-
Updates the EmDash integration to the current plugin and content APIs
|
|
9
|
+
Updates the EmDash integration to the current plugin and content APIs, and
|
|
10
|
+
closes three security findings. Everything since 0.8.18 ships in this one
|
|
11
|
+
version, since 0.8.19 had never been published.
|
|
12
12
|
|
|
13
13
|
**Compatibility target:** EmDash `>=0.41.0 <0.42.0`.
|
|
14
14
|
|
|
15
|
+
### Security
|
|
16
|
+
|
|
17
|
+
- **EVAL_TOKEN is stored through the host's encrypted plugin settings.**
|
|
18
|
+
The sidecar bearer token was written as plaintext into the plugin's KV
|
|
19
|
+
namespace. EmDash provides `PluginContext.settings` with host-side
|
|
20
|
+
encryption for fields declared `type: "secret"` in a plugin's
|
|
21
|
+
`settingsSchema`, which is exactly this case; the descriptor now declares
|
|
22
|
+
that schema and the token is written there. Installs that predate the
|
|
23
|
+
change have their plaintext KV copy deleted on the next write, so the
|
|
24
|
+
credential is not sitting in the database twice. Hosts without
|
|
25
|
+
`EMDASH_ENCRYPTION_KEY` configured fall back to the previous KV path with
|
|
26
|
+
a warning that names the missing environment variable and never the
|
|
27
|
+
token, so the Setup page keeps working instead of failing closed.
|
|
28
|
+
- **Sidecar URL validation is allowlist-backed and HTTPS-only.**
|
|
29
|
+
`handleSetupSubmit` accepted `http:`, which sent the bearer token in
|
|
30
|
+
cleartext, and rejected only `localhost` and `127.*` — leaving
|
|
31
|
+
`0.0.0.0`, `[::1]`, RFC1918, CGNAT, and the `169.254.169.254` cloud
|
|
32
|
+
metadata address reachable. It now requires HTTPS, rejects the private,
|
|
33
|
+
loopback, link-local, multicast, and IPv4-mapped-IPv6 ranges, and
|
|
34
|
+
compares the submitted host against the `allowedHosts` list the plugin
|
|
35
|
+
already computes at build time, so the form cannot store a URL the
|
|
36
|
+
plugin's own allowlist would reject later.
|
|
37
|
+
- **Unauthenticated crawl-artifact routes removed from
|
|
38
|
+
`packages/aexeo-crawl-worker`.** `GET /findings/latest` returned the full
|
|
39
|
+
body of the customer's `aexeo-cli crawl` artifact and
|
|
40
|
+
`GET /findings/list` returned R2 key names, timestamps, and sizes.
|
|
41
|
+
Neither was behind the bearer-token check that guarded `/evaluate`, and
|
|
42
|
+
neither had any caller in this repository. CORS is not access control, so
|
|
43
|
+
anyone who learned the worker hostname could read the whole crawl
|
|
44
|
+
artifact. Both routes, the R2 binding, and the `examples/github-actions.yml`
|
|
45
|
+
R2 upload workflow that existed only to feed them are gone.
|
|
46
|
+
|
|
47
|
+
### Removed
|
|
48
|
+
|
|
49
|
+
- **`src/mcp.ts` and `src/indexnow.ts`.** Both were unreachable. The host
|
|
50
|
+
reads `PluginDefinition.mcp` as a `Record` of tool definitions keyed by
|
|
51
|
+
name; the code attached an `mcpTools` array with a different container and
|
|
52
|
+
a different per-entry shape, and `configured.ts` never attached it at
|
|
53
|
+
all. No MCP tool this package offered could ever have been invoked.
|
|
54
|
+
|
|
15
55
|
### Fixed
|
|
16
56
|
|
|
57
|
+
- **Suppressions ignored by the Block Kit Refresh button.** In configured
|
|
58
|
+
mode the /findings "Refresh" button called the sweep without the
|
|
59
|
+
compiled `suppressionFilter`, so it re-persisted findings the editor
|
|
60
|
+
had explicitly silenced. The React `/refresh` route always applied
|
|
61
|
+
them, so the two surfaces disagreed and the documented guarantee
|
|
62
|
+
("suppressed findings never reach the dashboard, /findings, or the
|
|
63
|
+
per-document panel") did not hold on the Block Kit path.
|
|
64
|
+
Root cause: `configured.ts` and `sandbox-entry.ts` each carried their
|
|
65
|
+
own near-verbatim copy of the interaction normalizer, the findings
|
|
66
|
+
page, the score widget, the document panel, and the refresh handler.
|
|
67
|
+
The copies had already drifted — this missing argument was one of the
|
|
68
|
+
drifts. Fix: the whole block now lives once in `src/findings-view.ts`,
|
|
69
|
+
and `RefreshOptions.suppressionFilter` is a **required** property, so a
|
|
70
|
+
caller cannot silently omit it again.
|
|
71
|
+
- **`/evaluate` no longer 500s when `EVAL_TOKEN` is unset.** The check read
|
|
72
|
+
`env.EVAL_TOKEN.length` without a guard, so a worker deployed without the
|
|
73
|
+
secret threw a `TypeError` on every request instead of rejecting it.
|
|
17
74
|
- **Sandbox access declaration:** replace obsolete capability strings with
|
|
18
75
|
`content:read` and conditional `network:request`, scoped to the configured
|
|
19
76
|
evaluator host. Remove unused schema, artifact, KV, and IndexNow host grants.
|
|
@@ -32,10 +89,51 @@ Updates the EmDash integration to the current plugin and content APIs.
|
|
|
32
89
|
|
|
33
90
|
### Changed
|
|
34
91
|
|
|
92
|
+
- Extract the shared Block Kit view layer (`normalizeInteraction`,
|
|
93
|
+
`BlockInteraction`, `BlockResponse`, the findings page, the score
|
|
94
|
+
widget, the document panel, and the refresh sweep) out of
|
|
95
|
+
`configured.ts` and `sandbox-entry.ts` into `src/findings-view.ts`.
|
|
96
|
+
Behaviour is unchanged apart from the suppression fix above; the two
|
|
97
|
+
entrypoints keep their own dispatch and their own copy of the three
|
|
98
|
+
strings that legitimately differ (empty-state copy, score-widget
|
|
99
|
+
empty copy, hard-refresh banner variant), passed in through
|
|
100
|
+
`AdminViewTuning`. `BlockInteraction` and `BlockResponse` are
|
|
101
|
+
re-exported from `sandbox-entry.ts`, so the `./sandbox` entry's
|
|
102
|
+
public type surface is unchanged.
|
|
35
103
|
- Bump the EmDash peer and development ranges to `0.41.x`; update the README
|
|
36
104
|
and install guide to name the supported range and sandbox save behavior.
|
|
37
|
-
- Add
|
|
38
|
-
|
|
105
|
+
- Add regression tests for `normalizeInteraction` — the ten edge cases
|
|
106
|
+
the 0.8.17 changelog claimed to have verified but never did — plus
|
|
107
|
+
entrypoint parity tests that drive both admin routes with the same
|
|
108
|
+
malformed bodies, and a test that the configured Block Kit refresh and
|
|
109
|
+
the React `/refresh` route agree on suppressed findings. Vitest coverage
|
|
110
|
+
now runs against EmDash's official plugin runtime test host for sandbox
|
|
111
|
+
hooks, blocks extraction, resolved URLs, and translation alternates.
|
|
112
|
+
- Add `tsconfig.test.json` and a `typecheck:tests` script so `tests/`
|
|
113
|
+
and `vitest.config.ts` are typechecked. `tsconfig.json`'s `include`
|
|
114
|
+
covered `src/**` only, which meant the suite guarding the 0.8.17
|
|
115
|
+
production hotfix and the emdash test-host fixture plugin were both
|
|
116
|
+
unchecked. `npm run typecheck` now runs `typecheck:src` and
|
|
117
|
+
`typecheck:tests`.
|
|
118
|
+
- `packages/aexeo-crawl-worker` no longer commits its build artifacts. The
|
|
119
|
+
checked-in `aexeo_emdash_bridge_bg.wasm` and its glue were several
|
|
120
|
+
releases behind the bridge the plugin actually calls — missing
|
|
121
|
+
`generateFactsPrompt`, `validateFactsManifest`, the manifest argument on
|
|
122
|
+
`scoreIntelligence`, and the `__wbg_*` bindings — and nothing in the
|
|
123
|
+
repository could regenerate them. The hand-written `.d.ts` files had been
|
|
124
|
+
updated to match the stale binary, which is why it went unnoticed. The
|
|
125
|
+
binary is now produced by `npm run build:wasm`, chained into `dev` and
|
|
126
|
+
`deploy`, and only the two declaration files remain tracked. The package
|
|
127
|
+
also gains a README, which it did not have.
|
|
128
|
+
|
|
129
|
+
## [Unreleased]
|
|
130
|
+
|
|
131
|
+
## [0.8.18] - 2026-09-28
|
|
132
|
+
|
|
133
|
+
### Added
|
|
134
|
+
|
|
135
|
+
- Include deterministic editorial-policy rules EDT001–EDT003 in the bundled Rust/WASM evaluator. Configured answer summaries, target questions, and evidence-marked claims can now be checked through the serialized Aexeo config.
|
|
136
|
+
|
|
39
137
|
|
|
40
138
|
## [0.8.17] - 2026-05-29
|
|
41
139
|
|
package/INSTALL.md
CHANGED
|
@@ -266,16 +266,25 @@ in this repo. Per-site deploy:
|
|
|
266
266
|
|
|
267
267
|
```bash
|
|
268
268
|
cd aexeo-crawl-worker
|
|
269
|
-
|
|
269
|
+
npm ci
|
|
270
|
+
# Edit wrangler.toml: name, SITE_URL
|
|
270
271
|
npx wrangler login
|
|
271
|
-
|
|
272
|
-
npx wrangler deploy
|
|
272
|
+
npm run deploy # builds the WASM bridge, then deploys
|
|
273
273
|
echo "$(openssl rand -hex 32)" | npx wrangler secret put EVAL_TOKEN
|
|
274
274
|
```
|
|
275
275
|
|
|
276
|
+
The Worker's WASM is generated, not committed — `npm run deploy` runs
|
|
277
|
+
`npm run build:wasm` first, which needs the Rust toolchain and
|
|
278
|
+
`wasm-bindgen`. See the template's README.
|
|
279
|
+
|
|
276
280
|
Then in the admin UI, visit
|
|
277
281
|
`/admin/plugins/aexeo-emdash/setup` and paste the deployed URL +
|
|
278
|
-
the same token.
|
|
282
|
+
the same token. The URL must be `https`, must not point at a
|
|
283
|
+
loopback, private, or link-local address, and must be the host in
|
|
284
|
+
`evaluatorHost` above — the emdash sandbox rejects any other outbound
|
|
285
|
+
host, so the form checks it before storing. The token is written
|
|
286
|
+
through the host's encrypted plugin settings (`admin.settingsSchema`
|
|
287
|
+
declares it `secret`), not to plugin KV.
|
|
279
288
|
|
|
280
289
|
## Alternative install sources
|
|
281
290
|
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
package/dist/adapter.d.ts
CHANGED
|
File without changes
|
package/dist/adapter.d.ts.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/admin/Facts.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/admin/Findings.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/admin.d.ts
CHANGED
|
File without changes
|
package/dist/admin.d.ts.map
CHANGED
|
File without changes
|
package/dist/admin.js
CHANGED
|
File without changes
|
package/dist/configured.d.ts
CHANGED
|
File without changes
|
package/dist/configured.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AA0HxE,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CA2H3E;AAID,eAAe,YAAY,CAAC"}
|