@openspoon/subtask2 0.2.5 → 0.2.7
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.
- package/README.md +83 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +237 -93
- package/dist/index.js.map +1 -1
- package/dist/src/commands.d.ts +1 -0
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +30 -2
- package/dist/src/commands.js.map +1 -1
- package/dist/src/parser.d.ts +27 -0
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +53 -0
- package/dist/src/parser.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
## A stronger opencode /command handler
|
|
2
|
+
|
|
3
|
+
Subtask2 extends opencode commands into a powerful orchestration system. Instead of giving you an opinionated monster like some plugins do, it lets you easily build your own (but simple is fine too).
|
|
4
|
+
|
|
5
|
+

|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
### TL:DR - Less entropic agentic loop, more control
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
This plugin allows your `/commands` to:
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
- Queue-up `prompts` or other `/commands` and `subagents` with arguments
|
|
12
|
+
- Parallelize the parts you want
|
|
13
|
+
- Pass session context to subagents
|
|
14
|
+
- Steer the agentic flow from start to finish
|
|
15
|
+
|
|
16
|
+
If you already know opencode commands, you'll be right at home.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
`@openspoon/subtask2@latest`
|
|
8
20
|
|
|
9
21
|
### Key features
|
|
10
22
|
|
|
11
23
|
- `return` instruct main session on **command/subtask(s)** result - _can be chained, supports /commands_
|
|
12
24
|
- `parallel` run subtasks concurrently - _pending PR merge ⚠️_
|
|
13
25
|
- `arguments` pass arguments with command frontmatter or `||` message pipe
|
|
26
|
+
- `$TURN[n]` pipe the last N conversation turns into your command
|
|
14
27
|
|
|
15
28
|
Requires [this PR](https://github.com/sst/opencode/pull/6478) for `parallel` features, as well as proper model inheritance (piping the right model and agent to the right subtask and back) to work.
|
|
16
29
|
|
|
@@ -56,32 +69,36 @@ Design the auth system for $ARGUMENTS
|
|
|
56
69
|
By default, opencode injects a user message after a `subtask: true` completes, asking the model to "summarize the task tool output..." - Subtask2 replaces that message with the `return` prompt
|
|
57
70
|
|
|
58
71
|
- **First** `return` replaces opencode's "summarize" message or fires as a follow-up
|
|
59
|
-
- **Any additional** `return` fire sequentially after each LLM turn completes
|
|
72
|
+
- **Any additional** `return` fire sequentially after each LLM turn completes - _accepts /commands_
|
|
60
73
|
- **Commands** (starting with `/`) are executed as full commands with their own `parallel` and `return`
|
|
61
74
|
|
|
75
|
+
**Note:** The first `return` of a `subtask: true` command cannot be a slash command as it subsitutes the opencode injected message (as a string)
|
|
76
|
+
|
|
62
77
|
### 2. `parallel` - Run multiple subtasks concurrently ⚠️ **PENDING PR**
|
|
63
78
|
|
|
64
79
|
Spawn additional command subtasks alongside the main one:
|
|
65
80
|
|
|
81
|
+
`plan.md`
|
|
82
|
+
|
|
66
83
|
```yaml
|
|
67
84
|
subtask: true
|
|
68
85
|
parallel:
|
|
69
|
-
- /
|
|
70
|
-
- /
|
|
86
|
+
- /plan-gemini
|
|
87
|
+
- /plan-opus
|
|
71
88
|
return:
|
|
72
|
-
-
|
|
73
|
-
- Critically review the plan directly against
|
|
89
|
+
- Compare and challenge the plans, keep the best bits and make a unified proposal
|
|
90
|
+
- Critically review the plan directly against what reddit has to say about it
|
|
74
91
|
---
|
|
75
|
-
|
|
92
|
+
Plan a trip to $ARGUMENTS.
|
|
76
93
|
```
|
|
77
94
|
|
|
78
95
|
This runs 3 subtasks in parallel:
|
|
79
96
|
|
|
80
|
-
1. The main command (
|
|
81
|
-
2. `
|
|
82
|
-
3. `
|
|
97
|
+
1. The main command (`plan.md`)
|
|
98
|
+
2. `plan-gemini`
|
|
99
|
+
3. `plan-opus`
|
|
83
100
|
|
|
84
|
-
When ALL complete, the main session
|
|
101
|
+
When ALL complete, the main session receives the `return` prompt of the main command
|
|
85
102
|
|
|
86
103
|
### With custom arguments per command
|
|
87
104
|
|
|
@@ -144,6 +161,53 @@ Configure in `~/.config/opencode/subtask2.jsonc`:
|
|
|
144
161
|
|
|
145
162
|
#### Priority: `return` param > config `generic_return` > built-in default > opencode original
|
|
146
163
|
|
|
164
|
+
### 4. `$TURN[n]` - Reference previous conversation turns
|
|
165
|
+
|
|
166
|
+
Use `$TURN[n]` to inject the last N conversation turns (user + assistant messages) into your command. This is powerful for commands that need context from the ongoing conversation.
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
---
|
|
170
|
+
description: summarize our conversation so far
|
|
171
|
+
subtask: true
|
|
172
|
+
---
|
|
173
|
+
Review the following conversation and provide a concise summary:
|
|
174
|
+
|
|
175
|
+
$TURN[10]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Usage in arguments:**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
/my-command analyze this $TURN[5]
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Syntax:**
|
|
185
|
+
|
|
186
|
+
- `$TURN[12]` - last 12 messages (turns, not parts)
|
|
187
|
+
- `$TURN[:3]` - just the 3rd message from the end
|
|
188
|
+
- `$TURN[:2:5:8]` - specific messages at indices 2, 5, and 8 from the end
|
|
189
|
+
|
|
190
|
+
**Format output:**
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
--- USER ---
|
|
194
|
+
What's the best way to implement auth?
|
|
195
|
+
|
|
196
|
+
--- ASSISTANT ---
|
|
197
|
+
I'd recommend using JWT tokens with...
|
|
198
|
+
|
|
199
|
+
--- USER ---
|
|
200
|
+
Can you show me an example?
|
|
201
|
+
...
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Works in:
|
|
205
|
+
|
|
206
|
+
- Command body templates
|
|
207
|
+
- Command arguments
|
|
208
|
+
- Parallel command prompts
|
|
209
|
+
- Piped arguments (`||`)
|
|
210
|
+
|
|
147
211
|
</details>
|
|
148
212
|
|
|
149
213
|
<details>
|
|
@@ -260,16 +324,18 @@ say the word "$ARGUMENTS" 3 times
|
|
|
260
324
|
|
|
261
325
|
</details>
|
|
262
326
|
|
|
263
|
-
|
|
264
|
-
|
|
327
|
+
<details>
|
|
328
|
+
<summary><strong>Installation</strong></summary>
|
|
265
329
|
To install, add subtask2 to your opencode config plugin array
|
|
266
330
|
|
|
267
331
|
```json
|
|
268
332
|
{
|
|
269
|
-
"plugins": ["@openspoon/subtask2"]
|
|
333
|
+
"plugins": ["@openspoon/subtask2@latest"]
|
|
270
334
|
}
|
|
271
335
|
```
|
|
272
336
|
|
|
337
|
+
</details>
|
|
338
|
+
|
|
273
339
|
---
|
|
274
340
|
|
|
275
341
|

|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAiRhD,QAAA,MAAM,MAAM,EAAE,MAkSb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadConfig, DEFAULT_PROMPT } from "./src/config";
|
|
2
|
-
import { parseFrontmatter, getTemplateBody, parseParallelConfig, } from "./src/parser";
|
|
3
|
-
import { loadCommandFile, buildManifest } from "./src/commands";
|
|
2
|
+
import { parseFrontmatter, getTemplateBody, parseParallelConfig, extractTurnReferences, hasTurnReferences, replaceTurnReferences, } from "./src/parser";
|
|
3
|
+
import { loadCommandFile, buildManifest, getConfig } from "./src/commands";
|
|
4
4
|
import { log, clearLog } from "./src/logger";
|
|
5
5
|
// Session state
|
|
6
6
|
let configs = {};
|
|
@@ -14,8 +14,142 @@ const pipedArgsQueue = new Map();
|
|
|
14
14
|
const returnArgsState = pipedArgsQueue; // alias for backward compat
|
|
15
15
|
const sessionMainCommand = new Map();
|
|
16
16
|
const executedReturns = new Set();
|
|
17
|
+
// Track the first return prompt per session (replaces "Summarize..." in $SESSION)
|
|
18
|
+
const firstReturnPrompt = new Map();
|
|
19
|
+
// Track parent session for commands called via executeReturn
|
|
20
|
+
// Simple variable: set before command call, used by tool.execute.before
|
|
21
|
+
let pendingParentSession = null;
|
|
17
22
|
let hasActiveSubtask = false;
|
|
18
23
|
const OPENCODE_GENERIC = "Summarize the task tool output above and continue with your task.";
|
|
24
|
+
/**
|
|
25
|
+
* Fetch and format session messages
|
|
26
|
+
* @param sessionID - The session to fetch from
|
|
27
|
+
* @param lastN - Get the last N messages (optional)
|
|
28
|
+
* @param specificIndices - Get specific messages by index from end, 1-based (optional)
|
|
29
|
+
*/
|
|
30
|
+
async function fetchSessionMessages(sessionID, lastN, specificIndices) {
|
|
31
|
+
if (!client) {
|
|
32
|
+
log("fetchSessionMessages: no client available");
|
|
33
|
+
return "[TURN: client not available]";
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const result = await client.session.messages({
|
|
37
|
+
path: { id: sessionID },
|
|
38
|
+
});
|
|
39
|
+
const messages = result.data;
|
|
40
|
+
log(`fetchSessionMessages: got ${messages?.length ?? 0} messages from ${sessionID}`);
|
|
41
|
+
if (!messages?.length) {
|
|
42
|
+
return "[TURN: no messages found]";
|
|
43
|
+
}
|
|
44
|
+
// Log all messages for debugging
|
|
45
|
+
log(`All messages:`, messages.map((m, i) => ({
|
|
46
|
+
idx: i,
|
|
47
|
+
role: m.info.role,
|
|
48
|
+
partsCount: m.parts?.length,
|
|
49
|
+
textParts: m.parts?.filter((p) => p.type === 'text').map((p) => p.text?.substring(0, 30))
|
|
50
|
+
})));
|
|
51
|
+
// Filter out trailing empty messages (from current command being initiated)
|
|
52
|
+
let effectiveMessages = messages;
|
|
53
|
+
while (effectiveMessages.length > 0) {
|
|
54
|
+
const last = effectiveMessages[effectiveMessages.length - 1];
|
|
55
|
+
const hasContent = last.parts?.some((p) => (p.type === "text" && p.text?.trim()) ||
|
|
56
|
+
(p.type === "tool" && p.state?.status === "completed" && p.state?.output));
|
|
57
|
+
if (!hasContent) {
|
|
58
|
+
effectiveMessages = effectiveMessages.slice(0, -1);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
log(`After filtering empty trailing messages: ${effectiveMessages.length} (was ${messages.length})`);
|
|
65
|
+
// Select messages based on mode
|
|
66
|
+
let selectedMessages;
|
|
67
|
+
if (specificIndices && specificIndices.length > 0) {
|
|
68
|
+
// Specific indices mode: $TURN[:2:5:8] - indices are 1-based from end
|
|
69
|
+
selectedMessages = specificIndices
|
|
70
|
+
.map(idx => effectiveMessages[effectiveMessages.length - idx])
|
|
71
|
+
.filter(Boolean);
|
|
72
|
+
log(`Using specific indices [${specificIndices.join(',')}] -> ${selectedMessages.length} messages`);
|
|
73
|
+
}
|
|
74
|
+
else if (lastN) {
|
|
75
|
+
// Last N mode: $TURN[5]
|
|
76
|
+
selectedMessages = effectiveMessages.slice(-lastN);
|
|
77
|
+
log(`Using last ${lastN} messages`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
selectedMessages = effectiveMessages;
|
|
81
|
+
log(`Using all ${selectedMessages.length} messages`);
|
|
82
|
+
}
|
|
83
|
+
// Format each message with its parts
|
|
84
|
+
const formatted = selectedMessages.map((msg) => {
|
|
85
|
+
const role = msg.info.role.toUpperCase();
|
|
86
|
+
const parts = [];
|
|
87
|
+
for (const part of msg.parts) {
|
|
88
|
+
if (part.type === "text" && part.text) {
|
|
89
|
+
// Replace the generic opencode summarize prompt with our first return prompt
|
|
90
|
+
if (part.text.startsWith("Summarize the task tool output")) {
|
|
91
|
+
const replacement = firstReturnPrompt.get(sessionID);
|
|
92
|
+
if (replacement) {
|
|
93
|
+
parts.push(replacement);
|
|
94
|
+
}
|
|
95
|
+
// If no replacement, skip it entirely
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
parts.push(part.text);
|
|
99
|
+
}
|
|
100
|
+
else if (part.type === "tool" && part.state?.status === "completed") {
|
|
101
|
+
// Include completed tool results (especially task tool for subtask content)
|
|
102
|
+
const toolName = part.tool;
|
|
103
|
+
let output = part.state.output;
|
|
104
|
+
if (output && typeof output === "string") {
|
|
105
|
+
// Strip <task_metadata> tags from task tool output
|
|
106
|
+
output = output.replace(/<task_metadata>[\s\S]*?<\/task_metadata>/g, "").trim();
|
|
107
|
+
if (output && output.length < 2000) {
|
|
108
|
+
// For task tool, just include the content directly (it's the subtask's response)
|
|
109
|
+
if (toolName === "task") {
|
|
110
|
+
parts.push(output);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
parts.push(`[Tool: ${toolName}]\n${output}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return `--- ${role} ---\n${parts.join("\n")}`;
|
|
120
|
+
});
|
|
121
|
+
return formatted.join("\n\n");
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
log("fetchSessionMessages error:", e);
|
|
125
|
+
return `[TURN: error fetching messages - ${e}]`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Process a string and replace all $TURN references with actual session content
|
|
130
|
+
*/
|
|
131
|
+
async function resolveTurnReferences(text, sessionID) {
|
|
132
|
+
if (!hasTurnReferences(text)) {
|
|
133
|
+
return text;
|
|
134
|
+
}
|
|
135
|
+
const refs = extractTurnReferences(text);
|
|
136
|
+
if (!refs.length)
|
|
137
|
+
return text;
|
|
138
|
+
const replacements = new Map();
|
|
139
|
+
for (const ref of refs) {
|
|
140
|
+
if (ref.type === "lastN") {
|
|
141
|
+
const content = await fetchSessionMessages(sessionID, ref.count);
|
|
142
|
+
replacements.set(ref.match, content);
|
|
143
|
+
log(`Resolved ${ref.match}: ${content.length} chars`);
|
|
144
|
+
}
|
|
145
|
+
else if (ref.type === "specific") {
|
|
146
|
+
const content = await fetchSessionMessages(sessionID, undefined, ref.indices);
|
|
147
|
+
replacements.set(ref.match, content);
|
|
148
|
+
log(`Resolved ${ref.match}: ${content.length} chars`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return replaceTurnReferences(text, replacements);
|
|
152
|
+
}
|
|
19
153
|
async function flattenParallels(parallels, mainArgs, sessionID, visited = new Set(), depth = 0, maxDepth = 5) {
|
|
20
154
|
if (depth > maxDepth)
|
|
21
155
|
return [];
|
|
@@ -42,6 +176,11 @@ async function flattenParallels(parallels, mainArgs, sessionID, visited = new Se
|
|
|
42
176
|
const args = pipeArg ?? parallelCmd.arguments ?? mainArgs;
|
|
43
177
|
log(`Parallel ${parallelCmd.command}: using args="${args}" (pipeArg=${pipeArg}, fmArg=${parallelCmd.arguments}, mainArgs=${mainArgs})`);
|
|
44
178
|
template = template.replace(/\$ARGUMENTS/g, args);
|
|
179
|
+
// Resolve $SESSION[n] references in the template
|
|
180
|
+
if (hasTurnReferences(template)) {
|
|
181
|
+
template = await resolveTurnReferences(template, sessionID);
|
|
182
|
+
log(`Parallel ${parallelCmd.command}: resolved $SESSION refs`);
|
|
183
|
+
}
|
|
45
184
|
// Parse model string "provider/model" into {providerID, modelID}
|
|
46
185
|
let model;
|
|
47
186
|
if (typeof fm.model === "string" && fm.model.includes("/")) {
|
|
@@ -69,66 +208,51 @@ async function flattenParallels(parallels, mainArgs, sessionID, visited = new Se
|
|
|
69
208
|
return parts;
|
|
70
209
|
}
|
|
71
210
|
const plugin = async (ctx) => {
|
|
211
|
+
clearLog();
|
|
72
212
|
configs = await buildManifest();
|
|
73
213
|
pluginConfig = await loadConfig();
|
|
74
214
|
client = ctx.client;
|
|
75
|
-
|
|
76
|
-
|
|
215
|
+
const allKeys = Object.keys(configs);
|
|
216
|
+
const uniqueCmds = allKeys.filter(k => !k.includes('/'));
|
|
217
|
+
log(`Plugin initialized: ${uniqueCmds.length} commands`, uniqueCmds);
|
|
77
218
|
// Helper to execute a return item (command or prompt)
|
|
78
219
|
async function executeReturn(item, sessionID) {
|
|
79
|
-
log(`executeReturn called: item=${item}, sessionID=${sessionID}`);
|
|
80
220
|
// Dedup check to prevent double execution
|
|
81
221
|
const key = `${sessionID}:${item}`;
|
|
82
|
-
if (executedReturns.has(key))
|
|
83
|
-
log(`executeReturn skipped (already executed): ${key}`);
|
|
222
|
+
if (executedReturns.has(key))
|
|
84
223
|
return;
|
|
85
|
-
}
|
|
86
224
|
executedReturns.add(key);
|
|
87
225
|
if (item.startsWith("/")) {
|
|
88
|
-
// Parse /command args syntax
|
|
89
226
|
const [cmdName, ...argParts] = item.slice(1).split(/\s+/);
|
|
90
227
|
let args = argParts.join(" ");
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
log(`executeReturn: chained command "${cmdName}" config:`, {
|
|
95
|
-
return: configs[cmdName].return,
|
|
96
|
-
parallel: configs[cmdName].parallel,
|
|
97
|
-
agent: configs[cmdName].agent,
|
|
98
|
-
description: configs[cmdName].description,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
log(`executeReturn: command "${cmdName}" not found in configs`);
|
|
103
|
-
}
|
|
228
|
+
// Find the path key for this command (OpenCode needs full path for subfolder commands)
|
|
229
|
+
const allKeys = Object.keys(configs);
|
|
230
|
+
const pathKey = allKeys.find(k => k.includes('/') && k.endsWith('/' + cmdName)) || cmdName;
|
|
104
231
|
// Check if we have piped args for this return command
|
|
105
232
|
const returnArgs = returnArgsState.get(sessionID);
|
|
106
|
-
log(`executeReturn /command: cmdName=${cmdName}, inlineArgs="${inlineArgs}", returnArgsState=`, returnArgs);
|
|
107
233
|
if (returnArgs?.length) {
|
|
108
234
|
const pipeArg = returnArgs.shift();
|
|
109
235
|
if (!returnArgs.length)
|
|
110
236
|
returnArgsState.delete(sessionID);
|
|
111
237
|
if (pipeArg)
|
|
112
238
|
args = pipeArg;
|
|
113
|
-
log(`executeReturn: using pipeArg="${pipeArg}" instead of inlineArgs`);
|
|
114
239
|
}
|
|
115
|
-
log(`executeReturn:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
240
|
+
log(`executeReturn: /${cmdName} -> ${pathKey} args="${args}" (parent=${sessionID})`);
|
|
241
|
+
sessionMainCommand.set(sessionID, pathKey);
|
|
242
|
+
// Set parent session for $SESSION resolution - will be consumed by tool.execute.before
|
|
243
|
+
pendingParentSession = sessionID;
|
|
119
244
|
try {
|
|
120
245
|
await client.session.command({
|
|
121
246
|
path: { id: sessionID },
|
|
122
|
-
body: { command:
|
|
247
|
+
body: { command: pathKey, arguments: args || "" },
|
|
123
248
|
});
|
|
124
|
-
log(`executeReturn: command ${cmdName} completed`);
|
|
125
249
|
}
|
|
126
250
|
catch (e) {
|
|
127
|
-
log(`executeReturn:
|
|
251
|
+
log(`executeReturn FAILED: ${pathKey}`, e);
|
|
128
252
|
}
|
|
129
253
|
}
|
|
130
254
|
else {
|
|
131
|
-
log(`executeReturn:
|
|
255
|
+
log(`executeReturn: prompt "${item.substring(0, 40)}..."`);
|
|
132
256
|
await client.session.promptAsync({
|
|
133
257
|
path: { id: sessionID },
|
|
134
258
|
body: { parts: [{ type: "text", text: item }] },
|
|
@@ -138,26 +262,46 @@ const plugin = async (ctx) => {
|
|
|
138
262
|
return {
|
|
139
263
|
"command.execute.before": async (input, output) => {
|
|
140
264
|
const cmd = input.command;
|
|
141
|
-
const config = configs
|
|
265
|
+
const config = getConfig(configs, cmd);
|
|
142
266
|
sessionMainCommand.set(input.sessionID, cmd);
|
|
143
|
-
log(`
|
|
267
|
+
log(`cmd.before: ${cmd}`, config ? {
|
|
268
|
+
return: config.return,
|
|
269
|
+
parallel: config.parallel.map(p => p.command),
|
|
270
|
+
agent: config.agent
|
|
271
|
+
} : "no config");
|
|
144
272
|
// Parse pipe-separated arguments: main || arg1 || arg2 || arg3 ...
|
|
145
273
|
const argSegments = input.arguments.split("||").map((s) => s.trim());
|
|
146
|
-
|
|
147
|
-
// Store ALL piped args (after main) in a shared queue
|
|
274
|
+
let mainArgs = argSegments[0] || "";
|
|
148
275
|
const allPipedArgs = argSegments.slice(1);
|
|
149
|
-
log(`Pipe args parsing:`, {
|
|
150
|
-
fullArgs: input.arguments,
|
|
151
|
-
argSegments,
|
|
152
|
-
mainArgs,
|
|
153
|
-
allPipedArgs,
|
|
154
|
-
configParallel: config?.parallel,
|
|
155
|
-
configReturn: config?.return,
|
|
156
|
-
});
|
|
157
276
|
// Store piped args for consumption by parallels and return commands
|
|
158
277
|
if (allPipedArgs.length) {
|
|
159
278
|
pipedArgsQueue.set(input.sessionID, allPipedArgs);
|
|
160
|
-
|
|
279
|
+
}
|
|
280
|
+
// Resolve $SESSION[n] references in mainArgs
|
|
281
|
+
if (hasTurnReferences(mainArgs)) {
|
|
282
|
+
mainArgs = await resolveTurnReferences(mainArgs, input.sessionID);
|
|
283
|
+
log(`Resolved $SESSION in mainArgs: ${mainArgs.length} chars`);
|
|
284
|
+
}
|
|
285
|
+
// Resolve $SESSION[n] references in output parts
|
|
286
|
+
log(`Processing ${output.parts.length} parts for $SESSION refs`);
|
|
287
|
+
for (const part of output.parts) {
|
|
288
|
+
log(`Part type=${part.type}, hasPrompt=${!!part.prompt}, hasText=${!!part.text}`);
|
|
289
|
+
if (part.type === "subtask" && part.prompt) {
|
|
290
|
+
log(`Subtask prompt (first 200): ${part.prompt.substring(0, 200)}`);
|
|
291
|
+
if (hasTurnReferences(part.prompt)) {
|
|
292
|
+
log(`Found $SESSION in subtask prompt, resolving...`);
|
|
293
|
+
part.prompt = await resolveTurnReferences(part.prompt, input.sessionID);
|
|
294
|
+
log(`Resolved subtask prompt (first 200): ${part.prompt.substring(0, 200)}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (part.type === "text" && part.text) {
|
|
298
|
+
log(`Text part (first 200): ${part.text.substring(0, 200)}`);
|
|
299
|
+
if (hasTurnReferences(part.text)) {
|
|
300
|
+
log(`Found $SESSION in text part, resolving...`);
|
|
301
|
+
part.text = await resolveTurnReferences(part.text, input.sessionID);
|
|
302
|
+
log(`Resolved text part (first 200): ${part.text.substring(0, 200)}`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
161
305
|
}
|
|
162
306
|
// Fix main command's parts to use only mainArgs (not the full pipe string)
|
|
163
307
|
if (argSegments.length > 1) {
|
|
@@ -187,22 +331,16 @@ const plugin = async (ctx) => {
|
|
|
187
331
|
hasActiveSubtask = true;
|
|
188
332
|
const cmd = output.args?.command;
|
|
189
333
|
const prompt = output.args?.prompt;
|
|
334
|
+
const description = output.args?.description;
|
|
190
335
|
let mainCmd = sessionMainCommand.get(input.sessionID);
|
|
336
|
+
log(`tool.before: callID=${input.callID}, cmd=${cmd}, desc="${description?.substring(0, 30)}", mainCmd=${mainCmd}`);
|
|
191
337
|
// If mainCmd is not set (command.execute.before didn't fire - no PR),
|
|
192
338
|
// set the first subtask command as the main command
|
|
193
|
-
if (!mainCmd && cmd && configs
|
|
339
|
+
if (!mainCmd && cmd && getConfig(configs, cmd)) {
|
|
194
340
|
sessionMainCommand.set(input.sessionID, cmd);
|
|
195
341
|
mainCmd = cmd;
|
|
196
|
-
|
|
197
|
-
// Log the command's frontmatter for debugging
|
|
198
|
-
log(`Command ${cmd} config:`, {
|
|
199
|
-
return: configs[cmd].return,
|
|
200
|
-
parallel: configs[cmd].parallel,
|
|
201
|
-
agent: configs[cmd].agent,
|
|
202
|
-
description: configs[cmd].description,
|
|
203
|
-
});
|
|
342
|
+
const cmdConfig = getConfig(configs, cmd);
|
|
204
343
|
// Parse piped args from prompt if present (fallback for non-PR)
|
|
205
|
-
// The prompt may contain "|| arg2 || arg3" if pipes were used
|
|
206
344
|
if (prompt && prompt.includes("||")) {
|
|
207
345
|
const pipeMatch = prompt.match(/\|\|(.+)/);
|
|
208
346
|
if (pipeMatch) {
|
|
@@ -210,38 +348,39 @@ const plugin = async (ctx) => {
|
|
|
210
348
|
const pipedArgs = pipedPart.split("||").map((s) => s.trim()).filter(Boolean);
|
|
211
349
|
if (pipedArgs.length) {
|
|
212
350
|
pipedArgsQueue.set(input.sessionID, pipedArgs);
|
|
213
|
-
|
|
214
|
-
// Also fix the prompt to remove the piped args portion
|
|
215
|
-
const cleanPrompt = prompt.replace(/\s*\|\|.+$/, "").trim();
|
|
216
|
-
output.args.prompt = cleanPrompt;
|
|
217
|
-
log(`Cleaned prompt: "${cleanPrompt.substring(0, 100)}..."`);
|
|
351
|
+
output.args.prompt = prompt.replace(/\s*\|\|.+$/, "").trim();
|
|
218
352
|
}
|
|
219
353
|
}
|
|
220
354
|
}
|
|
221
355
|
// Also set up return state since command.execute.before didn't run
|
|
222
|
-
|
|
223
|
-
|
|
356
|
+
// Only do this once per session
|
|
357
|
+
if (cmdConfig.return.length > 0 && !returnState.has(input.sessionID)) {
|
|
358
|
+
// Store the first return prompt (replaces "Summarize..." in $SESSION)
|
|
359
|
+
firstReturnPrompt.set(input.sessionID, cmdConfig.return[0]);
|
|
360
|
+
if (cmdConfig.return.length > 1) {
|
|
361
|
+
returnState.set(input.sessionID, [...cmdConfig.return.slice(1)]);
|
|
362
|
+
log(`Set returnState: ${cmdConfig.return.slice(1).length} items`);
|
|
363
|
+
}
|
|
224
364
|
}
|
|
225
365
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
366
|
+
// Resolve $SESSION[n] in the prompt for ANY subtask
|
|
367
|
+
// Use parent session if this command was triggered via executeReturn
|
|
368
|
+
if (prompt && hasTurnReferences(prompt)) {
|
|
369
|
+
const resolveFromSession = pendingParentSession || input.sessionID;
|
|
370
|
+
log(`tool.execute.before: resolving $SESSION in prompt (from ${pendingParentSession ? 'parent' : 'current'} session ${resolveFromSession})`);
|
|
371
|
+
output.args.prompt = await resolveTurnReferences(prompt, resolveFromSession);
|
|
372
|
+
log(`tool.execute.before: resolved prompt (${output.args.prompt.length} chars)`);
|
|
373
|
+
// Clear after use
|
|
374
|
+
pendingParentSession = null;
|
|
375
|
+
}
|
|
376
|
+
if (cmd && getConfig(configs, cmd)) {
|
|
377
|
+
const cmdConfig = getConfig(configs, cmd);
|
|
239
378
|
if (cmd === mainCmd) {
|
|
240
379
|
pendingNonSubtaskReturns.delete(input.sessionID);
|
|
241
380
|
}
|
|
242
381
|
callState.set(input.callID, cmd);
|
|
243
|
-
if (cmd === mainCmd &&
|
|
244
|
-
returnState.set(input.sessionID, [...
|
|
382
|
+
if (cmd === mainCmd && cmdConfig.return.length > 1) {
|
|
383
|
+
returnState.set(input.sessionID, [...cmdConfig.return.slice(1)]);
|
|
245
384
|
}
|
|
246
385
|
}
|
|
247
386
|
},
|
|
@@ -249,51 +388,56 @@ const plugin = async (ctx) => {
|
|
|
249
388
|
if (input.tool !== "task")
|
|
250
389
|
return;
|
|
251
390
|
const cmd = callState.get(input.callID);
|
|
391
|
+
log(`tool.after: callID=${input.callID}, cmd=${cmd}, wasTracked=${!!cmd}`);
|
|
392
|
+
if (!cmd) {
|
|
393
|
+
// Already processed or not our command
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
252
396
|
callState.delete(input.callID);
|
|
253
397
|
const mainCmd = sessionMainCommand.get(input.sessionID);
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
398
|
+
const cmdConfig = cmd ? getConfig(configs, cmd) : undefined;
|
|
399
|
+
log(`tool.after: cmd=${cmd}, mainCmd=${mainCmd}, isMain=${cmd === mainCmd}, hasReturn=${!!cmdConfig?.return?.length}`);
|
|
400
|
+
if (cmd && cmd === mainCmd && cmdConfig?.return?.length) {
|
|
401
|
+
// Only set pendingReturn if we haven't already
|
|
402
|
+
if (!pendingReturns.has(input.sessionID)) {
|
|
403
|
+
log(`Setting pendingReturn: ${cmdConfig.return[0].substring(0, 50)}...`);
|
|
404
|
+
pendingReturns.set(input.sessionID, cmdConfig.return[0]);
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
log(`Skipping pendingReturn - already set`);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
else if (cmd && cmd !== mainCmd) {
|
|
411
|
+
log(`task.after: ${cmd} (parallel of ${mainCmd})`);
|
|
258
412
|
}
|
|
259
413
|
},
|
|
260
414
|
"experimental.chat.messages.transform": async (input, output) => {
|
|
261
|
-
log(`messages.transform called, pendingReturns keys:`, Array.from(pendingReturns.keys()), `message count: ${output.messages.length}`);
|
|
262
415
|
// Find the LAST message with OPENCODE_GENERIC
|
|
263
416
|
let lastGenericPart = null;
|
|
264
|
-
|
|
265
|
-
for (let i = 0; i < output.messages.length; i++) {
|
|
266
|
-
const msg = output.messages[i];
|
|
417
|
+
for (const msg of output.messages) {
|
|
267
418
|
for (const part of msg.parts) {
|
|
268
419
|
if (part.type === "text" && part.text === OPENCODE_GENERIC) {
|
|
269
420
|
lastGenericPart = part;
|
|
270
|
-
lastGenericMsgIndex = i;
|
|
271
421
|
}
|
|
272
422
|
}
|
|
273
423
|
}
|
|
274
424
|
if (lastGenericPart) {
|
|
275
|
-
log(`Found LAST OPENCODE_GENERIC at msg[${lastGenericMsgIndex}]`);
|
|
276
425
|
// Check for pending return
|
|
277
426
|
for (const [sessionID, returnPrompt] of pendingReturns) {
|
|
278
|
-
log(`Replacing with pendingReturn for session=${sessionID}, returnPrompt=${returnPrompt}`);
|
|
279
427
|
if (returnPrompt.startsWith("/")) {
|
|
280
428
|
lastGenericPart.text = "";
|
|
281
|
-
log(`Set part.text to empty string, will execute command`);
|
|
282
429
|
executeReturn(returnPrompt, sessionID).catch(console.error);
|
|
283
430
|
}
|
|
284
431
|
else {
|
|
285
432
|
lastGenericPart.text = returnPrompt;
|
|
286
|
-
log(`Set part.text to: "${lastGenericPart.text}", verification: ${lastGenericPart.text === returnPrompt}`);
|
|
287
433
|
}
|
|
288
434
|
pendingReturns.delete(sessionID);
|
|
289
435
|
hasActiveSubtask = false;
|
|
290
|
-
log(`After replacement, pendingReturns keys:`, Array.from(pendingReturns.keys()));
|
|
291
436
|
return;
|
|
292
437
|
}
|
|
293
438
|
// No pending return found, use generic replacement if configured
|
|
294
|
-
log(`No pendingReturn found, hasActiveSubtask=${hasActiveSubtask}`);
|
|
295
439
|
if (hasActiveSubtask && pluginConfig.replace_generic) {
|
|
296
|
-
log(`Using default replacement
|
|
440
|
+
log(`Using default generic replacement`);
|
|
297
441
|
lastGenericPart.text = pluginConfig.generic_return ?? DEFAULT_PROMPT;
|
|
298
442
|
hasActiveSubtask = false;
|
|
299
443
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,eAAe,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AAE3C,gBAAgB;AAChB,IAAI,OAAO,GAAkC,EAAE,CAAC;AAChD,IAAI,YAAY,GAAmB,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC;AAC3D,IAAI,MAAM,GAAQ,IAAI,CAAC;AACvB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AACjD,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;AACnD,MAAM,eAAe,GAAG,cAAc,CAAC,CAAC,4BAA4B;AACpE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACrD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACpD,6DAA6D;AAC7D,wEAAwE;AACxE,IAAI,oBAAoB,GAAkB,IAAI,CAAC;AAC/C,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,MAAM,gBAAgB,GACpB,mEAAmE,CAAC;AAEtE;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,KAAc,EACd,eAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACjD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3C,IAAI,EAAE,EAAC,EAAE,EAAE,SAAS,EAAC;SACtB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,GAAG,CAAC,6BAA6B,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAErF,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtB,OAAO,2BAA2B,CAAC;QACrC,CAAC;QAED,iCAAiC;QACjC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC;YACxD,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;YACjB,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM;YAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACpG,CAAC,CAAC,CAAC,CAAC;QAEL,4EAA4E;QAC5E,IAAI,iBAAiB,GAAG,QAAQ,CAAC;QACjC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC7C,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACrC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAC1E,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QACD,GAAG,CAAC,4CAA4C,iBAAiB,CAAC,MAAM,SAAS,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAErG,gCAAgC;QAChC,IAAI,gBAAuB,CAAC;QAC5B,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,sEAAsE;YACtE,gBAAgB,GAAG,eAAe;iBAC/B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;iBAC7D,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,GAAG,CAAC,2BAA2B,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,gBAAgB,CAAC,MAAM,WAAW,CAAC,CAAC;QACtG,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,wBAAwB;YACxB,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,GAAG,CAAC,cAAc,KAAK,WAAW,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,iBAAiB,CAAC;YACrC,GAAG,CAAC,aAAa,gBAAgB,CAAC,MAAM,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,qCAAqC;QACrC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtC,6EAA6E;oBAC7E,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE,CAAC;wBAC3D,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACrD,IAAI,WAAW,EAAE,CAAC;4BAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC1B,CAAC;wBACD,sCAAsC;wBACtC,SAAS;oBACX,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;oBACtE,4EAA4E;oBAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACzC,mDAAmD;wBACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;4BACnC,iFAAiF;4BACjF,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gCACxB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACrB,CAAC;iCAAM,CAAC;gCACN,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,OAAO,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,oCAAoC,CAAC,GAAG,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAY,EACZ,SAAiB;IAEjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACjE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9E,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,SAA4B,EAC5B,QAAgB,EAChB,SAAiB,EACjB,UAAuB,IAAI,GAAG,EAAE,EAChC,QAAgB,CAAC,EACjB,WAAmB,CAAC;IAEpB,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAClD,GAAG,CAAC,0BAA0B,EAAE;QAC9B,KAAK;QACL,SAAS,EAAE,SAAS,CAAC,GAAG,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrE;QACD,QAAQ;QACR,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;YAAE,SAAS;QAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhD,kEAAkE;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,WAAW,CAAC,SAAS,IAAI,QAAQ,CAAC;QAC1D,GAAG,CACD,YAAY,WAAW,CAAC,OAAO,iBAAiB,IAAI,cAAc,OAAO,WAAW,WAAW,CAAC,SAAS,cAAc,QAAQ,GAAG,CACnI,CAAC;QACF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAElD,iDAAiD;QACjD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5D,GAAG,CAAC,YAAY,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAC;QACjE,CAAC;QAED,iEAAiE;QACjE,IAAI,KAAwD,CAAC;QAC7D,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,KAAK,GAAG,EAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;QAChD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,SAAkB;YACxB,KAAK,EAAG,EAAE,CAAC,KAAgB,IAAI,SAAS;YACxC,KAAK;YACL,WAAW,EACR,EAAE,CAAC,WAAsB,IAAI,aAAa,WAAW,CAAC,OAAO,EAAE;YAClE,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC;QACnC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAEtD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,WAAW,GAAG,MAAM,gBAAgB,CACxC,SAAS,EACT,IAAI,EACJ,SAAS,EACT,OAAO,EACP,KAAK,GAAG,CAAC,EACT,QAAQ,CACT,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,MAAM,GAAW,KAAK,EAAE,GAAG,EAAE,EAAE;IACnC,QAAQ,EAAE,CAAC;IACX,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,YAAY,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,uBAAuB,UAAU,CAAC,MAAM,WAAW,EAAE,UAAU,CAAC,CAAC;IAErE,sDAAsD;IACtD,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,SAAiB;QAC1D,0CAA0C;QAC1C,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QACnC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QACrC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE9B,uFAAuF;YACvF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC;YAE3F,sDAAsD;YACtD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,CAAC,UAAU,CAAC,MAAM;oBAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,OAAO;oBAAE,IAAI,GAAG,OAAO,CAAC;YAC9B,CAAC;YAED,GAAG,CAAC,mBAAmB,OAAO,OAAO,OAAO,UAAU,IAAI,aAAa,SAAS,GAAG,CAAC,CAAC;YACrF,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,uFAAuF;YACvF,oBAAoB,GAAG,SAAS,CAAC;YAEjC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC3B,IAAI,EAAE,EAAC,EAAE,EAAE,SAAS,EAAC;oBACrB,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC;iBAChD,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,yBAAyB,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC/B,IAAI,EAAE,EAAC,EAAE,EAAE,SAAS,EAAC;gBACrB,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAC;aAC5C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,wBAAwB,EAAE,KAAK,EAC7B,KAA8D,EAC9D,MAAsB,EACtB,EAAE;YACF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACvC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7C,GAAG,CAAC,eAAe,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAEjB,mEAAmE;YACnE,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,IAAI,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE1C,oEAAoE;YACpE,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC;YAED,6CAA6C;YAC7C,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAClE,GAAG,CAAC,kCAAkC,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;YACjE,CAAC;YAED,iDAAiD;YACjD,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,0BAA0B,CAAC,CAAC;YACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC3C,GAAG,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACpE,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnC,GAAG,CAAC,gDAAgD,CAAC,CAAC;wBACtD,IAAI,CAAC,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;wBACxE,GAAG,CAAC,wCAAwC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC/E,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtC,GAAG,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7D,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,GAAG,CAAC,2CAA2C,CAAC,CAAC;wBACjD,IAAI,CAAC,IAAI,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;wBACpE,GAAG,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,2EAA2E;YAC3E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAClE,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CACtC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CACjC,CAAC;YACF,IAAI,CAAC,cAAc,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC9C,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM;gBAAE,OAAO;YAEtC,2CAA2C;YAC3C,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAC1C,MAAM,CAAC,QAAQ,EACf,QAAQ,EACR,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACtC,CAAC;QAED,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO;YAClC,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;YACnC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;YAC7C,IAAI,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAEtD,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,SAAS,GAAG,WAAW,WAAW,EAAE,SAAS,CAAC,CAAC,EAAC,EAAE,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;YAEnH,uEAAuE;YACvE,oDAAoD;YACpD,IAAI,CAAC,OAAO,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC/C,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC7C,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAE,CAAC;gBAE3C,gEAAgE;gBAChE,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC3C,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC/B,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACrF,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;4BACrB,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;4BAC/C,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC/D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,mEAAmE;gBACnE,gCAAgC;gBAChC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrE,sEAAsE;oBACtE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjE,GAAG,CAAC,oBAAoB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,qEAAqE;YACrE,IAAI,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,MAAM,kBAAkB,GAAG,oBAAoB,IAAI,KAAK,CAAC,SAAS,CAAC;gBACnE,GAAG,CAAC,2DAA2D,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,kBAAkB,GAAG,CAAC,CAAC;gBAC7I,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBAC7E,GAAG,CAAC,yCAAyC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;gBACjF,kBAAkB;gBAClB,oBAAoB,GAAG,IAAI,CAAC;YAC9B,CAAC;YAED,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAE,CAAC;gBAC3C,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBACpB,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACnD,CAAC;gBAED,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEjC,IAAI,GAAG,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO;YAClC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAExC,GAAG,CAAC,sBAAsB,KAAK,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAE3E,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,uCAAuC;gBACvC,OAAO;YACT,CAAC;YACD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE5D,GAAG,CAAC,mBAAmB,GAAG,aAAa,OAAO,YAAY,GAAG,KAAK,OAAO,eAAe,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAEvH,IAAI,GAAG,IAAI,GAAG,KAAK,OAAO,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxD,+CAA+C;gBAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,0BAA0B,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;oBACzE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAClC,GAAG,CAAC,eAAe,GAAG,iBAAiB,OAAO,GAAG,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,sCAAsC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC9D,8CAA8C;YAC9C,IAAI,eAAe,GAAQ,IAAI,CAAC;YAEhC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC3D,eAAe,GAAG,IAAI,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACpB,2BAA2B;gBAC3B,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC;oBACvD,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjC,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;wBAC1B,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC;oBACtC,CAAC;oBACD,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACjC,gBAAgB,GAAG,KAAK,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,iEAAiE;gBACjE,IAAI,gBAAgB,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;oBACrD,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACzC,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC,cAAc,IAAI,cAAc,CAAC;oBACrE,gBAAgB,GAAG,KAAK,CAAC;oBACzB,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,qCAAqC;YACrC,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,aAAa,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAG,CAAC;gBACpC,IAAI,CAAC,aAAa,CAAC,MAAM;oBAAE,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5E,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YAED,2BAA2B;YAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM;gBAAE,OAAO;YAE1C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAG,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3D,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/src/commands.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAK3C,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACtC,GAAG,EAAE,MAAM,GACV,aAAa,GAAG,SAAS,CAiB3B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAAC,CA4BjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CA8C5E"}
|
package/dist/src/commands.js
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
/// <reference types="bun-types" />
|
|
2
2
|
import { parseFrontmatter, getTemplateBody, parseParallelConfig } from "./parser";
|
|
3
|
+
// Normalize command name - try multiple variations to find a match
|
|
4
|
+
export function getConfig(configs, cmd) {
|
|
5
|
+
// Direct match
|
|
6
|
+
if (configs[cmd])
|
|
7
|
+
return configs[cmd];
|
|
8
|
+
// Try filename-only (last segment of path)
|
|
9
|
+
const filenameOnly = cmd.split("/").pop();
|
|
10
|
+
if (configs[filenameOnly])
|
|
11
|
+
return configs[filenameOnly];
|
|
12
|
+
// Try with slashes replaced by hyphens
|
|
13
|
+
const hyphenated = cmd.replace(/\//g, "-");
|
|
14
|
+
if (configs[hyphenated])
|
|
15
|
+
return configs[hyphenated];
|
|
16
|
+
// Try converting hyphens back to slashes
|
|
17
|
+
const slashed = cmd.replace(/-/g, "/");
|
|
18
|
+
if (configs[slashed])
|
|
19
|
+
return configs[slashed];
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
3
22
|
export async function loadCommandFile(name) {
|
|
4
23
|
const home = Bun.env.HOME ?? "";
|
|
5
24
|
const dirs = [
|
|
@@ -41,6 +60,7 @@ export async function buildManifest() {
|
|
|
41
60
|
const glob = new Bun.Glob("**/*.md");
|
|
42
61
|
for await (const file of glob.scan(dir)) {
|
|
43
62
|
const name = file.replace(/\.md$/, "").split("/").pop();
|
|
63
|
+
const pathKey = file.replace(/\.md$/, "");
|
|
44
64
|
const content = await Bun.file(`${dir}/${file}`).text();
|
|
45
65
|
const fm = parseFrontmatter(content);
|
|
46
66
|
const returnVal = fm.return;
|
|
@@ -50,16 +70,24 @@ export async function buildManifest() {
|
|
|
50
70
|
: [returnVal]
|
|
51
71
|
: [];
|
|
52
72
|
const parallelArr = parseParallelConfig(fm.parallel);
|
|
53
|
-
|
|
73
|
+
const config = {
|
|
54
74
|
return: returnArr,
|
|
55
75
|
parallel: parallelArr,
|
|
56
76
|
agent: fm.agent,
|
|
57
77
|
description: fm.description,
|
|
58
78
|
template: getTemplateBody(content),
|
|
59
79
|
};
|
|
80
|
+
// Store with filename-only key
|
|
81
|
+
manifest[name] = config;
|
|
82
|
+
// Also store with full relative path for subfolder commands
|
|
83
|
+
if (pathKey !== name) {
|
|
84
|
+
manifest[pathKey] = config;
|
|
85
|
+
}
|
|
60
86
|
}
|
|
61
87
|
}
|
|
62
|
-
catch {
|
|
88
|
+
catch (e) {
|
|
89
|
+
// Ignore errors scanning directories that don't exist
|
|
90
|
+
}
|
|
63
91
|
}
|
|
64
92
|
return manifest;
|
|
65
93
|
}
|
package/dist/src/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAGnC,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAGnC,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAGhF,mEAAmE;AACnE,MAAM,UAAU,SAAS,CACvB,OAAsC,EACtC,GAAW;IAEX,eAAe;IACf,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,2CAA2C;IAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;IAC3C,IAAI,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAExD,uCAAuC;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpD,yCAAyC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY;IAEZ,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,2BAA2B;QAClC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,oBAAoB;KAC1C,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,6CAA6C;QAC7C,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxB,OAAO,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,QAAQ,GAAkC,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,2BAA2B;QAClC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,oBAAoB;KAC1C,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;gBACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAE1C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxD,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC;gBAC5B,MAAM,SAAS,GAAG,SAAS;oBACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;wBACxB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,CAAC,SAAS,CAAC;oBACf,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAErD,MAAM,MAAM,GAAkB;oBAC5B,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,EAAE,CAAC,KAA2B;oBACrC,WAAW,EAAE,EAAE,CAAC,WAAiC;oBACjD,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;iBACnC,CAAC;gBAEF,+BAA+B;gBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBAExB,4DAA4D;gBAC5D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sDAAsD;QACxD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/src/parser.d.ts
CHANGED
|
@@ -3,4 +3,31 @@ export declare function parseFrontmatter(content: string): Record<string, unknow
|
|
|
3
3
|
export declare function getTemplateBody(content: string): string;
|
|
4
4
|
export declare function parseParallelItem(p: unknown): ParallelCommand | null;
|
|
5
5
|
export declare function parseParallelConfig(parallel: unknown): ParallelCommand[];
|
|
6
|
+
export type TurnReference = {
|
|
7
|
+
type: "lastN";
|
|
8
|
+
match: string;
|
|
9
|
+
count: number;
|
|
10
|
+
} | {
|
|
11
|
+
type: "specific";
|
|
12
|
+
match: string;
|
|
13
|
+
indices: number[];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Extract all $TURN references from a string
|
|
17
|
+
* - $TURN[n] -> last n messages
|
|
18
|
+
* - $TURN[:n] or $TURN[:2:5:8] -> specific indices (1-based from end)
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractTurnReferences(text: string): TurnReference[];
|
|
21
|
+
/**
|
|
22
|
+
* Check if text contains any $TURN references
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasTurnReferences(text: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Replace all $TURN references in text with the provided content map
|
|
27
|
+
*/
|
|
28
|
+
export declare function replaceTurnReferences(text: string, replacements: Map<string, string>): string;
|
|
29
|
+
export declare const extractSessionReferences: typeof extractTurnReferences;
|
|
30
|
+
export declare const hasSessionReferences: typeof hasTurnReferences;
|
|
31
|
+
export declare const replaceSessionReferences: typeof replaceTurnReferences;
|
|
32
|
+
export type SessionReference = TurnReference;
|
|
6
33
|
//# sourceMappingURL=parser.d.ts.map
|
package/dist/src/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAcpE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,EAAE,CAexE"}
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAcpE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,EAAE,CAexE;AAOD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAyBnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAMR;AAGD,eAAO,MAAM,wBAAwB,8BAAwB,CAAC;AAC9D,eAAO,MAAM,oBAAoB,0BAAoB,CAAC;AACtD,eAAO,MAAM,wBAAwB,8BAAwB,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC"}
|
package/dist/src/parser.js
CHANGED
|
@@ -47,4 +47,57 @@ export function parseParallelConfig(parallel) {
|
|
|
47
47
|
}
|
|
48
48
|
return [];
|
|
49
49
|
}
|
|
50
|
+
// $TURN[n] - last n messages
|
|
51
|
+
// $TURN[:n] or $TURN[:n:m:o] - specific messages at indices (1-based from end)
|
|
52
|
+
const TURN_LAST_N_PATTERN = "\\$TURN\\[(\\d+)\\]";
|
|
53
|
+
const TURN_SPECIFIC_PATTERN = "\\$TURN\\[([:\\d]+)\\]";
|
|
54
|
+
/**
|
|
55
|
+
* Extract all $TURN references from a string
|
|
56
|
+
* - $TURN[n] -> last n messages
|
|
57
|
+
* - $TURN[:n] or $TURN[:2:5:8] -> specific indices (1-based from end)
|
|
58
|
+
*/
|
|
59
|
+
export function extractTurnReferences(text) {
|
|
60
|
+
const refs = [];
|
|
61
|
+
// Match $TURN[...] patterns
|
|
62
|
+
const regex = /\$TURN\[([^\]]+)\]/g;
|
|
63
|
+
let match;
|
|
64
|
+
while ((match = regex.exec(text)) !== null) {
|
|
65
|
+
const inner = match[1];
|
|
66
|
+
if (inner.startsWith(":")) {
|
|
67
|
+
// Specific indices: $TURN[:2] or $TURN[:2:5:8]
|
|
68
|
+
const indices = inner.split(":").filter(Boolean).map(n => parseInt(n, 10));
|
|
69
|
+
if (indices.length > 0 && indices.every(n => !isNaN(n))) {
|
|
70
|
+
refs.push({ type: "specific", match: match[0], indices });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Last N: $TURN[5]
|
|
75
|
+
const count = parseInt(inner, 10);
|
|
76
|
+
if (!isNaN(count)) {
|
|
77
|
+
refs.push({ type: "lastN", match: match[0], count });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return refs;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if text contains any $TURN references
|
|
85
|
+
*/
|
|
86
|
+
export function hasTurnReferences(text) {
|
|
87
|
+
return /\$TURN\[[^\]]+\]/.test(text);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Replace all $TURN references in text with the provided content map
|
|
91
|
+
*/
|
|
92
|
+
export function replaceTurnReferences(text, replacements) {
|
|
93
|
+
let result = text;
|
|
94
|
+
for (const [pattern, replacement] of replacements) {
|
|
95
|
+
result = result.replaceAll(pattern, replacement);
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
// Keep old names as aliases for backward compat during transition
|
|
100
|
+
export const extractSessionReferences = extractTurnReferences;
|
|
101
|
+
export const hasSessionReferences = hasTurnReferences;
|
|
102
|
+
export const replaceSessionReferences = replaceTurnReferences;
|
|
50
103
|
//# sourceMappingURL=parser.js.map
|
package/dist/src/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC1C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,6BAA6B;YAC7B,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAS,CAAC,OAAO,EAAE,CAAC;QAC9D,OAAO,EAAC,OAAO,EAAG,CAAS,CAAC,OAAO,EAAE,SAAS,EAAG,CAAS,CAAC,SAAS,EAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ;aACZ,GAAG,CAAC,iBAAiB,CAAC;aACtB,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,6BAA6B;QAC7B,OAAO,QAAQ;aACZ,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,iBAAiB,CAAC;aACtB,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@openspoon/subtask2",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.7",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Opencode plugin for enhanced subtask control with return context and prompt chaining",
|
|
7
7
|
"main": "./dist/index.js",
|