neuro-cli 4.1.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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +510 -0
  3. package/dist/advisor/advisor.d.ts +50 -0
  4. package/dist/advisor/advisor.js +178 -0
  5. package/dist/agents/base.d.ts +62 -0
  6. package/dist/agents/base.js +215 -0
  7. package/dist/agents/orchestrator.d.ts +46 -0
  8. package/dist/agents/orchestrator.js +192 -0
  9. package/dist/agents/team.d.ts +51 -0
  10. package/dist/agents/team.js +210 -0
  11. package/dist/api/models.d.ts +23 -0
  12. package/dist/api/models.js +514 -0
  13. package/dist/api/ollama.d.ts +153 -0
  14. package/dist/api/ollama.js +751 -0
  15. package/dist/api/openrouter.d.ts +55 -0
  16. package/dist/api/openrouter.js +223 -0
  17. package/dist/commands/commands.d.ts +43 -0
  18. package/dist/commands/commands.js +308 -0
  19. package/dist/config/config.d.ts +8 -0
  20. package/dist/config/config.js +311 -0
  21. package/dist/context/compaction.d.ts +54 -0
  22. package/dist/context/compaction.js +251 -0
  23. package/dist/context/custom-agents.d.ts +107 -0
  24. package/dist/context/custom-agents.js +397 -0
  25. package/dist/context/custom-tools.d.ts +120 -0
  26. package/dist/context/custom-tools.js +564 -0
  27. package/dist/context/git-checkpoint.d.ts +52 -0
  28. package/dist/context/git-checkpoint.js +240 -0
  29. package/dist/context/neuro-md.d.ts +48 -0
  30. package/dist/context/neuro-md.js +202 -0
  31. package/dist/context/neuroignore.d.ts +102 -0
  32. package/dist/context/neuroignore.js +441 -0
  33. package/dist/context/repo-map.d.ts +38 -0
  34. package/dist/context/repo-map.js +220 -0
  35. package/dist/context/skill-standard.d.ts +262 -0
  36. package/dist/context/skill-standard.js +1156 -0
  37. package/dist/context/skill-system.d.ts +75 -0
  38. package/dist/context/skill-system.js +578 -0
  39. package/dist/context/tree-sitter.d.ts +99 -0
  40. package/dist/context/tree-sitter.js +1956 -0
  41. package/dist/core/acp.d.ts +325 -0
  42. package/dist/core/acp.js +1498 -0
  43. package/dist/core/api-server.d.ts +143 -0
  44. package/dist/core/api-server.js +550 -0
  45. package/dist/core/approval.d.ts +81 -0
  46. package/dist/core/approval.js +432 -0
  47. package/dist/core/auto-compact.d.ts +127 -0
  48. package/dist/core/auto-compact.js +436 -0
  49. package/dist/core/auto-mode.d.ts +232 -0
  50. package/dist/core/auto-mode.js +831 -0
  51. package/dist/core/background-session.d.ts +166 -0
  52. package/dist/core/background-session.js +696 -0
  53. package/dist/core/cicd.d.ts +257 -0
  54. package/dist/core/cicd.js +1443 -0
  55. package/dist/core/cloud-sync.d.ts +156 -0
  56. package/dist/core/cloud-sync.js +582 -0
  57. package/dist/core/code-review.d.ts +132 -0
  58. package/dist/core/code-review.js +1191 -0
  59. package/dist/core/completion.d.ts +49 -0
  60. package/dist/core/completion.js +384 -0
  61. package/dist/core/context.d.ts +38 -0
  62. package/dist/core/context.js +144 -0
  63. package/dist/core/diff-preview.d.ts +35 -0
  64. package/dist/core/diff-preview.js +173 -0
  65. package/dist/core/doom-loop.d.ts +51 -0
  66. package/dist/core/doom-loop.js +179 -0
  67. package/dist/core/engine.d.ts +183 -0
  68. package/dist/core/engine.js +942 -0
  69. package/dist/core/extended-thinking.d.ts +103 -0
  70. package/dist/core/extended-thinking.js +269 -0
  71. package/dist/core/fallback.d.ts +54 -0
  72. package/dist/core/fallback.js +104 -0
  73. package/dist/core/git-worktree.d.ts +139 -0
  74. package/dist/core/git-worktree.js +614 -0
  75. package/dist/core/headless.d.ts +30 -0
  76. package/dist/core/headless.js +101 -0
  77. package/dist/core/i18n.d.ts +83 -0
  78. package/dist/core/i18n.js +739 -0
  79. package/dist/core/linting.d.ts +129 -0
  80. package/dist/core/linting.js +699 -0
  81. package/dist/core/model-router.d.ts +109 -0
  82. package/dist/core/model-router.js +581 -0
  83. package/dist/core/multi-model.d.ts +243 -0
  84. package/dist/core/multi-model.js +1099 -0
  85. package/dist/core/multi-session.d.ts +144 -0
  86. package/dist/core/multi-session.js +442 -0
  87. package/dist/core/multimodal.d.ts +125 -0
  88. package/dist/core/multimodal.js +286 -0
  89. package/dist/core/observability.d.ts +93 -0
  90. package/dist/core/observability.js +737 -0
  91. package/dist/core/os-sandbox.d.ts +122 -0
  92. package/dist/core/os-sandbox.js +1193 -0
  93. package/dist/core/outcome-grading.d.ts +228 -0
  94. package/dist/core/outcome-grading.js +1123 -0
  95. package/dist/core/output-styles.d.ts +57 -0
  96. package/dist/core/output-styles.js +382 -0
  97. package/dist/core/parallel-agents.d.ts +183 -0
  98. package/dist/core/parallel-agents.js +563 -0
  99. package/dist/core/plugin-bundle.d.ts +236 -0
  100. package/dist/core/plugin-bundle.js +887 -0
  101. package/dist/core/plugin-sdk.d.ts +139 -0
  102. package/dist/core/plugin-sdk.js +273 -0
  103. package/dist/core/prompt-cache.d.ts +163 -0
  104. package/dist/core/prompt-cache.js +599 -0
  105. package/dist/core/sandbox.d.ts +127 -0
  106. package/dist/core/sandbox.js +369 -0
  107. package/dist/core/scheduled-tasks.d.ts +151 -0
  108. package/dist/core/scheduled-tasks.js +502 -0
  109. package/dist/core/security-scanner.d.ts +160 -0
  110. package/dist/core/security-scanner.js +1494 -0
  111. package/dist/core/session.d.ts +83 -0
  112. package/dist/core/session.js +269 -0
  113. package/dist/core/shell-completion.d.ts +51 -0
  114. package/dist/core/shell-completion.js +674 -0
  115. package/dist/core/smart-monitor.d.ts +146 -0
  116. package/dist/core/smart-monitor.js +1199 -0
  117. package/dist/core/spec-driven.d.ts +233 -0
  118. package/dist/core/spec-driven.js +1485 -0
  119. package/dist/core/spending-warnings.d.ts +123 -0
  120. package/dist/core/spending-warnings.js +456 -0
  121. package/dist/core/sub-agent.d.ts +298 -0
  122. package/dist/core/sub-agent.js +1023 -0
  123. package/dist/core/telemetry.d.ts +157 -0
  124. package/dist/core/telemetry.js +412 -0
  125. package/dist/core/terminal-ux.d.ts +134 -0
  126. package/dist/core/terminal-ux.js +649 -0
  127. package/dist/core/testing.d.ts +146 -0
  128. package/dist/core/testing.js +1200 -0
  129. package/dist/core/types.d.ts +439 -0
  130. package/dist/core/types.js +6 -0
  131. package/dist/core/undo-redo.d.ts +112 -0
  132. package/dist/core/undo-redo.js +290 -0
  133. package/dist/core/updater.d.ts +159 -0
  134. package/dist/core/updater.js +608 -0
  135. package/dist/core/vim-mode.d.ts +151 -0
  136. package/dist/core/vim-mode.js +771 -0
  137. package/dist/core/voice.d.ts +137 -0
  138. package/dist/core/voice.js +538 -0
  139. package/dist/core/web-dashboard.d.ts +109 -0
  140. package/dist/core/web-dashboard.js +484 -0
  141. package/dist/hooks/hooks.d.ts +74 -0
  142. package/dist/hooks/hooks.js +160 -0
  143. package/dist/hooks/llm-evaluator.d.ts +165 -0
  144. package/dist/hooks/llm-evaluator.js +560 -0
  145. package/dist/index.d.ts +3 -0
  146. package/dist/index.js +1186 -0
  147. package/dist/lsp/lsp-manager.d.ts +63 -0
  148. package/dist/lsp/lsp-manager.js +351 -0
  149. package/dist/mcp/client.d.ts +133 -0
  150. package/dist/mcp/client.js +684 -0
  151. package/dist/mcp/mcp-apps.d.ts +70 -0
  152. package/dist/mcp/mcp-apps.js +1007 -0
  153. package/dist/tools/bash.d.ts +5 -0
  154. package/dist/tools/bash.js +195 -0
  155. package/dist/tools/browser.d.ts +92 -0
  156. package/dist/tools/browser.js +1570 -0
  157. package/dist/tools/extended.d.ts +6 -0
  158. package/dist/tools/extended.js +191 -0
  159. package/dist/tools/file.d.ts +10 -0
  160. package/dist/tools/file.js +382 -0
  161. package/dist/tools/github.d.ts +389 -0
  162. package/dist/tools/github.js +759 -0
  163. package/dist/tools/index.d.ts +9 -0
  164. package/dist/tools/index.js +40 -0
  165. package/dist/tools/memory.d.ts +6 -0
  166. package/dist/tools/memory.js +197 -0
  167. package/dist/tools/registry.d.ts +29 -0
  168. package/dist/tools/registry.js +64 -0
  169. package/dist/tools/web.d.ts +6 -0
  170. package/dist/tools/web.js +150 -0
  171. package/dist/ui/renderer.d.ts +97 -0
  172. package/dist/ui/renderer.js +279 -0
  173. package/dist/ui/theme.d.ts +27 -0
  174. package/dist/ui/theme.js +106 -0
  175. package/package.json +83 -0
@@ -0,0 +1,228 @@
1
+ /** A single criterion within a rubric. */
2
+ export interface RubricCriterion {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ weight: number;
7
+ type: 'boolean' | 'scale' | 'descriptive';
8
+ passingScore: number;
9
+ }
10
+ /** A structured rubric defining success criteria for an outcome. */
11
+ export interface Rubric {
12
+ id: string;
13
+ name: string;
14
+ description: string;
15
+ criteria: RubricCriterion[];
16
+ passingThreshold: number;
17
+ maxRevisions: number;
18
+ evaluatorModel: string;
19
+ }
20
+ /** Result for a single criterion evaluation. */
21
+ export interface CriterionResult {
22
+ criterionId: string;
23
+ score: number;
24
+ passed: boolean;
25
+ feedback: string;
26
+ evidence: string;
27
+ }
28
+ /** Full grading result for a rubric evaluation. */
29
+ export interface GradingResult {
30
+ rubricId: string;
31
+ overallScore: number;
32
+ passed: boolean;
33
+ criteriaResults: CriterionResult[];
34
+ feedback: string;
35
+ revisionNeeded: boolean;
36
+ revisionSuggestions: string[];
37
+ evaluatorModel: string;
38
+ tokensUsed: number;
39
+ }
40
+ /** Result of a revision loop that iterates grading + revision. */
41
+ export interface RevisionLoopResult {
42
+ finalOutput: string;
43
+ finalGrade: GradingResult;
44
+ totalRevisions: number;
45
+ revisionHistory: RevisionEntry[];
46
+ passed: boolean;
47
+ }
48
+ /** Single revision step within the loop. */
49
+ export interface RevisionEntry {
50
+ revisionNumber: number;
51
+ output: string;
52
+ grade: GradingResult;
53
+ timestamp: number;
54
+ }
55
+ /** Configuration for the OutcomeGrader. */
56
+ export interface GradingConfig {
57
+ /** Default model used for isolated evaluation when rubric doesn't specify one */
58
+ defaultEvaluatorModel: string;
59
+ /** Maximum revisions allowed globally (rubric maxRevisions takes precedence) */
60
+ globalMaxRevisions: number;
61
+ /** Directory where rubric JSON files are stored */
62
+ rubricsDir: string;
63
+ /** Whether to persist grading history to disk */
64
+ persistHistory: boolean;
65
+ /** Directory for persisted grading history */
66
+ historyDir: string;
67
+ /** Temperature for evaluator LLM calls */
68
+ evaluatorTemperature: number;
69
+ /** Timeout in ms for evaluator API calls */
70
+ evaluatorTimeoutMs: number;
71
+ }
72
+ /** Minimal shape of an agent that can be driven in a revision loop. */
73
+ interface RevisionableAgent {
74
+ run(prompt: string): Promise<{
75
+ output: string;
76
+ tokensUsed: number;
77
+ }>;
78
+ }
79
+ export declare class OutcomeGrader {
80
+ private rubrics;
81
+ private gradingHistory;
82
+ private apiClient;
83
+ private config;
84
+ constructor(apiClient?: any, config?: Partial<GradingConfig>);
85
+ /**
86
+ * Register a rubric definition. Overwrites any existing rubric with the same id.
87
+ */
88
+ defineRubric(rubric: Rubric): void;
89
+ /**
90
+ * Return all registered rubrics.
91
+ */
92
+ listRubrics(): Rubric[];
93
+ /**
94
+ * Get a single rubric by id, or undefined if not found.
95
+ */
96
+ getRubric(rubricId: string): Rubric | undefined;
97
+ /**
98
+ * Remove a rubric by id. Returns true if the rubric existed and was removed.
99
+ */
100
+ removeRubric(rubricId: string): boolean;
101
+ /**
102
+ * Load rubric definitions from JSON files in a directory.
103
+ * Each .json file should contain a single Rubric object or an array of Rubric objects.
104
+ */
105
+ loadRubrics(dir: string): Promise<void>;
106
+ /**
107
+ * Save a rubric to disk as JSON.
108
+ */
109
+ saveRubric(rubric: Rubric, dir?: string): Promise<void>;
110
+ /**
111
+ * Grade an output string against a rubric.
112
+ * Uses the isolated evaluator (separate LLM call) so that grading
113
+ * is decoupled from agent reasoning context.
114
+ *
115
+ * If no API client is available, performs heuristic-based grading.
116
+ */
117
+ grade(output: string, rubricId: string, context?: string): Promise<GradingResult>;
118
+ /**
119
+ * Grade an agent's output and loop revisions until the rubric is satisfied
120
+ * or the maximum number of revisions is reached.
121
+ *
122
+ * The agent receives grading feedback + revision suggestions after each
123
+ * unsuccessful attempt and is asked to revise.
124
+ */
125
+ gradeWithRevision(agent: RevisionableAgent, prompt: string, rubricId: string): Promise<RevisionLoopResult>;
126
+ /**
127
+ * Return all grading results from this session.
128
+ */
129
+ getGradingHistory(): GradingResult[];
130
+ /**
131
+ * Clear all grading history from memory.
132
+ */
133
+ clearHistory(): void;
134
+ /**
135
+ * Return grading results filtered by rubric id.
136
+ */
137
+ getGradingHistoryByRubric(rubricId: string): GradingResult[];
138
+ /**
139
+ * Return the most recent grading result, or undefined if none exists.
140
+ */
141
+ getLatestGrading(): GradingResult | undefined;
142
+ /**
143
+ * Create a composite rubric that combines multiple criteria from
144
+ * existing rubrics with custom weights.
145
+ *
146
+ * @param id - Unique id for the composite rubric
147
+ * @param name - Human-readable name
148
+ * @param criteria - Array of { rubricId, criterionId, weight } tuples
149
+ * @param passingThreshold - Overall passing threshold (0-100)
150
+ * @param maxRevisions - Maximum revision attempts
151
+ * @param evaluatorModel - Model to use for evaluation
152
+ */
153
+ createCompositeRubric(id: string, name: string, criteria: Array<{
154
+ rubricId: string;
155
+ criterionId: string;
156
+ weight: number;
157
+ }>, passingThreshold: number, maxRevisions?: number, evaluatorModel?: string): Rubric;
158
+ /**
159
+ * Evaluate output against all criteria in a rubric using an isolated LLM call.
160
+ * The evaluator runs in a separate context window from the agent, ensuring
161
+ * objective assessment.
162
+ */
163
+ private evaluateWithLLM;
164
+ /**
165
+ * Parse the LLM's JSON evaluation response into structured CriterionResult objects.
166
+ * Handles malformed responses gracefully.
167
+ */
168
+ private parseEvaluationResponse;
169
+ /**
170
+ * Evaluate output using heuristic pattern matching when no LLM is available.
171
+ * Provides basic quality signals based on code/text analysis.
172
+ */
173
+ private evaluateWithHeuristics;
174
+ /**
175
+ * Apply heuristic scoring for a single criterion based on its type and name.
176
+ */
177
+ private evaluateCriterionHeuristic;
178
+ /**
179
+ * Build a prompt that asks the agent to revise its output based on grading feedback.
180
+ */
181
+ private buildRevisionPrompt;
182
+ /**
183
+ * Generate specific, actionable revision suggestions based on failed criteria.
184
+ */
185
+ private generateRevisionSuggestions;
186
+ /**
187
+ * Synthesize overall feedback from criterion results.
188
+ */
189
+ private synthesizeFeedback;
190
+ /**
191
+ * Validate that a rubric is well-formed.
192
+ * Throws descriptive errors for structural problems.
193
+ */
194
+ private validateRubric;
195
+ /**
196
+ * Count duplicate non-empty, non-trivial lines in the output.
197
+ */
198
+ private countDuplicateLines;
199
+ /**
200
+ * Estimate maximum nesting depth of code by counting brace/paren indent levels.
201
+ */
202
+ private maxNestingDepth;
203
+ /**
204
+ * Persist a grading result to disk for historical analysis.
205
+ */
206
+ private persistGradingResult;
207
+ }
208
+ /**
209
+ * Create a new OutcomeGrader with optional API client and configuration.
210
+ */
211
+ export declare function createOutcomeGrader(apiClient?: any, config?: Partial<GradingConfig>): OutcomeGrader;
212
+ /**
213
+ * Create a quick rubric with a simpler API.
214
+ * Useful for one-off grading tasks.
215
+ */
216
+ export declare function createQuickRubric(id: string, name: string, criteria: Array<{
217
+ name: string;
218
+ description: string;
219
+ type: 'boolean' | 'scale' | 'descriptive';
220
+ passingScore?: number;
221
+ }>, passingThreshold?: number, maxRevisions?: number, evaluatorModel?: string): Rubric;
222
+ /**
223
+ * Grade output against a rubric in a single call without
224
+ * managing an OutcomeGrader instance.
225
+ */
226
+ export declare function quickGrade(output: string, rubric: Rubric, apiClient?: any, config?: Partial<GradingConfig>): Promise<GradingResult>;
227
+ export {};
228
+ //# sourceMappingURL=outcome-grading.d.ts.map