@trevonistrevon/pi-loop 0.5.7 → 0.5.9
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/.release-please-manifest.json +3 -0
- package/Dockerfile +17 -0
- package/coverage/coverage-final.json +28 -27
- package/coverage/index.html +47 -47
- package/coverage/src/commands/index.html +15 -15
- package/coverage/src/commands/loop-command.ts.html +3 -3
- package/coverage/src/commands/tasks-command.ts.html +23 -23
- package/coverage/src/coordinator.ts.html +20 -20
- package/coverage/src/goal-coordinator.ts.html +1 -1
- package/coverage/src/goal-reducer.ts.html +1 -1
- package/coverage/src/goal-store.ts.html +1 -1
- package/coverage/src/goal-verifier.ts.html +1 -1
- package/coverage/src/index.html +42 -42
- package/coverage/src/index.ts.html +122 -74
- package/coverage/src/loop-parse.ts.html +61 -61
- package/coverage/src/loop-reducer.ts.html +25 -25
- package/coverage/src/monitor-completion-coordinator.ts.html +3 -3
- package/coverage/src/monitor-manager.ts.html +73 -67
- package/coverage/src/monitor-reducer.ts.html +27 -27
- package/coverage/src/notification-reducer.ts.html +7 -7
- package/coverage/src/reducer-backed-store.ts.html +53 -53
- package/coverage/src/runtime/index.html +66 -51
- package/coverage/src/runtime/monitor-ondone-runtime.ts.html +39 -39
- package/coverage/src/runtime/notification-runtime.ts.html +14 -14
- package/coverage/src/runtime/scope.ts.html +34 -34
- package/coverage/src/runtime/session-runtime.ts.html +63 -57
- package/coverage/src/runtime/task-backlog-runtime.ts.html +48 -48
- package/coverage/src/runtime/task-events.ts.html +208 -0
- package/coverage/src/runtime/task-rpc.ts.html +88 -82
- package/coverage/src/scheduler.ts.html +34 -34
- package/coverage/src/store.ts.html +21 -21
- package/coverage/src/task-backlog-coordinator.ts.html +8 -8
- package/coverage/src/task-reducer.ts.html +39 -39
- package/coverage/src/task-store.ts.html +55 -55
- package/coverage/src/tools/index.html +43 -43
- package/coverage/src/tools/loop-tools.ts.html +94 -94
- package/coverage/src/tools/monitor-tools.ts.html +53 -53
- package/coverage/src/tools/native-task-tools.ts.html +99 -78
- package/coverage/src/trigger-system.ts.html +8 -8
- package/coverage/src/ui/index.html +1 -1
- package/coverage/src/ui/widget.ts.html +5 -5
- package/dist/commands/tasks-command.js +12 -9
- package/dist/index.js +34 -19
- package/dist/monitor-manager.d.ts +4 -1
- package/dist/monitor-manager.js +8 -4
- package/dist/runtime/session-runtime.js +3 -1
- package/dist/runtime/task-events.d.ts +15 -0
- package/dist/runtime/task-events.js +13 -0
- package/dist/runtime/task-rpc.js +2 -0
- package/dist/tools/native-task-tools.js +20 -9
- package/docker-compose.yml +12 -0
- package/package.json +1 -1
- package/release-please-config.json +9 -0
- package/src/commands/tasks-command.ts +9 -9
- package/src/index.ts +37 -21
- package/src/monitor-manager.ts +14 -4
- package/src/runtime/session-runtime.ts +3 -1
- package/src/runtime/task-events.ts +41 -0
- package/src/runtime/task-rpc.ts +2 -0
- package/src/tools/native-task-tools.ts +16 -9
- package/vitest.config.ts +11 -7
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/runtime/task-events.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/runtime</a> task-events.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>1/1</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>1/1</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
108
|
+
<span class="cline-any cline-neutral"> </span>
|
|
109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
110
|
+
<span class="cline-any cline-neutral"> </span>
|
|
111
|
+
<span class="cline-any cline-neutral"> </span>
|
|
112
|
+
<span class="cline-any cline-neutral"> </span>
|
|
113
|
+
<span class="cline-any cline-neutral"> </span>
|
|
114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
115
|
+
<span class="cline-any cline-neutral"> </span>
|
|
116
|
+
<span class="cline-any cline-neutral"> </span>
|
|
117
|
+
<span class="cline-any cline-neutral"> </span>
|
|
118
|
+
<span class="cline-any cline-neutral"> </span>
|
|
119
|
+
<span class="cline-any cline-neutral"> </span>
|
|
120
|
+
<span class="cline-any cline-neutral"> </span>
|
|
121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
122
|
+
<span class="cline-any cline-neutral"> </span>
|
|
123
|
+
<span class="cline-any cline-neutral"> </span>
|
|
124
|
+
<span class="cline-any cline-neutral"> </span>
|
|
125
|
+
<span class="cline-any cline-neutral"> </span>
|
|
126
|
+
<span class="cline-any cline-neutral"> </span>
|
|
127
|
+
<span class="cline-any cline-neutral"> </span>
|
|
128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
133
|
+
<span class="cline-any cline-neutral"> </span>
|
|
134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
136
|
+
<span class="cline-any cline-yes">76x</span>
|
|
137
|
+
<span class="cline-any cline-neutral"> </span>
|
|
138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
139
|
+
<span class="cline-any cline-neutral"> </span>
|
|
140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
145
|
+
<span class="cline-any cline-neutral"> </span>
|
|
146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
148
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
149
|
+
import type { TaskEntry, TaskStatus } from "../task-types.js";
|
|
150
|
+
|
|
151
|
+
export type NativeTaskEventName =
|
|
152
|
+
| "tasks:created"
|
|
153
|
+
| "tasks:started"
|
|
154
|
+
| "tasks:completed"
|
|
155
|
+
| "tasks:reopened"
|
|
156
|
+
| "tasks:updated"
|
|
157
|
+
| "tasks:deleted";
|
|
158
|
+
|
|
159
|
+
export interface NativeTaskEventPayload {
|
|
160
|
+
taskId: string;
|
|
161
|
+
subject: string;
|
|
162
|
+
description: string;
|
|
163
|
+
status: TaskStatus;
|
|
164
|
+
previousStatus?: TaskStatus;
|
|
165
|
+
createdAt: number;
|
|
166
|
+
updatedAt: number;
|
|
167
|
+
completedAt?: number;
|
|
168
|
+
metadata?: Record<string, unknown>;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export function emitNativeTaskEvent(
|
|
172
|
+
pi: ExtensionAPI,
|
|
173
|
+
name: NativeTaskEventName,
|
|
174
|
+
entry: TaskEntry,
|
|
175
|
+
previousStatus?: TaskStatus,
|
|
176
|
+
): void {
|
|
177
|
+
pi.events.emit(name, {
|
|
178
|
+
taskId: entry.id,
|
|
179
|
+
subject: entry.subject,
|
|
180
|
+
description: entry.description,
|
|
181
|
+
status: entry.status,
|
|
182
|
+
previousStatus,
|
|
183
|
+
createdAt: entry.createdAt,
|
|
184
|
+
updatedAt: entry.updatedAt,
|
|
185
|
+
completedAt: entry.completedAt,
|
|
186
|
+
metadata: entry.metadata,
|
|
187
|
+
} satisfies NativeTaskEventPayload);
|
|
188
|
+
}
|
|
189
|
+
</pre></td></tr></table></pre>
|
|
190
|
+
|
|
191
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
192
|
+
</div><!-- /wrapper -->
|
|
193
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
194
|
+
Code coverage generated by
|
|
195
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
196
|
+
at 2026-06-23T21:49:18.784Z
|
|
197
|
+
</div>
|
|
198
|
+
<script src="../../prettify.js"></script>
|
|
199
|
+
<script>
|
|
200
|
+
window.onload = function () {
|
|
201
|
+
prettyPrint();
|
|
202
|
+
};
|
|
203
|
+
</script>
|
|
204
|
+
<script src="../../sorter.js"></script>
|
|
205
|
+
<script src="../../block-navigation.js"></script>
|
|
206
|
+
</body>
|
|
207
|
+
</html>
|
|
208
|
+
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">84.93% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>62/73</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">79.16% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>19/24</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">81.25% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>13/16</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">86.76% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>59/68</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -213,7 +213,9 @@
|
|
|
213
213
|
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
214
|
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
215
|
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
217
219
|
<span class="cline-any cline-neutral"> </span>
|
|
218
220
|
<span class="cline-any cline-neutral"> </span>
|
|
219
221
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -244,119 +246,121 @@
|
|
|
244
246
|
<span class="cline-any cline-neutral"> </span>
|
|
245
247
|
<span class="cline-any cline-neutral"> </span>
|
|
246
248
|
<span class="cline-any cline-neutral"> </span>
|
|
247
|
-
<span class="cline-any cline-yes">61x</span>
|
|
248
249
|
<span class="cline-any cline-neutral"> </span>
|
|
250
|
+
<span class="cline-any cline-yes">73x</span>
|
|
249
251
|
<span class="cline-any cline-neutral"> </span>
|
|
250
|
-
<span class="cline-any cline-yes">61x</span>
|
|
251
|
-
<span class="cline-any cline-yes">61x</span>
|
|
252
|
-
<span class="cline-any cline-yes">45x</span>
|
|
253
252
|
<span class="cline-any cline-neutral"> </span>
|
|
254
|
-
<span class="cline-any cline-yes">
|
|
255
|
-
<span class="cline-any cline-yes">
|
|
256
|
-
<span class="cline-any cline-yes">
|
|
257
|
-
<span class="cline-any cline-yes">2x</span>
|
|
258
|
-
<span class="cline-any cline-yes">2x</span>
|
|
253
|
+
<span class="cline-any cline-yes">65x</span>
|
|
254
|
+
<span class="cline-any cline-yes">65x</span>
|
|
255
|
+
<span class="cline-any cline-yes">47x</span>
|
|
259
256
|
<span class="cline-any cline-neutral"> </span>
|
|
260
|
-
<span class="cline-any cline-yes">
|
|
257
|
+
<span class="cline-any cline-yes">65x</span>
|
|
258
|
+
<span class="cline-any cline-yes">3x</span>
|
|
259
|
+
<span class="cline-any cline-yes">3x</span>
|
|
260
|
+
<span class="cline-any cline-yes">3x</span>
|
|
261
|
+
<span class="cline-any cline-yes">3x</span>
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-yes">65x</span>
|
|
261
264
|
<span class="cline-any cline-neutral"> </span>
|
|
262
265
|
<span class="cline-any cline-neutral"> </span>
|
|
263
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-yes">4x</span>
|
|
268
|
+
<span class="cline-any cline-yes">3x</span>
|
|
269
|
+
<span class="cline-any cline-yes">1x</span>
|
|
270
|
+
<span class="cline-any cline-yes">1x</span>
|
|
264
271
|
<span class="cline-any cline-yes">1x</span>
|
|
265
272
|
<span class="cline-any cline-yes">1x</span>
|
|
266
|
-
<span class="cline-any cline-no"> </span>
|
|
267
|
-
<span class="cline-any cline-no"> </span>
|
|
268
|
-
<span class="cline-any cline-no"> </span>
|
|
269
|
-
<span class="cline-any cline-no"> </span>
|
|
270
273
|
<span class="cline-any cline-no"> </span>
|
|
271
274
|
<span class="cline-any cline-no"> </span>
|
|
272
275
|
<span class="cline-any cline-neutral"> </span>
|
|
273
|
-
<span class="cline-any cline-
|
|
274
|
-
<span class="cline-any cline-
|
|
275
|
-
<span class="cline-any cline-
|
|
276
|
-
<span class="cline-any cline-
|
|
277
|
-
<span class="cline-any cline-
|
|
276
|
+
<span class="cline-any cline-yes">1x</span>
|
|
277
|
+
<span class="cline-any cline-yes">1x</span>
|
|
278
|
+
<span class="cline-any cline-yes">1x</span>
|
|
279
|
+
<span class="cline-any cline-yes">1x</span>
|
|
280
|
+
<span class="cline-any cline-yes">1x</span>
|
|
278
281
|
<span class="cline-any cline-no"> </span>
|
|
279
282
|
<span class="cline-any cline-neutral"> </span>
|
|
280
|
-
<span class="cline-any cline-
|
|
283
|
+
<span class="cline-any cline-yes">1x</span>
|
|
281
284
|
<span class="cline-any cline-neutral"> </span>
|
|
282
285
|
<span class="cline-any cline-neutral"> </span>
|
|
283
286
|
<span class="cline-any cline-neutral"> </span>
|
|
284
287
|
<span class="cline-any cline-neutral"> </span>
|
|
285
288
|
<span class="cline-any cline-neutral"> </span>
|
|
286
289
|
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-
|
|
290
|
+
<span class="cline-any cline-yes">1x</span>
|
|
288
291
|
<span class="cline-any cline-neutral"> </span>
|
|
289
292
|
<span class="cline-any cline-no"> </span>
|
|
290
293
|
<span class="cline-any cline-neutral"> </span>
|
|
291
294
|
<span class="cline-any cline-neutral"> </span>
|
|
292
295
|
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
295
|
-
<span class="cline-any cline-yes">
|
|
296
|
+
<span class="cline-any cline-yes">2x</span>
|
|
297
|
+
<span class="cline-any cline-yes">2x</span>
|
|
298
|
+
<span class="cline-any cline-yes">2x</span>
|
|
296
299
|
<span class="cline-any cline-neutral"> </span>
|
|
297
300
|
<span class="cline-any cline-neutral"> </span>
|
|
298
301
|
<span class="cline-any cline-neutral"> </span>
|
|
299
302
|
<span class="cline-any cline-neutral"> </span>
|
|
300
|
-
<span class="cline-any cline-yes">
|
|
301
|
-
<span class="cline-any cline-yes">
|
|
303
|
+
<span class="cline-any cline-yes">2x</span>
|
|
304
|
+
<span class="cline-any cline-yes">2x</span>
|
|
305
|
+
<span class="cline-any cline-yes">4x</span>
|
|
302
306
|
<span class="cline-any cline-neutral"> </span>
|
|
303
307
|
<span class="cline-any cline-neutral"> </span>
|
|
304
308
|
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-yes">
|
|
306
|
-
<span class="cline-any cline-yes">
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
308
|
-
<span class="cline-any cline-yes">
|
|
309
|
-
<span class="cline-any cline-yes">
|
|
309
|
+
<span class="cline-any cline-yes">43x</span>
|
|
310
|
+
<span class="cline-any cline-yes">3x</span>
|
|
311
|
+
<span class="cline-any cline-yes">3x</span>
|
|
312
|
+
<span class="cline-any cline-yes">3x</span>
|
|
313
|
+
<span class="cline-any cline-yes">3x</span>
|
|
310
314
|
<span class="cline-any cline-no"> </span>
|
|
311
315
|
<span class="cline-any cline-no"> </span>
|
|
312
316
|
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-yes">
|
|
314
|
-
<span class="cline-any cline-yes">
|
|
315
|
-
<span class="cline-any cline-yes">
|
|
316
|
-
<span class="cline-any cline-yes">
|
|
317
|
-
<span class="cline-any cline-yes">
|
|
317
|
+
<span class="cline-any cline-yes">3x</span>
|
|
318
|
+
<span class="cline-any cline-yes">3x</span>
|
|
319
|
+
<span class="cline-any cline-yes">3x</span>
|
|
320
|
+
<span class="cline-any cline-yes">3x</span>
|
|
321
|
+
<span class="cline-any cline-yes">3x</span>
|
|
318
322
|
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">
|
|
323
|
+
<span class="cline-any cline-yes">3x</span>
|
|
320
324
|
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-yes">
|
|
325
|
+
<span class="cline-any cline-yes">3x</span>
|
|
322
326
|
<span class="cline-any cline-neutral"> </span>
|
|
323
327
|
<span class="cline-any cline-no"> </span>
|
|
324
328
|
<span class="cline-any cline-neutral"> </span>
|
|
325
329
|
<span class="cline-any cline-neutral"> </span>
|
|
326
330
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-yes">
|
|
331
|
+
<span class="cline-any cline-yes">40x</span>
|
|
328
332
|
<span class="cline-any cline-neutral"> </span>
|
|
329
333
|
<span class="cline-any cline-neutral"> </span>
|
|
330
334
|
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-yes">
|
|
332
|
-
<span class="cline-any cline-yes">
|
|
333
|
-
<span class="cline-any cline-yes">
|
|
334
|
-
<span class="cline-any cline-yes">
|
|
335
|
-
<span class="cline-any cline-yes">
|
|
335
|
+
<span class="cline-any cline-yes">6x</span>
|
|
336
|
+
<span class="cline-any cline-yes">2x</span>
|
|
337
|
+
<span class="cline-any cline-yes">2x</span>
|
|
338
|
+
<span class="cline-any cline-yes">2x</span>
|
|
339
|
+
<span class="cline-any cline-yes">2x</span>
|
|
336
340
|
<span class="cline-any cline-no"> </span>
|
|
337
341
|
<span class="cline-any cline-no"> </span>
|
|
338
342
|
<span class="cline-any cline-neutral"> </span>
|
|
339
|
-
<span class="cline-any cline-yes">
|
|
340
|
-
<span class="cline-any cline-yes">
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
342
|
-
<span class="cline-any cline-yes">
|
|
343
|
-
<span class="cline-any cline-yes">
|
|
343
|
+
<span class="cline-any cline-yes">2x</span>
|
|
344
|
+
<span class="cline-any cline-yes">2x</span>
|
|
345
|
+
<span class="cline-any cline-yes">2x</span>
|
|
346
|
+
<span class="cline-any cline-yes">2x</span>
|
|
347
|
+
<span class="cline-any cline-yes">2x</span>
|
|
344
348
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-yes">
|
|
349
|
+
<span class="cline-any cline-yes">2x</span>
|
|
346
350
|
<span class="cline-any cline-neutral"> </span>
|
|
347
351
|
<span class="cline-any cline-neutral"> </span>
|
|
348
352
|
<span class="cline-any cline-neutral"> </span>
|
|
349
353
|
<span class="cline-any cline-neutral"> </span>
|
|
350
|
-
<span class="cline-any cline-yes">
|
|
354
|
+
<span class="cline-any cline-yes">2x</span>
|
|
351
355
|
<span class="cline-any cline-neutral"> </span>
|
|
352
356
|
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-yes">
|
|
354
|
-
<span class="cline-any cline-yes">
|
|
355
|
-
<span class="cline-any cline-yes">
|
|
356
|
-
<span class="cline-any cline-yes">
|
|
357
|
+
<span class="cline-any cline-yes">4x</span>
|
|
358
|
+
<span class="cline-any cline-yes">4x</span>
|
|
359
|
+
<span class="cline-any cline-yes">4x</span>
|
|
360
|
+
<span class="cline-any cline-yes">4x</span>
|
|
357
361
|
<span class="cline-any cline-neutral"> </span>
|
|
358
362
|
<span class="cline-any cline-neutral"> </span>
|
|
359
|
-
<span class="cline-any cline-yes">
|
|
363
|
+
<span class="cline-any cline-yes">73x</span>
|
|
360
364
|
<span class="cline-any cline-neutral"> </span>
|
|
361
365
|
<span class="cline-any cline-neutral"> </span>
|
|
362
366
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -367,6 +371,7 @@
|
|
|
367
371
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
368
372
|
import type { TaskStore } from "../task-store.js";
|
|
369
373
|
import type { LoopEntry } from "../types.js";
|
|
374
|
+
import { emitNativeTaskEvent } from "./task-events.js";
|
|
370
375
|
|
|
371
376
|
export interface TaskRuntimeBridgeOptions {
|
|
372
377
|
pi: ExtensionAPI;
|
|
@@ -411,30 +416,30 @@ export function createTaskRuntimeBridge(options: TaskRuntimeBridgeOptions): Task
|
|
|
411
416
|
}
|
|
412
417
|
|
|
413
418
|
async function autoCreateTask(entry: LoopEntry): Promise<string | undefined> {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
const
|
|
418
|
-
const taskId =
|
|
419
|
-
const timer = <span class="
|
|
419
|
+
if (!entry.autoTask) return undefined;
|
|
420
|
+
if (isTasksAvailable()) {
|
|
421
|
+
try {
|
|
422
|
+
const requestId = randomUUID();
|
|
423
|
+
const taskId = await new Promise<string | undefined>((resolve) => {
|
|
424
|
+
const timer = <span class="fstat-no" title="function not covered" >setTimeout(() => {</span>
|
|
420
425
|
<span class="cstat-no" title="statement not covered" > unsub();</span>
|
|
421
426
|
<span class="cstat-no" title="statement not covered" > resolve(undefined);</span>
|
|
422
427
|
}, 5000);
|
|
423
|
-
const unsub =
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
const reply =
|
|
427
|
-
|
|
428
|
-
else <span class="cstat-no" title="statement not covered" >resolve(undefined);</span>
|
|
428
|
+
const unsub = pi.events.on(`tasks:rpc:create:reply:${requestId}`, (raw: unknown) => {
|
|
429
|
+
unsub();
|
|
430
|
+
clearTimeout(timer);
|
|
431
|
+
const reply = raw as { success: boolean; data?: { id: string } };
|
|
432
|
+
if (reply.success && reply.data) resolve(reply.data.id);
|
|
433
|
+
else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>resolve(undefined);</span>
|
|
429
434
|
});
|
|
430
|
-
|
|
435
|
+
pi.events.emit("tasks:rpc:create", {
|
|
431
436
|
requestId,
|
|
432
437
|
subject: entry.prompt.slice(0, 80),
|
|
433
438
|
description: `Auto-created from loop #${entry.id}`,
|
|
434
439
|
metadata: { loopId: entry.id, trigger: entry.trigger },
|
|
435
440
|
});
|
|
436
441
|
});
|
|
437
|
-
|
|
442
|
+
return taskId;
|
|
438
443
|
} catch {
|
|
439
444
|
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
440
445
|
}
|
|
@@ -447,6 +452,7 @@ export function createTaskRuntimeBridge(options: TaskRuntimeBridgeOptions): Task
|
|
|
447
452
|
`Auto-created from loop #${entry.id}`,
|
|
448
453
|
{ loopId: entry.id, trigger: entry.trigger },
|
|
449
454
|
);
|
|
455
|
+
emitNativeTaskEvent(pi, "tasks:created", task);
|
|
450
456
|
onNativeTaskCreated?.(nativeTaskStore);
|
|
451
457
|
return task.id;
|
|
452
458
|
}
|
|
@@ -474,7 +480,7 @@ export function createTaskRuntimeBridge(options: TaskRuntimeBridgeOptions): Task
|
|
|
474
480
|
}
|
|
475
481
|
}
|
|
476
482
|
|
|
477
|
-
return getNativeTaskStore()?.pendingCount() ??
|
|
483
|
+
return getNativeTaskStore()?.pendingCount() ?? -1;
|
|
478
484
|
}
|
|
479
485
|
|
|
480
486
|
async function cleanDoneTasks(): Promise<void> {
|
|
@@ -520,7 +526,7 @@ export function createTaskRuntimeBridge(options: TaskRuntimeBridgeOptions): Task
|
|
|
520
526
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
521
527
|
Code coverage generated by
|
|
522
528
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
523
|
-
at 2026-06-
|
|
529
|
+
at 2026-06-23T21:49:18.784Z
|
|
524
530
|
</div>
|
|
525
531
|
<script src="../../prettify.js"></script>
|
|
526
532
|
<script>
|