@axhub/genie 0.2.6 → 0.2.8

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 (102) hide show
  1. package/dist/api-docs.html +2 -2
  2. package/dist/assets/App-CTKZtqB1.js +460 -0
  3. package/dist/assets/{ReviewApp-BEicSBzW.js → ReviewApp-DM6BNAzR.js} +1 -1
  4. package/dist/assets/{_basePickBy-DkiHsp3X.js → _basePickBy-CqJbRZ9y.js} +1 -1
  5. package/dist/assets/{_baseUniq-7ElXb2sX.js → _baseUniq-BS8YH8jO.js} +1 -1
  6. package/dist/assets/{arc-CEsS3MdK.js → arc-BBmKEN-S.js} +1 -1
  7. package/dist/assets/{architectureDiagram-2XIMDMQ5-BubZ7T3U.js → architectureDiagram-2XIMDMQ5-N5lcb82R.js} +1 -1
  8. package/dist/assets/{blockDiagram-WCTKOSBZ-Cza6M6Ht.js → blockDiagram-WCTKOSBZ-DTMwHuLn.js} +1 -1
  9. package/dist/assets/{c4Diagram-IC4MRINW-jhjtOQ12.js → c4Diagram-IC4MRINW-BTKlkXI9.js} +1 -1
  10. package/dist/assets/channel-1oJBvF-0.js +1 -0
  11. package/dist/assets/{chunk-4BX2VUAB--HkodwbY.js → chunk-4BX2VUAB-DUdoTxAc.js} +1 -1
  12. package/dist/assets/{chunk-55IACEB6-CyBuez4e.js → chunk-55IACEB6-Bm_92xe4.js} +1 -1
  13. package/dist/assets/{chunk-FMBD7UC4-CuzG4iAl.js → chunk-FMBD7UC4-CGW0g62g.js} +1 -1
  14. package/dist/assets/{chunk-JSJVCQXG-BNi8S861.js → chunk-JSJVCQXG-DYkTH3w1.js} +1 -1
  15. package/dist/assets/{chunk-KX2RTZJC-D817O-GT.js → chunk-KX2RTZJC-C9oTlISU.js} +1 -1
  16. package/dist/assets/{chunk-NQ4KR5QH-DyujyOvx.js → chunk-NQ4KR5QH-CM50ygWP.js} +1 -1
  17. package/dist/assets/{chunk-QZHKN3VN-VMEn-zxh.js → chunk-QZHKN3VN-7dzpYeNJ.js} +1 -1
  18. package/dist/assets/{chunk-WL4C6EOR-CQHHFLvx.js → chunk-WL4C6EOR-Cm9nQrsr.js} +1 -1
  19. package/dist/assets/classDiagram-VBA2DB6C-d5TeKFM4.js +1 -0
  20. package/dist/assets/classDiagram-v2-RAHNMMFH-d5TeKFM4.js +1 -0
  21. package/dist/assets/clone-CinxIlEu.js +1 -0
  22. package/dist/assets/{cose-bilkent-S5V4N54A-qykDd54p.js → cose-bilkent-S5V4N54A-Ccp_p0JZ.js} +1 -1
  23. package/dist/assets/{dagre-KLK3FWXG-Bqp7DjEa.js → dagre-KLK3FWXG-fBwTLUp9.js} +1 -1
  24. package/dist/assets/{diagram-E7M64L7V-BKtx468K.js → diagram-E7M64L7V-CeNVmFUp.js} +1 -1
  25. package/dist/assets/{diagram-IFDJBPK2--fHfW6V2.js → diagram-IFDJBPK2-CtavyLGa.js} +1 -1
  26. package/dist/assets/{diagram-P4PSJMXO-D1kQI5RB.js → diagram-P4PSJMXO-CpQTjQwc.js} +1 -1
  27. package/dist/assets/{erDiagram-INFDFZHY-DT9YzdNw.js → erDiagram-INFDFZHY-B8R5vwhd.js} +1 -1
  28. package/dist/assets/{flowDiagram-PKNHOUZH-DWeNr4yg.js → flowDiagram-PKNHOUZH-BvkVVwIQ.js} +1 -1
  29. package/dist/assets/{ganttDiagram-A5KZAMGK--IgwcUhI.js → ganttDiagram-A5KZAMGK-DOu3hSNa.js} +1 -1
  30. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-B5a8UWjN.js → gitGraphDiagram-K3NZZRJ6-C7zT67YE.js} +1 -1
  31. package/dist/assets/{graph-Cw1rYoD9.js → graph-D11wiwHo.js} +1 -1
  32. package/dist/assets/{highlighted-body-TPN3WLV5-BCxJHuqY.js → highlighted-body-TPN3WLV5-Babpthg-.js} +1 -1
  33. package/dist/assets/index-DFxzgWoO.js +2 -0
  34. package/dist/assets/index-YCFGDVKw.css +1 -0
  35. package/dist/assets/{infoDiagram-LFFYTUFH-D2u70rhN.js → infoDiagram-LFFYTUFH-BmA7IpQG.js} +1 -1
  36. package/dist/assets/{ishikawaDiagram-PHBUUO56-Cl8yrezU.js → ishikawaDiagram-PHBUUO56-BEquZd3E.js} +1 -1
  37. package/dist/assets/{journeyDiagram-4ABVD52K-ddP0AMU9.js → journeyDiagram-4ABVD52K-BfemGz7f.js} +1 -1
  38. package/dist/assets/{kanban-definition-K7BYSVSG-DbVt0v29.js → kanban-definition-K7BYSVSG-CWja3mln.js} +1 -1
  39. package/dist/assets/{layout-W_tRx4UV.js → layout-BLUNf-PJ.js} +1 -1
  40. package/dist/assets/{linear-CcMb2ay-.js → linear-DukIV_Xv.js} +1 -1
  41. package/dist/assets/{mermaid-O7DHMXV3-BBJqt8pT.js → mermaid-O7DHMXV3-SgtM28qI.js} +265 -215
  42. package/dist/assets/{mindmap-definition-YRQLILUH-BGhZa7Na.js → mindmap-definition-YRQLILUH-4UjqXITU.js} +1 -1
  43. package/dist/assets/{pieDiagram-SKSYHLDU-CDyJaACv.js → pieDiagram-SKSYHLDU-8AxqJd0M.js} +1 -1
  44. package/dist/assets/{quadrantDiagram-337W2JSQ-BSYuqf0Q.js → quadrantDiagram-337W2JSQ-D60m8V8r.js} +1 -1
  45. package/dist/assets/{requirementDiagram-Z7DCOOCP-Cfi9YX9H.js → requirementDiagram-Z7DCOOCP-zqh9jBVf.js} +1 -1
  46. package/dist/assets/{sankeyDiagram-WA2Y5GQK-Di1ShaMF.js → sankeyDiagram-WA2Y5GQK-CDZILTLI.js} +1 -1
  47. package/dist/assets/{sequenceDiagram-2WXFIKYE-CYTTG38e.js → sequenceDiagram-2WXFIKYE-7BReFd0L.js} +1 -1
  48. package/dist/assets/{stateDiagram-RAJIS63D-CVZYMqyW.js → stateDiagram-RAJIS63D-HPTVdIG4.js} +1 -1
  49. package/dist/assets/stateDiagram-v2-FVOUBMTO-DTUf5_gC.js +1 -0
  50. package/dist/assets/{timeline-definition-YZTLITO2-B1sdb5mK.js → timeline-definition-YZTLITO2-CTVllFgr.js} +1 -1
  51. package/dist/assets/{treemap-KZPCXAKY-CGG4gx3C.js → treemap-KZPCXAKY-BtyxboJZ.js} +1 -1
  52. package/dist/assets/{vennDiagram-LZ73GAT5-Dds37L2k.js → vennDiagram-LZ73GAT5-D96ZI6Mg.js} +1 -1
  53. package/dist/assets/{xychartDiagram-JWTSCODW-C8QKSyRR.js → xychartDiagram-JWTSCODW-eRk-39YO.js} +1 -1
  54. package/dist/index.html +2 -2
  55. package/package.json +35 -33
  56. package/server/_legacy-providers/README.md +30 -0
  57. package/server/_legacy-providers/claude-sdk.js +956 -0
  58. package/server/_legacy-providers/gemini-cli.js +368 -0
  59. package/server/_legacy-providers/openai-codex.js +705 -0
  60. package/server/_legacy-providers/opencode-cli.js +674 -0
  61. package/server/acp-runtime/client.js +1872 -0
  62. package/server/acp-runtime/index.js +408 -0
  63. package/server/acp-runtime/registry.js +45 -0
  64. package/server/acp-runtime/session-store.js +254 -0
  65. package/server/channels/runtime/AgentRuntimeAdapter.js +22 -80
  66. package/server/claude-sdk.js +24 -946
  67. package/server/cli.js +140 -2
  68. package/server/external-agent/service.js +52 -63
  69. package/server/gemini-cli.js +21 -360
  70. package/server/index.js +133 -58
  71. package/server/openai-codex.js +19 -695
  72. package/server/opencode-cli.js +68 -640
  73. package/server/projects.js +128 -85
  74. package/server/routes/agent.js +2 -0
  75. package/server/routes/cc-connect.js +1131 -0
  76. package/server/routes/cli-auth.js +1 -73
  77. package/server/routes/commands.js +4 -9
  78. package/server/routes/git.js +3 -20
  79. package/server/routes/projects.js +45 -24
  80. package/server/routes/session-core.js +44 -10
  81. package/server/session-core/abortSession.js +2 -18
  82. package/server/session-core/eventStore.js +5 -1
  83. package/server/session-core/providerAdapters.js +98 -10
  84. package/server/session-core/providerDiscovery.js +8 -3
  85. package/server/session-core/runtimeState.js +16 -17
  86. package/server/session-core/runtimeWriter.js +19 -12
  87. package/server/utils/ccConnectManager.js +390 -0
  88. package/server/utils/ccConnectState.js +575 -0
  89. package/server/utils/resolveCommandPath.js +71 -0
  90. package/server/utils/workspaceRoots.js +154 -0
  91. package/shared/conversationEvents.js +347 -10
  92. package/dist/assets/App-CYTE30Cf.js +0 -484
  93. package/dist/assets/channel-RmqTALN0.js +0 -1
  94. package/dist/assets/classDiagram-VBA2DB6C-wvVV1ggz.js +0 -1
  95. package/dist/assets/classDiagram-v2-RAHNMMFH-wvVV1ggz.js +0 -1
  96. package/dist/assets/clone-oT5aWXpf.js +0 -1
  97. package/dist/assets/index-CBuAXA5S.js +0 -2
  98. package/dist/assets/index-CyLWKyxy.css +0 -1
  99. package/dist/assets/stateDiagram-v2-FVOUBMTO-Bbl0b4-i.js +0 -1
  100. package/server/cli.test.js +0 -76
  101. package/server/external-agent/service.test.js +0 -53
  102. package/server/external-agent/ws.test.js +0 -289
@@ -1,8 +1,4 @@
1
- import { queryClaudeSDK } from '../../claude-sdk.js';
2
- import { queryCodex } from '../../openai-codex.js';
3
- import { queryGemini } from '../../gemini-cli.js';
4
- import { queryOpencode } from '../../opencode-cli.js';
5
- import { CODEX_MODELS, GEMINI_MODELS, OPENCODE_MODELS } from '../../../shared/modelConstants.js';
1
+ import { executeAgentPrompt } from '../../acp-runtime/index.js';
6
2
 
7
3
  function normalizeBackend(backend) {
8
4
  const normalized = String(backend || '').trim().toLowerCase();
@@ -12,13 +8,6 @@ function normalizeBackend(backend) {
12
8
  return 'codex';
13
9
  }
14
10
 
15
- function getDefaultModel(backend) {
16
- if (backend === 'codex') return CODEX_MODELS.DEFAULT;
17
- if (backend === 'gemini') return GEMINI_MODELS.DEFAULT;
18
- if (backend === 'opencode') return OPENCODE_MODELS.DEFAULT;
19
- return undefined;
20
- }
21
-
22
11
  function createWriter(callbacks) {
23
12
  const state = {
24
13
  sessionId: null,
@@ -55,69 +44,28 @@ function createWriter(callbacks) {
55
44
  return;
56
45
  }
57
46
 
58
- if (payload.type === 'claude-response') {
59
- const delta = payload?.data?.delta?.text;
60
- if (payload?.data?.type === 'content_block_delta' && typeof delta === 'string' && delta.length > 0) {
61
- callbacks.onDelta?.(delta);
47
+ if (payload.type === 'conversation-event' && payload.event) {
48
+ if (payload.event.kind === 'assistant_text_delta' && typeof payload.event.payload?.text === 'string') {
49
+ callbacks.onDelta?.(payload.event.payload.text);
62
50
  return;
63
51
  }
64
52
 
65
- if (payload?.data?.type === 'content_block_stop') {
66
- state.done = true;
67
- }
68
-
69
- return;
70
- }
71
-
72
- if (payload.type === 'codex-response') {
73
- if (payload?.data?.type === 'item_delta' && typeof payload?.data?.delta === 'string' && payload.data.delta.length > 0) {
74
- const itemId = payload?.data?.itemId ? String(payload.data.itemId) : null;
75
- const isReasoning = !!payload?.data?.isReasoning || payload?.data?.itemType === 'reasoning';
76
-
77
- // Feishu channel does not output model reasoning/thinking content.
78
- if (isReasoning) {
79
- return;
80
- }
81
-
82
- if (itemId) {
83
- state.codexDeltaItems.add(itemId);
53
+ if (payload.event.kind === 'session_state_changed') {
54
+ const nextState = String(payload.event.payload?.state || '').trim().toLowerCase();
55
+ if (nextState === 'completed') {
56
+ state.done = true;
57
+ } else if (nextState === 'errored') {
58
+ state.failed = true;
59
+ callbacks.onError?.(new Error(payload.event.payload?.message || 'Agent runtime error'));
60
+ } else if (nextState === 'aborted') {
61
+ state.failed = true;
62
+ callbacks.onError?.(new Error('Agent session aborted'));
84
63
  }
85
-
86
- callbacks.onDelta?.(payload.data.delta);
87
- return;
88
64
  }
89
-
90
- if (payload?.data?.type === 'item_done' && typeof payload?.data?.content === 'string' && payload.data.content.length > 0) {
91
- const itemId = payload?.data?.itemId ? String(payload.data.itemId) : null;
92
- const isReasoning = !!payload?.data?.isReasoning || payload?.data?.itemType === 'reasoning';
93
- const hasDeltaStreamed = !!(itemId && state.codexDeltaItems.has(itemId));
94
-
95
- // Feishu channel does not output model reasoning/thinking content.
96
- if (isReasoning) {
97
- if (itemId) {
98
- state.codexDeltaItems.delete(itemId);
99
- }
100
- return;
101
- }
102
-
103
- if (!hasDeltaStreamed) {
104
- callbacks.onDelta?.(payload.data.content);
105
- }
106
-
107
- if (itemId) {
108
- state.codexDeltaItems.delete(itemId);
109
- }
110
- }
111
-
112
- return;
113
- }
114
-
115
- if (payload.type === 'claude-complete' || payload.type === 'codex-complete') {
116
- state.done = true;
117
65
  return;
118
66
  }
119
67
 
120
- if (payload.type === 'claude-error' || payload.type === 'codex-error') {
68
+ if (payload.type === 'error') {
121
69
  state.failed = true;
122
70
  callbacks.onError?.(new Error(payload.error || 'Agent runtime error'));
123
71
  }
@@ -140,7 +88,6 @@ export async function runBackendSession({
140
88
  onError,
141
89
  }) {
142
90
  const resolvedBackend = normalizeBackend(backend);
143
- const resolvedModel = model || getDefaultModel(resolvedBackend);
144
91
 
145
92
  const writer = createWriter({
146
93
  onSessionId,
@@ -152,23 +99,18 @@ export async function runBackendSession({
152
99
  projectPath,
153
100
  cwd: projectPath,
154
101
  sessionId: sessionId || undefined,
155
- model: resolvedModel,
102
+ model: model || undefined,
156
103
  permissionMode: 'bypassPermissions',
157
104
  resume: !!sessionId,
158
105
  skipPermissions: true,
159
106
  };
160
107
 
161
- if (resolvedBackend === 'claude') {
162
- await queryClaudeSDK(message, options, writer);
163
- } else if (resolvedBackend === 'codex') {
164
- await queryCodex(message, options, writer);
165
- } else if (resolvedBackend === 'gemini') {
166
- await queryGemini(message, options, writer);
167
- } else if (resolvedBackend === 'opencode') {
168
- await queryOpencode(message, options, writer);
169
- } else {
170
- throw new Error(`Unsupported backend: ${resolvedBackend}`);
171
- }
108
+ await executeAgentPrompt({
109
+ agentKey: resolvedBackend,
110
+ command: message,
111
+ options,
112
+ writer
113
+ });
172
114
 
173
115
  return {
174
116
  sessionId: writer.getState().sessionId || sessionId || null,