standout 0.5.34 → 0.5.35

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 (55) hide show
  1. package/dist/cli.js +7435 -565
  2. package/package.json +9 -3
  3. package/dist/ai-usage.d.ts +0 -164
  4. package/dist/ai-usage.js +0 -1306
  5. package/dist/api.d.ts +0 -10
  6. package/dist/api.js +0 -94
  7. package/dist/browser-session.d.ts +0 -3
  8. package/dist/browser-session.js +0 -227
  9. package/dist/cli.d.ts +0 -2
  10. package/dist/cursor.d.ts +0 -57
  11. package/dist/cursor.js +0 -562
  12. package/dist/dev-env.d.ts +0 -28
  13. package/dist/dev-env.js +0 -264
  14. package/dist/gather.d.ts +0 -82
  15. package/dist/gather.js +0 -922
  16. package/dist/heap.d.ts +0 -1
  17. package/dist/heap.js +0 -25
  18. package/dist/identity.d.ts +0 -8
  19. package/dist/identity.js +0 -29
  20. package/dist/linkedin-scrape.d.ts +0 -2
  21. package/dist/linkedin-scrape.js +0 -56
  22. package/dist/mcp.d.ts +0 -1
  23. package/dist/mcp.js +0 -25
  24. package/dist/payload.d.ts +0 -8
  25. package/dist/payload.js +0 -163
  26. package/dist/prompt.d.ts +0 -1
  27. package/dist/prompt.js +0 -247
  28. package/dist/proxy.d.ts +0 -1
  29. package/dist/proxy.js +0 -27
  30. package/dist/redact.d.ts +0 -1
  31. package/dist/redact.js +0 -37
  32. package/dist/tools.d.ts +0 -4
  33. package/dist/tools.js +0 -182
  34. package/dist/twitter-scrape.d.ts +0 -1
  35. package/dist/twitter-scrape.js +0 -48
  36. package/dist/wrapped/aggregate.d.ts +0 -6
  37. package/dist/wrapped/aggregate.js +0 -811
  38. package/dist/wrapped/chrono-critters.d.ts +0 -8
  39. package/dist/wrapped/chrono-critters.js +0 -32
  40. package/dist/wrapped/index.d.ts +0 -3
  41. package/dist/wrapped/index.js +0 -2
  42. package/dist/wrapped/mascots.d.ts +0 -2
  43. package/dist/wrapped/mascots.js +0 -35
  44. package/dist/wrapped/preview.d.ts +0 -1
  45. package/dist/wrapped/preview.js +0 -97
  46. package/dist/wrapped/render.d.ts +0 -14
  47. package/dist/wrapped/render.js +0 -1025
  48. package/dist/wrapped/tiers.d.ts +0 -9
  49. package/dist/wrapped/tiers.js +0 -73
  50. package/dist/wrapped/types.d.ts +0 -189
  51. package/dist/wrapped/types.js +0 -4
  52. package/dist/wrapped-client.d.ts +0 -16
  53. package/dist/wrapped-client.js +0 -166
  54. package/dist/wrapped-share.d.ts +0 -1
  55. package/dist/wrapped-share.js +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "standout",
3
- "version": "0.5.34",
3
+ "version": "0.5.35",
4
4
  "description": "Build your developer profile with AI. One command, zero friction.",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -17,8 +17,8 @@
17
17
  "access": "public"
18
18
  },
19
19
  "scripts": {
20
- "build": "tsc",
21
- "dev": "tsc && node dist/cli.js",
20
+ "build": "node build.mjs",
21
+ "dev": "node build.mjs && node dist/cli.js",
22
22
  "test": "tsx --test tests/*.test.ts",
23
23
  "preview:tiers": "tsx src/wrapped/preview.ts",
24
24
  "typecheck": "tsc --noEmit",
@@ -27,17 +27,23 @@
27
27
  "dependencies": {
28
28
  "@anthropic-ai/sdk": "^0.70.0",
29
29
  "@modelcontextprotocol/sdk": "^1.0.0",
30
+ "@resvg/resvg-js": "^2.6.2",
30
31
  "boxen": "^8.0.1",
31
32
  "chalk": "^5.6.2",
33
+ "figlet": "^1.11.0",
32
34
  "gradient-string": "^3.0.0",
33
35
  "open": "^11.0.0",
34
36
  "playwright-core": "^1.59.1",
37
+ "react": "^19.2.7",
38
+ "satori": "^0.26.0",
35
39
  "undici": "^6.26.0",
36
40
  "zod": "^3.24.0"
37
41
  },
38
42
  "devDependencies": {
39
43
  "@types/better-sqlite3": "^7.6.13",
44
+ "@types/figlet": "^1.7.0",
40
45
  "@types/node": "^25.6.0",
46
+ "esbuild": "^0.28.1",
41
47
  "tsx": "^4.19.0",
42
48
  "typescript": "^5.6.0"
43
49
  },
@@ -1,164 +0,0 @@
1
- import { type CursorStats } from "./cursor.js";
2
- export interface UsageMonthlyBucket {
3
- month: string;
4
- sessions: number;
5
- duration_hours: number;
6
- input_tokens: number;
7
- output_tokens: number;
8
- cache_read_tokens: number;
9
- cache_write_tokens: number;
10
- cache_tokens: number;
11
- primary_model: string | null;
12
- }
13
- export interface UsageSummary {
14
- total_sessions: number;
15
- active_days: number;
16
- first_session: string | null;
17
- last_session: string | null;
18
- total_duration_hours: number;
19
- total_input_tokens: number;
20
- total_output_tokens: number;
21
- total_cache_read_tokens: number;
22
- total_cache_write_tokens: number;
23
- monthly_buckets: UsageMonthlyBucket[];
24
- hour_buckets: number[];
25
- peak_hour: number | null;
26
- longest_streak_days: number;
27
- }
28
- export interface PromptFrequency {
29
- text: string;
30
- count: number;
31
- }
32
- export interface ConversationExchange {
33
- user: string;
34
- assistant: string;
35
- }
36
- export interface InteractionSignals {
37
- user_turns: number;
38
- correction_turns: number;
39
- tool_calls: number;
40
- }
41
- export interface ConcurrencyStats {
42
- open_tab_avg: number;
43
- open_tab_peak: number;
44
- longest_session_hours: number;
45
- active_juggle_pct: number;
46
- }
47
- export interface ConversationStats {
48
- total_prompts: number;
49
- question_ratio: number;
50
- avg_prompt_chars: number;
51
- }
52
- export interface ToolUsageStats {
53
- total_sessions: number;
54
- active_days: number;
55
- first_session: string | null;
56
- last_session: string | null;
57
- total_duration_hours: number;
58
- tool_call_counts: Record<string, number>;
59
- projects: {
60
- cwd: string;
61
- session_count: number;
62
- }[];
63
- models: string[];
64
- versions: string[];
65
- peak_hour: number | null;
66
- hour_buckets: number[];
67
- weekend_ratio: number;
68
- longest_streak_days: number;
69
- current_streak_days: number;
70
- conductor_workspaces: number;
71
- conductor_session_count: number;
72
- parallel_workspaces: number;
73
- languages: Record<string, number>;
74
- frameworks: string[];
75
- framework_counts: Record<string, number>;
76
- prompt_samples: string[];
77
- conversation_samples: string[];
78
- conversation: ConversationStats;
79
- concurrency: ConcurrencyStats;
80
- total_input_tokens: number;
81
- total_output_tokens: number;
82
- total_cache_read_tokens: number;
83
- total_cache_write_tokens: number;
84
- model_session_counts: Record<string, number>;
85
- monthly_buckets: UsageMonthlyBucket[];
86
- prompt_frequency: PromptFrequency[];
87
- exchanges: ConversationExchange[];
88
- interaction: InteractionSignals;
89
- all_time?: UsageSummary;
90
- previous_30d?: UsageSummary;
91
- }
92
- export interface AiUsage {
93
- claude_code: ToolUsageStats | null;
94
- codex: ToolUsageStats | null;
95
- cursor: CursorStats | null;
96
- }
97
- export declare function isLowSignalAsk(sample: string): boolean;
98
- export type RawStats = {
99
- sessions: Map<string, {
100
- firstTs: number;
101
- lastTs: number;
102
- eventTimestamps: Set<number>;
103
- cwd: string | null;
104
- models: Set<string>;
105
- modelTurnCounts: Map<string, number>;
106
- inputTokens: number;
107
- outputTokens: number;
108
- cacheReadTokens: number;
109
- cacheWriteTokens: number;
110
- version: string | null;
111
- }>;
112
- toolCounts: Map<string, number>;
113
- filePaths: Set<string>;
114
- hourCounts: number[];
115
- weekendEvents: number;
116
- totalEvents: number;
117
- userMessageEvents: number;
118
- userMessageWeekendEvents: number;
119
- promptSamples: string[];
120
- promptSamplesSeen: Set<string>;
121
- activeDays: Set<string>;
122
- promptCounts: Map<string, PromptFrequency>;
123
- exchanges: ConversationExchange[];
124
- userTurns: number;
125
- correctionTurns: number;
126
- convoSamples: {
127
- text: string;
128
- ts: number;
129
- session: string;
130
- }[];
131
- convoTurns: number;
132
- questionTurns: number;
133
- promptCharsTotal: number;
134
- seenMessageIds: Set<string>;
135
- };
136
- interface ParseOptions {
137
- windowStartMs?: number;
138
- windowEndMs?: number;
139
- }
140
- export declare function emptyRaw(): RawStats;
141
- export declare function dedupeByRealpath(files: {
142
- path: string;
143
- mtime: number;
144
- }[]): string[];
145
- export declare function parseClaudeCodeFile(filePath: string, raw: RawStats, opts?: ParseOptions): Promise<void>;
146
- type TargetInput = {
147
- raw: RawStats;
148
- opts?: ParseOptions;
149
- collectConversation?: boolean;
150
- };
151
- export declare function parseClaudeCodeFileTargets(filePath: string, targetInputs: TargetInput[]): Promise<void>;
152
- export declare function parseCodexFile(filePath: string, raw: RawStats, opts?: ParseOptions): Promise<void>;
153
- /**
154
- * Compute longest historical streak + current streak from a set of YYYY-MM-DD
155
- * day strings. Current streak counts consecutive days ending today or yesterday;
156
- * older trailing streaks count as 0 (broken).
157
- */
158
- export declare function computeStreaks(activeDays: Set<string>): {
159
- longest: number;
160
- current: number;
161
- };
162
- export declare function finalize(raw: RawStats): ToolUsageStats | null;
163
- export declare function gatherAiUsage(): Promise<AiUsage>;
164
- export {};