@swarmify/agents-cli 1.10.3 → 1.10.4

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 (129) hide show
  1. package/README.md +28 -0
  2. package/dist/commands/__tests__/sessions.test.d.ts +2 -0
  3. package/dist/commands/__tests__/sessions.test.d.ts.map +1 -0
  4. package/dist/commands/__tests__/sessions.test.js +170 -0
  5. package/dist/commands/__tests__/sessions.test.js.map +1 -0
  6. package/dist/commands/commands.d.ts.map +1 -1
  7. package/dist/commands/commands.js +74 -56
  8. package/dist/commands/commands.js.map +1 -1
  9. package/dist/commands/daemon.js +1 -1
  10. package/dist/commands/daemon.js.map +1 -1
  11. package/dist/commands/hooks.d.ts.map +1 -1
  12. package/dist/commands/hooks.js +67 -49
  13. package/dist/commands/hooks.js.map +1 -1
  14. package/dist/commands/mcp.d.ts.map +1 -1
  15. package/dist/commands/mcp.js +29 -18
  16. package/dist/commands/mcp.js.map +1 -1
  17. package/dist/commands/packages.d.ts.map +1 -1
  18. package/dist/commands/packages.js +3 -3
  19. package/dist/commands/packages.js.map +1 -1
  20. package/dist/commands/permissions.d.ts.map +1 -1
  21. package/dist/commands/permissions.js +71 -48
  22. package/dist/commands/permissions.js.map +1 -1
  23. package/dist/commands/plugins.js +8 -8
  24. package/dist/commands/plugins.js.map +1 -1
  25. package/dist/commands/pty.d.ts +20 -0
  26. package/dist/commands/pty.d.ts.map +1 -0
  27. package/dist/commands/pty.js +280 -0
  28. package/dist/commands/pty.js.map +1 -0
  29. package/dist/commands/pull.d.ts.map +1 -1
  30. package/dist/commands/pull.js +15 -14
  31. package/dist/commands/pull.js.map +1 -1
  32. package/dist/commands/push.d.ts.map +1 -1
  33. package/dist/commands/push.js +2 -2
  34. package/dist/commands/push.js.map +1 -1
  35. package/dist/commands/routines.d.ts.map +1 -1
  36. package/dist/commands/routines.js +14 -10
  37. package/dist/commands/routines.js.map +1 -1
  38. package/dist/commands/rules.d.ts.map +1 -1
  39. package/dist/commands/rules.js +65 -50
  40. package/dist/commands/rules.js.map +1 -1
  41. package/dist/commands/sessions.d.ts.map +1 -1
  42. package/dist/commands/sessions.js +219 -21
  43. package/dist/commands/sessions.js.map +1 -1
  44. package/dist/commands/sessions.test.d.ts +2 -0
  45. package/dist/commands/sessions.test.d.ts.map +1 -0
  46. package/dist/commands/sessions.test.js +53 -0
  47. package/dist/commands/sessions.test.js.map +1 -0
  48. package/dist/commands/skills.d.ts.map +1 -1
  49. package/dist/commands/skills.js +70 -46
  50. package/dist/commands/skills.js.map +1 -1
  51. package/dist/commands/subagents.d.ts.map +1 -1
  52. package/dist/commands/subagents.js +10 -4
  53. package/dist/commands/subagents.js.map +1 -1
  54. package/dist/commands/utils.d.ts +16 -0
  55. package/dist/commands/utils.d.ts.map +1 -1
  56. package/dist/commands/utils.js +48 -0
  57. package/dist/commands/utils.js.map +1 -1
  58. package/dist/commands/versions.d.ts.map +1 -1
  59. package/dist/commands/versions.js +144 -43
  60. package/dist/commands/versions.js.map +1 -1
  61. package/dist/commands/view.d.ts.map +1 -1
  62. package/dist/commands/view.js +97 -40
  63. package/dist/commands/view.js.map +1 -1
  64. package/dist/index.js +65 -42
  65. package/dist/index.js.map +1 -1
  66. package/dist/lib/agents.d.ts +4 -0
  67. package/dist/lib/agents.d.ts.map +1 -1
  68. package/dist/lib/agents.js +36 -1
  69. package/dist/lib/agents.js.map +1 -1
  70. package/dist/lib/daemon.d.ts.map +1 -1
  71. package/dist/lib/daemon.js +15 -7
  72. package/dist/lib/daemon.js.map +1 -1
  73. package/dist/lib/git.d.ts.map +1 -1
  74. package/dist/lib/git.js +11 -1
  75. package/dist/lib/git.js.map +1 -1
  76. package/dist/lib/pty-client.d.ts +22 -0
  77. package/dist/lib/pty-client.d.ts.map +1 -0
  78. package/dist/lib/pty-client.js +181 -0
  79. package/dist/lib/pty-client.js.map +1 -0
  80. package/dist/lib/pty-server.d.ts +16 -0
  81. package/dist/lib/pty-server.d.ts.map +1 -0
  82. package/dist/lib/pty-server.js +422 -0
  83. package/dist/lib/pty-server.js.map +1 -0
  84. package/dist/lib/runner.d.ts.map +1 -1
  85. package/dist/lib/runner.js +13 -9
  86. package/dist/lib/runner.js.map +1 -1
  87. package/dist/lib/sandbox.js +1 -1
  88. package/dist/lib/sandbox.js.map +1 -1
  89. package/dist/lib/session/discover.d.ts +18 -0
  90. package/dist/lib/session/discover.d.ts.map +1 -1
  91. package/dist/lib/session/discover.js +78 -67
  92. package/dist/lib/session/discover.js.map +1 -1
  93. package/dist/lib/session/parse.d.ts.map +1 -1
  94. package/dist/lib/session/parse.js +8 -3
  95. package/dist/lib/session/parse.js.map +1 -1
  96. package/dist/lib/shims.d.ts.map +1 -1
  97. package/dist/lib/shims.js +6 -1
  98. package/dist/lib/shims.js.map +1 -1
  99. package/dist/lib/state.d.ts +0 -1
  100. package/dist/lib/state.d.ts.map +1 -1
  101. package/dist/lib/state.js +3 -9
  102. package/dist/lib/state.js.map +1 -1
  103. package/dist/lib/types.d.ts +2 -5
  104. package/dist/lib/types.d.ts.map +1 -1
  105. package/dist/lib/types.js.map +1 -1
  106. package/dist/lib/usage.d.ts +29 -0
  107. package/dist/lib/usage.d.ts.map +1 -0
  108. package/dist/lib/usage.js +416 -0
  109. package/dist/lib/usage.js.map +1 -0
  110. package/dist/lib/versions.d.ts.map +1 -1
  111. package/dist/lib/versions.js +19 -8
  112. package/dist/lib/versions.js.map +1 -1
  113. package/package.json +3 -1
  114. package/dist/commands/cron.d.ts +0 -3
  115. package/dist/commands/cron.d.ts.map +0 -1
  116. package/dist/commands/cron.js +0 -457
  117. package/dist/commands/cron.js.map +0 -1
  118. package/dist/lib/cron.d.ts +0 -70
  119. package/dist/lib/cron.d.ts.map +0 -1
  120. package/dist/lib/cron.js +0 -325
  121. package/dist/lib/cron.js.map +0 -1
  122. package/dist/lib/drive-server.d.ts +0 -9
  123. package/dist/lib/drive-server.d.ts.map +0 -1
  124. package/dist/lib/drive-server.js +0 -217
  125. package/dist/lib/drive-server.js.map +0 -1
  126. package/dist/lib/drives.d.ts +0 -34
  127. package/dist/lib/drives.d.ts.map +0 -1
  128. package/dist/lib/drives.js +0 -267
  129. package/dist/lib/drives.js.map +0 -1
package/dist/lib/cron.js DELETED
@@ -1,325 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import * as yaml from 'yaml';
4
- import { Cron } from 'croner';
5
- import { getCronDir, getRunsDir, ensureAgentsDir } from './state.js';
6
- import { ALL_AGENT_IDS } from './agents.js';
7
- const JOB_DEFAULTS = {
8
- mode: 'plan',
9
- effort: 'default',
10
- timeout: '30m',
11
- enabled: true,
12
- };
13
- export function listJobs() {
14
- ensureAgentsDir();
15
- const jobsDir = getCronDir();
16
- if (!fs.existsSync(jobsDir))
17
- return [];
18
- const files = fs.readdirSync(jobsDir).filter((f) => f.endsWith('.yml') || f.endsWith('.yaml'));
19
- const jobs = [];
20
- for (const file of files) {
21
- const job = readJobFile(path.join(jobsDir, file));
22
- if (job)
23
- jobs.push(job);
24
- }
25
- return jobs;
26
- }
27
- export function readJob(name) {
28
- ensureAgentsDir();
29
- const jobsDir = getCronDir();
30
- for (const ext of ['.yml', '.yaml']) {
31
- const filePath = path.join(jobsDir, name + ext);
32
- if (fs.existsSync(filePath)) {
33
- return readJobFile(filePath);
34
- }
35
- }
36
- return null;
37
- }
38
- function readJobFile(filePath) {
39
- try {
40
- const content = fs.readFileSync(filePath, 'utf-8');
41
- const parsed = yaml.parse(content);
42
- if (!parsed || typeof parsed !== 'object')
43
- return null;
44
- return {
45
- ...JOB_DEFAULTS,
46
- ...parsed,
47
- name: parsed.name || path.basename(filePath).replace(/\.ya?ml$/, ''),
48
- };
49
- }
50
- catch {
51
- return null;
52
- }
53
- }
54
- export function writeJob(config) {
55
- ensureAgentsDir();
56
- const jobsDir = getCronDir();
57
- const filePath = path.join(jobsDir, config.name + '.yml');
58
- const output = { ...config };
59
- if (output.mode === 'plan')
60
- delete output.mode;
61
- if (output.effort === 'default')
62
- delete output.effort;
63
- if (output.timeout === '30m')
64
- delete output.timeout;
65
- if (output.enabled === true)
66
- delete output.enabled;
67
- if (output.runOnce === false || output.runOnce === undefined)
68
- delete output.runOnce;
69
- fs.writeFileSync(filePath, yaml.stringify(output), 'utf-8');
70
- }
71
- export function deleteJob(name) {
72
- const jobsDir = getCronDir();
73
- for (const ext of ['.yml', '.yaml']) {
74
- const filePath = path.join(jobsDir, name + ext);
75
- if (fs.existsSync(filePath)) {
76
- fs.unlinkSync(filePath);
77
- return true;
78
- }
79
- }
80
- return false;
81
- }
82
- export function setJobEnabled(name, enabled) {
83
- const job = readJob(name);
84
- if (!job)
85
- throw new Error(`Job '${name}' not found`);
86
- job.enabled = enabled;
87
- writeJob(job);
88
- }
89
- export function validateJob(config) {
90
- const errors = [];
91
- if (!config.name || typeof config.name !== 'string') {
92
- errors.push('name is required');
93
- }
94
- if (!config.schedule || typeof config.schedule !== 'string') {
95
- errors.push('schedule (cron expression) is required');
96
- }
97
- else {
98
- // Validate cron expression is parseable
99
- try {
100
- new Cron(config.schedule);
101
- }
102
- catch {
103
- errors.push(`invalid cron expression: "${config.schedule}"`);
104
- }
105
- }
106
- if (!config.agent || typeof config.agent !== 'string') {
107
- errors.push('agent is required');
108
- }
109
- if (config.agent && !ALL_AGENT_IDS.includes(config.agent)) {
110
- errors.push(`agent must be one of: ${ALL_AGENT_IDS.join(', ')}`);
111
- }
112
- if (config.mode && !['plan', 'edit', 'full'].includes(config.mode)) {
113
- errors.push('mode must be plan, edit, or full');
114
- }
115
- if (config.effort && !['fast', 'default', 'detailed'].includes(config.effort)) {
116
- errors.push('effort must be fast, default, or detailed');
117
- }
118
- if (!config.prompt || typeof config.prompt !== 'string') {
119
- errors.push('prompt is required');
120
- }
121
- if (config.timeout && !parseTimeout(config.timeout)) {
122
- errors.push('timeout must be like 30m, 2h, 1h30m');
123
- }
124
- return errors;
125
- }
126
- export function resolveJobPrompt(config) {
127
- const now = new Date();
128
- const tz = config.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone;
129
- const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
130
- // Compute date/day/time in the job's configured timezone
131
- // Use Intl.DateTimeFormat to get the weekday name directly in the target timezone
132
- const localDayName = new Intl.DateTimeFormat('en-US', { timeZone: tz, weekday: 'long' }).format(now);
133
- const localDay = days.includes(localDayName) ? localDayName : days[now.getDay()];
134
- const localDate = now.toLocaleDateString('en-CA', { timeZone: tz }); // en-CA gives YYYY-MM-DD
135
- const localTime = now.toLocaleTimeString('en-GB', { timeZone: tz, hour12: false }); // HH:MM:SS
136
- let prompt = config.prompt;
137
- // Built-in variables (timezone-aware)
138
- prompt = prompt.replace(/\{day\}/g, localDay);
139
- prompt = prompt.replace(/\{date\}/g, localDate);
140
- prompt = prompt.replace(/\{time\}/g, localTime);
141
- prompt = prompt.replace(/\{job_name\}/g, config.name);
142
- // User-defined variables
143
- if (config.variables) {
144
- for (const [key, value] of Object.entries(config.variables)) {
145
- prompt = prompt.replace(new RegExp(`\\{${key}\\}`, 'g'), value);
146
- }
147
- }
148
- // Last report (special handling)
149
- const latestRun = getLatestRun(config.name);
150
- if (latestRun) {
151
- const reportPath = path.join(getRunsDir(), config.name, latestRun.runId, 'report.md');
152
- if (fs.existsSync(reportPath)) {
153
- const report = fs.readFileSync(reportPath, 'utf-8');
154
- prompt = prompt.replace(/\{last_report\}/g, report);
155
- }
156
- else {
157
- prompt = prompt.replace(/\{last_report\}/g, '(no previous report)');
158
- }
159
- }
160
- else {
161
- prompt = prompt.replace(/\{last_report\}/g, '(no previous report)');
162
- }
163
- return prompt;
164
- }
165
- export function parseTimeout(timeout) {
166
- const match = timeout.match(/^(?:(\d+)h)?(?:(\d+)m)?$/);
167
- if (!match)
168
- return null;
169
- const hours = parseInt(match[1] || '0', 10);
170
- const minutes = parseInt(match[2] || '0', 10);
171
- const ms = (hours * 60 + minutes) * 60 * 1000;
172
- return ms > 0 ? ms : null;
173
- }
174
- export function listRuns(jobName) {
175
- const runsDir = getRunsDir();
176
- const jobRunsDir = path.join(runsDir, jobName);
177
- if (!fs.existsSync(jobRunsDir))
178
- return [];
179
- const entries = fs.readdirSync(jobRunsDir, { withFileTypes: true })
180
- .filter((e) => e.isDirectory())
181
- .map((e) => e.name)
182
- .sort();
183
- const runs = [];
184
- for (const runId of entries) {
185
- const meta = readRunMeta(jobName, runId);
186
- if (meta)
187
- runs.push(meta);
188
- }
189
- return runs;
190
- }
191
- export function getLatestRun(jobName) {
192
- const runs = listRuns(jobName);
193
- return runs.length > 0 ? runs[runs.length - 1] : null;
194
- }
195
- export function writeRunMeta(meta) {
196
- ensureAgentsDir();
197
- const runDir = path.join(getRunsDir(), meta.jobName, meta.runId);
198
- fs.mkdirSync(runDir, { recursive: true });
199
- fs.writeFileSync(path.join(runDir, 'meta.json'), JSON.stringify(meta, null, 2), 'utf-8');
200
- }
201
- export function readRunMeta(jobName, runId) {
202
- const metaPath = path.join(getRunsDir(), jobName, runId, 'meta.json');
203
- if (!fs.existsSync(metaPath))
204
- return null;
205
- try {
206
- return JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
207
- }
208
- catch {
209
- return null;
210
- }
211
- }
212
- export function getRunDir(jobName, runId) {
213
- return path.join(getRunsDir(), jobName, runId);
214
- }
215
- export function discoverJobsFromRepo(repoPath) {
216
- const jobsPath = path.join(repoPath, 'cron');
217
- if (!fs.existsSync(jobsPath))
218
- return [];
219
- return fs.readdirSync(jobsPath)
220
- .filter((f) => f.endsWith('.yml') || f.endsWith('.yaml'))
221
- .map((f) => ({
222
- name: f.replace(/\.ya?ml$/, ''),
223
- path: path.join(jobsPath, f),
224
- }));
225
- }
226
- export function jobExists(name) {
227
- return readJob(name) !== null;
228
- }
229
- export function getJobPath(name) {
230
- const jobsDir = getCronDir();
231
- for (const ext of ['.yml', '.yaml']) {
232
- const filePath = path.join(jobsDir, name + ext);
233
- if (fs.existsSync(filePath)) {
234
- return filePath;
235
- }
236
- }
237
- return null;
238
- }
239
- /**
240
- * Parse an "at" time string into a one-shot cron expression.
241
- * Supports formats like:
242
- * - "9:00" or "09:00" - today at 9:00 AM (or tomorrow if past)
243
- * - "14:30" - today at 2:30 PM
244
- * - "2026-02-24 09:00" - specific date and time
245
- * Returns null if invalid format.
246
- */
247
- export function parseAtTime(atTime) {
248
- // Try parsing as "HH:MM" format
249
- const timeMatch = atTime.match(/^(\d{1,2}):(\d{2})$/);
250
- if (timeMatch) {
251
- const hour = parseInt(timeMatch[1], 10);
252
- const minute = parseInt(timeMatch[2], 10);
253
- if (hour < 0 || hour > 23 || minute < 0 || minute > 59)
254
- return null;
255
- const now = new Date();
256
- let targetDate = new Date();
257
- targetDate.setHours(hour, minute, 0, 0);
258
- // If the time has already passed today, schedule for tomorrow
259
- if (targetDate <= now) {
260
- targetDate.setDate(targetDate.getDate() + 1);
261
- }
262
- const day = targetDate.getDate();
263
- const month = targetDate.getMonth() + 1;
264
- // Cron format: minute hour day month *
265
- return { schedule: `${minute} ${hour} ${day} ${month} *`, runOnce: true };
266
- }
267
- // Try parsing as "YYYY-MM-DD HH:MM" format
268
- const dateTimeMatch = atTime.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})$/);
269
- if (dateTimeMatch) {
270
- const year = parseInt(dateTimeMatch[1], 10);
271
- const month = parseInt(dateTimeMatch[2], 10);
272
- const day = parseInt(dateTimeMatch[3], 10);
273
- const hour = parseInt(dateTimeMatch[4], 10);
274
- const minute = parseInt(dateTimeMatch[5], 10);
275
- if (month < 1 || month > 12 || day < 1 || day > 31)
276
- return null;
277
- if (hour < 0 || hour > 23 || minute < 0 || minute > 59)
278
- return null;
279
- // Note: croner doesn't support year, so we just use month/day
280
- // The job will fire on that date each year unless removed
281
- return { schedule: `${minute} ${hour} ${day} ${month} *`, runOnce: true };
282
- }
283
- return null;
284
- }
285
- export function jobContentMatches(name, sourcePath) {
286
- const existing = readJob(name);
287
- if (!existing)
288
- return false;
289
- try {
290
- const sourceContent = fs.readFileSync(sourcePath, 'utf-8');
291
- const sourceJob = yaml.parse(sourceContent);
292
- if (!sourceJob)
293
- return false;
294
- const existingNormalized = yaml.stringify(existing);
295
- const fullSource = { ...JOB_DEFAULTS, ...sourceJob, name: sourceJob.name || name };
296
- const sourceNormalized = yaml.stringify(fullSource);
297
- return existingNormalized === sourceNormalized;
298
- }
299
- catch {
300
- return false;
301
- }
302
- }
303
- export function installJobFromSource(sourcePath, name) {
304
- try {
305
- const content = fs.readFileSync(sourcePath, 'utf-8');
306
- const parsed = yaml.parse(content);
307
- if (!parsed)
308
- return { success: false, error: 'Invalid YAML' };
309
- const config = {
310
- ...JOB_DEFAULTS,
311
- ...parsed,
312
- name: parsed.name || name,
313
- };
314
- const errors = validateJob(config);
315
- if (errors.length > 0) {
316
- return { success: false, error: errors.join(', ') };
317
- }
318
- writeJob(config);
319
- return { success: true };
320
- }
321
- catch (err) {
322
- return { success: false, error: err.message };
323
- }
324
- }
325
- //# sourceMappingURL=cron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/lib/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqC5C,MAAM,YAAY,GAAuB;IACvC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,UAAU,QAAQ;IACtB,eAAe,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,eAAe,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEvD,OAAO;YACL,GAAG,YAAY;YACf,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACxD,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,eAAe,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IAE1D,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACtD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACnD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAEpF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAgB;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;IACrD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA0B;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAgB,CAAC,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,yBAAyB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC/E,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE5F,yDAAyD;IACzD,kFAAkF;IAClF,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW;IAE/F,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE3B,sCAAsC;IACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtD,yBAAyB;IACzB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtF,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAChE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;IAEV,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,eAAe,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAa;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAY,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,gCAAgC;IAChC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAEpE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,8DAA8D;QAC9D,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;YACtB,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,uCAAuC;QACvC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,2CAA2C;IAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACpF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAChE,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAEpE,8DAA8D;QAC9D,0DAA0D;QAC1D,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,UAAkB;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,kBAAkB,KAAK,gBAAgB,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,IAAY;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAE9D,MAAM,MAAM,GAAc;YACxB,GAAG,YAAY;YACf,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;SACb,CAAC;QAEf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -1,9 +0,0 @@
1
- export declare function handleGetContext(project?: string): {
2
- content: string;
3
- drive: string;
4
- large: boolean;
5
- };
6
- export declare function handleGetSection(project: string, file: string, section: string): string;
7
- export declare function handleAddNote(project: string, title: string, content: string): string;
8
- export declare function runDriveServer(): Promise<void>;
9
- //# sourceMappingURL=drive-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive-server.d.ts","sourceRoot":"","sources":["../../src/lib/drive-server.ts"],"names":[],"mappings":"AA6CA,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAgDrG;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoCvF;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOrF;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAuGpD"}
@@ -1,217 +0,0 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
- import { execSync } from 'child_process';
5
- import * as fs from 'fs';
6
- import { readDrive, listDrives, getDriveContent, getDriveForProject, addNote, driveExists, isDriveLarge, readDriveFiles, } from './drives.js';
7
- import { getDrivesDir } from './state.js';
8
- import * as path from 'path';
9
- let _hasMq = null;
10
- function hasMq() {
11
- if (_hasMq !== null)
12
- return _hasMq;
13
- try {
14
- execSync('which mq', { stdio: 'pipe' });
15
- _hasMq = true;
16
- }
17
- catch {
18
- _hasMq = false;
19
- }
20
- return _hasMq;
21
- }
22
- function runMq(targetPath, query) {
23
- try {
24
- return execSync(`mq "${targetPath}" '${query}'`, {
25
- encoding: 'utf-8',
26
- timeout: 10000,
27
- }).trim();
28
- }
29
- catch (err) {
30
- return `mq error: ${err.message}`;
31
- }
32
- }
33
- export function handleGetContext(project) {
34
- let driveName = null;
35
- if (project) {
36
- if (driveExists(project)) {
37
- driveName = project;
38
- }
39
- else {
40
- const found = getDriveForProject(project);
41
- if (found)
42
- driveName = found.name;
43
- }
44
- }
45
- else {
46
- const cwd = process.cwd();
47
- const found = getDriveForProject(cwd);
48
- if (found)
49
- driveName = found.name;
50
- }
51
- if (!driveName) {
52
- const drives = listDrives();
53
- if (drives.length === 0) {
54
- return { content: 'No drives configured. Create one with: agents drive create <name>', drive: '', large: false };
55
- }
56
- const list = drives.map((d) => `- ${d.name}${d.description ? `: ${d.description}` : ''}`).join('\n');
57
- return { content: `No matching drive found. Available drives:\n${list}`, drive: '', large: false };
58
- }
59
- const large = isDriveLarge(driveName);
60
- if (large && hasMq()) {
61
- const drivesDir = getDrivesDir();
62
- const drivePath = path.join(drivesDir, driveName);
63
- const tree = runMq(drivePath, '.tree("full")');
64
- return { content: tree, drive: driveName, large: true };
65
- }
66
- const content = getDriveContent(driveName);
67
- if (!content) {
68
- return { content: `Drive '${driveName}' exists but has no content.`, drive: driveName, large: false };
69
- }
70
- const drive = readDrive(driveName);
71
- const header = drive?.frontmatter
72
- ? Object.entries(drive.frontmatter)
73
- .filter(([_, v]) => v)
74
- .map(([k, v]) => `${k}: ${v}`)
75
- .join('\n')
76
- : '';
77
- return { content: header ? `${header}\n\n${content}` : content, drive: driveName, large: false };
78
- }
79
- export function handleGetSection(project, file, section) {
80
- if (!driveExists(project)) {
81
- return `Drive '${project}' not found`;
82
- }
83
- const drivesDir = getDrivesDir();
84
- const isSingleFile = fs.existsSync(path.join(drivesDir, `${project}.md`));
85
- if (hasMq()) {
86
- const filePath = isSingleFile
87
- ? path.join(drivesDir, `${project}.md`)
88
- : path.join(drivesDir, project, file);
89
- return runMq(filePath, `.section("${section}") | .text`);
90
- }
91
- const files = readDriveFiles(project);
92
- const target = isSingleFile
93
- ? files[0]
94
- : files.find((f) => path.basename(f.path) === file);
95
- if (!target) {
96
- return `File '${file}' not found in drive '${project}'`;
97
- }
98
- const sectionRe = new RegExp(`^#{1,6}\\s+${escapeRegex(section)}\\s*$`, 'm');
99
- const match = target.content.match(sectionRe);
100
- if (!match || match.index === undefined) {
101
- return `Section '${section}' not found in ${file}`;
102
- }
103
- const start = match.index;
104
- const level = match[0].match(/^(#+)/)?.[1].length || 1;
105
- const rest = target.content.slice(start + match[0].length);
106
- const nextHeading = rest.match(new RegExp(`^#{1,${level}}\\s`, 'm'));
107
- const end = nextHeading?.index !== undefined ? start + match[0].length + nextHeading.index : undefined;
108
- return target.content.slice(start, end).trim();
109
- }
110
- function escapeRegex(s) {
111
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
112
- }
113
- export function handleAddNote(project, title, content) {
114
- try {
115
- const notePath = addNote(project, title, content);
116
- return `Note saved: ${notePath}`;
117
- }
118
- catch (err) {
119
- return `Error: ${err.message}`;
120
- }
121
- }
122
- export async function runDriveServer() {
123
- const server = new Server({ name: 'agents-drive', version: '1.0.0' }, { capabilities: { tools: {} } });
124
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
125
- tools: [
126
- {
127
- name: 'get_context',
128
- description: 'Get project context from a drive. If project is specified, returns that drive. ' +
129
- 'If omitted, auto-detects from cwd. For small drives returns full content. ' +
130
- 'For large drives returns a structural overview (use get_section for details).',
131
- inputSchema: {
132
- type: 'object',
133
- properties: {
134
- project: {
135
- type: 'string',
136
- description: 'Drive name or project path. If omitted, auto-detects from cwd.',
137
- },
138
- },
139
- },
140
- },
141
- {
142
- name: 'get_section',
143
- description: 'Extract a specific section from a drive file. Useful for large drives ' +
144
- 'where get_context returned a structural overview.',
145
- inputSchema: {
146
- type: 'object',
147
- properties: {
148
- project: { type: 'string', description: 'Drive name' },
149
- file: { type: 'string', description: 'File name within the drive (e.g. "backend.md")' },
150
- section: { type: 'string', description: 'Section heading to extract' },
151
- },
152
- required: ['project', 'file', 'section'],
153
- },
154
- },
155
- {
156
- name: 'add_note',
157
- description: 'Add an agent-contributed note to a drive. Notes are stored as timestamped markdown ' +
158
- 'files in the drive\'s notes/ directory and synced on next push.',
159
- inputSchema: {
160
- type: 'object',
161
- properties: {
162
- project: { type: 'string', description: 'Drive name' },
163
- title: { type: 'string', description: 'Note title' },
164
- content: { type: 'string', description: 'Note content (markdown)' },
165
- },
166
- required: ['project', 'title', 'content'],
167
- },
168
- },
169
- ],
170
- }));
171
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
172
- const { name, arguments: args } = request.params;
173
- try {
174
- let result;
175
- switch (name) {
176
- case 'get_context': {
177
- const { content, drive, large } = handleGetContext(args?.project);
178
- const meta = drive ? `[drive: ${drive}${large ? ', structural overview' : ''}]\n\n` : '';
179
- result = meta + content;
180
- break;
181
- }
182
- case 'get_section': {
183
- if (!args?.project || !args?.file || !args?.section) {
184
- result = 'Error: project, file, and section are required';
185
- }
186
- else {
187
- result = handleGetSection(args.project, args.file, args.section);
188
- }
189
- break;
190
- }
191
- case 'add_note': {
192
- if (!args?.project || !args?.title || !args?.content) {
193
- result = 'Error: project, title, and content are required';
194
- }
195
- else {
196
- result = handleAddNote(args.project, args.title, args.content);
197
- }
198
- break;
199
- }
200
- default:
201
- result = `Unknown tool: ${name}`;
202
- }
203
- return {
204
- content: [{ type: 'text', text: result }],
205
- };
206
- }
207
- catch (err) {
208
- return {
209
- content: [{ type: 'text', text: `Error: ${err.message}` }],
210
- };
211
- }
212
- });
213
- const transport = new StdioServerTransport();
214
- await server.connect(transport);
215
- console.error('agents-drive MCP server started');
216
- }
217
- //# sourceMappingURL=drive-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive-server.js","sourceRoot":"","sources":["../../src/lib/drive-server.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- export interface DriveFrontmatter {
2
- name: string;
3
- description?: string;
4
- project?: string;
5
- repo?: string;
6
- updated?: string;
7
- }
8
- export interface DriveFile {
9
- name: string;
10
- path: string;
11
- frontmatter: DriveFrontmatter;
12
- content: string;
13
- }
14
- export declare function createDrive(name: string, description?: string): string;
15
- export declare function readDrive(name: string): DriveFile | null;
16
- export declare function readDriveFiles(name: string): DriveFile[];
17
- export declare function listDrives(): DriveFrontmatter[];
18
- export declare function deleteDrive(name: string): boolean;
19
- export declare function driveExists(name: string): boolean;
20
- export declare function updateDriveFrontmatter(name: string, updates: Partial<DriveFrontmatter>): void;
21
- export declare function getDriveContent(name: string): string | null;
22
- export declare function getDriveForProject(projectPath: string): DriveFrontmatter | null;
23
- export declare function addNote(driveName: string, title: string, content: string): string;
24
- export declare function isDriveLarge(name: string): boolean;
25
- export declare function discoverDrivesFromRepo(repoPath: string): Array<{
26
- name: string;
27
- path: string;
28
- }>;
29
- export declare function installDriveFromSource(sourcePath: string, name: string): {
30
- success: boolean;
31
- error?: string;
32
- };
33
- export declare function driveContentMatches(name: string, sourcePath: string): boolean;
34
- //# sourceMappingURL=drives.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drives.d.ts","sourceRoot":"","sources":["../../src/lib/drives.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAiCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAsBxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAqBxD;AAED,wBAAgB,UAAU,IAAI,gBAAgB,EAAE,CA6B/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBjD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAM7F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAa/E;AAaD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBjF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBlD;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB9F;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAkB7G;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAe7E"}