@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,17 @@
1
+ type Environment = NodeJS.ProcessEnv & Readonly<{
2
+ readonly OPENCODE_CONFIG?: string | undefined;
3
+ readonly OPENCODE_CONFIG_DIR?: string | undefined;
4
+ readonly OPENCODE_TUI_CONFIG?: string | undefined;
5
+ readonly XDG_CONFIG_HOME?: string | undefined;
6
+ }>;
7
+ export type NormalizeOpenCodeConfigsOptions = Readonly<{
8
+ readonly dryRun?: boolean;
9
+ readonly env?: Environment;
10
+ readonly home?: string;
11
+ }>;
12
+ export type NormalizeOpenCodeConfigsResult = Readonly<{
13
+ readonly changedPaths: readonly string[];
14
+ }>;
15
+ export declare const normalizeOpenCodeConfigs: (options?: NormalizeOpenCodeConfigsOptions) => Promise<NormalizeOpenCodeConfigsResult>;
16
+ export {};
17
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAQA,KAAK,WAAW,GAAG,MAAM,CAAC,UAAU,GAClC,QAAQ,CAAC;IACP,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9C,CAAC,CAAA;AAEJ,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAC,CAAA;AAEF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,CAAC,CAAA;AAyFF,eAAO,MAAM,wBAAwB,GACnC,UAAS,+BAAoC,KAC5C,OAAO,CAAC,8BAA8B,CAOxC,CAAA"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/cli/config.ts
4
+ import { access, mkdir, readFile, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
5
+ import { homedir } from "node:os";
6
+ import { dirname, join } from "node:path";
7
+ import { applyEdits, modify, parse } from "jsonc-parser";
8
+ var CANONICAL_PLUGIN = "@sbugallo/opencode-vpet";
9
+ var LEGACY_PLUGIN = "opencode-vpet";
10
+ var exists = async (path) => {
11
+ try {
12
+ await access(path);
13
+ return true;
14
+ } catch (error) {
15
+ if (error instanceof Error && "code" in error && error.code === "ENOENT")
16
+ return false;
17
+ throw error;
18
+ }
19
+ };
20
+ var preferredConfigPath = async (directory, name) => {
21
+ const jsonc = join(directory, `${name}.jsonc`);
22
+ return await exists(jsonc) ? jsonc : join(directory, `${name}.json`);
23
+ };
24
+ var nonEmptyPath = (value) => value === undefined || value.trim().length === 0 ? undefined : value;
25
+ var resolveConfigDirectory = (env, home) => {
26
+ const configDirectory = nonEmptyPath(env.OPENCODE_CONFIG_DIR);
27
+ if (configDirectory !== undefined)
28
+ return configDirectory;
29
+ const xdgConfigHome = nonEmptyPath(env.XDG_CONFIG_HOME);
30
+ return xdgConfigHome === undefined ? join(home, ".config", "opencode") : join(xdgConfigHome, "opencode");
31
+ };
32
+ var resolveConfigPaths = async (env, home) => {
33
+ const directory = resolveConfigDirectory(env, home);
34
+ return [
35
+ nonEmptyPath(env.OPENCODE_CONFIG) ?? await preferredConfigPath(directory, "opencode"),
36
+ nonEmptyPath(env.OPENCODE_TUI_CONFIG) ?? await preferredConfigPath(directory, "tui")
37
+ ];
38
+ };
39
+ var parseConfig = (source, path) => {
40
+ const errors = [];
41
+ const parsed = parse(source, errors, { allowEmptyContent: false, allowTrailingComma: true });
42
+ if (errors.length > 0)
43
+ throw new Error(`Cannot parse OpenCode configuration: ${path}`);
44
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
45
+ throw new Error(`OpenCode configuration must be an object: ${path}`);
46
+ }
47
+ return parsed;
48
+ };
49
+ var normalizedPlugins = (value) => {
50
+ if (value === undefined)
51
+ return [CANONICAL_PLUGIN];
52
+ if (!Array.isArray(value))
53
+ throw new Error("OpenCode plugin configuration must be an array.");
54
+ const retained = value.filter((entry) => typeof entry !== "string" || entry !== LEGACY_PLUGIN && entry !== CANONICAL_PLUGIN);
55
+ return [...retained, CANONICAL_PLUGIN];
56
+ };
57
+ var planConfig = async (path) => {
58
+ const source = await exists(path) ? await readFile(path, "utf8") : `{}
59
+ `;
60
+ const parsed = parseConfig(source, path);
61
+ const plugins = normalizedPlugins(parsed.plugin);
62
+ const content = applyEdits(source, modify(source, ["plugin"], plugins, { formattingOptions: { insertSpaces: true, tabSize: 2, eol: `
63
+ ` } }));
64
+ return { path, content, changed: content !== source };
65
+ };
66
+ var writeAtomically = async (plan) => {
67
+ const existing = await exists(plan.path);
68
+ const targetPath = existing ? await realpath(plan.path) : plan.path;
69
+ const mode = existing ? (await stat(targetPath)).mode & 511 : 384;
70
+ await mkdir(dirname(targetPath), { recursive: true });
71
+ const temporaryPath = join(dirname(targetPath), `.${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`);
72
+ try {
73
+ await writeFile(temporaryPath, plan.content, { encoding: "utf8", flag: "wx", mode });
74
+ await rename(temporaryPath, targetPath);
75
+ } catch (error) {
76
+ await rm(temporaryPath, { force: true });
77
+ throw error;
78
+ }
79
+ };
80
+ var normalizeOpenCodeConfigs = async (options = {}) => {
81
+ const env = options.env ?? process.env;
82
+ const [serverPath, tuiPath] = await resolveConfigPaths(env, options.home ?? homedir());
83
+ const plans = await Promise.all([planConfig(serverPath), planConfig(tuiPath)]);
84
+ const changedPlans = plans.filter((plan) => plan.changed);
85
+ if (!options.dryRun)
86
+ await Promise.all(changedPlans.map(writeAtomically));
87
+ return { changedPaths: changedPlans.map((plan) => plan.path) };
88
+ };
89
+
90
+ // src/cli.ts
91
+ var HELP = `Usage: opencode-vpet <init|update> [--dry-run]
92
+
93
+ Commands:
94
+ init Register @sbugallo/opencode-vpet in global OpenCode server and TUI configs.
95
+ update Normalize the same registrations after updating the package.
96
+
97
+ Options:
98
+ --dry-run Show which global config files would change without writing them.
99
+ --help Show this help text.
100
+ `;
101
+ var parseArguments = (arguments_) => {
102
+ if (arguments_.length === 1 && arguments_[0] === "--help")
103
+ return { kind: "help" };
104
+ const [command, ...options] = arguments_;
105
+ if (command !== "init" && command !== "update")
106
+ return { kind: "invalid", message: "Expected init or update." };
107
+ if (options.length === 0)
108
+ return { kind: "command", command, dryRun: false };
109
+ if (options.length === 1 && options[0] === "--dry-run")
110
+ return { kind: "command", command, dryRun: true };
111
+ return { kind: "invalid", message: "Only --dry-run is supported after a command." };
112
+ };
113
+ var run = async () => {
114
+ const parsed = parseArguments(process.argv.slice(2));
115
+ switch (parsed.kind) {
116
+ case "help":
117
+ process.stdout.write(HELP);
118
+ return 0;
119
+ case "invalid":
120
+ process.stderr.write(`${parsed.message}
121
+
122
+ ${HELP}`);
123
+ return 2;
124
+ case "command": {
125
+ const result = await normalizeOpenCodeConfigs({ dryRun: parsed.dryRun });
126
+ const action = parsed.dryRun ? "Would update" : "Updated";
127
+ if (result.changedPaths.length === 0)
128
+ process.stdout.write(`OpenCode configuration is already current. Restart OpenCode.
129
+ `);
130
+ else
131
+ process.stdout.write(`${action} ${result.changedPaths.join(", ")}. Restart OpenCode.
132
+ `);
133
+ return 0;
134
+ }
135
+ }
136
+ };
137
+ run().then((exitCode) => {
138
+ process.exitCode = exitCode;
139
+ }).catch((error) => {
140
+ const message = error instanceof Error ? error.message : "Unexpected CLI failure.";
141
+ process.stderr.write(`${message}
142
+ `);
143
+ process.exitCode = 1;
144
+ });
145
+
146
+ //# debugId=EF06F4346B25CF0164756E2164756E21
147
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cli/config.ts", "../src/cli.ts"],
4
+ "sourcesContent": [
5
+ "import { access, mkdir, readFile, realpath, rename, rm, stat, writeFile } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport { dirname, join } from \"node:path\"\nimport { applyEdits, modify, parse, type ParseError } from \"jsonc-parser\"\n\nconst CANONICAL_PLUGIN = \"@sbugallo/opencode-vpet\"\nconst LEGACY_PLUGIN = \"opencode-vpet\"\n\ntype Environment = NodeJS.ProcessEnv &\n Readonly<{\n readonly OPENCODE_CONFIG?: string | undefined\n readonly OPENCODE_CONFIG_DIR?: string | undefined\n readonly OPENCODE_TUI_CONFIG?: string | undefined\n readonly XDG_CONFIG_HOME?: string | undefined\n }>\n\nexport type NormalizeOpenCodeConfigsOptions = Readonly<{\n readonly dryRun?: boolean\n readonly env?: Environment\n readonly home?: string\n}>\n\nexport type NormalizeOpenCodeConfigsResult = Readonly<{\n readonly changedPaths: readonly string[]\n}>\n\ntype PlannedConfig = Readonly<{\n readonly path: string\n readonly content: string\n readonly changed: boolean\n}>\n\nconst exists = async (path: string): Promise<boolean> => {\n try {\n await access(path)\n return true\n } catch (error) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") return false\n throw error\n }\n}\n\nconst preferredConfigPath = async (directory: string, name: \"opencode\" | \"tui\"): Promise<string> => {\n const jsonc = join(directory, `${name}.jsonc`)\n return (await exists(jsonc)) ? jsonc : join(directory, `${name}.json`)\n}\n\nconst nonEmptyPath = (value: string | undefined): string | undefined =>\n value === undefined || value.trim().length === 0 ? undefined : value\n\nconst resolveConfigDirectory = (env: Environment, home: string): string => {\n const configDirectory = nonEmptyPath(env.OPENCODE_CONFIG_DIR)\n if (configDirectory !== undefined) return configDirectory\n const xdgConfigHome = nonEmptyPath(env.XDG_CONFIG_HOME)\n return xdgConfigHome === undefined ? join(home, \".config\", \"opencode\") : join(xdgConfigHome, \"opencode\")\n}\n\nconst resolveConfigPaths = async (env: Environment, home: string): Promise<readonly [string, string]> => {\n const directory = resolveConfigDirectory(env, home)\n return [\n nonEmptyPath(env.OPENCODE_CONFIG) ?? (await preferredConfigPath(directory, \"opencode\")),\n nonEmptyPath(env.OPENCODE_TUI_CONFIG) ?? (await preferredConfigPath(directory, \"tui\")),\n ]\n}\n\nconst parseConfig = (source: string, path: string): Readonly<{ readonly plugin?: unknown }> => {\n const errors: ParseError[] = []\n const parsed: unknown = parse(source, errors, { allowEmptyContent: false, allowTrailingComma: true })\n if (errors.length > 0) throw new Error(`Cannot parse OpenCode configuration: ${path}`)\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(`OpenCode configuration must be an object: ${path}`)\n }\n return parsed\n}\n\nconst normalizedPlugins = (value: unknown): readonly unknown[] => {\n if (value === undefined) return [CANONICAL_PLUGIN]\n if (!Array.isArray(value)) throw new Error(\"OpenCode plugin configuration must be an array.\")\n const retained = value.filter(\n (entry) => typeof entry !== \"string\" || (entry !== LEGACY_PLUGIN && entry !== CANONICAL_PLUGIN),\n )\n return [...retained, CANONICAL_PLUGIN]\n}\n\nconst planConfig = async (path: string): Promise<PlannedConfig> => {\n const source = (await exists(path)) ? await readFile(path, \"utf8\") : \"{}\\n\"\n const parsed = parseConfig(source, path)\n const plugins = normalizedPlugins(parsed.plugin)\n const content = applyEdits(\n source,\n modify(source, [\"plugin\"], plugins, { formattingOptions: { insertSpaces: true, tabSize: 2, eol: \"\\n\" } }),\n )\n return { path, content, changed: content !== source }\n}\n\nconst writeAtomically = async (plan: PlannedConfig): Promise<void> => {\n const existing = await exists(plan.path)\n const targetPath = existing ? await realpath(plan.path) : plan.path\n const mode = existing ? (await stat(targetPath)).mode & 0o777 : 0o600\n await mkdir(dirname(targetPath), { recursive: true })\n const temporaryPath = join(\n dirname(targetPath),\n `.${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`,\n )\n try {\n await writeFile(temporaryPath, plan.content, { encoding: \"utf8\", flag: \"wx\", mode })\n await rename(temporaryPath, targetPath)\n } catch (error) {\n await rm(temporaryPath, { force: true })\n throw error\n }\n}\n\nexport const normalizeOpenCodeConfigs = async (\n options: NormalizeOpenCodeConfigsOptions = {},\n): Promise<NormalizeOpenCodeConfigsResult> => {\n const env = options.env ?? process.env\n const [serverPath, tuiPath] = await resolveConfigPaths(env, options.home ?? homedir())\n const plans = await Promise.all([planConfig(serverPath), planConfig(tuiPath)])\n const changedPlans = plans.filter((plan) => plan.changed)\n if (!options.dryRun) await Promise.all(changedPlans.map(writeAtomically))\n return { changedPaths: changedPlans.map((plan) => plan.path) }\n}\n",
6
+ "#!/usr/bin/env node\nimport { normalizeOpenCodeConfigs } from \"./cli/config.ts\"\n\nconst HELP = `Usage: opencode-vpet <init|update> [--dry-run]\n\nCommands:\n init Register @sbugallo/opencode-vpet in global OpenCode server and TUI configs.\n update Normalize the same registrations after updating the package.\n\nOptions:\n --dry-run Show which global config files would change without writing them.\n --help Show this help text.\n`\n\ntype Command = \"init\" | \"update\"\n\ntype ParsedArguments =\n | Readonly<{ readonly kind: \"help\" }>\n | Readonly<{ readonly kind: \"command\"; readonly command: Command; readonly dryRun: boolean }>\n | Readonly<{ readonly kind: \"invalid\"; readonly message: string }>\n\nconst parseArguments = (arguments_: readonly string[]): ParsedArguments => {\n if (arguments_.length === 1 && arguments_[0] === \"--help\") return { kind: \"help\" }\n const [command, ...options] = arguments_\n if (command !== \"init\" && command !== \"update\") return { kind: \"invalid\", message: \"Expected init or update.\" }\n if (options.length === 0) return { kind: \"command\", command, dryRun: false }\n if (options.length === 1 && options[0] === \"--dry-run\") return { kind: \"command\", command, dryRun: true }\n return { kind: \"invalid\", message: \"Only --dry-run is supported after a command.\" }\n}\n\nconst run = async (): Promise<number> => {\n const parsed = parseArguments(process.argv.slice(2))\n switch (parsed.kind) {\n case \"help\":\n process.stdout.write(HELP)\n return 0\n case \"invalid\":\n process.stderr.write(`${parsed.message}\\n\\n${HELP}`)\n return 2\n case \"command\": {\n const result = await normalizeOpenCodeConfigs({ dryRun: parsed.dryRun })\n const action = parsed.dryRun ? \"Would update\" : \"Updated\"\n if (result.changedPaths.length === 0)\n process.stdout.write(\"OpenCode configuration is already current. Restart OpenCode.\\n\")\n else process.stdout.write(`${action} ${result.changedPaths.join(\", \")}. Restart OpenCode.\\n`)\n return 0\n }\n }\n}\n\nrun()\n .then((exitCode) => {\n process.exitCode = exitCode\n })\n .catch((error: unknown) => {\n const message = error instanceof Error ? error.message : \"Unexpected CLI failure.\"\n process.stderr.write(`${message}\\n`)\n process.exitCode = 1\n })\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "EF06F4346B25CF0164756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1,18 @@
1
+ import type { Part } from "@opencode-ai/sdk";
2
+ export type VpetCommandEvent = {
3
+ readonly kind: "spawned";
4
+ readonly nodeId: string;
5
+ readonly generation: number;
6
+ } | {
7
+ readonly kind: "frozen";
8
+ } | {
9
+ readonly kind: "unfrozen";
10
+ } | {
11
+ readonly kind: "set";
12
+ readonly nodeId: string;
13
+ };
14
+ export type VpetCommandResult = {
15
+ readonly parts: readonly Part[];
16
+ readonly event?: VpetCommandEvent;
17
+ };
18
+ //# sourceMappingURL=vpet-command-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-command-result.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-command-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAClC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { VpetControl } from "../application/ports/vpet-control.ts";
2
+ import type { VpetCommandResult } from "./vpet-command-result.ts";
3
+ export type VpetFreezeContext = {
4
+ readonly sessionID: string;
5
+ readonly messageID: string;
6
+ };
7
+ export declare const runVpetFreezeCommand: (control: Pick<VpetControl, "freeze">, context: VpetFreezeContext) => Promise<VpetCommandResult>;
8
+ //# sourceMappingURL=vpet-freeze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-freeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EACpC,SAAS,iBAAiB,KACzB,OAAO,CAAC,iBAAiB,CAsB3B,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { VpetControl } from "../application/ports/vpet-control.ts";
2
+ import type { DigimonCatalog } from "../data/catalog.ts";
3
+ import type { VpetCommandResult } from "./vpet-command-result.ts";
4
+ export type VpetSetContext = {
5
+ readonly sessionID: string;
6
+ readonly messageID: string;
7
+ readonly arguments: string;
8
+ };
9
+ export type DigimonCatalogLoader = () => Promise<DigimonCatalog>;
10
+ export declare const runVpetSetCommand: (control: Pick<VpetControl, "setCheatNode">, context: VpetSetContext, loadCatalog: DigimonCatalogLoader) => Promise<VpetCommandResult>;
11
+ //# sourceMappingURL=vpet-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-set.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;AAUhE,eAAO,MAAM,iBAAiB,GAC5B,SAAS,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAC1C,SAAS,cAAc,EACvB,aAAa,oBAAoB,KAChC,OAAO,CAAC,iBAAiB,CAwB3B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { PartnerLifecycle } from "../application/ports/partner-lifecycle.ts";
2
+ import type { VpetCommandResult } from "./vpet-command-result.ts";
3
+ export type VpetSpawnContext = {
4
+ readonly sessionID: string;
5
+ readonly messageID: string;
6
+ readonly createdAt: string;
7
+ };
8
+ export declare const runVpetSpawnCommand: (lifecycle: PartnerLifecycle, context: VpetSpawnContext) => Promise<VpetCommandResult>;
9
+ //# sourceMappingURL=vpet-spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-spawn.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,WAAW,gBAAgB,EAC3B,SAAS,gBAAgB,KACxB,OAAO,CAAC,iBAAiB,CAe3B,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { VpetControl } from "../application/ports/vpet-control.ts";
2
+ import type { VpetCommandResult } from "./vpet-command-result.ts";
3
+ export type VpetUnfreezeContext = {
4
+ readonly sessionID: string;
5
+ readonly messageID: string;
6
+ };
7
+ export declare const runVpetUnfreezeCommand: (control: Pick<VpetControl, "unfreeze">, context: VpetUnfreezeContext) => Promise<VpetCommandResult>;
8
+ //# sourceMappingURL=vpet-unfreeze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpet-unfreeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-unfreeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EACtC,SAAS,mBAAmB,KAC3B,OAAO,CAAC,iBAAiB,CAsB3B,CAAA"}
@@ -0,0 +1,69 @@
1
+ export declare const VPET_STAGE_LABELS: Readonly<{
2
+ readonly en: Readonly<{
3
+ readonly egg: "DigiEgg";
4
+ readonly babyI: "In Training I";
5
+ readonly babyII: "In Training II";
6
+ readonly child: "Rookie";
7
+ readonly adult: "Champion";
8
+ readonly perfect: "Ultimate";
9
+ readonly ultimate: "Mega";
10
+ readonly superUltimate: "Ultra";
11
+ }>;
12
+ readonly jp: Readonly<{
13
+ readonly egg: "Digitama";
14
+ readonly babyI: "Baby I";
15
+ readonly babyII: "Baby II";
16
+ readonly child: "Child";
17
+ readonly adult: "Adult";
18
+ readonly perfect: "Perfect";
19
+ readonly ultimate: "Ultimate";
20
+ readonly superUltimate: "SuperUltimate";
21
+ }>;
22
+ }>;
23
+ export declare const DEFAULT_STAGE_THRESHOLDS: Readonly<{
24
+ readonly egg: 500000;
25
+ readonly babyI: 1000000;
26
+ readonly babyII: 2000000;
27
+ readonly child: 4000000;
28
+ readonly adult: 7500000;
29
+ readonly perfect: 12500000;
30
+ readonly ultimate: 20000000;
31
+ readonly superUltimate: 30000000;
32
+ }>;
33
+ export declare const DEFAULT_VPET_SETTINGS: Readonly<{
34
+ readonly language: "jp";
35
+ readonly notifications: true;
36
+ readonly stageLabels: Readonly<{
37
+ readonly en: Readonly<{
38
+ readonly egg: "DigiEgg";
39
+ readonly babyI: "In Training I";
40
+ readonly babyII: "In Training II";
41
+ readonly child: "Rookie";
42
+ readonly adult: "Champion";
43
+ readonly perfect: "Ultimate";
44
+ readonly ultimate: "Mega";
45
+ readonly superUltimate: "Ultra";
46
+ }>;
47
+ readonly jp: Readonly<{
48
+ readonly egg: "Digitama";
49
+ readonly babyI: "Baby I";
50
+ readonly babyII: "Baby II";
51
+ readonly child: "Child";
52
+ readonly adult: "Adult";
53
+ readonly perfect: "Perfect";
54
+ readonly ultimate: "Ultimate";
55
+ readonly superUltimate: "SuperUltimate";
56
+ }>;
57
+ }>;
58
+ readonly stageThresholds: Readonly<{
59
+ readonly egg: 500000;
60
+ readonly babyI: 1000000;
61
+ readonly babyII: 2000000;
62
+ readonly child: 4000000;
63
+ readonly adult: 7500000;
64
+ readonly perfect: 12500000;
65
+ readonly ultimate: 20000000;
66
+ readonly superUltimate: 30000000;
67
+ }>;
68
+ }>;
69
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAGO,CAAA;AAErC,eAAO,MAAM,wBAAwB;;;;;;;;;EASO,CAAA;AAE5C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKQ,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { ResolvedVpetSettings } from "./types.ts";
2
+ type PathApi = Readonly<{
3
+ join: (...paths: readonly string[]) => string;
4
+ }>;
5
+ export type GlobalVpetConfigOptions = Readonly<{
6
+ readonly env?: Readonly<{
7
+ readonly APPDATA?: string;
8
+ }>;
9
+ readonly home?: string;
10
+ readonly pathApi?: PathApi;
11
+ readonly platform?: NodeJS.Platform;
12
+ }>;
13
+ export declare const resolveGlobalVpetConfigPath: (options?: GlobalVpetConfigOptions) => string;
14
+ export declare const loadGlobalVpetSettings: (options?: GlobalVpetConfigOptions) => Promise<ResolvedVpetSettings>;
15
+ export declare const loadGlobalVpetSettingsSync: (options?: GlobalVpetConfigOptions) => ResolvedVpetSettings;
16
+ export {};
17
+ //# sourceMappingURL=global-vpet-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-vpet-settings.d.ts","sourceRoot":"","sources":["../../src/config/global-vpet-settings.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,KAAK,OAAO,GAAG,QAAQ,CAAC;IACtB,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAA;CAC9C,CAAC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAC,CAAA;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CACpC,CAAC,CAAA;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAS,uBAA4B,KAAG,MAWnF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,UAAS,uBAA4B,KAAG,OAAO,CAAC,oBAAoB,CAMhH,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,UAAS,uBAA4B,KAAG,oBAMlF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ResolvedVpetSettings } from "./types.ts";
2
+ export declare const normalizeVpetSettings: (input: unknown) => ResolvedVpetSettings;
3
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/config/normalize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAmC,MAAM,YAAY,CAAA;AA2BvF,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,oBA4BtD,CAAA"}
@@ -0,0 +1,14 @@
1
+ export declare const VPET_LANGUAGES: readonly ["en", "jp"];
2
+ export type VpetLanguage = (typeof VPET_LANGUAGES)[number];
3
+ export declare const STAGE_THRESHOLD_KEYS: readonly ["egg", "babyI", "babyII", "child", "adult", "perfect", "ultimate", "superUltimate"];
4
+ export type StageThresholdKey = (typeof STAGE_THRESHOLD_KEYS)[number];
5
+ export type StageThresholdSettings = Readonly<Record<StageThresholdKey, number>>;
6
+ export type StageLabels = Readonly<Record<StageThresholdKey, string>>;
7
+ export type VpetStageLabels = Readonly<Record<VpetLanguage, StageLabels>>;
8
+ export type ResolvedVpetSettings = Readonly<{
9
+ readonly language: VpetLanguage;
10
+ readonly notifications: boolean;
11
+ readonly stageLabels: VpetStageLabels;
12
+ readonly stageThresholds: StageThresholdSettings;
13
+ }>;
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uBAAuC,CAAA;AAElE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,eAAO,MAAM,oBAAoB,+FAStB,CAAA;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAA;AAErE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAA;CACjD,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { DigimonCatalog } from "../domain/digimon-node.ts";
2
+ export type { DigimonCatalog, DigimonNode } from "../domain/digimon-node.ts";
3
+ export type RawDigimonNode = {
4
+ readonly id: string;
5
+ readonly name_en: string;
6
+ readonly name_jp: string;
7
+ readonly next_evolutions: readonly string[];
8
+ readonly sprite: string;
9
+ readonly stage: number;
10
+ readonly url: string;
11
+ };
12
+ export declare const parseDigimonCatalog: (input: readonly RawDigimonNode[]) => DigimonCatalog;
13
+ export declare const DIGIMON_CATALOG: DigimonCatalog;
14
+ export declare const loadDigimonCatalog: () => Promise<DigimonCatalog>;
15
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/data/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,2BAA2B,CAAA;AAE5E,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5E,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAgBD,eAAO,MAAM,mBAAmB,GAAI,OAAO,SAAS,cAAc,EAAE,KAAG,cAgBtE,CAAA;AAED,eAAO,MAAM,eAAe,gBAAoC,CAAA;AAEhE,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,cAAc,CAAoB,CAAA"}
@@ -0,0 +1,13 @@
1
+ export type DigimonStage = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
2
+ export type DigimonId = `${DigimonStage}-${number}`;
3
+ export type DigimonRecord = {
4
+ readonly name_en: string;
5
+ readonly name_jp: string;
6
+ readonly next_evolutions: readonly DigimonId[];
7
+ readonly stage: DigimonStage;
8
+ readonly sprite: string;
9
+ readonly id: DigimonId;
10
+ readonly url: string;
11
+ };
12
+ export declare const DIGIMON_DATA: readonly DigimonRecord[];
13
+ //# sourceMappingURL=digimon-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digimon-data.d.ts","sourceRoot":"","sources":["../../src/data/digimon-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAExD,MAAM,MAAM,SAAS,GAAG,GAAG,YAAY,IAAI,MAAM,EAAE,CAAA;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS,SAAS,EAAE,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,aAAa,EAy9LhD,CAAA"}
@@ -0,0 +1,17 @@
1
+ export declare const MONSTER_FRAME_NAMES: readonly ["angry", "attack", "eat_1", "eat_2", "happy", "injured_1", "injured_2", "refuse", "sleep_1", "sleep_2", "walk_1", "walk_2"];
2
+ export type MonsterFrameName = (typeof MONSTER_FRAME_NAMES)[number];
3
+ export declare const STANDARD_ANIMATION_SEQUENCE: readonly ["angry", "attack", "eat_1", "eat_2", "happy", "injured_1", "injured_2", "sleep_1", "sleep_2", "walk_1", "walk_2"];
4
+ type SpriteFrames = Iterable<readonly [MonsterFrameName, MonsterFrame]>;
5
+ type CatalogFrames = Iterable<readonly [string, SpriteFrames]>;
6
+ export declare class MonsterFrame {
7
+ readonly content: string;
8
+ constructor(content: string);
9
+ }
10
+ export declare class MonsterFrameCatalog {
11
+ #private;
12
+ constructor(frames: CatalogFrames);
13
+ get(sprite: string, frameName: MonsterFrameName): MonsterFrame | undefined;
14
+ }
15
+ export declare const MONSTER_FRAME_CATALOG: MonsterFrameCatalog;
16
+ export {};
17
+ //# sourceMappingURL=monster-frame-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-frame-catalog.d.ts","sourceRoot":"","sources":["../../src/data/monster-frame-catalog.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,uIAarB,CAAA;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,eAAO,MAAM,2BAA2B,6HAY7B,CAAA;AAEX,KAAK,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAA;AACvE,KAAK,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;AAE9D,qBAAa,YAAY;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEZ,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAmB;;gBAGlB,MAAM,EAAE,aAAa;IAKjC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS;CAG3E;AAED,eAAO,MAAM,qBAAqB,qBAKjC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { MonsterFrameName } from "./monster-frame-catalog.ts";
2
+ export declare const MONSTER_FRAME_DATA: readonly [string, readonly [MonsterFrameName, string][]][];
3
+ //# sourceMappingURL=monster-frame-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monster-frame-data.d.ts","sourceRoot":"","sources":["../../src/data/monster-frame-data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,EAuoBxF,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { StageLabels, StageThresholdKey } from "../config/types.ts";
2
+ import { isDigimonStage, type DigimonStage } from "../domain/stage.ts";
3
+ export { isDigimonStage, type DigimonStage };
4
+ export declare const STAGE_VALUES: readonly [0, 1, 2, 3, 4, 5, 6, 7];
5
+ export declare const STAGE_THRESHOLD_KEYS: {
6
+ readonly 0: "egg";
7
+ readonly 1: "babyI";
8
+ readonly 2: "babyII";
9
+ readonly 3: "child";
10
+ readonly 4: "adult";
11
+ readonly 5: "perfect";
12
+ readonly 6: "ultimate";
13
+ readonly 7: "superUltimate";
14
+ };
15
+ export declare const getStageKey: (stage: DigimonStage) => StageThresholdKey;
16
+ export declare const getStageLabel: (stage: DigimonStage, labels: StageLabels) => string;
17
+ //# sourceMappingURL=stages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../src/data/stages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAkB,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,CAAA;AAE5C,eAAO,MAAM,YAAY,mCAAiB,CAAA;AAE1C,eAAO,MAAM,oBAAoB;;;;;;;;;CAS2B,CAAA;AAE5D,eAAO,MAAM,WAAW,GAAI,OAAO,YAAY,KAAG,iBAAgD,CAAA;AAElG,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,EAAE,QAAQ,WAAW,KAAG,MAAoC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { DigimonStage } from "./stage.ts";
2
+ export type DigimonNode = {
3
+ readonly id: string;
4
+ readonly nameEn: string;
5
+ readonly nameJp: string;
6
+ readonly nextEvolutions: readonly string[];
7
+ readonly sprite: string;
8
+ readonly stage: DigimonStage;
9
+ readonly url: string;
10
+ };
11
+ export type DigimonCatalog = {
12
+ readonly nodes: readonly DigimonNode[];
13
+ readonly byId: ReadonlyMap<string, DigimonNode>;
14
+ };
15
+ //# sourceMappingURL=digimon-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digimon-node.d.ts","sourceRoot":"","sources":["../../src/domain/digimon-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAChD,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { DigimonNode } from "./digimon-node.ts";
2
+ import { type DigimonStage } from "./stage.ts";
3
+ export type StageThresholds = Readonly<Record<DigimonStage, number>>;
4
+ export declare const STAGE_GAUGE_THRESHOLDS: Readonly<{
5
+ readonly 0: 500000;
6
+ readonly 1: 1000000;
7
+ readonly 2: 2000000;
8
+ readonly 3: 4000000;
9
+ readonly 4: 7500000;
10
+ readonly 5: 12500000;
11
+ readonly 6: 20000000;
12
+ readonly 7: 30000000;
13
+ }>;
14
+ export type PartnerEvolutionState = {
15
+ readonly current: DigimonNode;
16
+ readonly gauge: number;
17
+ readonly isTerminal: boolean;
18
+ };
19
+ export type EvolutionSelector = () => number;
20
+ export declare const applyTokenProgress: (state: PartnerEvolutionState, tokenDelta: number, selector: EvolutionSelector, digimonById: ReadonlyMap<string, DigimonNode>, thresholds: unknown) => PartnerEvolutionState;
21
+ //# sourceMappingURL=evolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../../src/domain/evolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;EASE,CAAA;AAErC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAA;AAe5C,eAAO,MAAM,kBAAkB,GAC7B,OAAO,qBAAqB,EAC5B,YAAY,MAAM,EAClB,UAAU,iBAAiB,EAC3B,aAAa,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAC7C,YAAY,OAAO,KAClB,qBAqBF,CAAA"}
@@ -0,0 +1,15 @@
1
+ export type Partner = {
2
+ readonly partnerId: string;
3
+ readonly generation: number;
4
+ readonly currentNodeId: string;
5
+ readonly gauge: number;
6
+ readonly isTerminal: boolean;
7
+ readonly createdAt: string;
8
+ readonly retiredAt: string | null;
9
+ };
10
+ export type PartnerProgression = {
11
+ readonly currentNodeId: string;
12
+ readonly gauge: number;
13
+ readonly isTerminal: boolean;
14
+ };
15
+ //# sourceMappingURL=partner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner.d.ts","sourceRoot":"","sources":["../../src/domain/partner.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const DIGIMON_STAGES: readonly [0, 1, 2, 3, 4, 5, 6, 7];
2
+ export type DigimonStage = (typeof DIGIMON_STAGES)[number];
3
+ export declare const isDigimonStage: (value: number) => value is DigimonStage;
4
+ //# sourceMappingURL=stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../src/domain/stage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,mCAAoC,CAAA;AAE/D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,KAAK,IAAI,YAEvD,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { Plugin } from "@opencode-ai/plugin";
2
+ export { createCommandConfig } from "./adapters/opencode/create-server-hooks.ts";
3
+ export { DIGIMON_DATA } from "./data/digimon-data.js";
4
+ export type { DigimonId, DigimonRecord, DigimonStage } from "./data/digimon-data.js";
5
+ export declare const plugin: Plugin;
6
+ declare const entryPlugin: {
7
+ readonly id: "opencode-vpet";
8
+ readonly server: Plugin;
9
+ };
10
+ export default entryPlugin;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,qBAAqB,CAAA;AAShE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAmBpF,eAAO,MAAM,MAAM,EAAE,MAmBpB,CAAA;AAED,QAAA,MAAM,WAAW;;;CAGP,CAAA;AAEV,eAAe,WAAW,CAAA"}