@artkit-ai/core 0.1.0 → 0.2.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.
Files changed (87) hide show
  1. package/dist/adapter.d.ts +119 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/adapter.js +45 -0
  4. package/dist/adapter.js.map +1 -0
  5. package/dist/diff.d.ts +1 -1
  6. package/dist/diff.d.ts.map +1 -1
  7. package/dist/engine.d.ts +29 -23
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +148 -197
  10. package/dist/engine.js.map +1 -1
  11. package/dist/envelope.d.ts +10 -27
  12. package/dist/envelope.d.ts.map +1 -1
  13. package/dist/envelope.js +8 -20
  14. package/dist/envelope.js.map +1 -1
  15. package/dist/errors.d.ts +1 -1
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +4 -4
  18. package/dist/errors.js.map +1 -1
  19. package/dist/events.d.ts +2 -10
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/i18n.d.ts +8 -14
  23. package/dist/i18n.d.ts.map +1 -1
  24. package/dist/i18n.js +12 -18
  25. package/dist/i18n.js.map +1 -1
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/logger.d.ts +1 -2
  31. package/dist/logger.d.ts.map +1 -1
  32. package/dist/logger.js.map +1 -1
  33. package/dist/memory.d.ts +0 -2
  34. package/dist/memory.d.ts.map +1 -1
  35. package/dist/memory.js +15 -109
  36. package/dist/memory.js.map +1 -1
  37. package/dist/migrations.d.ts +6 -5
  38. package/dist/migrations.d.ts.map +1 -1
  39. package/dist/migrations.js +20 -14
  40. package/dist/migrations.js.map +1 -1
  41. package/dist/projection.d.ts +22 -6
  42. package/dist/projection.d.ts.map +1 -1
  43. package/dist/projection.js +5 -5
  44. package/dist/projection.js.map +1 -1
  45. package/dist/registry.d.ts +17 -16
  46. package/dist/registry.d.ts.map +1 -1
  47. package/dist/registry.js +25 -25
  48. package/dist/registry.js.map +1 -1
  49. package/dist/service.d.ts +19 -51
  50. package/dist/service.d.ts.map +1 -1
  51. package/dist/service.js +119 -404
  52. package/dist/service.js.map +1 -1
  53. package/dist/store.d.ts +12 -61
  54. package/dist/store.d.ts.map +1 -1
  55. package/dist/testing/index.d.ts +10 -9
  56. package/dist/testing/index.d.ts.map +1 -1
  57. package/dist/testing/index.js +75 -136
  58. package/dist/testing/index.js.map +1 -1
  59. package/dist/theme.js +1 -1
  60. package/dist/ui.d.ts +18 -1
  61. package/dist/ui.d.ts.map +1 -1
  62. package/dist/ui.js +5 -3
  63. package/dist/ui.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/adapter.ts +180 -0
  66. package/src/diff.ts +1 -1
  67. package/src/engine.ts +183 -230
  68. package/src/envelope.ts +11 -29
  69. package/src/errors.ts +4 -4
  70. package/src/events.ts +2 -11
  71. package/src/i18n.ts +14 -20
  72. package/src/index.ts +2 -4
  73. package/src/logger.ts +1 -2
  74. package/src/memory.ts +16 -122
  75. package/src/migrations.ts +24 -18
  76. package/src/projection.ts +25 -7
  77. package/src/registry.ts +45 -41
  78. package/src/service.ts +144 -540
  79. package/src/store.ts +12 -64
  80. package/src/testing/index.ts +89 -164
  81. package/src/theme.ts +1 -1
  82. package/src/ui.ts +24 -4
  83. package/dist/kind.d.ts +0 -156
  84. package/dist/kind.d.ts.map +0 -1
  85. package/dist/kind.js +0 -52
  86. package/dist/kind.js.map +0 -1
  87. package/src/kind.ts +0 -217
package/dist/engine.js CHANGED
@@ -3,9 +3,8 @@ import { diffFields } from './diff.js';
3
3
  import { localeSchema, titleSchema } from './envelope.js';
4
4
  import { ArtifactError, formatPath, zodIssuesToErrorIssues } from './errors.js';
5
5
  import { t } from './i18n.js';
6
- import { findDuplicateIds, IdAllocator } from './ids.js';
7
6
  import { jsonByteSize, jsonDepth, MAX_INPUT_DEPTH, sanitizeDeep } from './sanitize.js';
8
- /** Envelope operations, available for every kind and handled by the core (spec §8.4). */
7
+ /** Envelope operations, available for every format and handled by the core (spec §9.3). */
9
8
  export const envelopeOperationSchema = z.discriminatedUnion('op', [
10
9
  z.object({ op: z.literal('set_title'), title: titleSchema }).strict(),
11
10
  z.object({ op: z.literal('set_theme'), themeId: z.string().min(1).max(64) }).strict(),
@@ -37,62 +36,40 @@ export function operationNames(schema) {
37
36
  }
38
37
  return names;
39
38
  }
40
- function idContext(allocator) {
41
- return {
42
- nextId: (prefix) => allocator.next(prefix),
43
- hasId: (id) => allocator.has(id),
44
- reserveId: (id) => allocator.reserve(id),
45
- };
46
- }
47
39
  function checkDepth(value, path, locale) {
48
40
  if (jsonDepth(value) > MAX_INPUT_DEPTH) {
49
- throw new ArtifactError('LIMIT_EXCEEDED', t(locale, 'LIMIT_EXCEEDED', { limit: 'depth', max: MAX_INPUT_DEPTH, found: `>${MAX_INPUT_DEPTH}` }), {
50
- issues: [
51
- {
52
- path,
53
- message: t(locale, 'LIMIT_EXCEEDED', {
54
- limit: 'depth',
55
- max: MAX_INPUT_DEPTH,
56
- found: `>${MAX_INPUT_DEPTH}`,
57
- }),
58
- },
59
- ],
41
+ const message = t(locale, 'LIMIT_EXCEEDED', {
42
+ limit: 'depth',
43
+ max: MAX_INPUT_DEPTH,
44
+ found: `>${MAX_INPUT_DEPTH}`,
45
+ });
46
+ throw new ArtifactError('LIMIT_EXCEEDED', message, {
47
+ issues: [{ path, message }],
60
48
  details: { limit: 'depth', max: MAX_INPUT_DEPTH },
61
49
  });
62
50
  }
63
51
  }
64
- /** Schema + integrity + unique ids + limits. Throws INVALID_CONTENT or LIMIT_EXCEEDED. */
65
- export function validateContent(registry, kind, raw, locale) {
66
- const parsed = kind.contentSchema.safeParse(raw);
67
- if (!parsed.success) {
68
- throw new ArtifactError('INVALID_CONTENT', t(locale, 'INVALID_CONTENT'), {
69
- issues: zodIssuesToErrorIssues(parsed.error.issues, locale, 'content'),
70
- });
71
- }
72
- // The parsed value carries schema defaults, so stored content is always normalized.
73
- const content = parsed.data;
74
- const issues = [...(kind.validate?.(content, locale) ?? [])].map((issue) => ({
75
- ...issue,
76
- path: issue.path.startsWith('content') ? issue.path : issue.path ? `content.${issue.path}` : 'content',
77
- }));
78
- for (const id of findDuplicateIds(kind.ids(content))) {
79
- // Kinds may already report duplicates with a precise path; don't repeat them.
80
- if (issues.some((issue) => issue.message.includes(`"${id}"`) || issue.message.includes(`'${id}'`)))
81
- continue;
82
- issues.push({
83
- path: 'content',
84
- message: t(locale, 'DUPLICATE_ID', { id }),
85
- hint: t(locale, 'DUPLICATE_ID_HINT'),
52
+ /** Adapter validation + limits. Throws INVALID_CONTENT or LIMIT_EXCEEDED. Returns the normalized content. */
53
+ export function validateContent(registry, adapter, raw, ctx) {
54
+ const result = adapter.validate(raw, ctx);
55
+ if (!result.ok) {
56
+ throw new ArtifactError('INVALID_CONTENT', t(ctx.locale, 'INVALID_CONTENT'), {
57
+ issues: result.issues.map((issue) => ({
58
+ ...issue,
59
+ path: issue.path.startsWith('content')
60
+ ? issue.path
61
+ : issue.path
62
+ ? `content.${issue.path}`
63
+ : 'content',
64
+ })),
86
65
  });
87
66
  }
88
- if (issues.length > 0)
89
- throw new ArtifactError('INVALID_CONTENT', t(locale, 'INVALID_CONTENT'), { issues });
90
- checkLimits(registry, kind, content, locale);
91
- return content;
67
+ checkLimits(registry, adapter, result.content, ctx.locale);
68
+ return result.content;
92
69
  }
93
- export function checkLimits(registry, kind, content, locale) {
94
- const limits = registry.limits(kind.kind);
95
- const measured = kind.measure?.(content) ?? {};
70
+ export function checkLimits(registry, adapter, content, locale) {
71
+ const limits = registry.limits(adapter.format);
72
+ const measured = adapter.measure?.(content) ?? {};
96
73
  for (const [key, max] of Object.entries(limits)) {
97
74
  const found = measured[key];
98
75
  if (found !== undefined && found > max) {
@@ -106,53 +83,34 @@ export function checkLimits(registry, kind, content, locale) {
106
83
  }
107
84
  /**
108
85
  * Turns raw content (from the model, a user or an alternative input) into valid content:
109
- * sanitize → normalize ids → derive → validate → limits. Pure.
86
+ * sanitize → validate → limits → lint. Pure.
110
87
  */
111
- export function prepareContent(registry, kindName, raw, options = {}) {
112
- const locale = options.locale;
113
- const kind = registry.get(kindName, locale);
88
+ export function prepareContent(registry, formatName, raw, options = {}) {
89
+ const locale = options.locale ?? 'en';
90
+ const adapter = registry.get(formatName, locale);
91
+ const theme = registry.theme(options.themeId ?? 'default', locale);
114
92
  checkDepth(raw, 'content', locale);
115
- const sanitized = sanitizeDeep(raw);
116
- const allocator = new IdAllocator(collectExplicitIds(sanitized));
117
- let content = kind.normalize
118
- ? kind.normalize(structuredClone(sanitized), idContext(allocator))
119
- : structuredClone(sanitized);
120
- const parsed = kind.contentSchema.safeParse(content);
121
- if (!parsed.success) {
122
- throw new ArtifactError('INVALID_CONTENT', t(locale, 'INVALID_CONTENT'), {
123
- issues: zodIssuesToErrorIssues(parsed.error.issues, locale, 'content'),
93
+ const ctx = { locale, theme, fail: failIn(locale, 0) };
94
+ const content = validateContent(registry, adapter, sanitizeDeep(raw), ctx);
95
+ return { content, lint: adapter.lint(content, { locale, theme }) };
96
+ }
97
+ function failIn(locale, index) {
98
+ return (message, options) => {
99
+ throw new ArtifactError('OPERATION_FAILED', t(locale, 'OPERATION_FAILED', { index }), {
100
+ issues: [
101
+ {
102
+ path: options?.path ? `operations[${index}].${options.path}` : `operations[${index}]`,
103
+ message,
104
+ ...(options?.hint ? { hint: options.hint } : {}),
105
+ },
106
+ ],
107
+ details: { index },
124
108
  });
125
- }
126
- content = parsed.data;
127
- kind.derive?.(content);
128
- content = validateContent(registry, kind, content, locale);
129
- const theme = registry.theme(options.theme ?? 'default', locale);
130
- return {
131
- content,
132
- ids: [...kind.ids(content)],
133
- lint: kind.lint(content, { locale: locale ?? 'en', theme }),
134
109
  };
135
110
  }
136
- /** Collects string values of `id` fields anywhere in raw input, so generated ids never collide with them. */
137
- function collectExplicitIds(value, out = [], depth = 0) {
138
- if (depth > MAX_INPUT_DEPTH)
139
- return out;
140
- if (Array.isArray(value))
141
- for (const item of value)
142
- collectExplicitIds(item, out, depth + 1);
143
- else if (value !== null && typeof value === 'object') {
144
- for (const [key, item] of Object.entries(value)) {
145
- if (key === 'id' && typeof item === 'string')
146
- out.push(item);
147
- else
148
- collectExplicitIds(item, out, depth + 1);
149
- }
150
- }
151
- return out;
152
- }
153
111
  /** Parses and sanitizes a batch. Throws INVALID_OPERATION with the index of the first bad operation. */
154
- export function parseOperations(registry, kindName, operations, locale) {
155
- const kind = registry.get(kindName, locale);
112
+ export function parseOperations(registry, formatName, operations, locale) {
113
+ const adapter = registry.get(formatName, locale);
156
114
  if (!Array.isArray(operations)) {
157
115
  throw new ArtifactError('INVALID_OPERATION', t(locale, 'INVALID_OPERATIONS'), {
158
116
  issues: [
@@ -188,13 +146,18 @@ export function parseOperations(registry, kindName, operations, locale) {
188
146
  });
189
147
  }
190
148
  checkDepth(operations, 'operations', locale);
191
- const names = [...ENVELOPE_OPERATIONS, ...operationNames(kind.operationSchema)];
149
+ const names = [...ENVELOPE_OPERATIONS, ...operationNames(adapter.operationSchema)];
192
150
  return operations.map((raw, index) => {
193
151
  const op = sanitizeDeep(raw);
194
- const schema = isEnvelopeOperation(op) ? envelopeOperationSchema : kind.operationSchema;
195
- const parsed = schema.safeParse(op);
152
+ if (isEnvelopeOperation(op)) {
153
+ const parsed = envelopeOperationSchema.safeParse(op);
154
+ if (parsed.success)
155
+ return { kind: 'envelope', op: parsed.data };
156
+ throw invalidOperation(index, zodIssuesToErrorIssues(parsed.error.issues, locale, `operations[${index}]`), locale);
157
+ }
158
+ const parsed = adapter.operationSchema.safeParse(op);
196
159
  if (parsed.success)
197
- return parsed.data;
160
+ return { kind: 'content', op: parsed.data };
198
161
  const issues = zodIssuesToErrorIssues(parsed.error.issues, locale, `operations[${index}]`);
199
162
  const opName = op?.op;
200
163
  if (typeof opName !== 'string' || !names.includes(opName)) {
@@ -204,10 +167,13 @@ export function parseOperations(registry, kindName, operations, locale) {
204
167
  hint: t(locale, 'ZOD_INVALID_VALUE_HINT', { values: names.join(', ') }),
205
168
  });
206
169
  }
207
- throw new ArtifactError('INVALID_OPERATION', t(locale, 'INVALID_OPERATION', { index }), {
208
- issues: dedupeIssues(issues),
209
- details: { index },
210
- });
170
+ throw invalidOperation(index, dedupeIssues(issues), locale);
171
+ });
172
+ }
173
+ function invalidOperation(index, issues, locale) {
174
+ return new ArtifactError('INVALID_OPERATION', t(locale, 'INVALID_OPERATION', { index }), {
175
+ issues,
176
+ details: { index },
211
177
  });
212
178
  }
213
179
  function dedupeIssues(issues) {
@@ -221,67 +187,66 @@ function dedupeIssues(issues) {
221
187
  });
222
188
  }
223
189
  /**
224
- * Applies a batch atomically and purely (spec §8.2 steps 4–8): validate every operation, clone,
225
- * apply in sequence, derive, revalidate the whole content and limits, then diff and lint.
226
- * Any failure throws and leaves the input untouched.
190
+ * Applies a batch atomically (spec §9.1, steps 4–7). Operations run in order: runs of content operations go to the
191
+ * adapter, envelope operations and `replace_content` are handled here. Any failure throws and leaves the input
192
+ * untouched, since everything works on copies.
227
193
  */
228
- export function applyOperations(registry, artifact, operations, options = {}) {
194
+ export async function applyOperations(registry, artifact, operations, options = {}) {
229
195
  const locale = options.locale ?? artifact.locale;
230
- const kind = registry.get(artifact.kind, locale);
231
- const parsedOps = parseOperations(registry, artifact.kind, operations, locale);
196
+ const adapter = registry.get(artifact.format, locale);
197
+ const parsed = parseOperations(registry, artifact.format, operations, locale);
232
198
  const before = artifact.content;
233
- let draft = structuredClone(before);
234
199
  const envelope = { title: artifact.title, themeId: artifact.themeId, locale: artifact.locale };
235
- const beforeIds = new Set(kind.ids(before));
236
- const allocator = new IdAllocator(beforeIds);
237
- parsedOps.forEach((op, index) => {
238
- // `hasId` reflects the draft as it is now, so an id removed earlier in the batch can be reused
239
- // explicitly; `nextId` still never hands out an id seen in this batch, keeping generated ids stable.
240
- const present = new Set(kind.ids(draft));
241
- const ctx = {
242
- nextId: (prefix) => {
243
- const id = allocator.next(prefix);
244
- present.add(id);
245
- return id;
246
- },
247
- hasId: (id) => present.has(id),
248
- reserveId: (id) => {
249
- allocator.reserve(id);
250
- present.add(id);
251
- },
252
- locale,
253
- fail(message, failOptions) {
254
- throw new ArtifactError('OPERATION_FAILED', t(locale, 'OPERATION_FAILED', { index }), {
255
- issues: [
256
- {
257
- path: failOptions?.path ? `operations[${index}].${failOptions.path}` : `operations[${index}]`,
258
- message,
259
- ...(failOptions?.hint ? { hint: failOptions.hint } : {}),
260
- },
261
- ],
262
- details: { index },
263
- });
264
- },
265
- };
266
- if (isEnvelopeOperation(op)) {
267
- draft = applyEnvelopeOperation(registry, kind, draft, envelope, op, index, allocator, locale);
268
- return;
200
+ let draft = structuredClone(before);
201
+ const createdRefs = [];
202
+ const warnings = [];
203
+ let index = 0;
204
+ while (index < parsed.length) {
205
+ const item = parsed[index];
206
+ if (item?.kind === 'envelope') {
207
+ const envelopeOp = item.op;
208
+ if (envelopeOp.op === 'replace_content') {
209
+ checkDepth(envelopeOp.content, `operations[${index}].content`, locale);
210
+ draft = replaceContent(registry, adapter, sanitizeDeep(envelopeOp.content), locale, index);
211
+ }
212
+ else {
213
+ applyEnvelopeOperation(registry, envelope, envelopeOp, index, locale);
214
+ }
215
+ index += 1;
216
+ continue;
217
+ }
218
+ // Consecutive content operations form one run for the adapter.
219
+ const run = [];
220
+ while (index < parsed.length && parsed[index]?.kind === 'content') {
221
+ run.push(parsed[index]?.op);
222
+ index += 1;
269
223
  }
224
+ const theme = registry.theme(envelope.themeId, locale);
225
+ const ctx = { locale, theme, fail: failIn(locale, index - run.length) };
270
226
  try {
271
- kind.apply(draft, op, ctx);
227
+ const result = await adapter.apply(draft, run, ctx);
228
+ draft = result.content;
229
+ createdRefs.push(...result.createdRefs);
230
+ warnings.push(...result.warnings);
272
231
  }
273
232
  catch (error) {
274
233
  if (error instanceof ArtifactError)
275
234
  throw error;
276
- throw new ArtifactError('OPERATION_FAILED', t(locale, 'OPERATION_FAILED', { index }), {
277
- issues: [{ path: `operations[${index}]`, message: t(locale, 'OPERATION_FAILED', { index }) }],
278
- details: { index },
235
+ throw new ArtifactError('OPERATION_FAILED', t(locale, 'OPERATION_FAILED', { index: index - run.length }), {
236
+ issues: [
237
+ {
238
+ path: `operations[${index - run.length}]`,
239
+ message: t(locale, 'OPERATION_FAILED', { index: index - run.length }),
240
+ },
241
+ ],
242
+ details: { index: index - run.length },
279
243
  cause: error,
280
244
  });
281
245
  }
282
- });
283
- kind.derive?.(draft);
284
- draft = validateContent(registry, kind, draft, locale);
246
+ }
247
+ const finalTheme = registry.theme(envelope.themeId, locale);
248
+ const finalCtx = { locale: envelope.locale, theme: finalTheme, fail: failIn(locale, 0) };
249
+ draft = validateContent(registry, adapter, draft, finalCtx);
285
250
  const envelopeBytes = jsonByteSize({ ...envelope, content: draft });
286
251
  if (envelopeBytes > registry.batch.maxEnvelopeBytes) {
287
252
  const message = t(locale, 'LIMIT_EXCEEDED', {
@@ -294,25 +259,38 @@ export function applyOperations(registry, artifact, operations, options = {}) {
294
259
  details: { limit: 'envelopeBytes', max: registry.batch.maxEnvelopeBytes, found: envelopeBytes },
295
260
  });
296
261
  }
297
- const afterIds = [...kind.ids(draft)];
298
- const theme = registry.theme(envelope.themeId, locale);
299
262
  return {
300
263
  content: draft,
301
- schemaVersion: kind.version,
264
+ formatVersion: adapter.formatVersion,
302
265
  ...envelope,
303
- createdIds: afterIds.filter((id) => !beforeIds.has(id)),
266
+ createdRefs: [...new Set(createdRefs)],
304
267
  diff: [
305
268
  ...diffFields('envelope', artifact, envelope, ['title', 'themeId', 'locale'], locale),
306
- ...kind.diff(before, draft, locale),
269
+ ...adapter.diff(before, draft, locale),
307
270
  ],
308
- lint: kind.lint(draft, { locale: envelope.locale, theme }),
271
+ lint: [...warnings, ...adapter.lint(draft, { locale: envelope.locale, theme: finalTheme })],
309
272
  };
310
273
  }
311
- function applyEnvelopeOperation(registry, kind, draft, envelope, op, index, allocator, locale) {
274
+ function replaceContent(registry, adapter, content, locale, index) {
275
+ const theme = registry.theme('default', locale);
276
+ const result = adapter.validate(content, { locale, theme, fail: failIn(locale, index) });
277
+ if (!result.ok) {
278
+ throw new ArtifactError('INVALID_OPERATION', t(locale, 'INVALID_OPERATION', { index }), {
279
+ issues: result.issues.map((issue) => ({
280
+ ...issue,
281
+ path: `operations[${index}].content.${issue.path}`,
282
+ })),
283
+ details: { index },
284
+ });
285
+ }
286
+ checkLimits(registry, adapter, result.content, locale);
287
+ return result.content;
288
+ }
289
+ function applyEnvelopeOperation(registry, envelope, op, index, locale) {
312
290
  switch (op.op) {
313
291
  case 'set_title':
314
292
  envelope.title = op.title;
315
- return draft;
293
+ return;
316
294
  case 'set_theme':
317
295
  if (!registry.hasTheme(op.themeId)) {
318
296
  throw new ArtifactError('OPERATION_FAILED', t(locale, 'OPERATION_FAILED', { index }), {
@@ -332,65 +310,38 @@ function applyEnvelopeOperation(registry, kind, draft, envelope, op, index, allo
332
310
  });
333
311
  }
334
312
  envelope.themeId = op.themeId;
335
- return draft;
313
+ return;
336
314
  case 'set_locale':
337
315
  envelope.locale = op.locale;
338
- return draft;
339
- case 'replace_content': {
340
- checkDepth(op.content, `operations[${index}].content`, locale);
341
- const raw = sanitizeDeep(op.content);
342
- for (const id of collectExplicitIds(raw))
343
- allocator.reserve(id);
344
- const normalized = kind.normalize
345
- ? kind.normalize(structuredClone(raw), idContext(allocator))
346
- : structuredClone(raw);
347
- const parsed = kind.contentSchema.safeParse(normalized);
348
- if (!parsed.success) {
349
- throw new ArtifactError('INVALID_OPERATION', t(locale, 'INVALID_OPERATION', { index }), {
350
- issues: zodIssuesToErrorIssues(parsed.error.issues, locale, `operations[${index}].content`),
351
- details: { index },
352
- });
353
- }
354
- return parsed.data;
355
- }
316
+ return;
356
317
  }
357
318
  }
358
319
  /**
359
- * Targets an operation batch touches, for automatic rebase (spec §8.3). Uses the kind's `targets` when it
360
- * covers every operation, otherwise the diff produced by applying the batch on its base.
320
+ * Areas a batch touches, for automatic rebase (spec §9.2). Derived from the diff produced by applying the batch on
321
+ * its base, plus the envelope fields it sets. `replace_content` touches everything.
361
322
  */
362
- export function batchTargets(kind, operations, baseDiff) {
323
+ export function batchTargets(operations, baseDiff) {
363
324
  const targets = new Set();
364
- const kindOps = operations.filter((op) => !isEnvelopeOperation(op));
365
- for (const op of operations) {
366
- if (!isEnvelopeOperation(op))
367
- continue;
368
- const name = op.op;
369
- if (name === 'replace_content')
370
- targets.add('*');
371
- else
372
- targets.add(`envelope:${name === 'set_title' ? 'title' : name === 'set_theme' ? 'themeId' : 'locale'}`);
373
- }
374
- if (kind.targets && kindOps.length > 0) {
375
- for (const op of kindOps)
376
- for (const target of kind.targets(op))
377
- targets.add(target);
378
- }
379
- else {
380
- for (const change of baseDiff)
381
- targets.add(change.target);
325
+ for (const item of operations) {
326
+ if (item.kind === 'envelope') {
327
+ const op = item.op;
328
+ if (op.op === 'replace_content')
329
+ targets.add('*');
330
+ else
331
+ targets.add(`envelope:${op.op === 'set_title' ? 'title' : op.op === 'set_theme' ? 'themeId' : 'locale'}`);
332
+ }
382
333
  }
334
+ for (const change of baseDiff)
335
+ targets.add(change.target);
383
336
  return targets;
384
337
  }
385
338
  /** True when two target sets overlap. `*` overlaps everything. */
386
339
  export function targetsOverlap(a, b) {
387
340
  if ((a.has('*') && b.size > 0) || (b.has('*') && a.size > 0))
388
341
  return true;
389
- for (const target of a) {
342
+ for (const target of a)
390
343
  if (b.has(target))
391
344
  return true;
392
- // A target nested in another (`cell:Resumo!A1` vs `sheet:Resumo`) is handled by kinds emitting both.
393
- }
394
345
  return false;
395
346
  }
396
347
  export { formatPath };
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,4 @@
1
1
  import { z } from 'zod';
2
- export declare const ARTIFACT_STATUSES: readonly ['draft', 'pending_approval', 'published', 'archived'];
3
- export type ArtifactStatus = (typeof ARTIFACT_STATUSES)[number];
4
- export declare const artifactStatusSchema: z.ZodEnum<{
5
- archived: "archived";
6
- draft: "draft";
7
- pending_approval: "pending_approval";
8
- published: "published";
9
- }>;
10
2
  export declare const actorSchema: z.ZodObject<{
11
3
  type: z.ZodEnum<{
12
4
  agent: "agent";
@@ -38,22 +30,19 @@ export declare const metaSchema: z.ZodObject<{
38
30
  id: z.ZodString;
39
31
  }, z.core.$strip>;
40
32
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
41
- publishedVersion: z.ZodOptional<z.ZodNumber>;
42
33
  }, z.core.$strip>;
43
34
  export type ArtifactMeta = z.infer<typeof metaSchema>;
44
- /** Envelope (spec §6.1). Only `content` is produced by the model; everything else is system-owned. */
35
+ /**
36
+ * Envelope. Only `content` is produced by the model; everything else is system-owned. The library keeps the current
37
+ * content and a `version` counter for optimistic concurrency. It keeps no history: saving and versioning belong to the
38
+ * harness, which receives the save action from the editor (see `onSave` in `@artkit-ai/react`).
39
+ */
45
40
  export declare const envelopeSchema: z.ZodObject<{
46
41
  id: z.ZodString;
47
- kind: z.ZodString;
48
- schemaVersion: z.ZodNumber;
42
+ format: z.ZodString;
43
+ formatVersion: z.ZodString;
49
44
  version: z.ZodNumber;
50
45
  title: z.ZodString;
51
- status: z.ZodEnum<{
52
- archived: "archived";
53
- draft: "draft";
54
- pending_approval: "pending_approval";
55
- published: "published";
56
- }>;
57
46
  locale: z.ZodString;
58
47
  themeId: z.ZodString;
59
48
  content: z.ZodUnknown;
@@ -77,16 +66,14 @@ export declare const envelopeSchema: z.ZodObject<{
77
66
  id: z.ZodString;
78
67
  }, z.core.$strip>;
79
68
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
80
- publishedVersion: z.ZodOptional<z.ZodNumber>;
81
69
  }, z.core.$strip>;
82
70
  }, z.core.$strip>;
83
71
  export interface Artifact<Content = unknown> {
84
72
  id: string;
85
- kind: string;
86
- schemaVersion: number;
73
+ format: string;
74
+ formatVersion: string;
87
75
  version: number;
88
76
  title: string;
89
- status: ArtifactStatus;
90
77
  locale: string;
91
78
  themeId: string;
92
79
  content: Content;
@@ -95,15 +82,11 @@ export interface Artifact<Content = unknown> {
95
82
  /** Lightweight reference carried in chat messages and lists (no content). */
96
83
  export interface ArtifactSummary {
97
84
  id: string;
98
- kind: string;
85
+ format: string;
99
86
  title: string;
100
87
  version: number;
101
- status: ArtifactStatus;
102
88
  locale: string;
103
89
  updatedAt: string;
104
90
  }
105
91
  export declare function summarize(artifact: Artifact): ArtifactSummary;
106
- /** Allowed lifecycle transitions (spec §15.3). */
107
- export declare const STATUS_TRANSITIONS: Record<ArtifactStatus, readonly ArtifactStatus[]>;
108
- export declare function canTransition(from: ArtifactStatus, to: ArtifactStatus): boolean;
109
92
  //# sourceMappingURL=envelope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB,YAAI,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AACjG,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,eAAO,MAAM,oBAAoB;;;;;EAA4B,CAAC;AAE9D,eAAO,MAAM,WAAW;;;;;;;iBAGtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,WAAW,aAAqF,CAAC;AAG9G,eAAO,MAAM,YAAY,aAGqD,CAAC;AAE/E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;iBAQrB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEtD,sGAAsG;AACtG,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWzB,CAAC;AAEH,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAU7D;AAED,kDAAkD;AAClD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,cAAc,EAAE,CAKhF,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAE/E"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;;;iBAGtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,WAAW,aAAqF,CAAC;AAG9G,eAAO,MAAM,YAAY,aAGqD,CAAC;AAE/E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;iBAMrB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUzB,CAAC;AAEH,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAS7D"}