@heddleagent/execution-host-client 6.3.0 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +121 -20
  2. package/dist/coordinator/contracts.d.ts +130 -0
  3. package/dist/coordinator/contracts.d.ts.map +1 -0
  4. package/dist/coordinator/contracts.js +112 -0
  5. package/dist/coordinator/contracts.js.map +1 -0
  6. package/dist/coordinator/hosted-heartbeat-coordinator-client.d.ts +20 -0
  7. package/dist/coordinator/hosted-heartbeat-coordinator-client.d.ts.map +1 -0
  8. package/dist/coordinator/hosted-heartbeat-coordinator-client.js +77 -0
  9. package/dist/coordinator/hosted-heartbeat-coordinator-client.js.map +1 -0
  10. package/dist/coordinator/hosted-heartbeat-delegation-client.d.ts +21 -0
  11. package/dist/coordinator/hosted-heartbeat-delegation-client.d.ts.map +1 -0
  12. package/dist/coordinator/hosted-heartbeat-delegation-client.js +117 -0
  13. package/dist/coordinator/hosted-heartbeat-delegation-client.js.map +1 -0
  14. package/dist/coordinator/hosted-heartbeat-delegation-service.d.ts +15 -0
  15. package/dist/coordinator/hosted-heartbeat-delegation-service.d.ts.map +1 -0
  16. package/dist/coordinator/hosted-heartbeat-delegation-service.js +81 -0
  17. package/dist/coordinator/hosted-heartbeat-delegation-service.js.map +1 -0
  18. package/dist/coordinator/hosted-heartbeat-task-reconciler.d.ts +11 -0
  19. package/dist/coordinator/hosted-heartbeat-task-reconciler.d.ts.map +1 -0
  20. package/dist/coordinator/hosted-heartbeat-task-reconciler.js +38 -0
  21. package/dist/coordinator/hosted-heartbeat-task-reconciler.js.map +1 -0
  22. package/dist/coordinator/index.d.ts +9 -0
  23. package/dist/coordinator/index.d.ts.map +1 -0
  24. package/dist/coordinator/index.js +7 -0
  25. package/dist/coordinator/index.js.map +1 -0
  26. package/dist/coordinator/node/delegation-http-service.d.ts +11 -0
  27. package/dist/coordinator/node/delegation-http-service.d.ts.map +1 -0
  28. package/dist/coordinator/node/delegation-http-service.js +131 -0
  29. package/dist/coordinator/node/delegation-http-service.js.map +1 -0
  30. package/dist/coordinator/node/environment.d.ts +3 -0
  31. package/dist/coordinator/node/environment.d.ts.map +1 -0
  32. package/dist/coordinator/node/environment.js +13 -0
  33. package/dist/coordinator/node/environment.js.map +1 -0
  34. package/dist/coordinator/node/index.d.ts +4 -0
  35. package/dist/coordinator/node/index.d.ts.map +1 -0
  36. package/dist/coordinator/node/index.js +3 -0
  37. package/dist/coordinator/node/index.js.map +1 -0
  38. package/dist/coordinator/node/types.d.ts +20 -0
  39. package/dist/coordinator/node/types.d.ts.map +1 -0
  40. package/dist/coordinator/node/types.js +2 -0
  41. package/dist/coordinator/node/types.js.map +1 -0
  42. package/dist/coordinator/runtime-session.d.ts +13 -0
  43. package/dist/coordinator/runtime-session.d.ts.map +1 -0
  44. package/dist/coordinator/runtime-session.js +23 -0
  45. package/dist/coordinator/runtime-session.js.map +1 -0
  46. package/dist/coordinator/service-token.d.ts +3 -0
  47. package/dist/coordinator/service-token.d.ts.map +1 -0
  48. package/dist/coordinator/service-token.js +7 -0
  49. package/dist/coordinator/service-token.js.map +1 -0
  50. package/dist/coordinator/types.d.ts +63 -0
  51. package/dist/coordinator/types.d.ts.map +1 -0
  52. package/dist/coordinator/types.js +2 -0
  53. package/dist/coordinator/types.js.map +1 -0
  54. package/dist/host/errors.d.ts +23 -0
  55. package/dist/host/errors.d.ts.map +1 -0
  56. package/dist/host/errors.js +32 -0
  57. package/dist/host/errors.js.map +1 -0
  58. package/dist/host/index.d.ts +7 -0
  59. package/dist/host/index.d.ts.map +1 -0
  60. package/dist/host/index.js +6 -0
  61. package/dist/host/index.js.map +1 -0
  62. package/dist/host/jwt-execution-host-mcp-capability-verifier.d.ts +8 -0
  63. package/dist/host/jwt-execution-host-mcp-capability-verifier.d.ts.map +1 -0
  64. package/dist/host/jwt-execution-host-mcp-capability-verifier.js +86 -0
  65. package/dist/host/jwt-execution-host-mcp-capability-verifier.js.map +1 -0
  66. package/dist/host/jwt-execution-identity-verifier.d.ts +8 -0
  67. package/dist/host/jwt-execution-identity-verifier.d.ts.map +1 -0
  68. package/dist/host/jwt-execution-identity-verifier.js +76 -0
  69. package/dist/host/jwt-execution-identity-verifier.js.map +1 -0
  70. package/dist/host/schemas.d.ts +37 -0
  71. package/dist/host/schemas.d.ts.map +1 -0
  72. package/dist/host/schemas.js +24 -0
  73. package/dist/host/schemas.js.map +1 -0
  74. package/dist/host/types.d.ts +62 -0
  75. package/dist/host/types.d.ts.map +1 -0
  76. package/dist/host/types.js +7 -0
  77. package/dist/host/types.js.map +1 -0
  78. package/dist/index.d.ts +1 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +1 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/internal/jwt-verification.d.ts +5 -0
  83. package/dist/internal/jwt-verification.d.ts.map +1 -0
  84. package/dist/internal/jwt-verification.js +25 -0
  85. package/dist/internal/jwt-verification.js.map +1 -0
  86. package/dist/mcp/jwt-capability-verifier.d.ts.map +1 -1
  87. package/dist/mcp/jwt-capability-verifier.js +6 -25
  88. package/dist/mcp/jwt-capability-verifier.js.map +1 -1
  89. package/dist/node/http-service.d.ts.map +1 -1
  90. package/dist/node/http-service.js +5 -108
  91. package/dist/node/http-service.js.map +1 -1
  92. package/dist/node/http-utils.d.ts +15 -0
  93. package/dist/node/http-utils.d.ts.map +1 -0
  94. package/dist/node/http-utils.js +109 -0
  95. package/dist/node/http-utils.js.map +1 -0
  96. package/package.json +13 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/node/http-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http';\nimport { z } from 'zod';\n\nconst REDACTED_HEADER_VALUE = '[REDACTED]';\nconst MAX_AUTHORIZATION_CHARACTERS = 8_192;\n\nexport const NodeHttpPathSchema = z.string().min(1).max(256).regex(\n /^\\/(?:[^?#\\s]*)$/,\n 'must be an absolute path without query, fragment, or whitespace',\n);\n\nexport class NodeHttpRequestError extends Error {\n readonly name = 'NodeHttpRequestError';\n\n constructor(readonly statusCode: 400 | 413 | 415) {\n super('Invalid Node HTTP request.');\n }\n}\n\nexport function readPathname(rawUrl: string | undefined): string | undefined {\n try {\n return new URL(rawUrl ?? '/', 'http://localhost').pathname;\n } catch {\n return undefined;\n }\n}\n\nexport function takeAuthorization(\n request: IncomingMessage,\n): string | undefined {\n const occurrences = request.rawHeaders.reduce(\n (count, headerName, index) => count\n + (index % 2 === 0 && headerName.toLowerCase() === 'authorization'\n ? 1\n : 0),\n 0,\n );\n const raw = request.headers.authorization;\n request.headers.authorization = raw === undefined\n ? undefined\n : REDACTED_HEADER_VALUE;\n for (let index = 0; index < request.rawHeaders.length; index += 2) {\n if (request.rawHeaders[index]?.toLowerCase() === 'authorization') {\n request.rawHeaders[index + 1] = REDACTED_HEADER_VALUE;\n }\n }\n if (occurrences > 1 || Array.isArray(raw)) {\n throw new NodeHttpRequestError(400);\n }\n if (raw && raw.length > MAX_AUTHORIZATION_CHARACTERS) {\n throw new NodeHttpRequestError(400);\n }\n return raw;\n}\n\nexport async function readJsonBody(\n request: IncomingMessage,\n maxBodyBytes: number,\n signal: AbortSignal,\n): Promise<unknown> {\n const contentType = request.headers['content-type']\n ?.split(';', 1)[0]\n ?.trim()\n .toLowerCase();\n if (contentType !== 'application/json') {\n request.resume();\n throw new NodeHttpRequestError(415);\n }\n const contentLength = request.headers['content-length'];\n if (contentLength !== undefined) {\n const declaredLength = Number(contentLength);\n if (!Number.isSafeInteger(declaredLength) || declaredLength < 0) {\n request.resume();\n throw new NodeHttpRequestError(400);\n }\n if (declaredLength > maxBodyBytes) {\n request.resume();\n throw new NodeHttpRequestError(413);\n }\n }\n\n const chunks: Buffer[] = [];\n let receivedBytes = 0;\n for await (const chunk of request) {\n signal.throwIfAborted();\n const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n receivedBytes += buffer.byteLength;\n if (receivedBytes > maxBodyBytes) {\n request.resume();\n throw new NodeHttpRequestError(413);\n }\n chunks.push(buffer);\n }\n if (!request.complete || receivedBytes === 0) {\n throw new NodeHttpRequestError(400);\n }\n try {\n return JSON.parse(\n Buffer.concat(chunks, receivedBytes).toString('utf8'),\n ) as unknown;\n } catch {\n throw new NodeHttpRequestError(400);\n }\n}\n\nexport function writeJsonError(\n response: ServerResponse,\n statusCode: number,\n message: string,\n headers: Record<string, string> = {},\n): void {\n writeJson(response, statusCode, { error: { message } }, {\n 'Cache-Control': 'no-store',\n ...headers,\n });\n}\n\nexport function writeJson(\n response: ServerResponse,\n statusCode: number,\n value: unknown,\n headers: Record<string, string> = {},\n): void {\n if (response.headersSent || response.destroyed) {\n return;\n }\n const body = JSON.stringify(value);\n response.writeHead(statusCode, {\n 'Cache-Control': 'no-store',\n 'Content-Length': Buffer.byteLength(body),\n 'Content-Type': 'application/json; charset=utf-8',\n 'X-Content-Type-Options': 'nosniff',\n ...headers,\n });\n response.end(body);\n}\n\nexport function errorType(error: unknown): string {\n return error instanceof Error ? error.name : 'unknown';\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heddleagent/execution-host-client",
3
- "version": "6.3.0",
3
+ "version": "6.5.0",
4
4
  "description": "Backend contracts, execution authority, lifecycle services, and clients for compatible Heddle Execution Hosts",
5
5
  "author": "Jay / Fienna Liang <roackb2@gmail.com>",
6
6
  "license": "MIT",
@@ -46,6 +46,14 @@
46
46
  "types": "./dist/heartbeat/index.d.ts",
47
47
  "import": "./dist/heartbeat/index.js"
48
48
  },
49
+ "./coordinator": {
50
+ "types": "./dist/coordinator/index.d.ts",
51
+ "import": "./dist/coordinator/index.js"
52
+ },
53
+ "./coordinator/node": {
54
+ "types": "./dist/coordinator/node/index.d.ts",
55
+ "import": "./dist/coordinator/node/index.js"
56
+ },
49
57
  "./mcp": {
50
58
  "types": "./dist/mcp/index.d.ts",
51
59
  "import": "./dist/mcp/index.js"
@@ -62,6 +70,10 @@
62
70
  "types": "./dist/agentcore/index.d.ts",
63
71
  "import": "./dist/agentcore/index.js"
64
72
  },
73
+ "./host": {
74
+ "types": "./dist/host/index.d.ts",
75
+ "import": "./dist/host/index.js"
76
+ },
65
77
  "./testing": {
66
78
  "types": "./dist/testing/index.d.ts",
67
79
  "import": "./dist/testing/index.js"