@a5c-ai/adapters-codecs 5.1.1-staging.0c6199708314

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/adapter-install.d.ts +20 -0
  4. package/dist/adapter-install.d.ts.map +1 -0
  5. package/dist/adapter-install.js +134 -0
  6. package/dist/adapter-install.js.map +1 -0
  7. package/dist/adapters-remote-adapter.d.ts +66 -0
  8. package/dist/adapters-remote-adapter.d.ts.map +1 -0
  9. package/dist/adapters-remote-adapter.js +292 -0
  10. package/dist/adapters-remote-adapter.js.map +1 -0
  11. package/dist/amp-adapter.d.ts +32 -0
  12. package/dist/amp-adapter.d.ts.map +1 -0
  13. package/dist/amp-adapter.js +417 -0
  14. package/dist/amp-adapter.js.map +1 -0
  15. package/dist/auth-config.d.ts +44 -0
  16. package/dist/auth-config.d.ts.map +1 -0
  17. package/dist/auth-config.js +167 -0
  18. package/dist/auth-config.js.map +1 -0
  19. package/dist/babysitter-adapter.d.ts +29 -0
  20. package/dist/babysitter-adapter.d.ts.map +1 -0
  21. package/dist/babysitter-adapter.js +335 -0
  22. package/dist/babysitter-adapter.js.map +1 -0
  23. package/dist/base-adapter-helpers.d.ts +7 -0
  24. package/dist/base-adapter-helpers.d.ts.map +1 -0
  25. package/dist/base-adapter-helpers.js +68 -0
  26. package/dist/base-adapter-helpers.js.map +1 -0
  27. package/dist/base-adapter.d.ts +157 -0
  28. package/dist/base-adapter.d.ts.map +1 -0
  29. package/dist/base-adapter.js +552 -0
  30. package/dist/base-adapter.js.map +1 -0
  31. package/dist/claude-adapter.d.ts +63 -0
  32. package/dist/claude-adapter.d.ts.map +1 -0
  33. package/dist/claude-adapter.js +546 -0
  34. package/dist/claude-adapter.js.map +1 -0
  35. package/dist/claude-agent-sdk-adapter.d.ts +40 -0
  36. package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
  37. package/dist/claude-agent-sdk-adapter.js +843 -0
  38. package/dist/claude-agent-sdk-adapter.js.map +1 -0
  39. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts +11 -0
  40. package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts.map +1 -0
  41. package/dist/claude-code/runtime-hooks/ephemeral-config.js +153 -0
  42. package/dist/claude-code/runtime-hooks/ephemeral-config.js.map +1 -0
  43. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts +9 -0
  44. package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts.map +1 -0
  45. package/dist/claude-code/runtime-hooks/hook-socket-server.js +89 -0
  46. package/dist/claude-code/runtime-hooks/hook-socket-server.js.map +1 -0
  47. package/dist/claude-code/runtime-hooks/lifecycle.d.ts +2 -0
  48. package/dist/claude-code/runtime-hooks/lifecycle.d.ts.map +1 -0
  49. package/dist/claude-code/runtime-hooks/lifecycle.js +24 -0
  50. package/dist/claude-code/runtime-hooks/lifecycle.js.map +1 -0
  51. package/dist/claude-remote-control-adapter.d.ts +43 -0
  52. package/dist/claude-remote-control-adapter.d.ts.map +1 -0
  53. package/dist/claude-remote-control-adapter.js +509 -0
  54. package/dist/claude-remote-control-adapter.js.map +1 -0
  55. package/dist/codex-adapter.d.ts +26 -0
  56. package/dist/codex-adapter.d.ts.map +1 -0
  57. package/dist/codex-adapter.js +336 -0
  58. package/dist/codex-adapter.js.map +1 -0
  59. package/dist/codex-sdk-adapter.d.ts +32 -0
  60. package/dist/codex-sdk-adapter.d.ts.map +1 -0
  61. package/dist/codex-sdk-adapter.js +392 -0
  62. package/dist/codex-sdk-adapter.js.map +1 -0
  63. package/dist/codex-sdk-mocks.d.ts +50 -0
  64. package/dist/codex-sdk-mocks.d.ts.map +1 -0
  65. package/dist/codex-sdk-mocks.js +97 -0
  66. package/dist/codex-sdk-mocks.js.map +1 -0
  67. package/dist/codex-websocket-adapter.d.ts +34 -0
  68. package/dist/codex-websocket-adapter.d.ts.map +1 -0
  69. package/dist/codex-websocket-adapter.js +402 -0
  70. package/dist/codex-websocket-adapter.js.map +1 -0
  71. package/dist/codex-websocket-connection.d.ts +77 -0
  72. package/dist/codex-websocket-connection.d.ts.map +1 -0
  73. package/dist/codex-websocket-connection.js +733 -0
  74. package/dist/codex-websocket-connection.js.map +1 -0
  75. package/dist/copilot-adapter.d.ts +27 -0
  76. package/dist/copilot-adapter.d.ts.map +1 -0
  77. package/dist/copilot-adapter.js +224 -0
  78. package/dist/copilot-adapter.js.map +1 -0
  79. package/dist/cursor-adapter.d.ts +32 -0
  80. package/dist/cursor-adapter.d.ts.map +1 -0
  81. package/dist/cursor-adapter.js +239 -0
  82. package/dist/cursor-adapter.js.map +1 -0
  83. package/dist/droid-adapter.d.ts +32 -0
  84. package/dist/droid-adapter.d.ts.map +1 -0
  85. package/dist/droid-adapter.js +383 -0
  86. package/dist/droid-adapter.js.map +1 -0
  87. package/dist/gemini-adapter.d.ts +38 -0
  88. package/dist/gemini-adapter.d.ts.map +1 -0
  89. package/dist/gemini-adapter.js +270 -0
  90. package/dist/gemini-adapter.js.map +1 -0
  91. package/dist/hermes-adapter.d.ts +33 -0
  92. package/dist/hermes-adapter.d.ts.map +1 -0
  93. package/dist/hermes-adapter.js +269 -0
  94. package/dist/hermes-adapter.js.map +1 -0
  95. package/dist/index.d.ts +32 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +33 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/mcp-plugins.d.ts +14 -0
  100. package/dist/mcp-plugins.d.ts.map +1 -0
  101. package/dist/mcp-plugins.js +97 -0
  102. package/dist/mcp-plugins.js.map +1 -0
  103. package/dist/omp-adapter.d.ts +26 -0
  104. package/dist/omp-adapter.d.ts.map +1 -0
  105. package/dist/omp-adapter.js +203 -0
  106. package/dist/omp-adapter.js.map +1 -0
  107. package/dist/openclaw-adapter.d.ts +32 -0
  108. package/dist/openclaw-adapter.d.ts.map +1 -0
  109. package/dist/openclaw-adapter.js +220 -0
  110. package/dist/openclaw-adapter.js.map +1 -0
  111. package/dist/opencode-adapter.d.ts +32 -0
  112. package/dist/opencode-adapter.d.ts.map +1 -0
  113. package/dist/opencode-adapter.js +315 -0
  114. package/dist/opencode-adapter.js.map +1 -0
  115. package/dist/opencode-http-adapter.d.ts +43 -0
  116. package/dist/opencode-http-adapter.d.ts.map +1 -0
  117. package/dist/opencode-http-adapter.js +378 -0
  118. package/dist/opencode-http-adapter.js.map +1 -0
  119. package/dist/opencode-http-connection.d.ts +32 -0
  120. package/dist/opencode-http-connection.d.ts.map +1 -0
  121. package/dist/opencode-http-connection.js +198 -0
  122. package/dist/opencode-http-connection.js.map +1 -0
  123. package/dist/pi-adapter.d.ts +26 -0
  124. package/dist/pi-adapter.d.ts.map +1 -0
  125. package/dist/pi-adapter.js +204 -0
  126. package/dist/pi-adapter.js.map +1 -0
  127. package/dist/pi-sdk-adapter.d.ts +46 -0
  128. package/dist/pi-sdk-adapter.d.ts.map +1 -0
  129. package/dist/pi-sdk-adapter.js +557 -0
  130. package/dist/pi-sdk-adapter.js.map +1 -0
  131. package/dist/programmatic-adapter-base.d.ts +87 -0
  132. package/dist/programmatic-adapter-base.d.ts.map +1 -0
  133. package/dist/programmatic-adapter-base.js +169 -0
  134. package/dist/programmatic-adapter-base.js.map +1 -0
  135. package/dist/provider-translation.d.ts +9 -0
  136. package/dist/provider-translation.d.ts.map +1 -0
  137. package/dist/provider-translation.js +2 -0
  138. package/dist/provider-translation.js.map +1 -0
  139. package/dist/qwen-adapter.d.ts +38 -0
  140. package/dist/qwen-adapter.d.ts.map +1 -0
  141. package/dist/qwen-adapter.js +269 -0
  142. package/dist/qwen-adapter.js.map +1 -0
  143. package/dist/remote-adapter-base.d.ts +84 -0
  144. package/dist/remote-adapter-base.d.ts.map +1 -0
  145. package/dist/remote-adapter-base.js +100 -0
  146. package/dist/remote-adapter-base.js.map +1 -0
  147. package/dist/session-fs.d.ts +89 -0
  148. package/dist/session-fs.d.ts.map +1 -0
  149. package/dist/session-fs.js +722 -0
  150. package/dist/session-fs.js.map +1 -0
  151. package/dist/shared/runtime-hooks-virtual.d.ts +2 -0
  152. package/dist/shared/runtime-hooks-virtual.d.ts.map +1 -0
  153. package/dist/shared/runtime-hooks-virtual.js +13 -0
  154. package/dist/shared/runtime-hooks-virtual.js.map +1 -0
  155. package/dist/translate-for-harness.d.ts +8 -0
  156. package/dist/translate-for-harness.d.ts.map +1 -0
  157. package/dist/translate-for-harness.js +89 -0
  158. package/dist/translate-for-harness.js.map +1 -0
  159. package/dist/translations/claude-translation.d.ts +3 -0
  160. package/dist/translations/claude-translation.d.ts.map +1 -0
  161. package/dist/translations/claude-translation.js +53 -0
  162. package/dist/translations/claude-translation.js.map +1 -0
  163. package/dist/translations/codex-translation.d.ts +3 -0
  164. package/dist/translations/codex-translation.d.ts.map +1 -0
  165. package/dist/translations/codex-translation.js +54 -0
  166. package/dist/translations/codex-translation.js.map +1 -0
  167. package/dist/translations/gemini-translation.d.ts +3 -0
  168. package/dist/translations/gemini-translation.d.ts.map +1 -0
  169. package/dist/translations/gemini-translation.js +45 -0
  170. package/dist/translations/gemini-translation.js.map +1 -0
  171. package/dist/translations/generic-openai-translation.d.ts +3 -0
  172. package/dist/translations/generic-openai-translation.d.ts.map +1 -0
  173. package/dist/translations/generic-openai-translation.js +47 -0
  174. package/dist/translations/generic-openai-translation.js.map +1 -0
  175. package/dist/translations/opencode-translation.d.ts +3 -0
  176. package/dist/translations/opencode-translation.d.ts.map +1 -0
  177. package/dist/translations/opencode-translation.js +48 -0
  178. package/dist/translations/opencode-translation.js.map +1 -0
  179. package/dist/translations/pi-translation.d.ts +3 -0
  180. package/dist/translations/pi-translation.d.ts.map +1 -0
  181. package/dist/translations/pi-translation.js +43 -0
  182. package/dist/translations/pi-translation.js.map +1 -0
  183. package/package.json +68 -0
@@ -0,0 +1,169 @@
1
+ /**
2
+ * BaseProgrammaticAdapter — abstract base class for programmatic (SDK) adapters.
3
+ *
4
+ * Provides shared utilities for direct SDK integration without subprocess
5
+ * or network communication.
6
+ */
7
+ /**
8
+ * Abstract base class for programmatic adapters. Provides shared utilities
9
+ * for direct SDK integration and common functionality.
10
+ */
11
+ export class BaseProgrammaticAdapter {
12
+ // ── Adapter Type ──────────────────────────────────────────────────
13
+ adapterType = 'programmatic';
14
+ // ── Legacy Compatibility (for validation with old interface) ────────
15
+ cliCommand = '[programmatic]'; // Stub for legacy validation
16
+ buildSpawnArgs(_options) {
17
+ throw new Error('buildSpawnArgs not supported on programmatic adapters');
18
+ }
19
+ parseEvent(_line, _context) {
20
+ throw new Error('parseEvent not supported on programmatic adapters');
21
+ }
22
+ // ── Optional members ──────────────────────────────────────────────
23
+ hostEnvSignals;
24
+ // ── Protected utilities ───────────────────────────────────────────
25
+ /**
26
+ * Generate a unique run ID for this execution.
27
+ */
28
+ generateRunId() {
29
+ return `${this.agent}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
30
+ }
31
+ /**
32
+ * Create base event structure with common fields.
33
+ */
34
+ createBaseEvent(type, runId) {
35
+ return {
36
+ type,
37
+ runId,
38
+ agent: this.agent,
39
+ timestamp: Date.now(),
40
+ };
41
+ }
42
+ /**
43
+ * Helper to create text delta events.
44
+ */
45
+ createTextDeltaEvent(runId, delta, accumulated) {
46
+ return {
47
+ ...this.createBaseEvent('text_delta', runId),
48
+ type: 'text_delta',
49
+ delta,
50
+ accumulated: accumulated || delta,
51
+ };
52
+ }
53
+ /**
54
+ * Helper to create tool call start events.
55
+ */
56
+ createToolCallStartEvent(runId, toolCallId, toolName, inputAccumulated) {
57
+ return {
58
+ ...this.createBaseEvent('tool_call_start', runId),
59
+ type: 'tool_call_start',
60
+ toolCallId,
61
+ toolName,
62
+ inputAccumulated,
63
+ };
64
+ }
65
+ /**
66
+ * Helper to create tool result events.
67
+ */
68
+ createToolResultEvent(runId, toolCallId, toolName, output, durationMs = 0) {
69
+ return {
70
+ ...this.createBaseEvent('tool_result', runId),
71
+ type: 'tool_result',
72
+ toolCallId,
73
+ toolName,
74
+ output,
75
+ durationMs,
76
+ };
77
+ }
78
+ /**
79
+ * Helper to create cost events.
80
+ */
81
+ createCostEvent(runId, cost) {
82
+ return {
83
+ type: 'cost',
84
+ runId,
85
+ agent: this.agent,
86
+ timestamp: Date.now(),
87
+ cost,
88
+ };
89
+ }
90
+ /**
91
+ * Helper to create error events.
92
+ */
93
+ createErrorEvent(runId, code, message, recoverable = false) {
94
+ return {
95
+ ...this.createBaseEvent('error', runId),
96
+ type: 'error',
97
+ code,
98
+ message,
99
+ recoverable,
100
+ };
101
+ }
102
+ /**
103
+ * Helper to create message stop events.
104
+ */
105
+ createMessageStopEvent(runId, text) {
106
+ return {
107
+ ...this.createBaseEvent('message_stop', runId),
108
+ type: 'message_stop',
109
+ text,
110
+ };
111
+ }
112
+ /**
113
+ * Validate that required options are present.
114
+ */
115
+ validateRunOptions(options) {
116
+ if (!options.prompt) {
117
+ throw new Error('RunOptions.prompt is required');
118
+ }
119
+ if (!options.agent || options.agent !== this.agent) {
120
+ throw new Error(`RunOptions.agent must be '${this.agent}'`);
121
+ }
122
+ }
123
+ /**
124
+ * Get the model to use for this run, with fallback to default.
125
+ */
126
+ resolveModel(options) {
127
+ if (options.model) {
128
+ // Validate that the model is supported
129
+ const supportedModel = this.models.find(m => m.modelId === options.model);
130
+ if (!supportedModel) {
131
+ throw new Error(`Model '${options.model}' is not supported by ${this.agent}`);
132
+ }
133
+ return options.model;
134
+ }
135
+ if (this.defaultModelId) {
136
+ return this.defaultModelId;
137
+ }
138
+ if (this.models.length > 0) {
139
+ return this.models[0].modelId;
140
+ }
141
+ throw new Error(`No models configured for ${this.agent}`);
142
+ }
143
+ /**
144
+ * Extract cost information from SDK response.
145
+ * Subclasses can override this to handle provider-specific cost formats.
146
+ */
147
+ extractCostFromResponse(response) {
148
+ if (!response || typeof response !== 'object') {
149
+ return null;
150
+ }
151
+ const obj = response;
152
+ // Common patterns for cost/usage information
153
+ const usage = obj.usage || obj.cost || obj.billing;
154
+ if (usage && typeof usage === 'object') {
155
+ return usage;
156
+ }
157
+ return null;
158
+ }
159
+ /**
160
+ * Convert provider-specific prompt format to standard format.
161
+ */
162
+ normalizePrompt(prompt) {
163
+ if (Array.isArray(prompt)) {
164
+ return prompt.join('\n');
165
+ }
166
+ return prompt;
167
+ }
168
+ }
169
+ //# sourceMappingURL=programmatic-adapter-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic-adapter-base.js","sourceRoot":"","sources":["../src/programmatic-adapter-base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { TransportId } from '@a5c-ai/comm-adapter';
2
+ export interface HarnessProviderTranslation {
3
+ env: Record<string, string>;
4
+ args: string[];
5
+ configContent?: string;
6
+ configPath?: string;
7
+ proxyRequired: boolean;
8
+ proxyExposedTransport?: TransportId;
9
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-translation.d.ts","sourceRoot":"","sources":["../src/provider-translation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,EAAE,WAAW,CAAC;CACrC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider-translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-translation.js","sourceRoot":"","sources":["../src/provider-translation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * QwenAdapter — Alibaba Qwen Code CLI adapter.
3
+ *
4
+ * Qwen Code is a fork of Google's Gemini CLI, adapted for Qwen3-Coder models.
5
+ * It speaks an OpenAI-compatible API (DashScope or self-hosted), stores config
6
+ * under ~/.qwen/settings.json, and supports MCP servers via `mcpServers`.
7
+ *
8
+ * Upstream: https://github.com/QwenLM/qwen-code
9
+ */
10
+ import type { AgentCapabilities, ModelCapabilities, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, SpawnArgs, ParseContext, RunOptions, AgentEvent, InstalledPlugin, PluginInstallOptions, AgentConfig } from '@a5c-ai/comm-adapter';
11
+ import { BaseAgentAdapter } from './base-adapter.js';
12
+ export declare class QwenAdapter extends BaseAgentAdapter {
13
+ readonly agent: string;
14
+ readonly displayName = "Qwen Code";
15
+ readonly cliCommand: string;
16
+ readonly minVersion = "0.0.1";
17
+ constructor(agent?: string, cliCommand?: string);
18
+ readonly hostEnvSignals: readonly ["QWEN_CODE", "QWEN_SESSION_ID"];
19
+ readonly capabilities: AgentCapabilities;
20
+ readonly models: ModelCapabilities[];
21
+ readonly defaultModelId = "qwen3-coder-plus";
22
+ readonly configSchema: AgentConfigSchema;
23
+ buildSpawnArgs(options: RunOptions): SpawnArgs;
24
+ parseEvent(line: string, context: ParseContext): AgentEvent | AgentEvent[] | null;
25
+ detectAuth(): Promise<AuthState>;
26
+ getAuthGuidance(): AuthSetupGuidance;
27
+ sessionDir(_cwd?: string): string;
28
+ parseSessionFile(filePath: string): Promise<Session>;
29
+ listSessionFiles(_cwd?: string): Promise<string[]>;
30
+ readConfig(_cwd?: string): Promise<AgentConfig>;
31
+ writeConfig(config: Partial<AgentConfig>, _cwd?: string): Promise<void>;
32
+ private pluginsPath;
33
+ listPlugins(): Promise<InstalledPlugin[]>;
34
+ installPlugin(pluginId: string, options?: PluginInstallOptions): Promise<InstalledPlugin>;
35
+ uninstallPlugin(pluginId: string, options?: {
36
+ global?: boolean;
37
+ }): Promise<void>;
38
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-adapter.d.ts","sourceRoot":"","sources":["../src/qwen-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUrD,qBAAa,WAAY,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,WAAW;gBAElB,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK/C,QAAQ,CAAC,cAAc,4CAA6C;IAEpE,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CA6CtC;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CA+ClC;IAEF,QAAQ,CAAC,cAAc,sBAAsB;IAE7C,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAQtC;IAEF,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IA4B9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAmD3E,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAYtC,eAAe,IAAI,iBAAiB;IAoBpC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO/C,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E,OAAO,CAAC,WAAW;IAIJ,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIzC,aAAa,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAIZ,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhG"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * QwenAdapter — Alibaba Qwen Code CLI adapter.
3
+ *
4
+ * Qwen Code is a fork of Google's Gemini CLI, adapted for Qwen3-Coder models.
5
+ * It speaks an OpenAI-compatible API (DashScope or self-hosted), stores config
6
+ * under ~/.qwen/settings.json, and supports MCP servers via `mcpServers`.
7
+ *
8
+ * Upstream: https://github.com/QwenLM/qwen-code
9
+ */
10
+ import * as os from 'node:os';
11
+ import * as path from 'node:path';
12
+ import { BaseAgentAdapter } from './base-adapter.js';
13
+ import { createVirtualRuntimeHookCapabilities } from './shared/runtime-hooks-virtual.js';
14
+ import { mcpListPlugins, mcpInstallPlugin, mcpUninstallPlugin } from './mcp-plugins.js';
15
+ import { listJsonlFiles, parseJsonlSessionFile, readJsonFile, writeJsonFileAtomic, } from './session-fs.js';
16
+ export class QwenAdapter extends BaseAgentAdapter {
17
+ agent;
18
+ displayName = 'Qwen Code';
19
+ cliCommand;
20
+ minVersion = '0.0.1';
21
+ constructor(agent, cliCommand) {
22
+ super();
23
+ this.agent = agent ?? this.constructor.name.replace(/Adapter$/, '').toLowerCase();
24
+ this.cliCommand = cliCommand ?? this.agent;
25
+ }
26
+ hostEnvSignals = ['QWEN_CODE', 'QWEN_SESSION_ID'];
27
+ capabilities = {
28
+ agent: 'qwen',
29
+ canResume: true,
30
+ canFork: false,
31
+ supportsMultiTurn: true,
32
+ sessionPersistence: 'file',
33
+ supportsTextStreaming: true,
34
+ supportsToolCallStreaming: true,
35
+ supportsThinkingStreaming: false,
36
+ supportsNativeTools: true,
37
+ supportsMCP: true,
38
+ supportsParallelToolCalls: true,
39
+ requiresToolApproval: true,
40
+ approvalModes: ['yolo', 'prompt'],
41
+ runtimeHooks: createVirtualRuntimeHookCapabilities(),
42
+ supportsThinking: false,
43
+ thinkingEffortLevels: [],
44
+ supportsThinkingBudgetTokens: false,
45
+ supportsJsonMode: false,
46
+ supportsStructuredOutput: false,
47
+ structuredSessionTransport: 'none',
48
+ sessionControlPlane: 'self-managed',
49
+ supportsSkills: false,
50
+ supportsAgentsMd: true,
51
+ skillsFormat: null,
52
+ supportsSubagentDispatch: false,
53
+ supportsParallelExecution: false,
54
+ supportsInteractiveMode: true,
55
+ supportsStdinInjection: true,
56
+ supportsImageInput: false,
57
+ supportsImageOutput: false,
58
+ supportsFileAttachments: true,
59
+ supportsPlugins: true,
60
+ pluginFormats: ['mcp-server'],
61
+ pluginRegistries: [{ name: 'mcp', url: 'https://modelcontextprotocol.io', searchable: false }],
62
+ supportedPlatforms: ['darwin', 'linux', 'win32'],
63
+ requiresGitRepo: false,
64
+ requiresPty: false,
65
+ authMethods: [
66
+ { type: 'api_key', name: 'OpenAI-compatible API Key', description: 'OPENAI_API_KEY (DashScope or compatible endpoint)' },
67
+ ],
68
+ authFiles: ['.qwen/settings.json'],
69
+ installMethods: [
70
+ { platform: 'all', type: 'npm', command: 'npm install -g @qwen-code/qwen-code' },
71
+ ],
72
+ };
73
+ models = [
74
+ {
75
+ agent: 'qwen',
76
+ modelId: 'qwen3-coder-plus',
77
+ displayName: 'Qwen3 Coder Plus',
78
+ deprecated: false,
79
+ contextWindow: 1000000,
80
+ maxOutputTokens: 65536,
81
+ supportsThinking: false,
82
+ supportsToolCalling: true,
83
+ supportsParallelToolCalls: true,
84
+ supportsToolCallStreaming: true,
85
+ supportsJsonMode: false,
86
+ supportsStructuredOutput: false,
87
+ supportsTextStreaming: true,
88
+ supportsThinkingStreaming: false,
89
+ supportsImageInput: false,
90
+ supportsImageOutput: false,
91
+ supportsFileInput: true,
92
+ cliArgKey: '--model',
93
+ cliArgValue: 'qwen3-coder-plus',
94
+ lastUpdated: '2025-09-01',
95
+ source: 'bundled',
96
+ },
97
+ {
98
+ agent: 'qwen',
99
+ modelId: 'qwen3-coder-flash',
100
+ displayName: 'Qwen3 Coder Flash',
101
+ deprecated: false,
102
+ contextWindow: 1000000,
103
+ maxOutputTokens: 65536,
104
+ supportsThinking: false,
105
+ supportsToolCalling: true,
106
+ supportsParallelToolCalls: true,
107
+ supportsToolCallStreaming: true,
108
+ supportsJsonMode: false,
109
+ supportsStructuredOutput: false,
110
+ supportsTextStreaming: true,
111
+ supportsThinkingStreaming: false,
112
+ supportsImageInput: false,
113
+ supportsImageOutput: false,
114
+ supportsFileInput: true,
115
+ cliArgKey: '--model',
116
+ cliArgValue: 'qwen3-coder-flash',
117
+ lastUpdated: '2025-09-01',
118
+ source: 'bundled',
119
+ },
120
+ ];
121
+ defaultModelId = 'qwen3-coder-plus';
122
+ configSchema = {
123
+ agent: 'qwen',
124
+ version: 1,
125
+ fields: [],
126
+ configFilePaths: [path.join(os.homedir(), '.qwen', 'settings.json')],
127
+ projectConfigFilePaths: ['.qwen/settings.json'],
128
+ configFormat: 'json',
129
+ supportsProjectConfig: true,
130
+ };
131
+ buildSpawnArgs(options) {
132
+ const args = [];
133
+ if (options.model) {
134
+ args.push('--model', options.model);
135
+ }
136
+ if (options.approvalMode === 'yolo') {
137
+ args.push('--yolo');
138
+ }
139
+ const { prompt, stdin } = this.buildPromptTransport(options);
140
+ if (stdin === undefined) {
141
+ args.push('--prompt', prompt);
142
+ }
143
+ return {
144
+ command: this.cliCommand,
145
+ args,
146
+ env: this.buildEnvFromOptions(options),
147
+ cwd: options.cwd ?? process.cwd(),
148
+ usePty: false,
149
+ stdin,
150
+ timeout: options.timeout,
151
+ inactivityTimeout: options.inactivityTimeout,
152
+ };
153
+ }
154
+ parseEvent(line, context) {
155
+ const parsed = this.parseJsonLine(line);
156
+ if (parsed == null || typeof parsed !== 'object')
157
+ return null;
158
+ const obj = parsed;
159
+ const ts = Date.now();
160
+ const base = { runId: context.runId, agent: this.agent, timestamp: ts };
161
+ const type = obj['type'];
162
+ if (type === 'text' || type === 'message') {
163
+ const content = (obj['content'] ?? obj['text'] ?? '');
164
+ if (content) {
165
+ return { ...base, type: 'text_delta', delta: content, accumulated: content };
166
+ }
167
+ }
168
+ if (type === 'tool_call') {
169
+ return {
170
+ ...base,
171
+ type: 'tool_call_start',
172
+ toolCallId: (obj['id'] ?? ''),
173
+ toolName: (obj['name'] ?? ''),
174
+ inputAccumulated: JSON.stringify(obj['args'] ?? obj['input'] ?? {}),
175
+ };
176
+ }
177
+ if (type === 'tool_result') {
178
+ return {
179
+ ...base,
180
+ type: 'tool_result',
181
+ toolCallId: (obj['id'] ?? ''),
182
+ toolName: (obj['name'] ?? ''),
183
+ output: obj['output'] ?? '',
184
+ durationMs: 0,
185
+ };
186
+ }
187
+ if (type === 'error') {
188
+ return {
189
+ ...base,
190
+ type: 'error',
191
+ code: 'INTERNAL',
192
+ message: (obj['message'] ?? 'Unknown error'),
193
+ recoverable: false,
194
+ };
195
+ }
196
+ return null;
197
+ }
198
+ async detectAuth() {
199
+ const apiKey = process.env['OPENAI_API_KEY'];
200
+ if (apiKey) {
201
+ return {
202
+ status: 'authenticated',
203
+ method: 'api_key',
204
+ identity: `...${apiKey.slice(-4)}`,
205
+ };
206
+ }
207
+ return { status: 'unauthenticated' };
208
+ }
209
+ getAuthGuidance() {
210
+ return {
211
+ agent: 'qwen',
212
+ providerName: 'Alibaba Cloud (DashScope)',
213
+ steps: [
214
+ { step: 1, description: 'Create a DashScope API key at https://dashscope.console.aliyun.com/', url: 'https://dashscope.console.aliyun.com/' },
215
+ { step: 2, description: 'Export OpenAI-compatible env vars', command: 'export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1 OPENAI_MODEL=qwen3-coder-plus' },
216
+ { step: 3, description: 'Alternatively run `qwen` interactively and follow the OAuth login flow', command: 'qwen' },
217
+ ],
218
+ envVars: [
219
+ { name: 'OPENAI_API_KEY', description: 'DashScope or OpenAI-compatible API key', required: true, exampleFormat: 'sk-...' },
220
+ { name: 'OPENAI_BASE_URL', description: 'Compatible-mode endpoint', required: false },
221
+ { name: 'OPENAI_MODEL', description: 'Default model id', required: false },
222
+ ],
223
+ documentationUrls: ['https://github.com/QwenLM/qwen-code'],
224
+ loginCommand: 'qwen',
225
+ verifyCommand: 'qwen --version',
226
+ };
227
+ }
228
+ sessionDir(_cwd) {
229
+ return path.join(os.homedir(), '.qwen', 'sessions');
230
+ }
231
+ async parseSessionFile(filePath) {
232
+ const parsed = await parseJsonlSessionFile(filePath, 'qwen');
233
+ return { ...parsed, agent: 'qwen' };
234
+ }
235
+ async listSessionFiles(_cwd) {
236
+ return listJsonlFiles(this.sessionDir());
237
+ }
238
+ async readConfig(_cwd) {
239
+ const filePath = this.configSchema.configFilePaths?.[0];
240
+ if (!filePath)
241
+ return { agent: 'qwen', source: 'global' };
242
+ const data = (await readJsonFile(filePath)) ?? {};
243
+ return { agent: 'qwen', source: 'global', filePaths: [filePath], ...data };
244
+ }
245
+ async writeConfig(config, _cwd) {
246
+ const filePath = this.configSchema.configFilePaths?.[0];
247
+ if (!filePath)
248
+ return;
249
+ const existing = (await readJsonFile(filePath)) ?? {};
250
+ const { agent: _a, source: _s, filePaths: _fp, ...rest } = config;
251
+ void _a;
252
+ void _s;
253
+ void _fp;
254
+ await writeJsonFileAtomic(filePath, { ...existing, ...rest });
255
+ }
256
+ pluginsPath() {
257
+ return this.configSchema.configFilePaths?.[0] ?? '';
258
+ }
259
+ async listPlugins() {
260
+ return mcpListPlugins(this.pluginsPath());
261
+ }
262
+ async installPlugin(pluginId, options) {
263
+ return mcpInstallPlugin(this.pluginsPath(), pluginId, options);
264
+ }
265
+ async uninstallPlugin(pluginId, options) {
266
+ return mcpUninstallPlugin(this.pluginsPath(), pluginId);
267
+ }
268
+ }
269
+ //# sourceMappingURL=qwen-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-adapter.js","sourceRoot":"","sources":["../src/qwen-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * BaseRemoteAdapter — abstract base class for remote (HTTP/WebSocket/Unix) adapters.
3
+ *
4
+ * Provides shared utilities for connection management, server lifecycle,
5
+ * and common remote adapter functionality.
6
+ */
7
+ import type { AgentName, AgentCapabilities, ModelCapabilities, AgentConfig, AgentConfigSchema, AuthState, AuthSetupGuidance, Session, InstalledPlugin, PluginInstallOptions, PluginSearchOptions, PluginListing, RunOptions, RemoteAdapter, RemoteConnection, ServerOptions, ServerInfo, ServerHealth, SpawnArgs, ParseContext, AgentEvent } from '@a5c-ai/comm-adapter';
8
+ /**
9
+ * Abstract base class for remote adapters. Provides shared utilities
10
+ * and sensible defaults for HTTP, WebSocket, and Unix socket adapters.
11
+ */
12
+ export declare abstract class BaseRemoteAdapter implements RemoteAdapter {
13
+ readonly adapterType: "remote";
14
+ readonly cliCommand = "[remote]";
15
+ buildSpawnArgs(_options: RunOptions): SpawnArgs;
16
+ parseEvent(_line: string, _context: ParseContext): AgentEvent | AgentEvent[] | null;
17
+ abstract readonly agent: AgentName;
18
+ abstract readonly displayName: string;
19
+ abstract readonly connectionType: 'http' | 'websocket' | 'unix';
20
+ abstract readonly minVersion?: string;
21
+ abstract readonly capabilities: AgentCapabilities;
22
+ abstract readonly models: ModelCapabilities[];
23
+ abstract readonly defaultModelId?: string;
24
+ abstract readonly configSchema: AgentConfigSchema;
25
+ abstract connect(options: RunOptions): Promise<RemoteConnection>;
26
+ abstract disconnect(connection: RemoteConnection): Promise<void>;
27
+ abstract detectAuth(): Promise<AuthState>;
28
+ abstract getAuthGuidance(): AuthSetupGuidance;
29
+ abstract sessionDir(cwd?: string): string;
30
+ abstract parseSessionFile(filePath: string): Promise<Session>;
31
+ abstract listSessionFiles(cwd?: string): Promise<string[]>;
32
+ abstract readConfig(cwd?: string): Promise<AgentConfig>;
33
+ abstract writeConfig(config: Partial<AgentConfig>, cwd?: string): Promise<void>;
34
+ readonly hostEnvSignals?: readonly string[];
35
+ listPlugins?(): Promise<InstalledPlugin[]>;
36
+ installPlugin?(pluginId: string, options?: PluginInstallOptions): Promise<InstalledPlugin>;
37
+ uninstallPlugin?(pluginId: string): Promise<void>;
38
+ searchPlugins?(query: string, options?: PluginSearchOptions): Promise<PluginListing[]>;
39
+ readHostMetadata?(env: NodeJS.ProcessEnv): Record<string, string | number | boolean | null>;
40
+ startServer?(options?: ServerOptions): Promise<ServerInfo>;
41
+ stopServer?(serverInfo: ServerInfo): Promise<void>;
42
+ healthCheck?(serverInfo: ServerInfo): Promise<ServerHealth>;
43
+ /**
44
+ * Tracks active connections for cleanup.
45
+ */
46
+ protected activeConnections: Map<string, RemoteConnection>;
47
+ /**
48
+ * Tracks managed servers for cleanup.
49
+ */
50
+ protected managedServers: Map<string, ServerInfo>;
51
+ /**
52
+ * Register an active connection for tracking.
53
+ */
54
+ protected registerConnection(connection: RemoteConnection): void;
55
+ /**
56
+ * Unregister a connection (called on disconnect).
57
+ */
58
+ protected unregisterConnection(connectionId: string): void;
59
+ /**
60
+ * Register a managed server for tracking.
61
+ */
62
+ protected registerServer(serverInfo: ServerInfo): void;
63
+ /**
64
+ * Unregister a server (called on stop).
65
+ */
66
+ protected unregisterServer(serverId: string): void;
67
+ /**
68
+ * Cleanup all active connections and servers.
69
+ * Should be called during adapter shutdown.
70
+ */
71
+ cleanup(): Promise<void>;
72
+ /**
73
+ * Generate a unique connection ID.
74
+ */
75
+ protected generateConnectionId(): string;
76
+ /**
77
+ * Generate a unique server ID.
78
+ */
79
+ protected generateServerId(): string;
80
+ /**
81
+ * Find an available port for server startup.
82
+ */
83
+ protected findAvailablePort(startPort?: number): Promise<number>;
84
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-adapter-base.d.ts","sourceRoot":"","sources":["../src/remote-adapter-base.ts"],"names":[],"mappings":"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"}