@sbugallo/opencode-vpet 0.1.1 → 0.3.0
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 +4 -5
- package/dist/adapters/opencode/server-plugin.d.ts +78 -0
- package/dist/adapters/opencode/server-plugin.d.ts.map +1 -0
- package/dist/adapters/opencode/session-messages.d.ts +4 -9
- package/dist/adapters/opencode/session-messages.d.ts.map +1 -1
- package/dist/adapters/opencode/usage-event-mapper.d.ts +6 -3
- package/dist/adapters/opencode/usage-event-mapper.d.ts.map +1 -1
- package/dist/adapters/opencode/vpet-toast.d.ts +4 -2
- package/dist/adapters/opencode/vpet-toast.d.ts.map +1 -1
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +4 -4
- package/dist/commands/vpet-command-result.d.ts +2 -2
- package/dist/commands/vpet-command-result.d.ts.map +1 -1
- package/dist/commands/vpet-freeze.d.ts +1 -5
- package/dist/commands/vpet-freeze.d.ts.map +1 -1
- package/dist/commands/vpet-set.d.ts +0 -2
- package/dist/commands/vpet-set.d.ts.map +1 -1
- package/dist/commands/vpet-spawn.d.ts +0 -2
- package/dist/commands/vpet-spawn.d.ts.map +1 -1
- package/dist/commands/vpet-unfreeze.d.ts +1 -5
- package/dist/commands/vpet-unfreeze.d.ts.map +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +535 -470
- package/dist/index.js.map +22 -21
- package/dist/package.json +10 -0
- package/dist/rpc.d.ts +32 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/tui/sidebar-card.d.ts +6 -0
- package/dist/tui/sidebar-card.d.ts.map +1 -1
- package/dist/tui/theme.d.ts +34 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/vpet-command-layer.d.ts +33 -5
- package/dist/tui/vpet-command-layer.d.ts.map +1 -1
- package/dist/tui/vpet-dex-dialog.d.ts +2 -2
- package/dist/tui/vpet-dex-dialog.d.ts.map +1 -1
- package/dist/tui/vpet-history-dialog.d.ts +2 -2
- package/dist/tui/vpet-history-dialog.d.ts.map +1 -1
- package/dist/tui.d.ts +23 -12
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +220 -78
- package/dist/tui.js.map +11 -8
- package/package.json +9 -12
- package/dist/adapters/opencode/create-server-hooks.d.ts +0 -39
- package/dist/adapters/opencode/create-server-hooks.d.ts.map +0 -1
package/dist/tui.js
CHANGED
|
@@ -1,7 +1,81 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// src/tui.tsx
|
|
3
|
+
import { Plugin } from "@opencode/plugin/tui";
|
|
3
4
|
import { createSignal } from "solid-js";
|
|
4
5
|
|
|
6
|
+
// src/adapters/opencode/vpet-toast.ts
|
|
7
|
+
var toVpetToastPayload = (data) => {
|
|
8
|
+
if (typeof data !== "object" || data === null || Array.isArray(data))
|
|
9
|
+
return;
|
|
10
|
+
const { title, message, variant, duration } = data;
|
|
11
|
+
if (typeof title !== "string" || typeof message !== "string" || variant !== "info" && variant !== "success" && variant !== "warning" || typeof duration !== "number") {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
return { title, message, variant, duration };
|
|
15
|
+
};
|
|
16
|
+
var assertNever = (value) => {
|
|
17
|
+
throw new Error(`Unhandled VPet toast event: ${JSON.stringify(value)}`);
|
|
18
|
+
};
|
|
19
|
+
var selectName = (node, language) => {
|
|
20
|
+
switch (language) {
|
|
21
|
+
case "en":
|
|
22
|
+
return node.nameEn;
|
|
23
|
+
case "jp":
|
|
24
|
+
return node.nameJp;
|
|
25
|
+
default:
|
|
26
|
+
return assertNever(language);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var namedPayload = (nodeId, language, catalog) => {
|
|
30
|
+
const node = catalog.byId.get(nodeId);
|
|
31
|
+
return node === undefined ? undefined : selectName(node, language);
|
|
32
|
+
};
|
|
33
|
+
var formatVpetToast = (event, language, catalog) => {
|
|
34
|
+
switch (event.kind) {
|
|
35
|
+
case "spawn": {
|
|
36
|
+
const name = namedPayload(event.nodeId, language, catalog);
|
|
37
|
+
return name === undefined ? undefined : {
|
|
38
|
+
title: "VPet",
|
|
39
|
+
message: `Spawned ${name} (Generation ${event.generation}).`,
|
|
40
|
+
variant: "success",
|
|
41
|
+
duration: 5000
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
case "freeze":
|
|
45
|
+
return { title: "VPet", message: "Digimon progression frozen.", variant: "info", duration: 3000 };
|
|
46
|
+
case "unfreeze":
|
|
47
|
+
return { title: "VPet", message: "Digimon progression resumed.", variant: "info", duration: 3000 };
|
|
48
|
+
case "set": {
|
|
49
|
+
const name = namedPayload(event.nodeId, language, catalog);
|
|
50
|
+
return name === undefined ? undefined : {
|
|
51
|
+
title: "VPet",
|
|
52
|
+
message: `VPet set to ${name} (${event.nodeId}).`,
|
|
53
|
+
variant: "info",
|
|
54
|
+
duration: 3000
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
case "evolution": {
|
|
58
|
+
const fromName = namedPayload(event.fromNodeId, language, catalog);
|
|
59
|
+
const toName = namedPayload(event.toNodeId, language, catalog);
|
|
60
|
+
return fromName === undefined || toName === undefined ? undefined : {
|
|
61
|
+
title: "Digi-evolution",
|
|
62
|
+
message: `${fromName} evolved into ${toName}!`,
|
|
63
|
+
variant: "success",
|
|
64
|
+
duration: 5000
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
default:
|
|
68
|
+
return assertNever(event);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var createBestEffortVpetToastNotifier = (transport) => {
|
|
72
|
+
return async (payload) => await Promise.resolve().then(() => transport(payload)).then(() => {
|
|
73
|
+
return;
|
|
74
|
+
}, () => {
|
|
75
|
+
return;
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
5
79
|
// src/adapters/sqlite/sqlite-sidebar-snapshot-reader.ts
|
|
6
80
|
import { existsSync } from "fs";
|
|
7
81
|
|
|
@@ -57877,6 +57951,28 @@ var MONSTER_FRAME_CATALOG = new MonsterFrameCatalog(MONSTER_FRAME_DATA.map(([spr
|
|
|
57877
57951
|
frames.map(([frameName, content]) => [frameName, new MonsterFrame(content)])
|
|
57878
57952
|
]));
|
|
57879
57953
|
|
|
57954
|
+
// src/rpc.ts
|
|
57955
|
+
import { Rpc } from "@opencode/plugin/rpc";
|
|
57956
|
+
var VpetRpc = Rpc.define({
|
|
57957
|
+
id: "vpet",
|
|
57958
|
+
methods: {},
|
|
57959
|
+
events: {
|
|
57960
|
+
toast: {
|
|
57961
|
+
schema: {
|
|
57962
|
+
type: "object",
|
|
57963
|
+
properties: {
|
|
57964
|
+
title: { type: "string" },
|
|
57965
|
+
message: { type: "string" },
|
|
57966
|
+
variant: { enum: ["info", "success", "warning"] },
|
|
57967
|
+
duration: { type: "number" }
|
|
57968
|
+
},
|
|
57969
|
+
required: ["title", "message", "variant", "duration"],
|
|
57970
|
+
additionalProperties: false
|
|
57971
|
+
}
|
|
57972
|
+
}
|
|
57973
|
+
}
|
|
57974
|
+
});
|
|
57975
|
+
|
|
57880
57976
|
// src/tui/sidebar-card.tsx
|
|
57881
57977
|
import { createTextAttributes } from "@opentui/core";
|
|
57882
57978
|
import { createEffect } from "solid-js";
|
|
@@ -57980,7 +58076,6 @@ var ARTWORK_COLUMNS = 16;
|
|
|
57980
58076
|
var NEXT_CHECK_PREFIX = "Next check: ";
|
|
57981
58077
|
var URL_LABEL = "Encyclopedia entry";
|
|
57982
58078
|
var LINK_ATTRIBUTES = createTextAttributes({ underline: true });
|
|
57983
|
-
var LINK_COLOR = "#5f87ff";
|
|
57984
58079
|
var formatCount = (value) => value.toLocaleString("en-US");
|
|
57985
58080
|
var positionedOutput = (animation) => {
|
|
57986
58081
|
if ("result" in animation)
|
|
@@ -58036,10 +58131,12 @@ var VpetSidebarCard = (props) => {
|
|
|
58036
58131
|
let artworkWidth;
|
|
58037
58132
|
let nextCheckWidth;
|
|
58038
58133
|
let reportedArtworkWidth;
|
|
58039
|
-
const updateText = (renderable, content) => {
|
|
58134
|
+
const updateText = (renderable, content, color) => {
|
|
58040
58135
|
if (renderable === undefined)
|
|
58041
58136
|
return;
|
|
58042
58137
|
renderable.content = content;
|
|
58138
|
+
if (color !== undefined)
|
|
58139
|
+
renderable.fg = color;
|
|
58043
58140
|
renderable.requestRender();
|
|
58044
58141
|
};
|
|
58045
58142
|
const handleUrlClick = () => {
|
|
@@ -58050,23 +58147,25 @@ var VpetSidebarCard = (props) => {
|
|
|
58050
58147
|
};
|
|
58051
58148
|
const renderCard = () => {
|
|
58052
58149
|
const model = props.model();
|
|
58150
|
+
const theme = props.theme?.();
|
|
58151
|
+
const textColor = theme?.current.text;
|
|
58053
58152
|
for (const [index, content] of artworkRows(props.animation(), Math.floor(artworkWidth?.width ?? 0)).entries()) {
|
|
58054
|
-
updateText(artwork[index], content);
|
|
58153
|
+
updateText(artwork[index], content, textColor);
|
|
58055
58154
|
}
|
|
58056
58155
|
switch (model.kind) {
|
|
58057
58156
|
case "no_partner":
|
|
58058
|
-
updateText(name, model.messageLine);
|
|
58157
|
+
updateText(name, model.messageLine, textColor);
|
|
58059
58158
|
updateText(stage, "");
|
|
58060
58159
|
updateText(nextCheck, "");
|
|
58061
58160
|
updateText(gauge, "");
|
|
58062
58161
|
updateText(url, "");
|
|
58063
58162
|
return;
|
|
58064
58163
|
case "partner":
|
|
58065
|
-
updateText(name, model.isSetOverride ? `${model.name} (set)` : model.name);
|
|
58066
|
-
updateText(stage, model.frozen ? `${model.stage} (frozen)` : model.stage);
|
|
58067
|
-
updateText(nextCheck, buildNextCheckLine(model, nextCheckWidth?.width ?? 0));
|
|
58068
|
-
updateText(gauge, model.isTerminal ? "-/-" : `${formatCount(model.gauge)}/${formatCount(model.threshold)}
|
|
58069
|
-
updateText(url, URL_LABEL);
|
|
58164
|
+
updateText(name, model.isSetOverride ? `${model.name} (set)` : model.name, textColor);
|
|
58165
|
+
updateText(stage, model.frozen ? `${model.stage} (frozen)` : model.stage, textColor);
|
|
58166
|
+
updateText(nextCheck, buildNextCheckLine(model, nextCheckWidth?.width ?? 0), textColor);
|
|
58167
|
+
updateText(gauge, model.isTerminal ? "-/-" : `${formatCount(model.gauge)}/${formatCount(model.threshold)}`, textColor);
|
|
58168
|
+
updateText(url, URL_LABEL, theme?.current.accent);
|
|
58070
58169
|
return;
|
|
58071
58170
|
}
|
|
58072
58171
|
};
|
|
@@ -58140,7 +58239,6 @@ var VpetSidebarCard = (props) => {
|
|
|
58140
58239
|
/* @__PURE__ */ jsxDEV("text", {
|
|
58141
58240
|
wrapMode: "none",
|
|
58142
58241
|
truncate: true,
|
|
58143
|
-
fg: LINK_COLOR,
|
|
58144
58242
|
attributes: LINK_ATTRIBUTES,
|
|
58145
58243
|
onMouseDown: handleUrlClick,
|
|
58146
58244
|
ref: (renderable) => {
|
|
@@ -58194,7 +58292,7 @@ var normalizedRandom = (random) => {
|
|
|
58194
58292
|
};
|
|
58195
58293
|
|
|
58196
58294
|
// src/tui/monster-walking-policy.ts
|
|
58197
|
-
var
|
|
58295
|
+
var assertNever2 = (value) => {
|
|
58198
58296
|
throw new Error(`Unexpected walking policy variant: ${JSON.stringify(value)}`);
|
|
58199
58297
|
};
|
|
58200
58298
|
var initialWalkingPolicy = (frameName) => ({
|
|
@@ -58229,7 +58327,7 @@ var tickWalkingPolicy = (state, sprite, catalog) => {
|
|
|
58229
58327
|
case "queued_action":
|
|
58230
58328
|
return { kind: "action", action: state };
|
|
58231
58329
|
default:
|
|
58232
|
-
return
|
|
58330
|
+
return assertNever2(state.bout);
|
|
58233
58331
|
}
|
|
58234
58332
|
};
|
|
58235
58333
|
var resizeWalkingPolicy = (state, width, random) => {
|
|
@@ -58246,7 +58344,7 @@ var resizeWalkingPolicy = (state, width, random) => {
|
|
|
58246
58344
|
case "suspended":
|
|
58247
58345
|
return planBout({ ...resized, bout: { kind: "suspended" } }, random);
|
|
58248
58346
|
default:
|
|
58249
|
-
return
|
|
58347
|
+
return assertNever2(state.bout);
|
|
58250
58348
|
}
|
|
58251
58349
|
};
|
|
58252
58350
|
var resizeActionBoundary = (state, width) => {
|
|
@@ -58299,7 +58397,7 @@ var normalizedRandom2 = (random) => {
|
|
|
58299
58397
|
// src/tui/monster-animation.ts
|
|
58300
58398
|
var ORIGIN = { offset: 0, facing: "left" };
|
|
58301
58399
|
var SLEEP_AFTER_MS = 300000;
|
|
58302
|
-
var
|
|
58400
|
+
var assertNever3 = (value) => {
|
|
58303
58401
|
throw new Error(`Unexpected monster animation variant: ${JSON.stringify(value)}`);
|
|
58304
58402
|
};
|
|
58305
58403
|
var sameIdentity = (left, right) => left.sprite === right.sprite && left.isDigitama === right.isDigitama;
|
|
@@ -58333,7 +58431,7 @@ class MonsterAnimationController {
|
|
|
58333
58431
|
this.#state = this.#resize(event.width);
|
|
58334
58432
|
break;
|
|
58335
58433
|
default:
|
|
58336
|
-
return
|
|
58434
|
+
return assertNever3(event);
|
|
58337
58435
|
}
|
|
58338
58436
|
return this.output();
|
|
58339
58437
|
}
|
|
@@ -58368,7 +58466,7 @@ class MonsterAnimationController {
|
|
|
58368
58466
|
facing: state.boundary.facing
|
|
58369
58467
|
};
|
|
58370
58468
|
default:
|
|
58371
|
-
return
|
|
58469
|
+
return assertNever3(state);
|
|
58372
58470
|
}
|
|
58373
58471
|
}
|
|
58374
58472
|
setSprite(sprite) {
|
|
@@ -58422,7 +58520,7 @@ class MonsterAnimationController {
|
|
|
58422
58520
|
case "sleeping":
|
|
58423
58521
|
return { ...state, phase: state.phase === 0 ? 1 : 0 };
|
|
58424
58522
|
default:
|
|
58425
|
-
return
|
|
58523
|
+
return assertNever3(state);
|
|
58426
58524
|
}
|
|
58427
58525
|
}
|
|
58428
58526
|
#tickWalking(state) {
|
|
@@ -58433,7 +58531,7 @@ class MonsterAnimationController {
|
|
|
58433
58531
|
case "action":
|
|
58434
58532
|
return this.#startAction(state.identity, tick.action);
|
|
58435
58533
|
default:
|
|
58436
|
-
return
|
|
58534
|
+
return assertNever3(tick);
|
|
58437
58535
|
}
|
|
58438
58536
|
}
|
|
58439
58537
|
#resize(width) {
|
|
@@ -58494,7 +58592,7 @@ class MonsterAnimationController {
|
|
|
58494
58592
|
case "sleeping":
|
|
58495
58593
|
return state.identity;
|
|
58496
58594
|
default:
|
|
58497
|
-
return
|
|
58595
|
+
return assertNever3(state);
|
|
58498
58596
|
}
|
|
58499
58597
|
}
|
|
58500
58598
|
#firstWalkFrame(sprite) {
|
|
@@ -58618,9 +58716,20 @@ var buildSidebarCardModel = (inputs, settings = DEFAULT_VPET_SETTINGS) => {
|
|
|
58618
58716
|
};
|
|
58619
58717
|
};
|
|
58620
58718
|
|
|
58719
|
+
// src/tui/theme.ts
|
|
58720
|
+
var toVpetTheme = (theme) => ({
|
|
58721
|
+
current: {
|
|
58722
|
+
text: theme.text.base,
|
|
58723
|
+
accent: theme.hue.accent[200] ?? theme.text.action.primary.base,
|
|
58724
|
+
primary: theme.text.action.primary.base,
|
|
58725
|
+
success: theme.text.feedback.success.base,
|
|
58726
|
+
textMuted: theme.text.muted
|
|
58727
|
+
}
|
|
58728
|
+
});
|
|
58729
|
+
|
|
58621
58730
|
// src/tui/dex-view-model.ts
|
|
58622
58731
|
var REDACTED_NAME = "------";
|
|
58623
|
-
var
|
|
58732
|
+
var assertNever4 = (value) => {
|
|
58624
58733
|
throw new Error(`Unexpected archive result: ${JSON.stringify(value)}`);
|
|
58625
58734
|
};
|
|
58626
58735
|
var compareCatalogNodes = (left, right) => {
|
|
@@ -58666,12 +58775,12 @@ var buildDexViewModel = (archive, catalog, settings) => {
|
|
|
58666
58775
|
case "unavailable":
|
|
58667
58776
|
return { kind: "unavailable", message: archive.message };
|
|
58668
58777
|
default:
|
|
58669
|
-
return
|
|
58778
|
+
return assertNever4(archive);
|
|
58670
58779
|
}
|
|
58671
58780
|
};
|
|
58672
58781
|
|
|
58673
58782
|
// src/tui/history-view-model.ts
|
|
58674
|
-
var
|
|
58783
|
+
var assertNever5 = (value) => {
|
|
58675
58784
|
throw new Error(`Unexpected archive result: ${JSON.stringify(value)}`);
|
|
58676
58785
|
};
|
|
58677
58786
|
var comparePartners = (left, right) => {
|
|
@@ -58716,7 +58825,7 @@ var buildHistoryViewModel = (archive, catalog, settings) => {
|
|
|
58716
58825
|
case "unavailable":
|
|
58717
58826
|
return { kind: "unavailable", message: archive.message };
|
|
58718
58827
|
default:
|
|
58719
|
-
return
|
|
58828
|
+
return assertNever5(archive);
|
|
58720
58829
|
}
|
|
58721
58830
|
};
|
|
58722
58831
|
|
|
@@ -59016,7 +59125,7 @@ var registerVpetCommandLayer = ({
|
|
|
59016
59125
|
const model = buildDexViewModel(readArchive(reader), catalog, settings);
|
|
59017
59126
|
isDialogOpen = true;
|
|
59018
59127
|
api.ui.dialog.replace(() => /* @__PURE__ */ jsxDEV4(VpetDexDialog, {
|
|
59019
|
-
theme: api.theme,
|
|
59128
|
+
theme: api.theme(),
|
|
59020
59129
|
model,
|
|
59021
59130
|
onClose: closeDialog
|
|
59022
59131
|
}, undefined, false, undefined, this), closeDialog);
|
|
@@ -59028,32 +59137,32 @@ var registerVpetCommandLayer = ({
|
|
|
59028
59137
|
const model = buildHistoryViewModel(readArchive(reader), catalog, settings);
|
|
59029
59138
|
isDialogOpen = true;
|
|
59030
59139
|
api.ui.dialog.replace(() => /* @__PURE__ */ jsxDEV4(VpetHistoryDialog, {
|
|
59031
|
-
theme: api.theme,
|
|
59140
|
+
theme: api.theme(),
|
|
59032
59141
|
model,
|
|
59033
59142
|
onClose: closeDialog
|
|
59034
59143
|
}, undefined, false, undefined, this), closeDialog);
|
|
59035
59144
|
api.ui.dialog.setSize("medium");
|
|
59036
59145
|
};
|
|
59037
59146
|
const disposeLayer = api.keymap.registerLayer({
|
|
59038
|
-
|
|
59039
|
-
|
|
59147
|
+
mode: "global",
|
|
59148
|
+
priority: 10,
|
|
59040
59149
|
commands: [
|
|
59041
59150
|
{
|
|
59042
|
-
|
|
59151
|
+
id: "vpet.dex",
|
|
59043
59152
|
title: "VPet Dex",
|
|
59044
59153
|
description: "Browse the VPet discovery archive.",
|
|
59045
|
-
|
|
59046
|
-
|
|
59047
|
-
|
|
59154
|
+
group: "VPet",
|
|
59155
|
+
palette: true,
|
|
59156
|
+
slash: { name: "vpet-dex" },
|
|
59048
59157
|
run: openDex
|
|
59049
59158
|
},
|
|
59050
59159
|
{
|
|
59051
|
-
|
|
59160
|
+
id: "vpet.history",
|
|
59052
59161
|
title: "VPet History",
|
|
59053
59162
|
description: "Browse VPet generation history.",
|
|
59054
|
-
|
|
59055
|
-
|
|
59056
|
-
|
|
59163
|
+
group: "VPet",
|
|
59164
|
+
palette: true,
|
|
59165
|
+
slash: { name: "vpet-history" },
|
|
59057
59166
|
run: openHistory
|
|
59058
59167
|
}
|
|
59059
59168
|
]
|
|
@@ -59071,7 +59180,7 @@ var registerVpetCommandLayer = ({
|
|
|
59071
59180
|
import { jsxDEV as jsxDEV5 } from "@opentui/solid/jsx-dev-runtime";
|
|
59072
59181
|
var VISUAL_INTERVAL_MS = 500;
|
|
59073
59182
|
var getStringOption = (options, name) => {
|
|
59074
|
-
const value = options
|
|
59183
|
+
const value = options[name];
|
|
59075
59184
|
return typeof value === "string" ? value : undefined;
|
|
59076
59185
|
};
|
|
59077
59186
|
var readerOptions = (options) => {
|
|
@@ -59139,10 +59248,11 @@ var createTui = (loadInputs, settings, scheduling = {}) => async (api) => {
|
|
|
59139
59248
|
api.renderer.requestRender();
|
|
59140
59249
|
};
|
|
59141
59250
|
const unsubscribes = [
|
|
59142
|
-
api.event.on("
|
|
59143
|
-
api.event.on("
|
|
59251
|
+
api.event.on("session.text.delta", activity),
|
|
59252
|
+
api.event.on("session.tool.called", activity),
|
|
59253
|
+
api.event.on("session.execution.succeeded", activity),
|
|
59144
59254
|
api.event.on("session.status", (event) => {
|
|
59145
|
-
switch (event.
|
|
59255
|
+
switch (event.data.status.type) {
|
|
59146
59256
|
case "busy":
|
|
59147
59257
|
case "retry":
|
|
59148
59258
|
activity();
|
|
@@ -59150,7 +59260,7 @@ var createTui = (loadInputs, settings, scheduling = {}) => async (api) => {
|
|
|
59150
59260
|
case "idle":
|
|
59151
59261
|
return;
|
|
59152
59262
|
default: {
|
|
59153
|
-
const unexpectedStatus = event.
|
|
59263
|
+
const unexpectedStatus = event.data.status;
|
|
59154
59264
|
return unexpectedStatus;
|
|
59155
59265
|
}
|
|
59156
59266
|
}
|
|
@@ -59159,11 +59269,7 @@ var createTui = (loadInputs, settings, scheduling = {}) => async (api) => {
|
|
|
59159
59269
|
poller.start();
|
|
59160
59270
|
const disposeLayer = api.keymap === undefined || api.ui === undefined || api.theme === undefined ? () => {
|
|
59161
59271
|
return;
|
|
59162
|
-
} : scheduling.archiveReader === undefined ? api.keymap.registerLayer({
|
|
59163
|
-
name: "opencode-vpet.layer",
|
|
59164
|
-
namespace: "opencode-vpet",
|
|
59165
|
-
commands: []
|
|
59166
|
-
}) : registerVpetCommandLayer({
|
|
59272
|
+
} : scheduling.archiveReader === undefined ? api.keymap.registerLayer({ commands: [] }) : registerVpetCommandLayer({
|
|
59167
59273
|
api: { keymap: api.keymap, ui: api.ui, theme: api.theme },
|
|
59168
59274
|
reader: scheduling.archiveReader,
|
|
59169
59275
|
catalog: DIGIMON_CATALOG,
|
|
@@ -59186,6 +59292,7 @@ var createTui = (loadInputs, settings, scheduling = {}) => async (api) => {
|
|
|
59186
59292
|
return /* @__PURE__ */ jsxDEV5(VpetSidebarCard, {
|
|
59187
59293
|
model: () => buildSidebarCardModel(inputs(), settings),
|
|
59188
59294
|
animation,
|
|
59295
|
+
theme: api.theme,
|
|
59189
59296
|
onArtworkWidthChange: (width) => {
|
|
59190
59297
|
if (disposed)
|
|
59191
59298
|
return;
|
|
@@ -59197,45 +59304,80 @@ var createTui = (loadInputs, settings, scheduling = {}) => async (api) => {
|
|
|
59197
59304
|
}
|
|
59198
59305
|
});
|
|
59199
59306
|
};
|
|
59200
|
-
var
|
|
59201
|
-
|
|
59202
|
-
|
|
59203
|
-
|
|
59204
|
-
|
|
59205
|
-
|
|
59206
|
-
|
|
59207
|
-
|
|
59208
|
-
|
|
59209
|
-
|
|
59210
|
-
|
|
59211
|
-
|
|
59212
|
-
|
|
59213
|
-
|
|
59307
|
+
var plugin = Plugin.define({
|
|
59308
|
+
id: "opencode-vpet.tui",
|
|
59309
|
+
async setup(context) {
|
|
59310
|
+
const reader = createSqliteSidebarSnapshotReader(readerOptions(context.options));
|
|
59311
|
+
const archiveReader = createSqliteVpetArchiveReader(readerOptions(context.options));
|
|
59312
|
+
const settings = await loadGlobalVpetSettings();
|
|
59313
|
+
const cleanups = [];
|
|
59314
|
+
const pushCleanup = (cleanup) => {
|
|
59315
|
+
cleanups.push(cleanup);
|
|
59316
|
+
return () => {
|
|
59317
|
+
const index = cleanups.indexOf(cleanup);
|
|
59318
|
+
if (index >= 0)
|
|
59319
|
+
cleanups.splice(index, 1);
|
|
59320
|
+
};
|
|
59321
|
+
};
|
|
59322
|
+
pushCleanup(context.client.rpc(VpetRpc).events.on("toast", (event) => {
|
|
59323
|
+
const payload = toVpetToastPayload(event.data);
|
|
59324
|
+
if (payload !== undefined)
|
|
59325
|
+
context.ui.toast.show(payload);
|
|
59326
|
+
}));
|
|
59327
|
+
await createTui(() => getSidebarCardInputs(reader, DIGIMON_CATALOG), settings, { archiveReader })({
|
|
59328
|
+
event: {
|
|
59329
|
+
on: (...subscription) => {
|
|
59330
|
+
switch (subscription[0]) {
|
|
59331
|
+
case "session.status":
|
|
59332
|
+
return context.data.on("session.status", subscription[1]);
|
|
59333
|
+
case "session.text.delta":
|
|
59334
|
+
return context.data.on("session.text.delta", subscription[1]);
|
|
59335
|
+
case "session.tool.called":
|
|
59336
|
+
return context.data.on("session.tool.called", subscription[1]);
|
|
59337
|
+
case "session.execution.succeeded":
|
|
59338
|
+
return context.data.on("session.execution.succeeded", subscription[1]);
|
|
59339
|
+
}
|
|
59214
59340
|
}
|
|
59215
|
-
}
|
|
59216
|
-
},
|
|
59217
|
-
renderer: api.renderer,
|
|
59218
|
-
lifecycle: api.lifecycle,
|
|
59219
|
-
slots: api.slots,
|
|
59220
|
-
keymap: { registerLayer: api.keymap.registerLayer.bind(api.keymap) },
|
|
59221
|
-
ui: {
|
|
59222
|
-
dialog: {
|
|
59223
|
-
replace: api.ui.dialog.replace.bind(api.ui.dialog),
|
|
59224
|
-
clear: api.ui.dialog.clear.bind(api.ui.dialog),
|
|
59225
|
-
setSize: api.ui.dialog.setSize.bind(api.ui.dialog)
|
|
59226
59341
|
},
|
|
59227
|
-
|
|
59228
|
-
|
|
59229
|
-
|
|
59230
|
-
|
|
59231
|
-
|
|
59232
|
-
|
|
59342
|
+
renderer: context.renderer,
|
|
59343
|
+
lifecycle: { onDispose: pushCleanup },
|
|
59344
|
+
slots: {
|
|
59345
|
+
register: (registered) => {
|
|
59346
|
+
pushCleanup(context.ui.slot({
|
|
59347
|
+
prepend: "sidebar.content",
|
|
59348
|
+
render: () => registered.slots.sidebar_content()
|
|
59349
|
+
}));
|
|
59350
|
+
return "opencode-vpet";
|
|
59351
|
+
}
|
|
59352
|
+
},
|
|
59353
|
+
keymap: {
|
|
59354
|
+
registerLayer: (layer) => {
|
|
59355
|
+
context.keymap.layer(() => layer);
|
|
59356
|
+
return () => {
|
|
59357
|
+
return;
|
|
59358
|
+
};
|
|
59359
|
+
}
|
|
59360
|
+
},
|
|
59361
|
+
ui: {
|
|
59362
|
+
dialog: {
|
|
59363
|
+
replace: (render, onClose) => context.ui.dialog.show(render, onClose),
|
|
59364
|
+
clear: () => context.ui.dialog.clear(),
|
|
59365
|
+
setSize: (size) => context.ui.dialog.set({ size })
|
|
59366
|
+
}
|
|
59367
|
+
},
|
|
59368
|
+
theme: () => toVpetTheme(context.theme)
|
|
59369
|
+
});
|
|
59370
|
+
return () => {
|
|
59371
|
+
for (let index = cleanups.length - 1;index >= 0; index -= 1)
|
|
59372
|
+
cleanups[index]?.();
|
|
59373
|
+
};
|
|
59374
|
+
}
|
|
59375
|
+
});
|
|
59233
59376
|
var tui_default = plugin;
|
|
59234
59377
|
export {
|
|
59235
|
-
tui,
|
|
59236
59378
|
tui_default as default,
|
|
59237
59379
|
createTui
|
|
59238
59380
|
};
|
|
59239
59381
|
|
|
59240
|
-
//# debugId=
|
|
59382
|
+
//# debugId=06835980CA6F808D64756E2164756E21
|
|
59241
59383
|
//# sourceMappingURL=tui.js.map
|