jonah-fleet 1.6.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 (37) hide show
  1. package/CHANGELOG.md +85 -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 +1905 -412
  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 +8 -2
  13. package/dist/lib/daemon.d.ts.map +1 -1
  14. package/dist/lib/labels.d.ts +48 -0
  15. package/dist/lib/labels.d.ts.map +1 -0
  16. package/dist/lib/manifest.d.ts +6 -0
  17. package/dist/lib/manifest.d.ts.map +1 -1
  18. package/dist/lib/presets.d.ts +46 -0
  19. package/dist/lib/presets.d.ts.map +1 -1
  20. package/dist/lib/runner.d.ts +66 -0
  21. package/dist/lib/runner.d.ts.map +1 -1
  22. package/dist/lib/terminal-card.d.ts +9 -0
  23. package/dist/lib/terminal-card.d.ts.map +1 -1
  24. package/package.json +1 -1
  25. package/schema.json +68 -0
  26. package/templates/prompts/ORCHESTRATION.md +36 -31
  27. package/templates/prompts/autowork.md +33 -23
  28. package/templates/prompts/issues-housekeeping.md +1 -1
  29. package/templates/prompts/peer-review.md +13 -3
  30. package/templates/workflows/autowork-cron.yml +41 -2
  31. package/templates/workflows/dependency-check-cron.yml +41 -2
  32. package/templates/workflows/issues-housekeeping-cron.yml +41 -2
  33. package/templates/workflows/prompt-optimizer-cron.yml +41 -2
  34. package/templates/workflows/trigger-autowork-manual.yml +41 -2
  35. package/templates/workflows/trigger-autowork-on-bug.yml +45 -7
  36. package/templates/workflows/trigger-autowork-on-merge.yml +46 -7
  37. 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":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAA8C,MAAM,eAAe,CAAC;AACzF,OAAO,EAAa,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,kBAAkB;IAOjB,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAA2C;IAEpE,YAAoB,OAAO,GAAE,yBAA8B,EAE1D;IAEM,KAAK,IAAI,IAAI,CAuBnB;IAEM,KAAK,IAAI,IAAI,CAEnB;IAEM,MAAM,IAAI,IAAI,CAEpB;IAEM,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CA+E3D;IAEM,IAAI,IAAI,IAAI,CAkBlB;CACF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW/D;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqExB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,MAAM,EAAE,CAapF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,IAAI,CAelF;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAIlG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAa/E;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAchD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CA6ClF;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAY/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAY/C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,GAAE,MAAmB,EAC1B,eAAe,GAAE,MAAU,EAC3B,SAAS,GAAE,MAAkC,GAC5C,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,GAAE,MAAmB,EAC1B,IAAI,GAAE,SAAS,MAAM,EAAuB,EAC5C,eAAe,GAAE,MAAU,GAC1B,MAAM,CAIR;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,6BAAkC,GAAG,MAAM,CA2C1F"}
@@ -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,6 +19,12 @@ 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;
@@ -71,7 +77,7 @@ export interface DrainReviewQueueOptions {
71
77
  */
72
78
  export declare function drainReviewQueue(drainOptions: DrainReviewQueueOptions): Promise<void>;
73
79
  /**
74
- * 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.
75
81
  */
76
82
  export declare function runDaemonLoop(repoRoot: string, options?: DaemonOptions): Promise<void>;
77
83
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.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[];
@@ -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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"}
@@ -35,6 +35,10 @@ export interface ParsedRunSummary {
35
35
  * Strips ANSI color codes to accurately measure visual string length.
36
36
  */
37
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;
38
42
  /**
39
43
  * Wraps text into multiple lines bounded by maxWidth without cropping.
40
44
  */
@@ -71,6 +75,10 @@ export declare function detectClaimedIssue(chunk: string): string | null;
71
75
  * Detects if the agent has selected a specific pull request in Scan mode.
72
76
  */
73
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;
74
82
  /**
75
83
  * Renders a styled Unicode summary card.
76
84
  */
@@ -93,6 +101,7 @@ export declare class TerminalSpinner {
93
101
  constructor();
94
102
  start(initialMessage: string): void;
95
103
  update(newMessage: string): void;
104
+ formatLine(message: string, maxWidth?: number): string;
96
105
  private render;
97
106
  stop(): void;
98
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-card.d.ts","sourceRoot":"","sources":["../../src/lib/terminal-card.ts"],"names":[],"mappings":"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"}
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.6.0",
3
+ "version": "1.8.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",
package/schema.json CHANGED
@@ -36,6 +36,62 @@
36
36
  "items": { "type": "string" },
37
37
  "description": "List of core engineering skills to install/sync"
38
38
  },
39
+ "models": {
40
+ "type": "object",
41
+ "properties": {
42
+ "default": { "type": "string", "description": "Default model used across routines" },
43
+ "autowork": { "type": "string", "description": "Target model for autowork routine" },
44
+ "peer-review": { "type": "string", "description": "Target model for peer-review routine" },
45
+ "optimizer": { "type": "string", "description": "Target model for optimizer routine" },
46
+ "issues-housekeeping": { "type": "string", "description": "Target model for issues-housekeeping routine" },
47
+ "dependency-update-security-check": { "type": "string", "description": "Target model for dependency-update-security-check routine" },
48
+ "product-planning": { "type": "string", "description": "Target model for product-planning routine" },
49
+ "analytics-review": { "type": "string", "description": "Target model for analytics-review routine" }
50
+ },
51
+ "additionalProperties": { "type": "string" },
52
+ "description": "Per-routine model overrides (e.g. gemini-3.7-flash-high, gemini-3.7-flash)"
53
+ },
54
+ "budgets": {
55
+ "type": "object",
56
+ "properties": {
57
+ "weeklyTokens": {
58
+ "type": "number",
59
+ "description": "Weekly token budget limit across routines"
60
+ },
61
+ "maxIterations": {
62
+ "type": "object",
63
+ "properties": {
64
+ "default": { "type": "number" },
65
+ "autowork": { "type": "number" },
66
+ "peer-review": { "type": "number" },
67
+ "optimizer": { "type": "number" },
68
+ "issues-housekeeping": { "type": "number" },
69
+ "dependency-update-security-check": { "type": "number" },
70
+ "product-planning": { "type": "number" },
71
+ "analytics-review": { "type": "number" }
72
+ },
73
+ "additionalProperties": { "type": "number" },
74
+ "description": "Maximum tool call iterations per routine"
75
+ },
76
+ "timeoutMinutes": {
77
+ "type": "object",
78
+ "properties": {
79
+ "default": { "type": "number" },
80
+ "autowork": { "type": "number" },
81
+ "peer-review": { "type": "number" },
82
+ "optimizer": { "type": "number" },
83
+ "issues-housekeeping": { "type": "number" },
84
+ "dependency-update-security-check": { "type": "number" },
85
+ "product-planning": { "type": "number" },
86
+ "analytics-review": { "type": "number" }
87
+ },
88
+ "additionalProperties": { "type": "number" },
89
+ "description": "Workflow runner timeout in minutes per routine"
90
+ }
91
+ },
92
+ "additionalProperties": false,
93
+ "description": "Per-routine token, iteration, and timeout budgets"
94
+ },
39
95
  "schedules": {
40
96
  "type": "object",
41
97
  "properties": {
@@ -90,6 +146,18 @@
90
146
  },
91
147
  "additionalProperties": false,
92
148
  "description": "Configuration for priority-driven dual local/cloud agent execution"
149
+ },
150
+ "labels": {
151
+ "type": "object",
152
+ "properties": {
153
+ "protected": {
154
+ "type": "array",
155
+ "items": { "type": "string" },
156
+ "description": "User-defined list or wildcard patterns of protected labels retained during label pruning"
157
+ }
158
+ },
159
+ "additionalProperties": false,
160
+ "description": "Configuration for label management and protection shields"
93
161
  }
94
162
  },
95
163
  "required": ["version", "preset", "routines", "skills"],