claudecto 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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +275 -0
  3. package/dist/__tests__/package.test.d.ts +2 -0
  4. package/dist/__tests__/package.test.d.ts.map +1 -0
  5. package/dist/__tests__/package.test.js +53 -0
  6. package/dist/__tests__/package.test.js.map +1 -0
  7. package/dist/cli.d.ts +6 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +200 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/index.d.ts +12 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +12 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/server/index.d.ts +11 -0
  16. package/dist/server/index.d.ts.map +1 -0
  17. package/dist/server/index.js +1207 -0
  18. package/dist/server/index.js.map +1 -0
  19. package/dist/services/advisor.d.ts +117 -0
  20. package/dist/services/advisor.d.ts.map +1 -0
  21. package/dist/services/advisor.js +2636 -0
  22. package/dist/services/advisor.js.map +1 -0
  23. package/dist/services/agent-generator.d.ts +71 -0
  24. package/dist/services/agent-generator.d.ts.map +1 -0
  25. package/dist/services/agent-generator.js +295 -0
  26. package/dist/services/agent-generator.js.map +1 -0
  27. package/dist/services/agents.d.ts +67 -0
  28. package/dist/services/agents.d.ts.map +1 -0
  29. package/dist/services/agents.js +405 -0
  30. package/dist/services/agents.js.map +1 -0
  31. package/dist/services/analytics.d.ts +145 -0
  32. package/dist/services/analytics.d.ts.map +1 -0
  33. package/dist/services/analytics.js +609 -0
  34. package/dist/services/analytics.js.map +1 -0
  35. package/dist/services/blueprints.d.ts +31 -0
  36. package/dist/services/blueprints.d.ts.map +1 -0
  37. package/dist/services/blueprints.js +317 -0
  38. package/dist/services/blueprints.js.map +1 -0
  39. package/dist/services/claude-dir.d.ts +50 -0
  40. package/dist/services/claude-dir.d.ts.map +1 -0
  41. package/dist/services/claude-dir.js +193 -0
  42. package/dist/services/claude-dir.js.map +1 -0
  43. package/dist/services/hooks.d.ts +38 -0
  44. package/dist/services/hooks.d.ts.map +1 -0
  45. package/dist/services/hooks.js +165 -0
  46. package/dist/services/hooks.js.map +1 -0
  47. package/dist/services/insights.d.ts +52 -0
  48. package/dist/services/insights.d.ts.map +1 -0
  49. package/dist/services/insights.js +1035 -0
  50. package/dist/services/insights.js.map +1 -0
  51. package/dist/services/memory.d.ts +14 -0
  52. package/dist/services/memory.d.ts.map +1 -0
  53. package/dist/services/memory.js +25 -0
  54. package/dist/services/memory.js.map +1 -0
  55. package/dist/services/plans.d.ts +20 -0
  56. package/dist/services/plans.d.ts.map +1 -0
  57. package/dist/services/plans.js +149 -0
  58. package/dist/services/plans.js.map +1 -0
  59. package/dist/services/project-intelligence.d.ts +75 -0
  60. package/dist/services/project-intelligence.d.ts.map +1 -0
  61. package/dist/services/project-intelligence.js +731 -0
  62. package/dist/services/project-intelligence.js.map +1 -0
  63. package/dist/services/search.d.ts +32 -0
  64. package/dist/services/search.d.ts.map +1 -0
  65. package/dist/services/search.js +203 -0
  66. package/dist/services/search.js.map +1 -0
  67. package/dist/services/sessions.d.ts +25 -0
  68. package/dist/services/sessions.d.ts.map +1 -0
  69. package/dist/services/sessions.js +248 -0
  70. package/dist/services/sessions.js.map +1 -0
  71. package/dist/services/skills.d.ts +30 -0
  72. package/dist/services/skills.d.ts.map +1 -0
  73. package/dist/services/skills.js +197 -0
  74. package/dist/services/skills.js.map +1 -0
  75. package/dist/services/stats.d.ts +23 -0
  76. package/dist/services/stats.d.ts.map +1 -0
  77. package/dist/services/stats.js +88 -0
  78. package/dist/services/stats.js.map +1 -0
  79. package/dist/services/teams.d.ts +115 -0
  80. package/dist/services/teams.d.ts.map +1 -0
  81. package/dist/services/teams.js +421 -0
  82. package/dist/services/teams.js.map +1 -0
  83. package/dist/services/tech-stack.d.ts +98 -0
  84. package/dist/services/tech-stack.d.ts.map +1 -0
  85. package/dist/services/tech-stack.js +1088 -0
  86. package/dist/services/tech-stack.js.map +1 -0
  87. package/dist/services/terminal.d.ts +75 -0
  88. package/dist/services/terminal.d.ts.map +1 -0
  89. package/dist/services/terminal.js +224 -0
  90. package/dist/services/terminal.js.map +1 -0
  91. package/dist/types.d.ts +1095 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +18 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/ui/assets/index-BiH4Nhdk.css +1 -0
  96. package/dist/ui/assets/index-Brv-K8bd.css +1 -0
  97. package/dist/ui/assets/index-BwMBEdQz.js +3108 -0
  98. package/dist/ui/assets/index-BwMBEdQz.js.map +1 -0
  99. package/dist/ui/assets/index-CEWz7ABD.js +3108 -0
  100. package/dist/ui/assets/index-CEWz7ABD.js.map +1 -0
  101. package/dist/ui/assets/index-CIZ3vvc-.css +1 -0
  102. package/dist/ui/assets/index-CsU3cI0n.js +3108 -0
  103. package/dist/ui/assets/index-CsU3cI0n.js.map +1 -0
  104. package/dist/ui/assets/index-D3AY6iCS.js +3133 -0
  105. package/dist/ui/assets/index-D3AY6iCS.js.map +1 -0
  106. package/dist/ui/assets/index-D8lNZ0Ye.css +1 -0
  107. package/dist/ui/assets/index-DmgeppSA.js +3108 -0
  108. package/dist/ui/assets/index-DmgeppSA.js.map +1 -0
  109. package/dist/ui/favicon.svg +43 -0
  110. package/dist/ui/index.html +23 -0
  111. package/dist/utils/jsonl.d.ts +16 -0
  112. package/dist/utils/jsonl.d.ts.map +1 -0
  113. package/dist/utils/jsonl.js +51 -0
  114. package/dist/utils/jsonl.js.map +1 -0
  115. package/package.json +106 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Hooks service - manages Claude Code hooks from settings.json
3
+ */
4
+ import fs from 'node:fs/promises';
5
+ import path from 'node:path';
6
+ import { spawn } from 'node:child_process';
7
+ export class HooksService {
8
+ claudeDir;
9
+ constructor(claudeDir) {
10
+ this.claudeDir = claudeDir;
11
+ }
12
+ async readSettings() {
13
+ const settingsPath = path.join(this.claudeDir.root, 'settings.json');
14
+ try {
15
+ const content = await fs.readFile(settingsPath, 'utf-8');
16
+ return JSON.parse(content);
17
+ }
18
+ catch {
19
+ return {};
20
+ }
21
+ }
22
+ async writeSettings(settings) {
23
+ const settingsPath = path.join(this.claudeDir.root, 'settings.json');
24
+ await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2));
25
+ }
26
+ async listHooks() {
27
+ const settings = await this.readSettings();
28
+ const hooks = [];
29
+ if (settings.hooks) {
30
+ for (const [event, eventHooks] of Object.entries(settings.hooks)) {
31
+ if (!Array.isArray(eventHooks))
32
+ continue;
33
+ for (let i = 0; i < eventHooks.length; i++) {
34
+ const h = eventHooks[i];
35
+ hooks.push({
36
+ id: `${event}-${i}`,
37
+ event,
38
+ matcher: h.matcher,
39
+ command: h.command,
40
+ enabled: true,
41
+ timeout: h.timeout,
42
+ });
43
+ }
44
+ }
45
+ }
46
+ return hooks;
47
+ }
48
+ async getHook(id) {
49
+ const hooks = await this.listHooks();
50
+ return hooks.find(h => h.id === id) ?? null;
51
+ }
52
+ async createHook(hook) {
53
+ try {
54
+ const settings = await this.readSettings();
55
+ if (!settings.hooks) {
56
+ settings.hooks = {};
57
+ }
58
+ if (!settings.hooks[hook.event]) {
59
+ settings.hooks[hook.event] = [];
60
+ }
61
+ const eventHooks = settings.hooks[hook.event];
62
+ const newHook = {
63
+ command: hook.command,
64
+ };
65
+ if (hook.matcher)
66
+ newHook.matcher = hook.matcher;
67
+ if (hook.timeout)
68
+ newHook.timeout = hook.timeout;
69
+ eventHooks.push(newHook);
70
+ await this.writeSettings(settings);
71
+ const id = `${hook.event}-${eventHooks.length - 1}`;
72
+ return { success: true, id };
73
+ }
74
+ catch (err) {
75
+ return { success: false, error: String(err) };
76
+ }
77
+ }
78
+ async updateHook(id, updates) {
79
+ try {
80
+ const [event, indexStr] = id.split('-');
81
+ if (!event || indexStr === undefined) {
82
+ return { success: false, error: 'Invalid hook ID' };
83
+ }
84
+ const index = parseInt(indexStr, 10);
85
+ const settings = await this.readSettings();
86
+ if (!settings.hooks?.[event]?.[index]) {
87
+ return { success: false, error: 'Hook not found' };
88
+ }
89
+ const hook = settings.hooks[event][index];
90
+ if (updates.command !== undefined)
91
+ hook.command = updates.command;
92
+ if (updates.matcher !== undefined)
93
+ hook.matcher = updates.matcher;
94
+ if (updates.timeout !== undefined)
95
+ hook.timeout = updates.timeout;
96
+ await this.writeSettings(settings);
97
+ return { success: true };
98
+ }
99
+ catch (err) {
100
+ return { success: false, error: String(err) };
101
+ }
102
+ }
103
+ async deleteHook(id) {
104
+ try {
105
+ const [event, indexStr] = id.split('-');
106
+ if (!event || indexStr === undefined) {
107
+ return { success: false, error: 'Invalid hook ID' };
108
+ }
109
+ const index = parseInt(indexStr, 10);
110
+ const settings = await this.readSettings();
111
+ if (!settings.hooks?.[event]) {
112
+ return { success: false, error: 'Hook not found' };
113
+ }
114
+ settings.hooks[event].splice(index, 1);
115
+ if (settings.hooks[event].length === 0) {
116
+ delete settings.hooks[event];
117
+ }
118
+ await this.writeSettings(settings);
119
+ return { success: true };
120
+ }
121
+ catch (err) {
122
+ return { success: false, error: String(err) };
123
+ }
124
+ }
125
+ async testHook(id) {
126
+ const hook = await this.getHook(id);
127
+ if (!hook) {
128
+ return { success: false, output: 'Hook not found' };
129
+ }
130
+ return new Promise((resolve) => {
131
+ const timeout = hook.timeout ?? 5000;
132
+ const proc = spawn('sh', ['-c', hook.command], {
133
+ cwd: process.cwd(),
134
+ env: {
135
+ ...process.env,
136
+ CLAUDE_HOOK_EVENT: hook.event,
137
+ CLAUDE_HOOK_MATCHER: hook.matcher ?? '',
138
+ },
139
+ timeout,
140
+ });
141
+ let stdout = '';
142
+ let stderr = '';
143
+ proc.stdout.on('data', (data) => {
144
+ stdout += data.toString();
145
+ });
146
+ proc.stderr.on('data', (data) => {
147
+ stderr += data.toString();
148
+ });
149
+ proc.on('close', (code) => {
150
+ const output = stdout + (stderr ? `\n[stderr]\n${stderr}` : '');
151
+ resolve({
152
+ success: code === 0,
153
+ output: output || `Exit code: ${code}`,
154
+ });
155
+ });
156
+ proc.on('error', (err) => {
157
+ resolve({
158
+ success: false,
159
+ output: `Error: ${err.message}`,
160
+ });
161
+ });
162
+ });
163
+ }
164
+ }
165
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/services/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Insights service - AI-powered session analysis using Claude Code
3
+ * Provides rich interactive insights including sentiment analysis,
4
+ * topic segmentation, quality scoring, and comprehensive metadata.
5
+ */
6
+ import { EventEmitter } from 'node:events';
7
+ import type { ClaudeDir } from './claude-dir.js';
8
+ import type { SessionService } from './sessions.js';
9
+ import type { AnalyticsService } from './analytics.js';
10
+ import type { SessionInsight, ProjectAIInsight, InsightProgress } from '../types.js';
11
+ export declare class InsightsService extends EventEmitter {
12
+ private claudeDir;
13
+ private sessionService;
14
+ private analyticsService;
15
+ private generatingInsights;
16
+ private progressMap;
17
+ constructor(claudeDir: ClaudeDir, sessionService: SessionService, analyticsService: AnalyticsService);
18
+ private emitProgress;
19
+ getProgress(sessionId: string): InsightProgress | null;
20
+ private createAIError;
21
+ private mapErrorToAIError;
22
+ private getInsightPath;
23
+ getInsight(sessionId: string): Promise<SessionInsight | null>;
24
+ saveInsight(insight: SessionInsight): Promise<void>;
25
+ listInsights(projectFilter?: string): Promise<SessionInsight[]>;
26
+ generateInsight(sessionId: string, force?: boolean): Promise<SessionInsight>;
27
+ private doGenerateInsight;
28
+ private buildComprehensiveContext;
29
+ private callClaudeCode;
30
+ private parseRichResponse;
31
+ private ensureArray;
32
+ private parseSentiment;
33
+ private parseTopics;
34
+ private parseQuality;
35
+ private parseMetadata;
36
+ private parseActionableSummary;
37
+ private generateFallbackInsight;
38
+ private getProjectInsightPath;
39
+ private getGlobalInsightPath;
40
+ getProjectAIInsight(projectPath: string): Promise<ProjectAIInsight | null>;
41
+ getGlobalAIInsight(): Promise<ProjectAIInsight | null>;
42
+ generateProjectAIInsight(projectPath: string, force?: boolean): Promise<ProjectAIInsight>;
43
+ generateGlobalAIInsight(force?: boolean): Promise<ProjectAIInsight>;
44
+ private doGenerateProjectInsight;
45
+ private doGenerateGlobalInsight;
46
+ private buildProjectContext;
47
+ private buildGlobalContext;
48
+ private callClaudeForProjectInsight;
49
+ private parseProjectInsightResponse;
50
+ isClaudeCodeAvailable(): Promise<boolean>;
51
+ }
52
+ //# sourceMappingURL=insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/services/insights.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EAQd,gBAAgB,EAWhB,eAAe,EAEhB,MAAM,aAAa,CAAC;AAmCrB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,WAAW,CAAsC;gBAGvD,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB;IAYpC,OAAO,CAAC,YAAY;IAmBpB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAItD,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,iBAAiB;IA6DzB,OAAO,CAAC,cAAc;IAQhB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK7D,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC/D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;YAgClE,iBAAiB;IAqI/B,OAAO,CAAC,yBAAyB;YAmEnB,cAAc;IAgJ5B,OAAO,CAAC,iBAAiB;IAmDzB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IA0DrB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;IAItB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAK1E,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKtD,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCvF,uBAAuB,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAkCzD,wBAAwB;YAwDxB,uBAAuB;IA4ErC,OAAO,CAAC,mBAAmB;IA2E3B,OAAO,CAAC,kBAAkB;YAwDZ,2BAA2B;IAmEzC,OAAO,CAAC,2BAA2B;IAmD7B,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;CAShD"}