codebuff 1.0.256 → 1.0.257

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 (127) hide show
  1. package/dist/background-process-manager.d.ts +50 -0
  2. package/dist/background-process-manager.js +359 -0
  3. package/dist/background-process-manager.js.map +1 -0
  4. package/dist/browser-runner.d.ts +35 -0
  5. package/dist/browser-runner.js +680 -0
  6. package/dist/browser-runner.js.map +1 -0
  7. package/dist/chat-storage.d.ts +2 -0
  8. package/dist/chat-storage.js +93 -0
  9. package/dist/chat-storage.js.map +1 -0
  10. package/dist/checkpoints/checkpoint-manager.d.ts +94 -0
  11. package/dist/checkpoints/checkpoint-manager.js +280 -0
  12. package/dist/checkpoints/checkpoint-manager.js.map +1 -0
  13. package/dist/checkpoints/file-manager.d.ts +72 -0
  14. package/dist/checkpoints/file-manager.js +311 -0
  15. package/dist/checkpoints/file-manager.js.map +1 -0
  16. package/dist/cli-handlers/api-key.d.ts +25 -0
  17. package/dist/cli-handlers/api-key.js +66 -0
  18. package/dist/cli-handlers/api-key.js.map +1 -0
  19. package/dist/cli-handlers/checkpoint.d.ts +18 -0
  20. package/dist/cli-handlers/checkpoint.js +195 -0
  21. package/dist/cli-handlers/checkpoint.js.map +1 -0
  22. package/dist/cli-handlers/diff.d.ts +2 -0
  23. package/dist/cli-handlers/diff.js +31 -0
  24. package/dist/cli-handlers/diff.js.map +1 -0
  25. package/dist/cli-handlers/easter-egg.d.ts +1 -0
  26. package/dist/cli-handlers/easter-egg.js +126 -0
  27. package/dist/cli-handlers/easter-egg.js.map +1 -0
  28. package/dist/cli-handlers/inititalization-flow.d.ts +1 -0
  29. package/dist/cli-handlers/inititalization-flow.js +24 -0
  30. package/dist/cli-handlers/inititalization-flow.js.map +1 -0
  31. package/dist/cli.d.ts +44 -0
  32. package/dist/cli.js +478 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/client.d.ts +157 -0
  35. package/dist/client.js +836 -0
  36. package/dist/client.js.map +1 -0
  37. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  38. package/dist/common/bigquery/client.js +6 -4
  39. package/dist/common/bigquery/client.js.map +1 -1
  40. package/dist/common/browser-actions.d.ts +6 -6
  41. package/dist/common/constants/analytics-events.d.ts +1 -7
  42. package/dist/common/constants/analytics-events.js +0 -7
  43. package/dist/common/constants/analytics-events.js.map +1 -1
  44. package/dist/common/env.mjs +0 -2
  45. package/dist/common/env.mjs.map +1 -1
  46. package/dist/config.d.ts +4 -0
  47. package/dist/config.js +12 -0
  48. package/dist/config.js.map +1 -0
  49. package/dist/create-template-project.d.ts +1 -0
  50. package/dist/create-template-project.js +107 -0
  51. package/dist/create-template-project.js.map +1 -0
  52. package/dist/credentials.d.ts +4 -0
  53. package/dist/credentials.js +38 -0
  54. package/dist/credentials.js.map +1 -0
  55. package/dist/dev-process-manager.d.ts +10 -0
  56. package/dist/dev-process-manager.js +54 -0
  57. package/dist/dev-process-manager.js.map +1 -0
  58. package/dist/fingerprint.d.ts +1 -0
  59. package/dist/fingerprint.js +48 -0
  60. package/dist/fingerprint.js.map +1 -0
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.js +117 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/menu.d.ts +3 -0
  65. package/dist/menu.js +126 -0
  66. package/dist/menu.js.map +1 -0
  67. package/dist/project-files.d.ts +114 -0
  68. package/dist/project-files.js +513 -0
  69. package/dist/project-files.js.map +1 -0
  70. package/dist/startup-process-handler.d.ts +2 -0
  71. package/dist/startup-process-handler.js +21 -0
  72. package/dist/startup-process-handler.js.map +1 -0
  73. package/dist/tool-handlers.d.ts +28 -0
  74. package/dist/tool-handlers.js +240 -0
  75. package/dist/tool-handlers.js.map +1 -0
  76. package/dist/types.d.ts +15 -0
  77. package/dist/types.js +3 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/update-codebuff.d.ts +1 -0
  80. package/dist/update-codebuff.js +160 -0
  81. package/dist/update-codebuff.js.map +1 -0
  82. package/dist/utils/__tests__/background-process-manager.test.d.ts +1 -0
  83. package/dist/utils/__tests__/background-process-manager.test.js +289 -0
  84. package/dist/utils/__tests__/background-process-manager.test.js.map +1 -0
  85. package/dist/utils/__tests__/tool-renderers.test.d.ts +1 -0
  86. package/dist/utils/__tests__/tool-renderers.test.js +51 -0
  87. package/dist/utils/__tests__/tool-renderers.test.js.map +1 -0
  88. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +1 -0
  89. package/dist/utils/__tests__/xml-stream-parser.test.js +229 -0
  90. package/dist/utils/__tests__/xml-stream-parser.test.js.map +1 -0
  91. package/dist/utils/analytics.d.ts +6 -0
  92. package/dist/utils/analytics.js +59 -0
  93. package/dist/utils/analytics.js.map +1 -0
  94. package/dist/utils/detect-shell.d.ts +1 -0
  95. package/dist/utils/detect-shell.js +60 -0
  96. package/dist/utils/detect-shell.js.map +1 -0
  97. package/dist/utils/logger.d.ts +21 -0
  98. package/dist/utils/logger.js +105 -0
  99. package/dist/utils/logger.js.map +1 -0
  100. package/dist/utils/spinner.d.ts +11 -0
  101. package/dist/utils/spinner.js +87 -0
  102. package/dist/utils/spinner.js.map +1 -0
  103. package/dist/utils/system-info.d.ts +8 -0
  104. package/dist/utils/system-info.js +22 -0
  105. package/dist/utils/system-info.js.map +1 -0
  106. package/dist/utils/terminal.d.ts +41 -0
  107. package/dist/utils/terminal.js +467 -0
  108. package/dist/utils/terminal.js.map +1 -0
  109. package/dist/utils/tool-renderers.d.ts +16 -0
  110. package/dist/utils/tool-renderers.js +148 -0
  111. package/dist/utils/tool-renderers.js.map +1 -0
  112. package/dist/utils/xml-stream-parser.d.ts +9 -0
  113. package/dist/utils/xml-stream-parser.js +128 -0
  114. package/dist/utils/xml-stream-parser.js.map +1 -0
  115. package/dist/web-scraper.d.ts +3 -0
  116. package/dist/web-scraper.js +57 -0
  117. package/dist/web-scraper.js.map +1 -0
  118. package/dist/workers/checkpoint-worker.d.ts +1 -0
  119. package/dist/workers/checkpoint-worker.js +48 -0
  120. package/dist/workers/checkpoint-worker.js.map +1 -0
  121. package/dist/workers/project-context.d.ts +1 -0
  122. package/dist/workers/project-context.js +17 -0
  123. package/dist/workers/project-context.js.map +1 -0
  124. package/package.json +1 -1
  125. package/dist/common/analytics.d.ts +0 -4
  126. package/dist/common/analytics.js +0 -40
  127. package/dist/common/analytics.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identified = void 0;
4
+ exports.initAnalytics = initAnalytics;
5
+ exports.flushAnalytics = flushAnalytics;
6
+ exports.trackEvent = trackEvent;
7
+ exports.identifyUser = identifyUser;
8
+ const posthog_node_1 = require("posthog-node");
9
+ // Store the identified user ID
10
+ let currentUserId;
11
+ let client;
12
+ exports.identified = false;
13
+ function initAnalytics() {
14
+ if (!process.env.NEXT_PUBLIC_POSTHOG_API_KEY ||
15
+ !process.env.NEXT_PUBLIC_APP_URL) {
16
+ throw new Error('NEXT_PUBLIC_POSTHOG_API_KEY or NEXT_PUBLIC_APP_URL is not set');
17
+ }
18
+ client = new posthog_node_1.PostHog(process.env.NEXT_PUBLIC_POSTHOG_API_KEY, {
19
+ host: `${process.env.NEXT_PUBLIC_APP_URL}/ingest`,
20
+ });
21
+ }
22
+ async function flushAnalytics() {
23
+ if (!client) {
24
+ return;
25
+ }
26
+ await client.flush();
27
+ }
28
+ function trackEvent(event, properties) {
29
+ const distinctId = currentUserId;
30
+ if (!distinctId) {
31
+ return;
32
+ }
33
+ if (!client) {
34
+ throw new Error('Analytics client not initialized');
35
+ }
36
+ if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'production') {
37
+ return;
38
+ }
39
+ client.capture({
40
+ distinctId,
41
+ event,
42
+ properties,
43
+ });
44
+ }
45
+ function identifyUser(userId, properties) {
46
+ // Store the user ID for future events
47
+ currentUserId = userId;
48
+ if (!client) {
49
+ throw new Error('Analytics client not initialized');
50
+ }
51
+ if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'production') {
52
+ return;
53
+ }
54
+ client.identify({
55
+ distinctId: userId,
56
+ properties,
57
+ });
58
+ }
59
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":";;;AASA,sCAaC;AAED,wCAKC;AAED,gCAqBC;AAED,oCAgBC;AArED,+CAAsC;AAEtC,+BAA+B;AAC/B,IAAI,aAAiC,CAAA;AACrC,IAAI,MAA2B,CAAA;AAEpB,QAAA,UAAU,GAAY,KAAK,CAAA;AAEtC,SAAgB,aAAa;IAC3B,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B;QACxC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAA;IACH,CAAC;IAED,MAAM,GAAG,IAAI,sBAAO,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE;QAC5D,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS;KAClD,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAM;IACR,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;AACtB,CAAC;AAED,SAAgB,UAAU,CACxB,KAAqB,EACrB,UAAgC;IAEhC,MAAM,UAAU,GAAG,aAAa,CAAA;IAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,YAAY,EAAE,CAAC;QAC5D,OAAM;IACR,CAAC;IAED,MAAM,CAAC,OAAO,CAAC;QACb,UAAU;QACV,KAAK;QACL,UAAU;KACX,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc,EAAE,UAAgC;IAC3E,sCAAsC;IACtC,aAAa,GAAG,MAAM,CAAA;IAEtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,YAAY,EAAE,CAAC;QAC5D,OAAM;IACR,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC;QACd,UAAU,EAAE,MAAM;QAClB,UAAU;KACX,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function detectShell(): 'bash' | 'zsh' | 'fish' | 'cmd.exe' | 'powershell' | 'unknown' | string;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectShell = detectShell;
4
+ const os_1 = require("os");
5
+ const child_process_1 = require("child_process");
6
+ function detectShell() {
7
+ // Get the parent process environment
8
+ const shell = process.env.SHELL || process.env.COMSPEC || process.env.PSModulePath;
9
+ try {
10
+ // Handle Windows detection
11
+ if ((0, os_1.platform)() === 'win32') {
12
+ try {
13
+ // Check if running in PowerShell
14
+ (0, child_process_1.execSync)('$PSVersionTable', { stdio: 'pipe' });
15
+ return 'powershell';
16
+ }
17
+ catch {
18
+ // Check explicit CMD environment
19
+ if (process.env.COMSPEC?.toLowerCase().includes('cmd.exe')) {
20
+ return 'cmd.exe';
21
+ }
22
+ // Check parent process as final Windows check
23
+ const parentProcess = (0, child_process_1.execSync)('wmic process get ParentProcessId,CommandLine', { stdio: 'pipe' })
24
+ .toString()
25
+ .toLowerCase();
26
+ if (parentProcess.includes('powershell'))
27
+ return 'powershell';
28
+ if (parentProcess.includes('cmd.exe'))
29
+ return 'cmd.exe';
30
+ }
31
+ }
32
+ // Handle Unix-like systems
33
+ if (shell) {
34
+ const shellLower = shell.toLowerCase();
35
+ if (shellLower.includes('bash'))
36
+ return 'bash';
37
+ if (shellLower.includes('zsh'))
38
+ return 'zsh';
39
+ if (shellLower.includes('fish'))
40
+ return 'fish';
41
+ }
42
+ // Try to get the parent process name on Unix systems
43
+ if ((0, os_1.platform)() !== 'win32') {
44
+ const ppid = process.ppid;
45
+ const parentProcess = (0, child_process_1.execSync)(`ps -p ${ppid} -o comm=`, {
46
+ stdio: 'pipe',
47
+ })
48
+ .toString()
49
+ .trim();
50
+ if (parentProcess)
51
+ return parentProcess;
52
+ }
53
+ }
54
+ catch (error) {
55
+ // Log error if needed
56
+ // console.error('Error detecting shell:', error);
57
+ }
58
+ return 'unknown';
59
+ }
60
+ //# sourceMappingURL=detect-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-shell.js","sourceRoot":"","sources":["../../src/utils/detect-shell.ts"],"names":[],"mappings":";;AAGA,kCA6DC;AAhED,2BAA6B;AAC7B,iDAAwC;AAExC,SAAgB,WAAW;IAQzB,qCAAqC;IACrC,MAAM,KAAK,GACT,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;IAEtE,IAAI,CAAC;QACH,2BAA2B;QAC3B,IAAI,IAAA,aAAQ,GAAE,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,iCAAiC;gBACjC,IAAA,wBAAQ,EAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC9C,OAAO,YAAY,CAAA;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;gBACjC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3D,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,aAAa,GAAG,IAAA,wBAAQ,EAC5B,8CAA8C,EAC9C,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB;qBACE,QAAQ,EAAE;qBACV,WAAW,EAAE,CAAA;gBAChB,IAAI,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAAE,OAAO,YAAY,CAAA;gBAC7D,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAA;YACzD,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;YACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAA;YAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAA;QAChD,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAA,aAAQ,GAAE,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,MAAM,aAAa,GAAG,IAAA,wBAAQ,EAAC,SAAS,IAAI,WAAW,EAAE;gBACvD,KAAK,EAAE,MAAM;aACd,CAAC;iBACC,QAAQ,EAAE;iBACV,IAAI,EAAE,CAAA;YACT,IAAI,aAAa;gBAAE,OAAO,aAAa,CAAA;QACzC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sBAAsB;QACtB,kDAAkD;IACpD,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import pino from 'pino';
2
+ export interface LoggerContext {
3
+ userId?: string;
4
+ userEmail?: string;
5
+ clientSessionId?: string;
6
+ fingerprintId?: string;
7
+ clientRequestId?: string;
8
+ [key: string]: any;
9
+ }
10
+ export declare const loggerContext: LoggerContext;
11
+ declare const loggingLevels: readonly ["info", "debug", "warn", "error", "fatal"];
12
+ type LogLevel = (typeof loggingLevels)[number];
13
+ /**
14
+ * Wrapper around Pino logger.
15
+ *
16
+ * To also send to Posthog, set data.eventId to type AnalyticsEvent
17
+ *
18
+ * e.g. logger.info({eventId: AnalyticsEvent.SOME_EVENT, field: value}, 'some message')
19
+ */
20
+ export declare const logger: Record<LogLevel, pino.LogFn>;
21
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.logger = exports.loggerContext = void 0;
30
+ const fs_1 = require("fs");
31
+ const path_1 = __importStar(require("path"));
32
+ const util_1 = require("util");
33
+ const analytics_events_1 = require("../common/constants/analytics-events");
34
+ const pino_1 = __importDefault(require("pino"));
35
+ const project_files_1 = require("../project-files");
36
+ const analytics_1 = require("./analytics");
37
+ exports.loggerContext = {};
38
+ const analyticsBuffer = [];
39
+ let logPath = undefined;
40
+ let pinoLogger = undefined;
41
+ const loggingLevels = ['info', 'debug', 'warn', 'error', 'fatal'];
42
+ function setLogPath(p) {
43
+ if (logPath === p) {
44
+ return;
45
+ }
46
+ logPath = p;
47
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(p), { recursive: true });
48
+ pinoLogger = (0, pino_1.default)({
49
+ level: 'debug',
50
+ formatters: {
51
+ level: (label) => {
52
+ return { level: label.toUpperCase() };
53
+ },
54
+ },
55
+ timestamp: () => `,"timestamp":"${new Date(Date.now()).toISOString()}"`,
56
+ }, pino_1.default.transport({
57
+ target: 'pino/file',
58
+ options: { destination: p },
59
+ level: 'debug',
60
+ }));
61
+ }
62
+ function sendAnalyticsAndLog(level, data, msg, ...args) {
63
+ if (process.env.CODEBUFF_GITHUB_ACTIONS !== 'true') {
64
+ setLogPath(process.env.NEXT_PUBLIC_CB_ENVIRONMENT === 'local'
65
+ ? path_1.default.join(__dirname, '../../../debug', 'npm-app.log')
66
+ : path_1.default.join((0, project_files_1.getCurrentChatDir)(), 'log.jsonl'));
67
+ }
68
+ logOrStore: if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'local' &&
69
+ Object.values(analytics_events_1.AnalyticsEvent).includes(data.eventId)) {
70
+ const analyticsEventId = data.eventId;
71
+ const toTrack = {
72
+ data,
73
+ level,
74
+ loggerContext: exports.loggerContext,
75
+ msg: (0, util_1.format)(msg, ...args),
76
+ };
77
+ // Not accurate for anonymous users
78
+ if (!exports.loggerContext.userId) {
79
+ analyticsBuffer.push({ analyticsEventId, toTrack });
80
+ break logOrStore;
81
+ }
82
+ for (const item of analyticsBuffer) {
83
+ (0, analytics_1.trackEvent)(item.analyticsEventId, item.toTrack);
84
+ }
85
+ analyticsBuffer.length = 0;
86
+ (0, analytics_1.trackEvent)(analyticsEventId, toTrack);
87
+ }
88
+ if (pinoLogger !== undefined) {
89
+ pinoLogger[level]({ ...exports.loggerContext, data }, msg, ...args);
90
+ }
91
+ }
92
+ /**
93
+ * Wrapper around Pino logger.
94
+ *
95
+ * To also send to Posthog, set data.eventId to type AnalyticsEvent
96
+ *
97
+ * e.g. logger.info({eventId: AnalyticsEvent.SOME_EVENT, field: value}, 'some message')
98
+ */
99
+ exports.logger = Object.fromEntries(loggingLevels.map((level) => {
100
+ return [
101
+ level,
102
+ (data, msg, ...args) => sendAnalyticsAndLog(level, data, msg, ...args),
103
+ ];
104
+ }));
105
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Spinner {
2
+ private static instance;
3
+ private loadingInterval;
4
+ private constructor();
5
+ static get(): Spinner;
6
+ start(): void;
7
+ stop(): void;
8
+ restoreCursor(): void;
9
+ log(message: string): void;
10
+ private rewriteLine;
11
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Spinner = void 0;
27
+ const picocolors_1 = require("picocolors");
28
+ const readline = __importStar(require("readline"));
29
+ const chars = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
30
+ class Spinner {
31
+ static instance = null;
32
+ loadingInterval = null;
33
+ constructor() { }
34
+ static get() {
35
+ if (!Spinner.instance) {
36
+ Spinner.instance = new Spinner();
37
+ }
38
+ return Spinner.instance;
39
+ }
40
+ start() {
41
+ if (this.loadingInterval) {
42
+ return;
43
+ }
44
+ let i = 0;
45
+ // Hide cursor while spinner is active
46
+ process.stdout.write('\u001B[?25l');
47
+ this.loadingInterval = setInterval(() => {
48
+ this.rewriteLine((0, picocolors_1.green)(`${chars[i]} Thinking...`));
49
+ i = (i + 1) % chars.length;
50
+ }, 100);
51
+ }
52
+ stop() {
53
+ if (!this.loadingInterval) {
54
+ return;
55
+ }
56
+ clearInterval(this.loadingInterval);
57
+ this.loadingInterval = null;
58
+ this.rewriteLine(''); // Clear the spinner line
59
+ this.restoreCursor(); // Show cursor after spinner stops
60
+ }
61
+ restoreCursor() {
62
+ process.stdout.write('\u001B[?25h');
63
+ }
64
+ log(message) {
65
+ // Temporarily clear the spinner line
66
+ this.rewriteLine('');
67
+ // Write the log message
68
+ console.log(message);
69
+ // If spinner is active, redraw it on the next line
70
+ if (this.loadingInterval) {
71
+ const i = Math.floor(Math.random() * chars.length);
72
+ this.rewriteLine((0, picocolors_1.green)(`${chars[i]} Thinking...`));
73
+ }
74
+ }
75
+ rewriteLine(line) {
76
+ if (process.stdout.isTTY) {
77
+ readline.clearLine(process.stdout, 0);
78
+ readline.cursorTo(process.stdout, 0);
79
+ process.stdout.write(line);
80
+ }
81
+ else {
82
+ process.stdout.write(line + '\n');
83
+ }
84
+ }
85
+ }
86
+ exports.Spinner = Spinner;
87
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkC;AAClC,mDAAoC;AAEpC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEhE,MAAa,OAAO;IACV,MAAM,CAAC,QAAQ,GAAmB,IAAI,CAAA;IACtC,eAAe,GAA0B,IAAI,CAAA;IAErD,gBAAuB,CAAC;IAEjB,MAAM,CAAC,GAAG;QACf,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,sCAAsC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACnC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,IAAA,kBAAK,EAAC,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;YAClD,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5B,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,CAAC,yBAAyB;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAA,CAAC,kCAAkC;IACzD,CAAC;IAED,aAAa;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,qCAAqC;QACrC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACpB,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACpB,mDAAmD;QACnD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;YAClD,IAAI,CAAC,WAAW,CAAC,IAAA,kBAAK,EAAC,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACrC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;;AA9DH,0BA+DC"}
@@ -0,0 +1,8 @@
1
+ export declare const getSystemInfo: () => {
2
+ platform: NodeJS.Platform;
3
+ shell: string;
4
+ nodeVersion: string;
5
+ arch: NodeJS.Architecture;
6
+ homedir: string;
7
+ cpus: number;
8
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSystemInfo = void 0;
7
+ const process_1 = require("process");
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const getSystemInfo = () => {
11
+ const shell = process.env.SHELL || process.env.COMSPEC || 'unknown';
12
+ return {
13
+ platform: process_1.platform,
14
+ shell: path_1.default.basename(shell),
15
+ nodeVersion: process.version,
16
+ arch: process.arch,
17
+ homedir: os_1.default.homedir(),
18
+ cpus: os_1.default.cpus().length,
19
+ };
20
+ };
21
+ exports.getSystemInfo = getSystemInfo;
22
+ //# sourceMappingURL=system-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-info.js","sourceRoot":"","sources":["../../src/utils/system-info.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAkC;AAClC,gDAAuB;AACvB,4CAAmB;AAEZ,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IAEnE,OAAO;QACL,QAAQ,EAAR,kBAAQ;QACR,KAAK,EAAE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,YAAE,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,YAAE,CAAC,IAAI,EAAE,CAAC,MAAM;KACvB,CAAA;AACH,CAAC,CAAA;AAXY,QAAA,aAAa,iBAWzB"}
@@ -0,0 +1,41 @@
1
+ import { ChildProcessWithoutNullStreams } from 'child_process';
2
+ import type { IPty } from '@homebridge/node-pty-prebuilt-multiarch';
3
+ type PersistentProcess = {
4
+ type: 'pty';
5
+ shell: 'pty';
6
+ pty: IPty;
7
+ timerId: NodeJS.Timeout | null;
8
+ } | {
9
+ type: 'process';
10
+ shell: 'bash' | 'cmd.exe' | 'powershell.exe';
11
+ childProcess: ChildProcessWithoutNullStreams | null;
12
+ timerId: NodeJS.Timeout | null;
13
+ };
14
+ declare const createPersistantProcess: (dir: string) => PersistentProcess;
15
+ export declare let persistentProcess: ReturnType<typeof createPersistantProcess> | null;
16
+ export declare const isCommandRunning: () => boolean;
17
+ export declare const recreateShell: (projectPath: string) => void;
18
+ export declare const resetShell: (projectPath: string) => void;
19
+ export declare function runBackgroundCommand(options: {
20
+ toolCallId: string;
21
+ command: string;
22
+ mode: 'user' | 'assistant';
23
+ projectPath: string;
24
+ stdoutFile?: string;
25
+ stderrFile?: string;
26
+ }, resolveCommand: (value: {
27
+ result: string;
28
+ stdout: string;
29
+ }) => void): void;
30
+ export declare const runTerminalCommand: (toolCallId: string, command: string, mode: "user" | "assistant", projectPath: string, processType: "SYNC" | "BACKGROUND", stdoutFile?: string, stderrFile?: string) => Promise<{
31
+ result: string;
32
+ stdout: string;
33
+ }>;
34
+ export declare const runCommandPty: (persistentProcess: PersistentProcess & {
35
+ type: "pty";
36
+ }, command: string, mode: "user" | "assistant", resolve: (value: {
37
+ result: string;
38
+ stdout: string;
39
+ }) => void, projectPath: string) => void;
40
+ export declare function killAndResetPersistentProcess(): void;
41
+ export {};