@greppleai/grip 0.0.1 → 0.1.3

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 (197) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +13 -7
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js +4 -2
  5. package/dist/bun/cli.js.map +1 -1
  6. package/dist/bun/embedded-assets.d.ts +3 -0
  7. package/dist/bun/embedded-assets.d.ts.map +1 -0
  8. package/dist/bun/embedded-assets.js +52 -0
  9. package/dist/bun/embedded-assets.js.map +1 -0
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js +1 -0
  12. package/dist/cli/args.js.map +1 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +3 -3
  15. package/dist/config.js.map +1 -1
  16. package/dist/core/agent-session.d.ts.map +1 -1
  17. package/dist/core/agent-session.js +17 -2
  18. package/dist/core/agent-session.js.map +1 -1
  19. package/dist/core/remote-workspace-protocol/contract.d.ts +13 -4
  20. package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -1
  21. package/dist/core/remote-workspace-protocol/contract.js +17 -1
  22. package/dist/core/remote-workspace-protocol/contract.js.map +1 -1
  23. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts +16 -0
  24. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -0
  25. package/dist/core/remote-workspace-protocol/guest-shared-client.js +54 -0
  26. package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -0
  27. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts +23 -0
  28. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -0
  29. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +112 -0
  30. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -0
  31. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts +30 -0
  32. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -0
  33. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +243 -0
  34. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -0
  35. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts +3 -0
  36. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -0
  37. package/dist/core/remote-workspace-protocol/lima-owner-directory.js +31 -0
  38. package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -0
  39. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts +9 -0
  40. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -0
  41. package/dist/core/remote-workspace-protocol/lima-owner-lock.js +89 -0
  42. package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -0
  43. package/dist/core/remote-workspace-protocol/session.d.ts +2 -0
  44. package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -1
  45. package/dist/core/remote-workspace-protocol/session.js +3 -0
  46. package/dist/core/remote-workspace-protocol/session.js.map +1 -1
  47. package/dist/core/remote-workspace-protocol/shared-transport.d.ts +71 -0
  48. package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -0
  49. package/dist/core/remote-workspace-protocol/shared-transport.js +68 -0
  50. package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -0
  51. package/dist/core/sandbox/command.d.ts +2 -4
  52. package/dist/core/sandbox/command.d.ts.map +1 -1
  53. package/dist/core/sandbox/command.js +24 -46
  54. package/dist/core/sandbox/command.js.map +1 -1
  55. package/dist/core/sandbox/config.d.ts +91 -0
  56. package/dist/core/sandbox/config.d.ts.map +1 -0
  57. package/dist/core/sandbox/config.js +88 -0
  58. package/dist/core/sandbox/config.js.map +1 -0
  59. package/dist/core/sandbox/lima-guest-binary.d.ts +11 -0
  60. package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -0
  61. package/dist/core/sandbox/lima-guest-binary.js +140 -0
  62. package/dist/core/sandbox/lima-guest-binary.js.map +1 -0
  63. package/dist/core/sandbox/lima.d.ts +22 -3
  64. package/dist/core/sandbox/lima.d.ts.map +1 -1
  65. package/dist/core/sandbox/lima.js +434 -42
  66. package/dist/core/sandbox/lima.js.map +1 -1
  67. package/dist/core/sandbox/shared-lima-roots.d.ts +11 -0
  68. package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -0
  69. package/dist/core/sandbox/shared-lima-roots.js +25 -0
  70. package/dist/core/sandbox/shared-lima-roots.js.map +1 -0
  71. package/dist/core/sandbox/update-shared-guest-binary.d.ts +8 -0
  72. package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -0
  73. package/dist/core/sandbox/update-shared-guest-binary.js +100 -0
  74. package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -0
  75. package/dist/core/settings-manager.d.ts +1 -5
  76. package/dist/core/settings-manager.d.ts.map +1 -1
  77. package/dist/core/settings-manager.js.map +1 -1
  78. package/dist/core/tools/bash.d.ts.map +1 -1
  79. package/dist/core/tools/bash.js +25 -14
  80. package/dist/core/tools/bash.js.map +1 -1
  81. package/dist/core/tools/file-mutation-queue.d.ts +2 -0
  82. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  83. package/dist/core/tools/file-mutation-queue.js +9 -0
  84. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  85. package/dist/core/tools/operations.d.ts +13 -2
  86. package/dist/core/tools/operations.d.ts.map +1 -1
  87. package/dist/core/tools/operations.js +132 -36
  88. package/dist/core/tools/operations.js.map +1 -1
  89. package/dist/daemon/activity-budget.d.ts +10 -0
  90. package/dist/daemon/activity-budget.d.ts.map +1 -0
  91. package/dist/daemon/activity-budget.js +34 -0
  92. package/dist/daemon/activity-budget.js.map +1 -0
  93. package/dist/daemon/config.d.ts +2 -0
  94. package/dist/daemon/config.d.ts.map +1 -1
  95. package/dist/daemon/config.js +15 -0
  96. package/dist/daemon/config.js.map +1 -1
  97. package/dist/daemon/outbound-budget.d.ts +10 -0
  98. package/dist/daemon/outbound-budget.d.ts.map +1 -0
  99. package/dist/daemon/outbound-budget.js +30 -0
  100. package/dist/daemon/outbound-budget.js.map +1 -0
  101. package/dist/daemon/security.d.ts.map +1 -1
  102. package/dist/daemon/security.js +3 -1
  103. package/dist/daemon/security.js.map +1 -1
  104. package/dist/daemon/server.d.ts.map +1 -1
  105. package/dist/daemon/server.js +104 -24
  106. package/dist/daemon/server.js.map +1 -1
  107. package/dist/daemon/shared-connection.d.ts +33 -0
  108. package/dist/daemon/shared-connection.d.ts.map +1 -0
  109. package/dist/daemon/shared-connection.js +271 -0
  110. package/dist/daemon/shared-connection.js.map +1 -0
  111. package/dist/daemon/shared-revision.d.ts +5 -0
  112. package/dist/daemon/shared-revision.d.ts.map +1 -0
  113. package/dist/daemon/shared-revision.js +61 -0
  114. package/dist/daemon/shared-revision.js.map +1 -0
  115. package/dist/daemon/shared-roots.d.ts +9 -0
  116. package/dist/daemon/shared-roots.d.ts.map +1 -0
  117. package/dist/daemon/shared-roots.js +33 -0
  118. package/dist/daemon/shared-roots.js.map +1 -0
  119. package/dist/daemon/workspace-runtime.d.ts +1 -1
  120. package/dist/daemon/workspace-runtime.d.ts.map +1 -1
  121. package/dist/daemon/workspace-runtime.js +42 -10
  122. package/dist/daemon/workspace-runtime.js.map +1 -1
  123. package/dist/main.d.ts.map +1 -1
  124. package/dist/main.js +5 -3
  125. package/dist/main.js.map +1 -1
  126. package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  127. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  128. package/dist/modes/interactive/components/assistant-message.js +13 -3
  129. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  130. package/dist/modes/interactive/components/branch-summary-message.d.ts +4 -3
  131. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  132. package/dist/modes/interactive/components/branch-summary-message.js +5 -4
  133. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  134. package/dist/modes/interactive/components/compaction-summary-message.d.ts +4 -3
  135. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  136. package/dist/modes/interactive/components/compaction-summary-message.js +5 -4
  137. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  138. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  139. package/dist/modes/interactive/components/custom-message.js +4 -3
  140. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  141. package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -1
  142. package/dist/modes/interactive/components/hook-execution.js +3 -2
  143. package/dist/modes/interactive/components/hook-execution.js.map +1 -1
  144. package/dist/modes/interactive/components/message-card.d.ts +9 -0
  145. package/dist/modes/interactive/components/message-card.d.ts.map +1 -0
  146. package/dist/modes/interactive/components/message-card.js +24 -0
  147. package/dist/modes/interactive/components/message-card.js.map +1 -0
  148. package/dist/modes/interactive/components/skill-invocation-message.d.ts +4 -3
  149. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  150. package/dist/modes/interactive/components/skill-invocation-message.js +5 -4
  151. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  152. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  153. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  154. package/dist/modes/interactive/components/tool-execution.js +27 -21
  155. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  156. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  157. package/dist/modes/interactive/components/user-message.js +3 -2
  158. package/dist/modes/interactive/components/user-message.js.map +1 -1
  159. package/dist/modes/interactive/interactive-mode.d.ts +0 -3
  160. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  161. package/dist/modes/interactive/interactive-mode.js +55 -44
  162. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  163. package/dist/modes/interactive/theme/theme.d.ts +3 -0
  164. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  165. package/dist/modes/interactive/theme/theme.js +10 -0
  166. package/dist/modes/interactive/theme/theme.js.map +1 -1
  167. package/dist/utils/clipboard-native.d.ts.map +1 -1
  168. package/dist/utils/clipboard-native.js +1 -1
  169. package/dist/utils/clipboard-native.js.map +1 -1
  170. package/dist/utils/image-resize.d.ts.map +1 -1
  171. package/dist/utils/image-resize.js +5 -0
  172. package/dist/utils/image-resize.js.map +1 -1
  173. package/dist/utils/photon.d.ts.map +1 -1
  174. package/dist/utils/photon.js +1 -0
  175. package/dist/utils/photon.js.map +1 -1
  176. package/docs/daemon.md +6 -4
  177. package/docs/docs.json +1 -1
  178. package/docs/index.md +8 -12
  179. package/docs/packages.md +3 -3
  180. package/docs/quickstart.md +11 -19
  181. package/docs/sandbox.md +40 -117
  182. package/docs/settings.md +12 -11
  183. package/docs/termux.md +1 -18
  184. package/docs/usage.md +2 -2
  185. package/examples/README.md +0 -2
  186. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  187. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  188. package/examples/extensions/sandbox/package.json +1 -1
  189. package/examples/extensions/with-deps/package.json +1 -1
  190. package/npm-shrinkwrap.json +12 -12
  191. package/package.json +5 -6
  192. package/dist/core/sandbox/docker.d.ts +0 -169
  193. package/dist/core/sandbox/docker.d.ts.map +0 -1
  194. package/dist/core/sandbox/docker.js +0 -633
  195. package/dist/core/sandbox/docker.js.map +0 -1
  196. package/examples/sandbox-docker/Dockerfile +0 -274
  197. package/examples/sandbox-docker/README.md +0 -88
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/contract.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { type Static, Type } from \"typebox\";\nimport { Compile, type Validator } from \"typebox/compile\";\n\nexport const REMOTE_WORKSPACE_PROTOCOL_VERSIONS = [{ major: 1, minMinor: 0, maxMinor: 0 }] as const;\n\nexport const REMOTE_WORKSPACE_CAPABILITIES = [\n\t\"catalog_refresh\",\n\t\"tool_updates\",\n\t\"primitive_operations\",\n\t\"lsp_status\",\n\t\"file_transfer\",\n\t\"artifacts\",\n] as const;\n\nexport type RemoteWorkspaceCapability = (typeof REMOTE_WORKSPACE_CAPABILITIES)[number];\n\nexport const REMOTE_WORKSPACE_METHODS = [\n\t\"catalog.get\",\n\t\"tool.invoke\",\n\t\"workspace.access\",\n\t\"workspace.read\",\n\t\"workspace.write\",\n\t\"workspace.mkdir\",\n\t\"workspace.stat\",\n\t\"workspace.readdir\",\n\t\"workspace.glob\",\n\t\"workspace.grep\",\n\t\"workspace.detect_image_mime\",\n\t\"workspace.exec\",\n\t\"lsp.status\",\n\t\"resource.read\",\n\t\"artifact.read\",\n\t\"transfer.upload\",\n\t\"transfer.download\",\n] as const;\n\nexport type RemoteWorkspaceMethod = (typeof REMOTE_WORKSPACE_METHODS)[number];\n\nexport const REMOTE_WORKSPACE_ERROR_CODES = [\n\t\"invalid_request\",\n\t\"method_not_supported\",\n\t\"incompatible_version\",\n\t\"capability_mismatch\",\n\t\"schema_mismatch\",\n\t\"stale_generation\",\n\t\"not_available\",\n\t\"limit_exceeded\",\n\t\"deadline_exceeded\",\n\t\"cancelled\",\n\t\"generation_retired\",\n\t\"connection_draining\",\n\t\"result_too_large\",\n\t\"internal_error\",\n] as const;\n\nexport type RemoteWorkspaceErrorCode = (typeof REMOTE_WORKSPACE_ERROR_CODES)[number];\nexport type RemoteWorkspaceExecutionState = \"not_started\" | \"completed\" | \"indeterminate\";\nexport type RemoteWorkspacePathFlavor = \"posix\" | \"windows\";\nexport type RemoteWorkspaceOperationKind = \"read\" | \"mutation\" | \"process\" | \"service\";\n\nexport interface RemoteWorkspaceStructuralLimits {\n\tmaxMessageBytes: number;\n\tmaxStringBytes: number;\n\tmaxDepth: number;\n\tmaxObjectKeys: number;\n\tmaxArrayLength: number;\n\tmaxNodes: number;\n}\n\nexport interface RemoteWorkspaceProtocolLimits extends RemoteWorkspaceStructuralLimits {\n\tmaxRequestMs: number;\n\tmaxTransferChunkBytes: number;\n\tmaxPendingTransferBytes: number;\n\tmaxPendingInboundBytes: number;\n\tmaxPendingInboundMessages: number;\n\tmaxPendingOutboundBytes: number;\n\tmaxPendingOutboundMessages: number;\n\tmaxTransferBytes: number;\n\tmaxTransferChunks: number;\n\tmaxActiveRequests: number;\n\tmaxActiveTransfers: number;\n\tmaxCancellationMs: number;\n\tmaxTransportSendMs: number;\n}\n\nexport const DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS: RemoteWorkspaceProtocolLimits = {\n\tmaxMessageBytes: 2 * 1024 * 1024,\n\tmaxStringBytes: 1536 * 1024,\n\tmaxDepth: 32,\n\tmaxObjectKeys: 4096,\n\tmaxArrayLength: 4096,\n\tmaxNodes: 16_384,\n\tmaxRequestMs: 10 * 60 * 1000,\n\tmaxTransferChunkBytes: 64 * 1024,\n\tmaxPendingTransferBytes: 256 * 1024,\n\tmaxPendingInboundBytes: 4 * 1024 * 1024,\n\tmaxPendingInboundMessages: 64,\n\tmaxPendingOutboundBytes: 4 * 1024 * 1024,\n\tmaxPendingOutboundMessages: 128,\n\tmaxTransferBytes: 100 * 1024 * 1024,\n\tmaxTransferChunks: 16_384,\n\tmaxActiveRequests: 64,\n\tmaxActiveTransfers: 8,\n\tmaxCancellationMs: 100,\n\tmaxTransportSendMs: 10_000,\n};\n\nconst closedObject = { additionalProperties: false } as const;\nconst safeIntegerOptions = { minimum: 0, maximum: Number.MAX_SAFE_INTEGER } as const;\nconst RequestIdSchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z0-9._:-]+$\" });\nconst HashSchema = Type.String({ pattern: \"^[0-9a-f]{64}$\" });\nconst CapabilitySchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[a-z][a-z0-9_.-]*$\" });\nconst RemoteWorkspaceMethodSchema = Type.Union([\n\tType.Literal(\"catalog.get\"),\n\tType.Literal(\"tool.invoke\"),\n\tType.Literal(\"workspace.access\"),\n\tType.Literal(\"workspace.read\"),\n\tType.Literal(\"workspace.write\"),\n\tType.Literal(\"workspace.mkdir\"),\n\tType.Literal(\"workspace.stat\"),\n\tType.Literal(\"workspace.readdir\"),\n\tType.Literal(\"workspace.glob\"),\n\tType.Literal(\"workspace.grep\"),\n\tType.Literal(\"workspace.detect_image_mime\"),\n\tType.Literal(\"workspace.exec\"),\n\tType.Literal(\"lsp.status\"),\n\tType.Literal(\"resource.read\"),\n\tType.Literal(\"artifact.read\"),\n\tType.Literal(\"transfer.upload\"),\n\tType.Literal(\"transfer.download\"),\n]);\n\nexport const RemoteWorkspaceVersionRangeSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t\tmaxMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersionRange = Static<typeof RemoteWorkspaceVersionRangeSchema>;\n\nexport const RemoteWorkspaceVersionSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersion = Static<typeof RemoteWorkspaceVersionSchema>;\n\nexport const RemoteWorkspaceLimitsSchema = Type.Object(\n\t{\n\t\tmaxMessageBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxStringBytes: Type.Integer({ minimum: 1, maximum: 64 * 1024 * 1024 }),\n\t\tmaxDepth: Type.Integer({ minimum: 1, maximum: 256 }),\n\t\tmaxObjectKeys: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxArrayLength: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxNodes: Type.Integer({ minimum: 1, maximum: 2_000_000 }),\n\t\tmaxRequestMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tmaxTransferChunkBytes: Type.Integer({ minimum: 1024, maximum: 1024 * 1024 }),\n\t\tmaxPendingTransferBytes: Type.Integer({ minimum: 1024, maximum: 16 * 1024 * 1024 }),\n\t\tmaxPendingInboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingInboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxPendingOutboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingOutboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxTransferBytes: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tmaxTransferChunks: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxActiveRequests: Type.Integer({ minimum: 1, maximum: 10_000_000 }),\n\t\tmaxActiveTransfers: Type.Integer({ minimum: 1, maximum: 10_000 }),\n\t\tmaxCancellationMs: Type.Integer({ minimum: 1, maximum: 60_000 }),\n\t\tmaxTransportSendMs: Type.Integer({ minimum: 1, maximum: 5 * 60_000 }),\n\t},\n\tclosedObject,\n);\n\nexport const RemoteWorkspaceIdentitySchema = Type.Object(\n\t{\n\t\tid: Type.String({ minLength: 16, maxLength: 128, pattern: \"^[A-Za-z0-9_-]+$\" }),\n\t\troot: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tpathFlavor: Type.Union([Type.Literal(\"posix\"), Type.Literal(\"windows\")]),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceIdentity = Static<typeof RemoteWorkspaceIdentitySchema>;\n\nexport const RemoteWorkspaceToolCatalogEntrySchema = Type.Object(\n\t{\n\t\tname: Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z][A-Za-z0-9_.-]*$\" }),\n\t\texecutionMode: Type.Union([\n\t\t\tType.Literal(\"read\"),\n\t\t\tType.Literal(\"mutation\"),\n\t\t\tType.Literal(\"process\"),\n\t\t\tType.Literal(\"service\"),\n\t\t]),\n\t\tparameterSchema: Type.Record(Type.String({ maxLength: 256 }), Type.Unknown()),\n\t\tschemaHash: HashSchema,\n\t\tfeatureFlags: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceToolCatalogEntry = Static<typeof RemoteWorkspaceToolCatalogEntrySchema>;\n\nexport const RemoteWorkspaceCatalogSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\ttools: Type.Array(RemoteWorkspaceToolCatalogEntrySchema, { maxItems: 1024 }),\n\t\toperations: Type.Array(RemoteWorkspaceMethodSchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalog = Static<typeof RemoteWorkspaceCatalogSchema>;\n\nexport const RemoteWorkspaceHandshakeSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake\"),\n\t\tid: RequestIdSchema,\n\t\tversions: Type.Array(RemoteWorkspaceVersionRangeSchema, { minItems: 1, maxItems: 16 }),\n\t\trequiredCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\toptionalCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\treceiveLimits: RemoteWorkspaceLimitsSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshake = Static<typeof RemoteWorkspaceHandshakeSchema>;\n\nexport const RemoteWorkspaceHandshakeAckSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake_ack\"),\n\t\tid: RequestIdSchema,\n\t\tversion: RemoteWorkspaceVersionSchema,\n\t\tcapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t\tlimits: RemoteWorkspaceLimitsSchema,\n\t\tcatalog: RemoteWorkspaceCatalogSchema,\n\t\tcatalogHash: HashSchema,\n\t\tbackendMetadata: Type.Object(\n\t\t\t{\n\t\t\t\tkind: Type.Literal(\"remote-workspace\"),\n\t\t\t\tlabel: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshakeAck = Static<typeof RemoteWorkspaceHandshakeAckSchema>;\n\nexport const RemoteWorkspaceRequestSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"request\"),\n\t\tid: RequestIdSchema,\n\t\tmethod: Type.String({ minLength: 1, maxLength: 128 }),\n\t\ttimeoutMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tparams: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceRequest = Static<typeof RemoteWorkspaceRequestSchema>;\n\nexport const RemoteWorkspaceCancelSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"cancel\"),\n\t\tid: RequestIdSchema,\n\t\treason: Type.Optional(Type.String({ maxLength: 256 })),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCancel = Static<typeof RemoteWorkspaceCancelSchema>;\n\nexport const RemoteWorkspaceTransferChunkSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_chunk\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tdataBase64: Type.String({ minLength: 4 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferChunk = Static<typeof RemoteWorkspaceTransferChunkSchema>;\n\nexport const RemoteWorkspaceTransferFinishSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_finish\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferFinish = Static<typeof RemoteWorkspaceTransferFinishSchema>;\n\nexport const RemoteWorkspaceResultSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"result\"),\n\t\tid: RequestIdSchema,\n\t\tresult: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceResult = Static<typeof RemoteWorkspaceResultSchema>;\n\nexport const RemoteWorkspaceProtocolErrorSchema = Type.Object(\n\t{\n\t\tcode: Type.Union([\n\t\t\tType.Literal(\"invalid_request\"),\n\t\t\tType.Literal(\"method_not_supported\"),\n\t\t\tType.Literal(\"incompatible_version\"),\n\t\t\tType.Literal(\"capability_mismatch\"),\n\t\t\tType.Literal(\"schema_mismatch\"),\n\t\t\tType.Literal(\"stale_generation\"),\n\t\t\tType.Literal(\"not_available\"),\n\t\t\tType.Literal(\"limit_exceeded\"),\n\t\t\tType.Literal(\"deadline_exceeded\"),\n\t\t\tType.Literal(\"cancelled\"),\n\t\t\tType.Literal(\"generation_retired\"),\n\t\t\tType.Literal(\"connection_draining\"),\n\t\t\tType.Literal(\"result_too_large\"),\n\t\t\tType.Literal(\"internal_error\"),\n\t\t]),\n\t\tmessage: Type.String({ minLength: 1, maxLength: 4096 }),\n\t\texecutionState: Type.Union([\n\t\t\tType.Literal(\"not_started\"),\n\t\t\tType.Literal(\"completed\"),\n\t\t\tType.Literal(\"indeterminate\"),\n\t\t]),\n\t\tretryable: Type.Boolean(),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceProtocolError = Static<typeof RemoteWorkspaceProtocolErrorSchema>;\n\nexport const RemoteWorkspaceErrorMessageSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"error\"),\n\t\tid: RequestIdSchema,\n\t\terror: RemoteWorkspaceProtocolErrorSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceErrorMessage = Static<typeof RemoteWorkspaceErrorMessageSchema>;\n\nexport const RemoteWorkspaceUpdateSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"update\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tupdate: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceUpdate = Static<typeof RemoteWorkspaceUpdateSchema>;\n\nexport const RemoteWorkspaceTransferStartSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_start\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferStart = Static<typeof RemoteWorkspaceTransferStartSchema>;\n\nexport const RemoteWorkspaceCatalogChangedSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"catalog_changed\"),\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalogChanged = Static<typeof RemoteWorkspaceCatalogChangedSchema>;\n\nexport const RemoteWorkspaceClientMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeSchema,\n\tRemoteWorkspaceRequestSchema,\n\tRemoteWorkspaceCancelSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceTransferFinishSchema,\n]);\n\nexport const RemoteWorkspaceServerMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeAckSchema,\n\tRemoteWorkspaceResultSchema,\n\tRemoteWorkspaceErrorMessageSchema,\n\tRemoteWorkspaceUpdateSchema,\n\tRemoteWorkspaceTransferStartSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceCatalogChangedSchema,\n]);\n\nexport type RemoteWorkspaceClientMessage = Static<typeof RemoteWorkspaceClientMessageSchema>;\nexport type RemoteWorkspaceServerMessage = Static<typeof RemoteWorkspaceServerMessageSchema>;\n\nconst EmptyParamsSchema = Type.Object({}, closedObject);\nconst PathParamsSchema = Type.Object({ path: Type.String({ minLength: 1, maxLength: 32_768 }) }, closedObject);\nconst CatalogGetParamsSchema = EmptyParamsSchema;\nconst SessionEnvironmentSchema = Type.Object(\n\t{\n\t\tGRIP_SESSION_ID: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_SESSION_FILE: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_PROVIDER: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_MODEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_REASONING_LEVEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t},\n\tclosedObject,\n);\nconst ToolInvokeParamsSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t\ttoolName: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tschemaHash: HashSchema,\n\t\targumentsPrepared: Type.Literal(true),\n\t\targuments: Type.Unknown(),\n\t\texecutionOptions: Type.Object(\n\t\t\t{\n\t\t\t\timageAutoResize: Type.Optional(Type.Boolean()),\n\t\t\t\tshellCommandPrefix: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\t\t\tsessionEnvironment: Type.Optional(SessionEnvironmentSchema),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\nconst AccessParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tmode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"exists\"), Type.Literal(\"read\"), Type.Literal(\"write\"), Type.Literal(\"readwrite\")]),\n\t\t),\n\t},\n\tclosedObject,\n);\nconst WriteParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcontentBase64: Type.String(),\n\t},\n\tclosedObject,\n);\nconst MkdirParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\trecursive: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst GlobParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tignore: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 4096 }),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst GrepParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ maxLength: 1024 * 1024 }),\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tglob: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tignoreCase: Type.Optional(Type.Boolean()),\n\t\tliteral: Type.Optional(Type.Boolean()),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst ExecParamsSchema = Type.Object(\n\t{\n\t\tcommand: Type.String({ minLength: 1 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\nconst TransferUploadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t\toverwrite: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst TransferDownloadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\n\nconst ToolContentSchema = Type.Union([\n\tType.Object({ type: Type.Literal(\"text\"), text: Type.String() }, closedObject),\n\tType.Object(\n\t\t{\n\t\t\ttype: Type.Literal(\"image\"),\n\t\t\tdata: Type.String(),\n\t\t\tmimeType: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t},\n\t\tclosedObject,\n\t),\n]);\nconst ToolResultSchema = Type.Object(\n\t{\n\t\tcontent: Type.Array(ToolContentSchema),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t\tterminate: Type.Optional(Type.Boolean()),\n\t},\n\tclosedObject,\n);\nconst EmptyResultSchema = EmptyParamsSchema;\nconst LspStatusServerSchema = Type.Object(\n\t{\n\t\tserverId: Type.String({ minLength: 1, maxLength: 256 }),\n\t\tlanguageIds: Type.Array(Type.String({ maxLength: 256 }), { maxItems: 256 }),\n\t\ttransport: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tinstanceKey: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\tworkspaceRoot: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tendpoint: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\trootUri: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\townership: Type.Union([Type.Literal(\"managed\"), Type.Literal(\"attached\")]),\n\t\tshutdownMode: Type.Union([Type.Literal(\"protocol\"), Type.Literal(\"disconnect\")]),\n\t\tstate: Type.Union([\n\t\t\tType.Literal(\"idle\"),\n\t\t\tType.Literal(\"connecting\"),\n\t\t\tType.Literal(\"initializing\"),\n\t\t\tType.Literal(\"running\"),\n\t\t\tType.Literal(\"closed\"),\n\t\t\tType.Literal(\"failed\"),\n\t\t\tType.Literal(\"disposed\"),\n\t\t]),\n\t\treconnectEligible: Type.Boolean(),\n\t\trunning: Type.Boolean(),\n\t\tstarting: Type.Boolean(),\n\t\tdiagnosticsCount: Type.Integer(safeIntegerOptions),\n\t\tlastError: Type.Optional(Type.String()),\n\t\tlastRequestError: Type.Optional(Type.String()),\n\t\tstderr: Type.Optional(Type.String()),\n\t\tsynchronizationError: Type.Optional(Type.String()),\n\t},\n\tclosedObject,\n);\nconst LspStatusResultSchema = Type.Object(\n\t{ enabled: Type.Boolean(), servers: Type.Array(LspStatusServerSchema, { maxItems: 1024 }) },\n\tclosedObject,\n);\nexport type RemoteLspStatus = Static<typeof LspStatusResultSchema>;\nconst ReadResultSchema = Type.Object(\n\t{\n\t\tcontentBase64: Type.String(),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst StatResultSchema = Type.Object(\n\t{\n\t\tkind: Type.Union([Type.Literal(\"file\"), Type.Literal(\"directory\"), Type.Literal(\"other\")]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ReaddirResultSchema = Type.Object(\n\t{\n\t\tentries: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GlobResultSchema = Type.Object(\n\t{\n\t\tmatches: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GrepResultSchema = Type.Object(\n\t{\n\t\tisDirectory: Type.Boolean(),\n\t\tmatches: Type.Array(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\tfilePath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\t\t\t\tlineNumber: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\t\t\tlineText: Type.Optional(Type.String()),\n\t\t\t\t},\n\t\t\t\tclosedObject,\n\t\t\t),\n\t\t\t{ maxItems: 1_000_000 },\n\t\t),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst MimeResultSchema = Type.Object(\n\t{\n\t\tmimeType: Type.Union([\n\t\t\tType.Literal(\"image/jpeg\"),\n\t\t\tType.Literal(\"image/png\"),\n\t\t\tType.Literal(\"image/gif\"),\n\t\t\tType.Literal(\"image/webp\"),\n\t\t\tType.Null(),\n\t\t]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ExecResultSchema = Type.Object(\n\t{ exitCode: Type.Union([Type.Integer({ minimum: 0, maximum: 255 }), Type.Null()]) },\n\tclosedObject,\n);\nconst TransferResultSchema = Type.Object(\n\t{\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nconst parameterValidators = {\n\t\"catalog.get\": Compile(CatalogGetParamsSchema),\n\t\"tool.invoke\": Compile(ToolInvokeParamsSchema),\n\t\"workspace.access\": Compile(AccessParamsSchema),\n\t\"workspace.read\": Compile(PathParamsSchema),\n\t\"workspace.write\": Compile(WriteParamsSchema),\n\t\"workspace.mkdir\": Compile(MkdirParamsSchema),\n\t\"workspace.stat\": Compile(PathParamsSchema),\n\t\"workspace.readdir\": Compile(PathParamsSchema),\n\t\"workspace.glob\": Compile(GlobParamsSchema),\n\t\"workspace.grep\": Compile(GrepParamsSchema),\n\t\"workspace.detect_image_mime\": Compile(PathParamsSchema),\n\t\"workspace.exec\": Compile(ExecParamsSchema),\n\t\"lsp.status\": Compile(EmptyParamsSchema),\n\t\"resource.read\": Compile(PathParamsSchema),\n\t\"artifact.read\": Compile(PathParamsSchema),\n\t\"transfer.upload\": Compile(TransferUploadParamsSchema),\n\t\"transfer.download\": Compile(TransferDownloadParamsSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile>>;\n\nconst resultValidators = {\n\t\"catalog.get\": Compile(RemoteWorkspaceCatalogSchema),\n\t\"tool.invoke\": Compile(ToolResultSchema),\n\t\"workspace.access\": Compile(EmptyResultSchema),\n\t\"workspace.read\": Compile(ReadResultSchema),\n\t\"workspace.write\": Compile(EmptyResultSchema),\n\t\"workspace.mkdir\": Compile(EmptyResultSchema),\n\t\"workspace.stat\": Compile(StatResultSchema),\n\t\"workspace.readdir\": Compile(ReaddirResultSchema),\n\t\"workspace.glob\": Compile(GlobResultSchema),\n\t\"workspace.grep\": Compile(GrepResultSchema),\n\t\"workspace.detect_image_mime\": Compile(MimeResultSchema),\n\t\"workspace.exec\": Compile(ExecResultSchema),\n\t\"lsp.status\": Compile(LspStatusResultSchema),\n\t\"resource.read\": Compile(ReadResultSchema),\n\t\"artifact.read\": Compile(TransferResultSchema),\n\t\"transfer.upload\": Compile(TransferResultSchema),\n\t\"transfer.download\": Compile(TransferResultSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile> | undefined>;\n\nconst clientMessageValidator = Compile(RemoteWorkspaceClientMessageSchema);\nconst serverMessageValidator = Compile(RemoteWorkspaceServerMessageSchema);\nconst handshakeAckValidator = Compile(RemoteWorkspaceHandshakeAckSchema);\nconst limitsValidator = Compile(RemoteWorkspaceLimitsSchema);\n\nexport class RemoteWorkspaceValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceValidationError\";\n\t}\n}\n\nfunction validationMessage(validator: Validator, value: unknown): string {\n\tconst error = validator.Errors(value)[0];\n\tif (!error) return \"value does not match the protocol schema\";\n\treturn `${error.instancePath || \"/\"}: ${error.message}`;\n}\n\nfunction parseWithValidator<T>(validator: Validator, value: unknown, label: string): T {\n\tif (!validator.Check(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(`Invalid ${label}: ${validationMessage(validator, value)}`);\n\t}\n\treturn value as T;\n}\n\nexport function validateRemoteWorkspaceProtocolLimits(value: unknown): RemoteWorkspaceProtocolLimits {\n\tconst limits = parseWithValidator<RemoteWorkspaceProtocolLimits>(limitsValidator, value, \"protocol limits\");\n\tif (limits.maxMessageBytes > limits.maxPendingInboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingInboundBytes\");\n\t}\n\tif (limits.maxMessageBytes > limits.maxPendingOutboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingOutboundBytes\");\n\t}\n\tif (limits.maxTransferChunkBytes > limits.maxPendingTransferBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must not exceed maxPendingTransferBytes\");\n\t}\n\tif (Math.ceil((limits.maxTransferChunkBytes * 4) / 3) + 512 > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must fit in one base64 protocol message\");\n\t}\n\treturn limits;\n}\n\ninterface RemoteWorkspacePendingValue {\n\tvalue: unknown;\n\tdepth: number;\n}\n\ninterface RemoteWorkspaceStructureState {\n\tpending: RemoteWorkspacePendingValue[];\n\tnodes: number;\n\tobjectKeys: number;\n\tlimits: RemoteWorkspaceStructuralLimits;\n}\n\nfunction validateRemoteWorkspaceNodeBudget(depth: number, state: RemoteWorkspaceStructureState): void {\n\tstate.nodes++;\n\tif (state.nodes > state.limits.maxNodes)\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds node limit\");\n\tif (depth > state.limits.maxDepth) throw new RemoteWorkspaceValidationError(\"Protocol value exceeds depth limit\");\n}\n\nfunction validateRemoteWorkspaceScalar(value: unknown, limits: RemoteWorkspaceStructuralLimits): boolean {\n\tif (value === null || typeof value === \"boolean\") return true;\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Protocol numbers must be finite\");\n\t\treturn true;\n\t}\n\tif (typeof value !== \"string\") return false;\n\tif (Buffer.byteLength(value, \"utf8\") > limits.maxStringBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol string exceeds byte limit\");\n\t}\n\treturn true;\n}\n\nfunction enqueueRemoteWorkspaceArray(value: unknown[], depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value.length > state.limits.maxArrayLength) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol array exceeds item limit\");\n\t}\n\tfor (let index = value.length - 1; index >= 0; index--) {\n\t\tstate.pending.push({ value: value[index], depth: depth + 1 });\n\t}\n}\n\nfunction enqueueRemoteWorkspaceObject(value: unknown, depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value === null || typeof value !== \"object\")\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol values must be JSON-compatible\");\n\tconst prototype = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol objects must be plain JSON objects\");\n\t}\n\tconst entries = Object.entries(value);\n\tif (entries.length > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object exceeds key limit\");\n\t}\n\tstate.objectKeys += entries.length;\n\tif (state.objectKeys > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds total key limit\");\n\t}\n\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\tconst entry = entries[index];\n\t\tif (!entry) continue;\n\t\tif (Buffer.byteLength(entry[0], \"utf8\") > state.limits.maxStringBytes) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object key exceeds byte limit\");\n\t\t}\n\t\tstate.pending.push({ value: entry[1], depth: depth + 1 });\n\t}\n}\n\nexport function assertRemoteWorkspaceJsonStructure(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): void {\n\tconst state: RemoteWorkspaceStructureState = {\n\t\tpending: [{ value, depth: 1 }],\n\t\tnodes: 0,\n\t\tobjectKeys: 0,\n\t\tlimits,\n\t};\n\twhile (state.pending.length > 0) {\n\t\tconst current = state.pending.pop();\n\t\tif (!current) break;\n\t\tvalidateRemoteWorkspaceNodeBudget(current.depth, state);\n\t\tif (validateRemoteWorkspaceScalar(current.value, limits)) continue;\n\t\tif (Array.isArray(current.value)) {\n\t\t\tenqueueRemoteWorkspaceArray(current.value, current.depth, state);\n\t\t\tcontinue;\n\t\t}\n\t\tenqueueRemoteWorkspaceObject(current.value, current.depth, state);\n\t}\n}\n\nexport function decodeRemoteWorkspaceMessage(\n\tpayload: string | Uint8Array,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tconst bytes = typeof payload === \"string\" ? Buffer.from(payload, \"utf8\") : payload;\n\tif (bytes.byteLength > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol message exceeds byte limit\");\n\t}\n\tconst text = typeof payload === \"string\" ? payload : new TextDecoder(\"utf-8\", { fatal: true }).decode(payload);\n\tlet value: unknown;\n\ttry {\n\t\tvalue = JSON.parse(text) as unknown;\n\t} catch (error) {\n\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t`Protocol message is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn value;\n}\n\nexport function parseRemoteWorkspaceClientMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceClientMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceClientMessage>(clientMessageValidator, value, \"client message\");\n}\n\nexport function parseRemoteWorkspaceServerMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceServerMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceServerMessage>(serverMessageValidator, value, \"server message\");\n}\n\nexport function isRemoteWorkspaceMethod(method: string): method is RemoteWorkspaceMethod {\n\treturn (REMOTE_WORKSPACE_METHODS as readonly string[]).includes(method);\n}\n\nexport function parseRemoteWorkspaceRequestParams(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst parsed = parseWithValidator(parameterValidators[method], value, `${method} params`);\n\tif (method === \"workspace.write\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceResult(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst validator = resultValidators[method];\n\tconst parsed = validator ? parseWithValidator(validator, value, `${method} result`) : value;\n\tif (method === \"workspace.read\" || method === \"resource.read\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceToolResult(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator(Compile(ToolResultSchema), value, \"tool result\");\n}\n\nexport function decodeCanonicalBase64(value: string, maxBytes: number): Buffer {\n\tif (value.length % 4 !== 0 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\tconst decoded = Buffer.from(value, \"base64\");\n\tif (decoded.byteLength > maxBytes) throw new RemoteWorkspaceValidationError(\"Transfer chunk exceeds byte limit\");\n\tif (decoded.toString(\"base64\") !== value) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\treturn decoded;\n}\n\nfunction canonicalJson(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (typeof value === \"boolean\") return value ? \"true\" : \"false\";\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Cannot hash a non-finite number\");\n\t\treturn JSON.stringify(value);\n\t}\n\tif (typeof value === \"string\") return JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map((entry) => canonicalJson(entry)).join(\",\")}]`;\n\tif (typeof value !== \"object\" || value === undefined) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Cannot hash a non-JSON value\");\n\t}\n\tconst entries = Object.entries(value).sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));\n\treturn `{${entries.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n}\n\nexport function hashRemoteWorkspaceJson(value: unknown): string {\n\tassertRemoteWorkspaceJsonStructure(value);\n\treturn createHash(\"sha256\").update(canonicalJson(value)).digest(\"hex\");\n}\n\nexport function hashRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): string {\n\treturn hashRemoteWorkspaceJson(catalog);\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n\tif (new Set(values).size !== values.length) throw new RemoteWorkspaceValidationError(`${label} contains duplicates`);\n}\n\nexport function validateRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): void {\n\tparseWithValidator(Compile(RemoteWorkspaceCatalogSchema), catalog, \"tool catalog\");\n\tassertUnique(catalog.operations, \"Catalog operations\");\n\tassertUnique(\n\t\tcatalog.tools.map((tool) => tool.name),\n\t\t\"Catalog tool names\",\n\t);\n\tfor (const tool of catalog.tools) {\n\t\tassertUnique(tool.featureFlags, `Feature flags for ${tool.name}`);\n\t\tif (hashRemoteWorkspaceJson(tool.parameterSchema) !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Schema hash mismatch for tool ${tool.name}`);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceLocalToolSchemas(\n\tcatalog: RemoteWorkspaceCatalog,\n\tlocalToolSchemas: ReadonlyMap<string, string>,\n): void {\n\tfor (const tool of catalog.tools) {\n\t\tconst localHash = localToolSchemas.get(tool.name);\n\t\tif (localHash !== undefined && localHash !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t\t`Remote schema does not match the local canonical schema for ${tool.name}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceHandshakeAck(\n\tack: unknown,\n\toffer: RemoteWorkspaceHandshake,\n\tlocalToolSchemas: ReadonlyMap<string, string> = new Map(),\n): RemoteWorkspaceHandshakeAck {\n\tconst parsed = parseWithValidator<RemoteWorkspaceHandshakeAck>(handshakeAckValidator, ack, \"handshake response\");\n\tvalidateRemoteWorkspaceProtocolLimits(offer.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(parsed.limits);\n\tconst selected = offer.versions.some(\n\t\t(range) =>\n\t\t\trange.major === parsed.version.major &&\n\t\t\trange.minMinor <= parsed.version.minor &&\n\t\t\trange.maxMinor >= parsed.version.minor,\n\t);\n\tif (!selected)\n\t\tthrow new RemoteWorkspaceValidationError(\"Server selected a protocol version outside the offered range\");\n\tconst offeredCapabilities = new Set([...offer.requiredCapabilities, ...offer.optionalCapabilities]);\n\tfor (const capability of parsed.capabilities) {\n\t\tif (!offeredCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server selected an unoffered capability: ${capability}`);\n\t\t}\n\t}\n\tconst selectedCapabilities = new Set(parsed.capabilities);\n\tfor (const capability of offer.requiredCapabilities) {\n\t\tif (!selectedCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server omitted required capability: ${capability}`);\n\t\t}\n\t}\n\tassertUnique(parsed.capabilities, \"Negotiated capabilities\");\n\tvalidateRemoteWorkspaceCatalog(parsed.catalog);\n\tif (hashRemoteWorkspaceCatalog(parsed.catalog) !== parsed.catalogHash) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Catalog hash does not match the negotiated catalog\");\n\t}\n\tvalidateRemoteWorkspaceLocalToolSchemas(parsed.catalog, localToolSchemas);\n\tfor (const key of Object.keys(offer.receiveLimits) as (keyof RemoteWorkspaceProtocolLimits)[]) {\n\t\tif (parsed.limits[key] > offer.receiveLimits[key]) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server increased negotiated limit: ${key}`);\n\t\t}\n\t}\n\treturn parsed;\n}\n\nexport interface RemoteWorkspaceNegotiationOptions {\n\tserverVersions: readonly RemoteWorkspaceVersionRange[];\n\tserverCapabilities: readonly string[];\n\trequiredClientCapabilities?: readonly string[];\n\tserverLimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport interface RemoteWorkspaceNegotiationResult {\n\tversion: RemoteWorkspaceVersion;\n\tcapabilities: string[];\n\tlimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport type RemoteWorkspaceNegotiationErrorCode = \"incompatible_version\" | \"capability_mismatch\";\n\nexport class RemoteWorkspaceNegotiationError extends Error {\n\treadonly code: RemoteWorkspaceNegotiationErrorCode;\n\n\tconstructor(code: RemoteWorkspaceNegotiationErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceNegotiationError\";\n\t\tthis.code = code;\n\t}\n}\n\nfunction validateVersionRanges(ranges: readonly RemoteWorkspaceVersionRange[], label: string): void {\n\tfor (const range of ranges) {\n\t\tif (range.minMinor > range.maxMinor) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\"incompatible_version\", `${label} has an inverted minor range`);\n\t\t}\n\t}\n}\n\nfunction findCompatibleRemoteWorkspaceVersions(\n\tclientVersions: readonly RemoteWorkspaceVersionRange[],\n\tserverVersions: readonly RemoteWorkspaceVersionRange[],\n): RemoteWorkspaceVersion[] {\n\tconst serverVersionsByMajor = new Map<number, RemoteWorkspaceVersionRange[]>();\n\tfor (const server of serverVersions) {\n\t\tconst ranges = serverVersionsByMajor.get(server.major) ?? [];\n\t\tranges.push(server);\n\t\tserverVersionsByMajor.set(server.major, ranges);\n\t}\n\tconst candidates: RemoteWorkspaceVersion[] = [];\n\tfor (const client of clientVersions) {\n\t\tfor (const server of serverVersionsByMajor.get(client.major) ?? []) {\n\t\t\tconst minMinor = Math.max(client.minMinor, server.minMinor);\n\t\t\tconst maxMinor = Math.min(client.maxMinor, server.maxMinor);\n\t\t\tif (minMinor <= maxMinor) candidates.push({ major: client.major, minor: maxMinor });\n\t\t}\n\t}\n\treturn candidates;\n}\n\nexport function negotiateRemoteWorkspaceHandshake(\n\thandshake: RemoteWorkspaceHandshake,\n\toptions: RemoteWorkspaceNegotiationOptions,\n): RemoteWorkspaceNegotiationResult {\n\tvalidateRemoteWorkspaceProtocolLimits(handshake.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(options.serverLimits);\n\tvalidateVersionRanges(handshake.versions, \"Client version offer\");\n\tvalidateVersionRanges(options.serverVersions, \"Server version offer\");\n\tassertUnique(handshake.requiredCapabilities, \"Required capabilities\");\n\tassertUnique(handshake.optionalCapabilities, \"Optional capabilities\");\n\tconst optionalCapabilities = new Set(handshake.optionalCapabilities);\n\tconst duplicateOffer = handshake.requiredCapabilities.find((capability) => optionalCapabilities.has(capability));\n\tif (duplicateOffer) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"capability_mismatch\",\n\t\t\t`Capability is both required and optional: ${duplicateOffer}`,\n\t\t);\n\t}\n\tconst candidates = findCompatibleRemoteWorkspaceVersions(handshake.versions, options.serverVersions);\n\tcandidates.sort((left, right) => right.major - left.major || right.minor - left.minor);\n\tconst version = candidates[0];\n\tif (!version) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"incompatible_version\",\n\t\t\t\"No compatible remote workspace protocol version\",\n\t\t);\n\t}\n\tconst serverCapabilities = new Set(options.serverCapabilities);\n\tfor (const capability of handshake.requiredCapabilities) {\n\t\tif (!serverCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Server does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst clientCapabilities = new Set([...handshake.requiredCapabilities, ...handshake.optionalCapabilities]);\n\tfor (const capability of options.requiredClientCapabilities ?? []) {\n\t\tif (!clientCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Client does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst capabilities = Array.from(clientCapabilities)\n\t\t.filter((capability) => serverCapabilities.has(capability))\n\t\t.sort();\n\tconst clientLimits = handshake.receiveLimits;\n\tconst serverLimits = options.serverLimits;\n\treturn {\n\t\tversion,\n\t\tcapabilities,\n\t\tlimits: {\n\t\t\tmaxMessageBytes: Math.min(clientLimits.maxMessageBytes, serverLimits.maxMessageBytes),\n\t\t\tmaxStringBytes: Math.min(clientLimits.maxStringBytes, serverLimits.maxStringBytes),\n\t\t\tmaxDepth: Math.min(clientLimits.maxDepth, serverLimits.maxDepth),\n\t\t\tmaxObjectKeys: Math.min(clientLimits.maxObjectKeys, serverLimits.maxObjectKeys),\n\t\t\tmaxArrayLength: Math.min(clientLimits.maxArrayLength, serverLimits.maxArrayLength),\n\t\t\tmaxNodes: Math.min(clientLimits.maxNodes, serverLimits.maxNodes),\n\t\t\tmaxRequestMs: Math.min(clientLimits.maxRequestMs, serverLimits.maxRequestMs),\n\t\t\tmaxTransferChunkBytes: Math.min(clientLimits.maxTransferChunkBytes, serverLimits.maxTransferChunkBytes),\n\t\t\tmaxPendingTransferBytes: Math.min(clientLimits.maxPendingTransferBytes, serverLimits.maxPendingTransferBytes),\n\t\t\tmaxPendingInboundBytes: Math.min(clientLimits.maxPendingInboundBytes, serverLimits.maxPendingInboundBytes),\n\t\t\tmaxPendingInboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingInboundMessages,\n\t\t\t\tserverLimits.maxPendingInboundMessages,\n\t\t\t),\n\t\t\tmaxPendingOutboundBytes: Math.min(clientLimits.maxPendingOutboundBytes, serverLimits.maxPendingOutboundBytes),\n\t\t\tmaxPendingOutboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingOutboundMessages,\n\t\t\t\tserverLimits.maxPendingOutboundMessages,\n\t\t\t),\n\t\t\tmaxTransferBytes: Math.min(clientLimits.maxTransferBytes, serverLimits.maxTransferBytes),\n\t\t\tmaxTransferChunks: Math.min(clientLimits.maxTransferChunks, serverLimits.maxTransferChunks),\n\t\t\tmaxActiveRequests: Math.min(clientLimits.maxActiveRequests, serverLimits.maxActiveRequests),\n\t\t\tmaxActiveTransfers: Math.min(clientLimits.maxActiveTransfers, serverLimits.maxActiveTransfers),\n\t\t\tmaxCancellationMs: Math.min(clientLimits.maxCancellationMs, serverLimits.maxCancellationMs),\n\t\t\tmaxTransportSendMs: Math.min(clientLimits.maxTransportSendMs, serverLimits.maxTransportSendMs),\n\t\t},\n\t};\n}\n\nexport function getRemoteWorkspaceMethodKind(method: RemoteWorkspaceMethod): RemoteWorkspaceOperationKind {\n\tswitch (method) {\n\t\tcase \"workspace.write\":\n\t\tcase \"workspace.mkdir\":\n\t\tcase \"transfer.upload\":\n\t\t\treturn \"mutation\";\n\t\tcase \"workspace.exec\":\n\t\t\treturn \"process\";\n\t\tcase \"tool.invoke\":\n\t\t\treturn \"service\";\n\t\tdefault:\n\t\t\treturn \"read\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/contract.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { type Static, Type } from \"typebox\";\nimport { Compile, type Validator } from \"typebox/compile\";\n\nexport const REMOTE_WORKSPACE_PROTOCOL_VERSIONS = [{ major: 1, minMinor: 0, maxMinor: 0 }] as const;\n\nexport const REMOTE_WORKSPACE_CAPABILITIES = [\n\t\"catalog_refresh\",\n\t\"tool_updates\",\n\t\"primitive_operations\",\n\t\"lsp_status\",\n\t\"file_transfer\",\n\t\"artifacts\",\n] as const;\n\nexport type RemoteWorkspaceCapability = (typeof REMOTE_WORKSPACE_CAPABILITIES)[number];\n\nexport const REMOTE_WORKSPACE_METHODS = [\n\t\"catalog.get\",\n\t\"tool.invoke\",\n\t\"workspace.access\",\n\t\"workspace.read\",\n\t\"workspace.write\",\n\t\"workspace.mkdir\",\n\t\"workspace.stat\",\n\t\"workspace.readdir\",\n\t\"workspace.glob\",\n\t\"workspace.grep\",\n\t\"workspace.detect_image_mime\",\n\t\"workspace.exec\",\n\t\"lsp.status\",\n\t\"resource.read\",\n\t\"artifact.read\",\n\t\"transfer.upload\",\n\t\"transfer.download\",\n] as const;\n\nexport type RemoteWorkspaceMethod = (typeof REMOTE_WORKSPACE_METHODS)[number];\n\nexport const REMOTE_WORKSPACE_ERROR_CODES = [\n\t\"invalid_request\",\n\t\"method_not_supported\",\n\t\"incompatible_version\",\n\t\"capability_mismatch\",\n\t\"schema_mismatch\",\n\t\"stale_generation\",\n\t\"not_available\",\n\t\"limit_exceeded\",\n\t\"deadline_exceeded\",\n\t\"cancelled\",\n\t\"conflict\",\n\t\"generation_retired\",\n\t\"connection_draining\",\n\t\"result_too_large\",\n\t\"internal_error\",\n] as const;\n\nexport type RemoteWorkspaceErrorCode = (typeof REMOTE_WORKSPACE_ERROR_CODES)[number];\nexport type RemoteWorkspaceExecutionState = \"not_started\" | \"completed\" | \"indeterminate\";\nexport type RemoteWorkspacePathFlavor = \"posix\" | \"windows\";\nexport type RemoteWorkspaceOperationKind = \"read\" | \"mutation\" | \"process\" | \"service\";\n\nexport interface RemoteWorkspaceStructuralLimits {\n\tmaxMessageBytes: number;\n\tmaxStringBytes: number;\n\tmaxDepth: number;\n\tmaxObjectKeys: number;\n\tmaxArrayLength: number;\n\tmaxNodes: number;\n}\n\nexport interface RemoteWorkspaceProtocolLimits extends RemoteWorkspaceStructuralLimits {\n\tmaxRequestMs: number;\n\tmaxTransferChunkBytes: number;\n\tmaxPendingTransferBytes: number;\n\tmaxPendingInboundBytes: number;\n\tmaxPendingInboundMessages: number;\n\tmaxPendingOutboundBytes: number;\n\tmaxPendingOutboundMessages: number;\n\tmaxTransferBytes: number;\n\tmaxTransferChunks: number;\n\tmaxActiveRequests: number;\n\tmaxActiveTransfers: number;\n\tmaxCancellationMs: number;\n\tmaxTransportSendMs: number;\n}\n\nexport const DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS: RemoteWorkspaceProtocolLimits = {\n\tmaxMessageBytes: 2 * 1024 * 1024,\n\tmaxStringBytes: 1536 * 1024,\n\tmaxDepth: 32,\n\tmaxObjectKeys: 4096,\n\tmaxArrayLength: 4096,\n\tmaxNodes: 16_384,\n\tmaxRequestMs: 10 * 60 * 1000,\n\tmaxTransferChunkBytes: 64 * 1024,\n\tmaxPendingTransferBytes: 256 * 1024,\n\tmaxPendingInboundBytes: 4 * 1024 * 1024,\n\tmaxPendingInboundMessages: 64,\n\tmaxPendingOutboundBytes: 4 * 1024 * 1024,\n\tmaxPendingOutboundMessages: 128,\n\tmaxTransferBytes: 100 * 1024 * 1024,\n\tmaxTransferChunks: 16_384,\n\tmaxActiveRequests: 64,\n\tmaxActiveTransfers: 8,\n\tmaxCancellationMs: 100,\n\tmaxTransportSendMs: 10_000,\n};\n\nconst closedObject = { additionalProperties: false } as const;\nconst safeIntegerOptions = { minimum: 0, maximum: Number.MAX_SAFE_INTEGER } as const;\nconst RequestIdSchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z0-9._:-]+$\" });\nconst HashSchema = Type.String({ pattern: \"^[0-9a-f]{64}$\" });\nconst CapabilitySchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[a-z][a-z0-9_.-]*$\" });\nconst RemoteWorkspaceMethodSchema = Type.Union([\n\tType.Literal(\"catalog.get\"),\n\tType.Literal(\"tool.invoke\"),\n\tType.Literal(\"workspace.access\"),\n\tType.Literal(\"workspace.read\"),\n\tType.Literal(\"workspace.write\"),\n\tType.Literal(\"workspace.mkdir\"),\n\tType.Literal(\"workspace.stat\"),\n\tType.Literal(\"workspace.readdir\"),\n\tType.Literal(\"workspace.glob\"),\n\tType.Literal(\"workspace.grep\"),\n\tType.Literal(\"workspace.detect_image_mime\"),\n\tType.Literal(\"workspace.exec\"),\n\tType.Literal(\"lsp.status\"),\n\tType.Literal(\"resource.read\"),\n\tType.Literal(\"artifact.read\"),\n\tType.Literal(\"transfer.upload\"),\n\tType.Literal(\"transfer.download\"),\n]);\n\nexport const RemoteWorkspaceVersionRangeSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t\tmaxMinor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersionRange = Static<typeof RemoteWorkspaceVersionRangeSchema>;\n\nexport const RemoteWorkspaceVersionSchema = Type.Object(\n\t{\n\t\tmajor: Type.Integer({ minimum: 1, maximum: 65535 }),\n\t\tminor: Type.Integer({ minimum: 0, maximum: 65535 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceVersion = Static<typeof RemoteWorkspaceVersionSchema>;\n\nexport const RemoteWorkspaceLimitsSchema = Type.Object(\n\t{\n\t\tmaxMessageBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxStringBytes: Type.Integer({ minimum: 1, maximum: 64 * 1024 * 1024 }),\n\t\tmaxDepth: Type.Integer({ minimum: 1, maximum: 256 }),\n\t\tmaxObjectKeys: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxArrayLength: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxNodes: Type.Integer({ minimum: 1, maximum: 2_000_000 }),\n\t\tmaxRequestMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tmaxTransferChunkBytes: Type.Integer({ minimum: 1024, maximum: 1024 * 1024 }),\n\t\tmaxPendingTransferBytes: Type.Integer({ minimum: 1024, maximum: 16 * 1024 * 1024 }),\n\t\tmaxPendingInboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingInboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxPendingOutboundBytes: Type.Integer({ minimum: 1024, maximum: 64 * 1024 * 1024 }),\n\t\tmaxPendingOutboundMessages: Type.Integer({ minimum: 1, maximum: 100_000 }),\n\t\tmaxTransferBytes: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tmaxTransferChunks: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t\tmaxActiveRequests: Type.Integer({ minimum: 1, maximum: 10_000_000 }),\n\t\tmaxActiveTransfers: Type.Integer({ minimum: 1, maximum: 10_000 }),\n\t\tmaxCancellationMs: Type.Integer({ minimum: 1, maximum: 60_000 }),\n\t\tmaxTransportSendMs: Type.Integer({ minimum: 1, maximum: 5 * 60_000 }),\n\t},\n\tclosedObject,\n);\n\nexport const RemoteWorkspaceIdentitySchema = Type.Object(\n\t{\n\t\tid: Type.String({ minLength: 16, maxLength: 128, pattern: \"^[A-Za-z0-9_-]+$\" }),\n\t\troot: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tpathFlavor: Type.Union([Type.Literal(\"posix\"), Type.Literal(\"windows\")]),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceIdentity = Static<typeof RemoteWorkspaceIdentitySchema>;\n\nexport const RemoteWorkspaceToolCatalogEntrySchema = Type.Object(\n\t{\n\t\tname: Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z][A-Za-z0-9_.-]*$\" }),\n\t\texecutionMode: Type.Union([\n\t\t\tType.Literal(\"read\"),\n\t\t\tType.Literal(\"mutation\"),\n\t\t\tType.Literal(\"process\"),\n\t\t\tType.Literal(\"service\"),\n\t\t]),\n\t\tparameterSchema: Type.Record(Type.String({ maxLength: 256 }), Type.Unknown()),\n\t\tschemaHash: HashSchema,\n\t\tfeatureFlags: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceToolCatalogEntry = Static<typeof RemoteWorkspaceToolCatalogEntrySchema>;\n\nexport const RemoteWorkspaceCatalogSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\ttools: Type.Array(RemoteWorkspaceToolCatalogEntrySchema, { maxItems: 1024 }),\n\t\toperations: Type.Array(RemoteWorkspaceMethodSchema, { maxItems: 256 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalog = Static<typeof RemoteWorkspaceCatalogSchema>;\n\nexport const RemoteWorkspaceHandshakeSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake\"),\n\t\tid: RequestIdSchema,\n\t\tversions: Type.Array(RemoteWorkspaceVersionRangeSchema, { minItems: 1, maxItems: 16 }),\n\t\trequiredCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\toptionalCapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\treceiveLimits: RemoteWorkspaceLimitsSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshake = Static<typeof RemoteWorkspaceHandshakeSchema>;\n\nexport const RemoteWorkspaceHandshakeAckSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"handshake_ack\"),\n\t\tid: RequestIdSchema,\n\t\tversion: RemoteWorkspaceVersionSchema,\n\t\tcapabilities: Type.Array(CapabilitySchema, { maxItems: 256 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t\tlimits: RemoteWorkspaceLimitsSchema,\n\t\tcatalog: RemoteWorkspaceCatalogSchema,\n\t\tcatalogHash: HashSchema,\n\t\tbackendMetadata: Type.Object(\n\t\t\t{\n\t\t\t\tkind: Type.Literal(\"remote-workspace\"),\n\t\t\t\tlabel: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceHandshakeAck = Static<typeof RemoteWorkspaceHandshakeAckSchema>;\n\nexport const RemoteWorkspaceRequestSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"request\"),\n\t\tid: RequestIdSchema,\n\t\tmethod: Type.String({ minLength: 1, maxLength: 128 }),\n\t\ttimeoutMs: Type.Integer({ minimum: 1, maximum: 24 * 60 * 60 * 1000 }),\n\t\tparams: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceRequest = Static<typeof RemoteWorkspaceRequestSchema>;\n\nexport const RemoteWorkspaceCancelSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"cancel\"),\n\t\tid: RequestIdSchema,\n\t\treason: Type.Optional(Type.String({ maxLength: 256 })),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCancel = Static<typeof RemoteWorkspaceCancelSchema>;\n\nexport const RemoteWorkspaceTransferChunkSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_chunk\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tdataBase64: Type.String({ minLength: 4 }),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferChunk = Static<typeof RemoteWorkspaceTransferChunkSchema>;\n\nexport const RemoteWorkspaceTransferFinishSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_finish\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferFinish = Static<typeof RemoteWorkspaceTransferFinishSchema>;\n\nexport const RemoteWorkspaceResultSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"result\"),\n\t\tid: RequestIdSchema,\n\t\tresult: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceResult = Static<typeof RemoteWorkspaceResultSchema>;\n\nexport const RemoteWorkspaceProtocolErrorSchema = Type.Object(\n\t{\n\t\tcode: Type.Union([\n\t\t\tType.Literal(\"invalid_request\"),\n\t\t\tType.Literal(\"method_not_supported\"),\n\t\t\tType.Literal(\"incompatible_version\"),\n\t\t\tType.Literal(\"capability_mismatch\"),\n\t\t\tType.Literal(\"schema_mismatch\"),\n\t\t\tType.Literal(\"stale_generation\"),\n\t\t\tType.Literal(\"not_available\"),\n\t\t\tType.Literal(\"limit_exceeded\"),\n\t\t\tType.Literal(\"deadline_exceeded\"),\n\t\t\tType.Literal(\"cancelled\"),\n\t\t\tType.Literal(\"conflict\"),\n\t\t\tType.Literal(\"generation_retired\"),\n\t\t\tType.Literal(\"connection_draining\"),\n\t\t\tType.Literal(\"result_too_large\"),\n\t\t\tType.Literal(\"internal_error\"),\n\t\t]),\n\t\tmessage: Type.String({ minLength: 1, maxLength: 4096 }),\n\t\texecutionState: Type.Union([\n\t\t\tType.Literal(\"not_started\"),\n\t\t\tType.Literal(\"completed\"),\n\t\t\tType.Literal(\"indeterminate\"),\n\t\t]),\n\t\tretryable: Type.Boolean(),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceProtocolError = Static<typeof RemoteWorkspaceProtocolErrorSchema>;\n\nexport const RemoteWorkspaceErrorMessageSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"error\"),\n\t\tid: RequestIdSchema,\n\t\terror: RemoteWorkspaceProtocolErrorSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceErrorMessage = Static<typeof RemoteWorkspaceErrorMessageSchema>;\n\nexport const RemoteWorkspaceUpdateSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"update\"),\n\t\tid: RequestIdSchema,\n\t\tsequence: Type.Integer(safeIntegerOptions),\n\t\tupdate: Type.Unknown(),\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceUpdate = Static<typeof RemoteWorkspaceUpdateSchema>;\n\nexport const RemoteWorkspaceTransferStartSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"transfer_start\"),\n\t\tid: RequestIdSchema,\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceTransferStart = Static<typeof RemoteWorkspaceTransferStartSchema>;\n\nexport const RemoteWorkspaceCatalogChangedSchema = Type.Object(\n\t{\n\t\ttype: Type.Literal(\"catalog_changed\"),\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t},\n\tclosedObject,\n);\n\nexport type RemoteWorkspaceCatalogChanged = Static<typeof RemoteWorkspaceCatalogChangedSchema>;\n\nexport const RemoteWorkspaceClientMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeSchema,\n\tRemoteWorkspaceRequestSchema,\n\tRemoteWorkspaceCancelSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceTransferFinishSchema,\n]);\n\nexport const RemoteWorkspaceServerMessageSchema = Type.Union([\n\tRemoteWorkspaceHandshakeAckSchema,\n\tRemoteWorkspaceResultSchema,\n\tRemoteWorkspaceErrorMessageSchema,\n\tRemoteWorkspaceUpdateSchema,\n\tRemoteWorkspaceTransferStartSchema,\n\tRemoteWorkspaceTransferChunkSchema,\n\tRemoteWorkspaceCatalogChangedSchema,\n]);\n\nexport type RemoteWorkspaceClientMessage = Static<typeof RemoteWorkspaceClientMessageSchema>;\nexport type RemoteWorkspaceServerMessage = Static<typeof RemoteWorkspaceServerMessageSchema>;\n\nconst EmptyParamsSchema = Type.Object({}, closedObject);\nconst PathParamsSchema = Type.Object({ path: Type.String({ minLength: 1, maxLength: 32_768 }) }, closedObject);\nconst CatalogGetParamsSchema = EmptyParamsSchema;\nconst SessionEnvironmentSchema = Type.Object(\n\t{\n\t\tGRIP_SESSION_ID: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_SESSION_FILE: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_PROVIDER: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_MODEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tGRIP_REASONING_LEVEL: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t},\n\tclosedObject,\n);\n/** Shared v2 mutations require an observed digest/absence, or an explicitly unsafe write. */\nconst ExpectedRevisionSchema = Type.Union([\n\tType.Object({ sha256: HashSchema }, closedObject),\n\tType.Object({ absent: Type.Literal(true) }, closedObject),\n\tType.Object({ unsafeOverwrite: Type.Literal(true) }, closedObject),\n]);\nexport type ExpectedWorkspaceRevision = Static<typeof ExpectedRevisionSchema>;\nconst ToolInvokeParamsSchema = Type.Object(\n\t{\n\t\tgeneration: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\tcatalogHash: HashSchema,\n\t\ttoolName: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tschemaHash: HashSchema,\n\t\targumentsPrepared: Type.Literal(true),\n\t\targuments: Type.Unknown(),\n\t\texpectedRevision: Type.Optional(ExpectedRevisionSchema),\n\t\texecutionOptions: Type.Object(\n\t\t\t{\n\t\t\t\timageAutoResize: Type.Optional(Type.Boolean()),\n\t\t\t\tshellCommandPrefix: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\t\t\tsessionEnvironment: Type.Optional(SessionEnvironmentSchema),\n\t\t\t},\n\t\t\tclosedObject,\n\t\t),\n\t},\n\tclosedObject,\n);\nconst AccessParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tmode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"exists\"), Type.Literal(\"read\"), Type.Literal(\"write\"), Type.Literal(\"readwrite\")]),\n\t\t),\n\t},\n\tclosedObject,\n);\nconst WriteParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcontentBase64: Type.String(),\n\t\texpectedRevision: Type.Optional(ExpectedRevisionSchema),\n\t},\n\tclosedObject,\n);\nconst MkdirParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\trecursive: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst GlobParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tignore: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 4096 }),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst GrepParamsSchema = Type.Object(\n\t{\n\t\tpattern: Type.String({ maxLength: 1024 * 1024 }),\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tglob: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tignoreCase: Type.Optional(Type.Boolean()),\n\t\tliteral: Type.Optional(Type.Boolean()),\n\t\tlimit: Type.Integer({ minimum: 1, maximum: 1_000_000 }),\n\t},\n\tclosedObject,\n);\nconst ExecParamsSchema = Type.Object(\n\t{\n\t\tcommand: Type.String({ minLength: 1 }),\n\t\tcwd: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\nconst TransferUploadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t\toverwrite: Type.Boolean(),\n\t},\n\tclosedObject,\n);\nconst TransferDownloadParamsSchema = Type.Object(\n\t{\n\t\tpath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t},\n\tclosedObject,\n);\n\nconst ToolContentSchema = Type.Union([\n\tType.Object({ type: Type.Literal(\"text\"), text: Type.String() }, closedObject),\n\tType.Object(\n\t\t{\n\t\t\ttype: Type.Literal(\"image\"),\n\t\t\tdata: Type.String(),\n\t\t\tmimeType: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t},\n\t\tclosedObject,\n\t),\n]);\nconst ToolResultSchema = Type.Object(\n\t{\n\t\tcontent: Type.Array(ToolContentSchema),\n\t\tdetails: Type.Optional(Type.Unknown()),\n\t\tterminate: Type.Optional(Type.Boolean()),\n\t},\n\tclosedObject,\n);\nconst EmptyResultSchema = EmptyParamsSchema;\nconst LspStatusServerSchema = Type.Object(\n\t{\n\t\tserverId: Type.String({ minLength: 1, maxLength: 256 }),\n\t\tlanguageIds: Type.Array(Type.String({ maxLength: 256 }), { maxItems: 256 }),\n\t\ttransport: Type.String({ minLength: 1, maxLength: 128 }),\n\t\tinstanceKey: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\tworkspaceRoot: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\tendpoint: Type.Optional(Type.String({ maxLength: 4096 })),\n\t\trootUri: Type.Optional(Type.String({ maxLength: 32_768 })),\n\t\townership: Type.Union([Type.Literal(\"managed\"), Type.Literal(\"attached\")]),\n\t\tshutdownMode: Type.Union([Type.Literal(\"protocol\"), Type.Literal(\"disconnect\")]),\n\t\tstate: Type.Union([\n\t\t\tType.Literal(\"idle\"),\n\t\t\tType.Literal(\"connecting\"),\n\t\t\tType.Literal(\"initializing\"),\n\t\t\tType.Literal(\"running\"),\n\t\t\tType.Literal(\"closed\"),\n\t\t\tType.Literal(\"failed\"),\n\t\t\tType.Literal(\"disposed\"),\n\t\t]),\n\t\treconnectEligible: Type.Boolean(),\n\t\trunning: Type.Boolean(),\n\t\tstarting: Type.Boolean(),\n\t\tdiagnosticsCount: Type.Integer(safeIntegerOptions),\n\t\tlastError: Type.Optional(Type.String()),\n\t\tlastRequestError: Type.Optional(Type.String()),\n\t\tstderr: Type.Optional(Type.String()),\n\t\tsynchronizationError: Type.Optional(Type.String()),\n\t},\n\tclosedObject,\n);\nconst LspStatusResultSchema = Type.Object(\n\t{ enabled: Type.Boolean(), servers: Type.Array(LspStatusServerSchema, { maxItems: 1024 }) },\n\tclosedObject,\n);\nexport type RemoteLspStatus = Static<typeof LspStatusResultSchema>;\nconst ReadResultSchema = Type.Object(\n\t{\n\t\tcontentBase64: Type.String(),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t\trevision: Type.Optional(HashSchema),\n\t},\n\tclosedObject,\n);\nconst StatResultSchema = Type.Object(\n\t{\n\t\tkind: Type.Union([\n\t\t\tType.Literal(\"file\"),\n\t\t\tType.Literal(\"directory\"),\n\t\t\tType.Literal(\"other\"),\n\t\t\tType.Literal(\"absent\"),\n\t\t]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ReaddirResultSchema = Type.Object(\n\t{\n\t\tentries: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GlobResultSchema = Type.Object(\n\t{\n\t\tmatches: Type.Array(Type.String({ maxLength: 32_768 }), { maxItems: 1_000_000 }),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst GrepResultSchema = Type.Object(\n\t{\n\t\tisDirectory: Type.Boolean(),\n\t\tmatches: Type.Array(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\tfilePath: Type.String({ minLength: 1, maxLength: 32_768 }),\n\t\t\t\t\tlineNumber: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\t\t\tlineText: Type.Optional(Type.String()),\n\t\t\t\t},\n\t\t\t\tclosedObject,\n\t\t\t),\n\t\t\t{ maxItems: 1_000_000 },\n\t\t),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst MimeResultSchema = Type.Object(\n\t{\n\t\tmimeType: Type.Union([\n\t\t\tType.Literal(\"image/jpeg\"),\n\t\t\tType.Literal(\"image/png\"),\n\t\t\tType.Literal(\"image/gif\"),\n\t\t\tType.Literal(\"image/webp\"),\n\t\t\tType.Null(),\n\t\t]),\n\t\tworkspace: RemoteWorkspaceIdentitySchema,\n\t},\n\tclosedObject,\n);\nconst ExecResultSchema = Type.Object(\n\t{ exitCode: Type.Union([Type.Integer({ minimum: 0, maximum: 255 }), Type.Null()]) },\n\tclosedObject,\n);\nconst TransferResultSchema = Type.Object(\n\t{\n\t\tlength: Type.Integer(safeIntegerOptions),\n\t\tsha256: HashSchema,\n\t},\n\tclosedObject,\n);\n\nconst parameterValidators = {\n\t\"catalog.get\": Compile(CatalogGetParamsSchema),\n\t\"tool.invoke\": Compile(ToolInvokeParamsSchema),\n\t\"workspace.access\": Compile(AccessParamsSchema),\n\t\"workspace.read\": Compile(PathParamsSchema),\n\t\"workspace.write\": Compile(WriteParamsSchema),\n\t\"workspace.mkdir\": Compile(MkdirParamsSchema),\n\t\"workspace.stat\": Compile(PathParamsSchema),\n\t\"workspace.readdir\": Compile(PathParamsSchema),\n\t\"workspace.glob\": Compile(GlobParamsSchema),\n\t\"workspace.grep\": Compile(GrepParamsSchema),\n\t\"workspace.detect_image_mime\": Compile(PathParamsSchema),\n\t\"workspace.exec\": Compile(ExecParamsSchema),\n\t\"lsp.status\": Compile(EmptyParamsSchema),\n\t\"resource.read\": Compile(PathParamsSchema),\n\t\"artifact.read\": Compile(PathParamsSchema),\n\t\"transfer.upload\": Compile(TransferUploadParamsSchema),\n\t\"transfer.download\": Compile(TransferDownloadParamsSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile>>;\n\nconst resultValidators = {\n\t\"catalog.get\": Compile(RemoteWorkspaceCatalogSchema),\n\t\"tool.invoke\": Compile(ToolResultSchema),\n\t\"workspace.access\": Compile(EmptyResultSchema),\n\t\"workspace.read\": Compile(ReadResultSchema),\n\t\"workspace.write\": Compile(EmptyResultSchema),\n\t\"workspace.mkdir\": Compile(EmptyResultSchema),\n\t\"workspace.stat\": Compile(StatResultSchema),\n\t\"workspace.readdir\": Compile(ReaddirResultSchema),\n\t\"workspace.glob\": Compile(GlobResultSchema),\n\t\"workspace.grep\": Compile(GrepResultSchema),\n\t\"workspace.detect_image_mime\": Compile(MimeResultSchema),\n\t\"workspace.exec\": Compile(ExecResultSchema),\n\t\"lsp.status\": Compile(LspStatusResultSchema),\n\t\"resource.read\": Compile(ReadResultSchema),\n\t\"artifact.read\": Compile(TransferResultSchema),\n\t\"transfer.upload\": Compile(TransferResultSchema),\n\t\"transfer.download\": Compile(TransferResultSchema),\n} satisfies Record<RemoteWorkspaceMethod, ReturnType<typeof Compile> | undefined>;\n\nconst clientMessageValidator = Compile(RemoteWorkspaceClientMessageSchema);\nconst serverMessageValidator = Compile(RemoteWorkspaceServerMessageSchema);\nconst handshakeAckValidator = Compile(RemoteWorkspaceHandshakeAckSchema);\nconst limitsValidator = Compile(RemoteWorkspaceLimitsSchema);\n\nexport class RemoteWorkspaceValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceValidationError\";\n\t}\n}\n\nfunction validationMessage(validator: Validator, value: unknown): string {\n\tconst error = validator.Errors(value)[0];\n\tif (!error) return \"value does not match the protocol schema\";\n\treturn `${error.instancePath || \"/\"}: ${error.message}`;\n}\n\nfunction parseWithValidator<T>(validator: Validator, value: unknown, label: string): T {\n\tif (!validator.Check(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(`Invalid ${label}: ${validationMessage(validator, value)}`);\n\t}\n\treturn value as T;\n}\n\nexport function validateRemoteWorkspaceProtocolLimits(value: unknown): RemoteWorkspaceProtocolLimits {\n\tconst limits = parseWithValidator<RemoteWorkspaceProtocolLimits>(limitsValidator, value, \"protocol limits\");\n\tif (limits.maxMessageBytes > limits.maxPendingInboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingInboundBytes\");\n\t}\n\tif (limits.maxMessageBytes > limits.maxPendingOutboundBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxMessageBytes must not exceed maxPendingOutboundBytes\");\n\t}\n\tif (limits.maxTransferChunkBytes > limits.maxPendingTransferBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must not exceed maxPendingTransferBytes\");\n\t}\n\tif (Math.ceil((limits.maxTransferChunkBytes * 4) / 3) + 512 > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"maxTransferChunkBytes must fit in one base64 protocol message\");\n\t}\n\treturn limits;\n}\n\ninterface RemoteWorkspacePendingValue {\n\tvalue: unknown;\n\tdepth: number;\n}\n\ninterface RemoteWorkspaceStructureState {\n\tpending: RemoteWorkspacePendingValue[];\n\tnodes: number;\n\tobjectKeys: number;\n\tlimits: RemoteWorkspaceStructuralLimits;\n}\n\nfunction validateRemoteWorkspaceNodeBudget(depth: number, state: RemoteWorkspaceStructureState): void {\n\tstate.nodes++;\n\tif (state.nodes > state.limits.maxNodes)\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds node limit\");\n\tif (depth > state.limits.maxDepth) throw new RemoteWorkspaceValidationError(\"Protocol value exceeds depth limit\");\n}\n\nfunction validateRemoteWorkspaceScalar(value: unknown, limits: RemoteWorkspaceStructuralLimits): boolean {\n\tif (value === null || typeof value === \"boolean\") return true;\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Protocol numbers must be finite\");\n\t\treturn true;\n\t}\n\tif (typeof value !== \"string\") return false;\n\tif (Buffer.byteLength(value, \"utf8\") > limits.maxStringBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol string exceeds byte limit\");\n\t}\n\treturn true;\n}\n\nfunction enqueueRemoteWorkspaceArray(value: unknown[], depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value.length > state.limits.maxArrayLength) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol array exceeds item limit\");\n\t}\n\tfor (let index = value.length - 1; index >= 0; index--) {\n\t\tstate.pending.push({ value: value[index], depth: depth + 1 });\n\t}\n}\n\nfunction enqueueRemoteWorkspaceObject(value: unknown, depth: number, state: RemoteWorkspaceStructureState): void {\n\tif (value === null || typeof value !== \"object\")\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol values must be JSON-compatible\");\n\tconst prototype = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol objects must be plain JSON objects\");\n\t}\n\tconst entries = Object.entries(value);\n\tif (entries.length > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object exceeds key limit\");\n\t}\n\tstate.objectKeys += entries.length;\n\tif (state.objectKeys > state.limits.maxObjectKeys) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol value exceeds total key limit\");\n\t}\n\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\tconst entry = entries[index];\n\t\tif (!entry) continue;\n\t\tif (Buffer.byteLength(entry[0], \"utf8\") > state.limits.maxStringBytes) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\"Protocol object key exceeds byte limit\");\n\t\t}\n\t\tstate.pending.push({ value: entry[1], depth: depth + 1 });\n\t}\n}\n\nexport function assertRemoteWorkspaceJsonStructure(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): void {\n\tconst state: RemoteWorkspaceStructureState = {\n\t\tpending: [{ value, depth: 1 }],\n\t\tnodes: 0,\n\t\tobjectKeys: 0,\n\t\tlimits,\n\t};\n\twhile (state.pending.length > 0) {\n\t\tconst current = state.pending.pop();\n\t\tif (!current) break;\n\t\tvalidateRemoteWorkspaceNodeBudget(current.depth, state);\n\t\tif (validateRemoteWorkspaceScalar(current.value, limits)) continue;\n\t\tif (Array.isArray(current.value)) {\n\t\t\tenqueueRemoteWorkspaceArray(current.value, current.depth, state);\n\t\t\tcontinue;\n\t\t}\n\t\tenqueueRemoteWorkspaceObject(current.value, current.depth, state);\n\t}\n}\n\nexport function decodeRemoteWorkspaceMessage(\n\tpayload: string | Uint8Array,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tconst bytes = typeof payload === \"string\" ? Buffer.from(payload, \"utf8\") : payload;\n\tif (bytes.byteLength > limits.maxMessageBytes) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Protocol message exceeds byte limit\");\n\t}\n\tconst text = typeof payload === \"string\" ? payload : new TextDecoder(\"utf-8\", { fatal: true }).decode(payload);\n\tlet value: unknown;\n\ttry {\n\t\tvalue = JSON.parse(text) as unknown;\n\t} catch (error) {\n\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t`Protocol message is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn value;\n}\n\nexport function parseRemoteWorkspaceClientMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceClientMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceClientMessage>(clientMessageValidator, value, \"client message\");\n}\n\nexport function parseRemoteWorkspaceServerMessage(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): RemoteWorkspaceServerMessage {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator<RemoteWorkspaceServerMessage>(serverMessageValidator, value, \"server message\");\n}\n\nexport function isRemoteWorkspaceMethod(method: string): method is RemoteWorkspaceMethod {\n\treturn (REMOTE_WORKSPACE_METHODS as readonly string[]).includes(method);\n}\n\nexport function parseRemoteWorkspaceRequestParams(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst parsed = parseWithValidator(parameterValidators[method], value, `${method} params`);\n\tif (method === \"workspace.write\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceResult(\n\tmethod: RemoteWorkspaceMethod,\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\tconst validator = resultValidators[method];\n\tconst parsed = validator ? parseWithValidator(validator, value, `${method} result`) : value;\n\tif (method === \"workspace.read\" || method === \"resource.read\") {\n\t\tdecodeCanonicalBase64((parsed as { contentBase64: string }).contentBase64, limits.maxMessageBytes);\n\t}\n\treturn parsed;\n}\n\nexport function parseRemoteWorkspaceToolResult(\n\tvalue: unknown,\n\tlimits: RemoteWorkspaceStructuralLimits = DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n): unknown {\n\tassertRemoteWorkspaceJsonStructure(value, limits);\n\treturn parseWithValidator(Compile(ToolResultSchema), value, \"tool result\");\n}\n\nexport function decodeCanonicalBase64(value: string, maxBytes: number): Buffer {\n\tif (value.length % 4 !== 0 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\tconst decoded = Buffer.from(value, \"base64\");\n\tif (decoded.byteLength > maxBytes) throw new RemoteWorkspaceValidationError(\"Transfer chunk exceeds byte limit\");\n\tif (decoded.toString(\"base64\") !== value) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Transfer data is not canonical base64\");\n\t}\n\treturn decoded;\n}\n\nfunction canonicalJson(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (typeof value === \"boolean\") return value ? \"true\" : \"false\";\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new RemoteWorkspaceValidationError(\"Cannot hash a non-finite number\");\n\t\treturn JSON.stringify(value);\n\t}\n\tif (typeof value === \"string\") return JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map((entry) => canonicalJson(entry)).join(\",\")}]`;\n\tif (typeof value !== \"object\" || value === undefined) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Cannot hash a non-JSON value\");\n\t}\n\tconst entries = Object.entries(value).sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));\n\treturn `{${entries.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n}\n\nexport function hashRemoteWorkspaceJson(value: unknown): string {\n\tassertRemoteWorkspaceJsonStructure(value);\n\treturn createHash(\"sha256\").update(canonicalJson(value)).digest(\"hex\");\n}\n\nexport function hashRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): string {\n\treturn hashRemoteWorkspaceJson(catalog);\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n\tif (new Set(values).size !== values.length) throw new RemoteWorkspaceValidationError(`${label} contains duplicates`);\n}\n\nexport function validateRemoteWorkspaceCatalog(catalog: RemoteWorkspaceCatalog): void {\n\tparseWithValidator(Compile(RemoteWorkspaceCatalogSchema), catalog, \"tool catalog\");\n\tassertUnique(catalog.operations, \"Catalog operations\");\n\tassertUnique(\n\t\tcatalog.tools.map((tool) => tool.name),\n\t\t\"Catalog tool names\",\n\t);\n\tfor (const tool of catalog.tools) {\n\t\tassertUnique(tool.featureFlags, `Feature flags for ${tool.name}`);\n\t\tif (hashRemoteWorkspaceJson(tool.parameterSchema) !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Schema hash mismatch for tool ${tool.name}`);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceLocalToolSchemas(\n\tcatalog: RemoteWorkspaceCatalog,\n\tlocalToolSchemas: ReadonlyMap<string, string>,\n): void {\n\tfor (const tool of catalog.tools) {\n\t\tconst localHash = localToolSchemas.get(tool.name);\n\t\tif (localHash !== undefined && localHash !== tool.schemaHash) {\n\t\t\tthrow new RemoteWorkspaceValidationError(\n\t\t\t\t`Remote schema does not match the local canonical schema for ${tool.name}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function validateRemoteWorkspaceHandshakeAck(\n\tack: unknown,\n\toffer: RemoteWorkspaceHandshake,\n\tlocalToolSchemas: ReadonlyMap<string, string> = new Map(),\n): RemoteWorkspaceHandshakeAck {\n\tconst parsed = parseWithValidator<RemoteWorkspaceHandshakeAck>(handshakeAckValidator, ack, \"handshake response\");\n\tvalidateRemoteWorkspaceProtocolLimits(offer.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(parsed.limits);\n\tconst selected = offer.versions.some(\n\t\t(range) =>\n\t\t\trange.major === parsed.version.major &&\n\t\t\trange.minMinor <= parsed.version.minor &&\n\t\t\trange.maxMinor >= parsed.version.minor,\n\t);\n\tif (!selected)\n\t\tthrow new RemoteWorkspaceValidationError(\"Server selected a protocol version outside the offered range\");\n\tconst offeredCapabilities = new Set([...offer.requiredCapabilities, ...offer.optionalCapabilities]);\n\tfor (const capability of parsed.capabilities) {\n\t\tif (!offeredCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server selected an unoffered capability: ${capability}`);\n\t\t}\n\t}\n\tconst selectedCapabilities = new Set(parsed.capabilities);\n\tfor (const capability of offer.requiredCapabilities) {\n\t\tif (!selectedCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server omitted required capability: ${capability}`);\n\t\t}\n\t}\n\tassertUnique(parsed.capabilities, \"Negotiated capabilities\");\n\tvalidateRemoteWorkspaceCatalog(parsed.catalog);\n\tif (hashRemoteWorkspaceCatalog(parsed.catalog) !== parsed.catalogHash) {\n\t\tthrow new RemoteWorkspaceValidationError(\"Catalog hash does not match the negotiated catalog\");\n\t}\n\tvalidateRemoteWorkspaceLocalToolSchemas(parsed.catalog, localToolSchemas);\n\tfor (const key of Object.keys(offer.receiveLimits) as (keyof RemoteWorkspaceProtocolLimits)[]) {\n\t\tif (parsed.limits[key] > offer.receiveLimits[key]) {\n\t\t\tthrow new RemoteWorkspaceValidationError(`Server increased negotiated limit: ${key}`);\n\t\t}\n\t}\n\treturn parsed;\n}\n\nexport interface RemoteWorkspaceNegotiationOptions {\n\tserverVersions: readonly RemoteWorkspaceVersionRange[];\n\tserverCapabilities: readonly string[];\n\trequiredClientCapabilities?: readonly string[];\n\tserverLimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport interface RemoteWorkspaceNegotiationResult {\n\tversion: RemoteWorkspaceVersion;\n\tcapabilities: string[];\n\tlimits: RemoteWorkspaceProtocolLimits;\n}\n\nexport type RemoteWorkspaceNegotiationErrorCode = \"incompatible_version\" | \"capability_mismatch\";\n\nexport class RemoteWorkspaceNegotiationError extends Error {\n\treadonly code: RemoteWorkspaceNegotiationErrorCode;\n\n\tconstructor(code: RemoteWorkspaceNegotiationErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RemoteWorkspaceNegotiationError\";\n\t\tthis.code = code;\n\t}\n}\n\nfunction validateVersionRanges(ranges: readonly RemoteWorkspaceVersionRange[], label: string): void {\n\tfor (const range of ranges) {\n\t\tif (range.minMinor > range.maxMinor) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\"incompatible_version\", `${label} has an inverted minor range`);\n\t\t}\n\t}\n}\n\nfunction findCompatibleRemoteWorkspaceVersions(\n\tclientVersions: readonly RemoteWorkspaceVersionRange[],\n\tserverVersions: readonly RemoteWorkspaceVersionRange[],\n): RemoteWorkspaceVersion[] {\n\tconst serverVersionsByMajor = new Map<number, RemoteWorkspaceVersionRange[]>();\n\tfor (const server of serverVersions) {\n\t\tconst ranges = serverVersionsByMajor.get(server.major) ?? [];\n\t\tranges.push(server);\n\t\tserverVersionsByMajor.set(server.major, ranges);\n\t}\n\tconst candidates: RemoteWorkspaceVersion[] = [];\n\tfor (const client of clientVersions) {\n\t\tfor (const server of serverVersionsByMajor.get(client.major) ?? []) {\n\t\t\tconst minMinor = Math.max(client.minMinor, server.minMinor);\n\t\t\tconst maxMinor = Math.min(client.maxMinor, server.maxMinor);\n\t\t\tif (minMinor <= maxMinor) candidates.push({ major: client.major, minor: maxMinor });\n\t\t}\n\t}\n\treturn candidates;\n}\n\nexport function negotiateRemoteWorkspaceHandshake(\n\thandshake: RemoteWorkspaceHandshake,\n\toptions: RemoteWorkspaceNegotiationOptions,\n): RemoteWorkspaceNegotiationResult {\n\tvalidateRemoteWorkspaceProtocolLimits(handshake.receiveLimits);\n\tvalidateRemoteWorkspaceProtocolLimits(options.serverLimits);\n\tvalidateVersionRanges(handshake.versions, \"Client version offer\");\n\tvalidateVersionRanges(options.serverVersions, \"Server version offer\");\n\tassertUnique(handshake.requiredCapabilities, \"Required capabilities\");\n\tassertUnique(handshake.optionalCapabilities, \"Optional capabilities\");\n\tconst optionalCapabilities = new Set(handshake.optionalCapabilities);\n\tconst duplicateOffer = handshake.requiredCapabilities.find((capability) => optionalCapabilities.has(capability));\n\tif (duplicateOffer) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"capability_mismatch\",\n\t\t\t`Capability is both required and optional: ${duplicateOffer}`,\n\t\t);\n\t}\n\tconst candidates = findCompatibleRemoteWorkspaceVersions(handshake.versions, options.serverVersions);\n\tcandidates.sort((left, right) => right.major - left.major || right.minor - left.minor);\n\tconst version = candidates[0];\n\tif (!version) {\n\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\"incompatible_version\",\n\t\t\t\"No compatible remote workspace protocol version\",\n\t\t);\n\t}\n\tconst serverCapabilities = new Set(options.serverCapabilities);\n\tfor (const capability of handshake.requiredCapabilities) {\n\t\tif (!serverCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Server does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst clientCapabilities = new Set([...handshake.requiredCapabilities, ...handshake.optionalCapabilities]);\n\tfor (const capability of options.requiredClientCapabilities ?? []) {\n\t\tif (!clientCapabilities.has(capability)) {\n\t\t\tthrow new RemoteWorkspaceNegotiationError(\n\t\t\t\t\"capability_mismatch\",\n\t\t\t\t`Client does not support required capability: ${capability}`,\n\t\t\t);\n\t\t}\n\t}\n\tconst capabilities = Array.from(clientCapabilities)\n\t\t.filter((capability) => serverCapabilities.has(capability))\n\t\t.sort();\n\tconst clientLimits = handshake.receiveLimits;\n\tconst serverLimits = options.serverLimits;\n\treturn {\n\t\tversion,\n\t\tcapabilities,\n\t\tlimits: {\n\t\t\tmaxMessageBytes: Math.min(clientLimits.maxMessageBytes, serverLimits.maxMessageBytes),\n\t\t\tmaxStringBytes: Math.min(clientLimits.maxStringBytes, serverLimits.maxStringBytes),\n\t\t\tmaxDepth: Math.min(clientLimits.maxDepth, serverLimits.maxDepth),\n\t\t\tmaxObjectKeys: Math.min(clientLimits.maxObjectKeys, serverLimits.maxObjectKeys),\n\t\t\tmaxArrayLength: Math.min(clientLimits.maxArrayLength, serverLimits.maxArrayLength),\n\t\t\tmaxNodes: Math.min(clientLimits.maxNodes, serverLimits.maxNodes),\n\t\t\tmaxRequestMs: Math.min(clientLimits.maxRequestMs, serverLimits.maxRequestMs),\n\t\t\tmaxTransferChunkBytes: Math.min(clientLimits.maxTransferChunkBytes, serverLimits.maxTransferChunkBytes),\n\t\t\tmaxPendingTransferBytes: Math.min(clientLimits.maxPendingTransferBytes, serverLimits.maxPendingTransferBytes),\n\t\t\tmaxPendingInboundBytes: Math.min(clientLimits.maxPendingInboundBytes, serverLimits.maxPendingInboundBytes),\n\t\t\tmaxPendingInboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingInboundMessages,\n\t\t\t\tserverLimits.maxPendingInboundMessages,\n\t\t\t),\n\t\t\tmaxPendingOutboundBytes: Math.min(clientLimits.maxPendingOutboundBytes, serverLimits.maxPendingOutboundBytes),\n\t\t\tmaxPendingOutboundMessages: Math.min(\n\t\t\t\tclientLimits.maxPendingOutboundMessages,\n\t\t\t\tserverLimits.maxPendingOutboundMessages,\n\t\t\t),\n\t\t\tmaxTransferBytes: Math.min(clientLimits.maxTransferBytes, serverLimits.maxTransferBytes),\n\t\t\tmaxTransferChunks: Math.min(clientLimits.maxTransferChunks, serverLimits.maxTransferChunks),\n\t\t\tmaxActiveRequests: Math.min(clientLimits.maxActiveRequests, serverLimits.maxActiveRequests),\n\t\t\tmaxActiveTransfers: Math.min(clientLimits.maxActiveTransfers, serverLimits.maxActiveTransfers),\n\t\t\tmaxCancellationMs: Math.min(clientLimits.maxCancellationMs, serverLimits.maxCancellationMs),\n\t\t\tmaxTransportSendMs: Math.min(clientLimits.maxTransportSendMs, serverLimits.maxTransportSendMs),\n\t\t},\n\t};\n}\n\nexport function getRemoteWorkspaceMethodKind(method: RemoteWorkspaceMethod): RemoteWorkspaceOperationKind {\n\tswitch (method) {\n\t\tcase \"workspace.write\":\n\t\tcase \"workspace.mkdir\":\n\t\tcase \"transfer.upload\":\n\t\t\treturn \"mutation\";\n\t\tcase \"workspace.exec\":\n\t\t\treturn \"process\";\n\t\tcase \"tool.invoke\":\n\t\t\treturn \"service\";\n\t\tdefault:\n\t\t\treturn \"read\";\n\t}\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { RemoteWorkspaceClientMessage } from "./contract.ts";
2
+ import type { RemoteWorkspaceClientProtocol, RemoteWorkspaceProtocolCloseReason, RemoteWorkspaceProtocolTransport } from "./session.ts";
3
+ /** A TUI owns its physical guest connection; the guest isolates its workspace channel. */
4
+ export declare class GuestSharedClientTransport implements RemoteWorkspaceProtocolTransport<RemoteWorkspaceClientMessage> {
5
+ private readonly uplink;
6
+ private readonly channel;
7
+ private protocol?;
8
+ private closed;
9
+ readonly root: string;
10
+ private constructor();
11
+ static attach(url: string, root: string, token: string): Promise<GuestSharedClientTransport>;
12
+ bind(protocol: RemoteWorkspaceClientProtocol): void;
13
+ send(message: RemoteWorkspaceClientMessage): Promise<void>;
14
+ close(_reason: RemoteWorkspaceProtocolCloseReason): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=guest-shared-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-shared-client.d.ts","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/guest-shared-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EACX,6BAA6B,EAC7B,kCAAkC,EAClC,gCAAgC,EAChC,MAAM,cAAc,CAAC;AAEtB,0FAA0F;AAC1F,qBAAa,0BAA2B,YAAW,gCAAgC,CAAC,4BAA4B,CAAC;IAChH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,CAAgC;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,eAIN;IAED,OAAa,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAmBjG;IAED,IAAI,CAAC,QAAQ,EAAE,6BAA6B,GAAG,IAAI,CAGlD;IAED,IAAI,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzD;IAEK,KAAK,CAAC,OAAO,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtE;CACD","sourcesContent":["import type { RemoteWorkspaceClientMessage } from \"./contract.ts\";\nimport { GuestSharedUplink, type GuestUplinkChannel } from \"./guest-shared-uplink.ts\";\nimport type {\n\tRemoteWorkspaceClientProtocol,\n\tRemoteWorkspaceProtocolCloseReason,\n\tRemoteWorkspaceProtocolTransport,\n} from \"./session.ts\";\n\n/** A TUI owns its physical guest connection; the guest isolates its workspace channel. */\nexport class GuestSharedClientTransport implements RemoteWorkspaceProtocolTransport<RemoteWorkspaceClientMessage> {\n\tprivate readonly uplink: GuestSharedUplink;\n\tprivate readonly channel: GuestUplinkChannel;\n\tprivate protocol?: RemoteWorkspaceClientProtocol;\n\tprivate closed = false;\n\treadonly root: string;\n\n\tprivate constructor(uplink: GuestSharedUplink, channel: GuestUplinkChannel, root: string) {\n\t\tthis.uplink = uplink;\n\t\tthis.channel = channel;\n\t\tthis.root = root;\n\t}\n\n\tstatic async attach(url: string, root: string, token: string): Promise<GuestSharedClientTransport> {\n\t\tconst uplink = await GuestSharedUplink.connect(url, token);\n\t\tlet transport: GuestSharedClientTransport | undefined;\n\t\ttry {\n\t\t\tconst channel = await uplink.open(\n\t\t\t\troot,\n\t\t\t\t(message) => {\n\t\t\t\t\tvoid transport?.protocol?.receive(Buffer.from(JSON.stringify(message))).catch(() => undefined);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tif (!transport?.closed) void transport?.protocol?.disconnect(error.message);\n\t\t\t\t},\n\t\t\t);\n\t\t\ttransport = new GuestSharedClientTransport(uplink, channel, root);\n\t\t\treturn transport;\n\t\t} catch (error) {\n\t\t\tuplink.dispose();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tbind(protocol: RemoteWorkspaceClientProtocol): void {\n\t\tif (this.closed || this.protocol) throw new Error(\"Guest shared protocol cannot be bound\");\n\t\tthis.protocol = protocol;\n\t}\n\n\tsend(message: RemoteWorkspaceClientMessage): Promise<void> {\n\t\tif (this.closed || !this.protocol) return Promise.reject(new Error(\"Guest shared channel is closed\"));\n\t\treturn this.channel.send(message);\n\t}\n\n\tasync close(_reason: RemoteWorkspaceProtocolCloseReason): Promise<void> {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\ttry {\n\t\t\tawait this.channel.close();\n\t\t} finally {\n\t\t\tthis.uplink.dispose();\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,54 @@
1
+ import { GuestSharedUplink } from "./guest-shared-uplink.js";
2
+ /** A TUI owns its physical guest connection; the guest isolates its workspace channel. */
3
+ export class GuestSharedClientTransport {
4
+ uplink;
5
+ channel;
6
+ protocol;
7
+ closed = false;
8
+ root;
9
+ constructor(uplink, channel, root) {
10
+ this.uplink = uplink;
11
+ this.channel = channel;
12
+ this.root = root;
13
+ }
14
+ static async attach(url, root, token) {
15
+ const uplink = await GuestSharedUplink.connect(url, token);
16
+ let transport;
17
+ try {
18
+ const channel = await uplink.open(root, (message) => {
19
+ void transport?.protocol?.receive(Buffer.from(JSON.stringify(message))).catch(() => undefined);
20
+ }, (error) => {
21
+ if (!transport?.closed)
22
+ void transport?.protocol?.disconnect(error.message);
23
+ });
24
+ transport = new GuestSharedClientTransport(uplink, channel, root);
25
+ return transport;
26
+ }
27
+ catch (error) {
28
+ uplink.dispose();
29
+ throw error;
30
+ }
31
+ }
32
+ bind(protocol) {
33
+ if (this.closed || this.protocol)
34
+ throw new Error("Guest shared protocol cannot be bound");
35
+ this.protocol = protocol;
36
+ }
37
+ send(message) {
38
+ if (this.closed || !this.protocol)
39
+ return Promise.reject(new Error("Guest shared channel is closed"));
40
+ return this.channel.send(message);
41
+ }
42
+ async close(_reason) {
43
+ if (this.closed)
44
+ return;
45
+ this.closed = true;
46
+ try {
47
+ await this.channel.close();
48
+ }
49
+ finally {
50
+ this.uplink.dispose();
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=guest-shared-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-shared-client.js","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/guest-shared-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AAOtF,0FAA0F;AAC1F,MAAM,OAAO,0BAA0B;IACrB,MAAM,CAAoB;IAC1B,OAAO,CAAqB;IACrC,QAAQ,CAAiC;IACzC,MAAM,GAAG,KAAK,CAAC;IACd,IAAI,CAAS;IAEtB,YAAoB,MAAyB,EAAE,OAA2B,EAAE,IAAY,EAAE;QACzF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CACjB;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,IAAY,EAAE,KAAa,EAAuC;QAClG,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,SAAiD,CAAC;QACtD,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,IAAI,EACJ,CAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,KAAK,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAAA,CAC/F,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;gBACV,IAAI,CAAC,SAAS,EAAE,MAAM;oBAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAAA,CAC5E,CACD,CAAC;YACF,SAAS,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC;QACb,CAAC;IAAA,CACD;IAED,IAAI,CAAC,QAAuC,EAAQ;QACnD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAAA,CACzB;IAED,IAAI,CAAC,OAAqC,EAAiB;QAC1D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAAA,CAClC;IAED,KAAK,CAAC,KAAK,CAAC,OAA2C,EAAiB;QACvE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IAAA,CACD;CACD","sourcesContent":["import type { RemoteWorkspaceClientMessage } from \"./contract.ts\";\nimport { GuestSharedUplink, type GuestUplinkChannel } from \"./guest-shared-uplink.ts\";\nimport type {\n\tRemoteWorkspaceClientProtocol,\n\tRemoteWorkspaceProtocolCloseReason,\n\tRemoteWorkspaceProtocolTransport,\n} from \"./session.ts\";\n\n/** A TUI owns its physical guest connection; the guest isolates its workspace channel. */\nexport class GuestSharedClientTransport implements RemoteWorkspaceProtocolTransport<RemoteWorkspaceClientMessage> {\n\tprivate readonly uplink: GuestSharedUplink;\n\tprivate readonly channel: GuestUplinkChannel;\n\tprivate protocol?: RemoteWorkspaceClientProtocol;\n\tprivate closed = false;\n\treadonly root: string;\n\n\tprivate constructor(uplink: GuestSharedUplink, channel: GuestUplinkChannel, root: string) {\n\t\tthis.uplink = uplink;\n\t\tthis.channel = channel;\n\t\tthis.root = root;\n\t}\n\n\tstatic async attach(url: string, root: string, token: string): Promise<GuestSharedClientTransport> {\n\t\tconst uplink = await GuestSharedUplink.connect(url, token);\n\t\tlet transport: GuestSharedClientTransport | undefined;\n\t\ttry {\n\t\t\tconst channel = await uplink.open(\n\t\t\t\troot,\n\t\t\t\t(message) => {\n\t\t\t\t\tvoid transport?.protocol?.receive(Buffer.from(JSON.stringify(message))).catch(() => undefined);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tif (!transport?.closed) void transport?.protocol?.disconnect(error.message);\n\t\t\t\t},\n\t\t\t);\n\t\t\ttransport = new GuestSharedClientTransport(uplink, channel, root);\n\t\t\treturn transport;\n\t\t} catch (error) {\n\t\t\tuplink.dispose();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tbind(protocol: RemoteWorkspaceClientProtocol): void {\n\t\tif (this.closed || this.protocol) throw new Error(\"Guest shared protocol cannot be bound\");\n\t\tthis.protocol = protocol;\n\t}\n\n\tsend(message: RemoteWorkspaceClientMessage): Promise<void> {\n\t\tif (this.closed || !this.protocol) return Promise.reject(new Error(\"Guest shared channel is closed\"));\n\t\treturn this.channel.send(message);\n\t}\n\n\tasync close(_reason: RemoteWorkspaceProtocolCloseReason): Promise<void> {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\ttry {\n\t\t\tawait this.channel.close();\n\t\t} finally {\n\t\t\tthis.uplink.dispose();\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { SharedWorkspaceClientFrame } from "./shared-transport.ts";
2
+ export type GuestOutboundFrame = Exclude<SharedWorkspaceClientFrame, {
3
+ type: "hello";
4
+ }>;
5
+ /** FIFO within each channel, round-robin between channels, including ordered detaches. */
6
+ export declare class GuestOutboundScheduler {
7
+ private readonly buckets;
8
+ private readonly ready;
9
+ private readonly pending;
10
+ private pendingBytes;
11
+ private inFlight?;
12
+ private scheduled;
13
+ private failure?;
14
+ private readonly writer;
15
+ private readonly bufferedAmount;
16
+ private readonly onFailure;
17
+ constructor(writer: (bytes: Buffer, callback: (error?: Error) => void) => void, bufferedAmount: () => number, onFailure: (error: Error) => void);
18
+ private schedule;
19
+ private pump;
20
+ send(frame: GuestOutboundFrame): Promise<void>;
21
+ fail(error: Error): void;
22
+ }
23
+ //# sourceMappingURL=guest-shared-outbound-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-shared-outbound-scheduler.d.ts","sourceRoot":"","sources":["../../../src/core/remote-workspace-protocol/guest-shared-outbound-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAIxF,0FAA0F;AAC1F,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAM;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6D;IACpF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,YACC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,EAClE,cAAc,EAAE,MAAM,MAAM,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAKjC;IAED,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,IAAI;IAoBZ,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C7C;IAED,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAMvB;CACD","sourcesContent":["import { DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS as limits } from \"./contract.ts\";\nimport type { SharedWorkspaceClientFrame } from \"./shared-transport.ts\";\n\nexport type GuestOutboundFrame = Exclude<SharedWorkspaceClientFrame, { type: \"hello\" }>;\n\ntype Job = { bytes: Buffer; key: string; finish: (error?: Error) => void };\n\n/** FIFO within each channel, round-robin between channels, including ordered detaches. */\nexport class GuestOutboundScheduler {\n\tprivate readonly buckets = new Map<string, Job[]>();\n\tprivate readonly ready: string[] = [];\n\tprivate readonly pending = new Set<Job>();\n\tprivate pendingBytes = 0;\n\tprivate inFlight?: Job;\n\tprivate scheduled = false;\n\tprivate failure?: Error;\n\tprivate readonly writer: (bytes: Buffer, callback: (error?: Error) => void) => void;\n\tprivate readonly bufferedAmount: () => number;\n\tprivate readonly onFailure: (error: Error) => void;\n\n\tconstructor(\n\t\twriter: (bytes: Buffer, callback: (error?: Error) => void) => void,\n\t\tbufferedAmount: () => number,\n\t\tonFailure: (error: Error) => void,\n\t) {\n\t\tthis.writer = writer;\n\t\tthis.bufferedAmount = bufferedAmount;\n\t\tthis.onFailure = onFailure;\n\t}\n\n\tprivate schedule(): void {\n\t\tif (this.scheduled || this.failure) return;\n\t\tthis.scheduled = true;\n\t\tqueueMicrotask(() => {\n\t\t\tthis.scheduled = false;\n\t\t\tthis.pump();\n\t\t});\n\t}\n\n\tprivate pump(): void {\n\t\tif (this.failure || this.inFlight) return;\n\t\tconst key = this.ready.shift();\n\t\tif (!key) return;\n\t\tconst bucket = this.buckets.get(key)!;\n\t\tconst job = bucket.shift()!;\n\t\tif (bucket.length) this.ready.push(key);\n\t\telse this.buckets.delete(key);\n\t\tthis.inFlight = job;\n\t\ttry {\n\t\t\tthis.writer(job.bytes, (error) => {\n\t\t\t\tif (error) this.onFailure(new Error(\"Shared workspace uplink send failed; operations may have committed\"));\n\t\t\t\telse job.finish();\n\t\t\t\tthis.schedule();\n\t\t\t});\n\t\t} catch {\n\t\t\tthis.onFailure(new Error(\"Shared workspace uplink send failed; operations may have committed\"));\n\t\t}\n\t}\n\n\tsend(frame: GuestOutboundFrame): Promise<void> {\n\t\tif (this.failure) return Promise.reject(this.failure);\n\t\tconst bytes = Buffer.from(JSON.stringify(frame));\n\t\tconst key = frame.type === \"open\" ? `open:${frame.id}` : frame.channelId;\n\t\tconst bucket = this.buckets.get(key);\n\t\tconst perChannel = (bucket?.length ?? 0) + (this.inFlight?.key === key ? 1 : 0);\n\t\tif (\n\t\t\tbytes.length > limits.maxMessageBytes ||\n\t\t\tthis.pending.size >= limits.maxPendingOutboundMessages ||\n\t\t\tperChannel >= 32 ||\n\t\t\tthis.pendingBytes + bytes.length + this.bufferedAmount() > limits.maxPendingOutboundBytes\n\t\t) {\n\t\t\tthis.onFailure(new Error(\"Shared workspace uplink output budget exceeded; operations may have committed\"));\n\t\t\treturn Promise.reject(this.failure ?? new Error(\"Shared workspace uplink output budget exceeded\"));\n\t\t}\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\tlet finished = false;\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tthis.onFailure(new Error(\"Shared workspace uplink send timed out; operations may have committed\"));\n\t\t\t}, limits.maxTransportSendMs);\n\t\t\tconst job: Job = {\n\t\t\t\tbytes,\n\t\t\t\tkey,\n\t\t\t\tfinish: (error) => {\n\t\t\t\t\tif (finished) return;\n\t\t\t\t\tfinished = true;\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tthis.pending.delete(job);\n\t\t\t\t\tthis.pendingBytes -= bytes.length;\n\t\t\t\t\tif (this.inFlight === job) this.inFlight = undefined;\n\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\telse resolve();\n\t\t\t\t},\n\t\t\t};\n\t\t\tthis.pending.add(job);\n\t\t\tthis.pendingBytes += bytes.length;\n\t\t\tif (bucket) bucket.push(job);\n\t\t\telse {\n\t\t\t\tthis.buckets.set(key, [job]);\n\t\t\t\tthis.ready.push(key);\n\t\t\t}\n\t\t\tthis.schedule();\n\t\t});\n\t}\n\n\tfail(error: Error): void {\n\t\tif (this.failure) return;\n\t\tthis.failure = error;\n\t\tfor (const job of this.pending) job.finish(error);\n\t\tthis.buckets.clear();\n\t\tthis.ready.length = 0;\n\t}\n}\n"]}