erosolar-cli 2.1.237 → 2.1.239

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 (138) hide show
  1. package/README.md +9 -0
  2. package/dist/contracts/tools.schema.json +3 -1
  3. package/dist/core/agent.d.ts.map +1 -1
  4. package/dist/core/agent.js +5 -1
  5. package/dist/core/agent.js.map +1 -1
  6. package/dist/core/agentOrchestrator.d.ts +4 -0
  7. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  8. package/dist/core/agentOrchestrator.js +58 -6
  9. package/dist/core/agentOrchestrator.js.map +1 -1
  10. package/dist/core/autoExecutionOrchestrator.d.ts +172 -0
  11. package/dist/core/autoExecutionOrchestrator.d.ts.map +1 -0
  12. package/dist/core/autoExecutionOrchestrator.js +591 -0
  13. package/dist/core/autoExecutionOrchestrator.js.map +1 -0
  14. package/dist/core/contextManager.d.ts.map +1 -1
  15. package/dist/core/contextManager.js.map +1 -1
  16. package/dist/core/dualAgentOrchestrator.d.ts +34 -0
  17. package/dist/core/dualAgentOrchestrator.d.ts.map +1 -0
  18. package/dist/core/dualAgentOrchestrator.js +94 -0
  19. package/dist/core/dualAgentOrchestrator.js.map +1 -0
  20. package/dist/core/errors/safetyValidator.d.ts +25 -12
  21. package/dist/core/errors/safetyValidator.d.ts.map +1 -1
  22. package/dist/core/errors/safetyValidator.js +165 -17
  23. package/dist/core/errors/safetyValidator.js.map +1 -1
  24. package/dist/core/governmentProcedures.d.ts +118 -0
  25. package/dist/core/governmentProcedures.d.ts.map +1 -0
  26. package/dist/core/governmentProcedures.js +912 -0
  27. package/dist/core/governmentProcedures.js.map +1 -0
  28. package/dist/core/infrastructureTemplates.d.ts +123 -0
  29. package/dist/core/infrastructureTemplates.d.ts.map +1 -0
  30. package/dist/core/infrastructureTemplates.js +1326 -0
  31. package/dist/core/infrastructureTemplates.js.map +1 -0
  32. package/dist/core/orchestration.d.ts +534 -0
  33. package/dist/core/orchestration.d.ts.map +1 -0
  34. package/dist/core/orchestration.js +2009 -0
  35. package/dist/core/orchestration.js.map +1 -0
  36. package/dist/core/persistentObjectiveStore.d.ts +292 -0
  37. package/dist/core/persistentObjectiveStore.d.ts.map +1 -0
  38. package/dist/core/persistentObjectiveStore.js +613 -0
  39. package/dist/core/persistentObjectiveStore.js.map +1 -0
  40. package/dist/core/preferences.js +1 -1
  41. package/dist/core/preferences.js.map +1 -1
  42. package/dist/core/reliabilityPrompt.d.ts.map +1 -1
  43. package/dist/core/reliabilityPrompt.js +3 -0
  44. package/dist/core/reliabilityPrompt.js.map +1 -1
  45. package/dist/core/securityDeliverableGenerator.d.ts +292 -0
  46. package/dist/core/securityDeliverableGenerator.d.ts.map +1 -0
  47. package/dist/core/securityDeliverableGenerator.js +1590 -0
  48. package/dist/core/securityDeliverableGenerator.js.map +1 -0
  49. package/dist/core/taskCompletionDetector.d.ts.map +1 -1
  50. package/dist/core/taskCompletionDetector.js +4 -1
  51. package/dist/core/taskCompletionDetector.js.map +1 -1
  52. package/dist/shell/autoExecutor.d.ts.map +1 -1
  53. package/dist/shell/autoExecutor.js +32 -3
  54. package/dist/shell/autoExecutor.js.map +1 -1
  55. package/dist/shell/interactiveShell.d.ts +9 -0
  56. package/dist/shell/interactiveShell.d.ts.map +1 -1
  57. package/dist/shell/interactiveShell.js +282 -190
  58. package/dist/shell/interactiveShell.js.map +1 -1
  59. package/dist/tools/bashTools.d.ts +3 -5
  60. package/dist/tools/bashTools.d.ts.map +1 -1
  61. package/dist/tools/bashTools.js +259 -161
  62. package/dist/tools/bashTools.js.map +1 -1
  63. package/dist/tools/tao/index.d.ts +4 -4
  64. package/dist/tools/tao/index.d.ts.map +1 -1
  65. package/dist/tools/tao/index.js +15 -5
  66. package/dist/tools/tao/index.js.map +1 -1
  67. package/dist/tools/tao/rl.d.ts +164 -0
  68. package/dist/tools/tao/rl.d.ts.map +1 -0
  69. package/dist/tools/tao/rl.js +2998 -0
  70. package/dist/tools/tao/rl.js.map +1 -0
  71. package/dist/tools/taoTools.d.ts +2 -2
  72. package/dist/tools/taoTools.d.ts.map +1 -1
  73. package/dist/tools/taoTools.js +103 -20
  74. package/dist/tools/taoTools.js.map +1 -1
  75. package/dist/ui/PromptController.d.ts +3 -0
  76. package/dist/ui/PromptController.d.ts.map +1 -1
  77. package/dist/ui/PromptController.js +3 -0
  78. package/dist/ui/PromptController.js.map +1 -1
  79. package/dist/ui/UnifiedUIRenderer.d.ts +4 -0
  80. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  81. package/dist/ui/UnifiedUIRenderer.js +37 -6
  82. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  83. package/dist/ui/display.d.ts +9 -1
  84. package/dist/ui/display.d.ts.map +1 -1
  85. package/dist/ui/display.js +66 -9
  86. package/dist/ui/display.js.map +1 -1
  87. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  88. package/dist/ui/shortcutsHelp.js +1 -0
  89. package/dist/ui/shortcutsHelp.js.map +1 -1
  90. package/package.json +3 -2
  91. package/dist/capabilities/askUserCapability.d.ts +0 -14
  92. package/dist/capabilities/askUserCapability.d.ts.map +0 -1
  93. package/dist/capabilities/askUserCapability.js +0 -134
  94. package/dist/capabilities/askUserCapability.js.map +0 -1
  95. package/dist/capabilities/codeGenerationCapability.d.ts +0 -13
  96. package/dist/capabilities/codeGenerationCapability.d.ts.map +0 -1
  97. package/dist/capabilities/codeGenerationCapability.js +0 -25
  98. package/dist/capabilities/codeGenerationCapability.js.map +0 -1
  99. package/dist/capabilities/performanceMonitoringCapability.d.ts +0 -108
  100. package/dist/capabilities/performanceMonitoringCapability.d.ts.map +0 -1
  101. package/dist/capabilities/performanceMonitoringCapability.js +0 -176
  102. package/dist/capabilities/performanceMonitoringCapability.js.map +0 -1
  103. package/dist/capabilities/todoCapability.d.ts +0 -19
  104. package/dist/capabilities/todoCapability.d.ts.map +0 -1
  105. package/dist/capabilities/todoCapability.js +0 -170
  106. package/dist/capabilities/todoCapability.js.map +0 -1
  107. package/dist/core/baseToolFactory.d.ts +0 -187
  108. package/dist/core/baseToolFactory.d.ts.map +0 -1
  109. package/dist/core/baseToolFactory.js +0 -352
  110. package/dist/core/baseToolFactory.js.map +0 -1
  111. package/dist/core/intelligentSummarizer.d.ts +0 -79
  112. package/dist/core/intelligentSummarizer.d.ts.map +0 -1
  113. package/dist/core/intelligentSummarizer.js +0 -273
  114. package/dist/core/intelligentSummarizer.js.map +0 -1
  115. package/dist/core/memorySystem.d.ts +0 -67
  116. package/dist/core/memorySystem.d.ts.map +0 -1
  117. package/dist/core/memorySystem.js +0 -334
  118. package/dist/core/memorySystem.js.map +0 -1
  119. package/dist/core/outputStyles.d.ts +0 -48
  120. package/dist/core/outputStyles.d.ts.map +0 -1
  121. package/dist/core/outputStyles.js +0 -270
  122. package/dist/core/outputStyles.js.map +0 -1
  123. package/dist/core/toolPatternAnalyzer.d.ts +0 -87
  124. package/dist/core/toolPatternAnalyzer.d.ts.map +0 -1
  125. package/dist/core/toolPatternAnalyzer.js +0 -272
  126. package/dist/core/toolPatternAnalyzer.js.map +0 -1
  127. package/dist/tools/backgroundBashTools.d.ts +0 -21
  128. package/dist/tools/backgroundBashTools.d.ts.map +0 -1
  129. package/dist/tools/backgroundBashTools.js +0 -215
  130. package/dist/tools/backgroundBashTools.js.map +0 -1
  131. package/dist/tools/code-quality-dashboard.d.ts +0 -57
  132. package/dist/tools/code-quality-dashboard.d.ts.map +0 -1
  133. package/dist/tools/code-quality-dashboard.js +0 -218
  134. package/dist/tools/code-quality-dashboard.js.map +0 -1
  135. package/dist/tools/tao/rlEngine.d.ts +0 -40
  136. package/dist/tools/tao/rlEngine.d.ts.map +0 -1
  137. package/dist/tools/tao/rlEngine.js +0 -237
  138. package/dist/tools/tao/rlEngine.js.map +0 -1
@@ -0,0 +1,613 @@
1
+ /**
2
+ * Persistent Objective Store
3
+ *
4
+ * Enables true APT (Advanced Persistent Task) execution by storing:
5
+ * - Objectives with state across sessions
6
+ * - Execution checkpoints for resumption
7
+ * - Artifact index for retrieval
8
+ * - Goal tracking with progress
9
+ *
10
+ * Philosophy: Never lose progress. Resume exactly where you left off.
11
+ */
12
+ import { randomUUID } from 'node:crypto';
13
+ import { mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync, existsSync, } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { homedir } from 'node:os';
16
+ // ═══════════════════════════════════════════════════════════════════════════════
17
+ // CONFIGURATION
18
+ // ═══════════════════════════════════════════════════════════════════════════════
19
+ const dataRoot = process.env['EROSOLAR_DATA_DIR']?.trim() || join(homedir(), '.erosolar');
20
+ const objectivesDir = join(dataRoot, 'objectives');
21
+ const checkpointsDir = join(dataRoot, 'checkpoints');
22
+ const artifactsDir = join(dataRoot, 'artifacts');
23
+ const indexPath = join(objectivesDir, 'index.json');
24
+ // ═══════════════════════════════════════════════════════════════════════════════
25
+ // OBJECTIVE STORE CLASS
26
+ // ═══════════════════════════════════════════════════════════════════════════════
27
+ export class PersistentObjectiveStore {
28
+ index;
29
+ artifactIndex = new Map();
30
+ constructor() {
31
+ this.ensureDirectories();
32
+ this.index = this.loadIndex();
33
+ this.loadArtifactIndex();
34
+ }
35
+ // ─────────────────────────────────────────────────────────────────────────────
36
+ // OBJECTIVE MANAGEMENT
37
+ // ─────────────────────────────────────────────────────────────────────────────
38
+ /**
39
+ * Create a new persistent objective
40
+ */
41
+ createObjective(params) {
42
+ const id = randomUUID();
43
+ const now = new Date().toISOString();
44
+ const objective = {
45
+ id,
46
+ name: params.name,
47
+ description: params.description,
48
+ state: 'pending',
49
+ priority: params.priority || 'medium',
50
+ targets: params.targets,
51
+ constraints: params.constraints || [],
52
+ goals: params.goals,
53
+ goalsCompleted: [],
54
+ config: {
55
+ depth: params.config?.depth || 'standard',
56
+ stealth: params.config?.stealth ?? false,
57
+ maxDuration: params.config?.maxDuration,
58
+ maxAttempts: params.config?.maxAttempts,
59
+ continueOnFailure: params.config?.continueOnFailure ?? true,
60
+ },
61
+ progress: {
62
+ phasesCompleted: [],
63
+ techniquesExecuted: 0,
64
+ techniquesSucceeded: 0,
65
+ artifactsCollected: 0,
66
+ lastActivityAt: now,
67
+ totalExecutionTime: 0,
68
+ },
69
+ createdAt: now,
70
+ updatedAt: now,
71
+ tags: params.tags || [],
72
+ notes: [],
73
+ parentObjectiveId: params.parentObjectiveId,
74
+ childObjectiveIds: [],
75
+ };
76
+ // Save objective
77
+ this.saveObjective(objective);
78
+ // Update index
79
+ this.index.objectives[id] = this.summarizeObjective(objective);
80
+ this.saveIndex();
81
+ // If has parent, update parent's children
82
+ if (params.parentObjectiveId) {
83
+ const parent = this.loadObjective(params.parentObjectiveId);
84
+ if (parent) {
85
+ parent.childObjectiveIds.push(id);
86
+ this.saveObjective(parent);
87
+ }
88
+ }
89
+ return objective;
90
+ }
91
+ /**
92
+ * Get an objective by ID
93
+ */
94
+ getObjective(id) {
95
+ return this.loadObjective(id);
96
+ }
97
+ /**
98
+ * Update an objective
99
+ */
100
+ updateObjective(id, updates) {
101
+ const objective = this.loadObjective(id);
102
+ if (!objective)
103
+ return null;
104
+ const updated = {
105
+ ...objective,
106
+ ...updates,
107
+ id: objective.id,
108
+ createdAt: objective.createdAt,
109
+ updatedAt: new Date().toISOString(),
110
+ };
111
+ this.saveObjective(updated);
112
+ this.index.objectives[id] = this.summarizeObjective(updated);
113
+ this.saveIndex();
114
+ return updated;
115
+ }
116
+ /**
117
+ * Delete an objective
118
+ */
119
+ deleteObjective(id) {
120
+ if (!this.index.objectives[id])
121
+ return false;
122
+ // Delete objective file
123
+ const objPath = join(objectivesDir, `${id}.json`);
124
+ if (existsSync(objPath)) {
125
+ rmSync(objPath, { force: true });
126
+ }
127
+ // Delete associated checkpoints
128
+ const checkpoints = this.listCheckpoints(id);
129
+ for (const cp of checkpoints) {
130
+ this.deleteCheckpoint(cp.id);
131
+ }
132
+ // Delete associated artifacts
133
+ const artifacts = this.artifactIndex.get(id) || [];
134
+ for (const artifact of artifacts) {
135
+ this.deleteArtifact(artifact.id);
136
+ }
137
+ // Update index
138
+ delete this.index.objectives[id];
139
+ if (this.index.activeObjectiveId === id) {
140
+ this.index.activeObjectiveId = undefined;
141
+ }
142
+ this.saveIndex();
143
+ return true;
144
+ }
145
+ /**
146
+ * List all objectives
147
+ */
148
+ listObjectives(filter) {
149
+ let summaries = Object.values(this.index.objectives);
150
+ if (filter?.state) {
151
+ const states = Array.isArray(filter.state) ? filter.state : [filter.state];
152
+ summaries = summaries.filter(s => states.includes(s.state));
153
+ }
154
+ if (filter?.priority) {
155
+ const priorities = Array.isArray(filter.priority) ? filter.priority : [filter.priority];
156
+ summaries = summaries.filter(s => priorities.includes(s.priority));
157
+ }
158
+ if (filter?.tags && filter.tags.length > 0) {
159
+ summaries = summaries.filter(s => filter.tags.some(tag => s.tags.includes(tag)));
160
+ }
161
+ return summaries.sort((a, b) => {
162
+ // Sort by priority first, then by last activity
163
+ const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
164
+ const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
165
+ if (priorityDiff !== 0)
166
+ return priorityDiff;
167
+ return new Date(b.lastActivityAt).getTime() - new Date(a.lastActivityAt).getTime();
168
+ });
169
+ }
170
+ /**
171
+ * Get the currently active objective
172
+ */
173
+ getActiveObjective() {
174
+ if (!this.index.activeObjectiveId)
175
+ return null;
176
+ return this.loadObjective(this.index.activeObjectiveId);
177
+ }
178
+ /**
179
+ * Set the active objective
180
+ */
181
+ setActiveObjective(id) {
182
+ if (id && !this.index.objectives[id]) {
183
+ throw new Error(`Objective ${id} not found`);
184
+ }
185
+ // Mark previous active as paused if it was active
186
+ if (this.index.activeObjectiveId) {
187
+ const prev = this.loadObjective(this.index.activeObjectiveId);
188
+ if (prev && prev.state === 'active') {
189
+ this.updateObjective(this.index.activeObjectiveId, { state: 'paused' });
190
+ }
191
+ }
192
+ this.index.activeObjectiveId = id ?? undefined;
193
+ this.saveIndex();
194
+ // Mark new objective as active
195
+ if (id) {
196
+ this.updateObjective(id, { state: 'active', startedAt: new Date().toISOString() });
197
+ }
198
+ }
199
+ // ─────────────────────────────────────────────────────────────────────────────
200
+ // CHECKPOINT MANAGEMENT
201
+ // ─────────────────────────────────────────────────────────────────────────────
202
+ /**
203
+ * Create an execution checkpoint
204
+ */
205
+ createCheckpoint(objectiveId, state) {
206
+ const id = `cp-${Date.now()}-${randomUUID().slice(0, 8)}`;
207
+ const checkpoint = {
208
+ id,
209
+ objectiveId,
210
+ createdAt: new Date().toISOString(),
211
+ ...state,
212
+ };
213
+ // Save checkpoint
214
+ const cpPath = join(checkpointsDir, objectiveId);
215
+ mkdirSync(cpPath, { recursive: true });
216
+ writeFileSync(join(cpPath, `${id}.json`), JSON.stringify(checkpoint, null, 2), 'utf-8');
217
+ // Update objective with checkpoint reference
218
+ this.updateObjective(objectiveId, {
219
+ progress: {
220
+ ...this.loadObjective(objectiveId).progress,
221
+ lastCheckpointId: id,
222
+ lastActivityAt: checkpoint.createdAt,
223
+ },
224
+ });
225
+ return checkpoint;
226
+ }
227
+ /**
228
+ * Load the latest checkpoint for an objective
229
+ */
230
+ getLatestCheckpoint(objectiveId) {
231
+ const checkpoints = this.listCheckpoints(objectiveId);
232
+ return checkpoints[0] || null;
233
+ }
234
+ /**
235
+ * Load a specific checkpoint
236
+ */
237
+ getCheckpoint(checkpointId) {
238
+ // Extract objective ID from checkpoint files
239
+ const dirs = readdirSync(checkpointsDir, { withFileTypes: true });
240
+ for (const dir of dirs) {
241
+ if (!dir.isDirectory())
242
+ continue;
243
+ const cpPath = join(checkpointsDir, dir.name, `${checkpointId}.json`);
244
+ if (existsSync(cpPath)) {
245
+ return JSON.parse(readFileSync(cpPath, 'utf-8'));
246
+ }
247
+ }
248
+ return null;
249
+ }
250
+ /**
251
+ * List checkpoints for an objective
252
+ */
253
+ listCheckpoints(objectiveId) {
254
+ const cpPath = join(checkpointsDir, objectiveId);
255
+ if (!existsSync(cpPath))
256
+ return [];
257
+ const files = readdirSync(cpPath).filter(f => f.endsWith('.json'));
258
+ const checkpoints = [];
259
+ for (const file of files) {
260
+ try {
261
+ const cp = JSON.parse(readFileSync(join(cpPath, file), 'utf-8'));
262
+ checkpoints.push(cp);
263
+ }
264
+ catch {
265
+ // Skip invalid checkpoints
266
+ }
267
+ }
268
+ // Sort by creation time, newest first
269
+ return checkpoints.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
270
+ }
271
+ /**
272
+ * Delete a checkpoint
273
+ */
274
+ deleteCheckpoint(checkpointId) {
275
+ const dirs = readdirSync(checkpointsDir, { withFileTypes: true });
276
+ for (const dir of dirs) {
277
+ if (!dir.isDirectory())
278
+ continue;
279
+ const cpPath = join(checkpointsDir, dir.name, `${checkpointId}.json`);
280
+ if (existsSync(cpPath)) {
281
+ rmSync(cpPath, { force: true });
282
+ return true;
283
+ }
284
+ }
285
+ return false;
286
+ }
287
+ // ─────────────────────────────────────────────────────────────────────────────
288
+ // ARTIFACT MANAGEMENT
289
+ // ─────────────────────────────────────────────────────────────────────────────
290
+ /**
291
+ * Store an artifact
292
+ */
293
+ storeArtifact(params) {
294
+ const id = `art-${Date.now()}-${randomUUID().slice(0, 8)}`;
295
+ const timestamp = new Date().toISOString();
296
+ // Save artifact data
297
+ const dataPath = join(artifactsDir, params.objectiveId, `${id}.dat`);
298
+ mkdirSync(join(artifactsDir, params.objectiveId), { recursive: true });
299
+ writeFileSync(dataPath, params.data, 'utf-8');
300
+ const artifact = {
301
+ id,
302
+ objectiveId: params.objectiveId,
303
+ checkpointId: params.checkpointId,
304
+ techniqueId: params.techniqueId,
305
+ type: params.type,
306
+ timestamp,
307
+ target: params.target,
308
+ phase: params.phase,
309
+ dataPath,
310
+ summary: params.summary || `${params.type} from ${params.techniqueId}`,
311
+ tags: params.tags || [],
312
+ };
313
+ // Update artifact index
314
+ const existing = this.artifactIndex.get(params.objectiveId) || [];
315
+ existing.push(artifact);
316
+ this.artifactIndex.set(params.objectiveId, existing);
317
+ // Save artifact metadata
318
+ writeFileSync(join(artifactsDir, params.objectiveId, `${id}.meta.json`), JSON.stringify(artifact, null, 2), 'utf-8');
319
+ // Update objective progress
320
+ const objective = this.loadObjective(params.objectiveId);
321
+ if (objective) {
322
+ this.updateObjective(params.objectiveId, {
323
+ progress: {
324
+ ...objective.progress,
325
+ artifactsCollected: objective.progress.artifactsCollected + 1,
326
+ },
327
+ });
328
+ }
329
+ return artifact;
330
+ }
331
+ /**
332
+ * Get artifact data
333
+ */
334
+ getArtifactData(artifactId) {
335
+ for (const [, artifacts] of this.artifactIndex) {
336
+ const artifact = artifacts.find(a => a.id === artifactId);
337
+ if (artifact && existsSync(artifact.dataPath)) {
338
+ return readFileSync(artifact.dataPath, 'utf-8');
339
+ }
340
+ }
341
+ return null;
342
+ }
343
+ /**
344
+ * List artifacts for an objective
345
+ */
346
+ listArtifacts(objectiveId, filter) {
347
+ let artifacts = this.artifactIndex.get(objectiveId) || [];
348
+ if (filter?.type) {
349
+ artifacts = artifacts.filter(a => a.type === filter.type);
350
+ }
351
+ if (filter?.phase) {
352
+ artifacts = artifacts.filter(a => a.phase === filter.phase);
353
+ }
354
+ if (filter?.techniqueId) {
355
+ artifacts = artifacts.filter(a => a.techniqueId === filter.techniqueId);
356
+ }
357
+ if (filter?.tags && filter.tags.length > 0) {
358
+ artifacts = artifacts.filter(a => filter.tags.some(tag => a.tags.includes(tag)));
359
+ }
360
+ return artifacts.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
361
+ }
362
+ /**
363
+ * Search artifacts across all objectives
364
+ */
365
+ searchArtifacts(query) {
366
+ const results = [];
367
+ for (const [, artifacts] of this.artifactIndex) {
368
+ for (const artifact of artifacts) {
369
+ let matches = true;
370
+ if (query.type && artifact.type !== query.type)
371
+ matches = false;
372
+ if (query.phase && artifact.phase !== query.phase)
373
+ matches = false;
374
+ if (query.target && !artifact.target.includes(query.target))
375
+ matches = false;
376
+ if (query.tags && !query.tags.some(t => artifact.tags.includes(t)))
377
+ matches = false;
378
+ if (query.since && new Date(artifact.timestamp) < new Date(query.since))
379
+ matches = false;
380
+ if (matches)
381
+ results.push(artifact);
382
+ }
383
+ }
384
+ return results.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
385
+ }
386
+ /**
387
+ * Delete an artifact
388
+ */
389
+ deleteArtifact(artifactId) {
390
+ for (const [objectiveId, artifacts] of this.artifactIndex) {
391
+ const idx = artifacts.findIndex(a => a.id === artifactId);
392
+ if (idx >= 0) {
393
+ const artifact = artifacts[idx];
394
+ if (artifact) {
395
+ // Delete data file
396
+ if (existsSync(artifact.dataPath)) {
397
+ rmSync(artifact.dataPath, { force: true });
398
+ }
399
+ // Delete metadata
400
+ const metaPath = artifact.dataPath.replace('.dat', '.meta.json');
401
+ if (existsSync(metaPath)) {
402
+ rmSync(metaPath, { force: true });
403
+ }
404
+ // Remove from index
405
+ artifacts.splice(idx, 1);
406
+ this.artifactIndex.set(objectiveId, artifacts);
407
+ return true;
408
+ }
409
+ }
410
+ }
411
+ return false;
412
+ }
413
+ // ─────────────────────────────────────────────────────────────────────────────
414
+ // GOAL TRACKING
415
+ // ─────────────────────────────────────────────────────────────────────────────
416
+ /**
417
+ * Mark a goal as completed
418
+ */
419
+ completeGoal(objectiveId, goal) {
420
+ const objective = this.loadObjective(objectiveId);
421
+ if (!objective)
422
+ return null;
423
+ if (!objective.goalsCompleted.includes(goal)) {
424
+ objective.goalsCompleted.push(goal);
425
+ }
426
+ // Update current goal to next uncompleted
427
+ const nextGoal = objective.goals.find(g => !objective.goalsCompleted.includes(g));
428
+ objective.currentGoal = nextGoal;
429
+ // Check if all goals completed
430
+ if (objective.goalsCompleted.length >= objective.goals.length) {
431
+ objective.state = 'completed';
432
+ objective.completedAt = new Date().toISOString();
433
+ }
434
+ return this.updateObjective(objectiveId, objective);
435
+ }
436
+ /**
437
+ * Update progress for an objective
438
+ */
439
+ updateProgress(objectiveId, progress) {
440
+ const objective = this.loadObjective(objectiveId);
441
+ if (!objective)
442
+ return null;
443
+ return this.updateObjective(objectiveId, {
444
+ progress: {
445
+ ...objective.progress,
446
+ ...progress,
447
+ lastActivityAt: new Date().toISOString(),
448
+ },
449
+ });
450
+ }
451
+ /**
452
+ * Record technique execution
453
+ */
454
+ recordTechniqueExecution(objectiveId, execution) {
455
+ const objective = this.loadObjective(objectiveId);
456
+ if (!objective)
457
+ return;
458
+ // Update progress
459
+ this.updateProgress(objectiveId, {
460
+ techniquesExecuted: objective.progress.techniquesExecuted + 1,
461
+ techniquesSucceeded: objective.progress.techniquesSucceeded + (execution.success ? 1 : 0),
462
+ });
463
+ // Store artifacts
464
+ for (const artifact of execution.artifacts) {
465
+ this.storeArtifact({
466
+ objectiveId,
467
+ techniqueId: execution.techniqueId,
468
+ type: artifact.type,
469
+ target: '', // Would need to be passed
470
+ phase: execution.phase,
471
+ data: artifact.data,
472
+ summary: `${artifact.type} from ${execution.techniqueName}`,
473
+ });
474
+ }
475
+ // Update phases completed
476
+ if (execution.success && !objective.progress.phasesCompleted.includes(execution.phase)) {
477
+ this.updateProgress(objectiveId, {
478
+ phasesCompleted: [...objective.progress.phasesCompleted, execution.phase],
479
+ });
480
+ }
481
+ }
482
+ // ─────────────────────────────────────────────────────────────────────────────
483
+ // INTERNAL HELPERS
484
+ // ─────────────────────────────────────────────────────────────────────────────
485
+ ensureDirectories() {
486
+ mkdirSync(objectivesDir, { recursive: true });
487
+ mkdirSync(checkpointsDir, { recursive: true });
488
+ mkdirSync(artifactsDir, { recursive: true });
489
+ }
490
+ loadIndex() {
491
+ if (existsSync(indexPath)) {
492
+ try {
493
+ return JSON.parse(readFileSync(indexPath, 'utf-8'));
494
+ }
495
+ catch {
496
+ return { version: 1, objectives: {} };
497
+ }
498
+ }
499
+ return { version: 1, objectives: {} };
500
+ }
501
+ saveIndex() {
502
+ writeFileSync(indexPath, JSON.stringify(this.index, null, 2), 'utf-8');
503
+ }
504
+ loadObjective(id) {
505
+ const path = join(objectivesDir, `${id}.json`);
506
+ if (!existsSync(path))
507
+ return null;
508
+ try {
509
+ return JSON.parse(readFileSync(path, 'utf-8'));
510
+ }
511
+ catch {
512
+ return null;
513
+ }
514
+ }
515
+ saveObjective(objective) {
516
+ writeFileSync(join(objectivesDir, `${objective.id}.json`), JSON.stringify(objective, null, 2), 'utf-8');
517
+ }
518
+ summarizeObjective(objective) {
519
+ return {
520
+ id: objective.id,
521
+ name: objective.name,
522
+ state: objective.state,
523
+ priority: objective.priority,
524
+ goalsTotal: objective.goals.length,
525
+ goalsCompleted: objective.goalsCompleted.length,
526
+ lastActivityAt: objective.progress.lastActivityAt,
527
+ tags: objective.tags,
528
+ };
529
+ }
530
+ loadArtifactIndex() {
531
+ if (!existsSync(artifactsDir))
532
+ return;
533
+ const dirs = readdirSync(artifactsDir, { withFileTypes: true });
534
+ for (const dir of dirs) {
535
+ if (!dir.isDirectory())
536
+ continue;
537
+ const objectiveId = dir.name;
538
+ const artifacts = [];
539
+ const files = readdirSync(join(artifactsDir, objectiveId))
540
+ .filter(f => f.endsWith('.meta.json'));
541
+ for (const file of files) {
542
+ try {
543
+ const artifact = JSON.parse(readFileSync(join(artifactsDir, objectiveId, file), 'utf-8'));
544
+ artifacts.push(artifact);
545
+ }
546
+ catch {
547
+ // Skip invalid artifacts
548
+ }
549
+ }
550
+ this.artifactIndex.set(objectiveId, artifacts);
551
+ }
552
+ }
553
+ }
554
+ // ═══════════════════════════════════════════════════════════════════════════════
555
+ // SINGLETON INSTANCE
556
+ // ═══════════════════════════════════════════════════════════════════════════════
557
+ let storeInstance = null;
558
+ export function getObjectiveStore() {
559
+ if (!storeInstance) {
560
+ storeInstance = new PersistentObjectiveStore();
561
+ }
562
+ return storeInstance;
563
+ }
564
+ // ═══════════════════════════════════════════════════════════════════════════════
565
+ // CONVENIENCE FUNCTIONS
566
+ // ═══════════════════════════════════════════════════════════════════════════════
567
+ /**
568
+ * Create a new APT objective
569
+ */
570
+ export function createAPTObjective(params) {
571
+ const store = getObjectiveStore();
572
+ return store.createObjective({
573
+ name: params.name,
574
+ description: `APT operation: ${params.name}`,
575
+ targets: params.targets,
576
+ goals: params.goals || ['reconnaissance', 'access', 'persistence'],
577
+ priority: params.priority || 'high',
578
+ config: {
579
+ depth: params.depth || 'standard',
580
+ stealth: params.stealth ?? true,
581
+ continueOnFailure: true,
582
+ },
583
+ tags: ['apt', 'persistent'],
584
+ });
585
+ }
586
+ /**
587
+ * Resume an objective from checkpoint
588
+ */
589
+ export function resumeObjective(objectiveId) {
590
+ const store = getObjectiveStore();
591
+ const objective = store.getObjective(objectiveId);
592
+ if (!objective)
593
+ return null;
594
+ const checkpoint = store.getLatestCheckpoint(objectiveId);
595
+ const artifacts = store.listArtifacts(objectiveId);
596
+ // Mark as active
597
+ store.setActiveObjective(objectiveId);
598
+ return { objective, checkpoint, artifacts };
599
+ }
600
+ /**
601
+ * Quick status check
602
+ */
603
+ export function getAPTStatus() {
604
+ const store = getObjectiveStore();
605
+ const active = store.getActiveObjective();
606
+ const all = store.listObjectives();
607
+ return {
608
+ active: active ? store.listObjectives({ state: 'active' })[0] || null : null,
609
+ pending: store.listObjectives({ state: ['pending', 'paused', 'checkpointed'] }),
610
+ completed: store.listObjectives({ state: 'completed' }),
611
+ };
612
+ }
613
+ //# sourceMappingURL=persistentObjectiveStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistentObjectiveStore.js","sourceRoot":"","sources":["../../src/core/persistentObjectiveStore.ts"],"names":[],"mappings":"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"}
@@ -303,7 +303,7 @@ export function toggleFeatureFlag(key, value) {
303
303
  export const FEATURE_FLAG_INFO = {
304
304
  alphaZeroDual: {
305
305
  label: 'AlphaZero Dual',
306
- description: 'Dual-agent competition mode where agents compete for best response',
306
+ description: 'Dual-agent RL self-improvement (primary + refiner orchestration pass)',
307
307
  },
308
308
  verification: {
309
309
  label: 'Verification',