@multiplayer-app/sandbox 0.0.8 → 0.0.9

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 (273) hide show
  1. package/dist/agents/content-generator.agent.d.ts +4 -0
  2. package/dist/agents/content-generator.agent.d.ts.map +1 -0
  3. package/dist/agents/content-generator.agent.js +41 -0
  4. package/dist/agents/content-generator.agent.js.map +1 -0
  5. package/dist/agents/html-generator.agent.d.ts +1 -3
  6. package/dist/agents/html-generator.agent.d.ts.map +1 -1
  7. package/dist/agents/html-generator.agent.js +4 -90
  8. package/dist/agents/html-generator.agent.js.map +1 -1
  9. package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
  10. package/dist/agents/markdown-generator.agent.js +10 -5
  11. package/dist/agents/markdown-generator.agent.js.map +1 -1
  12. package/dist/agents/shared/content-generator-system-prompt.d.ts +3 -0
  13. package/dist/agents/shared/content-generator-system-prompt.d.ts.map +1 -0
  14. package/dist/agents/shared/content-generator-system-prompt.js +32 -0
  15. package/dist/agents/shared/content-generator-system-prompt.js.map +1 -0
  16. package/dist/agents/shared/get-session-artifact-content.tool.d.ts +7 -0
  17. package/dist/agents/shared/get-session-artifact-content.tool.d.ts.map +1 -0
  18. package/dist/agents/shared/get-session-artifact-content.tool.js +44 -0
  19. package/dist/agents/shared/get-session-artifact-content.tool.js.map +1 -0
  20. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts +5 -0
  21. package/dist/agents/shared/list-session-artifact-paths.tool.d.ts.map +1 -0
  22. package/dist/agents/shared/list-session-artifact-paths.tool.js +37 -0
  23. package/dist/agents/shared/list-session-artifact-paths.tool.js.map +1 -0
  24. package/dist/agents/shared/publish-session-artifacts.tool.d.ts +1 -10
  25. package/dist/agents/shared/publish-session-artifacts.tool.d.ts.map +1 -1
  26. package/dist/agents/shared/publish-session-artifacts.tool.js +97 -81
  27. package/dist/agents/shared/publish-session-artifacts.tool.js.map +1 -1
  28. package/dist/agents/shared/update-session-artifacts.tool.d.ts +18 -0
  29. package/dist/agents/shared/update-session-artifacts.tool.d.ts.map +1 -0
  30. package/dist/agents/shared/update-session-artifacts.tool.js +146 -0
  31. package/dist/agents/shared/update-session-artifacts.tool.js.map +1 -0
  32. package/dist/agents/shared/validate-artifact-content.tools.d.ts +12 -0
  33. package/dist/agents/shared/validate-artifact-content.tools.d.ts.map +1 -0
  34. package/dist/agents/shared/validate-artifact-content.tools.js +131 -0
  35. package/dist/agents/shared/validate-artifact-content.tools.js.map +1 -0
  36. package/dist/agents.d.ts.map +1 -1
  37. package/dist/agents.js +2 -4
  38. package/dist/agents.js.map +1 -1
  39. package/dist/ai-agent.service.d.ts.map +1 -1
  40. package/dist/ai-agent.service.js +0 -2
  41. package/dist/ai-agent.service.js.map +1 -1
  42. package/dist/create-builder-api.d.ts +4 -0
  43. package/dist/create-builder-api.d.ts.map +1 -1
  44. package/dist/create-builder-api.js.map +1 -1
  45. package/dist/index.d.ts +3 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +11 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/lib/chat-access.d.ts +19 -0
  50. package/dist/lib/chat-access.d.ts.map +1 -0
  51. package/dist/lib/chat-access.js +75 -0
  52. package/dist/lib/chat-access.js.map +1 -0
  53. package/dist/lib/list-user-chats.d.ts +22 -0
  54. package/dist/lib/list-user-chats.d.ts.map +1 -0
  55. package/dist/lib/list-user-chats.js +48 -0
  56. package/dist/lib/list-user-chats.js.map +1 -0
  57. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts +3 -0
  58. package/dist/lib/session-artifacts/apply-hashline-edits.d.ts.map +1 -0
  59. package/dist/lib/session-artifacts/apply-hashline-edits.js +25 -0
  60. package/dist/lib/session-artifacts/apply-hashline-edits.js.map +1 -0
  61. package/dist/lib/session-artifacts/artifact-text-edit.d.ts +8 -0
  62. package/dist/lib/session-artifacts/artifact-text-edit.d.ts.map +1 -0
  63. package/dist/lib/session-artifacts/artifact-text-edit.js +23 -0
  64. package/dist/lib/session-artifacts/artifact-text-edit.js.map +1 -0
  65. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts +3 -0
  66. package/dist/lib/session-artifacts/hashline-diff-guide.d.ts.map +1 -0
  67. package/dist/lib/session-artifacts/hashline-diff-guide.js +19 -0
  68. package/dist/lib/session-artifacts/hashline-diff-guide.js.map +1 -0
  69. package/dist/lib/session-artifacts/hashline-tag.d.ts +33 -0
  70. package/dist/lib/session-artifacts/hashline-tag.d.ts.map +1 -0
  71. package/dist/lib/session-artifacts/hashline-tag.js +80 -0
  72. package/dist/lib/session-artifacts/hashline-tag.js.map +1 -0
  73. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts +10 -0
  74. package/dist/lib/session-artifacts/parse-hashline-diff.d.ts.map +1 -0
  75. package/dist/lib/session-artifacts/parse-hashline-diff.js +33 -0
  76. package/dist/lib/session-artifacts/parse-hashline-diff.js.map +1 -0
  77. package/dist/lib/session-pages/artifact-storage-paths.d.ts +13 -0
  78. package/dist/lib/session-pages/artifact-storage-paths.d.ts.map +1 -0
  79. package/dist/lib/session-pages/artifact-storage-paths.js +46 -0
  80. package/dist/lib/session-pages/artifact-storage-paths.js.map +1 -0
  81. package/dist/lib/session-pages/artifact-storage.d.ts +8 -0
  82. package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -0
  83. package/dist/lib/session-pages/artifact-storage.js +113 -0
  84. package/dist/lib/session-pages/artifact-storage.js.map +1 -0
  85. package/dist/lib/session-pages/delete-session-artifact.d.ts +5 -0
  86. package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -0
  87. package/dist/lib/session-pages/delete-session-artifact.js +56 -0
  88. package/dist/lib/session-pages/delete-session-artifact.js.map +1 -0
  89. package/dist/lib/session-pages/index.d.ts +3 -3
  90. package/dist/lib/session-pages/index.d.ts.map +1 -1
  91. package/dist/lib/session-pages/index.js +6 -6
  92. package/dist/lib/session-pages/index.js.map +1 -1
  93. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts +3 -0
  94. package/dist/lib/session-pages/inject-preview-error-reporter.d.ts.map +1 -0
  95. package/dist/lib/session-pages/inject-preview-error-reporter.js +30 -0
  96. package/dist/lib/session-pages/inject-preview-error-reporter.js.map +1 -0
  97. package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
  98. package/dist/lib/session-pages/list-session-artifacts.js +19 -3
  99. package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
  100. package/dist/lib/session-pages/paths.d.ts +0 -1
  101. package/dist/lib/session-pages/paths.d.ts.map +1 -1
  102. package/dist/lib/session-pages/paths.js +0 -8
  103. package/dist/lib/session-pages/paths.js.map +1 -1
  104. package/dist/lib/session-pages/read-session-artifacts.d.ts +9 -0
  105. package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -0
  106. package/dist/lib/session-pages/read-session-artifacts.js +56 -0
  107. package/dist/lib/session-pages/read-session-artifacts.js.map +1 -0
  108. package/dist/lib/session-pages/session-pico-css.d.ts +5 -0
  109. package/dist/lib/session-pages/session-pico-css.d.ts.map +1 -0
  110. package/dist/lib/session-pages/session-pico-css.js +11 -0
  111. package/dist/lib/session-pages/session-pico-css.js.map +1 -0
  112. package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -10
  113. package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
  114. package/dist/lib/session-pages/write-session-artifacts.js +9 -57
  115. package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
  116. package/dist/lib/socket/artifact-events.d.ts +1 -1
  117. package/dist/lib/socket/artifact-events.d.ts.map +1 -1
  118. package/dist/lib/socket/artifact-events.js.map +1 -1
  119. package/dist/middleware/index.d.ts +2 -0
  120. package/dist/middleware/index.d.ts.map +1 -0
  121. package/dist/middleware/index.js +38 -0
  122. package/dist/middleware/index.js.map +1 -0
  123. package/dist/middleware/validation/activity.validation.d.ts +5 -0
  124. package/dist/middleware/validation/activity.validation.d.ts.map +1 -0
  125. package/dist/middleware/validation/activity.validation.js +19 -0
  126. package/dist/middleware/validation/activity.validation.js.map +1 -0
  127. package/dist/middleware/validation/agent.validation.d.ts +4 -0
  128. package/dist/middleware/validation/agent.validation.d.ts.map +1 -0
  129. package/dist/middleware/validation/agent.validation.js +25 -0
  130. package/dist/middleware/validation/agent.validation.js.map +1 -0
  131. package/dist/middleware/validation/chat.validation.d.ts +12 -0
  132. package/dist/middleware/validation/chat.validation.d.ts.map +1 -0
  133. package/dist/middleware/validation/chat.validation.js +94 -0
  134. package/dist/middleware/validation/chat.validation.js.map +1 -0
  135. package/dist/middleware/validation/index.d.ts +4 -0
  136. package/dist/middleware/validation/index.d.ts.map +1 -0
  137. package/dist/middleware/validation/index.js +40 -0
  138. package/dist/middleware/validation/index.js.map +1 -0
  139. package/dist/middleware/validation/zod-validate.d.ts +5 -0
  140. package/dist/middleware/validation/zod-validate.d.ts.map +1 -0
  141. package/dist/middleware/validation/zod-validate.js +25 -0
  142. package/dist/middleware/validation/zod-validate.js.map +1 -0
  143. package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
  144. package/dist/realtime/reset-session-artifact-y-docs.js +6 -1
  145. package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
  146. package/dist/realtime/session-artifact-document-id.d.ts.map +1 -1
  147. package/dist/realtime/session-artifact-document-id.js +0 -2
  148. package/dist/realtime/session-artifact-document-id.js.map +1 -1
  149. package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
  150. package/dist/realtime/session-artifact-y-socket-io.js +0 -11
  151. package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
  152. package/dist/realtime/session-artifact-yjs-store.d.ts +24 -3
  153. package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
  154. package/dist/realtime/session-artifact-yjs-store.js +123 -41
  155. package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
  156. package/dist/routes/activities/get.d.ts +3 -0
  157. package/dist/routes/activities/get.d.ts.map +1 -0
  158. package/dist/routes/activities/get.js +28 -0
  159. package/dist/routes/activities/get.js.map +1 -0
  160. package/dist/routes/activities/index.d.ts +2 -0
  161. package/dist/routes/activities/index.d.ts.map +1 -0
  162. package/dist/routes/activities/index.js +16 -0
  163. package/dist/routes/activities/index.js.map +1 -0
  164. package/dist/routes/activities/list.d.ts +3 -0
  165. package/dist/routes/activities/list.d.ts.map +1 -0
  166. package/dist/routes/activities/list.js +41 -0
  167. package/dist/routes/activities/list.js.map +1 -0
  168. package/dist/routes/activities/source-types.d.ts +3 -0
  169. package/dist/routes/activities/source-types.d.ts.map +1 -0
  170. package/dist/routes/activities/source-types.js +33 -0
  171. package/dist/routes/activities/source-types.js.map +1 -0
  172. package/dist/routes/activities/summary.d.ts +3 -0
  173. package/dist/routes/activities/summary.d.ts.map +1 -0
  174. package/dist/routes/activities/summary.js +38 -0
  175. package/dist/routes/activities/summary.js.map +1 -0
  176. package/dist/routes/agents/getConfig.d.ts +3 -0
  177. package/dist/routes/agents/getConfig.d.ts.map +1 -0
  178. package/dist/routes/agents/getConfig.js +16 -0
  179. package/dist/routes/agents/getConfig.js.map +1 -0
  180. package/dist/routes/agents/index.d.ts +2 -0
  181. package/dist/routes/agents/index.d.ts.map +1 -0
  182. package/dist/routes/agents/index.js +13 -0
  183. package/dist/routes/agents/index.js.map +1 -0
  184. package/dist/routes/agents/upsertPreferences.d.ts +4 -0
  185. package/dist/routes/agents/upsertPreferences.d.ts.map +1 -0
  186. package/dist/routes/agents/upsertPreferences.js +42 -0
  187. package/dist/routes/agents/upsertPreferences.js.map +1 -0
  188. package/dist/routes/chats/abort.d.ts +2 -2
  189. package/dist/routes/chats/abort.d.ts.map +1 -1
  190. package/dist/routes/chats/abort.js +10 -5
  191. package/dist/routes/chats/abort.js.map +1 -1
  192. package/dist/routes/chats/actions.d.ts +2 -2
  193. package/dist/routes/chats/actions.d.ts.map +1 -1
  194. package/dist/routes/chats/actions.js +12 -12
  195. package/dist/routes/chats/actions.js.map +1 -1
  196. package/dist/routes/chats/artifacts.d.ts +2 -2
  197. package/dist/routes/chats/artifacts.d.ts.map +1 -1
  198. package/dist/routes/chats/artifacts.js +15 -4
  199. package/dist/routes/chats/artifacts.js.map +1 -1
  200. package/dist/routes/chats/chat-route-errors.d.ts +3 -0
  201. package/dist/routes/chats/chat-route-errors.d.ts.map +1 -0
  202. package/dist/routes/chats/chat-route-errors.js +23 -0
  203. package/dist/routes/chats/chat-route-errors.js.map +1 -0
  204. package/dist/routes/chats/delete.d.ts +2 -2
  205. package/dist/routes/chats/delete.d.ts.map +1 -1
  206. package/dist/routes/chats/delete.js +12 -3
  207. package/dist/routes/chats/delete.js.map +1 -1
  208. package/dist/routes/chats/get.d.ts +2 -2
  209. package/dist/routes/chats/get.d.ts.map +1 -1
  210. package/dist/routes/chats/get.js +8 -4
  211. package/dist/routes/chats/get.js.map +1 -1
  212. package/dist/routes/chats/getStream.d.ts +2 -2
  213. package/dist/routes/chats/getStream.d.ts.map +1 -1
  214. package/dist/routes/chats/getStream.js +16 -8
  215. package/dist/routes/chats/getStream.js.map +1 -1
  216. package/dist/routes/chats/index.d.ts.map +1 -1
  217. package/dist/routes/chats/index.js +19 -13
  218. package/dist/routes/chats/index.js.map +1 -1
  219. package/dist/routes/chats/invite-participants.d.ts +3 -0
  220. package/dist/routes/chats/invite-participants.d.ts.map +1 -0
  221. package/dist/routes/chats/invite-participants.js +56 -0
  222. package/dist/routes/chats/invite-participants.js.map +1 -0
  223. package/dist/routes/chats/list.d.ts +2 -2
  224. package/dist/routes/chats/list.d.ts.map +1 -1
  225. package/dist/routes/chats/list.js +22 -25
  226. package/dist/routes/chats/list.js.map +1 -1
  227. package/dist/routes/chats/messages.d.ts +2 -2
  228. package/dist/routes/chats/messages.d.ts.map +1 -1
  229. package/dist/routes/chats/messages.js +13 -6
  230. package/dist/routes/chats/messages.js.map +1 -1
  231. package/dist/routes/chats/multiUserMessages.d.ts +2 -2
  232. package/dist/routes/chats/multiUserMessages.d.ts.map +1 -1
  233. package/dist/routes/chats/multiUserMessages.js +19 -19
  234. package/dist/routes/chats/multiUserMessages.js.map +1 -1
  235. package/dist/routes/chats/remove-participants.d.ts +3 -0
  236. package/dist/routes/chats/remove-participants.d.ts.map +1 -0
  237. package/dist/routes/chats/remove-participants.js +46 -0
  238. package/dist/routes/chats/remove-participants.js.map +1 -0
  239. package/dist/routes/chats/stream.d.ts +2 -2
  240. package/dist/routes/chats/stream.d.ts.map +1 -1
  241. package/dist/routes/chats/stream.js +28 -11
  242. package/dist/routes/chats/stream.js.map +1 -1
  243. package/dist/routes/chats/title.d.ts +2 -2
  244. package/dist/routes/chats/title.d.ts.map +1 -1
  245. package/dist/routes/chats/title.js +14 -8
  246. package/dist/routes/chats/title.js.map +1 -1
  247. package/dist/routes/chats/updateToolCall.d.ts +2 -2
  248. package/dist/routes/chats/updateToolCall.d.ts.map +1 -1
  249. package/dist/routes/chats/updateToolCall.js +16 -20
  250. package/dist/routes/chats/updateToolCall.js.map +1 -1
  251. package/dist/routes/route-errors.d.ts +3 -0
  252. package/dist/routes/route-errors.d.ts.map +1 -0
  253. package/dist/routes/route-errors.js +13 -0
  254. package/dist/routes/route-errors.js.map +1 -0
  255. package/dist/routes/schemas.d.ts +80 -0
  256. package/dist/routes/schemas.d.ts.map +1 -1
  257. package/dist/routes/schemas.js +95 -1
  258. package/dist/routes/schemas.js.map +1 -1
  259. package/dist/routes/sessions.d.ts.map +1 -1
  260. package/dist/routes/sessions.js +77 -9
  261. package/dist/routes/sessions.js.map +1 -1
  262. package/dist/routes/tenants/credentials.d.ts +5 -0
  263. package/dist/routes/tenants/credentials.d.ts.map +1 -0
  264. package/dist/routes/tenants/credentials.js +50 -0
  265. package/dist/routes/tenants/credentials.js.map +1 -0
  266. package/dist/routes/tenants/index.d.ts +2 -0
  267. package/dist/routes/tenants/index.d.ts.map +1 -0
  268. package/dist/routes/tenants/index.js +10 -0
  269. package/dist/routes/tenants/index.js.map +1 -0
  270. package/dist/server.d.ts.map +1 -1
  271. package/dist/server.js +6 -0
  272. package/dist/server.js.map +1 -1
  273. package/package.json +5 -4
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.publishArtifactsInputSchema = void 0;
4
- exports.basicHtmlValidation = basicHtmlValidation;
5
- exports.createPublishSessionArtifactsTool = createPublishSessionArtifactsTool;
3
+ exports.publishSessionArtifactsSubagentTool = exports.publishArtifactsInputSchema = void 0;
6
4
  const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
7
5
  const zod_1 = require("zod");
6
+ const context_1 = require("../../context");
8
7
  const artifact_events_1 = require("../../lib/socket/artifact-events");
9
8
  const session_pages_1 = require("../../lib/session-pages");
10
9
  const artifactFileSchema = zod_1.z.object({
11
10
  path: zod_1.z
12
11
  .string()
13
12
  .min(1)
14
- .describe('Relative path under the session folder, e.g. index.html, styles.css, script.js, lib/utils.js'),
13
+ .describe('Relative path under the session folder, e.g. index.html, about.html, data/metrics.json, README.md'),
15
14
  content: zod_1.z.string().describe('File contents (text)'),
16
15
  });
17
16
  exports.publishArtifactsInputSchema = zod_1.z.object({
@@ -21,86 +20,103 @@ exports.publishArtifactsInputSchema = zod_1.z.object({
21
20
  .string()
22
21
  .optional()
23
22
  .describe('Which published file to open in preview (default index.html)'),
24
- includeBaseStyles: zod_1.z
25
- .boolean()
26
- .optional()
27
- .describe('Merge default styles into styles.css when present (default true)'),
28
23
  });
29
- function basicHtmlValidation(html) {
30
- const errors = [];
31
- const warnings = [];
32
- if (!html.trim()) {
33
- errors.push('HTML is empty');
24
+ async function executePublishSessionArtifacts(input, context) {
25
+ var _a, _b, _c, _d;
26
+ const sessionId = (_a = context === null || context === void 0 ? void 0 : context.data) === null || _a === void 0 ? void 0 : _a.chatId;
27
+ if (!sessionId) {
28
+ throw new Error('Session ID is required');
34
29
  }
35
- return { valid: errors.length === 0, warnings, errors };
36
- }
37
- function createPublishSessionArtifactsTool(options) {
38
- var _a, _b;
39
- const needsApproval = (_a = options === null || options === void 0 ? void 0 : options.needsApproval) !== null && _a !== void 0 ? _a : true;
40
- const validateIndexHtml = (_b = options === null || options === void 0 ? void 0 : options.validateIndexHtml) !== null && _b !== void 0 ? _b : true;
30
+ const defaultPreviewPath = (_c = (_b = input.files[0]) === null || _b === void 0 ? void 0 : _b.path) !== null && _c !== void 0 ? _c : 'index.html';
31
+ const previewPathInput = (_d = input.previewPath) !== null && _d !== void 0 ? _d : defaultPreviewPath;
32
+ const stored = await (0, session_pages_1.writeSessionArtifacts)({
33
+ sessionId,
34
+ files: input.files,
35
+ });
36
+ const publishedAt = new Date().toISOString();
37
+ const previewPath = (0, session_pages_1.normalizeArtifactPath)(previewPathInput);
38
+ const previewUrl = `${(0, context_1.getBuilderApiContext)().config.apiPrefix}/sessions/${sessionId}/${previewPath}`;
39
+ const socketPayload = {
40
+ sessionId,
41
+ files: stored.artifacts,
42
+ previewUrl,
43
+ previewPath,
44
+ publishedAt,
45
+ };
46
+ const notifyUserIds = await (0, session_pages_1.resolveArtifactNotifyUserIds)(sessionId, context);
47
+ (0, artifact_events_1.emitArtifactUpdateToUsers)(notifyUserIds, socketPayload);
41
48
  return {
42
- type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
43
- userConfigurable: true,
44
- data: {
45
- title: 'publishSessionArtifacts',
46
- needsApproval,
47
- description: 'Write or update one or more files under sessions/{chatId}/. Only paths listed in `files` are written; other existing session files are left unchanged. Returns the full artifact list.',
48
- inputSchema: exports.publishArtifactsInputSchema,
49
- outputSchema: zod_1.z.object({
50
- sessionId: zod_1.z.string(),
51
- label: zod_1.z.string().optional(),
52
- previewUrl: zod_1.z.string(),
53
- artifacts: zod_1.z.array(zod_1.z.object({
54
- path: zod_1.z.string(),
55
- bytes: zod_1.z.number(),
56
- })),
57
- updatedArtifacts: zod_1.z.array(zod_1.z.object({
58
- path: zod_1.z.string(),
59
- bytes: zod_1.z.number(),
60
- })),
61
- publishedAt: zod_1.z.string(),
62
- }),
63
- execute: async (input, context, secondArg) => {
64
- var _a, _b, _c;
65
- if (validateIndexHtml) {
66
- const indexFile = input.files.find((f) => (0, session_pages_1.normalizeArtifactPath)(f.path) === 'index.html');
67
- if (indexFile) {
68
- const validation = basicHtmlValidation(indexFile.content);
69
- if (!validation.valid) {
70
- throw new Error(validation.errors.join('; ') || 'index.html validation failed');
71
- }
72
- }
73
- }
74
- const sessionId = await (0, session_pages_1.resolveChatId)(context, secondArg);
75
- const defaultPreviewPath = (_b = (_a = input.files[0]) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : 'index.html';
76
- const previewPathInput = (_c = input.previewPath) !== null && _c !== void 0 ? _c : defaultPreviewPath;
77
- const stored = await (0, session_pages_1.writeSessionArtifacts)({
78
- sessionId,
79
- files: input.files,
80
- previewPath: previewPathInput,
81
- includeBaseStyles: input.includeBaseStyles,
82
- });
83
- const publishedAt = new Date().toISOString();
84
- const previewPath = (0, session_pages_1.normalizeArtifactPath)(previewPathInput);
85
- const socketPayload = {
86
- sessionId,
87
- files: stored.artifacts,
88
- previewUrl: stored.previewUrl,
89
- previewPath,
90
- publishedAt,
91
- };
92
- const notifyUserIds = await (0, session_pages_1.resolveArtifactNotifyUserIds)(sessionId, context);
93
- (0, artifact_events_1.emitArtifactUpdateToUsers)(notifyUserIds, socketPayload);
94
- return {
95
- sessionId,
96
- label: input.label,
97
- previewUrl: stored.previewUrl,
98
- artifacts: stored.artifacts,
99
- updatedArtifacts: stored.updatedArtifacts,
100
- publishedAt,
101
- };
102
- },
103
- },
49
+ label: input.label,
50
+ previewUrl,
51
+ artifacts: stored.artifacts,
52
+ publishedAt,
104
53
  };
105
54
  }
55
+ const publishSessionArtifactsOutputSchema = zod_1.z.object({
56
+ label: zod_1.z.string().optional(),
57
+ previewUrl: zod_1.z.string(),
58
+ artifacts: zod_1.z.array(zod_1.z.object({
59
+ path: zod_1.z.string(),
60
+ bytes: zod_1.z.number(),
61
+ })),
62
+ publishedAt: zod_1.z.string(),
63
+ });
64
+ /** Create-only publish tool used by session-artefact-creator subagent. */
65
+ const publishSessionArtifactsTool = {
66
+ type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
67
+ userConfigurable: true,
68
+ data: {
69
+ needsApproval: false,
70
+ title: 'publishSessionArtifacts',
71
+ description: 'Create new files under the active session. Other session files are left unchanged',
72
+ inputSchema: exports.publishArtifactsInputSchema,
73
+ outputSchema: publishSessionArtifactsOutputSchema,
74
+ execute: async (input, context) => await executePublishSessionArtifacts(input, context),
75
+ },
76
+ };
77
+ exports.publishSessionArtifactsSubagentTool = {
78
+ type: ai_agent_types_1.AgentToolType.SUBAGENT,
79
+ userConfigurable: true,
80
+ data: {
81
+ title: 'publishSessionArtifacts',
82
+ description: 'Delegate creation of new session artifacts under the active session from context. Refuses paths that already exist. Notifies connected clients on publish.',
83
+ inputSchema: zod_1.z.object({
84
+ task: zod_1.z
85
+ .string()
86
+ .describe('Overall goal that connects all requested artifacts.'),
87
+ artifacts: zod_1.z.array(zod_1.z.object({
88
+ name: zod_1.z
89
+ .string()
90
+ .describe('Human-readable artifact name.'),
91
+ description: zod_1.z
92
+ .string()
93
+ .describe('What this artifact should contain or accomplish.'),
94
+ requirements: zod_1.z
95
+ .array(zod_1.z.string())
96
+ .optional()
97
+ .describe('Requirements specific to this artifact.'),
98
+ })),
99
+ parentContext: zod_1.z
100
+ .string()
101
+ .optional()
102
+ .describe('Additional context from the parent workflow. May include list of existing artifacts.'),
103
+ }),
104
+ subAgent: {
105
+ name: 'session-artefact-creator',
106
+ description: 'Creates new session artifact files only (HTML, CSS, JS, Markdown, data). Never overwrites an existing path; publish fails if any target path is already on disk.',
107
+ systemPrompt: `You create new files under the active session resolved from tool context (chatId). The parent passes files (path + content), and optional label, previewPath.
108
+
109
+ Workflow:
110
+ 1. Session-relative paths only (no leading slash), e.g. index.html, about.html, docs/readme.md, data/metrics.json. styles.css / script.js only if the parent included them (split-asset layout).
111
+ 2. Every path in files MUST be new. If a path already exists, report the conflict — do not overwrite.
112
+ 3. always include Pico CSS in the published .html files https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css
113
+ 4. publishSessionArtifacts once with the new files only.
114
+ 5. previewPath: main entry .html (usually index.html) or primary .md for doc-only.
115
+ 6. Reply briefly: paths created, previewUrl
116
+ `,
117
+ stopWhen: () => false,
118
+ tools: [publishSessionArtifactsTool],
119
+ },
120
+ },
121
+ };
106
122
  //# sourceMappingURL=publish-session-artifacts.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish-session-artifacts.tool.js","sourceRoot":"","sources":["../../../src/agents/shared/publish-session-artifacts.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish-session-artifacts.tool.js","sourceRoot":"","sources":["../../../src/agents/shared/publish-session-artifacts.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { AgentTool } from '@multiplayer-app/ai-agent-types';
2
+ import { z } from 'zod';
3
+ export declare const applySessionArtifactDiffInputSchema: z.ZodObject<{
4
+ path: z.ZodString;
5
+ diff: z.ZodString;
6
+ }, z.core.$strip>;
7
+ export declare const getSessionArtifactLatestContentInputSchema: z.ZodObject<{
8
+ path: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const updateSessionArtifactInputSchema: z.ZodObject<{
11
+ parentContext: z.ZodString;
12
+ task: z.ZodString;
13
+ }, z.core.$strip>;
14
+ export declare const getSessionArtifactLatestContentTool: AgentTool;
15
+ export declare const applySessionArtifactDiffTool: AgentTool;
16
+ export declare const updateSessionArtifactsSubagentTool: AgentTool;
17
+ export declare function getUpdateSessionArtifactsSubagent(): AgentTool;
18
+ //# sourceMappingURL=update-session-artifacts.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-session-artifacts.tool.d.ts","sourceRoot":"","sources":["../../../src/agents/shared/update-session-artifacts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEnF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAevB,eAAO,MAAM,mCAAmC;;;iBAW9C,CAAA;AAEF,eAAO,MAAM,0CAA0C;;iBAErD,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;iBAG3C,CAAA;AAWF,eAAO,MAAM,mCAAmC,EAAE,SA8BjD,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,SAuC1C,CAAA;AAED,eAAO,MAAM,kCAAkC,EAAE,SA8ChD,CAAA;AAED,wBAAgB,iCAAiC,IAAI,SAAS,CAE7D"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateSessionArtifactsSubagentTool = exports.applySessionArtifactDiffTool = exports.getSessionArtifactLatestContentTool = exports.updateSessionArtifactInputSchema = exports.getSessionArtifactLatestContentInputSchema = exports.applySessionArtifactDiffInputSchema = void 0;
4
+ exports.getUpdateSessionArtifactsSubagent = getUpdateSessionArtifactsSubagent;
5
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
6
+ const zod_1 = require("zod");
7
+ const context_1 = require("../../context");
8
+ const artifact_events_1 = require("../../lib/socket/artifact-events");
9
+ const hashline_diff_guide_1 = require("../../lib/session-artifacts/hashline-diff-guide");
10
+ const session_pages_1 = require("../../lib/session-pages");
11
+ const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
12
+ const validate_artifact_content_tools_1 = require("./validate-artifact-content.tools");
13
+ exports.applySessionArtifactDiffInputSchema = zod_1.z.object({
14
+ path: zod_1.z
15
+ .string()
16
+ .min(1)
17
+ .describe('Relative path of an existing session artifact, e.g. index.html or README.md'),
18
+ diff: zod_1.z
19
+ .string()
20
+ .min(1)
21
+ .describe('Hashline SEARCH/REPLACE blocks using tag ranges from latest content (<<<SEARCH ... >>>REPLACE ... <<<END).'),
22
+ });
23
+ exports.getSessionArtifactLatestContentInputSchema = zod_1.z.object({
24
+ path: zod_1.z.string().min(1).describe('Relative path of an existing session artifact'),
25
+ });
26
+ exports.updateSessionArtifactInputSchema = zod_1.z.object({
27
+ parentContext: zod_1.z.string().min(1).describe('Additional context provided by the parent agent to help complete the task. May include project requirements, user requests, design decisions, architecture details, existing artifact summaries, related files, constraints, assumptions, acceptance criteria, prior conversation excerpts, or any other information relevant to implementing the requested changes.'),
28
+ task: zod_1.z.string().min(1).describe('The specific work to be performed by the subagent. Describes the requested changes, desired outcome, scope of work, and any implementation requirements. This is the primary instruction that the subagent should execute using the provided context.'),
29
+ });
30
+ async function assertExistingArtifactPath(sessionId, artifactPath) {
31
+ const normalizedPath = (0, session_pages_1.normalizeArtifactPath)(artifactPath);
32
+ const [artifact] = await (0, session_pages_1.readSessionArtifacts)(sessionId, [normalizedPath]);
33
+ if (!(artifact === null || artifact === void 0 ? void 0 : artifact.found)) {
34
+ throw new Error(`Session artifact not found: ${normalizedPath}`);
35
+ }
36
+ return normalizedPath;
37
+ }
38
+ exports.getSessionArtifactLatestContentTool = {
39
+ type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
40
+ userConfigurable: true,
41
+ data: {
42
+ needsApproval: false,
43
+ title: 'getSessionArtifactLatestContent',
44
+ description: 'Read the latest content of session artifact.',
45
+ inputSchema: exports.getSessionArtifactLatestContentInputSchema,
46
+ outputSchema: zod_1.z.object({
47
+ path: zod_1.z.string(),
48
+ content: zod_1.z.string(),
49
+ }),
50
+ execute: async (input, context) => {
51
+ var _a;
52
+ const sessionId = (_a = context === null || context === void 0 ? void 0 : context.data) === null || _a === void 0 ? void 0 : _a.chatId;
53
+ if (!sessionId) {
54
+ throw new Error('Session ID is required');
55
+ }
56
+ const path = await assertExistingArtifactPath(sessionId, input.path);
57
+ const content = await (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().getLatestText(sessionId, path);
58
+ return {
59
+ path,
60
+ content,
61
+ };
62
+ },
63
+ },
64
+ };
65
+ exports.applySessionArtifactDiffTool = {
66
+ type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
67
+ userConfigurable: true,
68
+ data: {
69
+ needsApproval: false,
70
+ title: 'applySessionArtifactDiff',
71
+ description: 'Update existing session artifact with a hashline SEARCH/REPLACE diff.',
72
+ inputSchema: exports.applySessionArtifactDiffInputSchema,
73
+ outputSchema: zod_1.z.object({
74
+ path: zod_1.z.string(),
75
+ }),
76
+ execute: async (input, context) => {
77
+ var _a;
78
+ const sessionId = (_a = context === null || context === void 0 ? void 0 : context.data) === null || _a === void 0 ? void 0 : _a.chatId;
79
+ if (!sessionId) {
80
+ throw new Error('Session ID is required');
81
+ }
82
+ const path = await assertExistingArtifactPath(sessionId, input.path);
83
+ const result = await (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().applyPatchText(sessionId, path, input.diff);
84
+ const publishedAt = new Date().toISOString();
85
+ const previewUrl = `${(0, context_1.getBuilderApiContext)().config.apiPrefix}/sessions/${sessionId}/${result.path}`;
86
+ const socketPayload = {
87
+ sessionId,
88
+ files: [{ path: result.path }],
89
+ previewUrl,
90
+ publishedAt,
91
+ };
92
+ const notifyUserIds = await (0, session_pages_1.resolveArtifactNotifyUserIds)(sessionId, context);
93
+ (0, artifact_events_1.emitArtifactUpdateToUsers)(notifyUserIds, socketPayload);
94
+ return { path: result.path };
95
+ },
96
+ },
97
+ };
98
+ exports.updateSessionArtifactsSubagentTool = {
99
+ type: ai_agent_types_1.AgentToolType.SUBAGENT,
100
+ userConfigurable: true,
101
+ data: {
102
+ title: 'updateSessionArtifact',
103
+ description: 'Delegate read, Q&A, or edits for an existing session artifact.',
104
+ inputSchema: exports.updateSessionArtifactInputSchema,
105
+ subAgent: {
106
+ name: 'artifact-editor',
107
+ description: 'Reads existing session artifacts, answers questions (summaries, excerpts, explanations), and applies hashline edits when asked to change a file. Never returns a full file body.',
108
+ systemPrompt: `You work with a single existing file under the active session. The parent passes parentContext and task (include the artifact path in task).
109
+
110
+ Decide mode from the task:
111
+ - **Read / Q&A** — explain, summarize, locate, or quote what is in the file. No applySessionArtifactDiff.
112
+ - **Edit** — change the file via hashline SEARCH/REPLACE. Use applySessionArtifactDiff when done.
113
+
114
+ Always start by calling getSessionArtifactLatestContent with the path from the task.
115
+
116
+ **Read / Q&A workflow**
117
+ 1. Use lines[].tag only internally if you later edit; for answers, cite short excerpts (a few lines or a function/block), bullet summaries, or direct answers.
118
+ 2. Do not return the full file, a near-complete copy, or a line-by-line dump. Truncate long sections with "…" and name paths/line tags only when helpful for a follow-up edit.
119
+ 3. Reply to the parent with the answer, summary, or relevant code chunks only.
120
+
121
+ **Edit workflow**
122
+ 1. Use returned lines[].tag values for diff ranges.
123
+ 2. Produce hashline SEARCH/REPLACE blocks that implement the instruction.
124
+ 3. For .html edits: keep Pico-friendly structure (semantic tags, container main); preserve any existing Pico CDN <link> unless the task removes styling. Prefer editing <script>/<style> or body content over replacing the whole document.
125
+ 4. Validate before applying:
126
+ - For .html paths, call validateHtml with the expected updated content.
127
+ - For .md paths, call validateMarkdown with the expected updated content and path.
128
+ 5. Call applySessionArtifactDiff with path and diff.
129
+ 6. Reply to the parent with ONLY the updated path from applySessionArtifactDiff (no file body).
130
+
131
+ ${hashline_diff_guide_1.HASHLINE_DIFF_GUIDE}
132
+ `,
133
+ stopWhen: () => false,
134
+ tools: [
135
+ exports.getSessionArtifactLatestContentTool,
136
+ validate_artifact_content_tools_1.validateHtmlTool,
137
+ validate_artifact_content_tools_1.validateMarkdownTool,
138
+ exports.applySessionArtifactDiffTool,
139
+ ],
140
+ },
141
+ },
142
+ };
143
+ function getUpdateSessionArtifactsSubagent() {
144
+ return exports.updateSessionArtifactsSubagentTool;
145
+ }
146
+ //# sourceMappingURL=update-session-artifacts.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-session-artifacts.tool.js","sourceRoot":"","sources":["../../../src/agents/shared/update-session-artifacts.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AgentTool } from '@multiplayer-app/ai-agent-types';
2
+ import { z } from 'zod';
3
+ export declare const validateHtmlInputSchema: z.ZodObject<{
4
+ html: z.ZodString;
5
+ }, z.core.$strip>;
6
+ export declare const validateMarkdownInputSchema: z.ZodObject<{
7
+ markdown: z.ZodString;
8
+ path: z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>;
10
+ export declare const validateHtmlTool: AgentTool;
11
+ export declare const validateMarkdownTool: AgentTool;
12
+ //# sourceMappingURL=validate-artifact-content.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-artifact-content.tools.d.ts","sourceRoot":"","sources":["../../../src/agents/shared/validate-artifact-content.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,uBAAuB;;iBAElC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;iBAMtC,CAAA;AAwGF,eAAO,MAAM,gBAAgB,EAAE,SAe9B,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,SAgBlC,CAAA"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMarkdownTool = exports.validateHtmlTool = exports.validateMarkdownInputSchema = exports.validateHtmlInputSchema = void 0;
4
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
5
+ const zod_1 = require("zod");
6
+ exports.validateHtmlInputSchema = zod_1.z.object({
7
+ html: zod_1.z.string().min(1).describe('HTML to validate'),
8
+ });
9
+ exports.validateMarkdownInputSchema = zod_1.z.object({
10
+ markdown: zod_1.z.string().min(1).describe('Markdown source to validate'),
11
+ path: zod_1.z
12
+ .string()
13
+ .optional()
14
+ .describe('Intended file path (e.g. README.md) for path-specific hints'),
15
+ });
16
+ function basicHtmlValidation(html) {
17
+ const errors = [];
18
+ const warnings = [];
19
+ if (!html.trim()) {
20
+ errors.push('HTML is empty');
21
+ }
22
+ const openTags = [...html.matchAll(/<([a-z][a-z0-9]*)\b[^>]*(?<!\/)>/gi)];
23
+ const closeTags = [...html.matchAll(/<\/([a-z][a-z0-9]*)\s*>/gi)];
24
+ const stack = [];
25
+ for (const match of openTags) {
26
+ const tag = match[1].toLowerCase();
27
+ if (![
28
+ 'area',
29
+ 'base',
30
+ 'br',
31
+ 'col',
32
+ 'embed',
33
+ 'hr',
34
+ 'img',
35
+ 'input',
36
+ 'link',
37
+ 'meta',
38
+ 'param',
39
+ 'source',
40
+ 'track',
41
+ 'wbr',
42
+ ].includes(tag)) {
43
+ stack.push(tag);
44
+ }
45
+ }
46
+ for (const match of closeTags) {
47
+ const tag = match[1].toLowerCase();
48
+ const last = stack.pop();
49
+ if (last !== tag) {
50
+ warnings.push(`Possible mismatched closing tag </${tag}>`);
51
+ }
52
+ }
53
+ if (stack.length > 0) {
54
+ warnings.push(`Unclosed elements: ${stack.join(', ')}`);
55
+ }
56
+ return { valid: errors.length === 0, warnings, errors };
57
+ }
58
+ function basicMarkdownValidation(markdown, path) {
59
+ const errors = [];
60
+ const warnings = [];
61
+ if (!markdown.trim()) {
62
+ errors.push('Markdown is empty');
63
+ return { valid: false, warnings, errors };
64
+ }
65
+ const fenceMatches = markdown.match(/```/g);
66
+ if (fenceMatches && fenceMatches.length % 2 !== 0) {
67
+ errors.push('Unclosed fenced code block (odd number of ``` markers)');
68
+ }
69
+ const lines = markdown.split('\n');
70
+ let inFence = false;
71
+ for (let i = 0; i < lines.length; i++) {
72
+ const line = lines[i];
73
+ if (line.trim().startsWith('```')) {
74
+ inFence = !inFence;
75
+ continue;
76
+ }
77
+ if (inFence)
78
+ continue;
79
+ const heading = line.match(/^(#{1,6})\s+(.+)$/);
80
+ if (heading && !heading[2].trim()) {
81
+ warnings.push(`Line ${i + 1}: empty heading`);
82
+ }
83
+ if (/^#{7,}/.test(line)) {
84
+ warnings.push(`Line ${i + 1}: heading level > 6 is not standard Markdown`);
85
+ }
86
+ }
87
+ if (!inFence && (path === null || path === void 0 ? void 0 : path.toLowerCase().endsWith('.md'))) {
88
+ const hasHeading = /^#\s+\S/m.test(markdown);
89
+ if (!hasHeading && markdown.length > 400) {
90
+ warnings.push('Long document without a top-level # heading - consider adding one');
91
+ }
92
+ }
93
+ const tabLines = lines.filter((l) => l.startsWith('\t') && !l.startsWith('\t\t'));
94
+ if (tabLines.length > 0) {
95
+ warnings.push('Lines use tab indentation; prefer spaces for GFM compatibility');
96
+ }
97
+ return { valid: errors.length === 0, warnings, errors };
98
+ }
99
+ exports.validateHtmlTool = {
100
+ type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
101
+ userConfigurable: true,
102
+ data: {
103
+ title: 'validateHtml',
104
+ needsApproval: false,
105
+ description: 'Run basic structural checks on HTML before publishing or updating',
106
+ inputSchema: exports.validateHtmlInputSchema,
107
+ outputSchema: zod_1.z.object({
108
+ valid: zod_1.z.boolean(),
109
+ warnings: zod_1.z.array(zod_1.z.string()),
110
+ errors: zod_1.z.array(zod_1.z.string()),
111
+ }),
112
+ execute: (input) => basicHtmlValidation(input.html),
113
+ },
114
+ };
115
+ exports.validateMarkdownTool = {
116
+ type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
117
+ userConfigurable: true,
118
+ data: {
119
+ title: 'validateMarkdown',
120
+ needsApproval: false,
121
+ description: 'Run basic structural checks on Markdown before publishing or updating',
122
+ inputSchema: exports.validateMarkdownInputSchema,
123
+ outputSchema: zod_1.z.object({
124
+ valid: zod_1.z.boolean(),
125
+ warnings: zod_1.z.array(zod_1.z.string()),
126
+ errors: zod_1.z.array(zod_1.z.string()),
127
+ }),
128
+ execute: (input) => basicMarkdownValidation(input.markdown, input.path),
129
+ },
130
+ };
131
+ //# sourceMappingURL=validate-artifact-content.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-artifact-content.tools.js","sourceRoot":"","sources":["../../../src/agents/shared/validate-artifact-content.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAI/D,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAGrF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAE/F"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAErF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAE/F"}
package/dist/agents.js CHANGED
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setupAgents = setupAgents;
4
4
  exports.createSetupAgents = createSetupAgents;
5
- const html_generator_agent_1 = require("./agents/html-generator.agent");
6
- const markdown_generator_agent_1 = require("./agents/markdown-generator.agent");
5
+ const content_generator_agent_1 = require("./agents/content-generator.agent");
7
6
  function setupAgents(configStore, deps) {
8
- configStore.addAgent(['main', 'html-generator'], (0, html_generator_agent_1.createHtmlGeneratorAgent)(deps));
9
- configStore.addAgent(['main', 'markdown-generator'], (0, markdown_generator_agent_1.createMarkdownGeneratorAgent)(deps));
7
+ configStore.addAgent(['main', 'content-generator'], (0, content_generator_agent_1.createContentGeneratorAgent)(deps));
10
8
  }
11
9
  function createSetupAgents(deps) {
12
10
  return (configStore) => setupAgents(configStore, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":";;AAKA,kCAGC;AAED,8CAEC;AAVD,wEAAwE;AACxE,gFAAgF;AAEhF,SAAgB,WAAW,CAAC,WAAwB,EAAE,IAAyB;IAC7E,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,IAAA,+CAAwB,EAAC,IAAI,CAAC,CAAC,CAAA;IAChF,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,IAAA,uDAA4B,EAAC,IAAI,CAAC,CAAC,CAAA;AAC1F,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAyB;IACzD,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":";;AAIA,kCAEC;AAED,8CAEC;AARD,8EAA8E;AAE9E,SAAgB,WAAW,CAAC,WAAwB,EAAE,IAAyB;IAC7E,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,IAAA,qDAA2B,EAAC,IAAI,CAAC,CAAC,CAAA;AACxF,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAyB;IACzD,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent.service.d.ts","sourceRoot":"","sources":["../src/ai-agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAG3F,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAE1C,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO;IAEA,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAYvD,IAAW,OAAO,IAAI,cAAc,CAKnC;WAEa,WAAW,IAAI,iBAAiB;CAM/C"}
1
+ {"version":3,"file":"ai-agent.service.d.ts","sourceRoot":"","sources":["../src/ai-agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAE3F,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAE1C,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO;IAEA,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAOvD,IAAW,OAAO,IAAI,cAAc,CAKnC;WAEa,WAAW,IAAI,iBAAiB;CAM/C"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AgentServiceStore = void 0;
4
4
  const ai_agent_node_1 = require("@multiplayer-app/ai-agent-node");
5
- const resolve_chat_id_1 = require("./lib/session-pages/resolve-chat-id");
6
5
  class AgentServiceStore {
7
6
  constructor() { }
8
7
  initialize(options) {
@@ -10,7 +9,6 @@ class AgentServiceStore {
10
9
  throw new Error('Agent service already initialized');
11
10
  }
12
11
  this.aiAgentService = new ai_agent_node_1.AIAgentService(options);
13
- (0, resolve_chat_id_1.patchChatProcessorWithSessionContext)(this.aiAgentService.getChatProcessor());
14
12
  }
15
13
  get service() {
16
14
  if (!this.aiAgentService) {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent.service.js","sourceRoot":"","sources":["../src/ai-agent.service.ts"],"names":[],"mappings":";;;AAAA,kEAA2F;AAC3F,yEAA0F;AAE1F,MAAa,iBAAiB;IAK5B,gBAAuB,CAAC;IAEjB,UAAU,CAAC,OAA8B;QAC9C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,8BAAc,CAAC,OAAO,CAAC,CAAA;QACjD,IAAA,sDAAoC,EAClC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAEhC,CACL,CAAA;IACH,CAAC;IAED,IAAW,OAAO;QAChB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAA;IACnC,CAAC;CACF;AAhCD,8CAgCC"}
1
+ {"version":3,"file":"ai-agent.service.js","sourceRoot":"","sources":["../src/ai-agent.service.ts"],"names":[],"mappings":";;;AAAA,kEAA2F;AAE3F,MAAa,iBAAiB;IAK5B,gBAAuB,CAAC;IAEjB,UAAU,CAAC,OAA8B;QAC9C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,8BAAc,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,IAAW,OAAO;QAChB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAA;IACnC,CAAC;CACF;AA3BD,8CA2BC"}
@@ -4,6 +4,10 @@ import type { ConfigStore } from '@multiplayer-app/ai-agent-node';
4
4
  import { type BuilderApiConfig } from './builder-api-config';
5
5
  import { type BuilderApiRepositories } from './context';
6
6
  import { type BuilderApiLogger } from './logger';
7
+ /**
8
+ * Embedders must attach HTTP middleware that sets `req.userId` and `req.accountId`,
9
+ * plus `req.hasAccountAccess` before routes that invite chat participants.
10
+ */
7
11
  export interface CreateBuilderApiOptions {
8
12
  httpServer: HttpServer;
9
13
  config: BuilderApiConfig;