@ttfw/envoi 1.0.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.
- package/README.md +238 -0
- package/dist/commands/app.d.ts +2 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +31 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/autonomy.d.ts +6 -0
- package/dist/commands/autonomy.d.ts.map +1 -0
- package/dist/commands/autonomy.js +89 -0
- package/dist/commands/autonomy.js.map +1 -0
- package/dist/commands/builder.d.ts +13 -0
- package/dist/commands/builder.d.ts.map +1 -0
- package/dist/commands/builder.js +142 -0
- package/dist/commands/builder.js.map +1 -0
- package/dist/commands/idea.d.ts +12 -0
- package/dist/commands/idea.d.ts.map +1 -0
- package/dist/commands/idea.js +79 -0
- package/dist/commands/idea.js.map +1 -0
- package/dist/commands/init.d.ts +18 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +423 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mode.d.ts +13 -0
- package/dist/commands/mode.d.ts.map +1 -0
- package/dist/commands/mode.js +96 -0
- package/dist/commands/mode.js.map +1 -0
- package/dist/commands/onboard.d.ts +37 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +743 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/pr-note.d.ts +8 -0
- package/dist/commands/pr-note.d.ts.map +1 -0
- package/dist/commands/pr-note.js +27 -0
- package/dist/commands/pr-note.js.map +1 -0
- package/dist/commands/undo.d.ts +7 -0
- package/dist/commands/undo.d.ts.map +1 -0
- package/dist/commands/undo.js +59 -0
- package/dist/commands/undo.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +248 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants/report_codes.d.ts +29 -0
- package/dist/constants/report_codes.d.ts.map +1 -0
- package/dist/constants/report_codes.js +69 -0
- package/dist/constants/report_codes.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +675 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/autonomy.d.ts +16 -0
- package/dist/lib/autonomy.d.ts.map +1 -0
- package/dist/lib/autonomy.js +38 -0
- package/dist/lib/autonomy.js.map +1 -0
- package/dist/lib/blocked.d.ts +87 -0
- package/dist/lib/blocked.d.ts.map +1 -0
- package/dist/lib/blocked.js +134 -0
- package/dist/lib/blocked.js.map +1 -0
- package/dist/lib/branding.d.ts +13 -0
- package/dist/lib/branding.d.ts.map +1 -0
- package/dist/lib/branding.js +19 -0
- package/dist/lib/branding.js.map +1 -0
- package/dist/lib/claude.d.ts +42 -0
- package/dist/lib/claude.d.ts.map +1 -0
- package/dist/lib/claude.js +291 -0
- package/dist/lib/claude.js.map +1 -0
- package/dist/lib/config.d.ts +71 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +410 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/diff.d.ts +150 -0
- package/dist/lib/diff.d.ts.map +1 -0
- package/dist/lib/diff.js +257 -0
- package/dist/lib/diff.js.map +1 -0
- package/dist/lib/doctor.d.ts +67 -0
- package/dist/lib/doctor.d.ts.map +1 -0
- package/dist/lib/doctor.js +211 -0
- package/dist/lib/doctor.js.map +1 -0
- package/dist/lib/fingerprint.d.ts +27 -0
- package/dist/lib/fingerprint.d.ts.map +1 -0
- package/dist/lib/fingerprint.js +116 -0
- package/dist/lib/fingerprint.js.map +1 -0
- package/dist/lib/fs.d.ts +93 -0
- package/dist/lib/fs.d.ts.map +1 -0
- package/dist/lib/fs.js +179 -0
- package/dist/lib/fs.js.map +1 -0
- package/dist/lib/git.d.ts +177 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +355 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/git_branching.d.ts +84 -0
- package/dist/lib/git_branching.d.ts.map +1 -0
- package/dist/lib/git_branching.js +327 -0
- package/dist/lib/git_branching.js.map +1 -0
- package/dist/lib/gitignore.d.ts +26 -0
- package/dist/lib/gitignore.d.ts.map +1 -0
- package/dist/lib/gitignore.js +119 -0
- package/dist/lib/gitignore.js.map +1 -0
- package/dist/lib/guardrails.d.ts +232 -0
- package/dist/lib/guardrails.d.ts.map +1 -0
- package/dist/lib/guardrails.js +323 -0
- package/dist/lib/guardrails.js.map +1 -0
- package/dist/lib/history.d.ts +110 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +236 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/index.d.ts +29 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +29 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/json-extract.d.ts +42 -0
- package/dist/lib/json-extract.d.ts.map +1 -0
- package/dist/lib/json-extract.js +201 -0
- package/dist/lib/json-extract.js.map +1 -0
- package/dist/lib/judge.d.ts +237 -0
- package/dist/lib/judge.d.ts.map +1 -0
- package/dist/lib/judge.js +501 -0
- package/dist/lib/judge.js.map +1 -0
- package/dist/lib/lock.d.ts +79 -0
- package/dist/lib/lock.d.ts.map +1 -0
- package/dist/lib/lock.js +254 -0
- package/dist/lib/lock.js.map +1 -0
- package/dist/lib/migration.d.ts +9 -0
- package/dist/lib/migration.d.ts.map +1 -0
- package/dist/lib/migration.js +74 -0
- package/dist/lib/migration.js.map +1 -0
- package/dist/lib/paths.d.ts +18 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +27 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/preflight.d.ts +33 -0
- package/dist/lib/preflight.d.ts.map +1 -0
- package/dist/lib/preflight.js +177 -0
- package/dist/lib/preflight.js.map +1 -0
- package/dist/lib/prompt_budget.d.ts +18 -0
- package/dist/lib/prompt_budget.d.ts.map +1 -0
- package/dist/lib/prompt_budget.js +36 -0
- package/dist/lib/prompt_budget.js.map +1 -0
- package/dist/lib/report.d.ts +102 -0
- package/dist/lib/report.d.ts.map +1 -0
- package/dist/lib/report.js +347 -0
- package/dist/lib/report.js.map +1 -0
- package/dist/lib/reviewer-flow.d.ts +80 -0
- package/dist/lib/reviewer-flow.d.ts.map +1 -0
- package/dist/lib/reviewer-flow.js +138 -0
- package/dist/lib/reviewer-flow.js.map +1 -0
- package/dist/lib/reviewer.d.ts +53 -0
- package/dist/lib/reviewer.d.ts.map +1 -0
- package/dist/lib/reviewer.js +199 -0
- package/dist/lib/reviewer.js.map +1 -0
- package/dist/lib/risk.d.ts +127 -0
- package/dist/lib/risk.d.ts.map +1 -0
- package/dist/lib/risk.js +192 -0
- package/dist/lib/risk.js.map +1 -0
- package/dist/lib/rollback.d.ts +143 -0
- package/dist/lib/rollback.d.ts.map +1 -0
- package/dist/lib/rollback.js +244 -0
- package/dist/lib/rollback.js.map +1 -0
- package/dist/lib/schema.d.ts +47 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +91 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/scope.d.ts +89 -0
- package/dist/lib/scope.d.ts.map +1 -0
- package/dist/lib/scope.js +135 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/self_update.d.ts +13 -0
- package/dist/lib/self_update.d.ts.map +1 -0
- package/dist/lib/self_update.js +172 -0
- package/dist/lib/self_update.js.map +1 -0
- package/dist/lib/state.d.ts +143 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +258 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/tick.d.ts +310 -0
- package/dist/lib/tick.d.ts.map +1 -0
- package/dist/lib/tick.js +424 -0
- package/dist/lib/tick.js.map +1 -0
- package/dist/lib/transport.d.ts +145 -0
- package/dist/lib/transport.d.ts.map +1 -0
- package/dist/lib/transport.js +237 -0
- package/dist/lib/transport.js.map +1 -0
- package/dist/lib/verdict_labels.d.ts +5 -0
- package/dist/lib/verdict_labels.d.ts.map +1 -0
- package/dist/lib/verdict_labels.js +25 -0
- package/dist/lib/verdict_labels.js.map +1 -0
- package/dist/lib/verify-safety.d.ts +63 -0
- package/dist/lib/verify-safety.d.ts.map +1 -0
- package/dist/lib/verify-safety.js +123 -0
- package/dist/lib/verify-safety.js.map +1 -0
- package/dist/lib/verify.d.ts +139 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +311 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/lib/workspace_state.d.ts +79 -0
- package/dist/lib/workspace_state.d.ts.map +1 -0
- package/dist/lib/workspace_state.js +283 -0
- package/dist/lib/workspace_state.js.map +1 -0
- package/dist/runner/builder.d.ts +58 -0
- package/dist/runner/builder.d.ts.map +1 -0
- package/dist/runner/builder.js +775 -0
- package/dist/runner/builder.js.map +1 -0
- package/dist/runner/builder_parse.d.ts +37 -0
- package/dist/runner/builder_parse.d.ts.map +1 -0
- package/dist/runner/builder_parse.js +76 -0
- package/dist/runner/builder_parse.js.map +1 -0
- package/dist/runner/index.d.ts +9 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +7 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/loop.d.ts +51 -0
- package/dist/runner/loop.d.ts.map +1 -0
- package/dist/runner/loop.js +221 -0
- package/dist/runner/loop.js.map +1 -0
- package/dist/runner/orchestrator.d.ts +67 -0
- package/dist/runner/orchestrator.d.ts.map +1 -0
- package/dist/runner/orchestrator.js +376 -0
- package/dist/runner/orchestrator.js.map +1 -0
- package/dist/runner/tick.d.ts +10 -0
- package/dist/runner/tick.d.ts.map +1 -0
- package/dist/runner/tick.js +1639 -0
- package/dist/runner/tick.js.map +1 -0
- package/dist/types/blocked.d.ts +52 -0
- package/dist/types/blocked.d.ts.map +1 -0
- package/dist/types/blocked.js +8 -0
- package/dist/types/blocked.js.map +1 -0
- package/dist/types/builder.d.ts +25 -0
- package/dist/types/builder.d.ts.map +1 -0
- package/dist/types/builder.js +7 -0
- package/dist/types/builder.js.map +1 -0
- package/dist/types/claude.d.ts +86 -0
- package/dist/types/claude.d.ts.map +1 -0
- package/dist/types/claude.js +48 -0
- package/dist/types/claude.js.map +1 -0
- package/dist/types/config.d.ts +384 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lock.d.ts +21 -0
- package/dist/types/lock.d.ts.map +1 -0
- package/dist/types/lock.js +8 -0
- package/dist/types/lock.js.map +1 -0
- package/dist/types/preflight.d.ts +49 -0
- package/dist/types/preflight.d.ts.map +1 -0
- package/dist/types/preflight.js +8 -0
- package/dist/types/preflight.js.map +1 -0
- package/dist/types/report.d.ts +161 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +8 -0
- package/dist/types/report.js.map +1 -0
- package/dist/types/reviewer.d.ts +66 -0
- package/dist/types/reviewer.d.ts.map +1 -0
- package/dist/types/reviewer.js +5 -0
- package/dist/types/reviewer.js.map +1 -0
- package/dist/types/state.d.ts +124 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +20 -0
- package/dist/types/state.js.map +1 -0
- package/dist/types/task.d.ts +117 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +7 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/workspace_state.d.ts +125 -0
- package/dist/types/workspace_state.d.ts.map +1 -0
- package/dist/types/workspace_state.js +10 -0
- package/dist/types/workspace_state.js.map +1 -0
- package/envoi.config.json +191 -0
- package/package.json +52 -0
- package/relais/prompts/.gitkeep +0 -0
- package/relais/prompts/builder.system.txt +13 -0
- package/relais/prompts/builder.user.txt +15 -0
- package/relais/prompts/orchestrator.system.txt +37 -0
- package/relais/prompts/orchestrator.user.txt +34 -0
- package/relais/prompts/reviewer.system.txt +33 -0
- package/relais/prompts/reviewer.user.txt +35 -0
- package/relais/schemas/.gitkeep +0 -0
- package/relais/schemas/builder_result.schema.json +29 -0
- package/relais/schemas/report.schema.json +195 -0
- package/relais/schemas/reviewer_result.schema.json +70 -0
- package/relais/schemas/task.schema.json +155 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report types for envoi tick execution results.
|
|
3
|
+
*
|
|
4
|
+
* REPORT.json is the canonical source of truth for tick outcomes.
|
|
5
|
+
* REPORT.md is a deterministic rendering of REPORT.json.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Verdict indicating the outcome of a tick.
|
|
9
|
+
*/
|
|
10
|
+
export type Verdict = 'success' | 'stop' | 'blocked';
|
|
11
|
+
/**
|
|
12
|
+
* Report codes indicating specific outcomes or failure reasons.
|
|
13
|
+
*/
|
|
14
|
+
export type ReportCode = 'SUCCESS' | 'STOP_SCOPE_VIOLATION_FORBIDDEN' | 'STOP_SCOPE_VIOLATION_OUTSIDE_ALLOWED' | 'STOP_SCOPE_VIOLATION_NEW_FILE' | 'STOP_LOCKFILE_CHANGE_FORBIDDEN' | 'STOP_DIFF_TOO_LARGE' | 'STOP_VERIFY_FAILED_FAST' | 'STOP_VERIFY_FAILED_SLOW' | 'STOP_VERIFY_TAINTED' | 'STOP_VERIFY_ONLY_SIDE_EFFECTS' | 'STOP_QUESTION_SIDE_EFFECTS' | 'STOP_RUNNER_OWNED_MUTATION' | 'STOP_BUILDER_JSON_PARSE' | 'STOP_BUILDER_SCHEMA_INVALID' | 'STOP_BUILDER_SHAPE_INVALID' | 'STOP_BUILDER_CLI_ERROR' | 'STOP_BUILDER_TIMEOUT' | 'STOP_HEAD_MOVED' | 'STOP_INTERRUPTED' | 'STOP_REVIEWER_FORCED_PATCH' | 'STOP_REVIEWER_ASK_QUESTION' | 'STOP_ORCHESTRATOR_ASK_QUESTION' | 'STOP_REDISPATCH_IDENTICAL_TASK' | 'STOP_VERIFY_FLAKY_OR_TIMEOUT' | 'STOP_ORCHESTRATOR_TIMEOUT' | 'STOP_MERGE_DIRTY_WORKTREE' | 'STOP_BRANCH_MISMATCH' | 'STOP_EVIDENCE_INCOMPLETE' | 'BLOCKED_BUDGET_EXHAUSTED' | 'BLOCKED_BUDGET_CAP' | 'BLOCKED_DIRTY_WORKTREE' | 'BLOCKED_LOCK_HELD' | 'BLOCKED_CRASH_RECOVERY_REQUIRED' | 'BLOCKED_ORCHESTRATOR_OUTPUT_INVALID' | 'BLOCKED_HISTORY_CAP_CLEANUP_REQUIRED' | 'BLOCKED_MISSING_CONFIG' | 'BLOCKED_TRANSPORT_STALLED' | 'BLOCKED_ROLLBACK_FAILED' | 'BLOCKED_ROLLBACK_DIRTY' | 'BLOCKED_BUILDER_COMMAND_NOT_FOUND' | 'BLOCKED_BRANCH_FAILED';
|
|
15
|
+
/**
|
|
16
|
+
* Blast radius information about changes made during the tick.
|
|
17
|
+
*/
|
|
18
|
+
export interface BlastRadius {
|
|
19
|
+
/** Number of files touched */
|
|
20
|
+
files_touched: number;
|
|
21
|
+
/** Number of lines added */
|
|
22
|
+
lines_added: number;
|
|
23
|
+
/** Number of lines deleted */
|
|
24
|
+
lines_deleted: number;
|
|
25
|
+
/** Number of new files created */
|
|
26
|
+
new_files: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Scope checking results.
|
|
30
|
+
*/
|
|
31
|
+
export interface ScopeResult {
|
|
32
|
+
/** Whether scope checks passed */
|
|
33
|
+
ok: boolean;
|
|
34
|
+
/** List of scope violations found */
|
|
35
|
+
violations: string[];
|
|
36
|
+
/** List of file paths that were touched */
|
|
37
|
+
touched_paths: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Diff information.
|
|
41
|
+
*/
|
|
42
|
+
export interface DiffInfo {
|
|
43
|
+
/** Number of files changed */
|
|
44
|
+
files_changed: number;
|
|
45
|
+
/** Number of lines changed */
|
|
46
|
+
lines_changed: number;
|
|
47
|
+
/** Path to the diff patch file */
|
|
48
|
+
diff_patch_path: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Verification run result.
|
|
52
|
+
*/
|
|
53
|
+
export interface VerificationRun {
|
|
54
|
+
/** Template ID used */
|
|
55
|
+
template_id: string;
|
|
56
|
+
/** Phase (fast or slow) */
|
|
57
|
+
phase: 'fast' | 'slow';
|
|
58
|
+
/** Command executed */
|
|
59
|
+
cmd: string;
|
|
60
|
+
/** Command arguments */
|
|
61
|
+
args: string[];
|
|
62
|
+
/** Exit code */
|
|
63
|
+
exit_code: number;
|
|
64
|
+
/** Duration in milliseconds */
|
|
65
|
+
duration_ms: number;
|
|
66
|
+
/** Whether the command timed out */
|
|
67
|
+
timed_out: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Verification results.
|
|
71
|
+
*/
|
|
72
|
+
export interface VerificationResult {
|
|
73
|
+
/** Execution mode */
|
|
74
|
+
exec_mode: 'argv_no_shell';
|
|
75
|
+
/** List of verification runs */
|
|
76
|
+
runs: VerificationRun[];
|
|
77
|
+
/** Path to verification log file */
|
|
78
|
+
verify_log_path: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Budget information.
|
|
82
|
+
*/
|
|
83
|
+
export interface BudgetInfo {
|
|
84
|
+
/** Milestone ID */
|
|
85
|
+
milestone_id: string;
|
|
86
|
+
/** Number of ticks consumed */
|
|
87
|
+
ticks: number;
|
|
88
|
+
/** Number of orchestrator calls */
|
|
89
|
+
orchestrator_calls: number;
|
|
90
|
+
/** Number of builder calls */
|
|
91
|
+
builder_calls: number;
|
|
92
|
+
/** Number of verification runs */
|
|
93
|
+
verify_runs: number;
|
|
94
|
+
/** Estimated cost in USD */
|
|
95
|
+
estimated_cost_usd: number;
|
|
96
|
+
/** Budget warnings */
|
|
97
|
+
warnings: string[];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Task summary in report (minimal task info).
|
|
101
|
+
*/
|
|
102
|
+
export interface TaskSummary {
|
|
103
|
+
/** Task ID */
|
|
104
|
+
task_id: string;
|
|
105
|
+
/** Milestone ID */
|
|
106
|
+
milestone_id: string;
|
|
107
|
+
/** Task kind */
|
|
108
|
+
task_kind: 'execute' | 'verify_only' | 'question';
|
|
109
|
+
/** Task intent */
|
|
110
|
+
intent: string;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Optional pointers to related files.
|
|
114
|
+
*/
|
|
115
|
+
export interface ReportPointers {
|
|
116
|
+
/** Path to REPORT.md file */
|
|
117
|
+
report_md_path?: string;
|
|
118
|
+
/** Path to history directory */
|
|
119
|
+
history_dir?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Complete report data structure.
|
|
123
|
+
*
|
|
124
|
+
* This matches the report.schema.json structure and serves as the
|
|
125
|
+
* canonical source of truth for tick execution results.
|
|
126
|
+
*/
|
|
127
|
+
export interface ReportData {
|
|
128
|
+
/** Unique run ID */
|
|
129
|
+
run_id: string;
|
|
130
|
+
/** ISO timestamp when tick started */
|
|
131
|
+
started_at: string;
|
|
132
|
+
/** ISO timestamp when tick ended */
|
|
133
|
+
ended_at: string;
|
|
134
|
+
/** Duration in milliseconds */
|
|
135
|
+
duration_ms: number;
|
|
136
|
+
/** Base commit SHA at start */
|
|
137
|
+
base_commit: string;
|
|
138
|
+
/** Head commit SHA at end */
|
|
139
|
+
head_commit: string;
|
|
140
|
+
/** Task summary */
|
|
141
|
+
task: TaskSummary;
|
|
142
|
+
/** Verdict */
|
|
143
|
+
verdict: Verdict;
|
|
144
|
+
/** Report code */
|
|
145
|
+
code: ReportCode;
|
|
146
|
+
/** Blast radius */
|
|
147
|
+
blast_radius: BlastRadius;
|
|
148
|
+
/** Scope checking results */
|
|
149
|
+
scope: ScopeResult;
|
|
150
|
+
/** Diff information */
|
|
151
|
+
diff: DiffInfo;
|
|
152
|
+
/** Verification results */
|
|
153
|
+
verification: VerificationResult;
|
|
154
|
+
/** Budget information */
|
|
155
|
+
budgets: BudgetInfo;
|
|
156
|
+
/** Optional pointers */
|
|
157
|
+
pointers?: ReportPointers;
|
|
158
|
+
/** Reviewer error message (if reviewer invocation failed) */
|
|
159
|
+
reviewer_error?: string;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Codex CLI reviewer invocation.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Context information passed to the reviewer for review.
|
|
6
|
+
*/
|
|
7
|
+
export interface ReviewerContext {
|
|
8
|
+
/** The context/prompt to send to the reviewer */
|
|
9
|
+
prompt: string;
|
|
10
|
+
/** System prompt (optional) */
|
|
11
|
+
systemPrompt?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Invocation parameters for Codex CLI reviewer.
|
|
15
|
+
*/
|
|
16
|
+
export interface ReviewerInvocationConfig {
|
|
17
|
+
/** Command to invoke Codex CLI */
|
|
18
|
+
command: string;
|
|
19
|
+
/** Model to use */
|
|
20
|
+
model: string;
|
|
21
|
+
/** Maximum conversation turns */
|
|
22
|
+
maxTurns: number;
|
|
23
|
+
/** Timeout in milliseconds */
|
|
24
|
+
timeout: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Successful reviewer result.
|
|
28
|
+
*/
|
|
29
|
+
export interface ReviewerResult {
|
|
30
|
+
/** Whether the review was successful */
|
|
31
|
+
success: true;
|
|
32
|
+
/** The reviewer's output (parsed JSON) */
|
|
33
|
+
result: object;
|
|
34
|
+
/** Raw JSON response from CLI */
|
|
35
|
+
raw: object;
|
|
36
|
+
/** Process exit code */
|
|
37
|
+
exitCode: number;
|
|
38
|
+
/** Duration of invocation in milliseconds */
|
|
39
|
+
durationMs: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reviewer error result.
|
|
43
|
+
*/
|
|
44
|
+
export interface ReviewerError {
|
|
45
|
+
/** Whether the review was successful */
|
|
46
|
+
success: false;
|
|
47
|
+
/** Error message */
|
|
48
|
+
error: string;
|
|
49
|
+
/** Process exit code */
|
|
50
|
+
exitCode: number;
|
|
51
|
+
/** Standard error output */
|
|
52
|
+
stderr?: string;
|
|
53
|
+
/** Duration of invocation in milliseconds */
|
|
54
|
+
durationMs: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Union type for reviewer invocation result.
|
|
58
|
+
*/
|
|
59
|
+
export type ReviewerInvocationResult = ReviewerResult | ReviewerError;
|
|
60
|
+
/**
|
|
61
|
+
* Risk flags indicating which risk conditions have been triggered.
|
|
62
|
+
*
|
|
63
|
+
* These flags are used to determine when the reviewer should be invoked.
|
|
64
|
+
*/
|
|
65
|
+
export type RiskFlags = 'high_risk_path' | 'diff_near_cap' | 'verify_failed' | 'repeated_stop' | 'budget_warning';
|
|
66
|
+
//# sourceMappingURL=reviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/types/reviewer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,OAAO,EAAE,IAAI,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,OAAO,EAAE,KAAK,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,aAAa,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,eAAe,GACf,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/types/reviewer.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State machine types for the envoi tick execution.
|
|
3
|
+
*
|
|
4
|
+
* A tick is one complete execution of the envoi loop through all phases:
|
|
5
|
+
* LOCK → PREFLIGHT → ORCHESTRATE → BUILD → JUDGE → REPORT → END
|
|
6
|
+
*/
|
|
7
|
+
import type { EnvoiConfig } from './config.js';
|
|
8
|
+
import type { Task } from './task.js';
|
|
9
|
+
import type { BuilderResult } from './builder.js';
|
|
10
|
+
/**
|
|
11
|
+
* Phases of the tick state machine.
|
|
12
|
+
*/
|
|
13
|
+
export declare enum TickPhase {
|
|
14
|
+
LOCK = "LOCK",
|
|
15
|
+
PREFLIGHT = "PREFLIGHT",
|
|
16
|
+
ORCHESTRATE = "ORCHESTRATE",
|
|
17
|
+
BUILD = "BUILD",
|
|
18
|
+
JUDGE = "JUDGE",
|
|
19
|
+
REPORT = "REPORT",
|
|
20
|
+
END = "END"
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Stop history entry representing a single stop event.
|
|
24
|
+
*/
|
|
25
|
+
export interface StopHistoryEntry {
|
|
26
|
+
/** Run ID when the stop occurred */
|
|
27
|
+
run_id: string;
|
|
28
|
+
/** Stop code/reason */
|
|
29
|
+
code: string;
|
|
30
|
+
/** ISO timestamp when the stop occurred */
|
|
31
|
+
at: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Verify history entry representing a single verification run.
|
|
35
|
+
*/
|
|
36
|
+
export interface VerifyHistoryEntry {
|
|
37
|
+
/** ISO timestamp when verification ran */
|
|
38
|
+
ts: string;
|
|
39
|
+
/** Task ID that was verified */
|
|
40
|
+
task: string;
|
|
41
|
+
/** Verification result */
|
|
42
|
+
result: 'PASS' | 'FAIL' | 'TIMEOUT';
|
|
43
|
+
/** Command that was executed */
|
|
44
|
+
cmd: string;
|
|
45
|
+
/** Duration in milliseconds */
|
|
46
|
+
ms: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Guardrail state tracking escalation and risk flags.
|
|
50
|
+
*/
|
|
51
|
+
export interface GuardrailState {
|
|
52
|
+
/** Force patch mode until success (escalation flag) */
|
|
53
|
+
force_patch_until_success: boolean;
|
|
54
|
+
/** Last risk flags that triggered reviewer */
|
|
55
|
+
last_risk_flags: string[];
|
|
56
|
+
/** History of stop events (capped to 50 entries) */
|
|
57
|
+
stop_history: StopHistoryEntry[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Escalation state tracking escalation mode and configuration.
|
|
61
|
+
*/
|
|
62
|
+
export interface EscalationState {
|
|
63
|
+
/** Escalation mode */
|
|
64
|
+
mode: 'none' | 'reviewer' | 'human';
|
|
65
|
+
/** Reason for escalation */
|
|
66
|
+
reason: string;
|
|
67
|
+
/** Window ticks for escalation tracking */
|
|
68
|
+
window_ticks: number;
|
|
69
|
+
/** Maximum stops allowed in window */
|
|
70
|
+
max_stops_in_window: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Complete state of a tick execution.
|
|
74
|
+
*/
|
|
75
|
+
export interface TickState {
|
|
76
|
+
/** Current phase of the tick */
|
|
77
|
+
phase: TickPhase;
|
|
78
|
+
/** Unique ID for this tick run */
|
|
79
|
+
run_id: string;
|
|
80
|
+
/** ISO timestamp when the tick started */
|
|
81
|
+
started_at: string;
|
|
82
|
+
/** Git HEAD commit SHA at the start of the tick */
|
|
83
|
+
base_commit: string;
|
|
84
|
+
/** Envoi configuration */
|
|
85
|
+
config: EnvoiConfig;
|
|
86
|
+
/** Task from orchestrator (null until ORCHESTRATE phase completes) */
|
|
87
|
+
task: Task | null;
|
|
88
|
+
/** Builder result (null until BUILD phase completes) */
|
|
89
|
+
builder_result: BuilderResult | null;
|
|
90
|
+
/** Accumulated errors during execution */
|
|
91
|
+
errors: string[];
|
|
92
|
+
/** Guardrail state (optional - absent means no escalation state) */
|
|
93
|
+
guardrail?: GuardrailState;
|
|
94
|
+
/** Current TASK fingerprint (sha256) */
|
|
95
|
+
task_fingerprint?: string;
|
|
96
|
+
/** Fingerprint of last failed task */
|
|
97
|
+
last_failed_fingerprint?: string;
|
|
98
|
+
/** Consecutive failures count */
|
|
99
|
+
failure_streak?: number;
|
|
100
|
+
/** Last N verify results (capped to 50 entries) */
|
|
101
|
+
verify_history?: VerifyHistoryEntry[];
|
|
102
|
+
/** Current escalation state */
|
|
103
|
+
escalation?: EscalationState;
|
|
104
|
+
/** Retry count for transport stalls (resets on success) */
|
|
105
|
+
retry_count?: number;
|
|
106
|
+
/** Kind of error that triggered retry (e.g., 'transport_stalled') */
|
|
107
|
+
last_error_kind?: string;
|
|
108
|
+
/** Request ID from last transport stall (for debugging) */
|
|
109
|
+
last_request_id?: string | null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Context passed between phase handlers.
|
|
113
|
+
*/
|
|
114
|
+
export interface TickContext {
|
|
115
|
+
/** Current tick state */
|
|
116
|
+
state: TickState;
|
|
117
|
+
/** Lock information (set during LOCK phase) */
|
|
118
|
+
lockInfo?: {
|
|
119
|
+
pid: number;
|
|
120
|
+
started_at: string;
|
|
121
|
+
boot_id: string;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State machine types for the envoi tick execution.
|
|
3
|
+
*
|
|
4
|
+
* A tick is one complete execution of the envoi loop through all phases:
|
|
5
|
+
* LOCK → PREFLIGHT → ORCHESTRATE → BUILD → JUDGE → REPORT → END
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Phases of the tick state machine.
|
|
9
|
+
*/
|
|
10
|
+
export var TickPhase;
|
|
11
|
+
(function (TickPhase) {
|
|
12
|
+
TickPhase["LOCK"] = "LOCK";
|
|
13
|
+
TickPhase["PREFLIGHT"] = "PREFLIGHT";
|
|
14
|
+
TickPhase["ORCHESTRATE"] = "ORCHESTRATE";
|
|
15
|
+
TickPhase["BUILD"] = "BUILD";
|
|
16
|
+
TickPhase["JUDGE"] = "JUDGE";
|
|
17
|
+
TickPhase["REPORT"] = "REPORT";
|
|
18
|
+
TickPhase["END"] = "END";
|
|
19
|
+
})(TickPhase || (TickPhase = {}));
|
|
20
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,oCAAuB,CAAA;IACvB,wCAA2B,CAAA;IAC3B,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,wBAAW,CAAA;AACb,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task type definition matching task.schema.json.
|
|
3
|
+
*
|
|
4
|
+
* This represents the task structure output by the orchestrator.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Task kind indicating the type of task.
|
|
8
|
+
*/
|
|
9
|
+
export type TaskKind = 'execute' | 'verify_only' | 'question';
|
|
10
|
+
/**
|
|
11
|
+
* Question object for question-type tasks.
|
|
12
|
+
*/
|
|
13
|
+
export interface Question {
|
|
14
|
+
/** The question prompt */
|
|
15
|
+
prompt: string;
|
|
16
|
+
/** Optional list of choices */
|
|
17
|
+
choices?: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Scope configuration for the task.
|
|
21
|
+
*/
|
|
22
|
+
export interface TaskScope {
|
|
23
|
+
/** Glob patterns for allowed file access */
|
|
24
|
+
allowed_globs: string[];
|
|
25
|
+
/** Glob patterns for forbidden file access */
|
|
26
|
+
forbidden_globs: string[];
|
|
27
|
+
/** Whether new files can be created */
|
|
28
|
+
allow_new_files: boolean;
|
|
29
|
+
/** Whether lockfile changes are allowed */
|
|
30
|
+
allow_lockfile_changes: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Diff limits for the task.
|
|
34
|
+
*/
|
|
35
|
+
export interface DiffLimits {
|
|
36
|
+
/** Maximum number of files that can be touched */
|
|
37
|
+
max_files_touched: number;
|
|
38
|
+
/** Maximum number of lines that can be changed */
|
|
39
|
+
max_lines_changed: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Verification configuration.
|
|
43
|
+
*/
|
|
44
|
+
export interface TaskVerification {
|
|
45
|
+
/** Fast verification template IDs */
|
|
46
|
+
fast: string[];
|
|
47
|
+
/** Slow verification template IDs */
|
|
48
|
+
slow: string[];
|
|
49
|
+
/** Optional parameters for verification templates */
|
|
50
|
+
params?: Record<string, Record<string, string | number | boolean | null>>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builder configuration.
|
|
54
|
+
*/
|
|
55
|
+
export interface TaskBuilder {
|
|
56
|
+
/** Builder mode */
|
|
57
|
+
mode: 'claude_code' | 'patch' | 'cursor';
|
|
58
|
+
/** Maximum number of turns */
|
|
59
|
+
max_turns: number;
|
|
60
|
+
/** Instructions for the builder */
|
|
61
|
+
instructions: string;
|
|
62
|
+
/** Patch content (required if mode is 'patch') */
|
|
63
|
+
patch?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Control configuration for stopping the loop.
|
|
67
|
+
*/
|
|
68
|
+
export interface TaskControl {
|
|
69
|
+
/** Action: continue or stop */
|
|
70
|
+
action: 'continue' | 'stop';
|
|
71
|
+
/** Optional reason for the action */
|
|
72
|
+
reason?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Orchestrator planning metadata for PM-style idea triage.
|
|
76
|
+
*/
|
|
77
|
+
export interface TaskPlanningDecision {
|
|
78
|
+
/** Idea IDs considered when preparing this task */
|
|
79
|
+
idea_ids_considered: string[];
|
|
80
|
+
/** Scheduling decision */
|
|
81
|
+
decision: 'schedule_now' | 'schedule_next' | 'defer';
|
|
82
|
+
/** Short rationale for the decision */
|
|
83
|
+
rationale_short: string;
|
|
84
|
+
/** Optional milestone suggestion from orchestrator */
|
|
85
|
+
suggested_milestone?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Task structure output by the orchestrator.
|
|
89
|
+
*
|
|
90
|
+
* This matches the structure defined in task.schema.json.
|
|
91
|
+
* Note: Either builder or control must be present (XOR), enforced by schema.
|
|
92
|
+
*/
|
|
93
|
+
export interface Task {
|
|
94
|
+
/** Unique task identifier */
|
|
95
|
+
task_id: string;
|
|
96
|
+
/** Milestone identifier */
|
|
97
|
+
milestone_id: string;
|
|
98
|
+
/** Task kind */
|
|
99
|
+
task_kind: TaskKind;
|
|
100
|
+
/** Intent description */
|
|
101
|
+
intent: string;
|
|
102
|
+
/** Question object (required if task_kind is 'question') */
|
|
103
|
+
question?: Question;
|
|
104
|
+
/** Scope configuration */
|
|
105
|
+
scope: TaskScope;
|
|
106
|
+
/** Diff limits */
|
|
107
|
+
diff_limits: DiffLimits;
|
|
108
|
+
/** Verification configuration */
|
|
109
|
+
verification: TaskVerification;
|
|
110
|
+
/** Builder configuration (mutually exclusive with control) */
|
|
111
|
+
builder?: TaskBuilder;
|
|
112
|
+
/** Control configuration for stopping the loop (mutually exclusive with builder) */
|
|
113
|
+
control?: TaskControl;
|
|
114
|
+
/** Optional PM-style planning metadata */
|
|
115
|
+
planning_decision?: TaskPlanningDecision;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/types/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uCAAuC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;IACzC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,0BAA0B;IAC1B,QAAQ,EAAE,cAAc,GAAG,eAAe,GAAG,OAAO,CAAC;IACrD,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,IAAI;IACnB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,WAAW,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,oFAAoF;IACpF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/types/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript interfaces for workspace state persistence.
|
|
3
|
+
*
|
|
4
|
+
* WorkspaceState tracks milestone progress and budget consumption
|
|
5
|
+
* across restarts, enabling budget enforcement and crash recovery.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/NEW-PLAN.md lines 32-45
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Count-based budget tracking for a single milestone.
|
|
11
|
+
*
|
|
12
|
+
* All fields are counts (not dollar amounts) per NEW-PLAN.md decision:
|
|
13
|
+
* "Do not implement dollar cost estimation in v1. Track counts only."
|
|
14
|
+
*/
|
|
15
|
+
export interface BudgetCounts {
|
|
16
|
+
/** Number of ticks consumed in current milestone */
|
|
17
|
+
ticks: number;
|
|
18
|
+
/** Number of orchestrator invocations in current milestone */
|
|
19
|
+
orchestrator_calls: number;
|
|
20
|
+
/** Number of builder invocations in current milestone */
|
|
21
|
+
builder_calls: number;
|
|
22
|
+
/** Number of verification runs in current milestone */
|
|
23
|
+
verify_runs: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Partial budget counts for applying incremental changes.
|
|
27
|
+
*
|
|
28
|
+
* Used by applyDeltas() to add to specific budget counters
|
|
29
|
+
* without requiring all fields.
|
|
30
|
+
*/
|
|
31
|
+
export type BudgetDeltas = Partial<BudgetCounts>;
|
|
32
|
+
/**
|
|
33
|
+
* Delivery timing preference for user ideas.
|
|
34
|
+
*/
|
|
35
|
+
export type IdeaTestabilityNeed = 'soon' | 'later' | 'unknown';
|
|
36
|
+
/**
|
|
37
|
+
* Lifecycle status of a user-submitted idea.
|
|
38
|
+
*/
|
|
39
|
+
export type IdeaStatus = 'new' | 'triaged' | 'scheduled' | 'deferred' | 'done';
|
|
40
|
+
/**
|
|
41
|
+
* A user idea captured between execution boundaries.
|
|
42
|
+
*/
|
|
43
|
+
export interface IdeaInboxEntry {
|
|
44
|
+
/** Stable ID for reference in planning decisions */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Raw user idea text */
|
|
47
|
+
text: string;
|
|
48
|
+
/** ISO timestamp when the idea was submitted */
|
|
49
|
+
submitted_at: string;
|
|
50
|
+
/** Where the idea was captured from */
|
|
51
|
+
source: 'interactive' | 'cli' | 'api';
|
|
52
|
+
/** Current planning status */
|
|
53
|
+
status: IdeaStatus;
|
|
54
|
+
/** Optional target date or milestone hint */
|
|
55
|
+
target_by?: string | null;
|
|
56
|
+
/** Optional testability urgency */
|
|
57
|
+
testability_need?: IdeaTestabilityNeed;
|
|
58
|
+
/** Last orchestrator task that triaged this idea */
|
|
59
|
+
triaged_by_task_id?: string;
|
|
60
|
+
/** ISO timestamp when triaged */
|
|
61
|
+
triaged_at?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Rolling PM-style digest generated from orchestrator planning decisions.
|
|
65
|
+
*/
|
|
66
|
+
export interface PlanningDigest {
|
|
67
|
+
/** Last update timestamp */
|
|
68
|
+
updated_at: string;
|
|
69
|
+
/** Human-readable summary of the latest planning decision */
|
|
70
|
+
summary: string;
|
|
71
|
+
/** Last task that updated the digest */
|
|
72
|
+
last_task_id?: string;
|
|
73
|
+
/** Last milestone suggested by orchestrator */
|
|
74
|
+
suggested_milestone?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Open product-level question asked by the orchestrator.
|
|
78
|
+
*/
|
|
79
|
+
export interface ProductQuestion {
|
|
80
|
+
/** Stable question ID */
|
|
81
|
+
id: string;
|
|
82
|
+
/** Prompt shown to the user */
|
|
83
|
+
prompt: string;
|
|
84
|
+
/** Optional choices */
|
|
85
|
+
choices?: string[];
|
|
86
|
+
/** Created timestamp */
|
|
87
|
+
created_at: string;
|
|
88
|
+
/** Resolution status */
|
|
89
|
+
resolved: boolean;
|
|
90
|
+
/** Optional resolution timestamp */
|
|
91
|
+
resolved_at?: string;
|
|
92
|
+
/** Optional free-text resolution */
|
|
93
|
+
resolution?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Workspace state persisted to STATE.json.
|
|
97
|
+
*
|
|
98
|
+
* This state survives restarts and enables:
|
|
99
|
+
* - Budget enforcement (hard cap in preflight, soft stop in loop)
|
|
100
|
+
* - Milestone tracking (crash recovery knows which milestone is active)
|
|
101
|
+
* - Resume logic (last_run_id + last_verdict for continuation)
|
|
102
|
+
*/
|
|
103
|
+
export interface WorkspaceState {
|
|
104
|
+
/** Current milestone being worked on, or null if none active */
|
|
105
|
+
milestone_id: string | null;
|
|
106
|
+
/** Count-based budget consumption for current milestone */
|
|
107
|
+
budgets: BudgetCounts;
|
|
108
|
+
/**
|
|
109
|
+
* True when approaching budget limit.
|
|
110
|
+
* Triggers soft stop in loop (PR2) - runner breaks loop gracefully.
|
|
111
|
+
* Computed by computeBudgetWarning() using warn_at_fraction from config.
|
|
112
|
+
*/
|
|
113
|
+
budget_warning: boolean;
|
|
114
|
+
/** ID of last tick run, for crash recovery and resume logic */
|
|
115
|
+
last_run_id: string | null;
|
|
116
|
+
/** Last verdict (PASS/FAIL/STOP/etc) for resume logic */
|
|
117
|
+
last_verdict: string | null;
|
|
118
|
+
/** Optional inbox of user-submitted ideas */
|
|
119
|
+
idea_inbox?: IdeaInboxEntry[];
|
|
120
|
+
/** Optional rolling digest of planning decisions */
|
|
121
|
+
planning_digest?: PlanningDigest | null;
|
|
122
|
+
/** Optional list of open product questions from orchestrator */
|
|
123
|
+
open_product_questions?: ProductQuestion[];
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=workspace_state.d.ts.map
|