@rk0429/agentic-relay 19.4.3 → 19.5.0

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 (65) hide show
  1. package/dist/application/event-log-sink.d.ts +22 -0
  2. package/dist/application/event-log-sink.js +101 -0
  3. package/dist/application/event-log-sink.js.map +1 -0
  4. package/dist/application/housekeeping.d.ts +2 -0
  5. package/dist/application/housekeeping.js +62 -6
  6. package/dist/application/housekeeping.js.map +1 -1
  7. package/dist/application/workflow-execution-service.d.ts +146 -0
  8. package/dist/application/workflow-execution-service.js +989 -0
  9. package/dist/application/workflow-execution-service.js.map +1 -0
  10. package/dist/bin/relay.js +203 -9
  11. package/dist/bin/relay.js.map +1 -1
  12. package/dist/core/types.d.ts +2 -1
  13. package/dist/domain/config.d.ts +1 -0
  14. package/dist/domain/config.js +8 -0
  15. package/dist/domain/config.js.map +1 -1
  16. package/dist/domain/exit-condition-evaluator.d.ts +13 -0
  17. package/dist/domain/exit-condition-evaluator.js +37 -0
  18. package/dist/domain/exit-condition-evaluator.js.map +1 -0
  19. package/dist/domain/loop-execution.d.ts +123 -0
  20. package/dist/domain/loop-execution.js +419 -0
  21. package/dist/domain/loop-execution.js.map +1 -0
  22. package/dist/domain/session-resolver.d.ts +6 -0
  23. package/dist/domain/session-resolver.js +49 -0
  24. package/dist/domain/session-resolver.js.map +1 -0
  25. package/dist/domain/workflow-loader.d.ts +16 -0
  26. package/dist/domain/workflow-loader.js +140 -0
  27. package/dist/domain/workflow-loader.js.map +1 -0
  28. package/dist/domain/workflow-schema.d.ts +144 -0
  29. package/dist/domain/workflow-schema.js +236 -0
  30. package/dist/domain/workflow-schema.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/infrastructure/backends/streaming-text-extractors.js +1 -1
  35. package/dist/infrastructure/backends/streaming-text-extractors.js.map +1 -1
  36. package/dist/infrastructure/store/loop-state-repository.d.ts +28 -0
  37. package/dist/infrastructure/store/loop-state-repository.js +250 -0
  38. package/dist/infrastructure/store/loop-state-repository.js.map +1 -0
  39. package/dist/infrastructure/store/relay-store.d.ts +5 -0
  40. package/dist/infrastructure/store/relay-store.js +41 -0
  41. package/dist/infrastructure/store/relay-store.js.map +1 -1
  42. package/dist/interfaces/cli/components/InputBar.js +14 -4
  43. package/dist/interfaces/cli/components/InputBar.js.map +1 -1
  44. package/dist/interfaces/cli/components/MessageList.d.ts +2 -1
  45. package/dist/interfaces/cli/components/MessageList.js +4 -3
  46. package/dist/interfaces/cli/components/MessageList.js.map +1 -1
  47. package/dist/interfaces/cli/components/StatusBar.js +1 -1
  48. package/dist/interfaces/cli/components/StatusBar.js.map +1 -1
  49. package/dist/interfaces/cli/loop-progress-renderer.d.ts +11 -0
  50. package/dist/interfaces/cli/loop-progress-renderer.js +136 -0
  51. package/dist/interfaces/cli/loop-progress-renderer.js.map +1 -0
  52. package/dist/interfaces/cli/loop-progress-shell.d.ts +5 -0
  53. package/dist/interfaces/cli/loop-progress-shell.js +37 -0
  54. package/dist/interfaces/cli/loop-progress-shell.js.map +1 -0
  55. package/dist/interfaces/cli/relay-cli-args.d.ts +6 -0
  56. package/dist/interfaces/cli/relay-cli-args.js +39 -0
  57. package/dist/interfaces/cli/relay-cli-args.js.map +1 -1
  58. package/dist/interfaces/cli/relay-shell.js +21 -4
  59. package/dist/interfaces/cli/relay-shell.js.map +1 -1
  60. package/dist/interfaces/cli/text-input-utils.d.ts +8 -0
  61. package/dist/interfaces/cli/text-input-utils.js +34 -0
  62. package/dist/interfaces/cli/text-input-utils.js.map +1 -1
  63. package/dist/interfaces/mcp/relay-mcp-server.js +4 -3
  64. package/dist/interfaces/mcp/relay-mcp-server.js.map +1 -1
  65. package/package.json +2 -1
@@ -0,0 +1,22 @@
1
+ import { RelayStore } from "../infrastructure/store/relay-store.js";
2
+ export declare class LoopEventLogSink {
3
+ private readonly store;
4
+ constructor(store: RelayStore);
5
+ logLoopStarted(executionId: string, workflowName: string, maxIterations: number): Promise<void>;
6
+ logIterationStarted(executionId: string, iteration: number): Promise<void>;
7
+ logStepStarted(executionId: string, stepId: string, iteration: number, opts?: {
8
+ backend?: string;
9
+ role?: string;
10
+ }): Promise<void>;
11
+ logStepCompleted(executionId: string, stepId: string, iteration: number, relaySessionId: string, fullResponsePath: string, duration: number): Promise<void>;
12
+ logStepFailed(executionId: string, stepId: string, iteration: number, error: string, duration: number): Promise<void>;
13
+ logStepSkipped(executionId: string, stepId: string, iteration: number, reason: string): Promise<void>;
14
+ logExitConditionEvaluated(executionId: string, verdict: string, iteration: number): Promise<void>;
15
+ logExitConditionFailed(executionId: string, iteration: number, checkpoint: unknown, error: string): Promise<void>;
16
+ logLoopInterrupted(executionId: string, iteration: number, stateFilePath: string, opts?: {
17
+ nextStepId?: string;
18
+ pendingExitCondition?: unknown;
19
+ }): Promise<void>;
20
+ logLoopCompleted(executionId: string, completionReason: string, totalIterations: number, totalDuration: number): Promise<void>;
21
+ private appendLoopLog;
22
+ }
@@ -0,0 +1,101 @@
1
+ import { BACKEND_TYPES } from "../core/types.js";
2
+ export class LoopEventLogSink {
3
+ store;
4
+ constructor(store) {
5
+ this.store = store;
6
+ }
7
+ async logLoopStarted(executionId, workflowName, maxIterations) {
8
+ await this.appendLoopLog(executionId, "loop_started", "running", {
9
+ workflow_name: workflowName,
10
+ max_iterations: maxIterations,
11
+ });
12
+ }
13
+ async logIterationStarted(executionId, iteration) {
14
+ await this.appendLoopLog(executionId, "iteration_started", "running", {
15
+ iteration,
16
+ });
17
+ }
18
+ async logStepStarted(executionId, stepId, iteration, opts) {
19
+ await this.appendLoopLog(executionId, "step_started", "running", {
20
+ step_id: stepId,
21
+ iteration,
22
+ ...(opts?.backend ? { backend: opts.backend } : {}),
23
+ ...(opts?.role ? { role: opts.role } : {}),
24
+ }, normalizeBackend(opts?.backend));
25
+ }
26
+ async logStepCompleted(executionId, stepId, iteration, relaySessionId, fullResponsePath, duration) {
27
+ await this.appendLoopLog(executionId, "step_completed", "success", {
28
+ step_id: stepId,
29
+ iteration,
30
+ relay_session_id: relaySessionId,
31
+ full_response_path: fullResponsePath,
32
+ duration,
33
+ });
34
+ }
35
+ async logStepFailed(executionId, stepId, iteration, error, duration) {
36
+ await this.appendLoopLog(executionId, "step_failed", "error", {
37
+ step_id: stepId,
38
+ iteration,
39
+ error,
40
+ duration,
41
+ });
42
+ }
43
+ async logStepSkipped(executionId, stepId, iteration, reason) {
44
+ await this.appendLoopLog(executionId, "step_skipped", "success", {
45
+ step_id: stepId,
46
+ iteration,
47
+ reason,
48
+ });
49
+ }
50
+ async logExitConditionEvaluated(executionId, verdict, iteration) {
51
+ await this.appendLoopLog(executionId, "exit_condition_evaluated", "success", {
52
+ verdict,
53
+ iteration,
54
+ });
55
+ }
56
+ async logExitConditionFailed(executionId, iteration, checkpoint, error) {
57
+ await this.appendLoopLog(executionId, "exit_condition_failed", "error", {
58
+ iteration,
59
+ checkpoint,
60
+ error,
61
+ });
62
+ }
63
+ async logLoopInterrupted(executionId, iteration, stateFilePath, opts) {
64
+ await this.appendLoopLog(executionId, "loop_interrupted", "error", {
65
+ iteration,
66
+ state_file_path: stateFilePath,
67
+ ...(opts?.nextStepId ? { next_step_id: opts.nextStepId } : {}),
68
+ ...(opts?.pendingExitCondition !== undefined
69
+ ? { pending_exit_condition: opts.pendingExitCondition }
70
+ : {}),
71
+ });
72
+ }
73
+ async logLoopCompleted(executionId, completionReason, totalIterations, totalDuration) {
74
+ await this.appendLoopLog(executionId, "loop_completed", "success", {
75
+ completion_reason: completionReason,
76
+ total_iterations: totalIterations,
77
+ total_duration: totalDuration,
78
+ });
79
+ }
80
+ async appendLoopLog(executionId, eventType, status, loopDetails, backend) {
81
+ await this.store.appendLog({
82
+ timestamp: new Date().toISOString(),
83
+ session_id: executionId,
84
+ backend,
85
+ event_type: eventType,
86
+ status,
87
+ details: {
88
+ loop: loopDetails,
89
+ },
90
+ });
91
+ }
92
+ }
93
+ function normalizeBackend(backend) {
94
+ if (!backend) {
95
+ return undefined;
96
+ }
97
+ return BACKEND_TYPES.includes(backend)
98
+ ? backend
99
+ : undefined;
100
+ }
101
+ //# sourceMappingURL=event-log-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-log-sink.js","sourceRoot":"","sources":["../../src/application/event-log-sink.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface HousekeepingResult {
3
3
  pruned_tasks: number;
4
4
  deleted_log_files: number;
5
5
  deleted_sessions: number;
6
+ deleted_loop_states: number;
6
7
  }
7
8
  export interface ResourceStats {
8
9
  file_count: number;
@@ -18,5 +19,6 @@ export interface StorageStats {
18
19
  export declare function runStartupHousekeeping(store: RelayStore, options?: {
19
20
  now?: Date;
20
21
  dry_run?: boolean;
22
+ protectedLoopStateFile?: string;
21
23
  }): Promise<HousekeepingResult>;
22
24
  export declare function getStorageStats(store: RelayStore): Promise<StorageStats>;
@@ -1,17 +1,23 @@
1
1
  import { readdir, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { DEFAULT_LOGS_RETENTION_DAYS, DEFAULT_SESSIONS_RETENTION_DAYS, resolveConfiguredTaskRetentionDays, validateRetentionConfig, } from "../domain/config.js";
3
+ import { DEFAULT_LOGS_RETENTION_DAYS, DEFAULT_LOOPS_RETENTION_DAYS, DEFAULT_SESSIONS_RETENTION_DAYS, resolveConfiguredTaskRetentionDays, validateRetentionConfig, } from "../domain/config.js";
4
4
  import { collectPrunableTaskIds } from "../domain/task-retention.js";
5
+ import { LoopStateRepository } from "../infrastructure/store/loop-state-repository.js";
5
6
  const MS_PER_DAY = 24 * 60 * 60 * 1000;
6
7
  export async function runStartupHousekeeping(store, options = {}) {
7
8
  const now = options.now ?? new Date();
8
9
  const dryRun = options.dry_run ?? false;
10
+ const protectedLoopStateFile = options.protectedLoopStateFile
11
+ ? path.basename(options.protectedLoopStateFile)
12
+ : undefined;
9
13
  const config = await store.readConfig();
14
+ const loopStateRepo = new LoopStateRepository(store);
10
15
  validateRetentionConfig(config);
11
16
  const result = {
12
17
  pruned_tasks: 0,
13
18
  deleted_log_files: 0,
14
19
  deleted_sessions: 0,
20
+ deleted_loop_states: 0,
15
21
  };
16
22
  const [tasks, retention] = await Promise.all([
17
23
  store.listTasks(),
@@ -25,18 +31,41 @@ export async function runStartupHousekeeping(store, options = {}) {
25
31
  prunedAgentIds.add(task.agentId);
26
32
  }
27
33
  }
28
- const prunedSessionIds = await collectSessionIdsForAgents(store, prunedAgentIds);
34
+ const taskLinkedSessionIds = await collectSessionIdsForAgents(store, prunedAgentIds);
29
35
  if (!dryRun) {
30
36
  await Promise.all(prunableTaskIds.map((taskId) => store.deleteTask(taskId)));
31
- await Promise.all([...prunedSessionIds].map((sessionId) => Promise.all([store.deleteSession(sessionId), store.deleteResponse(sessionId)])));
32
37
  }
33
38
  result.pruned_tasks = prunableTaskIds.length;
34
- result.deleted_sessions += prunedSessionIds.size;
35
39
  const logsDays = config?.retention?.logs_days ?? DEFAULT_LOGS_RETENTION_DAYS;
36
40
  result.deleted_log_files = await pruneLogFiles(store, logsDays, now, dryRun);
41
+ const loopsDays = config?.retention?.loops_days ?? DEFAULT_LOOPS_RETENTION_DAYS;
42
+ const loopStatePrune = await pruneLoopStates(loopStateRepo, loopsDays, now, dryRun, protectedLoopStateFile);
43
+ result.deleted_loop_states = loopStatePrune.deletedLoopStates.length;
44
+ for (const warning of loopStatePrune.warnings) {
45
+ console.warn(warning);
46
+ }
47
+ if (loopStatePrune.warnings.length > 0) {
48
+ return result;
49
+ }
50
+ const activeLoopPins = await loopStateRepo.collectActiveLoopPins({
51
+ excludeFilenames: new Set(loopStatePrune.deletedLoopStates),
52
+ });
53
+ const deletableTaskLinkedSessionIds = new Set([...taskLinkedSessionIds].filter((sessionId) => !activeLoopPins.sessionIds.has(sessionId) &&
54
+ !activeLoopPins.responseIds.has(sessionId)));
55
+ if (!dryRun) {
56
+ await Promise.all([...deletableTaskLinkedSessionIds].map((sessionId) => Promise.all([store.deleteSession(sessionId), store.deleteResponse(sessionId)])));
57
+ }
58
+ result.deleted_sessions += deletableTaskLinkedSessionIds.size;
37
59
  const sessionsDays = config?.retention?.sessions_days ?? DEFAULT_SESSIONS_RETENTION_DAYS;
38
- result.deleted_sessions += await pruneSessionsAndResponses(store, sessionsDays, now, dryRun, prunedSessionIds);
39
- result.deleted_sessions += await deleteOrphanedResponses(store, dryRun, prunedSessionIds);
60
+ const excludedSessionIds = new Set([
61
+ ...deletableTaskLinkedSessionIds,
62
+ ...activeLoopPins.sessionIds,
63
+ ]);
64
+ result.deleted_sessions += await pruneSessionsAndResponses(store, sessionsDays, now, dryRun, excludedSessionIds);
65
+ result.deleted_sessions += await deleteOrphanedResponses(store, dryRun, new Set([
66
+ ...deletableTaskLinkedSessionIds,
67
+ ...activeLoopPins.responseIds,
68
+ ]));
40
69
  return result;
41
70
  }
42
71
  export async function getStorageStats(store) {
@@ -96,6 +125,33 @@ async function pruneSessionsAndResponses(store, retentionDays, now, dryRun, excl
96
125
  }
97
126
  return deleted;
98
127
  }
128
+ async function pruneLoopStates(loopStateRepo, retentionDays, now, dryRun, protectedLoopStateFile) {
129
+ const cutoffMs = now.getTime() - retentionDays * MS_PER_DAY;
130
+ const stateFiles = await loopStateRepo.listStateFiles();
131
+ const deletedLoopStates = [];
132
+ const warnings = [];
133
+ for (const filename of stateFiles) {
134
+ const { state, warning } = await loopStateRepo.tryParseState(filename);
135
+ if (warning) {
136
+ warnings.push(warning);
137
+ continue;
138
+ }
139
+ if (filename === protectedLoopStateFile) {
140
+ continue;
141
+ }
142
+ const interruptedAtMs = Date.parse(state.interruptedAt);
143
+ if (!Number.isNaN(interruptedAtMs) && interruptedAtMs <= cutoffMs) {
144
+ deletedLoopStates.push(filename);
145
+ }
146
+ }
147
+ if (!dryRun) {
148
+ await Promise.all(deletedLoopStates.map((filename) => loopStateRepo.deleteState(filename)));
149
+ }
150
+ return {
151
+ deletedLoopStates,
152
+ warnings,
153
+ };
154
+ }
99
155
  async function deleteOrphanedResponses(store, dryRun, excludedResponseIds) {
100
156
  const [sessionIds, responseIds] = await Promise.all([
101
157
  store.listSessionIds(),
@@ -1 +1 @@
1
- {"version":3,"file":"housekeeping.js","sourceRoot":"","sources":["../../src/application/housekeeping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"housekeeping.js","sourceRoot":"","sources":["../../src/application/housekeeping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import type { BackendType } from "../core/types.js";
2
+ import { NestDepth, type CompletionReason, type LoopProgressSnapshot } from "../domain/loop-execution.js";
3
+ import type { StepId } from "../domain/workflow-schema.js";
4
+ import { type WorkflowFileRepository } from "../domain/workflow-loader.js";
5
+ import { LoopStateRepository } from "../infrastructure/store/loop-state-repository.js";
6
+ import { RelayStore } from "../infrastructure/store/relay-store.js";
7
+ import { LoopEventLogSink } from "./event-log-sink.js";
8
+ export interface WorkflowExecutionDeps {
9
+ store: RelayStore;
10
+ loopStateRepo: LoopStateRepository;
11
+ eventLog: LoopEventLogSink;
12
+ executeAgentStep: AgentStepExecutor;
13
+ executeCommand: CommandExecutor;
14
+ workflowRepo: WorkflowFileRepository;
15
+ }
16
+ export interface AgentStepExecutor {
17
+ execute(opts: {
18
+ prompt: string;
19
+ backend?: BackendType;
20
+ role?: string;
21
+ resumeFromSessionId?: string;
22
+ cwd: string;
23
+ signal?: AbortSignal;
24
+ }): Promise<{
25
+ relaySessionId: string;
26
+ fullResponsePath: string;
27
+ summary: string;
28
+ status: "success" | "error";
29
+ }>;
30
+ }
31
+ export interface CommandExecutor {
32
+ execute(command: string, opts: {
33
+ cwd: string;
34
+ signal?: AbortSignal;
35
+ }): Promise<{
36
+ exitCode: number;
37
+ }>;
38
+ }
39
+ export interface StartLoopOptions {
40
+ workflowPath: string;
41
+ cwd: string;
42
+ initialSessionId?: string;
43
+ signal?: AbortSignal;
44
+ nestDepth?: NestDepth;
45
+ }
46
+ export interface ResumeLoopOptions {
47
+ workflowPath: string;
48
+ stateFile: string;
49
+ cwd: string;
50
+ forceResume?: boolean;
51
+ signal?: AbortSignal;
52
+ nestDepth?: NestDepth;
53
+ }
54
+ export interface LoopExecutionResult {
55
+ status: "completed" | "interrupted";
56
+ completionReason?: CompletionReason;
57
+ totalIterations: number;
58
+ totalDuration: number;
59
+ stateFilePath?: string;
60
+ executionId: string;
61
+ snapshot: LoopProgressSnapshot;
62
+ }
63
+ export type LoopProgressEvent = {
64
+ type: "resume";
65
+ } | {
66
+ type: "iteration_started";
67
+ } | {
68
+ type: "step_started";
69
+ stepId: StepId;
70
+ startedAt: string;
71
+ } | {
72
+ type: "step_completed";
73
+ stepId: StepId;
74
+ } | {
75
+ type: "step_failed";
76
+ stepId: StepId;
77
+ transient: boolean;
78
+ } | {
79
+ type: "step_skipped";
80
+ stepId: StepId;
81
+ } | {
82
+ type: "loop_completed";
83
+ completionReason?: CompletionReason;
84
+ } | {
85
+ type: "loop_interrupted";
86
+ stateFilePath: string;
87
+ };
88
+ export interface LoopProgressUpdate {
89
+ snapshot: LoopProgressSnapshot;
90
+ event: LoopProgressEvent;
91
+ }
92
+ export interface LoopProgressReporter {
93
+ report(update: LoopProgressUpdate): Promise<void> | void;
94
+ }
95
+ export interface SignalTarget {
96
+ on(event: "SIGINT", listener: () => void): void;
97
+ off(event: "SIGINT", listener: () => void): void;
98
+ }
99
+ export interface WorkflowExecutionServiceOptions {
100
+ now?: () => Date;
101
+ interruptGraceMs?: number;
102
+ signalTarget?: SignalTarget;
103
+ progressReporter?: LoopProgressReporter;
104
+ }
105
+ export declare class WorkflowExecutionService {
106
+ private readonly deps;
107
+ private readonly now;
108
+ private readonly interruptGraceMs;
109
+ private readonly signalTarget;
110
+ private readonly progressReporter?;
111
+ constructor(deps: WorkflowExecutionDeps, options?: WorkflowExecutionServiceOptions);
112
+ startLoop(opts: StartLoopOptions): Promise<LoopExecutionResult>;
113
+ resumeLoop(opts: ResumeLoopOptions): Promise<LoopExecutionResult>;
114
+ private finalizeRootResult;
115
+ private persistInterruptState;
116
+ private runWorkflowFrame;
117
+ private resumeFrames;
118
+ private resumeParentFrames;
119
+ private executeStep;
120
+ private runSubWorkflow;
121
+ private evaluateExitCondition;
122
+ private handleStepFailure;
123
+ private logNewlySkippedSteps;
124
+ private reportProgress;
125
+ private loadWorkflowDefinition;
126
+ private verifyWorkflowDigests;
127
+ private validateResumeArtifacts;
128
+ private assertSessionExists;
129
+ private assertResponseExists;
130
+ private buildExitConditionPrompt;
131
+ private readVerdictOutput;
132
+ private buildExitConditionCheckpoint;
133
+ private rebaseInterruptState;
134
+ private getNextStepIdAfter;
135
+ private getStepIndex;
136
+ private getStepDefinition;
137
+ private requireCompletedStepResult;
138
+ private findTerminalCompletedResult;
139
+ private toPublicResult;
140
+ private assertFrameMatchesWorkflow;
141
+ private assertChildFrameLink;
142
+ private computeDuration;
143
+ private formatError;
144
+ }
145
+ export declare function startLoop(deps: WorkflowExecutionDeps, opts: StartLoopOptions, serviceOptions?: WorkflowExecutionServiceOptions): Promise<LoopExecutionResult>;
146
+ export declare function resumeLoop(deps: WorkflowExecutionDeps, opts: ResumeLoopOptions, serviceOptions?: WorkflowExecutionServiceOptions): Promise<LoopExecutionResult>;