jonah-fleet 1.5.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +25 -2
  3. package/dist/commands/daemon.d.ts.map +1 -1
  4. package/dist/commands/init.d.ts +3 -0
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/labels.d.ts +11 -0
  7. package/dist/commands/labels.d.ts.map +1 -0
  8. package/dist/commands/status.d.ts.map +1 -1
  9. package/dist/index.js +2292 -476
  10. package/dist/lib/daemon-keys.d.ts +103 -0
  11. package/dist/lib/daemon-keys.d.ts.map +1 -0
  12. package/dist/lib/daemon.d.ts +41 -2
  13. package/dist/lib/daemon.d.ts.map +1 -1
  14. package/dist/lib/evals.d.ts +56 -1
  15. package/dist/lib/evals.d.ts.map +1 -1
  16. package/dist/lib/labels.d.ts +48 -0
  17. package/dist/lib/labels.d.ts.map +1 -0
  18. package/dist/lib/manifest.d.ts +6 -0
  19. package/dist/lib/manifest.d.ts.map +1 -1
  20. package/dist/lib/presets.d.ts +47 -1
  21. package/dist/lib/presets.d.ts.map +1 -1
  22. package/dist/lib/runner.d.ts +66 -0
  23. package/dist/lib/runner.d.ts.map +1 -1
  24. package/dist/lib/telemetry.d.ts +13 -0
  25. package/dist/lib/telemetry.d.ts.map +1 -1
  26. package/dist/lib/terminal-card.d.ts +23 -0
  27. package/dist/lib/terminal-card.d.ts.map +1 -1
  28. package/package.json +4 -4
  29. package/schema.json +68 -0
  30. package/templates/evals/ambiguity-benchmark.json +92 -0
  31. package/templates/prompts/ORCHESTRATION.md +57 -36
  32. package/templates/prompts/_prompt-template.md +13 -1
  33. package/templates/prompts/autowork.md +63 -27
  34. package/templates/prompts/issues-housekeeping.md +1 -1
  35. package/templates/prompts/optimizer.md +3 -0
  36. package/templates/prompts/peer-review.md +13 -3
  37. package/templates/workflows/autowork-cron.yml +74 -2
  38. package/templates/workflows/dependency-check-cron.yml +41 -2
  39. package/templates/workflows/issues-housekeeping-cron.yml +41 -2
  40. package/templates/workflows/prompt-optimizer-cron.yml +41 -2
  41. package/templates/workflows/trigger-autowork-manual.yml +43 -2
  42. package/templates/workflows/trigger-autowork-on-bug.yml +47 -7
  43. package/templates/workflows/trigger-autowork-on-merge.yml +48 -7
  44. package/templates/workflows/trigger-review-routine.yml +46 -7
@@ -0,0 +1,103 @@
1
+ import readline from 'node:readline';
2
+ import { EventEmitter } from 'node:events';
3
+ import { DaemonState } from './daemon.js';
4
+ import { WorktreeInfo } from './worktree.js';
5
+ import { truncateAnsi } from './terminal-card.js';
6
+ export interface KeyboardControllerOptions {
7
+ stdin?: NodeJS.ReadStream | EventEmitter;
8
+ stdout?: NodeJS.WriteStream;
9
+ onReview?: () => Promise<void> | void;
10
+ onAutowork?: () => Promise<void> | void;
11
+ onTargetedReview?: () => Promise<void> | void;
12
+ onTargetedAutowork?: () => Promise<void> | void;
13
+ onPauseToggle?: () => void;
14
+ onStatus?: () => void;
15
+ onToggleVerbose?: () => void;
16
+ onTailLog?: () => Promise<void> | void;
17
+ onCleanWorktrees?: () => Promise<void> | void;
18
+ onGracefulStop?: () => void;
19
+ onForceStop?: () => void;
20
+ onHelp?: () => void;
21
+ }
22
+ export declare class KeyboardController {
23
+ private options;
24
+ private stdin;
25
+ private isRaw;
26
+ private listening;
27
+ private isPaused;
28
+ private keypressListener?;
29
+ constructor(options?: KeyboardControllerOptions);
30
+ start(): void;
31
+ pause(): void;
32
+ resume(): void;
33
+ handleKeypress(str: string, key?: readline.Key): void;
34
+ stop(): void;
35
+ }
36
+ /**
37
+ * Parses numeric pull request or issue numbers from raw user inputs like "42", "#42", "PR #42", "Issue #89".
38
+ */
39
+ export declare function parseNumericTarget(input: string): number | null;
40
+ export interface PromptTargetedInputOptions {
41
+ stdin?: any;
42
+ stdout?: any;
43
+ }
44
+ /**
45
+ * Prompts user interactively for a targeted PR or Issue number, temporarily pausing raw mode.
46
+ * Resolves with the trimmed string, or null if cancelled (Esc, Ctrl+C, empty Enter).
47
+ */
48
+ export declare function promptTargetedInput(promptMessage: string, options?: PromptTargetedInputOptions): Promise<string | null>;
49
+ /**
50
+ * Reads the last N lines from the local daemon log file.
51
+ */
52
+ export declare function getDaemonLogTail(repoRoot: string, linesCount?: number): string[];
53
+ /**
54
+ * Prints the last N lines of .jonah-fleet/daemon.log directly to console.
55
+ */
56
+ export declare function printDaemonLogTail(repoRoot: string, linesCount?: number): void;
57
+ export interface WorktreeInspectionResult {
58
+ active: WorktreeInfo[];
59
+ cleaned: number;
60
+ }
61
+ /**
62
+ * Inspects active worktrees and prunes stale worktree directories.
63
+ */
64
+ export declare function inspectAndCleanWorktrees(repoRoot: string): Promise<WorktreeInspectionResult>;
65
+ /**
66
+ * Prints worktree inspection and maintenance details.
67
+ */
68
+ export declare function printWorktreesInspection(result: WorktreeInspectionResult): void;
69
+ export declare function printKeybindingCheatSheet(): void;
70
+ export interface DaemonStatusSummaryOptions {
71
+ repoRoot: string;
72
+ state?: DaemonState | null;
73
+ pendingRoutine?: string | null;
74
+ activeWorktrees?: WorktreeInfo[];
75
+ verbose?: boolean;
76
+ }
77
+ export declare function printDaemonStatusSummary(options: DaemonStatusSummaryOptions): void;
78
+ export declare const DAEMON_STATUS_TIPS: readonly string[];
79
+ export declare const DAEMON_PAUSED_TIPS: readonly string[];
80
+ export { truncateAnsi };
81
+ /**
82
+ * Calculates the current tip index by dividing elapsed or current timestamp by rotation interval.
83
+ */
84
+ export declare function getRotatingTipIndex(nowMs?: number, intervalSeconds?: number, totalTips?: number): number;
85
+ /**
86
+ * Retrieves the active rotating tip string for the given timestamp.
87
+ */
88
+ export declare function getRotatingTip(nowMs?: number, tips?: readonly string[], intervalSeconds?: number): string;
89
+ export interface FormatDaemonStatusLineOptions {
90
+ now?: Date | number;
91
+ isPaused?: boolean;
92
+ nextCheckTime?: number;
93
+ lastOpenPRCount?: number;
94
+ pendingRoutine?: string | null;
95
+ columns?: number;
96
+ tipIndex?: number;
97
+ tips?: readonly string[];
98
+ }
99
+ /**
100
+ * Formats the single-line daemon idle/paused status ticker with rotating tips and viewport width clamping.
101
+ */
102
+ export declare function formatDaemonStatusLine(options?: FormatDaemonStatusLineOptions): string;
103
+ //# sourceMappingURL=daemon-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-keys.d.ts","sourceRoot":"","sources":["../../src/lib/daemon-keys.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export interface DaemonState {
6
6
  routines: string[];
7
7
  lastReviewCheckAt?: string;
8
8
  lastAutoworkCheckAt?: string;
9
- status: 'idle' | 'working' | 'stopped';
9
+ status: 'idle' | 'working' | 'paused' | 'stopped';
10
10
  activeRoutine?: string;
11
11
  activeTarget?: string;
12
12
  activeWorktree?: string;
@@ -19,12 +19,33 @@ export interface DaemonOptions {
19
19
  model?: string;
20
20
  foreground?: boolean;
21
21
  verbose?: boolean;
22
+ stdin?: any;
23
+ getPRs?: (repoRoot: string) => Promise<ReviewablePR[]>;
24
+ runRoutine?: (opts: any) => Promise<{
25
+ success: boolean;
26
+ exitCode?: number;
27
+ }>;
22
28
  }
23
29
  export declare function getDaemonStatePath(repoRoot: string): string;
24
30
  export declare function readDaemonState(repoRoot: string): DaemonState | null;
25
31
  export declare function writeDaemonState(repoRoot: string, state: DaemonState): void;
26
32
  export declare function clearDaemonState(repoRoot: string): void;
27
33
  export declare function isDaemonRunning(repoRoot: string): boolean;
34
+ export interface ReviewablePR {
35
+ number: number;
36
+ headRefName: string;
37
+ title: string;
38
+ }
39
+ /**
40
+ * Filters a list of pull requests to include only reviewable PRs,
41
+ * excluding automated release-please branches and release PR titles.
42
+ */
43
+ export declare function filterReviewablePRs(prs: ReviewablePR[]): ReviewablePR[];
44
+ /**
45
+ * Fast pre-flight check to query open ready PRs in ~100ms with 0 token cost,
46
+ * excluding drafts, automated release-please branches, and release PR titles.
47
+ */
48
+ export declare function getOpenReviewablePRs(repoRoot: string): Promise<ReviewablePR[]>;
28
49
  /**
29
50
  * Fast pre-flight check to query number of open ready PRs in ~100ms with 0 token cost.
30
51
  */
@@ -37,8 +58,26 @@ export declare function startBackgroundDaemon(repoRoot: string, options?: Daemon
37
58
  * Stops a running daemon process.
38
59
  */
39
60
  export declare function stopDaemon(repoRoot: string): Promise<boolean>;
61
+ export interface DrainReviewQueueOptions {
62
+ repoRoot: string;
63
+ state?: DaemonState;
64
+ options?: DaemonOptions;
65
+ isStopping?: () => boolean;
66
+ clearTicker?: () => void;
67
+ getPRs?: (repoRoot: string) => Promise<ReviewablePR[]>;
68
+ runRoutine?: (opts: any) => Promise<{
69
+ success: boolean;
70
+ exitCode?: number;
71
+ }>;
72
+ onAttempted?: (prNumber: number) => void;
73
+ }
74
+ /**
75
+ * Sequentially drains all open reviewable PRs by executing peer-review in isolated worktrees.
76
+ * Tracks attempted PRs per pass to prevent infinite loops on stalled or repeatedly unmerged PRs.
77
+ */
78
+ export declare function drainReviewQueue(drainOptions: DrainReviewQueueOptions): Promise<void>;
40
79
  /**
41
- * Runs the multi-cadence polling daemon loop in the current process.
80
+ * Runs the multi-cadence polling daemon loop in the current process with interactive controls.
42
81
  */
43
82
  export declare function runDaemonLoop(repoRoot: string, options?: DaemonOptions): Promise<void>;
44
83
  //# sourceMappingURL=daemon.d.ts.map
@@ -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,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;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,CAsD/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,CA2LhG"}
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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"}
@@ -0,0 +1,48 @@
1
+ import { GhExecutor } from './fleet-query.js';
2
+ export interface RepoLabelInfo {
3
+ id: string;
4
+ name: string;
5
+ description?: string | null;
6
+ color?: string;
7
+ openIssuesCount: number;
8
+ totalIssuesCount: number;
9
+ openPullRequestsCount: number;
10
+ totalPullRequestsCount: number;
11
+ }
12
+ export type LabelCategory = 'active' | 'protected_zero_count' | 'historical' | 'prunable';
13
+ export interface ClassifiedLabelItem extends RepoLabelInfo {
14
+ category: LabelCategory;
15
+ }
16
+ export interface ClassifiedLabels {
17
+ active: ClassifiedLabelItem[];
18
+ protectedZeroCount: ClassifiedLabelItem[];
19
+ historical: ClassifiedLabelItem[];
20
+ prunable: ClassifiedLabelItem[];
21
+ all: ClassifiedLabelItem[];
22
+ }
23
+ export declare const DEFAULT_PROTECTED_LABEL_PATTERNS: string[];
24
+ export declare function isLabelProtected(labelName: string, protectedPatterns?: string[]): boolean;
25
+ export declare function classifyLabels(labels: RepoLabelInfo[], protectedPatterns?: string[]): ClassifiedLabels;
26
+ export declare function resolveRepoName(repoIdentifier?: string, cwd?: string, executor?: GhExecutor): Promise<string>;
27
+ export declare function fetchRepoLabels(repoIdentifier?: string, executor?: GhExecutor, cwd?: string): Promise<RepoLabelInfo[]>;
28
+ export interface PruneLabelsOptions {
29
+ repo?: string;
30
+ dryRun?: boolean;
31
+ yes?: boolean;
32
+ cwd?: string;
33
+ protectedPatterns?: string[];
34
+ executor?: GhExecutor;
35
+ }
36
+ export interface PruneLabelsResult {
37
+ repo: string;
38
+ classified: ClassifiedLabels;
39
+ pruned: string[];
40
+ skipped: string[];
41
+ errors: Array<{
42
+ label: string;
43
+ error: string;
44
+ }>;
45
+ dryRun: boolean;
46
+ }
47
+ export declare function pruneLabels(options?: PruneLabelsOptions): Promise<PruneLabelsResult>;
48
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/lib/labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGjE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;IAC1C,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,gCAAgC,EAAE,MAAM,EAepD,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,iBAAiB,GAAE,MAAM,EAAqC,GAC7D,OAAO,CAcT;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,iBAAiB,GAAE,MAAM,EAAqC,GAC7D,gBAAgB,CAyClB;AAED,wBAAsB,eAAe,CACnC,cAAc,CAAC,EAAE,MAAM,EACvB,GAAG,GAAE,MAAsB,EAC3B,QAAQ,GAAE,UAA8B,GACvC,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAiCD,wBAAsB,eAAe,CACnC,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,GAAE,UAA8B,EACxC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC,CA6D1B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6C9F"}
@@ -1,5 +1,11 @@
1
1
  import { FleetManifest, PresetName } from './presets.js';
2
2
  export declare const MANIFEST_FILENAME = "agents-manifest.json";
3
+ export interface ResolvedRoutineConfig {
4
+ model: string;
5
+ timeoutMinutes: number;
6
+ maxIterations?: number;
7
+ }
8
+ export declare function resolveRoutineConfig(manifest: FleetManifest | null, routine: keyof FleetManifest['routines'] | string): ResolvedRoutineConfig;
3
9
  export declare function loadManifest(targetDir: string): FleetManifest | null;
4
10
  export declare function saveManifest(targetDir: string, manifest: FleetManifest): void;
5
11
  export declare function createDefaultManifest(preset?: PresetName): FleetManifest;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAiC,UAAU,EAAc,MAAM,cAAc,CAAC;AAEpG,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAWpE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAG7E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,UAAuB,GAAG,aAAa,CAmCpF"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAGb,UAAU,EASX,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,OAAO,EAAE,MAAM,aAAa,CAAC,UAAU,CAAC,GAAG,MAAM,GAChD,qBAAqB,CAyBvB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAWpE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAG7E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,UAAuB,GAAG,aAAa,CA+CpF"}
@@ -1,4 +1,40 @@
1
1
  export type PresetName = 'minimal' | 'standard' | 'full' | 'custom';
2
+ export interface RoutineModels {
3
+ default?: string;
4
+ autowork?: string;
5
+ 'peer-review'?: string;
6
+ optimizer?: string;
7
+ 'issues-housekeeping'?: string;
8
+ 'dependency-update-security-check'?: string;
9
+ 'product-planning'?: string;
10
+ 'analytics-review'?: string;
11
+ [key: string]: string | undefined;
12
+ }
13
+ export interface RoutineBudgets {
14
+ weeklyTokens?: number;
15
+ maxIterations?: {
16
+ default?: number;
17
+ autowork?: number;
18
+ 'peer-review'?: number;
19
+ optimizer?: number;
20
+ 'issues-housekeeping'?: number;
21
+ 'dependency-update-security-check'?: number;
22
+ 'product-planning'?: number;
23
+ 'analytics-review'?: number;
24
+ [key: string]: number | undefined;
25
+ };
26
+ timeoutMinutes?: {
27
+ default?: number;
28
+ autowork?: number;
29
+ 'peer-review'?: number;
30
+ optimizer?: number;
31
+ 'issues-housekeeping'?: number;
32
+ 'dependency-update-security-check'?: number;
33
+ 'product-planning'?: number;
34
+ 'analytics-review'?: number;
35
+ [key: string]: number | undefined;
36
+ };
37
+ }
2
38
  export interface FleetManifest {
3
39
  $schema?: string;
4
40
  version: string;
@@ -23,6 +59,8 @@ export interface FleetManifest {
23
59
  [key: string]: string | undefined;
24
60
  };
25
61
  skills: string[];
62
+ models?: RoutineModels;
63
+ budgets?: RoutineBudgets;
26
64
  repositories?: string[];
27
65
  autoUpdate?: {
28
66
  enabled: boolean;
@@ -34,7 +72,15 @@ export interface FleetManifest {
34
72
  weeklyTokenBudget?: number;
35
73
  };
36
74
  dualExecution?: DualExecutionConfig;
75
+ labels?: {
76
+ protected?: string[];
77
+ };
37
78
  }
79
+ export declare const DEFAULT_ROUTINE_MODELS: Record<string, string>;
80
+ export declare const DEFAULT_ROUTINE_TIMEOUTS: Record<string, number>;
81
+ export declare const DEFAULT_ROUTINE_MAX_ITERATIONS: Record<string, number>;
82
+ export declare const DEFAULT_MODELS_CONFIG: RoutineModels;
83
+ export declare const DEFAULT_BUDGETS_CONFIG: RoutineBudgets;
38
84
  export interface DualExecutionConfig {
39
85
  enabled?: boolean;
40
86
  cloudPriorities?: string[];
@@ -47,6 +93,6 @@ export declare const PRESET_CONFIGS: Record<Exclude<PresetName, 'custom'>, {
47
93
  }>;
48
94
  export declare const ROUTINE_TO_WORKFLOW_MAP: Record<keyof FleetManifest['routines'], string[]>;
49
95
  export declare const WORKFLOW_TO_ROUTINE_MAP: Record<string, keyof FleetManifest['routines'] | 'sync-fleet'>;
50
- export declare const FLEET_VERSION = "1.5.0";
96
+ export declare const FLEET_VERSION = "1.6.0";
51
97
  export declare const SCHEMA_URL = "https://raw.githubusercontent.com/juliendurandeu/jonah-fleet/main/schema.json";
52
98
  //# sourceMappingURL=presets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lib/presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kCAAkC,EAAE,OAAO,CAAC;QAC5C,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,kCAAkC,CAAC,EAAE,MAAM,CAAC;QAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC9B,CAAC;IACF,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAI3C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAiE3H,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAarF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC,UAAU,CAAC,GAAG,YAAY,CAOlG,CAAC;AAEF,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,UAAU,kFAAkF,CAAC"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lib/presets.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,72 @@ export interface RunLocalRoutineResult {
21
21
  worktreePath?: string;
22
22
  branchName?: string;
23
23
  }
24
+ export interface StreamJsonEvent {
25
+ event?: string;
26
+ conversation_id?: string;
27
+ init?: {
28
+ cwd?: string;
29
+ tools?: string[];
30
+ permission_mode?: string;
31
+ };
32
+ step_update?: {
33
+ conversation_id?: string;
34
+ step_index?: number;
35
+ state?: 'ACTIVE' | 'DONE' | 'ERROR' | string;
36
+ step_type?: 'user_input' | 'agent_response' | 'tool' | 'thought' | string;
37
+ tool_name?: string;
38
+ tool_info?: {
39
+ name?: string;
40
+ parameters?: Record<string, any>;
41
+ output?: string;
42
+ };
43
+ text_delta?: string;
44
+ duration_seconds?: number;
45
+ usage?: {
46
+ input_tokens?: number;
47
+ output_tokens?: number;
48
+ thinking_tokens?: number;
49
+ total_tokens?: number;
50
+ };
51
+ };
52
+ agent_response?: any;
53
+ result?: {
54
+ conversation_id?: string;
55
+ status?: string;
56
+ response?: string;
57
+ duration_seconds?: number;
58
+ num_turns?: number;
59
+ usage?: {
60
+ input_tokens?: number;
61
+ output_tokens?: number;
62
+ thinking_tokens?: number;
63
+ total_tokens?: number;
64
+ };
65
+ };
66
+ [key: string]: any;
67
+ }
68
+ /**
69
+ * Line buffer for incremental stream-json chunk processing.
70
+ */
71
+ export declare class LineBufferedStreamParser {
72
+ private buffer;
73
+ private onLine;
74
+ constructor(onLine: (line: string) => void);
75
+ feed(chunk: string): void;
76
+ flush(): void;
77
+ }
78
+ /**
79
+ * Safely parses a JSON event line from stream-json output.
80
+ */
81
+ export declare function parseStreamJsonEvent(line: string): StreamJsonEvent | null;
82
+ /**
83
+ * Formats stream-json events for verbose output.
84
+ */
85
+ export declare function formatVerboseEvent(event: StreamJsonEvent): string | null;
86
+ /**
87
+ * Builds the invocation arguments for Antigravity CLI in stream-json mode.
88
+ */
89
+ export declare function buildAgyArgs(prompt: string, model: string, printTimeout: string): string[];
24
90
  /**
25
91
  * Discovers domain skills in .agents/skills and formats instruction string.
26
92
  */
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
@@ -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":"AAGA,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,0BAA0B,UAAY,CAAC;AAEpD,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAClD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACxD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,uBAAuB,GAAG,IAAI,CAoFhC;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,GAAE,MAAmC,GACjD,kBAAkB,CAwBpB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,uBAAuB,EAAE,EACpC,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,mBAAmB,CAiGrB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,uBAAuB,EAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,GAAE,OAAO,KAAwB,GAC3C,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB/C;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,GAAE,MAAgB,GAAG,uBAAuB,EAAE,CAwBlH;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,QAAQ,GAAE,UAA8B,EACxC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAiCpC;AAyBD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,MAAM,CAsER"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface SummaryCardOptions {
4
4
  repoRoot?: string;
5
5
  issue?: string | number;
6
6
  pr?: string | number;
7
+ title?: string;
7
8
  durationMs?: number;
8
9
  }
9
10
  export interface ErrorCardOptions {
@@ -18,6 +19,7 @@ export interface ErrorCardOptions {
18
19
  export interface ParsedRunSummary {
19
20
  routine?: string;
20
21
  target?: string;
22
+ title?: string;
21
23
  decision?: string;
22
24
  result?: string;
23
25
  duration?: string;
@@ -29,6 +31,22 @@ export interface ParsedRunSummary {
29
31
  actions?: string[];
30
32
  logPath?: string;
31
33
  }
34
+ /**
35
+ * Strips ANSI color codes to accurately measure visual string length.
36
+ */
37
+ export declare function stripAnsi(text: string): string;
38
+ /**
39
+ * Truncates an ANSI-formatted string to a maximum visual width without breaking escape sequences.
40
+ */
41
+ export declare function truncateAnsi(text: string, maxWidth: number): string;
42
+ /**
43
+ * Wraps text into multiple lines bounded by maxWidth without cropping.
44
+ */
45
+ export declare function wrapText(text: string, maxWidth: number): string[];
46
+ /**
47
+ * Fetches PR or issue title using GitHub CLI with a tight timeout.
48
+ */
49
+ export declare function fetchTargetTitle(repoRoot: string, target: string): string | null;
32
50
  /**
33
51
  * Strips temporary worktree roots and converts absolute worktree paths to clean relative paths.
34
52
  */
@@ -57,6 +75,10 @@ export declare function detectClaimedIssue(chunk: string): string | null;
57
75
  * Detects if the agent has selected a specific pull request in Scan mode.
58
76
  */
59
77
  export declare function detectClaimedPR(chunk: string): string | null;
78
+ /**
79
+ * Maps granular agent tool invocations to clean, human-friendly action descriptions for terminal display.
80
+ */
81
+ export declare function formatActionDescription(toolName: string, params?: Record<string, any>): string;
60
82
  /**
61
83
  * Renders a styled Unicode summary card.
62
84
  */
@@ -79,6 +101,7 @@ export declare class TerminalSpinner {
79
101
  constructor();
80
102
  start(initialMessage: string): void;
81
103
  update(newMessage: string): void;
104
+ formatLine(message: string, maxWidth?: number): string;
82
105
  private render;
83
106
  stop(): void;
84
107
  }