@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
@@ -0,0 +1,147 @@
1
+ export const AMALGM_ACP_META_KEY = 'amalgm';
2
+ function projectionMeta(event, context) {
3
+ const native = event.raw === undefined
4
+ ? { type: event.type, timestampMs: event.ts }
5
+ : { type: event.type, timestampMs: event.ts, raw: event.raw };
6
+ const amalgm = {
7
+ native,
8
+ ...(context.conversationId === undefined ? {} : { conversationId: context.conversationId }),
9
+ ...(context.turnId === undefined ? {} : { turnId: context.turnId }),
10
+ ...(context.sequence === undefined ? {} : { sequence: context.sequence }),
11
+ };
12
+ return { [AMALGM_ACP_META_KEY]: amalgm };
13
+ }
14
+ /** Map the richer native tool vocabulary into ACP's stable categories. */
15
+ export function toAcpToolKind(kind) {
16
+ switch (kind) {
17
+ case 'read':
18
+ case 'file_read':
19
+ return 'read';
20
+ case 'edit':
21
+ case 'file_edit':
22
+ case 'file_write':
23
+ return 'edit';
24
+ case 'delete':
25
+ return 'delete';
26
+ case 'move':
27
+ return 'move';
28
+ case 'search':
29
+ case 'web_search':
30
+ return 'search';
31
+ case 'execute':
32
+ case 'bash':
33
+ return 'execute';
34
+ case 'think':
35
+ return 'think';
36
+ case 'fetch':
37
+ case 'browser':
38
+ return 'fetch';
39
+ case 'switch_mode':
40
+ return 'switch_mode';
41
+ default:
42
+ return 'other';
43
+ }
44
+ }
45
+ function toAcpToolStatus(status) {
46
+ switch (status) {
47
+ case 'pending':
48
+ return 'pending';
49
+ case 'completed':
50
+ return 'completed';
51
+ case 'failed':
52
+ case 'error':
53
+ return 'failed';
54
+ default:
55
+ return 'in_progress';
56
+ }
57
+ }
58
+ /**
59
+ * Project the provider-neutral native event grammar onto an official ACP session
60
+ * update. Events without an ACP session-update meaning return `null` instead
61
+ * of being disguised as a synthetic update.
62
+ */
63
+ export function toAcpSessionUpdate(event, context = {}) {
64
+ const _meta = projectionMeta(event, context);
65
+ switch (event.type) {
66
+ case 'text.delta':
67
+ return {
68
+ sessionUpdate: 'agent_message_chunk',
69
+ content: { type: 'text', text: event.text },
70
+ ...(context.messageId === undefined ? {} : { messageId: context.messageId }),
71
+ _meta,
72
+ };
73
+ case 'reasoning.delta':
74
+ return {
75
+ sessionUpdate: 'agent_thought_chunk',
76
+ content: { type: 'text', text: event.text },
77
+ ...(context.messageId === undefined ? {} : { messageId: context.messageId }),
78
+ _meta,
79
+ };
80
+ case 'tool.started':
81
+ return {
82
+ sessionUpdate: 'tool_call',
83
+ toolCallId: event.toolCallId,
84
+ title: event.title ?? event.toolName,
85
+ kind: toAcpToolKind(event.kind),
86
+ status: 'in_progress',
87
+ rawInput: event.input,
88
+ _meta,
89
+ };
90
+ case 'tool.updated':
91
+ return {
92
+ sessionUpdate: 'tool_call_update',
93
+ toolCallId: event.toolCallId,
94
+ status: toAcpToolStatus(event.status),
95
+ ...(event.title === undefined ? {} : { title: event.title }),
96
+ ...(event.kind === undefined ? {} : { kind: toAcpToolKind(event.kind) }),
97
+ ...(event.inputDelta === undefined ? {} : { rawInput: event.inputDelta }),
98
+ ...(event.outputDelta === undefined && event.output === undefined
99
+ ? {}
100
+ : { rawOutput: event.outputDelta ?? event.output }),
101
+ _meta,
102
+ };
103
+ case 'tool.completed':
104
+ return {
105
+ sessionUpdate: 'tool_call_update',
106
+ toolCallId: event.toolCallId,
107
+ status: event.isError ? 'failed' : 'completed',
108
+ ...(event.title === undefined ? {} : { title: event.title }),
109
+ ...(event.kind === undefined ? {} : { kind: toAcpToolKind(event.kind) }),
110
+ ...(event.input === undefined ? {} : { rawInput: event.input }),
111
+ ...(event.output === undefined && event.result === undefined
112
+ ? {}
113
+ : { rawOutput: event.output ?? event.result }),
114
+ _meta,
115
+ };
116
+ case 'usage.final': {
117
+ const used = event.usage.contextUsedTokens ?? event.usage.usedTokens;
118
+ const size = event.usage.contextLimit ?? event.usage.maxTokens;
119
+ if (used === null || size === null)
120
+ return null;
121
+ return {
122
+ sessionUpdate: 'usage_update',
123
+ used,
124
+ size,
125
+ ...(event.usage.costUsd === null
126
+ ? {}
127
+ : { cost: { amount: event.usage.costUsd, currency: 'USD' } }),
128
+ _meta,
129
+ };
130
+ }
131
+ case 'text.boundary':
132
+ case 'compaction.started':
133
+ case 'compaction.finished':
134
+ case 'warning':
135
+ case 'error':
136
+ case 'done':
137
+ return null;
138
+ }
139
+ }
140
+ /** Wrap a projected update in ACP's official session notification shape. */
141
+ export function toAcpSessionNotification(sessionId, event, context = {}) {
142
+ const update = toAcpSessionUpdate(event, context);
143
+ if (update === null)
144
+ return null;
145
+ return { sessionId, update };
146
+ }
147
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/acp/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { SessionUpdate } from '@agentclientprotocol/sdk';
2
+ import type { ConversationMessage, ConversationRecord, ConversationTurn, ListConversationsOptions } from '../conversations/types.js';
3
+ import type { ExecutionContract } from '../execution/contract.js';
4
+ import type { ExecutionHandle } from '../execution/store.js';
5
+ import type { PromptInput } from '../input/prompt.js';
6
+ import type { InterruptResult } from '../sessions/chat.js';
7
+ export interface ChatHttpClientOptions {
8
+ readonly baseUrl?: string;
9
+ readonly fetch?: typeof globalThis.fetch;
10
+ }
11
+ export interface StartConversationRequest {
12
+ readonly conversationId?: string;
13
+ readonly execution: ExecutionHandle;
14
+ readonly title?: string;
15
+ readonly origin?: string | null;
16
+ readonly originId?: string | null;
17
+ readonly metadata?: Readonly<Record<string, unknown>>;
18
+ }
19
+ export interface SendTurnRequest {
20
+ readonly execution: ExecutionHandle;
21
+ readonly prompt: PromptInput;
22
+ readonly clientTurnId?: string;
23
+ readonly userMessageId?: string;
24
+ readonly assistantMessageId?: string;
25
+ readonly signal?: AbortSignal;
26
+ }
27
+ export type ChatStreamEvent = {
28
+ readonly type: 'update';
29
+ readonly update: SessionUpdate;
30
+ readonly sequence: number | null;
31
+ } | {
32
+ readonly type: 'complete';
33
+ readonly turn: ConversationTurn;
34
+ };
35
+ export interface ConversationHistoryResponse {
36
+ readonly conversation: ConversationRecord;
37
+ readonly messages: readonly ConversationMessage[];
38
+ readonly latestTurn: ConversationTurn | null;
39
+ }
40
+ export declare class ChatHttpError extends Error {
41
+ readonly status: number;
42
+ readonly code: string;
43
+ constructor(status: number, message: string, code?: string);
44
+ }
45
+ /** Browser/server HTTP door over Chat's single public protocol. */
46
+ export declare function createChatHttpClient(options?: ChatHttpClientOptions): Readonly<{
47
+ prepareExecution(id: string, execution: ExecutionContract): Promise<ExecutionHandle>;
48
+ list(options?: ListConversationsOptions): Promise<readonly ConversationRecord[]>;
49
+ inspect(conversationId: string): Promise<ConversationHistoryResponse>;
50
+ start(input: StartConversationRequest): Promise<ConversationRecord>;
51
+ resume(conversationId: string, execution?: ExecutionHandle): Promise<{
52
+ readonly conversation: ConversationRecord;
53
+ readonly execution: ExecutionHandle;
54
+ }>;
55
+ send(conversationId: string, input: SendTurnRequest): AsyncIterable<ChatStreamEvent>;
56
+ reconnect(conversationId: string, turnId: string, input?: {
57
+ afterSequence?: number;
58
+ signal?: AbortSignal;
59
+ }): AsyncIterable<ChatStreamEvent>;
60
+ active(conversationId: string): Promise<ConversationTurn | null>;
61
+ interrupt(conversationId: string): Promise<InterruptResult>;
62
+ updateTitle(conversationId: string, title: string): Promise<ConversationRecord>;
63
+ markSeen(conversationId: string): Promise<ConversationRecord>;
64
+ archive(conversationId: string): Promise<ConversationRecord>;
65
+ }>;
66
+ //# sourceMappingURL=conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/api/conversations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ export class ChatHttpError extends Error {
2
+ status;
3
+ code;
4
+ constructor(status, message, code = 'CHAT_ERROR') {
5
+ super(message);
6
+ this.name = 'ChatHttpError';
7
+ this.status = status;
8
+ this.code = code;
9
+ }
10
+ }
11
+ function cleanBaseUrl(value) {
12
+ const base = typeof value === 'string' && value.trim() ? value.trim() : '/chat';
13
+ return base.replace(/\/$/, '');
14
+ }
15
+ function queryString(values) {
16
+ const query = new URLSearchParams();
17
+ for (const [key, value] of Object.entries(values)) {
18
+ if (value !== undefined)
19
+ query.set(key, String(value));
20
+ }
21
+ const encoded = query.toString();
22
+ return encoded ? `?${encoded}` : '';
23
+ }
24
+ async function responseJson(response) {
25
+ const payload = await response.json().catch(() => ({}));
26
+ if (!response.ok) {
27
+ const nested = payload['error'] && typeof payload['error'] === 'object'
28
+ ? payload['error']
29
+ : {};
30
+ const message = typeof nested['message'] === 'string'
31
+ ? nested['message']
32
+ : typeof payload['error'] === 'string'
33
+ ? payload['error']
34
+ : `Chat request failed with status ${response.status}`;
35
+ const code = typeof nested['code'] === 'string' ? nested['code'] : 'CHAT_ERROR';
36
+ throw new ChatHttpError(response.status, message, code);
37
+ }
38
+ return payload;
39
+ }
40
+ function sequenceFrom(update, eventId) {
41
+ const record = update;
42
+ const meta = record['_meta'] && typeof record['_meta'] === 'object'
43
+ ? record['_meta']
44
+ : {};
45
+ const amalgm = meta['amalgm'] && typeof meta['amalgm'] === 'object'
46
+ ? meta['amalgm']
47
+ : {};
48
+ const value = amalgm['sequence'] ?? (eventId === null ? null : Number(eventId));
49
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
50
+ }
51
+ async function* streamEvents(response, signal) {
52
+ if (!response.ok) {
53
+ await responseJson(response);
54
+ return;
55
+ }
56
+ if (!response.body)
57
+ throw new ChatHttpError(502, 'Chat stream has no body');
58
+ const reader = response.body.getReader();
59
+ const decoder = new TextDecoder();
60
+ let buffer = '';
61
+ let event = 'message';
62
+ let id = null;
63
+ let data = [];
64
+ const frames = [];
65
+ const flush = () => {
66
+ if (data.length === 0)
67
+ return;
68
+ const value = JSON.parse(data.join('\n'));
69
+ if (event === 'update') {
70
+ const update = value;
71
+ frames.push({ type: 'update', update, sequence: sequenceFrom(update, id) });
72
+ }
73
+ else if (event === 'complete') {
74
+ frames.push({ type: 'complete', turn: value });
75
+ }
76
+ else if (event === 'error') {
77
+ const error = value && typeof value === 'object' ? value : {};
78
+ throw new ChatHttpError(500, typeof error['message'] === 'string' ? error['message'] : 'Chat turn failed', typeof error['code'] === 'string' ? error['code'] : 'CHAT_ERROR');
79
+ }
80
+ event = 'message';
81
+ id = null;
82
+ data = [];
83
+ };
84
+ try {
85
+ while (true) {
86
+ if (signal?.aborted)
87
+ return;
88
+ const { done, value } = await reader.read();
89
+ if (done)
90
+ break;
91
+ buffer += decoder.decode(value, { stream: true });
92
+ const lines = buffer.split('\n');
93
+ buffer = lines.pop() || '';
94
+ for (const rawLine of lines) {
95
+ const line = rawLine.endsWith('\r') ? rawLine.slice(0, -1) : rawLine;
96
+ if (!line)
97
+ flush();
98
+ else if (line.startsWith('event:'))
99
+ event = line.slice(6).trim();
100
+ else if (line.startsWith('id:'))
101
+ id = line.slice(3).trim();
102
+ else if (line.startsWith('data:'))
103
+ data.push(line.slice(5).trimStart());
104
+ while (frames.length > 0)
105
+ yield frames.shift();
106
+ }
107
+ }
108
+ if (buffer) {
109
+ const line = buffer.endsWith('\r') ? buffer.slice(0, -1) : buffer;
110
+ if (line.startsWith('event:'))
111
+ event = line.slice(6).trim();
112
+ else if (line.startsWith('id:'))
113
+ id = line.slice(3).trim();
114
+ else if (line.startsWith('data:'))
115
+ data.push(line.slice(5).trimStart());
116
+ }
117
+ flush();
118
+ while (frames.length > 0)
119
+ yield frames.shift();
120
+ }
121
+ finally {
122
+ reader.releaseLock();
123
+ }
124
+ }
125
+ /** Browser/server HTTP door over Chat's single public protocol. */
126
+ export function createChatHttpClient(options = {}) {
127
+ const baseUrl = cleanBaseUrl(options.baseUrl);
128
+ const fetchImpl = options.fetch || globalThis.fetch;
129
+ if (typeof fetchImpl !== 'function')
130
+ throw new TypeError('Chat HTTP client requires fetch');
131
+ const request = (path, init) => fetchImpl(`${baseUrl}${path}`, init);
132
+ const json = (value) => ({
133
+ method: 'POST',
134
+ headers: { 'Content-Type': 'application/json' },
135
+ body: JSON.stringify(value),
136
+ });
137
+ return Object.freeze({
138
+ async prepareExecution(id, execution) {
139
+ const payload = await responseJson(await request('/executions', json({ id, execution })));
140
+ return payload.execution;
141
+ },
142
+ async list(options = {}) {
143
+ const payload = await responseJson(await request(`/conversations${queryString({
144
+ agentInstallationId: options.agentInstallationId,
145
+ origin: options.origin,
146
+ originId: options.originId,
147
+ includeArchived: options.includeArchived,
148
+ offset: options.offset,
149
+ limit: options.limit,
150
+ })}`));
151
+ return payload.conversations;
152
+ },
153
+ async inspect(conversationId) {
154
+ return responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}`));
155
+ },
156
+ async start(input) {
157
+ const payload = await responseJson(await request('/conversations', json(input)));
158
+ return payload.conversation;
159
+ },
160
+ async resume(conversationId, execution) {
161
+ return responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}/resume`, json(execution ? { execution } : {})));
162
+ },
163
+ async *send(conversationId, input) {
164
+ const { signal, ...body } = input;
165
+ const response = await request(`/conversations/${encodeURIComponent(conversationId)}/turns`, {
166
+ ...json(body),
167
+ headers: { 'Content-Type': 'application/json', Accept: 'text/event-stream' },
168
+ ...(signal ? { signal } : {}),
169
+ });
170
+ yield* streamEvents(response, signal);
171
+ },
172
+ async *reconnect(conversationId, turnId, input = {}) {
173
+ const response = await request(`/conversations/${encodeURIComponent(conversationId)}/turns/${encodeURIComponent(turnId)}/events${queryString({
174
+ afterSequence: input.afterSequence,
175
+ })}`, {
176
+ headers: { Accept: 'text/event-stream' },
177
+ ...(input.signal ? { signal: input.signal } : {}),
178
+ });
179
+ yield* streamEvents(response, input.signal);
180
+ },
181
+ async active(conversationId) {
182
+ const payload = await responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}/active`));
183
+ return payload.turn;
184
+ },
185
+ async interrupt(conversationId) {
186
+ return responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}/interrupt`, json({})));
187
+ },
188
+ async updateTitle(conversationId, title) {
189
+ const payload = await responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}`, { ...json({ title }), method: 'PATCH' }));
190
+ return payload.conversation;
191
+ },
192
+ async markSeen(conversationId) {
193
+ const payload = await responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}`, { ...json({ newMessages: false }), method: 'PATCH' }));
194
+ return payload.conversation;
195
+ },
196
+ async archive(conversationId) {
197
+ const payload = await responseJson(await request(`/conversations/${encodeURIComponent(conversationId)}`, { method: 'DELETE' }));
198
+ return payload.conversation;
199
+ },
200
+ });
201
+ }
202
+ //# sourceMappingURL=conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/api/conversations.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @amalgm/chat API adapters thin doors over the SDK laws. */
2
- export type { ChatPayloadApi } from './chat-payloads.js';
3
- export { createChatPayloadApi } from './chat-payloads.js';
1
+ /** @amalgm/chat API adapter for Chat's one HTTP/SSE protocol. */
2
+ export type { ConversationHistoryResponse, ChatHttpClientOptions, ChatStreamEvent, SendTurnRequest, StartConversationRequest, } from './conversations.js';
3
+ export { ChatHttpError, createChatHttpClient, } from './conversations.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,YAAY,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
package/dist/api/index.js CHANGED
@@ -1,3 +1,2 @@
1
- /** @amalgm/chat API adapters thin doors over the SDK laws. */
2
- export { createChatPayloadApi } from './chat-payloads.js';
1
+ export { ChatHttpError, createChatHttpClient, } from './conversations.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './transcript.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './transcript.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { SessionUpdate } from '@agentclientprotocol/sdk';
2
+ export interface AcpTranscriptState {
3
+ parts: unknown[];
4
+ textPartIndex: number | null;
5
+ reasoningPartIndex: number | null;
6
+ toolPartIndexById: Map<string, number>;
7
+ }
8
+ export declare function createAcpTranscriptState(): AcpTranscriptState;
9
+ /** Fold one official ACP update into the UI transcript projection. */
10
+ export declare function applyAcpTranscriptUpdate(state: AcpTranscriptState, input: SessionUpdate): void;
11
+ export declare function finalizeAcpTranscript(state: AcpTranscriptState, failed?: boolean): readonly unknown[];
12
+ export declare function promptContentPlain(parts: readonly unknown[]): string | null;
13
+ //# sourceMappingURL=transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/conversations/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAO7D;AA8GD,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CA4B9F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAQ,GAAG,SAAS,OAAO,EAAE,CAanG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAO3E"}