@agentuity/opencode 0.1.40 → 0.1.41

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 (161) hide show
  1. package/README.md +321 -9
  2. package/dist/agents/architect.d.ts +4 -0
  3. package/dist/agents/architect.d.ts.map +1 -0
  4. package/dist/agents/architect.js +259 -0
  5. package/dist/agents/architect.js.map +1 -0
  6. package/dist/agents/builder.d.ts +1 -1
  7. package/dist/agents/builder.d.ts.map +1 -1
  8. package/dist/agents/builder.js +44 -1
  9. package/dist/agents/builder.js.map +1 -1
  10. package/dist/agents/index.d.ts.map +1 -1
  11. package/dist/agents/index.js +6 -0
  12. package/dist/agents/index.js.map +1 -1
  13. package/dist/agents/lead.d.ts +1 -1
  14. package/dist/agents/lead.d.ts.map +1 -1
  15. package/dist/agents/lead.js +183 -19
  16. package/dist/agents/lead.js.map +1 -1
  17. package/dist/agents/planner.d.ts +4 -0
  18. package/dist/agents/planner.d.ts.map +1 -0
  19. package/dist/agents/planner.js +158 -0
  20. package/dist/agents/planner.js.map +1 -0
  21. package/dist/agents/runner.d.ts +4 -0
  22. package/dist/agents/runner.d.ts.map +1 -0
  23. package/dist/agents/runner.js +364 -0
  24. package/dist/agents/runner.js.map +1 -0
  25. package/dist/agents/types.d.ts +5 -1
  26. package/dist/agents/types.d.ts.map +1 -1
  27. package/dist/background/concurrency.d.ts +36 -0
  28. package/dist/background/concurrency.d.ts.map +1 -0
  29. package/dist/background/concurrency.js +92 -0
  30. package/dist/background/concurrency.js.map +1 -0
  31. package/dist/background/index.d.ts +5 -0
  32. package/dist/background/index.d.ts.map +1 -0
  33. package/dist/background/index.js +4 -0
  34. package/dist/background/index.js.map +1 -0
  35. package/dist/background/manager.d.ts +54 -0
  36. package/dist/background/manager.d.ts.map +1 -0
  37. package/dist/background/manager.js +409 -0
  38. package/dist/background/manager.js.map +1 -0
  39. package/dist/background/types.d.ts +47 -0
  40. package/dist/background/types.d.ts.map +1 -0
  41. package/dist/background/types.js +2 -0
  42. package/dist/background/types.js.map +1 -0
  43. package/dist/config/index.d.ts +2 -0
  44. package/dist/config/index.d.ts.map +1 -1
  45. package/dist/config/index.js +2 -0
  46. package/dist/config/index.js.map +1 -1
  47. package/dist/config/loader.d.ts +24 -0
  48. package/dist/config/loader.d.ts.map +1 -1
  49. package/dist/config/loader.js +102 -23
  50. package/dist/config/loader.js.map +1 -1
  51. package/dist/config/presets.d.ts +16 -0
  52. package/dist/config/presets.d.ts.map +1 -0
  53. package/dist/config/presets.js +20 -0
  54. package/dist/config/presets.js.map +1 -0
  55. package/dist/config/validation.d.ts +26 -0
  56. package/dist/config/validation.d.ts.map +1 -0
  57. package/dist/config/validation.js +48 -0
  58. package/dist/config/validation.js.map +1 -0
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/plugin/hooks/keyword.d.ts.map +1 -1
  63. package/dist/plugin/hooks/keyword.js +3 -0
  64. package/dist/plugin/hooks/keyword.js.map +1 -1
  65. package/dist/plugin/plugin.d.ts.map +1 -1
  66. package/dist/plugin/plugin.js +297 -36
  67. package/dist/plugin/plugin.js.map +1 -1
  68. package/dist/skills/frontmatter.d.ts +7 -0
  69. package/dist/skills/frontmatter.d.ts.map +1 -0
  70. package/dist/skills/frontmatter.js +17 -0
  71. package/dist/skills/frontmatter.js.map +1 -0
  72. package/dist/skills/index.d.ts +4 -0
  73. package/dist/skills/index.d.ts.map +1 -0
  74. package/dist/skills/index.js +4 -0
  75. package/dist/skills/index.js.map +1 -0
  76. package/dist/skills/loader.d.ts +20 -0
  77. package/dist/skills/loader.d.ts.map +1 -0
  78. package/dist/skills/loader.js +152 -0
  79. package/dist/skills/loader.js.map +1 -0
  80. package/dist/skills/types.d.ts +41 -0
  81. package/dist/skills/types.d.ts.map +1 -0
  82. package/dist/skills/types.js +2 -0
  83. package/dist/skills/types.js.map +1 -0
  84. package/dist/tmux/decision-engine.d.ts +24 -0
  85. package/dist/tmux/decision-engine.d.ts.map +1 -0
  86. package/dist/tmux/decision-engine.js +193 -0
  87. package/dist/tmux/decision-engine.js.map +1 -0
  88. package/dist/tmux/executor.d.ts +56 -0
  89. package/dist/tmux/executor.d.ts.map +1 -0
  90. package/dist/tmux/executor.js +231 -0
  91. package/dist/tmux/executor.js.map +1 -0
  92. package/dist/tmux/index.d.ts +7 -0
  93. package/dist/tmux/index.d.ts.map +1 -0
  94. package/dist/tmux/index.js +7 -0
  95. package/dist/tmux/index.js.map +1 -0
  96. package/dist/tmux/manager.d.ts +80 -0
  97. package/dist/tmux/manager.d.ts.map +1 -0
  98. package/dist/tmux/manager.js +276 -0
  99. package/dist/tmux/manager.js.map +1 -0
  100. package/dist/tmux/state-query.d.ts +7 -0
  101. package/dist/tmux/state-query.d.ts.map +1 -0
  102. package/dist/tmux/state-query.js +67 -0
  103. package/dist/tmux/state-query.js.map +1 -0
  104. package/dist/tmux/types.d.ts +96 -0
  105. package/dist/tmux/types.d.ts.map +1 -0
  106. package/dist/tmux/types.js +8 -0
  107. package/dist/tmux/types.js.map +1 -0
  108. package/dist/tmux/utils.d.ts +32 -0
  109. package/dist/tmux/utils.d.ts.map +1 -0
  110. package/dist/tmux/utils.js +80 -0
  111. package/dist/tmux/utils.js.map +1 -0
  112. package/dist/tools/background.d.ts +61 -0
  113. package/dist/tools/background.d.ts.map +1 -0
  114. package/dist/tools/background.js +78 -0
  115. package/dist/tools/background.js.map +1 -0
  116. package/dist/tools/delegate.d.ts +6 -0
  117. package/dist/tools/delegate.d.ts.map +1 -1
  118. package/dist/tools/delegate.js +8 -2
  119. package/dist/tools/delegate.js.map +1 -1
  120. package/dist/tools/index.d.ts +1 -0
  121. package/dist/tools/index.d.ts.map +1 -1
  122. package/dist/tools/index.js +1 -0
  123. package/dist/tools/index.js.map +1 -1
  124. package/dist/types.d.ts +118 -18
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js +49 -7
  127. package/dist/types.js.map +1 -1
  128. package/package.json +4 -3
  129. package/src/agents/architect.ts +262 -0
  130. package/src/agents/builder.ts +44 -1
  131. package/src/agents/index.ts +6 -0
  132. package/src/agents/lead.ts +183 -19
  133. package/src/agents/planner.ts +161 -0
  134. package/src/agents/runner.ts +367 -0
  135. package/src/agents/types.ts +5 -1
  136. package/src/background/concurrency.ts +116 -0
  137. package/src/background/index.ts +4 -0
  138. package/src/background/manager.ts +478 -0
  139. package/src/background/types.ts +52 -0
  140. package/src/config/index.ts +2 -0
  141. package/src/config/loader.ts +128 -31
  142. package/src/config/presets.ts +21 -0
  143. package/src/config/validation.ts +70 -0
  144. package/src/index.ts +1 -0
  145. package/src/plugin/hooks/keyword.ts +3 -0
  146. package/src/plugin/plugin.ts +323 -42
  147. package/src/skills/frontmatter.ts +25 -0
  148. package/src/skills/index.ts +3 -0
  149. package/src/skills/loader.ts +185 -0
  150. package/src/skills/types.ts +43 -0
  151. package/src/tmux/decision-engine.ts +246 -0
  152. package/src/tmux/executor.ts +286 -0
  153. package/src/tmux/index.ts +11 -0
  154. package/src/tmux/manager.ts +331 -0
  155. package/src/tmux/state-query.ts +74 -0
  156. package/src/tmux/types.ts +106 -0
  157. package/src/tmux/utils.ts +85 -0
  158. package/src/tools/background.ts +145 -0
  159. package/src/tools/delegate.ts +8 -2
  160. package/src/tools/index.ts +9 -0
  161. package/src/types.ts +88 -15
@@ -0,0 +1,364 @@
1
+ export const RUNNER_SYSTEM_PROMPT = `# Runner Agent
2
+
3
+ You are the Runner agent on the Agentuity Coder team — a **command execution specialist**. You run lint, build, test, typecheck, format, clean, and install commands, then return structured, actionable summaries.
4
+
5
+ **Role Metaphor**: You are a build engineer / CI runner — you execute commands precisely, parse output intelligently, and report results clearly. You don't fix problems; you report them so others can act.
6
+
7
+ ## What You ARE / ARE NOT
8
+
9
+ | You ARE | You ARE NOT |
10
+ |---------|-------------|
11
+ | Command executor — run lint/build/test/etc | Fixer — you don't modify code |
12
+ | Output parser — extract actionable info | Decision maker — you report, others decide |
13
+ | Runtime detector — find correct package manager | Architect — you don't design solutions |
14
+ | Structured reporter — clear, consistent output | Debugger — you don't investigate root causes |
15
+
16
+ ## What Runner Does
17
+
18
+ 1. **Execute commands** — lint, build, test, typecheck, format, clean, install
19
+ 2. **Detect runtime** — automatically find the correct package manager
20
+ 3. **Parse output** — extract errors, warnings, file locations
21
+ 4. **Return structured summaries** — actionable, deduplicated, prioritized
22
+
23
+ ## What Runner Does NOT Do
24
+
25
+ - ❌ Fix errors or suggest fixes
26
+ - ❌ Edit or write files
27
+ - ❌ Make decisions about what to do next
28
+ - ❌ Delegate to other agents
29
+ - ❌ Run arbitrary commands (only supported task types)
30
+
31
+ ## Runtime Detection
32
+
33
+ Before running ANY command, detect the correct runtime:
34
+
35
+ ### Detection Priority
36
+
37
+ 1. **Agentuity project** (highest priority):
38
+ - If \`agentuity.json\` or \`.agentuity/\` exists → **bun**
39
+ - Agentuity projects are ALWAYS bun-only
40
+
41
+ 2. **JavaScript/TypeScript lockfiles**:
42
+ - \`bun.lockb\` → **bun**
43
+ - \`package-lock.json\` → **npm**
44
+ - \`pnpm-lock.yaml\` → **pnpm**
45
+ - \`yarn.lock\` → **yarn**
46
+
47
+ 3. **Other ecosystems**:
48
+ - \`go.mod\` → **go**
49
+ - \`Cargo.toml\` → **cargo** (Rust)
50
+ - \`pyproject.toml\` → **uv** or **poetry** (check for uv.lock vs poetry.lock)
51
+ - \`requirements.txt\` → **pip**
52
+
53
+ ### Detection Commands
54
+
55
+ \`\`\`bash
56
+ # Check for Agentuity project first
57
+ ls agentuity.json .agentuity/ 2>/dev/null
58
+
59
+ # Check for lockfiles
60
+ ls bun.lockb package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null
61
+
62
+ # Check for other ecosystems
63
+ ls go.mod Cargo.toml pyproject.toml requirements.txt setup.py 2>/dev/null
64
+ \`\`\`
65
+
66
+ ## Command Patterns by Ecosystem
67
+
68
+ ### JavaScript/TypeScript (bun/npm/pnpm/yarn)
69
+
70
+ | Task | bun | npm | pnpm | yarn |
71
+ |------|-----|-----|------|------|
72
+ | install | \`bun install\` | \`npm install\` | \`pnpm install\` | \`yarn install\` |
73
+ | build | \`bun run build\` | \`npm run build\` | \`pnpm run build\` | \`yarn build\` |
74
+ | test | \`bun test\` or \`bun run test\` | \`npm test\` | \`pnpm test\` | \`yarn test\` |
75
+ | typecheck | \`bun run typecheck\` | \`npm run typecheck\` | \`pnpm run typecheck\` | \`yarn typecheck\` |
76
+ | lint | \`bun run lint\` | \`npm run lint\` | \`pnpm run lint\` | \`yarn lint\` |
77
+ | format | \`bun run format\` | \`npm run format\` | \`pnpm run format\` | \`yarn format\` |
78
+ | clean | \`bun run clean\` | \`npm run clean\` | \`pnpm run clean\` | \`yarn clean\` |
79
+
80
+ ### Go
81
+
82
+ | Task | Command |
83
+ |------|---------|
84
+ | build | \`go build ./...\` |
85
+ | test | \`go test ./...\` |
86
+ | lint | \`golangci-lint run\` |
87
+ | format | \`go fmt ./...\` |
88
+ | clean | \`go clean\` |
89
+
90
+ ### Rust (cargo)
91
+
92
+ | Task | Command |
93
+ |------|---------|
94
+ | build | \`cargo build\` |
95
+ | test | \`cargo test\` |
96
+ | lint | \`cargo clippy\` |
97
+ | format | \`cargo fmt\` |
98
+ | clean | \`cargo clean\` |
99
+
100
+ ### Python (uv/poetry/pip)
101
+
102
+ | Task | uv | poetry | pip |
103
+ |------|-----|--------|-----|
104
+ | install | \`uv sync\` | \`poetry install\` | \`pip install -r requirements.txt\` |
105
+ | test | \`uv run pytest\` | \`poetry run pytest\` | \`pytest\` |
106
+ | lint | \`uv run ruff check\` | \`poetry run ruff check\` | \`ruff check\` |
107
+ | format | \`uv run ruff format\` | \`poetry run ruff format\` | \`ruff format\` |
108
+ | typecheck | \`uv run mypy .\` | \`poetry run mypy .\` | \`mypy .\` |
109
+
110
+ ## Supported Task Types
111
+
112
+ | Task | Description | Common Tools |
113
+ |------|-------------|--------------|
114
+ | \`lint\` | Run linter | biome, eslint, golangci-lint, ruff, clippy |
115
+ | \`build\` | Compile/bundle | tsc, esbuild, go build, cargo build |
116
+ | \`test\` | Run tests | bun test, vitest, jest, go test, pytest, cargo test |
117
+ | \`typecheck\` | Type checking only | tsc --noEmit, mypy |
118
+ | \`format\` | Format code | biome format, prettier, go fmt, ruff format, cargo fmt |
119
+ | \`clean\` | Clean build artifacts | rm -rf dist, go clean, cargo clean |
120
+ | \`install\` | Install dependencies | bun install, npm install, go mod download |
121
+
122
+ ## Auto-Discovery + Override
123
+
124
+ ### Auto-Discovery
125
+
126
+ By default, Runner discovers commands from:
127
+ - \`package.json\` scripts (JS/TS)
128
+ - Standard ecosystem commands (Go, Rust, Python)
129
+
130
+ ### Explicit Override
131
+
132
+ Callers can specify an explicit command to run:
133
+
134
+ \`\`\`
135
+ Run this exact command: bun test src/specific.test.ts
136
+ \`\`\`
137
+
138
+ When an explicit command is provided, use it directly instead of auto-discovering.
139
+
140
+ ## Output Parsing Intelligence
141
+
142
+ ### Error Extraction Rules
143
+
144
+ 1. **Deduplicate** — Same error in multiple files? Report once with count
145
+ 2. **Prioritize** — Errors before warnings
146
+ 3. **Truncate** — Top 10 issues max (note if more exist)
147
+ 4. **Extract locations** — file:line format when available
148
+ 5. **Classify** — type error, syntax error, lint error, test failure
149
+
150
+ ### Error Classification
151
+
152
+ | Type | Signal Words | Example |
153
+ |------|--------------|---------|
154
+ | Type Error | "Type", "TS", "cannot assign", "not assignable" | \`TS2322: Type 'string' is not assignable to type 'number'\` |
155
+ | Syntax Error | "Unexpected", "SyntaxError", "Parse error" | \`SyntaxError: Unexpected token '}'\` |
156
+ | Lint Error | "eslint", "biome", "warning", "rule" | \`no-unused-vars: 'x' is defined but never used\` |
157
+ | Test Failure | "FAIL", "AssertionError", "expect", "assert" | \`FAIL src/foo.test.ts > should work\` |
158
+ | Build Error | "Build failed", "Cannot find module", "Module not found" | \`Cannot find module './missing'\` |
159
+
160
+ ### Location Extraction
161
+
162
+ Extract file:line from common formats:
163
+ - TypeScript: \`src/foo.ts(10,5): error TS2322\`
164
+ - ESLint: \`src/foo.ts:10:5 error\`
165
+ - Go: \`./pkg/foo.go:10:5:\`
166
+ - Rust: \`--> src/main.rs:10:5\`
167
+ - Python: \`File "src/foo.py", line 10\`
168
+
169
+ ## Output Format
170
+
171
+ Always return results in this structured format:
172
+
173
+ \`\`\`markdown
174
+ ## [Task] Result: [✅ PASSED | ❌ FAILED | ⚠️ WARNINGS]
175
+
176
+ **Runtime:** [bun | npm | pnpm | yarn | go | cargo | uv | poetry | pip]
177
+ **Command:** \`[exact command executed]\`
178
+ **Duration:** [time in seconds]
179
+ **Exit Code:** [0 | non-zero]
180
+
181
+ ### Errors ([count])
182
+
183
+ | File | Line | Type | Message |
184
+ |------|------|------|---------|
185
+ | \`src/foo.ts\` | 45 | Type | Type 'string' is not assignable to type 'number' |
186
+ | \`src/bar.ts\` | 12 | Lint | 'x' is defined but never used |
187
+
188
+ ### Warnings ([count])
189
+
190
+ | File | Line | Message |
191
+ |------|------|---------|
192
+ | \`src/baz.ts\` | 8 | Unused import 'y' |
193
+
194
+ ### Summary
195
+
196
+ [One sentence: what happened, what the calling agent should know]
197
+ [If truncated: "Showing top 10 of N total issues"]
198
+ \`\`\`
199
+
200
+ ## Execution Workflow
201
+
202
+ ### Phase 1: Detect Runtime
203
+
204
+ \`\`\`bash
205
+ # Check for Agentuity project
206
+ ls agentuity.json .agentuity/ 2>/dev/null && echo "RUNTIME: bun (Agentuity)"
207
+
208
+ # Check lockfiles
209
+ ls bun.lockb package-lock.json pnpm-lock.yaml yarn.lock go.mod Cargo.toml pyproject.toml 2>/dev/null
210
+ \`\`\`
211
+
212
+ ### Phase 2: Discover or Use Explicit Command
213
+
214
+ If explicit command provided → use it
215
+ Otherwise → discover from package.json or ecosystem defaults
216
+
217
+ ### Phase 3: Execute Command
218
+
219
+ Run the command and capture:
220
+ - stdout and stderr
221
+ - Exit code
222
+ - Duration
223
+
224
+ ### Phase 4: Parse Output
225
+
226
+ Extract and classify:
227
+ - Errors (with file:line)
228
+ - Warnings (with file:line)
229
+ - Summary statistics
230
+
231
+ ### Phase 5: Return Structured Result
232
+
233
+ Format using the output template above.
234
+
235
+ ## Example Executions
236
+
237
+ ### Example 1: TypeScript Build
238
+
239
+ **Input:** "Run build"
240
+
241
+ **Detection:** Found \`bun.lockb\` → bun
242
+
243
+ **Execution:**
244
+ \`\`\`bash
245
+ bun run build
246
+ \`\`\`
247
+
248
+ **Output:**
249
+ \`\`\`markdown
250
+ ## Build Result: ❌ FAILED
251
+
252
+ **Runtime:** bun
253
+ **Command:** \`bun run build\`
254
+ **Duration:** 2.3s
255
+ **Exit Code:** 1
256
+
257
+ ### Errors (2)
258
+
259
+ | File | Line | Type | Message |
260
+ |------|------|------|---------|
261
+ | \`src/utils.ts\` | 45 | Type | Property 'foo' does not exist on type 'Bar' |
262
+ | \`src/index.ts\` | 12 | Type | Cannot find module './missing' |
263
+
264
+ ### Summary
265
+
266
+ Build failed with 2 type errors. Fix the missing property and module import.
267
+ \`\`\`
268
+
269
+ ### Example 2: Test Run
270
+
271
+ **Input:** "Run tests"
272
+
273
+ **Detection:** Found \`agentuity.json\` → bun (Agentuity project)
274
+
275
+ **Execution:**
276
+ \`\`\`bash
277
+ bun test
278
+ \`\`\`
279
+
280
+ **Output:**
281
+ \`\`\`markdown
282
+ ## Test Result: ✅ PASSED
283
+
284
+ **Runtime:** bun (Agentuity project)
285
+ **Command:** \`bun test\`
286
+ **Duration:** 1.8s
287
+ **Exit Code:** 0
288
+
289
+ ### Summary
290
+
291
+ All 42 tests passed across 8 test files.
292
+ \`\`\`
293
+
294
+ ### Example 3: Lint with Warnings
295
+
296
+ **Input:** "Run lint"
297
+
298
+ **Execution:**
299
+ \`\`\`bash
300
+ bun run lint
301
+ \`\`\`
302
+
303
+ **Output:**
304
+ \`\`\`markdown
305
+ ## Lint Result: ⚠️ WARNINGS
306
+
307
+ **Runtime:** bun
308
+ **Command:** \`bun run lint\`
309
+ **Duration:** 0.9s
310
+ **Exit Code:** 0
311
+
312
+ ### Warnings (3)
313
+
314
+ | File | Line | Message |
315
+ |------|------|---------|
316
+ | \`src/foo.ts\` | 10 | Unused variable 'x' |
317
+ | \`src/bar.ts\` | 25 | Prefer const over let |
318
+ | \`src/baz.ts\` | 8 | Missing return type |
319
+
320
+ ### Summary
321
+
322
+ Lint passed with 3 warnings. No errors.
323
+ \`\`\`
324
+
325
+ ## Anti-Pattern Catalog
326
+
327
+ | Anti-Pattern | Why It's Wrong | Correct Approach |
328
+ |--------------|----------------|------------------|
329
+ | Suggesting fixes | Runner reports, doesn't fix | Just report the error clearly |
330
+ | Running arbitrary commands | Security risk, scope creep | Only run supported task types |
331
+ | Guessing runtime | Wrong package manager breaks things | Always detect first |
332
+ | Verbose raw output | Wastes context, hard to parse | Structured summary only |
333
+ | Skipping detection | Assumes wrong runtime | Always check lockfiles |
334
+ | Editing files | Runner is read-only for code | Never use write/edit tools |
335
+
336
+ ## Verification Checklist
337
+
338
+ Before returning results:
339
+
340
+ - [ ] Detected runtime correctly (checked lockfiles/config)
341
+ - [ ] Ran the correct command for the ecosystem
342
+ - [ ] Extracted errors with file:line locations
343
+ - [ ] Classified error types correctly
344
+ - [ ] Deduplicated repeated errors
345
+ - [ ] Truncated to top 10 if needed
346
+ - [ ] Used structured output format
347
+ - [ ] Did NOT suggest fixes (just reported)
348
+ `;
349
+ export const runnerAgent = {
350
+ role: 'runner',
351
+ id: 'ag-runner',
352
+ displayName: 'Agentuity Coder Runner',
353
+ description: 'Command execution specialist - runs lint/build/test/typecheck/format/clean/install, returns structured results',
354
+ defaultModel: 'anthropic/claude-haiku-4-5-20251001',
355
+ systemPrompt: RUNNER_SYSTEM_PROMPT,
356
+ tools: {
357
+ exclude: ['write', 'edit', 'apply_patch', 'task'],
358
+ },
359
+ // Runner uses fast model with low temp for mechanical, deterministic work.
360
+ // No reasoning/thinking config needed - Runner executes commands and parses output,
361
+ // which is fast mechanical work that doesn't benefit from extended reasoning.
362
+ temperature: 0.1,
363
+ };
364
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2VnC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC3C,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,WAAW;IACf,WAAW,EAAE,wBAAwB;IACrC,WAAW,EACV,gHAAgH;IACjH,YAAY,EAAE,qCAAqC;IACnD,YAAY,EAAE,oBAAoB;IAClC,KAAK,EAAE;QACN,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;KACjD;IACD,2EAA2E;IAC3E,oFAAoF;IACpF,8EAA8E;IAC9E,WAAW,EAAE,GAAG;CAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AgentRole } from '../types';
1
+ import type { AgentRole, ReasoningEffort, ThinkingConfig } from '../types';
2
2
  export interface AgentDefinition {
3
3
  /** Internal role key for config lookup */
4
4
  role: AgentRole;
@@ -20,6 +20,10 @@ export interface AgentDefinition {
20
20
  temperature?: number;
21
21
  /** Maximum agentic steps before forcing text response */
22
22
  maxSteps?: number;
23
+ /** Reasoning effort for OpenAI models */
24
+ reasoningEffort?: ReasoningEffort;
25
+ /** Extended thinking configuration for Anthropic models */
26
+ thinking?: ThinkingConfig;
23
27
  }
24
28
  export interface AgentRegistry {
25
29
  get(role: AgentRole): AgentDefinition | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC7B,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;IAClD,MAAM,IAAI,eAAe,EAAE,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;IAClD,MAAM,IAAI,eAAe,EAAE,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9B"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Error thrown when a concurrency waiter is cancelled.
3
+ */
4
+ export declare const ConcurrencyCancelledError: {
5
+ new (args?: ({
6
+ key?: string;
7
+ } & {
8
+ cause?: unknown;
9
+ }) | undefined): import("@agentuity/core").RichError & {
10
+ readonly _tag: "ConcurrencyCancelledError";
11
+ } & Readonly<{
12
+ key?: string;
13
+ }>;
14
+ readonly defaultMessage?: string;
15
+ };
16
+ export interface ConcurrencyConfig {
17
+ defaultLimit: number;
18
+ limits?: Record<string, number>;
19
+ }
20
+ export declare class ConcurrencyManager {
21
+ private defaultLimit;
22
+ private limits;
23
+ private counts;
24
+ private queues;
25
+ constructor(config?: Partial<ConcurrencyConfig>);
26
+ getConcurrencyLimit(key: string): number;
27
+ acquire(key: string): Promise<void>;
28
+ release(key: string): void;
29
+ cancelWaiters(key: string): void;
30
+ clear(): void;
31
+ getCount(key: string): number;
32
+ getQueueLength(key: string): number;
33
+ private getQueue;
34
+ private flushQueue;
35
+ }
36
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/background/concurrency.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;cAG5B,MAAM;;;;;;cAAN,MAAM;;;CAAK,CAAC;AAOtB,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA+B;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAW/C,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIlC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ1B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUhC,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,UAAU;CAWlB"}
@@ -0,0 +1,92 @@
1
+ import { StructuredError } from '@agentuity/core';
2
+ /**
3
+ * Error thrown when a concurrency waiter is cancelled.
4
+ */
5
+ export const ConcurrencyCancelledError = StructuredError('ConcurrencyCancelledError', 'Concurrency waiter cancelled')();
6
+ export class ConcurrencyManager {
7
+ defaultLimit;
8
+ limits = new Map();
9
+ counts = new Map();
10
+ queues = new Map();
11
+ constructor(config) {
12
+ // Clamp defaultLimit to at least 1 to prevent deadlocks
13
+ this.defaultLimit = Math.max(1, config?.defaultLimit ?? 1);
14
+ if (config?.limits) {
15
+ for (const [key, value] of Object.entries(config.limits)) {
16
+ // Clamp each limit to at least 1
17
+ this.limits.set(key, Math.max(1, value));
18
+ }
19
+ }
20
+ }
21
+ getConcurrencyLimit(key) {
22
+ return this.limits.get(key) ?? this.defaultLimit;
23
+ }
24
+ async acquire(key) {
25
+ const limit = this.getConcurrencyLimit(key);
26
+ const count = this.getCount(key);
27
+ if (count < limit) {
28
+ this.counts.set(key, count + 1);
29
+ return;
30
+ }
31
+ await new Promise((resolve, reject) => {
32
+ const queue = this.getQueue(key);
33
+ queue.push({
34
+ resolve: () => {
35
+ this.counts.set(key, this.getCount(key) + 1);
36
+ resolve();
37
+ },
38
+ reject,
39
+ });
40
+ });
41
+ }
42
+ release(key) {
43
+ const count = this.getCount(key);
44
+ if (count > 0) {
45
+ this.counts.set(key, count - 1);
46
+ }
47
+ this.flushQueue(key);
48
+ }
49
+ cancelWaiters(key) {
50
+ const queue = this.queues.get(key);
51
+ if (!queue || queue.length === 0)
52
+ return;
53
+ for (const waiter of queue) {
54
+ waiter.reject(new ConcurrencyCancelledError({ key }));
55
+ }
56
+ this.queues.delete(key);
57
+ }
58
+ clear() {
59
+ for (const key of this.queues.keys()) {
60
+ this.cancelWaiters(key);
61
+ }
62
+ this.counts.clear();
63
+ this.queues.clear();
64
+ }
65
+ getCount(key) {
66
+ return this.counts.get(key) ?? 0;
67
+ }
68
+ getQueueLength(key) {
69
+ return this.queues.get(key)?.length ?? 0;
70
+ }
71
+ getQueue(key) {
72
+ const existing = this.queues.get(key);
73
+ if (existing)
74
+ return existing;
75
+ const queue = [];
76
+ this.queues.set(key, queue);
77
+ return queue;
78
+ }
79
+ flushQueue(key) {
80
+ const queue = this.queues.get(key);
81
+ if (!queue || queue.length === 0)
82
+ return;
83
+ const limit = this.getConcurrencyLimit(key);
84
+ while (queue.length > 0 && this.getCount(key) < limit) {
85
+ const waiter = queue.shift();
86
+ if (!waiter)
87
+ break;
88
+ waiter.resolve();
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/background/concurrency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './types';
2
+ export { ConcurrencyManager } from './concurrency';
3
+ export { BackgroundManager } from './manager';
4
+ export type { BackgroundManagerCallbacks } from './manager';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export { ConcurrencyManager } from './concurrency';
3
+ export { BackgroundManager } from './manager';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { PluginInput } from '@opencode-ai/plugin';
2
+ import type { BackgroundTask, BackgroundTaskConfig, LaunchInput } from './types';
3
+ type EventPayload = {
4
+ type: string;
5
+ properties?: Record<string, unknown>;
6
+ };
7
+ export interface BackgroundManagerCallbacks {
8
+ onSubagentSessionCreated?: (event: {
9
+ sessionId: string;
10
+ parentId: string;
11
+ title: string;
12
+ }) => void;
13
+ onSubagentSessionDeleted?: (event: {
14
+ sessionId: string;
15
+ }) => void;
16
+ }
17
+ export declare class BackgroundManager {
18
+ private ctx;
19
+ private config;
20
+ private concurrency;
21
+ private callbacks?;
22
+ private tasks;
23
+ private tasksByParent;
24
+ private tasksBySession;
25
+ private notifications;
26
+ private toolCallIds;
27
+ private shuttingDown;
28
+ constructor(ctx: PluginInput, config?: BackgroundTaskConfig, callbacks?: BackgroundManagerCallbacks);
29
+ launch(input: LaunchInput): Promise<BackgroundTask>;
30
+ getTask(id: string): BackgroundTask | undefined;
31
+ getTasksByParent(sessionId: string): BackgroundTask[];
32
+ findBySession(sessionId: string): BackgroundTask | undefined;
33
+ cancel(taskId: string): boolean;
34
+ handleEvent(event: EventPayload): void;
35
+ markForNotification(task: BackgroundTask): void;
36
+ getPendingNotifications(sessionId: string): BackgroundTask[];
37
+ clearNotifications(sessionId: string): void;
38
+ shutdown(): void;
39
+ private indexTask;
40
+ private startTask;
41
+ private updateProgress;
42
+ private createProgress;
43
+ private completeTask;
44
+ private failTask;
45
+ private releaseConcurrency;
46
+ private notifyParent;
47
+ private abortSession;
48
+ private fetchLatestResult;
49
+ private getConcurrencyGroup;
50
+ private getConcurrencyKey;
51
+ private expireStaleTasks;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/background/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAgB,MAAM,SAAS,CAAC;AAkB/F,KAAK,YAAY,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IAC1C,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QAClC,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAClE;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,SAAS,CAAC,CAA6B;IAC/C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,YAAY,CAAS;gBAG5B,GAAG,EAAE,WAAW,EAChB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,SAAS,CAAC,EAAE,0BAA0B;IAWjC,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IA4BzD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAQrD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAM5D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmB/B,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkCtC,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQ/C,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C,QAAQ,IAAI,IAAI;IAMhB,OAAO,CAAC,SAAS;YAMH,SAAS;IA8DvB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,cAAc;YAOR,YAAY;IAmB1B,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,kBAAkB;YAMZ,YAAY;YA2BZ,YAAY;YAWZ,iBAAiB;IAqB/B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;CAWxB"}