stellar-memory 0.5.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.
- package/LICENSE +21 -0
- package/README.md +362 -0
- package/dist/api/routes/analytics.d.ts +15 -0
- package/dist/api/routes/analytics.js +131 -0
- package/dist/api/routes/analytics.js.map +1 -0
- package/dist/api/routes/conflicts.d.ts +12 -0
- package/dist/api/routes/conflicts.js +67 -0
- package/dist/api/routes/conflicts.js.map +1 -0
- package/dist/api/routes/consolidation.d.ts +11 -0
- package/dist/api/routes/consolidation.js +63 -0
- package/dist/api/routes/consolidation.js.map +1 -0
- package/dist/api/routes/constellation.d.ts +4 -0
- package/dist/api/routes/constellation.js +84 -0
- package/dist/api/routes/constellation.js.map +1 -0
- package/dist/api/routes/memories.d.ts +4 -0
- package/dist/api/routes/memories.js +219 -0
- package/dist/api/routes/memories.js.map +1 -0
- package/dist/api/routes/observations.d.ts +10 -0
- package/dist/api/routes/observations.js +42 -0
- package/dist/api/routes/observations.js.map +1 -0
- package/dist/api/routes/orbit.d.ts +4 -0
- package/dist/api/routes/orbit.js +71 -0
- package/dist/api/routes/orbit.js.map +1 -0
- package/dist/api/routes/projects.d.ts +15 -0
- package/dist/api/routes/projects.js +121 -0
- package/dist/api/routes/projects.js.map +1 -0
- package/dist/api/routes/scan.d.ts +4 -0
- package/dist/api/routes/scan.js +403 -0
- package/dist/api/routes/scan.js.map +1 -0
- package/dist/api/routes/sun.d.ts +4 -0
- package/dist/api/routes/sun.js +43 -0
- package/dist/api/routes/sun.js.map +1 -0
- package/dist/api/routes/system.d.ts +4 -0
- package/dist/api/routes/system.js +70 -0
- package/dist/api/routes/system.js.map +1 -0
- package/dist/api/routes/temporal.d.ts +13 -0
- package/dist/api/routes/temporal.js +82 -0
- package/dist/api/routes/temporal.js.map +1 -0
- package/dist/api/server.d.ts +2 -0
- package/dist/api/server.js +99 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/websocket.d.ts +53 -0
- package/dist/api/websocket.js +168 -0
- package/dist/api/websocket.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +10 -0
- package/dist/cli/init.js +163 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/engine/analytics.d.ts +93 -0
- package/dist/engine/analytics.js +437 -0
- package/dist/engine/analytics.js.map +1 -0
- package/dist/engine/conflict.d.ts +54 -0
- package/dist/engine/conflict.js +322 -0
- package/dist/engine/conflict.js.map +1 -0
- package/dist/engine/consolidation.d.ts +83 -0
- package/dist/engine/consolidation.js +368 -0
- package/dist/engine/consolidation.js.map +1 -0
- package/dist/engine/constellation.d.ts +66 -0
- package/dist/engine/constellation.js +382 -0
- package/dist/engine/constellation.js.map +1 -0
- package/dist/engine/corona.d.ts +53 -0
- package/dist/engine/corona.js +181 -0
- package/dist/engine/corona.js.map +1 -0
- package/dist/engine/embedding.d.ts +44 -0
- package/dist/engine/embedding.js +168 -0
- package/dist/engine/embedding.js.map +1 -0
- package/dist/engine/gravity.d.ts +63 -0
- package/dist/engine/gravity.js +121 -0
- package/dist/engine/gravity.js.map +1 -0
- package/dist/engine/multiproject.d.ts +75 -0
- package/dist/engine/multiproject.js +241 -0
- package/dist/engine/multiproject.js.map +1 -0
- package/dist/engine/observation.d.ts +82 -0
- package/dist/engine/observation.js +357 -0
- package/dist/engine/observation.js.map +1 -0
- package/dist/engine/orbit.d.ts +91 -0
- package/dist/engine/orbit.js +249 -0
- package/dist/engine/orbit.js.map +1 -0
- package/dist/engine/planet.d.ts +64 -0
- package/dist/engine/planet.js +432 -0
- package/dist/engine/planet.js.map +1 -0
- package/dist/engine/procedural.d.ts +71 -0
- package/dist/engine/procedural.js +259 -0
- package/dist/engine/procedural.js.map +1 -0
- package/dist/engine/quality.d.ts +48 -0
- package/dist/engine/quality.js +245 -0
- package/dist/engine/quality.js.map +1 -0
- package/dist/engine/repository.d.ts +79 -0
- package/dist/engine/repository.js +13 -0
- package/dist/engine/repository.js.map +1 -0
- package/dist/engine/sun.d.ts +61 -0
- package/dist/engine/sun.js +240 -0
- package/dist/engine/sun.js.map +1 -0
- package/dist/engine/temporal.d.ts +67 -0
- package/dist/engine/temporal.js +283 -0
- package/dist/engine/temporal.js.map +1 -0
- package/dist/engine/types.d.ts +179 -0
- package/dist/engine/types.js +27 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/connector-registry.d.ts +20 -0
- package/dist/mcp/connector-registry.js +35 -0
- package/dist/mcp/connector-registry.js.map +1 -0
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +242 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/daemon-tool.d.ts +16 -0
- package/dist/mcp/tools/daemon-tool.js +58 -0
- package/dist/mcp/tools/daemon-tool.js.map +1 -0
- package/dist/mcp/tools/ingestion-tools.d.ts +20 -0
- package/dist/mcp/tools/ingestion-tools.js +34 -0
- package/dist/mcp/tools/ingestion-tools.js.map +1 -0
- package/dist/mcp/tools/memory-tools.d.ts +122 -0
- package/dist/mcp/tools/memory-tools.js +1037 -0
- package/dist/mcp/tools/memory-tools.js.map +1 -0
- package/dist/scanner/cloud/github.d.ts +34 -0
- package/dist/scanner/cloud/github.js +260 -0
- package/dist/scanner/cloud/github.js.map +1 -0
- package/dist/scanner/cloud/google-drive.d.ts +30 -0
- package/dist/scanner/cloud/google-drive.js +289 -0
- package/dist/scanner/cloud/google-drive.js.map +1 -0
- package/dist/scanner/cloud/notion.d.ts +33 -0
- package/dist/scanner/cloud/notion.js +231 -0
- package/dist/scanner/cloud/notion.js.map +1 -0
- package/dist/scanner/cloud/slack.d.ts +38 -0
- package/dist/scanner/cloud/slack.js +282 -0
- package/dist/scanner/cloud/slack.js.map +1 -0
- package/dist/scanner/cloud/types.d.ts +73 -0
- package/dist/scanner/cloud/types.js +9 -0
- package/dist/scanner/cloud/types.js.map +1 -0
- package/dist/scanner/index.d.ts +35 -0
- package/dist/scanner/index.js +420 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/local/filesystem.d.ts +33 -0
- package/dist/scanner/local/filesystem.js +203 -0
- package/dist/scanner/local/filesystem.js.map +1 -0
- package/dist/scanner/local/git.d.ts +24 -0
- package/dist/scanner/local/git.js +161 -0
- package/dist/scanner/local/git.js.map +1 -0
- package/dist/scanner/local/parsers/code.d.ts +3 -0
- package/dist/scanner/local/parsers/code.js +127 -0
- package/dist/scanner/local/parsers/code.js.map +1 -0
- package/dist/scanner/local/parsers/index.d.ts +11 -0
- package/dist/scanner/local/parsers/index.js +24 -0
- package/dist/scanner/local/parsers/index.js.map +1 -0
- package/dist/scanner/local/parsers/json-parser.d.ts +3 -0
- package/dist/scanner/local/parsers/json-parser.js +117 -0
- package/dist/scanner/local/parsers/json-parser.js.map +1 -0
- package/dist/scanner/local/parsers/markdown.d.ts +3 -0
- package/dist/scanner/local/parsers/markdown.js +120 -0
- package/dist/scanner/local/parsers/markdown.js.map +1 -0
- package/dist/scanner/local/parsers/text.d.ts +3 -0
- package/dist/scanner/local/parsers/text.js +41 -0
- package/dist/scanner/local/parsers/text.js.map +1 -0
- package/dist/scanner/metadata-scanner.d.ts +67 -0
- package/dist/scanner/metadata-scanner.js +356 -0
- package/dist/scanner/metadata-scanner.js.map +1 -0
- package/dist/scanner/types.d.ts +47 -0
- package/dist/scanner/types.js +19 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/service/daemon.d.ts +23 -0
- package/dist/service/daemon.js +105 -0
- package/dist/service/daemon.js.map +1 -0
- package/dist/service/scheduler.d.ts +73 -0
- package/dist/service/scheduler.js +281 -0
- package/dist/service/scheduler.js.map +1 -0
- package/dist/storage/database.d.ts +10 -0
- package/dist/storage/database.js +265 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/queries.d.ts +85 -0
- package/dist/storage/queries.js +865 -0
- package/dist/storage/queries.js.map +1 -0
- package/dist/storage/sqlite-repository.d.ts +32 -0
- package/dist/storage/sqlite-repository.js +68 -0
- package/dist/storage/sqlite-repository.js.map +1 -0
- package/dist/storage/vec.d.ts +62 -0
- package/dist/storage/vec.js +111 -0
- package/dist/storage/vec.js.map +1 -0
- package/dist/utils/config.d.ts +5 -0
- package/dist/utils/config.js +60 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.js +86 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/time.d.ts +21 -0
- package/dist/utils/time.js +42 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +13 -0
- package/dist/utils/tokenizer.js +46 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +77 -0
- package/scripts/check-node.mjs +36 -0
- package/scripts/setup.mjs +157 -0
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* stellar-memory init — One-command setup for Stellar Memory MCP server.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx stellar-memory init # Configure Claude Code + download model
|
|
7
|
+
* npx stellar-memory init --skip-model # Skip embedding model download
|
|
8
|
+
*/
|
|
9
|
+
import { execSync, spawnSync } from 'node:child_process';
|
|
10
|
+
import { existsSync } from 'node:fs';
|
|
11
|
+
import { resolve, dirname } from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const ROOT = resolve(__dirname, '..');
|
|
15
|
+
const CYAN = '\x1b[36m';
|
|
16
|
+
const GREEN = '\x1b[32m';
|
|
17
|
+
const YELLOW = '\x1b[33m';
|
|
18
|
+
const RED = '\x1b[31m';
|
|
19
|
+
const BOLD = '\x1b[1m';
|
|
20
|
+
const RESET = '\x1b[0m';
|
|
21
|
+
function log(msg) {
|
|
22
|
+
console.log(msg);
|
|
23
|
+
}
|
|
24
|
+
function success(msg) {
|
|
25
|
+
console.log(`${GREEN}✓${RESET} ${msg}`);
|
|
26
|
+
}
|
|
27
|
+
function warn(msg) {
|
|
28
|
+
console.log(`${YELLOW}!${RESET} ${msg}`);
|
|
29
|
+
}
|
|
30
|
+
function fail(msg) {
|
|
31
|
+
console.error(`${RED}✗${RESET} ${msg}`);
|
|
32
|
+
}
|
|
33
|
+
function checkNodeVersion() {
|
|
34
|
+
const [major, minor] = process.versions.node.split('.').map(Number);
|
|
35
|
+
if (major < 22 || (major === 22 && minor < 5)) {
|
|
36
|
+
fail(`Node.js 22.5+ required (detected: ${process.versions.node})`);
|
|
37
|
+
log(' Upgrade: nvm install 22 && nvm use 22');
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
success(`Node.js ${process.versions.node}`);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
function checkClaudeCLI() {
|
|
44
|
+
try {
|
|
45
|
+
execSync('claude --version', { stdio: 'pipe' });
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function configureMCP() {
|
|
53
|
+
if (!checkClaudeCLI()) {
|
|
54
|
+
warn('Claude CLI not found — skipping MCP auto-configuration');
|
|
55
|
+
log('');
|
|
56
|
+
log(' To manually configure, add to your MCP settings:');
|
|
57
|
+
log(` ${CYAN}claude mcp add stellar-memory -- npx -y stellar-memory${RESET}`);
|
|
58
|
+
log('');
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
log('');
|
|
62
|
+
log('Configuring Claude MCP server...');
|
|
63
|
+
const result = spawnSync('claude', [
|
|
64
|
+
'mcp', 'add', 'stellar-memory', '--', 'npx', '-y', 'stellar-memory'
|
|
65
|
+
], {
|
|
66
|
+
stdio: 'inherit',
|
|
67
|
+
shell: true,
|
|
68
|
+
});
|
|
69
|
+
if (result.status === 0) {
|
|
70
|
+
success('MCP server registered with Claude');
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
warn('MCP auto-configuration failed');
|
|
75
|
+
log(' You can manually run:');
|
|
76
|
+
log(` ${CYAN}claude mcp add stellar-memory -- npx -y stellar-memory${RESET}`);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function downloadModel() {
|
|
81
|
+
log('');
|
|
82
|
+
log('Downloading embedding model (~90 MB, one-time)...');
|
|
83
|
+
const setupScript = resolve(ROOT, '..', 'scripts', 'setup.mjs');
|
|
84
|
+
// When installed via npm, scripts/ is at the package root
|
|
85
|
+
// When running from source, it's at ../scripts/
|
|
86
|
+
const candidates = [
|
|
87
|
+
resolve(ROOT, 'scripts', 'setup.mjs'), // npm installed (dist/scripts/)
|
|
88
|
+
resolve(ROOT, '..', 'scripts', 'setup.mjs'), // from source (src/../scripts/)
|
|
89
|
+
];
|
|
90
|
+
const scriptPath = candidates.find(p => existsSync(p));
|
|
91
|
+
if (!scriptPath) {
|
|
92
|
+
// Fallback: run inline model download
|
|
93
|
+
try {
|
|
94
|
+
const { pipeline, env } = await import('@xenova/transformers');
|
|
95
|
+
env.cacheDir = process.env['TRANSFORMERS_CACHE'] ?? undefined;
|
|
96
|
+
await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', {
|
|
97
|
+
quantized: true,
|
|
98
|
+
progress_callback: (info) => {
|
|
99
|
+
if (info.status === 'progress' && info.progress != null) {
|
|
100
|
+
const pct = Math.round(info.progress);
|
|
101
|
+
process.stdout.write(`\r Downloading... ${pct}% `);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
process.stdout.write('\r' + ' '.repeat(40) + '\r');
|
|
106
|
+
success('Embedding model downloaded');
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
warn(`Model download failed: ${err.message}`);
|
|
111
|
+
log(' You can retry later: npx stellar-memory setup');
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const result = spawnSync('node', [scriptPath], {
|
|
116
|
+
stdio: 'inherit',
|
|
117
|
+
shell: true,
|
|
118
|
+
});
|
|
119
|
+
if (result.status === 0) {
|
|
120
|
+
success('Embedding model ready');
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
warn('Model download failed — you can retry: npm run setup');
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function main() {
|
|
129
|
+
log('');
|
|
130
|
+
log(`${BOLD}${CYAN} Stellar Memory — Setup${RESET}`);
|
|
131
|
+
log(` ${'─'.repeat(40)}`);
|
|
132
|
+
log('');
|
|
133
|
+
// 1. Check Node.js
|
|
134
|
+
if (!checkNodeVersion()) {
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
const args = process.argv.slice(2);
|
|
138
|
+
const skipModel = args.includes('--skip-model');
|
|
139
|
+
// 2. Download embedding model
|
|
140
|
+
if (!skipModel) {
|
|
141
|
+
await downloadModel();
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
warn('Skipping model download (--skip-model)');
|
|
145
|
+
}
|
|
146
|
+
// 3. Configure MCP
|
|
147
|
+
configureMCP();
|
|
148
|
+
// 4. Done
|
|
149
|
+
log('');
|
|
150
|
+
log(`${BOLD}${GREEN} Setup complete!${RESET}`);
|
|
151
|
+
log('');
|
|
152
|
+
log(' Stellar Memory will activate automatically in Claude Code.');
|
|
153
|
+
log(' Start a conversation and your memories will persist across sessions.');
|
|
154
|
+
log('');
|
|
155
|
+
log(` ${CYAN}Dashboard:${RESET} npx stellar-memory api → http://localhost:21547`);
|
|
156
|
+
log(` ${CYAN}Docs:${RESET} https://stellar-memory.com`);
|
|
157
|
+
log('');
|
|
158
|
+
}
|
|
159
|
+
main().catch((err) => {
|
|
160
|
+
fail(`Setup failed: ${err.message}`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
});
|
|
163
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* analytics.ts — Memory Analytics
|
|
3
|
+
*
|
|
4
|
+
* Purely computational analysis of memory usage patterns, health metrics,
|
|
5
|
+
* and insights derived from memory and orbit_log data.
|
|
6
|
+
*
|
|
7
|
+
* No side effects — all functions are read-only queries.
|
|
8
|
+
*/
|
|
9
|
+
import type { MemoryAnalytics } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Get comprehensive analytics for a project.
|
|
12
|
+
* Wraps queries.getAnalytics() and ensures all fields are populated.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getFullAnalytics(project: string): MemoryAnalytics;
|
|
15
|
+
/**
|
|
16
|
+
* Memory survival analysis — how do memories fare over time?
|
|
17
|
+
*
|
|
18
|
+
* Groups memories by age bucket (days since creation) and reports:
|
|
19
|
+
* - survivingCount: still in habitable zone or closer (distance < 15)
|
|
20
|
+
* - accessedCount: accessed at least once
|
|
21
|
+
* - forgottenCount: pushed to Oort (distance >= 70) or soft-deleted
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSurvivalCurve(project: string): Array<{
|
|
24
|
+
ageInDays: number;
|
|
25
|
+
survivingCount: number;
|
|
26
|
+
accessedCount: number;
|
|
27
|
+
forgottenCount: number;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Analyze orbit_log to find which memories have moved the most.
|
|
31
|
+
*
|
|
32
|
+
* Returns up to 20 memories sorted by movement activity (most log entries first).
|
|
33
|
+
*/
|
|
34
|
+
export declare function getOrbitMovements(project: string, days?: number): Array<{
|
|
35
|
+
memoryId: string;
|
|
36
|
+
summary: string;
|
|
37
|
+
movements: Array<{
|
|
38
|
+
timestamp: string;
|
|
39
|
+
oldDistance: number;
|
|
40
|
+
newDistance: number;
|
|
41
|
+
trigger: string;
|
|
42
|
+
}>;
|
|
43
|
+
netMovement: number;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Group memories by their primary tag to find topic clusters.
|
|
47
|
+
*
|
|
48
|
+
* For each tag, computes:
|
|
49
|
+
* - memory count
|
|
50
|
+
* - average importance
|
|
51
|
+
* - average distance
|
|
52
|
+
* - recent activity (accesses in last 7 days)
|
|
53
|
+
*
|
|
54
|
+
* Sorted by recent activity (most active clusters first).
|
|
55
|
+
*/
|
|
56
|
+
export declare function getTopicClusters(project: string): Array<{
|
|
57
|
+
topic: string;
|
|
58
|
+
memoryCount: number;
|
|
59
|
+
avgImportance: number;
|
|
60
|
+
avgDistance: number;
|
|
61
|
+
recentActivity: number;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Detect periodic access patterns from orbit_log entries.
|
|
65
|
+
*
|
|
66
|
+
* Heuristics:
|
|
67
|
+
* - Daily pattern: a tag/group accessed multiple times in a day consistently
|
|
68
|
+
* - Weekly pattern: accesses concentrated on specific day-of-week
|
|
69
|
+
* - Burst pattern: high access concentration in recent days
|
|
70
|
+
*/
|
|
71
|
+
export declare function detectAccessPatterns(project: string): Array<{
|
|
72
|
+
pattern: string;
|
|
73
|
+
description: string;
|
|
74
|
+
frequency: string;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Compute health metrics and generate actionable recommendations.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getMemoryHealth(project: string): {
|
|
80
|
+
totalMemories: number;
|
|
81
|
+
activeRatio: number;
|
|
82
|
+
staleRatio: number;
|
|
83
|
+
qualityAvg: number;
|
|
84
|
+
conflictRatio: number;
|
|
85
|
+
consolidationOpportunities: number;
|
|
86
|
+
recommendations: string[];
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Compile all analytics into a readable text report.
|
|
90
|
+
* Suitable for display in terminal or chat.
|
|
91
|
+
*/
|
|
92
|
+
export declare function generateReport(project: string): string;
|
|
93
|
+
//# sourceMappingURL=analytics.d.ts.map
|