@jami-studio/core 0.92.29 → 0.92.30
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.
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/route-warmup.tsx +565 -543
- package/corpus/core/src/collab/param.ts +24 -0
- package/corpus/core/src/collab/routes.ts +187 -191
- package/corpus/core/src/collab/struct-routes.ts +134 -133
- package/dist/client/route-warmup.d.ts +10 -0
- package/dist/client/route-warmup.d.ts.map +1 -1
- package/dist/client/route-warmup.js +18 -1
- package/dist/client/route-warmup.js.map +1 -1
- package/dist/collab/param.d.ts +3 -0
- package/dist/collab/param.d.ts.map +1 -0
- package/dist/collab/param.js +26 -0
- package/dist/collab/param.js.map +1 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/routes.d.ts.map +1 -1
- package/dist/collab/routes.js +6 -5
- package/dist/collab/routes.js.map +1 -1
- package/dist/collab/struct-routes.d.ts.map +1 -1
- package/dist/collab/struct-routes.js +5 -4
- package/dist/collab/struct-routes.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/collab/routes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * HTTP route handlers for collaborative editing.\r\n *\r\n * Mounted under /_agent-native/collab/ by the collab plugin.\r\n */\r\n\r\nimport {\r\n defineEventHandler,\r\n setResponseStatus,\r\n getRouterParam,\r\n getQuery,\r\n} from \"h3\";\r\nimport type { H3Event } from \"h3\";\r\n\r\nimport { readBody } from \"../server/h3-helpers.js\";\r\nimport { uint8ArrayToBase64, base64ToUint8Array } from \"./storage.js\";\r\nimport * as manager from \"./ydoc-manager.js\";\r\nimport { searchAndReplace as doSearchAndReplace } from \"./ydoc-manager.js\";\r\n\r\n/** Default maximum payload size (2 MB). Overridden by plugin via event.context. */\r\nconst DEFAULT_MAX_BYTES = 2 * 1024 * 1024;\r\n\r\nfunction getMaxPayloadBytes(event: H3Event): number {\r\n return (event.context as any)?._collabMaxPayloadBytes ?? DEFAULT_MAX_BYTES;\r\n}\r\n\r\n/**\r\n * Check the serialized body length against the configured limit.\r\n * Returns true if within limits; sets 413 status and returns false otherwise.\r\n */\r\nfunction enforcePayloadLimit(event: H3Event, body: unknown): boolean {\r\n const maxBytes = getMaxPayloadBytes(event);\r\n const encoded = typeof body === \"string\" ? body : JSON.stringify(body ?? \"\");\r\n if (encoded.length > maxBytes) {\r\n setResponseStatus(event, 413);\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * GET /_agent-native/collab/:docId/state\r\n *\r\n * Returns full Yjs document state as base64 for initial client load.\r\n */\r\nexport const getCollabState = defineEventHandler(async (event: H3Event) => {\r\n const docId = getRouterParam(event, \"docId\");\r\n if (!docId) {\r\n setResponseStatus(event, 400);\r\n return { error: \"docId required\" };\r\n }\r\n\r\n const query = getQuery(event);\r\n const encodedStateVector =\r\n typeof query.stateVector === \"string\" ? query.stateVector : null;\r\n let state: Uint8Array;\r\n if (encodedStateVector) {\r\n try {\r\n state = await manager.getIncUpdate(\r\n docId,\r\n base64ToUint8Array(encodedStateVector),\r\n );\r\n } catch {\r\n setResponseStatus(event, 400);\r\n return { error: \"stateVector must be base64-encoded\" };\r\n }\r\n } else {\r\n state = await manager.getState(docId);\r\n }\r\n return {\r\n docId,\r\n state: uint8ArrayToBase64(state),\r\n };\r\n});\r\n\r\n/**\r\n * POST /_agent-native/collab/:docId/update\r\n *\r\n * Client sends a Yjs update (base64). Server applies it, persists, and\r\n * emits a change event so other clients pick it up via polling.\r\n *\r\n * Body: { update: string (base64), requestSource?: string }\r\n */\r\nexport const postCollabUpdate = defineEventHandler(async (event: H3Event) => {\r\n const docId = getRouterParam(event, \"docId\");\r\n if (!docId) {\r\n setResponseStatus(event, 400);\r\n return { error: \"docId required\" };\r\n }\r\n\r\n const rawBody = await readBody(event);\r\n if (!enforcePayloadLimit(event, rawBody)) {\r\n return { error: \"Payload too large\" };\r\n }\r\n const { update, requestSource } = rawBody as {\r\n update?: string;\r\n requestSource?: string;\r\n };\r\n\r\n if (!update) {\r\n setResponseStatus(event, 400);\r\n return { error: \"update (base64) required\" };\r\n }\r\n\r\n const binary = base64ToUint8Array(update);\r\n await manager.applyUpdate(docId, binary, requestSource);\r\n\r\n return { ok: true };\r\n});\r\n\r\n/**\r\n * POST /_agent-native/collab/:docId/text\r\n *\r\n * Agent sends full text content. Server computes diff against current\r\n * Yjs state and applies minimal operations.\r\n *\r\n * Body: { text: string, fieldName?: string, requestSource?: string }\r\n */\r\nexport const postCollabText = defineEventHandler(async (event: H3Event) => {\r\n const docId = getRouterParam(event, \"docId\");\r\n if (!docId) {\r\n setResponseStatus(event, 400);\r\n return { error: \"docId required\" };\r\n }\r\n\r\n const rawBody = await readBody(event);\r\n if (!enforcePayloadLimit(event, rawBody)) {\r\n return { error: \"Payload too large\" };\r\n }\r\n const { text, fieldName, requestSource } = rawBody as {\r\n text?: string;\r\n fieldName?: string;\r\n requestSource?: string;\r\n };\r\n\r\n if (text === undefined) {\r\n setResponseStatus(event, 400);\r\n return { error: \"text required\" };\r\n }\r\n\r\n const result = await manager.applyText(\r\n docId,\r\n text,\r\n fieldName ?? \"content\",\r\n requestSource ?? \"agent\",\r\n );\r\n\r\n return { ok: true, text: result };\r\n});\r\n\r\n/**\r\n * POST /_agent-native/collab/:docId/search-replace\r\n *\r\n * Search-and-replace text in the Y.XmlFragment (ProseMirror tree).\r\n * Produces minimal Yjs operations for cursor-preserving updates.\r\n *\r\n * Body: { find: string, replace: string, requestSource?: string }\r\n */\r\nexport const postCollabSearchReplace = defineEventHandler(\r\n async (event: H3Event) => {\r\n const docId = getRouterParam(event, \"docId\");\r\n if (!docId) {\r\n setResponseStatus(event, 400);\r\n return { error: \"docId required\" };\r\n }\r\n\r\n const rawBody = await readBody(event);\r\n if (!enforcePayloadLimit(event, rawBody)) {\r\n return { error: \"Payload too large\" };\r\n }\r\n const { find, replace, requestSource } = rawBody as {\r\n find?: string;\r\n replace?: string;\r\n requestSource?: string;\r\n };\r\n\r\n if (!find) {\r\n setResponseStatus(event, 400);\r\n return { error: \"find required\" };\r\n }\r\n\r\n const result = await doSearchAndReplace(\r\n docId,\r\n find,\r\n replace ?? \"\",\r\n requestSource ?? \"agent\",\r\n );\r\n\r\n return { ok: true, found: result.found };\r\n },\r\n);\r\n"]}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/collab/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAGrE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAQ,KAAK,CAAC,OAAe,EAAE,sBAAsB,IAAI,iBAAiB,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAc,EAAE,IAAa;IACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,kBAAkB,GACtB,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,KAAiB,CAAC;IACtB,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAChC,KAAK,EACL,kBAAkB,CAAC,kBAAkB,CAAC,CACvC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO;QACL,KAAK;QACL,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAGjC,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAExD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAI1C,CAAC;IAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CACpC,KAAK,EACL,IAAI,EACJ,SAAS,IAAI,SAAS,EACtB,aAAa,IAAI,OAAO,CACzB,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CACvD,KAAK,EAAE,KAAc,EAAE,EAAE;IACvB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAIxC,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,KAAK,EACL,IAAI,EACJ,OAAO,IAAI,EAAE,EACb,aAAa,IAAI,OAAO,CACzB,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC,CACF,CAAC","sourcesContent":["/**\n * HTTP route handlers for collaborative editing.\n *\n * Mounted under /_agent-native/collab/ by the collab plugin.\n */\n\nimport { defineEventHandler, setResponseStatus, getQuery } from \"h3\";\nimport type { H3Event } from \"h3\";\n\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { getCollabDocIdParam } from \"./param.js\";\nimport { uint8ArrayToBase64, base64ToUint8Array } from \"./storage.js\";\nimport * as manager from \"./ydoc-manager.js\";\nimport { searchAndReplace as doSearchAndReplace } from \"./ydoc-manager.js\";\n\n/** Default maximum payload size (2 MB). Overridden by plugin via event.context. */\nconst DEFAULT_MAX_BYTES = 2 * 1024 * 1024;\n\nfunction getMaxPayloadBytes(event: H3Event): number {\n return (event.context as any)?._collabMaxPayloadBytes ?? DEFAULT_MAX_BYTES;\n}\n\n/**\n * Check the serialized body length against the configured limit.\n * Returns true if within limits; sets 413 status and returns false otherwise.\n */\nfunction enforcePayloadLimit(event: H3Event, body: unknown): boolean {\n const maxBytes = getMaxPayloadBytes(event);\n const encoded = typeof body === \"string\" ? body : JSON.stringify(body ?? \"\");\n if (encoded.length > maxBytes) {\n setResponseStatus(event, 413);\n return false;\n }\n return true;\n}\n\n/**\n * GET /_agent-native/collab/:docId/state\n *\n * Returns full Yjs document state as base64 for initial client load.\n */\nexport const getCollabState = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const query = getQuery(event);\n const encodedStateVector =\n typeof query.stateVector === \"string\" ? query.stateVector : null;\n let state: Uint8Array;\n if (encodedStateVector) {\n try {\n state = await manager.getIncUpdate(\n docId,\n base64ToUint8Array(encodedStateVector),\n );\n } catch {\n setResponseStatus(event, 400);\n return { error: \"stateVector must be base64-encoded\" };\n }\n } else {\n state = await manager.getState(docId);\n }\n return {\n docId,\n state: uint8ArrayToBase64(state),\n };\n});\n\n/**\n * POST /_agent-native/collab/:docId/update\n *\n * Client sends a Yjs update (base64). Server applies it, persists, and\n * emits a change event so other clients pick it up via polling.\n *\n * Body: { update: string (base64), requestSource?: string }\n */\nexport const postCollabUpdate = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const rawBody = await readBody(event);\n if (!enforcePayloadLimit(event, rawBody)) {\n return { error: \"Payload too large\" };\n }\n const { update, requestSource } = rawBody as {\n update?: string;\n requestSource?: string;\n };\n\n if (!update) {\n setResponseStatus(event, 400);\n return { error: \"update (base64) required\" };\n }\n\n const binary = base64ToUint8Array(update);\n await manager.applyUpdate(docId, binary, requestSource);\n\n return { ok: true };\n});\n\n/**\n * POST /_agent-native/collab/:docId/text\n *\n * Agent sends full text content. Server computes diff against current\n * Yjs state and applies minimal operations.\n *\n * Body: { text: string, fieldName?: string, requestSource?: string }\n */\nexport const postCollabText = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const rawBody = await readBody(event);\n if (!enforcePayloadLimit(event, rawBody)) {\n return { error: \"Payload too large\" };\n }\n const { text, fieldName, requestSource } = rawBody as {\n text?: string;\n fieldName?: string;\n requestSource?: string;\n };\n\n if (text === undefined) {\n setResponseStatus(event, 400);\n return { error: \"text required\" };\n }\n\n const result = await manager.applyText(\n docId,\n text,\n fieldName ?? \"content\",\n requestSource ?? \"agent\",\n );\n\n return { ok: true, text: result };\n});\n\n/**\n * POST /_agent-native/collab/:docId/search-replace\n *\n * Search-and-replace text in the Y.XmlFragment (ProseMirror tree).\n * Produces minimal Yjs operations for cursor-preserving updates.\n *\n * Body: { find: string, replace: string, requestSource?: string }\n */\nexport const postCollabSearchReplace = defineEventHandler(\n async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const rawBody = await readBody(event);\n if (!enforcePayloadLimit(event, rawBody)) {\n return { error: \"Payload too large\" };\n }\n const { find, replace, requestSource } = rawBody as {\n find?: string;\n replace?: string;\n requestSource?: string;\n };\n\n if (!find) {\n setResponseStatus(event, 400);\n return { error: \"find required\" };\n }\n\n const result = await doSearchAndReplace(\n docId,\n find,\n replace ?? \"\",\n requestSource ?? \"agent\",\n );\n\n return { ok: true, found: result.found };\n },\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-routes.d.ts","sourceRoot":"","sources":["../../src/collab/struct-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"struct-routes.d.ts","sourceRoot":"","sources":["../../src/collab/struct-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;GAgCzB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;GA8B1B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;;;;;GAYxB,CAAC"}
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Mounted under /_agent-native/collab/ by the collab plugin alongside
|
|
5
5
|
* the text-based routes in routes.ts.
|
|
6
6
|
*/
|
|
7
|
-
import { defineEventHandler, setResponseStatus
|
|
7
|
+
import { defineEventHandler, setResponseStatus } from "h3";
|
|
8
8
|
import { getQuery } from "h3";
|
|
9
9
|
import { readBody } from "../server/h3-helpers.js";
|
|
10
|
+
import { getCollabDocIdParam } from "./param.js";
|
|
10
11
|
import * as manager from "./ydoc-manager.js";
|
|
11
12
|
/** Default maximum payload size (2 MB). Overridden by plugin via event.context. */
|
|
12
13
|
const DEFAULT_MAX_BYTES = 2 * 1024 * 1024;
|
|
@@ -31,7 +32,7 @@ function enforcePayloadLimit(event, body) {
|
|
|
31
32
|
* Body: { json: any, fieldName?: string, type?: "map"|"array", requestSource?: string }
|
|
32
33
|
*/
|
|
33
34
|
export const postCollabJson = defineEventHandler(async (event) => {
|
|
34
|
-
const docId =
|
|
35
|
+
const docId = getCollabDocIdParam(event);
|
|
35
36
|
if (!docId) {
|
|
36
37
|
setResponseStatus(event, 400);
|
|
37
38
|
return { error: "docId required" };
|
|
@@ -56,7 +57,7 @@ export const postCollabJson = defineEventHandler(async (event) => {
|
|
|
56
57
|
* Body: { ops: PatchOp[], fieldName?: string, requestSource?: string }
|
|
57
58
|
*/
|
|
58
59
|
export const postCollabPatch = defineEventHandler(async (event) => {
|
|
59
|
-
const docId =
|
|
60
|
+
const docId = getCollabDocIdParam(event);
|
|
60
61
|
if (!docId) {
|
|
61
62
|
setResponseStatus(event, 400);
|
|
62
63
|
return { error: "docId required" };
|
|
@@ -81,7 +82,7 @@ export const postCollabPatch = defineEventHandler(async (event) => {
|
|
|
81
82
|
* Query param: fieldName (default: "data")
|
|
82
83
|
*/
|
|
83
84
|
export const getCollabJson = defineEventHandler(async (event) => {
|
|
84
|
-
const docId =
|
|
85
|
+
const docId = getCollabDocIdParam(event);
|
|
85
86
|
if (!docId) {
|
|
86
87
|
setResponseStatus(event, 400);
|
|
87
88
|
return { error: "docId required" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-routes.js","sourceRoot":"","sources":["../../src/collab/struct-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"struct-routes.js","sourceRoot":"","sources":["../../src/collab/struct-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAE7C,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAQ,KAAK,CAAC,OAAe,EAAE,sBAAsB,IAAI,iBAAiB,CAAC;AAC7E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,IAAa;IACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAKhD,CAAC;IAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,CAAC,SAAS,CACrB,KAAK,EACL,IAAI,EACJ,SAAS,IAAI,MAAM,EACnB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/C,aAAa,IAAI,OAAO,CACzB,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAIzC,CAAC;IAEF,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,CAAC,aAAa,CACzB,KAAK,EACL,GAAG,EACH,SAAS,IAAI,MAAM,EACnB,aAAa,IAAI,OAAO,CACzB,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACvE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAI,KAAK,CAAC,SAAoB,IAAI,MAAM,CAAC;IAExD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC","sourcesContent":["/**\n * HTTP route handlers for structured (JSON) collaborative editing.\n *\n * Mounted under /_agent-native/collab/ by the collab plugin alongside\n * the text-based routes in routes.ts.\n */\n\nimport { defineEventHandler, setResponseStatus } from \"h3\";\nimport type { H3Event } from \"h3\";\nimport { getQuery } from \"h3\";\n\nimport { readBody } from \"../server/h3-helpers.js\";\nimport type { PatchOp } from \"./json-to-yjs.js\";\nimport { getCollabDocIdParam } from \"./param.js\";\nimport * as manager from \"./ydoc-manager.js\";\n\n/** Default maximum payload size (2 MB). Overridden by plugin via event.context. */\nconst DEFAULT_MAX_BYTES = 2 * 1024 * 1024;\n\nfunction getMaxPayloadBytes(event: H3Event): number {\n return (event.context as any)?._collabMaxPayloadBytes ?? DEFAULT_MAX_BYTES;\n}\n\nfunction enforcePayloadLimit(event: H3Event, body: unknown): boolean {\n const maxBytes = getMaxPayloadBytes(event);\n const encoded = typeof body === \"string\" ? body : JSON.stringify(body ?? \"\");\n if (encoded.length > maxBytes) {\n setResponseStatus(event, 413);\n return false;\n }\n return true;\n}\n\n/**\n * POST /_agent-native/collab/:docId/json\n *\n * Apply full JSON content to a collaborative document. The server diffs\n * against the current Yjs state and applies minimal operations.\n *\n * Body: { json: any, fieldName?: string, type?: \"map\"|\"array\", requestSource?: string }\n */\nexport const postCollabJson = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const rawBody = await readBody(event);\n if (!enforcePayloadLimit(event, rawBody)) {\n return { error: \"Payload too large\" };\n }\n const { json, fieldName, type, requestSource } = rawBody as {\n json?: any;\n fieldName?: string;\n type?: \"map\" | \"array\";\n requestSource?: string;\n };\n\n if (json === undefined) {\n setResponseStatus(event, 400);\n return { error: \"json required\" };\n }\n\n await manager.applyJson(\n docId,\n json,\n fieldName ?? \"data\",\n type ?? (Array.isArray(json) ? \"array\" : \"map\"),\n requestSource ?? \"agent\",\n );\n\n return { ok: true };\n});\n\n/**\n * POST /_agent-native/collab/:docId/patch\n *\n * Apply surgical JSON patch operations to a collaborative document.\n *\n * Body: { ops: PatchOp[], fieldName?: string, requestSource?: string }\n */\nexport const postCollabPatch = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const rawBody = await readBody(event);\n if (!enforcePayloadLimit(event, rawBody)) {\n return { error: \"Payload too large\" };\n }\n const { ops, fieldName, requestSource } = rawBody as {\n ops?: PatchOp[];\n fieldName?: string;\n requestSource?: string;\n };\n\n if (!ops || !Array.isArray(ops)) {\n setResponseStatus(event, 400);\n return { error: \"ops (array) required\" };\n }\n\n await manager.applyPatchOps(\n docId,\n ops,\n fieldName ?? \"data\",\n requestSource ?? \"agent\",\n );\n\n return { ok: true };\n});\n\n/**\n * GET /_agent-native/collab/:docId/json\n *\n * Returns the current JSON state of a collaborative document.\n *\n * Query param: fieldName (default: \"data\")\n */\nexport const getCollabJson = defineEventHandler(async (event: H3Event) => {\n const docId = getCollabDocIdParam(event);\n if (!docId) {\n setResponseStatus(event, 400);\n return { error: \"docId required\" };\n }\n\n const query = getQuery(event);\n const fieldName = (query.fieldName as string) ?? \"data\";\n\n const data = await manager.getJson(docId, fieldName);\n return { docId, data };\n});\n"]}
|
|
@@ -17,12 +17,12 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
17
17
|
id?: undefined;
|
|
18
18
|
provider?: undefined;
|
|
19
19
|
} | {
|
|
20
|
-
error?: undefined;
|
|
21
20
|
configured?: undefined;
|
|
22
21
|
connectPath?: undefined;
|
|
23
22
|
url: string;
|
|
24
23
|
id: string;
|
|
25
24
|
provider: string;
|
|
25
|
+
error?: undefined;
|
|
26
26
|
}>;
|
|
27
27
|
export default _default;
|
|
28
28
|
//# sourceMappingURL=upload-image.d.ts.map
|
|
@@ -41,28 +41,28 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
41
41
|
thumbsUpRate: number;
|
|
42
42
|
avgEvalScore: number;
|
|
43
43
|
} | {
|
|
44
|
-
error?: undefined;
|
|
45
|
-
ok?: undefined;
|
|
46
44
|
summary: import("./types.js").TraceSummary;
|
|
47
45
|
spans: import("./types.js").TraceSpan[];
|
|
48
46
|
id?: undefined;
|
|
49
|
-
} | {
|
|
50
47
|
error?: undefined;
|
|
51
48
|
ok?: undefined;
|
|
49
|
+
} | {
|
|
52
50
|
summary?: undefined;
|
|
53
51
|
spans?: undefined;
|
|
54
52
|
id: string;
|
|
55
|
-
|
|
53
|
+
error?: undefined;
|
|
56
54
|
ok?: undefined;
|
|
55
|
+
} | {
|
|
57
56
|
summary?: undefined;
|
|
58
57
|
spans?: undefined;
|
|
59
58
|
id?: undefined;
|
|
60
59
|
error: any;
|
|
60
|
+
ok?: undefined;
|
|
61
61
|
} | {
|
|
62
|
-
error?: undefined;
|
|
63
62
|
summary?: undefined;
|
|
64
63
|
spans?: undefined;
|
|
65
64
|
id?: undefined;
|
|
66
65
|
ok: boolean;
|
|
66
|
+
error?: undefined;
|
|
67
67
|
}>>;
|
|
68
68
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -52,8 +52,8 @@ export declare function handleDeleteResource(event: any): Promise<{
|
|
|
52
52
|
error: string;
|
|
53
53
|
ok?: undefined;
|
|
54
54
|
} | {
|
|
55
|
-
error?: undefined;
|
|
56
55
|
ok: boolean;
|
|
56
|
+
error?: undefined;
|
|
57
57
|
}>;
|
|
58
58
|
/** POST /_agent-native/resources/upload — upload a file as a resource */
|
|
59
59
|
export declare function handleUploadResource(event: any): Promise<import("./store.js").Resource | {
|
|
@@ -74,10 +74,10 @@ export declare function handleUploadResource(event: any): Promise<import("./stor
|
|
|
74
74
|
runId: string | null;
|
|
75
75
|
expiresAt: number | null;
|
|
76
76
|
metadata: string | null;
|
|
77
|
-
error?: undefined;
|
|
78
77
|
url: string;
|
|
79
78
|
provider: string;
|
|
80
79
|
storageSetupRequired?: undefined;
|
|
80
|
+
error?: undefined;
|
|
81
81
|
} | {
|
|
82
82
|
error: string;
|
|
83
83
|
storageSetupRequired: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jami-studio/core",
|
|
3
|
-
"version": "0.92.
|
|
3
|
+
"version": "0.92.30",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/studio-jami/jami-studio#readme",
|
|
6
6
|
"bugs": {
|