@sbugallo/opencode-vpet 0.0.0 → 0.1.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.
Files changed (137) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +833 -3
  3. package/dist/adapters/opencode/create-server-hooks.d.ts +39 -0
  4. package/dist/adapters/opencode/create-server-hooks.d.ts.map +1 -0
  5. package/dist/adapters/opencode/session-messages.d.ts +15 -0
  6. package/dist/adapters/opencode/session-messages.d.ts.map +1 -0
  7. package/dist/adapters/opencode/usage-event-mapper.d.ts +5 -0
  8. package/dist/adapters/opencode/usage-event-mapper.d.ts.map +1 -0
  9. package/dist/adapters/opencode/vpet-toast.d.ts +29 -0
  10. package/dist/adapters/opencode/vpet-toast.d.ts.map +1 -0
  11. package/dist/adapters/sqlite/app-data-path.d.ts +6 -0
  12. package/dist/adapters/sqlite/app-data-path.d.ts.map +1 -0
  13. package/dist/adapters/sqlite/bun-sqlite-driver.d.ts +12 -0
  14. package/dist/adapters/sqlite/bun-sqlite-driver.d.ts.map +1 -0
  15. package/dist/adapters/sqlite/sqlite-migrations.d.ts +9 -0
  16. package/dist/adapters/sqlite/sqlite-migrations.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/sqlite-sidebar-snapshot-reader.d.ts +7 -0
  18. package/dist/adapters/sqlite/sqlite-sidebar-snapshot-reader.d.ts.map +1 -0
  19. package/dist/adapters/sqlite/sqlite-vpet-archive-reader.d.ts +12 -0
  20. package/dist/adapters/sqlite/sqlite-vpet-archive-reader.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/sqlite-vpet-schema.d.ts +47 -0
  22. package/dist/adapters/sqlite/sqlite-vpet-schema.d.ts.map +1 -0
  23. package/dist/adapters/sqlite/sqlite-vpet-types.d.ts +43 -0
  24. package/dist/adapters/sqlite/sqlite-vpet-types.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/sqlite-vpet-write-store.d.ts +9 -0
  26. package/dist/adapters/sqlite/sqlite-vpet-write-store.d.ts.map +1 -0
  27. package/dist/application/models/sidebar-card-inputs.d.ts +13 -0
  28. package/dist/application/models/sidebar-card-inputs.d.ts.map +1 -0
  29. package/dist/application/models/spawn-partner.d.ts +10 -0
  30. package/dist/application/models/spawn-partner.d.ts.map +1 -0
  31. package/dist/application/models/usage.d.ts +30 -0
  32. package/dist/application/models/usage.d.ts.map +1 -0
  33. package/dist/application/models/vpet-archive.d.ts +22 -0
  34. package/dist/application/models/vpet-archive.d.ts.map +1 -0
  35. package/dist/application/models/vpet-control.d.ts +18 -0
  36. package/dist/application/models/vpet-control.d.ts.map +1 -0
  37. package/dist/application/ports/partner-lifecycle.d.ts +6 -0
  38. package/dist/application/ports/partner-lifecycle.d.ts.map +1 -0
  39. package/dist/application/ports/sidebar-snapshot.d.ts +12 -0
  40. package/dist/application/ports/sidebar-snapshot.d.ts.map +1 -0
  41. package/dist/application/ports/usage-ledger.d.ts +6 -0
  42. package/dist/application/ports/usage-ledger.d.ts.map +1 -0
  43. package/dist/application/ports/vpet-archive.d.ts +5 -0
  44. package/dist/application/ports/vpet-archive.d.ts.map +1 -0
  45. package/dist/application/ports/vpet-control.d.ts +7 -0
  46. package/dist/application/ports/vpet-control.d.ts.map +1 -0
  47. package/dist/application/use-cases/freeze-vpet.d.ts +4 -0
  48. package/dist/application/use-cases/freeze-vpet.d.ts.map +1 -0
  49. package/dist/application/use-cases/get-sidebar-card-inputs.d.ts +5 -0
  50. package/dist/application/use-cases/get-sidebar-card-inputs.d.ts.map +1 -0
  51. package/dist/application/use-cases/reconcile-usage.d.ts +14 -0
  52. package/dist/application/use-cases/reconcile-usage.d.ts.map +1 -0
  53. package/dist/application/use-cases/record-usage.d.ts +14 -0
  54. package/dist/application/use-cases/record-usage.d.ts.map +1 -0
  55. package/dist/application/use-cases/set-vpet-cheat-node.d.ts +4 -0
  56. package/dist/application/use-cases/set-vpet-cheat-node.d.ts.map +1 -0
  57. package/dist/application/use-cases/spawn-partner.d.ts +4 -0
  58. package/dist/application/use-cases/spawn-partner.d.ts.map +1 -0
  59. package/dist/application/use-cases/unfreeze-vpet.d.ts +4 -0
  60. package/dist/application/use-cases/unfreeze-vpet.d.ts.map +1 -0
  61. package/dist/cli/config.d.ts +17 -0
  62. package/dist/cli/config.d.ts.map +1 -0
  63. package/dist/cli.d.ts +3 -0
  64. package/dist/cli.d.ts.map +1 -0
  65. package/dist/cli.js +147 -0
  66. package/dist/cli.js.map +11 -0
  67. package/dist/commands/vpet-command-result.d.ts +18 -0
  68. package/dist/commands/vpet-command-result.d.ts.map +1 -0
  69. package/dist/commands/vpet-freeze.d.ts +8 -0
  70. package/dist/commands/vpet-freeze.d.ts.map +1 -0
  71. package/dist/commands/vpet-set.d.ts +11 -0
  72. package/dist/commands/vpet-set.d.ts.map +1 -0
  73. package/dist/commands/vpet-spawn.d.ts +9 -0
  74. package/dist/commands/vpet-spawn.d.ts.map +1 -0
  75. package/dist/commands/vpet-unfreeze.d.ts +8 -0
  76. package/dist/commands/vpet-unfreeze.d.ts.map +1 -0
  77. package/dist/config/defaults.d.ts +69 -0
  78. package/dist/config/defaults.d.ts.map +1 -0
  79. package/dist/config/global-vpet-settings.d.ts +17 -0
  80. package/dist/config/global-vpet-settings.d.ts.map +1 -0
  81. package/dist/config/normalize.d.ts +3 -0
  82. package/dist/config/normalize.d.ts.map +1 -0
  83. package/dist/config/types.d.ts +14 -0
  84. package/dist/config/types.d.ts.map +1 -0
  85. package/dist/data/catalog.d.ts +15 -0
  86. package/dist/data/catalog.d.ts.map +1 -0
  87. package/dist/data/digimon-data.d.ts +13 -0
  88. package/dist/data/digimon-data.d.ts.map +1 -0
  89. package/dist/data/monster-frame-catalog.d.ts +17 -0
  90. package/dist/data/monster-frame-catalog.d.ts.map +1 -0
  91. package/dist/data/monster-frame-data.d.ts +3 -0
  92. package/dist/data/monster-frame-data.d.ts.map +1 -0
  93. package/dist/data/stages.d.ts +17 -0
  94. package/dist/data/stages.d.ts.map +1 -0
  95. package/dist/domain/digimon-node.d.ts +15 -0
  96. package/dist/domain/digimon-node.d.ts.map +1 -0
  97. package/dist/domain/evolution.d.ts +21 -0
  98. package/dist/domain/evolution.d.ts.map +1 -0
  99. package/dist/domain/partner.d.ts +15 -0
  100. package/dist/domain/partner.d.ts.map +1 -0
  101. package/dist/domain/stage.d.ts +4 -0
  102. package/dist/domain/stage.d.ts.map +1 -0
  103. package/dist/index.d.ts +11 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +7265 -0
  106. package/dist/index.js.map +36 -0
  107. package/dist/tui/dex-view-model.d.ts +20 -0
  108. package/dist/tui/dex-view-model.d.ts.map +1 -0
  109. package/dist/tui/history-view-model.d.ts +21 -0
  110. package/dist/tui/history-view-model.d.ts.map +1 -0
  111. package/dist/tui/monster-action-policy.d.ts +7 -0
  112. package/dist/tui/monster-action-policy.d.ts.map +1 -0
  113. package/dist/tui/monster-animation.d.ts +72 -0
  114. package/dist/tui/monster-animation.d.ts.map +1 -0
  115. package/dist/tui/monster-artwork-mirror.d.ts +23 -0
  116. package/dist/tui/monster-artwork-mirror.d.ts.map +1 -0
  117. package/dist/tui/monster-walking-policy.d.ts +43 -0
  118. package/dist/tui/monster-walking-policy.d.ts.map +1 -0
  119. package/dist/tui/open-in-browser.d.ts +3 -0
  120. package/dist/tui/open-in-browser.d.ts.map +1 -0
  121. package/dist/tui/sidebar-card.d.ts +10 -0
  122. package/dist/tui/sidebar-card.d.ts.map +1 -0
  123. package/dist/tui/sidebar-poll-loop.d.ts +14 -0
  124. package/dist/tui/sidebar-poll-loop.d.ts.map +1 -0
  125. package/dist/tui/sidebar-view-model.d.ts +20 -0
  126. package/dist/tui/sidebar-view-model.d.ts.map +1 -0
  127. package/dist/tui/vpet-command-layer.d.ts +21 -0
  128. package/dist/tui/vpet-command-layer.d.ts.map +1 -0
  129. package/dist/tui/vpet-dex-dialog.d.ts +12 -0
  130. package/dist/tui/vpet-dex-dialog.d.ts.map +1 -0
  131. package/dist/tui/vpet-history-dialog.d.ts +12 -0
  132. package/dist/tui/vpet-history-dialog.d.ts.map +1 -0
  133. package/dist/tui.d.ts +50 -0
  134. package/dist/tui.d.ts.map +1 -0
  135. package/dist/tui.js +59241 -0
  136. package/dist/tui.js.map +38 -0
  137. package/package.json +84 -5
@@ -0,0 +1,20 @@
1
+ import type { VpetArchiveResult } from "../application/models/vpet-archive.ts";
2
+ import type { ResolvedVpetSettings } from "../config/types.ts";
3
+ import type { DigimonCatalog } from "../data/catalog.ts";
4
+ export type DexRow = {
5
+ readonly id: string;
6
+ readonly stage: string;
7
+ readonly discovered: boolean;
8
+ readonly name: string;
9
+ };
10
+ export type DexViewModel = {
11
+ readonly kind: "available";
12
+ readonly rows: readonly DexRow[];
13
+ } | {
14
+ readonly kind: "empty";
15
+ } | {
16
+ readonly kind: "unavailable";
17
+ readonly message: string;
18
+ };
19
+ export declare const buildDexViewModel: (archive: VpetArchiveResult, catalog: DigimonCatalog, settings: ResolvedVpetSettings) => DexViewModel;
20
+ //# sourceMappingURL=dex-view-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dex-view-model.d.ts","sourceRoot":"","sources":["../../src/tui/dex-view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAKxD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AA8B9D,eAAO,MAAM,iBAAiB,GAC5B,SAAS,iBAAiB,EAC1B,SAAS,cAAc,EACvB,UAAU,oBAAoB,KAC7B,YAyBF,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { VpetArchiveResult } from "../application/models/vpet-archive.ts";
2
+ import type { ResolvedVpetSettings } from "../config/types.ts";
3
+ import type { DigimonCatalog } from "../data/catalog.ts";
4
+ export type HistoryGeneration = {
5
+ readonly partnerId: string;
6
+ readonly generation: number;
7
+ readonly createdAt: string;
8
+ readonly retiredAt: string | null;
9
+ readonly path: readonly string[];
10
+ };
11
+ export type HistoryViewModel = {
12
+ readonly kind: "available";
13
+ readonly generations: readonly HistoryGeneration[];
14
+ } | {
15
+ readonly kind: "empty";
16
+ } | {
17
+ readonly kind: "unavailable";
18
+ readonly message: string;
19
+ };
20
+ export declare const buildHistoryViewModel: (archive: VpetArchiveResult, catalog: DigimonCatalog, settings: ResolvedVpetSettings) => HistoryViewModel;
21
+ //# sourceMappingURL=history-view-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-view-model.d.ts","sourceRoot":"","sources":["../../src/tui/history-view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACpH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AA6B9D,eAAO,MAAM,qBAAqB,GAChC,SAAS,iBAAiB,EAC1B,SAAS,cAAc,EACvB,UAAU,oBAAoB,KAC7B,gBAyBF,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { MonsterFrameCatalog, MonsterFrameName } from "../data/monster-frame-catalog.ts";
2
+ export type CosmeticActionClip = readonly [MonsterFrameName, MonsterFrameName];
3
+ export type SleepClip = readonly [MonsterFrameName, MonsterFrameName];
4
+ export declare const resolveCosmeticActions: (sprite: string, catalog: MonsterFrameCatalog) => readonly CosmeticActionClip[];
5
+ export declare const selectCosmeticAction: (actions: readonly CosmeticActionClip[], random: () => number) => CosmeticActionClip | undefined;
6
+ export declare const resolveSleepClip: (sprite: string, fallback: MonsterFrameName, catalog: MonsterFrameCatalog) => SleepClip;
7
+ //# sourceMappingURL=monster-action-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-action-policy.d.ts","sourceRoot":"","sources":["../../src/tui/monster-action-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAE7F,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;AAC9E,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;AAIrE,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,EAAE,SAAS,mBAAmB,KAAG,SAAS,kBAAkB,EAWhH,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,kBAAkB,EAAE,EACtC,QAAQ,MAAM,MAAM,KACnB,kBAAkB,GAAG,SAGvB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,MAAM,EACd,UAAU,gBAAgB,EAC1B,SAAS,mBAAmB,KAC3B,SAOF,CAAA"}
@@ -0,0 +1,72 @@
1
+ import type { MonsterFrame, MonsterFrameCatalog } from "../data/monster-frame-catalog.ts";
2
+ import { type WalkingFacing } from "./monster-walking-policy.ts";
3
+ export type MonsterAnimationIdentity = {
4
+ readonly sprite: string;
5
+ readonly isDigitama: boolean;
6
+ };
7
+ export type MonsterAnimationEvent = {
8
+ readonly kind: "partner_changed";
9
+ readonly partner: MonsterAnimationIdentity | undefined;
10
+ } | {
11
+ readonly kind: "tick";
12
+ } | {
13
+ readonly kind: "activity";
14
+ } | {
15
+ readonly kind: "viewport_resized";
16
+ readonly width: number;
17
+ };
18
+ export type MonsterAnimationResult = {
19
+ readonly kind: "blank";
20
+ } | {
21
+ readonly kind: "frame";
22
+ readonly frame: MonsterFrame;
23
+ } | {
24
+ readonly kind: "unavailable";
25
+ readonly sprite: string;
26
+ };
27
+ export type MonsterFacing = WalkingFacing;
28
+ type PositionedOutput = {
29
+ readonly offset: number;
30
+ readonly facing: MonsterFacing;
31
+ };
32
+ export type MonsterAnimationOutput = ({
33
+ readonly kind: "blank";
34
+ readonly result: {
35
+ readonly kind: "blank";
36
+ };
37
+ } & PositionedOutput) | ({
38
+ readonly kind: "unavailable";
39
+ readonly result: {
40
+ readonly kind: "unavailable";
41
+ readonly sprite: string;
42
+ };
43
+ } & PositionedOutput) | ({
44
+ readonly kind: "digitama";
45
+ readonly result: {
46
+ readonly kind: "frame";
47
+ readonly frame: MonsterFrame;
48
+ };
49
+ } & PositionedOutput) | ({
50
+ readonly kind: "walking";
51
+ readonly result: {
52
+ readonly kind: "frame";
53
+ readonly frame: MonsterFrame;
54
+ };
55
+ } & PositionedOutput) | ({
56
+ readonly kind: "action" | "sleeping";
57
+ readonly result: {
58
+ readonly kind: "frame";
59
+ readonly frame: MonsterFrame;
60
+ };
61
+ } & PositionedOutput);
62
+ export declare class MonsterAnimationController {
63
+ #private;
64
+ constructor(catalog: MonsterFrameCatalog, random?: () => number, nowMs?: () => number);
65
+ dispatch(event: MonsterAnimationEvent): MonsterAnimationOutput;
66
+ output(): MonsterAnimationOutput;
67
+ setSprite(sprite: string | undefined): void;
68
+ advance(): void;
69
+ get(): MonsterAnimationResult;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=monster-animation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-animation.d.ts","sourceRoot":"","sources":["../../src/tui/monster-animation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { MonsterFrame } from "../data/monster-frame-catalog.ts";
2
+ export type MalformedMonsterFrameReason = {
3
+ readonly kind: "row_count";
4
+ readonly actual: number;
5
+ } | {
6
+ readonly kind: "column_count";
7
+ readonly row: number;
8
+ readonly actual: number;
9
+ };
10
+ export declare class MalformedMonsterFrameError extends Error {
11
+ readonly reason: MalformedMonsterFrameReason;
12
+ readonly name = "MalformedMonsterFrameError";
13
+ constructor(reason: MalformedMonsterFrameReason);
14
+ }
15
+ export type MirrorMonsterFrameResult = {
16
+ readonly kind: "mirrored";
17
+ readonly frame: MonsterFrame;
18
+ } | {
19
+ readonly kind: "invalid";
20
+ readonly error: MalformedMonsterFrameError;
21
+ };
22
+ export declare const mirrorMonsterFrame: (frame: MonsterFrame) => MirrorMonsterFrameResult;
23
+ //# sourceMappingURL=monster-artwork-mirror.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-artwork-mirror.d.ts","sourceRoot":"","sources":["../../src/tui/monster-artwork-mirror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAK/D,MAAM,MAAM,2BAA2B,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpF,qBAAa,0BAA2B,SAAQ,KAAK;IAGvC,QAAQ,CAAC,MAAM,EAAE,2BAA2B;IAFxD,QAAQ,CAAC,IAAI,gCAA+B;gBAEvB,MAAM,EAAE,2BAA2B;CAGzD;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAA;CAAE,CAAA;AAqC5E,eAAO,MAAM,kBAAkB,GAAI,OAAO,YAAY,KAAG,wBAoBxD,CAAA"}
@@ -0,0 +1,43 @@
1
+ import type { MonsterFrameCatalog, MonsterFrameName } from "../data/monster-frame-catalog.ts";
2
+ export type WalkingFacing = "left" | "right";
3
+ export type WalkFrame = "walk_1" | "walk_2";
4
+ type MovementBounds = {
5
+ readonly left: number;
6
+ readonly right: number;
7
+ };
8
+ type WalkingBout = {
9
+ readonly kind: "suspended";
10
+ } | {
11
+ readonly kind: "moving";
12
+ readonly remaining: number;
13
+ } | {
14
+ readonly kind: "boundary_hold" | "queued_action";
15
+ };
16
+ export type WalkingPolicyState = {
17
+ readonly frameName: WalkFrame;
18
+ readonly offset: number;
19
+ readonly facing: WalkingFacing;
20
+ readonly bounds: MovementBounds | undefined;
21
+ readonly bout: WalkingBout;
22
+ };
23
+ export type ActionBoundaryState = {
24
+ readonly frameName: MonsterFrameName;
25
+ readonly offset: number;
26
+ readonly facing: WalkingFacing;
27
+ readonly bounds: MovementBounds | undefined;
28
+ };
29
+ export type WalkingPolicyTick = {
30
+ readonly kind: "walking";
31
+ readonly walking: WalkingPolicyState;
32
+ } | {
33
+ readonly kind: "action";
34
+ readonly action: ActionBoundaryState;
35
+ };
36
+ export declare const initialWalkingPolicy: (frameName: WalkFrame) => WalkingPolicyState;
37
+ export declare const tickWalkingPolicy: (state: WalkingPolicyState, sprite: string, catalog: MonsterFrameCatalog) => WalkingPolicyTick;
38
+ export declare const resizeWalkingPolicy: (state: WalkingPolicyState, width: number, random: () => number) => WalkingPolicyState;
39
+ export declare const resizeActionBoundary: (state: ActionBoundaryState, width: number) => ActionBoundaryState;
40
+ export declare const resumeWalkingPolicy: (state: ActionBoundaryState, random: () => number) => WalkingPolicyState;
41
+ export declare const restartWalkingPolicy: (state: ActionBoundaryState, frameName: WalkFrame, random: () => number) => WalkingPolicyState;
42
+ export {};
43
+ //# sourceMappingURL=monster-walking-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-walking-policy.d.ts","sourceRoot":"","sources":["../../src/tui/monster-walking-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAE7F,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAC5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE3C,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AACvE,KAAK,WAAW,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAClE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAMrE,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,KAAG,kBAM1D,CAAA;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,kBAAkB,EACzB,QAAQ,MAAM,EACd,SAAS,mBAAmB,KAC3B,iBA8BF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,OAAO,kBAAkB,EACzB,OAAO,MAAM,EACb,QAAQ,MAAM,MAAM,KACnB,kBAeF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,OAAO,mBAAmB,EAAE,OAAO,MAAM,KAAG,mBAIhF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,mBAAmB,EAAE,QAAQ,MAAM,MAAM,KAAG,kBAOtF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,OAAO,mBAAmB,EAC1B,WAAW,SAAS,EACpB,QAAQ,MAAM,MAAM,KACnB,kBAGF,CAAA"}
@@ -0,0 +1,3 @@
1
+ export type ProcessSpawner = (command: readonly string[]) => void;
2
+ export declare const openInBrowser: (url: string, spawner?: ProcessSpawner) => void;
3
+ //# sourceMappingURL=open-in-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-in-browser.d.ts","sourceRoot":"","sources":["../../src/tui/open-in-browser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAA;AAmBjE,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,UAAS,cAA8B,KAAG,IAOpF,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { type Accessor } from "solid-js";
2
+ import type { MonsterAnimationOutput, MonsterAnimationResult } from "./monster-animation.ts";
3
+ import type { SidebarCardModel } from "./sidebar-view-model.ts";
4
+ export declare const VpetSidebarCard: (props: {
5
+ readonly model: Accessor<SidebarCardModel>;
6
+ readonly animation: Accessor<MonsterAnimationOutput | MonsterAnimationResult>;
7
+ readonly onArtworkWidthChange?: (width: number) => void;
8
+ readonly onUrlClick?: (url: string) => void;
9
+ }) => import("solid-js").JSX.Element;
10
+ //# sourceMappingURL=sidebar-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-card.d.ts","sourceRoot":"","sources":["../../src/tui/sidebar-card.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAwD/D,eAAO,MAAM,eAAe,GAAI,OAAO;IACrC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAC1C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,sBAAsB,GAAG,sBAAsB,CAAC,CAAA;IAC7E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C,mCAgIA,CAAA"}
@@ -0,0 +1,14 @@
1
+ export type SidebarPollLoopOptions<TModel, THandle> = {
2
+ readonly intervalMs: number;
3
+ readonly load: () => Promise<TModel>;
4
+ readonly apply: (model: TModel) => void;
5
+ readonly schedule: (callback: () => void, intervalMs: number) => THandle;
6
+ readonly clear: (handle: THandle) => void;
7
+ };
8
+ export type SidebarPollLoop = {
9
+ readonly start: () => void;
10
+ readonly refresh: () => void;
11
+ readonly dispose: () => void;
12
+ };
13
+ export declare const createSidebarPollLoop: <TModel, THandle>(options: SidebarPollLoopOptions<TModel, THandle>) => SidebarPollLoop;
14
+ //# sourceMappingURL=sidebar-poll-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-poll-loop.d.ts","sourceRoot":"","sources":["../../src/tui/sidebar-poll-loop.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,IAAI;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAA;IACxE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,MAAM,EAAE,OAAO,EACnD,SAAS,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/C,eA+DF,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { SidebarCardInputs } from "../application/models/sidebar-card-inputs.ts";
2
+ import type { ResolvedVpetSettings } from "../config/types.ts";
3
+ export type SidebarCardModel = {
4
+ readonly kind: "no_partner";
5
+ readonly messageLine: string;
6
+ } | {
7
+ readonly kind: "partner";
8
+ readonly name: string;
9
+ readonly sprite: string;
10
+ readonly stage: string;
11
+ readonly stageNumber: number;
12
+ readonly url: string;
13
+ readonly gauge: number;
14
+ readonly threshold: number;
15
+ readonly isTerminal: boolean;
16
+ readonly frozen: boolean;
17
+ readonly isSetOverride: boolean;
18
+ };
19
+ export declare const buildSidebarCardModel: (inputs: SidebarCardInputs, settings?: ResolvedVpetSettings) => SidebarCardModel;
20
+ //# sourceMappingURL=sidebar-view-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-view-model.d.ts","sourceRoot":"","sources":["../../src/tui/sidebar-view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAErF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAG9D,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7D;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAChC,CAAA;AAEL,eAAO,MAAM,qBAAqB,GAChC,QAAQ,iBAAiB,EACzB,WAAU,oBAA4C,KACrD,gBAiBF,CAAA"}
@@ -0,0 +1,21 @@
1
+ /** @jsxImportSource @opentui/solid */
2
+ import type { TuiDialogStack, TuiKeymap, TuiTheme } from "@opencode-ai/plugin/tui";
3
+ import type { VpetArchiveReader } from "../application/ports/vpet-archive.ts";
4
+ import type { ResolvedVpetSettings } from "../config/types.ts";
5
+ import type { DigimonCatalog } from "../data/catalog.ts";
6
+ export type VpetCommandLayerApi = {
7
+ readonly keymap: Pick<TuiKeymap, "registerLayer">;
8
+ readonly ui: {
9
+ readonly dialog: Pick<TuiDialogStack, "replace" | "clear" | "setSize">;
10
+ };
11
+ readonly theme: TuiTheme;
12
+ };
13
+ export type VpetCommandLayerDependencies = {
14
+ readonly api: VpetCommandLayerApi;
15
+ readonly reader: VpetArchiveReader;
16
+ readonly catalog: DigimonCatalog;
17
+ readonly settings: ResolvedVpetSettings;
18
+ readonly isDisposed: () => boolean;
19
+ };
20
+ export declare const registerVpetCommandLayer: ({ api, reader, catalog, settings, isDisposed, }: VpetCommandLayerDependencies) => ReturnType<TuiKeymap["registerLayer"]>;
21
+ //# sourceMappingURL=vpet-command-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-command-layer.d.ts","sourceRoot":"","sources":["../../src/tui/vpet-command-layer.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAMxD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IACjD,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;KACvE,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAA;CACnC,CAAA;AAeD,eAAO,MAAM,wBAAwB,GAAI,iDAMtC,4BAA4B,KAAG,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CA0DtE,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { TuiTheme } from "@opencode-ai/plugin/tui";
2
+ import type { DexViewModel } from "./dex-view-model.ts";
3
+ export type VpetDexDialogTheme = {
4
+ readonly current: Pick<TuiTheme["current"], "primary" | "success" | "textMuted">;
5
+ };
6
+ export type VpetDexDialogProps = {
7
+ readonly theme: VpetDexDialogTheme;
8
+ readonly model: DexViewModel;
9
+ readonly onClose: () => void;
10
+ };
11
+ export declare function VpetDexDialog(props: VpetDexDialogProps): import("solid-js").JSX.Element;
12
+ //# sourceMappingURL=vpet-dex-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-dex-dialog.d.ts","sourceRoot":"","sources":["../../src/tui/vpet-dex-dialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,CAAA;CACjF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,kCAoDtD"}
@@ -0,0 +1,12 @@
1
+ import type { TuiTheme } from "@opencode-ai/plugin/tui";
2
+ import type { HistoryViewModel } from "./history-view-model.ts";
3
+ export type VpetHistoryDialogTheme = {
4
+ readonly current: Pick<TuiTheme["current"], "primary">;
5
+ };
6
+ export type VpetHistoryDialogProps = {
7
+ readonly theme: VpetHistoryDialogTheme;
8
+ readonly model: HistoryViewModel;
9
+ readonly onClose: () => void;
10
+ };
11
+ export declare function VpetHistoryDialog(props: VpetHistoryDialogProps): import("solid-js").JSX.Element;
12
+ //# sourceMappingURL=vpet-history-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-history-dialog.d.ts","sourceRoot":"","sources":["../../src/tui/vpet-history-dialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,kCAuE9D"}
package/dist/tui.d.ts ADDED
@@ -0,0 +1,50 @@
1
+ import type { EventMessagePartUpdated, EventMessageUpdated, EventSessionStatus } from "@opencode-ai/sdk/v2";
2
+ import type { TuiPlugin, TuiDialogProps, TuiDialogStack, TuiTheme, TuiKeymap } from "@opencode-ai/plugin/tui";
3
+ import type { JSX } from "@opentui/solid";
4
+ import type { SidebarCardInputs } from "./application/models/sidebar-card-inputs.ts";
5
+ import type { VpetArchiveReader } from "./application/ports/vpet-archive.ts";
6
+ import type { ResolvedVpetSettings } from "./config/types.ts";
7
+ import { type MonsterAnimationOutput } from "./tui/monster-animation.ts";
8
+ export type TuiCompositionApi = {
9
+ readonly event: {
10
+ readonly on: (...subscription: ActivitySubscription) => () => void;
11
+ };
12
+ readonly renderer: {
13
+ readonly requestRender: () => void;
14
+ };
15
+ readonly lifecycle: {
16
+ readonly onDispose: (callback: () => void) => () => void;
17
+ };
18
+ readonly slots: {
19
+ readonly register: (plugin: {
20
+ readonly slots: {
21
+ readonly sidebar_content: () => JSX.Element;
22
+ };
23
+ }) => string;
24
+ };
25
+ readonly keymap?: {
26
+ readonly registerLayer: TuiKeymap["registerLayer"];
27
+ };
28
+ readonly ui?: {
29
+ readonly dialog: Pick<TuiDialogStack, "replace" | "clear" | "setSize">;
30
+ readonly Dialog: (props: TuiDialogProps) => JSX.Element;
31
+ };
32
+ readonly theme?: TuiTheme;
33
+ };
34
+ type ActivitySubscription = readonly [type: "message.updated", handler: (event: EventMessageUpdated) => void] | readonly [type: "message.part.updated", handler: (event: EventMessagePartUpdated) => void] | readonly [type: "session.status", handler: (event: EventSessionStatus) => void];
35
+ type TuiSchedulingOptions = {
36
+ readonly scheduleVisualInterval?: (callback: () => void, intervalMs: number) => () => void;
37
+ readonly schedulePollTimeout?: (callback: () => void, intervalMs: number) => () => void;
38
+ readonly nowMs?: () => number;
39
+ readonly random?: () => number;
40
+ readonly onAnimation?: (output: MonsterAnimationOutput) => void;
41
+ readonly archiveReader?: VpetArchiveReader;
42
+ };
43
+ export declare const createTui: (loadInputs: () => SidebarCardInputs | Promise<SidebarCardInputs>, settings: ResolvedVpetSettings, scheduling?: TuiSchedulingOptions) => (api: TuiCompositionApi) => Promise<void>;
44
+ export declare const tui: TuiPlugin;
45
+ declare const plugin: {
46
+ readonly id: "opencode-vpet";
47
+ readonly tui: TuiPlugin;
48
+ };
49
+ export default plugin;
50
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}