prism-pr 1.0.0-alpha.69 → 1.0.0-alpha.71

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 (115) hide show
  1. package/README.md +9 -1
  2. package/dist/ai/agents/shared/finding-schema.d.ts +3 -3
  3. package/dist/ai/agents/shared/finding-schema.js +3 -3
  4. package/dist/ai/agents/shared/prompt-builder.d.ts.map +1 -1
  5. package/dist/ai/agents/shared/prompt-builder.js +14 -4
  6. package/dist/ai/agents/shared/prompt-builder.js.map +1 -1
  7. package/dist/ai/orchestrator/orchestrator.d.ts +7 -0
  8. package/dist/ai/orchestrator/orchestrator.d.ts.map +1 -1
  9. package/dist/ai/orchestrator/orchestrator.js +139 -99
  10. package/dist/ai/orchestrator/orchestrator.js.map +1 -1
  11. package/dist/ai/orchestrator/slot-registry.d.ts +19 -0
  12. package/dist/ai/orchestrator/slot-registry.d.ts.map +1 -0
  13. package/dist/ai/orchestrator/slot-registry.js +44 -0
  14. package/dist/ai/orchestrator/slot-registry.js.map +1 -0
  15. package/dist/ai/providers/gemini-provider.d.ts +15 -0
  16. package/dist/ai/providers/gemini-provider.d.ts.map +1 -0
  17. package/dist/ai/providers/gemini-provider.js +116 -0
  18. package/dist/ai/providers/gemini-provider.js.map +1 -0
  19. package/dist/ai/providers/openai-provider.d.ts +15 -0
  20. package/dist/ai/providers/openai-provider.d.ts.map +1 -0
  21. package/dist/ai/providers/openai-provider.js +108 -0
  22. package/dist/ai/providers/openai-provider.js.map +1 -0
  23. package/dist/commands/review/start.js +3 -3
  24. package/dist/commands/review/start.js.map +1 -1
  25. package/dist/config/config-manager.d.ts +46 -0
  26. package/dist/config/config-manager.d.ts.map +1 -1
  27. package/dist/config/config-manager.js +184 -4
  28. package/dist/config/config-manager.js.map +1 -1
  29. package/dist/core/workflow-callbacks.d.ts +4 -4
  30. package/dist/core/workflow-callbacks.d.ts.map +1 -1
  31. package/dist/core/workflow-engine.d.ts.map +1 -1
  32. package/dist/core/workflow-engine.js +7 -5
  33. package/dist/core/workflow-engine.js.map +1 -1
  34. package/dist/tui/callbacks/tui-workflow-callbacks.d.ts +4 -4
  35. package/dist/tui/callbacks/tui-workflow-callbacks.d.ts.map +1 -1
  36. package/dist/tui/callbacks/tui-workflow-callbacks.js +25 -6
  37. package/dist/tui/callbacks/tui-workflow-callbacks.js.map +1 -1
  38. package/dist/tui/screen-router.js +3 -3
  39. package/dist/tui/screen-router.js.map +1 -1
  40. package/dist/tui/screens/home.js +1 -1
  41. package/dist/tui/screens/home.js.map +1 -1
  42. package/dist/tui/screens/review-running.d.ts +15 -0
  43. package/dist/tui/screens/review-running.d.ts.map +1 -1
  44. package/dist/tui/screens/review-running.js +53 -7
  45. package/dist/tui/screens/review-running.js.map +1 -1
  46. package/dist/tui/screens/settings-menu.d.ts +3 -0
  47. package/dist/tui/screens/settings-menu.d.ts.map +1 -0
  48. package/dist/tui/screens/settings-menu.js +35 -0
  49. package/dist/tui/screens/settings-menu.js.map +1 -0
  50. package/dist/tui/screens/settings-provider.d.ts +3 -0
  51. package/dist/tui/screens/settings-provider.d.ts.map +1 -0
  52. package/dist/tui/screens/settings-provider.js +105 -0
  53. package/dist/tui/screens/settings-provider.js.map +1 -0
  54. package/dist/tui/screens/settings.d.ts +1 -1
  55. package/dist/tui/screens/settings.d.ts.map +1 -1
  56. package/dist/tui/screens/settings.js +133 -20
  57. package/dist/tui/screens/settings.js.map +1 -1
  58. package/dist/tui/screens/unified-settings/SecretRow.d.ts +15 -0
  59. package/dist/tui/screens/unified-settings/SecretRow.d.ts.map +1 -0
  60. package/dist/tui/screens/unified-settings/SecretRow.js +15 -0
  61. package/dist/tui/screens/unified-settings/SecretRow.js.map +1 -0
  62. package/dist/tui/screens/unified-settings/SettingRow.d.ts +14 -0
  63. package/dist/tui/screens/unified-settings/SettingRow.d.ts.map +1 -0
  64. package/dist/tui/screens/unified-settings/SettingRow.js +11 -0
  65. package/dist/tui/screens/unified-settings/SettingRow.js.map +1 -0
  66. package/dist/tui/screens/unified-settings/constants.d.ts +58 -0
  67. package/dist/tui/screens/unified-settings/constants.d.ts.map +1 -0
  68. package/dist/tui/screens/unified-settings/constants.js +97 -0
  69. package/dist/tui/screens/unified-settings/constants.js.map +1 -0
  70. package/dist/tui/screens/unified-settings/state.d.ts +154 -0
  71. package/dist/tui/screens/unified-settings/state.d.ts.map +1 -0
  72. package/dist/tui/screens/unified-settings/state.js +435 -0
  73. package/dist/tui/screens/unified-settings/state.js.map +1 -0
  74. package/dist/tui/screens/unified-settings/tab-agents.d.ts +14 -0
  75. package/dist/tui/screens/unified-settings/tab-agents.d.ts.map +1 -0
  76. package/dist/tui/screens/unified-settings/tab-agents.js +26 -0
  77. package/dist/tui/screens/unified-settings/tab-agents.js.map +1 -0
  78. package/dist/tui/screens/unified-settings/tab-bar.d.ts +12 -0
  79. package/dist/tui/screens/unified-settings/tab-bar.d.ts.map +1 -0
  80. package/dist/tui/screens/unified-settings/tab-bar.js +15 -0
  81. package/dist/tui/screens/unified-settings/tab-bar.js.map +1 -0
  82. package/dist/tui/screens/unified-settings/tab-defaults.d.ts +13 -0
  83. package/dist/tui/screens/unified-settings/tab-defaults.d.ts.map +1 -0
  84. package/dist/tui/screens/unified-settings/tab-defaults.js +12 -0
  85. package/dist/tui/screens/unified-settings/tab-defaults.js.map +1 -0
  86. package/dist/tui/screens/unified-settings/tab-models.d.ts +13 -0
  87. package/dist/tui/screens/unified-settings/tab-models.d.ts.map +1 -0
  88. package/dist/tui/screens/unified-settings/tab-models.js +12 -0
  89. package/dist/tui/screens/unified-settings/tab-models.js.map +1 -0
  90. package/dist/tui/screens/unified-settings/tab-provider.d.ts +13 -0
  91. package/dist/tui/screens/unified-settings/tab-provider.d.ts.map +1 -0
  92. package/dist/tui/screens/unified-settings/tab-provider.js +14 -0
  93. package/dist/tui/screens/unified-settings/tab-provider.js.map +1 -0
  94. package/dist/tui/screens/unified-settings.d.ts +9 -0
  95. package/dist/tui/screens/unified-settings.d.ts.map +1 -0
  96. package/dist/tui/screens/unified-settings.js +364 -0
  97. package/dist/tui/screens/unified-settings.js.map +1 -0
  98. package/dist/tui/state/router-reducer.d.ts +1 -1
  99. package/dist/tui/state/router-reducer.d.ts.map +1 -1
  100. package/dist/tui/state/tui-reducer.d.ts +15 -0
  101. package/dist/tui/state/tui-reducer.d.ts.map +1 -1
  102. package/dist/tui/state/tui-reducer.js +27 -4
  103. package/dist/tui/state/tui-reducer.js.map +1 -1
  104. package/dist/tui/utils/agent-label.d.ts +3 -0
  105. package/dist/tui/utils/agent-label.d.ts.map +1 -0
  106. package/dist/tui/utils/agent-label.js +21 -0
  107. package/dist/tui/utils/agent-label.js.map +1 -0
  108. package/dist/types/config.d.ts +4 -1
  109. package/dist/types/config.d.ts.map +1 -1
  110. package/dist/utils/redact-secrets.d.ts +16 -0
  111. package/dist/utils/redact-secrets.d.ts.map +1 -0
  112. package/dist/utils/redact-secrets.js +33 -0
  113. package/dist/utils/redact-secrets.js.map +1 -0
  114. package/oclif.manifest.json +4 -2
  115. package/package.json +1 -1
package/README.md CHANGED
@@ -16,6 +16,8 @@ npm i -g prism-pr
16
16
  - Bitbucket Cloud account with an Atlassian API token
17
17
  - AI provider (one of):
18
18
  - `ANTHROPIC_API_KEY` environment variable (preferred), or
19
+ - `OPENAI_API_KEY` environment variable, or
20
+ - `GEMINI_API_KEY` environment variable, or
19
21
  - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) installed and authenticated
20
22
 
21
23
  ## Setup
@@ -151,7 +153,7 @@ prism guard check --pr 42 --suggest-rules
151
153
  prism review start --workspace acme --repo app --pr 42 --suggest-rules
152
154
  ```
153
155
 
154
- PRISM uses the same AI provider configured for reviews (auto-detects from `ANTHROPIC_API_KEY` or falls back to Claude Code CLI).
156
+ PRISM uses the same AI provider configured for reviews (auto-detects from `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `GEMINI_API_KEY`, then falls back to Claude Code CLI).
155
157
 
156
158
  In the TUI, press `[g]` on any results screen (guard results or AI review findings) to generate rule suggestions on demand. Review, accept/reject, and apply to the manifest.
157
159
 
@@ -166,6 +168,10 @@ prism guard # guard-focused TUI
166
168
 
167
169
  Launches a full Ink-based terminal UI with keyboard navigation.
168
170
 
171
+ In **Settings**, you now get a submenu:
172
+ - **Providers & API Keys**: provider selection (`auto`, `anthropic`, `openai`, `gemini`, `claude-code`) and optional Anthropic/OpenAI/Gemini key registration
173
+ - **Model Registry**: choose default model, set per-agent models, and add custom model IDs dynamically
174
+
169
175
  ### Guardian Angel section
170
176
 
171
177
  - **Guard Check** — select workspace → repo → PR → run check
@@ -214,6 +220,8 @@ prism review start --workspace acme --repo app --pr 42 --verbose
214
220
 
215
221
  # Pick a provider explicitly
216
222
  prism review start --workspace acme --repo app --pr 42 --provider anthropic
223
+ prism review start --workspace acme --repo app --pr 42 --provider openai
224
+ prism review start --workspace acme --repo app --pr 42 --provider gemini
217
225
  prism review start --workspace acme --repo app --pr 42 --provider claude-code
218
226
 
219
227
  # Generate rule suggestions from findings
@@ -33,15 +33,15 @@ export declare const FINDING_TOOL_SCHEMA: {
33
33
  };
34
34
  readonly problem: {
35
35
  readonly type: "string";
36
- readonly maxLength: 500;
36
+ readonly maxLength: 200;
37
37
  };
38
38
  readonly rationale: {
39
39
  readonly type: "string";
40
- readonly maxLength: 500;
40
+ readonly maxLength: 200;
41
41
  };
42
42
  readonly suggestion: {
43
43
  readonly type: "string";
44
- readonly maxLength: 500;
44
+ readonly maxLength: 200;
45
45
  };
46
46
  };
47
47
  };
@@ -29,9 +29,9 @@ export const FINDING_TOOL_SCHEMA = {
29
29
  severity: { enum: ['critical', 'high', 'medium', 'low', 'info'] },
30
30
  category: { enum: FINDING_CATEGORIES },
31
31
  title: { type: 'string', maxLength: 100 },
32
- problem: { type: 'string', maxLength: 500 },
33
- rationale: { type: 'string', maxLength: 500 },
34
- suggestion: { type: 'string', maxLength: 500 },
32
+ problem: { type: 'string', maxLength: 200 },
33
+ rationale: { type: 'string', maxLength: 200 },
34
+ suggestion: { type: 'string', maxLength: 200 },
35
35
  },
36
36
  },
37
37
  },
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../../../src/ai/agents/shared/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAiDxE,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,EACtB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,MAAM,CAgDR"}
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../../../src/ai/agents/shared/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA2DxE,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,EACtB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,MAAM,CAgDR"}
@@ -18,11 +18,21 @@ You are reviewing a DIFF — NOT the full source file. Only changed lines and a
18
18
  - If the diff shows a pattern that implies supporting code (e.g. \`takeUntil(this.destroy)\` implies \`ngOnDestroy\`, an import implies a declaration), ASSUME the supporting code exists in the invisible portion of the file unless there is direct evidence IN THE DIFF that it is missing (e.g. a new class that lacks the method).
19
19
  - Only report issues about code you CAN see. Never speculate about code outside the diff.
20
20
  - "I don't see X in the diff" is NOT the same as "X is missing from the file."`;
21
- const LANGUAGE_INSTRUCTION = `## Language
21
+ const LANGUAGE_INSTRUCTION = `## Style (CRITICAL)
22
22
 
23
- You MUST write all finding fields (problem, rationale, suggestion) in Spanish.
24
- Keep technical terms (variable names, function names, types, keywords) in their original language.
25
- Be concise — maximum 120 tokens per finding field.`;
23
+ Write findings in Spanish, telegrama style — direct and concise. No rodeos, no hypothetical scenarios, no cascading alternatives.
24
+
25
+ **Per-field content:**
26
+ - \`problem\`: WHAT is wrong. One statement. No "with X users", no "podría causar", no inventadas.
27
+ - \`rationale\`: WHY it's wrong — technical root cause. No invented numbers ("50-200ms"), no hypothetical impact.
28
+ - \`suggestion\`: THE concrete fix. One action. No menu of options ("opción A o B o C"), no fallback chains.
29
+
30
+ **Hard length limits by severity:**
31
+ - \`critical\` / \`high\`: max 200 characters per field (1-2 short sentences)
32
+ - \`medium\` / \`low\` / \`info\`: max 100 characters per field (1 sentence)
33
+
34
+ Keep code identifiers (variables, functions, types, keywords) in their original language.
35
+ If you feel the need to explain more, stop — the developer will ask if they need detail.`;
26
36
  /**
27
37
  * Builds the severity focus instruction for agents.
28
38
  * Lists only the severities at or above the threshold so the agent knows exactly what to report.
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../../src/ai/agents/shared/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,0BAA0B,GAAG;;;;;;;;+EAQ4C,CAAC;AAEhF,MAAM,oBAAoB,GAAG;;;;mDAIsB,CAAC;AAEpD;;;GAGG;AACH,SAAS,wBAAwB,CAAC,WAAwC;IACxE,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO;;sCAE6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;+BACzB,WAAW,iCACtC,QAAQ,GAAG,CAAC,GAAG,kBAAkB,CAAC,MAAM;QACtC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,CAAC,CAAC,qBACN;wCACsC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;AACpI,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,OAAsB,EACtB,oBAA6B,EAC7B,WAA0B;IAE1B,MAAM,QAAQ,GAAa,CAAC,UAAU,EAAE,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;IAE1F,8DAA8D;IAC9D,MAAM,SAAS,GAAG,CAAC,GAAe,EAAW,EAAE,CAC7C,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEzD,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,OAAO,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC;;;mFAGiE,CAAC,CAAC;IACnF,CAAC;IAED,gFAAgF;IAChF,gEAAgE;IAChE,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3E,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC;IAED,4CAA4C;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;aACrD,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,cAAc;IACd,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,2BAA2B;IAC3B,IAAI,SAAS,CAAC,gBAAgB,CAAC,IAAI,OAAO,EAAE,cAAc,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9G,QAAQ,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,8EAA8E;IAC9E,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,oBAAoB,CAAC;IACvE,IAAI,SAAS,CAAC,gBAAgB,CAAC,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7F,QAAQ,CAAC,IAAI,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../../src/ai/agents/shared/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,13 @@ export interface AgentProgressEvent {
53
53
  fileIndex?: number;
54
54
  totalFiles?: number;
55
55
  skippedFilesCount?: number;
56
+ /**
57
+ * Physical semaphore slot holding this work item, in [0, concurrency).
58
+ * Present on running/complete/failed/skipped events that correspond to a
59
+ * specific (agent, file) or batch work item. Absent on agent-level aggregate
60
+ * events (e.g., the final complete emitted after all files finish).
61
+ */
62
+ slotIndex?: number;
56
63
  }
57
64
  export interface OrchestratorOptions {
58
65
  repoConfig?: RepoConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ai/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/ai/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAGnG,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,mBAAmB,EAAE,YAAY,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,oFAAoF;IACpF,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,uGAAuG;IACvG,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAWD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAFT,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,yBAAyB,YAAA,EACrC,QAAQ,CAAC,EAAE,cAAc,YAAA;IAGtC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA8dzH"}
@@ -6,6 +6,7 @@ import { RuleBasedStrategy } from './rule-based-strategy.js';
6
6
  import { SkillRegistry } from '../skills/skill-registry.js';
7
7
  import { resolveFrameworkRules } from '../agents/framework-rules/index.js';
8
8
  import { Semaphore } from './semaphore.js';
9
+ import { SlotRegistry } from './slot-registry.js';
9
10
  import { buildSingleFileContent } from '../agents/shared/content-builder.js';
10
11
  import { computeFileHash } from '../../utils/hash.js';
11
12
  // Severity sort order — lower index = higher priority
@@ -60,6 +61,7 @@ export class ReviewOrchestrator {
60
61
  // Resolve concurrency: options.concurrency > repoConfig.concurrency > default 5
61
62
  const concurrencyLimit = options?.concurrency ?? repoConfig?.concurrency ?? 5;
62
63
  const semaphore = new Semaphore(concurrencyLimit);
64
+ const slotRegistry = new SlotRegistry(concurrencyLimit);
63
65
  const maxTokens = repoConfig?.maxOutputTokens;
64
66
  // Build the full file manifest for single-file context (all input files, not per-agent filtered)
65
67
  const allFilesManifest = input.files.map((f) => ({
@@ -119,17 +121,33 @@ export class ReviewOrchestrator {
119
121
  ...(input.projectContext !== undefined ? { projectContext: input.projectContext } : {}),
120
122
  context: agentContext,
121
123
  };
122
- safeEmit(onProgress, { agentId: spec.agentId, status: 'running', agentIndex, totalAgents });
123
124
  const startMs = Date.now();
124
125
  try {
125
- const output = await semaphore.run(() => agent.analyze(agentInput, agentProvider));
126
- safeEmit(onProgress, {
127
- agentId: spec.agentId,
128
- status: 'complete',
129
- agentIndex,
130
- totalAgents,
131
- findingsCount: output.findings.length,
132
- durationMs: Date.now() - startMs,
126
+ const output = await semaphore.run(async () => {
127
+ // Slot assigned AFTER semaphore acquire so slotIndex reflects a real physical slot
128
+ const slotIndex = slotRegistry.acquire({ agentId: spec.agentId });
129
+ safeEmit(onProgress, { agentId: spec.agentId, status: 'running', agentIndex, totalAgents, slotIndex });
130
+ try {
131
+ const result = await agent.analyze(agentInput, agentProvider);
132
+ safeEmit(onProgress, {
133
+ agentId: spec.agentId,
134
+ status: 'complete',
135
+ agentIndex,
136
+ totalAgents,
137
+ findingsCount: result.findings.length,
138
+ durationMs: Date.now() - startMs,
139
+ slotIndex,
140
+ });
141
+ return result;
142
+ }
143
+ catch (err) {
144
+ const message = err instanceof Error ? err.message : String(err);
145
+ safeEmit(onProgress, { agentId: spec.agentId, status: 'failed', agentIndex, totalAgents, error: message, slotIndex });
146
+ throw err;
147
+ }
148
+ finally {
149
+ slotRegistry.release(slotIndex);
150
+ }
133
151
  });
134
152
  return {
135
153
  agentId: spec.agentId,
@@ -142,7 +160,6 @@ export class ReviewOrchestrator {
142
160
  catch (err) {
143
161
  const message = err instanceof Error ? err.message : String(err);
144
162
  this.logger.warn(`⚠ Agent ${spec.agentId} failed: ${message} — skipping`);
145
- safeEmit(onProgress, { agentId: spec.agentId, status: 'failed', agentIndex, totalAgents, error: message });
146
163
  return { agentId: spec.agentId, status: 'failed', error: message };
147
164
  }
148
165
  }
@@ -164,119 +181,142 @@ export class ReviewOrchestrator {
164
181
  })());
165
182
  const agentSetups = await Promise.all(agentPromises);
166
183
  const batchResults = [];
167
- const fileWorkItems = [];
184
+ const fileByFileSetups = [];
185
+ // First pass: partition batch/failed/not-found results from live file-by-file setups
168
186
  for (const setup of agentSetups) {
169
- // Batch-mode, not-found, and failed agents already have their result
170
187
  if ('status' in setup) {
171
188
  batchResults.push(setup);
172
189
  continue;
173
190
  }
174
- // Build per-file work items for this file-by-file agent
175
- const { agent, agentProvider, agentContext, agentFiles, agentIndex, totalFiles, effectiveContentMode, agentId } = setup;
191
+ const live = setup;
176
192
  // Agent with 0 matching files → success with empty findings (not an error)
177
- if (agentFiles.length === 0) {
178
- safeEmit(onProgress, { agentId, status: 'complete', agentIndex, totalAgents, findingsCount: 0 });
179
- batchResults.push({ agentId, status: 'success', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, skippedCount: 0 });
193
+ if (live.agentFiles.length === 0) {
194
+ safeEmit(onProgress, { agentId: live.agentId, status: 'complete', agentIndex: live.agentIndex, totalAgents, findingsCount: 0 });
195
+ batchResults.push({ agentId: live.agentId, status: 'success', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, skippedCount: 0 });
180
196
  continue;
181
197
  }
182
- for (let fileIndex = 0; fileIndex < agentFiles.length; fileIndex++) {
183
- fileWorkItems.push({
184
- agentId,
185
- agent,
186
- agentProvider,
187
- agentContext,
188
- file: agentFiles[fileIndex],
189
- agentIndex,
190
- fileIndex,
191
- totalFiles,
192
- effectiveContentMode,
193
- });
198
+ fileByFileSetups.push(live);
199
+ }
200
+ // Second pass: round-robin interleave (agent, file) pairs by file index.
201
+ // This prevents starvation: no agent consumes all semaphore slots before
202
+ // another agent's first file is enqueued.
203
+ const maxFiles = fileByFileSetups.length > 0
204
+ ? Math.max(...fileByFileSetups.map((s) => s.agentFiles.length))
205
+ : 0;
206
+ const fileWorkItems = [];
207
+ for (let i = 0; i < maxFiles; i++) {
208
+ for (const setup of fileByFileSetups) {
209
+ if (i < setup.agentFiles.length) {
210
+ fileWorkItems.push({
211
+ agentId: setup.agentId,
212
+ agent: setup.agent,
213
+ agentProvider: setup.agentProvider,
214
+ agentContext: setup.agentContext,
215
+ file: setup.agentFiles[i],
216
+ agentIndex: setup.agentIndex,
217
+ fileIndex: i,
218
+ totalFiles: setup.totalFiles,
219
+ effectiveContentMode: setup.effectiveContentMode,
220
+ });
221
+ }
194
222
  }
195
223
  }
196
- // Execute ALL file work items through the semaphore — maximum parallelism
224
+ // Execute ALL file work items through the semaphore — maximum parallelism.
225
+ // Each item is paired with a physical slotIndex via SlotRegistry so the TUI
226
+ // can visualize real concurrency occupancy.
197
227
  const fileResults = await Promise.all(fileWorkItems.map((item) => semaphore.run(async () => {
198
- const hash = computeFileHash(item.file);
199
- // Cache skip logic
200
- if (!forceReview && this.cacheRepo !== undefined) {
201
- const cached = this.cacheRepo.lookup(prId, item.file.newPath, item.agentId);
202
- if (cached !== undefined && cached.fileHash === hash && cached.outcome === 'clean') {
228
+ const slotIndex = slotRegistry.acquire({ agentId: item.agentId, filePath: item.file.newPath });
229
+ try {
230
+ const hash = computeFileHash(item.file);
231
+ // Cache skip logic
232
+ if (!forceReview && this.cacheRepo !== undefined) {
233
+ const cached = this.cacheRepo.lookup(prId, item.file.newPath, item.agentId);
234
+ if (cached !== undefined && cached.fileHash === hash && cached.outcome === 'clean') {
235
+ safeEmit(onProgress, {
236
+ agentId: item.agentId,
237
+ status: 'skipped',
238
+ agentIndex: item.agentIndex,
239
+ totalAgents,
240
+ filePath: item.file.newPath,
241
+ fileIndex: item.fileIndex,
242
+ totalFiles: item.totalFiles,
243
+ slotIndex,
244
+ });
245
+ return { agentId: item.agentId, status: 'skipped', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, filePath: item.file.newPath };
246
+ }
247
+ }
248
+ safeEmit(onProgress, {
249
+ agentId: item.agentId,
250
+ status: 'running',
251
+ agentIndex: item.agentIndex,
252
+ totalAgents,
253
+ filePath: item.file.newPath,
254
+ fileIndex: item.fileIndex,
255
+ totalFiles: item.totalFiles,
256
+ slotIndex,
257
+ });
258
+ try {
259
+ const userContent = buildSingleFileContent(item.file, input.prMetadata, allFilesManifest, item.effectiveContentMode);
260
+ const singleFileInput = {
261
+ files: [item.file],
262
+ prMetadata: input.prMetadata,
263
+ ...(input.projectContext !== undefined ? { projectContext: input.projectContext } : {}),
264
+ context: { ...item.agentContext },
265
+ };
266
+ const singleFileProvider = {
267
+ analyze: (params) => item.agentProvider.analyze({
268
+ ...params,
269
+ userContent,
270
+ }),
271
+ estimateCost: (usage) => item.agentProvider.estimateCost(usage),
272
+ };
273
+ const output = await item.agent.analyze(singleFileInput, singleFileProvider);
274
+ // Cache the result
275
+ const outcome = output.findings.length > 0 ? 'findings' : 'clean';
276
+ if (this.cacheRepo !== undefined) {
277
+ this.cacheRepo.upsert({
278
+ prId,
279
+ filePath: item.file.newPath,
280
+ agentId: item.agentId,
281
+ fileHash: hash,
282
+ outcome,
283
+ findingsCount: output.findings.length,
284
+ sessionId,
285
+ reviewedAt: new Date().toISOString(),
286
+ });
287
+ }
203
288
  safeEmit(onProgress, {
204
289
  agentId: item.agentId,
205
- status: 'skipped',
290
+ status: 'complete',
206
291
  agentIndex: item.agentIndex,
207
292
  totalAgents,
208
293
  filePath: item.file.newPath,
209
294
  fileIndex: item.fileIndex,
210
295
  totalFiles: item.totalFiles,
296
+ findingsCount: output.findings.length,
297
+ slotIndex,
211
298
  });
212
- return { agentId: item.agentId, status: 'skipped', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, filePath: item.file.newPath };
299
+ return { agentId: item.agentId, status: 'success', findings: output.findings, usage: output.usage, filePath: item.file.newPath };
213
300
  }
214
- }
215
- safeEmit(onProgress, {
216
- agentId: item.agentId,
217
- status: 'running',
218
- agentIndex: item.agentIndex,
219
- totalAgents,
220
- filePath: item.file.newPath,
221
- fileIndex: item.fileIndex,
222
- totalFiles: item.totalFiles,
223
- });
224
- try {
225
- const userContent = buildSingleFileContent(item.file, input.prMetadata, allFilesManifest, item.effectiveContentMode);
226
- const singleFileInput = {
227
- files: [item.file],
228
- prMetadata: input.prMetadata,
229
- ...(input.projectContext !== undefined ? { projectContext: input.projectContext } : {}),
230
- context: { ...item.agentContext },
231
- };
232
- const singleFileProvider = {
233
- analyze: (params) => item.agentProvider.analyze({
234
- ...params,
235
- userContent,
236
- }),
237
- estimateCost: (usage) => item.agentProvider.estimateCost(usage),
238
- };
239
- const output = await item.agent.analyze(singleFileInput, singleFileProvider);
240
- // Cache the result
241
- const outcome = output.findings.length > 0 ? 'findings' : 'clean';
242
- if (this.cacheRepo !== undefined) {
243
- this.cacheRepo.upsert({
244
- prId,
245
- filePath: item.file.newPath,
301
+ catch (err) {
302
+ const message = err instanceof Error ? err.message : String(err);
303
+ this.logger.warn(`⚠ Agent ${item.agentId} failed on ${item.file.newPath}: ${message} — skipping file`);
304
+ safeEmit(onProgress, {
246
305
  agentId: item.agentId,
247
- fileHash: hash,
248
- outcome,
249
- findingsCount: output.findings.length,
250
- sessionId,
251
- reviewedAt: new Date().toISOString(),
306
+ status: 'failed',
307
+ agentIndex: item.agentIndex,
308
+ totalAgents,
309
+ filePath: item.file.newPath,
310
+ fileIndex: item.fileIndex,
311
+ totalFiles: item.totalFiles,
312
+ error: message,
313
+ slotIndex,
252
314
  });
315
+ return { agentId: item.agentId, status: 'failed', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, filePath: item.file.newPath };
253
316
  }
254
- safeEmit(onProgress, {
255
- agentId: item.agentId,
256
- status: 'complete',
257
- agentIndex: item.agentIndex,
258
- totalAgents,
259
- filePath: item.file.newPath,
260
- fileIndex: item.fileIndex,
261
- totalFiles: item.totalFiles,
262
- findingsCount: output.findings.length,
263
- });
264
- return { agentId: item.agentId, status: 'success', findings: output.findings, usage: output.usage, filePath: item.file.newPath };
265
317
  }
266
- catch (err) {
267
- const message = err instanceof Error ? err.message : String(err);
268
- this.logger.warn(`⚠ Agent ${item.agentId} failed on ${item.file.newPath}: ${message} — skipping file`);
269
- safeEmit(onProgress, {
270
- agentId: item.agentId,
271
- status: 'failed',
272
- agentIndex: item.agentIndex,
273
- totalAgents,
274
- filePath: item.file.newPath,
275
- fileIndex: item.fileIndex,
276
- totalFiles: item.totalFiles,
277
- error: message,
278
- });
279
- return { agentId: item.agentId, status: 'failed', findings: [], usage: { inputTokens: 0, outputTokens: 0 }, filePath: item.file.newPath };
318
+ finally {
319
+ slotRegistry.release(slotIndex);
280
320
  }
281
321
  })));
282
322
  // ── Aggregate file results by agent ─────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ai/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/ai/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Tracks which work item occupies each physical semaphore slot.
3
+ * Pairs with the Semaphore to assign a stable slotIndex in [0, limit) to each
4
+ * active work item so the TUI can visualize real concurrency.
5
+ *
6
+ * Invariants:
7
+ * - Exactly one item per non-null slot
8
+ * - acquire throws when the registry is full (misuse — callers MUST gate via Semaphore)
9
+ * - release throws when target slot is already free or out of range
10
+ */
11
+ export declare class SlotRegistry {
12
+ private readonly limit;
13
+ private readonly slots;
14
+ constructor(limit: number);
15
+ acquire(item: object): number;
16
+ release(idx: number): void;
17
+ getActiveCount(): number;
18
+ }
19
+ //# sourceMappingURL=slot-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-registry.d.ts","sourceRoot":"","sources":["../../../src/ai/orchestrator/slot-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;gBAEhB,KAAK,EAAE,MAAM;IAI1C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU1B,cAAc,IAAI,MAAM;CAKzB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tracks which work item occupies each physical semaphore slot.
3
+ * Pairs with the Semaphore to assign a stable slotIndex in [0, limit) to each
4
+ * active work item so the TUI can visualize real concurrency.
5
+ *
6
+ * Invariants:
7
+ * - Exactly one item per non-null slot
8
+ * - acquire throws when the registry is full (misuse — callers MUST gate via Semaphore)
9
+ * - release throws when target slot is already free or out of range
10
+ */
11
+ export class SlotRegistry {
12
+ limit;
13
+ slots;
14
+ constructor(limit) {
15
+ this.limit = limit;
16
+ this.slots = new Array(limit).fill(null);
17
+ }
18
+ acquire(item) {
19
+ for (let i = 0; i < this.limit; i++) {
20
+ if (this.slots[i] === null) {
21
+ this.slots[i] = item;
22
+ return i;
23
+ }
24
+ }
25
+ throw new Error(`SlotRegistry: acquire called when all ${this.limit} slots occupied`);
26
+ }
27
+ release(idx) {
28
+ if (idx < 0 || idx >= this.limit) {
29
+ throw new Error(`SlotRegistry: release index ${idx} out of range [0, ${this.limit})`);
30
+ }
31
+ if (this.slots[idx] === null) {
32
+ throw new Error(`SlotRegistry: release called on free slot ${idx}`);
33
+ }
34
+ this.slots[idx] = null;
35
+ }
36
+ getActiveCount() {
37
+ let n = 0;
38
+ for (const s of this.slots)
39
+ if (s !== null)
40
+ n++;
41
+ return n;
42
+ }
43
+ }
44
+ //# sourceMappingURL=slot-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-registry.js","sourceRoot":"","sources":["../../../src/ai/orchestrator/slot-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IAGM;IAFZ,KAAK,CAAuB;IAE7C,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACrB,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,KAAK,iBAAiB,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,qBAAqB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { ModelProvider, AnalyzeParams, AnalyzeResult, TokenUsage, CostEstimate } from '../../types/index.js';
2
+ export declare class GeminiProvider implements ModelProvider {
3
+ private readonly apiKey;
4
+ private readonly model;
5
+ private readonly maxTokens;
6
+ constructor(params: {
7
+ apiKey: string;
8
+ model?: string;
9
+ maxTokens?: number;
10
+ });
11
+ analyze(params: AnalyzeParams): Promise<AnalyzeResult>;
12
+ estimateCost(usage: TokenUsage): CostEstimate;
13
+ private throwProviderError;
14
+ }
15
+ //# sourceMappingURL=gemini-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-provider.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/gemini-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAgClH,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IASpE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoE5D,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY;YAY/B,kBAAkB;CAqBjC"}