@cyberismo/backend 0.0.21 → 0.0.23

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 (152) hide show
  1. package/dist/app.d.ts +5 -2
  2. package/dist/app.js +25 -10
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/index.d.ts +16 -0
  5. package/dist/auth/index.js +15 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/keycloak.d.ts +27 -0
  8. package/dist/auth/keycloak.js +81 -0
  9. package/dist/auth/keycloak.js.map +1 -0
  10. package/dist/auth/mock.d.ts +23 -0
  11. package/dist/auth/mock.js +28 -0
  12. package/dist/auth/mock.js.map +1 -0
  13. package/dist/auth/types.d.ts +16 -0
  14. package/dist/auth/types.js +14 -0
  15. package/dist/auth/types.js.map +1 -0
  16. package/dist/domain/auth/index.d.ts +14 -0
  17. package/dist/domain/auth/index.js +30 -0
  18. package/dist/domain/auth/index.js.map +1 -0
  19. package/dist/domain/calculations/index.js +3 -1
  20. package/dist/domain/calculations/index.js.map +1 -1
  21. package/dist/domain/calculations/service.js +13 -11
  22. package/dist/domain/calculations/service.js.map +1 -1
  23. package/dist/domain/cardTypes/index.js +5 -3
  24. package/dist/domain/cardTypes/index.js.map +1 -1
  25. package/dist/domain/cardTypes/service.js +24 -72
  26. package/dist/domain/cardTypes/service.js.map +1 -1
  27. package/dist/domain/cards/index.js +124 -25
  28. package/dist/domain/cards/index.js.map +1 -1
  29. package/dist/domain/cards/lib.js +92 -93
  30. package/dist/domain/cards/lib.js.map +1 -1
  31. package/dist/domain/cards/presence.d.ts +50 -0
  32. package/dist/domain/cards/presence.js +93 -0
  33. package/dist/domain/cards/presence.js.map +1 -0
  34. package/dist/domain/cards/schema.d.ts +47 -0
  35. package/dist/domain/cards/schema.js +37 -0
  36. package/dist/domain/cards/schema.js.map +1 -0
  37. package/dist/domain/cards/service.d.ts +7 -3
  38. package/dist/domain/cards/service.js +81 -91
  39. package/dist/domain/cards/service.js.map +1 -1
  40. package/dist/domain/connectors/index.d.ts +15 -0
  41. package/dist/domain/connectors/index.js +37 -0
  42. package/dist/domain/connectors/index.js.map +1 -0
  43. package/dist/domain/connectors/service.d.ts +23 -0
  44. package/dist/domain/connectors/service.js +46 -0
  45. package/dist/domain/connectors/service.js.map +1 -0
  46. package/dist/domain/fieldTypes/index.js +4 -2
  47. package/dist/domain/fieldTypes/index.js.map +1 -1
  48. package/dist/domain/graphModels/index.js +3 -1
  49. package/dist/domain/graphModels/index.js.map +1 -1
  50. package/dist/domain/graphViews/index.js +3 -1
  51. package/dist/domain/graphViews/index.js.map +1 -1
  52. package/dist/domain/labels/index.js +4 -2
  53. package/dist/domain/labels/index.js.map +1 -1
  54. package/dist/domain/labels/service.d.ts +1 -1
  55. package/dist/domain/labels/service.js +2 -2
  56. package/dist/domain/labels/service.js.map +1 -1
  57. package/dist/domain/linkTypes/index.js +4 -2
  58. package/dist/domain/linkTypes/index.js.map +1 -1
  59. package/dist/domain/logicPrograms/index.js +3 -1
  60. package/dist/domain/logicPrograms/index.js.map +1 -1
  61. package/dist/domain/mcp/index.d.ts +15 -0
  62. package/dist/domain/mcp/index.js +127 -0
  63. package/dist/domain/mcp/index.js.map +1 -0
  64. package/dist/domain/project/index.js +19 -6
  65. package/dist/domain/project/index.js.map +1 -1
  66. package/dist/domain/project/schema.d.ts +3 -0
  67. package/dist/domain/project/schema.js +8 -0
  68. package/dist/domain/project/schema.js.map +1 -1
  69. package/dist/domain/project/service.d.ts +3 -1
  70. package/dist/domain/project/service.js +24 -14
  71. package/dist/domain/project/service.js.map +1 -1
  72. package/dist/domain/reports/index.js +3 -1
  73. package/dist/domain/reports/index.js.map +1 -1
  74. package/dist/domain/resources/index.js +6 -4
  75. package/dist/domain/resources/index.js.map +1 -1
  76. package/dist/domain/resources/service.js +66 -64
  77. package/dist/domain/resources/service.js.map +1 -1
  78. package/dist/domain/templates/index.js +5 -3
  79. package/dist/domain/templates/index.js.map +1 -1
  80. package/dist/domain/tree/index.js +3 -1
  81. package/dist/domain/tree/index.js.map +1 -1
  82. package/dist/domain/tree/service.js +0 -1
  83. package/dist/domain/tree/service.js.map +1 -1
  84. package/dist/domain/workflows/index.js +3 -1
  85. package/dist/domain/workflows/index.js.map +1 -1
  86. package/dist/export.d.ts +6 -5
  87. package/dist/export.js +16 -13
  88. package/dist/export.js.map +1 -1
  89. package/dist/index.d.ts +8 -2
  90. package/dist/index.js +12 -4
  91. package/dist/index.js.map +1 -1
  92. package/dist/main.js +29 -2
  93. package/dist/main.js.map +1 -1
  94. package/dist/middleware/auth.d.ts +40 -0
  95. package/dist/middleware/auth.js +68 -0
  96. package/dist/middleware/auth.js.map +1 -0
  97. package/dist/middleware/commandManager.d.ts +2 -2
  98. package/dist/middleware/commandManager.js +9 -11
  99. package/dist/middleware/commandManager.js.map +1 -1
  100. package/dist/public/THIRD-PARTY.txt +1212 -605
  101. package/dist/public/assets/index-Cdn_jRWy.js +720 -0
  102. package/dist/public/assets/index-ypsafPwV.css +1 -0
  103. package/dist/public/config.json +1 -0
  104. package/dist/public/images/broken_link.svg +7 -0
  105. package/dist/public/index.html +2 -2
  106. package/dist/types.d.ts +25 -0
  107. package/dist/types.js +13 -1
  108. package/dist/types.js.map +1 -1
  109. package/package.json +10 -7
  110. package/src/app.ts +37 -15
  111. package/src/auth/index.ts +17 -0
  112. package/src/auth/keycloak.ts +109 -0
  113. package/src/auth/mock.ts +38 -0
  114. package/src/auth/types.ts +18 -0
  115. package/src/domain/auth/index.ts +35 -0
  116. package/src/domain/calculations/index.ts +13 -6
  117. package/src/domain/calculations/service.ts +16 -14
  118. package/src/domain/cardTypes/index.ts +24 -16
  119. package/src/domain/cardTypes/service.ts +41 -95
  120. package/src/domain/cards/index.ts +258 -90
  121. package/src/domain/cards/lib.ts +102 -100
  122. package/src/domain/cards/presence.ts +124 -0
  123. package/src/domain/cards/schema.ts +41 -0
  124. package/src/domain/cards/service.ts +138 -93
  125. package/src/domain/connectors/index.ts +39 -0
  126. package/src/domain/connectors/service.ts +67 -0
  127. package/src/domain/fieldTypes/index.ts +23 -16
  128. package/src/domain/graphModels/index.ts +13 -6
  129. package/src/domain/graphViews/index.ts +13 -6
  130. package/src/domain/labels/index.ts +5 -2
  131. package/src/domain/labels/service.ts +2 -2
  132. package/src/domain/linkTypes/index.ts +14 -7
  133. package/src/domain/logicPrograms/index.ts +3 -0
  134. package/src/domain/mcp/index.ts +159 -0
  135. package/src/domain/project/index.ts +40 -9
  136. package/src/domain/project/schema.ts +9 -0
  137. package/src/domain/project/service.ts +37 -17
  138. package/src/domain/reports/index.ts +13 -6
  139. package/src/domain/resources/index.ts +6 -1
  140. package/src/domain/resources/service.ts +102 -97
  141. package/src/domain/templates/index.ts +31 -19
  142. package/src/domain/tree/index.ts +3 -1
  143. package/src/domain/tree/service.ts +0 -1
  144. package/src/domain/workflows/index.ts +13 -6
  145. package/src/export.ts +17 -15
  146. package/src/index.ts +18 -7
  147. package/src/main.ts +44 -2
  148. package/src/middleware/auth.ts +90 -0
  149. package/src/middleware/commandManager.ts +11 -14
  150. package/src/types.ts +27 -0
  151. package/dist/public/assets/index-CRSBseQM.css +0 -1
  152. package/dist/public/assets/index-Ca10XaMv.js +0 -164156
package/dist/main.js CHANGED
@@ -10,15 +10,42 @@
10
10
  details. You should have received a copy of the GNU Affero General Public
11
11
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
12
  */
13
+ import { CommandManager } from '@cyberismo/data-handler';
13
14
  import { startServer } from './index.js';
14
15
  import { exportSite } from './export.js';
16
+ import { MockAuthProvider } from './auth/mock.js';
17
+ import { KeycloakAuthProvider } from './auth/keycloak.js';
15
18
  import dotenv from 'dotenv';
16
19
  // Load environment variables from .env file
17
20
  dotenv.config();
21
+ function createAuthProvider() {
22
+ const authMode = process.env.AUTH_MODE;
23
+ if (!authMode) {
24
+ console.error('Fatal: AUTH_MODE environment variable is required. Set to "mock" or "idp".');
25
+ process.exit(1);
26
+ }
27
+ if (authMode === 'mock') {
28
+ return new MockAuthProvider();
29
+ }
30
+ if (authMode === 'idp') {
31
+ const issuer = process.env.OIDC_ISSUER;
32
+ const clientId = process.env.OIDC_CLIENT_ID;
33
+ if (!issuer || !clientId) {
34
+ console.error('Fatal: OIDC_ISSUER and OIDC_CLIENT_ID environment variables are required when AUTH_MODE=idp.');
35
+ process.exit(1);
36
+ }
37
+ return new KeycloakAuthProvider({ issuer, audience: clientId });
38
+ }
39
+ console.error(`Fatal: Unrecognized AUTH_MODE "${authMode}". Must be "mock" or "idp".`);
40
+ process.exit(1);
41
+ }
42
+ const projectPath = process.env.npm_config_project_path || '';
43
+ const commands = await CommandManager.getInstance(projectPath);
18
44
  if (process.argv.includes('--export')) {
19
- await exportSite(process.env.npm_config_project_path || '');
45
+ await exportSite(commands);
20
46
  }
21
47
  else {
22
- await startServer(process.env.npm_config_project_path || '');
48
+ const authProvider = createAuthProvider();
49
+ await startServer(authProvider, commands);
23
50
  }
24
51
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AACF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IACtC,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;KAAM,CAAC;IACN,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AACF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAEvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAE5C,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CACX,8FAA8F,CAC/F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,KAAK,CACX,kCAAkC,QAAQ,6BAA6B,CACxE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;AAC9D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAE/D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IACtC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;KAAM,CAAC;IACN,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2026
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation. This program is distributed in the hope that it
7
+ will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
+ See the GNU Affero General Public License for more details.
10
+ You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ import type { Context, MiddlewareHandler } from 'hono';
14
+ import type { UserInfo } from '../types.js';
15
+ import { UserRole } from '../types.js';
16
+ import type { AuthProvider } from '../auth/types.js';
17
+ declare module 'hono' {
18
+ interface ContextVariableMap {
19
+ user: UserInfo;
20
+ }
21
+ }
22
+ /**
23
+ * Create authentication middleware from an AuthProvider.
24
+ * Validates the user and attaches user info to the context.
25
+ */
26
+ export declare function createAuthMiddleware(provider: AuthProvider): MiddlewareHandler;
27
+ /**
28
+ * Check if the current user has at least the required role
29
+ */
30
+ export declare function hasRole(c: Context, minimumRole: UserRole): boolean;
31
+ /**
32
+ * Require minimum role middleware factory
33
+ * Returns a middleware that checks if the user has at least the required role
34
+ */
35
+ export declare function requireRole(minimumRole: UserRole): MiddlewareHandler;
36
+ /**
37
+ * Get current user from context
38
+ * Returns null if not authenticated
39
+ */
40
+ export declare function getCurrentUser(c: Context): UserInfo | null;
@@ -0,0 +1,68 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2026
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation. This program is distributed in the hope that it
7
+ will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
+ See the GNU Affero General Public License for more details.
10
+ You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ import { UserRole } from '../types.js';
14
+ const roleLevel = {
15
+ [UserRole.Reader]: 0,
16
+ [UserRole.Editor]: 1,
17
+ [UserRole.Admin]: 2,
18
+ };
19
+ /**
20
+ * Create authentication middleware from an AuthProvider.
21
+ * Validates the user and attaches user info to the context.
22
+ */
23
+ export function createAuthMiddleware(provider) {
24
+ return async (c, next) => {
25
+ const user = await provider.authenticate(c.req.raw);
26
+ if (user) {
27
+ c.set('user', user);
28
+ }
29
+ else {
30
+ return c.json({ error: 'Unauthorized' }, 401);
31
+ }
32
+ await next();
33
+ };
34
+ }
35
+ /**
36
+ * Check if the current user has at least the required role
37
+ */
38
+ export function hasRole(c, minimumRole) {
39
+ const user = c.get('user');
40
+ if (!user) {
41
+ return false;
42
+ }
43
+ return roleLevel[user.role] >= roleLevel[minimumRole];
44
+ }
45
+ /**
46
+ * Require minimum role middleware factory
47
+ * Returns a middleware that checks if the user has at least the required role
48
+ */
49
+ export function requireRole(minimumRole) {
50
+ return async (c, next) => {
51
+ const user = c.get('user');
52
+ if (!user) {
53
+ return c.json({ error: 'Unauthorized' }, 401);
54
+ }
55
+ if (!hasRole(c, minimumRole)) {
56
+ return c.json({ error: 'Forbidden' }, 403);
57
+ }
58
+ await next();
59
+ };
60
+ }
61
+ /**
62
+ * Get current user from context
63
+ * Returns null if not authenticated
64
+ */
65
+ export function getCurrentUser(c) {
66
+ return c.get('user') || null;
67
+ }
68
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAIF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUvC,MAAM,SAAS,GAA6B;IAC1C,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAsB;IAEtB,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,WAAqB;IACvD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,WAAqB;IAC/C,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,CAAU;IACvC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC"}
@@ -10,11 +10,11 @@
10
10
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
11
11
  */
12
12
  import type { MiddlewareHandler } from 'hono';
13
- import { CommandManager } from '@cyberismo/data-handler';
13
+ import type { CommandManager } from '@cyberismo/data-handler';
14
14
  declare module 'hono' {
15
15
  interface ContextVariableMap {
16
16
  commands: CommandManager;
17
17
  projectPath: string;
18
18
  }
19
19
  }
20
- export declare const attachCommandManager: (projectPath?: string) => MiddlewareHandler;
20
+ export declare const attachCommandManager: (commands: CommandManager) => MiddlewareHandler;
@@ -9,19 +9,17 @@
9
9
  You should have received a copy of the GNU Affero General Public
10
10
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
11
11
  */
12
- import { CommandManager } from '@cyberismo/data-handler';
13
- export const attachCommandManager = (projectPath) => {
12
+ import { getCurrentUser } from './auth.js';
13
+ export const attachCommandManager = (commands) => {
14
14
  return async (c, next) => {
15
- if (!projectPath) {
16
- return c.text('project_path environment variable not set.', 500);
15
+ c.set('commands', commands);
16
+ c.set('projectPath', commands.project.basePath);
17
+ const user = getCurrentUser(c);
18
+ if (user) {
19
+ await commands.runAsAuthor({ name: user.name, email: user.email }, () => next());
17
20
  }
18
- try {
19
- c.set('commands', await CommandManager.getInstance(projectPath));
20
- c.set('projectPath', projectPath);
21
- await next();
22
- }
23
- catch (error) {
24
- return c.text(`Failed to initialize CommandManager: ${error instanceof Error ? error.message : 'Unknown error'}`, 500);
21
+ else {
22
+ throw new Error('CommandManager expects a user');
25
23
  }
26
24
  };
27
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"commandManager.js","sourceRoot":"","sources":["../../src/middleware/commandManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AAGF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAUzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAoB,EACD,EAAE;IACrB,OAAO,KAAK,EAAE,CAAU,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAClC,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CACX,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAClG,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"commandManager.js","sourceRoot":"","sources":["../../src/middleware/commandManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AAIF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAU3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAAwB,EACL,EAAE;IACrB,OAAO,KAAK,EAAE,CAAU,EAAE,IAAI,EAAE,EAAE;QAChC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CACtE,IAAI,EAAE,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}