@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
@@ -1,19 +1,51 @@
1
+ import { tool } from '@opencode-ai/plugin';
2
+ import { loadAllSkills } from '../skills';
1
3
  import { agents } from '../agents';
2
- import { loadCoderConfig, getDefaultConfig, mergeConfig } from '../config';
4
+ import { loadCoderConfig, getDefaultConfig, mergeConfig, validateAndWarnConfigs } from '../config';
3
5
  import { createSessionHooks } from './hooks/session';
4
6
  import { createToolHooks } from './hooks/tools';
5
7
  import { createKeywordHooks } from './hooks/keyword';
6
8
  import { createParamsHooks } from './hooks/params';
7
9
  import { createCadenceHooks } from './hooks/cadence';
8
10
  import { createSessionMemoryHooks } from './hooks/session-memory';
11
+ import { BackgroundManager } from '../background';
12
+ import { TmuxSessionManager } from '../tmux';
13
+ // Sandbox environment detection
14
+ const SANDBOX_ID = process.env.AGENTUITY_SANDBOX_ID;
15
+ const IN_SANDBOX = !!SANDBOX_ID;
16
+ // Sandbox context injected into Lead, Builder, and Architect prompts
17
+ const SANDBOX_CONTEXT = IN_SANDBOX
18
+ ? `
19
+ ## Sandbox Environment
20
+
21
+ You are running inside an Agentuity Sandbox (ID: ${SANDBOX_ID}).
22
+
23
+ **Permissions:** All file operations are allowed without prompts.
24
+
25
+ **File Locations:**
26
+ - Working directory: \`/home/agentuity\`
27
+ - Temp files: \`/home/agentuity/tmp/\` (preferred over \`/tmp/\`)
28
+ - Artifacts: \`/home/agentuity/.agentuity/\`
29
+
30
+ **Tips:**
31
+ - No permission prompts - you can read/write freely
32
+ - Sandbox is isolated - safe to experiment
33
+ - Use \`/home/agentuity/\` paths for all file operations
34
+ `
35
+ : '';
36
+ // Agents that should receive sandbox context in their prompts
37
+ const SANDBOX_AWARE_AGENTS = ['lead', 'builder', 'architect'];
9
38
  // Agent display names for @mentions
10
39
  const AGENT_MENTIONS = {
11
40
  lead: '@Agentuity Coder Lead',
12
41
  scout: '@Agentuity Coder Scout',
13
42
  builder: '@Agentuity Coder Builder',
43
+ architect: '@Agentuity Coder Architect',
14
44
  reviewer: '@Agentuity Coder Reviewer',
15
45
  memory: '@Agentuity Coder Memory',
16
46
  expert: '@Agentuity Coder Expert',
47
+ planner: '@Agentuity Coder Planner',
48
+ runner: '@Agentuity Coder Runner',
17
49
  };
18
50
  export async function createCoderPlugin(ctx) {
19
51
  ctx.client.app.log({
@@ -30,13 +62,36 @@ export async function createCoderPlugin(ctx) {
30
62
  const keywordHooks = createKeywordHooks(ctx, coderConfig);
31
63
  const paramsHooks = createParamsHooks(ctx, coderConfig);
32
64
  const cadenceHooks = createCadenceHooks(ctx, coderConfig);
65
+ const tmuxManager = coderConfig.tmux?.enabled
66
+ ? new TmuxSessionManager(ctx, coderConfig.tmux, {
67
+ onLog: (message) => ctx.client.app.log({
68
+ body: {
69
+ service: 'agentuity-coder',
70
+ level: 'info',
71
+ message,
72
+ },
73
+ }),
74
+ })
75
+ : undefined;
76
+ const backgroundManager = new BackgroundManager(ctx, coderConfig.background, {
77
+ onSubagentSessionCreated: tmuxManager
78
+ ? (event) => {
79
+ void tmuxManager.onSessionCreated(event);
80
+ }
81
+ : undefined,
82
+ onSubagentSessionDeleted: tmuxManager
83
+ ? (event) => {
84
+ void tmuxManager.onSessionDeleted(event);
85
+ }
86
+ : undefined,
87
+ });
33
88
  // Session memory hooks handle checkpointing and compaction for non-Cadence sessions
34
89
  // Orchestration (deciding which module handles which session) happens below in the hooks
35
90
  const sessionMemoryHooks = createSessionMemoryHooks(ctx, coderConfig);
36
91
  const configHandler = createConfigHandler(coderConfig);
37
- // Get the tool helper from Open Code context if available
38
- const toolHelper = ctx.tool;
39
- const tools = toolHelper ? createTools(toolHelper) : undefined;
92
+ // Create plugin tools using the @opencode-ai/plugin tool helper
93
+ const tools = createTools(backgroundManager);
94
+ registerShutdownHandler(backgroundManager, tmuxManager);
40
95
  // Show startup toast (fire and forget, don't block)
41
96
  try {
42
97
  ctx.client.tui.showToast({
@@ -58,6 +113,10 @@ export async function createCoderPlugin(ctx) {
58
113
  'tool.execute.before': toolHooks.before,
59
114
  'tool.execute.after': toolHooks.after,
60
115
  event: async (input) => {
116
+ const event = extractEventFromInput(input);
117
+ if (event) {
118
+ backgroundManager.handleEvent(event);
119
+ }
61
120
  // Orchestrate: route to appropriate module based on session type
62
121
  const sessionId = extractSessionIdFromEvent(input);
63
122
  if (sessionId && cadenceHooks.isActiveCadenceSession(sessionId)) {
@@ -83,20 +142,51 @@ function createConfigHandler(coderConfig) {
83
142
  return async (config) => {
84
143
  const agentConfigs = createAgentConfigs(coderConfig);
85
144
  const commands = createCommands();
86
- config.agent = {
87
- ...config.agent,
88
- ...agentConfigs,
89
- };
145
+ const loadedSkills = await loadAllSkills(coderConfig.skills);
146
+ const skillCommands = createSkillCommands(loadedSkills);
147
+ // Merge agent configs: our defaults first, then user's opencode.json overrides on top
148
+ // This allows users to customize any agent via their opencode.json
149
+ const userAgentConfigs = config.agent;
150
+ const mergedAgents = { ...agentConfigs };
151
+ // Shallow merge user overrides on top of our defaults (nested objects like tools are replaced, not merged)
152
+ if (userAgentConfigs) {
153
+ for (const [name, userConfig] of Object.entries(userAgentConfigs)) {
154
+ if (mergedAgents[name]) {
155
+ // Merge user config on top of our default
156
+ mergedAgents[name] = {
157
+ ...mergedAgents[name],
158
+ ...userConfig,
159
+ };
160
+ }
161
+ else {
162
+ // User defined a new agent not in our defaults
163
+ mergedAgents[name] = userConfig;
164
+ }
165
+ }
166
+ }
167
+ config.agent = mergedAgents;
168
+ // Validate merged configs and warn about mismatches
169
+ validateAndWarnConfigs(mergedAgents);
170
+ // In sandbox, allow all permissions without prompts
171
+ if (IN_SANDBOX) {
172
+ config.permission = {
173
+ '*': 'allow',
174
+ external_directory: {
175
+ '/home/agentuity/**': 'allow',
176
+ '*': 'allow',
177
+ },
178
+ };
179
+ }
90
180
  config.command = {
91
181
  ...config.command,
92
182
  ...commands,
183
+ ...skillCommands,
93
184
  };
94
185
  };
95
186
  }
96
- function createAgentConfigs(config) {
187
+ function createAgentConfigs(_config) {
97
188
  const result = {};
98
189
  for (const agent of Object.values(agents)) {
99
- const modelConfig = config.agents?.[agent.role];
100
190
  // Convert tools.exclude to Open Code format (tool: false)
101
191
  const tools = {};
102
192
  if (agent.tools?.exclude) {
@@ -104,16 +194,23 @@ function createAgentConfigs(config) {
104
194
  tools[tool] = false;
105
195
  }
106
196
  }
197
+ // Inject sandbox context into specific agents when running in sandbox
198
+ const shouldInjectSandbox = IN_SANDBOX && SANDBOX_AWARE_AGENTS.includes(agent.role);
199
+ const prompt = shouldInjectSandbox
200
+ ? `${agent.systemPrompt}\n${SANDBOX_CONTEXT}`
201
+ : agent.systemPrompt;
202
+ // Use agent defaults directly - user overrides happen in createConfigHandler
107
203
  result[agent.displayName] = {
108
204
  description: agent.description,
109
- model: modelConfig?.model ?? agent.defaultModel,
110
- prompt: agent.systemPrompt,
205
+ model: agent.defaultModel,
206
+ prompt,
111
207
  mode: agent.mode ?? 'subagent',
112
208
  ...(Object.keys(tools).length > 0 ? { tools } : {}),
113
- // Pass through thinking/reasoning settings
114
209
  ...(agent.variant ? { variant: agent.variant } : {}),
115
210
  ...(agent.temperature !== undefined ? { temperature: agent.temperature } : {}),
116
211
  ...(agent.maxSteps !== undefined ? { maxSteps: agent.maxSteps } : {}),
212
+ ...(agent.reasoningEffort ? { reasoningEffort: agent.reasoningEffort } : {}),
213
+ ...(agent.thinking ? { thinking: agent.thinking } : {}),
117
214
  };
118
215
  }
119
216
  return result;
@@ -129,20 +226,24 @@ You are the Agentuity Coder Lead agent orchestrating the Agentuity Coder team.
129
226
  ## Your Team (use @mentions to invoke)
130
227
  - **@Agentuity Coder Scout**: Explore codebase, find patterns, research docs (read-only)
131
228
  - **@Agentuity Coder Builder**: Implement features, write code, run tests
229
+ - **@Agentuity Coder Architect**: Complex autonomous tasks, Cadence mode (GPT Codex)
132
230
  - **@Agentuity Coder Reviewer**: Review changes, catch issues, apply fixes
133
231
  - **@Agentuity Coder Memory**: Store context, remember decisions
134
232
  - **@Agentuity Coder Expert**: Agentuity CLI and cloud services specialist
233
+ - **@Agentuity Coder Planner**: Deep planning for complex architecture decisions
234
+ - **@Agentuity Coder Runner**: Run lint/build/test commands, returns structured results
135
235
 
136
236
  ## Task
137
237
  $ARGUMENTS
138
238
 
139
239
  ## Guidelines
140
240
  1. Use @Agentuity Coder Scout first to understand context
141
- 2. Delegate implementation to @Agentuity Coder Builder
142
- 3. Have @Agentuity Coder Reviewer check the work
143
- 4. Use @Agentuity Coder Expert for Agentuity CLI questions
144
- 5. Only use cloud services when genuinely helpful
145
- 6. **When done, tell @Agentuity Coder Memory to memorialize the session**
241
+ 2. Delegate implementation to @Agentuity Coder Builder (or Architect for complex work)
242
+ 3. Delegate lint/build/test commands to @Agentuity Coder Runner for structured results
243
+ 4. Have @Agentuity Coder Reviewer check the work
244
+ 5. Use @Agentuity Coder Expert for Agentuity CLI questions
245
+ 6. Only use cloud services when genuinely helpful
246
+ 7. **When done, tell @Agentuity Coder Memory to memorialize the session**
146
247
  </coder-mode>`,
147
248
  agent: 'Agentuity Coder Lead',
148
249
  argumentHint: '"task description"',
@@ -255,10 +356,13 @@ You are the Agentuity Coder Lead in **Cadence mode** — a long-running autonomo
255
356
 
256
357
  ## Your Team (use @mentions to invoke)
257
358
  - **@Agentuity Coder Scout**: Explore codebase, find patterns, research docs (read-only)
258
- - **@Agentuity Coder Builder**: Implement features, write code, run tests
359
+ - **@Agentuity Coder Architect**: Complex autonomous implementation (GPT Codex with high reasoning) — **USE THIS FOR CADENCE**
360
+ - **@Agentuity Coder Builder**: Quick fixes, simple changes (for minor iterations only)
259
361
  - **@Agentuity Coder Reviewer**: Review changes, catch issues, apply fixes
260
362
  - **@Agentuity Coder Memory**: Store context, remember decisions, checkpoints
261
363
  - **@Agentuity Coder Expert**: Agentuity CLI and cloud services specialist
364
+ - **@Agentuity Coder Planner**: Deep planning for complex architecture decisions
365
+ - **@Agentuity Coder Runner**: Run lint/build/test commands, returns structured results
262
366
 
263
367
  ## Task
264
368
  $ARGUMENTS
@@ -272,7 +376,8 @@ $ARGUMENTS
272
376
  2. **Each iteration**:
273
377
  - Ask @Agentuity Coder Memory for relevant context
274
378
  - Use @Agentuity Coder Scout to understand what's needed
275
- - Delegate implementation to @Agentuity Coder Builder
379
+ - For complex planning, consult @Agentuity Coder Planner
380
+ - Delegate implementation to **@Agentuity Coder Architect** (preferred for Cadence)
276
381
  - Have @Agentuity Coder Reviewer verify the work
277
382
  - Tell @Agentuity Coder Memory to store checkpoint
278
383
 
@@ -284,10 +389,11 @@ $ARGUMENTS
284
389
  4. **Tell @Agentuity Coder Memory to memorialize** the completed session
285
390
 
286
391
  ## Guidelines
287
- - **Always delegate** — use Scout for research, Builder for code, Reviewer for verification
392
+ - **Use Architect for implementation** — Architect has GPT Codex with maximum reasoning, ideal for autonomous work
393
+ - Use regular Builder only for trivial fixes within an iteration
288
394
  - Ask Memory for context at each iteration start
289
395
  - Store checkpoints at each iteration end
290
- - If stuck, ask Scout to re-evaluate before pausing
396
+ - If stuck on architecture, consult Planner before trying more approaches
291
397
  - Use @Agentuity Coder Expert for sandbox/cloud operations
292
398
  - Respect max iterations (50 default)`,
293
399
  agent: 'Agentuity Coder Lead',
@@ -295,38 +401,166 @@ $ARGUMENTS
295
401
  },
296
402
  };
297
403
  }
298
- function createTools(tool) {
299
- const coderDelegate = tool((s) => ({
404
+ function createSkillCommands(skills) {
405
+ const commands = {};
406
+ for (const skill of skills) {
407
+ const baseDir = normalizeBaseDir(skill.resolvedPath);
408
+ commands[skill.name] = {
409
+ name: skill.name,
410
+ description: skill.metadata.description,
411
+ template: `<skill-instruction>
412
+ Base directory for this skill: ${baseDir}/
413
+ File references (@path) in this skill are relative to this directory.
414
+
415
+ ${skill.content}
416
+ </skill-instruction>
417
+
418
+ <user-request>
419
+ $ARGUMENTS
420
+ </user-request>`,
421
+ ...(skill.metadata.agent ? { agent: skill.metadata.agent } : {}),
422
+ ...(skill.metadata.model ? { model: skill.metadata.model } : {}),
423
+ ...(skill.metadata['argument-hint']
424
+ ? { argumentHint: skill.metadata['argument-hint'] }
425
+ : {}),
426
+ ...(skill.metadata.subtask ? { subtask: true } : {}),
427
+ };
428
+ }
429
+ return commands;
430
+ }
431
+ function normalizeBaseDir(path) {
432
+ return path.replace(/[\\/]+$/, '');
433
+ }
434
+ function createTools(backgroundManager) {
435
+ // Use the schema from @opencode-ai/plugin's tool helper to avoid Zod version mismatches
436
+ const s = tool.schema;
437
+ const coderDelegate = tool({
300
438
  description: `Delegate a task to a specialized Agentuity Coder agent.
301
439
 
302
440
  Use this to:
303
441
  - Scout: Explore codebase, find patterns, research documentation
304
- - Builder: Implement features, write code, run tests
442
+ - Builder: Implement features, write code, run tests (interactive work)
443
+ - Architect: Complex autonomous tasks, Cadence mode, deep reasoning (GPT Codex)
305
444
  - Reviewer: Review changes, catch issues, apply fixes
306
445
  - Memory: Store context, remember decisions across sessions
307
- - Expert: Get help with Agentuity CLI and cloud services`,
308
- args: s.object({
446
+ - Expert: Get help with Agentuity CLI and cloud services
447
+ - Planner: Strategic advisor for complex architecture and deep planning (read-only)`,
448
+ args: {
309
449
  agent: s
310
- .enum(['scout', 'builder', 'reviewer', 'memory', 'expert'])
450
+ .enum([
451
+ 'scout',
452
+ 'builder',
453
+ 'architect',
454
+ 'reviewer',
455
+ 'memory',
456
+ 'expert',
457
+ 'planner',
458
+ 'runner',
459
+ ])
311
460
  .describe('Which agent to delegate to'),
312
461
  task: s.string().describe('Clear description of the task'),
313
462
  context: s.string().optional().describe('Additional context from previous tasks'),
314
- }),
315
- execute: async (args) => {
463
+ },
464
+ async execute(args) {
316
465
  const mention = AGENT_MENTIONS[args.agent];
317
466
  let prompt = `${mention}\n\n## Task\n${args.task}`;
318
467
  if (args.context) {
319
468
  prompt = `${mention}\n\n## Context\n${args.context}\n\n## Task\n${args.task}`;
320
469
  }
321
- return {
322
- output: `To delegate this task, use the Task tool with this prompt:\n\n${prompt}\n\nThe ${args.agent} agent will handle this task.`,
323
- };
470
+ return `To delegate this task, use the Task tool with this prompt:\n\n${prompt}\n\nThe ${args.agent} agent will handle this task.`;
324
471
  },
325
- }));
326
- // Type assertion needed because the tool() helper returns unknown
327
- // but the runtime type is correct (it's created by OpenCode's tool helper)
472
+ });
473
+ const backgroundTask = tool({
474
+ description: `Launch a task to run in the background. Use this for parallel execution of multiple independent tasks.
475
+
476
+ IMPORTANT: Use this tool instead of the 'task' tool when:
477
+ - You need to run multiple agents in parallel
478
+ - Tasks are independent and don't need sequential execution
479
+ - The user asks for "parallel", "background", or "concurrent" work`,
480
+ args: {
481
+ agent: s
482
+ .enum([
483
+ 'lead',
484
+ 'scout',
485
+ 'builder',
486
+ 'architect',
487
+ 'reviewer',
488
+ 'memory',
489
+ 'expert',
490
+ 'planner',
491
+ 'runner',
492
+ ])
493
+ .describe('Agent role to run the task'),
494
+ task: s.string().describe('Task prompt to run in the background'),
495
+ description: s.string().optional().describe('Short description of the task'),
496
+ },
497
+ async execute(args, context) {
498
+ const parentSessionId = context.sessionID;
499
+ if (!parentSessionId) {
500
+ return JSON.stringify({
501
+ taskId: 'unknown',
502
+ status: 'error',
503
+ message: 'Missing session context for background task.',
504
+ });
505
+ }
506
+ const agentName = resolveAgentName(args.agent);
507
+ const bgTask = await backgroundManager.launch({
508
+ description: args.description ?? args.task,
509
+ prompt: args.task,
510
+ agent: agentName,
511
+ parentSessionId,
512
+ parentMessageId: context.messageID,
513
+ });
514
+ return JSON.stringify({
515
+ taskId: bgTask.id,
516
+ status: bgTask.status,
517
+ message: bgTask.status === 'error'
518
+ ? (bgTask.error ?? 'Failed to launch background task.')
519
+ : 'Background task launched.',
520
+ });
521
+ },
522
+ });
523
+ const backgroundOutput = tool({
524
+ description: 'Retrieve output for a background task.',
525
+ args: {
526
+ task_id: s.string().describe('Background task ID'),
527
+ },
528
+ async execute(args) {
529
+ const bgTask = backgroundManager.getTask(args.task_id);
530
+ if (!bgTask) {
531
+ return JSON.stringify({
532
+ taskId: args.task_id,
533
+ status: 'error',
534
+ error: 'Task not found.',
535
+ });
536
+ }
537
+ return JSON.stringify({
538
+ taskId: bgTask.id,
539
+ status: bgTask.status,
540
+ result: bgTask.result,
541
+ error: bgTask.error,
542
+ });
543
+ },
544
+ });
545
+ const backgroundCancel = tool({
546
+ description: 'Cancel a running background task.',
547
+ args: {
548
+ task_id: s.string().describe('Background task ID'),
549
+ },
550
+ async execute(args) {
551
+ const success = backgroundManager.cancel(args.task_id);
552
+ return JSON.stringify({
553
+ taskId: args.task_id,
554
+ success,
555
+ message: success ? 'Background task cancelled.' : 'Unable to cancel task.',
556
+ });
557
+ },
558
+ });
328
559
  return {
329
560
  coder_delegate: coderDelegate,
561
+ background_task: backgroundTask,
562
+ background_output: backgroundOutput,
563
+ background_cancel: backgroundCancel,
330
564
  };
331
565
  }
332
566
  // ─────────────────────────────────────────────────────────────────────────────
@@ -341,4 +575,31 @@ function extractSessionIdFromEvent(input) {
341
575
  return (inp.event.properties.sessionId ??
342
576
  inp.event.properties.sessionID);
343
577
  }
578
+ function resolveAgentName(role) {
579
+ const agent = agents[role];
580
+ return agent?.displayName ?? role;
581
+ }
582
+ function extractEventFromInput(input) {
583
+ if (typeof input !== 'object' || input === null)
584
+ return undefined;
585
+ const inp = input;
586
+ if (!inp.event || typeof inp.event.type !== 'string')
587
+ return undefined;
588
+ return { type: inp.event.type, properties: inp.event.properties };
589
+ }
590
+ function registerShutdownHandler(manager, tmuxManager) {
591
+ if (typeof process === 'undefined')
592
+ return;
593
+ const shutdown = () => {
594
+ manager.shutdown();
595
+ if (tmuxManager) {
596
+ // Use sync version to ensure cleanup completes before process exits
597
+ tmuxManager.cleanupSync();
598
+ }
599
+ };
600
+ process.once('beforeExit', shutdown);
601
+ process.once('SIGINT', shutdown);
602
+ process.once('SIGTERM', shutdown);
603
+ process.once('exit', shutdown); // Also handle exit event for extra safety
604
+ }
344
605
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ParsedFrontmatter<T = Record<string, unknown>> {
2
+ data: T;
3
+ body: string;
4
+ }
5
+ export declare function parseFrontmatter<T = Record<string, unknown>>(content: string): ParsedFrontmatter<T>;
6
+ export {};
7
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/skills/frontmatter.ts"],"names":[],"mappings":"AAEA,UAAU,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,OAAO,EAAE,MAAM,GACb,iBAAiB,CAAC,CAAC,CAAC,CAetB"}
@@ -0,0 +1,17 @@
1
+ import yaml from 'yaml';
2
+ export function parseFrontmatter(content) {
3
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
4
+ if (!match) {
5
+ return { data: {}, body: content.trim() };
6
+ }
7
+ const frontmatter = match[1];
8
+ const body = content.slice(match[0].length).trim();
9
+ try {
10
+ const data = yaml.parse(frontmatter);
11
+ return { data: (data ?? {}), body };
12
+ }
13
+ catch {
14
+ return { data: {}, body: content.trim() };
15
+ }
16
+ }
17
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/skills/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,MAAM,UAAU,gBAAgB,CAC/B,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,EAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAM,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,IAAI,EAAE,EAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAChD,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './frontmatter';
3
+ export * from './loader';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './frontmatter';
3
+ export * from './loader';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { LoadedSkill, SkillScope, SkillsConfig } from './types';
2
+ /**
3
+ * Load skills from standard directories.
4
+ * Priority order (later overrides earlier):
5
+ * 1. User OpenCode: ~/.config/opencode/skills/
6
+ * 2. User Agentuity: ~/.config/agentuity/opencode/skills/
7
+ * 3. User Claude Code compat: ~/.claude/skills/
8
+ * 4. Project OpenCode: ./.opencode/skills/
9
+ * 5. Project Claude Code compat: ./.claude/skills/
10
+ */
11
+ export declare function loadAllSkills(config?: SkillsConfig): Promise<LoadedSkill[]>;
12
+ /**
13
+ * Load skills from a single directory
14
+ */
15
+ export declare function loadSkillsFromDir(dir: string, scope: SkillScope): Promise<LoadedSkill[]>;
16
+ /**
17
+ * Get skill by name from loaded skills
18
+ */
19
+ export declare function getSkillByName(skills: LoadedSkill[], name: string): LoadedSkill | undefined;
20
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAiB,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAUpF;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAkCjF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6C9F;AAqCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE3F"}