ralph-research 0.1.2 → 0.1.3
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/README.md +127 -101
- package/dist/adapters/fs/json-file-research-project-defaults-store.d.ts +8 -0
- package/dist/adapters/fs/json-file-research-project-defaults-store.js +30 -0
- package/dist/adapters/fs/json-file-research-project-defaults-store.js.map +1 -0
- package/dist/adapters/fs/json-file-research-session-repository.d.ts +24 -0
- package/dist/adapters/fs/json-file-research-session-repository.js +199 -0
- package/dist/adapters/fs/json-file-research-session-repository.js.map +1 -0
- package/dist/adapters/fs/manifest-loader.js +8 -1
- package/dist/adapters/fs/manifest-loader.js.map +1 -1
- package/dist/adapters/proposer/codex-cli-proposer.d.ts +16 -0
- package/dist/adapters/proposer/codex-cli-proposer.js +106 -0
- package/dist/adapters/proposer/codex-cli-proposer.js.map +1 -0
- package/dist/adapters/proposer/codex-cli-session-driver.d.ts +64 -0
- package/dist/adapters/proposer/codex-cli-session-driver.js +182 -0
- package/dist/adapters/proposer/codex-cli-session-driver.js.map +1 -0
- package/dist/adapters/proposer/codex-cli-session-manager.d.ts +79 -0
- package/dist/adapters/proposer/codex-cli-session-manager.js +248 -0
- package/dist/adapters/proposer/codex-cli-session-manager.js.map +1 -0
- package/dist/adapters/proposer/codex-cli-session-outcome-extractor.d.ts +3 -0
- package/dist/adapters/proposer/codex-cli-session-outcome-extractor.js +94 -0
- package/dist/adapters/proposer/codex-cli-session-outcome-extractor.js.map +1 -0
- package/dist/adapters/proposer/proposer-factory.d.ts +22 -0
- package/dist/adapters/proposer/proposer-factory.js +19 -0
- package/dist/adapters/proposer/proposer-factory.js.map +1 -0
- package/dist/app/services/codex-cli-session-lifecycle-service.d.ts +116 -0
- package/dist/app/services/codex-cli-session-lifecycle-service.js +186 -0
- package/dist/app/services/codex-cli-session-lifecycle-service.js.map +1 -0
- package/dist/app/services/research-project-defaults-service.d.ts +18 -0
- package/dist/app/services/research-project-defaults-service.js +175 -0
- package/dist/app/services/research-project-defaults-service.js.map +1 -0
- package/dist/app/services/research-session-draft-service.d.ts +121 -0
- package/dist/app/services/research-session-draft-service.js +846 -0
- package/dist/app/services/research-session-draft-service.js.map +1 -0
- package/dist/app/services/research-session-entry-flow-summary-mapper.d.ts +12 -0
- package/dist/app/services/research-session-entry-flow-summary-mapper.js +33 -0
- package/dist/app/services/research-session-entry-flow-summary-mapper.js.map +1 -0
- package/dist/app/services/research-session-interactive-service.d.ts +35 -0
- package/dist/app/services/research-session-interactive-service.js +295 -0
- package/dist/app/services/research-session-interactive-service.js.map +1 -0
- package/dist/app/services/research-session-launch-service.d.ts +46 -0
- package/dist/app/services/research-session-launch-service.js +389 -0
- package/dist/app/services/research-session-launch-service.js.map +1 -0
- package/dist/app/services/research-session-orchestrator-service.d.ts +140 -0
- package/dist/app/services/research-session-orchestrator-service.js +614 -0
- package/dist/app/services/research-session-orchestrator-service.js.map +1 -0
- package/dist/app/services/research-session-recovery-service.d.ts +30 -0
- package/dist/app/services/research-session-recovery-service.js +110 -0
- package/dist/app/services/research-session-recovery-service.js.map +1 -0
- package/dist/app/services/research-session-wizard-controller.d.ts +51 -0
- package/dist/app/services/research-session-wizard-controller.js +220 -0
- package/dist/app/services/research-session-wizard-controller.js.map +1 -0
- package/dist/app/services/run-cycle-service.d.ts +2 -0
- package/dist/app/services/run-cycle-service.js +2 -0
- package/dist/app/services/run-cycle-service.js.map +1 -1
- package/dist/cli/commands/inspect.js +2 -0
- package/dist/cli/commands/inspect.js.map +1 -1
- package/dist/cli/commands/launch.d.ts +16 -0
- package/dist/cli/commands/launch.js +68 -0
- package/dist/cli/commands/launch.js.map +1 -0
- package/dist/cli/commands/proposer-display.d.ts +2 -0
- package/dist/cli/commands/proposer-display.js +18 -0
- package/dist/cli/commands/proposer-display.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +14 -0
- package/dist/cli/commands/resume.js +134 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.d.ts +1 -1
- package/dist/cli/commands/run.js +2 -2
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/status.js +4 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +2 -29
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/program.d.ts +15 -0
- package/dist/cli/program.js +54 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/tui/research-session-shell.d.ts +22 -0
- package/dist/cli/tui/research-session-shell.js +719 -0
- package/dist/cli/tui/research-session-shell.js.map +1 -0
- package/dist/core/engine/cycle-runner.d.ts +4 -0
- package/dist/core/engine/cycle-runner.js +15 -9
- package/dist/core/engine/cycle-runner.js.map +1 -1
- package/dist/core/manifest/admission.d.ts +1 -0
- package/dist/core/manifest/admission.js +50 -0
- package/dist/core/manifest/admission.js.map +1 -1
- package/dist/core/manifest/defaults.d.ts +21 -0
- package/dist/core/manifest/defaults.js +21 -0
- package/dist/core/manifest/defaults.js.map +1 -1
- package/dist/core/manifest/schema.d.ts +170 -0
- package/dist/core/manifest/schema.js +21 -1
- package/dist/core/manifest/schema.js.map +1 -1
- package/dist/core/model/codex-cli-cycle-session.d.ts +4 -0
- package/dist/core/model/codex-cli-cycle-session.js +2 -0
- package/dist/core/model/codex-cli-cycle-session.js.map +1 -0
- package/dist/core/model/codex-cli-session-lifecycle.d.ts +131 -0
- package/dist/core/model/codex-cli-session-lifecycle.js +237 -0
- package/dist/core/model/codex-cli-session-lifecycle.js.map +1 -0
- package/dist/core/model/codex-cli-session-outcome.d.ts +121 -0
- package/dist/core/model/codex-cli-session-outcome.js +70 -0
- package/dist/core/model/codex-cli-session-outcome.js.map +1 -0
- package/dist/core/model/research-project-defaults.d.ts +48 -0
- package/dist/core/model/research-project-defaults.js +46 -0
- package/dist/core/model/research-project-defaults.js.map +1 -0
- package/dist/core/model/research-session.d.ts +1143 -0
- package/dist/core/model/research-session.js +689 -0
- package/dist/core/model/research-session.js.map +1 -0
- package/dist/core/model/run-record.d.ts +56 -6
- package/dist/core/model/run-record.js +28 -0
- package/dist/core/model/run-record.js.map +1 -1
- package/dist/core/ports/research-project-defaults-store.d.ts +5 -0
- package/dist/core/ports/research-project-defaults-store.js +2 -0
- package/dist/core/ports/research-project-defaults-store.js.map +1 -0
- package/dist/core/ports/research-session-repository.d.ts +25 -0
- package/dist/core/ports/research-session-repository.js +2 -0
- package/dist/core/ports/research-session-repository.js.map +1 -0
- package/dist/core/state/research-session-recovery-classifier.d.ts +24 -0
- package/dist/core/state/research-session-recovery-classifier.js +236 -0
- package/dist/core/state/research-session-recovery-classifier.js.map +1 -0
- package/dist/core/state/research-session-resume-candidate.d.ts +8 -0
- package/dist/core/state/research-session-resume-candidate.js +62 -0
- package/dist/core/state/research-session-resume-candidate.js.map +1 -0
- package/dist/core/state/research-session-state-machine.d.ts +62 -0
- package/dist/core/state/research-session-state-machine.js +443 -0
- package/dist/core/state/research-session-state-machine.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.js +192 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type CodexCliSessionLifecycleRecord } from "../../core/model/codex-cli-session-lifecycle.js";
|
|
2
|
+
import type { ResearchSessionRecord } from "../../core/model/research-session.js";
|
|
3
|
+
import type { PersistedCodexSessionReference, ResearchSessionRepository } from "../../core/ports/research-session-repository.js";
|
|
4
|
+
import { type ResearchSessionRecoveryStatus } from "../../core/state/research-session-recovery-classifier.js";
|
|
5
|
+
export type { ResearchSessionRecoveryStatus } from "../../core/state/research-session-recovery-classifier.js";
|
|
6
|
+
export interface ResearchSessionRecoveryServiceDependencies {
|
|
7
|
+
createRepository?: (sessionsRoot: string) => ResearchSessionRepository;
|
|
8
|
+
isProcessAlive?: (pid: number) => boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ResearchSessionRecoveryInput {
|
|
11
|
+
repoRoot: string;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ResearchSessionRecoveryInspection {
|
|
15
|
+
session: ResearchSessionRecord;
|
|
16
|
+
lifecycle: CodexCliSessionLifecycleRecord | null;
|
|
17
|
+
codexSessionReference: PersistedCodexSessionReference | null;
|
|
18
|
+
recovery: ResearchSessionRecoveryStatus;
|
|
19
|
+
}
|
|
20
|
+
export declare class ResearchSessionRecoveryService {
|
|
21
|
+
private readonly createRepository;
|
|
22
|
+
private readonly isProcessAliveFn;
|
|
23
|
+
constructor(dependencies?: ResearchSessionRecoveryServiceDependencies);
|
|
24
|
+
classifySession(input: ResearchSessionRecoveryInput): Promise<ResearchSessionRecoveryStatus>;
|
|
25
|
+
inspectSession(input: ResearchSessionRecoveryInput): Promise<ResearchSessionRecoveryInspection>;
|
|
26
|
+
private resolveRepository;
|
|
27
|
+
private loadSessionOrThrow;
|
|
28
|
+
private loadPersistedSession;
|
|
29
|
+
private loadLifecycle;
|
|
30
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { readFile, realpath, stat } from "node:fs/promises";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { JsonFileResearchSessionRepository } from "../../adapters/fs/json-file-research-session-repository.js";
|
|
4
|
+
import { DEFAULT_STORAGE_ROOT } from "../../core/manifest/defaults.js";
|
|
5
|
+
import { parseCodexCliSessionLifecycleRecord, } from "../../core/model/codex-cli-session-lifecycle.js";
|
|
6
|
+
import { classifyResearchSessionRecovery, } from "../../core/state/research-session-recovery-classifier.js";
|
|
7
|
+
import { isMissingFileError } from "../../shared/fs-errors.js";
|
|
8
|
+
export class ResearchSessionRecoveryService {
|
|
9
|
+
createRepository;
|
|
10
|
+
isProcessAliveFn;
|
|
11
|
+
constructor(dependencies = {}) {
|
|
12
|
+
this.createRepository =
|
|
13
|
+
dependencies.createRepository ??
|
|
14
|
+
((sessionsRoot) => new JsonFileResearchSessionRepository(sessionsRoot));
|
|
15
|
+
this.isProcessAliveFn = dependencies.isProcessAlive ?? isProcessAlive;
|
|
16
|
+
}
|
|
17
|
+
async classifySession(input) {
|
|
18
|
+
const inspection = await this.inspectSession(input);
|
|
19
|
+
return inspection.recovery;
|
|
20
|
+
}
|
|
21
|
+
async inspectSession(input) {
|
|
22
|
+
const { canonicalRepoRoot, repository } = await this.resolveRepository(input.repoRoot);
|
|
23
|
+
const persisted = await this.loadPersistedSession(repository, canonicalRepoRoot, input.sessionId);
|
|
24
|
+
const { session, lifecycle } = persisted;
|
|
25
|
+
const processAlive = lifecycle?.pid !== undefined ? this.isProcessAliveFn(lifecycle.pid) : false;
|
|
26
|
+
return {
|
|
27
|
+
session,
|
|
28
|
+
lifecycle,
|
|
29
|
+
codexSessionReference: persisted.codexSessionReference,
|
|
30
|
+
recovery: classifyResearchSessionRecovery({
|
|
31
|
+
session,
|
|
32
|
+
lifecycle,
|
|
33
|
+
processAlive,
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async resolveRepository(repoRoot) {
|
|
38
|
+
const resolvedRoot = resolve(repoRoot);
|
|
39
|
+
const repoStats = await stat(resolvedRoot).catch(() => null);
|
|
40
|
+
if (!repoStats?.isDirectory()) {
|
|
41
|
+
throw new Error(`Working directory is not a directory: ${resolvedRoot}`);
|
|
42
|
+
}
|
|
43
|
+
const canonicalRepoRoot = await realpath(resolvedRoot);
|
|
44
|
+
const sessionsRoot = join(canonicalRepoRoot, DEFAULT_STORAGE_ROOT, "sessions");
|
|
45
|
+
return {
|
|
46
|
+
canonicalRepoRoot,
|
|
47
|
+
repository: this.createRepository(sessionsRoot),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async loadSessionOrThrow(repository, sessionId) {
|
|
51
|
+
const session = await repository.loadSession(sessionId);
|
|
52
|
+
if (!session) {
|
|
53
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
54
|
+
}
|
|
55
|
+
return session;
|
|
56
|
+
}
|
|
57
|
+
async loadPersistedSession(repository, repoRoot, sessionId) {
|
|
58
|
+
if (repository.loadPersistedSession) {
|
|
59
|
+
const persisted = await repository.loadPersistedSession(sessionId);
|
|
60
|
+
if (!persisted) {
|
|
61
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
62
|
+
}
|
|
63
|
+
return persisted;
|
|
64
|
+
}
|
|
65
|
+
const session = await this.loadSessionOrThrow(repository, sessionId);
|
|
66
|
+
const lifecycle = await this.loadLifecycle(repoRoot, session.sessionId);
|
|
67
|
+
return {
|
|
68
|
+
session,
|
|
69
|
+
lifecycle,
|
|
70
|
+
codexSessionReference: lifecycle
|
|
71
|
+
? {
|
|
72
|
+
codexSessionId: lifecycle.identity.codexSessionId,
|
|
73
|
+
lifecyclePath: join(repoRoot, DEFAULT_STORAGE_ROOT, "sessions", session.sessionId, "codex-session.json"),
|
|
74
|
+
}
|
|
75
|
+
: null,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async loadLifecycle(repoRoot, sessionId) {
|
|
79
|
+
const lifecyclePath = join(repoRoot, DEFAULT_STORAGE_ROOT, "sessions", sessionId, "codex-session.json");
|
|
80
|
+
try {
|
|
81
|
+
const raw = await readFile(lifecyclePath, "utf8");
|
|
82
|
+
return parseCodexCliSessionLifecycleRecord(raw);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (isMissingFileError(error)) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function isProcessAlive(pid) {
|
|
93
|
+
try {
|
|
94
|
+
process.kill(pid, 0);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error instanceof Error && "code" in error) {
|
|
99
|
+
const code = error.code;
|
|
100
|
+
if (code === "ESRCH") {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
if (code === "EPERM") {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=research-session-recovery-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-session-recovery-service.js","sourceRoot":"","sources":["../../../src/app/services/research-session-recovery-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ResearchSessionDraft, type ResearchSessionDraftStep, type ResearchSessionDraftUpdate, type ResearchSessionDraftValidationResult } from "./research-session-draft-service.js";
|
|
2
|
+
export interface ResearchSessionWizardStepDefinition {
|
|
3
|
+
step: ResearchSessionDraftStep;
|
|
4
|
+
index: number;
|
|
5
|
+
total: number;
|
|
6
|
+
label: string;
|
|
7
|
+
title: string;
|
|
8
|
+
advanceCommand: "continue" | "submit";
|
|
9
|
+
helpText: string;
|
|
10
|
+
blockedMessage: string;
|
|
11
|
+
advanceMessage: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ResearchSessionWizardSectionStatus {
|
|
14
|
+
step: ResearchSessionDraftStep;
|
|
15
|
+
index: number;
|
|
16
|
+
total: number;
|
|
17
|
+
label: string;
|
|
18
|
+
title: string;
|
|
19
|
+
isCurrent: boolean;
|
|
20
|
+
isCompleted: boolean;
|
|
21
|
+
validation: ResearchSessionDraftValidationResult;
|
|
22
|
+
}
|
|
23
|
+
export interface ResearchSessionWizardBackResult {
|
|
24
|
+
transition: "blocked" | "step_changed";
|
|
25
|
+
message: string;
|
|
26
|
+
patch?: ResearchSessionDraftUpdate;
|
|
27
|
+
}
|
|
28
|
+
export interface ResearchSessionWizardNextResult {
|
|
29
|
+
transition: "blocked" | "step_changed";
|
|
30
|
+
message: string;
|
|
31
|
+
patch?: ResearchSessionDraftUpdate;
|
|
32
|
+
}
|
|
33
|
+
export interface ResearchSessionWizardReviewEditResult {
|
|
34
|
+
transition: "step_changed";
|
|
35
|
+
message: string;
|
|
36
|
+
patch: ResearchSessionDraftUpdate;
|
|
37
|
+
}
|
|
38
|
+
export interface ResearchSessionWizardAdvanceResult {
|
|
39
|
+
transition: "blocked" | "step_changed" | "ready_to_launch";
|
|
40
|
+
validation: ResearchSessionDraftValidationResult;
|
|
41
|
+
message: string;
|
|
42
|
+
patch?: ResearchSessionDraftUpdate;
|
|
43
|
+
}
|
|
44
|
+
export declare function getResearchSessionWizardStepDefinition(step: ResearchSessionDraftStep): ResearchSessionWizardStepDefinition;
|
|
45
|
+
export declare function validateResearchSessionWizardStep(draft: ResearchSessionDraft): ResearchSessionDraftValidationResult;
|
|
46
|
+
export declare function getResearchSessionWizardSectionStatuses(draft: ResearchSessionDraft): ResearchSessionWizardSectionStatus[];
|
|
47
|
+
export declare function isResearchSessionWizardAdvanceCommand(command: string, step: ResearchSessionDraftStep): boolean;
|
|
48
|
+
export declare function getResearchSessionWizardBackResult(step: ResearchSessionDraftStep): ResearchSessionWizardBackResult;
|
|
49
|
+
export declare function getResearchSessionWizardNextResult(step: ResearchSessionDraftStep): ResearchSessionWizardNextResult;
|
|
50
|
+
export declare function getResearchSessionWizardAdvanceResult(draft: ResearchSessionDraft): ResearchSessionWizardAdvanceResult;
|
|
51
|
+
export declare function getResearchSessionWizardReviewEditResult(targetStep: Exclude<ResearchSessionDraftStep, "review">): ResearchSessionWizardReviewEditResult;
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { validateOutputsStepDraft, validatePermissionsStepDraft, validateReviewStepDraft, validateStopRulesStepDraft, } from "./research-session-draft-service.js";
|
|
2
|
+
const STEP_ORDER = [
|
|
3
|
+
"permissions",
|
|
4
|
+
"stopRules",
|
|
5
|
+
"outputs",
|
|
6
|
+
"review",
|
|
7
|
+
];
|
|
8
|
+
const STEP_DEFINITIONS = {
|
|
9
|
+
permissions: {
|
|
10
|
+
step: "permissions",
|
|
11
|
+
index: 0,
|
|
12
|
+
total: STEP_ORDER.length,
|
|
13
|
+
label: "Permissions",
|
|
14
|
+
title: "Step 1/4: Permissions",
|
|
15
|
+
advanceCommand: "continue",
|
|
16
|
+
helpText: "Commands: edit <1-6|working|directory|cwd|web|search|add|allow|remove|deny|block|approval|sandbox>, next, continue, back, help, quit",
|
|
17
|
+
blockedMessage: "Permissions step has validation errors. Fix them before continuing.",
|
|
18
|
+
advanceMessage: "Permissions step saved. Opening Stop Rules.",
|
|
19
|
+
},
|
|
20
|
+
stopRules: {
|
|
21
|
+
step: "stopRules",
|
|
22
|
+
index: 1,
|
|
23
|
+
total: STEP_ORDER.length,
|
|
24
|
+
label: "Stop Rules",
|
|
25
|
+
title: "Step 2/4: Stop Rules",
|
|
26
|
+
advanceCommand: "continue",
|
|
27
|
+
helpText: "Commands: edit <1-3|failures|progress|evidence>, next, continue, back, help, quit",
|
|
28
|
+
blockedMessage: "Stop Rules step has validation errors. Fix them before continuing.",
|
|
29
|
+
advanceMessage: "Stop Rules step saved. Opening Outputs.",
|
|
30
|
+
},
|
|
31
|
+
outputs: {
|
|
32
|
+
step: "outputs",
|
|
33
|
+
index: 2,
|
|
34
|
+
total: STEP_ORDER.length,
|
|
35
|
+
label: "Outputs",
|
|
36
|
+
title: "Step 3/4: Outputs",
|
|
37
|
+
advanceCommand: "continue",
|
|
38
|
+
helpText: "Commands: edit <1-7|goal|trackable|files|globs|baseline|base|agent|command|model|startup|turn>, next, continue, back, help, quit",
|
|
39
|
+
blockedMessage: "Outputs step has validation errors. Fix them before continuing.",
|
|
40
|
+
advanceMessage: "Outputs step saved. Opening Review.",
|
|
41
|
+
},
|
|
42
|
+
review: {
|
|
43
|
+
step: "review",
|
|
44
|
+
index: 3,
|
|
45
|
+
total: STEP_ORDER.length,
|
|
46
|
+
label: "Review",
|
|
47
|
+
title: "Step 4/4: Review",
|
|
48
|
+
advanceCommand: "submit",
|
|
49
|
+
helpText: "Commands: confirm, submit, help, quit",
|
|
50
|
+
blockedMessage: "Review has validation errors. Fix the highlighted section before submitting.",
|
|
51
|
+
advanceMessage: "Review complete. Starting the interactive Codex session.",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
export function getResearchSessionWizardStepDefinition(step) {
|
|
55
|
+
return STEP_DEFINITIONS[step];
|
|
56
|
+
}
|
|
57
|
+
export function validateResearchSessionWizardStep(draft) {
|
|
58
|
+
return validateResearchSessionWizardSpecificStep(draft, draft.currentStep);
|
|
59
|
+
}
|
|
60
|
+
export function getResearchSessionWizardSectionStatuses(draft) {
|
|
61
|
+
const completedSteps = new Set(draft.completedSteps);
|
|
62
|
+
return STEP_ORDER.map((step) => {
|
|
63
|
+
const definition = STEP_DEFINITIONS[step];
|
|
64
|
+
return {
|
|
65
|
+
step,
|
|
66
|
+
index: definition.index,
|
|
67
|
+
total: definition.total,
|
|
68
|
+
label: definition.label,
|
|
69
|
+
title: definition.title,
|
|
70
|
+
isCurrent: draft.currentStep === step,
|
|
71
|
+
isCompleted: completedSteps.has(step),
|
|
72
|
+
validation: validateResearchSessionWizardSpecificStep(draft, step),
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function validateResearchSessionWizardSpecificStep(draft, step) {
|
|
77
|
+
switch (step) {
|
|
78
|
+
case "permissions":
|
|
79
|
+
return validatePermissionsStepDraft(draft);
|
|
80
|
+
case "stopRules":
|
|
81
|
+
return validateStopRulesStepDraft(draft);
|
|
82
|
+
case "outputs":
|
|
83
|
+
return validateOutputsStepDraft(draft);
|
|
84
|
+
case "review":
|
|
85
|
+
return validateReviewStepDraft(draft);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function isResearchSessionWizardAdvanceCommand(command, step) {
|
|
89
|
+
const normalized = command.trim().toLowerCase();
|
|
90
|
+
if (!normalized) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return normalized === STEP_DEFINITIONS[step].advanceCommand;
|
|
94
|
+
}
|
|
95
|
+
export function getResearchSessionWizardBackResult(step) {
|
|
96
|
+
const previousStep = getResearchSessionWizardPreviousStep(step);
|
|
97
|
+
if (!previousStep) {
|
|
98
|
+
return {
|
|
99
|
+
transition: "blocked",
|
|
100
|
+
message: `Already at the first step: ${STEP_DEFINITIONS[step].label}.`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
transition: "step_changed",
|
|
105
|
+
message: `Returning to ${STEP_DEFINITIONS[previousStep].title}.`,
|
|
106
|
+
patch: {
|
|
107
|
+
currentStep: previousStep,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function getResearchSessionWizardNextResult(step) {
|
|
112
|
+
const nextStep = getResearchSessionWizardNextStep(step);
|
|
113
|
+
if (!nextStep) {
|
|
114
|
+
return {
|
|
115
|
+
transition: "blocked",
|
|
116
|
+
message: `Already at the last step: ${STEP_DEFINITIONS[step].label}.`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
transition: "step_changed",
|
|
121
|
+
message: `Opening ${STEP_DEFINITIONS[nextStep].title}.`,
|
|
122
|
+
patch: {
|
|
123
|
+
currentStep: nextStep,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function getResearchSessionWizardAdvanceResult(draft) {
|
|
128
|
+
const validation = validateResearchSessionWizardStep(draft);
|
|
129
|
+
const definition = STEP_DEFINITIONS[draft.currentStep];
|
|
130
|
+
const completedSteps = markResearchSessionWizardStepCompleted(draft.completedSteps, draft.currentStep);
|
|
131
|
+
const stepDataPatch = buildResearchSessionWizardAdvancePatch(draft);
|
|
132
|
+
const advanceMessage = draft.returnToReview && draft.currentStep !== "review"
|
|
133
|
+
? `${definition.label} step saved. Returning to Review.`
|
|
134
|
+
: definition.advanceMessage;
|
|
135
|
+
if (!validation.isValid) {
|
|
136
|
+
return {
|
|
137
|
+
transition: "blocked",
|
|
138
|
+
validation,
|
|
139
|
+
message: definition.blockedMessage,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (draft.currentStep === "review" && !draft.reviewConfirmed) {
|
|
143
|
+
return {
|
|
144
|
+
transition: "blocked",
|
|
145
|
+
validation,
|
|
146
|
+
message: "Review requires final confirmation before submitting.",
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const nextStep = getResearchSessionWizardNextStep(draft.currentStep);
|
|
150
|
+
const nextStepAfterAdvance = draft.returnToReview && draft.currentStep !== "review" ? "review" : nextStep;
|
|
151
|
+
if (!nextStepAfterAdvance) {
|
|
152
|
+
return {
|
|
153
|
+
transition: "ready_to_launch",
|
|
154
|
+
validation,
|
|
155
|
+
message: advanceMessage,
|
|
156
|
+
patch: {
|
|
157
|
+
...stepDataPatch,
|
|
158
|
+
completedSteps,
|
|
159
|
+
returnToReview: false,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
transition: "step_changed",
|
|
165
|
+
validation,
|
|
166
|
+
message: advanceMessage,
|
|
167
|
+
patch: {
|
|
168
|
+
...stepDataPatch,
|
|
169
|
+
currentStep: nextStepAfterAdvance,
|
|
170
|
+
completedSteps,
|
|
171
|
+
returnToReview: false,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
export function getResearchSessionWizardReviewEditResult(targetStep) {
|
|
176
|
+
return {
|
|
177
|
+
transition: "step_changed",
|
|
178
|
+
message: `Review jump: reopening ${STEP_DEFINITIONS[targetStep].title}. Return here with continue when you are done editing.`,
|
|
179
|
+
patch: {
|
|
180
|
+
currentStep: targetStep,
|
|
181
|
+
returnToReview: true,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function getResearchSessionWizardPreviousStep(step) {
|
|
186
|
+
const stepIndex = STEP_ORDER.indexOf(step);
|
|
187
|
+
return stepIndex > 0 ? STEP_ORDER[stepIndex - 1] ?? null : null;
|
|
188
|
+
}
|
|
189
|
+
function getResearchSessionWizardNextStep(step) {
|
|
190
|
+
const stepIndex = STEP_ORDER.indexOf(step);
|
|
191
|
+
return stepIndex >= 0 && stepIndex < STEP_ORDER.length - 1
|
|
192
|
+
? STEP_ORDER[stepIndex + 1] ?? null
|
|
193
|
+
: null;
|
|
194
|
+
}
|
|
195
|
+
function buildResearchSessionWizardAdvancePatch(draft) {
|
|
196
|
+
if (draft.currentStep !== "outputs") {
|
|
197
|
+
return {};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
goal: draft.goal,
|
|
201
|
+
contextSettings: {
|
|
202
|
+
trackableGlobs: draft.contextSettings.trackableGlobs,
|
|
203
|
+
},
|
|
204
|
+
workspaceSettings: {
|
|
205
|
+
baseRef: draft.workspaceSettings.baseRef,
|
|
206
|
+
},
|
|
207
|
+
agentCommand: draft.agentCommand,
|
|
208
|
+
agentSettings: {
|
|
209
|
+
model: draft.agentSettings.model,
|
|
210
|
+
startupTimeoutSec: draft.agentSettings.startupTimeoutSec,
|
|
211
|
+
turnTimeoutSec: draft.agentSettings.turnTimeoutSec,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
function markResearchSessionWizardStepCompleted(completedSteps, step) {
|
|
216
|
+
const nextCompletedSteps = new Set(completedSteps);
|
|
217
|
+
nextCompletedSteps.add(step);
|
|
218
|
+
return STEP_ORDER.filter((candidateStep) => nextCompletedSteps.has(candidateStep));
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=research-session-wizard-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-session-wizard-controller.js","sourceRoot":"","sources":["../../../src/app/services/research-session-wizard-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { JudgeProvider } from "../../adapters/judge/llm-judge-provider.js";
|
|
2
|
+
import type { CodexCliCycleSessionContext } from "../../core/model/codex-cli-cycle-session.js";
|
|
2
3
|
import { type RecoveryStatus } from "../../core/state/recovery-classifier.js";
|
|
3
4
|
import { type CycleRunResult } from "../../core/engine/cycle-runner.js";
|
|
4
5
|
export interface RunCycleServiceInput {
|
|
5
6
|
repoRoot: string;
|
|
6
7
|
manifestPath?: string;
|
|
7
8
|
fresh?: boolean;
|
|
9
|
+
codexSession?: CodexCliCycleSessionContext;
|
|
8
10
|
}
|
|
9
11
|
export interface RunCycleServiceResult {
|
|
10
12
|
status: CycleRunResult["status"];
|
|
@@ -68,6 +68,7 @@ export class RunCycleService {
|
|
|
68
68
|
manifest: loadedManifest.manifest,
|
|
69
69
|
resolvedBaselineRef: loadedManifest.resolvedBaselineRef,
|
|
70
70
|
currentFrontier: frontier,
|
|
71
|
+
...(input.codexSession ? { codexSession: input.codexSession } : {}),
|
|
71
72
|
resumeRun: latestRun,
|
|
72
73
|
}, {
|
|
73
74
|
runStore,
|
|
@@ -102,6 +103,7 @@ export class RunCycleService {
|
|
|
102
103
|
manifest: loadedManifest.manifest,
|
|
103
104
|
resolvedBaselineRef: loadedManifest.resolvedBaselineRef,
|
|
104
105
|
currentFrontier: frontier,
|
|
106
|
+
...(input.codexSession ? { codexSession: input.codexSession } : {}),
|
|
105
107
|
}, {
|
|
106
108
|
runStore,
|
|
107
109
|
frontierStore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cycle-service.js","sourceRoot":"","sources":["../../../src/app/services/run-cycle-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-cycle-service.js","sourceRoot":"","sources":["../../../src/app/services/run-cycle-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RunNotFoundError, inspectRun } from "../../app/services/project-state-service.js";
|
|
2
|
+
import { formatProposalDisplayLines } from "./proposer-display.js";
|
|
2
3
|
const defaultCommandIO = {
|
|
3
4
|
stdout: (message) => {
|
|
4
5
|
process.stdout.write(`${message}\n`);
|
|
@@ -21,6 +22,7 @@ export async function runInspectCommand(runId, options, io = defaultCommandIO) {
|
|
|
21
22
|
const selectedDiagnostics = result.decision?.diagnostics?.reasons.join(", ") ?? "n/a";
|
|
22
23
|
io.stdout([
|
|
23
24
|
`run: ${result.run.runId} (${result.run.status})`,
|
|
25
|
+
...formatProposalDisplayLines(result.run.proposal, "proposer"),
|
|
24
26
|
`recovery: ${result.recovery.classification} (${result.recovery.nextAction})`,
|
|
25
27
|
`decision: ${result.decision?.outcome ?? "n/a"}`,
|
|
26
28
|
`reason: ${result.explainability.decisionReason ?? "n/a"}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/cli/commands/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/cli/commands/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CommandIO } from "./run.js";
|
|
3
|
+
import { ResearchSessionLaunchService } from "../../app/services/research-session-launch-service.js";
|
|
4
|
+
import { runResumeCommand } from "./resume.js";
|
|
5
|
+
import { type ResearchSessionShell } from "../tui/research-session-shell.js";
|
|
6
|
+
export interface LaunchCommandOptions {
|
|
7
|
+
repoRoot?: string;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface LaunchCommandDependencies {
|
|
11
|
+
launchService?: Pick<ResearchSessionLaunchService, "launch">;
|
|
12
|
+
openShell?: ResearchSessionShell;
|
|
13
|
+
resumeCommand?: typeof runResumeCommand;
|
|
14
|
+
}
|
|
15
|
+
export declare function runLaunchCommand(goal: string | undefined, options?: LaunchCommandOptions, io?: CommandIO, dependencies?: LaunchCommandDependencies): Promise<number>;
|
|
16
|
+
export declare function registerLaunchCommand(program: Command, executeLaunchCommand?: typeof runLaunchCommand): void;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ResearchSessionLaunchService } from "../../app/services/research-session-launch-service.js";
|
|
2
|
+
import { runResumeCommand } from "./resume.js";
|
|
3
|
+
import { openResearchSessionShell, } from "../tui/research-session-shell.js";
|
|
4
|
+
const defaultCommandIO = {
|
|
5
|
+
stdout: (message) => {
|
|
6
|
+
process.stdout.write(`${message}\n`);
|
|
7
|
+
},
|
|
8
|
+
stderr: (message) => {
|
|
9
|
+
process.stderr.write(`${message}\n`);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export async function runLaunchCommand(goal, options = {}, io = defaultCommandIO, dependencies = {}) {
|
|
13
|
+
try {
|
|
14
|
+
const service = dependencies.launchService ?? new ResearchSessionLaunchService();
|
|
15
|
+
const result = await service.launch({
|
|
16
|
+
goal: goal ?? "",
|
|
17
|
+
repoRoot: options.repoRoot ?? process.cwd(),
|
|
18
|
+
});
|
|
19
|
+
if (options.json) {
|
|
20
|
+
io.stdout(JSON.stringify(result, null, 2));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const openShell = dependencies.openShell ?? openResearchSessionShell;
|
|
24
|
+
const shellResult = await openShell(result, io);
|
|
25
|
+
const resumeSelection = resolveResumeSelection(shellResult);
|
|
26
|
+
if (resumeSelection) {
|
|
27
|
+
const resumeCommand = dependencies.resumeCommand ?? runResumeCommand;
|
|
28
|
+
return resumeCommand(resumeSelection.sessionId, {
|
|
29
|
+
repoRoot: result.repoRoot,
|
|
30
|
+
}, io);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const message = error instanceof Error ? error.message : "Failed to launch research session";
|
|
37
|
+
if (options.json) {
|
|
38
|
+
io.stderr(JSON.stringify({ ok: false, error: message }, null, 2));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
io.stderr(message);
|
|
42
|
+
}
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function resolveResumeSelection(shellResult) {
|
|
47
|
+
if (!shellResult) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
return shellResult.entrySelection === "resume" ? shellResult : undefined;
|
|
51
|
+
}
|
|
52
|
+
export function registerLaunchCommand(program, executeLaunchCommand = runLaunchCommand) {
|
|
53
|
+
program
|
|
54
|
+
.command("launch")
|
|
55
|
+
.description("Create or refresh the v1 orchestrated research session and open the TUI shell.")
|
|
56
|
+
.argument("<goal>", "Goal to pursue through the v1 TUI research orchestrator")
|
|
57
|
+
.option("--json", "Emit machine-readable output instead of opening the TUI shell", false)
|
|
58
|
+
.action(async (goal, options) => {
|
|
59
|
+
const exitCode = await executeLaunchCommand(goal, {
|
|
60
|
+
...options,
|
|
61
|
+
repoRoot: process.cwd(),
|
|
62
|
+
});
|
|
63
|
+
if (exitCode !== 0) {
|
|
64
|
+
process.exitCode = exitCode;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=launch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"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"}
|