@amalgm/chat 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 (183) hide show
  1. package/PURPOSE.md +107 -0
  2. package/README.md +41 -0
  3. package/dist/contract/chat-input.d.ts +144 -0
  4. package/dist/contract/chat-input.d.ts.map +1 -0
  5. package/dist/contract/chat-input.js +261 -0
  6. package/dist/contract/chat-input.js.map +1 -0
  7. package/dist/contract/create.d.ts +191 -0
  8. package/dist/contract/create.d.ts.map +1 -0
  9. package/dist/contract/create.js +249 -0
  10. package/dist/contract/create.js.map +1 -0
  11. package/dist/contract/freeze.d.ts +85 -0
  12. package/dist/contract/freeze.d.ts.map +1 -0
  13. package/dist/contract/freeze.js +151 -0
  14. package/dist/contract/freeze.js.map +1 -0
  15. package/dist/contract/harnesses.d.ts +21 -0
  16. package/dist/contract/harnesses.d.ts.map +1 -0
  17. package/dist/contract/harnesses.js +39 -0
  18. package/dist/contract/harnesses.js.map +1 -0
  19. package/dist/contract/index.d.ts +17 -0
  20. package/dist/contract/index.d.ts.map +1 -0
  21. package/dist/contract/index.js +17 -0
  22. package/dist/contract/index.js.map +1 -0
  23. package/dist/contract/input.d.ts +45 -0
  24. package/dist/contract/input.d.ts.map +1 -0
  25. package/dist/contract/input.js +78 -0
  26. package/dist/contract/input.js.map +1 -0
  27. package/dist/contract/models.d.ts +57 -0
  28. package/dist/contract/models.d.ts.map +1 -0
  29. package/dist/contract/models.js +380 -0
  30. package/dist/contract/models.js.map +1 -0
  31. package/dist/contract/payload-merge.d.ts +76 -0
  32. package/dist/contract/payload-merge.d.ts.map +1 -0
  33. package/dist/contract/payload-merge.js +215 -0
  34. package/dist/contract/payload-merge.js.map +1 -0
  35. package/dist/events/constructors.d.ts +53 -0
  36. package/dist/events/constructors.d.ts.map +1 -0
  37. package/dist/events/constructors.js +217 -0
  38. package/dist/events/constructors.js.map +1 -0
  39. package/dist/events/index.d.ts +12 -0
  40. package/dist/events/index.d.ts.map +1 -0
  41. package/dist/events/index.js +12 -0
  42. package/dist/events/index.js.map +1 -0
  43. package/dist/events/schema.d.ts +455 -0
  44. package/dist/events/schema.d.ts.map +1 -0
  45. package/dist/events/schema.js +228 -0
  46. package/dist/events/schema.js.map +1 -0
  47. package/dist/events/tool-display.d.ts +22 -0
  48. package/dist/events/tool-display.d.ts.map +1 -0
  49. package/dist/events/tool-display.js +60 -0
  50. package/dist/events/tool-display.js.map +1 -0
  51. package/dist/events/tool-shape.d.ts +48 -0
  52. package/dist/events/tool-shape.d.ts.map +1 -0
  53. package/dist/events/tool-shape.js +225 -0
  54. package/dist/events/tool-shape.js.map +1 -0
  55. package/dist/index.d.ts +27 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +26 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/normalizers/claude.d.ts +628 -0
  60. package/dist/normalizers/claude.d.ts.map +1 -0
  61. package/dist/normalizers/claude.js +603 -0
  62. package/dist/normalizers/claude.js.map +1 -0
  63. package/dist/normalizers/codex.d.ts +352 -0
  64. package/dist/normalizers/codex.d.ts.map +1 -0
  65. package/dist/normalizers/codex.js +485 -0
  66. package/dist/normalizers/codex.js.map +1 -0
  67. package/dist/normalizers/cursor.d.ts +34 -0
  68. package/dist/normalizers/cursor.d.ts.map +1 -0
  69. package/dist/normalizers/cursor.js +197 -0
  70. package/dist/normalizers/cursor.js.map +1 -0
  71. package/dist/normalizers/index.d.ts +13 -0
  72. package/dist/normalizers/index.d.ts.map +1 -0
  73. package/dist/normalizers/index.js +13 -0
  74. package/dist/normalizers/index.js.map +1 -0
  75. package/dist/normalizers/opencode.d.ts +81 -0
  76. package/dist/normalizers/opencode.d.ts.map +1 -0
  77. package/dist/normalizers/opencode.js +640 -0
  78. package/dist/normalizers/opencode.js.map +1 -0
  79. package/dist/normalizers/pi.d.ts +28 -0
  80. package/dist/normalizers/pi.d.ts.map +1 -0
  81. package/dist/normalizers/pi.js +160 -0
  82. package/dist/normalizers/pi.js.map +1 -0
  83. package/dist/ports.d.ts +14 -0
  84. package/dist/ports.d.ts.map +1 -0
  85. package/dist/ports.js +7 -0
  86. package/dist/ports.js.map +1 -0
  87. package/dist/transcript/index.d.ts +14 -0
  88. package/dist/transcript/index.d.ts.map +1 -0
  89. package/dist/transcript/index.js +12 -0
  90. package/dist/transcript/index.js.map +1 -0
  91. package/dist/transcript/message-reducer.d.ts +167 -0
  92. package/dist/transcript/message-reducer.d.ts.map +1 -0
  93. package/dist/transcript/message-reducer.js +400 -0
  94. package/dist/transcript/message-reducer.js.map +1 -0
  95. package/dist/transcript/part-accumulator.d.ts +24 -0
  96. package/dist/transcript/part-accumulator.d.ts.map +1 -0
  97. package/dist/transcript/part-accumulator.js +30 -0
  98. package/dist/transcript/part-accumulator.js.map +1 -0
  99. package/dist/transcript/tool-display.d.ts +14 -0
  100. package/dist/transcript/tool-display.d.ts.map +1 -0
  101. package/dist/transcript/tool-display.js +125 -0
  102. package/dist/transcript/tool-display.js.map +1 -0
  103. package/dist/transcript/tool-shape.d.ts +34 -0
  104. package/dist/transcript/tool-shape.d.ts.map +1 -0
  105. package/dist/transcript/tool-shape.js +216 -0
  106. package/dist/transcript/tool-shape.js.map +1 -0
  107. package/dist/turns/index.d.ts +11 -0
  108. package/dist/turns/index.d.ts.map +1 -0
  109. package/dist/turns/index.js +11 -0
  110. package/dist/turns/index.js.map +1 -0
  111. package/dist/turns/queries.d.ts +36 -0
  112. package/dist/turns/queries.d.ts.map +1 -0
  113. package/dist/turns/queries.js +37 -0
  114. package/dist/turns/queries.js.map +1 -0
  115. package/dist/turns/replay.d.ts +105 -0
  116. package/dist/turns/replay.d.ts.map +1 -0
  117. package/dist/turns/replay.js +163 -0
  118. package/dist/turns/replay.js.map +1 -0
  119. package/dist/turns/status.d.ts +49 -0
  120. package/dist/turns/status.d.ts.map +1 -0
  121. package/dist/turns/status.js +56 -0
  122. package/dist/turns/status.js.map +1 -0
  123. package/dist/turns/turn-store.d.ts +109 -0
  124. package/dist/turns/turn-store.d.ts.map +1 -0
  125. package/dist/turns/turn-store.js +169 -0
  126. package/dist/turns/turn-store.js.map +1 -0
  127. package/dist/usage/finalize.d.ts +57 -0
  128. package/dist/usage/finalize.d.ts.map +1 -0
  129. package/dist/usage/finalize.js +139 -0
  130. package/dist/usage/finalize.js.map +1 -0
  131. package/dist/usage/index.d.ts +11 -0
  132. package/dist/usage/index.d.ts.map +1 -0
  133. package/dist/usage/index.js +11 -0
  134. package/dist/usage/index.js.map +1 -0
  135. package/dist/usage/model-catalog.d.ts +50 -0
  136. package/dist/usage/model-catalog.d.ts.map +1 -0
  137. package/dist/usage/model-catalog.js +344 -0
  138. package/dist/usage/model-catalog.js.map +1 -0
  139. package/dist/usage/normalize.d.ts +103 -0
  140. package/dist/usage/normalize.d.ts.map +1 -0
  141. package/dist/usage/normalize.js +71 -0
  142. package/dist/usage/normalize.js.map +1 -0
  143. package/dist/usage/ports.d.ts +141 -0
  144. package/dist/usage/ports.d.ts.map +1 -0
  145. package/dist/usage/ports.js +113 -0
  146. package/dist/usage/ports.js.map +1 -0
  147. package/dist/usage/tokens.d.ts +79 -0
  148. package/dist/usage/tokens.d.ts.map +1 -0
  149. package/dist/usage/tokens.js +98 -0
  150. package/dist/usage/tokens.js.map +1 -0
  151. package/dist/warm/client-cache.d.ts +47 -0
  152. package/dist/warm/client-cache.d.ts.map +1 -0
  153. package/dist/warm/client-cache.js +48 -0
  154. package/dist/warm/client-cache.js.map +1 -0
  155. package/dist/warm/envelope-cache.d.ts +79 -0
  156. package/dist/warm/envelope-cache.d.ts.map +1 -0
  157. package/dist/warm/envelope-cache.js +85 -0
  158. package/dist/warm/envelope-cache.js.map +1 -0
  159. package/dist/warm/index.d.ts +16 -0
  160. package/dist/warm/index.d.ts.map +1 -0
  161. package/dist/warm/index.js +11 -0
  162. package/dist/warm/index.js.map +1 -0
  163. package/dist/warm/payload.d.ts +137 -0
  164. package/dist/warm/payload.d.ts.map +1 -0
  165. package/dist/warm/payload.js +112 -0
  166. package/dist/warm/payload.js.map +1 -0
  167. package/dist/warm/revision.d.ts +70 -0
  168. package/dist/warm/revision.d.ts.map +1 -0
  169. package/dist/warm/revision.js +63 -0
  170. package/dist/warm/revision.js.map +1 -0
  171. package/dist/warm/store-policy.d.ts +57 -0
  172. package/dist/warm/store-policy.d.ts.map +1 -0
  173. package/dist/warm/store-policy.js +89 -0
  174. package/dist/warm/store-policy.js.map +1 -0
  175. package/dist/wire/frames.d.ts +208 -0
  176. package/dist/wire/frames.d.ts.map +1 -0
  177. package/dist/wire/frames.js +245 -0
  178. package/dist/wire/frames.js.map +1 -0
  179. package/dist/wire/index.d.ts +7 -0
  180. package/dist/wire/index.d.ts.map +1 -0
  181. package/dist/wire/index.js +7 -0
  182. package/dist/wire/index.js.map +1 -0
  183. package/package.json +72 -0
@@ -0,0 +1,215 @@
1
+ /**
2
+ * The merge law — engine `chat-core/chat-payload.js:33-160`
3
+ * (`applyPayloadRecord`), ported byte-exact, plus the error shapes of
4
+ * `resolveMachineChatPayload` (`chat-payload.js:162-185`) as exported
5
+ * builders. The sqlite payload fetch and MCP server resolution stay host.
6
+ *
7
+ * Precedence: machine payload record > structured chatInput > raw body.
8
+ * Client-supplied `cliModel` / `internalModelId` / `contextWindow` /
9
+ * `maxTokens` are always deleted — those identities are derived server-side.
10
+ */
11
+ import { chatInputToLegacyFields, normalizeChatInput } from './chat-input.js';
12
+ function isObject(value) {
13
+ return !!value && typeof value === 'object' && !Array.isArray(value);
14
+ }
15
+ function nullableString(value) {
16
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
17
+ }
18
+ function uniqueStrings(value) {
19
+ if (!Array.isArray(value))
20
+ return [];
21
+ return [...new Set(value
22
+ .filter((item) => typeof item === 'string')
23
+ .map((item) => item.trim())
24
+ .filter(Boolean))];
25
+ }
26
+ /** Engine `chat-payload.js harnessToAgent` — harness id back to UI agent id. */
27
+ export function harnessToAgent(harness) {
28
+ if (harness === 'codex')
29
+ return 'codex';
30
+ if (harness === 'opencode')
31
+ return 'opencode';
32
+ if (harness === 'cursor')
33
+ return 'cursor';
34
+ if (harness === 'pi')
35
+ return 'pi';
36
+ return 'claude';
37
+ }
38
+ /**
39
+ * Engine `agent-config/loadout.js normalizeLoadout` — pure, ported fully
40
+ * (applyPayloadRecord calls it on `payload.loadout || payload.tools`).
41
+ */
42
+ export function normalizeLoadout(value, fallback = {}, options = {}) {
43
+ const raw = isObject(value) ? value : {};
44
+ const prior = isObject(fallback) ? fallback : {};
45
+ const explicit = rawToolIds(raw);
46
+ const previous = rawToolIds(prior);
47
+ const defaultToolIds = uniqueStrings(options.defaultToolIds || []);
48
+ if (hasExplicitToolIds(raw))
49
+ return { toolIds: explicit };
50
+ if (explicit.length > 0)
51
+ return { toolIds: explicit };
52
+ if (hasExplicitToolIds(prior))
53
+ return { toolIds: previous };
54
+ if (previous.length > 0)
55
+ return { toolIds: previous };
56
+ const isLegacyAll = (raw.mode && raw.mode !== 'selected')
57
+ || (prior.mode && prior.mode !== 'selected');
58
+ if (isLegacyAll && defaultToolIds.length > 0)
59
+ return { toolIds: defaultToolIds };
60
+ return { toolIds: [] };
61
+ }
62
+ function rawToolIds(value) {
63
+ return uniqueStrings(value.toolIds
64
+ || value.selectedToolIds
65
+ || value.selected
66
+ || value.tools
67
+ || []);
68
+ }
69
+ function hasExplicitToolIds(value) {
70
+ if (!isObject(value))
71
+ return false;
72
+ return Object.prototype.hasOwnProperty.call(value, 'toolIds')
73
+ || Object.prototype.hasOwnProperty.call(value, 'selectedToolIds')
74
+ || Object.prototype.hasOwnProperty.call(value, 'selected')
75
+ || Object.prototype.hasOwnProperty.call(value, 'tools');
76
+ }
77
+ /**
78
+ * Engine `applyPayloadRecord(body, record)` (`chat-payload.js:33-160`):
79
+ * overlay a machine payload record onto a raw request body. Field precedence
80
+ * and the final deletions are byte-exact.
81
+ */
82
+ export function applyPayloadRecord(body, record, ports = {}) {
83
+ const payload = isObject(record?.payload) ? record.payload : {};
84
+ const rawChatInput = isObject(body.chatInput) ? body.chatInput : {};
85
+ const rawAgent = isObject(rawChatInput.agent) ? rawChatInput.agent : {};
86
+ const rawTools = isObject(rawChatInput.tools) ? rawChatInput.tools : {};
87
+ const rawExecution = isObject(rawChatInput.execution) ? rawChatInput.execution : {};
88
+ const agentConfigSnapshot = isObject(payload.agentConfigSnapshot) ? payload.agentConfigSnapshot : null;
89
+ const snapshotAgentConfig = isObject(agentConfigSnapshot?.config) ? agentConfigSnapshot.config : null;
90
+ const snapshotAgentId = nullableString(agentConfigSnapshot?.agentId);
91
+ const snapshotCompiledAgentInstructions = nullableString(agentConfigSnapshot?.compiledInstructions);
92
+ const modelSettings = isObject(payload.modelSettings)
93
+ ? payload.modelSettings
94
+ : isObject(body.modelSettings)
95
+ ? body.modelSettings
96
+ : {};
97
+ const harness = nullableString(payload.resolvedHarnessId)
98
+ || nullableString(payload.harness)
99
+ || nullableString(rawAgent.harness)
100
+ || nullableString(body.harness)
101
+ || 'claude_code';
102
+ const modelId = nullableString(payload.modelId)
103
+ || nullableString(rawAgent.model)
104
+ || nullableString(body.modelId)
105
+ || nullableString(body.model);
106
+ const authMethod = nullableString(payload.authMethod)
107
+ || nullableString(rawAgent.authMethod)
108
+ || nullableString(body.authMethod);
109
+ const customAgentId = nullableString(payload.customAgentId)
110
+ || nullableString(rawAgent.customAgentId)
111
+ || snapshotAgentId;
112
+ const agentConfigId = snapshotAgentId
113
+ || nullableString(payload.agentConfigId)
114
+ || nullableString(body.agentConfigId)
115
+ || customAgentId;
116
+ const getAgentConfig = ports.getAgentConfig || (() => null);
117
+ const agentConfig = snapshotAgentConfig
118
+ || (isObject(payload.agentConfig) && payload.agentConfig)
119
+ || (isObject(body.agentConfig) && body.agentConfig)
120
+ || (agentConfigId ? getAgentConfig(agentConfigId) : null);
121
+ const compiledAgentInstructions = snapshotCompiledAgentInstructions
122
+ || nullableString(payload.compiledAgentInstructions)
123
+ || nullableString(body.compiledAgentInstructions);
124
+ const legacySystemPrompt = nullableString(payload.systemPrompt)
125
+ || nullableString(rawAgent.systemPrompt)
126
+ || nullableString(body.systemPrompt);
127
+ const systemPrompt = agentConfig || compiledAgentInstructions ? null : legacySystemPrompt;
128
+ const cwd = nullableString(body.cwd)
129
+ || nullableString(rawExecution.cwd)
130
+ || nullableString(payload.cwd);
131
+ const computerId = nullableString(payload.machineId)
132
+ || nullableString(body.computerId)
133
+ || nullableString(rawExecution.computerId)
134
+ || nullableString(ports.env?.AMALGM_COMPUTER_ID)
135
+ || nullableString(ports.env?.AMALGM_CONTAINER_ID);
136
+ const mcpAppIds = uniqueStrings(payload.mcpAppIds);
137
+ const toolIds = normalizeLoadout(payload.loadout || payload.tools).toolIds;
138
+ const chatInput = normalizeChatInput({
139
+ ...rawChatInput,
140
+ agent: {
141
+ ...rawAgent,
142
+ harness,
143
+ ...(modelId ? { model: modelId } : {}),
144
+ ...(authMethod ? { authMethod } : {}),
145
+ customAgentId,
146
+ systemPrompt,
147
+ },
148
+ tools: {
149
+ ...rawTools,
150
+ mcpAppIds,
151
+ toolIds,
152
+ },
153
+ execution: {
154
+ ...rawExecution,
155
+ cwd,
156
+ computerId,
157
+ },
158
+ }, {
159
+ prompt: body.prompt,
160
+ userParts: body.userParts,
161
+ harness,
162
+ modelId,
163
+ authMethod,
164
+ cwd,
165
+ computerId,
166
+ mcpAppIds,
167
+ systemPrompt,
168
+ });
169
+ const legacy = chatInputToLegacyFields(chatInput, { prompt: body.prompt });
170
+ const reasoningEffort = nullableString(modelSettings.effort)
171
+ || nullableString(modelSettings.reasoningEffort)
172
+ || nullableString(modelSettings.reasoning);
173
+ const next = {
174
+ ...body,
175
+ chatInput,
176
+ ...legacy,
177
+ harness,
178
+ ...(modelId ? { modelId, model: modelId } : {}),
179
+ ...(authMethod ? { authMethod } : {}),
180
+ ...(systemPrompt ? { systemPrompt } : {}),
181
+ ...(cwd ? { cwd, projectPath: cwd } : {}),
182
+ ...(computerId ? { computerId } : {}),
183
+ mcpAppIds,
184
+ modelSettings,
185
+ agentId: customAgentId || harnessToAgent(harness),
186
+ ...(agentConfigId ? { agentConfigId } : {}),
187
+ ...(agentConfig ? { agentConfig } : {}),
188
+ ...(compiledAgentInstructions ? { compiledAgentInstructions } : {}),
189
+ ...(reasoningEffort ? { reasoningEffort } : {}),
190
+ ...(modelSettings.fastMode === true ? { fastMode: true } : {}),
191
+ };
192
+ delete next.cliModel;
193
+ delete next.internalModelId;
194
+ delete next.contextWindow;
195
+ delete next.maxTokens;
196
+ return next;
197
+ }
198
+ /**
199
+ * The 404 from `resolveMachineChatPayload` when the payload record is missing
200
+ * (`chat-payload.js:167-169`). Message and status are byte-exact.
201
+ */
202
+ export function chatPayloadNotFoundError(payloadId) {
203
+ return Object.assign(new Error(`Chat payload not found: ${payloadId}`), { status: 404 });
204
+ }
205
+ /**
206
+ * The 409 from `resolveMachineChatPayload` when the launch payload's revision
207
+ * moved before launch (`chat-payload.js:173-178`). Message and status are
208
+ * byte-exact. The revision comparison itself stays host (it needs the sqlite
209
+ * record); the engine only throws when BOTH revisions are non-empty strings
210
+ * and differ.
211
+ */
212
+ export function chatPayloadRevisionMismatchError() {
213
+ return Object.assign(new Error('Chat payload changed before launch; retry with the latest machine payload.'), { status: 409 });
214
+ }
215
+ //# sourceMappingURL=payload-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-merge.js","sourceRoot":"","sources":["../../src/contract/payload-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Amalgm event constructors — engine `chat-core/events.js` (195 lines)
3
+ * ported byte-exact behind injected ports (axiom 7):
4
+ *
5
+ * - The engine's `now()` uses `Date.now()` (events.js:7-9); here the host
6
+ * injects a {@link ClockMsPort}. Timestamps are epoch **milliseconds**
7
+ * (numbers), matching the schema's `ts: z.number().finite()`.
8
+ * - The engine gates schema validation on the env var
9
+ * `CHAT_CORE_VALIDATE_EVENTS` (events.js:14): validation is ON unless the
10
+ * var is exactly `'0'`. Here that becomes the `validateEvents` option
11
+ * (default `true`).
12
+ */
13
+ import type { ClockMsPort } from '../ports.js';
14
+ import { type AmalgmEvent } from './schema.js';
15
+ /** Loose event-constructor payload — the engine spreads caller data verbatim. */
16
+ export type EventData = Record<string, unknown>;
17
+ type AnyRecord = Record<string, any>;
18
+ export interface EventConstructorOptions {
19
+ /** Epoch-ms clock, used when `data.ts` is absent or non-finite. Engine: `Date.now()`. */
20
+ clockMs: ClockMsPort;
21
+ /**
22
+ * Schema-validate every constructed event through `validateAmalgmEvent`.
23
+ * Mirrors the engine env var `CHAT_CORE_VALIDATE_EVENTS` (engine default:
24
+ * validation ON; the engine only skips when the var is exactly `'0'`).
25
+ * Default: `true`.
26
+ */
27
+ validateEvents?: boolean;
28
+ }
29
+ /**
30
+ * Build the full engine constructor set over the injected ports. The
31
+ * returned functions match `chat-core/events.js` exports name-for-name and
32
+ * byte-for-byte on output shape.
33
+ */
34
+ export declare function createEventConstructors(options: EventConstructorOptions): {
35
+ compactionFinished: (data?: EventData) => AmalgmEvent;
36
+ compactionStarted: (data?: EventData) => AmalgmEvent;
37
+ done: (data?: EventData) => AmalgmEvent;
38
+ errorEvent: (message: unknown, data?: EventData) => AmalgmEvent;
39
+ event: (type: string, data?: EventData) => AmalgmEvent;
40
+ reasoningDelta: (text: unknown, data?: EventData) => AmalgmEvent;
41
+ reasoningStarted: (data?: EventData) => AmalgmEvent;
42
+ textBoundary: (data?: EventData) => AmalgmEvent;
43
+ textDelta: (text: unknown, data?: EventData) => AmalgmEvent;
44
+ toolCompleted: (id: unknown, data?: EventData) => AmalgmEvent;
45
+ toolStarted: (id: unknown, data?: EventData) => AmalgmEvent;
46
+ toolUpdated: (id: unknown, data?: EventData) => AmalgmEvent;
47
+ usageFinal: (usage?: AnyRecord | null, data?: EventData) => AmalgmEvent;
48
+ warningEvent: (message: unknown, data?: EventData) => AmalgmEvent;
49
+ };
50
+ /** The engine `chat-core/events.js` export set, over injected ports. */
51
+ export type EventConstructors = ReturnType<typeof createEventConstructors>;
52
+ export {};
53
+ //# sourceMappingURL=constructors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructors.d.ts","sourceRoot":"","sources":["../../src/events/constructors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAIpE,iFAAiF;AACjF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAErC,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAkCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB;gCA2JpC,SAAS,KAAQ,WAAW;+BAL7B,SAAS,KAAQ,WAAW;kBALzC,SAAS,KAAQ,WAAW;0BAVnB,OAAO,SAAQ,SAAS,KAAQ,WAAW;kBA9HnD,MAAM,SAAQ,SAAS,KAAQ,WAAW;2BAoBjC,OAAO,SAAQ,SAAS,KAAQ,WAAW;8BAKzC,SAAS,KAAQ,WAAW;0BAVhC,SAAS,KAAQ,WAAW;sBAL/B,OAAO,SAAQ,SAAS,KAAQ,WAAW;wBA4DzC,OAAO,SAAQ,SAAS,KAAQ,WAAW;sBAxC7C,OAAO,SAAQ,SAAS,KAAQ,WAAW;sBAmB3C,OAAO,SAAQ,SAAS,KAAQ,WAAW;yBA6CxC,SAAS,GAAG,IAAI,SAAQ,SAAS,KAAQ,WAAW;4BAqCjD,OAAO,SAAQ,SAAS,KAAQ,WAAW;EAyC3E;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Amalgm event constructors — engine `chat-core/events.js` (195 lines)
3
+ * ported byte-exact behind injected ports (axiom 7):
4
+ *
5
+ * - The engine's `now()` uses `Date.now()` (events.js:7-9); here the host
6
+ * injects a {@link ClockMsPort}. Timestamps are epoch **milliseconds**
7
+ * (numbers), matching the schema's `ts: z.number().finite()`.
8
+ * - The engine gates schema validation on the env var
9
+ * `CHAT_CORE_VALIDATE_EVENTS` (events.js:14): validation is ON unless the
10
+ * var is exactly `'0'`. Here that becomes the `validateEvents` option
11
+ * (default `true`).
12
+ */
13
+ import { validateAmalgmEvent } from './schema.js';
14
+ import { withActionDescriptor, withOutputDescriptor } from '../transcript/tool-display.js';
15
+ import { mcpMetadataFromName, normalizeError, titleForTool, toolKind } from '../transcript/tool-shape.js';
16
+ /** Engine events.js:126-136. Bucket precedence: tokenList key > tokenList alias > flat field; total excludes thought when summed. */
17
+ function usageTokenList(usage = {}) {
18
+ const source = usage?.['tokenList'] && typeof usage['tokenList'] === 'object' ? usage['tokenList'] : {};
19
+ const input = finiteNonNegativeOrNull(source.input ?? source.inputTokens ?? usage?.['inputTokens']) ?? 0;
20
+ const output = finiteNonNegativeOrNull(source.output ?? source.outputTokens ?? usage?.['outputTokens']) ?? 0;
21
+ const cacheRead = finiteNonNegativeOrNull(source.cacheRead ?? source.cacheReadTokens ?? usage?.['cacheReadTokens']) ?? 0;
22
+ const cacheWrite = finiteNonNegativeOrNull(source.cacheWrite ?? source.cacheWriteTokens ?? usage?.['cacheWriteTokens']) ?? 0;
23
+ const thought = finiteNonNegativeOrNull(source.thought ?? source.thoughtTokens ?? usage?.['thoughtTokens']) ?? 0;
24
+ const total = finiteNonNegativeOrNull(source.total ?? source.totalTokens)
25
+ ?? input + output + cacheRead + cacheWrite;
26
+ return { input, output, cacheRead, cacheWrite, thought, total };
27
+ }
28
+ /** Engine events.js:138-142. Explicit size (camel or snake case) wins; else tokenList total. */
29
+ function usageInputContextSize(usage = {}, tokenList = usageTokenList(usage)) {
30
+ const explicit = finiteNonNegativeOrNull(usage?.['inputContextSize'] ?? usage?.['input_context_size']);
31
+ if (explicit !== null)
32
+ return explicit;
33
+ return tokenList.total;
34
+ }
35
+ /** Engine events.js:144-147. */
36
+ function finiteNonNegativeOrNull(value) {
37
+ const parsed = Number(value);
38
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : null;
39
+ }
40
+ /** Engine events.js:149-152. Strictly positive — zero collapses to null. */
41
+ function finiteOrNull(value) {
42
+ const parsed = Number(value);
43
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
44
+ }
45
+ /**
46
+ * Build the full engine constructor set over the injected ports. The
47
+ * returned functions match `chat-core/events.js` exports name-for-name and
48
+ * byte-for-byte on output shape.
49
+ */
50
+ export function createEventConstructors(options) {
51
+ const { clockMs, validateEvents = true } = options;
52
+ /** Engine events.js:7-9. */
53
+ function now(ts) {
54
+ return Number.isFinite(ts) ? ts : clockMs();
55
+ }
56
+ /** Engine events.js:11-16. */
57
+ function event(type, data = {}) {
58
+ const { ts, ...rest } = data;
59
+ const next = { type, ts: now(ts), ...rest };
60
+ // engineParity: env gate `process.env.CHAT_CORE_VALIDATE_EVENTS === '0'`
61
+ // becomes the injected `validateEvents` option (src purity).
62
+ if (!validateEvents)
63
+ return next;
64
+ return validateAmalgmEvent(next);
65
+ }
66
+ /** Engine events.js:18-20. Note `String(text || '')`: falsy deltas (0, null) become ''. */
67
+ function textDelta(text, data = {}) {
68
+ return event('text.delta', { streamKind: 'text', ...data, text: String(text || '') });
69
+ }
70
+ /** Engine events.js:22-24. */
71
+ function textBoundary(data = {}) {
72
+ return event('text.boundary', { streamKind: 'text', ...data });
73
+ }
74
+ /** Engine events.js:26-28. */
75
+ function reasoningDelta(text, data = {}) {
76
+ return event('reasoning.delta', { streamKind: 'reasoning', ...data, text: String(text || '') });
77
+ }
78
+ /** Engine events.js:30-32. An empty reasoning delta. */
79
+ function reasoningStarted(data = {}) {
80
+ return reasoningDelta('', data);
81
+ }
82
+ /** Engine events.js:34-50. */
83
+ function toolStarted(id, data = {}) {
84
+ const toolName = data['toolName'] || data['title'] || 'unknown';
85
+ const input = withActionDescriptor(data['input'], data['detail']);
86
+ const metadata = { ...mcpMetadataFromName(toolName), ...(data['metadata'] || {}) };
87
+ return event('tool.started', {
88
+ ...data,
89
+ itemType: 'tool',
90
+ toolCallId: String(id || ''),
91
+ toolName,
92
+ name: toolName,
93
+ kind: data['kind'] || toolKind(toolName, input, metadata),
94
+ title: titleForTool({ name: toolName, input, metadata, fallback: data['title'] || data['detail'] }),
95
+ input,
96
+ metadata,
97
+ timing: data['timing'],
98
+ });
99
+ }
100
+ /** Engine events.js:52-70. Note `itemType` precedes the data spread here (callers may override). */
101
+ function toolUpdated(id, data = {}) {
102
+ const toolName = data['toolName'] || data['title'] || 'unknown';
103
+ const inputDelta = data['inputDelta'] ? withActionDescriptor(data['inputDelta'], data['detail']) : undefined;
104
+ const metadata = { ...mcpMetadataFromName(toolName), ...(data['metadata'] || {}) };
105
+ return event('tool.updated', {
106
+ itemType: 'tool',
107
+ ...data,
108
+ toolCallId: String(id || ''),
109
+ toolName,
110
+ name: toolName,
111
+ kind: data['kind'] || toolKind(toolName, inputDelta || {}, metadata),
112
+ title: titleForTool({ name: toolName, input: inputDelta || {}, output: data['output'], metadata, fallback: data['title'] || data['detail'] }),
113
+ metadata,
114
+ timing: data['timing'],
115
+ ...(inputDelta ? { inputDelta } : {}),
116
+ ...(data['output'] !== undefined ? { output: withOutputDescriptor(data['output'], data['detail']) } : {}),
117
+ ...(data['error'] ? { error: normalizeError(data['error']) } : {}),
118
+ });
119
+ }
120
+ /** Engine events.js:72-93. `isError: true` promotes output ?? result ?? detail into the error. */
121
+ function toolCompleted(id, data = {}) {
122
+ const toolName = data['toolName'] || data['title'] || 'unknown';
123
+ const input = data['input'] ? withActionDescriptor(data['input'], data['detail']) : undefined;
124
+ const output = data['output'] !== undefined ? withOutputDescriptor(data['output'], data['detail']) : undefined;
125
+ const metadata = { ...mcpMetadataFromName(toolName), ...(data['metadata'] || {}) };
126
+ const error = data['error'] || (data['isError'] === true ? data['output'] ?? data['result'] ?? data['detail'] : undefined);
127
+ return event('tool.completed', {
128
+ ...data,
129
+ itemType: 'tool',
130
+ toolCallId: String(id || ''),
131
+ toolName,
132
+ name: toolName,
133
+ kind: data['kind'] || toolKind(toolName, input || {}, metadata),
134
+ title: titleForTool({ name: toolName, input: input || {}, output, error, metadata, fallback: data['title'] || data['detail'] }),
135
+ ...(input ? { input } : {}),
136
+ ...(output !== undefined ? { output } : {}),
137
+ ...(error ? { error: normalizeError(error) } : {}),
138
+ metadata,
139
+ timing: data['timing'],
140
+ isError: data['isError'] === true,
141
+ });
142
+ }
143
+ /** Engine events.js:95-124. Normalizes any usage-ish record into the strict usageSnapshot shape. */
144
+ function usageFinal(usage, data = {}) {
145
+ const tokenList = usageTokenList(usage ?? {});
146
+ const inputContextSize = usageInputContextSize(usage ?? {}, tokenList);
147
+ return event('usage.final', {
148
+ ...data,
149
+ usage: {
150
+ tokenList,
151
+ cumulativeTokenList: usage?.['cumulativeTokenList'] || null,
152
+ previousCumulativeTokenList: usage?.['previousCumulativeTokenList'] || null,
153
+ inputTokens: tokenList.input,
154
+ outputTokens: tokenList.output,
155
+ cacheReadTokens: tokenList.cacheRead,
156
+ cacheWriteTokens: tokenList.cacheWrite,
157
+ thoughtTokens: tokenList.thought,
158
+ inputContextSize,
159
+ contextUsedTokens: finiteOrNull(usage?.['contextUsedTokens'] ?? usage?.['usedTokens'] ?? inputContextSize),
160
+ contextLimit: finiteOrNull(usage?.['contextLimit'] ?? usage?.['maxTokens'] ?? usage?.['modelContextWindow']),
161
+ usedTokens: finiteOrNull(usage?.['usedTokens'] ?? usage?.['contextUsedTokens'] ?? inputContextSize),
162
+ lastUsedTokens: finiteOrNull(usage?.['lastUsedTokens'] ?? usage?.['contextUsedTokens'] ?? usage?.['usedTokens'] ?? inputContextSize),
163
+ maxTokens: finiteOrNull(usage?.['maxTokens'] ?? usage?.['contextLimit'] ?? usage?.['modelContextWindow']),
164
+ totalProcessedTokens: finiteOrNull(usage?.['totalProcessedTokens']),
165
+ costUsd: usage?.['costUsd'] ?? null,
166
+ marketCostUsd: usage?.['marketCostUsd'] ?? null,
167
+ operation: String(usage?.['operation'] || 'chat_step'),
168
+ billable: usage?.['billable'] !== false,
169
+ source: usage?.['source'] || 'unknown',
170
+ exact: usage?.['exact'] === true,
171
+ },
172
+ });
173
+ }
174
+ /** Engine events.js:154-156. */
175
+ function errorEvent(message, data = {}) {
176
+ return event('error', { ...data, message: String(message || 'Unknown error') });
177
+ }
178
+ /** Engine events.js:158-160. */
179
+ function warningEvent(message, data = {}) {
180
+ return event('warning', { ...data, message: String(message || 'Runtime warning') });
181
+ }
182
+ /** Engine events.js:162-164. */
183
+ function done(data = {}) {
184
+ return event('done', { ...data, stopReason: data['stopReason'] || 'end_turn' });
185
+ }
186
+ /** Engine events.js:166-168. */
187
+ function compactionStarted(data = {}) {
188
+ return event('compaction.started', { ...data, trigger: data['trigger'] || 'auto' });
189
+ }
190
+ /** Engine events.js:170-178. Non-positive token/duration figures collapse to null. */
191
+ function compactionFinished(data = {}) {
192
+ return event('compaction.finished', {
193
+ ...data,
194
+ trigger: data['trigger'] || 'auto',
195
+ preTokens: finiteOrNull(data['preTokens']),
196
+ postTokens: finiteOrNull(data['postTokens']),
197
+ durationMs: finiteOrNull(data['durationMs']),
198
+ });
199
+ }
200
+ return {
201
+ compactionFinished,
202
+ compactionStarted,
203
+ done,
204
+ errorEvent,
205
+ event,
206
+ reasoningDelta,
207
+ reasoningStarted,
208
+ textBoundary,
209
+ textDelta,
210
+ toolCompleted,
211
+ toolStarted,
212
+ toolUpdated,
213
+ usageFinal,
214
+ warningEvent,
215
+ };
216
+ }
217
+ //# sourceMappingURL=constructors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../src/events/constructors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `@amalgm/chat/events` — the canonical event grammar: constructors
3
+ * (engine `chat-core/events.js`) and the zod schema + vocabularies
4
+ * (engine `chat-core/event-schema.js`).
5
+ *
6
+ * `tool-shape.ts` / `tool-display.ts` are internal ports pending the
7
+ * transcript module (their canonical home) and are deliberately not
8
+ * re-exported here.
9
+ */
10
+ export { createEventConstructors, type EventConstructorOptions, type EventConstructors, type EventData, } from './constructors.js';
11
+ export { amalgmEventSchema, usageSnapshot, validateAmalgmEvent, validateAmalgmEvents, toolKindSchema, type AmalgmEvent, type UsageSnapshot, type ToolKind, type CompactionTrigger, } from './schema.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `@amalgm/chat/events` — the canonical event grammar: constructors
3
+ * (engine `chat-core/events.js`) and the zod schema + vocabularies
4
+ * (engine `chat-core/event-schema.js`).
5
+ *
6
+ * `tool-shape.ts` / `tool-display.ts` are internal ports pending the
7
+ * transcript module (their canonical home) and are deliberately not
8
+ * re-exported here.
9
+ */
10
+ export { createEventConstructors, } from './constructors.js';
11
+ export { amalgmEventSchema, usageSnapshot, validateAmalgmEvent, validateAmalgmEvents, toolKindSchema, } from './schema.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GAKf,MAAM,aAAa,CAAC"}