@rockysoft/opencode-hybrid-workflow 1.0.1 → 1.1.1
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 +15 -0
- package/THIRD_PARTY_NOTICES.md +5 -0
- package/assets/integrations/impeccable/LICENSE +191 -0
- package/assets/integrations/impeccable/NOTICE.md +11 -0
- package/assets/integrations/impeccable/colorize.md +86 -0
- package/assets/integrations/impeccable/craft-floor.md +44 -0
- package/assets/integrations/impeccable/layout.md +84 -0
- package/assets/integrations/impeccable/polish.md +105 -0
- package/assets/integrations/impeccable/provenance.json +8 -0
- package/assets/integrations/impeccable/typeset.md +90 -0
- package/core/controller.mjs +1 -1
- package/core/design.mjs +5 -1
- package/core/plugin.mjs +6 -0
- package/docs/CHANGELOG.md +13 -0
- package/docs/images/22-design-guidance.png +0 -0
- package/docs/images/23-impeccable-saved.png +0 -0
- package/docs/impeccable.md +22 -0
- package/lib/config.mjs +1 -0
- package/lib/continuation-notice.mjs +5 -0
- package/lib/continuation.mjs +85 -0
- package/lib/impeccable.mjs +36 -0
- package/lib/native-result.mjs +31 -0
- package/lib/opencode-reviewer.mjs +3 -7
- package/lib/settings-rpc.mjs +1 -0
- package/lib/settings-service.mjs +8 -1
- package/package.json +1 -1
- package/sidebar/reader.mjs +6 -1
- package/sidebar/settings.mjs +5 -0
- package/tui.js +86 -70
package/tui.js
CHANGED
|
@@ -14,6 +14,7 @@ import { createReader, cards, number, money } from './sidebar/reader.mjs';
|
|
|
14
14
|
import { captureTotals } from './core/dashboard-state.js';
|
|
15
15
|
import { createSettingsUI } from './sidebar/settings.mjs';
|
|
16
16
|
import { legacyTotals } from './sidebar/legacy-totals.mjs';
|
|
17
|
+
import { continuationNotice } from './lib/continuation-notice.mjs';
|
|
17
18
|
export default Plugin.define({
|
|
18
19
|
id: 'Hybrid-Workflow',
|
|
19
20
|
setup(context) {
|
|
@@ -81,7 +82,7 @@ export default Plugin.define({
|
|
|
81
82
|
if (busy || !directory) return;
|
|
82
83
|
busy = true;
|
|
83
84
|
try {
|
|
84
|
-
const next = await read(directory);
|
|
85
|
+
const next = await read(directory, props.sessionID);
|
|
85
86
|
if (!disposed) {
|
|
86
87
|
setSnapshot(next);
|
|
87
88
|
setError('');
|
|
@@ -103,6 +104,10 @@ export default Plugin.define({
|
|
|
103
104
|
});
|
|
104
105
|
});
|
|
105
106
|
const totals = createMemo(() => snapshot() ? cards(snapshot(), saved.resets[snapshot().key]) : []);
|
|
107
|
+
const continuation = createMemo(() => {
|
|
108
|
+
const notice = snapshot()?.continuation;
|
|
109
|
+
return continuationNotice(notice, context.data.session.get(props.sessionID));
|
|
110
|
+
});
|
|
106
111
|
async function clear() {
|
|
107
112
|
const value = snapshot();
|
|
108
113
|
if (!value) return;
|
|
@@ -170,61 +175,72 @@ export default Plugin.define({
|
|
|
170
175
|
return _el$6;
|
|
171
176
|
}
|
|
172
177
|
}), null);
|
|
178
|
+
_$insert(_el$3, _$createComponent(Show, {
|
|
179
|
+
get when() {
|
|
180
|
+
return continuation();
|
|
181
|
+
},
|
|
182
|
+
get children() {
|
|
183
|
+
var _el$7 = _$createElement("text");
|
|
184
|
+
_$insert(_el$7, continuation);
|
|
185
|
+
_$effect(_$p => _$setProp(_el$7, "fg", context.theme.text.base, _$p));
|
|
186
|
+
return _el$7;
|
|
187
|
+
}
|
|
188
|
+
}), null);
|
|
173
189
|
_$insert(_el$3, _$createComponent(For, {
|
|
174
190
|
get each() {
|
|
175
191
|
return totals();
|
|
176
192
|
},
|
|
177
193
|
children: card => (() => {
|
|
178
|
-
var _el$
|
|
179
|
-
_el$
|
|
180
|
-
_el$
|
|
181
|
-
_el$
|
|
182
|
-
_el$
|
|
183
|
-
_el$
|
|
184
|
-
_el$17 = _$createElement("text"),
|
|
194
|
+
var _el$12 = _$createElement("box"),
|
|
195
|
+
_el$13 = _$createElement("text"),
|
|
196
|
+
_el$14 = _$createElement("b"),
|
|
197
|
+
_el$15 = _$createTextNode(` · `),
|
|
198
|
+
_el$16 = _$createElement("text"),
|
|
199
|
+
_el$17 = _$createTextNode(` tokens · `),
|
|
185
200
|
_el$18 = _$createElement("text"),
|
|
186
|
-
_el$19 = _$
|
|
187
|
-
_el$20 = _$
|
|
188
|
-
_el$21 = _$
|
|
189
|
-
_el$22 = _$
|
|
190
|
-
_el$23 = _$
|
|
191
|
-
|
|
192
|
-
_$insertNode(_el$11, _el$15);
|
|
193
|
-
_$insertNode(_el$11, _el$17);
|
|
194
|
-
_$insertNode(_el$11, _el$18);
|
|
195
|
-
_$insertNode(_el$11, _el$20);
|
|
196
|
-
_$insertNode(_el$11, _el$22);
|
|
197
|
-
_$setProp(_el$11, "flexDirection", "column");
|
|
201
|
+
_el$19 = _$createElement("text"),
|
|
202
|
+
_el$20 = _$createTextNode(`Input: `),
|
|
203
|
+
_el$21 = _$createElement("text"),
|
|
204
|
+
_el$22 = _$createTextNode(`Output: `),
|
|
205
|
+
_el$23 = _$createElement("text"),
|
|
206
|
+
_el$24 = _$createTextNode(`Cache: `);
|
|
198
207
|
_$insertNode(_el$12, _el$13);
|
|
208
|
+
_$insertNode(_el$12, _el$16);
|
|
209
|
+
_$insertNode(_el$12, _el$18);
|
|
210
|
+
_$insertNode(_el$12, _el$19);
|
|
211
|
+
_$insertNode(_el$12, _el$21);
|
|
212
|
+
_$insertNode(_el$12, _el$23);
|
|
213
|
+
_$setProp(_el$12, "flexDirection", "column");
|
|
199
214
|
_$insertNode(_el$13, _el$14);
|
|
200
|
-
_$
|
|
201
|
-
_$insert(_el$
|
|
202
|
-
_$
|
|
203
|
-
_$
|
|
204
|
-
_$insert(_el$
|
|
205
|
-
_$insert(_el$
|
|
206
|
-
_$
|
|
207
|
-
_$
|
|
208
|
-
_$
|
|
209
|
-
_$
|
|
210
|
-
_$
|
|
211
|
-
_$
|
|
212
|
-
_$insert(_el$
|
|
215
|
+
_$insertNode(_el$14, _el$15);
|
|
216
|
+
_$insert(_el$14, () => card.model ?? source().settings.models[card.who], _el$15);
|
|
217
|
+
_$insert(_el$14, () => card.effort, null);
|
|
218
|
+
_$insertNode(_el$16, _el$17);
|
|
219
|
+
_$insert(_el$16, () => number(card.total), _el$17);
|
|
220
|
+
_$insert(_el$16, () => card.status, null);
|
|
221
|
+
_$insert(_el$18, () => money(card.cost));
|
|
222
|
+
_$insertNode(_el$19, _el$20);
|
|
223
|
+
_$insert(_el$19, () => number(card.input), null);
|
|
224
|
+
_$insertNode(_el$21, _el$22);
|
|
225
|
+
_$insert(_el$21, () => number(card.output), null);
|
|
226
|
+
_$insertNode(_el$23, _el$24);
|
|
227
|
+
_$insert(_el$23, () => number(card.cache), null);
|
|
228
|
+
_$insert(_el$12, _$createComponent(Show, {
|
|
213
229
|
get when() {
|
|
214
230
|
return card.partial;
|
|
215
231
|
},
|
|
216
232
|
get children() {
|
|
217
|
-
var _el$
|
|
218
|
-
_el$
|
|
219
|
-
_el$
|
|
220
|
-
_el$
|
|
221
|
-
_$insertNode(_el$
|
|
222
|
-
_$insertNode(_el$
|
|
223
|
-
_$insertNode(_el$
|
|
224
|
-
_$insert(_el$
|
|
225
|
-
_$insert(_el$
|
|
226
|
-
_$effect(_$p => _$setProp(_el$
|
|
227
|
-
return _el$
|
|
233
|
+
var _el$25 = _$createElement("text"),
|
|
234
|
+
_el$26 = _$createTextNode(`Partial · `),
|
|
235
|
+
_el$27 = _$createTextNode(`/`),
|
|
236
|
+
_el$28 = _$createTextNode(` measured`);
|
|
237
|
+
_$insertNode(_el$25, _el$26);
|
|
238
|
+
_$insertNode(_el$25, _el$27);
|
|
239
|
+
_$insertNode(_el$25, _el$28);
|
|
240
|
+
_$insert(_el$25, () => card.measuredCalls, _el$27);
|
|
241
|
+
_$insert(_el$25, () => card.calls, _el$28);
|
|
242
|
+
_$effect(_$p => _$setProp(_el$25, "fg", context.theme.text.muted, _$p));
|
|
243
|
+
return _el$25;
|
|
228
244
|
}
|
|
229
245
|
}), null);
|
|
230
246
|
_$effect(_p$ => {
|
|
@@ -234,12 +250,12 @@ export default Plugin.define({
|
|
|
234
250
|
_v$4 = context.theme.text.muted,
|
|
235
251
|
_v$5 = context.theme.text.muted,
|
|
236
252
|
_v$6 = context.theme.text.muted;
|
|
237
|
-
_v$ !== _p$.e && (_p$.e = _$setProp(_el$
|
|
238
|
-
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
239
|
-
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
240
|
-
_v$4 !== _p$.o && (_p$.o = _$setProp(_el$
|
|
241
|
-
_v$5 !== _p$.i && (_p$.i = _$setProp(_el$
|
|
242
|
-
_v$6 !== _p$.n && (_p$.n = _$setProp(_el$
|
|
253
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$13, "fg", _v$, _p$.e));
|
|
254
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$16, "fg", _v$2, _p$.t));
|
|
255
|
+
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$18, "fg", _v$3, _p$.a));
|
|
256
|
+
_v$4 !== _p$.o && (_p$.o = _$setProp(_el$19, "fg", _v$4, _p$.o));
|
|
257
|
+
_v$5 !== _p$.i && (_p$.i = _$setProp(_el$21, "fg", _v$5, _p$.i));
|
|
258
|
+
_v$6 !== _p$.n && (_p$.n = _$setProp(_el$23, "fg", _v$6, _p$.n));
|
|
243
259
|
return _p$;
|
|
244
260
|
}, {
|
|
245
261
|
e: undefined,
|
|
@@ -249,7 +265,7 @@ export default Plugin.define({
|
|
|
249
265
|
i: undefined,
|
|
250
266
|
n: undefined
|
|
251
267
|
});
|
|
252
|
-
return _el$
|
|
268
|
+
return _el$12;
|
|
253
269
|
})()
|
|
254
270
|
}), null);
|
|
255
271
|
_$insert(_el$3, _$createComponent(Show, {
|
|
@@ -258,32 +274,32 @@ export default Plugin.define({
|
|
|
258
274
|
},
|
|
259
275
|
get children() {
|
|
260
276
|
return [(() => {
|
|
261
|
-
var _el$
|
|
262
|
-
_$insert(_el$
|
|
263
|
-
_$effect(_$p => _$setProp(_el$
|
|
264
|
-
return _el$
|
|
277
|
+
var _el$8 = _$createElement("text");
|
|
278
|
+
_$insert(_el$8, () => snapshot().task ? 'Project bridge usage · USD' : 'No bridge calls in this project');
|
|
279
|
+
_$effect(_$p => _$setProp(_el$8, "fg", context.theme.text.muted, _$p));
|
|
280
|
+
return _el$8;
|
|
265
281
|
})(), (() => {
|
|
266
|
-
var _el$
|
|
267
|
-
_el$
|
|
268
|
-
_$insertNode(_el$
|
|
269
|
-
_$setProp(_el$
|
|
270
|
-
_$setProp(_el$
|
|
271
|
-
_$insertNode(_el$
|
|
272
|
-
_$setProp(_el$
|
|
273
|
-
_$insert(_el$
|
|
282
|
+
var _el$9 = _$createElement("box"),
|
|
283
|
+
_el$0 = _$createElement("text");
|
|
284
|
+
_$insertNode(_el$9, _el$0);
|
|
285
|
+
_$setProp(_el$9, "flexDirection", "row");
|
|
286
|
+
_$setProp(_el$9, "gap", 2);
|
|
287
|
+
_$insertNode(_el$0, _$createTextNode(`[Clear totals]`));
|
|
288
|
+
_$setProp(_el$0, "onMouseDown", clear);
|
|
289
|
+
_$insert(_el$9, _$createComponent(Show, {
|
|
274
290
|
get when() {
|
|
275
291
|
return saved.resets[snapshot()?.key];
|
|
276
292
|
},
|
|
277
293
|
get children() {
|
|
278
|
-
var _el$
|
|
279
|
-
_$insertNode(_el$
|
|
280
|
-
_$setProp(_el$
|
|
281
|
-
_$effect(_$p => _$setProp(_el$
|
|
282
|
-
return _el$
|
|
294
|
+
var _el$10 = _$createElement("text");
|
|
295
|
+
_$insertNode(_el$10, _$createTextNode(`[Restore]`));
|
|
296
|
+
_$setProp(_el$10, "onMouseDown", restore);
|
|
297
|
+
_$effect(_$p => _$setProp(_el$10, "fg", context.theme.text.muted, _$p));
|
|
298
|
+
return _el$10;
|
|
283
299
|
}
|
|
284
300
|
}), null);
|
|
285
|
-
_$effect(_$p => _$setProp(_el$
|
|
286
|
-
return _el$
|
|
301
|
+
_$effect(_$p => _$setProp(_el$0, "fg", context.theme.text.muted, _$p));
|
|
302
|
+
return _el$9;
|
|
287
303
|
})()];
|
|
288
304
|
}
|
|
289
305
|
}), null);
|