@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,261 +0,0 @@
1
- /**
2
- * Structured chat input — engine `runtime/lib/chatInput.js` (311 lines),
3
- * ported byte-exact. Both sides run zod ^4.4.3, so the schemas carry over
4
- * verbatim (`.passthrough()`, `.default()` semantics identical).
5
- */
6
- import { z } from 'zod';
7
- const VALID_AUTH_METHODS = ['amalgm', 'byok', 'provider_auth'];
8
- const ChatInputTextPartSchema = z.object({
9
- type: z.literal('text'),
10
- text: z.string().default(''),
11
- }).passthrough();
12
- const ChatInputFilePartSchema = z.object({
13
- type: z.literal('file'),
14
- filename: z.string().optional(),
15
- mediaType: z.string().optional(),
16
- url: z.string().optional(),
17
- storagePath: z.string().optional(),
18
- storage_path: z.string().optional(),
19
- computerPath: z.string().optional(),
20
- sandboxPath: z.string().optional(),
21
- assetId: z.string().optional(),
22
- }).passthrough();
23
- const ChatInputUnknownPartSchema = z.object({
24
- type: z.string(),
25
- }).passthrough();
26
- export const ChatInputPartSchema = z.union([
27
- ChatInputTextPartSchema,
28
- ChatInputFilePartSchema,
29
- ChatInputUnknownPartSchema,
30
- ]);
31
- export const WorkspaceTargetSchema = z.discriminatedUnion('kind', [
32
- z.object({
33
- kind: z.literal('cwd'),
34
- cwd: z.string(),
35
- }),
36
- z.object({
37
- kind: z.literal('existing-worktree'),
38
- path: z.string(),
39
- }),
40
- z.object({
41
- kind: z.literal('managed-worktree'),
42
- repoPath: z.string(),
43
- branch: z.string(),
44
- baseBranch: z.string().nullable().optional(),
45
- path: z.string().nullable().optional(),
46
- }),
47
- ]);
48
- export const ChatInputSchema = z.object({
49
- parts: z.array(ChatInputPartSchema).default([]),
50
- agent: z.object({
51
- harness: z.string().nullable().optional(),
52
- model: z.string().nullable().optional(),
53
- authMethod: z.enum(VALID_AUTH_METHODS).nullable().optional(),
54
- customAgentId: z.string().nullable().optional(),
55
- systemPrompt: z.string().nullable().optional(),
56
- }).default({}),
57
- tools: z.object({
58
- mcpAppIds: z.array(z.string()).default([]),
59
- toolIds: z.array(z.string()).default([]),
60
- // zod 4 `.default()` returns the default WITHOUT parsing, so a missing
61
- // `tools` key yields bare `{}` (no mcpAppIds/toolIds) — verified against
62
- // the engine at runtime. The cast preserves that byte-exact behavior.
63
- }).default({}),
64
- execution: z.object({
65
- cwd: z.string().nullable().optional(),
66
- computerId: z.string().nullable().optional(),
67
- workspace: WorkspaceTargetSchema.nullable().optional(),
68
- }).default({}),
69
- });
70
- function isObject(value) {
71
- return !!value && typeof value === 'object' && !Array.isArray(value);
72
- }
73
- function cleanString(value) {
74
- return typeof value === 'string' && value.trim() ? value : null;
75
- }
76
- function firstString(...values) {
77
- for (const value of values) {
78
- const cleaned = cleanString(value);
79
- if (cleaned)
80
- return cleaned;
81
- }
82
- return null;
83
- }
84
- /** Engine `chatInput.js uniqueStrings`: trimmed, deduped string list. */
85
- export function uniqueStrings(values) {
86
- if (!Array.isArray(values))
87
- return [];
88
- return [...new Set(values.filter((value) => typeof value === 'string' && value.trim()).map((value) => value.trim()))];
89
- }
90
- function normalizeWorkspace(rawWorkspace, fallbackCwd) {
91
- if (isObject(rawWorkspace) && typeof rawWorkspace.kind === 'string') {
92
- const parsed = WorkspaceTargetSchema.safeParse(rawWorkspace);
93
- if (parsed.success)
94
- return parsed.data;
95
- }
96
- const cwd = cleanString(fallbackCwd);
97
- return cwd ? { kind: 'cwd', cwd } : null;
98
- }
99
- /** Engine `getWorkspaceCwd`: the folder a workspace target points at, if any. */
100
- export function getWorkspaceCwd(workspace) {
101
- if (!workspace || !isObject(workspace))
102
- return null;
103
- if (workspace.kind === 'cwd' && cleanString(workspace.cwd))
104
- return workspace.cwd.trim();
105
- if (workspace.kind === 'existing-worktree' && cleanString(workspace.path))
106
- return workspace.path.trim();
107
- if (workspace.kind === 'managed-worktree') {
108
- return firstString(workspace.path, workspace.repoPath);
109
- }
110
- return null;
111
- }
112
- /** Engine `normalizeChatPart` — pass-through normalization for one part. */
113
- export function normalizeChatPart(part) {
114
- if (!isObject(part) || typeof part.type !== 'string')
115
- return null;
116
- if (part.type === 'text') {
117
- return {
118
- ...part,
119
- type: 'text',
120
- text: typeof part.text === 'string' ? part.text : '',
121
- };
122
- }
123
- if (part.type === 'file') {
124
- const storagePath = firstString(part.storagePath, part.storage_path);
125
- const computerPath = firstString(part.computerPath, part.sandboxPath);
126
- return {
127
- ...part,
128
- type: 'file',
129
- ...(cleanString(part.filename) ? { filename: part.filename.trim() } : {}),
130
- ...(cleanString(part.mediaType) ? { mediaType: part.mediaType.trim() } : {}),
131
- ...(cleanString(part.url) ? { url: part.url.trim() } : {}),
132
- ...(storagePath ? { storagePath, storage_path: storagePath } : {}),
133
- ...(computerPath ? { computerPath, sandboxPath: computerPath } : {}),
134
- ...(cleanString(part.assetId) ? { assetId: part.assetId.trim() } : {}),
135
- };
136
- }
137
- return { ...part };
138
- }
139
- /** Engine `normalizeChatParts` — normalized parts, else a text part from the prompt. */
140
- export function normalizeChatParts(parts, fallbackPrompt) {
141
- const normalized = Array.isArray(parts)
142
- ? parts.map(normalizeChatPart).filter((part) => Boolean(part))
143
- : [];
144
- if (normalized.length > 0)
145
- return normalized;
146
- const prompt = typeof fallbackPrompt === 'string' ? fallbackPrompt : '';
147
- return prompt.trim() ? [{ type: 'text', text: prompt }] : [];
148
- }
149
- /** Engine `getChatInputText` — joined text of all text parts. */
150
- export function getChatInputText(chatInput, fallbackPrompt) {
151
- const normalized = normalizeChatInput(chatInput, { prompt: fallbackPrompt });
152
- return normalized.parts
153
- .filter((part) => part.type === 'text' && typeof part.text === 'string')
154
- .map((part) => part.text)
155
- .join('\n\n')
156
- .trim();
157
- }
158
- /** Engine `getAttachedFilePaths` — local paths of attached file parts. */
159
- export function getAttachedFilePaths(parts) {
160
- if (!Array.isArray(parts))
161
- return [];
162
- return parts
163
- .filter((part) => part && part.type === 'file')
164
- .map((part) => firstString(part.computerPath, part.sandboxPath))
165
- .filter((value) => Boolean(value));
166
- }
167
- /** Engine `buildPromptFromParts` — flat prompt text incl. attached-file prefix. */
168
- export function buildPromptFromParts(parts, fallbackPrompt) {
169
- const normalizedParts = normalizeChatParts(parts, fallbackPrompt);
170
- const text = normalizedParts
171
- .filter((part) => part.type === 'text' && typeof part.text === 'string')
172
- .map((part) => part.text)
173
- .join('\n\n')
174
- .trim();
175
- const attachedPaths = getAttachedFilePaths(normalizedParts);
176
- if (attachedPaths.length === 0) {
177
- return text || (typeof fallbackPrompt === 'string' ? fallbackPrompt : '');
178
- }
179
- const attachedPrefix = `[Attached files: ${attachedPaths.join(', ')}]`;
180
- return text ? `${attachedPrefix}\n\n${text}` : attachedPrefix;
181
- }
182
- /**
183
- * Engine `normalizeChatInput(chatInput, legacy)` — the canonical structured
184
- * input, merging the structured object with legacy flat fields.
185
- */
186
- export function normalizeChatInput(chatInput, legacy = {}) {
187
- const rawInput = isObject(chatInput) ? chatInput : {};
188
- const rawAgent = isObject(rawInput.agent) ? rawInput.agent : {};
189
- const rawTools = isObject(rawInput.tools) ? rawInput.tools : {};
190
- const rawExecution = isObject(rawInput.execution) ? rawInput.execution : {};
191
- const workspace = normalizeWorkspace(rawExecution.workspace, firstString(rawExecution.cwd, legacy.cwd, legacy.projectPath));
192
- const resolvedCwd = firstString(rawExecution.cwd, getWorkspaceCwd(workspace), legacy.cwd, legacy.projectPath);
193
- const normalized = {
194
- parts: normalizeChatParts(rawInput.parts, Array.isArray(legacy.userParts) && legacy.userParts.length > 0
195
- ? null
196
- : legacy.prompt),
197
- agent: {
198
- harness: firstString(rawAgent.harness, rawAgent.harnessId, legacy.harness),
199
- model: firstString(rawAgent.model, rawAgent.modelId, legacy.modelId, legacy.model),
200
- authMethod: firstString(rawAgent.authMethod, legacy.authMethod),
201
- customAgentId: firstString(rawAgent.customAgentId, (typeof rawAgent.harness === 'string' && rawAgent.harness.startsWith('custom-'))
202
- ? rawAgent.harness
203
- : null, (typeof legacy.harness === 'string' && legacy.harness.startsWith('custom-'))
204
- ? legacy.harness
205
- : null),
206
- systemPrompt: firstString(rawAgent.systemPrompt, legacy.systemPrompt),
207
- },
208
- tools: {
209
- mcpAppIds: uniqueStrings(rawTools.mcpAppIds || legacy.mcpAppIds),
210
- toolIds: uniqueStrings(rawTools.toolIds
211
- || legacy.toolIds),
212
- },
213
- execution: {
214
- cwd: resolvedCwd,
215
- computerId: firstString(rawExecution.computerId, legacy.computerId),
216
- workspace,
217
- },
218
- };
219
- return ChatInputSchema.parse(normalized);
220
- }
221
- /**
222
- * Engine `chatInputToLegacyFields` — project the structured input back onto
223
- * the flat legacy body fields (the shape `applyPayloadRecord` spreads).
224
- */
225
- export function chatInputToLegacyFields(chatInput, fallback = {}) {
226
- const normalized = normalizeChatInput(chatInput, fallback);
227
- const prompt = buildPromptFromParts(normalized.parts, fallback.prompt);
228
- const harness = firstString(normalized.agent.customAgentId, normalized.agent.harness, fallback.harness);
229
- const modelId = firstString(normalized.agent.model, fallback.modelId, fallback.model);
230
- const cwd = firstString(normalized.execution.cwd, getWorkspaceCwd(normalized.execution.workspace), fallback.cwd, fallback.projectPath);
231
- const authMethod = firstString(normalized.agent.authMethod, fallback.authMethod);
232
- const systemPrompt = firstString(normalized.agent.systemPrompt, fallback.systemPrompt);
233
- return {
234
- prompt,
235
- userParts: normalized.parts,
236
- harness,
237
- modelId,
238
- model: modelId,
239
- authMethod,
240
- cwd,
241
- projectPath: cwd,
242
- computerId: firstString(normalized.execution.computerId, fallback.computerId),
243
- mcpAppIds: normalized.tools.mcpAppIds,
244
- systemPrompt,
245
- };
246
- }
247
- /** Engine `withChatInputText` — rewrite every text part through `updater`. */
248
- export function withChatInputText(chatInput, updater, legacy = {}) {
249
- const normalized = normalizeChatInput(chatInput, legacy);
250
- const parts = normalized.parts.map((part) => {
251
- if (part.type !== 'text' || typeof part.text !== 'string')
252
- return part;
253
- const nextText = updater(part.text, part);
254
- return {
255
- ...part,
256
- text: typeof nextText === 'string' ? nextText : part.text,
257
- };
258
- });
259
- return normalizeChatInput({ ...normalized, parts });
260
- }
261
- //# sourceMappingURL=chat-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../src/contract/chat-input.ts"],"names":[],"mappings":"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"}
@@ -1,191 +0,0 @@
1
- /**
2
- * `createContract` — engine `chat-core/contract.js:460-648`, ported as a pure
3
- * orchestration. Effectful collaborators are injected:
4
- *
5
- * - `authEnvelope` — engine `chat-core/auth.js authEnvelope` (reads the
6
- * BYOK credential store + provider auth files)
7
- * - `normalizeAgentConfig`— engine `amalgm-mcp/agent-config/schema.js`
8
- * (uses crypto.randomUUID for stable ids)
9
- * - `cwd` ports — the filesystem checks behind `resolveCwd`
10
- * (engine: fs.statSync / os.homedir / path,
11
- * `runtime/scripts/lib/project-paths.js`)
12
- * - `sha256Hex` — the runtimeKey fingerprint (engine: node:crypto)
13
- *
14
- * Env-derived engine defaults become documented options:
15
- *
16
- * - `options.defaultCwd` — engine `DEFAULT_CWD` = `AMALGM_DEFAULT_CWD` || '/workspace'
17
- * - `options.port` — engine `runtimePort('chat-server')` (runtime-manifest)
18
- * - `options.proxyToken` — engine config `PROXY_TOKEN`
19
- * - `options.proxyBaseUrl`— engine `PROXY_BASE_URL || DEFAULT_PROXY_BASE_URL`
20
- * - `options.amalgmDir` — engine config `AMALGM_DIR`
21
- * - `options.containerId` — engine `process.env.AMALGM_CONTAINER_ID`
22
- */
23
- import type { FreezePorts, FrozenRuntimeFields } from './freeze.js';
24
- /** Engine `AUTH_BY_HARNESS` (`auth.js:9-15`): supported methods, first = default. */
25
- export declare const AUTH_BY_HARNESS: Readonly<Record<string, readonly string[]>>;
26
- /**
27
- * Engine `coerceAuth` (`auth.js:70-73`): clamp a requested auth method to the
28
- * harness's supported set, defaulting to the first supported method.
29
- */
30
- export declare function coerceAuth(harness: string, requested: unknown): string;
31
- /** The envelope returned by the host's `authEnvelope` (engine `auth.js:148-200`). */
32
- export interface AuthEnvelope {
33
- method: string;
34
- baseUrl?: string | null;
35
- credentialId?: string | null;
36
- credentialName?: string | null;
37
- providerKind?: string | null;
38
- forwardBaseUrl?: string | null;
39
- tokenRef?: string | null;
40
- tokenFingerprint?: string | null;
41
- runtimeHome?: string | null;
42
- runtimeHomeSources?: string[];
43
- [key: string]: unknown;
44
- }
45
- /** The exact argument object the engine passes to `authEnvelope`. */
46
- export interface AuthEnvelopeArgs {
47
- harness: string;
48
- authMethod: string;
49
- sessionId: string;
50
- localBaseUrl: string;
51
- proxyToken: string | undefined;
52
- proxyBaseUrl: string | undefined;
53
- amalgmDir: string | undefined;
54
- userId: string;
55
- credentialId: string | null;
56
- modelId: string;
57
- agentConfigId: string;
58
- runtimeHomeLayout: string;
59
- }
60
- /**
61
- * Filesystem/OS ports behind `resolveCwd`. Engine defaults:
62
- * - `expandHome` — `contract.js:460-467` (os.homedir + path.join)
63
- * - `canonicalProjectPath`— `runtime/scripts/lib/project-paths.js`
64
- * - `isDirectory` — `fs.statSync(p).isDirectory()` (throwing is fine;
65
- * it is treated as "not a directory")
66
- * - `processCwd` — `process.cwd()` (throwing is fine)
67
- * - `homedir` — `os.homedir()`
68
- * - `isAbsolute` / `resolvePath` — `path.isAbsolute` / `path.resolve`
69
- */
70
- export interface CwdPorts {
71
- expandHome(value: unknown): string;
72
- canonicalProjectPath(value: string): string;
73
- isDirectory(candidate: string): boolean;
74
- processCwd(): string | null;
75
- homedir(): string;
76
- isAbsolute(candidate: string): boolean;
77
- resolvePath(from: string, to: string): string;
78
- }
79
- export interface WorkspaceCwdUnavailableError extends Error {
80
- code: 'workspace_cwd_unavailable';
81
- status: 409;
82
- }
83
- /**
84
- * The 409 thrown when a cloud-workspace turn cannot resolve its folder —
85
- * engine `contract.js:493-497,503-507`. Message, `code`, and `status` are
86
- * byte-exact.
87
- */
88
- export declare function workspaceCwdUnavailableError(): WorkspaceCwdUnavailableError;
89
- export interface ResolveCwdOptions {
90
- /** Fallback project cwd (engine `options.cwd`). */
91
- cwd?: string | undefined;
92
- /** Engine `DEFAULT_CWD` = `AMALGM_DEFAULT_CWD` || '/workspace'. */
93
- defaultCwd?: string | undefined;
94
- /** True when the payload carries `cloudWorkspaceRef` — 409 instead of fallback. */
95
- requireCwd?: boolean | undefined;
96
- }
97
- /**
98
- * Engine `resolveCwd` (`contract.js:486-510`), decision logic verbatim.
99
- * With `requireCwd`, an empty or non-existent cwd throws
100
- * `workspace_cwd_unavailable` (409) instead of falling back.
101
- */
102
- export declare function resolveCwd(rawCwd: unknown, options: ResolveCwdOptions, ports: CwdPorts): string;
103
- export interface ContractOrigin {
104
- type: string;
105
- id: string;
106
- name: string | null;
107
- projectPath: string | null;
108
- }
109
- /** Engine `normalizeOrigin` (`contract.js:516-533`) — pure, ported fully. */
110
- export declare function normalizeOrigin(payload?: Record<string, any>): ContractOrigin | null;
111
- export interface ContractConstruct {
112
- type: string;
113
- id: string | null;
114
- name: string | null;
115
- projectPath: string | null;
116
- path: string | null;
117
- }
118
- /** Engine `normalizeConstructs` (`contract.js:552-567`) — pure, ported fully. */
119
- export declare function normalizeConstructs(payload?: Record<string, any>, cwd?: string | null): Array<ContractConstruct | ContractOrigin>;
120
- /** Engine `positiveOrNull` (`contract.js:400-403`). */
121
- export declare function positiveOrNull(value: unknown): number | null;
122
- export interface CreateContractPorts extends FreezePorts {
123
- /** Engine `chat-core/auth.js authEnvelope` — host auth, BYOK store, provider files. */
124
- authEnvelope(args: AuthEnvelopeArgs): AuthEnvelope;
125
- /** Engine `amalgm-mcp/agent-config/schema.js normalizeAgentConfig`. */
126
- normalizeAgentConfig(input: unknown): unknown;
127
- /** Filesystem/OS ports for `resolveCwd`. */
128
- cwd: CwdPorts;
129
- /** Optional override; defaults to the pure `coerceAuth` above (engine `auth.js`). */
130
- coerceAuth?(harness: string, requested: unknown): string;
131
- }
132
- export interface CreateContractOptions {
133
- /** Fallback project cwd fed to `resolveCwd` (engine `options.cwd`). */
134
- cwd?: string | undefined;
135
- /** Engine `DEFAULT_CWD` = env `AMALGM_DEFAULT_CWD` || '/workspace'. */
136
- defaultCwd?: string | undefined;
137
- /** Full local base URL; wins over `port` (engine `options.localBaseUrl`). */
138
- localBaseUrl?: string | undefined;
139
- /** Chat-server port. Engine default: `runtimePort('chat-server')` (runtime-manifest). */
140
- port?: number | undefined;
141
- /** Engine config `PROXY_TOKEN` (proxy-token-store). */
142
- proxyToken?: string | undefined;
143
- /** Engine `PROXY_BASE_URL || DEFAULT_PROXY_BASE_URL` (chat-server/config). */
144
- proxyBaseUrl?: string | undefined;
145
- /** Engine config `AMALGM_DIR`. */
146
- amalgmDir?: string | undefined;
147
- /** Fallback user id (engine `options.userId`). */
148
- userId?: string | undefined;
149
- /** Engine `process.env.AMALGM_CONTAINER_ID` — computerId fallback. */
150
- containerId?: string | undefined;
151
- }
152
- export interface ChatContract {
153
- sessionId: string;
154
- userId: string;
155
- computerId: string;
156
- assistantMessageId: string;
157
- userMessageId: string | null;
158
- agentId: string;
159
- agentConfigId: string;
160
- agentConfig: unknown;
161
- runtimeHomeLayout: string;
162
- harness: string;
163
- authMethod: string;
164
- modelId: string;
165
- usageModelId: string;
166
- providerSessionId: string | null;
167
- cliModel: string;
168
- reasoningEffort: string | null;
169
- fastMode: boolean;
170
- contextWindow: number | null;
171
- maxTokens: number | null;
172
- cwd: string;
173
- origin: ContractOrigin | null;
174
- constructs: Array<ContractConstruct | ContractOrigin>;
175
- localBaseUrl: string;
176
- mcpServers: unknown[];
177
- systemPrompt: string;
178
- compiledAgentInstructions: string;
179
- usageOwner: 'platform_proxy' | 'local_user';
180
- auth: AuthEnvelope;
181
- runtimeFields: FrozenRuntimeFields;
182
- runtimeKey: string | null;
183
- }
184
- /**
185
- * Engine `createContract` (`contract.js:569-648`). Field-for-field parity,
186
- * including every error message and precedence chain. The uncommitted
187
- * cloud-workspace behavior is preserved: `payload.cloudWorkspaceRef` makes
188
- * cwd resolution mandatory (`workspace_cwd_unavailable`, 409).
189
- */
190
- export declare function createContract(payload: Record<string, any>, options: CreateContractOptions, ports: CreateContractPorts): ChatContract;
191
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/contract/create.ts"],"names":[],"mappings":"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"}