@geminilight/mindos 1.1.52 → 1.1.54

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 (127) hide show
  1. package/README.md +1 -0
  2. package/README_zh.md +1 -0
  3. package/dist/agent/bridges/runtime-permission-bridge.d.ts +9 -6
  4. package/dist/agent/bridges/runtime-permission-bridge.d.ts.map +1 -1
  5. package/dist/agent/bridges/runtime-permission-bridge.js +48 -37
  6. package/dist/agent/bridges/runtime-permission-bridge.js.map +1 -1
  7. package/dist/agent/ledger/run-timeline-events.d.ts +1 -1
  8. package/dist/agent/ledger/run-timeline-events.d.ts.map +1 -1
  9. package/dist/agent/ledger/run-timeline-events.js +3 -0
  10. package/dist/agent/ledger/run-timeline-events.js.map +1 -1
  11. package/dist/agent/mindos-pi/permission/policy.d.ts +2 -1
  12. package/dist/agent/mindos-pi/permission/policy.d.ts.map +1 -1
  13. package/dist/agent/mindos-pi/permission/policy.js +3 -3
  14. package/dist/agent/mindos-pi/permission/policy.js.map +1 -1
  15. package/dist/agent/runtime/adapter-contracts.d.ts.map +1 -1
  16. package/dist/agent/runtime/adapter-contracts.js +38 -0
  17. package/dist/agent/runtime/adapter-contracts.js.map +1 -1
  18. package/dist/agent/runtime/adapter-output.d.ts +6 -0
  19. package/dist/agent/runtime/adapter-output.d.ts.map +1 -0
  20. package/dist/agent/runtime/adapter-output.js +48 -0
  21. package/dist/agent/runtime/adapter-output.js.map +1 -0
  22. package/dist/agent/runtime/capabilities.d.ts +2 -1
  23. package/dist/agent/runtime/capabilities.d.ts.map +1 -1
  24. package/dist/agent/runtime/capabilities.js +7 -0
  25. package/dist/agent/runtime/capabilities.js.map +1 -1
  26. package/dist/agent/runtime/descriptors.d.ts.map +1 -1
  27. package/dist/agent/runtime/descriptors.js +4 -3
  28. package/dist/agent/runtime/descriptors.js.map +1 -1
  29. package/dist/agent/runtime/detection.d.ts.map +1 -1
  30. package/dist/agent/runtime/detection.js +57 -0
  31. package/dist/agent/runtime/detection.js.map +1 -1
  32. package/dist/agent/runtime/registry.d.ts +14 -1
  33. package/dist/agent/runtime/registry.d.ts.map +1 -1
  34. package/dist/agent/runtime/registry.js.map +1 -1
  35. package/dist/agent/runtime/run.d.ts +1 -1
  36. package/dist/agent/runtime/run.d.ts.map +1 -1
  37. package/dist/agent/turn/index.d.ts +29 -7
  38. package/dist/agent/turn/index.d.ts.map +1 -1
  39. package/dist/agent/turn/index.js +86 -2
  40. package/dist/agent/turn/index.js.map +1 -1
  41. package/dist/knowledge/audit/index.d.ts +4 -0
  42. package/dist/knowledge/audit/index.d.ts.map +1 -1
  43. package/dist/knowledge/audit/index.js +38 -1
  44. package/dist/knowledge/audit/index.js.map +1 -1
  45. package/dist/protocols/acp/agent-descriptors.d.ts +2 -1
  46. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  47. package/dist/protocols/acp/agent-descriptors.js +89 -11
  48. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  49. package/dist/protocols/acp/detect-local.d.ts.map +1 -1
  50. package/dist/protocols/acp/detect-local.js +6 -4
  51. package/dist/protocols/acp/detect-local.js.map +1 -1
  52. package/dist/protocols/acp/handshake-health.d.ts +63 -0
  53. package/dist/protocols/acp/handshake-health.d.ts.map +1 -0
  54. package/dist/protocols/acp/handshake-health.js +113 -0
  55. package/dist/protocols/acp/handshake-health.js.map +1 -0
  56. package/dist/protocols/acp/index.d.ts +4 -2
  57. package/dist/protocols/acp/index.d.ts.map +1 -1
  58. package/dist/protocols/acp/index.js +28 -28
  59. package/dist/protocols/acp/index.js.map +1 -1
  60. package/dist/protocols/acp/mcp-session-inheritance.d.ts +1 -0
  61. package/dist/protocols/acp/mcp-session-inheritance.d.ts.map +1 -1
  62. package/dist/protocols/acp/mcp-session-inheritance.js +14 -3
  63. package/dist/protocols/acp/mcp-session-inheritance.js.map +1 -1
  64. package/dist/protocols/acp/session.d.ts +10 -1
  65. package/dist/protocols/acp/session.d.ts.map +1 -1
  66. package/dist/protocols/acp/session.js +253 -54
  67. package/dist/protocols/acp/session.js.map +1 -1
  68. package/dist/protocols/acp/subprocess.d.ts +9 -2
  69. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  70. package/dist/protocols/acp/subprocess.js +149 -31
  71. package/dist/protocols/acp/subprocess.js.map +1 -1
  72. package/dist/protocols/acp/types.d.ts +30 -1
  73. package/dist/protocols/acp/types.d.ts.map +1 -1
  74. package/dist/protocols/acp/types.js +3 -0
  75. package/dist/protocols/acp/types.js.map +1 -1
  76. package/dist/server/contract.d.ts.map +1 -1
  77. package/dist/server/contract.js +5 -0
  78. package/dist/server/contract.js.map +1 -1
  79. package/dist/server/handlers/acp.d.ts +3 -0
  80. package/dist/server/handlers/acp.d.ts.map +1 -1
  81. package/dist/server/handlers/acp.js +14 -4
  82. package/dist/server/handlers/acp.js.map +1 -1
  83. package/dist/server/handlers/agent-turn.js +18 -3
  84. package/dist/server/handlers/agent-turn.js.map +1 -1
  85. package/dist/server/handlers/change-log-store.d.ts +13 -0
  86. package/dist/server/handlers/change-log-store.d.ts.map +1 -1
  87. package/dist/server/handlers/change-log-store.js +62 -1
  88. package/dist/server/handlers/change-log-store.js.map +1 -1
  89. package/dist/server/handlers/changes.d.ts +2 -1
  90. package/dist/server/handlers/changes.d.ts.map +1 -1
  91. package/dist/server/handlers/changes.js +11 -1
  92. package/dist/server/handlers/changes.js.map +1 -1
  93. package/dist/server/handlers/file.d.ts +11 -0
  94. package/dist/server/handlers/file.d.ts.map +1 -1
  95. package/dist/server/handlers/file.js +59 -0
  96. package/dist/server/handlers/file.js.map +1 -1
  97. package/dist/server/handlers/runtime-adapter-projections.d.ts +33 -2
  98. package/dist/server/handlers/runtime-adapter-projections.d.ts.map +1 -1
  99. package/dist/server/handlers/runtime-adapter-projections.js +117 -15
  100. package/dist/server/handlers/runtime-adapter-projections.js.map +1 -1
  101. package/dist/server/handlers/runtime-artifact-projections.d.ts +7 -0
  102. package/dist/server/handlers/runtime-artifact-projections.d.ts.map +1 -1
  103. package/dist/server/handlers/runtime-artifact-projections.js +7 -0
  104. package/dist/server/handlers/runtime-artifact-projections.js.map +1 -1
  105. package/dist/server/handlers/runtime-control-plane.d.ts +168 -0
  106. package/dist/server/handlers/runtime-control-plane.d.ts.map +1 -0
  107. package/dist/server/handlers/runtime-control-plane.js +520 -0
  108. package/dist/server/handlers/runtime-control-plane.js.map +1 -0
  109. package/dist/server/handlers/runtime-extensions.d.ts +92 -0
  110. package/dist/server/handlers/runtime-extensions.d.ts.map +1 -0
  111. package/dist/server/handlers/runtime-extensions.js +405 -0
  112. package/dist/server/handlers/runtime-extensions.js.map +1 -0
  113. package/dist/server/handlers/runtime-readiness.d.ts +9 -1
  114. package/dist/server/handlers/runtime-readiness.d.ts.map +1 -1
  115. package/dist/server/handlers/runtime-readiness.js +11 -1
  116. package/dist/server/handlers/runtime-readiness.js.map +1 -1
  117. package/dist/server/http.d.ts.map +1 -1
  118. package/dist/server/http.js +41 -3
  119. package/dist/server/http.js.map +1 -1
  120. package/dist/server/index.d.ts +3 -1
  121. package/dist/server/index.d.ts.map +1 -1
  122. package/dist/server/index.js +3 -1
  123. package/dist/server/index.js.map +1 -1
  124. package/dist/server/route-ownership.d.ts.map +1 -1
  125. package/dist/server/route-ownership.js +7 -0
  126. package/dist/server/route-ownership.js.map +1 -1
  127. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/protocols/acp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,YAAY,EACZ,eAAe,EACf,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/protocols/acp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,YAAY,EACZ,eAAe,EACf,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -10,6 +10,7 @@ export type AcpSessionMcpConfigEntry = {
10
10
  args?: unknown;
11
11
  env?: unknown;
12
12
  url?: unknown;
13
+ id?: unknown;
13
14
  headers?: unknown;
14
15
  type?: unknown;
15
16
  transport?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-session-inheritance.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/mcp-session-inheritance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,MAAM,EAAE,GACR;IACA,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE,GAAG,4BAA4B,CA2B/B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE,GAAG,SAAS,EAAE,CAEd"}
1
+ {"version":3,"file":"mcp-session-inheritance.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/mcp-session-inheritance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,MAAM,EAAE,GACR;IACA,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE,GAAG,4BAA4B,CA2B/B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;CAClE,GAAG,SAAS,EAAE,CAEd"}
@@ -80,15 +80,22 @@ function normalizeToolNames(value) {
80
80
  return tools.length > 0 ? tools : null;
81
81
  }
82
82
  function toAcpMcpServer(name, entry, capabilities) {
83
+ const transport = normalizeTransport(entry.type) ?? normalizeTransport(entry.transport);
84
+ if (transport === 'acp') {
85
+ const id = typeof entry.id === 'string' ? entry.id.trim() : '';
86
+ if (capabilities?.acp !== true || !id)
87
+ return null;
88
+ return { type: 'acp', name, id };
89
+ }
83
90
  const url = typeof entry.url === 'string' ? entry.url.trim() : '';
84
91
  if (url) {
85
- const transport = normalizeTransport(entry.type) ?? normalizeTransport(entry.transport) ?? 'http';
86
- if (transport === 'sse') {
92
+ const urlTransport = transport ?? 'http';
93
+ if (urlTransport === 'sse') {
87
94
  if (capabilities?.sse !== true)
88
95
  return null;
89
96
  return { type: 'sse', name, url, headers: normalizeHeaders(entry.headers) };
90
97
  }
91
- if (transport === 'http') {
98
+ if (urlTransport === 'http') {
92
99
  if (capabilities?.http !== true)
93
100
  return null;
94
101
  return { type: 'http', name, url, headers: normalizeHeaders(entry.headers) };
@@ -115,6 +122,8 @@ function normalizeTransport(value) {
115
122
  return 'sse';
116
123
  if (normalized === 'stdio')
117
124
  return 'stdio';
125
+ if (normalized === 'acp')
126
+ return 'acp';
118
127
  return null;
119
128
  }
120
129
  function normalizeHeaders(value) {
@@ -149,6 +158,8 @@ function mcpServerType(server) {
149
158
  return 'http';
150
159
  if ('type' in server && server.type === 'sse')
151
160
  return 'sse';
161
+ if ('type' in server && server.type === 'acp')
162
+ return 'acp';
152
163
  return 'stdio';
153
164
  }
154
165
  function readRecord(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-session-inheritance.js","sourceRoot":"","sources":["../../../src/protocols/acp/mcp-session-inheritance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-session-inheritance.js","sourceRoot":"","sources":["../../../src/protocols/acp/mcp-session-inheritance.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,13 @@ export declare function listSessions(sessionId: string, options?: {
35
35
  sessions: AcpSessionInfo[];
36
36
  nextCursor?: string;
37
37
  }>;
38
+ export declare function listSessionsForAgent(agentId: string, options?: AcpSessionOptions & {
39
+ cursor?: string;
40
+ cwd?: string;
41
+ }): Promise<{
42
+ sessions: AcpSessionInfo[];
43
+ nextCursor?: string;
44
+ }>;
38
45
  /**
39
46
  * Send a prompt and collect the full response.
40
47
  * Text arrives via session/update notifications (handled by SDK → Client.sessionUpdate).
@@ -47,7 +54,9 @@ export declare function promptStream(sessionId: string, text: string, onUpdate:
47
54
  export declare function cancelPrompt(sessionId: string): Promise<void>;
48
55
  export declare function setMode(sessionId: string, modeId: string): Promise<void>;
49
56
  export declare function setConfigOption(sessionId: string, configId: string, value: string): Promise<AcpConfigOption[]>;
50
- export declare function closeSession(sessionId: string): Promise<void>;
57
+ export declare function closeSession(sessionId: string, options?: {
58
+ closeAgentSession?: boolean;
59
+ }): Promise<void>;
51
60
  export declare function getSession(sessionId: string): AcpSession | undefined;
52
61
  export declare function getActiveSessions(): AcpSession[];
53
62
  export declare function getSessionSnapshot(sessionId: string): AcpSessionSnapshot | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,SAAS,EAGV,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,UAAU,EAEV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAGhB,eAAe,EACf,cAAc,EAMd,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAuGD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAqFrB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAqErB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB9D;AASD;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAkD5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAyD5B;AAID,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,EAAE,CAAC,CAiB5B;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnE;AAID,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEpE;AAED,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAGhD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAGpF;AAED,wBAAgB,yBAAyB,IAAI,kBAAkB,EAAE,CAGhE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD;AAsBD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAgC/E"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/protocols/acp/session.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,12 @@
3
3
  * Uses @agentclientprotocol/sdk for all protocol handling.
4
4
  * Implements: initialize → session/new → session/prompt → session/cancel → close.
5
5
  */
6
+ import { isAcpCapabilitySupported } from './types.js';
6
7
  import { spawnAndConnect, killAgent, } from './subprocess.js';
7
8
  import { findAcpAgent } from './registry.js';
8
9
  import { resolveConfiguredAcpAgentEntry } from './agent-descriptors.js';
9
10
  import { buildAcpSessionMcpInheritancePlan, } from './mcp-session-inheritance.js';
11
+ import { rememberAcpHandshakeHealth } from './handshake-health.js';
10
12
  import { recordArtifactsFromAcpToolCall } from '../../agent/ledger/artifact-ledger.js';
11
13
  import { redactSensitiveText } from '../../agent/redaction.js';
12
14
  function withTimeout(promise, timeoutMs, message) {
@@ -21,6 +23,9 @@ function withTimeout(promise, timeoutMs, message) {
21
23
  });
22
24
  });
23
25
  }
26
+ function isRecord(value) {
27
+ return !!value && typeof value === 'object' && !Array.isArray(value);
28
+ }
24
29
  /* ── Error diagnosis ───────────────────────────────────────────────────── */
25
30
  function diagnoseInitFailure(proc, rawError) {
26
31
  const raw = rawError.message ?? '';
@@ -66,7 +71,9 @@ function resolveSessionMcpInheritance(options, agentCapabilities) {
66
71
  ? 'http'
67
72
  : 'type' in server && server.type === 'sse'
68
73
  ? 'sse'
69
- : 'stdio',
74
+ : 'type' in server && server.type === 'acp'
75
+ ? 'acp'
76
+ : 'stdio',
70
77
  })),
71
78
  };
72
79
  }
@@ -87,28 +94,10 @@ const sessions = new Map();
87
94
  const sessionConnections = new Map();
88
95
  const MAX_SESSIONS_PER_AGENT = 3;
89
96
  const MAX_TOTAL_SESSIONS = 10;
90
- /* ── Public API Session Lifecycle ───────────────────────────────────── */
91
- /**
92
- * Create a new ACP session by spawning an agent process.
93
- */
94
- export async function createSession(agentId, options) {
95
- const entry = resolveConfiguredAcpAgentEntry(agentId, options?.overrides)
96
- ?? await findAcpAgent(agentId);
97
- if (!entry) {
98
- throw new Error(`ACP agent not found in registry: ${agentId}`);
99
- }
100
- return createSessionFromEntry(entry, options);
101
- }
102
- /**
103
- * Create a session from a known registry entry (skips registry lookup).
104
- */
105
- export async function createSessionFromEntry(entry, options) {
106
- checkSessionLimits(entry.id);
107
- const sessionCwd = options?.cwd ?? process.cwd();
97
+ async function initializeAcpConnection(entry, options, startedAt) {
108
98
  const conn = spawnAndConnect(entry, options);
109
99
  let agentCapabilities;
110
100
  let authMethods;
111
- // Phase 1: Initialize
112
101
  try {
113
102
  const initResult = await conn.connection.initialize({
114
103
  protocolVersion: 1,
@@ -119,22 +108,50 @@ export async function createSessionFromEntry(entry, options) {
119
108
  authMethods = parseAuthMethods(initResult.authMethods);
120
109
  }
121
110
  catch (err) {
122
- // Wait briefly for stderr/exit info before diagnosing
111
+ // Wait briefly for stderr/exit info before diagnosing.
123
112
  await new Promise(r => setTimeout(r, 200));
124
113
  const message = diagnoseInitFailure(conn.process, err);
114
+ rememberAcpHandshakeHealth({
115
+ agentId: entry.id,
116
+ status: 'failed',
117
+ stage: 'initialize',
118
+ startedAt,
119
+ message,
120
+ });
125
121
  killAgent(conn.process);
126
122
  throw new Error(message);
127
123
  }
128
- // Phase 2: Authenticate (if agent declares auth methods)
129
124
  const firstAuthMethod = authMethods?.[0];
130
125
  if (firstAuthMethod) {
131
126
  try {
132
127
  await conn.connection.authenticate({ methodId: firstAuthMethod.id });
133
128
  }
134
129
  catch {
135
- // Best-effort auth
130
+ // Best-effort auth.
136
131
  }
137
132
  }
133
+ return { conn, agentCapabilities, authMethods };
134
+ }
135
+ /* ── Public API — Session Lifecycle ───────────────────────────────────── */
136
+ /**
137
+ * Create a new ACP session by spawning an agent process.
138
+ */
139
+ export async function createSession(agentId, options) {
140
+ const entry = resolveConfiguredAcpAgentEntry(agentId, options?.overrides)
141
+ ?? await findAcpAgent(agentId);
142
+ if (!entry) {
143
+ throw new Error(`ACP agent not found in registry: ${agentId}`);
144
+ }
145
+ return createSessionFromEntry(entry, options);
146
+ }
147
+ /**
148
+ * Create a session from a known registry entry (skips registry lookup).
149
+ */
150
+ export async function createSessionFromEntry(entry, options) {
151
+ checkSessionLimits(entry.id);
152
+ const startedAt = Date.now();
153
+ const sessionCwd = options?.cwd ?? process.cwd();
154
+ const { conn, agentCapabilities, authMethods } = await initializeAcpConnection(entry, options, startedAt);
138
155
  // Phase 3: session/new
139
156
  let modes;
140
157
  let configOptions;
@@ -156,6 +173,14 @@ export async function createSessionFromEntry(entry, options) {
156
173
  }
157
174
  catch (sessionErr) {
158
175
  const msg = sessionErr.message ?? '';
176
+ rememberAcpHandshakeHealth({
177
+ agentId: entry.id,
178
+ status: 'failed',
179
+ stage: 'session-new',
180
+ startedAt,
181
+ message: msg,
182
+ capabilities: agentCapabilities,
183
+ });
159
184
  killAgent(conn.process);
160
185
  throw new Error(`${entry.id}: session/new failed: ${msg}`);
161
186
  }
@@ -178,35 +203,37 @@ export async function createSessionFromEntry(entry, options) {
178
203
  };
179
204
  sessions.set(sessionId, session);
180
205
  sessionConnections.set(sessionId, conn);
206
+ rememberAcpHandshakeHealth({
207
+ agentId: entry.id,
208
+ status: 'ready',
209
+ stage: 'session-new',
210
+ startedAt,
211
+ capabilities: agentCapabilities,
212
+ session,
213
+ });
181
214
  return session;
182
215
  }
183
216
  /**
184
217
  * Load/resume an existing session on an agent.
185
218
  */
186
219
  export async function loadSession(agentId, existingSessionId, options) {
220
+ const startedAt = Date.now();
187
221
  const entry = resolveConfiguredAcpAgentEntry(agentId, options?.overrides)
188
222
  ?? await findAcpAgent(agentId);
189
223
  if (!entry) {
190
224
  throw new Error(`ACP agent not found in registry: ${agentId}`);
191
225
  }
192
226
  const loadCwd = options?.cwd ?? process.cwd();
193
- const conn = spawnAndConnect(entry, options);
194
- let agentCapabilities;
195
- try {
196
- const initResult = await conn.connection.initialize({
197
- protocolVersion: 1,
198
- clientCapabilities: clientCapabilitiesForPermissionMode(options?.permissionMode),
199
- clientInfo: { name: 'mindos', version: getMindosVersion(options) },
200
- });
201
- agentCapabilities = parseAgentCapabilities(initResult.agentCapabilities);
202
- }
203
- catch (err) {
204
- await new Promise(r => setTimeout(r, 200));
205
- const message = diagnoseInitFailure(conn.process, err);
206
- killAgent(conn.process);
207
- throw new Error(message);
208
- }
227
+ const { conn, agentCapabilities } = await initializeAcpConnection(entry, options, startedAt);
209
228
  if (!agentCapabilities?.loadSession) {
229
+ rememberAcpHandshakeHealth({
230
+ agentId: entry.id,
231
+ status: 'failed',
232
+ stage: 'session-load',
233
+ startedAt,
234
+ message: `Agent ${agentId} does not support session/load`,
235
+ capabilities: agentCapabilities,
236
+ });
210
237
  killAgent(conn.process);
211
238
  throw new Error(`Agent ${agentId} does not support session/load`);
212
239
  }
@@ -214,6 +241,7 @@ export async function loadSession(agentId, existingSessionId, options) {
214
241
  let configOptions;
215
242
  let currentModeId;
216
243
  const mcpInheritance = resolveSessionMcpInheritance(options, agentCapabilities);
244
+ let loadedInfo = { sessionId: existingSessionId };
217
245
  try {
218
246
  const loadResult = await conn.connection.loadSession({
219
247
  sessionId: existingSessionId,
@@ -224,8 +252,17 @@ export async function loadSession(agentId, existingSessionId, options) {
224
252
  currentModeId = parseCurrentModeId(loadResult.modes);
225
253
  configOptions = parseConfigOptions(loadResult.configOptions);
226
254
  currentModeId ??= currentModeFromConfig(configOptions);
255
+ loadedInfo = normalizeAcpSessionInfo(loadResult, existingSessionId);
227
256
  }
228
257
  catch (err) {
258
+ rememberAcpHandshakeHealth({
259
+ agentId: entry.id,
260
+ status: 'failed',
261
+ stage: 'session-load',
262
+ startedAt,
263
+ message: err.message,
264
+ capabilities: agentCapabilities,
265
+ });
229
266
  killAgent(conn.process);
230
267
  throw new Error(`session/load failed: ${err.message}`);
231
268
  }
@@ -242,9 +279,29 @@ export async function loadSession(agentId, existingSessionId, options) {
242
279
  configOptions,
243
280
  currentModeId,
244
281
  mcpServers: mcpInheritance.summaries,
282
+ ...(loadedInfo.title ? { title: loadedInfo.title } : {}),
283
+ ...(loadedInfo.preview ? { preview: loadedInfo.preview } : {}),
284
+ ...(loadedInfo.messageCount !== undefined ? { messageCount: loadedInfo.messageCount } : {}),
285
+ ...(loadedInfo.turnCount !== undefined ? { turnCount: loadedInfo.turnCount } : {}),
286
+ ...(loadedInfo.messages ? { messages: loadedInfo.messages } : {}),
287
+ ...(loadedInfo.turns ? { turns: loadedInfo.turns } : {}),
288
+ ...(loadedInfo.title || loadedInfo.updatedAt ? {
289
+ sessionInfo: {
290
+ ...(loadedInfo.title ? { title: loadedInfo.title } : {}),
291
+ ...(loadedInfo.updatedAt ? { updatedAt: loadedInfo.updatedAt } : {}),
292
+ },
293
+ } : {}),
245
294
  };
246
295
  sessions.set(existingSessionId, session);
247
296
  sessionConnections.set(existingSessionId, conn);
297
+ rememberAcpHandshakeHealth({
298
+ agentId: entry.id,
299
+ status: 'ready',
300
+ stage: 'session-load',
301
+ startedAt,
302
+ capabilities: agentCapabilities,
303
+ session,
304
+ });
248
305
  return session;
249
306
  }
250
307
  /**
@@ -252,7 +309,7 @@ export async function loadSession(agentId, existingSessionId, options) {
252
309
  */
253
310
  export async function listSessions(sessionId, options) {
254
311
  const { session, conn } = getSessionAndConn(sessionId);
255
- if (!session.agentCapabilities?.sessionCapabilities?.list) {
312
+ if (!isAcpCapabilitySupported(session.agentCapabilities?.sessionCapabilities?.list)) {
256
313
  throw new Error('Agent does not support session/list');
257
314
  }
258
315
  const result = await conn.connection.listSessions({
@@ -260,15 +317,62 @@ export async function listSessions(sessionId, options) {
260
317
  ...(options?.cwd ? { cwd: options.cwd } : {}),
261
318
  });
262
319
  return {
263
- sessions: (result.sessions ?? []).map(s => ({
264
- sessionId: s.sessionId ?? '',
265
- title: s.title ?? undefined,
266
- cwd: s.cwd ?? undefined,
267
- updatedAt: s.updatedAt ?? undefined,
268
- })),
320
+ sessions: (result.sessions ?? []).map(s => normalizeAcpSessionInfo(s)),
269
321
  nextCursor: result.nextCursor ?? undefined,
270
322
  };
271
323
  }
324
+ export async function listSessionsForAgent(agentId, options) {
325
+ const startedAt = Date.now();
326
+ const entry = resolveConfiguredAcpAgentEntry(agentId, options?.overrides)
327
+ ?? await findAcpAgent(agentId);
328
+ if (!entry) {
329
+ throw new Error(`ACP agent not found in registry: ${agentId}`);
330
+ }
331
+ const { conn, agentCapabilities } = await initializeAcpConnection(entry, options, startedAt);
332
+ if (!isAcpCapabilitySupported(agentCapabilities?.sessionCapabilities?.list)) {
333
+ rememberAcpHandshakeHealth({
334
+ agentId: entry.id,
335
+ status: 'failed',
336
+ stage: 'session-list',
337
+ startedAt,
338
+ message: 'Agent does not support session/list',
339
+ capabilities: agentCapabilities,
340
+ });
341
+ killAgent(conn.process);
342
+ throw new Error('Agent does not support session/list');
343
+ }
344
+ try {
345
+ const result = await conn.connection.listSessions({
346
+ ...(options?.cursor ? { cursor: options.cursor } : {}),
347
+ ...(options?.cwd ? { cwd: options.cwd } : {}),
348
+ });
349
+ rememberAcpHandshakeHealth({
350
+ agentId: entry.id,
351
+ status: 'ready',
352
+ stage: 'session-list',
353
+ startedAt,
354
+ capabilities: agentCapabilities,
355
+ });
356
+ return {
357
+ sessions: (result.sessions ?? []).map(s => normalizeAcpSessionInfo(s)),
358
+ nextCursor: result.nextCursor ?? undefined,
359
+ };
360
+ }
361
+ catch (err) {
362
+ rememberAcpHandshakeHealth({
363
+ agentId: entry.id,
364
+ status: 'failed',
365
+ stage: 'session-list',
366
+ startedAt,
367
+ message: err.message,
368
+ capabilities: agentCapabilities,
369
+ });
370
+ throw new Error(`session/list failed: ${err.message}`);
371
+ }
372
+ finally {
373
+ killAgent(conn.process);
374
+ }
375
+ }
272
376
  /* ── Public API — Prompt ──────────────────────────────────────────────── */
273
377
  const PROMPT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
274
378
  const TOOL_RAW_TEXT_LIMIT = 4000;
@@ -412,16 +516,18 @@ export async function setConfigOption(sessionId, configId, value) {
412
516
  session.lastActivityAt = new Date().toISOString();
413
517
  return session.configOptions ?? [];
414
518
  }
415
- export async function closeSession(sessionId) {
519
+ export async function closeSession(sessionId, options = {}) {
416
520
  const session = sessions.get(sessionId);
417
521
  const conn = sessionConnections.get(sessionId);
418
522
  if (conn?.process.alive) {
419
523
  const wireSessionId = session?.agentSessionId ?? sessionId;
420
- try {
421
- await conn.connection.unstable_closeSession({ sessionId: wireSessionId });
422
- }
423
- catch {
424
- // Best-effort — many agents don't support session/close
524
+ if (options.closeAgentSession !== false) {
525
+ try {
526
+ await closeAgentSession(conn.connection, wireSessionId);
527
+ }
528
+ catch {
529
+ // Best-effort — many agents don't support session/close
530
+ }
425
531
  }
426
532
  killAgent(conn.process);
427
533
  }
@@ -712,6 +818,58 @@ function readNestedString(value, key) {
712
818
  ? value[key]
713
819
  : undefined;
714
820
  }
821
+ function stringField(record, keys) {
822
+ for (const key of keys) {
823
+ const value = record[key];
824
+ if (typeof value === 'string' && value.trim())
825
+ return value;
826
+ }
827
+ return undefined;
828
+ }
829
+ function numberField(record, keys) {
830
+ for (const key of keys) {
831
+ const value = record[key];
832
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0)
833
+ return Math.floor(value);
834
+ }
835
+ return undefined;
836
+ }
837
+ function normalizeAcpSessionInfo(value, fallbackSessionId) {
838
+ const record = isRecord(value) ? value : {};
839
+ const sessionId = stringField(record, ['sessionId', 'session_id', 'id', 'externalSessionId'])
840
+ ?? fallbackSessionId
841
+ ?? '';
842
+ const info = { sessionId };
843
+ const title = stringField(record, ['title', 'name', 'summary']);
844
+ if (title)
845
+ info.title = title;
846
+ const preview = stringField(record, ['preview', 'description', 'subtitle']);
847
+ if (preview)
848
+ info.preview = preview;
849
+ const cwd = stringField(record, ['cwd', 'workDir', 'workingDirectory']);
850
+ if (cwd)
851
+ info.cwd = cwd;
852
+ const createdAt = stringField(record, ['createdAt', 'created_at']);
853
+ if (createdAt)
854
+ info.createdAt = createdAt;
855
+ const updatedAt = stringField(record, ['updatedAt', 'updated_at', 'lastActivityAt']);
856
+ if (updatedAt)
857
+ info.updatedAt = updatedAt;
858
+ const status = stringField(record, ['status', 'state']);
859
+ if (status)
860
+ info.status = status;
861
+ const messageCount = numberField(record, ['messageCount', 'messagesCount', 'message_count']);
862
+ if (messageCount !== undefined)
863
+ info.messageCount = messageCount;
864
+ const turnCount = numberField(record, ['turnCount', 'turnsCount', 'turn_count']);
865
+ if (turnCount !== undefined)
866
+ info.turnCount = turnCount;
867
+ if (Array.isArray(record.messages))
868
+ info.messages = record.messages;
869
+ if (Array.isArray(record.turns))
870
+ info.turns = record.turns;
871
+ return info;
872
+ }
715
873
  /* ── Internal — Parsers ───────────────────────────────────────────────── */
716
874
  function parseAgentCapabilities(raw) {
717
875
  if (!raw || typeof raw !== 'object')
@@ -719,11 +877,52 @@ function parseAgentCapabilities(raw) {
719
877
  const obj = raw;
720
878
  return {
721
879
  loadSession: obj.loadSession === true,
722
- mcpCapabilities: typeof obj.mcpCapabilities === 'object' ? obj.mcpCapabilities : undefined,
880
+ mcpCapabilities: parseMcpCapabilities(obj.mcpCapabilities),
723
881
  promptCapabilities: typeof obj.promptCapabilities === 'object' ? obj.promptCapabilities : undefined,
724
- sessionCapabilities: typeof obj.sessionCapabilities === 'object' ? obj.sessionCapabilities : undefined,
882
+ sessionCapabilities: parseSessionCapabilities(obj.sessionCapabilities),
725
883
  };
726
884
  }
885
+ function closeAgentSession(connection, sessionId) {
886
+ const closable = connection;
887
+ const close = typeof closable.closeSession === 'function'
888
+ ? closable.closeSession
889
+ : closable.unstable_closeSession;
890
+ return close ? close.call(closable, { sessionId }) : Promise.resolve();
891
+ }
892
+ function parseMcpCapabilities(raw) {
893
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
894
+ return undefined;
895
+ const obj = raw;
896
+ return compactBooleans({
897
+ stdio: capabilityFlag(obj.stdio),
898
+ http: capabilityFlag(obj.http),
899
+ sse: capabilityFlag(obj.sse),
900
+ acp: capabilityFlag(obj.acp),
901
+ });
902
+ }
903
+ function parseSessionCapabilities(raw) {
904
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
905
+ return undefined;
906
+ const obj = raw;
907
+ return compactBooleans({
908
+ list: capabilityFlag(obj.list),
909
+ delete: capabilityFlag(obj.delete),
910
+ resume: capabilityFlag(obj.resume),
911
+ fork: capabilityFlag(obj.fork),
912
+ close: capabilityFlag(obj.close),
913
+ });
914
+ }
915
+ function capabilityFlag(value) {
916
+ if (value === true || isAcpCapabilitySupported(value))
917
+ return true;
918
+ if (value === false)
919
+ return false;
920
+ return undefined;
921
+ }
922
+ function compactBooleans(value) {
923
+ const entries = Object.entries(value).filter((entry) => typeof entry[1] === 'boolean');
924
+ return entries.length > 0 ? Object.fromEntries(entries) : undefined;
925
+ }
727
926
  function parseAuthMethods(raw) {
728
927
  if (!Array.isArray(raw) || raw.length === 0)
729
928
  return undefined;