codebuff 1.0.294 → 1.0.296

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 (133) hide show
  1. package/dist/background-process-manager.d.ts +50 -0
  2. package/dist/background-process-manager.js +3 -3
  3. package/dist/browser-runner.d.ts +35 -0
  4. package/dist/browser-runner.js +4 -4
  5. package/dist/chat-storage.d.ts +2 -0
  6. package/dist/chat-storage.js +2 -2
  7. package/dist/chat-storage.js.map +1 -1
  8. package/dist/checkpoints/checkpoint-manager.d.ts +94 -0
  9. package/dist/checkpoints/checkpoint-manager.js +1 -1
  10. package/dist/checkpoints/file-manager.d.ts +72 -0
  11. package/dist/checkpoints/file-manager.js +294 -0
  12. package/dist/checkpoints/file-manager.js.map +1 -0
  13. package/dist/cli-definitions.d.ts +9 -0
  14. package/dist/cli-definitions.js +54 -0
  15. package/dist/cli-definitions.js.map +1 -0
  16. package/dist/cli-handlers/api-key.d.ts +25 -0
  17. package/dist/cli-handlers/api-key.js +1 -1
  18. package/dist/cli-handlers/checkpoint.d.ts +18 -0
  19. package/dist/cli-handlers/diff.d.ts +2 -0
  20. package/dist/cli-handlers/diff.js +31 -0
  21. package/dist/cli-handlers/diff.js.map +1 -0
  22. package/dist/cli-handlers/easter-egg.d.ts +1 -0
  23. package/dist/cli-handlers/easter-egg.js +126 -0
  24. package/dist/cli-handlers/easter-egg.js.map +1 -0
  25. package/dist/cli-handlers/inititalization-flow.d.ts +1 -0
  26. package/dist/cli-handlers/inititalization-flow.js +1 -1
  27. package/dist/cli.d.ts +66 -0
  28. package/dist/cli.js +87 -30
  29. package/dist/cli.js.map +1 -1
  30. package/dist/client.d.ts +10 -7
  31. package/dist/client.js +71 -12
  32. package/dist/client.js.map +1 -1
  33. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  34. package/dist/common/actions.d.ts +3 -0
  35. package/dist/common/actions.js +1 -0
  36. package/dist/common/actions.js.map +1 -1
  37. package/dist/common/analytics.d.ts +1 -0
  38. package/dist/common/analytics.js +7 -0
  39. package/dist/common/analytics.js.map +1 -1
  40. package/dist/common/browser-actions.d.ts +234 -234
  41. package/dist/common/credit-delegation.d.ts +19 -0
  42. package/dist/common/credit-delegation.js +97 -0
  43. package/dist/common/credit-delegation.js.map +1 -0
  44. package/dist/common/types/organization.d.ts +102 -0
  45. package/dist/common/types/organization.js +3 -0
  46. package/dist/common/types/organization.js.map +1 -0
  47. package/dist/common/util/changes.d.ts +1 -0
  48. package/dist/common/util/changes.js +13 -4
  49. package/dist/common/util/changes.js.map +1 -1
  50. package/dist/common/websockets/websocket-schema.d.ts +10 -0
  51. package/dist/config.d.ts +4 -0
  52. package/dist/config.js +12 -0
  53. package/dist/config.js.map +1 -0
  54. package/dist/create-template-project.d.ts +1 -0
  55. package/dist/create-template-project.js +107 -0
  56. package/dist/create-template-project.js.map +1 -0
  57. package/dist/credentials.d.ts +4 -0
  58. package/dist/credentials.js +2 -2
  59. package/dist/dev-process-manager.d.ts +10 -0
  60. package/dist/dev-process-manager.js +1 -1
  61. package/dist/display.d.ts +11 -0
  62. package/dist/display.js +85 -0
  63. package/dist/display.js.map +1 -0
  64. package/dist/fingerprint.d.ts +1 -0
  65. package/dist/fingerprint.js +48 -0
  66. package/dist/fingerprint.js.map +1 -0
  67. package/dist/index.d.ts +2 -0
  68. package/dist/index.js +2 -2
  69. package/dist/menu.d.ts +14 -0
  70. package/dist/menu.js +319 -0
  71. package/dist/menu.js.map +1 -0
  72. package/dist/organization-context.d.ts +47 -0
  73. package/dist/organization-context.js +170 -0
  74. package/dist/organization-context.js.map +1 -0
  75. package/dist/project-files.d.ts +4 -3
  76. package/dist/project-files.js +17 -8
  77. package/dist/project-files.js.map +1 -1
  78. package/dist/slash-commands.d.ts +7 -0
  79. package/dist/slash-commands.js +21 -0
  80. package/dist/slash-commands.js.map +1 -0
  81. package/dist/startup-process-handler.d.ts +2 -0
  82. package/dist/tool-handlers.d.ts +2 -2
  83. package/dist/tool-handlers.js +9 -6
  84. package/dist/tool-handlers.js.map +1 -1
  85. package/dist/types.d.ts +15 -0
  86. package/dist/types.js +3 -0
  87. package/dist/types.js.map +1 -0
  88. package/dist/update-codebuff.d.ts +1 -0
  89. package/dist/update-codebuff.js +7 -4
  90. package/dist/update-codebuff.js.map +1 -1
  91. package/dist/utils/__tests__/background-process-manager.test.d.ts +1 -0
  92. package/dist/utils/__tests__/background-process-manager.test.js +327 -0
  93. package/dist/utils/__tests__/background-process-manager.test.js.map +1 -0
  94. package/dist/utils/__tests__/tool-renderers.test.d.ts +1 -0
  95. package/dist/utils/__tests__/tool-renderers.test.js +2 -2
  96. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +1 -0
  97. package/dist/utils/__tests__/xml-stream-parser.test.js +1 -1
  98. package/dist/utils/analytics.d.ts +7 -0
  99. package/dist/utils/analytics.js +8 -0
  100. package/dist/utils/analytics.js.map +1 -1
  101. package/dist/utils/detect-shell.d.ts +1 -0
  102. package/dist/utils/detect-shell.js +60 -0
  103. package/dist/utils/detect-shell.js.map +1 -0
  104. package/dist/utils/git.d.ts +10 -0
  105. package/dist/utils/git.js +112 -0
  106. package/dist/utils/git.js.map +1 -0
  107. package/dist/utils/image.d.ts +4 -0
  108. package/dist/utils/image.js +67 -0
  109. package/dist/utils/image.js.map +1 -0
  110. package/dist/utils/logger.d.ts +21 -0
  111. package/dist/utils/logger.js +14 -7
  112. package/dist/utils/logger.js.map +1 -1
  113. package/dist/utils/spinner.d.ts +12 -0
  114. package/dist/utils/spinner.js +94 -0
  115. package/dist/utils/spinner.js.map +1 -0
  116. package/dist/utils/system-info.d.ts +8 -0
  117. package/dist/utils/system-info.js +22 -0
  118. package/dist/utils/system-info.js.map +1 -0
  119. package/dist/utils/terminal.d.ts +44 -0
  120. package/dist/utils/terminal.js +11 -7
  121. package/dist/utils/terminal.js.map +1 -1
  122. package/dist/utils/tool-renderers.d.ts +16 -0
  123. package/dist/utils/tool-renderers.js +2 -2
  124. package/dist/utils/xml-stream-parser.d.ts +1 -1
  125. package/dist/utils/xml-stream-parser.js +2 -2
  126. package/dist/web-scraper.d.ts +3 -0
  127. package/dist/web-scraper.js +1 -1
  128. package/dist/workers/checkpoint-worker.d.ts +1 -0
  129. package/dist/workers/checkpoint-worker.js +48 -0
  130. package/dist/workers/checkpoint-worker.js.map +1 -0
  131. package/dist/workers/project-context.d.ts +1 -0
  132. package/dist/workers/project-context.js +1 -1
  133. package/package.json +5 -4
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Overwrites writing multiple (more than 2) newlines for all functions.
4
+ *
5
+ * Only replaces raw '\n\n\n' strings. i.e. '\n\n' + green('\n\n'), still
6
+ * renders as four newline characters. Because there is an ANSI escape
7
+ * character between the first two and the last two newline characters.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getPrevious = getPrevious;
11
+ exports.setPrevious = setPrevious;
12
+ exports.enableSquashNewlines = enableSquashNewlines;
13
+ exports.disableSquashNewlines = disableSquashNewlines;
14
+ let squashingEnabled = false;
15
+ let previous = ' ';
16
+ function getPrevious() {
17
+ return previous;
18
+ }
19
+ function setPrevious(str) {
20
+ previous = str;
21
+ }
22
+ function enableSquashNewlines() {
23
+ squashingEnabled = true;
24
+ }
25
+ function disableSquashNewlines() {
26
+ squashingEnabled = false;
27
+ }
28
+ function addCarriageReturn(str) {
29
+ // Do not copy over \n from previous
30
+ const base = (previous[previous.length - 1] === '\r' ? '\r' : ' ') + str;
31
+ // Replace twice, because of no overlap '\n\n'
32
+ const withCarriageReturns = base.replace(/(?<!\r)\n/g, '\r\n');
33
+ return withCarriageReturns.slice(1);
34
+ }
35
+ const originalWrite = process.stdout.write.bind(process.stdout);
36
+ process.stdout.write = function (chunk, encodingOrCallback, callbackMaybe) {
37
+ let chunkString = typeof chunk === 'string' ? chunk : chunk.toString();
38
+ chunkString = addCarriageReturn(chunkString);
39
+ if (!squashingEnabled) {
40
+ previous += chunkString;
41
+ previous = previous.slice(previous.length - 4);
42
+ if (typeof encodingOrCallback === 'function') {
43
+ // Called like write(chunk, callback)
44
+ return originalWrite(chunkString, encodingOrCallback);
45
+ }
46
+ // Called like write(chunk, encoding, callback)
47
+ return originalWrite(chunkString, encodingOrCallback, callbackMaybe);
48
+ }
49
+ const combinedContent = previous + chunkString;
50
+ const processedContent = combinedContent.replace(/(\r\n){3,}/g, '\r\n\r\n');
51
+ const processedChunk = processedContent.slice(previous.length);
52
+ previous = processedContent.slice(processedContent.length - 4);
53
+ if (typeof encodingOrCallback === 'function') {
54
+ // Called like write(chunk, callback)
55
+ return originalWrite(processedChunk, encodingOrCallback);
56
+ }
57
+ // Called like write(chunk, encoding, callback)
58
+ return originalWrite(processedChunk, encodingOrCallback, callbackMaybe);
59
+ };
60
+ const originalError = process.stderr.write.bind(process.stderr);
61
+ process.stderr.write = function (chunk, encodingOrCallback, callbackMaybe) {
62
+ let chunkString = typeof chunk === 'string' ? chunk : chunk.toString();
63
+ chunkString = addCarriageReturn(chunkString);
64
+ if (!squashingEnabled) {
65
+ previous += chunkString;
66
+ previous = previous.slice(previous.length - 4);
67
+ if (typeof encodingOrCallback === 'function') {
68
+ // Called like write(chunk, callback)
69
+ return originalError(chunkString, encodingOrCallback);
70
+ }
71
+ // Called like write(chunk, encoding, callback)
72
+ return originalError(chunkString, encodingOrCallback, callbackMaybe);
73
+ }
74
+ const combinedContent = previous + chunkString;
75
+ const processedContent = combinedContent.replace(/\r\n{3,}/g, '\r\n\r\n');
76
+ const processedChunk = processedContent.slice(previous.length);
77
+ previous = processedContent.slice(processedContent.length - 4);
78
+ if (typeof encodingOrCallback === 'function') {
79
+ // Called like write(chunk, callback)
80
+ return originalError(processedChunk, encodingOrCallback);
81
+ }
82
+ // Called like write(chunk, encoding, callback)
83
+ return originalError(processedChunk, encodingOrCallback, callbackMaybe);
84
+ };
85
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function calculateFingerprint(): Promise<string>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ // Modified from: https://github.com/andsmedeiros/hw-fingerprint
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.calculateFingerprint = calculateFingerprint;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_os_1 = require("node:os");
7
+ const systeminformation_1 = require("systeminformation");
8
+ const getFingerprintInfo = async () => {
9
+ const { manufacturer, model, serial, uuid } = await (0, systeminformation_1.system)();
10
+ const { vendor, version: biosVersion, releaseDate } = await (0, systeminformation_1.bios)();
11
+ const { manufacturer: boardManufacturer, model: boardModel, serial: boardSerial, } = await (0, systeminformation_1.baseboard)();
12
+ const { manufacturer: cpuManufacturer, brand, speedMax, cores, physicalCores, socket, } = await (0, systeminformation_1.cpu)();
13
+ const { platform, arch } = await (0, systeminformation_1.osInfo)();
14
+ return {
15
+ EOL: node_os_1.EOL,
16
+ endianness: (0, node_os_1.endianness)(),
17
+ manufacturer,
18
+ model,
19
+ serial,
20
+ uuid,
21
+ vendor,
22
+ biosVersion,
23
+ releaseDate,
24
+ boardManufacturer,
25
+ boardModel,
26
+ boardSerial,
27
+ cpuManufacturer,
28
+ brand,
29
+ speedMax: speedMax.toFixed(2),
30
+ cores,
31
+ physicalCores,
32
+ socket,
33
+ platform,
34
+ arch,
35
+ };
36
+ };
37
+ async function calculateFingerprint() {
38
+ const fingerprintInfo = await getFingerprintInfo();
39
+ const fingerprintString = JSON.stringify(fingerprintInfo);
40
+ const fingerprintHash = (0, node_crypto_1.createHash)('sha256')
41
+ .update(fingerprintString)
42
+ .digest()
43
+ .toString('base64url');
44
+ // Add 8 random characters to make the fingerprint unique even on identical hardware
45
+ const randomSuffix = (0, node_crypto_1.randomBytes)(6).toString('base64url').substring(0, 8);
46
+ return `${fingerprintHash}-${randomSuffix}`;
47
+ }
48
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAsDhE,oDAYC;AAhED,6CAAqD;AACrD,qCAAyC;AACzC,yDAO0B;AAE1B,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IACpC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,0BAAM,GAAE,CAAA;IAC5D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,wBAAI,GAAE,CAAA;IAClE,MAAM,EACJ,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GACpB,GAAG,MAAM,IAAA,6BAAS,GAAE,CAAA;IACrB,MAAM,EACJ,YAAY,EAAE,eAAe,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,aAAa,EACb,MAAM,GACP,GAAG,MAAM,IAAA,uBAAG,GAAE,CAAA;IACf,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,0BAAM,GAAE,CAAA;IAEzC,OAAO;QACL,GAAG,EAAH,aAAG;QACH,UAAU,EAAE,IAAA,oBAAU,GAAE;QACxB,YAAY;QACZ,KAAK;QACL,MAAM;QACN,IAAI;QACJ,MAAM;QACN,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,eAAe;QACf,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7B,KAAK;QACL,aAAa;QACb,MAAM;QACN,QAAQ;QACR,IAAI;KACkB,CAAA;AAC1B,CAAC,CAAA;AACM,KAAK,UAAU,oBAAoB;IACxC,MAAM,eAAe,GAAG,MAAM,kBAAkB,EAAE,CAAA;IAClD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IACzD,MAAM,eAAe,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;SACzC,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,EAAE;SACR,QAAQ,CAAC,WAAW,CAAC,CAAA;IAExB,oFAAoF;IACpF,MAAM,YAAY,GAAG,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzE,OAAO,GAAG,eAAe,IAAI,YAAY,EAAE,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  process.env.NEXT_PUBLIC_CB_ENVIRONMENT = 'production';
3
3
  process.env.NEXT_PUBLIC_BACKEND_URL = 'manicode-backend.onrender.com';
4
- process.env.NEXT_PUBLIC_APP_URL = 'https://www.codebuff.com';
4
+ process.env.NEXT_PUBLIC_APP_URL = 'https://codebuff.com';
5
5
  process.env.NEXT_PUBLIC_SUPPORT_EMAIL = 'support@codebuff.com';
6
6
  process.env.NEXT_PUBLIC_POSTHOG_API_KEY = 'phc_tug7g8yc10qNestK14QV8WyKwjfEl6vwzIbJkBdqeHS';
7
7
  process.env.NEXT_PUBLIC_POSTHOG_HOST_URL = 'https://us.i.posthog.com';
@@ -11,7 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  const commander_1 = require("commander");
14
- const parser_1 = require("common/json-config/parser");
14
+ const parser_1 = require("./common/json-config/parser");
15
15
  const picocolors_1 = require("picocolors");
16
16
  const package_json_1 = __importDefault(require("../package.json"));
17
17
  const cli_1 = require("./cli");
package/dist/menu.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { CostMode } from './common/constants';
2
+ export interface CommandInfo {
3
+ commandText: string;
4
+ description: string;
5
+ baseCommand?: string;
6
+ params?: string;
7
+ isSlashCommand?: boolean;
8
+ aliases?: string[];
9
+ }
10
+ export declare const interactiveCommandDetails: CommandInfo[];
11
+ export declare function getSlashCommands(): CommandInfo[];
12
+ export declare function displaySlashCommandHelperMenu(): void;
13
+ export declare function displayGreeting(costMode: CostMode, username: string | null): void;
14
+ export declare function displayMenu(): void;
package/dist/menu.js ADDED
@@ -0,0 +1,319 @@
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.interactiveCommandDetails = void 0;
30
+ exports.getSlashCommands = getSlashCommands;
31
+ exports.displaySlashCommandHelperMenu = displaySlashCommandHelperMenu;
32
+ exports.displayGreeting = displayGreeting;
33
+ exports.displayMenu = displayMenu;
34
+ const fs = __importStar(require("fs"));
35
+ const os_1 = __importDefault(require("os"));
36
+ const path_1 = __importDefault(require("path"));
37
+ const picocolors_1 = require("picocolors");
38
+ const project_files_1 = require("./project-files");
39
+ exports.interactiveCommandDetails = [
40
+ {
41
+ baseCommand: 'help',
42
+ description: 'Display help information',
43
+ isSlashCommand: true,
44
+ commandText: '', // Empty commandText ensures it's not shown in the main interactive list
45
+ aliases: ['h'], // Optional: if you want /h to also work for tab completion
46
+ },
47
+ {
48
+ commandText: '"login"',
49
+ baseCommand: 'login',
50
+ description: 'Authenticate your session',
51
+ isSlashCommand: false,
52
+ },
53
+ {
54
+ commandText: '"init"',
55
+ baseCommand: 'init',
56
+ description: 'Configure project for better results',
57
+ isSlashCommand: true,
58
+ },
59
+ {
60
+ commandText: '"diff" or "d"',
61
+ baseCommand: 'diff',
62
+ aliases: ['d'],
63
+ description: 'Show last assistant change diff',
64
+ isSlashCommand: true,
65
+ },
66
+ {
67
+ commandText: '"undo" / "redo"',
68
+ description: 'Revert or re-apply last change',
69
+ // This entry will be expanded into two slash commands: /undo and /redo
70
+ },
71
+ {
72
+ commandText: '"checkpoint <id>"',
73
+ baseCommand: 'checkpoint',
74
+ params: '<id>',
75
+ description: 'Restore to a specific checkpoint',
76
+ isSlashCommand: true,
77
+ },
78
+ {
79
+ commandText: '"!<cmd>"',
80
+ baseCommand: '!', // Or handle this specially, e.g. baseCommand 'shell'
81
+ params: '<cmd>',
82
+ description: 'Run shell command directly',
83
+ isSlashCommand: false, // e.g. /! <cmd> or /shell <cmd>
84
+ },
85
+ {
86
+ commandText: '"usage" or "credits"',
87
+ description: 'View remaining / bonus AI credits',
88
+ // This entry will be expanded into two slash commands: /usage and /credits
89
+ },
90
+ {
91
+ commandText: '"reset"',
92
+ baseCommand: 'reset',
93
+ description: 'Reset the conversation context, as if you just started a new Codebuff session',
94
+ isSlashCommand: true,
95
+ },
96
+ {
97
+ commandText: 'ESC key or Ctrl-C',
98
+ description: 'Cancel generation',
99
+ isSlashCommand: false,
100
+ },
101
+ {
102
+ baseCommand: 'undo',
103
+ description: 'Undo last change',
104
+ isSlashCommand: true,
105
+ commandText: '',
106
+ }, // commandText empty as it's covered by "undo / redo" for main menu
107
+ {
108
+ baseCommand: 'redo',
109
+ description: 'Redo last undone change',
110
+ isSlashCommand: true,
111
+ commandText: '',
112
+ },
113
+ {
114
+ baseCommand: 'usage',
115
+ description: 'View AI credits usage',
116
+ isSlashCommand: true,
117
+ commandText: '',
118
+ },
119
+ {
120
+ baseCommand: 'credits',
121
+ description: 'View AI credits balance',
122
+ isSlashCommand: false,
123
+ commandText: '',
124
+ },
125
+ {
126
+ baseCommand: 'lite',
127
+ description: 'Switch to lite mode (faster, cheaper)',
128
+ isSlashCommand: true,
129
+ commandText: '',
130
+ },
131
+ {
132
+ baseCommand: 'normal',
133
+ description: 'Switch to normal mode (balanced)',
134
+ isSlashCommand: true,
135
+ commandText: '',
136
+ },
137
+ {
138
+ baseCommand: 'max',
139
+ description: 'Switch to max mode (slower, more thorough)',
140
+ isSlashCommand: true,
141
+ commandText: '',
142
+ },
143
+ {
144
+ commandText: '"exit" or Ctrl-C x2',
145
+ baseCommand: 'exit',
146
+ description: 'Quit Codebuff',
147
+ isSlashCommand: true,
148
+ },
149
+ ];
150
+ function getSlashCommands() {
151
+ return exports.interactiveCommandDetails
152
+ .filter((cmd) => cmd.isSlashCommand && cmd.baseCommand)
153
+ .sort((a, b) => a.baseCommand.localeCompare(b.baseCommand));
154
+ }
155
+ function displaySlashCommandHelperMenu() {
156
+ const commands = getSlashCommands();
157
+ if (commands.length === 0) {
158
+ return;
159
+ }
160
+ // Calculate the maximum length of command strings for alignment
161
+ const maxCommandLength = Math.max(...commands.map((cmd) => {
162
+ const commandString = `/${cmd.baseCommand}${cmd.params ? ` ${cmd.params}` : ''}`;
163
+ return commandString.length;
164
+ }));
165
+ // Format each command with its description
166
+ const commandLines = commands.map((cmd) => {
167
+ const commandString = `/${cmd.baseCommand}${cmd.params ? ` ${cmd.params}` : ''}`;
168
+ // Pad with dots to align descriptions
169
+ const padding = '.'.repeat(maxCommandLength - commandString.length + 3);
170
+ return `${(0, picocolors_1.cyan)(commandString)} ${padding} ${cmd.description}`;
171
+ });
172
+ // Add the shell command tip at the end
173
+ const shellTip = (0, picocolors_1.gray)('(Tip: Type "!" followed by a command to run it in your shell, e.g., !ls)');
174
+ // Print with consistent spacing
175
+ console.log(`\n\n${commandLines.join('\n')}\n${shellTip}\n`);
176
+ }
177
+ function displayGreeting(costMode, username) {
178
+ // Show extra info only for logged in users
179
+ const costModeDescription = {
180
+ lite: (0, picocolors_1.bold)((0, picocolors_1.yellow)('Lite mode ✨ enabled (switch modes by typing in "/")')),
181
+ normal: '',
182
+ max: (0, picocolors_1.bold)((0, picocolors_1.blueBright)('Max mode️ ⚡ enabled (switch modes by typing in "/")')),
183
+ experimental: (0, picocolors_1.bold)((0, picocolors_1.magenta)('Experimental mode 🧪 enabled')),
184
+ };
185
+ if (costModeDescription[costMode]) {
186
+ console.log(`${costModeDescription[costMode]}`);
187
+ }
188
+ if ((0, project_files_1.isSubdir)((0, project_files_1.getProjectRoot)(), os_1.default.homedir())) {
189
+ console.info(`Welcome! Codebuff is your AI pair programmer that edits your codebase through natural conversation.
190
+
191
+ You are currently in "${(0, picocolors_1.green)((0, project_files_1.getProjectRoot)())}".
192
+
193
+ To get started:
194
+ 1. Navigate to your project (cd your/project/root)
195
+ 2. Run "codebuff" there instead
196
+ `.trim());
197
+ process.exit(0);
198
+ }
199
+ console.log(`Codebuff will read and write files in "${(0, project_files_1.getProjectRoot)()}". Type "help" for a list of commands.`);
200
+ const gitDir = path_1.default.join((0, project_files_1.getProjectRoot)(), '.git');
201
+ if (!fs.existsSync(gitDir)) {
202
+ console.info((0, picocolors_1.magenta)("Just fyi, this project doesn't contain a .git directory (are you at the top level of your project?). Codebuff works best with a git repo!"));
203
+ }
204
+ console.log(`\nWelcome${username ? ` back ${username}` : ''}! What would you like to do?`);
205
+ }
206
+ const getRandomColors = () => {
207
+ const allColors = [picocolors_1.red, picocolors_1.green, picocolors_1.yellow, picocolors_1.blue, picocolors_1.blueBright, picocolors_1.magenta, picocolors_1.cyan];
208
+ const colors = [];
209
+ while (colors.length < 3) {
210
+ const color = allColors[Math.floor(Math.random() * allColors.length)];
211
+ if (!colors.includes(color)) {
212
+ colors.push(color);
213
+ }
214
+ }
215
+ return colors;
216
+ };
217
+ function displayMenu() {
218
+ const terminalWidth = process.stdout.columns || 80;
219
+ const dividerLine = '─'.repeat(terminalWidth);
220
+ const selectedColors = getRandomColors();
221
+ const colorizeRandom = (text) => {
222
+ return text
223
+ .split('')
224
+ .map((char) => {
225
+ const colorFn = selectedColors[Math.floor(Math.random() * selectedColors.length)];
226
+ return colorFn(char);
227
+ })
228
+ .join('');
229
+ };
230
+ console.log(`
231
+ ${colorizeRandom(' ')}
232
+ ${colorizeRandom('██████╗')}${colorizeRandom(' ██████╗ ')}${colorizeRandom('██████╗ ')}${colorizeRandom('███████╗')}${colorizeRandom('██████╗ ')}${colorizeRandom('██╗ ██╗')}${colorizeRandom('███████╗')}${colorizeRandom('███████╗')}
233
+ ${colorizeRandom('██╔════╝')}${colorizeRandom('██╔═══██╗')}${colorizeRandom('██╔══██╗')}${colorizeRandom('██╔════╝')}${colorizeRandom('██╔══██╗')}${colorizeRandom('██║ ██║')}${colorizeRandom('██╔════╝')}${colorizeRandom('██╔════╝')}
234
+ ${colorizeRandom('██║ ')}${colorizeRandom('██║ ██║')}${colorizeRandom('██║ ██║')}${colorizeRandom('█████╗ ')}${colorizeRandom('██████╔╝')}${colorizeRandom('██║ ██║')}${colorizeRandom('█████╗ ')}${colorizeRandom('█████╗ ')}
235
+ ${colorizeRandom('██║ ')}${colorizeRandom('██║ ██║')}${colorizeRandom('██║ ██║')}${colorizeRandom('██╔══╝ ')}${colorizeRandom('██╔══██╗')}${colorizeRandom('██║ ██║')}${colorizeRandom('██╔══╝ ')}${colorizeRandom('██╔══╝ ')}
236
+ ${colorizeRandom('╚██████╗')}${colorizeRandom('╚██████╔╝')}${colorizeRandom('██████╔╝')}${colorizeRandom('███████╗')}${colorizeRandom('██████╔╝')}${colorizeRandom('╚██████╔╝')}${colorizeRandom('██║ ')}${colorizeRandom('██║ ')}
237
+ ${colorizeRandom(' ╚═════╝')}${colorizeRandom(' ╚═════╝ ')}${colorizeRandom('╚═════╝ ')}${colorizeRandom('╚══════╝')}${colorizeRandom('╚═════╝ ')}${colorizeRandom(' ╚═════╝ ')}${colorizeRandom('╚═╝ ')}${colorizeRandom('╚═╝ ')}
238
+ `);
239
+ console.log(`\n${(0, picocolors_1.bold)('Your AI pair programmer that understands, edits, and improves your codebase through natural conversation.')}`);
240
+ console.log(`\n${(0, picocolors_1.bold)((0, picocolors_1.underline)('PROJECT SETUP'))}`);
241
+ console.log((() => {
242
+ const currentDirectoryLine = `${(0, picocolors_1.green)('✅ Current directory:')} ${(0, picocolors_1.bold)((0, picocolors_1.blueBright)((0, project_files_1.getProjectRoot)()))}`;
243
+ const hasGitRepo = fs.existsSync(path_1.default.join((0, project_files_1.getProjectRoot)(), '.git'));
244
+ const hasGitIgnore = fs.existsSync(path_1.default.join((0, project_files_1.getProjectRoot)(), '.gitignore'));
245
+ const hasKnowledgeMd = fs.existsSync(path_1.default.join((0, project_files_1.getProjectRoot)(), 'knowledge.md'));
246
+ const hasCodebuffJson = fs.existsSync(path_1.default.join((0, project_files_1.getProjectRoot)(), 'codebuff.json'));
247
+ const gitignoreNote = ' (Codebuff never reads files in your .gitignore/.codebuffignore)';
248
+ // Condition 1: Git repo found, all files present
249
+ if (hasGitRepo && hasGitIgnore && hasKnowledgeMd && hasCodebuffJson) {
250
+ return `${currentDirectoryLine}\n${(0, picocolors_1.green)('✅ Git repo: detected')}
251
+ ${(0, picocolors_1.green)('✅ .gitignore: detected')}${gitignoreNote}
252
+ ${(0, picocolors_1.green)('✅ knowledge.md: detected')}
253
+ ${(0, picocolors_1.green)('✅ codebuff.json: detected')}`;
254
+ }
255
+ // Condition 2: Git repo not found
256
+ if (!hasGitRepo) {
257
+ return `${currentDirectoryLine}\n${(0, picocolors_1.yellow)('❌ Git repo: not found')}${' - navigate to a working directory!'}
258
+ ${hasGitIgnore ? (0, picocolors_1.green)('✅ .gitignore: detected') : (0, picocolors_1.yellow)('❌ .gitignore: missing')}${gitignoreNote}
259
+ ${hasKnowledgeMd ? (0, picocolors_1.green)('✅ knowledge.md: detected') : (0, picocolors_1.yellow)('❌ knowledge.md: missing')}${' — run "init" to fix'}
260
+ ${hasCodebuffJson ? (0, picocolors_1.green)('✅ codebuff.json: detected') : (0, picocolors_1.yellow)('❌ codebuff.json: missing')}${' — run "init" to fix'}`;
261
+ }
262
+ // Condition 3: Missing .gitignore
263
+ if (!hasGitIgnore) {
264
+ return `${currentDirectoryLine}\n${(0, picocolors_1.green)('✅ Git repo: detected')}
265
+ ${(0, picocolors_1.yellow)('❌ .gitignore: missing - type "generate a reasonable .gitignore"')}${gitignoreNote}
266
+ ${hasKnowledgeMd ? (0, picocolors_1.green)('✅ knowledge.md: detected') : (0, picocolors_1.yellow)('❌ knowledge.md: missing')}
267
+ ${hasCodebuffJson ? (0, picocolors_1.green)('✅ codebuff.json: detected') : (0, picocolors_1.yellow)('❌ codebuff.json: missing')}`;
268
+ }
269
+ // Condition 4: Missing knowledge files
270
+ return `${currentDirectoryLine}\n${(0, picocolors_1.green)('✅ Git repo: detected')}
271
+ ${(0, picocolors_1.green)('✅ .gitignore: detected')}${gitignoreNote}
272
+ ${!hasKnowledgeMd && !hasCodebuffJson
273
+ ? (0, picocolors_1.yellow)('❌ knowledge.md & codebuff.json: missing - type "init"')
274
+ : !hasKnowledgeMd
275
+ ? (0, picocolors_1.yellow)('❌ knowledge.md: missing - type "init"')
276
+ : !hasCodebuffJson
277
+ ? (0, picocolors_1.yellow)('❌ codebuff.json: missing - type "init"')
278
+ : (0, picocolors_1.green)('✅ knowledge.md & codebuff.json: detected')}
279
+ ${hasKnowledgeMd && !hasCodebuffJson ? `\n${(0, picocolors_1.yellow)('codebuff.json runs deployment scripts for you to test your code and runs configured checks for you by running your dev server.')}` : ''}
280
+ ${!hasKnowledgeMd && hasCodebuffJson ? `\n${(0, picocolors_1.yellow)('knowledge.md helps Codebuff understand your project structure and codebase better for better results.')}` : ''}
281
+ ${!hasKnowledgeMd && !hasCodebuffJson ? `\n${(0, picocolors_1.yellow)('knowledge.md helps Codebuff understand your project structure and codebase better for better results.')}\n${(0, picocolors_1.yellow)('codebuff.json runs deployment scripts for you to test your code and runs configured checks for you by running your dev server.')}` : ''}`;
282
+ })());
283
+ // COMMUNITY & FEEDBACK SECTION
284
+ console.log(`\n${(0, picocolors_1.bold)((0, picocolors_1.underline)('COMMUNITY & FEEDBACK'))}`);
285
+ console.log(`Thanks for using Codebuff! DM @brandonkachen or @jahooma on Discord, or email ${(0, picocolors_1.blueBright)('founders@codebuff.com')}`);
286
+ console.log(`Join our Discord: ${(0, picocolors_1.blueBright)('https://codebuff.com/discord')} ${(0, picocolors_1.gray)(`(${os_1.default.platform() === 'darwin' ? 'Command' : 'Ctrl'} + Click to open)`)}`);
287
+ console.log(`\n${(0, picocolors_1.bold)((0, picocolors_1.underline)('EXAMPLE PROMPTS'))}
288
+ ${'Code Quality:'}
289
+ ${(0, picocolors_1.cyan)(' • "Add error handling to this function"')}
290
+ ${(0, picocolors_1.cyan)(' • "Add JSDoc comments to this file"')}
291
+ ${(0, picocolors_1.cyan)(' • "Fix the type errors in this component"')}
292
+
293
+ ${'Testing & Validation:'}
294
+ ${(0, picocolors_1.cyan)(' • "Create a unit test for the auth module"')}
295
+ ${(0, picocolors_1.cyan)(' • "Add input validation to this endpoint"')}
296
+
297
+ ${'Performance & Architecture:'}
298
+ ${(0, picocolors_1.cyan)(' • "Optimize this database query"')}
299
+ ${(0, picocolors_1.cyan)(' • "Refactor this to use async/await"')}
300
+ ${(0, picocolors_1.cyan)(' • "Add caching to this service"')}
301
+
302
+ ${'Features & Infrastructure:'}
303
+ ${(0, picocolors_1.cyan)(' • "Create a new API endpoint for users"')}
304
+ ${(0, picocolors_1.cyan)(' • "Add logging to these functions"')}
305
+ ${(0, picocolors_1.cyan)(' • "Set up CI/CD pipeline config"')}
306
+ `);
307
+ // INTERACTIVE COMMANDS SECTION
308
+ const fixedCommandWidth = 30; // Fixed width for command column
309
+ const formatMenuLine = (commandText, description) => {
310
+ const paddedCommand = commandText.padEnd(fixedCommandWidth);
311
+ return `${paddedCommand}${description}`;
312
+ };
313
+ const menuLines = exports.interactiveCommandDetails
314
+ .filter((cmd) => cmd.commandText) // Filter out slash-only commands like the discrete undo/redo
315
+ .map((cmd) => formatMenuLine(cmd.commandText, cmd.description));
316
+ console.log(`\n${(0, picocolors_1.bold)((0, picocolors_1.underline)('COMMANDS (type these below)'))}${' '.repeat(fixedCommandWidth - 27)}${(0, picocolors_1.bold)((0, picocolors_1.underline)('DESCRIPTION'))}\n\n${menuLines.join(`\n${dividerLine}`)}\n`);
317
+ console.log(`\n↓ Enter your prompt or command below ↓`);
318
+ }
319
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Client } from './client';
2
+ export interface OrganizationContext {
3
+ currentOrganization?: {
4
+ id: string;
5
+ name: string;
6
+ creditBalance: number;
7
+ };
8
+ repositoryOrganization?: {
9
+ id: string;
10
+ name: string;
11
+ };
12
+ fallbackToPersonal: boolean;
13
+ repositoryUrl?: string;
14
+ usingOrganizationCredits: boolean;
15
+ organizationBalance?: number;
16
+ userBalance?: number;
17
+ }
18
+ export declare class OrganizationContextManager {
19
+ private context;
20
+ updateContextForRepository(repositoryUrl: string): Promise<void>;
21
+ getDisplayMessage(): string;
22
+ getContext(): OrganizationContext;
23
+ }
24
+ /**
25
+ * Determines organization context for the current project
26
+ */
27
+ export declare function getOrganizationContext(client: Client): Promise<OrganizationContext>;
28
+ /**
29
+ * Displays organization context information to the user
30
+ */
31
+ export declare function displayOrganizationContext(context: OrganizationContext): string;
32
+ /**
33
+ * Formats credit usage information with organization context
34
+ */
35
+ export declare function formatCreditUsage(creditsUsed: number, context: OrganizationContext): string;
36
+ /**
37
+ * Checks if user can override organization credit usage
38
+ */
39
+ export declare function canOverrideOrganizationCredits(context: OrganizationContext): boolean;
40
+ /**
41
+ * Gets organization-specific CLI commands
42
+ */
43
+ export declare function getOrganizationCommands(): Array<{
44
+ command: string;
45
+ description: string;
46
+ handler: () => Promise<void>;
47
+ }>;