@underdogai/mesh-event-schemas 0.1.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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/apppacks.d.ts +15652 -0
  4. package/dist/apppacks.d.ts.map +1 -0
  5. package/dist/apppacks.js +71 -0
  6. package/dist/apppacks.js.map +1 -0
  7. package/dist/blocks.d.ts +2320 -0
  8. package/dist/blocks.d.ts.map +1 -0
  9. package/dist/blocks.js +472 -0
  10. package/dist/blocks.js.map +1 -0
  11. package/dist/capabilities.d.ts +35 -0
  12. package/dist/capabilities.d.ts.map +1 -0
  13. package/dist/capabilities.js +37 -0
  14. package/dist/capabilities.js.map +1 -0
  15. package/dist/events.d.ts +4557 -0
  16. package/dist/events.d.ts.map +1 -0
  17. package/dist/events.js +571 -0
  18. package/dist/events.js.map +1 -0
  19. package/dist/index.d.ts +16 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +16 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/namespace.d.ts +56 -0
  24. package/dist/namespace.d.ts.map +1 -0
  25. package/dist/namespace.js +60 -0
  26. package/dist/namespace.js.map +1 -0
  27. package/dist/plugins.d.ts +131 -0
  28. package/dist/plugins.d.ts.map +1 -0
  29. package/dist/plugins.js +66 -0
  30. package/dist/plugins.js.map +1 -0
  31. package/dist/registry.d.ts +67 -0
  32. package/dist/registry.d.ts.map +1 -0
  33. package/dist/registry.js +212 -0
  34. package/dist/registry.js.map +1 -0
  35. package/dist/surfaces.d.ts +54323 -0
  36. package/dist/surfaces.d.ts.map +1 -0
  37. package/dist/surfaces.js +523 -0
  38. package/dist/surfaces.js.map +1 -0
  39. package/dist/templates.d.ts +390 -0
  40. package/dist/templates.d.ts.map +1 -0
  41. package/dist/templates.js +493 -0
  42. package/dist/templates.js.map +1 -0
  43. package/package.json +50 -0
  44. package/src/apppacks.ts +90 -0
  45. package/src/blocks.ts +544 -0
  46. package/src/capabilities.ts +58 -0
  47. package/src/events.ts +758 -0
  48. package/src/index.ts +15 -0
  49. package/src/namespace.ts +64 -0
  50. package/src/plugins.ts +118 -0
  51. package/src/registry.ts +261 -0
  52. package/src/surfaces.ts +610 -0
  53. package/src/templates.ts +736 -0
@@ -0,0 +1,493 @@
1
+ /**
2
+ * Composite 템플릿 — 프리미티브 블록을 조합한 고수준 카드 빌더 (작성자 DX).
3
+ *
4
+ * 작성자는 매번 블록 트리를 손으로 쌓지 않고 templates.approval(...) 처럼 의도 단위로 만든다.
5
+ * registerTemplate() 로 작성자가 자기 템플릿을 등록할 수도 있다(클라이언트 릴리스 불필요 —
6
+ * 템플릿은 프리미티브로 "확장"되어 기존 렌더러가 그대로 그린다).
7
+ */
8
+ import { buildUiCardContent } from "./events.js";
9
+ const templateRegistry = new Map();
10
+ export function registerTemplate(name, fn) {
11
+ templateRegistry.set(name, fn);
12
+ }
13
+ export function hasTemplate(name) {
14
+ return templateRegistry.has(name);
15
+ }
16
+ export function renderTemplate(name, params) {
17
+ const fn = templateRegistry.get(name);
18
+ if (!fn)
19
+ throw new Error(`Unknown template: ${name}`);
20
+ return fn(params);
21
+ }
22
+ function approval(p) {
23
+ const blocks = [{ type: "fields", items: p.fields }];
24
+ if (p.note)
25
+ blocks.push({ type: "input", name: "note", label: "Note", placeholder: "Optional" });
26
+ blocks.push({
27
+ type: "actions",
28
+ elements: [
29
+ {
30
+ type: "button",
31
+ action_id: "approve",
32
+ text: p.approveText ?? "Approve",
33
+ style: "primary",
34
+ ...(p.confirm ? { confirm: { title: "Approve", text: "Approve this?" } } : {}),
35
+ },
36
+ { type: "button", action_id: "reject", text: p.rejectText ?? "Reject", style: "danger" },
37
+ ],
38
+ });
39
+ return buildUiCardContent({
40
+ card_id: p.card_id,
41
+ title: p.title,
42
+ fallback: p.title ?? "Approval request",
43
+ context: p.context,
44
+ blocks,
45
+ });
46
+ }
47
+ /**
48
+ * 다단계 승인 카드 (HITL) — 0/N 승인 카운터(metric) + 순차 승인자 타임라인(steps) + 액션.
49
+ * approval.request/.decision 이벤트의 표시면. 승인자 status 가 done/active/error/todo 로 매핑되고
50
+ * approved/required 카운터가 진행도를 보여준다(색-only 회피: 숫자 병기).
51
+ */
52
+ function multiApproval(p) {
53
+ const required = p.required ?? p.approvers.length;
54
+ const approved = p.approvers.filter((a) => a.status === "approved").length;
55
+ const rejected = p.approvers.some((a) => a.status === "rejected");
56
+ const blocks = [];
57
+ if (p.fields?.length)
58
+ blocks.push({ type: "fields", items: p.fields });
59
+ blocks.push({
60
+ type: "metric",
61
+ label: "Approvals",
62
+ value: `${approved}/${required}`,
63
+ tone: rejected ? "danger" : approved >= required ? "success" : "info",
64
+ });
65
+ blocks.push({
66
+ type: "steps",
67
+ items: p.approvers.map((a) => ({
68
+ label: a.name,
69
+ status: a.status === "approved"
70
+ ? "done"
71
+ : a.status === "rejected"
72
+ ? "error"
73
+ : a.status === "active"
74
+ ? "active"
75
+ : "todo",
76
+ note: a.note,
77
+ })),
78
+ });
79
+ if (p.note)
80
+ blocks.push({ type: "text", text: p.note, markdown: true });
81
+ const row = actionRow(p.actions ?? [
82
+ { action_id: "approve", text: "Approve", style: "primary" },
83
+ { action_id: "reject", text: "Reject", style: "danger" },
84
+ ]);
85
+ if (row)
86
+ blocks.push(row);
87
+ return buildUiCardContent({
88
+ card_id: p.card_id,
89
+ title: p.title ?? "Approval workflow",
90
+ fallback: p.title ?? `Approval ${approved}/${required}`,
91
+ state: p.state,
92
+ context: p.context,
93
+ blocks,
94
+ });
95
+ }
96
+ /** 작업 상태별 텍스트 라벨(색-only 회피 — 단계 note 에 병기). */
97
+ const TASK_STATUS_LABEL = {
98
+ todo: "To do",
99
+ in_progress: "In progress",
100
+ blocked: "Blocked",
101
+ done: "Done",
102
+ cancelled: "Cancelled",
103
+ };
104
+ /**
105
+ * 작업 상태 → steps 블록 상태(done|active|todo|error) 매핑.
106
+ * blocked→error(빨강·주의 환기)·cancelled→todo(회색·비강조) — 둘은 색이 달라 구분되고, 정확한 상태는
107
+ * 단계 note 텍스트로 병기한다(steps 블록엔 상태 칩이 없어 색만으로 구분 금지 원칙을 텍스트로 충족).
108
+ */
109
+ const TASK_STEP_STATUS = {
110
+ done: "done",
111
+ in_progress: "active",
112
+ blocked: "error",
113
+ todo: "todo",
114
+ cancelled: "todo",
115
+ };
116
+ /**
117
+ * 작업 진척 카드 (C층 프리미티브) — task.* 이벤트에서 파생한 TaskSummary 를 0/N metric + 전체 progress +
118
+ * 작업별 steps 로 렌더. 공정률·카운트는 모두 summary(데이터)에서 오고 카드는 손데이터를 만들지 않는다
119
+ * (done_when "진척도 실데이터"). 상태는 단계 note 에 텍스트로 병기(접근성). multiApproval(0/N)·checklist 와 동형.
120
+ */
121
+ function taskList(p) {
122
+ const s = p.summary;
123
+ // 완료 카운터의 분모는 공정률과 같은 기준(cancelled 제외) — "1/4"와 25% 가 어긋나지 않게.
124
+ const countable = s.total - s.cancelled;
125
+ const blocks = [
126
+ {
127
+ type: "metric",
128
+ label: "Done",
129
+ value: `${s.done}/${countable}`,
130
+ tone: s.percent === 100 && countable > 0 ? "success" : s.byStatus.blocked > 0 ? "warning" : "info",
131
+ },
132
+ { type: "progress", value: s.percent, label: `${s.percent}% complete` },
133
+ {
134
+ type: "steps",
135
+ items: s.tasks.map((t) => {
136
+ // note = 상태 라벨(색-only 회피) + (진행 중이면 %) + 담당자 + 메모 — 한 줄 맥락.
137
+ const parts = [TASK_STATUS_LABEL[t.status]];
138
+ if (t.status === "in_progress" && t.progress != null)
139
+ parts.push(`${t.progress}%`);
140
+ if (t.assignees?.length)
141
+ parts.push(t.assignees.join(", "));
142
+ if (t.note)
143
+ parts.push(t.note);
144
+ return { label: t.title, status: TASK_STEP_STATUS[t.status], note: parts.join(" · ") };
145
+ }),
146
+ },
147
+ ];
148
+ const row = actionRow(p.actions);
149
+ if (row)
150
+ blocks.push(row);
151
+ return buildUiCardContent({
152
+ card_id: p.card_id,
153
+ title: p.title ?? "Tasks",
154
+ // fallback 도 카드 metric 과 같은 분모(cancelled 제외)를 써 미지원 클라에서도 카운트가 일치한다.
155
+ fallback: p.title ?? `${s.done}/${countable} tasks done`,
156
+ state: p.state,
157
+ context: p.context,
158
+ blocks,
159
+ });
160
+ }
161
+ function wizard(p) {
162
+ return buildUiCardContent({
163
+ card_id: p.card_id,
164
+ title: p.title,
165
+ fallback: p.title ?? "Step-by-step form",
166
+ steps: p.steps,
167
+ blocks: [
168
+ {
169
+ type: "actions",
170
+ elements: [
171
+ { type: "button", action_id: p.submitId ?? "submit", text: p.submitText ?? "Submit", style: "primary" },
172
+ ],
173
+ },
174
+ ],
175
+ });
176
+ }
177
+ function list(p) {
178
+ return buildUiCardContent({
179
+ card_id: p.card_id,
180
+ title: p.title,
181
+ fallback: p.title ?? "List",
182
+ blocks: [{ type: "table", columns: p.columns, rows: p.rows }],
183
+ });
184
+ }
185
+ function progress(p) {
186
+ const blocks = [{ type: "progress", value: p.value, label: p.label }];
187
+ if (p.steps)
188
+ blocks.push({ type: "steps", items: p.steps });
189
+ return buildUiCardContent({
190
+ card_id: p.card_id,
191
+ title: p.title,
192
+ fallback: p.title ?? "Progress",
193
+ state: p.state,
194
+ blocks,
195
+ });
196
+ }
197
+ /** 정보/조사 결과 카드 — (선택) badge + 키-값 fields + (선택) 메모 텍스트. */
198
+ function info(p) {
199
+ const blocks = [];
200
+ if (p.badge)
201
+ blocks.push({ type: "badge", text: p.badge.text, tone: p.badge.tone });
202
+ blocks.push({ type: "fields", items: p.fields });
203
+ if (p.note)
204
+ blocks.push({ type: "text", text: p.note, markdown: true });
205
+ return buildUiCardContent({
206
+ card_id: p.card_id,
207
+ title: p.title,
208
+ fallback: p.title ?? "Info",
209
+ context: p.context,
210
+ blocks,
211
+ });
212
+ }
213
+ /** 문서/파일 카드 — 파일명·메타 fields + (선택) 요약 + 미리보기 액션. */
214
+ function doc(p) {
215
+ const items = [{ label: "File", value: p.fileName, short: true }];
216
+ if (p.fileMeta)
217
+ items.push({ label: "Details", value: p.fileMeta, short: true });
218
+ const blocks = [{ type: "fields", items }];
219
+ if (p.summary)
220
+ blocks.push({ type: "text", text: p.summary });
221
+ blocks.push({
222
+ type: "actions",
223
+ elements: [{ type: "button", action_id: p.previewId ?? "preview", text: p.previewText ?? "Preview" }],
224
+ });
225
+ return buildUiCardContent({
226
+ card_id: p.card_id,
227
+ title: p.title,
228
+ fallback: p.title ?? p.fileName,
229
+ context: p.context,
230
+ blocks,
231
+ });
232
+ }
233
+ /** 에이전트 실행 계획 카드 — progress + steps 타임라인 (Agent Plan). */
234
+ function plan(p) {
235
+ return buildUiCardContent({
236
+ card_id: p.card_id,
237
+ title: p.title,
238
+ fallback: p.title ?? "Execution plan",
239
+ context: p.context,
240
+ blocks: [
241
+ // tone 미지정 → 기본 브랜드(보라) 채움. info 톤이 필요하면 호출부에서 지정. (DESIGN.md §5.5)
242
+ { type: "progress", value: p.value, label: p.label },
243
+ { type: "steps", items: p.steps },
244
+ ],
245
+ });
246
+ }
247
+ /** 단일 단계 입력 폼 카드 — 임의 입력 블록 + 제출 액션(마법사 wizard 와 달리 단일 화면). */
248
+ function form(p) {
249
+ return buildUiCardContent({
250
+ card_id: p.card_id,
251
+ title: p.title,
252
+ fallback: p.title ?? "Form",
253
+ context: p.context,
254
+ blocks: [
255
+ ...p.blocks,
256
+ {
257
+ type: "actions",
258
+ elements: [
259
+ { type: "button", action_id: p.submitId ?? "submit", text: p.submitText ?? "Submit", style: "primary" },
260
+ ],
261
+ },
262
+ ],
263
+ });
264
+ }
265
+ /** 진척도·임팩트 스코어카드 — 공정률(progress) + 기준 체크리스트 + 임팩트 KPI(metric). */
266
+ function scorecard(p) {
267
+ const blocks = [];
268
+ if (p.progress != null || p.progressLabel) {
269
+ blocks.push({ type: "progress", value: p.progress, label: p.progressLabel });
270
+ }
271
+ for (const m of p.metrics ?? []) {
272
+ blocks.push({ type: "metric", label: m.label, value: m.value, target: m.target, delta: m.delta, tone: m.tone });
273
+ }
274
+ if (p.criteria?.length) {
275
+ blocks.push({
276
+ type: "steps",
277
+ items: p.criteria.map((c) => ({ label: c.label, status: c.done ? "done" : "todo" })),
278
+ });
279
+ }
280
+ return buildUiCardContent({
281
+ card_id: p.card_id,
282
+ title: p.title ?? "Progress · Impact",
283
+ fallback: p.title ?? "Progress/Impact",
284
+ context: p.context,
285
+ blocks,
286
+ });
287
+ }
288
+ /** ActionDef[] → actions 블록(없으면 null). */
289
+ function actionRow(actions) {
290
+ if (!actions?.length)
291
+ return null;
292
+ return {
293
+ type: "actions",
294
+ elements: actions.map((a) => ({ type: "button", action_id: a.action_id, text: a.text, style: a.style, value: a.value })),
295
+ };
296
+ }
297
+ /** 인물 카드 — 아바타 + 연락 fields + (선택) 엔티티 칩 + 액션. */
298
+ function contactCard(p) {
299
+ const blocks = [{ type: "avatar", name: p.name, subtitle: p.role, status: p.status }];
300
+ if (p.fields?.length)
301
+ blocks.push({ type: "fields", items: p.fields });
302
+ if (p.ref)
303
+ blocks.push({ type: "entityRef", entity: p.ref.entity, label: p.ref.label, url: p.ref.url, tone: "info" });
304
+ const row = actionRow(p.actions);
305
+ if (row)
306
+ blocks.push(row);
307
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? p.name, context: p.context, blocks });
308
+ }
309
+ /** AI 브리핑 카드 — 요약 + 포인트 + 출처 칩 + 액션. */
310
+ function digest(p) {
311
+ const blocks = [{ type: "text", text: p.summary, markdown: true }];
312
+ if (p.points?.length)
313
+ blocks.push({ type: "text", text: p.points.map((pt) => `- ${pt}`).join("\n"), markdown: true });
314
+ if (p.sources?.length) {
315
+ blocks.push({ type: "context", elements: ["Sources"] });
316
+ for (const s of p.sources)
317
+ blocks.push({ type: "entityRef", entity: "source", label: s.label, url: s.url });
318
+ }
319
+ const row = actionRow(p.actions);
320
+ if (row)
321
+ blocks.push(row);
322
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Digest", context: p.context, blocks });
323
+ }
324
+ /** 인시던트 카드 — 심각도 콜아웃 + 메타 fields + 대응 steps + 액션. */
325
+ function incident(p) {
326
+ const blocks = [
327
+ { type: "callout", tone: p.tone ?? "warning", title: p.severity ?? "Incident", text: p.summary ?? p.title ?? "Incident reported" },
328
+ ];
329
+ if (p.fields?.length)
330
+ blocks.push({ type: "fields", items: p.fields });
331
+ if (p.steps?.length)
332
+ blocks.push({ type: "steps", items: p.steps });
333
+ const row = actionRow(p.actions);
334
+ if (row)
335
+ blocks.push(row);
336
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? p.severity ?? "Incident", context: p.context, blocks });
337
+ }
338
+ /** KPI 그리드 카드 — metric 묶음 + (선택) 추세 차트. */
339
+ function kpiGrid(p) {
340
+ const blocks = p.metrics.map((m) => ({
341
+ type: "metric",
342
+ label: m.label,
343
+ value: m.value,
344
+ target: m.target,
345
+ delta: m.delta,
346
+ tone: m.tone,
347
+ }));
348
+ if (p.chart) {
349
+ blocks.push({ type: "chart", variant: p.chart.variant, data: p.chart.data, caption: p.chart.caption, unit: p.chart.unit });
350
+ }
351
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "KPIs", context: p.context, blocks });
352
+ }
353
+ /** 송장 카드 — 금액·기한 등 fields + (선택) 상태 배지 + 승인/반려 액션. */
354
+ function invoice(p) {
355
+ const blocks = [];
356
+ if (p.status)
357
+ blocks.push({ type: "badge", text: p.status.label, tone: p.status.tone });
358
+ const items = [];
359
+ if (p.number)
360
+ items.push({ label: "Invoice", value: p.number, short: true });
361
+ if (p.vendor)
362
+ items.push({ label: "Vendor", value: p.vendor, short: true });
363
+ items.push({ label: "Amount", value: p.amount, short: true });
364
+ if (p.due)
365
+ items.push({ label: "Due", value: p.due, short: true });
366
+ blocks.push({ type: "fields", items });
367
+ const row = actionRow(p.actions ?? [
368
+ { action_id: "approve", text: "Approve", style: "primary" },
369
+ { action_id: "reject", text: "Reject", style: "danger" },
370
+ ]);
371
+ if (row)
372
+ blocks.push(row);
373
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? `Invoice ${p.number ?? ""}`.trim(), context: p.context, blocks });
374
+ }
375
+ /** 견적 카드 — 라인아이템 table + (선택) 합계 metric + 액션. */
376
+ function estimate(p) {
377
+ const blocks = [
378
+ { type: "table", columns: ["Item", "Qty", "Amount"], rows: p.lines.map((l) => [l.label, l.qty ?? "", l.amount]) },
379
+ ];
380
+ if (p.total)
381
+ blocks.push({ type: "metric", label: "Total", value: p.total, tone: "info" });
382
+ if (p.note)
383
+ blocks.push({ type: "text", text: p.note });
384
+ const row = actionRow(p.actions);
385
+ if (row)
386
+ blocks.push(row);
387
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Estimate", context: p.context, blocks });
388
+ }
389
+ /** 비교 카드 — A vs B 표(첫 열=기준, 나머지=옵션 값). */
390
+ function comparison(p) {
391
+ const blocks = [
392
+ { type: "table", columns: ["", ...p.options], rows: p.rows.map((r) => [r.label, ...r.values]) },
393
+ ];
394
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Comparison", context: p.context, blocks });
395
+ }
396
+ /** 체크리스트 카드 — (선택) 담당 아바타 + 진행률 progress + 항목 steps(done/todo). */
397
+ function checklist(p) {
398
+ const total = p.items.length;
399
+ const done = p.items.filter((i) => i.done).length;
400
+ const pct = total ? Math.round((done / total) * 100) : 0;
401
+ const blocks = [];
402
+ if (p.owner)
403
+ blocks.push({ type: "avatar", name: p.owner, subtitle: `Owner · ${done}/${total} done` });
404
+ blocks.push({ type: "progress", value: pct, label: `${done}/${total} complete` });
405
+ blocks.push({
406
+ type: "steps",
407
+ items: p.items.map((i) => ({ label: i.label, status: i.done ? "done" : "todo", note: i.note })),
408
+ });
409
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Checklist", context: p.context, blocks });
410
+ }
411
+ /** 회의 카드 — 안건/일시 fields + 참석자 avatarGroup + (선택) 시간 후보 radio + 확정 액션. */
412
+ function meeting(p) {
413
+ const blocks = [];
414
+ const items = [];
415
+ if (p.agenda)
416
+ items.push({ label: "Agenda", value: p.agenda });
417
+ if (p.when)
418
+ items.push({ label: "When", value: p.when, short: true });
419
+ if (p.duration)
420
+ items.push({ label: "Duration", value: p.duration, short: true });
421
+ if (items.length)
422
+ blocks.push({ type: "fields", items });
423
+ if (p.attendees?.length)
424
+ blocks.push({ type: "avatarGroup", label: "Attendees", people: p.attendees.map((a) => ({ name: a })) });
425
+ if (p.options?.length) {
426
+ blocks.push({ type: "radio", name: "slot", label: "Pick a slot", options: p.options, value: p.options[0]?.value });
427
+ }
428
+ blocks.push({
429
+ type: "actions",
430
+ elements: [{ type: "button", action_id: "confirm_schedule", text: p.confirmText ?? "Confirm time", style: "primary" }],
431
+ });
432
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Meeting", context: p.context, blocks });
433
+ }
434
+ /** 오류 복구 카드 — danger 콜아웃 + (선택) 상세 code + Retry/Escalate 액션. */
435
+ function errorRecovery(p) {
436
+ const blocks = [{ type: "callout", tone: "danger", title: p.title ?? "Something went wrong", text: p.message }];
437
+ if (p.detail)
438
+ blocks.push({ type: "code", code: p.detail });
439
+ blocks.push({
440
+ type: "actions",
441
+ elements: [
442
+ { type: "button", action_id: "retry", text: p.retryText ?? "Retry", style: "primary" },
443
+ { type: "button", action_id: "escalate", text: p.escalateText ?? "Escalate" },
444
+ ],
445
+ });
446
+ return buildUiCardContent({ card_id: p.card_id, title: p.title, fallback: p.title ?? "Error", context: p.context, blocks });
447
+ }
448
+ /** 내장 템플릿 모음 (타입드 SDK 진입점). */
449
+ export const templates = {
450
+ approval,
451
+ multiApproval,
452
+ taskList,
453
+ wizard,
454
+ list,
455
+ progress,
456
+ info,
457
+ doc,
458
+ plan,
459
+ form,
460
+ scorecard,
461
+ contactCard,
462
+ digest,
463
+ incident,
464
+ kpiGrid,
465
+ invoice,
466
+ estimate,
467
+ comparison,
468
+ checklist,
469
+ meeting,
470
+ errorRecovery,
471
+ };
472
+ registerTemplate("approval", approval);
473
+ registerTemplate("multiApproval", multiApproval);
474
+ registerTemplate("taskList", taskList);
475
+ registerTemplate("wizard", wizard);
476
+ registerTemplate("list", list);
477
+ registerTemplate("progress", progress);
478
+ registerTemplate("info", info);
479
+ registerTemplate("doc", doc);
480
+ registerTemplate("plan", plan);
481
+ registerTemplate("form", form);
482
+ registerTemplate("scorecard", scorecard);
483
+ registerTemplate("contactCard", contactCard);
484
+ registerTemplate("digest", digest);
485
+ registerTemplate("incident", incident);
486
+ registerTemplate("kpiGrid", kpiGrid);
487
+ registerTemplate("invoice", invoice);
488
+ registerTemplate("estimate", estimate);
489
+ registerTemplate("comparison", comparison);
490
+ registerTemplate("checklist", checklist);
491
+ registerTemplate("meeting", meeting);
492
+ registerTemplate("errorRecovery", errorRecovery);
493
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@underdogai/mesh-event-schemas",
3
+ "version": "0.1.0",
4
+ "description": "@underdogai/mesh-app-sdk 가 쓰는 이벤트·UI 블록 스키마(zod) — 카드/서피스 와이어 포맷의 단일 진실 공급원.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "src"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "dependencies": {
23
+ "zod": "^3.23.8"
24
+ },
25
+ "devDependencies": {
26
+ "typescript": "^5.6.3"
27
+ },
28
+ "license": "MIT",
29
+ "author": "Underdog",
30
+ "keywords": [
31
+ "matrix",
32
+ "chatops",
33
+ "zod",
34
+ "schema",
35
+ "event-schema"
36
+ ],
37
+ "homepage": "https://chatops.theunderdog.ai/sdk-guide",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://forgejo.taildff74c.ts.net:3000/Underdog/ChatOps.git",
41
+ "directory": "packages/event-schemas"
42
+ },
43
+ "engines": {
44
+ "node": ">=20"
45
+ },
46
+ "scripts": {
47
+ "build": "tsc -p tsconfig.json",
48
+ "typecheck": "tsc -p tsconfig.json --noEmit"
49
+ }
50
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * App Pack 레지스트리 — 도메인 1개(CRM·Forgejo·프로젝트…)를 클라이언트에 가르치는 선언형 번들.
3
+ *
4
+ * 카드의 templateRegistry(templates.ts) / 블록의 registerBlock(ui-blocks)과 같은 "확장 봉합선"을,
5
+ * 룸 단위 셸 서피스로 일반화한 것이다. 룸이 선언한 바인딩(app)에 따라 클라이언트가 팩을 골라
6
+ * 컨텍스트 패널 등 서피스를 렌더한다. 새 SaaS 단위 = 새 팩(데이터) — 클라이언트 포크가 아니다.
7
+ *
8
+ * (panel + 선택 header/canvas 를 담는다. 사이드바 섹션 스펙은 후속. docs/extensibility.md §10)
9
+ *
10
+ * registerAppPack 은 등록 시점에 zod 로 검증한다 → 깨진/외부 공급 팩이 클라를 못 깨게(거부 + 경고).
11
+ */
12
+ import { z } from "zod";
13
+ import {
14
+ AgentDockSpecSchema,
15
+ CanvasSpecSchema,
16
+ CommandPaletteSpecSchema,
17
+ ComposerSpecSchema,
18
+ HeaderSpecSchema,
19
+ ModalSpecSchema,
20
+ ObjectMapSpecSchema,
21
+ PanelSpecSchema,
22
+ SidebarSectionSpecSchema,
23
+ } from "./surfaces.js";
24
+
25
+ /** App Pack 스키마 — 한 도메인의 셸 서피스(헤더·캔버스·패널) 전체를 선언형으로 기술. */
26
+ export const AppPackSchema = z.object({
27
+ /** 룸 바인딩(org.corp.room.binding)의 app 키와 일치 */
28
+ app: z.string().min(1),
29
+ /** 사람이 읽는 이름 */
30
+ displayName: z.string().optional(),
31
+ /** 이 팩이 다루는 엔티티 타입(예: ["lead"], ["repo","pr","issue"]) */
32
+ entityTypes: z.string().array(),
33
+ /** 컨텍스트 패널 선언형 스펙 */
34
+ panel: PanelSpecSchema,
35
+ /** 룸 헤더(제목·메타·파이프라인) 선언형 스펙 */
36
+ header: HeaderSpecSchema.optional(),
37
+ /** 이벤트 캔버스(보드) 선언형 스펙 */
38
+ canvas: CanvasSpecSchema.optional(),
39
+ /** 우측 에이전트 도크(런 + 도메인 서비스) 선언형 스펙 — M3 셸 확장(패널 외 셸 영역 기여) */
40
+ dock: AgentDockSpecSchema.optional(),
41
+ /** 좌측 레일 사이드바 섹션(도메인 네비게이션) — M3 셸 확장. 팩이 여러 섹션을 기여. */
42
+ sidebar: SidebarSectionSpecSchema.array().optional(),
43
+ /** 컴포저(입력창) 어휘 — 슬래시 명령·퀵액션·@엔티티 자동완성. M3 셸 확장. */
44
+ composer: ComposerSpecSchema.optional(),
45
+ /** ⌘K 커맨드 팔레트 엔트리(도메인 액션) — M3 셸 확장. */
46
+ commandPalette: CommandPaletteSpecSchema.optional(),
47
+ /** 객체 맵 — 엔티티 관계 그래프("객체 맵" 탭/캔버스). M3 셸 확장. */
48
+ objectMap: ObjectMapSpecSchema.optional(),
49
+ /** 선언형 모달/시트(확인 다이얼로그) — 같은 id 의 셸 액션이 열고, 확인 시 confirm.action_id 발행. */
50
+ modals: ModalSpecSchema.array().optional(),
51
+ });
52
+ export type AppPack = z.infer<typeof AppPackSchema>;
53
+
54
+ /** registerAppPack 결과 — 깨진 팩은 등록되지 않고 이슈를 돌려준다(호출측이 가시화). */
55
+ export type AppPackRegistration =
56
+ | { ok: true; app: string }
57
+ | { ok: false; app: string; issues: string[] };
58
+
59
+ const registry = new Map<string, AppPack>();
60
+
61
+ /** 환경에 console 이 있으면 경고를 남긴다(이 패키지는 서버/클라/MCP 공용이라 직접 의존하지 않는다). */
62
+ function warn(message: string): void {
63
+ const c = (globalThis as { console?: { warn?: (...args: unknown[]) => void } }).console;
64
+ c?.warn?.(message);
65
+ }
66
+
67
+ /**
68
+ * App Pack 을 검증 후 등록한다. 깨진 팩(잘못된 panel/header/canvas 등)은 거부 + 경고하고
69
+ * 등록하지 않는다 → 외부/작성자 공급 데이터가 클라를 깨지 못한다(graceful). 정상 in-repo 팩은 통과.
70
+ */
71
+ export function registerAppPack(pack: AppPack): AppPackRegistration {
72
+ const parsed = AppPackSchema.safeParse(pack);
73
+ if (!parsed.success) {
74
+ const app = typeof (pack as { app?: unknown } | null)?.app === "string" ? (pack as { app: string }).app : "<unknown>";
75
+ const issues = parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`);
76
+ warn(`[apppacks] 잘못된 App Pack 거부: ${app} — ${issues.join("; ")}`);
77
+ return { ok: false, app, issues };
78
+ }
79
+ registry.set(parsed.data.app, parsed.data);
80
+ return { ok: true, app: parsed.data.app };
81
+ }
82
+ export function getAppPack(app: string): AppPack | undefined {
83
+ return registry.get(app);
84
+ }
85
+ export function hasAppPack(app: string): boolean {
86
+ return registry.has(app);
87
+ }
88
+ export function listAppPacks(): AppPack[] {
89
+ return [...registry.values()];
90
+ }