@optimizely/ocp-local-env 1.0.0-beta.14 → 1.0.0-beta.15

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 (82) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/public/bundle.9ecff4861dc6af9af49a.js +3 -0
  3. package/dist/public/bundle.9ecff4861dc6af9af49a.js.map +1 -0
  4. package/dist/public/index.html +1 -1
  5. package/dist/src/executor/JobExecutor.js +0 -17
  6. package/dist/src/executor/JobExecutor.js.map +1 -1
  7. package/dist/src/local_engine/LocalNotifier.d.ts +2 -0
  8. package/dist/src/local_engine/LocalNotifier.js +7 -0
  9. package/dist/src/local_engine/LocalNotifier.js.map +1 -1
  10. package/dist/src/local_engine/LocalSourceApi.d.ts +40 -0
  11. package/dist/src/local_engine/LocalSourceApi.js +69 -0
  12. package/dist/src/local_engine/LocalSourceApi.js.map +1 -0
  13. package/dist/src/local_engine/local-engine-child-base.d.ts +0 -12
  14. package/dist/src/local_engine/local-engine-child-base.js +0 -127
  15. package/dist/src/local_engine/local-engine-child-base.js.map +1 -1
  16. package/dist/src/local_engine/local-engine-client.d.ts +19 -29
  17. package/dist/src/local_engine/local-engine-client.js +41 -94
  18. package/dist/src/local_engine/local-engine-client.js.map +1 -1
  19. package/dist/src/local_engine/local-engine-types.d.ts +13 -50
  20. package/dist/src/local_engine/local-engine-unified.d.ts +6 -13
  21. package/dist/src/local_engine/local-engine-unified.js +51 -217
  22. package/dist/src/local_engine/local-engine-unified.js.map +1 -1
  23. package/dist/src/local_engine/localSDKConfig.d.ts +6 -0
  24. package/dist/src/local_engine/localSDKConfig.js +23 -1
  25. package/dist/src/local_engine/localSDKConfig.js.map +1 -1
  26. package/dist/src/local_engine/storage/LocalConfigStore.d.ts +0 -17
  27. package/dist/src/local_engine/storage/LocalConfigStore.js +1 -38
  28. package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -1
  29. package/dist/src/local_engine/storage/SourceDataStore.d.ts +16 -14
  30. package/dist/src/local_engine/storage/SourceDataStore.js +57 -57
  31. package/dist/src/local_engine/storage/SourceDataStore.js.map +1 -1
  32. package/dist/src/server/api/sources.d.ts +1 -2
  33. package/dist/src/server/api/sources.js +16 -275
  34. package/dist/src/server/api/sources.js.map +1 -1
  35. package/dist/src/server/api/v1.js +9 -0
  36. package/dist/src/server/api/v1.js.map +1 -1
  37. package/dist/src/server/api.js +17 -2
  38. package/dist/src/server/api.js.map +1 -1
  39. package/dist/src/server.js +0 -108
  40. package/dist/src/server.js.map +1 -1
  41. package/dist/src/types/app.d.ts +0 -1
  42. package/dist/src/ui/components/App.js +16 -3
  43. package/dist/src/ui/components/App.js.map +1 -1
  44. package/dist/src/ui/components/FunctionsView.js +0 -1
  45. package/dist/src/ui/components/FunctionsView.js.map +1 -1
  46. package/dist/src/ui/components/JobsView.js +1 -1
  47. package/dist/src/ui/components/JobsView.js.map +1 -1
  48. package/dist/src/ui/components/NotificationViewer.d.ts +2 -11
  49. package/dist/src/ui/components/NotificationViewer.js +62 -9
  50. package/dist/src/ui/components/NotificationViewer.js.map +1 -1
  51. package/dist/src/ui/components/SourceEmittedDataPanel.d.ts +8 -0
  52. package/dist/src/ui/components/SourceEmittedDataPanel.js +103 -0
  53. package/dist/src/ui/components/SourceEmittedDataPanel.js.map +1 -0
  54. package/dist/src/ui/components/SourcesView.js +4 -8
  55. package/dist/src/ui/components/SourcesView.js.map +1 -1
  56. package/dist/src/ui/components/StoreViewer.js +1 -1
  57. package/dist/src/ui/components/StoreViewer.js.map +1 -1
  58. package/dist/src/ui/components/TabbedConsole.d.ts +4 -0
  59. package/dist/src/ui/components/TabbedConsole.js +54 -6
  60. package/dist/src/ui/components/TabbedConsole.js.map +1 -1
  61. package/package.json +1 -1
  62. package/dist/public/bundle.d4be287982adffd9a6f9.js +0 -3
  63. package/dist/public/bundle.d4be287982adffd9a6f9.js.map +0 -1
  64. package/dist/src/executor/SourceExecutor.d.ts +0 -32
  65. package/dist/src/executor/SourceExecutor.js +0 -163
  66. package/dist/src/executor/SourceExecutor.js.map +0 -1
  67. package/dist/src/local_engine/storage/SourceJobExecutionStore.d.ts +0 -25
  68. package/dist/src/local_engine/storage/SourceJobExecutionStore.js +0 -61
  69. package/dist/src/local_engine/storage/SourceJobExecutionStore.js.map +0 -1
  70. package/dist/src/ui/components/SourceDataViewer.d.ts +0 -8
  71. package/dist/src/ui/components/SourceDataViewer.js +0 -84
  72. package/dist/src/ui/components/SourceDataViewer.js.map +0 -1
  73. package/dist/src/ui/components/SourceJobsSection.d.ts +0 -8
  74. package/dist/src/ui/components/SourceJobsSection.js +0 -99
  75. package/dist/src/ui/components/SourceJobsSection.js.map +0 -1
  76. package/dist/src/ui/components/SourceLifecycleSection.d.ts +0 -7
  77. package/dist/src/ui/components/SourceLifecycleSection.js +0 -58
  78. package/dist/src/ui/components/SourceLifecycleSection.js.map +0 -1
  79. package/dist/src/ui/components/SourceWebhookEditor.d.ts +0 -8
  80. package/dist/src/ui/components/SourceWebhookEditor.js +0 -181
  81. package/dist/src/ui/components/SourceWebhookEditor.js.map +0 -1
  82. /package/dist/public/{bundle.d4be287982adffd9a6f9.js.LICENSE.txt → bundle.9ecff4861dc6af9af49a.js.LICENSE.txt} +0 -0
@@ -1,23 +1,25 @@
1
- export type SourceDataContext = 'webhook' | 'job';
2
1
  export interface SourceDataEntry {
2
+ id: number;
3
+ sourceId: string;
3
4
  timestamp: number;
4
5
  data: any;
5
- context: SourceDataContext;
6
- metadata?: Record<string, any>;
7
6
  }
8
7
  export interface SourceDataFile {
9
- sourceId: string;
10
8
  entries: SourceDataEntry[];
9
+ totalEmitted: number;
11
10
  }
12
11
  export declare class SourceDataStore {
13
- private storageDir;
14
- private maxEntries;
15
- constructor(appRootDir: string);
16
- private ensureStorageDir;
17
- private getFilePath;
18
- private readFile;
19
- private writeFile;
20
- push(sourceId: string, data: any, context: SourceDataContext, metadata?: Record<string, any>): void;
21
- getData(sourceId: string, context?: SourceDataContext, limit?: number): SourceDataEntry[];
22
- clear(sourceId: string, context?: SourceDataContext): void;
12
+ private static instances;
13
+ private filePath;
14
+ private logManager;
15
+ private constructor();
16
+ static getInstance(appRootDir?: string): SourceDataStore;
17
+ private read;
18
+ private write;
19
+ push(sourceId: string, data: any): void;
20
+ getData(): {
21
+ entries: SourceDataEntry[];
22
+ totalEmitted: number;
23
+ };
24
+ clear(): void;
23
25
  }
@@ -6,78 +6,78 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SourceDataStore = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
+ const LogManager_1 = require("../../logging/LogManager");
10
+ const MAX_ENTRIES = 500;
9
11
  class SourceDataStore {
10
12
  constructor(appRootDir) {
11
- this.maxEntries = 50;
12
- this.storageDir = path_1.default.join(appRootDir, 'storage', 'source-data');
13
- this.ensureStorageDir();
14
- }
15
- ensureStorageDir() {
16
- if (!fs_1.default.existsSync(this.storageDir)) {
17
- fs_1.default.mkdirSync(this.storageDir, { recursive: true });
13
+ this.logManager = LogManager_1.LogManager.getInstance();
14
+ const storageDir = path_1.default.join(appRootDir, '.ocp-local', 'source-data');
15
+ if (!fs_1.default.existsSync(storageDir)) {
16
+ fs_1.default.mkdirSync(storageDir, { recursive: true });
18
17
  }
18
+ this.filePath = path_1.default.join(storageDir, '_all.json');
19
19
  }
20
- getFilePath(sourceId) {
21
- return path_1.default.join(this.storageDir, `${sourceId}.json`);
20
+ static getInstance(appRootDir) {
21
+ const rootDir = appRootDir || process.cwd();
22
+ if (!SourceDataStore.instances.has(rootDir)) {
23
+ SourceDataStore.instances.set(rootDir, new SourceDataStore(rootDir));
24
+ }
25
+ return SourceDataStore.instances.get(rootDir);
22
26
  }
23
- readFile(sourceId) {
24
- const filePath = this.getFilePath(sourceId);
25
- if (!fs_1.default.existsSync(filePath)) {
26
- return { sourceId, entries: [] };
27
+ read() {
28
+ try {
29
+ if (!fs_1.default.existsSync(this.filePath)) {
30
+ return { entries: [], totalEmitted: 0 };
31
+ }
32
+ const content = fs_1.default.readFileSync(this.filePath, 'utf-8');
33
+ return JSON.parse(content);
34
+ }
35
+ catch (error) {
36
+ this.logManager.error(LogManager_1.LogSource.App, LogManager_1.LogCategory.Source, 'Error reading source data file', {
37
+ id: 'unknown',
38
+ operation: 'read',
39
+ error
40
+ });
41
+ return { entries: [], totalEmitted: 0 };
27
42
  }
28
- const content = fs_1.default.readFileSync(filePath, 'utf-8');
29
- return JSON.parse(content);
30
43
  }
31
- writeFile(data) {
32
- const filePath = this.getFilePath(data.sourceId);
33
- fs_1.default.writeFileSync(filePath, JSON.stringify(data, null, 2));
44
+ write(data) {
45
+ try {
46
+ fs_1.default.writeFileSync(this.filePath, JSON.stringify(data, null, 2));
47
+ }
48
+ catch (error) {
49
+ this.logManager.error(LogManager_1.LogSource.App, LogManager_1.LogCategory.Source, 'Error writing source data file', {
50
+ id: 'unknown',
51
+ operation: 'write',
52
+ error
53
+ });
54
+ }
34
55
  }
35
- push(sourceId, data, context, metadata) {
36
- const file = this.readFile(sourceId);
37
- // Add new entry
56
+ push(sourceId, data) {
57
+ const file = this.read();
58
+ file.totalEmitted = (file.totalEmitted || 0) + 1;
38
59
  file.entries.push({
60
+ id: file.totalEmitted,
61
+ sourceId,
39
62
  timestamp: Date.now(),
40
- data,
41
- context,
42
- metadata
63
+ data
43
64
  });
44
- // Prune to keep only last maxEntries per context
45
- const webhookEntries = file.entries.filter(e => e.context === 'webhook');
46
- const jobEntries = file.entries.filter(e => e.context === 'job');
47
- // Keep last maxEntries for each context
48
- const prunedWebhook = webhookEntries.slice(-this.maxEntries);
49
- const prunedJob = jobEntries.slice(-this.maxEntries);
50
- // Merge and sort by timestamp
51
- file.entries = [...prunedWebhook, ...prunedJob].sort((a, b) => a.timestamp - b.timestamp);
52
- this.writeFile(file);
53
- }
54
- getData(sourceId, context, limit) {
55
- const file = this.readFile(sourceId);
56
- let entries = file.entries;
57
- // Filter by context if specified
58
- if (context) {
59
- entries = entries.filter(e => e.context === context);
60
- }
61
- if (limit && limit > 0) {
62
- return entries.slice(-limit);
65
+ // Keep only the most recent entries
66
+ if (file.entries.length > MAX_ENTRIES) {
67
+ file.entries = file.entries.slice(-MAX_ENTRIES);
63
68
  }
64
- return entries;
69
+ this.write(file);
65
70
  }
66
- clear(sourceId, context) {
67
- if (!context) {
68
- // Clear all data
69
- const filePath = this.getFilePath(sourceId);
70
- if (fs_1.default.existsSync(filePath)) {
71
- fs_1.default.unlinkSync(filePath);
72
- }
73
- }
74
- else {
75
- // Clear only specific context
76
- const file = this.readFile(sourceId);
77
- file.entries = file.entries.filter(e => e.context !== context);
78
- this.writeFile(file);
71
+ getData() {
72
+ const file = this.read();
73
+ return { entries: file.entries, totalEmitted: file.totalEmitted || 0 };
74
+ }
75
+ clear() {
76
+ if (fs_1.default.existsSync(this.filePath)) {
77
+ fs_1.default.unlinkSync(this.filePath);
79
78
  }
80
79
  }
81
80
  }
82
81
  exports.SourceDataStore = SourceDataStore;
82
+ SourceDataStore.instances = new Map();
83
83
  //# sourceMappingURL=SourceDataStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SourceDataStore.js","sourceRoot":"","sources":["../../../../src/local_engine/storage/SourceDataStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SourceDataStore.js","sourceRoot":"","sources":["../../../../src/local_engine/storage/SourceDataStore.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import express from 'express';
2
2
  import { App } from '../../types/app';
3
- import { LocalConfigStore } from '../../local_engine/storage/LocalConfigStore';
4
3
  /**
5
4
  * Create API routes for source testing
6
5
  */
7
- export declare function createSourceRoutes(app: App, appRootDir: string, configStore: LocalConfigStore): express.Router;
6
+ export declare function createSourceRoutes(app: App, appRootDir: string): express.Router;
@@ -6,11 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createSourceRoutes = createSourceRoutes;
7
7
  const express_1 = __importDefault(require("express"));
8
8
  const LogManager_1 = require("../../logging/LogManager");
9
- const SourceExecutor_1 = require("../../executor/SourceExecutor");
10
9
  const local_engine_client_1 = require("../../local_engine/local-engine-client");
11
- const mockDataGenerator_1 = require("../mockDataGenerator");
12
10
  const SourceDataStore_1 = require("../../local_engine/storage/SourceDataStore");
13
- const SourceJobExecutionStore_1 = require("../../local_engine/storage/SourceJobExecutionStore");
14
11
  const config_1 = require("../config");
15
12
  const logger = LogManager_1.LogManager.getInstance();
16
13
  /**
@@ -28,33 +25,21 @@ function createAppConfig(app) {
28
25
  /**
29
26
  * Create API routes for source testing
30
27
  */
31
- function createSourceRoutes(app, appRootDir, configStore) {
28
+ function createSourceRoutes(app, appRootDir) {
32
29
  const router = express_1.default.Router();
33
- const sourceExecutor = new SourceExecutor_1.SourceExecutor(app, configStore);
34
30
  const localEngineClient = local_engine_client_1.LocalEngineClient.getInstance();
35
- const sourceDataStore = new SourceDataStore_1.SourceDataStore(appRootDir);
36
- const sourceJobExecutionStore = new SourceJobExecutionStore_1.SourceJobExecutionStore(appRootDir);
31
+ const sourceDataStore = SourceDataStore_1.SourceDataStore.getInstance(appRootDir);
37
32
  /**
38
33
  * GET /sources - List all sources from app manifest
39
34
  */
40
35
  router.get('/', (req, res) => {
41
36
  try {
42
- const protocol = req.protocol;
43
- const host = req.get('host') || `${config_1.config.server.host}:${config_1.config.server.port}`;
44
37
  const sources = app.manifest.sources || {};
45
- const sourceList = Object.keys(sources).map(id => {
46
- // Get or generate GUID for this source
47
- const guid = configStore.getSourceGuid(id);
48
- const webhookUrl = `${protocol}://${host}/sources/${app.manifest.meta.app_id}/${id}/${guid}`;
49
- return {
50
- id,
51
- description: sources[id].description,
52
- entry_point: sources[id].function?.entry_point,
53
- schema: sources[id].schema,
54
- jobs: sources[id].jobs,
55
- webhookUrl
56
- };
57
- });
38
+ const sourceList = Object.keys(sources).map(id => ({
39
+ id,
40
+ description: sources[id].description,
41
+ schema: sources[id].schema,
42
+ }));
58
43
  res.json({ sources: sourceList });
59
44
  }
60
45
  catch (error) {
@@ -94,257 +79,16 @@ function createSourceRoutes(app, appRootDir, configStore) {
94
79
  }
95
80
  });
96
81
  /**
97
- * POST /sources/:sourceId/create - Trigger onSourceCreate lifecycle
98
- */
99
- router.post('/:sourceId/create', async (req, res) => {
100
- try {
101
- const { sourceId } = req.params;
102
- const sources = app.manifest.sources || {};
103
- if (!sources[sourceId]) {
104
- return res.status(404).json({ error: `Source ${sourceId} not found` });
105
- }
106
- const result = await sourceExecutor.executeSourceCreate(sourceId);
107
- res.json({ result });
108
- }
109
- catch (error) {
110
- const sourceId = req.params.sourceId;
111
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source create', {
112
- id: sourceId,
113
- operation: 'create',
114
- error
115
- });
116
- res.status(500).json({
117
- error: 'Failed to execute source create',
118
- details: error instanceof Error ? error.message : String(error)
119
- });
120
- }
121
- });
122
- /**
123
- * POST /sources/:sourceId/update - Trigger onSourceUpdate lifecycle
124
- */
125
- router.post('/:sourceId/update', async (req, res) => {
126
- try {
127
- const { sourceId } = req.params;
128
- const sources = app.manifest.sources || {};
129
- if (!sources[sourceId]) {
130
- return res.status(404).json({ error: `Source ${sourceId} not found` });
131
- }
132
- const result = await sourceExecutor.executeSourceUpdate(sourceId);
133
- res.json({ result });
134
- }
135
- catch (error) {
136
- const sourceId = req.params.sourceId;
137
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source update', {
138
- id: sourceId,
139
- operation: 'update',
140
- error
141
- });
142
- res.status(500).json({
143
- error: 'Failed to execute source update',
144
- details: error instanceof Error ? error.message : String(error)
145
- });
146
- }
147
- });
148
- /**
149
- * POST /sources/:sourceId/delete - Trigger onSourceDelete lifecycle
150
- */
151
- router.post('/:sourceId/delete', async (req, res) => {
152
- try {
153
- const { sourceId } = req.params;
154
- const sources = app.manifest.sources || {};
155
- if (!sources[sourceId]) {
156
- return res.status(404).json({ error: `Source ${sourceId} not found` });
157
- }
158
- const result = await sourceExecutor.executeSourceDelete(sourceId);
159
- res.json({ result });
160
- }
161
- catch (error) {
162
- const sourceId = req.params.sourceId;
163
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source delete', {
164
- id: sourceId,
165
- operation: 'delete',
166
- error
167
- });
168
- res.status(500).json({
169
- error: 'Failed to execute source delete',
170
- details: error instanceof Error ? error.message : String(error)
171
- });
172
- }
173
- });
174
- /**
175
- * POST /sources/:sourceId/enable - Trigger onSourceEnable lifecycle
176
- */
177
- router.post('/:sourceId/enable', async (req, res) => {
178
- try {
179
- const { sourceId } = req.params;
180
- const sources = app.manifest.sources || {};
181
- if (!sources[sourceId]) {
182
- return res.status(404).json({ error: `Source ${sourceId} not found` });
183
- }
184
- const result = await sourceExecutor.executeSourceEnable(sourceId);
185
- res.json({ result });
186
- }
187
- catch (error) {
188
- const sourceId = req.params.sourceId;
189
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source enable', {
190
- id: sourceId,
191
- operation: 'enable',
192
- error
193
- });
194
- res.status(500).json({
195
- error: 'Failed to execute source enable',
196
- details: error instanceof Error ? error.message : String(error)
197
- });
198
- }
199
- });
200
- /**
201
- * POST /sources/:sourceId/pause - Trigger onSourcePause lifecycle
202
- */
203
- router.post('/:sourceId/pause', async (req, res) => {
204
- try {
205
- const { sourceId } = req.params;
206
- const sources = app.manifest.sources || {};
207
- if (!sources[sourceId]) {
208
- return res.status(404).json({ error: `Source ${sourceId} not found` });
209
- }
210
- const result = await sourceExecutor.executeSourcePause(sourceId);
211
- res.json({ result });
212
- }
213
- catch (error) {
214
- const sourceId = req.params.sourceId;
215
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source pause', {
216
- id: sourceId,
217
- operation: 'pause',
218
- error
219
- });
220
- res.status(500).json({
221
- error: 'Failed to execute source pause',
222
- details: error instanceof Error ? error.message : String(error)
223
- });
224
- }
225
- });
226
- /**
227
- * POST /sources/:sourceId/jobs/:jobId - Execute source job
82
+ * GET /sources/data - Retrieve all emitted source data from SourceDataStore
228
83
  */
229
- router.post('/:sourceId/jobs/:jobId', async (req, res) => {
84
+ router.get('/data', (req, res) => {
230
85
  try {
231
- const { sourceId, jobId } = req.params;
232
- const { parameters } = req.body;
233
- const sources = app.manifest.sources || {};
234
- if (!sources[sourceId]) {
235
- return res.status(404).json({ error: `Source ${sourceId} not found` });
236
- }
237
- const jobs = sources[sourceId].jobs || {};
238
- if (!jobs[jobId]) {
239
- return res.status(404).json({ error: `Job ${jobId} not found in source ${sourceId}` });
240
- }
241
- const result = await sourceExecutor.executeSourceJob({
242
- sourceId,
243
- jobId,
244
- parameters
245
- });
246
- res.json({ result });
247
- }
248
- catch (error) {
249
- const { sourceId, jobId } = req.params;
250
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to execute source job', {
251
- id: sourceId,
252
- operation: 'job',
253
- error
254
- });
255
- res.status(500).json({
256
- error: 'Failed to execute source job',
257
- details: error instanceof Error ? error.message : String(error)
258
- });
259
- }
260
- });
261
- /**
262
- * GET /sources/:sourceId/jobs/:jobId/executions - Get job execution history
263
- */
264
- router.get('/:sourceId/jobs/:jobId/executions', (req, res) => {
265
- try {
266
- const { sourceId, jobId } = req.params;
267
- const executions = sourceJobExecutionStore.getExecutions(sourceId, jobId);
268
- res.json({ executions });
269
- }
270
- catch (error) {
271
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to fetch job executions', {
272
- id: req.params.sourceId,
273
- operation: 'job-executions',
274
- error
275
- });
276
- res.status(500).json({
277
- error: 'Failed to fetch job executions',
278
- details: error instanceof Error ? error.message : String(error)
279
- });
280
- }
281
- });
282
- /**
283
- * GET /sources/:sourceId/job-executions - Get all job executions for source
284
- */
285
- router.get('/:sourceId/job-executions', (req, res) => {
286
- try {
287
- const { sourceId } = req.params;
288
- const executions = sourceJobExecutionStore.getExecutions(sourceId);
289
- res.json({ executions });
290
- }
291
- catch (error) {
292
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to fetch all job executions', {
293
- id: req.params.sourceId,
294
- operation: 'all-job-executions',
295
- error
296
- });
297
- res.status(500).json({
298
- error: 'Failed to fetch all job executions',
299
- details: error instanceof Error ? error.message : String(error)
300
- });
301
- }
302
- });
303
- /**
304
- * POST /sources/:sourceId/generate-mock - Generate mock webhook data
305
- */
306
- router.post('/:sourceId/generate-mock', async (req, res) => {
307
- try {
308
- const { sourceId } = req.params;
309
- const sources = app.manifest.sources || {};
310
- if (!sources[sourceId]) {
311
- return res.status(404).json({ error: `Source ${sourceId} not found` });
312
- }
313
- // Get schema via IPC
314
- const schema = await localEngineClient.executeSourceSchema(sourceId, createAppConfig(app));
315
- // Reuse destination mock generator
316
- const mockBatch = await (0, mockDataGenerator_1.generateMockBatch)(schema, 1);
317
- // Extract just the items for webhook payload
318
- res.json({ data: mockBatch.items[0] });
319
- }
320
- catch (error) {
321
- const sourceId = req.params.sourceId;
322
- logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to generate mock data', {
323
- id: sourceId,
324
- operation: 'generate-mock',
325
- error
326
- });
327
- res.status(500).json({
328
- error: 'Failed to generate mock data',
329
- details: error instanceof Error ? error.message : String(error)
330
- });
331
- }
332
- });
333
- /**
334
- * GET /sources/:sourceId/data - Retrieve pushed data from SourceDataStore
335
- * Query params: limit (number), context ('webhook' | 'job')
336
- */
337
- router.get('/:sourceId/data', (req, res) => {
338
- try {
339
- const { sourceId } = req.params;
340
- const limit = req.query.limit ? parseInt(req.query.limit, 10) : undefined;
341
- const context = req.query.context;
342
- const data = sourceDataStore.getData(sourceId, context, limit);
343
- res.json({ data });
86
+ const { entries, totalEmitted } = sourceDataStore.getData();
87
+ res.json({ entries, totalEmitted });
344
88
  }
345
89
  catch (error) {
346
90
  logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to fetch source data', {
347
- id: req.params.sourceId,
91
+ id: 'all',
348
92
  operation: 'data',
349
93
  error
350
94
  });
@@ -355,19 +99,16 @@ function createSourceRoutes(app, appRootDir, configStore) {
355
99
  }
356
100
  });
357
101
  /**
358
- * DELETE /sources/:sourceId/data - Clear pushed data
359
- * Query params: context ('webhook' | 'job') - optional, clears all if not specified
102
+ * DELETE /sources/data - Clear all emitted source data
360
103
  */
361
- router.delete('/:sourceId/data', (req, res) => {
104
+ router.delete('/data', (req, res) => {
362
105
  try {
363
- const { sourceId } = req.params;
364
- const context = req.query.context;
365
- sourceDataStore.clear(sourceId, context);
106
+ sourceDataStore.clear();
366
107
  res.json({ success: true });
367
108
  }
368
109
  catch (error) {
369
110
  logger.error(LogManager_1.LogSource.System, LogManager_1.LogCategory.Source, 'Failed to clear source data', {
370
- id: req.params.sourceId,
111
+ id: 'all',
371
112
  operation: 'clear-data',
372
113
  error
373
114
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../../src/server/api/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../../src/server/api/sources.ts"],"names":[],"mappings":"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"}
@@ -594,6 +594,15 @@ function createInstallsRoutes(app, watcher, configStore, settingsStore, lifecycl
594
594
  }
595
595
  // Get the updated form data with secret fields redacted (matches OCP behavior)
596
596
  const updatedFormData = settingsStore.getRedactedFormData();
597
+ // Overlay the submitted section with the user's original input so secret
598
+ // values aren't lost on validation errors. The formData came from the user's
599
+ // browser so returning it is not a security concern - they already have it.
600
+ if (form_page && formData && updatedFormData[form_page]) {
601
+ updatedFormData[form_page] = {
602
+ ...updatedFormData[form_page],
603
+ ...formData,
604
+ };
605
+ }
597
606
  // Return response in the format expected by the REST API (matching AnduinServer.submitForm)
598
607
  res.json({
599
608
  form_data_json: JSON.stringify(updatedFormData),