@axhub/genie 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/api-docs.html +2 -2
  2. package/dist/assets/App-Clb2COtW.js +274 -0
  3. package/dist/assets/ImagePlaygroundPage-DqhMSbM8.js +106 -0
  4. package/dist/assets/ImagePlaygroundPage-MEn3NN80.css +1 -0
  5. package/dist/assets/ReviewApp-CDcLYe-u.js +1 -0
  6. package/dist/assets/{_basePickBy-DVVb07UV.js → _basePickBy-jUZsM51q.js} +1 -1
  7. package/dist/assets/{_baseUniq-BtbziL5G.js → _baseUniq-BXglE6_v.js} +1 -1
  8. package/dist/assets/{arc-BsCC8yBD.js → arc-D-oFCFBv.js} +1 -1
  9. package/dist/assets/{architectureDiagram-2XIMDMQ5-woFp6eNI.js → architectureDiagram-2XIMDMQ5-DC8bAnQt.js} +1 -1
  10. package/dist/assets/{blockDiagram-WCTKOSBZ-ya8VAc2k.js → blockDiagram-WCTKOSBZ-C4semIRc.js} +1 -1
  11. package/dist/assets/{c4Diagram-IC4MRINW-CY1dZmIZ.js → c4Diagram-IC4MRINW-FHj1QO3y.js} +1 -1
  12. package/dist/assets/channel-BF4woPXX.js +1 -0
  13. package/dist/assets/{chunk-4BX2VUAB-CR1lAd74.js → chunk-4BX2VUAB-D-LjsQ_s.js} +1 -1
  14. package/dist/assets/{chunk-55IACEB6-CP98WcFC.js → chunk-55IACEB6-DI3j_d7A.js} +1 -1
  15. package/dist/assets/{chunk-FMBD7UC4-D9c7ijAB.js → chunk-FMBD7UC4-BEVnaLFN.js} +1 -1
  16. package/dist/assets/{chunk-JSJVCQXG-DQAGYOn-.js → chunk-JSJVCQXG-CSxpcErk.js} +1 -1
  17. package/dist/assets/{chunk-KX2RTZJC-BbTXiDq7.js → chunk-KX2RTZJC-BbuhDN4h.js} +1 -1
  18. package/dist/assets/{chunk-NQ4KR5QH-BI6AX0dr.js → chunk-NQ4KR5QH-C3x61XQa.js} +1 -1
  19. package/dist/assets/{chunk-QZHKN3VN-DB3V2Ifo.js → chunk-QZHKN3VN-DxWOFtPh.js} +1 -1
  20. package/dist/assets/{chunk-WL4C6EOR-DhzTthv6.js → chunk-WL4C6EOR-Bt2OauD2.js} +1 -1
  21. package/dist/assets/classDiagram-VBA2DB6C-D2kHlnQ7.js +1 -0
  22. package/dist/assets/classDiagram-v2-RAHNMMFH-D2kHlnQ7.js +1 -0
  23. package/dist/assets/clone-CqBvwCJW.js +1 -0
  24. package/dist/assets/{cose-bilkent-S5V4N54A-BQ09ZE2j.js → cose-bilkent-S5V4N54A-Dexadrue.js} +1 -1
  25. package/dist/assets/{dagre-KLK3FWXG-Dc2ueD_R.js → dagre-KLK3FWXG-F9U4X2xC.js} +1 -1
  26. package/dist/assets/{diagram-E7M64L7V-DP-LsQoL.js → diagram-E7M64L7V-B3V17aH3.js} +1 -1
  27. package/dist/assets/{diagram-IFDJBPK2-Cg6r42cB.js → diagram-IFDJBPK2-CdHAmLL1.js} +1 -1
  28. package/dist/assets/{diagram-P4PSJMXO-aHsfoUZE.js → diagram-P4PSJMXO-CrTNfk8K.js} +1 -1
  29. package/dist/assets/{erDiagram-INFDFZHY-qBXJ4aAz.js → erDiagram-INFDFZHY-vDh9SWK9.js} +1 -1
  30. package/dist/assets/{flowDiagram-PKNHOUZH-D_13emJM.js → flowDiagram-PKNHOUZH-DpltMg7L.js} +1 -1
  31. package/dist/assets/{ganttDiagram-A5KZAMGK-BvIcOLwz.js → ganttDiagram-A5KZAMGK-COTk2xur.js} +1 -1
  32. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-ad0vvNcU.js → gitGraphDiagram-K3NZZRJ6-BNV7bvvj.js} +1 -1
  33. package/dist/assets/{graph-CeJCMjan.js → graph-Dkeg9oys.js} +1 -1
  34. package/dist/assets/{highlighted-body-TPN3WLV5-B_novwSz.js → highlighted-body-TPN3WLV5-DaiQEBwR.js} +1 -1
  35. package/dist/assets/index-DgGmiqsP.css +1 -0
  36. package/dist/assets/index-DvA901Vs.js +2 -0
  37. package/dist/assets/{infoDiagram-LFFYTUFH-lOxAqb3m.js → infoDiagram-LFFYTUFH-CZioW3Gt.js} +1 -1
  38. package/dist/assets/{ishikawaDiagram-PHBUUO56-DIr-51gj.js → ishikawaDiagram-PHBUUO56-BbqR3i1B.js} +1 -1
  39. package/dist/assets/{journeyDiagram-4ABVD52K-CYcIW0ZU.js → journeyDiagram-4ABVD52K-wfb-WHzl.js} +1 -1
  40. package/dist/assets/{kanban-definition-K7BYSVSG-C1ZK616a.js → kanban-definition-K7BYSVSG-B3c4y3VN.js} +1 -1
  41. package/dist/assets/{layout-CI2RM-v6.js → layout-Xr9Z2VGF.js} +1 -1
  42. package/dist/assets/{linear-DE7bISck.js → linear-JBmzAJtl.js} +1 -1
  43. package/dist/assets/{mermaid-O7DHMXV3-XxAJo8EK.js → mermaid-O7DHMXV3-fDuyNLKe.js} +238 -220
  44. package/dist/assets/{mindmap-definition-YRQLILUH-Dz6EFjmn.js → mindmap-definition-YRQLILUH-B5NTN_jD.js} +1 -1
  45. package/dist/assets/{pieDiagram-SKSYHLDU-DPpEzUed.js → pieDiagram-SKSYHLDU-CuO98GVu.js} +1 -1
  46. package/dist/assets/{quadrantDiagram-337W2JSQ-xdoXNet7.js → quadrantDiagram-337W2JSQ-LL3f4vLf.js} +1 -1
  47. package/dist/assets/{requirementDiagram-Z7DCOOCP-DUq8H3CL.js → requirementDiagram-Z7DCOOCP-Di-2O6LH.js} +1 -1
  48. package/dist/assets/{sankeyDiagram-WA2Y5GQK-CmqEUxRu.js → sankeyDiagram-WA2Y5GQK-9lHqrXqR.js} +1 -1
  49. package/dist/assets/{sequenceDiagram-2WXFIKYE-DhtXRNiH.js → sequenceDiagram-2WXFIKYE-BQu-SoGr.js} +1 -1
  50. package/dist/assets/{stateDiagram-RAJIS63D-Dj0HOlbN.js → stateDiagram-RAJIS63D-BUxvd2BC.js} +1 -1
  51. package/dist/assets/stateDiagram-v2-FVOUBMTO-CDVexTiR.js +1 -0
  52. package/dist/assets/{timeline-definition-YZTLITO2-DUuJzZB5.js → timeline-definition-YZTLITO2-oP47UEU6.js} +1 -1
  53. package/dist/assets/{treemap-KZPCXAKY-DpYBQ0qr.js → treemap-KZPCXAKY-BRjDo2aE.js} +1 -1
  54. package/dist/assets/{vendor-codemirror-CMHSJ_9p.js → vendor-codemirror-BiCeS-y4.js} +1 -1
  55. package/dist/assets/{vendor-react-xmA_f8ig.js → vendor-react-DVlYPmi3.js} +1 -1
  56. package/dist/assets/{vennDiagram-LZ73GAT5-DpePUyOd.js → vennDiagram-LZ73GAT5-DrRqcDqo.js} +1 -1
  57. package/dist/assets/{xychartDiagram-JWTSCODW-Cfp1I4_U.js → xychartDiagram-JWTSCODW-DUXrymAi.js} +1 -1
  58. package/dist/index.html +4 -4
  59. package/package.json +25 -6
  60. package/scripts/refresh-acp-default-capabilities.mjs +160 -0
  61. package/server/acp-runtime/client.js +1137 -181
  62. package/server/acp-runtime/command-overrides.js +48 -0
  63. package/server/acp-runtime/index.js +576 -16
  64. package/server/acp-runtime/registry.js +6 -4
  65. package/server/acp-runtime/session-store.js +235 -92
  66. package/server/database/db.js +12 -3
  67. package/server/external-agent/ws.js +212 -11
  68. package/server/index.js +156 -53
  69. package/server/projects-watcher-config.js +4 -0
  70. package/server/projects.js +485 -125
  71. package/server/routes/cc-connect.js +5 -4
  72. package/server/routes/codex.js +24 -0
  73. package/server/routes/commands.js +166 -10
  74. package/server/routes/runs.js +641 -0
  75. package/server/routes/session-core.js +357 -109
  76. package/server/session-core/eventStore.js +0 -121
  77. package/server/session-core/providerAdapters.js +644 -163
  78. package/server/session-core/providerDiscovery.js +66 -38
  79. package/server/session-core/runRegistry.js +244 -0
  80. package/server/session-core/runtimeState.js +75 -3
  81. package/server/session-core/runtimeWriter.js +132 -10
  82. package/server/utils/codexImagePlayground.js +479 -0
  83. package/server/utils/localTerminal.js +56 -0
  84. package/server/utils/shellCommand.js +70 -0
  85. package/shared/acpCapabilities.js +393 -0
  86. package/shared/acpDefaultCapabilities.generated.json +141 -0
  87. package/shared/conversationEvents.js +425 -121
  88. package/dist/assets/App-CYCCsgwf.js +0 -264
  89. package/dist/assets/ReviewApp-0srHIXwb.js +0 -1
  90. package/dist/assets/channel-BMhScXFe.js +0 -1
  91. package/dist/assets/classDiagram-VBA2DB6C-CMIxlWcT.js +0 -1
  92. package/dist/assets/classDiagram-v2-RAHNMMFH-CMIxlWcT.js +0 -1
  93. package/dist/assets/clone-BPqOt4r3.js +0 -1
  94. package/dist/assets/index-C514cLyb.js +0 -2
  95. package/dist/assets/index-h1DBl_g3.css +0 -1
  96. package/dist/assets/stateDiagram-v2-FVOUBMTO-C9utf5gv.js +0 -1
@@ -1,61 +1,7 @@
1
- import fsSync from 'fs';
2
- import fs from 'fs/promises';
3
- import os from 'os';
4
- import path from 'path';
5
- import readline from 'readline';
6
-
7
1
  import {
8
- CONVERSATION_EVENT_KINDS,
9
2
  isConversationEvent
10
3
  } from '../../shared/conversationEvents.js';
11
4
 
12
- function getMirroredEventStoreRoot() {
13
- if (process.env.AXHUB_GENIE_SESSION_EVENTS_ROOT) {
14
- return path.resolve(process.env.AXHUB_GENIE_SESSION_EVENTS_ROOT);
15
- }
16
-
17
- return path.join(os.homedir(), '.axhub-genie', 'session-events');
18
- }
19
- const PERSISTED_EVENT_KINDS = new Set([
20
- CONVERSATION_EVENT_KINDS.USER_MESSAGE,
21
- CONVERSATION_EVENT_KINDS.ASSISTANT_TEXT_START,
22
- CONVERSATION_EVENT_KINDS.ASSISTANT_TEXT_DELTA,
23
- CONVERSATION_EVENT_KINDS.ASSISTANT_TEXT_END,
24
- CONVERSATION_EVENT_KINDS.SESSION_STATE_CHANGED,
25
- CONVERSATION_EVENT_KINDS.ERROR,
26
- CONVERSATION_EVENT_KINDS.APPROVAL_REQUEST,
27
- CONVERSATION_EVENT_KINDS.APPROVAL_RESOLVED,
28
- CONVERSATION_EVENT_KINDS.SYSTEM_NOTICE,
29
- CONVERSATION_EVENT_KINDS.MODE_UPDATE,
30
- CONVERSATION_EVENT_KINDS.AVAILABLE_COMMANDS_UPDATE,
31
- CONVERSATION_EVENT_KINDS.CONFIG_OPTION_UPDATE,
32
- CONVERSATION_EVENT_KINDS.SESSION_INFO_UPDATE,
33
- CONVERSATION_EVENT_KINDS.USAGE_UPDATE,
34
- CONVERSATION_EVENT_KINDS.PLAN_UPDATE,
35
- CONVERSATION_EVENT_KINDS.ARTIFACT_CREATED
36
- ]);
37
-
38
- function getSessionEventFilePath(provider, sessionId) {
39
- return path.join(getMirroredEventStoreRoot(), String(provider || 'claude'), `${sessionId}.jsonl`);
40
- }
41
-
42
- function normalizePersistedEvents(events = []) {
43
- return events.filter((event) => (
44
- isConversationEvent(event) &&
45
- event.sessionId &&
46
- PERSISTED_EVENT_KINDS.has(event.kind)
47
- ));
48
- }
49
-
50
- function extractSerializedEventKind(line) {
51
- if (typeof line !== 'string' || !line) {
52
- return null;
53
- }
54
-
55
- const match = line.match(/"kind"\s*:\s*"([^"]+)"/);
56
- return match?.[1] || null;
57
- }
58
-
59
5
  function sortObjectKeys(value) {
60
6
  if (Array.isArray(value)) {
61
7
  return value.map(sortObjectKeys);
@@ -85,73 +31,6 @@ function createEventSignature(event) {
85
31
  }));
86
32
  }
87
33
 
88
- export async function appendMirroredConversationEvents(events = []) {
89
- const normalizedEvents = normalizePersistedEvents(events);
90
- if (normalizedEvents.length === 0) {
91
- return;
92
- }
93
-
94
- const eventsByFile = new Map();
95
- normalizedEvents.forEach((event) => {
96
- const filePath = getSessionEventFilePath(event.provider, event.sessionId);
97
- if (!eventsByFile.has(filePath)) {
98
- eventsByFile.set(filePath, []);
99
- }
100
- eventsByFile.get(filePath).push(event);
101
- });
102
-
103
- await Promise.all(Array.from(eventsByFile.entries()).map(async ([filePath, fileEvents]) => {
104
- await fs.mkdir(path.dirname(filePath), { recursive: true });
105
- const serialized = fileEvents.map((event) => JSON.stringify(event)).join('\n');
106
- await fs.appendFile(filePath, `${serialized}\n`, 'utf8');
107
- }));
108
- }
109
-
110
- export async function readMirroredConversationEvents(provider, sessionId) {
111
- if (!provider || !sessionId) {
112
- return [];
113
- }
114
-
115
- const filePath = getSessionEventFilePath(provider, sessionId);
116
-
117
- try {
118
- const fileStream = fsSync.createReadStream(filePath, { encoding: 'utf8' });
119
- const rl = readline.createInterface({
120
- input: fileStream,
121
- crlfDelay: Infinity
122
- });
123
- const events = [];
124
-
125
- for await (const rawLine of rl) {
126
- const line = rawLine.trim();
127
- if (!line) {
128
- continue;
129
- }
130
-
131
- const kind = extractSerializedEventKind(line);
132
- if (!kind || !PERSISTED_EVENT_KINDS.has(kind)) {
133
- continue;
134
- }
135
-
136
- try {
137
- const event = JSON.parse(line);
138
- if (isConversationEvent(event) && PERSISTED_EVENT_KINDS.has(event.kind)) {
139
- events.push(event);
140
- }
141
- } catch {
142
- // Skip malformed lines and oversized legacy transcript events.
143
- }
144
- }
145
-
146
- return events;
147
- } catch (error) {
148
- if (error?.code === 'ENOENT') {
149
- return [];
150
- }
151
- throw error;
152
- }
153
- }
154
-
155
34
  export function mergeConversationEventHistories(primaryEvents = [], mirroredEvents = []) {
156
35
  const merged = [];
157
36
  const seenSignatures = new Set();