@underdogai/mesh-event-schemas 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/surfaces.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * 데이터 바인딩: 문자열 안의 `{{entity.path}}` 를 resolveBindings 로 룸 엔티티 스냅샷에서 채운다.
10
10
  */
11
11
  import { z } from "zod";
12
- import { ToneSchema } from "./blocks.js";
12
+ import { CheckboxBlockSchema, InputBlockSchema, RadioBlockSchema, SelectBlockSchema, SliderBlockSchema, ToggleBlockSchema, ToneSchema, } from "./blocks.js";
13
13
  import { AgentPlanContentSchema, AgentStepStatusSchema, SCHEMA_VERSION, UiCardContentSchema, } from "./events.js";
14
14
  /** 키-값 묶음 (리드 정보 등). value 는 `{{entity.path}}` 바인딩 가능. */
15
15
  export const SurfaceFieldsSchema = z.object({
@@ -332,7 +332,25 @@ export const ModalConfirmSchema = z.object({
332
332
  action_id: z.string(),
333
333
  tone: ToneSchema.optional(),
334
334
  });
335
- /** 모달/시트 스펙 — 제목 + 설명 + 톤 + 확인/취소. title/description 은 `{{entity.path}}` 바인딩 가능. */
335
+ /**
336
+ * 모달 폼 블록 — 카드 블록 어휘의 **입력 서브셋**만 허용한 닫힌 유니온(D1). 버튼/액션 블록은 넣지
337
+ * 않는다 — 모달의 실행 어포던스는 confirm 하나다(파괴적 액션 확인 게이트라는 정체성 유지).
338
+ * 렌더러(ModalRenderer)가 name 별 값을 수집해 confirm 발행 시 values 로 동봉한다.
339
+ */
340
+ export const ModalFormBlockSchema = z.discriminatedUnion("type", [
341
+ InputBlockSchema,
342
+ SelectBlockSchema,
343
+ RadioBlockSchema,
344
+ CheckboxBlockSchema,
345
+ ToggleBlockSchema,
346
+ SliderBlockSchema,
347
+ ]);
348
+ /** 모달 폼 스텝(G3) — 제목 + 폼 블록 묶음. 카드 마법사(UiCardContent.steps)의 모달 짝. */
349
+ export const ModalStepSchema = z.object({
350
+ title: z.string().optional(),
351
+ blocks: ModalFormBlockSchema.array(),
352
+ });
353
+ /** 모달/시트 스펙 — 제목 + 설명 + 톤 + (선택) 폼 블록 + 확인/취소. title/description 은 `{{entity.path}}` 바인딩 가능. */
336
354
  export const ModalSpecSchema = z.object({
337
355
  /** 이 모달의 안정적 id — 같은 id 의 셸 액션이 이 모달을 연다. */
338
356
  id: z.string(),
@@ -341,6 +359,20 @@ export const ModalSpecSchema = z.object({
341
359
  title: z.string(),
342
360
  description: z.string().optional(),
343
361
  tone: ToneSchema.optional(),
362
+ /**
363
+ * 폼 블록(선택, D1) — 확인 전에 사람이 채우는 입력들. confirm 발행 시 수집값이 values 로 동봉된다.
364
+ * 이 필드를 모르는 옛 클라는 zod strip 으로 조용히 떨궈 확인문구만 렌더한다(graceful degrade).
365
+ * 미래 블록 종류는 dropUnknownSurfaceSections 가 블록 단위로 걸러낸다(서피스 붕괴 방지).
366
+ */
367
+ blocks: ModalFormBlockSchema.array().optional(),
368
+ /**
369
+ * 스텝 폼(G3) — 있으면 렌더러가 마법사(이전/다음)로 그리고, 마지막 스텝에서만 confirm 을 활성한다.
370
+ * 이때 blocks 는 무시된다(전방호환 트릭: 발행 측 buildAppSurface 가 blocks 에 **평탄화 사본**을 자동
371
+ * 동봉하므로, steps 를 모르는 옛 클라는 strip 후 평면 폼(blocks)으로 렌더 — 기능 축소일 뿐 파손 없음).
372
+ */
373
+ steps: ModalStepSchema.array().optional(),
374
+ /** 자동 확인(리뷰) 스텝(G3) — steps 가 있을 때 마지막에 수집값 요약(라벨→값) 스텝을 붙인다. 기본 true. */
375
+ review: z.boolean().optional(),
344
376
  /** 확인 버튼(있으면) — 누르면 confirm.action_id 를 발행하고 닫는다. */
345
377
  confirm: ModalConfirmSchema.optional(),
346
378
  /** 취소/닫기 라벨(기본 "Cancel"). */
@@ -371,6 +403,97 @@ export const ObjectMapSpecSchema = z.object({
371
403
  nodes: ObjectMapNodeSchema.array(),
372
404
  edges: ObjectMapEdgeSchema.array(),
373
405
  });
406
+ // --- 우측 셸 패널 기여 (ShellPanelTabContribution) — PANEL-SDK-1 ---
407
+ // SDK 앱이 우측 패널에 Files 와 동급의 **독립 탭**을 선언형으로 기여한다. 기존 PanelTabSchema 는
408
+ // PanelSpec *내부의 서브탭*이라 이름을 겹치지 않는다(티켓 §3.1). 배치(panel_tabs)와 콘텐츠(kind)를
409
+ // 분리한다: 파일 관리는 콘텐츠 종류 중 하나(assetBrowser)일 뿐, 탭 배치 API 가 아니다(잠금 결정 1).
410
+ // 호스트가 실제 탭 id 를 `app:<app>:<tab.id>` 로 네임스페이스해 코어 id(panel/files/preview:*)와
411
+ // 충돌할 수 없게 한다(client-web core/panelContributions.ts).
412
+ /** 앱당 panel_tabs 상한 — 스키마(max)와 인바운드 degrade(초과분 자르기)가 같은 값을 본다. */
413
+ export const MAX_PANEL_TAB_CONTRIBUTIONS = 8;
414
+ /** 앱당 preview_providers 상한 — 위와 같은 쌍. */
415
+ export const MAX_PREVIEW_PROVIDERS = 32;
416
+ /** 필수 파일 슬롯 — "이 종류의 파일이 최소 몇 개 있어야 한다"(레퍼런스/기획설계 등). */
417
+ export const AssetBrowserSlotSchema = z.object({
418
+ id: z.string().min(1),
419
+ label: z.string().min(1),
420
+ /** 허용 형식 — ".pdf"(확장자) 또는 "image/*"(MIME) 문자열. 업로드 input accept 와 같은 어휘. */
421
+ accept: z.string().array().optional(),
422
+ /** 충족으로 판정할 최소 개수(기본 1). */
423
+ min: z.number().int().min(0).optional(),
424
+ });
425
+ /**
426
+ * 파일 브라우저 스펙 — 폴더/현재 버전/버전 이력을 **앱 네임스페이스 이벤트**로 연결한다(티켓 §6).
427
+ * mxc(바이트 주소)와 앱 도메인 메타데이터(asset/folder/version)를 분리한다(잠금 결정 7).
428
+ * 렌더러(AssetBrowserPanel)는 Phase D — 스키마/계약을 먼저 고정한다.
429
+ */
430
+ export const AssetBrowserSpecSchema = z.object({
431
+ title: z.string().optional(),
432
+ /** 데이터 이벤트 타입 — folder/current 는 state, version 은 timeline(append-only). */
433
+ events: z.object({
434
+ folder: z.string().min(1),
435
+ current: z.string().min(1),
436
+ version: z.string().min(1),
437
+ }),
438
+ /** 조작 액션 id(org.corp.ui.action 왕복) — 없으면 읽기 전용 브라우저. */
439
+ actions: z
440
+ .object({
441
+ upload: z.string().optional(),
442
+ createFolder: z.string().optional(),
443
+ rename: z.string().optional(),
444
+ })
445
+ .optional(),
446
+ requiredSlots: AssetBrowserSlotSchema.array().optional(),
447
+ });
448
+ /**
449
+ * 기여 탭의 콘텐츠 — 닫힌 판별 유니온(잠금 결정 3: React/임의 CSS 주입 없음).
450
+ * - surface: 기존 닫힌 SurfaceBody 조합(PanelSpec)을 그대로 렌더(SurfaceRenderer 재사용).
451
+ * - assetBrowser: 파일 관리 명세(위). 미래 kind 는 dropUnknownSurfaceSections 가 탭 단위로 거른다.
452
+ */
453
+ export const ShellPanelContentSchema = z.discriminatedUnion("kind", [
454
+ z.object({ kind: z.literal("surface"), panel: PanelSpecSchema }),
455
+ AssetBrowserSpecSchema.extend({ kind: z.literal("assetBrowser") }),
456
+ ]);
457
+ /** 우측 셸 패널 기여 탭 하나 — id 는 앱 내부 고유(호스트가 `app:<app>:` 접두사로 네임스페이스). */
458
+ export const ShellPanelTabContributionSchema = z.object({
459
+ id: z.string().min(1),
460
+ label: z.string().min(1),
461
+ /** 호스트 아이콘 집합(components/icons) 이름 — 미지 값은 중립 폴백(빈 원). */
462
+ icon: z.string().optional(),
463
+ /**
464
+ * lazy(기본) — 활성일 때만 마운트. keep-alive — **한 번 열린 뒤**에는 전환해도 살려 둔다
465
+ * (WorkspaceShell 의 기존 규칙 보존: 열지도 않은 탭을 미리 마운트하지 않는다).
466
+ */
467
+ lifecycle: z.enum(["lazy", "keep-alive"]).optional(),
468
+ content: ShellPanelContentSchema,
469
+ });
470
+ // --- 동적 미리보기 제공자 (PreviewProviderSpec) — PANEL-SDK-1 ---
471
+ // 앱이 코어가 모르는 확장자/MIME 을 **호스트 내장 안전 렌더러**에 매핑한다(잠금 결정 4: 매칭과
472
+ // 렌더링 분리 — 임의 실행 코드는 0.4 의 별도 샌드박스 경로만). 매칭 규칙은 순수 함수
473
+ // resolvePreviewProvider(client-web core/previewRegistry.ts)가 고정한다: 코어 아는 형식 우선,
474
+ // 앱 간은 room.apps 순서, provider 안에서는 extension/MIME OR.
475
+ /** 호스트 내장 안전 renderer id — Phase C 에서 renderer registry 의 키가 된다. */
476
+ export const NativePreviewRendererIdSchema = z.enum([
477
+ "image",
478
+ "video",
479
+ "audio",
480
+ "pdf",
481
+ "text",
482
+ "markdown",
483
+ "html-sandbox",
484
+ ]);
485
+ /** 미리보기 제공자 하나 — 확장자/MIME 매칭 → 내장 renderer. */
486
+ export const PreviewProviderSpecSchema = z.object({
487
+ id: z.string().min(1),
488
+ match: z.object({
489
+ /** 점 포함 확장자(".dxf") 권장 — 클라가 소문자·점 포함으로 정규화해 매칭한다. */
490
+ extensions: z.string().array().optional(),
491
+ /** exact("text/plain") 또는 wildcard("image/*"). */
492
+ mimeTypes: z.string().array().optional(),
493
+ }),
494
+ /** 렌더러 — 0.3 은 native 만(닫힌 enum). widget/converter 는 0.4 별도 보안 경로(티켓 §5.4). */
495
+ renderer: z.object({ kind: z.literal("native"), id: NativePreviewRendererIdSchema }),
496
+ });
374
497
  // --- 앱 서피스 와이어 이벤트 (org.corp.app.surface) — "서피스를 데이터로" ---
375
498
  // 클라에 팩을 컴파일해 넣는 대신(registerAppPack=클라 평면), 앱(App Service)이 셸 서피스(패널/헤더)를
376
499
  // 상태 이벤트로 룸에 실어 보낸다 → "Matrix App Service 만 추가해도" 회사별 UI 가 등록·렌더된다.
@@ -388,8 +511,13 @@ export const AppSurfaceContentSchema = z.object({
388
511
  display_name: z.string().optional(),
389
512
  /** 이 서피스가 다루는 엔티티 타입(표시/진단용). */
390
513
  entity_type: z.string().optional(),
391
- /** 우측 컨텍스트 패널(닫힌 SurfaceBody 조합). {{entity.path}} 바인딩은 클라가 resolveBindings 로 해석. */
392
- panel: PanelSpecSchema,
514
+ /**
515
+ * 우측 컨텍스트 패널(닫힌 SurfaceBody 조합) — PANEL-SDK-1 부터 **선택**. panel_tabs 만 기여하는
516
+ * 앱은 panel 없이도 유효한 서피스다. 이 필드를 모르는 구 클라에서는 "신규 탭만 가진 앱이 안 보임"
517
+ * 으로 축소될 뿐 기존 서피스는 그대로 동작한다(하위호환 UI 가 필요한 앱은 0.3 동안 sidebar 병행).
518
+ * {{entity.path}} 바인딩은 클라가 resolveBindings 로 해석.
519
+ */
520
+ panel: PanelSpecSchema.optional(),
393
521
  /**
394
522
  * 메인 영역 서피스(닫힌 SurfaceBody 조합) — 선택. 우측 panel 의 짝으로, 룸 본문(타임라인 대신)에
395
523
  * 탭으로 그릴 중앙 콘텐츠를 데이터로 기술한다. 없으면 이 앱은 사이드바 탭만 제공한다.
@@ -413,6 +541,13 @@ export const AppSurfaceContentSchema = z.object({
413
541
  objectMap: ObjectMapSpecSchema.optional(),
414
542
  /** 선언형 모달/시트(확인 다이얼로그) — 선택(AppPack.modals 동일). 같은 id 의 셸 액션이 연다. */
415
543
  modals: ModalSpecSchema.array().optional(),
544
+ /**
545
+ * 우측 셸 패널 기여 탭(PANEL-SDK-1) — Files 옆에 서는 독립 탭 목록. 순서 = 선언 순서.
546
+ * 이 필드를 모르는 옛 클라는 zod strip 으로 조용히 무시한다(기존 M3 필드와 같은 자세).
547
+ */
548
+ panel_tabs: ShellPanelTabContributionSchema.array().max(MAX_PANEL_TAB_CONTRIBUTIONS).optional(),
549
+ /** 동적 미리보기 제공자(PANEL-SDK-1) — 미지 확장자/MIME → 내장 renderer 매핑. 순서 = 선언 순서. */
550
+ preview_providers: PreviewProviderSpecSchema.array().max(MAX_PREVIEW_PROVIDERS).optional(),
416
551
  /**
417
552
  * 회사별 브랜드 토큰 오버라이드(--cob-color-* → 값). 클라가 룩(디자인 토큰)을 소유하되,
418
553
  * 테넌트는 토큰만 갈아끼워 자기 브랜드를 입힌다(임의 CSS 아님 = 닫힌 토큰 키). 클라가 inline CSS 변수로 적용.
@@ -421,7 +556,11 @@ export const AppSurfaceContentSchema = z.object({
421
556
  });
422
557
  /** AppSurface content 빌더 — v 주입 + 스키마 검증(앱은 이걸 상태 이벤트로 룸에 게시). 항상 현재 SCHEMA_VERSION(strict). */
423
558
  export function buildAppSurface(input) {
424
- return AppSurfaceContentSchema.parse({ ...input, v: SCHEMA_VERSION });
559
+ // 스텝 모달(G3) 전방호환 — steps 선언 시 blocks 에 **평탄화 사본**을 자동 동봉한다(작성자가 blocks 를
560
+ // 직접 줬으면 존중). 신 클라는 steps 를 그리며 blocks 를 무시하고, steps 를 모르는 옛 클라는 zod strip
561
+ // 후 평면 폼(blocks)으로 렌더한다 — 기능 축소일 뿐 파손 없음.
562
+ const modals = input.modals?.map((m) => m.steps?.length && !m.blocks?.length ? { ...m, blocks: m.steps.flatMap((s) => s.blocks) } : m);
563
+ return AppSurfaceContentSchema.parse({ ...input, ...(modals ? { modals } : {}), v: SCHEMA_VERSION });
425
564
  }
426
565
  /**
427
566
  * 인바운드 app.surface content 에서 모르는/깨진 섹션을 떨어낸다(전방호환 graceful degrade) — strict 파싱 전 호출.
@@ -442,10 +581,64 @@ export function dropUnknownSurfaceSections(raw) {
442
581
  return panel;
443
582
  return { ...p, sections: p.sections.filter((s) => SurfaceSectionSchema.safeParse(s).success) };
444
583
  };
584
+ // 모달 폼 블록(D1)도 같은 자세 — blocks 는 닫힌 유니온이라 미래 블록 하나가 modals 배열 전체
585
+ // (나아가 서피스 전체)를 붕괴시킨다 → 블록 단위로 걸러 아는 블록 + 확인문구는 그린다.
586
+ // 스텝 폼(G3)의 steps[].blocks 도 동일 — 스텝 안 미래 블록 하나가 모달을 붕괴시키지 않게 거른다.
587
+ const keepModalBlocks = (modals) => {
588
+ if (!Array.isArray(modals))
589
+ return modals;
590
+ const keepBlocks = (blocks) => Array.isArray(blocks) ? blocks.filter((b) => ModalFormBlockSchema.safeParse(b).success) : blocks;
591
+ return modals.map((m) => {
592
+ if (!m || typeof m !== "object")
593
+ return m;
594
+ const mm = m;
595
+ const out = { ...mm };
596
+ if (Array.isArray(mm.blocks))
597
+ out.blocks = keepBlocks(mm.blocks);
598
+ if (Array.isArray(mm.steps)) {
599
+ out.steps = mm.steps.map((s) => {
600
+ if (!s || typeof s !== "object")
601
+ return s;
602
+ const ss = s;
603
+ return Array.isArray(ss.blocks) ? { ...ss, blocks: keepBlocks(ss.blocks) } : s;
604
+ });
605
+ }
606
+ return out;
607
+ });
608
+ };
609
+ // SDK 기여 탭(PANEL-SDK-1)도 같은 자세 — ① kind:"surface" 탭의 내부 panel 은 섹션 단위로 거르고,
610
+ // ② 그래도 미지(미래 kind)거나 깨진 contribution 은 **그 탭만** 드롭한다(탭 하나 때문에 배열
611
+ // 전체 → 서피스 전체가 붕괴하지 않게). ③ 미래 스키마가 상한을 올려 보내도 옛 클라의 max 검증이
612
+ // 전체를 죽이지 않도록 상한으로 자른다(발신 빌더는 strict 라 정상 경로에선 안 걸린다).
613
+ const keepPanelTabs = (tabs) => {
614
+ if (!Array.isArray(tabs))
615
+ return tabs;
616
+ return tabs
617
+ .map((t) => {
618
+ if (!t || typeof t !== "object")
619
+ return t;
620
+ const tt = t;
621
+ const content = tt.content;
622
+ if (content && typeof content === "object" && content.kind === "surface") {
623
+ const cc = content;
624
+ return { ...tt, content: { ...cc, panel: keepSections(cc.panel) } };
625
+ }
626
+ return t;
627
+ })
628
+ .filter((t) => ShellPanelTabContributionSchema.safeParse(t).success)
629
+ .slice(0, MAX_PANEL_TAB_CONTRIBUTIONS);
630
+ };
631
+ // 미리보기 제공자 — 미래 renderer kind("widget", 0.4)가 섞여 와도 provider 단위로만 거른다.
632
+ const keepPreviewProviders = (providers) => Array.isArray(providers)
633
+ ? providers.filter((p) => PreviewProviderSpecSchema.safeParse(p).success).slice(0, MAX_PREVIEW_PROVIDERS)
634
+ : providers;
445
635
  return {
446
636
  ...c,
447
637
  ...(c.panel !== undefined ? { panel: keepSections(c.panel) } : {}),
448
638
  ...(c.main !== undefined ? { main: keepSections(c.main) } : {}),
639
+ ...(c.modals !== undefined ? { modals: keepModalBlocks(c.modals) } : {}),
640
+ ...(c.panel_tabs !== undefined ? { panel_tabs: keepPanelTabs(c.panel_tabs) } : {}),
641
+ ...(c.preview_providers !== undefined ? { preview_providers: keepPreviewProviders(c.preview_providers) } : {}),
449
642
  };
450
643
  }
451
644
  // --- 데이터 바인딩 ---
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../src/surfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../src/surfaces.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@underdogai/mesh-event-schemas",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "@underdogai/mesh-app-sdk 가 쓰는 이벤트·UI 블록 스키마(zod) — 카드/서피스 와이어 포맷의 단일 진실 공급원.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -38,7 +38,7 @@
38
38
  "repository": {
39
39
  "type": "git",
40
40
  "url": "https://forgejo.taildff74c.ts.net:3000/Underdog/ChatOps.git",
41
- "directory": "packages/event-schemas"
41
+ "directory": "packages/contract/event-schemas"
42
42
  },
43
43
  "engines": {
44
44
  "node": ">=20"
package/src/blocks.ts CHANGED
@@ -54,6 +54,18 @@ export const FieldsBlockSchema = z.object({
54
54
  value: z.string(),
55
55
  /** true면 2열 그리드에 좁게 배치 */
56
56
  short: z.boolean().optional(),
57
+ /**
58
+ * 값을 색이 다른 조각으로 나눠 그린다 — git diff 의 `+214 −37` 처럼 한 필드 안에서 조각마다
59
+ * 톤이 달라야 할 때. 있으면 렌더러가 value 대신 이걸 그리고, `value` 는 평문 사본으로 남는다
60
+ * (구버전 렌더러·fallback 경로가 계속 읽는다 — 그래서 여기 텍스트를 이어붙인 것과 같아야 한다).
61
+ *
62
+ * 조각은 gap 으로 벌어진 한 줄이다. 문장을 쪼개는 용도가 아니라 값 옆에 값을 붙이는 용도다.
63
+ * 색만으로 구분하지 않도록 부호·단위를 각 조각 text 에 남길 것 — 톤은 보조 신호다.
64
+ */
65
+ parts: z
66
+ .object({ text: z.string(), tone: ToneSchema.optional() })
67
+ .array()
68
+ .optional(),
57
69
  })
58
70
  .array(),
59
71
  });
@@ -91,12 +103,25 @@ export const TableBlockSchema = z.object({
91
103
  export const InputBlockSchema = z.object({
92
104
  type: z.literal("input"),
93
105
  name: z.string().min(1),
94
- /** date=날짜, datetime=날짜+시각(네이티브 datetime-local), time=시각만 — 모두 네이티브 피커로 렌더. */
95
- input: z.enum(["text", "textarea", "number", "date", "datetime", "time"]).optional(),
106
+ /**
107
+ * date=날짜, datetime=날짜+시각(네이티브 datetime-local), time=시각만 — 모두 네이티브 피커로 렌더.
108
+ * url/email 은 텍스트 계열(네이티브 검증/모바일 키보드 힌트). file 은 첨부 업로드 —
109
+ * 클라가 mxc:// 로 올린 뒤 값이 `{ mxc, name, size, mime }` 객체로 수집된다(다른 타입은 string).
110
+ * 표시 전용 `file` **블록**(FileBlockSchema)과는 별개다 — 이쪽은 입력(수집)이다.
111
+ */
112
+ input: z.enum(["text", "textarea", "number", "date", "datetime", "time", "url", "email", "file"]).optional(),
96
113
  label: z.string().optional(),
97
114
  placeholder: z.string().optional(),
98
115
  required: z.boolean().optional(),
99
116
  value: z.string().optional(),
117
+ /** input:"file" 전용 — 허용 MIME/확장자(HTML accept 문법, 예: "image/*,.pdf"). 다른 타입에선 무시. */
118
+ accept: z.string().optional(),
119
+ /**
120
+ * input:"file" 전용(G1) — true 면 여러 파일을 누적 선택하고 값이 `{ mxc, … }[]` **배열**로 수집된다
121
+ * (단일이면 기존대로 객체 — 하위호환). 다른 타입에선 무시. 이 키를 모르는 옛 클라는 strip 후
122
+ * 단일 업로드로 동작한다(기능 축소일 뿐 파손 없음).
123
+ */
124
+ multiple: z.boolean().optional(),
100
125
  });
101
126
 
102
127
  /** 토글(스위치) — checkbox 와 같은 불리언을 수집하되 on/off 스위치 어포던스로 렌더. */
package/src/events.ts CHANGED
@@ -142,6 +142,32 @@ export const AgentCapabilityContentSchema = z.object({
142
142
  });
143
143
  export type AgentCapabilityContent = z.infer<typeof AgentCapabilityContentSchema>;
144
144
 
145
+ // --------------------------------------------------------------------------
146
+ // org.corp.<app>.acl (상태 이벤트, state_key = "" — per-액션 ACL, C1)
147
+ // --------------------------------------------------------------------------
148
+ // 선언은 데이터(방 상태), 판정은 서버 게이트(evaluateAction) — 원칙 1. 방 운영자가 이 상태를 써서
149
+ // "이 방에서 이 액션은 이 사람들만"을 선언하면, 호스트 게이트가 dispatch 시점에 읽어 sender 를 대조한다.
150
+ // 쓰기 자체는 Matrix PL(state_default)로 보호된다. 항목이 없는 action_id 는 제한 없음(기본 허용 —
151
+ // scope/PL 게이트는 그대로 적용). 클라의 버튼 숨김/비활성은 UX 힌트일 뿐이다.
152
+
153
+ /** 한 액션의 ACL — allow: 허용 MXID 목록(빈 배열 = 아무도 못 부름, fail-closed 명시). */
154
+ export const AppActionAclSchema = z.object({
155
+ allow: z.string().array(),
156
+ });
157
+ export type AppActionAcl = z.infer<typeof AppActionAclSchema>;
158
+
159
+ export const AppAclContentSchema = z.object({
160
+ v: VersionSchema,
161
+ /** action_id → ACL. 없는 액션은 제한 없음. */
162
+ actions: z.record(z.string(), AppActionAclSchema),
163
+ });
164
+ export type AppAclContent = z.infer<typeof AppAclContentSchema>;
165
+
166
+ /** 앱의 ACL 상태 이벤트 타입 — `org.corp.<app>.acl`(앱 네임스페이스 소유 규칙과 동일). */
167
+ export function appAclEventType(app: string): string {
168
+ return `org.corp.${app}.acl`;
169
+ }
170
+
145
171
  // --------------------------------------------------------------------------
146
172
  // org.corp.workflow.state (상태 이벤트, last-writer-wins)
147
173
  // --------------------------------------------------------------------------
@@ -216,6 +242,96 @@ export function buildRoomApps(
216
242
  return RoomAppsContentSchema.parse({ ...roomApps, v: SCHEMA_VERSION });
217
243
  }
218
244
 
245
+ // --------------------------------------------------------------------------
246
+ // org.corp.note.* (상태 이벤트 — 채널 노트 = 다같이 보고 다같이 고치는 블록 문서)
247
+ // --------------------------------------------------------------------------
248
+ // 채널마다 노트 **여러 개**. 문서는 **블록 단위로 쪼개진 상태 이벤트**로 저장한다(namespace.ts NoteBlock 주석):
249
+ // org.corp.note.block state_key = <노트 id>.<블록 id> ← 동기화 단위. 삭제 = 빈 content
250
+ // org.corp.note.meta state_key = 노트 id ← 제목 + 목록 정렬 키. 삭제 = 빈 content
251
+ // org.corp.note.editing state_key = 편집 세션 ← "누가 어느 블록을 만지는 중" 표시(강제 잠금 아님)
252
+ //
253
+ // 노트 id 가 **state_key 안에** 사는 이유와 옛 문서(채널당 1개 시절, 구분자 없는 state_key)를 어떻게
254
+ // 이어받는지는 client-web 의 noteModel.ts `DEFAULT_NOTE_ID` 주석에 있다 — 판정은 거기 한 곳뿐이다.
255
+ //
256
+ // 순서는 배열이 아니라 블록마다 가진 **분수 인덱스 문자열**(`order`)이 정한다. 문자열 오름차순이 곧 표시
257
+ // 순서라, 사이에 끼워 넣어도 이웃 블록을 다시 쓰지 않는다(= 삽입이 남의 편집을 밟지 않는다).
258
+ // 누가/언제 고쳤는지는 상태 이벤트의 sender/origin_server_ts 가 이미 갖고 있어 content 에 복제하지 않는다.
259
+
260
+ /** 노트 블록의 닫힌 종류 집합 — 모르는 종류는 수신측이 문단으로 관용 처리한다. */
261
+ export const NOTE_BLOCK_TYPES = [
262
+ "paragraph",
263
+ "heading",
264
+ "bullet",
265
+ "numbered",
266
+ "todo",
267
+ "quote",
268
+ "code",
269
+ "divider",
270
+ ] as const;
271
+ export type NoteBlockType = (typeof NOTE_BLOCK_TYPES)[number];
272
+
273
+ export const NoteBlockContentSchema = z.object({
274
+ v: VersionSchema,
275
+ type: z.enum(NOTE_BLOCK_TYPES),
276
+ /** 본문 — 인라인 마크다운(**굵게**·`코드`·[링크]). divider 는 빈 문자열. 상한은 이벤트 크기 방어. */
277
+ text: z.string().max(8000).default(""),
278
+ /** 정렬 키(분수 인덱스). 문자열 오름차순 = 표시 순서. */
279
+ order: z.string().min(1).max(200),
280
+ /** 제목 단계 — type="heading" 일 때만 의미(그 외엔 무시). */
281
+ level: z.union([z.literal(1), z.literal(2), z.literal(3)]).optional(),
282
+ /** 체크 여부 — type="todo" 일 때만 의미. */
283
+ checked: z.boolean().optional(),
284
+ });
285
+ export type NoteBlockContent = z.infer<typeof NoteBlockContentSchema>;
286
+
287
+ /** 노트 블록 content 를 만든다 (org.corp.note.block, state_key = 블록 id). */
288
+ export function buildNoteBlock(
289
+ block: Omit<NoteBlockContent, "v" | "text"> & { v?: typeof SCHEMA_VERSION; text?: string },
290
+ ): NoteBlockContent {
291
+ return NoteBlockContentSchema.parse({ ...block, v: SCHEMA_VERSION });
292
+ }
293
+
294
+ export const NoteMetaContentSchema = z.object({
295
+ v: VersionSchema,
296
+ /** 노트 제목. 비어 있으면 클라이언트가 기본 이름으로 대체한다. */
297
+ title: z.string().max(200).default(""),
298
+ /**
299
+ * 노트 **목록**의 정렬 키(분수 인덱스) — 블록의 `order` 와 같은 방식·같은 이유다.
300
+ * 옛 노트엔 없다(그때는 채널당 하나였다) → 없으면 수신측이 노트 id 를 대신 쓴다.
301
+ */
302
+ order: z.string().min(1).max(200).optional(),
303
+ });
304
+ export type NoteMetaContent = z.infer<typeof NoteMetaContentSchema>;
305
+
306
+ /** 노트 메타 content 를 만든다 (org.corp.note.meta, state_key = 노트 id — 기본 노트는 ""). */
307
+ export function buildNoteMeta(
308
+ meta: Omit<NoteMetaContent, "v" | "title"> & { v?: typeof SCHEMA_VERSION; title?: string },
309
+ ): NoteMetaContent {
310
+ return NoteMetaContentSchema.parse({ ...meta, v: SCHEMA_VERSION });
311
+ }
312
+
313
+ export const NoteEditingContentSchema = z.object({
314
+ v: VersionSchema,
315
+ /** 지금 만지는 중인 블록 id. 편집을 멈추면 빈 content 로 지운다. */
316
+ block_id: z.string().min(1),
317
+ /**
318
+ * 발신 시각(ms, 발신자 시계). 수신측이 `Date.now() - ts > TTL` 로 스테일을 버린다.
319
+ *
320
+ * origin_server_ts 가 아니라 content 에 두는 이유가 둘: ① 편집이 길어질 때 보내는 갱신이
321
+ * **직전과 같은 content 면 서버가 무시할 수 있어** 표시가 조용히 굳는다 — ts 가 매번 달라 그걸 막는다.
322
+ * ② 수신측은 자기 시계(Date.now())로 비교하는데 서버 시계와 섞으면 기준이 두 개가 된다.
323
+ */
324
+ ts: z.number().int().nonnegative(),
325
+ });
326
+ export type NoteEditingContent = z.infer<typeof NoteEditingContentSchema>;
327
+
328
+ /** 편집중 표시 content 를 만든다 (org.corp.note.editing, state_key = 편집자 MXID). */
329
+ export function buildNoteEditing(
330
+ editing: Omit<NoteEditingContent, "v"> & { v?: typeof SCHEMA_VERSION },
331
+ ): NoteEditingContent {
332
+ return NoteEditingContentSchema.parse({ ...editing, v: SCHEMA_VERSION });
333
+ }
334
+
219
335
  // --------------------------------------------------------------------------
220
336
  // org.corp.entity.snapshot (상태 이벤트, state_key = "" — 엔티티 표시 필드 투영)
221
337
  // --------------------------------------------------------------------------
package/src/namespace.ts CHANGED
@@ -48,6 +48,22 @@ export const EventType = {
48
48
  SpaceApps: `${NS}.space.apps`,
49
49
  /** 상태 이벤트: 룸(채널)이 직접 선언한 App Service(앱) 키 목록 — space.apps 의 per-room 짝, 탭으로 노출 (state_key = "") */
50
50
  RoomApps: `${NS}.room.apps`,
51
+ /**
52
+ * 상태 이벤트: 채널 노트(공동 편집 문서)의 **블록 하나** (state_key = 블록 id).
53
+ *
54
+ * 문서 전체가 아니라 블록마다 이벤트를 쪼갠 이유: Matrix 상태 해석은 (type, state_key) 별로 독립이라
55
+ * **서로 다른 블록을 동시에 고쳐도 충돌하지 않는다**. 한 이벤트에 블록 배열을 담으면 읽고-고쳐-쓰기가
56
+ * 되어 동시 편집이 서로를 지운다(lost update). 같은 블록을 동시에 고친 경우만 last-writer-wins.
57
+ * 블록 삭제 = 빈 content(Matrix 의 상태 해제 관용).
58
+ */
59
+ NoteBlock: `${NS}.note.block`,
60
+ /** 상태 이벤트: 채널 노트의 메타(제목) (state_key = "") */
61
+ NoteMeta: `${NS}.note.meta`,
62
+ /**
63
+ * 상태 이벤트: "지금 이 사람이 이 블록을 편집 중" 표시 (state_key = 편집자 MXID).
64
+ * 강제 잠금이 아니라 **표시용**이고, 유효기간은 수신측이 `ts` 로 판정한다(스테일 자동 소멸).
65
+ */
66
+ NoteEditing: `${NS}.note.editing`,
51
67
  } as const;
52
68
 
53
69
  /** ERP 인바운드 이벤트 타입 접두사. 실제 타입은 `org.corp.erp.<entity>.<verb>` 로 만든다. */
package/src/registry.ts CHANGED
@@ -17,6 +17,9 @@ import {
17
17
  CommandContentSchema,
18
18
  EntitySnapshotContentSchema,
19
19
  ErpEventContentSchema,
20
+ NoteBlockContentSchema,
21
+ NoteEditingContentSchema,
22
+ NoteMetaContentSchema,
20
23
  RoomAppsContentSchema,
21
24
  RoomBindingContentSchema,
22
25
  TaskCreateContentSchema,
@@ -162,6 +165,27 @@ export const EVENT_REGISTRY: RegistryEntry[] = [
162
165
  publishableBy: ["human", "agent"],
163
166
  description: "작업항목 갱신 (상태/배정/진행) — 사람/에이전트가 발행, create 를 m.reference",
164
167
  },
168
+ {
169
+ type: EventType.NoteBlock,
170
+ kind: "state",
171
+ schema: NoteBlockContentSchema,
172
+ publishableBy: ["human", "agent"],
173
+ description: "채널 노트의 블록 하나 (state_key = 블록 id) — 블록 단위 동시 편집의 동기화 단위",
174
+ },
175
+ {
176
+ type: EventType.NoteMeta,
177
+ kind: "state",
178
+ schema: NoteMetaContentSchema,
179
+ publishableBy: ["human", "agent"],
180
+ description: "채널 노트의 메타(제목) (state_key = \"\")",
181
+ },
182
+ {
183
+ type: EventType.NoteEditing,
184
+ kind: "state",
185
+ schema: NoteEditingContentSchema,
186
+ publishableBy: ["human", "agent"],
187
+ description: "노트 편집중 표시 (state_key = 편집자 MXID) — 표시용, 수신측 TTL 로 소멸",
188
+ },
165
189
  {
166
190
  type: EventType.A2aRequest,
167
191
  kind: "message",