factory-factory 0.3.16 → 0.3.17

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 (36) hide show
  1. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
  2. package/dist/src/backend/interceptors/pr-detection.interceptor.js +47 -1
  3. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  4. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js +82 -0
  5. package/dist/src/backend/interceptors/pr-detection.interceptor.test.js.map +1 -1
  6. package/dist/src/backend/server.d.ts.map +1 -1
  7. package/dist/src/backend/server.js +39 -12
  8. package/dist/src/backend/server.js.map +1 -1
  9. package/dist/src/backend/services/crypto.service.d.ts.map +1 -1
  10. package/dist/src/backend/services/crypto.service.js +28 -11
  11. package/dist/src/backend/services/crypto.service.js.map +1 -1
  12. package/dist/src/backend/services/crypto.service.test.js +7 -8
  13. package/dist/src/backend/services/crypto.service.test.js.map +1 -1
  14. package/dist/src/backend/services/factory-config.service.d.ts.map +1 -1
  15. package/dist/src/backend/services/factory-config.service.js +4 -7
  16. package/dist/src/backend/services/factory-config.service.js.map +1 -1
  17. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  18. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +45 -7
  19. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  20. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  21. package/dist/src/backend/services/session/service/lifecycle/session.service.js +1 -1
  22. package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
  23. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +26 -5
  24. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  25. package/dist/src/backend/trpc/admin.router.test.js +1 -0
  26. package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
  27. package/dist/src/backend/trpc/admin.trpc.js +3 -3
  28. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  29. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  30. package/dist/src/backend/trpc/workspace/files.trpc.js +14 -6
  31. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  32. package/dist/src/shared/proxy-utils.d.ts.map +1 -1
  33. package/dist/src/shared/proxy-utils.js +6 -3
  34. package/dist/src/shared/proxy-utils.js.map +1 -1
  35. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pr-detection.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAiC,eAAe,EAAE,MAAM,SAAS,CAAC;AA+E9E,eAAO,MAAM,sBAAsB,EAAE,eA+DpC,CAAC"}
1
+ {"version":3,"file":"pr-detection.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAiC,eAAe,EAAE,MAAM,SAAS,CAAC;AAuI9E,eAAO,MAAM,sBAAsB,EAAE,eAiEpC,CAAC"}
@@ -4,6 +4,8 @@ import { createLogger } from '../../backend/services/logger.service.js';
4
4
  const logger = createLogger('pr-detection');
5
5
  const GH_PR_CREATE_REGEX = /\bgh\s+pr\s+create\b/;
6
6
  const GITHUB_PR_URL_REGEX = /https:\/\/github\.com\/[^/\s]+\/[^/\s]+\/pull\/\d+/;
7
+ const GITHUB_CREATE_PULL_REQUEST_TOOL = 'github_create_pull_request';
8
+ const CREATE_PULL_REQUEST_TOOL = 'create_pull_request';
7
9
  function isRecord(value) {
8
10
  return typeof value === 'object' && value !== null && !Array.isArray(value);
9
11
  }
@@ -25,6 +27,48 @@ function extractCommand(event) {
25
27
  }
26
28
  return directCommand ?? cmd ?? title;
27
29
  }
30
+ function normalizeToolName(value) {
31
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, '');
32
+ }
33
+ function extractMcpToolNameFromDisplayName(toolName) {
34
+ const slashIndex = toolName.lastIndexOf('/');
35
+ if (slashIndex === -1 || slashIndex === toolName.length - 1) {
36
+ return undefined;
37
+ }
38
+ return toolName.slice(slashIndex + 1);
39
+ }
40
+ function extractMcpServerNameFromDisplayName(toolName) {
41
+ const prefix = 'mcpToolCall:';
42
+ if (!toolName.startsWith(prefix)) {
43
+ return undefined;
44
+ }
45
+ const slashIndex = toolName.indexOf('/', prefix.length);
46
+ if (slashIndex === -1) {
47
+ return undefined;
48
+ }
49
+ return toolName.slice(prefix.length, slashIndex);
50
+ }
51
+ function isGithubCreatePullRequestTool(event) {
52
+ const inputTool = extractInputValue(event.input, 'tool', isString, event.toolName, logger);
53
+ if (inputTool === GITHUB_CREATE_PULL_REQUEST_TOOL) {
54
+ return true;
55
+ }
56
+ const inputServer = extractInputValue(event.input, 'server', isString, event.toolName, logger);
57
+ if (inputTool === CREATE_PULL_REQUEST_TOOL && inputServer?.toLowerCase().includes('github')) {
58
+ return true;
59
+ }
60
+ const displayToolName = extractMcpToolNameFromDisplayName(event.toolName) ?? event.toolName;
61
+ if (displayToolName === GITHUB_CREATE_PULL_REQUEST_TOOL) {
62
+ return true;
63
+ }
64
+ const displayServerName = extractMcpServerNameFromDisplayName(event.toolName);
65
+ if (displayToolName === CREATE_PULL_REQUEST_TOOL &&
66
+ displayServerName?.toLowerCase().includes('github')) {
67
+ return true;
68
+ }
69
+ const normalizedToolName = normalizeToolName(event.toolName);
70
+ return normalizedToolName.endsWith(normalizeToolName(GITHUB_CREATE_PULL_REQUEST_TOOL));
71
+ }
28
72
  function extractPrUrlFromEvent(event) {
29
73
  const candidates = [];
30
74
  if (event.output?.content) {
@@ -58,7 +102,9 @@ export const prDetectionInterceptor = {
58
102
  tools: '*',
59
103
  async onToolComplete(event, context) {
60
104
  const command = extractCommand(event);
61
- if (!(command && GH_PR_CREATE_REGEX.test(command))) {
105
+ const isGhPrCreate = command ? GH_PR_CREATE_REGEX.test(command) : false;
106
+ const isMcpPrCreate = isGithubCreatePullRequestTool(event);
107
+ if (!(isGhPrCreate || isMcpPrCreate)) {
62
108
  return;
63
109
  }
64
110
  const prUrl = extractPrUrlFromEvent(event);
@@ -1 +1 @@
1
- {"version":3,"file":"pr-detection.interceptor.js","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-detection.interceptor.js","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,68 @@ describe('prDetectionInterceptor', () => {
79
79
  await prDetectionInterceptor.onToolComplete(event, context);
80
80
  expect(mockAttachAndRefreshPR).toHaveBeenCalledWith('workspace-1', 'https://github.com/purplefish-ai/factory-factory/pull/1038');
81
81
  });
82
+ it('detects PR URL from GitHub MCP create_pull_request results', async () => {
83
+ const event = createEvent({
84
+ toolName: 'mcpToolCall:codex_apps/github_create_pull_request',
85
+ input: {
86
+ type: 'mcpToolCall',
87
+ id: 'call_oensfoBCcJ33zeogkYFUkfw4',
88
+ server: 'codex_apps',
89
+ tool: 'github_create_pull_request',
90
+ arguments: {
91
+ repository_full_name: 'purplefish-ai/factory-factory',
92
+ base_branch: 'main',
93
+ head_branch: 'fix-npm-publish-release-version-output',
94
+ title: 'Fix npm publish release version output',
95
+ },
96
+ },
97
+ output: {
98
+ content: JSON.stringify({
99
+ type: 'mcpToolCall',
100
+ id: 'call_oensfoBCcJ33zeogkYFUkfw4',
101
+ server: 'codex_apps',
102
+ tool: 'github_create_pull_request',
103
+ status: 'completed',
104
+ result: {
105
+ content: [
106
+ {
107
+ type: 'text',
108
+ text: JSON.stringify({
109
+ url: 'https://github.com/purplefish-ai/factory-factory/pull/1581',
110
+ number: 1581,
111
+ state: 'open',
112
+ display_url: 'https://github.com/purplefish-ai/factory-factory/pull/1581',
113
+ }),
114
+ },
115
+ ],
116
+ structuredContent: {
117
+ url: 'https://github.com/purplefish-ai/factory-factory/pull/1581',
118
+ number: 1581,
119
+ },
120
+ },
121
+ }),
122
+ isError: false,
123
+ },
124
+ });
125
+ await prDetectionInterceptor.onToolComplete(event, context);
126
+ expect(mockAttachAndRefreshPR).toHaveBeenCalledWith('workspace-1', 'https://github.com/purplefish-ai/factory-factory/pull/1581');
127
+ });
128
+ it('detects PR URL from GitHub MCP create_pull_request display tool names', async () => {
129
+ const event = createEvent({
130
+ toolName: 'mcpToolCall:github/create_pull_request',
131
+ input: {},
132
+ output: {
133
+ content: JSON.stringify({
134
+ structuredContent: {
135
+ url: 'https://github.com/purplefish-ai/factory-factory/pull/1582',
136
+ },
137
+ }),
138
+ isError: false,
139
+ },
140
+ });
141
+ await prDetectionInterceptor.onToolComplete(event, context);
142
+ expect(mockAttachAndRefreshPR).toHaveBeenCalledWith('workspace-1', 'https://github.com/purplefish-ai/factory-factory/pull/1582');
143
+ });
82
144
  it('detects PR URL when command is provided as cmd', async () => {
83
145
  const event = createEvent({
84
146
  toolName: 'exec_command',
@@ -129,6 +191,26 @@ describe('prDetectionInterceptor', () => {
129
191
  await prDetectionInterceptor.onToolComplete(event, context);
130
192
  expect(mockAttachAndRefreshPR).not.toHaveBeenCalled();
131
193
  });
194
+ it('does not attach arbitrary PR URLs from non-create MCP tools', async () => {
195
+ const event = createEvent({
196
+ toolName: 'mcpToolCall:codex_apps/github_fetch_pull_request',
197
+ input: {
198
+ type: 'mcpToolCall',
199
+ server: 'codex_apps',
200
+ tool: 'github_fetch_pull_request',
201
+ },
202
+ output: {
203
+ content: JSON.stringify({
204
+ structuredContent: {
205
+ url: 'https://github.com/purplefish-ai/factory-factory/pull/1583',
206
+ },
207
+ }),
208
+ isError: false,
209
+ },
210
+ });
211
+ await prDetectionInterceptor.onToolComplete(event, context);
212
+ expect(mockAttachAndRefreshPR).not.toHaveBeenCalled();
213
+ });
132
214
  it('ignores non-create gh commands', async () => {
133
215
  const event = createEvent({
134
216
  toolName: 'commandExecution',
@@ -1 +1 @@
1
- {"version":3,"file":"pr-detection.interceptor.test.js","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-detection.interceptor.test.js","sourceRoot":"","sources":["../../../../src/backend/interceptors/pr-detection.interceptor.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/backend/server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAC;AAiClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EAAE,cAAc,EAAE,CAAC;AAS/B,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,cAAc,CAuY5F"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/backend/server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAC;AAiClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EAAE,cAAc,EAAE,CAAC;AAS/B,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,cAAc,CA6Z5F"}
@@ -1,4 +1,4 @@
1
- import { existsSync } from 'node:fs';
1
+ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { createServer as createHttpServer } from 'node:http';
3
3
  import { join } from 'node:path';
4
4
  import { createExpressMiddleware } from '@trpc/server/adapters/express';
@@ -61,8 +61,33 @@ export function createServer(requestedPort, appContext) {
61
61
  createContext: createContext(context),
62
62
  }));
63
63
  const frontendStaticPath = configService.getFrontendStaticPath();
64
+ let indexHtmlReloadInterval = null;
64
65
  if (frontendStaticPath && existsSync(frontendStaticPath)) {
65
66
  logger.info('Serving static files from', { path: frontendStaticPath });
67
+ const indexHtmlPath = join(frontendStaticPath, 'index.html');
68
+ let indexHtml = null;
69
+ const loadStaticIndexHtml = (message) => {
70
+ try {
71
+ indexHtml = readFileSync(indexHtmlPath, 'utf8');
72
+ if (indexHtmlReloadInterval) {
73
+ clearInterval(indexHtmlReloadInterval);
74
+ indexHtmlReloadInterval = null;
75
+ }
76
+ }
77
+ catch (error) {
78
+ logger.debug(message, {
79
+ path: indexHtmlPath,
80
+ error: toError(error).message,
81
+ });
82
+ }
83
+ };
84
+ loadStaticIndexHtml('Failed to load static index.html for SPA fallback');
85
+ if (indexHtml === null) {
86
+ indexHtmlReloadInterval = setInterval(() => {
87
+ loadStaticIndexHtml('Failed to reload static index.html for SPA fallback');
88
+ }, 5000);
89
+ indexHtmlReloadInterval.unref?.();
90
+ }
66
91
  app.use('/assets', express.static(join(frontendStaticPath, 'assets'), {
67
92
  maxAge: '1y',
68
93
  immutable: true,
@@ -94,17 +119,15 @@ export function createServer(requestedPort, appContext) {
94
119
  res.set('Cache-Control', 'no-cache, no-store, must-revalidate');
95
120
  res.set('Pragma', 'no-cache');
96
121
  res.set('Expires', '0');
97
- res.sendFile('index.html', { root: frontendStaticPath }, (err) => {
98
- if (err) {
99
- logger.debug('Failed to serve index.html for SPA fallback', {
100
- path: req.path,
101
- error: err.message,
102
- });
103
- if (!res.headersSent) {
104
- res.status(503).send('Service temporarily unavailable. Please refresh the page.');
105
- }
106
- }
107
- });
122
+ if (indexHtml === null) {
123
+ logger.debug('Failed to serve index.html for SPA fallback', {
124
+ path: req.path,
125
+ error: 'index.html was not loaded at startup',
126
+ });
127
+ res.status(503).send('Service temporarily unavailable. Please refresh the page.');
128
+ return;
129
+ }
130
+ res.type('html').send(indexHtml);
108
131
  });
109
132
  }
110
133
  app.use((err, _req, res, _next) => {
@@ -179,6 +202,10 @@ export function createServer(requestedPort, appContext) {
179
202
  const performCleanup = async () => {
180
203
  logger.info('Starting graceful cleanup');
181
204
  clearInterval(heartbeatInterval);
205
+ if (indexHtmlReloadInterval) {
206
+ clearInterval(indexHtmlReloadInterval);
207
+ indexHtmlReloadInterval = null;
208
+ }
182
209
  await stopInterceptors();
183
210
  wss.close();
184
211
  server.close();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/backend/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/backend/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.ts"],"names":[],"mappings":"AAoBA,cAAM,aAAa;IACjB,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAelC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAgBnC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"crypto.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.ts"],"names":[],"mappings":"AAoBA,cAAM,aAAa;IACjB,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAelC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAgBnC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { configService } from './config.service.js';
5
5
  import { createLogger } from './logger.service.js';
@@ -18,22 +18,39 @@ class CryptoService {
18
18
  return this.encryptionKey;
19
19
  }
20
20
  const keyPath = this.getKeyPath();
21
- if (existsSync(keyPath)) {
22
- this.encryptionKey = readFileSync(keyPath);
23
- if (this.encryptionKey.length !== KEY_LENGTH) {
24
- throw new Error(`Encryption key at ${keyPath} has invalid length: ${this.encryptionKey.length} (expected ${KEY_LENGTH})`);
21
+ try {
22
+ const key = readFileSync(keyPath);
23
+ if (key.length !== KEY_LENGTH) {
24
+ throw new Error(`Encryption key at ${keyPath} has invalid length: ${key.length} (expected ${KEY_LENGTH})`);
25
+ }
26
+ this.encryptionKey = key;
27
+ return key;
28
+ }
29
+ catch (error) {
30
+ if (error.code !== 'ENOENT') {
31
+ throw error;
25
32
  }
26
- return this.encryptionKey;
27
33
  }
28
34
  logger.info('Generating new encryption key', { path: keyPath });
29
35
  const key = randomBytes(KEY_LENGTH);
30
36
  const dir = dirname(keyPath);
31
- if (!existsSync(dir)) {
32
- mkdirSync(dir, { recursive: true });
37
+ mkdirSync(dir, { recursive: true });
38
+ try {
39
+ writeFileSync(keyPath, key, { mode: 0o600, flag: 'wx' });
40
+ this.encryptionKey = key;
41
+ return key;
42
+ }
43
+ catch (error) {
44
+ if (error.code !== 'EEXIST') {
45
+ throw error;
46
+ }
47
+ }
48
+ const existingKey = readFileSync(keyPath);
49
+ if (existingKey.length !== KEY_LENGTH) {
50
+ throw new Error(`Encryption key at ${keyPath} has invalid length: ${existingKey.length} (expected ${KEY_LENGTH})`);
33
51
  }
34
- writeFileSync(keyPath, key, { mode: 0o600 });
35
- this.encryptionKey = key;
36
- return key;
52
+ this.encryptionKey = existingKey;
53
+ return existingKey;
37
54
  }
38
55
  encrypt(plaintext) {
39
56
  const key = this.loadOrCreateKey();
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.service.js","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.service.js","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { beforeEach, describe, expect, it, vi } from 'vitest';
2
2
  const mockGetBaseDir = vi.hoisted(() => vi.fn());
3
3
  const mockInfo = vi.hoisted(() => vi.fn());
4
- const mockExistsSync = vi.hoisted(() => vi.fn());
5
4
  const mockMkdirSync = vi.hoisted(() => vi.fn());
6
5
  const mockReadFileSync = vi.hoisted(() => vi.fn());
7
6
  const mockWriteFileSync = vi.hoisted(() => vi.fn());
@@ -19,7 +18,6 @@ vi.mock('./logger.service', () => ({
19
18
  }),
20
19
  }));
21
20
  vi.mock('node:fs', () => ({
22
- existsSync: (...args) => mockExistsSync(...args),
23
21
  mkdirSync: (...args) => mockMkdirSync(...args),
24
22
  readFileSync: (...args) => mockReadFileSync(...args),
25
23
  writeFileSync: (...args) => mockWriteFileSync(...args),
@@ -32,18 +30,21 @@ describe('cryptoService', () => {
32
30
  cryptoService.encryptionKey = null;
33
31
  });
34
32
  it('generates a key when missing and round-trips encrypted values', () => {
35
- mockExistsSync.mockImplementation((path) => path === '/tmp/factory-factory-test');
33
+ mockReadFileSync.mockImplementation(() => {
34
+ const error = new Error('missing');
35
+ error.code = 'ENOENT';
36
+ throw error;
37
+ });
36
38
  const encrypted = cryptoService.encrypt('super-secret');
37
39
  const decrypted = cryptoService.decrypt(encrypted);
38
40
  expect(decrypted).toBe('super-secret');
39
- expect(mockMkdirSync).not.toHaveBeenCalled();
40
- expect(mockWriteFileSync).toHaveBeenCalledWith('/tmp/factory-factory-test/encryption.key', expect.any(Buffer), { mode: 0o600 });
41
+ expect(mockMkdirSync).toHaveBeenCalledWith('/tmp/factory-factory-test', { recursive: true });
42
+ expect(mockWriteFileSync).toHaveBeenCalledWith('/tmp/factory-factory-test/encryption.key', expect.any(Buffer), { mode: 0o600, flag: 'wx' });
41
43
  expect(mockInfo).toHaveBeenCalledWith('Generating new encryption key', {
42
44
  path: '/tmp/factory-factory-test/encryption.key',
43
45
  });
44
46
  });
45
47
  it('reuses an existing valid key and does not write a new one', () => {
46
- mockExistsSync.mockReturnValue(true);
47
48
  mockReadFileSync.mockReturnValue(Buffer.alloc(32, 7));
48
49
  const encrypted = cryptoService.encrypt('hello');
49
50
  expect(cryptoService.decrypt(encrypted)).toBe('hello');
@@ -51,13 +52,11 @@ describe('cryptoService', () => {
51
52
  expect(mockWriteFileSync).not.toHaveBeenCalled();
52
53
  });
53
54
  it('throws when existing key has an invalid length', () => {
54
- mockExistsSync.mockReturnValue(true);
55
55
  mockReadFileSync.mockReturnValue(Buffer.alloc(31, 1));
56
56
  expect(() => cryptoService.encrypt('hello')).toThrow('has invalid length');
57
57
  expect(mockWriteFileSync).not.toHaveBeenCalled();
58
58
  });
59
59
  it('throws when decrypt input format is invalid', () => {
60
- mockExistsSync.mockReturnValue(true);
61
60
  mockReadFileSync.mockReturnValue(Buffer.alloc(32, 9));
62
61
  expect(() => cryptoService.decrypt('bad-format')).toThrow('Invalid encrypted value format: expected iv:authTag:ciphertext');
63
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.service.test.js","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,MAAM,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnD,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEpD,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,aAAa,EAAE;QACb,UAAU,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;KAC5D;CACF,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACnB,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;KACf,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACzD,YAAY,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,cAAc,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;QAC3D,aAA6D,CAAC,aAAa,GAAG,IAAI,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,2BAA2B,CAAC,CAAC;QAE1F,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAC5C,0CAA0C,EAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,+BAA+B,EAAE;YACrE,IAAI,EAAE,0CAA0C;SACjD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;QAC1F,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC3E,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CACvD,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"crypto.service.test.js","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory-config.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/factory-config.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,wCAAwC,CAAC;AAQjG,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA0B;WAQpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkCxE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;CAG5D"}
1
+ {"version":3,"file":"factory-config.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/factory-config.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,wCAAwC,CAAC;AAQjG,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA0B;WAQpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA6BxE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;CAG5D"}
@@ -1,4 +1,4 @@
1
- import { access, readFile } from 'node:fs/promises';
1
+ import { readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { z } from 'zod';
4
4
  import { FactoryConfigSchema } from '../../shared/schemas/factory-config.schema.js';
@@ -6,12 +6,6 @@ export class FactoryConfigService {
6
6
  static CONFIG_FILENAME = 'factory-factory.json';
7
7
  static async readConfig(repoPath) {
8
8
  const configPath = join(repoPath, FactoryConfigService.CONFIG_FILENAME);
9
- try {
10
- await access(configPath);
11
- }
12
- catch {
13
- return null;
14
- }
15
9
  try {
16
10
  const content = await readFile(configPath, 'utf-8');
17
11
  const parsed = JSON.parse(content);
@@ -19,6 +13,9 @@ export class FactoryConfigService {
19
13
  return validated;
20
14
  }
21
15
  catch (error) {
16
+ if (error.code === 'ENOENT') {
17
+ return null;
18
+ }
22
19
  if (error instanceof SyntaxError) {
23
20
  throw new Error(`Invalid JSON in ${FactoryConfigService.CONFIG_FILENAME}: ${error.message}`);
24
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory-config.service.js","sourceRoot":"","sources":["../../../../src/backend/services/factory-config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAQjG,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAU,eAAe,GAAG,sBAAsB,CAAC;IAQjE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAgB;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAGxE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YAEP,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,mBAAmB,oBAAoB,CAAC,eAAe,KAAK,KAAK,CAAC,OAAO,EAAE,CAC5E,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvF,MAAM,IAAI,KAAK,CAAC,qBAAqB,oBAAoB,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAKD,MAAM,CAAC,cAAc,CAAC,MAAc,EAAE,IAAY;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC"}
1
+ {"version":3,"file":"factory-config.service.js","sourceRoot":"","sources":["../../../../src/backend/services/factory-config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAQjG,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAU,eAAe,GAAG,sBAAsB,CAAC;IAQjE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAgB;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAGxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,mBAAmB,oBAAoB,CAAC,eAAe,KAAK,KAAK,CAAC,OAAO,EAAE,CAC5E,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvF,MAAM,IAAI,KAAK,CAAC,qBAAqB,oBAAoB,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAKD,MAAM,CAAC,cAAc,CAAC,MAAc,EAAE,IAAY;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"acp-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/acp/acp-runtime-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,YAAY,EAIjB,KAAK,mBAAmB,EAKzB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAC;AAKlE,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAIjD;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,KACjD,IAAI,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAEzE,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC,CAAC;AA+fF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAChF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+B;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAC9E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,uBAAuB,CAA0C;IACzE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,uBAAuB,CAAiD;gBAEpE,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE;IAItD,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ/C,oBAAoB,CAAC,OAAO,EAAE;QAC5B,sBAAsB,EAAE,OAAO,CAAC;QAChC,uBAAuB,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;KAClD,GAAG,IAAI;IAKR,kBAAkB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAI7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS;IAI1E,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,gBAAgB,CAAC;YA+Cd,YAAY;IA4L1B,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,0BAA0B;YA+BpB,mBAAmB;IAuBjC,OAAO,CAAC,qBAAqB;YA4Bf,qBAAqB;IA0D7B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D5C,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;YA+CpB,qBAAqB;IAyB7B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA6B3B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4BjF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4CnF,cAAc,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD,aAAa,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAI7D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK5C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK5C,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO;IAIlD,qBAAqB,IAAI,KAAK,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAqBH;AAMD,eAAO,MAAM,iBAAiB,mBAA4B,CAAC"}
1
+ {"version":3,"file":"acp-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../../../src/backend/services/session/service/acp/acp-runtime-manager.ts"],"names":[],"mappings":"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"}