@jaggerxtrm/specialists 3.7.1 → 3.10.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 (193) hide show
  1. package/README.md +23 -9
  2. package/config/mandatory-rules/README.md +113 -0
  3. package/config/mandatory-rules/gitnexus-required.md +12 -1
  4. package/config/mandatory-rules/serena-cheatsheet.md +41 -0
  5. package/config/skills/specialists-creator/SKILL.md +6 -32
  6. package/config/skills/specialists-creator/scripts/audit-spec-uniformity.mjs +86 -0
  7. package/config/skills/specialists-creator/scripts/scaffold-specialist.ts +1 -6
  8. package/config/skills/update-specialists/SKILL.md +83 -8
  9. package/config/skills/using-specialists/SKILL.md +13 -0
  10. package/config/skills/using-specialists-v2/SKILL.md +639 -0
  11. package/config/specialists/debugger.specialist.json +7 -9
  12. package/config/specialists/executor.specialist.json +5 -6
  13. package/config/specialists/explorer.specialist.json +3 -7
  14. package/config/specialists/memory-processor.specialist.json +8 -9
  15. package/config/specialists/node-coordinator.specialist.json +1 -5
  16. package/config/specialists/overthinker.specialist.json +7 -13
  17. package/config/specialists/planner.specialist.json +12 -12
  18. package/config/specialists/researcher.specialist.json +9 -14
  19. package/config/specialists/reviewer.specialist.json +8 -8
  20. package/config/specialists/specialists-creator.specialist.json +7 -2
  21. package/config/specialists/sync-docs.specialist.json +7 -11
  22. package/config/specialists/test-runner.specialist.json +4 -13
  23. package/config/specialists/xt-merge.specialist.json +3 -5
  24. package/dist/index.js +3066 -1368
  25. package/dist/lib.js +13219 -0
  26. package/dist/types/cli/attach.d.ts +2 -0
  27. package/dist/types/cli/attach.d.ts.map +1 -0
  28. package/dist/types/cli/clean.d.ts +2 -0
  29. package/dist/types/cli/clean.d.ts.map +1 -0
  30. package/dist/types/cli/config.d.ts +2 -0
  31. package/dist/types/cli/config.d.ts.map +1 -0
  32. package/dist/types/cli/db.d.ts +2 -0
  33. package/dist/types/cli/db.d.ts.map +1 -0
  34. package/dist/types/cli/doctor.d.ts +15 -0
  35. package/dist/types/cli/doctor.d.ts.map +1 -0
  36. package/dist/types/cli/edit.d.ts +2 -0
  37. package/dist/types/cli/edit.d.ts.map +1 -0
  38. package/dist/types/cli/end.d.ts +2 -0
  39. package/dist/types/cli/end.d.ts.map +1 -0
  40. package/dist/types/cli/epic.d.ts +8 -0
  41. package/dist/types/cli/epic.d.ts.map +1 -0
  42. package/dist/types/cli/feed.d.ts +19 -0
  43. package/dist/types/cli/feed.d.ts.map +1 -0
  44. package/dist/types/cli/follow-up.d.ts +2 -0
  45. package/dist/types/cli/follow-up.d.ts.map +1 -0
  46. package/dist/types/cli/format-helpers.d.ts +108 -0
  47. package/dist/types/cli/format-helpers.d.ts.map +1 -0
  48. package/dist/types/cli/help.d.ts +2 -0
  49. package/dist/types/cli/help.d.ts.map +1 -0
  50. package/dist/types/cli/init.d.ts +10 -0
  51. package/dist/types/cli/init.d.ts.map +1 -0
  52. package/dist/types/cli/install.d.ts +2 -0
  53. package/dist/types/cli/install.d.ts.map +1 -0
  54. package/dist/types/cli/list-rules.d.ts +2 -0
  55. package/dist/types/cli/list-rules.d.ts.map +1 -0
  56. package/dist/types/cli/list.d.ts +13 -0
  57. package/dist/types/cli/list.d.ts.map +1 -0
  58. package/dist/types/cli/memory.d.ts +2 -0
  59. package/dist/types/cli/memory.d.ts.map +1 -0
  60. package/dist/types/cli/merge.d.ts +79 -0
  61. package/dist/types/cli/merge.d.ts.map +1 -0
  62. package/dist/types/cli/models.d.ts +2 -0
  63. package/dist/types/cli/models.d.ts.map +1 -0
  64. package/dist/types/cli/node.d.ts +2 -0
  65. package/dist/types/cli/node.d.ts.map +1 -0
  66. package/dist/types/cli/poll.d.ts +25 -0
  67. package/dist/types/cli/poll.d.ts.map +1 -0
  68. package/dist/types/cli/ps.d.ts +2 -0
  69. package/dist/types/cli/ps.d.ts.map +1 -0
  70. package/dist/types/cli/quickstart.d.ts +2 -0
  71. package/dist/types/cli/quickstart.d.ts.map +1 -0
  72. package/dist/types/cli/result.d.ts +2 -0
  73. package/dist/types/cli/result.d.ts.map +1 -0
  74. package/dist/types/cli/resume.d.ts +2 -0
  75. package/dist/types/cli/resume.d.ts.map +1 -0
  76. package/dist/types/cli/run.d.ts +2 -0
  77. package/dist/types/cli/run.d.ts.map +1 -0
  78. package/dist/types/cli/script.d.ts +23 -0
  79. package/dist/types/cli/script.d.ts.map +1 -0
  80. package/dist/types/cli/serve.d.ts +17 -0
  81. package/dist/types/cli/serve.d.ts.map +1 -0
  82. package/dist/types/cli/setup.d.ts +2 -0
  83. package/dist/types/cli/setup.d.ts.map +1 -0
  84. package/dist/types/cli/status.d.ts +4 -0
  85. package/dist/types/cli/status.d.ts.map +1 -0
  86. package/dist/types/cli/steer.d.ts +2 -0
  87. package/dist/types/cli/steer.d.ts.map +1 -0
  88. package/dist/types/cli/stop.d.ts +2 -0
  89. package/dist/types/cli/stop.d.ts.map +1 -0
  90. package/dist/types/cli/tmux-utils.d.ts +23 -0
  91. package/dist/types/cli/tmux-utils.d.ts.map +1 -0
  92. package/dist/types/cli/validate.d.ts +11 -0
  93. package/dist/types/cli/validate.d.ts.map +1 -0
  94. package/dist/types/cli/version.d.ts +2 -0
  95. package/dist/types/cli/version.d.ts.map +1 -0
  96. package/dist/types/cli/view.d.ts +2 -0
  97. package/dist/types/cli/view.d.ts.map +1 -0
  98. package/dist/types/constants.d.ts +140 -0
  99. package/dist/types/constants.d.ts.map +1 -0
  100. package/dist/types/index.d.ts +8 -0
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/dist/types/lib.d.ts +5 -0
  103. package/dist/types/lib.d.ts.map +1 -0
  104. package/dist/types/pi/backendMap.d.ts +3 -0
  105. package/dist/types/pi/backendMap.d.ts.map +1 -0
  106. package/dist/types/pi/session.d.ts +209 -0
  107. package/dist/types/pi/session.d.ts.map +1 -0
  108. package/dist/types/server.d.ts +10 -0
  109. package/dist/types/server.d.ts.map +1 -0
  110. package/dist/types/specialist/beads.d.ts +60 -0
  111. package/dist/types/specialist/beads.d.ts.map +1 -0
  112. package/dist/types/specialist/chain-identity.d.ts +18 -0
  113. package/dist/types/specialist/chain-identity.d.ts.map +1 -0
  114. package/dist/types/specialist/epic-lifecycle.d.ts +57 -0
  115. package/dist/types/specialist/epic-lifecycle.d.ts.map +1 -0
  116. package/dist/types/specialist/epic-readiness.d.ts +55 -0
  117. package/dist/types/specialist/epic-readiness.d.ts.map +1 -0
  118. package/dist/types/specialist/epic-reconciler.d.ts +35 -0
  119. package/dist/types/specialist/epic-reconciler.d.ts.map +1 -0
  120. package/dist/types/specialist/hooks.d.ts +44 -0
  121. package/dist/types/specialist/hooks.d.ts.map +1 -0
  122. package/dist/types/specialist/job-control.d.ts +29 -0
  123. package/dist/types/specialist/job-control.d.ts.map +1 -0
  124. package/dist/types/specialist/job-file-output.d.ts +4 -0
  125. package/dist/types/specialist/job-file-output.d.ts.map +1 -0
  126. package/dist/types/specialist/job-root.d.ts +21 -0
  127. package/dist/types/specialist/job-root.d.ts.map +1 -0
  128. package/dist/types/specialist/jobRegistry.d.ts +69 -0
  129. package/dist/types/specialist/jobRegistry.d.ts.map +1 -0
  130. package/dist/types/specialist/json-output.d.ts +2 -0
  131. package/dist/types/specialist/json-output.d.ts.map +1 -0
  132. package/dist/types/specialist/loader.d.ts +48 -0
  133. package/dist/types/specialist/loader.d.ts.map +1 -0
  134. package/dist/types/specialist/mandatory-rules.d.ts +41 -0
  135. package/dist/types/specialist/mandatory-rules.d.ts.map +1 -0
  136. package/dist/types/specialist/memory-retrieval.d.ts +34 -0
  137. package/dist/types/specialist/memory-retrieval.d.ts.map +1 -0
  138. package/dist/types/specialist/model-display.d.ts +4 -0
  139. package/dist/types/specialist/model-display.d.ts.map +1 -0
  140. package/dist/types/specialist/node-contract.d.ts +343 -0
  141. package/dist/types/specialist/node-contract.d.ts.map +1 -0
  142. package/dist/types/specialist/node-resolve.d.ts +5 -0
  143. package/dist/types/specialist/node-resolve.d.ts.map +1 -0
  144. package/dist/types/specialist/node-supervisor.d.ts +198 -0
  145. package/dist/types/specialist/node-supervisor.d.ts.map +1 -0
  146. package/dist/types/specialist/observability-db.d.ts +19 -0
  147. package/dist/types/specialist/observability-db.d.ts.map +1 -0
  148. package/dist/types/specialist/observability-sqlite.d.ts +218 -0
  149. package/dist/types/specialist/observability-sqlite.d.ts.map +1 -0
  150. package/dist/types/specialist/pipeline.d.ts +23 -0
  151. package/dist/types/specialist/pipeline.d.ts.map +1 -0
  152. package/dist/types/specialist/process-liveness.d.ts +2 -0
  153. package/dist/types/specialist/process-liveness.d.ts.map +1 -0
  154. package/dist/types/specialist/runner.d.ts +98 -0
  155. package/dist/types/specialist/runner.d.ts.map +1 -0
  156. package/dist/types/specialist/schema.d.ts +2875 -0
  157. package/dist/types/specialist/schema.d.ts.map +1 -0
  158. package/dist/types/specialist/script-runner.d.ts +47 -0
  159. package/dist/types/specialist/script-runner.d.ts.map +1 -0
  160. package/dist/types/specialist/supervisor.d.ts +142 -0
  161. package/dist/types/specialist/supervisor.d.ts.map +1 -0
  162. package/dist/types/specialist/templateEngine.d.ts +2 -0
  163. package/dist/types/specialist/templateEngine.d.ts.map +1 -0
  164. package/dist/types/specialist/timeline-events.d.ts +563 -0
  165. package/dist/types/specialist/timeline-events.d.ts.map +1 -0
  166. package/dist/types/specialist/timeline-query.d.ts +129 -0
  167. package/dist/types/specialist/timeline-query.d.ts.map +1 -0
  168. package/dist/types/specialist/worktree-gc.d.ts +24 -0
  169. package/dist/types/specialist/worktree-gc.d.ts.map +1 -0
  170. package/dist/types/specialist/worktree.d.ts +69 -0
  171. package/dist/types/specialist/worktree.d.ts.map +1 -0
  172. package/dist/types/tools/specialist/feed_specialist.tool.d.ts +51 -0
  173. package/dist/types/tools/specialist/feed_specialist.tool.d.ts.map +1 -0
  174. package/dist/types/tools/specialist/list_specialists.tool.d.ts +28 -0
  175. package/dist/types/tools/specialist/list_specialists.tool.d.ts.map +1 -0
  176. package/dist/types/tools/specialist/resume_specialist.tool.d.ts +46 -0
  177. package/dist/types/tools/specialist/resume_specialist.tool.d.ts.map +1 -0
  178. package/dist/types/tools/specialist/specialist_init.tool.d.ts +26 -0
  179. package/dist/types/tools/specialist/specialist_init.tool.d.ts.map +1 -0
  180. package/dist/types/tools/specialist/specialist_status.tool.d.ts +33 -0
  181. package/dist/types/tools/specialist/specialist_status.tool.d.ts.map +1 -0
  182. package/dist/types/tools/specialist/steer_specialist.tool.d.ts +38 -0
  183. package/dist/types/tools/specialist/steer_specialist.tool.d.ts.map +1 -0
  184. package/dist/types/tools/specialist/stop_specialist.tool.d.ts +31 -0
  185. package/dist/types/tools/specialist/stop_specialist.tool.d.ts.map +1 -0
  186. package/dist/types/tools/specialist/use_specialist.tool.d.ts +93 -0
  187. package/dist/types/tools/specialist/use_specialist.tool.d.ts.map +1 -0
  188. package/dist/types/utils/circuitBreaker.d.ts +19 -0
  189. package/dist/types/utils/circuitBreaker.d.ts.map +1 -0
  190. package/dist/types/utils/logger.d.ts +11 -0
  191. package/dist/types/utils/logger.d.ts.map +1 -0
  192. package/package.json +13 -2
  193. package/config/specialists/parallel-review.specialist.json +0 -65
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Timeline Query Primitives for Feed v2
3
+ *
4
+ * Read and merge timeline events across multiple jobs while keeping the flat-file
5
+ * hot path architecture intact.
6
+ *
7
+ * ## Architecture
8
+ *
9
+ * - Each job stores events in `.specialists/jobs/<id>/events.jsonl`
10
+ * - This module reads those files and provides query/merge operations
11
+ * - No database — direct file reads with efficient streaming
12
+ *
13
+ * ## Usage
14
+ *
15
+ * ```typescript
16
+ * import { readJobEvents, mergeTimelineEvents } from './timeline-query.js';
17
+ *
18
+ * // Read events from a single job
19
+ * const events = readJobEvents('.specialists/jobs/abc123');
20
+ *
21
+ * // Merge events from multiple jobs chronologically
22
+ * const merged = mergeTimelineEvents([
23
+ * { jobId: 'abc123', specialist: 'code-review', events: events1 },
24
+ * { jobId: 'def456', specialist: 'bug-hunt', events: events2 },
25
+ * ]);
26
+ * ```
27
+ */
28
+ import { type TimelineEvent } from './timeline-events.js';
29
+ /**
30
+ * Read all timeline events from a single job's events.jsonl file.
31
+ * Returns events in chronological order (oldest first).
32
+ * Skips malformed lines non-fatally.
33
+ */
34
+ export declare function readJobEvents(jobDir: string): TimelineEvent[];
35
+ /**
36
+ * Read timeline events from a job by ID within a jobs directory.
37
+ */
38
+ export declare function readJobEventsById(jobsDir: string, jobId: string): TimelineEvent[];
39
+ export interface JobEventsBatch {
40
+ jobId: string;
41
+ specialist: string;
42
+ beadId?: string;
43
+ events: TimelineEvent[];
44
+ }
45
+ /**
46
+ * Read events from all jobs in a jobs directory.
47
+ * Returns batches unsorted — use mergeTimelineEvents for chronological order.
48
+ */
49
+ export declare function readAllJobEvents(jobsDir: string): JobEventsBatch[];
50
+ /**
51
+ * Merge timeline events from multiple jobs into a single chronological stream.
52
+ * Events are sorted by timestamp ascending (oldest first).
53
+ */
54
+ export declare function mergeTimelineEvents(batches: JobEventsBatch[]): Array<{
55
+ jobId: string;
56
+ specialist: string;
57
+ beadId?: string;
58
+ event: TimelineEvent;
59
+ }>;
60
+ /**
61
+ * Filter options for timeline queries.
62
+ */
63
+ export interface TimelineFilter {
64
+ /** Minimum timestamp (inclusive) */
65
+ since?: number;
66
+ /** Maximum number of events to return */
67
+ limit?: number;
68
+ /** Filter by job ID */
69
+ jobId?: string;
70
+ /** Filter by specialist name */
71
+ specialist?: string;
72
+ }
73
+ /**
74
+ * Apply filters to a merged timeline.
75
+ */
76
+ export declare function filterTimelineEvents(merged: Array<{
77
+ jobId: string;
78
+ specialist: string;
79
+ beadId?: string;
80
+ event: TimelineEvent;
81
+ }>, filter: TimelineFilter): Array<{
82
+ jobId: string;
83
+ specialist: string;
84
+ beadId?: string;
85
+ event: TimelineEvent;
86
+ }>;
87
+ /**
88
+ * Convenience: read, merge, and filter in one call.
89
+ */
90
+ export declare function queryTimeline(jobsDir: string, filter?: TimelineFilter): Array<{
91
+ jobId: string;
92
+ specialist: string;
93
+ beadId?: string;
94
+ event: TimelineEvent;
95
+ }>;
96
+ /**
97
+ * Get events from the last N minutes.
98
+ * Useful for feed v2's default snapshot window before follow mode.
99
+ */
100
+ export declare function getRecentEvents(jobsDir: string, minutesAgo?: number, limit?: number): Array<{
101
+ jobId: string;
102
+ specialist: string;
103
+ beadId?: string;
104
+ event: TimelineEvent;
105
+ }>;
106
+ /**
107
+ * Check if a job has completed (has run_complete event).
108
+ */
109
+ export declare function isJobComplete(events: TimelineEvent[]): boolean;
110
+ /**
111
+ * Get the completion status of a job from its events.
112
+ * Returns null if not complete.
113
+ */
114
+ export declare function getJobCompletionStatus(events: TimelineEvent[]): {
115
+ status: 'COMPLETE' | 'ERROR' | 'CANCELLED';
116
+ elapsed_s: number;
117
+ error?: string;
118
+ metrics?: Record<string, unknown>;
119
+ } | null;
120
+ /**
121
+ * Get tool activity summary from events.
122
+ * Returns array of { tool, start_t, end_t } pairs.
123
+ */
124
+ export declare function getToolActivity(events: TimelineEvent[]): Array<{
125
+ tool: string;
126
+ start_t: number;
127
+ end_t?: number;
128
+ }>;
129
+ //# sourceMappingURL=timeline-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-query.d.ts","sourceRoot":"","sources":["../../../src/specialist/timeline-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface WorktreeGcCandidate {
2
+ readonly jobId: string;
3
+ readonly worktreePath: string;
4
+ readonly branch: string | undefined;
5
+ readonly jobStatus: 'done' | 'error';
6
+ }
7
+ export interface WorktreeGcResult {
8
+ readonly removed: readonly WorktreeGcCandidate[];
9
+ readonly skipped: readonly WorktreeGcCandidate[];
10
+ }
11
+ /**
12
+ * Collect worktree GC candidates from persisted job metadata.
13
+ * Only considers jobs that are terminal AND recorded a `worktree_path`.
14
+ * Skips any job whose status is active to prevent accidental removal.
15
+ */
16
+ export declare function collectWorktreeGcCandidates(jobsDir: string): WorktreeGcCandidate[];
17
+ /**
18
+ * Prune the provided worktree candidates.
19
+ * Each removal uses `git worktree remove --force` so the git registry stays consistent.
20
+ * Failures are silently skipped — prefer missing cleanup over accidental data loss.
21
+ * Never throws.
22
+ */
23
+ export declare function pruneWorktrees(candidates: readonly WorktreeGcCandidate[]): WorktreeGcResult;
24
+ //# sourceMappingURL=worktree-gc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-gc.d.ts","sourceRoot":"","sources":["../../../src/specialist/worktree-gc.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAwBD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAgDlF;AAkBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,mBAAmB,EAAE,GACzC,gBAAgB,CAclB"}
@@ -0,0 +1,69 @@
1
+ export interface WorktreeInfo {
2
+ /** The git branch checked out in this worktree. */
3
+ branch: string;
4
+ /** Absolute path to the worktree directory. */
5
+ worktreePath: string;
6
+ /** True when the worktree already existed and was reused; false when freshly created. */
7
+ reused: boolean;
8
+ }
9
+ export interface WorktreeOptions {
10
+ /** Bead identifier (e.g. "hgpu.2"). Used as the slug prefix. */
11
+ beadId: string;
12
+ /** Specialist name in kebab-case (e.g. "explorer"). */
13
+ specialistName: string;
14
+ /**
15
+ * Absolute path to the directory that will *contain* the new worktree.
16
+ * Defaults to `<git-common-root>/.worktrees/<beadId>/`.
17
+ */
18
+ worktreeBase?: string;
19
+ /**
20
+ * Working directory for git/bd commands.
21
+ * Defaults to `process.cwd()`.
22
+ */
23
+ cwd?: string;
24
+ }
25
+ /**
26
+ * Derive a deterministic, filesystem-safe git branch name.
27
+ *
28
+ * Convention: `feature/<beadId>-<specialist-slug>`
29
+ * Example: `feature/hgpu.2-explorer`
30
+ */
31
+ export declare function deriveBranchName(beadId: string, specialistName: string): string;
32
+ /**
33
+ * Derive a deterministic worktree *directory* name (no path prefix).
34
+ *
35
+ * Convention: `<beadId>-<specialist-slug>`
36
+ * Example: `hgpu.2-explorer`
37
+ */
38
+ export declare function deriveWorktreeName(beadId: string, specialistName: string): string;
39
+ /**
40
+ * Resolve the git common root so all worktrees converge on the same base.
41
+ * Falls back to `cwd` when git is unavailable (non-git dirs, CI sandboxes).
42
+ */
43
+ export declare function resolveCommonRoot(cwd: string): string;
44
+ /**
45
+ * Discover all git worktrees and return a map of `branch → absolute-path`.
46
+ * Uses `git worktree list --porcelain` which is stable and git-native.
47
+ *
48
+ * Detached-HEAD worktrees (no branch line) are omitted.
49
+ */
50
+ export declare function listWorktrees(cwd?: string): Map<string, string>;
51
+ /**
52
+ * Find the absolute path of an existing worktree checked out on `branch`.
53
+ * Returns `undefined` when no matching worktree exists.
54
+ */
55
+ export declare function findExistingWorktree(branch: string, cwd?: string): string | undefined;
56
+ /**
57
+ * Ensure an isolated worktree exists for the given bead + specialist pair.
58
+ *
59
+ * Behaviour:
60
+ * 1. Derives the canonical branch name and worktree path.
61
+ * 2. If a worktree for that branch already exists, returns it (reused=true).
62
+ * 3. Otherwise calls `bd worktree create <path> --branch <branch>` from the
63
+ * git common root. The call is **hard** — any non-zero exit throws rather
64
+ * than falling back to raw `git worktree add`.
65
+ *
66
+ * @throws {Error} when `bd worktree create` fails.
67
+ */
68
+ export declare function provisionWorktree(options: WorktreeOptions): WorktreeInfo;
69
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/specialist/worktree.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAEjF;AAcD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,GAAG,SAAS,CAE5F;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CA4BxE"}
@@ -0,0 +1,51 @@
1
+ import * as z from 'zod';
2
+ export declare const feedSpecialistSchema: z.ZodObject<{
3
+ job_id: z.ZodString;
4
+ cursor: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ limit: number;
8
+ job_id: string;
9
+ cursor: number;
10
+ }, {
11
+ job_id: string;
12
+ limit?: number | undefined;
13
+ cursor?: number | undefined;
14
+ }>;
15
+ export declare function createFeedSpecialistTool(jobsDir: string): {
16
+ name: "feed_specialist";
17
+ description: string;
18
+ inputSchema: z.ZodObject<{
19
+ job_id: z.ZodString;
20
+ cursor: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
21
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ limit: number;
24
+ job_id: string;
25
+ cursor: number;
26
+ }, {
27
+ job_id: string;
28
+ limit?: number | undefined;
29
+ cursor?: number | undefined;
30
+ }>;
31
+ execute(input: z.infer<typeof feedSpecialistSchema>): Promise<{
32
+ error: string;
33
+ job_id: string;
34
+ } | {
35
+ events: import("../../specialist/timeline-events.js").TimelineEvent[];
36
+ cursor: number;
37
+ next_cursor: number;
38
+ has_more: boolean;
39
+ is_complete: boolean;
40
+ metrics?: Record<string, unknown> | undefined;
41
+ bead_id?: string | undefined;
42
+ status: string;
43
+ is_dead: boolean;
44
+ model?: string | undefined;
45
+ job_id: string;
46
+ specialist: string;
47
+ specialist_model: string;
48
+ error?: undefined;
49
+ }>;
50
+ };
51
+ //# sourceMappingURL=feed_specialist.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed_specialist.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/feed_specialist.tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AASzB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAQ/B,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;mBAY/B,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;EAkE5D"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import type { SpecialistLoader } from '../../specialist/loader.js';
3
+ export declare const listSpecialistsSchema: z.ZodObject<{
4
+ category: z.ZodOptional<z.ZodString>;
5
+ scope: z.ZodOptional<z.ZodEnum<["project", "user", "system", "all"]>>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ category?: string | undefined;
8
+ scope?: "system" | "user" | "project" | "all" | undefined;
9
+ }, {
10
+ category?: string | undefined;
11
+ scope?: "system" | "user" | "project" | "all" | undefined;
12
+ }>;
13
+ export declare function createListSpecialistsTool(loader: SpecialistLoader): {
14
+ name: "list_specialists";
15
+ description: string;
16
+ inputSchema: z.ZodObject<{
17
+ category: z.ZodOptional<z.ZodString>;
18
+ scope: z.ZodOptional<z.ZodEnum<["project", "user", "system", "all"]>>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ category?: string | undefined;
21
+ scope?: "system" | "user" | "project" | "all" | undefined;
22
+ }, {
23
+ category?: string | undefined;
24
+ scope?: "system" | "user" | "project" | "all" | undefined;
25
+ }>;
26
+ execute(input: z.infer<typeof listSpecialistsSchema>): Promise<import("../../specialist/loader.js").SpecialistSummary[]>;
27
+ };
28
+ //# sourceMappingURL=list_specialists.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_specialists.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/list_specialists.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB;;;;;;;;;;;;;mBAKzC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC;EAO7D"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import type { JobRegistry } from '../../specialist/jobRegistry.js';
3
+ export declare const resumeSpecialistSchema: z.ZodObject<{
4
+ job_id: z.ZodString;
5
+ task: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ task: string;
8
+ job_id: string;
9
+ }, {
10
+ task: string;
11
+ job_id: string;
12
+ }>;
13
+ export declare function createResumeSpecialistTool(registry: JobRegistry): {
14
+ name: "resume_specialist";
15
+ description: string;
16
+ inputSchema: z.ZodObject<{
17
+ job_id: z.ZodString;
18
+ task: z.ZodString;
19
+ }, "strip", z.ZodTypeAny, {
20
+ task: string;
21
+ job_id: string;
22
+ }, {
23
+ task: string;
24
+ job_id: string;
25
+ }>;
26
+ execute(input: z.infer<typeof resumeSpecialistSchema>): Promise<{
27
+ status: string;
28
+ job_id: string;
29
+ output: string | undefined;
30
+ error?: undefined;
31
+ task?: undefined;
32
+ } | {
33
+ status: string;
34
+ error: string | undefined;
35
+ job_id: string;
36
+ output?: undefined;
37
+ task?: undefined;
38
+ } | {
39
+ status: string;
40
+ job_id: string;
41
+ task: string;
42
+ output?: undefined;
43
+ error?: undefined;
44
+ }>;
45
+ };
46
+ //# sourceMappingURL=resume_specialist.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume_specialist.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/resume_specialist.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAInE,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW;;;;;;;;;;;;;mBASvC,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;EA2C9D"}
@@ -0,0 +1,26 @@
1
+ import * as z from 'zod';
2
+ import type { SpecialistLoader } from '../../specialist/loader.js';
3
+ export interface SpecialistInitDeps {
4
+ /** Returns true if the bd CLI is available in PATH. */
5
+ bdAvailable: () => boolean;
6
+ /** Returns true if a .beads/ directory exists in cwd. */
7
+ beadsExists: () => boolean;
8
+ /** Runs `bd init` and returns the exit status. */
9
+ bdInit: () => {
10
+ status: number | null;
11
+ };
12
+ }
13
+ export declare const specialistInitSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
14
+ export declare function createSpecialistInitTool(loader: SpecialistLoader, deps?: SpecialistInitDeps): {
15
+ name: "specialist_init";
16
+ description: string;
17
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
18
+ execute(_input: z.infer<typeof specialistInitSchema>): Promise<{
19
+ specialists: import("../../specialist/loader.js").SpecialistSummary[];
20
+ beads: {
21
+ available: boolean;
22
+ initialized: boolean;
23
+ };
24
+ }>;
25
+ };
26
+ //# sourceMappingURL=specialist_init.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialist_init.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/specialist_init.tool.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,yDAAyD;IACzD,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,kDAAkD;IAClD,MAAM,EAAE,MAAM;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACzC;AAED,eAAO,MAAM,oBAAoB,gDAAe,CAAC;AAEjD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,kBAAkB;;;;oBAkBlE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;EAqB7D"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import type { SpecialistLoader } from '../../specialist/loader.js';
3
+ import type { CircuitBreaker } from '../../utils/circuitBreaker.js';
4
+ export declare function createSpecialistStatusTool(loader: SpecialistLoader, circuitBreaker: CircuitBreaker): {
5
+ name: "specialist_status";
6
+ description: string;
7
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
8
+ execute(_: object): Promise<{
9
+ loaded_count: number;
10
+ backends_health: {
11
+ [k: string]: "CLOSED" | "HALF_OPEN" | "OPEN";
12
+ };
13
+ specialists: {
14
+ name: string;
15
+ scope: "default" | "user" | "package";
16
+ category: string;
17
+ version: string;
18
+ staleness: "OK" | "STALE" | "AGED";
19
+ }[];
20
+ background_jobs: {
21
+ id: any;
22
+ specialist: any;
23
+ status: any;
24
+ is_dead: boolean;
25
+ elapsed_s: any;
26
+ current_event: any;
27
+ bead_id: any;
28
+ metrics: any;
29
+ error: any;
30
+ }[];
31
+ }>;
32
+ };
33
+ //# sourceMappingURL=specialist_status.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialist_status.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/specialist_status.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAOpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc;;;;eAK9E,MAAM;;;;;;;;;;;;;;;;;;;;;;;;EAsD1B"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import type { JobRegistry } from '../../specialist/jobRegistry.js';
3
+ export declare const steerSpecialistSchema: z.ZodObject<{
4
+ job_id: z.ZodString;
5
+ message: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ message: string;
8
+ job_id: string;
9
+ }, {
10
+ message: string;
11
+ job_id: string;
12
+ }>;
13
+ export declare function createSteerSpecialistTool(registry: JobRegistry): {
14
+ name: "steer_specialist";
15
+ description: string;
16
+ inputSchema: z.ZodObject<{
17
+ job_id: z.ZodString;
18
+ message: z.ZodString;
19
+ }, "strip", z.ZodTypeAny, {
20
+ message: string;
21
+ job_id: string;
22
+ }, {
23
+ message: string;
24
+ job_id: string;
25
+ }>;
26
+ execute(input: z.infer<typeof steerSpecialistSchema>): Promise<{
27
+ status: string;
28
+ job_id: string;
29
+ message: string;
30
+ error?: undefined;
31
+ } | {
32
+ status: string;
33
+ error: string | undefined;
34
+ job_id: string;
35
+ message?: undefined;
36
+ }>;
37
+ };
38
+ //# sourceMappingURL=steer_specialist.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steer_specialist.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/steer_specialist.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAInE,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW;;;;;;;;;;;;;mBAKtC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC;;;;;;;;;;;EAwC7D"}
@@ -0,0 +1,31 @@
1
+ import * as z from 'zod';
2
+ export declare const stopSpecialistSchema: z.ZodObject<{
3
+ job_id: z.ZodString;
4
+ }, "strip", z.ZodTypeAny, {
5
+ job_id: string;
6
+ }, {
7
+ job_id: string;
8
+ }>;
9
+ export declare function createStopSpecialistTool(): {
10
+ name: "stop_specialist";
11
+ description: string;
12
+ inputSchema: z.ZodObject<{
13
+ job_id: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ job_id: string;
16
+ }, {
17
+ job_id: string;
18
+ }>;
19
+ execute(input: z.infer<typeof stopSpecialistSchema>): Promise<{
20
+ status: string;
21
+ job_id: string;
22
+ pid: number;
23
+ error?: undefined;
24
+ } | {
25
+ status: string;
26
+ error: any;
27
+ job_id: string;
28
+ pid?: undefined;
29
+ }>;
30
+ };
31
+ //# sourceMappingURL=stop_specialist.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop_specialist.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/stop_specialist.tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAEH,wBAAgB,wBAAwB;;;;;;;;;;mBAKf,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;;;;;;EAqC5D"}
@@ -0,0 +1,93 @@
1
+ import * as z from 'zod';
2
+ import type { SpecialistRunner } from '../../specialist/runner.js';
3
+ export declare const useSpecialistSchema: z.ZodEffects<z.ZodObject<{
4
+ name: z.ZodString;
5
+ prompt: z.ZodOptional<z.ZodString>;
6
+ bead_id: z.ZodOptional<z.ZodString>;
7
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
8
+ backend_override: z.ZodOptional<z.ZodString>;
9
+ autonomy_level: z.ZodOptional<z.ZodEnum<["READ_ONLY", "LOW", "MEDIUM", "HIGH"]>>;
10
+ context_depth: z.ZodOptional<z.ZodNumber>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ name: string;
13
+ prompt?: string | undefined;
14
+ bead_id?: string | undefined;
15
+ variables?: Record<string, string> | undefined;
16
+ backend_override?: string | undefined;
17
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
18
+ context_depth?: number | undefined;
19
+ }, {
20
+ name: string;
21
+ prompt?: string | undefined;
22
+ bead_id?: string | undefined;
23
+ variables?: Record<string, string> | undefined;
24
+ backend_override?: string | undefined;
25
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
26
+ context_depth?: number | undefined;
27
+ }>, {
28
+ name: string;
29
+ prompt?: string | undefined;
30
+ bead_id?: string | undefined;
31
+ variables?: Record<string, string> | undefined;
32
+ backend_override?: string | undefined;
33
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
34
+ context_depth?: number | undefined;
35
+ }, {
36
+ name: string;
37
+ prompt?: string | undefined;
38
+ bead_id?: string | undefined;
39
+ variables?: Record<string, string> | undefined;
40
+ backend_override?: string | undefined;
41
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
42
+ context_depth?: number | undefined;
43
+ }>;
44
+ export declare function createUseSpecialistTool(runner: SpecialistRunner): {
45
+ name: "use_specialist";
46
+ description: string;
47
+ inputSchema: z.ZodEffects<z.ZodObject<{
48
+ name: z.ZodString;
49
+ prompt: z.ZodOptional<z.ZodString>;
50
+ bead_id: z.ZodOptional<z.ZodString>;
51
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
52
+ backend_override: z.ZodOptional<z.ZodString>;
53
+ autonomy_level: z.ZodOptional<z.ZodEnum<["READ_ONLY", "LOW", "MEDIUM", "HIGH"]>>;
54
+ context_depth: z.ZodOptional<z.ZodNumber>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ name: string;
57
+ prompt?: string | undefined;
58
+ bead_id?: string | undefined;
59
+ variables?: Record<string, string> | undefined;
60
+ backend_override?: string | undefined;
61
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
62
+ context_depth?: number | undefined;
63
+ }, {
64
+ name: string;
65
+ prompt?: string | undefined;
66
+ bead_id?: string | undefined;
67
+ variables?: Record<string, string> | undefined;
68
+ backend_override?: string | undefined;
69
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
70
+ context_depth?: number | undefined;
71
+ }>, {
72
+ name: string;
73
+ prompt?: string | undefined;
74
+ bead_id?: string | undefined;
75
+ variables?: Record<string, string> | undefined;
76
+ backend_override?: string | undefined;
77
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
78
+ context_depth?: number | undefined;
79
+ }, {
80
+ name: string;
81
+ prompt?: string | undefined;
82
+ bead_id?: string | undefined;
83
+ variables?: Record<string, string> | undefined;
84
+ backend_override?: string | undefined;
85
+ autonomy_level?: "READ_ONLY" | "LOW" | "MEDIUM" | "HIGH" | undefined;
86
+ context_depth?: number | undefined;
87
+ }>;
88
+ execute(input: z.infer<typeof useSpecialistSchema>, onProgress?: (msg: string) => void): Promise<import("../../specialist/runner.js").RunResult | {
89
+ status: "error";
90
+ error: string;
91
+ }>;
92
+ };
93
+ //# sourceMappingURL=use_specialist.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_specialist.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/specialist/use_specialist.tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW9B,CAAC;AAEH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAcvC,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;;EAgC/F"}
@@ -0,0 +1,19 @@
1
+ type State = 'CLOSED' | 'HALF_OPEN' | 'OPEN';
2
+ interface CircuitBreakerOptions {
3
+ failureThreshold?: number;
4
+ cooldownMs?: number;
5
+ }
6
+ export declare function isTransientError(error: unknown): boolean;
7
+ export declare function isAuthError(error: unknown): boolean;
8
+ export declare class CircuitBreaker {
9
+ private states;
10
+ private threshold;
11
+ private cooldownMs;
12
+ constructor(options?: CircuitBreakerOptions);
13
+ getState(backend: string): State;
14
+ isAvailable(backend: string): boolean;
15
+ recordSuccess(backend: string): void;
16
+ recordFailure(backend: string): void;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=circuitBreaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuitBreaker.d.ts","sourceRoot":"","sources":["../../../src/utils/circuitBreaker.ts"],"names":[],"mappings":"AACA,KAAK,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAQ7C,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2BD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBnD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,GAAE,qBAA0B;IAK/C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAShC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CASrC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Logger utility for consistent logging across the application
3
+ */
4
+ export declare const logger: {
5
+ info: (message: string, ...args: any[]) => void;
6
+ error: (message: string, ...args: any[]) => void;
7
+ warn: (message: string, ...args: any[]) => void;
8
+ debug: (message: string, ...args: any[]) => void;
9
+ progress: (message: string) => void;
10
+ };
11
+ //# sourceMappingURL=logger.d.ts.map