devclocked 2.1.1 → 2.1.2
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/dist/auth.d.ts +16 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +68 -0
- package/dist/auth.js.map +1 -0
- package/dist/branding/banner.d.ts +16 -0
- package/dist/branding/banner.d.ts.map +1 -0
- package/dist/branding/banner.js +109 -0
- package/dist/branding/banner.js.map +1 -0
- package/dist/branding/dashboard.d.ts +28 -0
- package/dist/branding/dashboard.d.ts.map +1 -0
- package/dist/branding/dashboard.js +508 -0
- package/dist/branding/dashboard.js.map +1 -0
- package/dist/commands/flush.d.ts +6 -0
- package/dist/commands/flush.d.ts.map +1 -0
- package/dist/commands/flush.js +54 -0
- package/dist/commands/flush.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +108 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +6 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +38 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/mcp-health.d.ts +8 -0
- package/dist/commands/mcp-health.d.ts.map +1 -0
- package/dist/commands/mcp-health.js +75 -0
- package/dist/commands/mcp-health.js.map +1 -0
- package/dist/commands/mcp-server.d.ts +65 -0
- package/dist/commands/mcp-server.d.ts.map +1 -0
- package/dist/commands/mcp-server.js +280 -0
- package/dist/commands/mcp-server.js.map +1 -0
- package/dist/commands/session.d.ts +6 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +90 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +8 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +164 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +78 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summary.d.ts +6 -0
- package/dist/commands/summary.d.ts.map +1 -0
- package/dist/commands/summary.js +45 -0
- package/dist/commands/summary.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-utils.d.ts +15 -0
- package/dist/mcp-utils.d.ts.map +1 -0
- package/dist/mcp-utils.js +60 -0
- package/dist/mcp-utils.js.map +1 -0
- package/dist/storage/FileStorageAdapter.d.ts +19 -0
- package/dist/storage/FileStorageAdapter.d.ts.map +1 -0
- package/dist/storage/FileStorageAdapter.js +80 -0
- package/dist/storage/FileStorageAdapter.js.map +1 -0
- package/dist/terminal/WrappedShell.d.ts +24 -0
- package/dist/terminal/WrappedShell.d.ts.map +1 -0
- package/dist/terminal/WrappedShell.js +121 -0
- package/dist/terminal/WrappedShell.js.map +1 -0
- package/dist/terminal/activityDetector.d.ts +33 -0
- package/dist/terminal/activityDetector.d.ts.map +1 -0
- package/dist/terminal/activityDetector.js +158 -0
- package/dist/terminal/activityDetector.js.map +1 -0
- package/package.json +41 -7
- package/index.js +0 -2
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI auth helper — bootstraps TrackerClient with API key from config file.
|
|
3
|
+
*
|
|
4
|
+
* The tracker-core AuthManager holds the API key in-memory only (by design —
|
|
5
|
+
* VS Code globalState is syncable, so persisting keys there is a leak vector).
|
|
6
|
+
* But CLI commands are short-lived processes that need to read the key from
|
|
7
|
+
* disk on every invocation. This helper reads the key from cli.json and
|
|
8
|
+
* primes the in-memory state without a network roundtrip.
|
|
9
|
+
*/
|
|
10
|
+
import { TrackerClient } from '@devclocked/tracker-core';
|
|
11
|
+
/**
|
|
12
|
+
* Create a TrackerClient that is already authenticated from the CLI config file.
|
|
13
|
+
* Returns null if not authenticated.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createAuthenticatedClient(): Promise<TrackerClient | null>;
|
|
16
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWzD;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4B/E"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI auth helper — bootstraps TrackerClient with API key from config file.
|
|
4
|
+
*
|
|
5
|
+
* The tracker-core AuthManager holds the API key in-memory only (by design —
|
|
6
|
+
* VS Code globalState is syncable, so persisting keys there is a leak vector).
|
|
7
|
+
* But CLI commands are short-lived processes that need to read the key from
|
|
8
|
+
* disk on every invocation. This helper reads the key from cli.json and
|
|
9
|
+
* primes the in-memory state without a network roundtrip.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createAuthenticatedClient = createAuthenticatedClient;
|
|
13
|
+
const tracker_core_1 = require("@devclocked/tracker-core");
|
|
14
|
+
const FileStorageAdapter_1 = require("./storage/FileStorageAdapter");
|
|
15
|
+
const config_1 = require("./config");
|
|
16
|
+
/**
|
|
17
|
+
* Create a TrackerClient that is already authenticated from the CLI config file.
|
|
18
|
+
* Returns null if not authenticated.
|
|
19
|
+
*/
|
|
20
|
+
async function createAuthenticatedClient() {
|
|
21
|
+
const storage = new FileStorageAdapter_1.FileStorageAdapter();
|
|
22
|
+
const client = new tracker_core_1.TrackerClient({
|
|
23
|
+
supabaseUrl: config_1.SUPABASE_URL,
|
|
24
|
+
supabaseAnonKey: config_1.SUPABASE_ANON_KEY,
|
|
25
|
+
source: 'cli',
|
|
26
|
+
clientId: `cli-${Date.now()}`,
|
|
27
|
+
debug: false,
|
|
28
|
+
}, storage);
|
|
29
|
+
client.stopAutoProcessing();
|
|
30
|
+
// Try to load API key from legacy auth_state in storage
|
|
31
|
+
const authStateRaw = await storage.get('auth_state');
|
|
32
|
+
if (authStateRaw) {
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(authStateRaw);
|
|
35
|
+
if (parsed.apiKey && parsed.apiKey.startsWith('dck_')) {
|
|
36
|
+
await bootstrapAuth(client, storage, parsed);
|
|
37
|
+
return client;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Malformed auth_state
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
client.destroy();
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Bootstrap auth into the TrackerClient's AuthManager without a network call.
|
|
49
|
+
* Sets the in-memory API key and ensures auth_metadata exists so
|
|
50
|
+
* getAuthState() works.
|
|
51
|
+
*/
|
|
52
|
+
async function bootstrapAuth(client, storage, auth) {
|
|
53
|
+
// Set API key in memory (AuthManager keeps it out of storage by design)
|
|
54
|
+
const authManager = client.authManager;
|
|
55
|
+
if (authManager) {
|
|
56
|
+
authManager.apiKeyInMemory = auth.apiKey;
|
|
57
|
+
}
|
|
58
|
+
// Ensure auth_metadata exists so getAuthState() returns non-null
|
|
59
|
+
const existing = await storage.get('auth_metadata');
|
|
60
|
+
if (!existing) {
|
|
61
|
+
await storage.set('auth_metadata', JSON.stringify({
|
|
62
|
+
userId: auth.userId,
|
|
63
|
+
email: auth.email,
|
|
64
|
+
authenticatedAt: auth.authenticatedAt,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAiBH,8DA4BC;AA3CD,2DAAyD;AACzD,qEAAkE;AAClE,qCAA2D;AAS3D;;;GAGG;AACI,KAAK,UAAU,yBAAyB;IAC7C,MAAM,OAAO,GAAG,IAAI,uCAAkB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,4BAAa,CAAC;QAC/B,WAAW,EAAE,qBAAY;QACzB,eAAe,EAAE,0BAAiB;QAClC,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;QAC7B,KAAK,EAAE,KAAK;KACb,EAAE,OAAO,CAAC,CAAC;IAEZ,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAE5B,wDAAwD;IACxD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAoB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,MAAqB,EACrB,OAA2B,EAC3B,IAAqB;IAErB,wEAAwE;IACxE,MAAM,WAAW,GAAI,MAAc,CAAC,WAAW,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branding and visual output for DevClocked CLI
|
|
3
|
+
*/
|
|
4
|
+
export declare function printBanner(): void;
|
|
5
|
+
export declare function printCompactBanner(): void;
|
|
6
|
+
export declare function printSessionStart(): void;
|
|
7
|
+
export declare function printSessionEnd(): void;
|
|
8
|
+
export declare function printSuccess(message: string): void;
|
|
9
|
+
export declare function printError(message: string): void;
|
|
10
|
+
export declare function printWarning(message: string): void;
|
|
11
|
+
export declare function printInfo(message: string): void;
|
|
12
|
+
export declare function printStatus(label: string, value: string, success?: boolean): void;
|
|
13
|
+
export declare function printHeader(title: string): void;
|
|
14
|
+
export declare function formatDuration(seconds: number): string;
|
|
15
|
+
export declare function formatTimeAgo(timestamp: string | number): string;
|
|
16
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/branding/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAMtC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI,CAG9E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAUhE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Branding and visual output for DevClocked CLI
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.printBanner = printBanner;
|
|
10
|
+
exports.printCompactBanner = printCompactBanner;
|
|
11
|
+
exports.printSessionStart = printSessionStart;
|
|
12
|
+
exports.printSessionEnd = printSessionEnd;
|
|
13
|
+
exports.printSuccess = printSuccess;
|
|
14
|
+
exports.printError = printError;
|
|
15
|
+
exports.printWarning = printWarning;
|
|
16
|
+
exports.printInfo = printInfo;
|
|
17
|
+
exports.printStatus = printStatus;
|
|
18
|
+
exports.printHeader = printHeader;
|
|
19
|
+
exports.formatDuration = formatDuration;
|
|
20
|
+
exports.formatTimeAgo = formatTimeAgo;
|
|
21
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
const config_1 = require("../config");
|
|
23
|
+
const YELLOW = chalk_1.default.hex('#F8D74A');
|
|
24
|
+
const GRAY = chalk_1.default.gray;
|
|
25
|
+
const WHITE = chalk_1.default.white;
|
|
26
|
+
const GREEN = chalk_1.default.green;
|
|
27
|
+
const RED = chalk_1.default.red;
|
|
28
|
+
const CYAN = chalk_1.default.cyan;
|
|
29
|
+
const LOGO = `
|
|
30
|
+
██████╗ ███████╗██╗ ██╗ ██████╗██╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗
|
|
31
|
+
██╔══██╗██╔════╝██║ ██║██╔════╝██║ ██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗
|
|
32
|
+
██║ ██║█████╗ ██║ ██║██║ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║ ██║
|
|
33
|
+
██║ ██║██╔══╝ ╚██╗ ██╔╝██║ ██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║ ██║
|
|
34
|
+
██████╔╝███████╗ ╚████╔╝ ╚██████╗███████╗╚██████╔╝╚██████╗██║ ██╗███████╗██████╔╝
|
|
35
|
+
╚═════╝ ╚══════╝ ╚═══╝ ╚═════╝╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═════╝
|
|
36
|
+
`.trim();
|
|
37
|
+
const LOGO_COMPACT = `
|
|
38
|
+
╔══════════════════════════════════╗
|
|
39
|
+
║ ${YELLOW('DevClocked')} ${GRAY('Terminal')} ║
|
|
40
|
+
╚══════════════════════════════════╝
|
|
41
|
+
`.trim();
|
|
42
|
+
function printBanner() {
|
|
43
|
+
console.log(YELLOW(LOGO));
|
|
44
|
+
console.log();
|
|
45
|
+
console.log(WHITE('DevClocked Terminal Session'));
|
|
46
|
+
console.log(GRAY(`Tracking active development · Privacy-first · v${config_1.CLI_VERSION}`));
|
|
47
|
+
}
|
|
48
|
+
function printCompactBanner() {
|
|
49
|
+
console.log(LOGO_COMPACT);
|
|
50
|
+
}
|
|
51
|
+
function printSessionStart() {
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(YELLOW('━'.repeat(50)));
|
|
54
|
+
console.log(YELLOW(' DevClocked Terminal Session'));
|
|
55
|
+
console.log(GRAY(' Tracking active development · Privacy-first'));
|
|
56
|
+
console.log(YELLOW('━'.repeat(50)));
|
|
57
|
+
console.log();
|
|
58
|
+
}
|
|
59
|
+
function printSessionEnd() {
|
|
60
|
+
console.log();
|
|
61
|
+
console.log(YELLOW('━'.repeat(50)));
|
|
62
|
+
console.log(GRAY(' DevClocked session ended'));
|
|
63
|
+
console.log(YELLOW('━'.repeat(50)));
|
|
64
|
+
console.log();
|
|
65
|
+
}
|
|
66
|
+
function printSuccess(message) {
|
|
67
|
+
console.log(GREEN('✓') + ' ' + WHITE(message));
|
|
68
|
+
}
|
|
69
|
+
function printError(message) {
|
|
70
|
+
console.log(RED('✗') + ' ' + WHITE(message));
|
|
71
|
+
}
|
|
72
|
+
function printWarning(message) {
|
|
73
|
+
console.log(YELLOW('⚠') + ' ' + WHITE(message));
|
|
74
|
+
}
|
|
75
|
+
function printInfo(message) {
|
|
76
|
+
console.log(GRAY('•') + ' ' + WHITE(message));
|
|
77
|
+
}
|
|
78
|
+
function printStatus(label, value, success = true) {
|
|
79
|
+
const icon = success ? GREEN('✓') : GRAY('○');
|
|
80
|
+
console.log(`${icon} ${WHITE(label)}: ${CYAN(value)}`);
|
|
81
|
+
}
|
|
82
|
+
function printHeader(title) {
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(YELLOW(`DevClocked CLI — ${title}`));
|
|
85
|
+
console.log();
|
|
86
|
+
}
|
|
87
|
+
function formatDuration(seconds) {
|
|
88
|
+
if (seconds < 60)
|
|
89
|
+
return `${seconds}s`;
|
|
90
|
+
if (seconds < 3600)
|
|
91
|
+
return `${Math.floor(seconds / 60)}m ${seconds % 60}s`;
|
|
92
|
+
const hours = Math.floor(seconds / 3600);
|
|
93
|
+
const mins = Math.floor((seconds % 3600) / 60);
|
|
94
|
+
return `${hours}h ${mins}m`;
|
|
95
|
+
}
|
|
96
|
+
function formatTimeAgo(timestamp) {
|
|
97
|
+
const now = Date.now();
|
|
98
|
+
const then = typeof timestamp === 'string' ? new Date(timestamp).getTime() : timestamp;
|
|
99
|
+
const diffMs = now - then;
|
|
100
|
+
const diffS = Math.floor(diffMs / 1000);
|
|
101
|
+
if (diffS < 60)
|
|
102
|
+
return `${diffS}s ago`;
|
|
103
|
+
if (diffS < 3600)
|
|
104
|
+
return `${Math.floor(diffS / 60)}m ago`;
|
|
105
|
+
if (diffS < 86400)
|
|
106
|
+
return `${Math.floor(diffS / 3600)}h ago`;
|
|
107
|
+
return `${Math.floor(diffS / 86400)}d ago`;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/branding/banner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal dashboard renderer for `devclocked summary`
|
|
3
|
+
*/
|
|
4
|
+
import { TodayActivityResponse } from '@devclocked/tracker-core';
|
|
5
|
+
export declare function renderProgressBar(filled: number, total: number, barWidth: number): string;
|
|
6
|
+
interface RepoAggregate {
|
|
7
|
+
name: string;
|
|
8
|
+
minutes: number;
|
|
9
|
+
linesAdded: number;
|
|
10
|
+
linesDeleted: number;
|
|
11
|
+
ticks: number;
|
|
12
|
+
tokensTotal: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function aggregateByRepo(data: TodayActivityResponse): RepoAggregate[];
|
|
15
|
+
export declare function buildCompactSummary(data: TodayActivityResponse): string;
|
|
16
|
+
export declare function renderCompactSummary(data: TodayActivityResponse): void;
|
|
17
|
+
export declare function buildFullDashboard(data: TodayActivityResponse): string;
|
|
18
|
+
export declare function renderFullDashboard(data: TodayActivityResponse): void;
|
|
19
|
+
export interface WeeklyDayEntry {
|
|
20
|
+
date: string;
|
|
21
|
+
data: TodayActivityResponse;
|
|
22
|
+
}
|
|
23
|
+
export declare function buildPlainWeeklySummary(days: WeeklyDayEntry[]): string;
|
|
24
|
+
export declare function buildPlainSummary(data: TodayActivityResponse): string;
|
|
25
|
+
export declare function buildPlainVisualSummary(data: TodayActivityResponse): string;
|
|
26
|
+
export declare function buildPlainVisualFull(data: TodayActivityResponse): string;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/branding/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAqB,MAAM,0BAA0B,CAAC;AAkCpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzF;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,aAAa,EAAE,CA2B5E;AAqFD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAsFvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAEtE;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAoEtE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAErE;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CAmDtE;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAgDrE;AAWD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA+E3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAsDxE"}
|