@amalgm/chat 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/AGENTS.md +98 -0
  2. package/PURPOSE.md +143 -112
  3. package/README.md +82 -54
  4. package/dist/acp/index.d.ts +7 -0
  5. package/dist/acp/index.d.ts.map +1 -0
  6. package/dist/acp/index.js +7 -0
  7. package/dist/acp/index.js.map +1 -0
  8. package/dist/acp/projection.d.ts +30 -0
  9. package/dist/acp/projection.d.ts.map +1 -0
  10. package/dist/acp/projection.js +147 -0
  11. package/dist/acp/projection.js.map +1 -0
  12. package/dist/api/conversations.d.ts +66 -0
  13. package/dist/api/conversations.d.ts.map +1 -0
  14. package/dist/api/conversations.js +202 -0
  15. package/dist/api/conversations.js.map +1 -0
  16. package/dist/api/index.d.ts +3 -3
  17. package/dist/api/index.d.ts.map +1 -1
  18. package/dist/api/index.js +1 -2
  19. package/dist/api/index.js.map +1 -1
  20. package/dist/conversations/index.d.ts +3 -0
  21. package/dist/conversations/index.d.ts.map +1 -0
  22. package/dist/conversations/index.js +3 -0
  23. package/dist/conversations/index.js.map +1 -0
  24. package/dist/conversations/transcript.d.ts +13 -0
  25. package/dist/conversations/transcript.d.ts.map +1 -0
  26. package/dist/conversations/transcript.js +171 -0
  27. package/dist/conversations/transcript.js.map +1 -0
  28. package/dist/conversations/types.d.ts +147 -0
  29. package/dist/conversations/types.d.ts.map +1 -0
  30. package/dist/conversations/types.js +9 -0
  31. package/dist/conversations/types.js.map +1 -0
  32. package/dist/events/constructors.d.ts +9 -15
  33. package/dist/events/constructors.d.ts.map +1 -1
  34. package/dist/events/constructors.js +6 -12
  35. package/dist/events/constructors.js.map +1 -1
  36. package/dist/events/index.d.ts +2 -3
  37. package/dist/events/index.d.ts.map +1 -1
  38. package/dist/events/index.js +2 -3
  39. package/dist/events/index.js.map +1 -1
  40. package/dist/events/schema.d.ts +2 -5
  41. package/dist/events/schema.d.ts.map +1 -1
  42. package/dist/events/schema.js +2 -5
  43. package/dist/events/schema.js.map +1 -1
  44. package/dist/execution/contract.d.ts +51 -0
  45. package/dist/execution/contract.d.ts.map +1 -0
  46. package/dist/execution/contract.js +127 -0
  47. package/dist/execution/contract.js.map +1 -0
  48. package/dist/execution/index.d.ts +6 -0
  49. package/dist/execution/index.d.ts.map +1 -0
  50. package/dist/execution/index.js +4 -0
  51. package/dist/execution/index.js.map +1 -0
  52. package/dist/execution/revision.d.ts +5 -0
  53. package/dist/execution/revision.d.ts.map +1 -0
  54. package/dist/execution/revision.js +17 -0
  55. package/dist/execution/revision.js.map +1 -0
  56. package/dist/execution/store.d.ts +26 -0
  57. package/dist/execution/store.d.ts.map +1 -0
  58. package/dist/execution/store.js +38 -0
  59. package/dist/execution/store.js.map +1 -0
  60. package/dist/index.d.ts +8 -25
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +7 -25
  63. package/dist/index.js.map +1 -1
  64. package/dist/input/index.d.ts +3 -0
  65. package/dist/input/index.d.ts.map +1 -0
  66. package/dist/input/index.js +2 -0
  67. package/dist/input/index.js.map +1 -0
  68. package/dist/input/prompt.d.ts +17 -0
  69. package/dist/input/prompt.d.ts.map +1 -0
  70. package/dist/input/prompt.js +104 -0
  71. package/dist/input/prompt.js.map +1 -0
  72. package/dist/normalizers/claude.d.ts +6 -9
  73. package/dist/normalizers/claude.d.ts.map +1 -1
  74. package/dist/normalizers/claude.js +5 -8
  75. package/dist/normalizers/claude.js.map +1 -1
  76. package/dist/normalizers/codex.d.ts +5 -8
  77. package/dist/normalizers/codex.d.ts.map +1 -1
  78. package/dist/normalizers/codex.js +4 -7
  79. package/dist/normalizers/codex.js.map +1 -1
  80. package/dist/normalizers/cursor.d.ts +1 -2
  81. package/dist/normalizers/cursor.d.ts.map +1 -1
  82. package/dist/normalizers/cursor.js +2 -3
  83. package/dist/normalizers/cursor.js.map +1 -1
  84. package/dist/normalizers/index.d.ts +3 -5
  85. package/dist/normalizers/index.d.ts.map +1 -1
  86. package/dist/normalizers/index.js +3 -5
  87. package/dist/normalizers/index.js.map +1 -1
  88. package/dist/normalizers/opencode.d.ts +2 -4
  89. package/dist/normalizers/opencode.d.ts.map +1 -1
  90. package/dist/normalizers/opencode.js +2 -4
  91. package/dist/normalizers/opencode.js.map +1 -1
  92. package/dist/normalizers/pi.d.ts +3 -4
  93. package/dist/normalizers/pi.d.ts.map +1 -1
  94. package/dist/normalizers/pi.js +3 -4
  95. package/dist/normalizers/pi.js.map +1 -1
  96. package/dist/sessions/chat.d.ts +176 -0
  97. package/dist/sessions/chat.d.ts.map +1 -0
  98. package/dist/sessions/chat.js +701 -0
  99. package/dist/sessions/chat.js.map +1 -0
  100. package/dist/sessions/index.d.ts +3 -0
  101. package/dist/sessions/index.d.ts.map +1 -0
  102. package/dist/sessions/index.js +2 -0
  103. package/dist/sessions/index.js.map +1 -0
  104. package/dist/transcript/index.d.ts +1 -1
  105. package/dist/transcript/index.js +1 -1
  106. package/dist/transcript/message-reducer.d.ts +1 -1
  107. package/dist/transcript/message-reducer.js +1 -1
  108. package/dist/transcript/part-accumulator.d.ts +1 -1
  109. package/dist/transcript/part-accumulator.js +1 -1
  110. package/dist/transcript/tool-display.d.ts +1 -1
  111. package/dist/transcript/tool-display.js +1 -1
  112. package/dist/transcript/tool-shape.d.ts +1 -1
  113. package/dist/transcript/tool-shape.js +1 -1
  114. package/dist/usage/finalize.d.ts +7 -9
  115. package/dist/usage/finalize.d.ts.map +1 -1
  116. package/dist/usage/finalize.js +11 -13
  117. package/dist/usage/finalize.js.map +1 -1
  118. package/dist/usage/index.d.ts +2 -3
  119. package/dist/usage/index.d.ts.map +1 -1
  120. package/dist/usage/index.js +2 -3
  121. package/dist/usage/index.js.map +1 -1
  122. package/dist/usage/model-catalog.d.ts +2 -3
  123. package/dist/usage/model-catalog.d.ts.map +1 -1
  124. package/dist/usage/model-catalog.js +10 -3
  125. package/dist/usage/model-catalog.js.map +1 -1
  126. package/dist/usage/normalize.d.ts +5 -7
  127. package/dist/usage/normalize.d.ts.map +1 -1
  128. package/dist/usage/normalize.js +3 -5
  129. package/dist/usage/normalize.js.map +1 -1
  130. package/dist/usage/ports.d.ts +14 -24
  131. package/dist/usage/ports.d.ts.map +1 -1
  132. package/dist/usage/ports.js +9 -17
  133. package/dist/usage/ports.js.map +1 -1
  134. package/dist/usage/steps.d.ts +70 -0
  135. package/dist/usage/steps.d.ts.map +1 -0
  136. package/dist/usage/steps.js +152 -0
  137. package/dist/usage/steps.js.map +1 -0
  138. package/dist/usage/tokens.d.ts +4 -7
  139. package/dist/usage/tokens.d.ts.map +1 -1
  140. package/dist/usage/tokens.js +4 -7
  141. package/dist/usage/tokens.js.map +1 -1
  142. package/docs/contracts/acp-and-step-usage.md +51 -0
  143. package/docs/contracts/conversation-persistence.md +47 -0
  144. package/docs/contracts/input-and-execution.md +177 -0
  145. package/docs/contracts/platform-authorization.md +17 -0
  146. package/host/adapters/acp-capabilities.js +30 -0
  147. package/host/adapters/acp-client.js +156 -0
  148. package/host/adapters/acp.js +284 -0
  149. package/host/adapters/claude.js +235 -0
  150. package/host/adapters/codex.js +733 -0
  151. package/host/adapters/cursor.js +347 -0
  152. package/host/adapters/input-capabilities.js +89 -0
  153. package/host/adapters/opencode.js +486 -0
  154. package/host/adapters/pi.js +519 -0
  155. package/host/adapters/prompt.js +212 -0
  156. package/host/auth.js +257 -0
  157. package/host/credentials/store.js +209 -0
  158. package/host/http.d.ts +32 -0
  159. package/host/http.js +238 -0
  160. package/host/index.d.ts +84 -0
  161. package/host/index.js +59 -0
  162. package/host/lib/runtime-paths.js +44 -0
  163. package/host/model-resolution.js +313 -0
  164. package/host/native-contract.js +185 -0
  165. package/host/native-runtime.js +194 -0
  166. package/host/permissions.js +27 -0
  167. package/host/platform-egress.js +114 -0
  168. package/host/recorder.js +61 -0
  169. package/host/sqlite/index.d.ts +69 -0
  170. package/host/sqlite/index.js +704 -0
  171. package/host/tooling/mcp-bundle.js +214 -0
  172. package/host/tooling/mcp-relay.js +83 -0
  173. package/host/tooling/native-binaries.js +667 -0
  174. package/host/tooling/native-config.js +460 -0
  175. package/host/tooling/package-import.js +111 -0
  176. package/host/tooling/runtime-home.js +26 -0
  177. package/host/tooling/system-instructions.js +69 -0
  178. package/host/tooling/system-prompt.js +35 -0
  179. package/package.json +44 -24
  180. package/skills/chat/SKILL.md +97 -0
  181. package/skills/chat/agents/openai.yaml +4 -0
  182. package/skills/chat/references/contracts.md +131 -0
  183. package/dist/api/chat-payloads.d.ts +0 -10
  184. package/dist/api/chat-payloads.d.ts.map +0 -1
  185. package/dist/api/chat-payloads.js +0 -57
  186. package/dist/api/chat-payloads.js.map +0 -1
  187. package/dist/contract/chat-input.d.ts +0 -144
  188. package/dist/contract/chat-input.d.ts.map +0 -1
  189. package/dist/contract/chat-input.js +0 -261
  190. package/dist/contract/chat-input.js.map +0 -1
  191. package/dist/contract/create.d.ts +0 -191
  192. package/dist/contract/create.d.ts.map +0 -1
  193. package/dist/contract/create.js +0 -249
  194. package/dist/contract/create.js.map +0 -1
  195. package/dist/contract/freeze.d.ts +0 -85
  196. package/dist/contract/freeze.d.ts.map +0 -1
  197. package/dist/contract/freeze.js +0 -151
  198. package/dist/contract/freeze.js.map +0 -1
  199. package/dist/contract/harnesses.d.ts +0 -21
  200. package/dist/contract/harnesses.d.ts.map +0 -1
  201. package/dist/contract/harnesses.js +0 -39
  202. package/dist/contract/harnesses.js.map +0 -1
  203. package/dist/contract/index.d.ts +0 -17
  204. package/dist/contract/index.d.ts.map +0 -1
  205. package/dist/contract/index.js +0 -17
  206. package/dist/contract/index.js.map +0 -1
  207. package/dist/contract/input.d.ts +0 -45
  208. package/dist/contract/input.d.ts.map +0 -1
  209. package/dist/contract/input.js +0 -78
  210. package/dist/contract/input.js.map +0 -1
  211. package/dist/contract/models.d.ts +0 -57
  212. package/dist/contract/models.d.ts.map +0 -1
  213. package/dist/contract/models.js +0 -380
  214. package/dist/contract/models.js.map +0 -1
  215. package/dist/contract/payload-merge.d.ts +0 -76
  216. package/dist/contract/payload-merge.d.ts.map +0 -1
  217. package/dist/contract/payload-merge.js +0 -215
  218. package/dist/contract/payload-merge.js.map +0 -1
  219. package/dist/events/tool-display.d.ts +0 -22
  220. package/dist/events/tool-display.d.ts.map +0 -1
  221. package/dist/events/tool-display.js +0 -60
  222. package/dist/events/tool-display.js.map +0 -1
  223. package/dist/events/tool-shape.d.ts +0 -48
  224. package/dist/events/tool-shape.d.ts.map +0 -1
  225. package/dist/events/tool-shape.js +0 -225
  226. package/dist/events/tool-shape.js.map +0 -1
  227. package/dist/relay/index.d.ts +0 -65
  228. package/dist/relay/index.d.ts.map +0 -1
  229. package/dist/relay/index.js +0 -197
  230. package/dist/relay/index.js.map +0 -1
  231. package/dist/turns/index.d.ts +0 -11
  232. package/dist/turns/index.d.ts.map +0 -1
  233. package/dist/turns/index.js +0 -11
  234. package/dist/turns/index.js.map +0 -1
  235. package/dist/turns/queries.d.ts +0 -36
  236. package/dist/turns/queries.d.ts.map +0 -1
  237. package/dist/turns/queries.js +0 -37
  238. package/dist/turns/queries.js.map +0 -1
  239. package/dist/turns/replay.d.ts +0 -105
  240. package/dist/turns/replay.d.ts.map +0 -1
  241. package/dist/turns/replay.js +0 -163
  242. package/dist/turns/replay.js.map +0 -1
  243. package/dist/turns/status.d.ts +0 -49
  244. package/dist/turns/status.d.ts.map +0 -1
  245. package/dist/turns/status.js +0 -56
  246. package/dist/turns/status.js.map +0 -1
  247. package/dist/turns/turn-store.d.ts +0 -109
  248. package/dist/turns/turn-store.d.ts.map +0 -1
  249. package/dist/turns/turn-store.js +0 -169
  250. package/dist/turns/turn-store.js.map +0 -1
  251. package/dist/warm/client-cache.d.ts +0 -47
  252. package/dist/warm/client-cache.d.ts.map +0 -1
  253. package/dist/warm/client-cache.js +0 -48
  254. package/dist/warm/client-cache.js.map +0 -1
  255. package/dist/warm/envelope-cache.d.ts +0 -79
  256. package/dist/warm/envelope-cache.d.ts.map +0 -1
  257. package/dist/warm/envelope-cache.js +0 -85
  258. package/dist/warm/envelope-cache.js.map +0 -1
  259. package/dist/warm/index.d.ts +0 -18
  260. package/dist/warm/index.d.ts.map +0 -1
  261. package/dist/warm/index.js +0 -12
  262. package/dist/warm/index.js.map +0 -1
  263. package/dist/warm/payload.d.ts +0 -137
  264. package/dist/warm/payload.d.ts.map +0 -1
  265. package/dist/warm/payload.js +0 -112
  266. package/dist/warm/payload.js.map +0 -1
  267. package/dist/warm/revision.d.ts +0 -70
  268. package/dist/warm/revision.d.ts.map +0 -1
  269. package/dist/warm/revision.js +0 -63
  270. package/dist/warm/revision.js.map +0 -1
  271. package/dist/warm/store-policy.d.ts +0 -57
  272. package/dist/warm/store-policy.d.ts.map +0 -1
  273. package/dist/warm/store-policy.js +0 -89
  274. package/dist/warm/store-policy.js.map +0 -1
  275. package/dist/warm/store.d.ts +0 -42
  276. package/dist/warm/store.d.ts.map +0 -1
  277. package/dist/warm/store.js +0 -69
  278. package/dist/warm/store.js.map +0 -1
  279. package/dist/wire/frames.d.ts +0 -208
  280. package/dist/wire/frames.d.ts.map +0 -1
  281. package/dist/wire/frames.js +0 -245
  282. package/dist/wire/frames.js.map +0 -1
  283. package/dist/wire/index.d.ts +0 -7
  284. package/dist/wire/index.d.ts.map +0 -1
  285. package/dist/wire/index.js +0 -7
  286. package/dist/wire/index.js.map +0 -1
@@ -1,76 +0,0 @@
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 type { ChatInput } from './chat-input.js';
12
- /** Engine `chat-payload.js harnessToAgent` — harness id back to UI agent id. */
13
- export declare function harnessToAgent(harness: unknown): string;
14
- /**
15
- * Engine `agent-config/loadout.js normalizeLoadout` — pure, ported fully
16
- * (applyPayloadRecord calls it on `payload.loadout || payload.tools`).
17
- */
18
- export declare function normalizeLoadout(value: unknown, fallback?: unknown, options?: {
19
- defaultToolIds?: readonly string[] | undefined;
20
- }): {
21
- toolIds: string[];
22
- };
23
- /** A machine chat-payload record (`chat-payloads` store row). */
24
- export interface ChatPayloadRecord {
25
- payload?: unknown;
26
- revision?: unknown;
27
- [key: string]: unknown;
28
- }
29
- /**
30
- * Host collaborators of `applyPayloadRecord`. Engine defaults:
31
- * - `getAgentConfig` — `amalgm-mcp/agent-config/store.js getAgentConfig`
32
- * (sqlite); SDK default returns null (no hydration).
33
- * - `env` — `process.env.AMALGM_COMPUTER_ID` / `AMALGM_CONTAINER_ID`;
34
- * pass both raw values so the engine's per-value trim/precedence holds.
35
- */
36
- export interface ApplyPayloadRecordPorts {
37
- getAgentConfig?(agentConfigId: string): unknown | null;
38
- env?: {
39
- AMALGM_COMPUTER_ID?: string | undefined;
40
- AMALGM_CONTAINER_ID?: string | undefined;
41
- } | undefined;
42
- }
43
- export interface MergedChatBody {
44
- [key: string]: unknown;
45
- chatInput: ChatInput;
46
- harness: string;
47
- mcpAppIds: string[];
48
- modelSettings: Record<string, unknown>;
49
- agentId: string;
50
- }
51
- /**
52
- * Engine `applyPayloadRecord(body, record)` (`chat-payload.js:33-160`):
53
- * overlay a machine payload record onto a raw request body. Field precedence
54
- * and the final deletions are byte-exact.
55
- */
56
- export declare function applyPayloadRecord(body: Record<string, any>, record: ChatPayloadRecord | null | undefined, ports?: ApplyPayloadRecordPorts): MergedChatBody;
57
- export interface ChatPayloadNotFoundError extends Error {
58
- status: 404;
59
- }
60
- /**
61
- * The 404 from `resolveMachineChatPayload` when the payload record is missing
62
- * (`chat-payload.js:167-169`). Message and status are byte-exact.
63
- */
64
- export declare function chatPayloadNotFoundError(payloadId: string): ChatPayloadNotFoundError;
65
- export interface ChatPayloadRevisionMismatchError extends Error {
66
- status: 409;
67
- }
68
- /**
69
- * The 409 from `resolveMachineChatPayload` when the launch payload's revision
70
- * moved before launch (`chat-payload.js:173-178`). Message and status are
71
- * byte-exact. The revision comparison itself stays host (it needs the sqlite
72
- * record); the engine only throws when BOTH revisions are non-empty strings
73
- * and differ.
74
- */
75
- export declare function chatPayloadRevisionMismatchError(): ChatPayloadRevisionMismatchError;
76
- //# sourceMappingURL=payload-merge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payload-merge.d.ts","sourceRoot":"","sources":["../../src/contract/payload-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkBjD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAMvD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,OAAY,EACtB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAAO,GAC/D;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBvB;AAoBD,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE;QACJ,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1C,GAAG,SAAS,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC5C,KAAK,GAAE,uBAA4B,GAClC,cAAc,CAgIhB;AAED,MAAM,WAAW,wBAAyB,SAAQ,KAAK;IACrD,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAKpF;AAED,MAAM,WAAW,gCAAiC,SAAQ,KAAK;IAC7D,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,IAAI,gCAAgC,CAKnF"}
@@ -1,215 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"payload-merge.js","sourceRoot":"","sources":["../../src/contract/payload-merge.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Internal subset of engine `chat-core/tool-display.js` (149 lines) needed by
3
- * the event grammar: text compaction and the action/output descriptor
4
- * injectors used at event build time, ported byte-exact.
5
- *
6
- * NOTE (dedupe): the canonical public home for tool presentation is the
7
- * transcript module (`src/transcript/`, per ROADMAP). This copy exists so
8
- * `src/events` + `src/wire` build stand-alone; when the transcript port
9
- * lands, these definitions should be unified. Not re-exported from the
10
- * events barrel.
11
- */
12
- /** Engine tool-display.js:3-5. */
13
- export declare function isRecord(value: unknown): value is Record<string, unknown>;
14
- /** Engine tool-display.js:20-24. Whitespace-collapse then ellipsize at `max`. */
15
- export declare function compactText(value: unknown, max?: number): string;
16
- /** Engine tool-display.js:26-33. Non-records become `{}`; an existing string actionDescriptor wins. */
17
- export declare function withActionDescriptor(input: unknown, detail?: unknown): Record<string, unknown>;
18
- /** Engine tool-display.js:35-40. Non-records pass through untouched. */
19
- export declare function withOutputDescriptor(output: unknown, detail?: unknown): unknown;
20
- /** Engine tool-display.js:131-139. */
21
- export declare function stringifyResult(value: unknown): string;
22
- //# sourceMappingURL=tool-display.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-display.d.ts","sourceRoot":"","sources":["../../src/events/tool-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAQD,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAM,GAAG,MAAM,CAI7D;AAED,uGAAuG;AACvG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO9F;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAK/E;AAED,sCAAsC;AACtC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQtD"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Internal subset of engine `chat-core/tool-display.js` (149 lines) needed by
3
- * the event grammar: text compaction and the action/output descriptor
4
- * injectors used at event build time, ported byte-exact.
5
- *
6
- * NOTE (dedupe): the canonical public home for tool presentation is the
7
- * transcript module (`src/transcript/`, per ROADMAP). This copy exists so
8
- * `src/events` + `src/wire` build stand-alone; when the transcript port
9
- * lands, these definitions should be unified. Not re-exported from the
10
- * events barrel.
11
- */
12
- /** Engine tool-display.js:3-5. */
13
- export function isRecord(value) {
14
- return Boolean(value && typeof value === 'object' && !Array.isArray(value));
15
- }
16
- /** Engine tool-display.js:7-10. */
17
- function trimText(value) {
18
- if (typeof value !== 'string')
19
- return '';
20
- return value.trim();
21
- }
22
- /** Engine tool-display.js:20-24. Whitespace-collapse then ellipsize at `max`. */
23
- export function compactText(value, max = 160) {
24
- const text = trimText(String(value ?? '').replace(/\s+/g, ' '));
25
- if (!text)
26
- return '';
27
- return text.length > max ? `${text.slice(0, Math.max(0, max - 1)).trimEnd()}...` : text;
28
- }
29
- /** Engine tool-display.js:26-33. Non-records become `{}`; an existing string actionDescriptor wins. */
30
- export function withActionDescriptor(input, detail) {
31
- const next = isRecord(input) ? { ...input } : {};
32
- const cleanDetail = compactText(detail);
33
- if (cleanDetail && typeof next['actionDescriptor'] !== 'string') {
34
- next['actionDescriptor'] = cleanDetail;
35
- }
36
- return next;
37
- }
38
- /** Engine tool-display.js:35-40. Non-records pass through untouched. */
39
- export function withOutputDescriptor(output, detail) {
40
- if (!isRecord(output))
41
- return output;
42
- const cleanDetail = compactText(detail);
43
- if (!cleanDetail || typeof output['actionDescriptor'] === 'string')
44
- return output;
45
- return { ...output, actionDescriptor: cleanDetail };
46
- }
47
- /** Engine tool-display.js:131-139. */
48
- export function stringifyResult(value) {
49
- if (value == null)
50
- return '';
51
- if (typeof value === 'string')
52
- return value;
53
- try {
54
- return JSON.stringify(value);
55
- }
56
- catch {
57
- return String(value);
58
- }
59
- }
60
- //# sourceMappingURL=tool-display.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-display.js","sourceRoot":"","sources":["../../src/events/tool-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,mCAAmC;AACnC,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,GAAG,GAAG,GAAG;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1F,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,oBAAoB,CAAC,KAAc,EAAE,MAAgB;IACnE,MAAM,IAAI,GAA4B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,WAAW,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAE,MAAgB;IACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAClF,OAAO,EAAE,GAAG,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AACtD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Internal port of engine `chat-core/tool-shape.js` (173 lines): tool
3
- * identity — kind classification, human titles, and MCP name parsing
4
- * (`mcp__<server>__<tool>`, `amalgm_<tool>`), ported byte-exact.
5
- *
6
- * NOTE (dedupe): the canonical public home for tool identity is the
7
- * transcript module (`src/transcript/`, per ROADMAP). This copy exists so
8
- * `src/events` + `src/wire` build stand-alone; unify when the transcript
9
- * port lands. Not re-exported from the events barrel.
10
- */
11
- import type { ToolKind } from './schema.js';
12
- /** Engine tool-shape.js:9-17. Hostname without `www.`; unparseable URLs compact to 80 chars. */
13
- export declare function hostLabel(url: unknown): string;
14
- /** Engine tool-shape.js:19-28. */
15
- export declare function humanizeToolName(value?: unknown): string;
16
- /** Engine tool-shape.js:30-37. `mcp__<server>__<tool>` or `amalgm_<tool>`; null otherwise. */
17
- export declare function parseMcpName(name?: unknown): {
18
- server: string;
19
- tool: string;
20
- } | null;
21
- export interface NormalizedToolError {
22
- message: string;
23
- code?: string;
24
- details?: unknown;
25
- }
26
- /** Engine tool-shape.js:39-51. Falsy errors normalize to undefined; records keep themselves as `details`. */
27
- export declare function normalizeError(error: unknown, fallback?: string): NormalizedToolError | undefined;
28
- /** Engine tool-shape.js:53-76. Canonical kind classifier (name, then MCP, then input-shape heuristics). */
29
- export declare function toolKind(name?: unknown, input?: unknown, metadata?: Record<string, unknown>): ToolKind;
30
- export interface TitleForToolOptions {
31
- name?: unknown;
32
- input?: Record<string, unknown>;
33
- /** Accepted for engine-signature parity; unused by the engine implementation too. */
34
- output?: unknown;
35
- error?: unknown;
36
- metadata?: Record<string, unknown>;
37
- fallback?: unknown;
38
- }
39
- /** Engine tool-shape.js:125-157. Descriptor > metadata title > MCP title > per-tool heuristics > fallback. */
40
- export declare function titleForTool({ name, input, error, metadata, fallback }?: TitleForToolOptions): string;
41
- /** Engine tool-shape.js:159-162. */
42
- export declare function mcpMetadataFromName(name: unknown): {
43
- mcp?: {
44
- server: string;
45
- tool: string;
46
- };
47
- };
48
- //# sourceMappingURL=tool-shape.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-shape.d.ts","sourceRoot":"","sources":["../../src/events/tool-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAS5C,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQ9C;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,OAAY,GAAG,MAAM,CAS5D;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,IAAI,GAAE,OAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOxF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAgB,GAAG,mBAAmB,GAAG,SAAS,CAYxG;AAED,2GAA2G;AAC3G,wBAAgB,QAAQ,CAAC,IAAI,GAAE,OAAY,EAAE,KAAK,GAAE,OAAY,EAAE,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAwBlH;AAmDD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAU,EAAE,KAAK,EAAE,QAAa,EAAE,QAAQ,EAAE,GAAE,mBAAwB,GAAG,MAAM,CAiCnH;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,GAAG,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAG7F"}