codebuff 1.0.296 → 1.0.297

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 (111) hide show
  1. package/dist/cli-handlers/initialization-flow.d.ts +1 -0
  2. package/dist/cli-handlers/initialization-flow.js +24 -0
  3. package/dist/cli-handlers/initialization-flow.js.map +1 -0
  4. package/dist/cli-modules/command-processor.d.ts +2 -0
  5. package/dist/cli-modules/command-processor.js +112 -0
  6. package/dist/cli-modules/command-processor.js.map +1 -0
  7. package/dist/cli-modules/input-handler.d.ts +4 -0
  8. package/dist/cli-modules/input-handler.js +75 -0
  9. package/dist/cli-modules/input-handler.js.map +1 -0
  10. package/dist/cli-modules/readline-handler.d.ts +11 -0
  11. package/dist/cli-modules/readline-handler.js +158 -0
  12. package/dist/cli-modules/readline-handler.js.map +1 -0
  13. package/dist/cli-modules/signal-handler.d.ts +7 -0
  14. package/dist/cli-modules/signal-handler.js +128 -0
  15. package/dist/cli-modules/signal-handler.js.map +1 -0
  16. package/dist/cli-modules/types.d.ts +51 -0
  17. package/dist/{common/types/organization.js → cli-modules/types.js} +1 -1
  18. package/dist/cli-modules/types.js.map +1 -0
  19. package/dist/cli-modules/websocket-handler.d.ts +16 -0
  20. package/dist/cli-modules/websocket-handler.js +53 -0
  21. package/dist/cli-modules/websocket-handler.js.map +1 -0
  22. package/dist/cli.d.ts +1 -0
  23. package/dist/cli.js +54 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts +12 -0
  26. package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts.map +1 -0
  27. package/dist/code-map/__mocks__/tree-sitter-typescript.js +14 -0
  28. package/dist/code-map/__mocks__/tree-sitter-typescript.js.map +1 -0
  29. package/dist/code-map/__mocks__/wasm-mock.d.ts +2 -0
  30. package/dist/code-map/__mocks__/wasm-mock.d.ts.map +1 -0
  31. package/dist/code-map/__mocks__/wasm-mock.js +3 -0
  32. package/dist/code-map/__mocks__/wasm-mock.js.map +1 -0
  33. package/dist/code-map/__tests__/parse.test.d.ts +2 -0
  34. package/dist/code-map/__tests__/parse.test.d.ts.map +1 -0
  35. package/dist/code-map/__tests__/parse.test.js +231 -0
  36. package/dist/code-map/__tests__/parse.test.js.map +1 -0
  37. package/dist/code-map/__tests__/test-langs/consumer.d.ts +2 -0
  38. package/dist/code-map/__tests__/test-langs/consumer.d.ts.map +1 -0
  39. package/dist/code-map/__tests__/test-langs/consumer.js +6 -0
  40. package/dist/code-map/__tests__/test-langs/consumer.js.map +1 -0
  41. package/dist/code-map/__tests__/test-langs/empty.d.ts +1 -0
  42. package/dist/code-map/__tests__/test-langs/empty.d.ts.map +1 -0
  43. package/dist/code-map/__tests__/test-langs/empty.js +2 -0
  44. package/dist/code-map/__tests__/test-langs/empty.js.map +1 -0
  45. package/dist/code-map/__tests__/test-langs/test.d.ts +12 -0
  46. package/dist/code-map/__tests__/test-langs/test.d.ts.map +1 -0
  47. package/dist/code-map/__tests__/test-langs/test.js +23 -0
  48. package/dist/code-map/__tests__/test-langs/test.js.map +1 -0
  49. package/dist/code-map/__tests__/test-langs/unused.d.ts +2 -0
  50. package/dist/code-map/__tests__/test-langs/unused.d.ts.map +1 -0
  51. package/dist/code-map/__tests__/test-langs/unused.js +7 -0
  52. package/dist/code-map/__tests__/test-langs/unused.js.map +1 -0
  53. package/dist/code-map/__tests__/test-langs/utils1.d.ts +2 -0
  54. package/dist/code-map/__tests__/test-langs/utils1.d.ts.map +1 -0
  55. package/dist/code-map/__tests__/test-langs/utils1.js +7 -0
  56. package/dist/code-map/__tests__/test-langs/utils1.js.map +1 -0
  57. package/dist/code-map/__tests__/test-langs/utils2.d.ts +2 -0
  58. package/dist/code-map/__tests__/test-langs/utils2.d.ts.map +1 -0
  59. package/dist/code-map/__tests__/test-langs/utils2.js +8 -0
  60. package/dist/code-map/__tests__/test-langs/utils2.js.map +1 -0
  61. package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts +2 -0
  62. package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts.map +1 -0
  63. package/dist/code-map/__tests__/tree-sitter-minimal.test.js +79 -0
  64. package/dist/code-map/__tests__/tree-sitter-minimal.test.js.map +1 -0
  65. package/dist/code-map/jest.config.d.ts +4 -0
  66. package/dist/code-map/jest.config.d.ts.map +1 -0
  67. package/dist/code-map/jest.config.js +18 -0
  68. package/dist/code-map/jest.config.js.map +1 -0
  69. package/dist/code-map/parse.test.d.ts +2 -0
  70. package/dist/code-map/parse.test.d.ts.map +1 -0
  71. package/dist/code-map/parse.test.js +218 -0
  72. package/dist/code-map/parse.test.js.map +1 -0
  73. package/dist/code-map/scripts/tree-sitter-test.cjs +27 -0
  74. package/dist/code-map/scripts/tree-sitter-test.cjs.map +1 -0
  75. package/dist/code-map/scripts/tree-sitter-test.d.cts +2 -0
  76. package/dist/code-map/scripts/tree-sitter-test.d.cts.map +1 -0
  77. package/dist/code-map/scripts/tree-sitter-test.d.ts +2 -0
  78. package/dist/code-map/scripts/tree-sitter-test.d.ts.map +1 -0
  79. package/dist/code-map/scripts/tree-sitter-test.js +54 -0
  80. package/dist/code-map/scripts/tree-sitter-test.js.map +1 -0
  81. package/dist/code-map/test-parser.d.ts +2 -0
  82. package/dist/code-map/test-parser.d.ts.map +1 -0
  83. package/dist/code-map/test-parser.js +42 -0
  84. package/dist/code-map/test-parser.js.map +1 -0
  85. package/dist/code-map/tsconfig.tsbuildinfo +1 -1
  86. package/dist/common/bigquery/client.d.ts +15 -0
  87. package/dist/common/bigquery/client.js +265 -0
  88. package/dist/common/bigquery/client.js.map +1 -0
  89. package/dist/common/bigquery/schema.d.ts +55 -0
  90. package/dist/common/bigquery/schema.js +24 -0
  91. package/dist/common/bigquery/schema.js.map +1 -0
  92. package/dist/common/browser-actions.d.ts +234 -234
  93. package/dist/common/util/file-metadata.d.ts +9 -0
  94. package/dist/common/util/file-metadata.js +24 -0
  95. package/dist/common/util/file-metadata.js.map +1 -0
  96. package/dist/index.js +7 -1
  97. package/package.json +1 -1
  98. package/dist/common/credit-delegation.d.ts +0 -19
  99. package/dist/common/credit-delegation.js +0 -97
  100. package/dist/common/credit-delegation.js.map +0 -1
  101. package/dist/common/types/organization.d.ts +0 -102
  102. package/dist/common/types/organization.js.map +0 -1
  103. package/dist/organization-context.d.ts +0 -47
  104. package/dist/organization-context.js +0 -170
  105. package/dist/organization-context.js.map +0 -1
  106. package/dist/slash-commands.d.ts +0 -7
  107. package/dist/slash-commands.js +0 -21
  108. package/dist/slash-commands.js.map +0 -1
  109. package/dist/utils/image.d.ts +0 -4
  110. package/dist/utils/image.js +0 -67
  111. package/dist/utils/image.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import { TokenCallerMap } from '../../code-map/parse';
2
+ /**
3
+ * Appends caller metadata to file content showing which files reference tokens defined in this file
4
+ * @param content The original file content
5
+ * @param filePath The path of the file
6
+ * @param tokenCallers Map of files to their token callers
7
+ * @returns The content with caller metadata appended
8
+ */
9
+ export declare function appendCallerMetadata(content: string, filePath: string, tokenCallers: TokenCallerMap | undefined): string;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendCallerMetadata = appendCallerMetadata;
4
+ /**
5
+ * Appends caller metadata to file content showing which files reference tokens defined in this file
6
+ * @param content The original file content
7
+ * @param filePath The path of the file
8
+ * @param tokenCallers Map of files to their token callers
9
+ * @returns The content with caller metadata appended
10
+ */
11
+ function appendCallerMetadata(content, filePath, tokenCallers) {
12
+ if (!tokenCallers?.[filePath])
13
+ return content;
14
+ const callersByToken = tokenCallers[filePath];
15
+ const callerInfo = Object.entries(callersByToken)
16
+ .filter(([_, callers]) => callers.length > 0)
17
+ .map(([token, callers]) => `${token}: ${callers.join(', ')}`)
18
+ .join('\n');
19
+ if (!callerInfo)
20
+ return content;
21
+ console.log('got callerInfo', callerInfo);
22
+ return `${content}\n\n<referenced_by>\n${callerInfo}\n</referenced_by>`;
23
+ }
24
+ //# sourceMappingURL=file-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-metadata.js","sourceRoot":"","sources":["../../src/util/file-metadata.ts"],"names":[],"mappings":";;AASA,oDAkBC;AAzBD;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,OAAe,EACf,QAAgB,EAChB,YAAwC;IAExC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAE7C,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;IAEzC,OAAO,GAAG,OAAO,wBAAwB,UAAU,oBAAoB,CAAA;AACzE,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,13 @@ process.env.NEXT_PUBLIC_BACKEND_URL = 'manicode-backend.onrender.com';
4
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
- process.env.NEXT_PUBLIC_POSTHOG_HOST_URL = 'https://us.i.posthog.com';
7
+ process.env.NEXT_PUBLIC_POSTHOG_HOST_URL = 'https://us.i.posthog.com/';
8
+ process.env.NEXT_PUBLIC_CB_ENVIRONMENT = 'production';
9
+ process.env.NEXT_PUBLIC_BACKEND_URL = 'manicode-backend.onrender.com';
10
+ process.env.NEXT_PUBLIC_APP_URL = 'https://codebuff.com';
11
+ process.env.NEXT_PUBLIC_SUPPORT_EMAIL = 'support@codebuff.com';
12
+ process.env.NEXT_PUBLIC_POSTHOG_API_KEY = 'phc_tug7g8yc10qNestK14QV8WyKwjfEl6vwzIbJkBdqeHS';
13
+ process.env.NEXT_PUBLIC_POSTHOG_HOST_URL = 'https://us.i.posthog.com/';
8
14
  "use strict";
9
15
  var __importDefault = (this && this.__importDefault) || function (mod) {
10
16
  return (mod && mod.__esModule) ? mod : { "default": mod };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebuff",
3
- "version": "1.0.296",
3
+ "version": "1.0.297",
4
4
  "description": "AI dev assistant",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -1,19 +0,0 @@
1
- export interface OrganizationLookupResult {
2
- found: boolean;
3
- organizationId?: string;
4
- organizationName?: string;
5
- }
6
- export interface CreditDelegationResult {
7
- useOrganization: boolean;
8
- organizationId?: string;
9
- organizationName?: string;
10
- fallbackToPersonal: boolean;
11
- }
12
- /**
13
- * Finds the organization associated with a repository for a given user
14
- */
15
- export declare function findOrganizationForRepository(userId: string, repositoryUrl: string): Promise<OrganizationLookupResult>;
16
- /**
17
- * Determines credit delegation for a user and repository
18
- */
19
- export declare function consumeCreditsWithDelegation(userId: string, repositoryUrl: string, creditsToConsume: number): Promise<CreditDelegationResult>;
@@ -1,97 +0,0 @@
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.findOrganizationForRepository = findOrganizationForRepository;
30
- exports.consumeCreditsWithDelegation = consumeCreditsWithDelegation;
31
- const db_1 = __importDefault(require("./db"));
32
- const schema = __importStar(require("./db/schema"));
33
- const drizzle_orm_1 = require("drizzle-orm");
34
- /**
35
- * Finds the organization associated with a repository for a given user
36
- */
37
- async function findOrganizationForRepository(userId, repositoryUrl) {
38
- try {
39
- // Normalize repository URL (remove trailing slash, convert to lowercase)
40
- const normalizedUrl = repositoryUrl.toLowerCase().replace(/\/$/, '');
41
- // Find the repository in org_repo table
42
- const orgRepo = await db_1.default.query.orgRepo.findFirst({
43
- where: (0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema.orgRepo.repo_url, normalizedUrl), (0, drizzle_orm_1.eq)(schema.orgRepo.is_active, true)),
44
- with: {
45
- org: {
46
- columns: {
47
- id: true,
48
- name: true,
49
- }
50
- }
51
- }
52
- });
53
- if (!orgRepo) {
54
- return { found: false };
55
- }
56
- // Explicitly check if org relation was loaded
57
- if (!orgRepo.org) {
58
- console.error(`Organization details not loaded for org_id: ${orgRepo.org_id}`);
59
- return { found: false };
60
- }
61
- // Check if the user is a member of this organization
62
- const membership = await db_1.default.query.orgMember.findFirst({
63
- where: (0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema.orgMember.org_id, orgRepo.org_id), (0, drizzle_orm_1.eq)(schema.orgMember.user_id, userId))
64
- });
65
- if (!membership) {
66
- return { found: false };
67
- }
68
- return {
69
- found: true,
70
- organizationId: orgRepo.org_id,
71
- organizationName: orgRepo.org.name
72
- };
73
- }
74
- catch (error) {
75
- console.error('Error finding organization for repository:', error);
76
- return { found: false };
77
- }
78
- }
79
- /**
80
- * Determines credit delegation for a user and repository
81
- */
82
- async function consumeCreditsWithDelegation(userId, repositoryUrl, creditsToConsume) {
83
- const orgLookup = await findOrganizationForRepository(userId, repositoryUrl);
84
- if (orgLookup.found) {
85
- return {
86
- useOrganization: true,
87
- organizationId: orgLookup.organizationId,
88
- organizationName: orgLookup.organizationName,
89
- fallbackToPersonal: false
90
- };
91
- }
92
- return {
93
- useOrganization: false,
94
- fallbackToPersonal: true
95
- };
96
- }
97
- //# sourceMappingURL=credit-delegation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credit-delegation.js","sourceRoot":"","sources":["../src/credit-delegation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,sEAuDC;AAKD,oEAoBC;AA5GD,8CAAqB;AACrB,oDAAqC;AACrC,6CAAqC;AAuBrC;;GAEG;AACI,KAAK,UAAU,6BAA6B,CACjD,MAAc,EACd,aAAqB;IAErB,IAAI,CAAC;QACH,yEAAyE;QACzE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAEpE,wCAAwC;QACxC,MAAM,OAAO,GAAG,MAAM,YAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC/C,KAAK,EAAE,IAAA,iBAAG,EACR,IAAA,gBAAE,EAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,EAC1C,IAAA,gBAAE,EAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CACnC;YACD,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,OAAO,EAAE;wBACP,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;qBACX;iBACF;aACF;SACF,CAA+B,CAAA;QAEhC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACzB,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,+CAA+C,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACzB,CAAC;QAED,qDAAqD;QACrD,MAAM,UAAU,GAAG,MAAM,YAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YACpD,KAAK,EAAE,IAAA,iBAAG,EACR,IAAA,gBAAE,EAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAC3C,IAAA,gBAAE,EAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CACrC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACzB,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;SACnC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAA;QAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,4BAA4B,CAChD,MAAc,EACd,aAAqB,EACrB,gBAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAE5E,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO;YACL,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,kBAAkB,EAAE,KAAK;SAC1B,CAAA;IACH,CAAC;IAED,OAAO;QACL,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,IAAI;KACzB,CAAA;AACH,CAAC"}
@@ -1,102 +0,0 @@
1
- export type OrganizationRole = 'owner' | 'admin' | 'member';
2
- export interface OrganizationMember {
3
- organization_id: string;
4
- user_id: string;
5
- role: OrganizationRole;
6
- joined_at: Date;
7
- }
8
- export interface Organization {
9
- id: string;
10
- name: string;
11
- slug: string;
12
- description?: string;
13
- owner_id: string;
14
- stripe_customer_id?: string;
15
- created_at: Date;
16
- updated_at: Date;
17
- }
18
- export interface OrganizationRepository {
19
- id: string;
20
- organization_id: string;
21
- repository_url: string;
22
- repository_name: string;
23
- approved_by: string;
24
- approved_at: Date;
25
- is_active: boolean;
26
- }
27
- export interface OrganizationUsage {
28
- id: string;
29
- organization_id: string;
30
- user_id: string;
31
- repository_url: string;
32
- credits_used: number;
33
- message_id?: string;
34
- created_at: Date;
35
- }
36
- export interface CreateOrganizationRequest {
37
- name: string;
38
- slug?: string;
39
- description?: string;
40
- }
41
- export interface ListOrganizationsResponse {
42
- organizations: Array<{
43
- id: string;
44
- name: string;
45
- slug: string;
46
- role: OrganizationRole;
47
- memberCount: number;
48
- repositoryCount: number;
49
- }>;
50
- }
51
- export interface OrganizationDetailsResponse {
52
- id: string;
53
- name: string;
54
- slug: string;
55
- description?: string;
56
- owner_id: string;
57
- created_at: string;
58
- userRole: OrganizationRole;
59
- memberCount: number;
60
- repositoryCount: number;
61
- creditBalance?: number;
62
- }
63
- export interface InviteMemberRequest {
64
- email: string;
65
- role: 'admin' | 'member';
66
- }
67
- export interface UpdateMemberRoleRequest {
68
- role: 'admin' | 'member';
69
- }
70
- export interface AddRepositoryRequest {
71
- repository_url: string;
72
- repository_name: string;
73
- }
74
- export interface OrganizationUsageResponse {
75
- currentBalance: number;
76
- usageThisCycle: number;
77
- topUsers: Array<{
78
- user_id: string;
79
- user_name: string;
80
- credits_used: number;
81
- }>;
82
- recentUsage: Array<{
83
- date: string;
84
- credits_used: number;
85
- repository_url: string;
86
- user_name: string;
87
- }>;
88
- }
89
- export interface CreditDelegationResult {
90
- useOrganization: boolean;
91
- organizationId?: string;
92
- requiresOverride: boolean;
93
- organizationBalance?: number;
94
- userBalance?: number;
95
- }
96
- export interface CreditConsumptionWithDelegationResult {
97
- success: boolean;
98
- consumed: number;
99
- fromOrganization: boolean;
100
- organizationId?: string;
101
- error?: string;
102
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/types/organization.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
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
- }>;
@@ -1,170 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrganizationContextManager = void 0;
4
- exports.getOrganizationContext = getOrganizationContext;
5
- exports.displayOrganizationContext = displayOrganizationContext;
6
- exports.formatCreditUsage = formatCreditUsage;
7
- exports.canOverrideOrganizationCredits = canOverrideOrganizationCredits;
8
- exports.getOrganizationCommands = getOrganizationCommands;
9
- const logger_1 = require("./utils/logger");
10
- const project_files_1 = require("./project-files");
11
- class OrganizationContextManager {
12
- context = {
13
- fallbackToPersonal: true,
14
- usingOrganizationCredits: false
15
- };
16
- async updateContextForRepository(repositoryUrl) {
17
- try {
18
- this.context.repositoryUrl = repositoryUrl;
19
- // Call backend to determine organization for this repo
20
- const response = await fetch('/api/user/repository-organization', {
21
- method: 'POST',
22
- headers: {
23
- 'Content-Type': 'application/json',
24
- },
25
- body: JSON.stringify({ repositoryUrl })
26
- });
27
- if (response.ok) {
28
- const { organization } = await response.json();
29
- if (organization) {
30
- this.context.repositoryOrganization = organization;
31
- this.context.usingOrganizationCredits = true;
32
- this.context.fallbackToPersonal = false;
33
- }
34
- else {
35
- this.context.repositoryOrganization = undefined;
36
- this.context.usingOrganizationCredits = false;
37
- this.context.fallbackToPersonal = true;
38
- }
39
- }
40
- else {
41
- // API call failed, fall back to personal
42
- this.context.repositoryOrganization = undefined;
43
- this.context.usingOrganizationCredits = false;
44
- this.context.fallbackToPersonal = true;
45
- }
46
- }
47
- catch (error) {
48
- logger_1.logger.error({ error }, 'Error updating organization context');
49
- this.context.repositoryOrganization = undefined;
50
- this.context.usingOrganizationCredits = false;
51
- this.context.fallbackToPersonal = true;
52
- }
53
- }
54
- getDisplayMessage() {
55
- if (this.context.repositoryOrganization) {
56
- return `Credits will be charged to ${this.context.repositoryOrganization.name}`;
57
- }
58
- return 'Credits will be charged to your personal account';
59
- }
60
- getContext() {
61
- return { ...this.context };
62
- }
63
- }
64
- exports.OrganizationContextManager = OrganizationContextManager;
65
- /**
66
- * Determines organization context for the current project
67
- */
68
- async function getOrganizationContext(client) {
69
- try {
70
- const repositoryUrl = await (0, project_files_1.getCurrentRepositoryUrl)();
71
- if (!repositoryUrl) {
72
- return {
73
- usingOrganizationCredits: false,
74
- fallbackToPersonal: true,
75
- };
76
- }
77
- // Check if this repository is associated with an organization
78
- // This would typically be done via an API call to the backend
79
- // For now, we'll implement a placeholder
80
- const context = {
81
- repositoryUrl,
82
- usingOrganizationCredits: false,
83
- fallbackToPersonal: true,
84
- };
85
- // TODO: Implement API call to check organization association
86
- // const orgInfo = await client.checkOrganizationForRepository(repositoryUrl)
87
- // if (orgInfo) {
88
- // context.organizationId = orgInfo.id
89
- // context.organizationName = orgInfo.name
90
- // context.usingOrganizationCredits = true
91
- // context.organizationBalance = orgInfo.balance
92
- // }
93
- return context;
94
- }
95
- catch (error) {
96
- logger_1.logger.error({ error }, 'Error getting organization context');
97
- return {
98
- usingOrganizationCredits: false,
99
- fallbackToPersonal: true,
100
- };
101
- }
102
- }
103
- /**
104
- * Displays organization context information to the user
105
- */
106
- function displayOrganizationContext(context) {
107
- if (!context.usingOrganizationCredits) {
108
- return 'Using personal credits';
109
- }
110
- const parts = [];
111
- if (context.repositoryOrganization?.name) {
112
- parts.push(`Organization: ${context.repositoryOrganization.name}`);
113
- }
114
- if (context.organizationBalance !== undefined) {
115
- parts.push(`Org Credits: ${context.organizationBalance.toLocaleString()}`);
116
- }
117
- if (context.userBalance !== undefined) {
118
- parts.push(`Personal Credits: ${context.userBalance.toLocaleString()}`);
119
- }
120
- return parts.join(' | ');
121
- }
122
- /**
123
- * Formats credit usage information with organization context
124
- */
125
- function formatCreditUsage(creditsUsed, context) {
126
- const baseMessage = `Used ${creditsUsed.toLocaleString()} credits`;
127
- if (context.usingOrganizationCredits && context.repositoryOrganization?.name) {
128
- return `${baseMessage} (from ${context.repositoryOrganization.name})`;
129
- }
130
- return `${baseMessage} (personal)`;
131
- }
132
- /**
133
- * Checks if user can override organization credit usage
134
- */
135
- function canOverrideOrganizationCredits(context) {
136
- // Users can always fall back to personal credits if they have them
137
- return context.userBalance !== undefined && context.userBalance > 0;
138
- }
139
- /**
140
- * Gets organization-specific CLI commands
141
- */
142
- function getOrganizationCommands() {
143
- return [
144
- {
145
- command: '/org-status',
146
- description: 'Show organization credit status',
147
- handler: async () => {
148
- // TODO: Implement organization status display
149
- console.log('Organization status not yet implemented');
150
- },
151
- },
152
- {
153
- command: '/org-switch',
154
- description: 'Switch between personal and organization credits',
155
- handler: async () => {
156
- // TODO: Implement organization switching
157
- console.log('Organization switching not yet implemented');
158
- },
159
- },
160
- {
161
- command: '/org-usage',
162
- description: 'Show organization usage breakdown',
163
- handler: async () => {
164
- // TODO: Implement organization usage display
165
- console.log('Organization usage display not yet implemented');
166
- },
167
- },
168
- ];
169
- }
170
- //# sourceMappingURL=organization-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"organization-context.js","sourceRoot":"","sources":["../src/organization-context.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export interface SlashCommand {
2
- command: string;
3
- description: string;
4
- aliases?: string[];
5
- fullCommand?: string;
6
- }
7
- export declare const slashCommands: SlashCommand[];
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.slashCommands = void 0;
4
- exports.slashCommands = [
5
- { command: '/help', fullCommand: 'help', description: 'Show help menu', aliases: ['/h'] },
6
- { command: '/login', fullCommand: 'login', description: 'Authenticate your session' },
7
- { command: '/logout', fullCommand: 'logout', description: 'Sign out of your session' },
8
- { command: '/init', fullCommand: 'init', description: 'Configure project for better results' },
9
- { command: '/diff', fullCommand: 'diff', description: 'Show last assistant change diff', aliases: ['/d'] },
10
- { command: '/undo', fullCommand: 'undo', description: 'Revert to previous checkpoint', aliases: ['/u'] },
11
- { command: '/redo', fullCommand: 'redo', description: 'Re-apply previously undone checkpoint', aliases: ['/r'] },
12
- { command: '/checkpoint save', fullCommand: 'checkpoint save', description: 'Save current state as a new checkpoint' },
13
- { command: '/checkpoint list', fullCommand: 'checkpoint list', description: 'List all saved checkpoints' },
14
- { command: '/checkpoint clear', fullCommand: 'checkpoint clear', description: 'Clear all checkpoints' },
15
- // For commands like "checkpoint <id>", direct slash command is tricky.
16
- // User would type "/checkpoint restore" then space and the id.
17
- { command: '/checkpoint restore', fullCommand: 'checkpoint restore', description: 'Restore to checkpoint <id> (type ID after)' },
18
- { command: '/usage', fullCommand: 'usage', description: 'View remaining/bonus AI credits', aliases: ['/credits'] },
19
- { command: '/exit', fullCommand: 'exit', description: 'Quit Codebuff', aliases: ['/quit', '/q'] },
20
- ];
21
- //# sourceMappingURL=slash-commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../src/slash-commands.ts"],"names":[],"mappings":";;;AAOa,QAAA,aAAa,GAAmB;IAC3C,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACzF,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACrF,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IAC9F,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1G,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACxG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAChH,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,wCAAwC,EAAE;IACtH,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC1G,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACvG,uEAAuE;IACvE,+DAA+D;IAC/D,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAChI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IAClH,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;CAClG,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare function extractImagesFromInput(input: string): Promise<{
2
- text: string;
3
- images: string[];
4
- }>;
@@ -1,67 +0,0 @@
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.extractImagesFromInput = extractImagesFromInput;
30
- const fs_1 = require("fs");
31
- const path_1 = __importDefault(require("path"));
32
- const os_1 = require("os");
33
- const IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif'];
34
- function resolvePath(p) {
35
- if (p.startsWith('~'))
36
- return path_1.default.join((0, os_1.homedir)(), p.slice(1));
37
- return path_1.default.isAbsolute(p) ? p : path_1.default.resolve(process.cwd(), p);
38
- }
39
- async function extractImagesFromInput(input) {
40
- const tokens = input.split(/\s+/);
41
- const imagePaths = [];
42
- const textTokens = [];
43
- for (const token of tokens) {
44
- const resolved = resolvePath(token.replace(/^['\"]|['\"]$/g, ''));
45
- if (IMAGE_EXTENSIONS.some((ext) => resolved.toLowerCase().endsWith(ext)) && (0, fs_1.existsSync)(resolved)) {
46
- imagePaths.push(resolved);
47
- }
48
- else {
49
- textTokens.push(token);
50
- }
51
- }
52
- const images = [];
53
- for (const imgPath of imagePaths) {
54
- try {
55
- // @ts-ignore - optional dependency
56
- const sharp = await Promise.resolve().then(() => __importStar(require('sharp')));
57
- const buffer = await sharp.default(imgPath).png().toBuffer();
58
- images.push(buffer.toString('base64'));
59
- }
60
- catch {
61
- const data = (0, fs_1.readFileSync)(imgPath);
62
- images.push(data.toString('base64'));
63
- }
64
- }
65
- return { text: textTokens.join(' ').trim(), images };
66
- }
67
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,wDA4BC;AAvCD,2BAA6C;AAC7C,gDAAuB;AACvB,2BAA4B;AAE5B,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAE1D,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,cAAI,CAAC,IAAI,CAAC,IAAA,YAAO,GAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,OAAO,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;AAChE,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,KAAa;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAA;QACjE,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACjG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,KAAK,GAAG,wDAAa,OAAO,GAAC,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,OAAO,CAAC,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAA;AACtD,CAAC"}