@jini-ai/cms 0.3.4 → 0.3.6
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/README.md +22 -17
- package/dist/content-types/agent-tools.d.ts.map +1 -1
- package/dist/content-types/agent-tools.js +1 -1
- package/dist/content-types/agent-tools.js.map +1 -1
- package/dist/content-types/errors.d.ts +19 -1
- package/dist/content-types/errors.d.ts.map +1 -1
- package/dist/content-types/errors.js +22 -1
- package/dist/content-types/errors.js.map +1 -1
- package/dist/content-types/index-provisioning.d.ts +56 -10
- package/dist/content-types/index-provisioning.d.ts.map +1 -1
- package/dist/content-types/index-provisioning.js +86 -13
- package/dist/content-types/index-provisioning.js.map +1 -1
- package/dist/content-types/index.d.ts +15 -3
- package/dist/content-types/index.d.ts.map +1 -1
- package/dist/content-types/index.js +14 -2
- package/dist/content-types/index.js.map +1 -1
- package/dist/content-types/lifecycle.js +3 -3
- package/dist/content-types/lifecycle.js.map +1 -1
- package/dist/content-types/types.d.ts +64 -3
- package/dist/content-types/types.d.ts.map +1 -1
- package/dist/content-types/types.js +67 -3
- package/dist/content-types/types.js.map +1 -1
- package/dist/content-types/write-service.d.ts +18 -3
- package/dist/content-types/write-service.d.ts.map +1 -1
- package/dist/content-types/write-service.js +28 -2
- package/dist/content-types/write-service.js.map +1 -1
- package/dist/core/ports.d.ts +12 -2
- package/dist/core/ports.d.ts.map +1 -1
- package/dist/entries/field-validation.d.ts.map +1 -1
- package/dist/entries/field-validation.js +96 -1
- package/dist/entries/field-validation.js.map +1 -1
- package/dist/entries/write-service.d.ts +14 -0
- package/dist/entries/write-service.d.ts.map +1 -1
- package/dist/entries/write-service.js +2 -2
- package/dist/entries/write-service.js.map +1 -1
- package/dist/identity/admin-crud-service.d.ts +28 -0
- package/dist/identity/admin-crud-service.d.ts.map +1 -1
- package/dist/identity/admin-crud-service.js +30 -0
- package/dist/identity/admin-crud-service.js.map +1 -1
- package/dist/identity/auth-service.d.ts +32 -1
- package/dist/identity/auth-service.d.ts.map +1 -1
- package/dist/identity/auth-service.js +44 -15
- package/dist/identity/auth-service.js.map +1 -1
- package/dist/identity/index.d.ts +4 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +4 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/seed.d.ts +14 -2
- package/dist/identity/seed.d.ts.map +1 -1
- package/dist/identity/seed.js +197 -45
- package/dist/identity/seed.js.map +1 -1
- package/dist/media/blob-store.fs.d.ts +7 -0
- package/dist/media/blob-store.fs.d.ts.map +1 -1
- package/dist/media/blob-store.fs.js +12 -2
- package/dist/media/blob-store.fs.js.map +1 -1
- package/dist/media/content-type-sniffer.d.ts +1 -1
- package/dist/media/content-type-sniffer.d.ts.map +1 -1
- package/dist/media/content-type-sniffer.js +52 -4
- package/dist/media/content-type-sniffer.js.map +1 -1
- package/dist/media/html-attributes.d.ts +90 -0
- package/dist/media/html-attributes.d.ts.map +1 -0
- package/dist/media/html-attributes.js +161 -0
- package/dist/media/html-attributes.js.map +1 -0
- package/dist/media/image-transformer.sharp.d.ts +35 -1
- package/dist/media/image-transformer.sharp.d.ts.map +1 -1
- package/dist/media/image-transformer.sharp.js +44 -2
- package/dist/media/image-transformer.sharp.js.map +1 -1
- package/dist/media/index.d.ts +2 -1
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +2 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/media-service.d.ts +93 -1
- package/dist/media/media-service.d.ts.map +1 -1
- package/dist/media/media-service.js +254 -7
- package/dist/media/media-service.js.map +1 -1
- package/dist/media/ports.d.ts +8 -1
- package/dist/media/ports.d.ts.map +1 -1
- package/dist/media/rendition-service.d.ts +7 -1
- package/dist/media/rendition-service.d.ts.map +1 -1
- package/dist/media/rendition-service.js +10 -4
- package/dist/media/rendition-service.js.map +1 -1
- package/dist/media/repo.memory.d.ts +4 -0
- package/dist/media/repo.memory.d.ts.map +1 -1
- package/dist/media/repo.memory.js +3 -0
- package/dist/media/repo.memory.js.map +1 -1
- package/dist/media/tool-registrations.d.ts +6 -2
- package/dist/media/tool-registrations.d.ts.map +1 -1
- package/dist/media/tool-registrations.js +19 -2
- package/dist/media/tool-registrations.js.map +1 -1
- package/dist/media/types.d.ts +26 -0
- package/dist/media/types.d.ts.map +1 -1
- package/dist/media/types.js.map +1 -1
- package/dist/navigation/agent-tools.d.ts.map +1 -1
- package/dist/navigation/agent-tools.js +8 -1
- package/dist/navigation/agent-tools.js.map +1 -1
- package/dist/navigation/index.d.ts +10 -1
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +10 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/navigation/menu-service.d.ts +60 -4
- package/dist/navigation/menu-service.d.ts.map +1 -1
- package/dist/navigation/menu-service.js +106 -8
- package/dist/navigation/menu-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registrations.d.ts","sourceRoot":"","sources":["../../src/media/tool-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAQL,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,MAAM,IAAI,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,KAAK,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,iBAAiB,CAAC;IACjC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,SAAS,EAAE,aAAa,CAAC;IACzB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACpG
|
|
1
|
+
{"version":3,"file":"tool-registrations.d.ts","sourceRoot":"","sources":["../../src/media/tool-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAQL,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,MAAM,IAAI,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,KAAK,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,iBAAiB,CAAC;IACjC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,SAAS,EAAE,aAAa,CAAC;IACzB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChG;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAU7B,CAAC;AA0DH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,aAAa,GAAG,gBAAgB,EAAE,CAsGpF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { buildDomainRegistrations, indexCatalogById, requireInputRecord, requireString, requireToolPermission, withSchemaOnRejection, } from "../core/tools/registration-kit.js";
|
|
2
2
|
import { mediaAgentToolCatalog } from "./agent-tools.js";
|
|
3
|
-
import { listMedia, MediaValidationError, trashMedia, updateMediaMetadata, uploadMedia } from "./media-service.js";
|
|
3
|
+
import { listMedia, MediaValidationError, rollbackUploadedMedia, trashMedia, updateMediaMetadata, uploadMedia } from "./media-service.js";
|
|
4
4
|
const CATALOG_BY_ID = indexCatalogById(mediaAgentToolCatalog);
|
|
5
5
|
/**
|
|
6
6
|
* This wiring layer's OWN risk classification, authored from what each handler below actually
|
|
@@ -94,7 +94,24 @@ export function buildMediaRegistrations(routeDeps) {
|
|
|
94
94
|
},
|
|
95
95
|
});
|
|
96
96
|
if (routeDeps.recordUploadContentType) {
|
|
97
|
-
|
|
97
|
+
try {
|
|
98
|
+
await routeDeps.recordUploadContentType({ media, bytes });
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
// The blob/media/rendition rows uploadMedia() just wrote must not survive as orphans
|
|
102
|
+
// when the caller is about to see this whole upload as failed (the fix for that gap —
|
|
103
|
+
// see rollbackUploadedMedia's own doc). The original hook error is rethrown unchanged.
|
|
104
|
+
await rollbackUploadedMedia({
|
|
105
|
+
deps: {
|
|
106
|
+
mediaRepo: routeDeps.mediaRepo,
|
|
107
|
+
blobRepo: routeDeps.assetBlobRepo,
|
|
108
|
+
renditionRepo: routeDeps.assetRenditionRepo,
|
|
109
|
+
clock: routeDeps.clock,
|
|
110
|
+
},
|
|
111
|
+
input: { workspaceId: routeDeps.workspaceId, media },
|
|
112
|
+
});
|
|
113
|
+
throw err;
|
|
114
|
+
}
|
|
98
115
|
}
|
|
99
116
|
const [view] = await toMediaToolViewsWithPublicUrls(routeDeps, [media]);
|
|
100
117
|
return { media: view };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/media/tool-registrations.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,GAKtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/media/tool-registrations.ts"],"names":[],"mappings":"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"}
|
package/dist/media/types.d.ts
CHANGED
|
@@ -42,6 +42,20 @@ export interface MediaRecord {
|
|
|
42
42
|
id: UUID;
|
|
43
43
|
workspaceId: UUID;
|
|
44
44
|
title: string;
|
|
45
|
+
/**
|
|
46
|
+
* Human-memorable, unique-per-workspace lookup key (owner-directed, 2026-09-07) — an ADDITIONAL
|
|
47
|
+
* key alongside `id`, never a replacement: `id` stays the canonical primary key every existing
|
|
48
|
+
* embed/reference resolves by, and this column only gives a second, human-typeable way to reach
|
|
49
|
+
* the same row (`findMediaByIdOrSlug` in `media-service.ts` tries this first, `id` second).
|
|
50
|
+
*
|
|
51
|
+
* Derived from `title` at upload time (`deriveMediaSlug`), then independently editable afterward
|
|
52
|
+
* — renaming `title` does NOT recompute this field; it changes only on an explicit `slug` write.
|
|
53
|
+
* Unique per `(workspaceId, slug)`, enforced by the host's own DB index (see Tovu's
|
|
54
|
+
* `idx_media_workspace_slug`) — `updateMediaMetadata`'s own `findBySlug` check is a friendly-error
|
|
55
|
+
* courtesy on top of that, not the enforcement itself, the same split `posts_workspace_slug_unique`
|
|
56
|
+
* already establishes for `post`'s identical `slug` field.
|
|
57
|
+
*/
|
|
58
|
+
slug: string;
|
|
45
59
|
alt: string;
|
|
46
60
|
caption: string;
|
|
47
61
|
credit: string;
|
|
@@ -63,6 +77,18 @@ export interface MediaRecord {
|
|
|
63
77
|
width: number | null;
|
|
64
78
|
height: number | null;
|
|
65
79
|
cssClass: string | null;
|
|
80
|
+
/**
|
|
81
|
+
* Owner-directed (2026-09-07) free-text HTML attributes threaded onto this asset's public
|
|
82
|
+
* `<img>`/`<video>` tag (stated uses: animations, custom WebMCP hooks) — raw, ALREADY-VALIDATED
|
|
83
|
+
* source text (e.g. `data-motion="fade-in" loading="lazy"`), the same "one string column, `null`
|
|
84
|
+
* means not set" shape {@link cssClass} already establishes; `null` by default. This is a stored-
|
|
85
|
+
* XSS boundary: `updateMediaMetadata` validates it against `html-attributes.ts`'s allowlist before
|
|
86
|
+
* ever writing it (`on*` handlers, `javascript:` values, and any name not on the allowlist are
|
|
87
|
+
* rejected outright, never sanitized), and a host's render path must re-validate before emitting
|
|
88
|
+
* it onto a real tag rather than trusting a stored value was never written by an older code path
|
|
89
|
+
* or a direct DB edit.
|
|
90
|
+
*/
|
|
91
|
+
htmlAttributes: string | null;
|
|
66
92
|
}
|
|
67
93
|
/**
|
|
68
94
|
* Blob-GC lifecycle status (INV-1's two-phase journaled protocol,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/media/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE1D,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/media/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE1D,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;;;;;OAUG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC;IACvB,iFAAiF;IACjF,MAAM,EAAE,eAAe,CAAC;IACxB,kFAAkF;IAClF,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,IAAI,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAChD,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAClD,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,oBAAoB;CAAG;AAEtE;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE;CAI5D"}
|
package/dist/media/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/media/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/media/types.ts"],"names":[],"mappings":"AAiKA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG;AAChD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;CAAG;AAClD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG;AAEhD;;;GAGG;AACH,MAAM,OAAO,yBAA0B,SAAQ,oBAAoB;CAAG;AAEtE;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACtD,WAAW,CAAoB;IAExC,YAAY,OAAe,EAAE,WAA8B;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../../src/navigation/agent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;
|
|
1
|
+
{"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../../src/navigation/agent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAIH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,uBAAuB,GAAG,aAAa,CAAC;AAEnF,MAAM,MAAM,uBAAuB,GAAG,sCAAsC,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpG,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,CAAC;IACjC,aAAa,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjD;AA2FD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAkFtD,CAAC"}
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
* published, there), so the target schema below is hand-authored against `types.ts`'s `NavTarget`
|
|
56
56
|
* union and cross-checked by this catalog's own contract test rather than imported.
|
|
57
57
|
*/
|
|
58
|
+
import { ALLOWED_HREF_SHAPES_DESCRIPTION } from "./menu-service.js";
|
|
58
59
|
const MENU_ID_SCHEMA = {
|
|
59
60
|
type: "string",
|
|
60
61
|
description: "The menu's id, as returned by menus_list_menus, menus_get_menu, or menus_create_menu.",
|
|
@@ -90,7 +91,13 @@ const NAV_TARGET_SCHEMA = {
|
|
|
90
91
|
required: ["kind", "href"],
|
|
91
92
|
properties: {
|
|
92
93
|
kind: { const: "url" },
|
|
93
|
-
href: {
|
|
94
|
+
href: {
|
|
95
|
+
type: "string",
|
|
96
|
+
// Derived from `menu-service.ts`'s own `ALLOWED_HREF_SHAPES_DESCRIPTION` (the single
|
|
97
|
+
// source of truth `isAllowedHref`'s rejection message also draws from) rather than
|
|
98
|
+
// hand-copied, so this schema description cannot drift out of sync with the real check.
|
|
99
|
+
description: `Accepted shapes: ${ALLOWED_HREF_SHAPES_DESCRIPTION}. Anything else — including 'javascript:', 'data:', 'vbscript:', 'file:', 'blob:', 'about:', a protocol-relative '//...' URL, or a bare relative path with no leading '/' — is rejected.`,
|
|
100
|
+
},
|
|
94
101
|
},
|
|
95
102
|
},
|
|
96
103
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../../src/navigation/agent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;
|
|
1
|
+
{"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../../src/navigation/agent-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,16 @@ export { createNavMenuReadModel, type NavMenuReadModelDeps } from "./read-model.
|
|
|
16
16
|
* adapter implements it directly, the same way it implements `NavLocationBindingRepoPort`.
|
|
17
17
|
*/
|
|
18
18
|
export { InMemoryMenuRepo, InMemoryNavLocationBindingRepo, type MenuRepoPort, } from "./repo.memory.js";
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* `isAllowedHref`/`ALLOWED_HREF_SHAPES_DESCRIPTION` (2026-09-03): the canonical author-link
|
|
21
|
+
* allowlist, promoted here specifically so a HOST can import it rather than hand-copy it — the
|
|
22
|
+
* dependency direction a host -> `@jini-ai/cms` is the one that is actually legal (the reverse is
|
|
23
|
+
* not). Tovu's own render-time `safeHref` (`server/inbound/public-http/http/site/render.ts` and its
|
|
24
|
+
* `features/theme/static-render.ts` duplicate) have not yet been migrated to import this — see
|
|
25
|
+
* `menu-service.ts`'s own doc comment on `isAllowedHref` for the retirement plan and why nothing in
|
|
26
|
+
* `check:boundaries` blocks either Tovu call site from doing so.
|
|
27
|
+
*/
|
|
28
|
+
export { createMenu, updateMenuTree, assignLocation, deleteMenu, validateAndCloneTree, isAllowedHref, ALLOWED_HREF_SHAPES_DESCRIPTION, MenuNotFoundError, MenuValidationError, MenuConflictError, MenuLocationBoundError, DEFAULT_MAX_TREE_DEPTH, DEFAULT_MAX_ITEM_COUNT, type TreeValidationLimits, type CreateMenuDeps, type CreateMenuServiceInput, type CreateMenuRequired, type CreateMenuOptional, type UpdateMenuTreeDeps, type UpdateMenuTreeServiceInput, type UpdateMenuTreeRequired, type UpdateMenuTreeOptional, type AssignLocationDeps, type AssignLocationServiceInput, type AssignLocationRequired, type AssignLocationOptional, type DeleteMenuDeps, type DeleteMenuServiceInput, type DeleteMenuRequired, type DeleteMenuOptional, } from "./menu-service.js";
|
|
20
29
|
export { resolveForLocation, resolveMenuDoc, type ResolveTargetHrefFn, type ResolvedTargetHref, type ResolveForLocationDeps, type ResolveForLocationServiceInput, type ResolveForLocationRequired, type ResolveForLocationOptional, } from "./resolver.js";
|
|
21
30
|
export { rebuildNavLocationBindings, type RebuildNavLocationBindingsDeps, type RebuildNavLocationBindingsResult, } from "./reconcile.js";
|
|
22
31
|
/** The agent-tool surface for this domain (see `agent-tools.ts` for what is deliberately omitted). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,GACtC,MAAM,gBAAgB,CAAC;AAExB,sGAAsG;AACtG,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,IAAI,6BAA6B,EACzD,KAAK,mBAAmB,IAAI,6BAA6B,EACzD,KAAK,uBAAuB,IAAI,iCAAiC,GAClE,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;GAMG"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,GACtC,MAAM,gBAAgB,CAAC;AAExB,sGAAsG;AACtG,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,IAAI,6BAA6B,EACzD,KAAK,mBAAmB,IAAI,6BAA6B,EACzD,KAAK,uBAAuB,IAAI,iCAAiC,GAClE,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;GAMG"}
|
package/dist/navigation/index.js
CHANGED
|
@@ -7,7 +7,16 @@ export { createNavMenuReadModel } from "./read-model.js";
|
|
|
7
7
|
* adapter implements it directly, the same way it implements `NavLocationBindingRepoPort`.
|
|
8
8
|
*/
|
|
9
9
|
export { InMemoryMenuRepo, InMemoryNavLocationBindingRepo, } from "./repo.memory.js";
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* `isAllowedHref`/`ALLOWED_HREF_SHAPES_DESCRIPTION` (2026-09-03): the canonical author-link
|
|
12
|
+
* allowlist, promoted here specifically so a HOST can import it rather than hand-copy it — the
|
|
13
|
+
* dependency direction a host -> `@jini-ai/cms` is the one that is actually legal (the reverse is
|
|
14
|
+
* not). Tovu's own render-time `safeHref` (`server/inbound/public-http/http/site/render.ts` and its
|
|
15
|
+
* `features/theme/static-render.ts` duplicate) have not yet been migrated to import this — see
|
|
16
|
+
* `menu-service.ts`'s own doc comment on `isAllowedHref` for the retirement plan and why nothing in
|
|
17
|
+
* `check:boundaries` blocks either Tovu call site from doing so.
|
|
18
|
+
*/
|
|
19
|
+
export { createMenu, updateMenuTree, assignLocation, deleteMenu, validateAndCloneTree, isAllowedHref, ALLOWED_HREF_SHAPES_DESCRIPTION, MenuNotFoundError, MenuValidationError, MenuConflictError, MenuLocationBoundError, DEFAULT_MAX_TREE_DEPTH, DEFAULT_MAX_ITEM_COUNT, } from "./menu-service.js";
|
|
11
20
|
export { resolveForLocation, resolveMenuDoc, } from "./resolver.js";
|
|
12
21
|
export { rebuildNavLocationBindings, } from "./reconcile.js";
|
|
13
22
|
/** The agent-tool surface for this domain (see `agent-tools.ts` for what is deliberately omitted). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAyBtF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAA6B,MAAM,iBAAiB,CAAC;AAEpF;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,GAE/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GAkBvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kBAAkB,EAClB,cAAc,GAOf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,sGAAsG;AACtG,OAAO,EACL,qBAAqB,GAItB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;GAMG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAyBtF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAA6B,MAAM,iBAAiB,CAAC;AAEpF;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,GAE/B,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GAkBvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kBAAkB,EAClB,cAAc,GAOf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,sGAAsG;AACtG,OAAO,EACL,qBAAqB,GAItB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;GAMG"}
|
|
@@ -46,6 +46,55 @@ export declare class MenuLocationBoundError extends MenuConflictError {
|
|
|
46
46
|
export declare const DEFAULT_MAX_TREE_DEPTH = 5;
|
|
47
47
|
/** Default max total item count across the whole tree. */
|
|
48
48
|
export declare const DEFAULT_MAX_ITEM_COUNT = 500;
|
|
49
|
+
/**
|
|
50
|
+
* The CANONICAL href allowlist for an author-authored link — same accepted shapes (`#…`, same-origin
|
|
51
|
+
* `/…`, `http(s)://`, `mailto:`) as Tovu's render-time `safeHref` in `render.ts` and its
|
|
52
|
+
* `features/theme/static-render.ts` duplicate. **This is now the single source of truth**: exported
|
|
53
|
+
* from this package's public surface (`navigation/index.ts` -> `@jini-ai/cms/navigation`) so the
|
|
54
|
+
* dependency runs the direction that is actually legal — Tovu already depends on `@jini-ai/cms`, not
|
|
55
|
+
* the reverse — rather than each consumer hand-copying the predicate.
|
|
56
|
+
*
|
|
57
|
+
* The two Tovu copies (`render.ts:252`, `features/theme/static-render.ts:210`, both a coercing
|
|
58
|
+
* `value => passes ? value : "#"` wrapper around the identical predicate below) have **not yet been
|
|
59
|
+
* retired to import this** — that edit is intentionally out of this change's scope (a
|
|
60
|
+
* `check:boundaries` no-deep-import concern is NOT what blocks it: `render.ts` already imports
|
|
61
|
+
* `@jini-ai/cms/core` today, and `features/theme` already imports `@jini-ai/cms/core` too, so both
|
|
62
|
+
* call sites may legally import `@jini-ai/cms/navigation` directly — verified by grep, not assumed).
|
|
63
|
+
* Until that follow-up lands, `apps/website/development/scripts/check-menu-href-allowlist-sync.ts`
|
|
64
|
+
* behaviorally gates the three copies against the same adversarial table so a divergence fails CI
|
|
65
|
+
* instead of drifting silently.
|
|
66
|
+
*
|
|
67
|
+
* Replaced (this change) a `URL_SCHEME_DENYLIST` (`startsWith` on a lowercased, `.trim()`ed string)
|
|
68
|
+
* that failed open: the WHATWG `URL` parser strips TAB/LF/CR from ANYWHERE in the input and folds a
|
|
69
|
+
* leading backslash to `/` for `http(s)`, so `"java\tscript:alert(1)"`, `" javascript:alert(1)"`,
|
|
70
|
+
* `"file:///etc/passwd"`, `"blob:…"`, `"about:blank"`, `"//evil.example"` (protocol-relative), and
|
|
71
|
+
* `"/\evil.example"` all resolved to a dangerous or off-origin target while never matching any
|
|
72
|
+
* `startsWith` prefix in the old list. An allowlist closes the whole bypass class at once (case,
|
|
73
|
+
* embedded control characters, and scheme are all irrelevant to an allowlist the same way) rather
|
|
74
|
+
* than needing a new prefix bolted on per newly-discovered shape.
|
|
75
|
+
*
|
|
76
|
+
* `validateTarget`'s caller REJECTS on a `false` result (`MenuValidationError`, surfaced as HTTP 400)
|
|
77
|
+
* rather than silently coercing the way `safeHref`'s render-time callers degrade to `"#"` — a
|
|
78
|
+
* write-time author-facing path should say so, not quietly rewrite the input. Verified against the
|
|
79
|
+
* workspace's stored menu data (`content.db`, `content.seed.db`) before this change: every existing
|
|
80
|
+
* `url`-kind href already starts with `#` or `/`, so this tightening rejects nothing that exists
|
|
81
|
+
* today — it governs `createMenu` too, so it also reaches the Jini MCP agent-tool path, not just
|
|
82
|
+
* hrefs written through Tovu's admin editor.
|
|
83
|
+
*
|
|
84
|
+
* @param rawHref - The href to check, already confirmed non-empty by `validateTarget`. Any string is
|
|
85
|
+
* otherwise a valid input — this function performs no other precondition checks.
|
|
86
|
+
* @returns `true` when `rawHref` passes the allowlist, `false` otherwise.
|
|
87
|
+
* @complexity O(1) — a handful of string checks plus one `URL` construction on the `/…` branch.
|
|
88
|
+
*/
|
|
89
|
+
export declare function isAllowedHref(rawHref: string): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Human-readable description of {@link isAllowedHref}'s accepted shapes — the single source of truth
|
|
92
|
+
* for both `validateTarget`'s rejection message below and `agent-tools.ts`'s published JSON Schema
|
|
93
|
+
* `href` description, so an author-facing 400 and an LLM-facing tool description can never drift out
|
|
94
|
+
* of sync with each other the way three independent copies of the URL-checking LOGIC itself did
|
|
95
|
+
* before this change.
|
|
96
|
+
*/
|
|
97
|
+
export declare const ALLOWED_HREF_SHAPES_DESCRIPTION = "an in-page anchor ('#...'), a same-origin relative path ('/...'), an 'http://' or 'https://' URL, or a 'mailto:' address";
|
|
49
98
|
export interface TreeValidationLimits {
|
|
50
99
|
maxDepth?: number | undefined;
|
|
51
100
|
maxItemCount?: number | undefined;
|
|
@@ -54,15 +103,22 @@ export interface TreeValidationLimits {
|
|
|
54
103
|
* Validates a candidate item tree and returns a defensively-cloned copy.
|
|
55
104
|
*
|
|
56
105
|
* Checks (total/bounded validation + target integrity):
|
|
106
|
+
* - `items` (and every `children` array) is actually an array, and every node
|
|
107
|
+
* in it is a non-null object — untrusted JSON bodies can carry `null`
|
|
108
|
+
* entries or a non-array `items`/`children`, which must reject as a
|
|
109
|
+
* `MenuValidationError`, not throw an uncaught `TypeError`;
|
|
57
110
|
* - every node has a non-empty `id`, unique across the whole tree (id
|
|
58
111
|
* stability is a caller responsibility — see `updateMenuTree` doc for the
|
|
59
112
|
* simplification this build accepts);
|
|
60
113
|
* - nesting depth stays within `maxDepth`;
|
|
61
114
|
* - total item count stays within `maxItemCount`;
|
|
62
|
-
* - every
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
115
|
+
* - every node has a `target` object (a missing/`null` `target` rejects
|
|
116
|
+
* rather than crashing) whose `kind` is one of the four v1 kinds — reserved
|
|
117
|
+
* kinds (`dynamicQuery`, `content`) are rejected with a clear "not yet"
|
|
118
|
+
* error rather than silently accepted;
|
|
119
|
+
* - `url` targets require a non-empty string `href` and pass an origin/scheme
|
|
120
|
+
* ALLOWLIST (`#…`, same-origin `/…`, `http(s)://`, `mailto:` — see
|
|
121
|
+
* {@link isAllowedHref}), not a scheme denylist.
|
|
66
122
|
*
|
|
67
123
|
* @complexity O(n) over total node count for one full walk; no per-node
|
|
68
124
|
* backtracking. Space is O(n) for the cloned tree plus O(n) for the id set.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../src/navigation/menu-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAe,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,EAGlB,MAAM,YAAY,CAAC;AAuCpB,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAC/C,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AACjD,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,cAAc,EAAE,SAAS,cAAc,EAAE,CAAC;gBAEvC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,cAAc,EAAE;CAIvE;AAMD,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../src/navigation/menu-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,20 +55,100 @@ export const DEFAULT_MAX_ITEM_COUNT = 500;
|
|
|
55
55
|
const VALID_TARGET_KINDS = new Set(["entryRef", "termRef", "url", "route"]);
|
|
56
56
|
/** Named deferred seams — recognized, rejected until their resolver ships. */
|
|
57
57
|
const RESERVED_TARGET_KINDS = new Set(["dynamicQuery", "content"]);
|
|
58
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Fixed placeholder origin {@link isAllowedHref} resolves a claimed same-origin-relative href
|
|
60
|
+
* against, to compare the RESOLVED origin rather than the raw string shape. Mirrors
|
|
61
|
+
* `apps/website/src/server/inbound/public-http/http/site/render.ts`'s identically-named constant
|
|
62
|
+
* byte-for-byte — see that file's own header for why a fixed placeholder origin is sufficient (only
|
|
63
|
+
* the relationship between the resolved URL's origin and this one is ever inspected, never the
|
|
64
|
+
* placeholder value itself).
|
|
65
|
+
*/
|
|
66
|
+
const SAFE_HREF_RESOLUTION_BASE = "http://tovu-safehref.invalid/";
|
|
67
|
+
const SAFE_HREF_RESOLUTION_ORIGIN = new URL(SAFE_HREF_RESOLUTION_BASE).origin;
|
|
68
|
+
/**
|
|
69
|
+
* The CANONICAL href allowlist for an author-authored link — same accepted shapes (`#…`, same-origin
|
|
70
|
+
* `/…`, `http(s)://`, `mailto:`) as Tovu's render-time `safeHref` in `render.ts` and its
|
|
71
|
+
* `features/theme/static-render.ts` duplicate. **This is now the single source of truth**: exported
|
|
72
|
+
* from this package's public surface (`navigation/index.ts` -> `@jini-ai/cms/navigation`) so the
|
|
73
|
+
* dependency runs the direction that is actually legal — Tovu already depends on `@jini-ai/cms`, not
|
|
74
|
+
* the reverse — rather than each consumer hand-copying the predicate.
|
|
75
|
+
*
|
|
76
|
+
* The two Tovu copies (`render.ts:252`, `features/theme/static-render.ts:210`, both a coercing
|
|
77
|
+
* `value => passes ? value : "#"` wrapper around the identical predicate below) have **not yet been
|
|
78
|
+
* retired to import this** — that edit is intentionally out of this change's scope (a
|
|
79
|
+
* `check:boundaries` no-deep-import concern is NOT what blocks it: `render.ts` already imports
|
|
80
|
+
* `@jini-ai/cms/core` today, and `features/theme` already imports `@jini-ai/cms/core` too, so both
|
|
81
|
+
* call sites may legally import `@jini-ai/cms/navigation` directly — verified by grep, not assumed).
|
|
82
|
+
* Until that follow-up lands, `apps/website/development/scripts/check-menu-href-allowlist-sync.ts`
|
|
83
|
+
* behaviorally gates the three copies against the same adversarial table so a divergence fails CI
|
|
84
|
+
* instead of drifting silently.
|
|
85
|
+
*
|
|
86
|
+
* Replaced (this change) a `URL_SCHEME_DENYLIST` (`startsWith` on a lowercased, `.trim()`ed string)
|
|
87
|
+
* that failed open: the WHATWG `URL` parser strips TAB/LF/CR from ANYWHERE in the input and folds a
|
|
88
|
+
* leading backslash to `/` for `http(s)`, so `"java\tscript:alert(1)"`, `" javascript:alert(1)"`,
|
|
89
|
+
* `"file:///etc/passwd"`, `"blob:…"`, `"about:blank"`, `"//evil.example"` (protocol-relative), and
|
|
90
|
+
* `"/\evil.example"` all resolved to a dangerous or off-origin target while never matching any
|
|
91
|
+
* `startsWith` prefix in the old list. An allowlist closes the whole bypass class at once (case,
|
|
92
|
+
* embedded control characters, and scheme are all irrelevant to an allowlist the same way) rather
|
|
93
|
+
* than needing a new prefix bolted on per newly-discovered shape.
|
|
94
|
+
*
|
|
95
|
+
* `validateTarget`'s caller REJECTS on a `false` result (`MenuValidationError`, surfaced as HTTP 400)
|
|
96
|
+
* rather than silently coercing the way `safeHref`'s render-time callers degrade to `"#"` — a
|
|
97
|
+
* write-time author-facing path should say so, not quietly rewrite the input. Verified against the
|
|
98
|
+
* workspace's stored menu data (`content.db`, `content.seed.db`) before this change: every existing
|
|
99
|
+
* `url`-kind href already starts with `#` or `/`, so this tightening rejects nothing that exists
|
|
100
|
+
* today — it governs `createMenu` too, so it also reaches the Jini MCP agent-tool path, not just
|
|
101
|
+
* hrefs written through Tovu's admin editor.
|
|
102
|
+
*
|
|
103
|
+
* @param rawHref - The href to check, already confirmed non-empty by `validateTarget`. Any string is
|
|
104
|
+
* otherwise a valid input — this function performs no other precondition checks.
|
|
105
|
+
* @returns `true` when `rawHref` passes the allowlist, `false` otherwise.
|
|
106
|
+
* @complexity O(1) — a handful of string checks plus one `URL` construction on the `/…` branch.
|
|
107
|
+
*/
|
|
108
|
+
export function isAllowedHref(rawHref) {
|
|
109
|
+
const href = rawHref.trim();
|
|
110
|
+
if (href.startsWith("#"))
|
|
111
|
+
return true;
|
|
112
|
+
if (/^https?:\/\//i.test(href) || /^mailto:/i.test(href))
|
|
113
|
+
return true;
|
|
114
|
+
if (href.startsWith("/")) {
|
|
115
|
+
try {
|
|
116
|
+
return new URL(href, SAFE_HREF_RESOLUTION_BASE).origin === SAFE_HREF_RESOLUTION_ORIGIN;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Human-readable description of {@link isAllowedHref}'s accepted shapes — the single source of truth
|
|
126
|
+
* for both `validateTarget`'s rejection message below and `agent-tools.ts`'s published JSON Schema
|
|
127
|
+
* `href` description, so an author-facing 400 and an LLM-facing tool description can never drift out
|
|
128
|
+
* of sync with each other the way three independent copies of the URL-checking LOGIC itself did
|
|
129
|
+
* before this change.
|
|
130
|
+
*/
|
|
131
|
+
export const ALLOWED_HREF_SHAPES_DESCRIPTION = "an in-page anchor ('#...'), a same-origin relative path ('/...'), an 'http://' or 'https://' URL, or a 'mailto:' address";
|
|
59
132
|
/**
|
|
60
133
|
* Validates a candidate item tree and returns a defensively-cloned copy.
|
|
61
134
|
*
|
|
62
135
|
* Checks (total/bounded validation + target integrity):
|
|
136
|
+
* - `items` (and every `children` array) is actually an array, and every node
|
|
137
|
+
* in it is a non-null object — untrusted JSON bodies can carry `null`
|
|
138
|
+
* entries or a non-array `items`/`children`, which must reject as a
|
|
139
|
+
* `MenuValidationError`, not throw an uncaught `TypeError`;
|
|
63
140
|
* - every node has a non-empty `id`, unique across the whole tree (id
|
|
64
141
|
* stability is a caller responsibility — see `updateMenuTree` doc for the
|
|
65
142
|
* simplification this build accepts);
|
|
66
143
|
* - nesting depth stays within `maxDepth`;
|
|
67
144
|
* - total item count stays within `maxItemCount`;
|
|
68
|
-
* - every
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
145
|
+
* - every node has a `target` object (a missing/`null` `target` rejects
|
|
146
|
+
* rather than crashing) whose `kind` is one of the four v1 kinds — reserved
|
|
147
|
+
* kinds (`dynamicQuery`, `content`) are rejected with a clear "not yet"
|
|
148
|
+
* error rather than silently accepted;
|
|
149
|
+
* - `url` targets require a non-empty string `href` and pass an origin/scheme
|
|
150
|
+
* ALLOWLIST (`#…`, same-origin `/…`, `http(s)://`, `mailto:` — see
|
|
151
|
+
* {@link isAllowedHref}), not a scheme denylist.
|
|
72
152
|
*
|
|
73
153
|
* @complexity O(n) over total node count for one full walk; no per-node
|
|
74
154
|
* backtracking. Space is O(n) for the cloned tree plus O(n) for the id set.
|
|
@@ -80,6 +160,9 @@ export function validateAndCloneTree(items, limits = {}) {
|
|
|
80
160
|
const seenIds = new Set();
|
|
81
161
|
let count = 0;
|
|
82
162
|
function walk(nodes, depth) {
|
|
163
|
+
if (!Array.isArray(nodes)) {
|
|
164
|
+
throw new MenuValidationError("menu items must be an array");
|
|
165
|
+
}
|
|
83
166
|
if (depth > maxDepth) {
|
|
84
167
|
throw new MenuValidationError(`menu tree exceeds max nesting depth of ${maxDepth}`);
|
|
85
168
|
}
|
|
@@ -88,6 +171,9 @@ export function validateAndCloneTree(items, limits = {}) {
|
|
|
88
171
|
if (count > maxItemCount) {
|
|
89
172
|
throw new MenuValidationError(`menu tree exceeds max item count of ${maxItemCount}`);
|
|
90
173
|
}
|
|
174
|
+
if (!node || typeof node !== "object") {
|
|
175
|
+
throw new MenuValidationError("every menu item must be an object");
|
|
176
|
+
}
|
|
91
177
|
if (!node.id || !node.id.trim()) {
|
|
92
178
|
throw new MenuValidationError("every menu item requires a non-empty id");
|
|
93
179
|
}
|
|
@@ -102,7 +188,16 @@ export function validateAndCloneTree(items, limits = {}) {
|
|
|
102
188
|
}
|
|
103
189
|
return walk(items, 1);
|
|
104
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Guards every field this function reads off an untrusted `target` before reading it — a `target`
|
|
193
|
+
* arriving `null`/`undefined` (missing from the request body) or a `url` target missing `href`
|
|
194
|
+
* previously threw an uncaught `TypeError` here, which the host's route handler had no case for and
|
|
195
|
+
* surfaced as a 500 instead of the intended 400 `MenuValidationError` path.
|
|
196
|
+
*/
|
|
105
197
|
function validateTarget(target) {
|
|
198
|
+
if (!target || typeof target !== "object") {
|
|
199
|
+
throw new MenuValidationError("every menu item requires a target");
|
|
200
|
+
}
|
|
106
201
|
const kind = target.kind;
|
|
107
202
|
if (RESERVED_TARGET_KINDS.has(kind)) {
|
|
108
203
|
throw new MenuValidationError(`target kind '${kind}' is a reserved seam and is not supported yet`);
|
|
@@ -111,9 +206,12 @@ function validateTarget(target) {
|
|
|
111
206
|
throw new MenuValidationError(`unknown target kind '${kind}'`);
|
|
112
207
|
}
|
|
113
208
|
if (kind === "url") {
|
|
114
|
-
const
|
|
115
|
-
if (
|
|
116
|
-
throw new MenuValidationError(
|
|
209
|
+
const rawHref = target.href;
|
|
210
|
+
if (typeof rawHref !== "string" || !rawHref.trim()) {
|
|
211
|
+
throw new MenuValidationError("url target requires a non-empty href");
|
|
212
|
+
}
|
|
213
|
+
if (!isAllowedHref(rawHref)) {
|
|
214
|
+
throw new MenuValidationError(`url target href is not allowed: '${rawHref}'. Accepted shapes: ${ALLOWED_HREF_SHAPES_DESCRIPTION}.`);
|
|
117
215
|
}
|
|
118
216
|
}
|
|
119
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-service.js","sourceRoot":"","sources":["../../src/navigation/menu-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu-service.js","sourceRoot":"","sources":["../../src/navigation/menu-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jini-ai/cms",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Content-model capability for Jini-hosted products: framework-free contracts, ports, and domain services in `/core` and per-domain subpaths; Node-bound persistence adapters in `/server`.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|