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.
- package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.js +47 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
- package/dist/src/backend/interceptors/pr-detection.interceptor.test.js +82 -0
- package/dist/src/backend/interceptors/pr-detection.interceptor.test.js.map +1 -1
- package/dist/src/backend/server.d.ts.map +1 -1
- package/dist/src/backend/server.js +39 -12
- package/dist/src/backend/server.js.map +1 -1
- package/dist/src/backend/services/crypto.service.d.ts.map +1 -1
- package/dist/src/backend/services/crypto.service.js +28 -11
- package/dist/src/backend/services/crypto.service.js.map +1 -1
- package/dist/src/backend/services/crypto.service.test.js +7 -8
- package/dist/src/backend/services/crypto.service.test.js.map +1 -1
- package/dist/src/backend/services/factory-config.service.d.ts.map +1 -1
- package/dist/src/backend/services/factory-config.service.js +4 -7
- package/dist/src/backend/services/factory-config.service.js.map +1 -1
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +45 -7
- package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.js +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
- package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +26 -5
- package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
- package/dist/src/backend/trpc/admin.router.test.js +1 -0
- package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
- package/dist/src/backend/trpc/admin.trpc.js +3 -3
- package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
- package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
- package/dist/src/backend/trpc/workspace/files.trpc.js +14 -6
- package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
- package/dist/src/shared/proxy-utils.d.ts.map +1 -1
- package/dist/src/shared/proxy-utils.js +6 -3
- package/dist/src/shared/proxy-utils.js.map +1 -1
- package/dist/tsconfig.backend.tsbuildinfo +1 -1
- 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;
|
|
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
|
-
|
|
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":"AAOA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;
|
|
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,
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
throw new Error(`Encryption key at ${keyPath} has invalid 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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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":"AAOA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"crypto.service.js","sourceRoot":"","sources":["../../../../src/backend/services/crypto.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEtC,MAAM,SAAS,GAAG,aAAa,CAAC;AAChC,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,aAAa;IACT,aAAa,GAAkB,IAAI,CAAC;IAEpC,UAAU;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,wBAAwB,GAAG,CAAC,MAAM,cAAc,UAAU,GAAG,CAC1F,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAGD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,wBAAwB,WAAW,CAAC,MAAM,cAAc,UAAU,GAAG,CAClG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,OAAO,WAAW,CAAC;IACrB,CAAC;IAMD,OAAO,CAAC,SAAiB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC;QAEtF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClG,CAAC;IAMD,OAAO,CAAC,SAAiB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1F,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -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
|
-
|
|
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).
|
|
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,
|
|
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;
|
|
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 {
|
|
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,
|
|
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;
|
|
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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"}
|