pet-terminal 1.0.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/dist/commands/care.d.ts +3 -0
  4. package/dist/commands/care.d.ts.map +1 -0
  5. package/dist/commands/care.js +103 -0
  6. package/dist/commands/care.js.map +1 -0
  7. package/dist/commands/clean.d.ts +3 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +105 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/feed.d.ts +3 -0
  12. package/dist/commands/feed.d.ts.map +1 -0
  13. package/dist/commands/feed.js +106 -0
  14. package/dist/commands/feed.js.map +1 -0
  15. package/dist/commands/git.d.ts +3 -0
  16. package/dist/commands/git.d.ts.map +1 -0
  17. package/dist/commands/git.js +138 -0
  18. package/dist/commands/git.js.map +1 -0
  19. package/dist/commands/heal.d.ts +3 -0
  20. package/dist/commands/heal.d.ts.map +1 -0
  21. package/dist/commands/heal.js +106 -0
  22. package/dist/commands/heal.js.map +1 -0
  23. package/dist/commands/init.d.ts +3 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +89 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/inventory.d.ts +3 -0
  28. package/dist/commands/inventory.d.ts.map +1 -0
  29. package/dist/commands/inventory.js +113 -0
  30. package/dist/commands/inventory.js.map +1 -0
  31. package/dist/commands/play.d.ts +3 -0
  32. package/dist/commands/play.d.ts.map +1 -0
  33. package/dist/commands/play.js +110 -0
  34. package/dist/commands/play.js.map +1 -0
  35. package/dist/commands/shop.d.ts +3 -0
  36. package/dist/commands/shop.d.ts.map +1 -0
  37. package/dist/commands/shop.js +197 -0
  38. package/dist/commands/shop.js.map +1 -0
  39. package/dist/commands/sleep.d.ts +3 -0
  40. package/dist/commands/sleep.d.ts.map +1 -0
  41. package/dist/commands/sleep.js +48 -0
  42. package/dist/commands/sleep.js.map +1 -0
  43. package/dist/commands/status.d.ts +3 -0
  44. package/dist/commands/status.d.ts.map +1 -0
  45. package/dist/commands/status.js +98 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/sync.d.ts +3 -0
  48. package/dist/commands/sync.d.ts.map +1 -0
  49. package/dist/commands/sync.js +66 -0
  50. package/dist/commands/sync.js.map +1 -0
  51. package/dist/commands/tutorial.d.ts +3 -0
  52. package/dist/commands/tutorial.d.ts.map +1 -0
  53. package/dist/commands/tutorial.js +210 -0
  54. package/dist/commands/tutorial.js.map +1 -0
  55. package/dist/core/auto-care.d.ts +63 -0
  56. package/dist/core/auto-care.d.ts.map +1 -0
  57. package/dist/core/auto-care.js +295 -0
  58. package/dist/core/auto-care.js.map +1 -0
  59. package/dist/core/config.d.ts +89 -0
  60. package/dist/core/config.d.ts.map +1 -0
  61. package/dist/core/config.js +195 -0
  62. package/dist/core/config.js.map +1 -0
  63. package/dist/core/database.d.ts +29 -0
  64. package/dist/core/database.d.ts.map +1 -0
  65. package/dist/core/database.js +81 -0
  66. package/dist/core/database.js.map +1 -0
  67. package/dist/core/inventory.d.ts +63 -0
  68. package/dist/core/inventory.d.ts.map +1 -0
  69. package/dist/core/inventory.js +140 -0
  70. package/dist/core/inventory.js.map +1 -0
  71. package/dist/core/level-system.d.ts +32 -0
  72. package/dist/core/level-system.d.ts.map +1 -0
  73. package/dist/core/level-system.js +76 -0
  74. package/dist/core/level-system.js.map +1 -0
  75. package/dist/core/pet.d.ts +123 -0
  76. package/dist/core/pet.d.ts.map +1 -0
  77. package/dist/core/pet.js +781 -0
  78. package/dist/core/pet.js.map +1 -0
  79. package/dist/core/shop.d.ts +93 -0
  80. package/dist/core/shop.d.ts.map +1 -0
  81. package/dist/core/shop.js +205 -0
  82. package/dist/core/shop.js.map +1 -0
  83. package/dist/core/time-decay.d.ts +30 -0
  84. package/dist/core/time-decay.d.ts.map +1 -0
  85. package/dist/core/time-decay.js +149 -0
  86. package/dist/core/time-decay.js.map +1 -0
  87. package/dist/core/welcome.d.ts +31 -0
  88. package/dist/core/welcome.d.ts.map +1 -0
  89. package/dist/core/welcome.js +180 -0
  90. package/dist/core/welcome.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +80 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/monitor/git-monitor.d.ts +90 -0
  96. package/dist/monitor/git-monitor.d.ts.map +1 -0
  97. package/dist/monitor/git-monitor.js +342 -0
  98. package/dist/monitor/git-monitor.js.map +1 -0
  99. package/dist/types/auto-care.d.ts +86 -0
  100. package/dist/types/auto-care.d.ts.map +1 -0
  101. package/dist/types/auto-care.js +15 -0
  102. package/dist/types/auto-care.js.map +1 -0
  103. package/dist/types/config.d.ts +42 -0
  104. package/dist/types/config.d.ts.map +1 -0
  105. package/dist/types/config.js +24 -0
  106. package/dist/types/config.js.map +1 -0
  107. package/dist/types/git.d.ts +68 -0
  108. package/dist/types/git.d.ts.map +1 -0
  109. package/dist/types/git.js +14 -0
  110. package/dist/types/git.js.map +1 -0
  111. package/dist/types/items.d.ts +41 -0
  112. package/dist/types/items.d.ts.map +1 -0
  113. package/dist/types/items.js +286 -0
  114. package/dist/types/items.js.map +1 -0
  115. package/dist/types/pet.d.ts +42 -0
  116. package/dist/types/pet.d.ts.map +1 -0
  117. package/dist/types/pet.js +16 -0
  118. package/dist/types/pet.js.map +1 -0
  119. package/dist/types/species.d.ts +30 -0
  120. package/dist/types/species.d.ts.map +1 -0
  121. package/dist/types/species.js +164 -0
  122. package/dist/types/species.js.map +1 -0
  123. package/dist/types/stats.d.ts +22 -0
  124. package/dist/types/stats.d.ts.map +1 -0
  125. package/dist/types/stats.js +18 -0
  126. package/dist/types/stats.js.map +1 -0
  127. package/dist/types/time.d.ts +30 -0
  128. package/dist/types/time.d.ts.map +1 -0
  129. package/dist/types/time.js +79 -0
  130. package/dist/types/time.js.map +1 -0
  131. package/dist/ui/ascii-art.d.ts +4 -0
  132. package/dist/ui/ascii-art.d.ts.map +1 -0
  133. package/dist/ui/ascii-art.js +170 -0
  134. package/dist/ui/ascii-art.js.map +1 -0
  135. package/dist/ui/display.d.ts +11 -0
  136. package/dist/ui/display.d.ts.map +1 -0
  137. package/dist/ui/display.js +93 -0
  138. package/dist/ui/display.js.map +1 -0
  139. package/dist/ui/help.d.ts +17 -0
  140. package/dist/ui/help.d.ts.map +1 -0
  141. package/dist/ui/help.js +280 -0
  142. package/dist/ui/help.js.map +1 -0
  143. package/dist/ui/progress-bar.d.ts +9 -0
  144. package/dist/ui/progress-bar.d.ts.map +1 -0
  145. package/dist/ui/progress-bar.js +57 -0
  146. package/dist/ui/progress-bar.js.map +1 -0
  147. package/package.json +61 -0
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tutorialCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const readline_1 = __importDefault(require("readline"));
10
+ const display_1 = require("../ui/display");
11
+ exports.tutorialCommand = new commander_1.Command('tutorial');
12
+ /**
13
+ * Tutorial steps
14
+ */
15
+ const TUTORIAL_STEPS = [
16
+ {
17
+ title: 'Welcome & Philosophy',
18
+ emoji: '🐱',
19
+ content: [
20
+ '',
21
+ chalk_1.default.white.bold('Welcome to Pet Terminal!'),
22
+ '',
23
+ chalk_1.default.gray('Your pet lives in your terminal and grows when you code.'),
24
+ '',
25
+ chalk_1.default.magenta('"Writing code = being with your pet"'),
26
+ '',
27
+ chalk_1.default.gray('This isn\'t a chore - it\'s a companion! Your pet gains'),
28
+ chalk_1.default.gray('stats automatically when you make Git commits, because'),
29
+ chalk_1.default.gray('they\'re happy just watching you work.'),
30
+ '',
31
+ ],
32
+ },
33
+ {
34
+ title: 'Meet Your Pet',
35
+ emoji: '📊',
36
+ content: [
37
+ '',
38
+ chalk_1.default.white.bold('Your pet has 5 stats to monitor:'),
39
+ '',
40
+ chalk_1.default.cyan(' Hunger') + chalk_1.default.gray(' - Feed with ') + chalk_1.default.cyan('pet feed'),
41
+ chalk_1.default.cyan(' Happiness') + chalk_1.default.gray(' - Play with ') + chalk_1.default.cyan('pet play'),
42
+ chalk_1.default.cyan(' Health') + chalk_1.default.gray(' - Heal with ') + chalk_1.default.cyan('pet heal'),
43
+ chalk_1.default.cyan(' Cleanliness') + chalk_1.default.gray(' - Clean with ') + chalk_1.default.cyan('pet clean'),
44
+ chalk_1.default.cyan(' Energy') + chalk_1.default.gray(' - Sleep with ') + chalk_1.default.cyan('pet sleep'),
45
+ '',
46
+ chalk_1.default.gray('Stats decay slowly over time (days!), so don\'t worry too'),
47
+ chalk_1.default.gray('much about checking constantly. Your pet is designed to'),
48
+ chalk_1.default.gray('stay healthy for extended periods.'),
49
+ '',
50
+ ],
51
+ },
52
+ {
53
+ title: 'Git Integration',
54
+ emoji: '💻',
55
+ content: [
56
+ '',
57
+ chalk_1.default.white.bold('This is the BEST part! Your pet LOVES watching you code.'),
58
+ '',
59
+ chalk_1.default.gray('Every Git commit gives:'),
60
+ chalk_1.default.cyan(' • Coins') + chalk_1.default.gray(' for the shop'),
61
+ chalk_1.default.cyan(' • Experience Points') + chalk_1.default.gray(' to level up'),
62
+ chalk_1.default.cyan(' • Stat bonuses') + chalk_1.default.gray(' (hunger +15, happiness +10)'),
63
+ '',
64
+ chalk_1.default.gray('Just run:'),
65
+ chalk_1.default.cyan(' pet git'),
66
+ '',
67
+ chalk_1.default.gray('Commit message prefixes affect rewards:'),
68
+ chalk_1.default.green(' fix/bug') + chalk_1.default.gray(' → Bug Fix ') + chalk_1.default.yellow('+10 🪙, +20 XP'),
69
+ chalk_1.default.green(' feat/add') + chalk_1.default.gray(' → Feature ') + chalk_1.default.yellow('+8 🪙, +15 XP'),
70
+ chalk_1.default.green(' refactor') + chalk_1.default.gray(' → Refactor ') + chalk_1.default.yellow('+6 🪙, +12 XP'),
71
+ '',
72
+ ],
73
+ },
74
+ {
75
+ title: 'Shop & Inventory',
76
+ emoji: '🛒',
77
+ content: [
78
+ '',
79
+ chalk_1.default.white.bold('Earn coins from commits and spend them at the shop!'),
80
+ '',
81
+ chalk_1.default.gray('View your items:'),
82
+ chalk_1.default.cyan(' pet inventory') + chalk_1.default.gray(' (or ') + chalk_1.default.cyan('pet inv') + chalk_1.default.gray(')'),
83
+ '',
84
+ chalk_1.default.gray('Visit the shop:'),
85
+ chalk_1.default.cyan(' pet shop') + chalk_1.default.gray(' (or ') + chalk_1.default.cyan('pet store') + chalk_1.default.gray(')'),
86
+ '',
87
+ chalk_1.default.gray('Shop items:'),
88
+ chalk_1.default.cyan(' • Fish') + chalk_1.default.gray(' - Basic food (+20 hunger)'),
89
+ chalk_1.default.cyan(' • Ball') + chalk_1.default.gray(' - Toy for playing (+15 happiness)'),
90
+ chalk_1.default.cyan(' • Soap') + chalk_1.default.gray(' - Cleaning supplies (+20 cleanliness)'),
91
+ chalk_1.default.cyan(' • Medicine') + chalk_1.default.gray(' - Health restoration (+25 health)'),
92
+ '',
93
+ ],
94
+ },
95
+ {
96
+ title: 'Tips & Tricks',
97
+ emoji: '💡',
98
+ content: [
99
+ '',
100
+ chalk_1.default.white.bold('Pro tips for a happy pet:'),
101
+ '',
102
+ chalk_1.default.gray('• Use ') + chalk_1.default.cyan('pet care') + chalk_1.default.gray(' for one-click care of all needs'),
103
+ chalk_1.default.gray('• Run ') + chalk_1.default.cyan('pet git') + chalk_1.default.gray(' after coding sessions'),
104
+ chalk_1.default.gray('• Daily commit streaks give bonus rewards!'),
105
+ chalk_1.default.gray('• Use ') + chalk_1.default.cyan('pet sync') + chalk_1.default.gray(' to catch up on time passed'),
106
+ chalk_1.default.gray('• Let your pet sleep to restore energy faster'),
107
+ '',
108
+ chalk_1.default.white.bold('Commands at a glance:'),
109
+ chalk_1.default.cyan(' pet init') + chalk_1.default.gray(' - Create a pet'),
110
+ chalk_1.default.cyan(' pet status') + chalk_1.default.gray(' - Check status'),
111
+ chalk_1.default.cyan(' pet care') + chalk_1.default.gray(' - Quick care'),
112
+ chalk_1.default.cyan(' pet git') + chalk_1.default.gray(' - Collect rewards'),
113
+ '',
114
+ chalk_1.default.magenta.bold(' That\'s it! Have fun with your new coding companion! 🐾'),
115
+ '',
116
+ ],
117
+ },
118
+ ];
119
+ /**
120
+ * Wait for user input
121
+ */
122
+ function waitForContinue() {
123
+ return new Promise((resolve) => {
124
+ const rl = readline_1.default.createInterface({
125
+ input: process.stdin,
126
+ output: process.stdout,
127
+ });
128
+ rl.question(chalk_1.default.gray('[Press Enter to continue, or q to quit] '), (answer) => {
129
+ rl.close();
130
+ resolve(answer.toLowerCase() !== 'q');
131
+ });
132
+ });
133
+ }
134
+ /**
135
+ * Display a tutorial step
136
+ */
137
+ async function showStep(stepIndex) {
138
+ const step = TUTORIAL_STEPS[stepIndex];
139
+ const totalSteps = TUTORIAL_STEPS.length;
140
+ console.log('');
141
+ console.log((0, display_1.drawHeader)(`🐾 PET TERMINAL TUTORIAL`, 52));
142
+ console.log('');
143
+ // Progress indicator
144
+ const progress = chalk_1.default.gray(`Step ${stepIndex + 1}/${totalSteps}`);
145
+ const title = chalk_1.default.yellow.bold(`${step.emoji} ${step.title}`);
146
+ console.log(`${progress} ${title}`);
147
+ console.log('');
148
+ console.log((0, display_1.drawDivider)(52));
149
+ // Step content
150
+ for (const line of step.content) {
151
+ console.log(line);
152
+ }
153
+ console.log((0, display_1.drawDivider)(52));
154
+ console.log('');
155
+ // Wait for user input
156
+ return await waitForContinue();
157
+ }
158
+ /**
159
+ * Show complete tutorial
160
+ */
161
+ async function showTutorial() {
162
+ // Show welcome
163
+ console.log('');
164
+ console.log(chalk_1.default.cyan('╔══════════════════════════════════════════════════════════════╗'));
165
+ console.log(chalk_1.default.cyan('║') + chalk_1.default.yellow.bold(' 🐾 PET TERMINAL TUTORIAL 🐾 ') + chalk_1.default.cyan('║'));
166
+ console.log(chalk_1.default.cyan('╚══════════════════════════════════════════════════════════════╝'));
167
+ console.log('');
168
+ console.log(chalk_1.default.gray('Welcome to Pet Terminal! Let\'s get you started.'));
169
+ console.log('');
170
+ console.log((0, display_1.drawDivider)(52));
171
+ console.log('');
172
+ const shouldStart = await waitForContinue();
173
+ if (!shouldStart) {
174
+ console.log('');
175
+ console.log(chalk_1.default.gray('Tutorial cancelled. Run "pet tutorial" anytime to continue.'));
176
+ console.log('');
177
+ return;
178
+ }
179
+ // Show each step
180
+ for (let i = 0; i < TUTORIAL_STEPS.length; i++) {
181
+ const shouldContinue = await showStep(i);
182
+ if (!shouldContinue) {
183
+ console.log('');
184
+ console.log(chalk_1.default.gray('Tutorial paused. Run "pet tutorial" to continue from the beginning.'));
185
+ console.log('');
186
+ return;
187
+ }
188
+ }
189
+ // Tutorial complete
190
+ console.log('');
191
+ console.log(chalk_1.default.cyan('╔══════════════════════════════════════════════════════════════╗'));
192
+ console.log(chalk_1.default.cyan('║') + chalk_1.default.green.bold(' 🎉 Tutorial Complete! ') + chalk_1.default.cyan('║'));
193
+ console.log(chalk_1.default.cyan('╚══════════════════════════════════════════════════════════════╝'));
194
+ console.log('');
195
+ console.log(chalk_1.default.magenta(' You\'re all set! Enjoy your new coding companion! 🐾'));
196
+ console.log('');
197
+ console.log(chalk_1.default.gray('Quick reference:'));
198
+ console.log(chalk_1.default.cyan(' pet --help') + chalk_1.default.gray(' - Show all commands'));
199
+ console.log(chalk_1.default.cyan(' pet status') + chalk_1.default.gray(' - Check your pet'));
200
+ console.log(chalk_1.default.cyan(' pet git') + chalk_1.default.gray(' - Collect rewards'));
201
+ console.log('');
202
+ }
203
+ exports.tutorialCommand
204
+ .alias('help')
205
+ .alias('guide')
206
+ .description('Show the getting started tutorial')
207
+ .action(async () => {
208
+ await showTutorial();
209
+ });
210
+ //# sourceMappingURL=tutorial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { Pet } from './pet';
2
+ import { PetStats } from '../types/stats';
3
+ import { CareNeed, CareResult, AutoPurchaseRule, AutoPurchaseResult, AutoCareConfig } from '../types/auto-care';
4
+ /**
5
+ * Default auto-care configuration
6
+ */
7
+ export declare const DEFAULT_AUTO_CARE_CONFIG: AutoCareConfig;
8
+ /**
9
+ * Auto-purchase rules
10
+ */
11
+ export declare const AUTO_PURCHASE_RULES: AutoPurchaseRule[];
12
+ /**
13
+ * Auto-Care system for managing pet care automatically
14
+ */
15
+ export declare class AutoCare {
16
+ private config;
17
+ constructor(config?: Partial<AutoCareConfig>);
18
+ /**
19
+ * Assess pet's current needs based on stats
20
+ */
21
+ assessNeeds(pet: Pet, stats: PetStats): CareNeed[];
22
+ /**
23
+ * Execute one-click care - perform all needed actions
24
+ */
25
+ oneClickCare(pet: Pet): Promise<CareResult>;
26
+ /**
27
+ * Perform a single care action
28
+ */
29
+ private performCareAction;
30
+ /**
31
+ * Find alternative item for a care action
32
+ */
33
+ private findAlternativeItem;
34
+ /**
35
+ * Auto-purchase items when low on stock
36
+ */
37
+ autoPurchase(pet: Pet): Promise<AutoPurchaseResult>;
38
+ /**
39
+ * Check if auto-purchase can be afforded
40
+ */
41
+ canAffordAutoCare(pet: Pet): boolean;
42
+ /**
43
+ * Get current auto-care configuration
44
+ */
45
+ getConfig(): AutoCareConfig;
46
+ /**
47
+ * Update auto-care configuration
48
+ */
49
+ updateConfig(updates: Partial<AutoCareConfig>): void;
50
+ /**
51
+ * Enable or disable auto-purchase
52
+ */
53
+ setEnabled(enabled: boolean): void;
54
+ /**
55
+ * Get suggestions based on pet state
56
+ */
57
+ getSuggestions(pet: Pet): string[];
58
+ }
59
+ /**
60
+ * Create a default AutoCare instance
61
+ */
62
+ export declare const createAutoCare: (config?: Partial<AutoCareConfig>) => AutoCare;
63
+ //# sourceMappingURL=auto-care.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-care.d.ts","sourceRoot":"","sources":["../../src/core/auto-care.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAEL,QAAQ,EAER,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAUtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAKjD,CAAC;AAEF;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAiElD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjD;;OAEG;YACW,iBAAiB;IA+C/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CzD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAcpC;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIpD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE;CAiCnC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,CAAC,cAAc,CAAC,KAAG,QAEjE,CAAC"}
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAutoCare = exports.AutoCare = exports.AUTO_PURCHASE_RULES = exports.DEFAULT_AUTO_CARE_CONFIG = void 0;
4
+ const items_1 = require("../types/items");
5
+ const auto_care_1 = require("../types/auto-care");
6
+ /**
7
+ * Default auto-care configuration
8
+ */
9
+ exports.DEFAULT_AUTO_CARE_CONFIG = {
10
+ enabled: false,
11
+ autoFeed: false,
12
+ thresholds: {
13
+ hunger: 70,
14
+ happiness: 60,
15
+ cleanliness: 60,
16
+ energy: 50,
17
+ health: 70,
18
+ },
19
+ };
20
+ /**
21
+ * Auto-purchase rules
22
+ */
23
+ exports.AUTO_PURCHASE_RULES = [
24
+ { itemId: 'fish', itemName: 'Fresh Fish', minQuantity: 2, maxCost: 20, itemPrice: 10 },
25
+ { itemId: 'ball', itemName: 'Tennis Ball', minQuantity: 1, maxCost: 25, itemPrice: 15 },
26
+ { itemId: 'soap', itemName: 'Pet Soap', minQuantity: 1, maxCost: 15, itemPrice: 10 },
27
+ { itemId: 'medicine', itemName: 'Medicine', minQuantity: 1, maxCost: 35, itemPrice: 30 },
28
+ ];
29
+ /**
30
+ * Auto-Care system for managing pet care automatically
31
+ */
32
+ class AutoCare {
33
+ constructor(config = {}) {
34
+ this.config = { ...exports.DEFAULT_AUTO_CARE_CONFIG, ...config };
35
+ }
36
+ /**
37
+ * Assess pet's current needs based on stats
38
+ */
39
+ assessNeeds(pet, stats) {
40
+ const needs = [];
41
+ const data = pet.getData();
42
+ // Don't care if sleeping (unless waking up)
43
+ if (data.isSleeping) {
44
+ return [];
45
+ }
46
+ // Hunger - highest priority
47
+ if (stats.hunger < this.config.thresholds.hunger) {
48
+ const fishItem = (0, items_1.getItem)('fish');
49
+ needs.push({
50
+ stat: 'hunger',
51
+ threshold: this.config.thresholds.hunger,
52
+ action: auto_care_1.CareAction.FEED,
53
+ itemId: 'fish',
54
+ itemName: fishItem?.name || 'Fresh Fish',
55
+ priority: 100,
56
+ });
57
+ }
58
+ // Health - critical priority
59
+ if (stats.health < this.config.thresholds.health) {
60
+ const medicineItem = (0, items_1.getItem)('medicine');
61
+ needs.push({
62
+ stat: 'health',
63
+ threshold: this.config.thresholds.health,
64
+ action: auto_care_1.CareAction.HEAL,
65
+ itemId: 'medicine',
66
+ itemName: medicineItem?.name || 'Medicine',
67
+ priority: 90,
68
+ });
69
+ }
70
+ // Happiness - medium priority
71
+ if (stats.happiness < this.config.thresholds.happiness) {
72
+ const ballItem = (0, items_1.getItem)('ball');
73
+ needs.push({
74
+ stat: 'happiness',
75
+ threshold: this.config.thresholds.happiness,
76
+ action: auto_care_1.CareAction.PLAY,
77
+ itemId: 'ball',
78
+ itemName: ballItem?.name || 'Tennis Ball',
79
+ priority: 70,
80
+ });
81
+ }
82
+ // Cleanliness - medium priority
83
+ if (stats.cleanliness < this.config.thresholds.cleanliness) {
84
+ const soapItem = (0, items_1.getItem)('soap');
85
+ needs.push({
86
+ stat: 'cleanliness',
87
+ threshold: this.config.thresholds.cleanliness,
88
+ action: auto_care_1.CareAction.CLEAN,
89
+ itemId: 'soap',
90
+ itemName: soapItem?.name || 'Pet Soap',
91
+ priority: 60,
92
+ });
93
+ }
94
+ // Sort by priority (highest first)
95
+ return needs.sort((a, b) => b.priority - a.priority);
96
+ }
97
+ /**
98
+ * Execute one-click care - perform all needed actions
99
+ */
100
+ async oneClickCare(pet) {
101
+ const statsBefore = { ...pet.getData().stats };
102
+ const actionsTaken = [];
103
+ let itemsUsed = 0;
104
+ const needs = this.assessNeeds(pet, statsBefore);
105
+ for (const need of needs) {
106
+ const result = await this.performCareAction(pet, need);
107
+ actionsTaken.push(result);
108
+ if (result.success) {
109
+ itemsUsed++;
110
+ }
111
+ }
112
+ const statsAfter = { ...pet.getData().stats };
113
+ return {
114
+ success: actionsTaken.some((a) => a.success),
115
+ actionsTaken,
116
+ statsBefore,
117
+ statsAfter,
118
+ coinsSpent: 0,
119
+ itemsUsed,
120
+ };
121
+ }
122
+ /**
123
+ * Perform a single care action
124
+ */
125
+ async performCareAction(pet, need) {
126
+ const inventory = pet.getInventory();
127
+ const statBefore = pet.getData().stats[need.stat];
128
+ // Check if we have the required item
129
+ const hasItem = inventory.hasItem(need.itemId);
130
+ if (!hasItem) {
131
+ // Try alternative items
132
+ const alternative = this.findAlternativeItem(need.action, inventory);
133
+ if (alternative) {
134
+ const result = pet.useItem(alternative);
135
+ const statAfter = pet.getData().stats[need.stat];
136
+ return {
137
+ action: need.action,
138
+ itemId: alternative,
139
+ itemName: (0, items_1.getItem)(alternative)?.name || alternative,
140
+ success: result.success,
141
+ statChanges: [{ stat: need.stat, from: statBefore, to: statAfter }],
142
+ reason: result.success ? undefined : result.message,
143
+ };
144
+ }
145
+ return {
146
+ action: need.action,
147
+ itemId: need.itemId,
148
+ itemName: need.itemName,
149
+ success: false,
150
+ statChanges: [],
151
+ reason: `No ${need.itemName} available. Visit the shop!`,
152
+ };
153
+ }
154
+ // Use the item
155
+ const result = pet.useItem(need.itemId);
156
+ const statAfter = pet.getData().stats[need.stat];
157
+ return {
158
+ action: need.action,
159
+ itemId: need.itemId,
160
+ itemName: need.itemName,
161
+ success: result.success,
162
+ statChanges: [{ stat: need.stat, from: statBefore, to: statAfter }],
163
+ reason: result.success ? undefined : result.message,
164
+ };
165
+ }
166
+ /**
167
+ * Find alternative item for a care action
168
+ */
169
+ findAlternativeItem(action, inventory) {
170
+ const alternatives = {
171
+ [auto_care_1.CareAction.FEED]: { type: items_1.ItemType.FOOD, fallbacks: ['premium_food', 'treat'] },
172
+ [auto_care_1.CareAction.PLAY]: { type: items_1.ItemType.TOY, fallbacks: ['toy'] },
173
+ [auto_care_1.CareAction.CLEAN]: { type: items_1.ItemType.CLEANING, fallbacks: ['shampoo'] },
174
+ [auto_care_1.CareAction.HEAL]: { type: items_1.ItemType.MEDICINE, fallbacks: ['bandage'] },
175
+ [auto_care_1.CareAction.NONE]: { type: items_1.ItemType.FOOD, fallbacks: [] },
176
+ };
177
+ const config = alternatives[action];
178
+ if (!config)
179
+ return null;
180
+ // Try fallbacks in order
181
+ for (const itemId of config.fallbacks) {
182
+ if (inventory.hasItem(itemId)) {
183
+ return itemId;
184
+ }
185
+ }
186
+ return null;
187
+ }
188
+ /**
189
+ * Auto-purchase items when low on stock
190
+ */
191
+ async autoPurchase(pet) {
192
+ if (!this.config.enabled) {
193
+ return { purchased: false, items: [], totalCost: 0 };
194
+ }
195
+ const coins = pet.getCoins();
196
+ const inventory = pet.getInventory();
197
+ const purchases = [];
198
+ let totalCost = 0;
199
+ for (const rule of exports.AUTO_PURCHASE_RULES) {
200
+ const currentQuantity = inventory.getItemQuantity(rule.itemId);
201
+ if (currentQuantity < rule.minQuantity && coins >= rule.maxCost) {
202
+ const quantityToBuy = Math.min(Math.floor((coins - totalCost) / rule.itemPrice), rule.minQuantity * 2);
203
+ if (quantityToBuy > 0) {
204
+ const cost = quantityToBuy * rule.itemPrice;
205
+ if (pet.spendCoins(cost)) {
206
+ pet.addItem(rule.itemId, quantityToBuy);
207
+ purchases.push({
208
+ itemId: rule.itemId,
209
+ itemName: rule.itemName,
210
+ quantity: quantityToBuy,
211
+ cost,
212
+ });
213
+ totalCost += cost;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ return {
219
+ purchased: purchases.length > 0,
220
+ items: purchases,
221
+ totalCost,
222
+ };
223
+ }
224
+ /**
225
+ * Check if auto-purchase can be afforded
226
+ */
227
+ canAffordAutoCare(pet) {
228
+ const coins = pet.getCoins();
229
+ const inventory = pet.getInventory();
230
+ for (const rule of exports.AUTO_PURCHASE_RULES) {
231
+ const currentQuantity = inventory.getItemQuantity(rule.itemId);
232
+ if (currentQuantity < rule.minQuantity && coins < rule.maxCost) {
233
+ return false;
234
+ }
235
+ }
236
+ return true;
237
+ }
238
+ /**
239
+ * Get current auto-care configuration
240
+ */
241
+ getConfig() {
242
+ return { ...this.config };
243
+ }
244
+ /**
245
+ * Update auto-care configuration
246
+ */
247
+ updateConfig(updates) {
248
+ this.config = { ...this.config, ...updates };
249
+ }
250
+ /**
251
+ * Enable or disable auto-purchase
252
+ */
253
+ setEnabled(enabled) {
254
+ this.config.enabled = enabled;
255
+ }
256
+ /**
257
+ * Get suggestions based on pet state
258
+ */
259
+ getSuggestions(pet) {
260
+ const suggestions = [];
261
+ const data = pet.getData();
262
+ const stats = data.stats;
263
+ const coins = pet.getCoins();
264
+ const inventory = pet.getInventory();
265
+ // Check if pet needs care
266
+ if (pet.needsCare()) {
267
+ suggestions.push("💡 Use 'pet care' for one-click care");
268
+ }
269
+ // Check if coins are plentiful but inventory is low
270
+ const fishQty = inventory.getItemQuantity('fish');
271
+ const ballQty = inventory.getItemQuantity('ball');
272
+ const soapQty = inventory.getItemQuantity('soap');
273
+ if (coins > 100 && (fishQty < 2 || ballQty < 1 || soapQty < 1)) {
274
+ suggestions.push("💡 Coins plentiful, visit shop: 'pet shop'");
275
+ }
276
+ // Check git streak
277
+ if (pet.getGitStreak() === 0 && pet.getGitCommitCount() === 0) {
278
+ suggestions.push("💡 Make git commits to improve pet stats!");
279
+ }
280
+ // Check if pet is sleeping
281
+ if (data.isSleeping && stats.energy < 80) {
282
+ suggestions.push("💡 Let your pet sleep to restore energy");
283
+ }
284
+ return suggestions;
285
+ }
286
+ }
287
+ exports.AutoCare = AutoCare;
288
+ /**
289
+ * Create a default AutoCare instance
290
+ */
291
+ const createAutoCare = (config) => {
292
+ return new AutoCare(config);
293
+ };
294
+ exports.createAutoCare = createAutoCare;
295
+ //# sourceMappingURL=auto-care.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-care.js","sourceRoot":"","sources":["../../src/core/auto-care.ts"],"names":[],"mappings":"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"}