@manifesto-ai/sdk 3.4.0 → 3.5.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/README.md +19 -12
- package/dist/chunk-N774NZRO.js +2 -0
- package/dist/chunk-N774NZRO.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -503
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +8 -3
- package/dist/provider.js +1 -16
- package/dist/types.d.ts +22 -2
- package/package.json +4 -4
- package/dist/chunk-2YBJP5JT.js +0 -747
- package/dist/chunk-2YBJP5JT.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,505 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
DisposedError,
|
|
6
|
-
ManifestoError,
|
|
7
|
-
ReservedEffectError,
|
|
8
|
-
activateComposable,
|
|
9
|
-
attachRuntimeKernelFactory,
|
|
10
|
-
buildSnapshotProjectionPlan,
|
|
11
|
-
cloneAndDeepFreeze,
|
|
12
|
-
createBaseRuntimeInstance,
|
|
13
|
-
createRuntimeKernel,
|
|
14
|
-
projectEffectContextSnapshot
|
|
15
|
-
} from "./chunk-2YBJP5JT.js";
|
|
1
|
+
import{a as l,b as p,c as h,d as k,e as D,f as b,g,h as R,i as u,j as E,n as P,o as y,p as x}from"./chunk-N774NZRO.js";import{createHostContextProvider as $,createHost as _,defaultRuntime as H}from"@manifesto-ai/host";import{createIntent as L,extractDefaults as N,hashSchemaSync as z,semanticPathToPatchPath as G}from"@manifesto-ai/core";import{compileMelDomain as B,parse as F,tokenize as K}from"@manifesto-ai/compiler";var S="system.get",j="system.",q=Object.freeze({__baseLaws:!0});function U(e,t){if(S in t)throw new p(S);let n=V(e);Y(n.schema);let r={_laws:q,schema:n.schema,activate(){P(r);let o=C(n.schema,n.projectionPlan,t);return x(y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()}))}};return E(r,()=>{let o=C(n.schema,n.projectionPlan,t);return y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()})})}function V(e){let t=typeof e=="string"?W(e):{schema:e,actionParamMetadata:v(e)},n=X(t.schema);return{schema:n,actionParamMetadata:t.actionParamMetadata,projectionPlan:b(n)}}function W(e){let t=B(e,{mode:"domain"});if(t.errors.length>0){let r=t.errors.map(o=>{let a=o.location;if(!a||a.start.line===0&&a.start.column===0)return`[${o.code}] ${o.message}`;let s=`[${o.code}] ${o.message} (${a.start.line}:${a.start.column})`,c=e.split(`
|
|
2
|
+
`)[a.start.line-1];if(!c)return s;let d=String(a.start.line).padStart(4," "),i=Math.max(1,a.end.line===a.start.line?Math.min(a.end.column-a.start.column,Math.max(1,c.length-a.start.column+1)):1),f=" ".repeat(d.length+3+a.start.column-1);return`${s}
|
|
3
|
+
${d} | ${c}
|
|
4
|
+
${f}${"^".repeat(i)}`}).join(`
|
|
16
5
|
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
createHost
|
|
20
|
-
} from "@manifesto-ai/host";
|
|
21
|
-
import {
|
|
22
|
-
createIntent as createCoreIntent,
|
|
23
|
-
extractDefaults,
|
|
24
|
-
hashSchemaSync,
|
|
25
|
-
semanticPathToPatchPath
|
|
26
|
-
} from "@manifesto-ai/core";
|
|
27
|
-
import {
|
|
28
|
-
compileMelDomain,
|
|
29
|
-
parse as parseMel,
|
|
30
|
-
tokenize as tokenizeMel
|
|
31
|
-
} from "@manifesto-ai/compiler";
|
|
32
|
-
var RESERVED_EFFECT_TYPE = "system.get";
|
|
33
|
-
var RESERVED_NAMESPACE_PREFIX = "system.";
|
|
34
|
-
var BASE_LAWS = Object.freeze({ __baseLaws: true });
|
|
35
|
-
function createManifesto(schemaInput, effects) {
|
|
36
|
-
if (RESERVED_EFFECT_TYPE in effects) {
|
|
37
|
-
throw new ReservedEffectError(RESERVED_EFFECT_TYPE);
|
|
38
|
-
}
|
|
39
|
-
const resolved = resolveSchema(schemaInput);
|
|
40
|
-
validateReservedNamespaces(resolved.schema);
|
|
41
|
-
const manifesto = {
|
|
42
|
-
_laws: BASE_LAWS,
|
|
43
|
-
schema: resolved.schema,
|
|
44
|
-
activate() {
|
|
45
|
-
activateComposable(manifesto);
|
|
46
|
-
return createBaseRuntimeInstance(
|
|
47
|
-
createRuntimeKernel({
|
|
48
|
-
schema: resolved.schema,
|
|
49
|
-
projectionPlan: resolved.projectionPlan,
|
|
50
|
-
host: createInternalHost(
|
|
51
|
-
resolved.schema,
|
|
52
|
-
resolved.projectionPlan,
|
|
53
|
-
effects
|
|
54
|
-
),
|
|
55
|
-
MEL: buildTypedMel(resolved.schema, resolved.actionParamMetadata),
|
|
56
|
-
createIntent: buildCreateIntent()
|
|
57
|
-
})
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
return attachRuntimeKernelFactory(
|
|
62
|
-
manifesto,
|
|
63
|
-
() => createRuntimeKernel({
|
|
64
|
-
schema: resolved.schema,
|
|
65
|
-
projectionPlan: resolved.projectionPlan,
|
|
66
|
-
host: createInternalHost(resolved.schema, resolved.projectionPlan, effects),
|
|
67
|
-
MEL: buildTypedMel(resolved.schema, resolved.actionParamMetadata),
|
|
68
|
-
createIntent: buildCreateIntent()
|
|
69
|
-
})
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
function resolveSchema(schema) {
|
|
73
|
-
const resolved = typeof schema === "string" ? compileSchema(schema) : {
|
|
74
|
-
schema,
|
|
75
|
-
actionParamMetadata: deriveActionParamMetadata(schema)
|
|
76
|
-
};
|
|
77
|
-
const normalizedSchema = withPlatformNamespaces(resolved.schema);
|
|
78
|
-
return {
|
|
79
|
-
schema: normalizedSchema,
|
|
80
|
-
actionParamMetadata: resolved.actionParamMetadata,
|
|
81
|
-
projectionPlan: buildSnapshotProjectionPlan(normalizedSchema)
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
function compileSchema(source) {
|
|
85
|
-
const result = compileMelDomain(source, { mode: "domain" });
|
|
86
|
-
if (result.errors.length > 0) {
|
|
87
|
-
const formatted = result.errors.map((diagnostic) => {
|
|
88
|
-
const loc = diagnostic.location;
|
|
89
|
-
if (!loc || loc.start.line === 0 && loc.start.column === 0) {
|
|
90
|
-
return `[${diagnostic.code}] ${diagnostic.message}`;
|
|
91
|
-
}
|
|
92
|
-
const header = `[${diagnostic.code}] ${diagnostic.message} (${loc.start.line}:${loc.start.column})`;
|
|
93
|
-
const line = source.split("\n")[loc.start.line - 1];
|
|
94
|
-
if (!line) {
|
|
95
|
-
return header;
|
|
96
|
-
}
|
|
97
|
-
const lineNum = String(loc.start.line).padStart(4, " ");
|
|
98
|
-
const underlineLen = Math.max(
|
|
99
|
-
1,
|
|
100
|
-
loc.end.line === loc.start.line ? Math.min(loc.end.column - loc.start.column, Math.max(1, line.length - loc.start.column + 1)) : 1
|
|
101
|
-
);
|
|
102
|
-
const padding = " ".repeat(lineNum.length + 3 + loc.start.column - 1);
|
|
103
|
-
return `${header}
|
|
104
|
-
${lineNum} | ${line}
|
|
105
|
-
${padding}${"^".repeat(underlineLen)}`;
|
|
106
|
-
}).join("\n\n");
|
|
107
|
-
throw new CompileError(result.errors, `MEL compilation failed:
|
|
108
|
-
${formatted}`);
|
|
109
|
-
}
|
|
110
|
-
if (!result.schema) {
|
|
111
|
-
throw new ManifestoError("COMPILE_ERROR", "MEL compilation produced no schema");
|
|
112
|
-
}
|
|
113
|
-
const schema = result.schema;
|
|
114
|
-
return {
|
|
115
|
-
schema,
|
|
116
|
-
actionParamMetadata: deriveActionParamMetadata(
|
|
117
|
-
schema,
|
|
118
|
-
extractActionParamOrderFromMel(source)
|
|
119
|
-
)
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
function withPlatformNamespaces(schema) {
|
|
123
|
-
const fields = { ...schema.state.fields };
|
|
124
|
-
let changed = false;
|
|
125
|
-
if (!fields.$host) {
|
|
126
|
-
fields.$host = {
|
|
127
|
-
type: "object",
|
|
128
|
-
required: false,
|
|
129
|
-
default: {}
|
|
130
|
-
};
|
|
131
|
-
changed = true;
|
|
132
|
-
} else if (fields.$host.type !== "object") {
|
|
133
|
-
throw new ManifestoError("SCHEMA_ERROR", "Reserved namespace '$host' must be an object field");
|
|
134
|
-
} else if (fields.$host.default === void 0) {
|
|
135
|
-
fields.$host = { ...fields.$host, default: {} };
|
|
136
|
-
changed = true;
|
|
137
|
-
}
|
|
138
|
-
if (!fields.$mel) {
|
|
139
|
-
fields.$mel = {
|
|
140
|
-
type: "object",
|
|
141
|
-
required: false,
|
|
142
|
-
default: { guards: { intent: {} } },
|
|
143
|
-
fields: {
|
|
144
|
-
guards: {
|
|
145
|
-
type: "object",
|
|
146
|
-
required: false,
|
|
147
|
-
default: { intent: {} },
|
|
148
|
-
fields: {
|
|
149
|
-
intent: {
|
|
150
|
-
type: "object",
|
|
151
|
-
required: false,
|
|
152
|
-
default: {}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
changed = true;
|
|
159
|
-
} else if (fields.$mel.type !== "object") {
|
|
160
|
-
throw new ManifestoError("SCHEMA_ERROR", "Reserved namespace '$mel' must be an object field");
|
|
161
|
-
} else {
|
|
162
|
-
let nextMel = fields.$mel;
|
|
163
|
-
if (nextMel.default === void 0) {
|
|
164
|
-
nextMel = { ...nextMel, default: { guards: { intent: {} } } };
|
|
165
|
-
changed = true;
|
|
166
|
-
}
|
|
167
|
-
const melFields = nextMel.fields ?? {};
|
|
168
|
-
const guardsField = melFields.guards;
|
|
169
|
-
if (!guardsField) {
|
|
170
|
-
nextMel = {
|
|
171
|
-
...nextMel,
|
|
172
|
-
fields: {
|
|
173
|
-
...melFields,
|
|
174
|
-
guards: {
|
|
175
|
-
type: "object",
|
|
176
|
-
required: false,
|
|
177
|
-
default: { intent: {} },
|
|
178
|
-
fields: {
|
|
179
|
-
intent: {
|
|
180
|
-
type: "object",
|
|
181
|
-
required: false,
|
|
182
|
-
default: {}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
changed = true;
|
|
189
|
-
} else if (guardsField.type !== "object") {
|
|
190
|
-
throw new ManifestoError("SCHEMA_ERROR", "Reserved namespace '$mel.guards' must be an object field");
|
|
191
|
-
} else {
|
|
192
|
-
let nextGuards = guardsField;
|
|
193
|
-
if (nextGuards.default === void 0) {
|
|
194
|
-
nextGuards = { ...nextGuards, default: { intent: {} } };
|
|
195
|
-
changed = true;
|
|
196
|
-
}
|
|
197
|
-
const guardFields = nextGuards.fields ?? {};
|
|
198
|
-
const intentField = guardFields.intent;
|
|
199
|
-
if (!intentField) {
|
|
200
|
-
nextGuards = {
|
|
201
|
-
...nextGuards,
|
|
202
|
-
fields: {
|
|
203
|
-
...guardFields,
|
|
204
|
-
intent: {
|
|
205
|
-
type: "object",
|
|
206
|
-
required: false,
|
|
207
|
-
default: {}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
changed = true;
|
|
212
|
-
} else if (intentField.type !== "object") {
|
|
213
|
-
throw new ManifestoError("SCHEMA_ERROR", "Reserved namespace '$mel.guards.intent' must be an object field");
|
|
214
|
-
} else if (intentField.default === void 0) {
|
|
215
|
-
nextGuards = {
|
|
216
|
-
...nextGuards,
|
|
217
|
-
fields: {
|
|
218
|
-
...guardFields,
|
|
219
|
-
intent: { ...intentField, default: {} }
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
changed = true;
|
|
223
|
-
}
|
|
224
|
-
if (nextGuards !== guardsField) {
|
|
225
|
-
nextMel = {
|
|
226
|
-
...nextMel,
|
|
227
|
-
fields: {
|
|
228
|
-
...melFields,
|
|
229
|
-
guards: nextGuards
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (nextMel !== fields.$mel) {
|
|
235
|
-
fields.$mel = nextMel;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
if (!changed) {
|
|
239
|
-
return schema;
|
|
240
|
-
}
|
|
241
|
-
const nextSchema = {
|
|
242
|
-
...schema,
|
|
243
|
-
state: {
|
|
244
|
-
...schema.state,
|
|
245
|
-
fields
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
const { hash: _hash, ...schemaWithoutHash } = nextSchema;
|
|
249
|
-
return {
|
|
250
|
-
...nextSchema,
|
|
251
|
-
hash: hashSchemaSync(schemaWithoutHash)
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
function validateReservedNamespaces(schema) {
|
|
255
|
-
for (const actionType of Object.keys(schema.actions ?? {})) {
|
|
256
|
-
if (actionType.startsWith(RESERVED_NAMESPACE_PREFIX)) {
|
|
257
|
-
throw new ManifestoError(
|
|
258
|
-
"RESERVED_NAMESPACE",
|
|
259
|
-
`Action type "${actionType}" uses reserved namespace prefix "${RESERVED_NAMESPACE_PREFIX}"`
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
function buildTypedMel(schema, actionParamMetadata) {
|
|
265
|
-
const actions = Object.fromEntries(
|
|
266
|
-
Object.keys(schema.actions).map((name) => {
|
|
267
|
-
const ref = {
|
|
268
|
-
__kind: "ActionRef",
|
|
269
|
-
name
|
|
270
|
-
};
|
|
271
|
-
Object.defineProperty(ref, ACTION_PARAM_NAMES, {
|
|
272
|
-
enumerable: false,
|
|
273
|
-
configurable: false,
|
|
274
|
-
writable: false,
|
|
275
|
-
value: Object.hasOwn(actionParamMetadata, name) ? actionParamMetadata[name] : []
|
|
276
|
-
});
|
|
277
|
-
return [name, Object.freeze(ref)];
|
|
278
|
-
})
|
|
279
|
-
);
|
|
280
|
-
const state = Object.fromEntries(
|
|
281
|
-
Object.keys(schema.state.fields).filter((name) => !name.startsWith("$")).map((name) => [name, Object.freeze({
|
|
282
|
-
__kind: "FieldRef",
|
|
283
|
-
path: name
|
|
284
|
-
})])
|
|
285
|
-
);
|
|
286
|
-
const computed = Object.fromEntries(
|
|
287
|
-
Object.keys(schema.computed.fields).map((name) => [name, Object.freeze({
|
|
288
|
-
__kind: "ComputedRef",
|
|
289
|
-
path: name
|
|
290
|
-
})])
|
|
291
|
-
);
|
|
292
|
-
return Object.freeze({
|
|
293
|
-
actions: Object.freeze(actions),
|
|
294
|
-
state: Object.freeze(state),
|
|
295
|
-
computed: Object.freeze(computed)
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
function buildCreateIntent() {
|
|
299
|
-
return (action, ...args) => {
|
|
300
|
-
const actionRef = action;
|
|
301
|
-
const intentId = generateUUID();
|
|
302
|
-
const input = packIntentInput(actionRef, args);
|
|
303
|
-
return createCoreIntent(
|
|
304
|
-
String(action.name),
|
|
305
|
-
input,
|
|
306
|
-
intentId
|
|
307
|
-
);
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
function getActionParamNames(input) {
|
|
311
|
-
if (!input || input.type !== "object" || !input.fields) {
|
|
312
|
-
return [];
|
|
313
|
-
}
|
|
314
|
-
return Object.keys(input.fields);
|
|
315
|
-
}
|
|
316
|
-
function deriveActionParamMetadata(schema, actionParamOrder) {
|
|
317
|
-
return Object.freeze(Object.fromEntries(
|
|
318
|
-
Object.entries(schema.actions).map(([name, action]) => {
|
|
319
|
-
const preferredOrder = actionParamOrder?.[name];
|
|
320
|
-
if (preferredOrder && preferredOrder.length > 0) {
|
|
321
|
-
return [name, Object.freeze([...preferredOrder])];
|
|
322
|
-
}
|
|
323
|
-
if (!action.input || action.input.type !== "object" || !action.input.fields) {
|
|
324
|
-
return [name, []];
|
|
325
|
-
}
|
|
326
|
-
const fieldNames = getActionParamNames(action.input);
|
|
327
|
-
return [name, fieldNames.length <= 1 ? fieldNames : null];
|
|
328
|
-
})
|
|
329
|
-
));
|
|
330
|
-
}
|
|
331
|
-
function extractActionParamOrderFromMel(source) {
|
|
332
|
-
const lexed = tokenizeMel(source);
|
|
333
|
-
if (lexed.diagnostics.some((diagnostic) => diagnostic.severity === "error")) {
|
|
334
|
-
return void 0;
|
|
335
|
-
}
|
|
336
|
-
const parsed = parseMel(lexed.tokens);
|
|
337
|
-
if (!parsed.program) {
|
|
338
|
-
return void 0;
|
|
339
|
-
}
|
|
340
|
-
return Object.freeze(Object.fromEntries(
|
|
341
|
-
parsed.program.domain.members.filter((member) => member.kind === "action").map((action) => [action.name, Object.freeze(action.params.map((param) => param.name))])
|
|
342
|
-
));
|
|
343
|
-
}
|
|
344
|
-
function packIntentInput(action, args) {
|
|
345
|
-
const paramNames = Object.hasOwn(action, ACTION_PARAM_NAMES) ? action[ACTION_PARAM_NAMES] : [];
|
|
346
|
-
if (args.length === 0) {
|
|
347
|
-
return void 0;
|
|
348
|
-
}
|
|
349
|
-
if (paramNames === null) {
|
|
350
|
-
if (args.length === 1 && isPlainObject(args[0])) {
|
|
351
|
-
return args[0];
|
|
352
|
-
}
|
|
353
|
-
throw new ManifestoError(
|
|
354
|
-
"INVALID_INTENT_ARGS",
|
|
355
|
-
`Action "${String(action.name)}" requires a single object argument because positional parameter metadata is unavailable`
|
|
356
|
-
);
|
|
357
|
-
}
|
|
358
|
-
if (paramNames.length === 0) {
|
|
359
|
-
if (args.length === 1) {
|
|
360
|
-
return args[0];
|
|
361
|
-
}
|
|
362
|
-
throw new ManifestoError(
|
|
363
|
-
"INVALID_INTENT_ARGS",
|
|
364
|
-
`Action "${String(action.name)}" does not accept multiple positional arguments`
|
|
365
|
-
);
|
|
366
|
-
}
|
|
367
|
-
if (args.length === 1 && isPlainObject(args[0]) && paramNames.length > 1) {
|
|
368
|
-
return args[0];
|
|
369
|
-
}
|
|
370
|
-
return Object.fromEntries(args.map((value, index) => [
|
|
371
|
-
paramNames[index] ?? `arg${index}`,
|
|
372
|
-
value
|
|
373
|
-
]));
|
|
374
|
-
}
|
|
375
|
-
function isPlainObject(value) {
|
|
376
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
377
|
-
}
|
|
378
|
-
function createInternalHost(schema, projectionPlan, effects) {
|
|
379
|
-
const host = createHost(schema, {
|
|
380
|
-
initialData: extractDefaults(schema.state)
|
|
381
|
-
});
|
|
382
|
-
host.registerEffect(RESERVED_EFFECT_TYPE, async (_type, params, ctx) => {
|
|
383
|
-
const { patches } = executeSystemGet(params, ctx.snapshot);
|
|
384
|
-
return patches;
|
|
385
|
-
});
|
|
386
|
-
for (const [effectType, appHandler] of Object.entries(effects)) {
|
|
387
|
-
const hostHandler = async (_type, params, ctx) => {
|
|
388
|
-
const patches = await appHandler(params, {
|
|
389
|
-
snapshot: cloneAndDeepFreeze(
|
|
390
|
-
projectEffectContextSnapshot(ctx.snapshot, projectionPlan)
|
|
391
|
-
)
|
|
392
|
-
});
|
|
393
|
-
return patches;
|
|
394
|
-
};
|
|
395
|
-
host.registerEffect(effectType, hostHandler);
|
|
396
|
-
}
|
|
397
|
-
return host;
|
|
398
|
-
}
|
|
399
|
-
function isGenerateParams(params) {
|
|
400
|
-
return typeof params === "object" && params !== null && "key" in params && "into" in params;
|
|
401
|
-
}
|
|
402
|
-
function executeSystemGet(params, snapshot) {
|
|
403
|
-
if (isGenerateParams(params)) {
|
|
404
|
-
return {
|
|
405
|
-
patches: [{
|
|
406
|
-
op: "set",
|
|
407
|
-
path: normalizeTargetPath(params.into),
|
|
408
|
-
value: generateSystemValue(params.key)
|
|
409
|
-
}]
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
const { path, target } = params;
|
|
413
|
-
const result = resolvePathValue(path, snapshot);
|
|
414
|
-
if (!target) {
|
|
415
|
-
return { patches: [] };
|
|
416
|
-
}
|
|
417
|
-
return {
|
|
418
|
-
patches: [{
|
|
419
|
-
op: "set",
|
|
420
|
-
path: normalizeTargetPath(target),
|
|
421
|
-
value: result.value
|
|
422
|
-
}]
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
function generateSystemValue(key) {
|
|
426
|
-
switch (key) {
|
|
427
|
-
case "uuid":
|
|
428
|
-
return generateUUID();
|
|
429
|
-
case "timestamp":
|
|
430
|
-
case "time.now":
|
|
431
|
-
return Date.now();
|
|
432
|
-
case "isoTimestamp":
|
|
433
|
-
return (/* @__PURE__ */ new Date()).toISOString();
|
|
434
|
-
default:
|
|
435
|
-
return null;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
function normalizeTargetPath(path) {
|
|
439
|
-
const normalized = normalizePath(path);
|
|
440
|
-
const withoutDataRoot = normalized.startsWith("data.") ? normalized.slice("data.".length) : normalized;
|
|
441
|
-
return semanticPathToPatchPath(withoutDataRoot);
|
|
442
|
-
}
|
|
443
|
-
function normalizePath(path) {
|
|
444
|
-
if (path.startsWith("/")) {
|
|
445
|
-
return path.slice(1).replace(/\//g, ".");
|
|
446
|
-
}
|
|
447
|
-
return path;
|
|
448
|
-
}
|
|
449
|
-
function resolvePathValue(path, snapshot) {
|
|
450
|
-
const normalized = normalizePath(path);
|
|
451
|
-
const parts = normalized.split(".");
|
|
452
|
-
if (parts.length === 0) {
|
|
453
|
-
return { value: void 0, found: false };
|
|
454
|
-
}
|
|
455
|
-
const [root, ...rest] = parts;
|
|
456
|
-
let current;
|
|
457
|
-
switch (root) {
|
|
458
|
-
case "data":
|
|
459
|
-
current = snapshot.data;
|
|
460
|
-
break;
|
|
461
|
-
case "computed":
|
|
462
|
-
current = snapshot.computed;
|
|
463
|
-
break;
|
|
464
|
-
case "system":
|
|
465
|
-
current = snapshot.system;
|
|
466
|
-
break;
|
|
467
|
-
case "meta":
|
|
468
|
-
current = snapshot.meta;
|
|
469
|
-
break;
|
|
470
|
-
default:
|
|
471
|
-
current = snapshot.data;
|
|
472
|
-
rest.unshift(root);
|
|
473
|
-
break;
|
|
474
|
-
}
|
|
475
|
-
for (const part of rest) {
|
|
476
|
-
if (current === null || current === void 0 || typeof current !== "object") {
|
|
477
|
-
return { value: void 0, found: false };
|
|
478
|
-
}
|
|
479
|
-
current = current[part];
|
|
480
|
-
}
|
|
481
|
-
return { value: current, found: current !== void 0 };
|
|
482
|
-
}
|
|
483
|
-
function generateUUID() {
|
|
484
|
-
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
485
|
-
return crypto.randomUUID();
|
|
486
|
-
}
|
|
487
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (char) => {
|
|
488
|
-
const random = Math.random() * 16 | 0;
|
|
489
|
-
const value = char === "x" ? random : random & 3 | 8;
|
|
490
|
-
return value.toString(16);
|
|
491
|
-
});
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
// src/index.ts
|
|
495
|
-
import { createSnapshot } from "@manifesto-ai/core";
|
|
496
|
-
export {
|
|
497
|
-
AlreadyActivatedError,
|
|
498
|
-
CompileError,
|
|
499
|
-
DisposedError,
|
|
500
|
-
ManifestoError,
|
|
501
|
-
ReservedEffectError,
|
|
502
|
-
createManifesto,
|
|
503
|
-
createSnapshot
|
|
504
|
-
};
|
|
6
|
+
`);throw new h(t.errors,`MEL compilation failed:
|
|
7
|
+
${r}`)}if(!t.schema)throw new l("COMPILE_ERROR","MEL compilation produced no schema");let n=t.schema;return{schema:n,actionParamMetadata:v(n,Q(e))}}function X(e){let t={...e.state.fields},n=!1;if(!t.$host)t.$host={type:"object",required:!1,default:{}},n=!0;else{if(t.$host.type!=="object")throw new l("SCHEMA_ERROR","Reserved namespace '$host' must be an object field");t.$host.default===void 0&&(t.$host={...t.$host,default:{}},n=!0)}if(!t.$mel)t.$mel={type:"object",required:!1,default:{guards:{intent:{}}},fields:{guards:{type:"object",required:!1,default:{intent:{}},fields:{intent:{type:"object",required:!1,default:{}}}}}},n=!0;else{if(t.$mel.type!=="object")throw new l("SCHEMA_ERROR","Reserved namespace '$mel' must be an object field");{let s=t.$mel;s.default===void 0&&(s={...s,default:{guards:{intent:{}}}},n=!0);let c=s.fields??{},d=c.guards;if(!d)s={...s,fields:{...c,guards:{type:"object",required:!1,default:{intent:{}},fields:{intent:{type:"object",required:!1,default:{}}}}}},n=!0;else{if(d.type!=="object")throw new l("SCHEMA_ERROR","Reserved namespace '$mel.guards' must be an object field");{let i=d;i.default===void 0&&(i={...i,default:{intent:{}}},n=!0);let f=i.fields??{},m=f.intent;if(!m)i={...i,fields:{...f,intent:{type:"object",required:!1,default:{}}}},n=!0;else{if(m.type!=="object")throw new l("SCHEMA_ERROR","Reserved namespace '$mel.guards.intent' must be an object field");m.default===void 0&&(i={...i,fields:{...f,intent:{...m,default:{}}}},n=!0)}i!==d&&(s={...s,fields:{...c,guards:i}})}}s!==t.$mel&&(t.$mel=s)}}if(!n)return e;let r={...e,state:{...e.state,fields:t}},{hash:o,...a}=r;return{...r,hash:z(a)}}function Y(e){for(let t of Object.keys(e.actions??{}))if(t.startsWith(j))throw new l("RESERVED_NAMESPACE",`Action type "${t}" uses reserved namespace prefix "${j}"`)}function M(e,t){let n=Object.fromEntries(Object.keys(e.actions).map(a=>{let s={__kind:"ActionRef",name:a};return Object.defineProperty(s,u,{enumerable:!1,configurable:!1,writable:!1,value:Object.hasOwn(t,a)?t[a]:[]}),[a,Object.freeze(s)]})),r=Object.fromEntries(Object.keys(e.state.fields).filter(a=>!a.startsWith("$")).map(a=>[a,Object.freeze({__kind:"FieldRef",name:a})])),o=Object.fromEntries(Object.keys(e.computed.fields).map(a=>[a,Object.freeze({__kind:"ComputedRef",name:a})]));return Object.freeze({actions:Object.freeze(n),state:Object.freeze(r),computed:Object.freeze(o)})}function w(){return(e,...t)=>{let n=e,r=I(),o=Z(n,t);return L(String(e.name),o,r)}}function J(e){return!e||e.type!=="object"||!e.fields?[]:Object.keys(e.fields)}function v(e,t){return Object.freeze(Object.fromEntries(Object.entries(e.actions).map(([n,r])=>{let o=t?.[n];if(o&&o.length>0)return[n,Object.freeze([...o])];if(!r.input||r.input.type!=="object"||!r.input.fields)return[n,[]];let a=J(r.input);return[n,a.length<=1?a:null]})))}function Q(e){let t=K(e);if(t.diagnostics.some(r=>r.severity==="error"))return;let n=F(t.tokens);if(n.program)return Object.freeze(Object.fromEntries(n.program.domain.members.filter(r=>r.kind==="action").map(r=>[r.name,Object.freeze(r.params.map(o=>o.name))])))}function Z(e,t){let n=Object.hasOwn(e,u)?e[u]:[];if(t.length!==0){if(n===null){if(t.length===1&&A(t[0]))return t[0];throw new l("INVALID_INTENT_ARGS",`Action "${String(e.name)}" requires a single object argument because positional parameter metadata is unavailable`)}if(n.length===0){if(t.length===1)return t[0];throw new l("INVALID_INTENT_ARGS",`Action "${String(e.name)}" does not accept multiple positional arguments`)}return t.length===1&&A(t[0])&&n.length>1?t[0]:Object.fromEntries(t.map((r,o)=>[n[o]??`arg${o}`,r]))}}function A(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t,n){let r=H,o=_(e,{initialData:N(e.state),runtime:r}),a=$(r);o.registerEffect(S,async(s,c,d)=>{let{patches:i}=te(c,d.snapshot);return i});for(let[s,c]of Object.entries(n)){let d=async(i,f,m)=>await c(f,{snapshot:R(g(m.snapshot,t))});o.registerEffect(s,d)}return{host:o,contextProvider:a}}function ee(e){return typeof e=="object"&&e!==null&&"key"in e&&"into"in e}function te(e,t){if(ee(e))return{patches:[{op:"set",path:T(e.into),value:ne(e.key)}]};let{path:n,target:r}=e,o=ae(n,t);return r?{patches:[{op:"set",path:T(r),value:o.value}]}:{patches:[]}}function ne(e){switch(e){case"uuid":return I();case"timestamp":case"time.now":return Date.now();case"isoTimestamp":return new Date().toISOString();default:return null}}function T(e){let t=O(e),n=t.startsWith("data.")?t.slice(5):t;return G(n)}function O(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function ae(e,t){let r=O(e).split(".");if(r.length===0)return{value:void 0,found:!1};let[o,...a]=r,s;switch(o){case"data":s=t.data;break;case"computed":s=t.computed;break;case"system":s=t.system;break;case"meta":s=t.meta;break;default:s=t.data,a.unshift(o);break}for(let c of a){if(s==null||typeof s!="object")return{value:void 0,found:!1};s=s[c]}return{value:s,found:s!==void 0}}function I(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}import{createSnapshot as ye}from"@manifesto-ai/core";export{D as AlreadyActivatedError,h as CompileError,k as DisposedError,l as ManifestoError,p as ReservedEffectError,U as createManifesto,ye as createSnapshot};
|
|
505
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/create-manifesto.ts","../src/index.ts"],"sourcesContent":["import {\n type EffectContext as HostEffectContext,\n type EffectHandler as HostEffectHandler,\n type ManifestoHost,\n createHost,\n} from \"@manifesto-ai/host\";\nimport {\n createIntent as createCoreIntent,\n extractDefaults,\n hashSchemaSync,\n semanticPathToPatchPath,\n type DomainSchema,\n type Intent,\n type Patch,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\nimport {\n compileMelDomain,\n parse as parseMel,\n tokenize as tokenizeMel,\n} from \"@manifesto-ai/compiler\";\n\nimport {\n ACTION_PARAM_NAMES,\n activateComposable,\n attachRuntimeKernelFactory,\n createBaseRuntimeInstance,\n createRuntimeKernel,\n} from \"./internal.js\";\nimport {\n type CreateIntentArgs,\n type BaseComposableLaws,\n type ComposableManifesto,\n type EffectHandler,\n type ManifestoDomainShape,\n type TypedActionRef,\n type TypedCreateIntent,\n type TypedIntent,\n type TypedMEL,\n} from \"./types.js\";\nimport {\n buildSnapshotProjectionPlan,\n cloneAndDeepFreeze,\n projectEffectContextSnapshot,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport {\n CompileError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nconst RESERVED_EFFECT_TYPE = \"system.get\";\nconst RESERVED_NAMESPACE_PREFIX = \"system.\";\nconst BASE_LAWS: BaseComposableLaws = Object.freeze({ __baseLaws: true });\n\ntype RuntimeActionRef = TypedActionRef<ManifestoDomainShape> & {\n readonly [ACTION_PARAM_NAMES]: readonly string[] | null;\n};\n\ntype ActionParamMetadata = readonly string[] | null;\n\ntype ResolvedSchema = {\n readonly schema: DomainSchema;\n readonly actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>;\n readonly projectionPlan: SnapshotProjectionPlan;\n};\n\ntype CompiledSchema = Omit<ResolvedSchema, \"projectionPlan\">;\n\nexport function createManifesto<T extends ManifestoDomainShape>(\n schemaInput: DomainSchema | string,\n effects: Record<string, EffectHandler>,\n): ComposableManifesto<T, BaseComposableLaws> {\n if (RESERVED_EFFECT_TYPE in effects) {\n throw new ReservedEffectError(RESERVED_EFFECT_TYPE);\n }\n\n const resolved = resolveSchema(schemaInput);\n validateReservedNamespaces(resolved.schema);\n\n const manifesto = {\n _laws: BASE_LAWS,\n schema: resolved.schema,\n activate() {\n activateComposable(manifesto);\n return createBaseRuntimeInstance(\n createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n ),\n MEL: buildTypedMel<T>(resolved.schema, resolved.actionParamMetadata),\n createIntent: buildCreateIntent<T>(),\n }),\n );\n },\n };\n\n return attachRuntimeKernelFactory(manifesto, () =>\n createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: createInternalHost(resolved.schema, resolved.projectionPlan, effects),\n MEL: buildTypedMel<T>(resolved.schema, resolved.actionParamMetadata),\n createIntent: buildCreateIntent<T>(),\n }),\n );\n}\n\nfunction resolveSchema(schema: DomainSchema | string): ResolvedSchema {\n const resolved: CompiledSchema = typeof schema === \"string\"\n ? compileSchema(schema)\n : {\n schema,\n actionParamMetadata: deriveActionParamMetadata(schema),\n };\n\n const normalizedSchema = withPlatformNamespaces(resolved.schema);\n return {\n schema: normalizedSchema,\n actionParamMetadata: resolved.actionParamMetadata,\n projectionPlan: buildSnapshotProjectionPlan(normalizedSchema),\n };\n}\n\nfunction compileSchema(source: string): CompiledSchema {\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const formatted = result.errors.map((diagnostic) => {\n const loc = diagnostic.location;\n if (!loc || (loc.start.line === 0 && loc.start.column === 0)) {\n return `[${diagnostic.code}] ${diagnostic.message}`;\n }\n\n const header = `[${diagnostic.code}] ${diagnostic.message} (${loc.start.line}:${loc.start.column})`;\n const line = source.split(\"\\n\")[loc.start.line - 1];\n if (!line) {\n return header;\n }\n\n const lineNum = String(loc.start.line).padStart(4, \" \");\n const underlineLen = Math.max(\n 1,\n loc.end.line === loc.start.line\n ? Math.min(loc.end.column - loc.start.column, Math.max(1, line.length - loc.start.column + 1))\n : 1,\n );\n const padding = \" \".repeat(lineNum.length + 3 + loc.start.column - 1);\n return `${header}\\n${lineNum} | ${line}\\n${padding}${\"^\".repeat(underlineLen)}`;\n }).join(\"\\n\\n\");\n\n throw new CompileError(result.errors, `MEL compilation failed:\\n${formatted}`);\n }\n\n if (!result.schema) {\n throw new ManifestoError(\"COMPILE_ERROR\", \"MEL compilation produced no schema\");\n }\n\n const schema = result.schema as DomainSchema;\n return {\n schema,\n actionParamMetadata: deriveActionParamMetadata(\n schema,\n extractActionParamOrderFromMel(source),\n ),\n };\n}\n\nfunction withPlatformNamespaces(schema: DomainSchema): DomainSchema {\n const fields = { ...schema.state.fields };\n let changed = false;\n\n if (!fields.$host) {\n fields.$host = {\n type: \"object\",\n required: false,\n default: {},\n };\n changed = true;\n } else if (fields.$host.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$host' must be an object field\");\n } else if (fields.$host.default === undefined) {\n fields.$host = { ...fields.$host, default: {} };\n changed = true;\n }\n\n if (!fields.$mel) {\n fields.$mel = {\n type: \"object\",\n required: false,\n default: { guards: { intent: {} } },\n fields: {\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (fields.$mel.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel' must be an object field\");\n } else {\n let nextMel = fields.$mel;\n if (nextMel.default === undefined) {\n nextMel = { ...nextMel, default: { guards: { intent: {} } } };\n changed = true;\n }\n\n const melFields = nextMel.fields ?? {};\n const guardsField = melFields.guards;\n\n if (!guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (guardsField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards' must be an object field\");\n } else {\n let nextGuards = guardsField;\n if (nextGuards.default === undefined) {\n nextGuards = { ...nextGuards, default: { intent: {} } };\n changed = true;\n }\n\n const guardFields = nextGuards.fields ?? {};\n const intentField = guardFields.intent;\n\n if (!intentField) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n };\n changed = true;\n } else if (intentField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards.intent' must be an object field\");\n } else if (intentField.default === undefined) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: { ...intentField, default: {} },\n },\n };\n changed = true;\n }\n\n if (nextGuards !== guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: nextGuards,\n },\n };\n }\n }\n\n if (nextMel !== fields.$mel) {\n fields.$mel = nextMel;\n }\n }\n\n if (!changed) {\n return schema;\n }\n\n const nextSchema = {\n ...schema,\n state: {\n ...schema.state,\n fields,\n },\n };\n\n const { hash: _hash, ...schemaWithoutHash } = nextSchema;\n return {\n ...nextSchema,\n hash: hashSchemaSync(schemaWithoutHash),\n };\n}\n\nfunction validateReservedNamespaces(schema: DomainSchema): void {\n for (const actionType of Object.keys(schema.actions ?? {})) {\n if (actionType.startsWith(RESERVED_NAMESPACE_PREFIX)) {\n throw new ManifestoError(\n \"RESERVED_NAMESPACE\",\n `Action type \"${actionType}\" uses reserved namespace prefix \"${RESERVED_NAMESPACE_PREFIX}\"`,\n );\n }\n }\n}\n\nfunction buildTypedMel<T extends ManifestoDomainShape>(\n schema: DomainSchema,\n actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>,\n): TypedMEL<T> {\n const actions = Object.fromEntries(\n Object.keys(schema.actions).map((name) => {\n const ref: Record<PropertyKey, unknown> = {\n __kind: \"ActionRef\",\n name,\n };\n Object.defineProperty(ref, ACTION_PARAM_NAMES, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Object.hasOwn(actionParamMetadata, name)\n ? actionParamMetadata[name]\n : [],\n });\n return [name, Object.freeze(ref)];\n }),\n );\n\n const state = Object.fromEntries(\n Object.keys(schema.state.fields)\n .filter((name) => !name.startsWith(\"$\"))\n .map((name) => [name, Object.freeze({\n __kind: \"FieldRef\",\n path: name,\n })]),\n );\n\n const computed = Object.fromEntries(\n Object.keys(schema.computed.fields)\n .map((name) => [name, Object.freeze({\n __kind: \"ComputedRef\",\n path: name,\n })]),\n );\n\n return Object.freeze({\n actions: Object.freeze(actions),\n state: Object.freeze(state),\n computed: Object.freeze(computed),\n }) as unknown as TypedMEL<T>;\n}\n\nfunction buildCreateIntent<T extends ManifestoDomainShape>(): TypedCreateIntent<T> {\n return <K extends keyof T[\"actions\"]>(\n action: TypedActionRef<T, K>,\n ...args: CreateIntentArgs<T, K>\n ): TypedIntent<T, K> => {\n const actionRef = action as unknown as RuntimeActionRef;\n const intentId = generateUUID();\n const input = packIntentInput(actionRef, args);\n return createCoreIntent(\n String(action.name),\n input,\n intentId,\n ) as TypedIntent<T, K>;\n };\n}\n\nfunction getActionParamNames(input: DomainSchema[\"actions\"][string][\"input\"]): readonly string[] {\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nfunction deriveActionParamMetadata(\n schema: DomainSchema,\n actionParamOrder?: Readonly<Record<string, readonly string[]>>,\n): Readonly<Record<string, ActionParamMetadata>> {\n return Object.freeze(Object.fromEntries(\n Object.entries(schema.actions).map(([name, action]) => {\n const preferredOrder = actionParamOrder?.[name];\n if (preferredOrder && preferredOrder.length > 0) {\n return [name, Object.freeze([...preferredOrder])];\n }\n\n if (!action.input || action.input.type !== \"object\" || !action.input.fields) {\n return [name, []];\n }\n\n const fieldNames = getActionParamNames(action.input);\n return [name, fieldNames.length <= 1 ? fieldNames : null];\n }),\n ));\n}\n\nfunction extractActionParamOrderFromMel(\n source: string,\n): Readonly<Record<string, readonly string[]>> | undefined {\n const lexed = tokenizeMel(source);\n if (lexed.diagnostics.some((diagnostic) => diagnostic.severity === \"error\")) {\n return undefined;\n }\n\n const parsed = parseMel(lexed.tokens);\n if (!parsed.program) {\n return undefined;\n }\n\n return Object.freeze(Object.fromEntries(\n parsed.program.domain.members\n .filter((member) => member.kind === \"action\")\n .map((action) => [action.name, Object.freeze(action.params.map((param) => param.name))]),\n ));\n}\n\nfunction packIntentInput(action: RuntimeActionRef, args: readonly unknown[]): unknown {\n const paramNames = Object.hasOwn(action, ACTION_PARAM_NAMES)\n ? action[ACTION_PARAM_NAMES]\n : [];\n if (args.length === 0) {\n return undefined;\n }\n\n if (paramNames === null) {\n if (args.length === 1 && isPlainObject(args[0])) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" requires a single object argument because positional parameter metadata is unavailable`,\n );\n }\n\n if (paramNames.length === 0) {\n if (args.length === 1) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" does not accept multiple positional arguments`,\n );\n }\n\n if (args.length === 1 && isPlainObject(args[0]) && paramNames.length > 1) {\n return args[0];\n }\n\n return Object.fromEntries(args.map((value, index) => [\n paramNames[index] ?? `arg${index}`,\n value,\n ]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction createInternalHost(\n schema: DomainSchema,\n projectionPlan: SnapshotProjectionPlan,\n effects: Record<string, EffectHandler>,\n): ManifestoHost {\n const host = createHost(schema, {\n initialData: extractDefaults(schema.state),\n });\n\n host.registerEffect(RESERVED_EFFECT_TYPE, async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const { patches } = executeSystemGet(params, ctx.snapshot as CoreSnapshot);\n return patches;\n });\n\n for (const [effectType, appHandler] of Object.entries(effects)) {\n const hostHandler: HostEffectHandler = async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const patches = await appHandler(params, {\n snapshot: cloneAndDeepFreeze(\n projectEffectContextSnapshot(ctx.snapshot, projectionPlan),\n ),\n });\n return patches as Patch[];\n };\n\n host.registerEffect(effectType, hostHandler);\n }\n\n return host;\n}\n\ninterface SystemGetReadParams {\n path: string;\n target?: string;\n}\n\ninterface SystemGetGenerateParams {\n key: string;\n into: string;\n}\n\nfunction isGenerateParams(params: unknown): params is SystemGetGenerateParams {\n return (\n typeof params === \"object\" &&\n params !== null &&\n \"key\" in params &&\n \"into\" in params\n );\n}\n\nfunction executeSystemGet(\n params: unknown,\n snapshot: CoreSnapshot,\n): { patches: Patch[] } {\n if (isGenerateParams(params)) {\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(params.into),\n value: generateSystemValue(params.key),\n }],\n };\n }\n\n const { path, target } = params as SystemGetReadParams;\n const result = resolvePathValue(path, snapshot);\n if (!target) {\n return { patches: [] };\n }\n\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(target),\n value: result.value,\n }],\n };\n}\n\nfunction generateSystemValue(key: string): unknown {\n switch (key) {\n case \"uuid\":\n return generateUUID();\n case \"timestamp\":\n case \"time.now\":\n return Date.now();\n case \"isoTimestamp\":\n return new Date().toISOString();\n default:\n return null;\n }\n}\n\nfunction normalizeTargetPath(path: string): Patch[\"path\"] {\n const normalized = normalizePath(path);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n return semanticPathToPatchPath(withoutDataRoot);\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n return path;\n}\n\nfunction resolvePathValue(\n path: string,\n snapshot: CoreSnapshot,\n): { value: unknown; found: boolean } {\n const normalized = normalizePath(path);\n const parts = normalized.split(\".\");\n if (parts.length === 0) {\n return { value: undefined, found: false };\n }\n\n const [root, ...rest] = parts;\n let current: unknown;\n\n switch (root) {\n case \"data\":\n current = snapshot.data;\n break;\n case \"computed\":\n current = snapshot.computed;\n break;\n case \"system\":\n current = snapshot.system;\n break;\n case \"meta\":\n current = snapshot.meta;\n break;\n default:\n current = snapshot.data;\n rest.unshift(root);\n break;\n }\n\n for (const part of rest) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return { value: undefined, found: false };\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return { value: current, found: current !== undefined };\n}\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","/**\n * @manifesto-ai/sdk v3.0.0\n *\n * SDK hard cut around the activation boundary.\n *\n * @see sdk-SPEC.md\n * @see ADR-017\n * @packageDocumentation\n */\n\nexport type { SdkManifest } from \"./manifest.js\";\n\nexport { createManifesto } from \"./create-manifesto.js\";\n\nexport type {\n ActivatedInstance,\n ActionArgs,\n CreateIntentArgs,\n ActionObjectBindingArgs,\n TypedActionMetadata,\n TypedGetActionMetadata,\n BaseLaws,\n BaseComposableLaws,\n CanonicalPlatformNamespaces,\n CanonicalSnapshot,\n ComposableManifesto,\n ComputedRef,\n EffectContext,\n EffectHandler,\n FieldRef,\n GovernedComposableLaws,\n GovernanceLaws,\n LineageComposableLaws,\n LineageLaws,\n ManifestoBaseInstance,\n ManifestoDecoratedRuntimeByLaws,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n ManifestoEventPayload,\n ManifestoRuntimeByLaws,\n Selector,\n Snapshot,\n TypedActionRef,\n TypedCommitAsync,\n TypedCreateIntent,\n TypedDispatchAsync,\n TypedIntent,\n TypedMEL,\n TypedOn,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\n\nexport {\n AlreadyActivatedError,\n CompileError,\n DisposedError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nexport type { CompileDiagnostic } from \"./errors.js\";\n\nexport type {\n DomainSchema,\n Intent,\n Patch,\n Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport { createSnapshot } from \"@manifesto-ai/core\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/create-manifesto.ts","../src/index.ts"],"sourcesContent":["import {\n type EffectContext as HostEffectContext,\n type EffectHandler as HostEffectHandler,\n type HostContextProvider,\n type ManifestoHost,\n createHostContextProvider,\n createHost,\n defaultRuntime,\n} from \"@manifesto-ai/host\";\nimport {\n createIntent as createCoreIntent,\n extractDefaults,\n hashSchemaSync,\n semanticPathToPatchPath,\n type DomainSchema,\n type Intent,\n type Patch,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\nimport {\n compileMelDomain,\n parse as parseMel,\n tokenize as tokenizeMel,\n} from \"@manifesto-ai/compiler\";\n\nimport {\n ACTION_PARAM_NAMES,\n activateComposable,\n attachRuntimeKernelFactory,\n createBaseRuntimeInstance,\n createRuntimeKernel,\n} from \"./internal.js\";\nimport {\n type CreateIntentArgs,\n type BaseComposableLaws,\n type ComposableManifesto,\n type EffectHandler,\n type ManifestoDomainShape,\n type TypedActionRef,\n type TypedCreateIntent,\n type TypedIntent,\n type TypedMEL,\n} from \"./types.js\";\nimport {\n buildSnapshotProjectionPlan,\n cloneAndDeepFreeze,\n projectEffectContextSnapshot,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport {\n CompileError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nconst RESERVED_EFFECT_TYPE = \"system.get\";\nconst RESERVED_NAMESPACE_PREFIX = \"system.\";\nconst BASE_LAWS: BaseComposableLaws = Object.freeze({ __baseLaws: true });\n\ntype RuntimeActionRef = TypedActionRef<ManifestoDomainShape> & {\n readonly [ACTION_PARAM_NAMES]: readonly string[] | null;\n};\n\ntype ActionParamMetadata = readonly string[] | null;\n\ntype ResolvedSchema = {\n readonly schema: DomainSchema;\n readonly actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>;\n readonly projectionPlan: SnapshotProjectionPlan;\n};\n\ntype CompiledSchema = Omit<ResolvedSchema, \"projectionPlan\">;\ntype InternalHostBundle = {\n readonly host: ManifestoHost;\n readonly contextProvider: HostContextProvider;\n};\n\nexport function createManifesto<T extends ManifestoDomainShape>(\n schemaInput: DomainSchema | string,\n effects: Record<string, EffectHandler>,\n): ComposableManifesto<T, BaseComposableLaws> {\n if (RESERVED_EFFECT_TYPE in effects) {\n throw new ReservedEffectError(RESERVED_EFFECT_TYPE);\n }\n\n const resolved = resolveSchema(schemaInput);\n validateReservedNamespaces(resolved.schema);\n\n const manifesto = {\n _laws: BASE_LAWS,\n schema: resolved.schema,\n activate() {\n activateComposable(manifesto);\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createBaseRuntimeInstance(\n createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(resolved.schema, resolved.actionParamMetadata),\n createIntent: buildCreateIntent<T>(),\n }),\n );\n },\n };\n\n return attachRuntimeKernelFactory(manifesto, () => {\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(resolved.schema, resolved.actionParamMetadata),\n createIntent: buildCreateIntent<T>(),\n });\n });\n}\n\nfunction resolveSchema(schema: DomainSchema | string): ResolvedSchema {\n const resolved: CompiledSchema = typeof schema === \"string\"\n ? compileSchema(schema)\n : {\n schema,\n actionParamMetadata: deriveActionParamMetadata(schema),\n };\n\n const normalizedSchema = withPlatformNamespaces(resolved.schema);\n return {\n schema: normalizedSchema,\n actionParamMetadata: resolved.actionParamMetadata,\n projectionPlan: buildSnapshotProjectionPlan(normalizedSchema),\n };\n}\n\nfunction compileSchema(source: string): CompiledSchema {\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const formatted = result.errors.map((diagnostic) => {\n const loc = diagnostic.location;\n if (!loc || (loc.start.line === 0 && loc.start.column === 0)) {\n return `[${diagnostic.code}] ${diagnostic.message}`;\n }\n\n const header = `[${diagnostic.code}] ${diagnostic.message} (${loc.start.line}:${loc.start.column})`;\n const line = source.split(\"\\n\")[loc.start.line - 1];\n if (!line) {\n return header;\n }\n\n const lineNum = String(loc.start.line).padStart(4, \" \");\n const underlineLen = Math.max(\n 1,\n loc.end.line === loc.start.line\n ? Math.min(loc.end.column - loc.start.column, Math.max(1, line.length - loc.start.column + 1))\n : 1,\n );\n const padding = \" \".repeat(lineNum.length + 3 + loc.start.column - 1);\n return `${header}\\n${lineNum} | ${line}\\n${padding}${\"^\".repeat(underlineLen)}`;\n }).join(\"\\n\\n\");\n\n throw new CompileError(result.errors, `MEL compilation failed:\\n${formatted}`);\n }\n\n if (!result.schema) {\n throw new ManifestoError(\"COMPILE_ERROR\", \"MEL compilation produced no schema\");\n }\n\n const schema = result.schema as DomainSchema;\n return {\n schema,\n actionParamMetadata: deriveActionParamMetadata(\n schema,\n extractActionParamOrderFromMel(source),\n ),\n };\n}\n\nfunction withPlatformNamespaces(schema: DomainSchema): DomainSchema {\n const fields = { ...schema.state.fields };\n let changed = false;\n\n if (!fields.$host) {\n fields.$host = {\n type: \"object\",\n required: false,\n default: {},\n };\n changed = true;\n } else if (fields.$host.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$host' must be an object field\");\n } else if (fields.$host.default === undefined) {\n fields.$host = { ...fields.$host, default: {} };\n changed = true;\n }\n\n if (!fields.$mel) {\n fields.$mel = {\n type: \"object\",\n required: false,\n default: { guards: { intent: {} } },\n fields: {\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (fields.$mel.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel' must be an object field\");\n } else {\n let nextMel = fields.$mel;\n if (nextMel.default === undefined) {\n nextMel = { ...nextMel, default: { guards: { intent: {} } } };\n changed = true;\n }\n\n const melFields = nextMel.fields ?? {};\n const guardsField = melFields.guards;\n\n if (!guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (guardsField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards' must be an object field\");\n } else {\n let nextGuards = guardsField;\n if (nextGuards.default === undefined) {\n nextGuards = { ...nextGuards, default: { intent: {} } };\n changed = true;\n }\n\n const guardFields = nextGuards.fields ?? {};\n const intentField = guardFields.intent;\n\n if (!intentField) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n };\n changed = true;\n } else if (intentField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards.intent' must be an object field\");\n } else if (intentField.default === undefined) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: { ...intentField, default: {} },\n },\n };\n changed = true;\n }\n\n if (nextGuards !== guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: nextGuards,\n },\n };\n }\n }\n\n if (nextMel !== fields.$mel) {\n fields.$mel = nextMel;\n }\n }\n\n if (!changed) {\n return schema;\n }\n\n const nextSchema = {\n ...schema,\n state: {\n ...schema.state,\n fields,\n },\n };\n\n const { hash: _hash, ...schemaWithoutHash } = nextSchema;\n return {\n ...nextSchema,\n hash: hashSchemaSync(schemaWithoutHash),\n };\n}\n\nfunction validateReservedNamespaces(schema: DomainSchema): void {\n for (const actionType of Object.keys(schema.actions ?? {})) {\n if (actionType.startsWith(RESERVED_NAMESPACE_PREFIX)) {\n throw new ManifestoError(\n \"RESERVED_NAMESPACE\",\n `Action type \"${actionType}\" uses reserved namespace prefix \"${RESERVED_NAMESPACE_PREFIX}\"`,\n );\n }\n }\n}\n\nfunction buildTypedMel<T extends ManifestoDomainShape>(\n schema: DomainSchema,\n actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>,\n): TypedMEL<T> {\n const actions = Object.fromEntries(\n Object.keys(schema.actions).map((name) => {\n const ref: Record<PropertyKey, unknown> = {\n __kind: \"ActionRef\",\n name,\n };\n Object.defineProperty(ref, ACTION_PARAM_NAMES, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Object.hasOwn(actionParamMetadata, name)\n ? actionParamMetadata[name]\n : [],\n });\n return [name, Object.freeze(ref)];\n }),\n );\n\n const state = Object.fromEntries(\n Object.keys(schema.state.fields)\n .filter((name) => !name.startsWith(\"$\"))\n .map((name) => [name, Object.freeze({\n __kind: \"FieldRef\",\n name,\n })]),\n );\n\n const computed = Object.fromEntries(\n Object.keys(schema.computed.fields)\n .map((name) => [name, Object.freeze({\n __kind: \"ComputedRef\",\n name,\n })]),\n );\n\n return Object.freeze({\n actions: Object.freeze(actions),\n state: Object.freeze(state),\n computed: Object.freeze(computed),\n }) as unknown as TypedMEL<T>;\n}\n\nfunction buildCreateIntent<T extends ManifestoDomainShape>(): TypedCreateIntent<T> {\n return <K extends keyof T[\"actions\"]>(\n action: TypedActionRef<T, K>,\n ...args: CreateIntentArgs<T, K>\n ): TypedIntent<T, K> => {\n const actionRef = action as unknown as RuntimeActionRef;\n const intentId = generateUUID();\n const input = packIntentInput(actionRef, args);\n return createCoreIntent(\n String(action.name),\n input,\n intentId,\n ) as TypedIntent<T, K>;\n };\n}\n\nfunction getActionParamNames(input: DomainSchema[\"actions\"][string][\"input\"]): readonly string[] {\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nfunction deriveActionParamMetadata(\n schema: DomainSchema,\n actionParamOrder?: Readonly<Record<string, readonly string[]>>,\n): Readonly<Record<string, ActionParamMetadata>> {\n return Object.freeze(Object.fromEntries(\n Object.entries(schema.actions).map(([name, action]) => {\n const preferredOrder = actionParamOrder?.[name];\n if (preferredOrder && preferredOrder.length > 0) {\n return [name, Object.freeze([...preferredOrder])];\n }\n\n if (!action.input || action.input.type !== \"object\" || !action.input.fields) {\n return [name, []];\n }\n\n const fieldNames = getActionParamNames(action.input);\n return [name, fieldNames.length <= 1 ? fieldNames : null];\n }),\n ));\n}\n\nfunction extractActionParamOrderFromMel(\n source: string,\n): Readonly<Record<string, readonly string[]>> | undefined {\n const lexed = tokenizeMel(source);\n if (lexed.diagnostics.some((diagnostic) => diagnostic.severity === \"error\")) {\n return undefined;\n }\n\n const parsed = parseMel(lexed.tokens);\n if (!parsed.program) {\n return undefined;\n }\n\n return Object.freeze(Object.fromEntries(\n parsed.program.domain.members\n .filter((member) => member.kind === \"action\")\n .map((action) => [action.name, Object.freeze(action.params.map((param) => param.name))]),\n ));\n}\n\nfunction packIntentInput(action: RuntimeActionRef, args: readonly unknown[]): unknown {\n const paramNames = Object.hasOwn(action, ACTION_PARAM_NAMES)\n ? action[ACTION_PARAM_NAMES]\n : [];\n if (args.length === 0) {\n return undefined;\n }\n\n if (paramNames === null) {\n if (args.length === 1 && isPlainObject(args[0])) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" requires a single object argument because positional parameter metadata is unavailable`,\n );\n }\n\n if (paramNames.length === 0) {\n if (args.length === 1) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" does not accept multiple positional arguments`,\n );\n }\n\n if (args.length === 1 && isPlainObject(args[0]) && paramNames.length > 1) {\n return args[0];\n }\n\n return Object.fromEntries(args.map((value, index) => [\n paramNames[index] ?? `arg${index}`,\n value,\n ]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction createInternalHost(\n schema: DomainSchema,\n projectionPlan: SnapshotProjectionPlan,\n effects: Record<string, EffectHandler>,\n): InternalHostBundle {\n const runtime = defaultRuntime;\n const host = createHost(schema, {\n initialData: extractDefaults(schema.state),\n runtime,\n });\n const contextProvider = createHostContextProvider(runtime);\n\n host.registerEffect(RESERVED_EFFECT_TYPE, async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const { patches } = executeSystemGet(params, ctx.snapshot as CoreSnapshot);\n return patches;\n });\n\n for (const [effectType, appHandler] of Object.entries(effects)) {\n const hostHandler: HostEffectHandler = async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const patches = await appHandler(params, {\n snapshot: cloneAndDeepFreeze(\n projectEffectContextSnapshot(ctx.snapshot, projectionPlan),\n ),\n });\n return patches as Patch[];\n };\n\n host.registerEffect(effectType, hostHandler);\n }\n\n return {\n host,\n contextProvider,\n };\n}\n\ninterface SystemGetReadParams {\n path: string;\n target?: string;\n}\n\ninterface SystemGetGenerateParams {\n key: string;\n into: string;\n}\n\nfunction isGenerateParams(params: unknown): params is SystemGetGenerateParams {\n return (\n typeof params === \"object\" &&\n params !== null &&\n \"key\" in params &&\n \"into\" in params\n );\n}\n\nfunction executeSystemGet(\n params: unknown,\n snapshot: CoreSnapshot,\n): { patches: Patch[] } {\n if (isGenerateParams(params)) {\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(params.into),\n value: generateSystemValue(params.key),\n }],\n };\n }\n\n const { path, target } = params as SystemGetReadParams;\n const result = resolvePathValue(path, snapshot);\n if (!target) {\n return { patches: [] };\n }\n\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(target),\n value: result.value,\n }],\n };\n}\n\nfunction generateSystemValue(key: string): unknown {\n switch (key) {\n case \"uuid\":\n return generateUUID();\n case \"timestamp\":\n case \"time.now\":\n return Date.now();\n case \"isoTimestamp\":\n return new Date().toISOString();\n default:\n return null;\n }\n}\n\nfunction normalizeTargetPath(path: string): Patch[\"path\"] {\n const normalized = normalizePath(path);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n return semanticPathToPatchPath(withoutDataRoot);\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n return path;\n}\n\nfunction resolvePathValue(\n path: string,\n snapshot: CoreSnapshot,\n): { value: unknown; found: boolean } {\n const normalized = normalizePath(path);\n const parts = normalized.split(\".\");\n if (parts.length === 0) {\n return { value: undefined, found: false };\n }\n\n const [root, ...rest] = parts;\n let current: unknown;\n\n switch (root) {\n case \"data\":\n current = snapshot.data;\n break;\n case \"computed\":\n current = snapshot.computed;\n break;\n case \"system\":\n current = snapshot.system;\n break;\n case \"meta\":\n current = snapshot.meta;\n break;\n default:\n current = snapshot.data;\n rest.unshift(root);\n break;\n }\n\n for (const part of rest) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return { value: undefined, found: false };\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return { value: current, found: current !== undefined };\n}\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","/**\n * @manifesto-ai/sdk v3.0.0\n *\n * SDK hard cut around the activation boundary.\n *\n * @see sdk-SPEC.md\n * @see ADR-017\n * @packageDocumentation\n */\n\nexport type { SdkManifest } from \"./manifest.js\";\n\nexport { createManifesto } from \"./create-manifesto.js\";\n\nexport type {\n ActivatedInstance,\n ActionArgs,\n CreateIntentArgs,\n ActionObjectBindingArgs,\n TypedActionMetadata,\n TypedGetActionMetadata,\n BaseLaws,\n BaseComposableLaws,\n CanonicalPlatformNamespaces,\n CanonicalSnapshot,\n ComposableManifesto,\n ComputedRef,\n EffectContext,\n EffectHandler,\n FieldRef,\n GovernedComposableLaws,\n GovernanceLaws,\n LineageComposableLaws,\n LineageLaws,\n ManifestoBaseInstance,\n ManifestoDecoratedRuntimeByLaws,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n ManifestoEventPayload,\n ManifestoRuntimeByLaws,\n Selector,\n SimulateResult,\n SchemaGraph,\n SchemaGraphEdge,\n SchemaGraphEdgeRelation,\n SchemaGraphNode,\n SchemaGraphNodeId,\n SchemaGraphNodeKind,\n SchemaGraphNodeRef,\n Snapshot,\n TypedActionRef,\n TypedCommitAsync,\n TypedCreateIntent,\n TypedDispatchAsync,\n TypedIntent,\n TypedMEL,\n TypedOn,\n TypedSimulate,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\n\nexport {\n AlreadyActivatedError,\n CompileError,\n DisposedError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nexport type { CompileDiagnostic } from \"./errors.js\";\n\nexport type {\n DomainSchema,\n Intent,\n Patch,\n Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport { createSnapshot } from \"@manifesto-ai/core\";\n"],"mappings":"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","names":["createHostContextProvider","createHost","defaultRuntime","createCoreIntent","extractDefaults","hashSchemaSync","semanticPathToPatchPath","compileMelDomain","parseMel","tokenizeMel","RESERVED_EFFECT_TYPE","RESERVED_NAMESPACE_PREFIX","BASE_LAWS","createManifesto","schemaInput","effects","ReservedEffectError","resolved","resolveSchema","validateReservedNamespaces","manifesto","activateComposable","internalHost","createInternalHost","createBaseRuntimeInstance","createRuntimeKernel","buildTypedMel","buildCreateIntent","attachRuntimeKernelFactory","schema","compileSchema","deriveActionParamMetadata","normalizedSchema","withPlatformNamespaces","buildSnapshotProjectionPlan","source","result","compileMelDomain","formatted","diagnostic","loc","header","line","lineNum","underlineLen","padding","CompileError","ManifestoError","extractActionParamOrderFromMel","fields","changed","nextMel","melFields","guardsField","nextGuards","guardFields","intentField","nextSchema","_hash","schemaWithoutHash","hashSchemaSync","actionType","actionParamMetadata","actions","name","ref","ACTION_PARAM_NAMES","state","computed","action","args","actionRef","intentId","generateUUID","input","packIntentInput","createCoreIntent","getActionParamNames","actionParamOrder","preferredOrder","fieldNames","lexed","tokenizeMel","parsed","parseMel","member","param","paramNames","isPlainObject","value","index","projectionPlan","runtime","defaultRuntime","host","createHost","extractDefaults","contextProvider","createHostContextProvider","_type","params","ctx","patches","executeSystemGet","effectType","appHandler","hostHandler","cloneAndDeepFreeze","projectEffectContextSnapshot","isGenerateParams","snapshot","normalizeTargetPath","generateSystemValue","path","target","resolvePathValue","key","normalized","normalizePath","withoutDataRoot","semanticPathToPatchPath","parts","root","rest","current","part","char","random","createSnapshot"]}
|