@theia/ai-ide 1.70.0-next.71 → 1.70.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 (54) hide show
  1. package/lib/browser/agent-mode-confirmation-service.d.ts +13 -0
  2. package/lib/browser/agent-mode-confirmation-service.d.ts.map +1 -0
  3. package/lib/browser/agent-mode-confirmation-service.js +73 -0
  4. package/lib/browser/agent-mode-confirmation-service.js.map +1 -0
  5. package/lib/browser/coder-agent.d.ts +3 -0
  6. package/lib/browser/coder-agent.d.ts.map +1 -1
  7. package/lib/browser/coder-agent.js +22 -2
  8. package/lib/browser/coder-agent.js.map +1 -1
  9. package/lib/browser/frontend-module.d.ts.map +1 -1
  10. package/lib/browser/frontend-module.js +3 -12
  11. package/lib/browser/frontend-module.js.map +1 -1
  12. package/lib/browser/task-background-summary-variable.d.ts.map +1 -1
  13. package/lib/browser/task-background-summary-variable.js +4 -8
  14. package/lib/browser/task-background-summary-variable.js.map +1 -1
  15. package/lib/common/ai-ide-preferences.d.ts +1 -0
  16. package/lib/common/ai-ide-preferences.d.ts.map +1 -1
  17. package/lib/common/ai-ide-preferences.js +10 -1
  18. package/lib/common/ai-ide-preferences.js.map +1 -1
  19. package/package.json +22 -22
  20. package/src/browser/agent-mode-confirmation-service.ts +88 -0
  21. package/src/browser/coder-agent.ts +22 -2
  22. package/src/browser/frontend-module.ts +6 -14
  23. package/src/browser/task-background-summary-variable.ts +4 -8
  24. package/src/common/ai-ide-preferences.ts +10 -1
  25. package/lib/browser/context-reviewer-agent.d.ts +0 -17
  26. package/lib/browser/context-reviewer-agent.d.ts.map +0 -1
  27. package/lib/browser/context-reviewer-agent.js +0 -45
  28. package/lib/browser/context-reviewer-agent.js.map +0 -1
  29. package/lib/browser/context-reviewer-prompt-template.d.ts +0 -4
  30. package/lib/browser/context-reviewer-prompt-template.d.ts.map +0 -1
  31. package/lib/browser/context-reviewer-prompt-template.js +0 -160
  32. package/lib/browser/context-reviewer-prompt-template.js.map +0 -1
  33. package/lib/browser/debug-capability-contribution.d.ts +0 -8
  34. package/lib/browser/debug-capability-contribution.d.ts.map +0 -1
  35. package/lib/browser/debug-capability-contribution.js +0 -97
  36. package/lib/browser/debug-capability-contribution.js.map +0 -1
  37. package/lib/browser/junior-agent.d.ts +0 -17
  38. package/lib/browser/junior-agent.d.ts.map +0 -1
  39. package/lib/browser/junior-agent.js +0 -45
  40. package/lib/browser/junior-agent.js.map +0 -1
  41. package/lib/browser/junior-plan-capability-contribution.d.ts +0 -8
  42. package/lib/browser/junior-plan-capability-contribution.d.ts.map +0 -1
  43. package/lib/browser/junior-plan-capability-contribution.js +0 -131
  44. package/lib/browser/junior-plan-capability-contribution.js.map +0 -1
  45. package/lib/browser/junior-prompt-template.d.ts +0 -4
  46. package/lib/browser/junior-prompt-template.d.ts.map +0 -1
  47. package/lib/browser/junior-prompt-template.js +0 -153
  48. package/lib/browser/junior-prompt-template.js.map +0 -1
  49. package/src/browser/context-reviewer-agent.ts +0 -40
  50. package/src/browser/context-reviewer-prompt-template.ts +0 -160
  51. package/src/browser/debug-capability-contribution.ts +0 -95
  52. package/src/browser/junior-agent.ts +0 -40
  53. package/src/browser/junior-plan-capability-contribution.ts +0 -129
  54. package/src/browser/junior-prompt-template.ts +0 -153
@@ -116,19 +116,20 @@ import { AddressGhReviewCommandContribution } from './address-pr-review-command-
116
116
  import { AppTesterCapabilityContribution } from './apptester-capability-contribution';
117
117
  import { GitHubCapabilityContribution } from './github-capability-contribution';
118
118
  import { ShellExecutionCapabilityContribution } from './shell-execution-capability-contribution';
119
- import { JuniorAgent } from './junior-agent';
119
+ import { AgentModeConfirmationService, AgentModeConfirmationServiceImpl } from './agent-mode-confirmation-service';
120
120
 
121
121
  import { ExploreAgent } from './explore-agent';
122
122
  import { CodeReviewerAgent } from './code-reviewer-agent';
123
- import { ContextReviewerAgent } from './context-reviewer-agent';
124
- import { DebugCapabilityContribution } from './debug-capability-contribution';
123
+
125
124
  import { CodeReviewCapabilityContribution } from './code-review-capability-contribution';
126
- import { JuniorPlanCapabilityContribution } from './junior-plan-capability-contribution';
127
125
 
128
126
  export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
129
127
  bind(PreferenceContribution).toConstantValue({ schema: aiIdePreferenceSchema });
130
128
  bind(PreferenceContribution).toConstantValue({ schema: WorkspacePreferencesSchema });
131
129
 
130
+ bind(AgentModeConfirmationServiceImpl).toSelf().inSingletonScope();
131
+ bind(AgentModeConfirmationService).toService(AgentModeConfirmationServiceImpl);
132
+
132
133
  bind(AIIdeActivationServiceImpl).toSelf().inSingletonScope();
133
134
  // rebinds the default implementation of '@theia/ai-core'
134
135
  rebind(AIActivationService).toService(AIIdeActivationServiceImpl);
@@ -173,10 +174,6 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
173
174
  bind(Agent).toService(CommandChatAgent);
174
175
  bind(ChatAgent).toService(CommandChatAgent);
175
176
 
176
- bind(JuniorAgent).toSelf().inSingletonScope();
177
- bind(Agent).toService(JuniorAgent);
178
- bind(ChatAgent).toService(JuniorAgent);
179
-
180
177
  bind(ExploreAgent).toSelf().inSingletonScope();
181
178
  bind(Agent).toService(ExploreAgent);
182
179
  bind(ChatAgent).toService(ExploreAgent);
@@ -185,10 +182,6 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
185
182
  bind(Agent).toService(CodeReviewerAgent);
186
183
  bind(ChatAgent).toService(CodeReviewerAgent);
187
184
 
188
- bind(ContextReviewerAgent).toSelf().inSingletonScope();
189
- bind(Agent).toService(ContextReviewerAgent);
190
- bind(ChatAgent).toService(ContextReviewerAgent);
191
-
192
185
  bind(ChatWelcomeMessageProvider).to(IdeChatWelcomeMessageProvider).inSingletonScope();
193
186
  bind(ChatWelcomeMessageProvider).to(ChatSessionsWelcomeMessageProvider).inSingletonScope();
194
187
  bindContributionProvider(bind, ChatSessionCardActionContribution);
@@ -348,7 +341,6 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
348
341
  bind(FrontendApplicationContribution).to(AppTesterCapabilityContribution);
349
342
  bind(FrontendApplicationContribution).to(GitHubCapabilityContribution);
350
343
  bind(FrontendApplicationContribution).to(ShellExecutionCapabilityContribution);
351
- bind(FrontendApplicationContribution).to(DebugCapabilityContribution);
344
+
352
345
  bind(FrontendApplicationContribution).to(CodeReviewCapabilityContribution);
353
- bind(FrontendApplicationContribution).to(JuniorPlanCapabilityContribution);
354
346
  });
@@ -58,15 +58,11 @@ export class TaskContextSummaryVariableContribution implements AIVariableContrib
58
58
  const allSummaryRequests = context.model.context.getVariables().filter(candidate => candidate.variable.id === TASK_CONTEXT_VARIABLE.id);
59
59
  if (!allSummaryRequests.length) { return { ...request, value: '' }; }
60
60
  const allSummaries = await Promise.all(allSummaryRequests.map(summaryRequest => resolveDependency(summaryRequest).then(resolved => resolved?.value)));
61
- const value = `# Current Task Context
61
+ const value = `# Current Plan
62
62
 
63
- The following task context defines the task you are expected to work on. It was explicitly provided by the user and represents your primary objective.
64
- This context is authoritative: follow it unless you identify issues (e.g., outdated assumptions, technical conflicts, or unclear steps).
65
- The task context may contain errors or outdated assumptions. You are expected to identify and report these, not blindly execute incorrect instructions.
66
- Note: This context is a snapshot from the start of the conversation and will not update during this run.
67
- When deviating from the plan:
68
- - Explain the deviation and your reasoning before proceeding
69
- - Summarize all deviations at the end of your response, and suggest updates to the task context if the plan needs revision
63
+ The user has provided the following plan as your primary objective. Trust it and implement it directly. Do not re-explore the workspace from scratch.
64
+ Only deviate if you find genuine issues (outdated assumptions, conflicts, unclear steps); if so, explain before proceeding and summarize deviations at the end.
65
+ Work through the plan step by step, maintaining a todo list. Complete each step fully before moving to the next.
70
66
 
71
67
  ---
72
68
 
@@ -20,7 +20,7 @@ import { nls, PreferenceSchema } from '@theia/core';
20
20
  // We reuse the context key for the preference name
21
21
  export const PREFERENCE_NAME_ENABLE_AI = 'ai-features.AiEnable.enableAI';
22
22
  export const PREFERENCE_NAME_ORCHESTRATOR_EXCLUSION_LIST = 'ai-features.orchestrator.excludedAgents';
23
-
23
+ export const PREFERENCE_NAME_AGENT_MODE_CONFIRMED = 'ai-features.agentMode.confirmed';
24
24
  export const aiIdePreferenceSchema: PreferenceSchema = {
25
25
  properties: {
26
26
  [PREFERENCE_NAME_ENABLE_AI]: {
@@ -48,6 +48,15 @@ export const aiIdePreferenceSchema: PreferenceSchema = {
48
48
  type: 'string'
49
49
  },
50
50
  default: ['ClaudeCode', 'Codex'],
51
+ },
52
+ [PREFERENCE_NAME_AGENT_MODE_CONFIRMED]: {
53
+ title: AI_CORE_PREFERENCES_TITLE,
54
+ markdownDescription: nls.localize('theia/ai/ide/agentMode/confirmed/mdDescription',
55
+ 'Whether the user has confirmed the agent mode warning. '
56
+ + 'Agent mode allows autonomous file modifications without further confirmation. '
57
+ + 'Set to `false` to see the confirmation again on the next agent mode request.'),
58
+ type: 'boolean',
59
+ default: false,
51
60
  }
52
61
  }
53
62
  };
@@ -1,17 +0,0 @@
1
- import { AbstractStreamParsingChatAgent } from '@theia/ai-chat/lib/common/chat-agents';
2
- import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
3
- export declare const ContextReviewerAgentId = "context-reviewer";
4
- export declare class ContextReviewerAgent extends AbstractStreamParsingChatAgent {
5
- name: string;
6
- id: string;
7
- languageModelRequirements: LanguageModelRequirement[];
8
- protected defaultLanguageModelPurpose: string;
9
- description: string;
10
- prompts: {
11
- id: string;
12
- defaultVariant: import("@theia/ai-core/lib/common").BasePromptFragment;
13
- variants: never[];
14
- }[];
15
- protected systemPromptId: string;
16
- }
17
- //# sourceMappingURL=context-reviewer-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-reviewer-agent.d.ts","sourceRoot":"","sources":["../../src/browser/context-reviewer-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,qBACa,oBAAqB,SAAQ,8BAA8B;IACpE,IAAI,SAAsB;IAC1B,EAAE,SAA0B;IAC5B,yBAAyB,EAAE,wBAAwB,EAAE,CAGlD;IACH,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAU;IAC9C,WAAW,SAE2F;IAEtG,OAAO;;;;QAA0G;IAC1H,UAAmB,cAAc,EAAE,MAAM,CAAqC;CACjF"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2026 EclipseSource GmbH.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.ContextReviewerAgent = exports.ContextReviewerAgentId = void 0;
19
- const tslib_1 = require("tslib");
20
- const chat_agents_1 = require("@theia/ai-chat/lib/common/chat-agents");
21
- const core_1 = require("@theia/core");
22
- const inversify_1 = require("@theia/core/shared/inversify");
23
- const context_reviewer_prompt_template_1 = require("./context-reviewer-prompt-template");
24
- exports.ContextReviewerAgentId = 'context-reviewer';
25
- let ContextReviewerAgent = class ContextReviewerAgent extends chat_agents_1.AbstractStreamParsingChatAgent {
26
- constructor() {
27
- super(...arguments);
28
- this.name = 'Context Reviewer';
29
- this.id = exports.ContextReviewerAgentId;
30
- this.languageModelRequirements = [{
31
- purpose: 'chat',
32
- identifier: 'default/code',
33
- }];
34
- this.defaultLanguageModelPurpose = 'chat';
35
- this.description = core_1.nls.localize('theia/ai/ide/contextReviewerAgent/description', 'A senior solution architect that reviews Task Context documents. \
36
- Determines if the implementing agent has enough information to implement the planned solution correctly.');
37
- this.prompts = [{ id: context_reviewer_prompt_template_1.CONTEXT_REVIEWER_SYSTEM_PROMPT_ID, defaultVariant: context_reviewer_prompt_template_1.contextReviewerSystemPrompt, variants: [] }];
38
- this.systemPromptId = context_reviewer_prompt_template_1.CONTEXT_REVIEWER_SYSTEM_PROMPT_ID;
39
- }
40
- };
41
- exports.ContextReviewerAgent = ContextReviewerAgent;
42
- exports.ContextReviewerAgent = ContextReviewerAgent = tslib_1.__decorate([
43
- (0, inversify_1.injectable)()
44
- ], ContextReviewerAgent);
45
- //# sourceMappingURL=context-reviewer-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-reviewer-agent.js","sourceRoot":"","sources":["../../src/browser/context-reviewer-agent.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,uEAAuF;AAEvF,sCAAkC;AAClC,4DAA0D;AAC1D,yFAAoH;AAEvG,QAAA,sBAAsB,GAAG,kBAAkB,CAAC;AAGlD,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,4CAA8B;IAAjE;;QACH,SAAI,GAAG,kBAAkB,CAAC;QAC1B,OAAE,GAAG,8BAAsB,CAAC;QAC5B,8BAAyB,GAA+B,CAAC;gBACrD,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,cAAc;aAC7B,CAAC,CAAC;QACO,gCAA2B,GAAW,MAAM,CAAC;QAC9C,gBAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EAC/E;iHACyG,CAAC,CAAC;QAEtG,YAAO,GAAG,CAAC,EAAE,EAAE,EAAE,oEAAiC,EAAE,cAAc,EAAE,8DAA2B,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvG,mBAAc,GAAW,oEAAiC,CAAC;IAClF,CAAC;CAAA,CAAA;AAdY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAchC"}
@@ -1,4 +0,0 @@
1
- import { BasePromptFragment } from '@theia/ai-core/lib/common';
2
- export declare const CONTEXT_REVIEWER_SYSTEM_PROMPT_ID = "context-reviewer-system";
3
- export declare const contextReviewerSystemPrompt: BasePromptFragment;
4
- //# sourceMappingURL=context-reviewer-prompt-template.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-reviewer-prompt-template.d.ts","sourceRoot":"","sources":["../../src/browser/context-reviewer-prompt-template.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAE3E,eAAO,MAAM,2BAA2B,EAAE,kBA2IzC,CAAC"}
@@ -1,160 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2026 EclipseSource GmbH.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.contextReviewerSystemPrompt = exports.CONTEXT_REVIEWER_SYSTEM_PROMPT_ID = void 0;
19
- exports.CONTEXT_REVIEWER_SYSTEM_PROMPT_ID = 'context-reviewer-system';
20
- exports.contextReviewerSystemPrompt = {
21
- id: exports.CONTEXT_REVIEWER_SYSTEM_PROMPT_ID,
22
- template: `# Role
23
-
24
- You are a **senior solution architect** reviewing Task Context documents.
25
-
26
- # What You're Reviewing
27
-
28
- A **Task Context** is a planning document that describes:
29
- - **Future work** to be implemented by a coding agent (a senior developer agent)
30
- - **Design intent** \u2014 not current system behavior
31
- - **A roadmap** for implementation \u2014 not a specification
32
-
33
- **Your job:** Determine if the implementing agent has enough information to implement the planned solution correctly.
34
-
35
- **Not your job:** Verify the document matches current code (it describes **changes** to that code).
36
-
37
- # Document Audience
38
-
39
- **The implementing agent** is a senior developer agent who:
40
- - Has full codebase access and can read any file
41
- - Understands the codebase architecture, patterns, and conventions
42
- - Can infer implementation details from design intent
43
- - Will ask clarifying questions if truly blocked
44
-
45
- **A good Task Context is:** A 1-2 page roadmap, not a specification — clear on **what** and **why**, flexible on **how**.
46
-
47
- # Inputs
48
-
49
- You receive:
50
- - **Task context path:** Path to the Task Context document
51
- - **Key implementation files:** 2-3 files for context on current state
52
- - **Brief description:** What the task modifies
53
-
54
- # Tools
55
-
56
- - ~{getTaskContext}
57
- - ~{getFileContent}
58
-
59
- # Review Criteria
60
-
61
- ## 🔴 High Severity — Must fix
62
-
63
- | Issue | Example |
64
- |-------|---------|
65
- | Broken design — won't work or breaks existing behavior | "Add global state" when architecture requires immutability |
66
- | Missing critical decision (state location, lifecycle owner, service layer) | "Update user data" without specifying data store |
67
- | Contradictions between sections | Scope says "no UI changes", steps include "Update UI component" |
68
- | Scope/Criteria mismatch | Scope: "Add button", Criteria: "Entire form works" |
69
- | Vague/unverifiable criteria | "Feature works correctly", "Good performance" |
70
- | Missing validation requirements (when code changes exist) | Criteria lack build/lint/test + diagnostics expectations |
71
- | Missing UI verification (when UI in scope) | Scope includes UI, no UI test steps |
72
- | Circular dependencies in steps | Step 2: "Use config from step 4" |
73
- | Unverified critical assumption with no fallback | "Assumes API supports X" (unverified, no Plan B) |
74
-
75
- ## 🟡 Medium Severity — Consider fixing
76
-
77
- | Issue | Example |
78
- |-------|---------|
79
- | Unnecessary complexity with obvious simpler alternative | Creating abstraction layer for one-time operation |
80
- | Misleading ambiguity causing wrong implementation | "Update the service" (which service? which method?) |
81
- | Implicit dependencies between ordered steps | Step 2 depends on step 1 output but not mentioned |
82
-
83
- ## Do NOT flag
84
-
85
- - Inferable details
86
- - Missing rationale
87
- - Unspecified edge cases
88
- - Wording/formatting
89
- - Doc vs. code differences (doc describes future state)
90
- - Standard patterns the implementing agent knows
91
- - Test patterns or boilerplate
92
-
93
- # Workflow
94
-
95
- **Scale depth to complexity:** 2-step bugfix → sanity check. Major feature → full review.
96
-
97
- **Step 0:** Read entire Task Context using ~{getTaskContext}. Understand full plan before evaluating.
98
-
99
- **Step 1:** Validate structure
100
- - Completion Criteria exist? No → 🔴 High
101
- - Criteria consistent with Scope? No → 🔴 High
102
-
103
- **Step 2:** Understand intent — What problem? What change? Why this approach?
104
-
105
- **Step 3:** Read relevant source files using ~{getFileContent} (files mentioned in plan + 2-3 key files that will be modified)
106
-
107
- **Step 4:** Evaluate feasibility — Will approach work? Anything critical missing?
108
-
109
- **Step 5:** Check step ordering — Does step N depend on step M that comes later? → 🔴 High
110
-
111
- **Step 6:** Test criteria verifiability — "Could I unambiguously verify this? Write a test?" No → 🔴 High
112
- - ❌ Vague: "Feature works correctly"
113
- - ✅ Clear: "Login button shows spinner during authentication"
114
-
115
- **Step 7:** Assess impact — Would senior dev be blocked? Yes → Flag. Just inconvenienced? → Don't flag.
116
-
117
- **Step 8:** Format findings — One-sentence fixes only. Don't rewrite sections.
118
-
119
- **Final Reflective Pass:**
120
- 1. "Would I confidently approve this as the architect?"
121
- 2. "What assumption, if wrong, invalidates the approach?"
122
- 3. "What could cause failure that's not on my checklist?"
123
- 4. "Will these steps satisfy every Completion Criterion?"
124
-
125
- Concrete concern → Add as issue. Vague unease → Let it go.
126
-
127
- # Output Format (MANDATORY)
128
-
129
- **Summary**
130
- [1-2 sentences: Ready for implementation? Bias toward approval if design is sound.]
131
-
132
- **Issues Found**
133
- [If none: "None — ready for implementation."]
134
- [If issues exist:]
135
-
136
- | # | Section | Severity | Issue | Current Doc Content | Suggested Fix |
137
- |---|---------|----------|-------|---------------------|---------------|
138
- | 1 | [section] | 🔴 High | [problem] | [quote or "not addressed"] | [one-sentence fix] |
139
-
140
- # Constraints
141
-
142
- - **Bias toward approval** — If design is sound and the implementing agent can proceed → approve
143
- - **Remember:** Document describes future work, not current state
144
- - **Do not:** Suggest alternative designs (unless fundamentally broken), request additional documentation, flag doc vs. code mismatches, suggest style improvements
145
- - **Maximum 3-5 issues** — blocking or near-blocking only
146
-
147
- # Review Checklist
148
-
149
- - ☐ Read entire Task Context before evaluating
150
- - ☐ Read relevant source files for current state
151
- - ☐ Verified Completion Criteria exist and are verifiable
152
- - ☐ Checked Scope matches Criteria
153
- - ☐ Evaluated step ordering
154
- - ☐ Assessed if design will work
155
- - ☐ Performed reflective pass
156
- - ☐ Limited to blocking issues (max 5)
157
- - ☐ One-sentence fixes only
158
- `
159
- };
160
- //# sourceMappingURL=context-reviewer-prompt-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-reviewer-prompt-template.js","sourceRoot":"","sources":["../../src/browser/context-reviewer-prompt-template.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAInE,QAAA,iCAAiC,GAAG,yBAAyB,CAAC;AAE9D,QAAA,2BAA2B,GAAuB;IAC3D,EAAE,EAAE,yCAAiC;IACrC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIb;CACA,CAAC"}
@@ -1,8 +0,0 @@
1
- import { FrontendApplicationContribution } from '@theia/core/lib/browser';
2
- import { PromptService } from '@theia/ai-core';
3
- export declare class DebugCapabilityContribution implements FrontendApplicationContribution {
4
- protected readonly promptService: PromptService;
5
- onStart(): void;
6
- protected buildTemplate(): string;
7
- }
8
- //# sourceMappingURL=debug-capability-contribution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-capability-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/debug-capability-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,qBACa,2BAA4B,YAAW,+BAA+B;IAG/E,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,OAAO,IAAI,IAAI;IAOf,SAAS,CAAC,aAAa,IAAI,MAAM;CA4DpC"}
@@ -1,97 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2026 EclipseSource GmbH.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.DebugCapabilityContribution = void 0;
19
- const tslib_1 = require("tslib");
20
- const inversify_1 = require("@theia/core/shared/inversify");
21
- const ai_core_1 = require("@theia/ai-core");
22
- const core_1 = require("@theia/core");
23
- let DebugCapabilityContribution = class DebugCapabilityContribution {
24
- onStart() {
25
- this.promptService.addBuiltInPromptFragment({
26
- id: 'debug',
27
- template: this.buildTemplate()
28
- });
29
- }
30
- buildTemplate() {
31
- const name = core_1.nls.localizeByDefault('Debug');
32
- const description = core_1.nls.localize('theia/ai-ide/debug/description', 'Logs workflow inconsistencies, unclear instructions, and unexpected behaviors to DEBUG.md for later analysis.');
33
- return `---
34
- name: ${name}
35
- description: ${description}
36
- ---
37
-
38
- ## Debug Mode
39
-
40
- **Debug Mode is ENABLED.** Document any inconsistencies, ambiguities, or unexpected behaviors encountered during this run.
41
-
42
- ### When to Log
43
-
44
- Record an entry when you encounter:
45
- - **Ambiguous instructions** \u2014 unclear requirements, conflicting guidance, missing information
46
- - **Unexpected agent behavior** \u2014 agents not following expected patterns, missing outputs, wrong formats
47
- - **Workflow friction** \u2014 steps that don't flow naturally, missing handoffs, unclear state transitions
48
- - **Tool failures** \u2014 repeated tool errors, unexpected responses, missing capabilities
49
- - **Edge cases** \u2014 situations not covered by the workflow, unclear how to proceed
50
-
51
- ### How to Log
52
-
53
- Use ~{writeFileContent} to append to \`DEBUG.md\` in the current working directory.
54
-
55
- Format each entry as:
56
-
57
- \`\`\`markdown
58
- ## [Timestamp or Session ID]
59
-
60
- **Category:** [Ambiguity | Agent Behavior | Workflow | Tool | Edge Case]
61
- **State:** [Current workflow state when issue occurred]
62
- **Context:** [Brief description of what you were trying to do]
63
-
64
- **Issue:**
65
- [Describe what was unclear, unexpected, or problematic]
66
-
67
- **What Happened:**
68
- [What actually occurred]
69
-
70
- **Expected:**
71
- [What you expected to happen, if applicable]
72
-
73
- **Workaround:**
74
- [How you proceeded despite the issue, if applicable]
75
-
76
- ---
77
- \`\`\`
78
-
79
- ### Rules
80
-
81
- - **MANDATORY:** Log issues immediately as they occur \u2014 do not wait until the end
82
- - **MANDATORY:** If an agent doesn't return expected output format, log it before working around it
83
- - Be specific and factual \u2014 avoid vague descriptions
84
- - Include enough context to reproduce or understand the issue later
85
- - Do NOT let logging interrupt the main workflow \u2014 log quickly and continue
86
- - Create \`DEBUG.md\` if it doesn't exist; append if it does`;
87
- }
88
- };
89
- exports.DebugCapabilityContribution = DebugCapabilityContribution;
90
- tslib_1.__decorate([
91
- (0, inversify_1.inject)(ai_core_1.PromptService),
92
- tslib_1.__metadata("design:type", Object)
93
- ], DebugCapabilityContribution.prototype, "promptService", void 0);
94
- exports.DebugCapabilityContribution = DebugCapabilityContribution = tslib_1.__decorate([
95
- (0, inversify_1.injectable)()
96
- ], DebugCapabilityContribution);
97
- //# sourceMappingURL=debug-capability-contribution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-capability-contribution.js","sourceRoot":"","sources":["../../src/browser/debug-capability-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;AAClE,4CAA+C;AAC/C,sCAAkC;AAG3B,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAKpC,OAAO;QACH,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC;YACxC,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;SACjC,CAAC,CAAC;IACP,CAAC;IAES,aAAa;QACnB,MAAM,IAAI,GAAG,UAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,gCAAgC,EAC7D,+GAA+G,CAAC,CAAC;QAErH,OAAO;QACP,IAAI;eACG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAmDmC,CAAC;IAC1D,CAAC;CACJ,CAAA;AAxEY,kEAA2B;AAGjB;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;;kEAC0B;sCAHvC,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CAwEvC"}
@@ -1,17 +0,0 @@
1
- import { AbstractStreamParsingChatAgent } from '@theia/ai-chat/lib/common/chat-agents';
2
- import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
3
- export declare const JuniorAgentId = "junior";
4
- export declare class JuniorAgent extends AbstractStreamParsingChatAgent {
5
- name: string;
6
- id: string;
7
- languageModelRequirements: LanguageModelRequirement[];
8
- protected defaultLanguageModelPurpose: string;
9
- description: string;
10
- prompts: {
11
- id: string;
12
- defaultVariant: import("@theia/ai-core/lib/common").BasePromptFragment;
13
- variants: never[];
14
- }[];
15
- protected systemPromptId: string;
16
- }
17
- //# sourceMappingURL=junior-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"junior-agent.d.ts","sourceRoot":"","sources":["../../src/browser/junior-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC,qBACa,WAAY,SAAQ,8BAA8B;IAC3D,IAAI,SAAY;IAChB,EAAE,SAAiB;IACnB,yBAAyB,EAAE,wBAAwB,EAAE,CAGlD;IACH,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAU;IAC9C,WAAW,SAE0F;IAErG,OAAO;;;;QAAuF;IACvG,UAAmB,cAAc,EAAE,MAAM,CAA2B;CACvE"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2026 EclipseSource GmbH.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.JuniorAgent = exports.JuniorAgentId = void 0;
19
- const tslib_1 = require("tslib");
20
- const chat_agents_1 = require("@theia/ai-chat/lib/common/chat-agents");
21
- const core_1 = require("@theia/core");
22
- const inversify_1 = require("@theia/core/shared/inversify");
23
- const junior_prompt_template_1 = require("./junior-prompt-template");
24
- exports.JuniorAgentId = 'junior';
25
- let JuniorAgent = class JuniorAgent extends chat_agents_1.AbstractStreamParsingChatAgent {
26
- constructor() {
27
- super(...arguments);
28
- this.name = 'Junior';
29
- this.id = exports.JuniorAgentId;
30
- this.languageModelRequirements = [{
31
- purpose: 'chat',
32
- identifier: 'default/code',
33
- }];
34
- this.defaultLanguageModelPurpose = 'chat';
35
- this.description = core_1.nls.localize('theia/ai/ide/juniorAgent/description', 'A senior software architect and task coordinator that analyzes requirements, \
36
- delegates implementation work to specialized agents, and coordinates the software development workflow.');
37
- this.prompts = [{ id: junior_prompt_template_1.JUNIOR_SYSTEM_PROMPT_ID, defaultVariant: junior_prompt_template_1.juniorSystemPrompt, variants: [] }];
38
- this.systemPromptId = junior_prompt_template_1.JUNIOR_SYSTEM_PROMPT_ID;
39
- }
40
- };
41
- exports.JuniorAgent = JuniorAgent;
42
- exports.JuniorAgent = JuniorAgent = tslib_1.__decorate([
43
- (0, inversify_1.injectable)()
44
- ], JuniorAgent);
45
- //# sourceMappingURL=junior-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"junior-agent.js","sourceRoot":"","sources":["../../src/browser/junior-agent.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,uEAAuF;AAEvF,sCAAkC;AAClC,4DAA0D;AAC1D,qEAAuF;AAE1E,QAAA,aAAa,GAAG,QAAQ,CAAC;AAG/B,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,4CAA8B;IAAxD;;QACH,SAAI,GAAG,QAAQ,CAAC;QAChB,OAAE,GAAG,qBAAa,CAAC;QACnB,8BAAyB,GAA+B,CAAC;gBACrD,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,cAAc;aAC7B,CAAC,CAAC;QACO,gCAA2B,GAAW,MAAM,CAAC;QAC9C,gBAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,sCAAsC,EACtE;gHACwG,CAAC,CAAC;QAErG,YAAO,GAAG,CAAC,EAAE,EAAE,EAAE,gDAAuB,EAAE,cAAc,EAAE,2CAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,mBAAc,GAAW,gDAAuB,CAAC;IACxE,CAAC;CAAA,CAAA;AAdY,kCAAW;sBAAX,WAAW;IADvB,IAAA,sBAAU,GAAE;GACA,WAAW,CAcvB"}
@@ -1,8 +0,0 @@
1
- import { FrontendApplicationContribution } from '@theia/core/lib/browser';
2
- import { PromptService } from '@theia/ai-core';
3
- export declare class JuniorPlanCapabilityContribution implements FrontendApplicationContribution {
4
- protected readonly promptService: PromptService;
5
- onStart(): void;
6
- protected buildTemplate(): string;
7
- }
8
- //# sourceMappingURL=junior-plan-capability-contribution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"junior-plan-capability-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/junior-plan-capability-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,qBACa,gCAAiC,YAAW,+BAA+B;IAGpF,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,OAAO,IAAI,IAAI;IAOf,SAAS,CAAC,aAAa,IAAI,MAAM;CA4FpC"}