memoire-ai 0.1.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 (51) hide show
  1. package/README.md +18 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +359 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands.d.ts +33 -0
  7. package/dist/commands.d.ts.map +1 -0
  8. package/dist/commands.js +497 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/configure.d.ts +65 -0
  11. package/dist/configure.d.ts.map +1 -0
  12. package/dist/configure.js +485 -0
  13. package/dist/configure.js.map +1 -0
  14. package/dist/dashboard.d.ts +9 -0
  15. package/dist/dashboard.d.ts.map +1 -0
  16. package/dist/dashboard.js +8 -0
  17. package/dist/dashboard.js.map +1 -0
  18. package/dist/dependencies.d.ts +3 -0
  19. package/dist/dependencies.d.ts.map +1 -0
  20. package/dist/dependencies.js +213 -0
  21. package/dist/dependencies.js.map +1 -0
  22. package/dist/detect.d.ts +3 -0
  23. package/dist/detect.d.ts.map +1 -0
  24. package/dist/detect.js +30 -0
  25. package/dist/detect.js.map +1 -0
  26. package/dist/hooks.d.ts +25 -0
  27. package/dist/hooks.d.ts.map +1 -0
  28. package/dist/hooks.js +479 -0
  29. package/dist/hooks.js.map +1 -0
  30. package/dist/index.d.ts +9 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +9 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/local-config.d.ts +8 -0
  35. package/dist/local-config.d.ts.map +1 -0
  36. package/dist/local-config.js +16 -0
  37. package/dist/local-config.js.map +1 -0
  38. package/dist/login.d.ts +20 -0
  39. package/dist/login.d.ts.map +1 -0
  40. package/dist/login.js +93 -0
  41. package/dist/login.js.map +1 -0
  42. package/dist/manual.d.ts +15 -0
  43. package/dist/manual.d.ts.map +1 -0
  44. package/dist/manual.js +143 -0
  45. package/dist/manual.js.map +1 -0
  46. package/dist/mcp.d.ts +5 -0
  47. package/dist/mcp.d.ts.map +1 -0
  48. package/dist/mcp.js +18 -0
  49. package/dist/mcp.js.map +1 -0
  50. package/package.json +55 -0
  51. package/skills/use-memoire/SKILL.md +79 -0
@@ -0,0 +1,497 @@
1
+ import { MemoireClient } from '@memoire/sdk';
2
+ import { spawnSync } from 'node:child_process';
3
+ import { readLocalConfig } from './local-config.js';
4
+ export async function runSearchCommand(query, deps = {}) {
5
+ const config = deps.readConfig?.() ?? readLocalConfig();
6
+ const client = deps.createClient?.(config) ?? createClient(config);
7
+ const [context, docs] = await Promise.all([
8
+ client.searchContext({
9
+ org_id: config.org_id,
10
+ project_id: config.project_id,
11
+ viewer_user_id: config.user_id,
12
+ query,
13
+ limit: 5,
14
+ }),
15
+ client.searchDocs({
16
+ org_id: config.org_id,
17
+ project_id: config.project_id,
18
+ viewer_user_id: config.user_id,
19
+ query,
20
+ limit: 5,
21
+ }),
22
+ ]);
23
+ const lines = [`Memoire search for "${query}"`];
24
+ lines.push('');
25
+ lines.push('Context');
26
+ if (context.results.length === 0) {
27
+ lines.push(' No context results');
28
+ }
29
+ else {
30
+ for (const result of context.results) {
31
+ lines.push(` - [${result.event_type}] ${result.summary}`);
32
+ }
33
+ }
34
+ lines.push('');
35
+ lines.push('Docs');
36
+ if (docs.results.length === 0) {
37
+ lines.push(' No doc results');
38
+ }
39
+ else {
40
+ for (const result of docs.results) {
41
+ lines.push(` - ${result.dependency_name}@${result.dependency_version}: ${result.content.slice(0, 140)}`);
42
+ }
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+ export async function runStatusCommand(deps = {}) {
47
+ const config = deps.readConfig?.() ?? readLocalConfig();
48
+ const client = deps.createClient?.(config) ?? createClient(config);
49
+ const docs = await client.docsStatus({
50
+ org_id: config.org_id,
51
+ project_id: config.project_id,
52
+ viewer_user_id: config.user_id,
53
+ });
54
+ return formatStatus(config, docs);
55
+ }
56
+ export async function runUsageCommand(deps = {}) {
57
+ const config = deps.readConfig?.() ?? readLocalConfig();
58
+ const client = deps.createClient?.(config) ?? createClient(config);
59
+ const usage = await client.dashboardUsage({
60
+ org_id: config.org_id,
61
+ project_id: config.project_id,
62
+ });
63
+ const current = usage.current;
64
+ const busiestPeriod = Object.entries(usage.history)
65
+ .map(([period, counts]) => ({
66
+ period,
67
+ total: Object.values(counts).reduce((sum, value) => sum + value, 0),
68
+ }))
69
+ .sort((left, right) => right.total - left.total)[0];
70
+ const lines = [
71
+ 'Memoire usage',
72
+ ` Period: ${usage.current_period}`,
73
+ ` Events ingested: ${current.events_ingested}`,
74
+ ` Search queries: ${current.search_queries}`,
75
+ ` Assembly queries: ${current.assembly_queries}`,
76
+ ` Tracer queries: ${current.tracer_queries}`,
77
+ ` Oracle queries: ${current.oracle_queries}`,
78
+ ` Web searches: ${current.web_search_queries}`,
79
+ '',
80
+ 'API health',
81
+ ` Total requests: ${usage.api_metrics.total_requests}`,
82
+ ` Rate limited: ${usage.api_metrics.rate_limit_exceeded}`,
83
+ ` Uptime: ${formatDuration(usage.api_metrics.uptime_ms)}`,
84
+ ];
85
+ if (busiestPeriod) {
86
+ lines.push('');
87
+ lines.push('History');
88
+ lines.push(` Busiest period: ${busiestPeriod.period} (${busiestPeriod.total} operations)`);
89
+ }
90
+ return lines.join('\n');
91
+ }
92
+ export async function runDoctorCommand(deps = {}) {
93
+ const report = await buildDoctorReport(deps);
94
+ const lines = [
95
+ 'Memoire doctor',
96
+ ` Client: ${report.client}`,
97
+ ` API reachable: ${report.api_reachable ? 'yes' : 'no'}`,
98
+ ` Summarization mode: ${report.summarization_mode}`,
99
+ ];
100
+ if (report.native_summarizer_agent) {
101
+ lines.push(` Native summarizer: ${report.native_summarizer_agent}`);
102
+ }
103
+ lines.push('');
104
+ lines.push('Local agent health');
105
+ lines.push(` Claude CLI: ${report.local_agents.claude.available ? 'available' : 'missing'}`);
106
+ lines.push(` Codex CLI: ${report.local_agents.codex.available ? 'available' : 'missing'}`);
107
+ lines.push(` Anthropic key configured: ${report.anthropic_configured ? 'yes' : 'no'}`);
108
+ lines.push('');
109
+ lines.push('Docs index');
110
+ lines.push(` Indexed dependencies: ${report.docs.indexed_dependencies}`);
111
+ lines.push(` Indexed chunks: ${report.docs.indexed_chunks}`);
112
+ lines.push(` Last indexed at: ${report.docs.last_indexed_at ?? 'never'}`);
113
+ if (report.recommendations.length > 0) {
114
+ lines.push('');
115
+ lines.push('Recommended next steps');
116
+ for (const recommendation of report.recommendations) {
117
+ lines.push(` - ${recommendation}`);
118
+ }
119
+ }
120
+ return lines.join('\n');
121
+ }
122
+ export async function runProfileCommand(deps = {}) {
123
+ const config = deps.readConfig?.() ?? readLocalConfig();
124
+ const client = deps.createClient?.(config) ?? createClient(config);
125
+ const result = await client.projectProfile({
126
+ org_id: config.org_id,
127
+ project_id: config.project_id,
128
+ viewer_user_id: config.user_id,
129
+ });
130
+ return formatProfile(result);
131
+ }
132
+ export async function runResumeCommand(query, deps = {}) {
133
+ const resume = await resolveResume(query, deps);
134
+ return resume.text;
135
+ }
136
+ export async function runHandoffCommand(query, deps = {}) {
137
+ const config = deps.readConfig?.() ?? readLocalConfig();
138
+ const client = deps.createClient?.(config) ?? createClient(config);
139
+ const resume = await resolveResume(query, deps);
140
+ const trimmedQuery = query?.trim() || undefined;
141
+ const saved = await client.createHandoff({
142
+ org_id: config.org_id,
143
+ project_id: config.project_id,
144
+ viewer_user_id: config.user_id,
145
+ title: trimmedQuery ? `Handoff: ${trimmedQuery}` : undefined,
146
+ query: trimmedQuery,
147
+ context_block: resume.text,
148
+ source_event_ids: resume.eventIds,
149
+ });
150
+ return [
151
+ `Saved handoff ${saved.handoff.id}`,
152
+ `Title: ${saved.handoff.title}`,
153
+ '',
154
+ resume.text,
155
+ ].join('\n');
156
+ }
157
+ export async function runContextsListCommand(limit = 10, deps = {}) {
158
+ const config = deps.readConfig?.() ?? readLocalConfig();
159
+ const client = deps.createClient?.(config) ?? createClient(config);
160
+ const result = await client.listHandoffs({
161
+ org_id: config.org_id,
162
+ project_id: config.project_id,
163
+ viewer_user_id: config.user_id,
164
+ limit,
165
+ });
166
+ const lines = ['Memoire contexts'];
167
+ if (result.handoffs.length === 0) {
168
+ lines.push(' No saved contexts yet');
169
+ lines.push(' Create one with: memoire contexts save "what you want to hand off"');
170
+ return lines.join('\n');
171
+ }
172
+ lines.push(` Showing ${result.handoffs.length} saved context${result.handoffs.length === 1 ? '' : 's'}`);
173
+ for (const handoff of result.handoffs) {
174
+ lines.push('');
175
+ lines.push(` - ${handoff.title}`);
176
+ lines.push(` ID: ${handoff.id}`);
177
+ if (handoff.summary) {
178
+ lines.push(` Summary: ${truncateInline(handoff.summary, 120)}`);
179
+ }
180
+ lines.push(` Created: ${handoff.created_at}`);
181
+ }
182
+ return lines.join('\n');
183
+ }
184
+ export async function runContextsGetCommand(handoffId, deps = {}) {
185
+ const trimmedId = handoffId.trim();
186
+ if (!trimmedId) {
187
+ throw new Error('Context ID is required. Example: memoire contexts get <id>');
188
+ }
189
+ const config = deps.readConfig?.() ?? readLocalConfig();
190
+ const client = deps.createClient?.(config) ?? createClient(config);
191
+ const result = await client.getHandoff({
192
+ org_id: config.org_id,
193
+ project_id: config.project_id,
194
+ viewer_user_id: config.user_id,
195
+ handoff_id: trimmedId,
196
+ });
197
+ const { handoff } = result;
198
+ const lines = [
199
+ 'Memoire context',
200
+ `ID: ${handoff.id}`,
201
+ `Title: ${handoff.title}`,
202
+ `Created: ${handoff.created_at}`,
203
+ `Created by: ${handoff.created_by_user_id}`,
204
+ ];
205
+ if (handoff.query) {
206
+ lines.push(`Focus: ${handoff.query}`);
207
+ }
208
+ if (handoff.source_event_ids.length > 0) {
209
+ lines.push(`Source events: ${handoff.source_event_ids.join(', ')}`);
210
+ }
211
+ lines.push('');
212
+ lines.push('Summary');
213
+ lines.push(handoff.summary || 'No summary available.');
214
+ lines.push('');
215
+ lines.push('Context');
216
+ lines.push(handoff.context_block);
217
+ return lines.join('\n');
218
+ }
219
+ async function resolveResume(query, deps = {}) {
220
+ const config = deps.readConfig?.() ?? readLocalConfig();
221
+ const client = deps.createClient?.(config) ?? createClient(config);
222
+ const trimmedQuery = query?.trim() || undefined;
223
+ const [profile, facts, assembled, docs] = await Promise.all([
224
+ client.projectProfile({
225
+ org_id: config.org_id,
226
+ project_id: config.project_id,
227
+ viewer_user_id: config.user_id,
228
+ }),
229
+ client.projectFacts({
230
+ org_id: config.org_id,
231
+ project_id: config.project_id,
232
+ viewer_user_id: config.user_id,
233
+ }),
234
+ client.assembleContext({
235
+ org_id: config.org_id,
236
+ project_id: config.project_id,
237
+ viewer_user_id: config.user_id,
238
+ query: trimmedQuery,
239
+ token_budget: 2400,
240
+ include: {
241
+ project_profile: false,
242
+ active_work: true,
243
+ teammate_work: true,
244
+ decisions: true,
245
+ failed_attempts: true,
246
+ branch_history: true,
247
+ file_context: true,
248
+ },
249
+ }),
250
+ trimmedQuery
251
+ ? client.searchDocs({
252
+ org_id: config.org_id,
253
+ project_id: config.project_id,
254
+ viewer_user_id: config.user_id,
255
+ query: trimmedQuery,
256
+ limit: 3,
257
+ })
258
+ : Promise.resolve({ total: 0, results: [] }),
259
+ ]);
260
+ return {
261
+ text: formatResume({
262
+ query: trimmedQuery,
263
+ profile,
264
+ facts,
265
+ assembled,
266
+ docs,
267
+ }),
268
+ eventIds: assembled.event_ids,
269
+ };
270
+ }
271
+ export async function runFactsCommand(deps = {}) {
272
+ const config = deps.readConfig?.() ?? readLocalConfig();
273
+ const client = deps.createClient?.(config) ?? createClient(config);
274
+ const result = await client.projectFacts({
275
+ org_id: config.org_id,
276
+ project_id: config.project_id,
277
+ viewer_user_id: config.user_id,
278
+ });
279
+ return formatFacts(result);
280
+ }
281
+ // ── JSON-returning variants for --json CLI flag ──────────────────────
282
+ export async function runSearchCommandJson(query, deps = {}) {
283
+ const config = deps.readConfig?.() ?? readLocalConfig();
284
+ const client = deps.createClient?.(config) ?? createClient(config);
285
+ const [context, docs] = await Promise.all([
286
+ client.searchContext({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id, query, limit: 5 }),
287
+ client.searchDocs({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id, query, limit: 5 }),
288
+ ]);
289
+ return { query, context: context.results, docs: docs.results };
290
+ }
291
+ export async function runStatusCommandJson(deps = {}) {
292
+ const config = deps.readConfig?.() ?? readLocalConfig();
293
+ const client = deps.createClient?.(config) ?? createClient(config);
294
+ const docs = await client.docsStatus({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id });
295
+ return { client: config.client, org_id: config.org_id, project_id: config.project_id, user_id: config.user_id, repo_id: config.repo_id, docs };
296
+ }
297
+ export async function runUsageCommandJson(deps = {}) {
298
+ const config = deps.readConfig?.() ?? readLocalConfig();
299
+ const client = deps.createClient?.(config) ?? createClient(config);
300
+ return client.dashboardUsage({ org_id: config.org_id, project_id: config.project_id });
301
+ }
302
+ export async function runDoctorCommandJson(deps = {}) {
303
+ return buildDoctorReport(deps);
304
+ }
305
+ export async function runProfileCommandJson(deps = {}) {
306
+ const config = deps.readConfig?.() ?? readLocalConfig();
307
+ const client = deps.createClient?.(config) ?? createClient(config);
308
+ return client.projectProfile({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id });
309
+ }
310
+ export async function runFactsCommandJson(deps = {}) {
311
+ const config = deps.readConfig?.() ?? readLocalConfig();
312
+ const client = deps.createClient?.(config) ?? createClient(config);
313
+ return client.projectFacts({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id });
314
+ }
315
+ export async function runContextsListCommandJson(limit = 10, deps = {}) {
316
+ const config = deps.readConfig?.() ?? readLocalConfig();
317
+ const client = deps.createClient?.(config) ?? createClient(config);
318
+ return client.listHandoffs({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id, limit });
319
+ }
320
+ export async function runContextsGetCommandJson(handoffId, deps = {}) {
321
+ const config = deps.readConfig?.() ?? readLocalConfig();
322
+ const client = deps.createClient?.(config) ?? createClient(config);
323
+ return client.getHandoff({ org_id: config.org_id, project_id: config.project_id, viewer_user_id: config.user_id, handoff_id: handoffId.trim() });
324
+ }
325
+ function createClient(config) {
326
+ return new MemoireClient({
327
+ apiUrl: config.api_url,
328
+ apiKey: config.api_key,
329
+ clientId: config.client_id,
330
+ });
331
+ }
332
+ async function buildDoctorReport(deps) {
333
+ const config = deps.readConfig?.() ?? readLocalConfig();
334
+ const client = deps.createClient?.(config) ?? createClient(config);
335
+ const checker = deps.checkCommand ?? defaultCheckCommand;
336
+ const apiChecker = deps.checkApi ?? defaultCheckApi;
337
+ const [docs, apiReachable] = await Promise.all([
338
+ client.docsStatus({
339
+ org_id: config.org_id,
340
+ project_id: config.project_id,
341
+ viewer_user_id: config.user_id,
342
+ }),
343
+ apiChecker(config.api_url).catch(() => false),
344
+ ]);
345
+ const summarizationMode = config.summarization_mode
346
+ ?? (config.client_side_summarization ? 'edge_anthropic' : 'server');
347
+ const localAgents = {
348
+ claude: { available: checker('claude') },
349
+ codex: { available: checker('codex') },
350
+ };
351
+ const anthropicConfigured = Boolean(config.anthropic_api_key?.trim());
352
+ const recommendations = [];
353
+ if (!apiReachable) {
354
+ recommendations.push('Start the Memoire API or update the configured API URL before relying on shared memory.');
355
+ }
356
+ if (summarizationMode === 'native_agent' && config.native_summarizer_agent && !localAgents[config.native_summarizer_agent].available) {
357
+ recommendations.push(`Install or expose the ${config.native_summarizer_agent} CLI on PATH, or switch summarization back to server mode.`);
358
+ }
359
+ if (summarizationMode === 'edge_anthropic' && !anthropicConfigured) {
360
+ recommendations.push('Add an Anthropic API key locally or switch to server summarization so ingest does not fall back unexpectedly.');
361
+ }
362
+ if (docs.indexed_dependencies === 0) {
363
+ recommendations.push('Index a docs URL, PDF, GitHub repo, or manifest so Memoire can ground answers in project references.');
364
+ }
365
+ return {
366
+ client: config.client,
367
+ api_reachable: apiReachable,
368
+ summarization_mode: summarizationMode,
369
+ native_summarizer_agent: config.native_summarizer_agent,
370
+ anthropic_configured: anthropicConfigured,
371
+ local_agents: localAgents,
372
+ docs,
373
+ recommendations,
374
+ };
375
+ }
376
+ function defaultCheckCommand(command) {
377
+ const result = spawnSync('which', [command], { stdio: 'ignore' });
378
+ return result.status === 0;
379
+ }
380
+ async function defaultCheckApi(url) {
381
+ const response = await fetch(`${url.replace(/\/$/, '')}/health`, {
382
+ signal: AbortSignal.timeout(5_000),
383
+ });
384
+ return response.ok;
385
+ }
386
+ function formatStatus(config, docs) {
387
+ return [
388
+ 'Memoire status',
389
+ ` Client: ${config.client}`,
390
+ ` Org: ${config.org_id}`,
391
+ ` Project: ${config.project_id}`,
392
+ ` User: ${config.user_id}`,
393
+ ` Repo: ${config.repo_id ?? 'n/a'}`,
394
+ ` Indexed dependencies: ${docs.indexed_dependencies}`,
395
+ ` Indexed chunks: ${docs.indexed_chunks}`,
396
+ ` Last indexed at: ${docs.last_indexed_at ?? 'never'}`,
397
+ ].join('\n');
398
+ }
399
+ function formatProfile(result) {
400
+ const lines = ['Memoire project profile', `Summary: ${result.project_profile.summary}`];
401
+ appendGroup(lines, 'Architecture', result.project_profile.architecture);
402
+ appendGroup(lines, 'Conventions', result.project_profile.conventions);
403
+ appendGroup(lines, 'Current focus', result.project_profile.current_focus);
404
+ appendGroup(lines, 'Recent decisions', result.project_profile.recent_decisions);
405
+ appendGroup(lines, 'Open threads', result.project_profile.open_threads);
406
+ appendGroup(lines, 'Key files', result.project_profile.key_files);
407
+ lines.push('');
408
+ lines.push(`Source events: ${result.source_event_count}`);
409
+ lines.push(`Source event types: ${result.source_event_types.join(', ') || 'none'}`);
410
+ return lines.join('\n');
411
+ }
412
+ function appendGroup(lines, label, items) {
413
+ lines.push('');
414
+ lines.push(label);
415
+ if (items.length === 0) {
416
+ lines.push(' No entries yet');
417
+ return;
418
+ }
419
+ for (const item of items) {
420
+ lines.push(` - ${item}`);
421
+ }
422
+ }
423
+ function formatResume(input) {
424
+ const lines = ['# Memoire Resume'];
425
+ if (input.query) {
426
+ lines.push(`Focus: ${input.query}`);
427
+ }
428
+ lines.push('');
429
+ lines.push('## Project Profile');
430
+ lines.push(input.profile.project_profile.summary);
431
+ appendBullets(lines, input.profile.project_profile.architecture);
432
+ appendBullets(lines, input.profile.project_profile.conventions);
433
+ appendBullets(lines, input.profile.project_profile.current_focus);
434
+ appendBullets(lines, input.profile.project_profile.open_threads);
435
+ lines.push('');
436
+ lines.push('## Derived Facts');
437
+ appendFactLines(lines, 'Static facts', input.facts.facts.static.map((fact) => fact.text));
438
+ appendFactLines(lines, 'Dynamic facts', input.facts.facts.dynamic.map((fact) => fact.text));
439
+ lines.push('');
440
+ lines.push('## Shared Memory');
441
+ lines.push(input.assembled.context_block || 'No shared memory available yet.');
442
+ lines.push('');
443
+ lines.push('## Relevant Docs');
444
+ if (input.docs.results.length === 0) {
445
+ lines.push('No dependency docs matched this focus yet.');
446
+ }
447
+ else {
448
+ for (const result of input.docs.results) {
449
+ lines.push(`- ${result.dependency_name}@${result.dependency_version}: ${result.content.slice(0, 220)}`);
450
+ }
451
+ }
452
+ return lines.join('\n');
453
+ }
454
+ function appendBullets(lines, items) {
455
+ for (const item of items.slice(0, 4)) {
456
+ lines.push(`- ${item}`);
457
+ }
458
+ }
459
+ function formatFacts(result) {
460
+ const lines = ['Memoire project facts'];
461
+ appendFactLines(lines, 'Static facts', result.facts.static.map((fact) => `${fact.text} (${fact.category}, ${(fact.confidence * 100).toFixed(0)}%)`));
462
+ appendFactLines(lines, 'Dynamic facts', result.facts.dynamic.map((fact) => `${fact.text} (${fact.category}, ${(fact.confidence * 100).toFixed(0)}%)`));
463
+ lines.push('');
464
+ lines.push(`Source events: ${result.source_event_count}`);
465
+ lines.push(`Source event types: ${result.source_event_types.join(', ') || 'none'}`);
466
+ return lines.join('\n');
467
+ }
468
+ function appendFactLines(lines, label, items) {
469
+ lines.push(label);
470
+ if (items.length === 0) {
471
+ lines.push(' No facts yet');
472
+ return;
473
+ }
474
+ for (const item of items.slice(0, 5)) {
475
+ lines.push(` - ${item}`);
476
+ }
477
+ }
478
+ function truncateInline(value, maxLength) {
479
+ const normalized = value.replace(/\s+/g, ' ').trim();
480
+ if (normalized.length <= maxLength) {
481
+ return normalized;
482
+ }
483
+ return `${normalized.slice(0, maxLength - 1)}…`;
484
+ }
485
+ function formatDuration(valueMs) {
486
+ if (!Number.isFinite(valueMs) || valueMs <= 0) {
487
+ return '0m';
488
+ }
489
+ const totalSeconds = Math.floor(valueMs / 1000);
490
+ const hours = Math.floor(totalSeconds / 3600);
491
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
492
+ if (hours > 0) {
493
+ return `${hours}h ${minutes}m`;
494
+ }
495
+ return `${Math.max(minutes, 0)}m`;
496
+ }
497
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA4BpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAoB,EAAE;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;YAC9B,KAAK;YACL,KAAK,EAAE,CAAC;SACT,CAAC;QACF,MAAM,CAAC,UAAU,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;YAC9B,KAAK;YACL,KAAK,EAAE,CAAC;SACT,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAoB,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAoB,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;KACpE,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,aAAa,KAAK,CAAC,cAAc,EAAE;QACnC,sBAAsB,OAAO,CAAC,eAAe,EAAE;QAC/C,qBAAqB,OAAO,CAAC,cAAc,EAAE;QAC7C,uBAAuB,OAAO,CAAC,gBAAgB,EAAE;QACjD,qBAAqB,OAAO,CAAC,cAAc,EAAE;QAC7C,qBAAqB,OAAO,CAAC,cAAc,EAAE;QAC7C,mBAAmB,OAAO,CAAC,kBAAkB,EAAE;QAC/C,EAAE;QACF,YAAY;QACZ,qBAAqB,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE;QACvD,mBAAmB,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE;QAC1D,aAAa,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;KAC3D,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,cAAc,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAoB,EAAE;IAC3D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG;QACZ,gBAAgB;QAChB,aAAa,MAAM,CAAC,MAAM,EAAE;QAC5B,oBAAoB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACzD,yBAAyB,MAAM,CAAC,kBAAkB,EAAE;KACrD,CAAC;IAEF,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9F,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5F,KAAK,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,OAAO,cAAc,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAoB,EAAE;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAc,EAAE,OAAoB,EAAE;IAC3E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAc,EAAE,OAAoB,EAAE;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAEhD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;QAC9B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5D,KAAK,EAAE,YAAY;QACnB,aAAa,EAAE,MAAM,CAAC,IAAI;QAC1B,gBAAgB,EAAE,MAAM,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;QACnC,UAAU,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;QAC/B,EAAE;QACF,MAAM,CAAC,IAAI;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAK,GAAG,EAAE,EAAE,OAAoB,EAAE;IAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;QAC9B,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEnC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1G,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,OAAoB,EAAE;IACnF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;QAC9B,UAAU,EAAE,SAAS;KACtB,CAAC,CAAC;IAEH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,OAAO,OAAO,CAAC,EAAE,EAAE;QACnB,UAAU,OAAO,CAAC,KAAK,EAAE;QACzB,YAAY,OAAO,CAAC,UAAU,EAAE;QAChC,eAAe,OAAO,CAAC,kBAAkB,EAAE;KAC5C,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAyB,EAAE,OAAoB,EAAE;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAEhD,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,CAAC,cAAc,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;SAC/B,CAAC;QACF,MAAM,CAAC,YAAY,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;SAC/B,CAAC;QACF,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;YAC9B,KAAK,EAAE,YAAY;YACnB,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE;gBACP,eAAe,EAAE,KAAK;gBACtB,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,IAAI;gBACf,eAAe,EAAE,IAAI;gBACrB,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,IAAI;aACnB;SACF,CAAC;QACF,YAAY;YACV,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;gBAC9B,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,CAAC;aACT,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;KAC/C,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,YAAY,CAAC;YACjB,KAAK,EAAE,YAAY;YACnB,OAAO;YACP,KAAK;YACL,SAAS;YACT,IAAI;SACL,CAAC;QACF,QAAQ,EAAE,SAAS,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAoB,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,wEAAwE;AAExE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,OAAoB,EAAE;IAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC/H,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC7H,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAoB,EAAE;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/H,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACjJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAoB,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAoB,EAAE;IAC/D,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAoB,EAAE;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACzH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAoB,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAAK,GAAG,EAAE,EAAE,OAAoB,EAAE;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,SAAiB,EAAE,OAAoB,EAAE;IACvF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB;IACzC,OAAO,IAAI,aAAa,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,QAAQ,EAAE,MAAM,CAAC,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAiB;IAahD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,eAAe,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC;IAEpD,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,OAAO;SAC/B,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;KAC9C,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,CAAC,kBAAkB;WAC9C,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG;QAClB,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;KACvC,CAAC;IACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtE,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,iBAAiB,KAAK,cAAc,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,SAAS,EAAE,CAAC;QACrI,eAAe,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,uBAAuB,4DAA4D,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,iBAAiB,KAAK,gBAAgB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnE,eAAe,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;IACxI,CAAC;IACD,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,EAAE,CAAC;QACpC,eAAe,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IAC/H,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,iBAAiB;QACrC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,oBAAoB,EAAE,mBAAmB;QACzC,YAAY,EAAE,WAAW;QACzB,IAAI;QACJ,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE;QAC/D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB,EAAE,IAAwB;IACnE,OAAO;QACL,gBAAgB;QAChB,aAAa,MAAM,CAAC,MAAM,EAAE;QAC5B,UAAU,MAAM,CAAC,MAAM,EAAE;QACzB,cAAc,MAAM,CAAC,UAAU,EAAE;QACjC,WAAW,MAAM,CAAC,OAAO,EAAE;QAC3B,WAAW,MAAM,CAAC,OAAO,IAAI,KAAK,EAAE;QACpC,2BAA2B,IAAI,CAAC,oBAAoB,EAAE;QACtD,qBAAqB,IAAI,CAAC,cAAc,EAAE;QAC1C,sBAAsB,IAAI,CAAC,eAAe,IAAI,OAAO,EAAE;KACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,MAA4D;IACjF,MAAM,KAAK,GAAG,CAAC,yBAAyB,EAAE,YAAY,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAExF,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACxE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACtE,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAChF,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACxE,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAElE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAEpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,KAAe,EAAE,KAAa,EAAE,KAAe;IAClE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAMrB;IACC,MAAM,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAElD,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACjE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAChE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAClE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAEjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,IAAI,iCAAiC,CAAC,CAAC;IAE/E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CACR,KAAK,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,KAAe;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAA0D;IAC7E,MAAM,KAAK,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxC,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrJ,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvJ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,KAAa,EAAE,KAAe;IACtE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,SAAiB;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEvD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC;IACjC,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { MemoireClient } from '@memoire/sdk';
2
+ import type { AcceptInviteRequest, AcceptInviteResponse, BootstrapWorkspaceRequest, BootstrapWorkspaceResponse } from '@memoire/shared';
3
+ import { detectDependencies } from './dependencies.js';
4
+ export interface InstallOptions {
5
+ client: 'cursor' | 'claude' | 'codex' | 'amp';
6
+ apiKey: string;
7
+ apiUrl: string;
8
+ orgId?: string;
9
+ projectId?: string;
10
+ userName?: string;
11
+ userEmail?: string;
12
+ }
13
+ export interface InitOptions {
14
+ client: 'cursor' | 'claude' | 'codex' | 'amp';
15
+ apiUrl: string;
16
+ setupToken?: string;
17
+ inviteToken?: string;
18
+ orgName?: string;
19
+ orgSlug?: string;
20
+ projectName?: string;
21
+ projectSlug?: string;
22
+ userName?: string;
23
+ userEmail?: string;
24
+ }
25
+ interface RepoInfo {
26
+ repoRoot?: string;
27
+ repoId?: string;
28
+ repoUrl?: string;
29
+ }
30
+ interface UserProfile {
31
+ name: string;
32
+ email?: string;
33
+ }
34
+ type InstallerClient = Pick<MemoireClient, 'listProjects' | 'createProject' | 'registerClient' | 'indexDocs'>;
35
+ interface InstallDeps {
36
+ homeDir?: string;
37
+ cwd?: string;
38
+ createClient?: (opts: {
39
+ apiUrl: string;
40
+ apiKey: string;
41
+ }) => InstallerClient;
42
+ detectRepoInfo?: (cwd: string) => RepoInfo;
43
+ detectUserProfile?: (cwd: string) => UserProfile;
44
+ detectDependencies?: (cwd: string) => ReturnType<typeof detectDependencies>;
45
+ machineId?: string;
46
+ runCommand?: (command: string, args: string[], opts?: {
47
+ cwd?: string;
48
+ }) => string | null;
49
+ bootstrapWorkspace?: (opts: {
50
+ apiUrl: string;
51
+ setupToken?: string;
52
+ request: BootstrapWorkspaceRequest;
53
+ }) => Promise<BootstrapWorkspaceResponse>;
54
+ acceptInvite?: (opts: {
55
+ apiUrl: string;
56
+ request: AcceptInviteRequest;
57
+ }) => Promise<AcceptInviteResponse>;
58
+ }
59
+ /** Install Memoire for a specific client */
60
+ export declare function install(opts: InstallOptions, deps?: InstallDeps): Promise<void>;
61
+ /** Bootstrap a fresh workspace and install Memoire in one step. */
62
+ export declare function init(opts: InitOptions, deps?: InstallDeps): Promise<BootstrapWorkspaceResponse>;
63
+ export declare function normalizeGitRemoteForTest(value?: string | null): string | undefined;
64
+ export {};
65
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"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"}