@straiffi/archon 1.4.12 → 1.6.0

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 (130) hide show
  1. package/dist/client/assets/{GitHubActionsDialog-DcW7fUgz.js → GitHubActionsDialog-oMY61JXF.js} +1 -1
  2. package/dist/client/assets/{TestsDialog-xNEttQOx.js → TestsDialog-elElGi9L.js} +3 -4
  3. package/dist/client/assets/{architectureDiagram-3BPJPVTR-DHADo63Y.js → architectureDiagram-3BPJPVTR-BNcdEMha.js} +1 -1
  4. package/dist/client/assets/{blockDiagram-GPEHLZMM-D_LqGLuD.js → blockDiagram-GPEHLZMM-xHTKb0-z.js} +1 -1
  5. package/dist/client/assets/{c4Diagram-AAUBKEIU-mIqv7fCU.js → c4Diagram-AAUBKEIU-kMngbYRg.js} +1 -1
  6. package/dist/client/assets/channel-DAW1OrrC.js +1 -0
  7. package/dist/client/assets/{chunk-2J33WTMH-DP-b68f-.js → chunk-2J33WTMH-BVZnJcYa.js} +1 -1
  8. package/dist/client/assets/{chunk-3OPIFGDE-D4GWQbqc.js → chunk-3OPIFGDE-Dq_H_MkG.js} +1 -1
  9. package/dist/client/assets/{chunk-5ZQYHXKU-HftAkT9j.js → chunk-5ZQYHXKU-_TwHLQwE.js} +1 -1
  10. package/dist/client/assets/{chunk-727SXJPM-CvB0JQZP.js → chunk-727SXJPM-CKkS_93w.js} +1 -1
  11. package/dist/client/assets/{chunk-AQP2D5EJ-DSB28EAb.js → chunk-AQP2D5EJ-BHSSO0SM.js} +1 -1
  12. package/dist/client/assets/{chunk-CSCIHK7Q-DuSgBocb.js → chunk-CSCIHK7Q-CgzsiMAL.js} +1 -1
  13. package/dist/client/assets/{chunk-KSCS5N6A-cm_ppJ7v.js → chunk-KSCS5N6A-DM-rnicK.js} +1 -1
  14. package/dist/client/assets/{chunk-L5ZTLDWV-BzDHIV9v.js → chunk-L5ZTLDWV-CnMgoXZs.js} +1 -1
  15. package/dist/client/assets/{chunk-LZXEDZCA-BruMwvko.js → chunk-LZXEDZCA-CCr2z1iU.js} +2 -2
  16. package/dist/client/assets/{chunk-ND2GUHAM-DrnvodkL.js → chunk-ND2GUHAM-DtA6gjMn.js} +1 -1
  17. package/dist/client/assets/{chunk-NZK2D7GU-QVsa0LuF.js → chunk-NZK2D7GU-_8fmSSaf.js} +1 -1
  18. package/dist/client/assets/{chunk-O5CBEL6O-DJFhq2gr.js → chunk-O5CBEL6O-B84elqwU.js} +1 -1
  19. package/dist/client/assets/{chunk-WU5MYG2G-ieLjE2uQ.js → chunk-WU5MYG2G-DBvmvPPt.js} +1 -1
  20. package/dist/client/assets/classDiagram-4FO5ZUOK-BmFh-n6n.js +1 -0
  21. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-tA1aAbh4.js +1 -0
  22. package/dist/client/assets/{dagre-BM42HDAG-CFRh82aT.js → dagre-BM42HDAG-C-QssoNU.js} +1 -1
  23. package/dist/client/assets/{diagram-2AECGRRQ-CPk1WJvx.js → diagram-2AECGRRQ-8RpG5DGb.js} +1 -1
  24. package/dist/client/assets/{diagram-5GNKFQAL-DHMJ735r.js → diagram-5GNKFQAL-Dk2raJWq.js} +1 -1
  25. package/dist/client/assets/{diagram-KO2AKTUF-Cq9d2BWb.js → diagram-KO2AKTUF-7iZuIIef.js} +1 -1
  26. package/dist/client/assets/{diagram-LMA3HP47-CgWJTR_b.js → diagram-LMA3HP47-JLaaaEE6.js} +1 -1
  27. package/dist/client/assets/{diagram-OG6HWLK6-HoFYGw81.js → diagram-OG6HWLK6-jeL3-Rd3.js} +1 -1
  28. package/dist/client/assets/{erDiagram-TEJ5UH35-B7yuPZck.js → erDiagram-TEJ5UH35-B6uFrMrQ.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-I6XJVG4X-DaXXRHQj.js → flowDiagram-I6XJVG4X-BFWnhmx2.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-6RSMTGT7-pKsFmtHB.js → ganttDiagram-6RSMTGT7-nxON-689.js} +1 -1
  31. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-Dwx5kc1M.js → gitGraphDiagram-PVQCEYII-DEAsC0GZ.js} +1 -1
  32. package/dist/client/assets/index-BzDXl4AF.js +265 -0
  33. package/dist/client/assets/index-DSap5tSX.css +2 -0
  34. package/dist/client/assets/{infoDiagram-5YYISTIA-6Taupp-l.js → infoDiagram-5YYISTIA-CAZHR2I8.js} +1 -1
  35. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BBKjiFtW.js → ishikawaDiagram-YF4QCWOH-DEe4SNzl.js} +1 -1
  36. package/dist/client/assets/{journeyDiagram-JHISSGLW-BQQ1EKJ3.js → journeyDiagram-JHISSGLW-CG2kTAj9.js} +1 -1
  37. package/dist/client/assets/{kanban-definition-UN3LZRKU-BvsroFzw.js → kanban-definition-UN3LZRKU-DUWutAjA.js} +1 -1
  38. package/dist/client/assets/{line-C6BHsie7.js → line-B1SFN8mz.js} +1 -1
  39. package/dist/client/assets/{mermaid-parser.core-Cb4G8u3H.js → mermaid-parser.core-C-dyz_nb.js} +1 -1
  40. package/dist/client/assets/{mermaid.core-NCO8Z4wR.js → mermaid.core-nm4BMZuF.js} +3 -3
  41. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DYzSjAq3.js → mindmap-definition-RKZ34NQL-DZEd-RCz.js} +1 -1
  42. package/dist/client/assets/{pieDiagram-4H26LBE5-CWMyFFuU.js → pieDiagram-4H26LBE5-WXxrzUwX.js} +1 -1
  43. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-D1ifIucc.js → quadrantDiagram-W4KKPZXB-BClH2kQx.js} +1 -1
  44. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DW68fC21.js → requirementDiagram-4Y6WPE33-ByolUxfP.js} +1 -1
  45. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DnnV47BL.js → sankeyDiagram-5OEKKPKP-B2vcb3U1.js} +1 -1
  46. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-Dw-9ZBU_.js → sequenceDiagram-3UESZ5HK-J8Nt0GXG.js} +1 -1
  47. package/dist/client/assets/{stateDiagram-AJRCARHV-C7dkf8nk.js → stateDiagram-AJRCARHV-CrgZ4Uwa.js} +1 -1
  48. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CUEBQOsD.js +1 -0
  49. package/dist/client/assets/{timeline-definition-PNZ67QCA-BmVfK_16.js → timeline-definition-PNZ67QCA-CXebl6LI.js} +1 -1
  50. package/dist/client/assets/{vennDiagram-CIIHVFJN-B9j3QbmD.js → vennDiagram-CIIHVFJN-DLBqI39h.js} +1 -1
  51. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-C520auMy.js → wardleyDiagram-YWT4CUSO-ku4fViV9.js} +1 -1
  52. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CPqUJuqs.js → xychartDiagram-2RQKCTM6-5Jh-bBeb.js} +1 -1
  53. package/dist/client/index.html +2 -2
  54. package/dist/server/db.js +291 -3
  55. package/dist/server/db.js.map +1 -1
  56. package/dist/server/index.js +339 -97
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/server/lib/agent.js +853 -161
  59. package/dist/server/lib/agent.js.map +1 -1
  60. package/dist/server/lib/agentRuns.js +22 -0
  61. package/dist/server/lib/agentRuns.js.map +1 -1
  62. package/dist/server/lib/chatMessages.js +24 -8
  63. package/dist/server/lib/chatMessages.js.map +1 -1
  64. package/dist/server/lib/genericToolCall.js +151 -0
  65. package/dist/server/lib/genericToolCall.js.map +1 -0
  66. package/dist/server/lib/git.js +18 -0
  67. package/dist/server/lib/git.js.map +1 -1
  68. package/dist/server/lib/mobileAccess.js +45 -2
  69. package/dist/server/lib/mobileAccess.js.map +1 -1
  70. package/dist/server/lib/models.js +65 -48
  71. package/dist/server/lib/models.js.map +1 -1
  72. package/dist/server/lib/opencodeTaskSessions.js +216 -0
  73. package/dist/server/lib/opencodeTaskSessions.js.map +1 -0
  74. package/dist/server/lib/projectMemory.js +1073 -276
  75. package/dist/server/lib/projectMemory.js.map +1 -1
  76. package/dist/server/lib/projectMemoryCursor.js +27 -0
  77. package/dist/server/lib/projectMemoryCursor.js.map +1 -0
  78. package/dist/server/lib/projectMemoryEvents.js +24 -0
  79. package/dist/server/lib/projectMemoryEvents.js.map +1 -0
  80. package/dist/server/lib/projectMemoryLimits.js +61 -0
  81. package/dist/server/lib/projectMemoryLimits.js.map +1 -0
  82. package/dist/server/lib/projectMemoryPrompt.js +299 -110
  83. package/dist/server/lib/projectMemoryPrompt.js.map +1 -1
  84. package/dist/server/lib/projectMemoryScan.js +461 -493
  85. package/dist/server/lib/projectMemoryScan.js.map +1 -1
  86. package/dist/server/lib/projectMemorySelections.js +97 -0
  87. package/dist/server/lib/projectMemorySelections.js.map +1 -0
  88. package/dist/server/lib/projectMemorySuggestions.js +19 -4
  89. package/dist/server/lib/projectMemorySuggestions.js.map +1 -1
  90. package/dist/server/lib/projectMemoryTransfer.js +635 -83
  91. package/dist/server/lib/projectMemoryTransfer.js.map +1 -1
  92. package/dist/server/lib/projectPathGlob.js +40 -0
  93. package/dist/server/lib/projectPathGlob.js.map +1 -0
  94. package/dist/server/lib/projects.js +50 -0
  95. package/dist/server/lib/projects.js.map +1 -1
  96. package/dist/server/lib/promptSkills.js +5 -0
  97. package/dist/server/lib/promptSkills.js.map +1 -1
  98. package/dist/server/lib/specMessages.js +9 -6
  99. package/dist/server/lib/specMessages.js.map +1 -1
  100. package/dist/server/lib/specReviewContext.js +2 -1
  101. package/dist/server/lib/specReviewContext.js.map +1 -1
  102. package/dist/server/lib/ticketMessages.js +22 -7
  103. package/dist/server/lib/ticketMessages.js.map +1 -1
  104. package/dist/server/lib/tickets.js +6 -0
  105. package/dist/server/lib/tickets.js.map +1 -1
  106. package/dist/server/lib/transcriptRuns.js +85 -0
  107. package/dist/server/lib/transcriptRuns.js.map +1 -0
  108. package/dist/server/workers/build.js +18 -4
  109. package/dist/server/workers/build.js.map +1 -1
  110. package/dist/server/workers/chat.js +24 -7
  111. package/dist/server/workers/chat.js.map +1 -1
  112. package/dist/server/workers/followUp.js +27 -10
  113. package/dist/server/workers/followUp.js.map +1 -1
  114. package/dist/server/workers/plan.js +405 -69
  115. package/dist/server/workers/plan.js.map +1 -1
  116. package/dist/server/workers/planFollowUp.js +30 -7
  117. package/dist/server/workers/planFollowUp.js.map +1 -1
  118. package/dist/server/workers/review.js +76 -20
  119. package/dist/server/workers/review.js.map +1 -1
  120. package/dist/server/workers/specReview.js +10 -0
  121. package/dist/server/workers/specReview.js.map +1 -1
  122. package/dist/server/workers/specSession.js +37 -3
  123. package/dist/server/workers/specSession.js.map +1 -1
  124. package/package.json +1 -1
  125. package/dist/client/assets/channel-D7PWuiXU.js +0 -1
  126. package/dist/client/assets/classDiagram-4FO5ZUOK-BNIT931s.js +0 -1
  127. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-TRtc0GGS.js +0 -1
  128. package/dist/client/assets/index-5Eun897r.js +0 -260
  129. package/dist/client/assets/index-CWWEw76C.css +0 -2
  130. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BFmoroJA.js +0 -1
@@ -0,0 +1,216 @@
1
+ import Database from 'better-sqlite3';
2
+ import { resolveOpencodeDbPath } from './runtimePaths.js';
3
+ const normalizeToolName = (value) => {
4
+ return typeof value === 'string' ? value.toLowerCase().replace(/[^a-z0-9]/g, '') : '';
5
+ };
6
+ const isTaskTool = (value) => {
7
+ const normalized = normalizeToolName(value);
8
+ return normalized === 'task' || normalized === 'subagent' || normalized === 'agent';
9
+ };
10
+ const parseJsonObject = (value) => {
11
+ if (!value) {
12
+ return null;
13
+ }
14
+ try {
15
+ const parsed = JSON.parse(value);
16
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
17
+ ? parsed
18
+ : null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ };
24
+ const getString = (value) => {
25
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
26
+ };
27
+ const getNestedString = (value, paths) => {
28
+ for (const path of paths) {
29
+ let current = value;
30
+ for (const segment of path) {
31
+ if (!current || typeof current !== 'object' || !(segment in current)) {
32
+ current = null;
33
+ break;
34
+ }
35
+ current = current[segment];
36
+ }
37
+ const resolved = getString(current);
38
+ if (resolved) {
39
+ return resolved;
40
+ }
41
+ }
42
+ return null;
43
+ };
44
+ const getTaskLabel = (part) => {
45
+ const description = getNestedString(part, [
46
+ ['state', 'input', 'description'],
47
+ ['state', 'input', 'title'],
48
+ ['state', 'input', 'task'],
49
+ ['state', 'input', 'subagent_type'],
50
+ ['state', 'input', 'prompt'],
51
+ ]) ?? 'Subagent';
52
+ const firstLine = description.split('\n')[0] ?? description;
53
+ const clipped = firstLine.length > 120 ? `${firstLine.slice(0, 117)}...` : firstLine;
54
+ return clipped.startsWith('Subagent:') ? clipped : `Subagent: ${clipped}`;
55
+ };
56
+ export const parseOpencodeTaskEnvelope = (value) => {
57
+ if (!value) {
58
+ return null;
59
+ }
60
+ const taskStart = value.match(/<task\b([^>]*)>/i);
61
+ if (!taskStart) {
62
+ return null;
63
+ }
64
+ const attributes = taskStart[1] ?? '';
65
+ const childSessionId = attributes.match(/\bid=["']([^"']+)["']/i)?.[1]?.trim() || null;
66
+ const state = attributes.match(/\bstate=["']([^"']+)["']/i)?.[1]?.trim() || null;
67
+ const taskContent = value.slice((taskStart.index ?? 0) + taskStart[0].length);
68
+ const resultStart = taskContent.match(/<task_result>/i);
69
+ if (!resultStart) {
70
+ return { childSessionId, state, result: null };
71
+ }
72
+ const resultContent = taskContent.slice((resultStart.index ?? 0) + resultStart[0].length);
73
+ const resultEndIndex = resultContent.search(/<\/task_result>|<\/task>/i);
74
+ const result = (resultEndIndex >= 0 ? resultContent.slice(0, resultEndIndex) : resultContent).trim() || null;
75
+ return { childSessionId, state, result };
76
+ };
77
+ const mapTaskStatus = (value) => {
78
+ const normalized = value?.toLowerCase();
79
+ if (normalized === 'error' || normalized === 'failed') {
80
+ return 'error';
81
+ }
82
+ if (normalized === 'completed' || normalized === 'complete' || normalized === 'done') {
83
+ return 'done';
84
+ }
85
+ return 'running';
86
+ };
87
+ const getColumns = (database, table) => {
88
+ return new Set(database.prepare(`PRAGMA table_info(${table})`).all()
89
+ .map(row => row.name)
90
+ .filter((name) => Boolean(name)));
91
+ };
92
+ export const createOpencodeTaskSessionReader = () => {
93
+ let database = null;
94
+ try {
95
+ database = new Database(resolveOpencodeDbPath(), { readonly: true });
96
+ const sessionColumns = getColumns(database, 'session');
97
+ const messageColumns = getColumns(database, 'message');
98
+ const partColumns = getColumns(database, 'part');
99
+ const canReadTasks = ['id', 'session_id', 'time_created', 'data'].every(column => partColumns.has(column));
100
+ const canFindChildren = ['id', 'parent_id', 'time_created'].every(column => sessionColumns.has(column));
101
+ const canReadTranscript = canReadTasks
102
+ && ['id', 'session_id', 'data'].every(column => messageColumns.has(column))
103
+ && partColumns.has('message_id');
104
+ if (!canReadTasks) {
105
+ database.close();
106
+ return null;
107
+ }
108
+ const listTaskInvocations = (parentSessionId, since) => {
109
+ if (!database) {
110
+ return [];
111
+ }
112
+ const rows = database.prepare(`
113
+ SELECT id, data, time_created
114
+ FROM part
115
+ WHERE session_id = ? AND time_created >= ?
116
+ ORDER BY time_created ASC, id ASC
117
+ `).all(parentSessionId, since);
118
+ return rows.flatMap(row => {
119
+ const part = parseJsonObject(row.data);
120
+ if (!part || part.type !== 'tool' || !isTaskTool(part.tool)) {
121
+ return [];
122
+ }
123
+ const callId = getNestedString(part, [['callID'], ['callId'], ['id']]);
124
+ if (!callId) {
125
+ return [];
126
+ }
127
+ const rawOutput = getNestedString(part, [['state', 'output']]);
128
+ const envelope = parseOpencodeTaskEnvelope(rawOutput);
129
+ const childSessionId = getNestedString(part, [
130
+ ['state', 'metadata', 'sessionID'],
131
+ ['state', 'metadata', 'sessionId'],
132
+ ['state', 'metadata', 'session_id'],
133
+ ]) ?? envelope?.childSessionId ?? null;
134
+ const rawStatus = getNestedString(part, [['state', 'status']]) ?? envelope?.state ?? null;
135
+ return [{
136
+ callId,
137
+ label: getTaskLabel(part),
138
+ status: mapTaskStatus(rawStatus),
139
+ output: envelope ? envelope.result : rawOutput,
140
+ childSessionId,
141
+ timeCreated: Number(row.time_created ?? 0),
142
+ }];
143
+ });
144
+ };
145
+ const findParentSessionSince = (since) => {
146
+ if (!database) {
147
+ return null;
148
+ }
149
+ const parentFilter = canFindChildren ? 'AND parent_id IS NULL' : '';
150
+ const row = database.prepare(`
151
+ SELECT id, title, time_created
152
+ FROM session
153
+ WHERE time_created >= ? ${parentFilter}
154
+ ORDER BY time_created ASC
155
+ LIMIT 1
156
+ `).get(since);
157
+ return getString(row?.id);
158
+ };
159
+ const listChildSessions = (parentSessionId, since) => {
160
+ if (!database || !canFindChildren) {
161
+ return [];
162
+ }
163
+ const titleColumn = sessionColumns.has('title') ? 'title' : 'NULL AS title';
164
+ const rows = database.prepare(`
165
+ SELECT id, ${titleColumn}, time_created
166
+ FROM session
167
+ WHERE parent_id = ? AND time_created >= ?
168
+ ORDER BY time_created ASC, id ASC
169
+ `).all(parentSessionId, since);
170
+ return rows.flatMap(row => {
171
+ const id = getString(row.id);
172
+ return id ? [{ id, title: getString(row.title), timeCreated: Number(row.time_created ?? 0) }] : [];
173
+ });
174
+ };
175
+ const listSessionParts = (sessionId) => {
176
+ if (!database || !canReadTranscript) {
177
+ return [];
178
+ }
179
+ const rows = database.prepare(`
180
+ SELECT p.id, p.data, p.time_created, m.data AS message_data
181
+ FROM part p
182
+ INNER JOIN message m ON m.id = p.message_id
183
+ WHERE p.session_id = ?
184
+ ORDER BY p.time_created ASC, p.id ASC
185
+ `).all(sessionId);
186
+ return rows.flatMap(row => {
187
+ const part = parseJsonObject(row.data);
188
+ const message = parseJsonObject(row.message_data);
189
+ if (!part) {
190
+ return [];
191
+ }
192
+ return [{
193
+ id: getString(row.id) ?? `${row.time_created ?? 0}`,
194
+ role: getString(message?.role),
195
+ timeCreated: Number(row.time_created ?? 0),
196
+ data: part,
197
+ }];
198
+ });
199
+ };
200
+ return {
201
+ findParentSessionSince,
202
+ listTaskInvocations,
203
+ listChildSessions,
204
+ listSessionParts,
205
+ close: () => {
206
+ database?.close();
207
+ database = null;
208
+ },
209
+ };
210
+ }
211
+ catch {
212
+ database?.close();
213
+ return null;
214
+ }
215
+ };
216
+ //# sourceMappingURL=opencodeTaskSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeTaskSessions.js","sourceRoot":"","sources":["../../../server/lib/opencodeTaskSessions.ts"],"names":[],"mappings":"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"}