@axhub/genie 0.2.6 → 0.2.7

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 (120) hide show
  1. package/dist/assets/App-BWSqiXAT.js +220 -0
  2. package/dist/assets/App-DrlLKa8f.css +1 -0
  3. package/dist/assets/ReviewApp-nz3mbArg.js +1 -0
  4. package/dist/assets/{_basePickBy-DkiHsp3X.js → _basePickBy-C19AekOu.js} +1 -1
  5. package/dist/assets/{_baseUniq-7ElXb2sX.js → _baseUniq-JsnevLw_.js} +1 -1
  6. package/dist/assets/{arc-CEsS3MdK.js → arc-BLpcuBlf.js} +1 -1
  7. package/dist/assets/architectureDiagram-2XIMDMQ5-CarjBOOv.js +36 -0
  8. package/dist/assets/{blockDiagram-WCTKOSBZ-Cza6M6Ht.js → blockDiagram-WCTKOSBZ-DQBLwsUS.js} +3 -3
  9. package/dist/assets/c4Diagram-IC4MRINW-CGobwBIj.js +10 -0
  10. package/dist/assets/channel-DkFNxV_H.js +1 -0
  11. package/dist/assets/{chunk-4BX2VUAB--HkodwbY.js → chunk-4BX2VUAB-De63kbgc.js} +1 -1
  12. package/dist/assets/{chunk-55IACEB6-CyBuez4e.js → chunk-55IACEB6-DtTDDdM9.js} +1 -1
  13. package/dist/assets/{chunk-FMBD7UC4-CuzG4iAl.js → chunk-FMBD7UC4-DHuwd8tw.js} +1 -1
  14. package/dist/assets/{chunk-JSJVCQXG-BNi8S861.js → chunk-JSJVCQXG-BgytFtmO.js} +1 -1
  15. package/dist/assets/{chunk-KX2RTZJC-D817O-GT.js → chunk-KX2RTZJC-nZdp86aN.js} +1 -1
  16. package/dist/assets/chunk-NQ4KR5QH-CMH6EDP2.js +220 -0
  17. package/dist/assets/{chunk-QZHKN3VN-VMEn-zxh.js → chunk-QZHKN3VN-DvUQ3mnO.js} +1 -1
  18. package/dist/assets/chunk-WL4C6EOR-Dn7db_6t.js +189 -0
  19. package/dist/assets/classDiagram-VBA2DB6C-DtwCEe8S.js +1 -0
  20. package/dist/assets/classDiagram-v2-RAHNMMFH-DtwCEe8S.js +1 -0
  21. package/dist/assets/clone-C0lCEIEO.js +1 -0
  22. package/dist/assets/cose-bilkent-S5V4N54A-DD_nzqsz.js +1 -0
  23. package/dist/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  24. package/dist/assets/{dagre-KLK3FWXG-Bqp7DjEa.js → dagre-KLK3FWXG-CHYIvW47.js} +1 -1
  25. package/dist/assets/diagram-E7M64L7V-TVdvHtGc.js +24 -0
  26. package/dist/assets/{diagram-IFDJBPK2--fHfW6V2.js → diagram-IFDJBPK2-Dzsiln_C.js} +1 -1
  27. package/dist/assets/{diagram-P4PSJMXO-D1kQI5RB.js → diagram-P4PSJMXO-DKnGbUpE.js} +1 -1
  28. package/dist/assets/erDiagram-INFDFZHY-5Kw0bByo.js +70 -0
  29. package/dist/assets/{flowDiagram-PKNHOUZH-DWeNr4yg.js → flowDiagram-PKNHOUZH-BAZ2-jKp.js} +4 -4
  30. package/dist/assets/ganttDiagram-A5KZAMGK-CsADFkcq.js +292 -0
  31. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-B5a8UWjN.js → gitGraphDiagram-K3NZZRJ6-BflpyjGy.js} +1 -1
  32. package/dist/assets/{graph-Cw1rYoD9.js → graph-suelaXFh.js} +1 -1
  33. package/dist/assets/highlighted-body-OFNGDK62-CZrBMazC.js +1 -0
  34. package/dist/assets/index-B01NxbUv.css +1 -0
  35. package/dist/assets/index-DW5pGgQ_.js +2 -0
  36. package/dist/assets/{infoDiagram-LFFYTUFH-D2u70rhN.js → infoDiagram-LFFYTUFH-pfD1FA3p.js} +1 -1
  37. package/dist/assets/ishikawaDiagram-PHBUUO56-ndm9snwO.js +70 -0
  38. package/dist/assets/journeyDiagram-4ABVD52K-HgF2t7z5.js +139 -0
  39. package/dist/assets/{kanban-definition-K7BYSVSG-DbVt0v29.js → kanban-definition-K7BYSVSG-FWinmur1.js} +5 -5
  40. package/dist/assets/{layout-W_tRx4UV.js → layout-vcz43XvZ.js} +1 -1
  41. package/dist/assets/{linear-CcMb2ay-.js → linear-le4gc0vx.js} +1 -1
  42. package/dist/assets/mermaid-GHXKKRXX-CK8m3lad.js +870 -0
  43. package/dist/assets/mindmap-definition-YRQLILUH-CNq9SKj4.js +68 -0
  44. package/dist/assets/{pieDiagram-SKSYHLDU-CDyJaACv.js → pieDiagram-SKSYHLDU-C7PKDh3b.js} +2 -2
  45. package/dist/assets/quadrantDiagram-337W2JSQ-B7FnztNO.js +7 -0
  46. package/dist/assets/requirementDiagram-Z7DCOOCP-Bl_BM2Th.js +73 -0
  47. package/dist/assets/{sankeyDiagram-WA2Y5GQK-Di1ShaMF.js → sankeyDiagram-WA2Y5GQK-4gulcOP4.js} +3 -3
  48. package/dist/assets/sequenceDiagram-2WXFIKYE-VEuJDwyJ.js +145 -0
  49. package/dist/assets/{stateDiagram-RAJIS63D-CVZYMqyW.js → stateDiagram-RAJIS63D-CB4Vl7qM.js} +1 -1
  50. package/dist/assets/stateDiagram-v2-FVOUBMTO-C85ucl39.js +1 -0
  51. package/dist/assets/timeline-definition-YZTLITO2-BPGKhi7f.js +61 -0
  52. package/dist/assets/{treemap-KZPCXAKY-CGG4gx3C.js → treemap-KZPCXAKY-DZSEE6Hz.js} +58 -58
  53. package/dist/assets/vendor-codemirror-CyOKkaQZ.js +31 -0
  54. package/dist/assets/vendor-react-CP4yFTs7.js +8 -0
  55. package/dist/assets/vendor-xterm-DfcmCpbH.js +66 -0
  56. package/dist/assets/{vennDiagram-LZ73GAT5-Dds37L2k.js → vennDiagram-LZ73GAT5-8E_G06fI.js} +4 -4
  57. package/dist/assets/xychartDiagram-JWTSCODW-CbBk50-O.js +7 -0
  58. package/dist/index.html +4 -4
  59. package/package.json +2 -1
  60. package/server/_legacy-providers/README.md +30 -0
  61. package/server/_legacy-providers/claude-sdk.js +956 -0
  62. package/server/_legacy-providers/gemini-cli.js +368 -0
  63. package/server/_legacy-providers/openai-codex.js +705 -0
  64. package/server/_legacy-providers/opencode-cli.js +674 -0
  65. package/server/acp-runtime/client.js +1805 -0
  66. package/server/acp-runtime/client.test.js +688 -0
  67. package/server/acp-runtime/index.js +419 -0
  68. package/server/acp-runtime/registry.js +45 -0
  69. package/server/acp-runtime/session-store.js +254 -0
  70. package/server/acp-runtime/session-store.test.js +89 -0
  71. package/server/channels/runtime/AgentRuntimeAdapter.js +21 -70
  72. package/server/claude-sdk.js +24 -944
  73. package/server/cli.js +4 -2
  74. package/server/external-agent/service.js +52 -63
  75. package/server/gemini-cli.js +23 -360
  76. package/server/index.js +47 -44
  77. package/server/openai-codex.js +24 -698
  78. package/server/opencode-cli.js +70 -640
  79. package/server/routes/agent.js +2 -0
  80. package/server/routes/git.js +3 -20
  81. package/server/routes/session-core.js +44 -10
  82. package/server/session-core/abortSession.js +2 -18
  83. package/server/session-core/eventStore.js +5 -1
  84. package/server/session-core/providerAdapters.js +98 -10
  85. package/server/session-core/runtimeState.js +16 -17
  86. package/server/session-core/runtimeWriter.js +19 -12
  87. package/shared/conversationEvents.js +347 -10
  88. package/shared/conversationEvents.test.js +403 -0
  89. package/dist/assets/App-CYTE30Cf.js +0 -484
  90. package/dist/assets/App-qxJ8_QYu.css +0 -32
  91. package/dist/assets/ReviewApp-BEicSBzW.js +0 -1
  92. package/dist/assets/architectureDiagram-2XIMDMQ5-BubZ7T3U.js +0 -36
  93. package/dist/assets/c4Diagram-IC4MRINW-jhjtOQ12.js +0 -10
  94. package/dist/assets/channel-RmqTALN0.js +0 -1
  95. package/dist/assets/chunk-NQ4KR5QH-DyujyOvx.js +0 -220
  96. package/dist/assets/chunk-WL4C6EOR-CQHHFLvx.js +0 -189
  97. package/dist/assets/classDiagram-VBA2DB6C-wvVV1ggz.js +0 -1
  98. package/dist/assets/classDiagram-v2-RAHNMMFH-wvVV1ggz.js +0 -1
  99. package/dist/assets/clone-oT5aWXpf.js +0 -1
  100. package/dist/assets/cose-bilkent-S5V4N54A-qykDd54p.js +0 -1
  101. package/dist/assets/cytoscape.esm-2ZfV8NB5.js +0 -331
  102. package/dist/assets/diagram-E7M64L7V-BKtx468K.js +0 -24
  103. package/dist/assets/erDiagram-INFDFZHY-DT9YzdNw.js +0 -70
  104. package/dist/assets/ganttDiagram-A5KZAMGK--IgwcUhI.js +0 -292
  105. package/dist/assets/highlighted-body-TPN3WLV5-BCxJHuqY.js +0 -1
  106. package/dist/assets/index-CBuAXA5S.js +0 -2
  107. package/dist/assets/index-CyLWKyxy.css +0 -1
  108. package/dist/assets/ishikawaDiagram-PHBUUO56-Cl8yrezU.js +0 -70
  109. package/dist/assets/journeyDiagram-4ABVD52K-ddP0AMU9.js +0 -139
  110. package/dist/assets/mermaid-O7DHMXV3-BBJqt8pT.js +0 -988
  111. package/dist/assets/mindmap-definition-YRQLILUH-BGhZa7Na.js +0 -68
  112. package/dist/assets/quadrantDiagram-337W2JSQ-BSYuqf0Q.js +0 -7
  113. package/dist/assets/requirementDiagram-Z7DCOOCP-Cfi9YX9H.js +0 -73
  114. package/dist/assets/sequenceDiagram-2WXFIKYE-CYTTG38e.js +0 -145
  115. package/dist/assets/stateDiagram-v2-FVOUBMTO-Bbl0b4-i.js +0 -1
  116. package/dist/assets/timeline-definition-YZTLITO2-B1sdb5mK.js +0 -61
  117. package/dist/assets/vendor-codemirror-Dz7_EqNA.js +0 -39
  118. package/dist/assets/vendor-react-Cpt6D04s.js +0 -59
  119. package/dist/assets/vendor-xterm-DfaPXD3y.js +0 -66
  120. package/dist/assets/xychartDiagram-JWTSCODW-C8QKSyRR.js +0 -7
package/server/index.js CHANGED
@@ -97,10 +97,13 @@ import fetch from 'node-fetch';
97
97
  import mime from 'mime-types';
98
98
 
99
99
  import { getProjects, getSessions, getSessionMessages, renameProject, deleteSession, deleteProject, addProjectManually, extractProjectDirectory, clearProjectDirectoryCache, clearProviderSessionLookupCaches, getGeminiSessionMessages } from './projects.js';
100
- import { queryClaudeSDK, isClaudeSDKSessionActive, getActiveClaudeSDKSessions, resolveToolApproval } from './claude-sdk.js';
101
- import { queryCodex, isCodexSessionActive, getActiveCodexSessions } from './openai-codex.js';
102
- import { queryGemini, isGeminiSessionActive, getActiveGeminiSessions } from './gemini-cli.js';
103
- import { queryOpencode, isOpencodeSessionActive, getActiveOpencodeSessions } from './opencode-cli.js';
100
+ import {
101
+ executeAgentPrompt,
102
+ getActiveAgentSessions,
103
+ isAgentSessionActive,
104
+ resolveAgentPermission,
105
+ setAgentSessionMode
106
+ } from './acp-runtime/index.js';
104
107
  import gitRoutes from './routes/git.js';
105
108
  import authRoutes from './routes/auth.js';
106
109
  import mcpRoutes from './routes/mcp.js';
@@ -1112,31 +1115,24 @@ function handleChatConnection(ws) {
1112
1115
  try {
1113
1116
  data = JSON.parse(message);
1114
1117
 
1115
- if (data.type === 'claude-command') {
1116
- console.log('[DEBUG] User message:', data.command || '[Continue/Resume]');
1117
- console.log('📁 Project:', data.options?.projectPath || 'Unknown');
1118
- console.log('🔄 Session:', data.options?.sessionId ? 'Resume' : 'New');
1118
+ const agentCommandTypes = ['claude-command', 'codex-command', 'gemini-command', 'opencode-command'];
1119
1119
 
1120
- // Use Claude Agents SDK
1121
- await queryClaudeSDK(data.command, data.options, new SessionEventMirrorWriter(baseWriter, 'claude'));
1122
- } else if (data.type === 'codex-command') {
1123
- console.log('[DEBUG] Codex message:', data.command || '[Continue/Resume]');
1124
- console.log('📁 Project:', data.options?.projectPath || data.options?.cwd || 'Unknown');
1125
- console.log('🔄 Session:', data.options?.sessionId ? 'Resume' : 'New');
1126
- console.log('🤖 Model:', data.options?.model || 'default');
1127
- await queryCodex(data.command, data.options, new SessionEventMirrorWriter(baseWriter, 'codex'));
1128
- } else if (data.type === 'gemini-command') {
1129
- console.log('[DEBUG] Gemini message:', data.command || '[Continue/Resume]');
1120
+ if (agentCommandTypes.includes(data.type)) {
1121
+ const agentKey = data.type.replace(/-command$/, '');
1122
+ console.log(`[DEBUG] ${agentKey} message:`, data.command || '[Continue/Resume]');
1130
1123
  console.log('📁 Project:', data.options?.projectPath || data.options?.cwd || 'Unknown');
1131
1124
  console.log('🔄 Session:', data.options?.sessionId ? 'Resume' : 'New');
1132
1125
  console.log('🤖 Model:', data.options?.model || 'default');
1133
- await queryGemini(data.command, data.options, new SessionEventMirrorWriter(baseWriter, 'gemini'));
1134
- } else if (data.type === 'opencode-command') {
1135
- console.log('[DEBUG] OpenCode message:', data.command || '[Continue/Resume]');
1136
- console.log('📁 Project:', data.options?.projectPath || data.options?.cwd || 'Unknown');
1137
- console.log('🔄 Session:', data.options?.sessionId ? 'Resume' : 'New');
1138
- console.log('🤖 Model:', data.options?.model || 'default');
1139
- await queryOpencode(data.command, data.options, new SessionEventMirrorWriter(baseWriter, 'opencode'));
1126
+
1127
+ await executeAgentPrompt({
1128
+ agentKey,
1129
+ command: data.command,
1130
+ options: {
1131
+ ...(data.options || {}),
1132
+ clientRequestId: data.clientRequestId || data.options?.clientRequestId || null
1133
+ },
1134
+ writer: new SessionEventMirrorWriter(baseWriter, agentKey)
1135
+ });
1140
1136
  } else if (data.type === 'abort-session') {
1141
1137
  console.log('[DEBUG] Abort session request:', data.sessionId);
1142
1138
  const provider = typeof data.provider === 'string' && data.provider.trim()
@@ -1147,13 +1143,29 @@ function handleChatConnection(ws) {
1147
1143
  sessionId: data.sessionId,
1148
1144
  writer: getSessionWriter(provider)
1149
1145
  });
1150
- } else if (data.type === 'claude-permission-response') {
1151
- // Relay UI approval decisions back into the SDK control flow.
1152
- // This does not persist permissions; it only resolves the in-flight request,
1153
- // introduced so the SDK can resume once the user clicks Allow/Deny.
1146
+ } else if (data.type === 'set-session-mode') {
1147
+ const provider = typeof data.provider === 'string' && data.provider.trim()
1148
+ ? data.provider.trim().toLowerCase()
1149
+ : 'claude';
1150
+ const modeId = String(data.modeId || '').trim();
1151
+ if (!data.sessionId || !modeId) {
1152
+ throw new Error('set-session-mode requires sessionId and modeId');
1153
+ }
1154
+
1155
+ const changed = await setAgentSessionMode(provider, data.sessionId, modeId, {
1156
+ writer: getSessionWriter(provider)
1157
+ });
1158
+
1159
+ if (!changed) {
1160
+ throw new Error(`Unable to set session mode for ${provider}:${data.sessionId}`);
1161
+ }
1162
+ } else if (data.type === 'permission-response' || data.type === 'claude-permission-response') {
1154
1163
  if (data.requestId) {
1155
- resolveToolApproval(data.requestId, {
1164
+ resolveAgentPermission(data.requestId, {
1156
1165
  allow: Boolean(data.allow),
1166
+ optionId: data.optionId,
1167
+ outcome: data.outcome,
1168
+ cancelled: data.outcome?.outcome === 'cancelled' || Boolean(data.cancelled),
1157
1169
  updatedInput: data.updatedInput,
1158
1170
  message: data.message,
1159
1171
  rememberEntry: data.rememberEntry
@@ -1164,17 +1176,7 @@ function handleChatConnection(ws) {
1164
1176
  const provider = data.provider || 'claude';
1165
1177
  const sessionId = data.sessionId;
1166
1178
  const sessionWriter = getSessionWriter(provider);
1167
- let isActive;
1168
- if (provider === 'codex') {
1169
- isActive = isCodexSessionActive(sessionId);
1170
- } else if (provider === 'gemini') {
1171
- isActive = isGeminiSessionActive(sessionId);
1172
- } else if (provider === 'opencode') {
1173
- isActive = isOpencodeSessionActive(sessionId);
1174
- } else {
1175
- // Use Claude Agents SDK
1176
- isActive = isClaudeSDKSessionActive(sessionId);
1177
- }
1179
+ const isActive = isAgentSessionActive(provider, sessionId);
1178
1180
 
1179
1181
  sessionWriter.send({
1180
1182
  type: 'session-status',
@@ -1185,9 +1187,10 @@ function handleChatConnection(ws) {
1185
1187
  } else if (data.type === 'get-active-sessions') {
1186
1188
  // Get all currently active sessions
1187
1189
  const activeSessions = {
1188
- claude: getActiveClaudeSDKSessions(), codex: getActiveCodexSessions(),
1189
- gemini: getActiveGeminiSessions(),
1190
- opencode: getActiveOpencodeSessions()
1190
+ claude: getActiveAgentSessions('claude'),
1191
+ codex: getActiveAgentSessions('codex'),
1192
+ gemini: getActiveAgentSessions('gemini'),
1193
+ opencode: getActiveAgentSessions('opencode')
1191
1194
  };
1192
1195
  baseWriter.send({
1193
1196
  type: 'active-sessions',