jonah-fleet 1.4.2 → 1.6.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.
@@ -8,6 +8,7 @@ export interface DaemonState {
8
8
  lastAutoworkCheckAt?: string;
9
9
  status: 'idle' | 'working' | 'stopped';
10
10
  activeRoutine?: string;
11
+ activeTarget?: string;
11
12
  activeWorktree?: string;
12
13
  }
13
14
  export interface DaemonOptions {
@@ -17,12 +18,28 @@ export interface DaemonOptions {
17
18
  routines?: string[];
18
19
  model?: string;
19
20
  foreground?: boolean;
21
+ verbose?: boolean;
20
22
  }
21
23
  export declare function getDaemonStatePath(repoRoot: string): string;
22
24
  export declare function readDaemonState(repoRoot: string): DaemonState | null;
23
25
  export declare function writeDaemonState(repoRoot: string, state: DaemonState): void;
24
26
  export declare function clearDaemonState(repoRoot: string): void;
25
27
  export declare function isDaemonRunning(repoRoot: string): boolean;
28
+ export interface ReviewablePR {
29
+ number: number;
30
+ headRefName: string;
31
+ title: string;
32
+ }
33
+ /**
34
+ * Filters a list of pull requests to include only reviewable PRs,
35
+ * excluding automated release-please branches and release PR titles.
36
+ */
37
+ export declare function filterReviewablePRs(prs: ReviewablePR[]): ReviewablePR[];
38
+ /**
39
+ * Fast pre-flight check to query open ready PRs in ~100ms with 0 token cost,
40
+ * excluding drafts, automated release-please branches, and release PR titles.
41
+ */
42
+ export declare function getOpenReviewablePRs(repoRoot: string): Promise<ReviewablePR[]>;
26
43
  /**
27
44
  * Fast pre-flight check to query number of open ready PRs in ~100ms with 0 token cost.
28
45
  */
@@ -35,6 +52,24 @@ export declare function startBackgroundDaemon(repoRoot: string, options?: Daemon
35
52
  * Stops a running daemon process.
36
53
  */
37
54
  export declare function stopDaemon(repoRoot: string): Promise<boolean>;
55
+ export interface DrainReviewQueueOptions {
56
+ repoRoot: string;
57
+ state?: DaemonState;
58
+ options?: DaemonOptions;
59
+ isStopping?: () => boolean;
60
+ clearTicker?: () => void;
61
+ getPRs?: (repoRoot: string) => Promise<ReviewablePR[]>;
62
+ runRoutine?: (opts: any) => Promise<{
63
+ success: boolean;
64
+ exitCode?: number;
65
+ }>;
66
+ onAttempted?: (prNumber: number) => void;
67
+ }
68
+ /**
69
+ * Sequentially drains all open reviewable PRs by executing peer-review in isolated worktrees.
70
+ * Tracks attempted PRs per pass to prevent infinite loops on stalled or repeatedly unmerged PRs.
71
+ */
72
+ export declare function drainReviewQueue(drainOptions: DrainReviewQueueOptions): Promise<void>;
38
73
  /**
39
74
  * Runs the multi-cadence polling daemon loop in the current process.
40
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQpE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAI3E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASvD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWzE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmD/G;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIhG"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export interface SyntheticLogOptions {
3
3
  routine: 'autowork' | 'peer-review' | 'optimizer' | 'issues-housekeeping' | 'dependency-check' | 'product-planning' | 'analytics-review';
4
4
  timestamp: string;
5
5
  result: 'SUCCESS' | 'FAILURE';
6
- errorCategory?: 'prompt_unclear' | 'token_limit' | 'data_issue' | 'infeasible_task' | 'merge_conflict' | 'orchestration_collision' | 'telemetry_rabbit_hole' | 'intent_vs_defect';
6
+ errorCategory?: 'prompt_unclear' | 'token_limit' | 'data_issue' | 'infeasible_task' | 'merge_conflict' | 'orchestration_collision' | 'telemetry_rabbit_hole' | 'intent_vs_defect' | 'ambiguous_spec';
7
7
  errorReason?: string;
8
8
  inputTokens?: number;
9
9
  outputTokens?: number;
@@ -13,6 +13,37 @@ export interface SyntheticLogOptions {
13
13
  isGenericPattern?: boolean;
14
14
  suggestedOptimization?: string;
15
15
  }
16
+ export interface BenchmarkIssue {
17
+ id: string;
18
+ title: string;
19
+ body: string;
20
+ labels?: string[];
21
+ expectedAction: 'ASK_QUESTIONS' | 'PROCEED_TO_IMPLEMENT';
22
+ rationale: string;
23
+ origin?: 'synthetic' | 'optimizer_extracted' | 'human_authored';
24
+ sourceLogTimestamp?: string;
25
+ }
26
+ export interface BenchmarkEvaluationResult {
27
+ issueId: string;
28
+ decision: 'ASK_QUESTIONS' | 'PROCEED_TO_IMPLEMENT';
29
+ expectedAction: 'ASK_QUESTIONS' | 'PROCEED_TO_IMPLEMENT';
30
+ isCorrect: boolean;
31
+ confidence: number;
32
+ missingCriteria: string[];
33
+ generatedQuestions: string[];
34
+ rationale: string;
35
+ }
36
+ export interface BenchmarkRunSummary {
37
+ totalEvaluated: number;
38
+ passedCount: number;
39
+ failedCount: number;
40
+ accuracy: number;
41
+ falseComplianceCount: number;
42
+ falseComplianceRate: number;
43
+ falseObstructionCount: number;
44
+ falseObstructionRate: number;
45
+ itemizedResults: BenchmarkEvaluationResult[];
46
+ }
16
47
  export interface ContributionProposal {
17
48
  id: string;
18
49
  scope: 'generic' | 'local';
@@ -69,4 +100,28 @@ export declare function analyzeOptimizerSignals(logs: string[]): OptimizationAna
69
100
  * Simulate consumer repository downstream sync and verify drift & PR generation
70
101
  */
71
102
  export declare function simulateDownstreamSyncWorkflow(options: DownstreamSyncSimulationOptions): DownstreamSyncSimulationResult;
103
+ /**
104
+ * Evaluate whether an issue is ambiguous or ready for immediate autonomous implementation
105
+ */
106
+ export declare function evaluateIssueAmbiguity(issue: BenchmarkIssue): BenchmarkEvaluationResult;
107
+ /**
108
+ * Execute an automated benchmark run over a dataset of candidate issues
109
+ */
110
+ export declare function runAmbiguityBenchmark(dataset: BenchmarkIssue[]): BenchmarkRunSummary;
111
+ /**
112
+ * Extract an ambiguous benchmark fixture from an agent failure log or review ping-pong run
113
+ */
114
+ export declare function extractBenchmarkCaseFromLog(rawLog: string, issueDetails?: {
115
+ title?: string;
116
+ body?: string;
117
+ id?: string;
118
+ }): BenchmarkIssue | null;
119
+ /**
120
+ * Dynamically feed an optimizer-extracted issue into a benchmark dataset
121
+ */
122
+ export declare function feedOptimizerCaseToBenchmark(dataset: BenchmarkIssue[], newCase: BenchmarkIssue): BenchmarkIssue[];
123
+ /**
124
+ * Load the baseline ambiguity benchmark dataset
125
+ */
126
+ export declare function getBaselineAmbiguityBenchmarkDataset(): BenchmarkIssue[];
72
127
  //# sourceMappingURL=evals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evals.d.ts","sourceRoot":"","sources":["../../src/lib/evals.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAKzD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IACzI,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,uBAAuB,GAAG,kBAAkB,CAAC;IAClL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE;QACZ,QAAQ,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,WAAW,CAAC;KAC3B,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE;QACT,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAiD1E;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CA8CpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAsElF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,+BAA+B,GAAG,8BAA8B,CAmEvH"}
1
+ {"version":3,"file":"evals.d.ts","sourceRoot":"","sources":["../../src/lib/evals.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,6 @@ export declare const PRESET_CONFIGS: Record<Exclude<PresetName, 'custom'>, {
47
47
  }>;
48
48
  export declare const ROUTINE_TO_WORKFLOW_MAP: Record<keyof FleetManifest['routines'], string[]>;
49
49
  export declare const WORKFLOW_TO_ROUTINE_MAP: Record<string, keyof FleetManifest['routines'] | 'sync-fleet'>;
50
- export declare const FLEET_VERSION = "1.4.2";
50
+ export declare const FLEET_VERSION = "1.6.0";
51
51
  export declare const SCHEMA_URL = "https://raw.githubusercontent.com/juliendurandeu/jonah-fleet/main/schema.json";
52
52
  //# sourceMappingURL=presets.d.ts.map
@@ -8,8 +8,11 @@ export interface RunLocalRoutineOptions {
8
8
  noWorktree?: boolean;
9
9
  keepWorktree?: boolean;
10
10
  dryRun?: boolean;
11
+ verbose?: boolean;
12
+ showCard?: boolean;
11
13
  env?: Record<string, string>;
12
14
  onLog?: (chunk: string) => void;
15
+ onTargetDetected?: (target: string) => void;
13
16
  }
14
17
  export interface RunLocalRoutineResult {
15
18
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,GAC9D,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwIrG"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,GAC9D,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgOrG"}
@@ -19,6 +19,9 @@ export interface RoutineTelemetrySummary {
19
19
  maxIterations?: number;
20
20
  reviewLoops?: number;
21
21
  promptSha?: string;
22
+ ambiguityGateTriggered?: boolean;
23
+ questionsAskedCount?: number;
24
+ needsInfoApplied?: boolean;
22
25
  }
23
26
  export interface WeeklyBudgetStatus {
24
27
  weeklyCeilingTokens: number;
@@ -41,6 +44,9 @@ export interface RoutineMetricBreakdown {
41
44
  bouncedCount: number;
42
45
  avgDurationSeconds: number;
43
46
  avgIterationsUsed: number;
47
+ ambiguityGatesTriggered: number;
48
+ questionsAskedCount: number;
49
+ needsInfoAppliedCount: number;
44
50
  }
45
51
  export interface RepositoryMetricBreakdown {
46
52
  repository: string;
@@ -50,6 +56,12 @@ export interface RepositoryMetricBreakdown {
50
56
  successCount: number;
51
57
  failureCount: number;
52
58
  }
59
+ export interface AmbiguityMetrics {
60
+ totalAmbiguityGatesTriggered: number;
61
+ totalQuestionsAsked: number;
62
+ needsInfoAppliedCount: number;
63
+ estimatedTokensSaved: number;
64
+ }
53
65
  export interface AggregatedTelemetry {
54
66
  timestamp: string;
55
67
  totalRuns: number;
@@ -64,6 +76,7 @@ export interface AggregatedTelemetry {
64
76
  byRoutine: Record<string, RoutineMetricBreakdown>;
65
77
  byRepository: Record<string, RepositoryMetricBreakdown>;
66
78
  failureCategories: Record<string, number>;
79
+ ambiguity: AmbiguityMetrics;
67
80
  events: RoutineTelemetrySummary[];
68
81
  }
69
82
  export declare function parseLogToTelemetry(content: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ export interface SummaryCardOptions {
2
+ routine: string;
3
+ output?: string;
4
+ repoRoot?: string;
5
+ issue?: string | number;
6
+ pr?: string | number;
7
+ title?: string;
8
+ durationMs?: number;
9
+ }
10
+ export interface ErrorCardOptions {
11
+ routine: string;
12
+ exitCode: number;
13
+ repoRoot: string;
14
+ issue?: string | number;
15
+ pr?: string | number;
16
+ durationMs?: number;
17
+ error?: Error;
18
+ }
19
+ export interface ParsedRunSummary {
20
+ routine?: string;
21
+ target?: string;
22
+ title?: string;
23
+ decision?: string;
24
+ result?: string;
25
+ duration?: string;
26
+ passes?: Array<{
27
+ name: string;
28
+ status: 'pass' | 'fail' | 'info';
29
+ detail?: string;
30
+ }>;
31
+ actions?: string[];
32
+ logPath?: string;
33
+ }
34
+ /**
35
+ * Strips ANSI color codes to accurately measure visual string length.
36
+ */
37
+ export declare function stripAnsi(text: string): string;
38
+ /**
39
+ * Wraps text into multiple lines bounded by maxWidth without cropping.
40
+ */
41
+ export declare function wrapText(text: string, maxWidth: number): string[];
42
+ /**
43
+ * Fetches PR or issue title using GitHub CLI with a tight timeout.
44
+ */
45
+ export declare function fetchTargetTitle(repoRoot: string, target: string): string | null;
46
+ /**
47
+ * Strips temporary worktree roots and converts absolute worktree paths to clean relative paths.
48
+ */
49
+ export declare function sanitizeWorktreePaths(text: string): string;
50
+ /**
51
+ * Extracts the '# ... Execution Summary' section from routine output text.
52
+ */
53
+ export declare function extractExecutionSummary(output: string): string | null;
54
+ /**
55
+ * Finds the latest committed run log in .github/prompts/logs/<routine>/*.md.
56
+ */
57
+ export declare function findLatestRunLog(repoRoot: string, routine: string): string | null;
58
+ /**
59
+ * Parses markdown run log files into structured data.
60
+ */
61
+ export declare function parseRunLog(logContent: string): ParsedRunSummary;
62
+ /**
63
+ * Heuristics to detect active stage from streaming agent tokens.
64
+ */
65
+ export declare function detectActivePhase(chunk: string, currentPhase?: string): string;
66
+ /**
67
+ * Detects if the agent has selected or claimed a specific issue in Scan mode.
68
+ */
69
+ export declare function detectClaimedIssue(chunk: string): string | null;
70
+ /**
71
+ * Detects if the agent has selected a specific pull request in Scan mode.
72
+ */
73
+ export declare function detectClaimedPR(chunk: string): string | null;
74
+ /**
75
+ * Renders a styled Unicode summary card.
76
+ */
77
+ export declare function renderSummaryCard(options: SummaryCardOptions): string;
78
+ /**
79
+ * Renders an Error Card with tail of daemon.log.
80
+ */
81
+ export declare function renderErrorCard(options: ErrorCardOptions): string;
82
+ /**
83
+ * Minimalist zero-dependency terminal spinner.
84
+ */
85
+ export declare class TerminalSpinner {
86
+ private frames;
87
+ private currentFrame;
88
+ private intervalId;
89
+ private startTime;
90
+ private message;
91
+ private isRunning;
92
+ private isTTY;
93
+ constructor();
94
+ start(initialMessage: string): void;
95
+ update(newMessage: string): void;
96
+ private render;
97
+ stop(): void;
98
+ }
99
+ //# sourceMappingURL=terminal-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-card.d.ts","sourceRoot":"","sources":["../../src/lib/terminal-card.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jonah-fleet",
3
- "version": "1.4.2",
3
+ "version": "1.6.0",
4
4
  "description": "Standalone autonomous agent fleet with Symphony orchestration, claim protocols, and continuous improvement loops",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,8 +13,8 @@
13
13
  "dev": "tsup --watch",
14
14
  "lint": "eslint src tests",
15
15
  "type-check": "tsc --noEmit",
16
- "test": "vitest run",
17
- "test:evals": "vitest run tests/evals.test.ts tests/contribute.test.ts tests/sync-workflow.test.ts",
16
+ "test": "vitest run --exclude '**/node_modules/**' --exclude '**/.jonah-fleet/**'",
17
+ "test:evals": "vitest run tests/evals.test.ts tests/contribute.test.ts tests/sync-workflow.test.ts --exclude '**/.jonah-fleet/**'",
18
18
  "test:watch": "vitest",
19
19
  "format": "prettier --write \"**/*.{ts,json,md,yml}\""
20
20
  },
@@ -44,7 +44,7 @@
44
44
  "@types/node": "^26.4.0",
45
45
  "tsup": "^8.3.5",
46
46
  "typescript": "^7.0.2",
47
- "vitest": "^4.1.11"
47
+ "vitest": "^5.0.0"
48
48
  },
49
49
  "overrides": {
50
50
  "esbuild": "^0.28.2"
@@ -0,0 +1,92 @@
1
+ [
2
+ {
3
+ "id": "eval-ambiguous-01",
4
+ "title": "Improve telemetry export speed",
5
+ "body": "The telemetry export is feeling sluggish lately. Please optimize it to make it faster.",
6
+ "labels": ["enhancement"],
7
+ "expectedAction": "ASK_QUESTIONS",
8
+ "rationale": "Lacks baseline metrics, target latency thresholds, profiling data, or specific code bottlenecks.",
9
+ "origin": "synthetic"
10
+ },
11
+ {
12
+ "id": "eval-ambiguous-02",
13
+ "title": "Add role-based permissions",
14
+ "body": "We need role-based permissions in the system so only authorized users can access certain routes.",
15
+ "labels": ["feat"],
16
+ "expectedAction": "ASK_QUESTIONS",
17
+ "rationale": "Does not specify what roles exist, which routes/mutations require auth, or how permissions are stored/checked.",
18
+ "origin": "synthetic"
19
+ },
20
+ {
21
+ "id": "eval-ambiguous-03",
22
+ "title": "Fix the layout on mobile devices",
23
+ "body": "The UI looks broken on phones. Please clean up the styles.",
24
+ "labels": ["bug"],
25
+ "expectedAction": "ASK_QUESTIONS",
26
+ "rationale": "No specific viewport sizes, reproduction steps, screenshots, or target components identified.",
27
+ "origin": "synthetic"
28
+ },
29
+ {
30
+ "id": "eval-ambiguous-04",
31
+ "title": "Refactor database queries",
32
+ "body": "Database queries need to be cleaned up and refactored for better architecture.",
33
+ "labels": ["refactor"],
34
+ "expectedAction": "ASK_QUESTIONS",
35
+ "rationale": "Unbounded scope with no target tables, architectural patterns, or verifiable acceptance criteria.",
36
+ "origin": "synthetic"
37
+ },
38
+ {
39
+ "id": "eval-ambiguous-05",
40
+ "title": "Clean up stale code",
41
+ "body": "There are some old unused functions in the codebase. Let's delete them.",
42
+ "labels": ["chore"],
43
+ "expectedAction": "ASK_QUESTIONS",
44
+ "rationale": "Vague premise without naming files, modules, or defining what criteria determines staleness.",
45
+ "origin": "synthetic"
46
+ },
47
+ {
48
+ "id": "eval-specified-01",
49
+ "title": "Fix CLI flag parsing for --budget in telemetry command",
50
+ "body": "When running `jonah-fleet telemetry --budget 5000000`, the budget is ignored because the option parser expects a number.\n\n## Tasks\n- [ ] Parse `options.budget` string to integer in `src/commands/telemetry.ts`\n- [ ] Fall back to manifest `weeklyTokenBudget` if omitted\n- [ ] Add unit test in `tests/telemetry-cli.test.ts` verifying flag override\n\nVerification: `npm test tests/telemetry-cli.test.ts`",
51
+ "labels": ["bug", "priority/P1"],
52
+ "expectedAction": "PROCEED_TO_IMPLEMENT",
53
+ "rationale": "Carries reproduction path, explicit file locations, task checklist, and test verification command.",
54
+ "origin": "synthetic"
55
+ },
56
+ {
57
+ "id": "eval-specified-02",
58
+ "title": "Add --json output flag to jonah-fleet status command",
59
+ "body": "Support structured machine-readable output for `jonah-fleet status`.\n\n## Tasks\n- [ ] Add `-j, --json` option to `src/index.ts` status command definition\n- [ ] Update `src/commands/status.ts` to output `JSON.stringify(statusReport, null, 2)` when `options.json` is true\n- [ ] Verify unit test passes via `npm test tests/status.test.ts`",
60
+ "labels": ["enhancement", "priority/P2"],
61
+ "expectedAction": "PROCEED_TO_IMPLEMENT",
62
+ "rationale": "Defines explicit CLI interface, component files, output contract, and unit test command.",
63
+ "origin": "synthetic"
64
+ },
65
+ {
66
+ "id": "eval-specified-03",
67
+ "title": "Strict TypeScript compilation failure in src/lib/worktree.ts on Node 22",
68
+ "body": "`tsc --noEmit` fails on `src/lib/worktree.ts:42` with `TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'`.\n\n## Tasks\n- [ ] Add null check for `process.env.GIT_WORK_TREE` before path resolution\n- [ ] Run `npm run type-check` to verify 0 errors",
69
+ "labels": ["bug", "priority/P0"],
70
+ "expectedAction": "PROCEED_TO_IMPLEMENT",
71
+ "rationale": "Exact compiler error code, line number, fix directive, and verification command provided.",
72
+ "origin": "synthetic"
73
+ },
74
+ {
75
+ "id": "eval-specified-04",
76
+ "title": "Add missing grill-me skill validation assertion to tests/installer.test.ts",
77
+ "body": "Ensure `installFleet` verifies `.agents/skills/grill-me/SKILL.md` is installed in standard preset.\n\n## Tasks\n- [ ] Add `expect(fs.existsSync(path.join(tempDir, '.agents/skills/grill-me/SKILL.md'))).toBe(true)` to `tests/installer.test.ts`\n- [ ] Verify test passes with `npm test tests/installer.test.ts`",
78
+ "labels": ["test", "size/S"],
79
+ "expectedAction": "PROCEED_TO_IMPLEMENT",
80
+ "rationale": "Exact code assertion, file path, and verification command specified.",
81
+ "origin": "synthetic"
82
+ },
83
+ {
84
+ "id": "eval-specified-05",
85
+ "title": "Export AmbiguityMetrics interface from src/lib/telemetry.ts",
86
+ "body": "External consumers and tests need direct access to `AmbiguityMetrics`.\n\n## Tasks\n- [ ] Add `export` keyword to `AmbiguityMetrics` interface in `src/lib/telemetry.ts`\n- [ ] Export from `src/index.ts`\n- [ ] Run `npm run type-check` to verify export integrity",
87
+ "labels": ["enhancement", "size/S"],
88
+ "expectedAction": "PROCEED_TO_IMPLEMENT",
89
+ "rationale": "Fully specified type export with exact interface name, target files, and verification steps.",
90
+ "origin": "synthetic"
91
+ }
92
+ ]
@@ -27,8 +27,8 @@ Autowork triggers pass the target issue via environment variables (`TARGET_ISSUE
27
27
 
28
28
  Invariants deliberately upheld from this spec:
29
29
 
30
- - **Single-flight per issue** — at most one run works an issue at a time, enforced by the autowork claim protocol (assign → read-back → earliest-timestamp tiebreak). For **umbrella** issues, single-flight is maintained at the *child-issue* level so slices progress cleanly.
31
- - **Recover dead-run claims** — a crashed run's orphaned claim is released back to the pool rather than starving the issue, both opportunistically during candidate selection and periodically via issues housekeeping.
30
+ - **Single-flight per issue and PR convergence** — at most one run works an issue or pull request at a time, enforced by the autowork claim protocol (assign → read-back → earliest-timestamp tiebreak). For **umbrella** issues, single-flight is maintained at the *child-issue* level so slices progress cleanly.
31
+ - **Recover dead-run claims** — a crashed run's orphaned claim is released back to the pool rather than starving the issue or PR, both opportunistically during candidate selection and periodically via issues housekeeping.
32
32
  - **Reader/writer separation** — the routine that authors a PR never merges it; the Peer Review routine is the sole merge authority for **product** PRs. (Operational log-only PRs are exempt; see Log delivery fallback.)
33
33
  - **Warm-Context Review Synchronization** — Autowork maintains an active warm session during implementation, polling for Peer Review's verdict. When Peer Review bounces a PR to draft with findings, Autowork immediately detects the draft state in-session, applies fixes directly to its warm working tree, and re-marks the PR ready—re-firing Peer Review for Round N+1 without cold-start overhead.
34
34
 
@@ -48,6 +48,16 @@ Single source of truth for both autowork candidate reclamation and housekeeping
48
48
 
49
49
  ---
50
50
 
51
+ ## PR Stale-Claim Definition (Phase 1 Convergence)
52
+
53
+ Single source of truth for Autowork Phase 1 pull request convergence. An assigned pull request or draft PR with unaddressed review comments is a *stale claim* (safe to reclaim and reassign by another runner) only when **all** of these hold:
54
+
55
+ 1. **It carries an autowork claim comment**: The PR thread contains `🔒 Addressing review findings by autowork run …` or `🔒 Addressing review findings by local autowork session …`.
56
+ 2. **The claim is old**: The most recent claim comment's `created_at` is **more than 2 hours** ago. (2 hours instead of 6 hours because PR review convergence is a rapid turnaround loop).
57
+ 3. **No active commits or review activity**: No new commit has been pushed to the PR branch within the last 2 hours.
58
+
59
+ ---
60
+
51
61
  ## Routine Matching & Invocation
52
62
 
53
63
  **Identify the applicable routine at the start of every conversation, before doing any work:**
@@ -98,9 +108,11 @@ The routines invoke specialized engineering skills at key workflow checkpoints:
98
108
  ## Log Delivery Fallback
99
109
 
100
110
  Single source of truth for every routine's Logging section:
101
- 1. **Direct commit to `main` is default**: For operational run logs under `.github/prompts/logs/**`, commit directly to `main` via GitHub API or git push.
102
- 2. **Draft PR fallback**: If direct push fails, commit the log to a dedicated, fresh branch and open a draft PR carrying only the log files.
103
- 3. **Automated landing**: `auto-merge-log-prs.yml` or `issues-housekeeping.md` lands accumulated log PRs. Draft log PRs are never reviewed by Peer Review and do not count toward Autowork's backpressure limits.
111
+ 1. **Direct commit to `main` is default**: For operational run logs under `.github/prompts/logs/**`, commit directly to `main` via GitHub API or git push. Never commit logs to an active feature branch.
112
+ 2. **Mandatory `[skip ci]`**: All log commits MUST include `[skip ci]` in the commit message (e.g. `docs(log): record {routine-name} run {timestamp} [skip ci]`) to prevent unnecessary CI executions or approval blocks.
113
+ 3. **Draft PR fallback**: If direct push fails, commit the log to a dedicated, fresh branch and open a draft PR carrying only the log files.
114
+ 4. **Automated landing**: `auto-merge-log-prs.yml` or `issues-housekeeping.md` lands accumulated log PRs. Draft log PRs are never reviewed by Peer Review and do not count toward Autowork's backpressure limits.
115
+
104
116
 
105
117
  ---
106
118
 
@@ -115,7 +127,9 @@ How token spend, runaway loops, and budget anomalies are detected, triaged, and
115
127
  - **Iteration Ceiling Exhaustion**: >20% of runs in a routine terminate at the `token_limit` / max iteration cap. Trigger: tasks too complex for single-flight execution or unbounded looping. Remediation: enforce vertical slicing / umbrella decomposition, tighten pre-ready self-audits, or refine termination bounds.
116
128
  - **Review Loop Burn**: Pull requests experiencing $\ge 3$ bounce rounds between autowork and peer-review. Trigger: ambiguous reviewer feedback, pedantic non-blocking findings, or brittle test assertions. Remediation: tighten reviewer trust/noise rules, calibrate reviewer severity thresholds, and engage human escalation via ping-pong caps.
117
129
  - **Feedback Loop Stagnation**: A downstream processing routine (e.g. measurement loop, verification, triage) records 0 intake (`filed: 0`) across $\ge 2$ consecutive runs while upstream PRs merge or roadmap/feature issues close in the same window. Trigger: overly broad or qualitative discovery sweeps that falsely claim all items are covered. Remediation: mandate deterministic per-issue matching tables and itemized reconciliation against upstream closed issues/PRs.
118
- 3. **Automated Remediation PRs**: The optimizer automatically drafts targeted PRs—locally for repo-specific rules/configs, or upstream via `npx jonah-fleet contribute` for fleet-wide prompt/workflow improvements.
130
+ - **Passive Order-Taking Anomaly ("Yes-Man Blindspot")**: The Ambiguity Gate trigger rate across intake runs in `autowork` or `triage` is <5% despite elevated PR review bounces ($\ge 2$) or high iteration usage ($\ge 35$), indicating agents are silently guessing requirements and building flawed implementations rather than interrogating underspecified issues. Trigger: agents defaulting to compliance over inquiry. Remediation: tighten Step 12 criteria in `autowork.md` and `triage.md` to force explicit questions on ambiguous terms, and feed problem cases into the automated ambiguity benchmark eval suite.
131
+ - **Speculative Runaway Waste**: An agent run consumed >50k tokens on an underspecified issue with 0 clarifying questions asked, and subsequently failed, bounced, or required post-merge rework. Remediation: tighten ambiguity gate checks and export the failing issue into the automated benchmark eval dataset.
132
+ 3. **Automated Remediation PRs & Benchmark Evals**: The optimizer automatically drafts targeted PRs—locally for repo-specific rules/configs, or upstream via `npx jonah-fleet contribute` for fleet-wide prompt/workflow improvements—and appends failure fixtures to the automated benchmark eval suite.
119
133
 
120
134
  ---
121
135
 
@@ -152,7 +166,8 @@ How the fleet guarantees continuous review throughput, recovers from transient A
152
166
  1. **Failure Trapping & Transparency**: When a peer-review workflow session encounters an execution failure (e.g. LLM API rate limit / quota exhaustion or runner timeout), `trigger-review-routine.yml` traps the failure and posts an informational status notice on the PR. Failures are made immediately visible on the PR timeline rather than silently failing in the background.
153
167
  2. **Periodic Scan Sweep (Watchdog)**: `trigger-review-routine.yml` runs a scheduled 2-hour cron sweep (`cron: '45 */2 * * *'`) in Scan mode. Any open PR in `ready_for_review` state that was orphaned due to a transient API rate limit or missed event trigger is automatically picked up, evaluated, and resolved.
154
168
  3. **Interactive Re-triggering**: Any team member or author can immediately re-dispatch review by commenting `/review`, `/peer-review`, `/retrigger`, or `/re-review` on any open pull request, or manually triggering `trigger-review-routine.yml` via `workflow_dispatch`.
155
- 4. **Autowork Phase 1 Watchdog**: During Phase 1 convergence, Autowork actively identifies open ready PRs that have received no review feedback for $>2$ hours, re-triggering review via draft toggle or `/review` comment before picking up new work.
169
+ 4. **Autowork Phase 1 Watchdog**: During Phase 1 convergence, Autowork actively identifies open ready PRs that have received no review feedback for $>2$ hours, re-triggering review via draft toggle or `/review` comment before picking up new work. Review re-triggering is strictly conditioned on all CI checks having passed (`conclusion: SUCCESS`, `mergeStateStatus: CLEAN`) and is strictly prohibited if checks are in-progress or awaiting approval (`ACTION_REQUIRED`).
170
+
156
171
 
157
172
  ---
158
173
 
@@ -194,7 +209,8 @@ How agent routines are partitioned between cloud GitHub Actions (24/7 cloud runn
194
209
  2. **PR Priority Mirroring**: When Autowork opens a PR, it automatically mirrors the parent issue's priority labels (`priority/P0`..`P3`) onto the pull request so downstream review workflows can filter triggers without extra API overhead.
195
210
  3. **Workspace Isolation via Git Worktrees**: Local agents execute inside ephemeral worktrees (`.jonah-fleet/worktrees/<routine>-<issue>`) off `origin/main`, ensuring active editor sessions, uncommitted changes, and local branches are never modified or disturbed.
196
211
  4. **Local Claim Protocol**:
197
- - Local agent claims post: `🔒 Claimed by local autowork session (host: <hostname>) <timestamp>`.
212
+ - Local agent issue claims post: `🔒 Claimed by local autowork session (host: <hostname>) <timestamp>`.
213
+ - Local agent PR convergence claims post: `🔒 Addressing review findings by local autowork session (host: <hostname>) <timestamp>`.
198
214
  - Local processes trap `SIGINT`/`SIGTERM` to unassign claims and remove worktrees cleanly on exit.
199
- - Standard 6-hour stale-claim rule safely reclaims orphaned local claims if a machine powers down unexpectedly.
215
+ - Standard stale-claim rules (6h for issues, 2h for PRs) safely reclaim orphaned local claims if a machine powers down unexpectedly.
200
216
 
@@ -40,4 +40,16 @@ After completing (SUCCESS or FAILURE), write a log file to `.github/prompts/logs
40
40
  - Full execution trace with tool calls
41
41
  - If FAILURE: root cause, category, and suggested fix
42
42
 
43
- **Important**: Commit the log file directly to `main` and push — explicitly permitted for files under `.github/prompts/logs/**`. Follow the Log delivery fallback in `ORCHESTRATION.md` if direct push fails.
43
+ **Log Delivery Protocol & Invariants**:
44
+ - **Negative Rule**: NEVER commit or push run logs to a feature branch or open PR branch. Doing so emits a `pull_request: synchronize` event under bot credentials, triggering GitHub Actions workflow approval gates (`action_required`) that stall CI.
45
+ - **Mandatory `[skip ci]`**: Always append `[skip ci]` to any log commit message (e.g. `docs(log): record {routine-name} run {timestamp} [skip ci]`).
46
+ - **Direct Push to `main`**: Commit the log file directly to `main` and push — explicitly permitted for files under `.github/prompts/logs/**`:
47
+ ```bash
48
+ git checkout main
49
+ git pull origin main
50
+ git add .github/prompts/logs/{routine-name}/{timestamp}.md
51
+ git commit -m "docs(log): record {routine-name} run {timestamp} [skip ci]"
52
+ git push origin main
53
+ ```
54
+ Follow the Log delivery fallback in `ORCHESTRATION.md` if direct push fails.
55
+