@openchamber/web 1.0.1

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 (114) hide show
  1. package/README.md +34 -0
  2. package/bin/cli.js +561 -0
  3. package/dist/apple-touch-icon-120x120.png +0 -0
  4. package/dist/apple-touch-icon-152x152.png +0 -0
  5. package/dist/apple-touch-icon-167x167.png +0 -0
  6. package/dist/apple-touch-icon-180x180.png +0 -0
  7. package/dist/apple-touch-icon.png +0 -0
  8. package/dist/apple-touch-icon.svg +18 -0
  9. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  10. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  11. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  12. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  13. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  14. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  15. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  16. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  17. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  18. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  19. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  20. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  21. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  22. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  23. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  26. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  27. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  28. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  29. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  30. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  31. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  32. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  33. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  34. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  35. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  36. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  37. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  38. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  39. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  40. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  41. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  43. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  44. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  45. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  46. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  47. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  48. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  49. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  50. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  51. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  52. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  53. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  54. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  55. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  56. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  57. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  58. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  59. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  60. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  61. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  62. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  63. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  64. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  65. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  66. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  67. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  68. package/dist/assets/MonacoDiffViewer-J2AIDXvs.js +1 -0
  69. package/dist/assets/ToolOutputDialog-B0y5ge-3.js +5 -0
  70. package/dist/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  71. package/dist/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  72. package/dist/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  73. package/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  74. package/dist/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  75. package/dist/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  76. package/dist/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  77. package/dist/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  78. package/dist/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  79. package/dist/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  80. package/dist/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  81. package/dist/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  82. package/dist/assets/index-iDfKTtMQ.css +1 -0
  83. package/dist/assets/index-kNntYPVa.js +2 -0
  84. package/dist/assets/main-BEJ2XliY.css +1 -0
  85. package/dist/assets/main-Ba339xde.js +59 -0
  86. package/dist/assets/vendor--B3aGWKBE.css +32 -0
  87. package/dist/assets/vendor-.pnpm-B1ce5n1Z.js +3192 -0
  88. package/dist/favicon-16.png +0 -0
  89. package/dist/favicon-32.png +0 -0
  90. package/dist/index.html +197 -0
  91. package/dist/logo-dark.svg +4 -0
  92. package/dist/logo-light.svg +4 -0
  93. package/dist/site.webmanifest +36 -0
  94. package/dist/vite.svg +1 -0
  95. package/package.json +92 -0
  96. package/public/apple-touch-icon-120x120.png +0 -0
  97. package/public/apple-touch-icon-152x152.png +0 -0
  98. package/public/apple-touch-icon-167x167.png +0 -0
  99. package/public/apple-touch-icon-180x180.png +0 -0
  100. package/public/apple-touch-icon.png +0 -0
  101. package/public/apple-touch-icon.svg +18 -0
  102. package/public/favicon-16.png +0 -0
  103. package/public/favicon-32.png +0 -0
  104. package/public/logo-dark.svg +4 -0
  105. package/public/logo-light.svg +4 -0
  106. package/public/site.webmanifest +36 -0
  107. package/public/vite.svg +1 -0
  108. package/server/index.d.ts +28 -0
  109. package/server/index.js +3038 -0
  110. package/server/lib/git-identity-storage.js +108 -0
  111. package/server/lib/git-service.js +899 -0
  112. package/server/lib/opencode-config.js +471 -0
  113. package/server/lib/opencode-config.js.d.ts +12 -0
  114. package/server/lib/ui-auth.js +266 -0
@@ -0,0 +1,108 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+
5
+ const STORAGE_DIR = path.join(os.homedir(), '.config', 'openchamber');
6
+ const STORAGE_FILE = path.join(STORAGE_DIR, 'git-identities.json');
7
+
8
+ function ensureStorageDir() {
9
+ if (!fs.existsSync(STORAGE_DIR)) {
10
+ fs.mkdirSync(STORAGE_DIR, { recursive: true });
11
+ }
12
+ }
13
+
14
+ export function loadProfiles() {
15
+ ensureStorageDir();
16
+
17
+ if (!fs.existsSync(STORAGE_FILE)) {
18
+ return { profiles: [] };
19
+ }
20
+
21
+ try {
22
+ const content = fs.readFileSync(STORAGE_FILE, 'utf8');
23
+ const data = JSON.parse(content);
24
+ return data;
25
+ } catch (error) {
26
+ console.error('Failed to load git identity profiles:', error);
27
+ return { profiles: [] };
28
+ }
29
+ }
30
+
31
+ export function saveProfiles(data) {
32
+ ensureStorageDir();
33
+
34
+ try {
35
+ fs.writeFileSync(STORAGE_FILE, JSON.stringify(data, null, 2), 'utf8');
36
+ return true;
37
+ } catch (error) {
38
+ console.error('Failed to save git identity profiles:', error);
39
+ throw error;
40
+ }
41
+ }
42
+
43
+ export function getProfiles() {
44
+ const data = loadProfiles();
45
+ return data.profiles || [];
46
+ }
47
+
48
+ export function getProfile(id) {
49
+ const profiles = getProfiles();
50
+ return profiles.find(p => p.id === id) || null;
51
+ }
52
+
53
+ export function createProfile(profileData) {
54
+ const profiles = getProfiles();
55
+
56
+ if (profiles.some(p => p.id === profileData.id)) {
57
+ throw new Error(`Profile with ID "${profileData.id}" already exists`);
58
+ }
59
+
60
+ if (!profileData.id || !profileData.userName || !profileData.userEmail) {
61
+ throw new Error('Profile must have id, userName, and userEmail');
62
+ }
63
+
64
+ const newProfile = {
65
+ id: profileData.id,
66
+ name: profileData.name || profileData.userName,
67
+ userName: profileData.userName,
68
+ userEmail: profileData.userEmail,
69
+ sshKey: profileData.sshKey || null,
70
+ color: profileData.color || 'keyword',
71
+ icon: profileData.icon || 'branch'
72
+ };
73
+
74
+ profiles.push(newProfile);
75
+ saveProfiles({ profiles });
76
+
77
+ return newProfile;
78
+ }
79
+
80
+ export function updateProfile(id, updates) {
81
+ const profiles = getProfiles();
82
+ const index = profiles.findIndex(p => p.id === id);
83
+
84
+ if (index === -1) {
85
+ throw new Error(`Profile with ID "${id}" not found`);
86
+ }
87
+
88
+ profiles[index] = {
89
+ ...profiles[index],
90
+ ...updates,
91
+ id: profiles[index].id
92
+ };
93
+
94
+ saveProfiles({ profiles });
95
+ return profiles[index];
96
+ }
97
+
98
+ export function deleteProfile(id) {
99
+ const profiles = getProfiles();
100
+ const filteredProfiles = profiles.filter(p => p.id !== id);
101
+
102
+ if (filteredProfiles.length === profiles.length) {
103
+ throw new Error(`Profile with ID "${id}" not found`);
104
+ }
105
+
106
+ saveProfiles({ profiles: filteredProfiles });
107
+ return true;
108
+ }