@seat-mesh/core 1.0.11 → 1.0.12

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.
@@ -4,6 +4,7 @@ import path from "node:path";
4
4
  import { afterEach, describe, expect, it } from "vitest";
5
5
  import { appendSlotPrompt, querySlotPrompts, tailSlotPrompts, turnHash } from "./store.js";
6
6
  import { resolveSlotKeyFromPane } from "./slot.js";
7
+ import { chatAgentSpeaker, chatHumanKind, formatChatTranscript, providerSpeakerTag, } from "./speaker.js";
7
8
  describe("chatfile store", () => {
8
9
  let tmp = "";
9
10
  afterEach(() => {
@@ -25,6 +26,8 @@ describe("chatfile store", () => {
25
26
  humanPrompt: "fix the bug",
26
27
  agentResponse: "done",
27
28
  });
29
+ expect(a.agent).toBe("slot-1-cursor");
30
+ expect(a.humanKind).toBe("human");
28
31
  const b = await appendSlotPrompt(ws, cfg, {
29
32
  slot: "worker-1",
30
33
  providerId: "cursor-agent",
@@ -37,6 +40,33 @@ describe("chatfile store", () => {
37
40
  const tail = await tailSlotPrompts(ws, cfg, "worker-1", 10);
38
41
  expect(tail).toHaveLength(1);
39
42
  });
43
+ it("keeps separate records when the seat switches providers", async () => {
44
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "chatfile-"));
45
+ const cfg = { root: "tasks/chat-files", filename: "CHAT.jsonl" };
46
+ const ws = tmp;
47
+ fs.mkdirSync(path.join(ws, cfg.root), { recursive: true });
48
+ const oc = await appendSlotPrompt(ws, cfg, {
49
+ slot: "mini-1",
50
+ providerId: "opencode",
51
+ sessionId: "ses_oc",
52
+ humanPrompt: "same ask",
53
+ agentResponse: "oc answer",
54
+ });
55
+ const claude = await appendSlotPrompt(ws, cfg, {
56
+ slot: "mini-1",
57
+ providerId: "claude",
58
+ sessionId: "uuid-claude",
59
+ humanPrompt: "same ask",
60
+ agentResponse: "oc answer",
61
+ });
62
+ expect(oc.agent).toBe("mini-1-oc");
63
+ expect(claude.agent).toBe("mini-1-claude");
64
+ expect(oc.id).not.toBe(claude.id);
65
+ const byAgent = await querySlotPrompts(ws, cfg, { agent: "mini-1-kiro" });
66
+ expect(byAgent).toHaveLength(0);
67
+ const ocRows = await querySlotPrompts(ws, cfg, { agent: "mini-1-oc" });
68
+ expect(ocRows).toHaveLength(1);
69
+ });
40
70
  it("queries by session and provider", async () => {
41
71
  tmp = fs.mkdtempSync(path.join(os.tmpdir(), "chatfile-"));
42
72
  const cfg = { root: "tasks/chat-files", filename: "CHAT.jsonl" };
@@ -59,15 +89,61 @@ describe("chatfile store", () => {
59
89
  const bySession = await querySlotPrompts(ws, cfg, { sessionId: "abc" });
60
90
  expect(bySession).toHaveLength(1);
61
91
  expect(bySession[0]?.providerId).toBe("claude");
92
+ expect(bySession[0]?.agent).toBe("slot-2-claude");
62
93
  const byProvider = await querySlotPrompts(ws, cfg, { providerId: "opencode" });
63
94
  expect(byProvider).toHaveLength(1);
64
95
  expect(byProvider[0]?.slot).toBe("worker-3");
65
96
  });
97
+ it("marks mesh-inbox prompts as system", async () => {
98
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "chatfile-"));
99
+ const cfg = { root: "tasks/chat-files", filename: "CHAT.jsonl" };
100
+ const ws = tmp;
101
+ fs.mkdirSync(path.join(ws, cfg.root), { recursive: true });
102
+ const row = await appendSlotPrompt(ws, cfg, {
103
+ slot: "mini-6",
104
+ providerId: "opencode",
105
+ humanPrompt: "[mesh-inbox] OC-PROVE-1: FYI only",
106
+ agentResponse: "ack",
107
+ });
108
+ expect(row.humanKind).toBe("system");
109
+ expect(row.agent).toBe("mini-6-oc");
110
+ expect(formatChatTranscript(row)).toBe("[system]: [mesh-inbox] OC-PROVE-1: FYI only\n[mini-6-oc]: ack");
111
+ });
66
112
  });
67
113
  describe("turnHash", () => {
68
114
  it("is stable for same input", () => {
69
- const h = turnHash({ sessionId: "s", humanPrompt: "a", agentResponse: "b" });
70
- expect(h).toBe(turnHash({ sessionId: "s", humanPrompt: "a", agentResponse: "b" }));
115
+ const h = turnHash({
116
+ sessionId: "s",
117
+ agent: "mini-1-oc",
118
+ humanPrompt: "a",
119
+ agentResponse: "b",
120
+ });
121
+ expect(h).toBe(turnHash({ sessionId: "s", agent: "mini-1-oc", humanPrompt: "a", agentResponse: "b" }));
122
+ });
123
+ it("changes when agent switches", () => {
124
+ const a = turnHash({
125
+ sessionId: "s",
126
+ agent: "mini-1-oc",
127
+ humanPrompt: "a",
128
+ agentResponse: "b",
129
+ });
130
+ const b = turnHash({
131
+ sessionId: "s",
132
+ agent: "mini-1-claude",
133
+ humanPrompt: "a",
134
+ agentResponse: "b",
135
+ });
136
+ expect(a).not.toBe(b);
137
+ });
138
+ });
139
+ describe("speaker labels", () => {
140
+ it("maps providers and seats", () => {
141
+ expect(providerSpeakerTag("cursor-agent")).toBe("cursor");
142
+ expect(providerSpeakerTag("opencode")).toBe("oc");
143
+ expect(chatAgentSpeaker("worker-3", "kiro")).toBe("slot-3-kiro");
144
+ expect(chatAgentSpeaker("mini-1", "opencode")).toBe("mini-1-oc");
145
+ expect(chatHumanKind("[mesh-inbox] hi")).toBe("system");
146
+ expect(chatHumanKind("fix the banner")).toBe("human");
71
147
  });
72
148
  });
73
149
  describe("resolveSlotKeyFromPane", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"chatfile.test.js","sourceRoot":"","sources":["../../src/chatfile/chatfile.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatfile.test.js","sourceRoot":"","sources":["../../src/chatfile/chatfile.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from "./types.js";
2
2
  export * from "./slot.js";
3
+ export * from "./speaker.js";
3
4
  export * from "./store.js";
4
5
  export * from "./record.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chatfile/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chatfile/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./types.js";
2
2
  export * from "./slot.js";
3
+ export * from "./speaker.js";
3
4
  export * from "./store.js";
4
5
  export * from "./record.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chatfile/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chatfile/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ /** Short provider tags for speaker labels (slot-3-kiro, mini-1-oc, …). */
2
+ export declare function providerSpeakerTag(providerId: string): string;
3
+ /**
4
+ * Peer-facing seat tag: worker-3 → slot-3, mini-6 stays mini-6, manager stays manager.
5
+ */
6
+ export declare function seatSpeakerTag(slot: string): string;
7
+ /** Stable agent speaker id: `slot-3-kiro`, `mini-1-oc`, `manager-claude`. */
8
+ export declare function chatAgentSpeaker(slot: string, providerId: string): string;
9
+ /** Classify the inbound prompt side of a turn. */
10
+ export declare function chatHumanKind(humanPrompt: string): "human" | "system";
11
+ /** One turn as transcript lines (what operators expect to read). */
12
+ export declare function formatChatTranscript(record: {
13
+ agent?: string;
14
+ slot: string;
15
+ providerId: string;
16
+ humanPrompt: string;
17
+ agentResponse?: string;
18
+ humanKind?: "human" | "system";
19
+ }): string;
20
+ //# sourceMappingURL=speaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speaker.d.ts","sourceRoot":"","sources":["../../src/chatfile/speaker.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAMrE;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAChC,GAAG,MAAM,CAQT"}
@@ -0,0 +1,52 @@
1
+ /** Short provider tags for speaker labels (slot-3-kiro, mini-1-oc, …). */
2
+ export function providerSpeakerTag(providerId) {
3
+ const id = providerId.trim().toLowerCase();
4
+ if (id === "cursor-agent" || id === "agent")
5
+ return "cursor";
6
+ if (id === "opencode")
7
+ return "oc";
8
+ if (id === "claude")
9
+ return "claude";
10
+ if (id === "kiro")
11
+ return "kiro";
12
+ if (!id || id === "unknown" || id === "empty")
13
+ return "agent";
14
+ return id.replace(/[^a-z0-9_-]+/gi, "-").replace(/^-+|-+$/g, "") || "agent";
15
+ }
16
+ /**
17
+ * Peer-facing seat tag: worker-3 → slot-3, mini-6 stays mini-6, manager stays manager.
18
+ */
19
+ export function seatSpeakerTag(slot) {
20
+ const s = slot.trim();
21
+ const worker = /^worker-(\d+)$/i.exec(s);
22
+ if (worker)
23
+ return `slot-${worker[1]}`;
24
+ return s || "unknown";
25
+ }
26
+ /** Stable agent speaker id: `slot-3-kiro`, `mini-1-oc`, `manager-claude`. */
27
+ export function chatAgentSpeaker(slot, providerId) {
28
+ return `${seatSpeakerTag(slot)}-${providerSpeakerTag(providerId)}`;
29
+ }
30
+ /** Classify the inbound prompt side of a turn. */
31
+ export function chatHumanKind(humanPrompt) {
32
+ const t = humanPrompt.trim();
33
+ if (/\[mesh-inbox/i.test(t))
34
+ return "system";
35
+ if (/^\[agent[-_]/i.test(t))
36
+ return "system";
37
+ if (/^\[mesh-cold-start\]/i.test(t))
38
+ return "system";
39
+ return "human";
40
+ }
41
+ /** One turn as transcript lines (what operators expect to read). */
42
+ export function formatChatTranscript(record) {
43
+ const agent = record.agent?.trim() || chatAgentSpeaker(record.slot, record.providerId);
44
+ const kind = record.humanKind ?? chatHumanKind(record.humanPrompt);
45
+ const humanTag = kind === "system" ? "system" : "human";
46
+ const lines = [`[${humanTag}]: ${record.humanPrompt.trim()}`];
47
+ const reply = record.agentResponse?.trim();
48
+ if (reply)
49
+ lines.push(`[${agent}]: ${reply}`);
50
+ return lines.join("\n");
51
+ }
52
+ //# sourceMappingURL=speaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speaker.js","sourceRoot":"","sources":["../../src/chatfile/speaker.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,EAAE,KAAK,cAAc,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC7D,IAAI,EAAE,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACrC,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAC9D,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,OAAO,CAAC,IAAI,SAAS,CAAC;AACxB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,UAAkB;IAC/D,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,MAOpC;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,IAAI,QAAQ,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -11,12 +11,16 @@ export declare function chatFileConfigForLoaded(loaded: LoadedProfile): ChatFile
11
11
  export declare function chatFilePath(workspace: string, cfg: ChatFileConfig, slotKey: string): string;
12
12
  export declare function turnHash(input: {
13
13
  sessionId?: string;
14
+ agent?: string;
15
+ providerId?: string;
14
16
  humanPrompt: string;
15
17
  agentResponse?: string;
16
18
  }): string;
17
- export declare function appendSlotPrompt(workspace: string, cfg: ChatFileConfig, record: Omit<SlotPromptRecord, "id" | "ts" | "turnHash"> & {
19
+ export declare function appendSlotPrompt(workspace: string, cfg: ChatFileConfig, record: Omit<SlotPromptRecord, "id" | "ts" | "turnHash" | "agent" | "humanKind"> & {
18
20
  id?: string;
19
21
  ts?: string;
22
+ agent?: string;
23
+ humanKind?: "human" | "system";
20
24
  }): Promise<SlotPromptRecord>;
21
25
  export declare function tailSlotPrompts(workspace: string, cfg: ChatFileConfig, slotKey: string, lines?: number): Promise<SlotPromptRecord[]>;
22
26
  export declare function querySlotPrompts(workspace: string, cfg: ChatFileConfig, query: PromptQuery): Promise<SlotPromptRecord[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/chatfile/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAMnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAG7E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAGT;AAOD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACtF,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAI7B;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6B7B"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/chatfile/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG7F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAMnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAG7E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT;AAOD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG;IACjF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAChC,GACA,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAI7B;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgC7B"}
@@ -5,6 +5,7 @@ import { resolveFromWorkspace } from "../paths/paths.js";
5
5
  import { resolveHarnessPath } from "../paths/paths-manifest.js";
6
6
  import { appendJsonlLine, readJsonlAll, readJsonlTail } from "../jsonl/store.js";
7
7
  import { SlotPromptRecordSchema } from "./types.js";
8
+ import { chatAgentSpeaker, chatHumanKind } from "./speaker.js";
8
9
  export function chatFileConfig(profile) {
9
10
  const cf = profile.chatFiles;
10
11
  return {
@@ -21,7 +22,9 @@ export function chatFilePath(workspace, cfg, slotKey) {
21
22
  return path.join(root, slotKey, cfg.filename);
22
23
  }
23
24
  export function turnHash(input) {
24
- const raw = `${input.sessionId ?? ""}\n${input.humanPrompt}\n${input.agentResponse ?? ""}`;
25
+ // Include agent/provider so a seat that switched CLIs does not collapse turns.
26
+ const who = input.agent ?? input.providerId ?? "";
27
+ const raw = `${input.sessionId ?? ""}\n${who}\n${input.humanPrompt}\n${input.agentResponse ?? ""}`;
25
28
  return createHash("sha256").update(raw).digest("hex").slice(0, 16);
26
29
  }
27
30
  function parseRecord(row) {
@@ -29,8 +32,12 @@ function parseRecord(row) {
29
32
  return parsed.success ? parsed.data : null;
30
33
  }
31
34
  export async function appendSlotPrompt(workspace, cfg, record) {
35
+ const agent = record.agent?.trim() || chatAgentSpeaker(record.slot, record.providerId);
36
+ const humanKind = record.humanKind ?? chatHumanKind(record.humanPrompt);
32
37
  const hash = turnHash({
33
38
  sessionId: record.sessionId,
39
+ agent,
40
+ providerId: record.providerId,
34
41
  humanPrompt: record.humanPrompt,
35
42
  agentResponse: record.agentResponse,
36
43
  });
@@ -47,6 +54,8 @@ export async function appendSlotPrompt(workspace, cfg, record) {
47
54
  ts: record.ts ?? new Date().toISOString(),
48
55
  turnHash: hash,
49
56
  ...record,
57
+ agent,
58
+ humanKind,
50
59
  });
51
60
  await appendJsonlLine(file, row);
52
61
  return row;
@@ -58,7 +67,7 @@ export async function tailSlotPrompts(workspace, cfg, slotKey, lines = 50) {
58
67
  return readJsonlTail(file, lines, parseRecord);
59
68
  }
60
69
  export async function querySlotPrompts(workspace, cfg, query) {
61
- const root = resolveFromWorkspace(workspace, cfg.root);
70
+ const root = cfg.rootAbs ?? resolveFromWorkspace(workspace, cfg.root);
62
71
  if (!fs.existsSync(root))
63
72
  return [];
64
73
  const slots = query.slot
@@ -77,6 +86,9 @@ export async function querySlotPrompts(workspace, cfg, query) {
77
86
  rows = rows.filter((r) => {
78
87
  if (query.providerId && r.providerId !== query.providerId)
79
88
  return false;
89
+ if (query.agent && (r.agent ?? chatAgentSpeaker(r.slot, r.providerId)) !== query.agent) {
90
+ return false;
91
+ }
80
92
  if (query.sessionId && r.sessionId !== query.sessionId)
81
93
  return false;
82
94
  if (query.model && r.model !== query.model)
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/chatfile/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/chatfile/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAA2C,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ/D,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,YAAY;QAC9B,QAAQ,EAAE,EAAE,EAAE,QAAQ,IAAI,YAAY;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAqB;IAC3D,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,GAAmB,EAAE,OAAe;IAClF,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAMxB;IACC,+EAA+E;IAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;IACnG,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,GAAmB,EACnB,MAKC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAqB,sBAAsB,CAAC,KAAK,CAAC;QACzD,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,UAAU,EAAE;QAC7B,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,QAAQ,EAAE,IAAI;QACd,GAAG,MAAM;QACT,KAAK;QACL,SAAS;KACV,CAAC,CAAC;IACH,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,GAAmB,EACnB,OAAe,EACf,KAAK,GAAG,EAAE;IAEV,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,GAAmB,EACnB,KAAkB;IAElB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI;QACtB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE;aACC,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,IAAI,GAAuB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACxE,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YACvF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
@@ -2,10 +2,17 @@ import { z } from "zod";
2
2
  export declare const SlotPromptRecordSchema: z.ZodObject<{
3
3
  id: z.ZodString;
4
4
  ts: z.ZodString;
5
- /** worker-1, mini-3, manager, secretary */
5
+ /** worker-1, mini-3, manager, secretary — file path key */
6
6
  slot: z.ZodString;
7
7
  paneId: z.ZodOptional<z.ZodString>;
8
8
  providerId: z.ZodString;
9
+ /**
10
+ * Who answered: seat + provider tag (`slot-3-kiro`, `mini-1-oc`, `manager-claude`).
11
+ * Survives agent switches on the same seat — each record names the CLI that spoke.
12
+ */
13
+ agent: z.ZodOptional<z.ZodString>;
14
+ /** Inbound side: operator typing vs mesh/inbox inject. */
15
+ humanKind: z.ZodOptional<z.ZodEnum<["human", "system"]>>;
9
16
  sessionId: z.ZodOptional<z.ZodString>;
10
17
  model: z.ZodOptional<z.ZodString>;
11
18
  humanPrompt: z.ZodString;
@@ -18,7 +25,9 @@ export declare const SlotPromptRecordSchema: z.ZodObject<{
18
25
  ts: string;
19
26
  providerId: string;
20
27
  humanPrompt: string;
28
+ agent?: string | undefined;
21
29
  paneId?: string | undefined;
30
+ humanKind?: "system" | "human" | undefined;
22
31
  sessionId?: string | undefined;
23
32
  model?: string | undefined;
24
33
  agentResponse?: string | undefined;
@@ -29,7 +38,9 @@ export declare const SlotPromptRecordSchema: z.ZodObject<{
29
38
  ts: string;
30
39
  providerId: string;
31
40
  humanPrompt: string;
41
+ agent?: string | undefined;
32
42
  paneId?: string | undefined;
43
+ humanKind?: "system" | "human" | undefined;
33
44
  sessionId?: string | undefined;
34
45
  model?: string | undefined;
35
46
  agentResponse?: string | undefined;
@@ -39,6 +50,8 @@ export type SlotPromptRecord = z.infer<typeof SlotPromptRecordSchema>;
39
50
  export interface PromptQuery {
40
51
  slot?: string;
41
52
  providerId?: string;
53
+ /** Filter by speaker id (`mini-1-oc`, `slot-3-kiro`, …). */
54
+ agent?: string;
42
55
  sessionId?: string;
43
56
  model?: string;
44
57
  since?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chatfile/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;IAGjC,2CAA2C;;;;;;;;IAQ3C,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;EAEhD,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chatfile/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;IAGjC,2DAA2D;;;;IAI3D;;;OAGG;;IAEH,0DAA0D;;;;;;IAM1D,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEhD,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -2,10 +2,17 @@ import { z } from "zod";
2
2
  export const SlotPromptRecordSchema = z.object({
3
3
  id: z.string().uuid(),
4
4
  ts: z.string().datetime(),
5
- /** worker-1, mini-3, manager, secretary */
5
+ /** worker-1, mini-3, manager, secretary — file path key */
6
6
  slot: z.string().min(1),
7
7
  paneId: z.string().optional(),
8
8
  providerId: z.string().min(1),
9
+ /**
10
+ * Who answered: seat + provider tag (`slot-3-kiro`, `mini-1-oc`, `manager-claude`).
11
+ * Survives agent switches on the same seat — each record names the CLI that spoke.
12
+ */
13
+ agent: z.string().min(1).optional(),
14
+ /** Inbound side: operator typing vs mesh/inbox inject. */
15
+ humanKind: z.enum(["human", "system"]).optional(),
9
16
  sessionId: z.string().optional(),
10
17
  model: z.string().optional(),
11
18
  humanPrompt: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/chatfile/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,2CAA2C;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,gDAAgD;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/chatfile/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,2DAA2D;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B;;;OAGG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,0DAA0D;IAC1D,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,gDAAgD;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seat-mesh/core",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",