joonecli 0.1.0 → 0.2.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 (184) hide show
  1. package/README.md +12 -12
  2. package/dist/__tests__/optimizations.test.js.map +1 -1
  3. package/dist/__tests__/promptBuilder.test.js +14 -20
  4. package/dist/__tests__/promptBuilder.test.js.map +1 -1
  5. package/dist/agents/agentRegistry.d.ts +37 -0
  6. package/dist/agents/agentRegistry.js +58 -0
  7. package/dist/agents/agentRegistry.js.map +1 -0
  8. package/dist/agents/agentSpec.d.ts +54 -0
  9. package/dist/agents/agentSpec.js +9 -0
  10. package/dist/agents/agentSpec.js.map +1 -0
  11. package/dist/agents/builtinAgents.d.ts +20 -0
  12. package/{src/agents/builtinAgents.ts → dist/agents/builtinAgents.js} +84 -101
  13. package/dist/agents/builtinAgents.js.map +1 -0
  14. package/dist/cli/config.d.ts +4 -0
  15. package/dist/cli/config.js.map +1 -1
  16. package/dist/cli/index.js +29 -2
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/postinstall.d.ts +2 -0
  19. package/dist/cli/postinstall.js +25 -0
  20. package/dist/cli/postinstall.js.map +1 -0
  21. package/dist/commands/builtinCommands.d.ts +21 -0
  22. package/dist/commands/builtinCommands.js +241 -0
  23. package/dist/commands/builtinCommands.js.map +1 -0
  24. package/dist/commands/commandRegistry.d.ts +92 -0
  25. package/dist/commands/commandRegistry.js +128 -0
  26. package/dist/commands/commandRegistry.js.map +1 -0
  27. package/dist/core/agentLoop.d.ts +7 -2
  28. package/dist/core/agentLoop.js +35 -13
  29. package/dist/core/agentLoop.js.map +1 -1
  30. package/dist/core/autoSave.d.ts +41 -0
  31. package/dist/core/autoSave.js +69 -0
  32. package/dist/core/autoSave.js.map +1 -0
  33. package/dist/core/compactor.d.ts +66 -0
  34. package/dist/core/compactor.js +170 -0
  35. package/dist/core/compactor.js.map +1 -0
  36. package/dist/core/contextGuard.d.ts +38 -0
  37. package/dist/core/contextGuard.js +122 -0
  38. package/dist/core/contextGuard.js.map +1 -0
  39. package/dist/core/events.d.ts +45 -0
  40. package/dist/core/events.js +8 -0
  41. package/dist/core/events.js.map +1 -0
  42. package/dist/core/promptBuilder.d.ts +16 -1
  43. package/dist/core/promptBuilder.js +27 -14
  44. package/dist/core/promptBuilder.js.map +1 -1
  45. package/dist/core/sessionResumer.js +3 -3
  46. package/dist/core/sessionResumer.js.map +1 -1
  47. package/dist/core/sessionStore.js +3 -2
  48. package/dist/core/sessionStore.js.map +1 -1
  49. package/dist/core/subAgent.d.ts +56 -0
  50. package/dist/core/subAgent.js +240 -0
  51. package/dist/core/subAgent.js.map +1 -0
  52. package/dist/core/tokenCounter.d.ts +8 -1
  53. package/dist/core/tokenCounter.js +28 -0
  54. package/dist/core/tokenCounter.js.map +1 -1
  55. package/dist/debug_google.d.ts +1 -0
  56. package/dist/debug_google.js +23 -0
  57. package/dist/debug_google.js.map +1 -0
  58. package/dist/middleware/permission.js +1 -0
  59. package/dist/middleware/permission.js.map +1 -1
  60. package/dist/test_google.d.ts +1 -0
  61. package/dist/test_google.js +32 -89
  62. package/dist/test_google.js.map +1 -0
  63. package/dist/tools/browser.js +4 -1
  64. package/dist/tools/browser.js.map +1 -1
  65. package/dist/tools/index.d.ts +2 -1
  66. package/dist/tools/index.js +11 -3
  67. package/dist/tools/index.js.map +1 -1
  68. package/dist/tools/installHostDeps.d.ts +2 -0
  69. package/dist/tools/installHostDeps.js +37 -0
  70. package/dist/tools/installHostDeps.js.map +1 -0
  71. package/dist/tools/router.js +3 -0
  72. package/dist/tools/router.js.map +1 -1
  73. package/dist/tools/spawnAgent.d.ts +19 -0
  74. package/dist/tools/spawnAgent.js +132 -0
  75. package/dist/tools/spawnAgent.js.map +1 -0
  76. package/dist/tracing/sessionTracer.d.ts +1 -0
  77. package/dist/tracing/sessionTracer.js +4 -1
  78. package/dist/tracing/sessionTracer.js.map +1 -1
  79. package/dist/ui/App.js +94 -6
  80. package/dist/ui/App.js.map +1 -1
  81. package/dist/ui/components/ActionLog.d.ts +7 -0
  82. package/dist/ui/components/ActionLog.js +63 -0
  83. package/dist/ui/components/ActionLog.js.map +1 -0
  84. package/dist/ui/components/FileBrowser.d.ts +2 -0
  85. package/dist/ui/components/FileBrowser.js +41 -0
  86. package/dist/ui/components/FileBrowser.js.map +1 -0
  87. package/package.json +5 -6
  88. package/AGENTS.md +0 -56
  89. package/Handover.md +0 -115
  90. package/PROGRESS.md +0 -160
  91. package/docs/01_insights_and_patterns.md +0 -27
  92. package/docs/02_edge_cases_and_mitigations.md +0 -143
  93. package/docs/03_initial_implementation_plan.md +0 -66
  94. package/docs/04_tech_stack_proposal.md +0 -20
  95. package/docs/05_prd.md +0 -87
  96. package/docs/06_user_stories.md +0 -72
  97. package/docs/07_system_architecture.md +0 -138
  98. package/docs/08_roadmap.md +0 -200
  99. package/e2b/Dockerfile +0 -26
  100. package/src/__tests__/bootstrap.test.ts +0 -111
  101. package/src/__tests__/config.test.ts +0 -97
  102. package/src/__tests__/m55.test.ts +0 -238
  103. package/src/__tests__/middleware.test.ts +0 -219
  104. package/src/__tests__/modelFactory.test.ts +0 -63
  105. package/src/__tests__/optimizations.test.ts +0 -201
  106. package/src/__tests__/promptBuilder.test.ts +0 -141
  107. package/src/__tests__/sandbox.test.ts +0 -102
  108. package/src/__tests__/security.test.ts +0 -122
  109. package/src/__tests__/streaming.test.ts +0 -82
  110. package/src/__tests__/toolRouter.test.ts +0 -52
  111. package/src/__tests__/tools.test.ts +0 -146
  112. package/src/__tests__/tracing.test.ts +0 -196
  113. package/src/agents/agentRegistry.ts +0 -69
  114. package/src/agents/agentSpec.ts +0 -67
  115. package/src/cli/config.ts +0 -124
  116. package/src/cli/index.ts +0 -730
  117. package/src/cli/modelFactory.ts +0 -174
  118. package/src/cli/providers.ts +0 -107
  119. package/src/commands/builtinCommands.ts +0 -293
  120. package/src/commands/commandRegistry.ts +0 -194
  121. package/src/core/agentLoop.d.ts.map +0 -1
  122. package/src/core/agentLoop.ts +0 -312
  123. package/src/core/autoSave.ts +0 -95
  124. package/src/core/compactor.ts +0 -252
  125. package/src/core/contextGuard.ts +0 -129
  126. package/src/core/errors.ts +0 -202
  127. package/src/core/promptBuilder.d.ts.map +0 -1
  128. package/src/core/promptBuilder.ts +0 -139
  129. package/src/core/reasoningRouter.ts +0 -121
  130. package/src/core/retry.ts +0 -75
  131. package/src/core/sessionResumer.ts +0 -90
  132. package/src/core/sessionStore.ts +0 -215
  133. package/src/core/subAgent.ts +0 -339
  134. package/src/core/tokenCounter.ts +0 -64
  135. package/src/evals/dataset.ts +0 -67
  136. package/src/evals/evaluator.ts +0 -81
  137. package/src/hitl/bridge.ts +0 -160
  138. package/src/middleware/commandSanitizer.ts +0 -60
  139. package/src/middleware/loopDetection.ts +0 -63
  140. package/src/middleware/permission.ts +0 -72
  141. package/src/middleware/pipeline.ts +0 -75
  142. package/src/middleware/preCompletion.ts +0 -94
  143. package/src/middleware/types.ts +0 -45
  144. package/src/sandbox/bootstrap.ts +0 -121
  145. package/src/sandbox/manager.ts +0 -239
  146. package/src/sandbox/sync.ts +0 -157
  147. package/src/skills/loader.ts +0 -143
  148. package/src/skills/tools.ts +0 -99
  149. package/src/skills/types.ts +0 -13
  150. package/src/test_cache.ts +0 -72
  151. package/src/test_google.js +0 -40
  152. package/src/test_google.ts +0 -40
  153. package/src/tools/askUser.ts +0 -47
  154. package/src/tools/browser.ts +0 -137
  155. package/src/tools/index.d.ts.map +0 -1
  156. package/src/tools/index.ts +0 -237
  157. package/src/tools/registry.ts +0 -198
  158. package/src/tools/router.ts +0 -78
  159. package/src/tools/security.ts +0 -220
  160. package/src/tools/spawnAgent.ts +0 -158
  161. package/src/tools/webSearch.ts +0 -142
  162. package/src/tracing/analyzer.ts +0 -265
  163. package/src/tracing/langsmith.ts +0 -63
  164. package/src/tracing/sessionTracer.ts +0 -202
  165. package/src/tracing/types.ts +0 -49
  166. package/src/types/valyu.d.ts +0 -37
  167. package/src/ui/App.tsx +0 -404
  168. package/src/ui/components/HITLPrompt.tsx +0 -119
  169. package/src/ui/components/Header.tsx +0 -51
  170. package/src/ui/components/MessageBubble.tsx +0 -46
  171. package/src/ui/components/StatusBar.tsx +0 -138
  172. package/src/ui/components/StreamingText.tsx +0 -48
  173. package/src/ui/components/ToolCallPanel.tsx +0 -80
  174. package/tests/commands/commands.test.ts +0 -356
  175. package/tests/core/compactor.test.ts +0 -217
  176. package/tests/core/retryAndErrors.test.ts +0 -164
  177. package/tests/core/sessionResumer.test.ts +0 -95
  178. package/tests/core/sessionStore.test.ts +0 -84
  179. package/tests/core/stability.test.ts +0 -165
  180. package/tests/core/subAgent.test.ts +0 -238
  181. package/tests/hitl/hitlBridge.test.ts +0 -115
  182. package/tsconfig.json +0 -16
  183. package/vitest.config.ts +0 -10
  184. package/vitest.out +0 -48
package/README.md CHANGED
@@ -26,36 +26,36 @@
26
26
 
27
27
  ## 🚀 Getting Started
28
28
 
29
- ### Installation
29
+ ## 🚀 Quickstart
30
30
 
31
- Install Joone globally via npm:
31
+ The fastest way to experience Joone is to run it on-demand without installing anything globally. This will automatically trigger the onboarding wizard and launch your first session seamlessly:
32
32
 
33
33
  ```bash
34
- npm install -g joone
34
+ npx joone@latest start
35
35
  ```
36
36
 
37
- ### Configuration
37
+ ### Global Installation (Alternative)
38
38
 
39
- Run the automated onboarding wizard to configure your preferred LLM provider, models, and API keys:
39
+ If you prefer to install Joone globally:
40
40
 
41
41
  ```bash
42
- joone config
42
+ npm install -g joone
43
43
  ```
44
44
 
45
- _This will prompt you for your LLM API Key and optionally your E2B Sandbox API key. Keys are securely stored in `~/.joone/config.json`._
45
+ Once installed, simply run `joone` in any directory. If it's your first time, the configuration wizard will open automatically.
46
46
 
47
- ### Start Joone
47
+ ### Configuration
48
48
 
49
- To start an autonomous session in your current project directory:
49
+ If you ever need to change your LLM provider, API keys, or models, run the configuration wizard:
50
50
 
51
51
  ```bash
52
- joone start
52
+ joone config
53
53
  ```
54
54
 
55
- Or, if you want to skip global installation altogether, run it on-demand:
55
+ To start an autonomous session in your current project directory:
56
56
 
57
57
  ```bash
58
- npx joone@latest start
58
+ joone start
59
59
  ```
60
60
 
61
61
  ### Uninstallation
@@ -1 +1 @@
1
- {"version":3,"file":"optimizations.test.js","sourceRoot":"","sources":["../../src/__tests__/optimizations.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optimizations.test.js","sourceRoot":"","sources":["../../src/__tests__/optimizations.test.ts"],"names":[],"mappings":"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"}
@@ -15,16 +15,14 @@ describe("CacheOptimizedPromptBuilder", () => {
15
15
  conversationHistory: [],
16
16
  };
17
17
  const messages = builder.buildPrompt(state);
18
- // Exactly 3 static messages when history is empty
19
- expect(messages).toHaveLength(3);
20
- // All 3 must be system-type messages
18
+ // exactly 1 static message when history is empty
19
+ expect(messages).toHaveLength(1);
20
+ // must be system-type message
21
21
  expect(messages[0]._getType()).toBe("system");
22
- expect(messages[1]._getType()).toBe("system");
23
- expect(messages[2]._getType()).toBe("system");
24
22
  // Order must be: global → project → session
25
23
  expect(messages[0].content).toContain("You are a coding assistant.");
26
- expect(messages[1].content).toContain("Use TypeScript.");
27
- expect(messages[2].content).toContain("OS: Windows");
24
+ expect(messages[0].content).toContain("Use TypeScript.");
25
+ expect(messages[0].content).toContain("OS: Windows");
28
26
  });
29
27
  // ─── Behavior 2: Conversation history appended AFTER the static prefix ───
30
28
  // Dynamic messages must never appear before the static prefix.
@@ -40,17 +38,15 @@ describe("CacheOptimizedPromptBuilder", () => {
40
38
  ],
41
39
  };
42
40
  const messages = builder.buildPrompt(state);
43
- // 3 static + 2 conversation = 5
44
- expect(messages).toHaveLength(5);
45
- // First 3 are system messages (static prefix)
41
+ // 1 static + 2 conversation = 3
42
+ expect(messages).toHaveLength(3);
43
+ // First is system messages (static prefix)
46
44
  expect(messages[0]._getType()).toBe("system");
47
- expect(messages[1]._getType()).toBe("system");
48
- expect(messages[2]._getType()).toBe("system");
49
45
  // Last 2 are conversation messages
50
- expect(messages[3]._getType()).toBe("human");
51
- expect(messages[4]._getType()).toBe("ai");
52
- expect(messages[3].content).toBe("Hello");
53
- expect(messages[4].content).toBe("Hi there!");
46
+ expect(messages[1]._getType()).toBe("human");
47
+ expect(messages[2]._getType()).toBe("ai");
48
+ expect(messages[1].content).toBe("Hello");
49
+ expect(messages[2].content).toBe("Hi there!");
54
50
  });
55
51
  // ─── Behavior 3: Static prefix is identical across calls ───
56
52
  // If we call buildPrompt twice with the same state (but more history),
@@ -68,10 +64,8 @@ describe("CacheOptimizedPromptBuilder", () => {
68
64
  state.conversationHistory.push(new HumanMessage("What is 2+2?"));
69
65
  state.conversationHistory.push(new AIMessage("4"));
70
66
  const secondCall = builder.buildPrompt(state);
71
- // Static prefix (first 3 messages) must be identical
67
+ // Static prefix (first message) must be identical
72
68
  expect(secondCall[0].content).toBe(firstCall[0].content);
73
- expect(secondCall[1].content).toBe(firstCall[1].content);
74
- expect(secondCall[2].content).toBe(firstCall[2].content);
75
69
  });
76
70
  // ─── Behavior 4: System reminder is injected as a HumanMessage ───
77
71
  it("injects a system reminder as a HumanMessage with <system-reminder> tags", () => {
@@ -99,7 +93,7 @@ describe("CacheOptimizedPromptBuilder", () => {
99
93
  const compacted = builder.compactHistory(longHistory, "Completed steps 1 and 2.");
100
94
  // Default keepLastN=6, history has 4 → summary + all 4 preserved
101
95
  expect(compacted).toHaveLength(5);
102
- expect(compacted[0]._getType()).toBe("system");
96
+ expect(compacted[0]._getType()).toBe("human");
103
97
  expect(compacted[0].content).toContain("Completed steps 1 and 2.");
104
98
  // Recent messages are preserved after the summary
105
99
  expect(compacted[1].content).toBe("Step 1");
@@ -1 +1 @@
1
- {"version":3,"file":"promptBuilder.test.js","sourceRoot":"","sources":["../../src/__tests__/promptBuilder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promptBuilder.test.js","sourceRoot":"","sources":["../../src/__tests__/promptBuilder.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Agent Registry
3
+ *
4
+ * Central registry for named sub-agents. The registry enables:
5
+ * - Decoupled agent development (add agents without touching the main loop)
6
+ * - Prompt injection (registry summary included in the main agent's system prompt)
7
+ * - Lookup by name for the spawn_agent tool
8
+ */
9
+ import { AgentSpec } from "./agentSpec.js";
10
+ export declare class AgentRegistry {
11
+ private agents;
12
+ /**
13
+ * Register a new agent spec. Overwrites if name already exists.
14
+ */
15
+ register(spec: AgentSpec): void;
16
+ /**
17
+ * Look up an agent by name.
18
+ */
19
+ get(name: string): AgentSpec | undefined;
20
+ /**
21
+ * Returns all registered agent specs.
22
+ */
23
+ getAll(): AgentSpec[];
24
+ /**
25
+ * Returns all registered agent names.
26
+ */
27
+ getNames(): string[];
28
+ /**
29
+ * Returns true if an agent with the given name exists.
30
+ */
31
+ has(name: string): boolean;
32
+ /**
33
+ * Generates a summary of all available agents, formatted for injection
34
+ * into the main agent's system prompt.
35
+ */
36
+ getSummary(): string;
37
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Agent Registry
3
+ *
4
+ * Central registry for named sub-agents. The registry enables:
5
+ * - Decoupled agent development (add agents without touching the main loop)
6
+ * - Prompt injection (registry summary included in the main agent's system prompt)
7
+ * - Lookup by name for the spawn_agent tool
8
+ */
9
+ export class AgentRegistry {
10
+ agents = new Map();
11
+ /**
12
+ * Register a new agent spec. Overwrites if name already exists.
13
+ */
14
+ register(spec) {
15
+ this.agents.set(spec.name, spec);
16
+ }
17
+ /**
18
+ * Look up an agent by name.
19
+ */
20
+ get(name) {
21
+ return this.agents.get(name);
22
+ }
23
+ /**
24
+ * Returns all registered agent specs.
25
+ */
26
+ getAll() {
27
+ return Array.from(this.agents.values());
28
+ }
29
+ /**
30
+ * Returns all registered agent names.
31
+ */
32
+ getNames() {
33
+ return Array.from(this.agents.keys());
34
+ }
35
+ /**
36
+ * Returns true if an agent with the given name exists.
37
+ */
38
+ has(name) {
39
+ return this.agents.has(name);
40
+ }
41
+ /**
42
+ * Generates a summary of all available agents, formatted for injection
43
+ * into the main agent's system prompt.
44
+ */
45
+ getSummary() {
46
+ if (this.agents.size === 0) {
47
+ return "No sub-agents are currently registered.";
48
+ }
49
+ const lines = ["Available sub-agents (use spawn_agent tool to invoke):\n"];
50
+ for (const spec of this.agents.values()) {
51
+ const tools = spec.tools ? ` [tools: ${spec.tools.join(", ")}]` : " [all tools]";
52
+ const turns = spec.maxTurns ?? 10;
53
+ lines.push(` • ${spec.name}: ${spec.description}${tools} (max ${turns} turns)`);
54
+ }
55
+ return lines.join("\n");
56
+ }
57
+ }
58
+ //# sourceMappingURL=agentRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRegistry.js","sourceRoot":"","sources":["../../src/agents/agentRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,OAAO,aAAa;IAChB,MAAM,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,IAAe;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,yCAAyC,CAAC;QACnD,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAE3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,GAAG,KAAK,SAAS,KAAK,SAAS,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Agent Specification
3
+ *
4
+ * Defines the shape of a sub-agent: its identity, capabilities, constraints,
5
+ * and tools. This enables decoupled agent development — new agents can be
6
+ * added to the registry without modifying the main agent or harness.
7
+ */
8
+ /**
9
+ * Describes a named sub-agent with a purpose-tuned configuration.
10
+ */
11
+ export interface AgentSpec {
12
+ /** Unique name (e.g., "script_runner", "code_reviewer"). */
13
+ name: string;
14
+ /** Human-readable description included in the main agent's prompt. */
15
+ description: string;
16
+ /** Dedicated system prompt for this sub-agent. */
17
+ systemPrompt: string;
18
+ /** Restrict to specific tool names. If omitted, all main-agent tools are available. */
19
+ tools?: string[];
20
+ /** Maximum turns before the sub-agent is forcibly stopped (doom-loop protection). Default: 10. */
21
+ maxTurns?: number;
22
+ /** Override model for this agent (default: FAST_MODEL_DEFAULTS from same provider). */
23
+ model?: string;
24
+ /** Permission behavior for this agent. */
25
+ permissionMode?: "auto" | "ask_all";
26
+ }
27
+ /**
28
+ * Structured result returned by a sub-agent after completing (or failing) a task.
29
+ * Only this result is injected into the main agent's history — the sub-agent's
30
+ * full conversation is discarded to save context.
31
+ */
32
+ export interface SubAgentResult {
33
+ /** The agent name from AgentSpec. */
34
+ agentName: string;
35
+ /** The original task description. */
36
+ taskDescription: string;
37
+ /** Outcome status. */
38
+ outcome: "success" | "failure" | "partial";
39
+ /** The final text output from the sub-agent. */
40
+ result: string;
41
+ /** Files created, modified, or deleted during the sub-task. */
42
+ filesModified: string[];
43
+ /** Total tool calls executed. */
44
+ toolCallCount: number;
45
+ /** Approximate token usage. */
46
+ tokenUsage: {
47
+ prompt: number;
48
+ completion: number;
49
+ };
50
+ /** Wall-clock duration in milliseconds. */
51
+ duration: number;
52
+ /** Number of turns the sub-agent ran. */
53
+ turnsUsed: number;
54
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Specification
3
+ *
4
+ * Defines the shape of a sub-agent: its identity, capabilities, constraints,
5
+ * and tools. This enables decoupled agent development — new agents can be
6
+ * added to the registry without modifying the main agent or harness.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=agentSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSpec.js","sourceRoot":"","sources":["../../src/agents/agentSpec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Built-in Agent Specs
3
+ *
4
+ * Pre-configured sub-agents for common coding tasks. Each agent has a
5
+ * purpose-tuned system prompt and restricted tool access. This enables
6
+ * decoupled agent development — new agents are added here without
7
+ * touching the main agent or harness.
8
+ */
9
+ import { AgentSpec } from "./agentSpec.js";
10
+ import { AgentRegistry } from "./agentRegistry.js";
11
+ export declare const ScriptRunnerAgent: AgentSpec;
12
+ export declare const CodeReviewerAgent: AgentSpec;
13
+ export declare const TestRunnerAgent: AgentSpec;
14
+ export declare const FileAnalystAgent: AgentSpec;
15
+ export declare const SecurityAuditorAgent: AgentSpec;
16
+ export declare const BrowserAgent: AgentSpec;
17
+ /**
18
+ * Creates an AgentRegistry pre-loaded with all built-in agents.
19
+ */
20
+ export declare function createDefaultAgentRegistry(): AgentRegistry;
@@ -1,21 +1,17 @@
1
- /**
2
- * Built-in Agent Specs
3
- *
4
- * Pre-configured sub-agents for common coding tasks. Each agent has a
5
- * purpose-tuned system prompt and restricted tool access. This enables
6
- * decoupled agent development — new agents are added here without
7
- * touching the main agent or harness.
8
- */
9
-
10
- import { AgentSpec } from "./agentSpec.js";
11
- import { AgentRegistry } from "./agentRegistry.js";
12
-
13
- // ─── Script Runner ──────────────────────────────────────────────────────────────
14
-
15
- export const ScriptRunnerAgent: AgentSpec = {
16
- name: "script_runner",
17
- description: "Execute and test scripts, return stdout/stderr and exit codes",
18
- systemPrompt: `You are a script execution agent. Your task is to run scripts and commands, capturing their output.
1
+ /**
2
+ * Built-in Agent Specs
3
+ *
4
+ * Pre-configured sub-agents for common coding tasks. Each agent has a
5
+ * purpose-tuned system prompt and restricted tool access. This enables
6
+ * decoupled agent development — new agents are added here without
7
+ * touching the main agent or harness.
8
+ */
9
+ import { AgentRegistry } from "./agentRegistry.js";
10
+ // ─── Script Runner ──────────────────────────────────────────────────────────────
11
+ export const ScriptRunnerAgent = {
12
+ name: "script_runner",
13
+ description: "Execute and test scripts, return stdout/stderr and exit codes",
14
+ systemPrompt: `You are a script execution agent. Your task is to run scripts and commands, capturing their output.
19
15
 
20
16
  Rules:
21
17
  - Run the commands/scripts as specified in the task
@@ -23,18 +19,16 @@ Rules:
23
19
  - Report the exit code
24
20
  - If the script fails, analyze the error and report the likely cause
25
21
  - Do NOT modify any files unless explicitly asked
26
- - Summarize the results clearly at the end`,
27
- tools: ["bash", "read_file"],
28
- maxTurns: 8,
29
- permissionMode: "auto",
30
- };
31
-
32
- // ─── Code Reviewer ──────────────────────────────────────────────────────────────
33
-
34
- export const CodeReviewerAgent: AgentSpec = {
35
- name: "code_reviewer",
36
- description: "Review code changes and suggest improvements",
37
- systemPrompt: `You are a code review agent. Your task is to analyze code files and provide quality feedback.
22
+ - Summarize the results clearly at the end`,
23
+ tools: ["bash", "read_file"],
24
+ maxTurns: 8,
25
+ permissionMode: "auto",
26
+ };
27
+ // ─── Code Reviewer ──────────────────────────────────────────────────────────────
28
+ export const CodeReviewerAgent = {
29
+ name: "code_reviewer",
30
+ description: "Review code changes and suggest improvements",
31
+ systemPrompt: `You are a code review agent. Your task is to analyze code files and provide quality feedback.
38
32
 
39
33
  Rules:
40
34
  - Read the specified files and analyze them
@@ -42,18 +36,16 @@ Rules:
42
36
  - Check style consistency and naming conventions
43
37
  - Provide specific, actionable suggestions with line numbers
44
38
  - Rate overall quality: 1-5 stars
45
- - Be constructive and specific — avoid vague feedback`,
46
- tools: ["read_file", "bash"],
47
- maxTurns: 6,
48
- permissionMode: "auto",
49
- };
50
-
51
- // ─── Test Runner ────────────────────────────────────────────────────────────────
52
-
53
- export const TestRunnerAgent: AgentSpec = {
54
- name: "test_runner",
55
- description: "Run test suites, diagnose failures, and suggest fixes",
56
- systemPrompt: `You are a test execution agent. Your task is to run tests and analyze the results.
39
+ - Be constructive and specific — avoid vague feedback`,
40
+ tools: ["read_file", "bash"],
41
+ maxTurns: 6,
42
+ permissionMode: "auto",
43
+ };
44
+ // ─── Test Runner ────────────────────────────────────────────────────────────────
45
+ export const TestRunnerAgent = {
46
+ name: "test_runner",
47
+ description: "Run test suites, diagnose failures, and suggest fixes",
48
+ systemPrompt: `You are a test execution agent. Your task is to run tests and analyze the results.
57
49
 
58
50
  Rules:
59
51
  - Execute the specified test command(s)
@@ -61,36 +53,32 @@ Rules:
61
53
  - For failures: read the relevant source files to diagnose the cause
62
54
  - Suggest specific fixes for failing tests
63
55
  - Report: total passes, failures, skips, and coverage if available
64
- - If asked to fix tests, you may write corrected test files`,
65
- tools: ["bash", "read_file", "write_file"],
66
- maxTurns: 10,
67
- permissionMode: "auto",
68
- };
69
-
70
- // ─── File Analyst ───────────────────────────────────────────────────────────────
71
-
72
- export const FileAnalystAgent: AgentSpec = {
73
- name: "file_analyst",
74
- description: "Analyze project structure, find patterns, count metrics",
75
- systemPrompt: `You are a file analysis agent. Your task is to analyze the project structure and report findings.
56
+ - If asked to fix tests, you may write corrected test files`,
57
+ tools: ["bash", "read_file", "write_file"],
58
+ maxTurns: 10,
59
+ permissionMode: "auto",
60
+ };
61
+ // ─── File Analyst ───────────────────────────────────────────────────────────────
62
+ export const FileAnalystAgent = {
63
+ name: "file_analyst",
64
+ description: "Analyze project structure, find patterns, count metrics",
65
+ systemPrompt: `You are a file analysis agent. Your task is to analyze the project structure and report findings.
76
66
 
77
67
  Rules:
78
68
  - Use bash commands (find, grep, wc, etc.) to analyze the project
79
69
  - Report: file counts by type, line counts, directory structure
80
70
  - Identify patterns: naming conventions, common imports, dependency usage
81
71
  - Highlight anything unusual or noteworthy
82
- - Present results in a clear, structured format`,
83
- tools: ["bash", "read_file"],
84
- maxTurns: 6,
85
- permissionMode: "auto",
86
- };
87
-
88
- // ─── Security Auditor ───────────────────────────────────────────────────────────
89
-
90
- export const SecurityAuditorAgent: AgentSpec = {
91
- name: "security_auditor",
92
- description: "Run security scans and report vulnerabilities",
93
- systemPrompt: `You are a security audit agent. Your task is to check for security issues in the codebase.
72
+ - Present results in a clear, structured format`,
73
+ tools: ["bash", "read_file"],
74
+ maxTurns: 6,
75
+ permissionMode: "auto",
76
+ };
77
+ // ─── Security Auditor ───────────────────────────────────────────────────────────
78
+ export const SecurityAuditorAgent = {
79
+ name: "security_auditor",
80
+ description: "Run security scans and report vulnerabilities",
81
+ systemPrompt: `You are a security audit agent. Your task is to check for security issues in the codebase.
94
82
 
95
83
  Rules:
96
84
  - Check for: hardcoded secrets, SQL injection, XSS, insecure dependencies
@@ -98,18 +86,16 @@ Rules:
98
86
  - Read configuration files for security misconfigurations
99
87
  - Rate severity: Critical, High, Medium, Low, Info
100
88
  - Provide remediation steps for each finding
101
- - Do NOT expose actual secret values in your report`,
102
- tools: ["bash", "read_file"],
103
- maxTurns: 8,
104
- permissionMode: "auto",
105
- };
106
-
107
- // ─── Browser Agent ──────────────────────────────────────────────────────────────
108
-
109
- export const BrowserAgent: AgentSpec = {
110
- name: "browser_agent",
111
- description: "Browse URLs, extract content, analyze web pages",
112
- systemPrompt: `You are a web browsing agent. Your task is to access URLs and extract information.
89
+ - Do NOT expose actual secret values in your report`,
90
+ tools: ["bash", "read_file"],
91
+ maxTurns: 8,
92
+ permissionMode: "auto",
93
+ };
94
+ // ─── Browser Agent ──────────────────────────────────────────────────────────────
95
+ export const BrowserAgent = {
96
+ name: "browser_agent",
97
+ description: "Browse URLs, extract content, analyze web pages",
98
+ systemPrompt: `You are a web browsing agent. Your task is to access URLs and extract information.
113
99
 
114
100
  Rules:
115
101
  - Navigate to the specified URL(s)
@@ -117,26 +103,23 @@ Rules:
117
103
  - Summarize the page content clearly
118
104
  - Report any errors (404, timeouts, etc.)
119
105
  - Do NOT submit forms or make purchases unless explicitly instructed
120
- - If the page requires authentication, report that you cannot access it`,
121
- tools: ["bash"],
122
- maxTurns: 6,
123
- permissionMode: "auto",
124
- };
125
-
126
- // ─── Registry Factory ───────────────────────────────────────────────────────────
127
-
128
- /**
129
- * Creates an AgentRegistry pre-loaded with all built-in agents.
130
- */
131
- export function createDefaultAgentRegistry(): AgentRegistry {
132
- const registry = new AgentRegistry();
133
-
134
- registry.register(ScriptRunnerAgent);
135
- registry.register(CodeReviewerAgent);
136
- registry.register(TestRunnerAgent);
137
- registry.register(FileAnalystAgent);
138
- registry.register(SecurityAuditorAgent);
139
- registry.register(BrowserAgent);
140
-
141
- return registry;
142
- }
106
+ - If the page requires authentication, report that you cannot access it`,
107
+ tools: ["bash"],
108
+ maxTurns: 6,
109
+ permissionMode: "auto",
110
+ };
111
+ // ─── Registry Factory ───────────────────────────────────────────────────────────
112
+ /**
113
+ * Creates an AgentRegistry pre-loaded with all built-in agents.
114
+ */
115
+ export function createDefaultAgentRegistry() {
116
+ const registry = new AgentRegistry();
117
+ registry.register(ScriptRunnerAgent);
118
+ registry.register(CodeReviewerAgent);
119
+ registry.register(TestRunnerAgent);
120
+ registry.register(FileAnalystAgent);
121
+ registry.register(SecurityAuditorAgent);
122
+ registry.register(BrowserAgent);
123
+ return registry;
124
+ }
125
+ //# sourceMappingURL=builtinAgents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinAgents.js","sourceRoot":"","sources":["../../src/agents/builtinAgents.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,mFAAmF;AAEnF,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,+DAA+D;IAC5E,YAAY,EAAE;;;;;;;;2CAQ2B;IACzC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC5B,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,8CAA8C;IAC3D,YAAY,EAAE;;;;;;;;sDAQsC;IACpD,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,MAAM,eAAe,GAAc;IACxC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,uDAAuD;IACpE,YAAY,EAAE;;;;;;;;4DAQ4C;IAC1D,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;IAC1C,QAAQ,EAAE,EAAE;IACZ,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,yDAAyD;IACtE,YAAY,EAAE;;;;;;;gDAOgC;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC5B,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,MAAM,oBAAoB,GAAc;IAC7C,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,+CAA+C;IAC5D,YAAY,EAAE;;;;;;;;oDAQoC;IAClD,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC5B,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,iDAAiD;IAC9D,YAAY,EAAE;;;;;;;;wEAQwD;IACtE,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,mFAAmF;AAEnF;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IAErC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -26,6 +26,10 @@ export interface JooneConfig {
26
26
  langsmithProject?: string;
27
27
  /** Tool permission mode: 'auto' (no prompts), 'ask_dangerous' (prompt for destructive tools), 'ask_all' (prompt for everything). */
28
28
  permissionMode?: "auto" | "ask_dangerous" | "ask_all";
29
+ /** Override model for context compaction (default: auto-selected fast model from same provider). */
30
+ compactModel?: string;
31
+ /** Override model for sub-agents (default: auto-selected fast model from same provider). */
32
+ subAgentModel?: string;
29
33
  }
30
34
  /**
31
35
  * Sensible defaults — Anthropic Claude as the default provider.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAgClC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAA2B;IAChD,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,kBAAkB;IAC5B,yCAAyC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,MAAmB,CAAC;IAExB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;YACvD,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,mBAAmB,CAAC,CAAC;YAClF,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAmB;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC5D,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK,EAAE,sCAAsC;KACpD,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAoClC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAA2B;IAChD,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,kBAAkB;IAC5B,yCAAyC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,MAAmB,CAAC;IAExB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;YACvD,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,mBAAmB,CAAC,CAAC;YAClF,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAmB;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC5D,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK,EAAE,sCAAsC;KACpD,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}