@cogenta/plugins 0.3.2 → 0.4.0
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/guest/module-render-entry.mjs +105 -0
- package/dist/host/protocol.d.ts +65 -3
- package/dist/host/protocol.d.ts.map +1 -1
- package/dist/host/worker-runner.d.ts +35 -0
- package/dist/host/worker-runner.d.ts.map +1 -1
- package/dist/host/worker-runner.js +99 -0
- package/dist/host/worker-runner.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/registries/themes.d.ts +9 -5
- package/dist/registries/themes.d.ts.map +1 -1
- package/dist/registries/themes.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Hand-written plain JS, same reasoning as `sandbox-entry.mjs`: loaded
|
|
2
|
+
// directly by `node:worker_threads`' `Worker` constructor, no build step.
|
|
3
|
+
//
|
|
4
|
+
// Fiche 73 task 3 — a SIBLING primitive to `sandbox-entry.mjs`'s `run`
|
|
5
|
+
// handler, not a variant of it. `run` executes a code string as a
|
|
6
|
+
// classic, import-less `vm.Script`: that is the real isolation boundary
|
|
7
|
+
// for arbitrary untrusted logic, and it structurally cannot load a real ES
|
|
8
|
+
// module (a theme's `theme.render.*`, which `import`s `@cogenta/theme-kit`
|
|
9
|
+
// and its own block renderers) without a full bundling step this fiche
|
|
10
|
+
// does not attempt.
|
|
11
|
+
//
|
|
12
|
+
// `run-module` instead does a genuine `await import(moduleUrl)` — the
|
|
13
|
+
// worker's own real module loader, with no `vm` involved at all. That is a
|
|
14
|
+
// DIFFERENT and WEAKER isolation guarantee than `run`'s, named explicitly
|
|
15
|
+
// rather than papered over: nothing in this file stops the imported module
|
|
16
|
+
// from reaching `node:fs`/`node:net` if it tried to import them. Safety
|
|
17
|
+
// here comes from two things OUTSIDE this file: (1) `verifyTheme`'s static
|
|
18
|
+
// scan already refused any forbidden import in the module's source before
|
|
19
|
+
// this worker was ever spawned, and (2) this worker still gets the same
|
|
20
|
+
// `env: {}` / `resourceLimits` / host-side timeout protections `run` has —
|
|
21
|
+
// so even a module that somehow reached a forbidden API would find no
|
|
22
|
+
// secrets in `process.env` and a bounded blast radius. ADR-0034's own
|
|
23
|
+
// "point de vigilance" names this exact gap: real, not yet closed.
|
|
24
|
+
|
|
25
|
+
import { parentPort } from 'node:worker_threads'
|
|
26
|
+
|
|
27
|
+
if (!parentPort) {
|
|
28
|
+
throw new Error('module-render-entry.mjs must run inside a worker_threads Worker')
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Same JSON round-trip `sandbox-entry.mjs` uses for its own result — proves an HtmlElement-shaped plain tree survives this boundary exactly like any other plain data. */
|
|
32
|
+
function toSerializable(value) {
|
|
33
|
+
if (value === undefined) return null
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(JSON.stringify(value))
|
|
36
|
+
} catch {
|
|
37
|
+
return null
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let nextCallId = 1
|
|
42
|
+
const pendingCallbackCalls = new Map()
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Builds one callback function, bound to a host-side name — the `run-module`
|
|
46
|
+
* analogue of `sandbox-entry.mjs`'s `makeSdkMethod`, generalised past the
|
|
47
|
+
* plugin-specific `namespace.method` capability vocabulary: a caller of
|
|
48
|
+
* `runIsolatedModule` names whatever callbacks it wants (`"t"`, `"image"`,
|
|
49
|
+
* `"link"`, `"content.entry"`, ...), and each becomes a real RPC round trip
|
|
50
|
+
* rather than a live function reference — nothing but the call's own
|
|
51
|
+
* arguments and its eventual result ever crosses this boundary.
|
|
52
|
+
*/
|
|
53
|
+
function makeCallback(name) {
|
|
54
|
+
return (...args) =>
|
|
55
|
+
new Promise((resolve, reject) => {
|
|
56
|
+
const callId = nextCallId
|
|
57
|
+
nextCallId += 1
|
|
58
|
+
pendingCallbackCalls.set(callId, { resolve, reject })
|
|
59
|
+
parentPort.postMessage({ type: 'callback-call', callId, name, args })
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** One flat object, one key per requested callback name — assembling it into a richer shape (a `RenderContext`, say) is the caller's own module code's job, not this file's. */
|
|
64
|
+
function buildCallbacks(names) {
|
|
65
|
+
const callbacks = {}
|
|
66
|
+
for (const name of names) callbacks[name] = makeCallback(name)
|
|
67
|
+
return callbacks
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
parentPort.on('message', (message) => {
|
|
71
|
+
if (message == null) return
|
|
72
|
+
|
|
73
|
+
if (message.type === 'callback-result' || message.type === 'callback-error') {
|
|
74
|
+
const pending = pendingCallbackCalls.get(message.callId)
|
|
75
|
+
if (pending === undefined) return
|
|
76
|
+
pendingCallbackCalls.delete(message.callId)
|
|
77
|
+
if (message.type === 'callback-result') pending.resolve(message.value)
|
|
78
|
+
else pending.reject(new Error(message.message))
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (message.type !== 'run-module') return
|
|
83
|
+
const { id, moduleUrl, exportName, args, callbackNames } = message
|
|
84
|
+
|
|
85
|
+
void (async () => {
|
|
86
|
+
let result
|
|
87
|
+
try {
|
|
88
|
+
const mod = await import(moduleUrl)
|
|
89
|
+
const fn = mod[exportName]
|
|
90
|
+
if (typeof fn !== 'function') {
|
|
91
|
+
throw new Error(`module has no exported function "${exportName}"`)
|
|
92
|
+
}
|
|
93
|
+
const callbacks = buildCallbacks(callbackNames ?? [])
|
|
94
|
+
const rawValue = await fn(...(args ?? []), callbacks)
|
|
95
|
+
result = { id, type: 'result', value: toSerializable(rawValue) }
|
|
96
|
+
} catch (error) {
|
|
97
|
+
result = {
|
|
98
|
+
id,
|
|
99
|
+
type: 'error',
|
|
100
|
+
message: error instanceof Error ? error.message : String(error),
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
parentPort.postMessage(result)
|
|
104
|
+
})()
|
|
105
|
+
})
|
package/dist/host/protocol.d.ts
CHANGED
|
@@ -28,7 +28,50 @@ export interface WorkerSdkCallMessage {
|
|
|
28
28
|
readonly method: string;
|
|
29
29
|
readonly args: unknown;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Host → worker: fiche 73 task 3's real deliverable — import a real ES
|
|
33
|
+
* module (a theme's `theme.render.*`, in the fiche's own use case) inside
|
|
34
|
+
* the worker and call one of its named export functions.
|
|
35
|
+
*
|
|
36
|
+
* This is deliberately a DIFFERENT primitive from `WorkerRunMessage`, not an
|
|
37
|
+
* option on it: `run` executes a code *string* as a classic, import-less
|
|
38
|
+
* `vm.Script` — the actual isolation boundary for arbitrary untrusted logic
|
|
39
|
+
* (docs/lots/L7-extensibilite.md § Isolation). A theme's render module is a
|
|
40
|
+
* real ES module with real `import` statements (`@cogenta/theme-kit`, its
|
|
41
|
+
* own block renderers) that `vm.Script` cannot load at all without a full
|
|
42
|
+
* bundling step this fiche does not attempt. `run-module` instead lets the
|
|
43
|
+
* worker's own, real module loader do a genuine `await import(moduleUrl)` —
|
|
44
|
+
* safety here comes from a DIFFERENT, weaker combination than `run`'s: (1)
|
|
45
|
+
* `verifyTheme`'s static scan already refused any forbidden import in the
|
|
46
|
+
* module's *source* before this message is ever sent (task 1), and (2) the
|
|
47
|
+
* same worker-level protections `run` already has — empty `env`, bounded
|
|
48
|
+
* `resourceLimits`, a host-side timeout. There is no `vm` boundary blocking
|
|
49
|
+
* `node:fs`/`node:net` *inside this worker* the way there is for `run` — an
|
|
50
|
+
* explicit, named gap, not an oversight (ADR-0034's own "point de
|
|
51
|
+
* vigilance").
|
|
52
|
+
*/
|
|
53
|
+
export interface WorkerRunModuleMessage {
|
|
54
|
+
readonly id: number;
|
|
55
|
+
readonly type: 'run-module';
|
|
56
|
+
/** A `file://` URL — the worker does its own real `import()`, so this must resolve on disk exactly as `loadTheme` already resolved it host-side. */
|
|
57
|
+
readonly moduleUrl: string;
|
|
58
|
+
readonly exportName: string;
|
|
59
|
+
/** Structured-cloneable positional arguments — plain data, same rule as everywhere else on this boundary. */
|
|
60
|
+
readonly args: readonly unknown[];
|
|
61
|
+
/**
|
|
62
|
+
* Names of host callbacks the call is allowed to invoke while it runs,
|
|
63
|
+
* e.g. `["t", "image", "link", "content.entry"]` for a theme's
|
|
64
|
+
* `RenderContext` — the same request/reply RPC shape `sdk-call` already
|
|
65
|
+
* proves for plugin capabilities (`callback-call` below), generalised
|
|
66
|
+
* past the plugin-specific `namespace.method` capability vocabulary. The
|
|
67
|
+
* guest builds one flat callback object with exactly these keys and
|
|
68
|
+
* nothing else; what a caller does with that object (assembling it into
|
|
69
|
+
* a `RenderContext`-shaped value, say) is the caller's own business, not
|
|
70
|
+
* this protocol's.
|
|
71
|
+
*/
|
|
72
|
+
readonly callbackNames: readonly string[];
|
|
73
|
+
}
|
|
74
|
+
export type WorkerHostMessage = WorkerRunMessage | WorkerRunModuleMessage;
|
|
32
75
|
/** Host → worker: the SDK call succeeded — a JSON-safe value only, same "no live object crosses the boundary" rule as every other message here. */
|
|
33
76
|
export interface WorkerSdkResultMessage {
|
|
34
77
|
readonly type: 'sdk-result';
|
|
@@ -41,7 +84,19 @@ export interface WorkerSdkErrorMessage {
|
|
|
41
84
|
readonly callId: number;
|
|
42
85
|
readonly message: string;
|
|
43
86
|
}
|
|
44
|
-
|
|
87
|
+
/** Host → worker: a `callback-call` succeeded — the `run-module` analogue of `sdk-result`. */
|
|
88
|
+
export interface WorkerCallbackResultMessage {
|
|
89
|
+
readonly type: 'callback-result';
|
|
90
|
+
readonly callId: number;
|
|
91
|
+
readonly value: unknown;
|
|
92
|
+
}
|
|
93
|
+
/** Host → worker: a `callback-call` threw host-side. */
|
|
94
|
+
export interface WorkerCallbackErrorMessage {
|
|
95
|
+
readonly type: 'callback-error';
|
|
96
|
+
readonly callId: number;
|
|
97
|
+
readonly message: string;
|
|
98
|
+
}
|
|
99
|
+
export type WorkerHostReplyMessage = WorkerSdkResultMessage | WorkerSdkErrorMessage | WorkerCallbackResultMessage | WorkerCallbackErrorMessage;
|
|
45
100
|
/** Worker → host: `code` completed and returned a JSON-safe value. */
|
|
46
101
|
export interface WorkerResultMessage {
|
|
47
102
|
readonly id: number;
|
|
@@ -54,5 +109,12 @@ export interface WorkerErrorMessage {
|
|
|
54
109
|
readonly type: 'error';
|
|
55
110
|
readonly message: string;
|
|
56
111
|
}
|
|
57
|
-
|
|
112
|
+
/** Worker → host: `run-module`'s callback object is calling one of its named host callbacks — `run`'s `sdk-call`, generalised past plugin capability names. */
|
|
113
|
+
export interface WorkerCallbackCallMessage {
|
|
114
|
+
readonly type: 'callback-call';
|
|
115
|
+
readonly callId: number;
|
|
116
|
+
readonly name: string;
|
|
117
|
+
readonly args: readonly unknown[];
|
|
118
|
+
}
|
|
119
|
+
export type WorkerGuestMessage = WorkerResultMessage | WorkerErrorMessage | WorkerSdkCallMessage | WorkerCallbackCallMessage;
|
|
58
120
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;CAChD;AAED,yHAAyH;AACzH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,kGAAkG;IAClG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,41 @@ export interface IsolatedRunResult {
|
|
|
64
64
|
* primitive to build on.
|
|
65
65
|
*/
|
|
66
66
|
export declare function runIsolated(code: string, options?: RunIsolatedOptions): Promise<IsolatedRunResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Fiche 73 task 3's real deliverable, and the answer to piège n°1
|
|
69
|
+
* (`docs/plans/73-themes-locaux-bac-a-sable-ia.md` § 6): the true unknown
|
|
70
|
+
* was never "can an `HtmlElement` tree survive the worker boundary" — it is
|
|
71
|
+
* plain data, and `toSerializable`'s existing JSON round-trip already
|
|
72
|
+
* handles it exactly like any other plugin result. The real unknown was
|
|
73
|
+
* that a theme's `RenderContext` is NOT plain data: `t()`/`image()`/
|
|
74
|
+
* `link()`/`content.entry()` are live, host-bound methods a theme calls
|
|
75
|
+
* *during* rendering. This reuses the exact request/reply RPC shape
|
|
76
|
+
* `sdk-call` already proves for plugin capabilities (`callback-call`,
|
|
77
|
+
* `protocol.ts`), generalised past the plugin-specific capability
|
|
78
|
+
* vocabulary — a caller names whatever host callbacks the module's export
|
|
79
|
+
* may call, and the guest hands it one flat, RPC-backed callback object as
|
|
80
|
+
* its last argument.
|
|
81
|
+
*
|
|
82
|
+
* A real module — real `import` statements, unlike `runIsolated`'s
|
|
83
|
+
* import-less `vm.Script` string — so this worker carries a DIFFERENT,
|
|
84
|
+
* weaker isolation guarantee, documented rather than hidden: see
|
|
85
|
+
* `module-render-entry.mjs`'s own header, and ADR-0034's "point de
|
|
86
|
+
* vigilance". This function alone is not the sandbox fiche 73 still needs
|
|
87
|
+
* to build (task 4) — it is the proof that the sandbox's render path has
|
|
88
|
+
* somewhere real to stand on.
|
|
89
|
+
*/
|
|
90
|
+
export interface RunIsolatedModuleOptions {
|
|
91
|
+
/** A `file://` URL, already resolved host-side exactly as `loadTheme` resolves one — the worker does its own real `import()` against it. */
|
|
92
|
+
readonly moduleUrl: URL;
|
|
93
|
+
readonly exportName: string;
|
|
94
|
+
/** Structured-cloneable positional arguments, passed before the assembled callback object. */
|
|
95
|
+
readonly args?: readonly unknown[];
|
|
96
|
+
/** Real host-side implementations, keyed by the same names `callbackNames` requests — a name with no matching handler here is a caller mistake, never a security gap (the guest simply never sees a callback the host was not told to answer). */
|
|
97
|
+
readonly callbacks?: Readonly<Record<string, (args: readonly unknown[]) => unknown>>;
|
|
98
|
+
readonly timeoutMs?: number;
|
|
99
|
+
readonly maxOldGenerationSizeMb?: number;
|
|
100
|
+
}
|
|
101
|
+
export declare function runIsolatedModule(options: RunIsolatedModuleOptions): Promise<IsolatedRunResult>;
|
|
67
102
|
/** Emitted once, synchronously, the moment a plugin is disabled — never a hard dependency on any specific notification transport (channels, email, ...); wiring this to a real alert is an integration decision for whatever assembles a site, not this package's job. */
|
|
68
103
|
export interface PluginDisabledEvent {
|
|
69
104
|
readonly pluginName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ import { resolveGrantedCapabilities } from '../permissions/resolve.js';
|
|
|
16
16
|
* complete policy layer on top of it.
|
|
17
17
|
*/
|
|
18
18
|
const SANDBOX_ENTRY_URL = new URL('../guest/sandbox-entry.mjs', import.meta.url);
|
|
19
|
+
const MODULE_RENDER_ENTRY_URL = new URL('../guest/module-render-entry.mjs', import.meta.url);
|
|
19
20
|
const DEFAULT_TIMEOUT_MS = 2000;
|
|
20
21
|
const DEFAULT_MAX_OLD_GENERATION_MB = 64;
|
|
21
22
|
/**
|
|
@@ -126,6 +127,11 @@ export async function runIsolated(code, options = {}) {
|
|
|
126
127
|
finish({ ok: false, error: message.message });
|
|
127
128
|
return;
|
|
128
129
|
}
|
|
130
|
+
// `sandbox-entry.mjs` (the guest this worker actually runs) only ever
|
|
131
|
+
// sends `sdk-call` besides `result`/`error` — `callback-call` belongs
|
|
132
|
+
// to `runIsolatedModule`'s own, different guest entry.
|
|
133
|
+
if (message.type === 'callback-call')
|
|
134
|
+
return;
|
|
129
135
|
void handleSdkCall(message, handlers, grantedCapabilities, worker);
|
|
130
136
|
});
|
|
131
137
|
worker.once('error', (error) => {
|
|
@@ -142,6 +148,99 @@ export async function runIsolated(code, options = {}) {
|
|
|
142
148
|
worker.postMessage(request);
|
|
143
149
|
});
|
|
144
150
|
}
|
|
151
|
+
async function handleCallbackCall(message, callbacks, worker) {
|
|
152
|
+
const handler = callbacks[message.name];
|
|
153
|
+
if (handler === undefined) {
|
|
154
|
+
worker.postMessage({
|
|
155
|
+
type: 'callback-error',
|
|
156
|
+
callId: message.callId,
|
|
157
|
+
message: `no host callback registered for "${message.name}"`,
|
|
158
|
+
});
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
const value = await handler(message.args);
|
|
163
|
+
worker.postMessage({ type: 'callback-result', callId: message.callId, value });
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
worker.postMessage({
|
|
167
|
+
type: 'callback-error',
|
|
168
|
+
callId: message.callId,
|
|
169
|
+
message: error instanceof Error ? error.message : String(error),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export async function runIsolatedModule(options) {
|
|
174
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
175
|
+
const callbacks = options.callbacks ?? {};
|
|
176
|
+
const id = nextRequestId;
|
|
177
|
+
nextRequestId += 1;
|
|
178
|
+
const worker = new Worker(MODULE_RENDER_ENTRY_URL, {
|
|
179
|
+
// Same structural protections `runIsolated` gives a classic-script
|
|
180
|
+
// run — empty env, bounded heap, no inherited stdio — even though this
|
|
181
|
+
// worker's own module loader is real (see this function's own doc
|
|
182
|
+
// comment on why that is a materially different guarantee).
|
|
183
|
+
env: {},
|
|
184
|
+
argv: [],
|
|
185
|
+
resourceLimits: {
|
|
186
|
+
maxOldGenerationSizeMb: options.maxOldGenerationSizeMb ?? DEFAULT_MAX_OLD_GENERATION_MB,
|
|
187
|
+
maxYoungGenerationSizeMb: 16,
|
|
188
|
+
},
|
|
189
|
+
stdout: false,
|
|
190
|
+
stderr: false,
|
|
191
|
+
});
|
|
192
|
+
const startedAt = Date.now();
|
|
193
|
+
return await new Promise((resolve) => {
|
|
194
|
+
let settled = false;
|
|
195
|
+
const finish = (result) => {
|
|
196
|
+
if (settled)
|
|
197
|
+
return;
|
|
198
|
+
settled = true;
|
|
199
|
+
clearTimeout(timer);
|
|
200
|
+
void worker.terminate();
|
|
201
|
+
resolve({ ...result, durationMs: Date.now() - startedAt });
|
|
202
|
+
};
|
|
203
|
+
const timer = setTimeout(() => {
|
|
204
|
+
finish({ ok: false, error: 'module render worker timed out', reason: 'timeout' });
|
|
205
|
+
}, timeoutMs);
|
|
206
|
+
worker.on('message', (message) => {
|
|
207
|
+
if (message.type === 'result') {
|
|
208
|
+
finish({ ok: true, value: message.value });
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (message.type === 'error') {
|
|
212
|
+
finish({ ok: false, error: message.message });
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (message.type === 'callback-call') {
|
|
216
|
+
void handleCallbackCall(message, callbacks, worker);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// A plugin `sdk-call` message reaching this worker would mean the
|
|
220
|
+
// wrong guest entry ran — nothing sends one here, so there is
|
|
221
|
+
// nothing to route it to.
|
|
222
|
+
});
|
|
223
|
+
worker.once('error', (error) => {
|
|
224
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
225
|
+
finish({ ok: false, error: message, reason: classifyFailure(message) });
|
|
226
|
+
});
|
|
227
|
+
worker.once('exit', (exitCode) => {
|
|
228
|
+
if (exitCode !== 0) {
|
|
229
|
+
const message = `module render worker exited with code ${exitCode}`;
|
|
230
|
+
finish({ ok: false, error: message, reason: 'crash' });
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
const request = {
|
|
234
|
+
id,
|
|
235
|
+
type: 'run-module',
|
|
236
|
+
moduleUrl: options.moduleUrl.href,
|
|
237
|
+
exportName: options.exportName,
|
|
238
|
+
args: options.args ?? [],
|
|
239
|
+
callbackNames: Object.keys(callbacks),
|
|
240
|
+
};
|
|
241
|
+
worker.postMessage(request);
|
|
242
|
+
});
|
|
243
|
+
}
|
|
145
244
|
/**
|
|
146
245
|
* The real entry point for actually running a resolved plugin — unlike
|
|
147
246
|
* `runIsolated`, which task 4 left accepting an externally-decided
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../src/host/worker-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { CapabilityCallContext, CapabilityHandler } from './host/capabilities.js';
|
|
2
2
|
export { createContentReadHandler, createHttpFetchHandler, createStorageReadHandler, createStorageWriteHandler, } from './host/capabilities.js';
|
|
3
|
-
export type { IsolatedRunResult, PluginDisabledEvent, RunIsolatedOptions, RunPluginOptions, } from './host/worker-runner.js';
|
|
4
|
-
export { runIsolated, runIsolatedOrThrow, runPlugin } from './host/worker-runner.js';
|
|
3
|
+
export type { IsolatedRunResult, PluginDisabledEvent, RunIsolatedModuleOptions, RunIsolatedOptions, RunPluginOptions, } from './host/worker-runner.js';
|
|
4
|
+
export { runIsolated, runIsolatedModule, runIsolatedOrThrow, runPlugin, } from './host/worker-runner.js';
|
|
5
5
|
export type { LoadPluginOptions, PluginSource, ResolvedPlugin } from './loader.js';
|
|
6
6
|
export { loadMarketplacePlugin, loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus, } from './loader.js';
|
|
7
7
|
export type { PluginBlockProvision, PluginCapabilityName, PluginManifest, PluginManifestIssue, PluginProvides, PluginRuntime, } from './manifest.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createContentReadHandler, createHttpFetchHandler, createStorageReadHandler, createStorageWriteHandler, } from './host/capabilities.js';
|
|
2
|
-
export { runIsolated, runIsolatedOrThrow, runPlugin } from './host/worker-runner.js';
|
|
2
|
+
export { runIsolated, runIsolatedModule, runIsolatedOrThrow, runPlugin, } from './host/worker-runner.js';
|
|
3
3
|
export { loadMarketplacePlugin, loadPlugin, PLUGIN_MANIFEST_FILE_NAMES, resolveSignatureStatus, } from './loader.js';
|
|
4
4
|
export { definePlugin, PLUGIN_CAPABILITY_NAMES, PLUGIN_RUNTIMES, } from './manifest.js';
|
|
5
5
|
export { DESCRIBABLE_CAPABILITY_NAMES, describeCapability } from './permissions/describe.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,GACV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,aAAa,CAAA;AASpB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAA;AAKtB,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAM5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EACL,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAO/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAa/D,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAUhG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAS9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQ9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC7F,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
|
|
@@ -40,11 +40,15 @@ export interface ThemeRegistry {
|
|
|
40
40
|
* contract inspection runs, the same way an unlinked channel identity is
|
|
41
41
|
* refused before a command is even looked up (L6 task 3's precedent).
|
|
42
42
|
* (2) **Contrat vérifié** — contract D's real install-time check
|
|
43
|
-
* (`verifyTheme`, `@cogenta/render`):
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
43
|
+
* (`verifyTheme`, `@cogenta/render`): no forbidden import (`node:fs`,
|
|
44
|
+
* `@cogenta/core`, ...) appears anywhere in the theme's real sources, and
|
|
45
|
+
* its default skin (`tokens.json`) passes `validateSkin` — contract D's
|
|
46
|
+
* token rules, reused exactly as the Skins gallery (task 10) reused them,
|
|
47
|
+
* not reimplemented. Block-vocabulary coverage is no longer part of this
|
|
48
|
+
* gate (product decision: a theme has the same design freedom a WordPress
|
|
49
|
+
* theme or a Strapi frontend already has, custom blocks included) — a
|
|
50
|
+
* submission missing coverage of a shared block still accepts, the gap
|
|
51
|
+
* only shown as information.
|
|
48
52
|
*
|
|
49
53
|
* No human-review step exists for themes ("Signature, contrat vérifié" is
|
|
50
54
|
* the lot's whole named requirement — no "revue" column value, unlike
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/registries/themes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAKzF,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAA;AAE3D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,uGAAuG;IACvG,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/registries/themes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAKzF,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAA;AAE3D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,uGAAuG;IACvG,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChE,YAAY,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAA;IACtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;CACpD;AA0BD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,oBAAyB,EAClC,GAAG,GAAE,MAAM,MAAiB,GAC3B,aAAa,CA2Ef"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/registries/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAuB,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/registries/themes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogenta/plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Plugin manifest schema, loader, worker isolation and permission model.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"zod": "^4.4.3",
|
|
31
|
-
"@cogenta/
|
|
32
|
-
"@cogenta/
|
|
33
|
-
"@cogenta/
|
|
31
|
+
"@cogenta/agents": "0.6.0",
|
|
32
|
+
"@cogenta/core": "0.8.0",
|
|
33
|
+
"@cogenta/render": "0.2.3"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"typescript": "^7.0.2",
|
|
37
37
|
"vitest": "^4.1.10",
|
|
38
|
-
"@cogenta/blocks": "1.0.
|
|
39
|
-
"@cogenta/schema": "0.5.
|
|
38
|
+
"@cogenta/blocks": "1.0.3",
|
|
39
|
+
"@cogenta/schema": "0.5.1"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"build": "tsc -p tsconfig.json && node -e \"const fs=require('node:fs');fs.mkdirSync('dist/guest',{recursive:true});fs.copyFileSync('src/guest/
|
|
42
|
+
"build": "tsc -p tsconfig.json && node -e \"const fs=require('node:fs');fs.mkdirSync('dist/guest',{recursive:true});for(const f of ['sandbox-entry.mjs','module-render-entry.mjs'])fs.copyFileSync('src/guest/'+f,'dist/guest/'+f)\"",
|
|
43
43
|
"typecheck": "tsc -p tsconfig.typecheck.json",
|
|
44
44
|
"test": "vitest run --passWithNoTests"
|
|
45
45
|
}
|