gl-life-claude-zen 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.md +1 -0
- package/bin/create-gl-life-claude.js +56 -1
- package/dist/hooks/auto-format.js +1 -1
- package/dist/hooks/complete-task.js +1 -1
- package/dist/hooks/enforce-migration-workflow.js +1 -1
- package/dist/hooks/enforce-structured-development.js +1 -1
- package/dist/hooks/enforce-test-pyramid.js +1 -1
- package/dist/hooks/init-task-tracker.js +1 -1
- package/dist/hooks/start-task.js +1 -1
- package/dist/hooks/task-status.js +1 -1
- package/dist/hooks/validate-database-changes.js +1 -1
- package/dist/hooks/validate-e2e-coverage.js +1 -1
- package/dist/hooks/validate-git-workflow.js +1 -1
- package/dist/hooks/validate-integration-site.js +1 -1
- package/dist/hooks/validate-migration-impact.js +1 -1
- package/dist/hooks/validate-task-completion.js +1 -1
- package/dist/hooks/validate-test-quality.js +1 -1
- package/dist/hooks/validate-test-results.js +1 -1
- package/dist/hooks/validate-ui-integration.js +1 -1
- package/dist/scripts/help.js +1 -1
- package/dist/scripts/plan-amend.js +1 -1
- package/dist/scripts/plan-create.js +1 -1
- package/dist/scripts/plan-help.js +1 -1
- package/dist/scripts/plan-init.js +1 -1
- package/dist/scripts/plan-manager.js +1 -1
- package/dist/scripts/setup-git-hooks.js +1 -1
- package/dist/scripts/task-done.js +1 -1
- package/dist/scripts/task-merge.js +1 -1
- package/dist/scripts/task-next.js +1 -1
- package/dist/scripts/task-start.js +1 -1
- package/dist/scripts/task-status.js +1 -1
- package/lib/init.js +6 -6
- package/package.json +2 -1
- package/templates/.claude/settings.json +9 -0
- package/templates/.gitignore +14 -0
- package/templates/README.md +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.3.2] - 2025-12-20
|
|
9
|
+
|
|
10
|
+
### Security
|
|
11
|
+
- **CRITICAL: Fixed Enforcement Bypass Vulnerability**
|
|
12
|
+
- Framework enforcement hooks can no longer be bypassed
|
|
13
|
+
- ALL tools (Read, Grep, Glob, Edit, Write, TodoWrite, Bash) now require active task
|
|
14
|
+
- Added universal PreToolUse hook with "*" matcher
|
|
15
|
+
- Updated enforce-structured-development.js to block all work tools when no task active
|
|
16
|
+
- Whitelisted essential commands (npm run help, task:status, task:start, plan:*)
|
|
17
|
+
- This ensures structured development workflow cannot be circumvented
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Hook enforcement now runs on PreToolUse instead of PostToolUse for work validation
|
|
21
|
+
- Updated settings.json template to include universal enforcement hook
|
|
22
|
+
- Improved error messages to show tool type and file/pattern being accessed
|
|
23
|
+
|
|
24
|
+
### Technical Details
|
|
25
|
+
- Added WHITELISTED_COMMANDS array for commands that don't require active task
|
|
26
|
+
- Added isWhitelisted() function to check Bash commands against whitelist
|
|
27
|
+
- Modified RULE 3 to check workTools array ['Read', 'Grep', 'Glob', 'Edit', 'Write', 'TodoWrite']
|
|
28
|
+
- Enhanced tool_input parsing to capture pattern and command parameters
|
|
29
|
+
|
|
8
30
|
## [1.0.0] - 2025-12-19
|
|
9
31
|
|
|
10
32
|
### Added
|
|
@@ -242,6 +264,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
242
264
|
- Visual validation: 5-15 seconds (screenshot + AI analysis)
|
|
243
265
|
- Contract validation: <1 second (static analysis)
|
|
244
266
|
|
|
267
|
+
## [1.3.1] - 2025-12-20
|
|
268
|
+
|
|
269
|
+
### Fixed
|
|
270
|
+
- **CRITICAL: .gitignore Template Handling**
|
|
271
|
+
- Fixed npm renaming `.gitignore` to `.npmignore` during package extraction
|
|
272
|
+
- Added dynamic source resolution in lib/init.js to handle both filenames
|
|
273
|
+
- Added missing `existsSync` import
|
|
274
|
+
|
|
275
|
+
- **CLI Version/Help Flags on Windows**
|
|
276
|
+
- Fixed Windows path handling in getVersion() function
|
|
277
|
+
- Changed from dynamic ESM import to readFileSync for cross-platform compatibility
|
|
278
|
+
- Resolved ERR_UNSUPPORTED_ESM_URL_SCHEME and ERR_IMPORT_ATTRIBUTE_MISSING errors
|
|
279
|
+
|
|
280
|
+
### Technical Details
|
|
281
|
+
- Package now works correctly on Windows, macOS, and Linux
|
|
282
|
+
- All project creation scenarios tested and verified
|
|
283
|
+
- Task management scripts verified working with bundled hooks
|
|
284
|
+
|
|
245
285
|
## [1.3.0] - 2025-12-20
|
|
246
286
|
|
|
247
287
|
### Changed
|
|
@@ -262,11 +302,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
262
302
|
- Updated README.md with "Hard Requirements" section
|
|
263
303
|
- Updated settings.json template with warning comment
|
|
264
304
|
|
|
305
|
+
### Added
|
|
306
|
+
- **CLI Help and Version Flags**
|
|
307
|
+
- Added `--help` and `-h` flags to display usage information
|
|
308
|
+
- Added `--version` and `-v` flags to show package version
|
|
309
|
+
- Prevents accidental project creation with invalid names like `--help`
|
|
310
|
+
- Self-documenting CLI with comprehensive usage examples
|
|
311
|
+
|
|
312
|
+
### Fixed
|
|
313
|
+
- **CRITICAL: Missing .gitignore Template File in Published Package**
|
|
314
|
+
- Fixed npm excluding `.gitignore` template during package publish
|
|
315
|
+
- Added explicit `templates/.gitignore` entry to package.json files array
|
|
316
|
+
- Without this fix, all project creation attempts fail with ENOENT error
|
|
317
|
+
- Impact: Package is now usable via npm install and npx
|
|
318
|
+
|
|
319
|
+
- **CRITICAL: Task Management Scripts Hook Path Resolution**
|
|
320
|
+
- Fixed incorrect hook paths in bundled scripts that prevented task management
|
|
321
|
+
- Scripts were looking for hooks at `node_modules/.gl-life-claude/.claude/hooks/` (wrong)
|
|
322
|
+
- Now correctly resolve to `node_modules/.gl-life-claude/hooks/` (bundled location)
|
|
323
|
+
- Added dynamic path resolution with fallback to dev workspace location
|
|
324
|
+
- Affected scripts: task-status.js, task-start.js, task-done.js, plan-init.js
|
|
325
|
+
- Impact: Task management commands (npm run task:*) now work correctly
|
|
326
|
+
- Error message now shows both attempted paths for easier debugging
|
|
327
|
+
|
|
265
328
|
### Technical Details
|
|
266
329
|
- Updated hook: validate-ui-integration.js (16KB bundled)
|
|
267
330
|
- All 10 requirements enforced in shouldBlock() function
|
|
268
331
|
- No configuration options to disable requirements
|
|
269
332
|
- Breaking change for projects relying on soft requirement warnings
|
|
333
|
+
- Fixed scripts: 4 task management scripts with dynamic hook resolution
|
|
270
334
|
|
|
271
335
|
## [Unreleased]
|
|
272
336
|
|
package/README.md
CHANGED
|
@@ -233,6 +233,7 @@ The framework includes automated UI component validation with four validation st
|
|
|
233
233
|
- [UI Verification Guide](./docs/UI-VERIFICATION-GUIDE.md) - Complete validation system guide
|
|
234
234
|
- [Port Management](./docs/PORT-MANAGEMENT.md) - Fixed port allocation and auto-cleanup
|
|
235
235
|
- [Component Contracts](./docs/COMPONENT-CONTRACTS.md) - Contract schema reference
|
|
236
|
+
- [CHANGELOG](./CHANGELOG.md) - Version history and breaking changes
|
|
236
237
|
|
|
237
238
|
### UI Testing Configuration
|
|
238
239
|
|
|
@@ -10,12 +10,54 @@
|
|
|
10
10
|
|
|
11
11
|
import { fileURLToPath } from 'url';
|
|
12
12
|
import { dirname, join } from 'path';
|
|
13
|
-
import { existsSync } from 'fs';
|
|
13
|
+
import { existsSync, readFileSync } from 'fs';
|
|
14
14
|
import { createInterface } from 'readline';
|
|
15
15
|
|
|
16
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
17
|
const __dirname = dirname(__filename);
|
|
18
18
|
|
|
19
|
+
// Get package version
|
|
20
|
+
function getVersion() {
|
|
21
|
+
const pkgPath = join(__dirname, '..', 'package.json');
|
|
22
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
23
|
+
return pkg.version;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Show help message
|
|
27
|
+
function showHelp() {
|
|
28
|
+
const version = getVersion();
|
|
29
|
+
console.log(`
|
|
30
|
+
GL.Life Claude Project Generator v${version}
|
|
31
|
+
|
|
32
|
+
Usage:
|
|
33
|
+
npm create gl-life-claude [project-name] [options]
|
|
34
|
+
npx gl-life-claude-zen [project-name] [options]
|
|
35
|
+
|
|
36
|
+
Options:
|
|
37
|
+
--help, -h Show this help message
|
|
38
|
+
--version, -v Show version number
|
|
39
|
+
|
|
40
|
+
Examples:
|
|
41
|
+
npm create gl-life-claude my-project Create project with defaults
|
|
42
|
+
npx gl-life-claude-zen Interactive mode with prompts
|
|
43
|
+
|
|
44
|
+
Interactive Mode:
|
|
45
|
+
When run without a project name, you will be prompted for:
|
|
46
|
+
- Project name (lowercase, numbers, hyphens, underscores)
|
|
47
|
+
- Git initialization (Y/n)
|
|
48
|
+
- Install dependencies (Y/n)
|
|
49
|
+
|
|
50
|
+
Project Structure:
|
|
51
|
+
- Structured task-based development workflow
|
|
52
|
+
- Git workflow enforcement with hooks
|
|
53
|
+
- Pre-commit validation and auto-formatting
|
|
54
|
+
- Task tracking with dependencies
|
|
55
|
+
- Project plan management
|
|
56
|
+
|
|
57
|
+
For more information: https://github.com/ajayhanda/gl-life-claude
|
|
58
|
+
`);
|
|
59
|
+
}
|
|
60
|
+
|
|
19
61
|
// Helper: Create readline interface
|
|
20
62
|
function createPrompt() {
|
|
21
63
|
return createInterface({
|
|
@@ -37,6 +79,19 @@ function isValidProjectName(name) {
|
|
|
37
79
|
// Main execution
|
|
38
80
|
async function main() {
|
|
39
81
|
const args = process.argv.slice(2);
|
|
82
|
+
|
|
83
|
+
// Handle --help flag
|
|
84
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
85
|
+
showHelp();
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Handle --version flag
|
|
90
|
+
if (args.includes('--version') || args.includes('-v')) {
|
|
91
|
+
console.log(getVersion());
|
|
92
|
+
process.exit(0);
|
|
93
|
+
}
|
|
94
|
+
|
|
40
95
|
let projectName = args[0];
|
|
41
96
|
let initGit = true;
|
|
42
97
|
let installDeps = true;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
2
|
+
var _0x572149=_0x1e9d;(function(_0x123935,_0x154abb){var _0x5d49da=_0x1e9d,_0x5b5b83=_0x123935();while(!![]){try{var _0x3cea98=parseInt(_0x5d49da(0x123))/0x1+parseInt(_0x5d49da(0x127))/0x2*(-parseInt(_0x5d49da(0x10b))/0x3)+-parseInt(_0x5d49da(0x125))/0x4+parseInt(_0x5d49da(0x117))/0x5+-parseInt(_0x5d49da(0x106))/0x6*(-parseInt(_0x5d49da(0x124))/0x7)+-parseInt(_0x5d49da(0x109))/0x8+parseInt(_0x5d49da(0x103))/0x9;if(_0x3cea98===_0x154abb)break;else _0x5b5b83['push'](_0x5b5b83['shift']());}catch(_0x4f9e96){_0x5b5b83['push'](_0x5b5b83['shift']());}}}(_0x5665,0xa98a4));function _0x5665(){var _0x4616f2=['9596400gVcvwa','XVBbB','907707NnzssX','zrrsR','match','tKvPh','ignore','warn','child_process','search','\x22\x20is\x20not\x20supported','log','jTPLs','toString','88760JnFqbZ','argv','existsSync','python\x20-m\x20black\x20\x22','Warning:\x20Could\x20not\x20format\x20','abJEY','(((.+)+)+)+$','constructor','stdio','apply','tool_input','nlTKg','1040121XIfzAY','959fxNQFE','1205904vuVNfP','npx\x20prettier\x20--write\x20\x22','2dDyvaB','ttzxS','exit','4780467uJZknP','npx\x20prettier\x20--version','Yoxvu','39810kkYZmE','file_path','Formatted:\x20'];_0x5665=function(){return _0x4616f2;};return _0x5665();}var _0x41d4f7=(function(){var _0xd9d7cf=_0x1e9d,_0x367a86={};_0x367a86[_0xd9d7cf(0x10c)]=function(_0x268b71,_0x3e935b){return _0x268b71!==_0x3e935b;},_0x367a86[_0xd9d7cf(0x122)]='jQRQN';var _0x30eaf8=_0x367a86,_0x2cae83=!![];return function(_0x38a963,_0x392612){var _0x459990=_0xd9d7cf,_0x14e929={'Yoxvu':function(_0x26a9d6,_0x2574dc){var _0x5253b5=_0x1e9d;return _0x30eaf8[_0x5253b5(0x10c)](_0x26a9d6,_0x2574dc);},'tKvPh':_0x30eaf8[_0x459990(0x122)]},_0x269395=_0x2cae83?function(){var _0x546661=_0x459990;if(_0x14e929[_0x546661(0x105)](_0x14e929[_0x546661(0x10e)],_0x14e929[_0x546661(0x10e)]))_0x578466[_0x546661(0x110)](_0x546661(0x11b)+_0x2fa7d0);else{if(_0x392612){var _0x401119=_0x392612[_0x546661(0x120)](_0x38a963,arguments);return _0x392612=null,_0x401119;}}}:function(){};return _0x2cae83=![],_0x269395;};}()),_0x45f213=_0x41d4f7(this,function(){var _0x7c0470=_0x1e9d,_0x12c42f={};_0x12c42f[_0x7c0470(0x10a)]=_0x7c0470(0x11d);var _0x6a804a=_0x12c42f;return _0x45f213['toString']()[_0x7c0470(0x112)](_0x6a804a['XVBbB'])[_0x7c0470(0x116)]()[_0x7c0470(0x11e)](_0x45f213)['search'](_0x6a804a[_0x7c0470(0x10a)]);});_0x45f213();var r=(_0x2d3a8f=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x2d3a8f,{'get':(_0x38cd45,_0x456119)=>(typeof require<'u'?require:_0x38cd45)[_0x456119]}):_0x2d3a8f)(function(_0x48c123){var _0x34579c=_0x1e9d,_0x1094aa={};_0x1094aa[_0x34579c(0x115)]=function(_0xdfe7ae,_0x2709e3){return _0xdfe7ae<_0x2709e3;},_0x1094aa[_0x34579c(0x128)]=function(_0x1edb88,_0xa4f46c){return _0x1edb88+_0xa4f46c;},_0x1094aa[_0x34579c(0x11c)]='Dynamic\x20require\x20of\x20\x22';var _0x4a2754=_0x1094aa;if(_0x4a2754[_0x34579c(0x115)](typeof require,'u'))return require['apply'](this,arguments);throw Error(_0x4a2754[_0x34579c(0x128)](_0x4a2754['ttzxS'](_0x4a2754['abJEY'],_0x48c123),_0x34579c(0x113)));}),{execSync:e}=r(_0x572149(0x111)),i=r('fs'),c=process[_0x572149(0x118)][0x2]||'{}',a=JSON['parse'](c),t=a[_0x572149(0x121)]?.[_0x572149(0x107)];(!t||!i[_0x572149(0x119)](t))&&process[_0x572149(0x102)](0x0);try{if(t[_0x572149(0x10d)](/\.(ts|tsx|js|jsx|json)$/))try{var _0x301260={};_0x301260[_0x572149(0x11f)]=_0x572149(0x10f);var _0x17a8ba={};_0x17a8ba[_0x572149(0x11f)]='ignore',(e(_0x572149(0x104),_0x301260),e(_0x572149(0x126)+t+'\x22',_0x17a8ba),console[_0x572149(0x114)](_0x572149(0x108)+t));}catch{}else{if(t[_0x572149(0x10d)](/\.py$/))try{var _0x775442={};_0x775442[_0x572149(0x11f)]=_0x572149(0x10f);var _0x399a09={};_0x399a09['stdio']=_0x572149(0x10f),(e('python\x20-m\x20black\x20--version',_0x775442),e(_0x572149(0x11a)+t+'\x22',_0x399a09),console[_0x572149(0x114)]('Formatted:\x20'+t));}catch{}}}catch{console[_0x572149(0x110)](_0x572149(0x11b)+t);}function _0x1e9d(_0x45a1bd,_0x3b2af9){_0x45a1bd=_0x45a1bd-0x102;var _0x71d248=_0x5665();var _0x45f213=_0x71d248[_0x45a1bd];return _0x45f213;}process['exit'](0x0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
2
|
+
var _0x15d99f=_0x5a9b;function _0x5b03(){var _0xa2e6fa=['error','2228312KPCVgo','trim','tasks','estimatedHours','existsSync','log','\x20\x20git\x20commit\x20-m\x20\x22[','length','\x0a❌\x20ERROR:\x20No\x20active\x20plan\x20found','Set\x20active\x20plan\x20first:\x20npm\x20run\x20plan:manager\x0a','.json','Syncing\x20tracker\x20status...\x0a','\x0a❌\x20ERROR:\x20Task\x20tracker\x20not\x20found','\x0aCommit\x20all\x20changes\x20before\x20completing\x20task:','status','activeTask','find','PNnwd','📊\x20Estimated:\x20','stringify','\x0a📈\x20Project\x20progress:\x20','9wrpbyZ','⏱️\x20\x20Time\x20taken:\x20','\x20tasks\x20(','.claude/ACTIVE-PLAN','%)\x0a','\x20\x20Start:\x20npm\x20run\x20task:next\x0a','parse','toISOString','in_progress','encoding','158005wVmqoD','writeFileSync','3SgnYZt','txXOK','toString','Make\x20sure\x20all\x20changes\x20are\x20committed!\x0a','\x22\x20is\x20not\x20supported','taskFiles','completedAt','TCOXQ','\x0a❌\x20ERROR:\x20You\x20have\x20uncommitted\x20changes','join','VQNPq','filter','AQAnr','IWDiZ','2495283SsRsCi','startedAt','exit','BgSDR','pending','IUYwu','📌\x20Next\x20task\x20available:','15MjHnnU','1045596HwjKTT','utf8','blocked','Initialize\x20first:\x20npm\x20run\x20plan:init\x0a','constructor','\x0a⚠️\x20\x20WARNING:\x20Could\x20not\x20check\x20git\x20status','HnKdO','statistics','warn','apply','actualHours','4320280iWBoWK',']\x20Description\x20of\x20changes\x22','357522LdnALn','141050vezjgj','📌\x20','Plan:\x20','📋\x20Plan:\x20','(((.+)+)+)+$','search','tPIux','toFixed','lastUpdated','path','title','TahxQ','readFileSync','\x20is\x20already\x20completed','AsylX','completed','totalTasks','.claude/plans','\x20\x20git\x20add\x20.'];_0x5b03=function(){return _0xa2e6fa;};return _0x5b03();}(function(_0x54d050,_0x34b40b){var _0x2085b7=_0x5a9b,_0x137085=_0x54d050();while(!![]){try{var _0x28f589=-parseInt(_0x2085b7(0x16a))/0x1+parseInt(_0x2085b7(0x137))/0x2+parseInt(_0x2085b7(0x16c))/0x3*(-parseInt(_0x2085b7(0x182))/0x4)+-parseInt(_0x2085b7(0x181))/0x5*(-parseInt(_0x2085b7(0x136))/0x6)+-parseInt(_0x2085b7(0x17a))/0x7+parseInt(_0x2085b7(0x14b))/0x8+-parseInt(_0x2085b7(0x160))/0x9*(-parseInt(_0x2085b7(0x134))/0xa);if(_0x28f589===_0x34b40b)break;else _0x137085['push'](_0x137085['shift']());}catch(_0x3c594d){_0x137085['push'](_0x137085['shift']());}}}(_0x5b03,0x2ceac));var _0xc36dba=(function(){var _0x20cf24=_0x5a9b,_0x11b9dd={};_0x11b9dd['IUYwu']=function(_0x9cb63d,_0x338a93){return _0x9cb63d===_0x338a93;},_0x11b9dd[_0x20cf24(0x173)]='pIqve',_0x11b9dd[_0x20cf24(0x188)]=_0x20cf24(0x142);var _0x37e8eb=_0x11b9dd,_0x5b70cb=!![];return function(_0x10e7b5,_0x5b8b36){var _0x12aabf=_0x20cf24,_0x4ceed4={'IWDiZ':function(_0x159f10,_0x738b70){var _0x3b7232=_0x5a9b;return _0x37e8eb[_0x3b7232(0x17f)](_0x159f10,_0x738b70);},'txXOK':_0x37e8eb[_0x12aabf(0x173)],'tPIux':_0x12aabf(0x178),'UeUpB':_0x12aabf(0x176),'cAoAB':_0x37e8eb[_0x12aabf(0x188)]},_0xdbe489=_0x5b70cb?function(){var _0x489867=_0x12aabf;if(_0x4ceed4['IWDiZ'](_0x4ceed4[_0x489867(0x16d)],_0x4ceed4[_0x489867(0x13d)]))_0x2982b0[_0x489867(0x131)](_0x489867(0x187)),_0x208cfb[_0x489867(0x131)](_0x489867(0x16f));else{if(_0x5b8b36){if(_0x4ceed4[_0x489867(0x179)](_0x4ceed4['UeUpB'],_0x4ceed4['cAoAB'])){var _0x2bf43e=_0x3af423?function(){var _0x258fe9=_0x489867;if(_0x24c4b1){var _0x5ca530=_0x4c4e46[_0x258fe9(0x132)](_0x4ab30d,arguments);return _0x522f65=null,_0x5ca530;}}:function(){};return _0x20323b=![],_0x2bf43e;}else{var _0x29fa60=_0x5b8b36['apply'](_0x10e7b5,arguments);return _0x5b8b36=null,_0x29fa60;}}}}:function(){};return _0x5b70cb=![],_0xdbe489;};}()),_0x1d7c13=_0xc36dba(this,function(){var _0x2d2b34=_0x5a9b,_0x11f959={};_0x11f959[_0x2d2b34(0x15c)]=_0x2d2b34(0x13b);var _0x225b65=_0x11f959;return _0x1d7c13[_0x2d2b34(0x16e)]()['search'](_0x225b65[_0x2d2b34(0x15c)])['toString']()[_0x2d2b34(0x186)](_0x1d7c13)[_0x2d2b34(0x13c)](_0x225b65[_0x2d2b34(0x15c)]);});_0x1d7c13();var i=(_0x101aac=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x101aac,{'get':(_0x182683,_0x435131)=>(typeof require<'u'?require:_0x182683)[_0x435131]}):_0x101aac)(function(_0xc9e286){var _0x43ee5e=_0x5a9b,_0x5ebf89={'AsylX':function(_0xa300ec,_0x257ed6){return _0xa300ec<_0x257ed6;},'zRdbQ':function(_0xbc5bf0,_0x5f3374){return _0xbc5bf0(_0x5f3374);},'BgSDR':function(_0x222b36,_0x1f87f1){return _0x222b36+_0x1f87f1;},'MREbz':'Dynamic\x20require\x20of\x20\x22','afCkN':_0x43ee5e(0x170)};if(_0x5ebf89[_0x43ee5e(0x145)](typeof require,'u'))return require[_0x43ee5e(0x132)](this,arguments);throw _0x5ebf89['zRdbQ'](Error,_0x5ebf89[_0x43ee5e(0x17d)](_0x5ebf89[_0x43ee5e(0x17d)](_0x5ebf89['MREbz'],_0xc9e286),_0x5ebf89['afCkN']));}),n=i('fs'),d=i(_0x15d99f(0x140)),a=process['argv'][0x2];a||(console[_0x15d99f(0x14a)]('\x0a❌\x20ERROR:\x20Task\x20ID\x20required'),console[_0x15d99f(0x14a)]('Usage:\x20npm\x20run\x20task:done\x20TASK-001\x0a'),process[_0x15d99f(0x17c)](0x1));var p=_0x15d99f(0x163);n['existsSync'](p)||(console[_0x15d99f(0x14a)](_0x15d99f(0x153)),console[_0x15d99f(0x14a)](_0x15d99f(0x154)),process['exit'](0x1));var u=n[_0x15d99f(0x143)](p,_0x15d99f(0x183))[_0x15d99f(0x14c)](),k=d['join'](_0x15d99f(0x148),u),r=d[_0x15d99f(0x175)](k,'TASK-TRACKER.json'),l=d['join'](k,_0x15d99f(0x14d),a+_0x15d99f(0x155));n['existsSync'](r)||(console[_0x15d99f(0x14a)](_0x15d99f(0x157)),console[_0x15d99f(0x14a)](_0x15d99f(0x139)+u),console['error'](_0x15d99f(0x185)),process[_0x15d99f(0x17c)](0x1)),n[_0x15d99f(0x14f)](l)||(console[_0x15d99f(0x14a)]('\x0a❌\x20ERROR:\x20Task\x20file\x20not\x20found:\x20'+l+'\x0a'),process['exit'](0x1));var e=JSON[_0x15d99f(0x166)](n[_0x15d99f(0x143)](r,_0x15d99f(0x183))),s=JSON['parse'](n[_0x15d99f(0x143)](l,'utf8')),f=s[_0x15d99f(0x159)]===_0x15d99f(0x146);if(f){console[_0x15d99f(0x150)]('\x0a✅\x20Task\x20'+a+_0x15d99f(0x144)),console[_0x15d99f(0x150)](_0x15d99f(0x156));let t=e[_0x15d99f(0x171)][_0x15d99f(0x15b)](_0x504196=>_0x504196['id']===a);t&&t[_0x15d99f(0x159)]!=='completed'?(t[_0x15d99f(0x159)]=_0x15d99f(0x146),e['statistics']={'totalTasks':e['taskFiles']['length'],'pending':e[_0x15d99f(0x171)]['filter'](_0x37bb26=>_0x37bb26['status']==='pending')[_0x15d99f(0x152)],'inProgress':e[_0x15d99f(0x171)]['filter'](_0x53191e=>_0x53191e[_0x15d99f(0x159)]===_0x15d99f(0x168))[_0x15d99f(0x152)],'completed':e[_0x15d99f(0x171)][_0x15d99f(0x177)](_0x229c96=>_0x229c96[_0x15d99f(0x159)]===_0x15d99f(0x146))[_0x15d99f(0x152)],'blocked':e[_0x15d99f(0x171)][_0x15d99f(0x177)](_0x2cec85=>_0x2cec85[_0x15d99f(0x159)]===_0x15d99f(0x184))['length']},e['activeTask']=null,e[_0x15d99f(0x13f)]=new Date()[_0x15d99f(0x167)](),n['writeFileSync'](r,JSON[_0x15d99f(0x15e)](e,null,0x2)),console[_0x15d99f(0x150)]('✅\x20Tracker\x20synchronized\x0a')):console[_0x15d99f(0x150)]('✅\x20Tracker\x20already\x20synchronized\x0a'),process['exit'](0x0);}var {execSync:S}=i('child_process');try{var _0x53c4a3={};_0x53c4a3[_0x15d99f(0x169)]='utf8';let t=S('git\x20status\x20--porcelain',_0x53c4a3);t[_0x15d99f(0x14c)]()&&(console[_0x15d99f(0x14a)](_0x15d99f(0x174)),console[_0x15d99f(0x14a)]('\x0aUncommitted\x20files:'),console[_0x15d99f(0x14a)](t),console[_0x15d99f(0x14a)](_0x15d99f(0x158)),console[_0x15d99f(0x14a)](_0x15d99f(0x149)),console[_0x15d99f(0x14a)](_0x15d99f(0x151)+a+_0x15d99f(0x135)),console['error'](''),process[_0x15d99f(0x17c)](0x1));}catch{console[_0x15d99f(0x131)]('\x0a⚠️\x20\x20WARNING:\x20Could\x20not\x20check\x20git\x20status'),console[_0x15d99f(0x131)](_0x15d99f(0x16f));}function _0x5a9b(_0x1a2a86,_0x5bfaa8){_0x1a2a86=_0x1a2a86-0x130;var _0x3e659d=_0x5b03();var _0x1d7c13=_0x3e659d[_0x1a2a86];return _0x1d7c13;}s['status']=_0x15d99f(0x146),s[_0x15d99f(0x172)]=new Date()[_0x15d99f(0x167)]();if(s[_0x15d99f(0x17b)]){let t=new Date(s[_0x15d99f(0x17b)]),o=new Date(s[_0x15d99f(0x172)]);s[_0x15d99f(0x133)]=Math['round']((o-t)/(0x3e8*0x3c*0x3c)*0xa)/0xa;}n['writeFileSync'](l,JSON['stringify'](s,null,0x2)),e[_0x15d99f(0x15a)]=null,e['lastUpdated']=new Date()[_0x15d99f(0x167)]();var g=e[_0x15d99f(0x171)][_0x15d99f(0x15b)](_0x385cc0=>_0x385cc0['id']===a);g&&(g[_0x15d99f(0x159)]=_0x15d99f(0x146)),e['statistics']={'totalTasks':e[_0x15d99f(0x171)]['length'],'pending':e[_0x15d99f(0x171)][_0x15d99f(0x177)](_0x5c7801=>_0x5c7801[_0x15d99f(0x159)]===_0x15d99f(0x17e))[_0x15d99f(0x152)],'inProgress':e[_0x15d99f(0x171)][_0x15d99f(0x177)](_0x612ba9=>_0x612ba9[_0x15d99f(0x159)]==='in_progress')[_0x15d99f(0x152)],'completed':e[_0x15d99f(0x171)][_0x15d99f(0x177)](_0x341639=>_0x341639['status']===_0x15d99f(0x146))[_0x15d99f(0x152)],'blocked':e[_0x15d99f(0x171)]['filter'](_0x2352c7=>_0x2352c7['status']==='blocked')[_0x15d99f(0x152)]},n[_0x15d99f(0x16b)](r,JSON['stringify'](e,null,0x2)),console[_0x15d99f(0x150)]('\x0a✅\x20Completed\x20task:\x20'+a),console[_0x15d99f(0x150)](_0x15d99f(0x13a)+u+'\x0a'),console[_0x15d99f(0x150)](_0x15d99f(0x138)+s['title']),s[_0x15d99f(0x133)]&&console[_0x15d99f(0x150)](_0x15d99f(0x161)+s['actualHours']+'\x20hours');if(s[_0x15d99f(0x14e)]&&s['actualHours']){let t=((s[_0x15d99f(0x133)]-s[_0x15d99f(0x14e)])/s[_0x15d99f(0x14e)]*0x64)[_0x15d99f(0x13e)](0x1);console[_0x15d99f(0x150)](_0x15d99f(0x15d)+s[_0x15d99f(0x14e)]+'h\x20|\x20Variance:\x20'+t+'%');}var h=(e[_0x15d99f(0x130)][_0x15d99f(0x146)]/e[_0x15d99f(0x130)]['totalTasks']*0x64)[_0x15d99f(0x13e)](0x1);console[_0x15d99f(0x150)](_0x15d99f(0x15f)+e[_0x15d99f(0x130)][_0x15d99f(0x146)]+'/'+e[_0x15d99f(0x130)][_0x15d99f(0x147)]+_0x15d99f(0x162)+h+_0x15d99f(0x164));var c=e[_0x15d99f(0x171)]['find'](_0x2625b6=>_0x2625b6['status']===_0x15d99f(0x17e));c?(console[_0x15d99f(0x150)](_0x15d99f(0x180)),console[_0x15d99f(0x150)]('\x20\x20'+c['id']+':\x20'+c[_0x15d99f(0x141)]),console['log'](_0x15d99f(0x165))):e[_0x15d99f(0x130)][_0x15d99f(0x146)]===e[_0x15d99f(0x130)][_0x15d99f(0x147)]&&console['log']('🎉\x20ALL\x20TASKS\x20COMPLETED!\x20Project\x20finished.\x0a'),process[_0x15d99f(0x17c)](0x0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
2
|
+
var _0x307685=_0x2384;(function(_0x373217,_0x2a8a4a){var _0x5d6a83=_0x2384,_0x19b5f0=_0x373217();while(!![]){try{var _0x17ba8b=parseInt(_0x5d6a83(0x107))/0x1+parseInt(_0x5d6a83(0xe6))/0x2+parseInt(_0x5d6a83(0x109))/0x3+-parseInt(_0x5d6a83(0xd2))/0x4+-parseInt(_0x5d6a83(0xf0))/0x5*(-parseInt(_0x5d6a83(0xd0))/0x6)+parseInt(_0x5d6a83(0x104))/0x7*(parseInt(_0x5d6a83(0xd9))/0x8)+parseInt(_0x5d6a83(0xde))/0x9*(-parseInt(_0x5d6a83(0xe0))/0xa);if(_0x17ba8b===_0x2a8a4a)break;else _0x19b5f0['push'](_0x19b5f0['shift']());}catch(_0x3f9214){_0x19b5f0['push'](_0x19b5f0['shift']());}}}(_0x2846,0xec84d));var _0x3b2af5=(function(){var _0x510572=_0x2384,_0x283599={};_0x283599[_0x510572(0xf7)]=_0x510572(0xcf),_0x283599[_0x510572(0xe8)]='QUncJ',_0x283599[_0x510572(0xdc)]='cGdYS';var _0x2ee57b=_0x283599,_0x19d4cd=!![];return function(_0x5cb611,_0x5e7436){var _0x4d9222=_0x510572,_0x36370a={};_0x36370a['QzLGJ']=_0x2ee57b[_0x4d9222(0xf7)],_0x36370a[_0x4d9222(0xce)]=_0x2ee57b[_0x4d9222(0xe8)],_0x36370a['rAebe']=_0x2ee57b[_0x4d9222(0xdc)];var _0x3f700f=_0x36370a,_0x1d064e=_0x19d4cd?function(){var _0x45d23a=_0x4d9222;if(_0x5e7436){if(_0x3f700f[_0x45d23a(0xce)]!==_0x3f700f[_0x45d23a(0xdf)]){var _0x395e7e=_0x5e7436['apply'](_0x5cb611,arguments);return _0x5e7436=null,_0x395e7e;}else return _0x5e035d[_0x45d23a(0xda)]()[_0x45d23a(0xd5)](_0x3f700f[_0x45d23a(0xe9)])[_0x45d23a(0xda)]()['constructor'](_0xeccff4)[_0x45d23a(0xd5)](_0x3f700f[_0x45d23a(0xe9)]);}}:function(){};return _0x19d4cd=![],_0x1d064e;};}()),_0x5e32b4=_0x3b2af5(this,function(){var _0x165f24=_0x2384,_0x1f3f7a={};_0x1f3f7a[_0x165f24(0xe3)]=_0x165f24(0xcf);var _0x1076ad=_0x1f3f7a;return _0x5e32b4['toString']()[_0x165f24(0xd5)](_0x165f24(0xcf))[_0x165f24(0xda)]()['constructor'](_0x5e32b4)[_0x165f24(0xd5)](_0x1076ad['MAqQq']);});_0x5e32b4();var e=(_0x1f013b=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x1f013b,{'get':(_0x5b7ff6,_0x372f35)=>(typeof require<'u'?require:_0x5b7ff6)[_0x372f35]}):_0x1f013b)(function(_0x263f92){var _0x446367=_0x2384,_0x5e9bb0={'hfNDe':function(_0x35d8fc,_0x28c4ca){return _0x35d8fc(_0x28c4ca);},'KsKcv':function(_0x3bc0be,_0x5b7974){return _0x3bc0be+_0x5b7974;},'OgOCp':function(_0xa60258,_0x4ffe7c){return _0xa60258+_0x4ffe7c;}};if(typeof require<'u')return require[_0x446367(0xe1)](this,arguments);throw _0x5e9bb0[_0x446367(0xd1)](Error,_0x5e9bb0[_0x446367(0xf3)](_0x5e9bb0[_0x446367(0xf1)]('Dynamic\x20require\x20of\x20\x22',_0x263f92),_0x446367(0xdb)));}),p=e('fs'),h=e(_0x307685(0xe4)),{execSync:l}=e(_0x307685(0xef)),u=process[_0x307685(0xee)][0x2]||'{}',s=JSON[_0x307685(0x101)](u),i=s[_0x307685(0xf5)]?.[_0x307685(0xd4)]||'';function _0x2384(_0x4b30a2,_0x35499f){_0x4b30a2=_0x4b30a2-0xcc;var _0x25b453=_0x2846();var _0x5e32b4=_0x25b453[_0x4b30a2];return _0x5e32b4;}i[_0x307685(0x103)](/migrate|migration/i)||process[_0x307685(0xf6)](0x0);function _0x2846(){var _0x21a816=['2315619qNjGoJ','warn','Database\x20may\x20be\x20in\x20inconsistent\x20state','\x0a❌\x20MIGRATION\x20WORKFLOW\x20FAILED\x0a','QtoXx','(((.+)+)+)+$','42648UDBQFW','hfNDe','1539200MiLAdM','utf8','command','search','push','forEach','\x20\x20✅\x20Migration\x20rollback\x20successful\x0a','12002192VMNwwd','toString','\x22\x20is\x20not\x20supported','Ocncw','\x20\x20\x20\x20\x202.\x20Verify\x20all\x20tests\x20pass\x20with\x20new\x20schema','15084387KqqJkQ','rAebe','30EGwoig','apply','error','MAqQq','path','After\x20migration,\x20run\x20npm\x20test\x20to\x20verify\x20schema\x20compatibility','2114542OekhVy','development','xHeKq','QzLGJ','Migrations\x20must\x20be\x20tested\x20in\x20development/staging\x20first','\x0a⚠️\x20\x20MIGRATION\x20WORKFLOW\x20WARNINGS\x0a','\x20\x20🔙\x20Rolling\x20back\x20migration...\x0a','log','argv','child_process','820EXwWqv','OgOCp','BLOCKED:\x20Migration\x20execution\x20failed','KsKcv','production','tool_input','exit','ZlyhZ','\x20\x20Environment:\x20','\x20\x20\x20\x20\x201.\x20Run:\x20npm\x20test','BLOCKED:\x20Migration\x20rollback\x20failed','\x20\x20\x20\x20\x204.\x20Test\x20rollback:\x20npm\x20run\x20migrate:down\x20(or\x20equivalent)\x0a','Commit\x20migrations\x20to\x20version\x20control\x20before\x20running\x20them','\x0a🔄\x20MIGRATION\x20WORKFLOW\x20VALIDATION\x0a','length','\x20\x20⚠️\x20\x20After\x20running\x20migrations,\x20you\x20MUST:\x0a','NODE_ENV','parse','\x20\x20\x20\x20\x203.\x20Check\x20for\x20type\x20errors:\x20npm\x20run\x20build','match','7NYRCIA','Manual\x20intervention\x20required','git\x20status\x20--short','1886580otUKoz','Use\x20deployment\x20pipeline\x20to\x20run\x20production\x20migrations'];_0x2846=function(){return _0x21a816;};return _0x2846();}var n=[],t=[],a=s['tool_output']||'';console[_0x307685(0xed)](_0x307685(0xfd));try{let o=process['env'][_0x307685(0x100)]||_0x307685(0xe7);console['log'](_0x307685(0xf8)+o),o===_0x307685(0xf4)&&(n['push']('BLOCKED:\x20Cannot\x20run\x20migrations\x20directly\x20in\x20production'),n['push'](_0x307685(0xea)),n[_0x307685(0xd6)](_0x307685(0x108)));}catch{}try{var _0xa37dca={};_0xa37dca['encoding']=_0x307685(0xd3),l(_0x307685(0x106),_0xa37dca)[_0x307685(0x103)](/migrations?\//)&&(t['push']('Uncommitted\x20migration\x20files\x20detected'),t[_0x307685(0xd6)](_0x307685(0xfc)));}catch{}var g=[/error/i,/failed/i,/exception/i,/syntax error/i,/constraint/i];for(let o of g)if(o['test'](a)){n[_0x307685(0xd6)](_0x307685(0xf2)),n[_0x307685(0xd6)]('Fix\x20migration\x20errors\x20before\x20proceeding'),n['push']('Check\x20database\x20logs\x20for\x20details');break;}i[_0x307685(0x103)](/migrate.*up|migration.*run/i)&&(console['log'](_0x307685(0xff)),console[_0x307685(0xed)](_0x307685(0xf9)),console[_0x307685(0xed)](_0x307685(0xdd)),console['log'](_0x307685(0x102)),console[_0x307685(0xed)](_0x307685(0xfb)),t[_0x307685(0xd6)](_0x307685(0xe5))),i['match'](/migrate.*down|migration.*rollback/i)&&(console[_0x307685(0xed)](_0x307685(0xec)),a[_0x307685(0x103)](/error|failed/i)?(n['push'](_0x307685(0xfa)),n[_0x307685(0xd6)](_0x307685(0xcc)),n['push'](_0x307685(0x105))):console[_0x307685(0xed)](_0x307685(0xd8))),n['length']>0x0&&(console[_0x307685(0xe2)](_0x307685(0xcd)),n[_0x307685(0xd7)](_0xb8081a=>console[_0x307685(0xe2)]('\x20\x20'+_0xb8081a)),console[_0x307685(0xe2)]('\x0a'),process[_0x307685(0xf6)](0x2)),t[_0x307685(0xfe)]>0x0&&(console['warn'](_0x307685(0xeb)),t[_0x307685(0xd7)](_0x386c99=>console[_0x307685(0x10a)]('\x20\x20'+_0x386c99)),console[_0x307685(0x10a)]('\x0a')),process[_0x307685(0xf6)](0x0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const _0x4d56cd=_0x18be;(function(_0x5d9a6d,_0xc68ccd){const _0x415756=_0x18be,_0x387726=_0x5d9a6d();while(!![]){try{const _0x1b6e45=parseInt(_0x415756(0x114))/0x1+parseInt(_0x415756(0xf0))/0x2+-parseInt(_0x415756(0xfd))/0x3*(parseInt(_0x415756(0x100))/0x4)+parseInt(_0x415756(0x12c))/0x5+-parseInt(_0x415756(0x12d))/0x6+parseInt(_0x415756(0xe7))/0x7+-parseInt(_0x415756(0x116))/0x8;if(_0x1b6e45===_0xc68ccd)break;else _0x387726['push'](_0x387726['shift']());}catch(_0x326c95){_0x387726['push'](_0x387726['shift']());}}}(_0x48af,0x77d7e));function _0x18be(_0x3c7639,_0xa087cb){_0x3c7639=_0x3c7639-0xde;const _0x5d7970=_0x48af();let _0x422826=_0x5d7970[_0x3c7639];return _0x422826;}var k=(_0x4d46c6=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x4d46c6,{'get':(_0x378875,_0x5916da)=>(typeof require<'u'?require:_0x378875)[_0x5916da]}):_0x4d46c6)(function(_0x4f1c5d){const _0x1fb956=_0x18be,_0x41327a={'glyzm':function(_0x4f59a9,_0x56f3bf){return _0x4f59a9<_0x56f3bf;},'vsRYz':function(_0x40fceb,_0x14e1e0){return _0x40fceb(_0x14e1e0);},'EWDBX':function(_0x59ef7f,_0x1d3483){return _0x59ef7f+_0x1d3483;},'xUjwO':function(_0x172344,_0x115668){return _0x172344+_0x115668;},'NAWrq':_0x1fb956(0x103),'btfWe':_0x1fb956(0x11e)};if(_0x41327a[_0x1fb956(0x124)](typeof require,'u'))return require[_0x1fb956(0xe5)](this,arguments);throw _0x41327a[_0x1fb956(0x11f)](Error,_0x41327a[_0x1fb956(0xec)](_0x41327a[_0x1fb956(0x120)](_0x41327a[_0x1fb956(0xfc)],_0x4f1c5d),_0x41327a['btfWe']));}),a=k('fs'),i=k(_0x4d56cd(0x138)),P=process['argv'][0x2]||'{}',u=JSON[_0x4d56cd(0x117)](P),n=u[_0x4d56cd(0xeb)]?.[_0x4d56cd(0x133)],c=u[_0x4d56cd(0xeb)]?.[_0x4d56cd(0x135)],m=u[_0x4d56cd(0xeb)]?.['command'],e=u[_0x4d56cd(0x131)],s=[],E=[],D=[/^npm run help$/,/^npm run task:status$/,/^npm run task:start/,/^npm run plan:/,/^git status/,/^git log/,/^git diff/,/^git branch/];function T(_0x4ee68b){const _0x567b5a=_0x4d56cd,_0x14d8bc={};_0x14d8bc[_0x567b5a(0x118)]=_0x567b5a(0x11a),_0x14d8bc[_0x567b5a(0x10e)]=_0x567b5a(0x110),_0x14d8bc['fexMi']=_0x567b5a(0xdf),_0x14d8bc[_0x567b5a(0xfb)]=_0x567b5a(0x126),_0x14d8bc[_0x567b5a(0x123)]=_0x567b5a(0xf1),_0x14d8bc[_0x567b5a(0x137)]=function(_0x4481ef,_0x2d1a87){return _0x4481ef===_0x2d1a87;},_0x14d8bc[_0x567b5a(0x10f)]=_0x567b5a(0x12f),_0x14d8bc[_0x567b5a(0x129)]=_0x567b5a(0xf3);const _0x2d769c=_0x14d8bc,_0x43cec7=(function(){const _0x5f4328=_0x567b5a,_0x17e6be={'rNvDW':_0x2d769c[_0x5f4328(0x118)],'zlWeV':_0x2d769c[_0x5f4328(0x10e)],'JkIbS':_0x2d769c[_0x5f4328(0x128)],'lLHlK':_0x2d769c[_0x5f4328(0xfb)],'bsIav':_0x2d769c[_0x5f4328(0x123)],'fobeB':_0x5f4328(0x10a),'EflQq':_0x5f4328(0xef),'NxQBc':function(_0xdfa96e,_0x1a27f1){const _0x168242=_0x5f4328;return _0x2d769c[_0x168242(0x137)](_0xdfa96e,_0x1a27f1);},'Purau':_0x2d769c[_0x5f4328(0x10f)],'YoeMH':_0x2d769c[_0x5f4328(0x129)]};let _0x25c30e=!![];return function(_0x24f891,_0xca2f0f){const _0x1b17ba=_0x5f4328;if(_0x17e6be[_0x1b17ba(0x125)](_0x17e6be['Purau'],_0x17e6be[_0x1b17ba(0xff)])){let _0x55ba5a=_0x383599[_0x1b17ba(0x117)](_0x24938a[_0x1b17ba(0xf8)](_0x31da01,_0x17e6be['rNvDW']));if(!_0x55ba5a[_0x1b17ba(0x105)])_0x4bda2a[_0x1b17ba(0xf4)](_0x17e6be['zlWeV']),_0x3d0168['push'](_0x1b17ba(0x108)+_0x533cfb),_0x52a6b8['push'](_0x1b17ba(0xf7)+_0x5af27c),_0x994421&&_0x2c0e77[_0x1b17ba(0xf4)]('File:\x20'+_0x459840[_0x1b17ba(0xea)](_0x4881a3)),_0x9e11ce&&_0x4bdd68[_0x1b17ba(0xf4)](_0x1b17ba(0xe1)+_0x45e078),_0xa8793b[_0x1b17ba(0xf4)](_0x17e6be[_0x1b17ba(0x132)]),_0x649863[_0x1b17ba(0xf4)](_0x17e6be['lLHlK']);else{let _0x410d3c=_0x5cb404[_0x1b17ba(0x109)](_0x4849a0,_0x17e6be[_0x1b17ba(0xde)],_0x55ba5a[_0x1b17ba(0x105)]+_0x1b17ba(0xfa));if(_0x4239cb['existsSync'](_0x410d3c)){let _0xdfbd04=_0x229aa9['parse'](_0x352c88[_0x1b17ba(0xf8)](_0x410d3c,_0x17e6be[_0x1b17ba(0x107)]));_0xdfbd04[_0x1b17ba(0x12b)]!==_0x17e6be['fobeB']&&(_0x3a3f48[_0x1b17ba(0xf4)](_0x17e6be[_0x1b17ba(0x111)]),_0xdce1d0[_0x1b17ba(0xf4)](_0x1b17ba(0x108)+_0x5a2ce7),_0xb376f6[_0x1b17ba(0xf4)]('Task:\x20'+_0x55ba5a[_0x1b17ba(0x105)]+'\x20['+_0xdfbd04['status']+']'),_0x264e11[_0x1b17ba(0xf4)](_0x1b17ba(0xe4)),_0x34471b[_0x1b17ba(0xf4)](_0x1b17ba(0x122)+_0x55ba5a[_0x1b17ba(0x105)]));}}}else{const _0x5212b6=_0x25c30e?function(){const _0x325314=_0x1b17ba;if(_0xca2f0f){const _0x2d8f0b=_0xca2f0f[_0x325314(0xe5)](_0x24f891,arguments);return _0xca2f0f=null,_0x2d8f0b;}}:function(){};return _0x25c30e=![],_0x5212b6;}};}()),_0x2166da=_0x43cec7(this,function(){const _0x58f6e7=_0x567b5a;return _0x2166da['toString']()[_0x58f6e7(0xf6)](_0x58f6e7(0xe8))[_0x58f6e7(0x12a)]()[_0x58f6e7(0x113)](_0x2166da)[_0x58f6e7(0xf6)](_0x58f6e7(0xe8));});return _0x2166da(),_0x4ee68b?D[_0x567b5a(0x13a)](_0x29d578=>_0x29d578['test'](_0x4ee68b[_0x567b5a(0x101)]())):!0x1;}var S=_0x4d56cd(0xe6),l=null,r=null;function _0x48af(){const _0x4e202a=['\x0a❌\x20STRUCTURED\x20DEVELOPMENT\x20ENFORCEMENT\x20FAILED\x0a','\x22\x20is\x20not\x20supported','vsRYz','xUjwO','forEach','\x20\x20npm\x20run\x20task:start\x20','xEppe','glyzm','NxQBc','\x20\x20npm\x20run\x20task:start\x20TASK-XXX','File:\x20','fexMi','mgpJc','toString','status','3122715aKAvSi','5666598HKDvKh','Set\x20active\x20plan\x20first:','WePcO','Glob','tool','JkIbS','file_path','Read','pattern','\x20\x20npm\x20run\x20plan:manager','tWQpq','path','BLOCKED:\x20Project\x20plan\x20is\x20LOCKED\x20and\x20immutable','some','\x0a⚠️\x20\x20STRUCTURED\x20DEVELOPMENT\x20WARNINGS\x0a','bsIav','Start\x20a\x20task\x20first:','existsSync','Pattern:\x20','Task:\x20','Bash','Start\x20the\x20task:','apply','.claude/ACTIVE-PLAN','4521531BOsLDZ','(((.+)+)+)+$','exit','basename','tool_input','EWDBX','Grep','Write','BLOCKED:\x20Active\x20task\x20is\x20not\x20in_progress\x20state','914060IWBQFo','tasks','\x20\x20npm\x20run\x20plan:init','AzxZB','push','length','search','Tool:\x20','readFileSync','error','.json','rkhJD','NAWrq','3CRDZiZ','Edit','YoeMH','2698412uTkHVz','trim','warn','Dynamic\x20require\x20of\x20\x22','includes','activeTask','Use\x20task\x20management\x20commands:','rNvDW','Plan:\x20','join','in_progress','To\x20make\x20changes,\x20use\x20the\x20amendment\x20tool:','\x20\x20npm\x20run\x20task:done\x20TASK-XXX','TASK-TRACKER.json','oMzjb','YzkWo','BLOCKED:\x20No\x20active\x20task','EflQq','\x20\x20npm\x20run\x20plan:amend','constructor','520942XdKTlU','.claude/plans','1108272TFczRq','parse','GTMwt','BLOCKED:\x20No\x20active\x20plan\x20found','utf8','match','TodoWrite'];_0x48af=function(){return _0x4e202a;};return _0x48af();}a[_0x4d56cd(0xe0)](S)&&(l=a[_0x4d56cd(0xf8)](S,_0x4d56cd(0x11a))[_0x4d56cd(0x101)](),r=i[_0x4d56cd(0x109)](_0x4d56cd(0x115),l)),n&&n['includes']('PROJECT-PLAN.json')&&e===_0x4d56cd(0xfe)&&r&&a[_0x4d56cd(0xe0)](i['join'](r,'.plan-locked'))&&(s[_0x4d56cd(0xf4)](_0x4d56cd(0x139)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x127)+i[_0x4d56cd(0xea)](n)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x10b)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x112)));if(l&&r){let t=i['join'](r,_0x4d56cd(0x10d)),o=i[_0x4d56cd(0x109)](r,'.plan-locked');a[_0x4d56cd(0xe0)](o)&&!a['existsSync'](t)&&(s['push']('BLOCKED:\x20Project\x20plan\x20is\x20locked\x20but\x20task\x20tracker\x20is\x20missing'),s[_0x4d56cd(0xf4)](_0x4d56cd(0x108)+l),s[_0x4d56cd(0xf4)]('Initialize\x20task\x20tracker\x20first:'),s[_0x4d56cd(0xf4)](_0x4d56cd(0xf2)));let h=['Read',_0x4d56cd(0xed),_0x4d56cd(0x130),'Edit',_0x4d56cd(0xee),_0x4d56cd(0x11c)],$=e===_0x4d56cd(0xe3)&&T(m);if(h[_0x4d56cd(0x104)](e)&&!$&&a[_0x4d56cd(0xe0)](t)){let p=JSON[_0x4d56cd(0x117)](a['readFileSync'](t,_0x4d56cd(0x11a)));if(!p['activeTask'])s[_0x4d56cd(0xf4)](_0x4d56cd(0x110)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x108)+l),s[_0x4d56cd(0xf4)](_0x4d56cd(0xf7)+e),n&&s[_0x4d56cd(0xf4)]('File:\x20'+i['basename'](n)),c&&s[_0x4d56cd(0xf4)](_0x4d56cd(0xe1)+c),s[_0x4d56cd(0xf4)](_0x4d56cd(0xdf)),s[_0x4d56cd(0xf4)]('\x20\x20npm\x20run\x20task:start\x20TASK-XXX');else{let f=i['join'](r,_0x4d56cd(0xf1),p[_0x4d56cd(0x105)]+_0x4d56cd(0xfa));if(a[_0x4d56cd(0xe0)](f)){let d=JSON['parse'](a[_0x4d56cd(0xf8)](f,'utf8'));d[_0x4d56cd(0x12b)]!==_0x4d56cd(0x10a)&&(s[_0x4d56cd(0xf4)](_0x4d56cd(0xef)),s[_0x4d56cd(0xf4)]('Plan:\x20'+l),s[_0x4d56cd(0xf4)](_0x4d56cd(0xe2)+p[_0x4d56cd(0x105)]+'\x20['+d[_0x4d56cd(0x12b)]+']'),s[_0x4d56cd(0xf4)]('Start\x20the\x20task:'),s[_0x4d56cd(0xf4)](_0x4d56cd(0x122)+p[_0x4d56cd(0x105)]));}}}n&&n[_0x4d56cd(0x11b)](/\.claude\/plans\/[^/]+\/tasks\/TASK-\d{3}\.json$/)&&(e===_0x4d56cd(0xfe)||e===_0x4d56cd(0xee))&&(s['push']('BLOCKED:\x20Task\x20files\x20are\x20read-only'),s[_0x4d56cd(0xf4)]('File:\x20'+i[_0x4d56cd(0xea)](n)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x106)),s[_0x4d56cd(0xf4)](_0x4d56cd(0x126)),s['push'](_0x4d56cd(0x10c)));}else{let t=[_0x4d56cd(0x134),_0x4d56cd(0xed),_0x4d56cd(0x130),_0x4d56cd(0xfe),_0x4d56cd(0xee),_0x4d56cd(0x11c)],o=e===_0x4d56cd(0xe3)&&T(m);t['includes'](e)&&!o&&(s[_0x4d56cd(0xf4)](_0x4d56cd(0x119)),s['push'](_0x4d56cd(0xf7)+e),n&&s['push'](_0x4d56cd(0x127)+i[_0x4d56cd(0xea)](n)),c&&s[_0x4d56cd(0xf4)]('Pattern:\x20'+c),s['push'](_0x4d56cd(0x12e)),s['push'](_0x4d56cd(0x136)));}s['length']>0x0&&(console[_0x4d56cd(0xf9)](_0x4d56cd(0x11d)),s[_0x4d56cd(0x121)](_0x2982b4=>console[_0x4d56cd(0xf9)]('\x20\x20'+_0x2982b4)),console[_0x4d56cd(0xf9)]('\x0a'),process[_0x4d56cd(0xe9)](0x2)),E[_0x4d56cd(0xf5)]>0x0&&(console['warn'](_0x4d56cd(0x13b)),E[_0x4d56cd(0x121)](_0x24b0dc=>console[_0x4d56cd(0x102)]('\x20\x20'+_0x24b0dc)),console['warn']('\x0a')),process[_0x4d56cd(0xe9)](0x0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
function _0x5b3b(_0x5c479f,_0x31219d){_0x5c479f=_0x5c479f-0x101;const _0x8a9242=_0x2bcd();let _0x5e1035=_0x8a9242[_0x5c479f];return _0x5e1035;}const _0x1a6fc0=_0x5b3b;(function(_0x5ca247,_0x527b57){const _0x474a3e=_0x5b3b,_0x1205b9=_0x5ca247();while(!![]){try{const _0x21185f=-parseInt(_0x474a3e(0x15a))/0x1*(-parseInt(_0x474a3e(0x169))/0x2)+parseInt(_0x474a3e(0x128))/0x3*(parseInt(_0x474a3e(0x112))/0x4)+parseInt(_0x474a3e(0x110))/0x5*(-parseInt(_0x474a3e(0x11c))/0x6)+parseInt(_0x474a3e(0x125))/0x7*(parseInt(_0x474a3e(0x107))/0x8)+parseInt(_0x474a3e(0x10e))/0x9+parseInt(_0x474a3e(0x159))/0xa*(parseInt(_0x474a3e(0x146))/0xb)+parseInt(_0x474a3e(0x122))/0xc*(-parseInt(_0x474a3e(0x101))/0xd);if(_0x21185f===_0x527b57)break;else _0x1205b9['push'](_0x1205b9['shift']());}catch(_0x2f79d4){_0x1205b9['push'](_0x1205b9['shift']());}}}(_0x2bcd,0xec757));const _0x1b0009=(function(){const _0x4f874b=_0x5b3b,_0x4086d2={'XaRfh':_0x4f874b(0x104),'wvmqr':function(_0x353b11,_0x36d78f){return _0x353b11*_0x36d78f;},'qszLX':function(_0x8eeee0,_0x292c7f){return _0x8eeee0/_0x292c7f;},'OZptc':function(_0x37262f,_0x134723){return _0x37262f+_0x134723;},'AzCmU':function(_0x974aba,_0x5d94d5){return _0x974aba*_0x5d94d5;},'RgfVq':_0x4f874b(0x14b),'TKsFX':_0x4f874b(0x113),'YWckZ':'WARNING:\x20Inverted\x20test\x20pyramid\x20detected','xpobH':function(_0x451f16,_0x44eefc){return _0x451f16*_0x44eefc;},'gAmQO':function(_0x52201c,_0x111d9e,_0x24c778){return _0x52201c(_0x111d9e,_0x24c778);},'oWLPr':_0x4f874b(0x114),'zRSff':_0x4f874b(0x13c),'HIxNM':'CRITICAL:\x20UI\x20bugs\x20are\x20slipping\x20through!','gtBzk':_0x4f874b(0x14c),'AkJNQ':_0x4f874b(0x136),'iiZJR':_0x4f874b(0x12b),'DCRgH':function(_0xeb6421,_0x215960){return _0xeb6421!==_0x215960;},'BgfUz':_0x4f874b(0x106),'grjDM':function(_0xf9a49c,_0x150a99){return _0xf9a49c===_0x150a99;},'FXRup':_0x4f874b(0x16a),'bzKXB':_0x4f874b(0x156)};let _0x400d94=!![];return function(_0x5bd123,_0x4e5167){const _0x53e019=_0x400d94?function(){const _0x4b83ea=_0x5b3b,_0x28267c={'HPHhO':_0x4086d2[_0x4b83ea(0x121)],'JfpVR':function(_0x2f9cd7,_0x4bcb1f){const _0x1bf61b=_0x4b83ea;return _0x4086d2[_0x1bf61b(0x105)](_0x2f9cd7,_0x4bcb1f);},'dLhXR':function(_0x46f635,_0x15919f){return _0x4086d2['qszLX'](_0x46f635,_0x15919f);},'tXrpg':function(_0x2e97f7,_0x508fae){return _0x4086d2['OZptc'](_0x2e97f7,_0x508fae);},'vlHKZ':function(_0x4841fa,_0x2985f8){return _0x4841fa*_0x2985f8;},'zjThS':function(_0x1d1f56,_0x33af1f){const _0x4a5fc0=_0x4b83ea;return _0x4086d2[_0x4a5fc0(0x168)](_0x1d1f56,_0x33af1f);},'yYONm':function(_0x21bd52,_0x285833){return _0x21bd52===_0x285833;},'VXvRy':function(_0x14fb4b,_0x123b29){return _0x14fb4b>_0x123b29;},'gdvej':_0x4086d2[_0x4b83ea(0x150)],'UDwUf':_0x4086d2[_0x4b83ea(0x141)],'canbU':_0x4086d2[_0x4b83ea(0x152)],'VmwQm':function(_0x53e68b,_0x401b18){const _0x49f243=_0x4b83ea;return _0x4086d2[_0x49f243(0x162)](_0x53e68b,_0x401b18);},'epfWf':_0x4b83ea(0x124),'MvlmB':_0x4b83ea(0x102),'BbPTm':function(_0x5091d9,_0x134fa0,_0x62beba){return _0x4086d2['gAmQO'](_0x5091d9,_0x134fa0,_0x62beba);},'YVZOo':_0x4086d2[_0x4b83ea(0x16f)],'wrFzc':_0x4086d2['zRSff'],'rFWrl':function(_0x58bc83,_0x39e38e){return _0x58bc83(_0x39e38e);},'HTRfM':function(_0x1b6454,_0x14b872){return _0x1b6454>_0x14b872;},'tMCUJ':function(_0xee448f,_0x1facc7){const _0x154427=_0x4b83ea;return _0x4086d2[_0x154427(0x132)](_0xee448f,_0x1facc7);},'dvCzV':_0x4086d2[_0x4b83ea(0x10c)],'RwsPv':_0x4086d2[_0x4b83ea(0x142)],'jBanv':function(_0x13c350,_0x41ab92){return _0x13c350===_0x41ab92;},'INVft':_0x4086d2[_0x4b83ea(0x151)],'AjTUy':_0x4086d2[_0x4b83ea(0x115)]};if(_0x4086d2[_0x4b83ea(0x163)](_0x4086d2[_0x4b83ea(0x172)],_0x4086d2[_0x4b83ea(0x172)])){let _0x1ab690=_0x590093[_0x4b83ea(0x127)](_0x2adc4e,_0x28267c[_0x4b83ea(0x166)]);_0x5f4854+=(_0x1ab690['match'](/\b(it|test)\s*\(/g)||[])[_0x4b83ea(0x155)];}else{if(_0x4e5167){if(_0x4086d2[_0x4b83ea(0x170)](_0x4086d2[_0x4b83ea(0x15c)],_0x4086d2[_0x4b83ea(0x139)])){let _0x230402=_0x28267c[_0x4b83ea(0x10b)](_0x28267c[_0x4b83ea(0x10d)](_0x28267c['tXrpg'](_0x47899a,_0x41807d),_0x49b725),0x64),_0x2d5c58=_0x28267c[_0x4b83ea(0x129)](_0x2aa17a/_0x4244bd,0x64),_0x188aaf=_0x28267c[_0x4b83ea(0x126)](_0x28267c['dLhXR'](_0x2205dc,_0xcc66f),0x64);_0x4c946d['log']('\x0a📊\x20TEST\x20PYRAMID\x20ANALYSIS\x0a'),_0x2a7567[_0x4b83ea(0x116)](_0x4b83ea(0x145)+_0x28267c['tXrpg'](_0x1d2d1c,_0x4e0fc2)+'\x20('+_0x230402[_0x4b83ea(0x108)](0x1)+'%)'),_0x3a3ee1['log'](_0x4b83ea(0x14e)+_0x7c0880+'\x20('+_0x2d5c58[_0x4b83ea(0x108)](0x1)+'%)'),_0x10fb45[_0x4b83ea(0x116)](_0x4b83ea(0x12e)+_0x4bb1f2+'\x20('+_0x188aaf[_0x4b83ea(0x108)](0x1)+'%)'),_0x9f948[_0x4b83ea(0x116)](_0x4b83ea(0x12c)+_0x51020b+'\x0a'),_0x28267c[_0x4b83ea(0x15e)](_0x539f20,0x0)&&_0x28267c['VXvRy'](_0x16996e,0x0)&&(_0x38736c[_0x4b83ea(0x13e)](_0x28267c['gdvej']),_0x26939b['push'](_0x28267c[_0x4b83ea(0x16c)]),_0x413026[_0x4b83ea(0x13e)](_0x4b83ea(0x123))),_0x28267c[_0x4b83ea(0x154)](_0x3f685c,_0x366458)<_0x28267c[_0x4b83ea(0x10b)](_0x235dc3,0.5)&&(_0xb603e4[_0x4b83ea(0x13e)](_0x28267c[_0x4b83ea(0x138)]),_0x1876d2[_0x4b83ea(0x13e)](_0x4b83ea(0x171)+_0x230402[_0x4b83ea(0x108)](0x1)+'%'),_0x460a9c[_0x4b83ea(0x13e)](_0x4b83ea(0x11d))),_0x28267c[_0x4b83ea(0x11a)](_0x5235ca,_0x28267c['VmwQm'](_0x203184,0.3))&&(_0x4c1014[_0x4b83ea(0x13e)](_0x28267c[_0x4b83ea(0x164)]),_0x3af128[_0x4b83ea(0x13e)](_0x28267c['MvlmB']));try{let _0x185cf8=_0x28267c['BbPTm'](_0x587423,_0x28267c[_0x4b83ea(0x161)],{'encoding':_0x28267c['HPHhO'],'stdio':[_0x28267c[_0x4b83ea(0x15b)],_0x4b83ea(0x13c),_0x4b83ea(0x103)]})[_0x4b83ea(0x165)](),_0xf969d7=_0x28267c[_0x4b83ea(0x119)](_0x722c69,_0x185cf8)||0x0;if(_0x28267c[_0x4b83ea(0x131)](_0xf969d7,0x0)){let _0x1d03f5=_0x28267c[_0x4b83ea(0x137)](_0x32973d,_0xf969d7);_0x1d03f5<0.5&&(_0x4a6542[_0x4b83ea(0x13e)]('WARNING:\x20'+_0xf969d7+_0x4b83ea(0x157)+_0x29dd66+'\x20component\x20tests'),_0xf8a5fe['push'](_0x4b83ea(0x14f)+_0x28267c['JfpVR'](_0x1d03f5,0x64)[_0x4b83ea(0x108)](0x1)+'%'),_0xa169f8[_0x4b83ea(0x13e)](_0x28267c[_0x4b83ea(0x144)]),_0x7e249a[_0x4b83ea(0x13e)](_0x28267c['RwsPv'])),_0x28267c[_0x4b83ea(0x158)](_0x4c67e9,0x0)&&_0x28267c[_0x4b83ea(0x131)](_0xf969d7,0x5)&&(_0x55433d[_0x4b83ea(0x13e)](_0x28267c[_0x4b83ea(0x14a)]),_0x12c6eb['push'](_0x28267c[_0x4b83ea(0x11b)]));}}catch{}}else{const _0x37a5a7=_0x4e5167[_0x4b83ea(0x149)](_0x5bd123,arguments);return _0x4e5167=null,_0x37a5a7;}}}}:function(){};return _0x400d94=![],_0x53e019;};}()),_0x5e1035=_0x1b0009(this,function(){const _0x456175=_0x5b3b,_0x48728c={};_0x48728c[_0x456175(0x130)]='(((.+)+)+)+$';const _0x1db732=_0x48728c;return _0x5e1035[_0x456175(0x143)]()[_0x456175(0x109)](_0x1db732[_0x456175(0x130)])[_0x456175(0x143)]()[_0x456175(0x120)](_0x5e1035)[_0x456175(0x109)](_0x456175(0x140));});_0x5e1035();var g=(_0x2f8bc9=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x2f8bc9,{'get':(_0x1f76a9,_0x502afd)=>(typeof require<'u'?require:_0x1f76a9)[_0x502afd]}):_0x2f8bc9)(function(_0x5b40b1){const _0x4034da=_0x5b3b,_0xdfcc1f={'nkJAr':function(_0x39e0fb,_0x1f70af){return _0x39e0fb<_0x1f70af;},'ciWKX':function(_0x3593c8,_0x22808c){return _0x3593c8(_0x22808c);},'eRAZx':function(_0x4a732d,_0x1fe11d){return _0x4a732d+_0x1fe11d;},'GNkTP':_0x4034da(0x15d),'BAHJg':'\x22\x20is\x20not\x20supported'};if(_0xdfcc1f[_0x4034da(0x16e)](typeof require,'u'))return require['apply'](this,arguments);throw _0xdfcc1f['ciWKX'](Error,_0xdfcc1f[_0x4034da(0x12a)](_0xdfcc1f['GNkTP'],_0x5b40b1)+_0xdfcc1f['BAHJg']);}),c=g('fs'),E=g('path'),{execSync:f}=g(_0x1a6fc0(0x13f)),h=process['argv'][0x2]||'{}',I=JSON[_0x1a6fc0(0x15f)](h),T=I[_0x1a6fc0(0x111)]?.[_0x1a6fc0(0x11f)]||'';T[_0x1a6fc0(0x11e)](/npm\s+(run\s+)?test|jest|vitest/)||process[_0x1a6fc0(0x13a)](0x0);var d=[],t=[],r=0x0,m=0x0,p=0x0,i=0x0;try{const _0x53a0c6={};_0x53a0c6[_0x1a6fc0(0x135)]=_0x1a6fc0(0x104),_0x53a0c6[_0x1a6fc0(0x13b)]=[_0x1a6fc0(0x13c),_0x1a6fc0(0x13c),_0x1a6fc0(0x103)];let e=f(_0x1a6fc0(0x10a),_0x53a0c6)['trim']()[_0x1a6fc0(0x16b)]('\x0a')[_0x1a6fc0(0x148)](Boolean);for(let n of e)if(c[_0x1a6fc0(0x153)](n)){let o=c['readFileSync'](n,_0x1a6fc0(0x104)),u=(o[_0x1a6fc0(0x11e)](/\b(it|test)\s*\(/g)||[])['length'];o[_0x1a6fc0(0x11e)](/render\(|mount\(|screen\.|fireEvent\./)?i+=u:r+=u;}const _0x3131d1={};_0x3131d1[_0x1a6fc0(0x135)]=_0x1a6fc0(0x104),_0x3131d1[_0x1a6fc0(0x13b)]=['pipe',_0x1a6fc0(0x13c),_0x1a6fc0(0x103)];let l=f(_0x1a6fc0(0x16d),_0x3131d1)['trim']()[_0x1a6fc0(0x16b)]('\x0a')[_0x1a6fc0(0x148)](Boolean);for(let n of l)if(c[_0x1a6fc0(0x153)](n)){let o=c[_0x1a6fc0(0x127)](n,_0x1a6fc0(0x104));m+=(o[_0x1a6fc0(0x11e)](/\b(it|test)\s*\(/g)||[])[_0x1a6fc0(0x155)];}const _0x5c65bf={};_0x5c65bf[_0x1a6fc0(0x135)]='utf8',_0x5c65bf['stdio']=[_0x1a6fc0(0x13c),_0x1a6fc0(0x13c),_0x1a6fc0(0x103)];let a=f(_0x1a6fc0(0x13d),_0x5c65bf)[_0x1a6fc0(0x165)]()[_0x1a6fc0(0x16b)]('\x0a')[_0x1a6fc0(0x148)](Boolean);for(let n of a)if(c[_0x1a6fc0(0x153)](n)){let o=c[_0x1a6fc0(0x127)](n,_0x1a6fc0(0x104));p+=(o['match'](/\b(it|test)\s*\(/g)||[])['length'];}}catch{process[_0x1a6fc0(0x13a)](0x0);}function _0x2bcd(){const _0x150e25=['Dynamic\x20require\x20of\x20\x22','yYONm','parse','WARNING:\x20','YVZOo','xpobH','DCRgH','epfWf','trim','HPHhO','error','AzCmU','160vhzuIK','bxYqw','split','UDwUf','find\x20./tests\x20-path\x20\x22*/integration/*\x22\x20-name\x20\x22*.test.*\x22\x20-o\x20-path\x20\x22*/integration/*\x22\x20-name\x20\x22*.spec.*\x22\x202>/dev/null\x20||\x20echo\x20\x22\x22','nkJAr','oWLPr','grjDM','Unit/Component\x20tests\x20should\x20be\x2060-80%\x20of\x20total,\x20currently\x20','BgfUz','13elLpAW','E2E\x20tests\x20are\x20slow\x20and\x20brittle,\x20use\x20integration\x20tests\x20instead','ignore','utf8','wvmqr','mdAJN','14865512UFjIIc','toFixed','search','find\x20./tests\x20-name\x20\x22*.test.*\x22\x20-o\x20-name\x20\x22*.spec.*\x22\x202>/dev/null\x20|\x20grep\x20-v\x20-E\x20\x22(integration|e2e|component)\x22\x20||\x20echo\x20\x22\x22','JfpVR','HIxNM','dLhXR','17254584EKwHKu','\x20component\x20tests','2793415vQyEFu','tool_input','6095236IsAdDG','Add\x20component\x20tests\x20for\x20React/Vue/etc.\x20components','find\x20./src\x20-name\x20\x22*.tsx\x22\x20-o\x20-name\x20\x22*.jsx\x22\x202>/dev/null\x20|\x20wc\x20-l','iiZJR','log','forEach','\x0a❌\x20TEST\x20PYRAMID\x20VALIDATION\x20FAILED\x0a','rFWrl','VXvRy','AjTUy','6EFLDZi','Add\x20more\x20unit\x20and\x20component\x20tests','match','command','constructor','XaRfh','70566972mzYtES','UI\x20bugs\x20are\x20not\x20caught\x20by\x20API-only\x20tests!','WARNING:\x20Too\x20many\x20E2E\x20tests\x20(>30%\x20of\x20total)','7hGcfbm','zjThS','readFileSync','3BoNZzy','vlHKZ','eRAZx','Add\x20E2E\x20tests\x20to\x20validate\x20complete\x20user\x20flows','\x20\x20Total:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','\x0a📊\x20TEST\x20PYRAMID\x20ANALYSIS\x0a','\x20\x20E2E\x20Tests:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','warn','XvkwD','HTRfM','qszLX','CRITICAL:\x20UI\x20bugs\x20are\x20slipping\x20through!','\x0a⚠️\x20\x20TEST\x20PYRAMID\x20WARNINGS\x0a','encoding','WARNING:\x20Multiple\x20UI\x20components\x20but\x20NO\x20E2E\x20integration\x20tests','tMCUJ','canbU','bzKXB','exit','stdio','pipe','find\x20./e2e\x20-name\x20\x22*.spec.*\x22\x20-o\x20find\x20./cypress\x20-name\x20\x22*.cy.*\x22\x202>/dev/null\x20||\x20echo\x20\x22\x22','push','child_process','(((.+)+)+)+$','TKsFX','gtBzk','toString','dvCzV','\x20\x20Unit/Component\x20Tests:\x20','32263qoEphz','Create\x20tests\x20before\x20claiming\x20functionality\x20works','filter','apply','INVft','WARNING:\x20Only\x20backend\x20unit\x20tests\x20found,\x20NO\x20UI\x20component\x20tests','Every\x20UI\x20component\x20should\x20have\x20component\x20tests','WARNING:\x20Inverted\x20test\x20pyramid\x20detected','\x20\x20Integration\x20Tests:\x20\x20\x20\x20','Component\x20test\x20coverage:\x20','RgfVq','AkJNQ','YWckZ','existsSync','tXrpg','length','PcUkz','\x20UI\x20components\x20but\x20only\x20','jBanv','2050bRNppn','18842kaodgQ','wrFzc','FXRup'];_0x2bcd=function(){return _0x150e25;};return _0x2bcd();}var s=r+m+p+i;s===0x0&&(d['push']('BLOCKED:\x20No\x20tests\x20found\x20in\x20the\x20project'),d[_0x1a6fc0(0x13e)](_0x1a6fc0(0x147)));if(s>0x0){let e=(r+i)/s*0x64,l=m/s*0x64,a=p/s*0x64;console['log'](_0x1a6fc0(0x12d)),console[_0x1a6fc0(0x116)](_0x1a6fc0(0x145)+(r+i)+'\x20('+e[_0x1a6fc0(0x108)](0x1)+'%)'),console[_0x1a6fc0(0x116)]('\x20\x20Integration\x20Tests:\x20\x20\x20\x20'+m+'\x20('+l[_0x1a6fc0(0x108)](0x1)+'%)'),console['log'](_0x1a6fc0(0x12e)+p+'\x20('+a[_0x1a6fc0(0x108)](0x1)+'%)'),console['log']('\x20\x20Total:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+s+'\x0a'),i===0x0&&r>0x0&&(t[_0x1a6fc0(0x13e)]('WARNING:\x20Only\x20backend\x20unit\x20tests\x20found,\x20NO\x20UI\x20component\x20tests'),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x113)),t['push'](_0x1a6fc0(0x123))),r+i<s*0.5&&(t['push'](_0x1a6fc0(0x14d)),t[_0x1a6fc0(0x13e)]('Unit/Component\x20tests\x20should\x20be\x2060-80%\x20of\x20total,\x20currently\x20'+e['toFixed'](0x1)+'%'),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x11d))),p>s*0.3&&(t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x124)),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x102)));try{const _0x30a6fe={};_0x30a6fe['encoding']='utf8',_0x30a6fe[_0x1a6fc0(0x13b)]=[_0x1a6fc0(0x13c),'pipe',_0x1a6fc0(0x103)];let n=f(_0x1a6fc0(0x114),_0x30a6fe)['trim'](),o=parseInt(n)||0x0;if(o>0x0){let u=i/o;u<0.5&&(t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x160)+o+_0x1a6fc0(0x157)+i+_0x1a6fc0(0x10f)),t['push']('Component\x20test\x20coverage:\x20'+(u*0x64)[_0x1a6fc0(0x108)](0x1)+'%'),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x133)),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x14c))),p===0x0&&o>0x5&&(t[_0x1a6fc0(0x13e)]('WARNING:\x20Multiple\x20UI\x20components\x20but\x20NO\x20E2E\x20integration\x20tests'),t[_0x1a6fc0(0x13e)](_0x1a6fc0(0x12b)));}}catch{}}d[_0x1a6fc0(0x155)]>0x0&&(console[_0x1a6fc0(0x167)](_0x1a6fc0(0x118)),d[_0x1a6fc0(0x117)](_0x52e80f=>console[_0x1a6fc0(0x167)]('\x20\x20'+_0x52e80f)),console['error']('\x0a'),process[_0x1a6fc0(0x13a)](0x2)),t[_0x1a6fc0(0x155)]>0x0&&(console[_0x1a6fc0(0x12f)](_0x1a6fc0(0x134)),t[_0x1a6fc0(0x117)](_0x3b1f77=>console[_0x1a6fc0(0x12f)]('\x20\x20'+_0x3b1f77)),console['warn']('\x0a')),process[_0x1a6fc0(0x13a)](0x0);
|
|
2
|
+
const _0x5ca768=_0x29be;(function(_0x1add32,_0x410ec8){const _0x13295a=_0x29be,_0x28ca63=_0x1add32();while(!![]){try{const _0x457b7f=parseInt(_0x13295a(0x8c))/0x1*(parseInt(_0x13295a(0x88))/0x2)+parseInt(_0x13295a(0x86))/0x3*(parseInt(_0x13295a(0xa1))/0x4)+parseInt(_0x13295a(0xb6))/0x5*(-parseInt(_0x13295a(0x87))/0x6)+parseInt(_0x13295a(0xb5))/0x7*(parseInt(_0x13295a(0x93))/0x8)+-parseInt(_0x13295a(0x9a))/0x9*(-parseInt(_0x13295a(0x92))/0xa)+-parseInt(_0x13295a(0xb8))/0xb*(-parseInt(_0x13295a(0xc0))/0xc)+-parseInt(_0x13295a(0xaa))/0xd*(parseInt(_0x13295a(0x83))/0xe);if(_0x457b7f===_0x410ec8)break;else _0x28ca63['push'](_0x28ca63['shift']());}catch(_0x1d18bc){_0x28ca63['push'](_0x28ca63['shift']());}}}(_0x1dee,0xc552a));function _0x29be(_0x95a04c,_0x3b06d8){_0x95a04c=_0x95a04c-0x80;const _0x1f6959=_0x1dee();let _0x60d93f=_0x1f6959[_0x95a04c];return _0x60d93f;}const _0x28c74a=(function(){let _0x3df8cc=!![];return function(_0x4c7f3f,_0x114d4a){const _0x1561d7=_0x3df8cc?function(){if(_0x114d4a){const _0x2a809f=_0x114d4a['apply'](_0x4c7f3f,arguments);return _0x114d4a=null,_0x2a809f;}}:function(){};return _0x3df8cc=![],_0x1561d7;};}()),_0x60d93f=_0x28c74a(this,function(){const _0x247dfb=_0x29be,_0x165435={};_0x165435[_0x247dfb(0x97)]=_0x247dfb(0x8f);const _0x32698d=_0x165435;return _0x60d93f[_0x247dfb(0xbb)]()['search'](_0x32698d[_0x247dfb(0x97)])[_0x247dfb(0xbb)]()['constructor'](_0x60d93f)[_0x247dfb(0x9b)](_0x32698d[_0x247dfb(0x97)]);});_0x60d93f();var g=(_0x181264=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x181264,{'get':(_0x37eaf2,_0x148d7d)=>(typeof require<'u'?require:_0x37eaf2)[_0x148d7d]}):_0x181264)(function(_0x37ade6){const _0x1f8f5a=_0x29be,_0x16589b={};_0x16589b[_0x1f8f5a(0xa6)]=function(_0x316619,_0x554063){return _0x316619<_0x554063;},_0x16589b[_0x1f8f5a(0xac)]=function(_0x2f4da1,_0x4fc1a7){return _0x2f4da1+_0x4fc1a7;},_0x16589b[_0x1f8f5a(0x90)]=function(_0x2c50db,_0x1b3c1f){return _0x2c50db+_0x1b3c1f;},_0x16589b[_0x1f8f5a(0xb3)]=_0x1f8f5a(0xb7),_0x16589b[_0x1f8f5a(0xa3)]=_0x1f8f5a(0xbd);const _0x194a5e=_0x16589b;if(_0x194a5e['DrobS'](typeof require,'u'))return require[_0x1f8f5a(0xae)](this,arguments);throw Error(_0x194a5e[_0x1f8f5a(0xac)](_0x194a5e['czcoz'](_0x194a5e['RXfdF'],_0x37ade6),_0x194a5e[_0x1f8f5a(0xa3)]));}),c=g('fs'),E=g('path'),{execSync:f}=g(_0x5ca768(0xa7)),h=process[_0x5ca768(0x9f)][0x2]||'{}',I=JSON['parse'](h),T=I[_0x5ca768(0xbe)]?.['command']||'';T[_0x5ca768(0x8b)](/npm\s+(run\s+)?test|jest|vitest/)||process[_0x5ca768(0xb1)](0x0);var d=[],t=[],r=0x0,m=0x0,p=0x0,i=0x0;try{const _0x9c2db={};_0x9c2db['encoding']=_0x5ca768(0x82),_0x9c2db[_0x5ca768(0xa5)]=['pipe',_0x5ca768(0xbf),_0x5ca768(0xb2)];let e=f(_0x5ca768(0xc7),_0x9c2db)[_0x5ca768(0xc6)]()[_0x5ca768(0x94)]('\x0a')[_0x5ca768(0xb9)](Boolean);for(let n of e)if(c[_0x5ca768(0xad)](n)){let o=c['readFileSync'](n,_0x5ca768(0x82)),u=(o[_0x5ca768(0x8b)](/\b(it|test)\s*\(/g)||[])[_0x5ca768(0x81)];o[_0x5ca768(0x8b)](/render\(|mount\(|screen\.|fireEvent\./)?i+=u:r+=u;}const _0x788905={};_0x788905[_0x5ca768(0x8d)]=_0x5ca768(0x82),_0x788905['stdio']=['pipe',_0x5ca768(0xbf),'ignore'];let l=f(_0x5ca768(0xab),_0x788905)[_0x5ca768(0xc6)]()[_0x5ca768(0x94)]('\x0a')[_0x5ca768(0xb9)](Boolean);for(let n of l)if(c[_0x5ca768(0xad)](n)){let o=c[_0x5ca768(0x89)](n,'utf8');m+=(o[_0x5ca768(0x8b)](/\b(it|test)\s*\(/g)||[])['length'];}const _0xcebe04={};_0xcebe04[_0x5ca768(0x8d)]='utf8',_0xcebe04['stdio']=[_0x5ca768(0xbf),'pipe',_0x5ca768(0xb2)];let a=f(_0x5ca768(0xa8),_0xcebe04)[_0x5ca768(0xc6)]()[_0x5ca768(0x94)]('\x0a')[_0x5ca768(0xb9)](Boolean);for(let n of a)if(c['existsSync'](n)){let o=c[_0x5ca768(0x89)](n,_0x5ca768(0x82));p+=(o[_0x5ca768(0x8b)](/\b(it|test)\s*\(/g)||[])['length'];}}catch{process[_0x5ca768(0xb1)](0x0);}var s=r+m+p+i;function _0x1dee(){const _0x347815=['108952jEhIhG','encoding','error','(((.+)+)+)+$','czcoz','WARNING:\x20Too\x20many\x20E2E\x20tests\x20(>30%\x20of\x20total)','14360VzJbJR','224yepTqn','split','forEach','Unit/Component\x20tests\x20should\x20be\x2060-80%\x20of\x20total,\x20currently\x20','BHznV','warn','WARNING:\x20Only\x20backend\x20unit\x20tests\x20found,\x20NO\x20UI\x20component\x20tests','7731NRwdhz','search','Create\x20tests\x20before\x20claiming\x20functionality\x20works','push','WARNING:\x20','argv','\x0a⚠️\x20\x20TEST\x20PYRAMID\x20WARNINGS\x0a','240148lUzcvj','Add\x20E2E\x20tests\x20to\x20validate\x20complete\x20user\x20flows','XLSLt','\x20\x20E2E\x20Tests:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','stdio','DrobS','child_process','find\x20./e2e\x20-name\x20\x22*.spec.*\x22\x20-o\x20find\x20./cypress\x20-name\x20\x22*.cy.*\x22\x202>/dev/null\x20||\x20echo\x20\x22\x22','Every\x20UI\x20component\x20should\x20have\x20component\x20tests','455PHZAQA','find\x20./tests\x20-path\x20\x22*/integration/*\x22\x20-name\x20\x22*.test.*\x22\x20-o\x20-path\x20\x22*/integration/*\x22\x20-name\x20\x22*.spec.*\x22\x202>/dev/null\x20||\x20echo\x20\x22\x22','nvGko','existsSync','apply','\x20\x20Total:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','E2E\x20tests\x20are\x20slow\x20and\x20brittle,\x20use\x20integration\x20tests\x20instead','exit','ignore','RXfdF','log','370027NjYQfo','10670IRRKjA','Dynamic\x20require\x20of\x20\x22','11AZyLmv','filter','\x20component\x20tests','toString','Add\x20component\x20tests\x20for\x20React/Vue/etc.\x20components','\x22\x20is\x20not\x20supported','tool_input','pipe','8128932ECWvIa','toFixed','UI\x20bugs\x20are\x20not\x20caught\x20by\x20API-only\x20tests!','\x0a📊\x20TEST\x20PYRAMID\x20ANALYSIS\x0a','Component\x20test\x20coverage:\x20','\x0a❌\x20TEST\x20PYRAMID\x20VALIDATION\x20FAILED\x0a','trim','find\x20./tests\x20-name\x20\x22*.test.*\x22\x20-o\x20-name\x20\x22*.spec.*\x22\x202>/dev/null\x20|\x20grep\x20-v\x20-E\x20\x22(integration|e2e|component)\x22\x20||\x20echo\x20\x22\x22','WARNING:\x20Inverted\x20test\x20pyramid\x20detected','length','utf8','1541624XNpInb','find\x20./src\x20-name\x20\x22*.tsx\x22\x20-o\x20-name\x20\x22*.jsx\x22\x202>/dev/null\x20|\x20wc\x20-l','BLOCKED:\x20No\x20tests\x20found\x20in\x20the\x20project','51bZFKvw','1746NGSoZS','16aAOxar','readFileSync','Add\x20more\x20unit\x20and\x20component\x20tests','match'];_0x1dee=function(){return _0x347815;};return _0x1dee();}s===0x0&&(d[_0x5ca768(0x9d)](_0x5ca768(0x85)),d[_0x5ca768(0x9d)](_0x5ca768(0x9c)));if(s>0x0){let e=(r+i)/s*0x64,l=m/s*0x64,a=p/s*0x64;console[_0x5ca768(0xb4)](_0x5ca768(0xc3)),console[_0x5ca768(0xb4)]('\x20\x20Unit/Component\x20Tests:\x20'+(r+i)+'\x20('+e[_0x5ca768(0xc1)](0x1)+'%)'),console[_0x5ca768(0xb4)]('\x20\x20Integration\x20Tests:\x20\x20\x20\x20'+m+'\x20('+l[_0x5ca768(0xc1)](0x1)+'%)'),console[_0x5ca768(0xb4)](_0x5ca768(0xa4)+p+'\x20('+a[_0x5ca768(0xc1)](0x1)+'%)'),console[_0x5ca768(0xb4)](_0x5ca768(0xaf)+s+'\x0a'),i===0x0&&r>0x0&&(t['push'](_0x5ca768(0x99)),t[_0x5ca768(0x9d)](_0x5ca768(0xbc)),t[_0x5ca768(0x9d)](_0x5ca768(0xc2))),r+i<s*0.5&&(t[_0x5ca768(0x9d)](_0x5ca768(0x80)),t[_0x5ca768(0x9d)](_0x5ca768(0x96)+e[_0x5ca768(0xc1)](0x1)+'%'),t[_0x5ca768(0x9d)](_0x5ca768(0x8a))),p>s*0.3&&(t[_0x5ca768(0x9d)](_0x5ca768(0x91)),t['push'](_0x5ca768(0xb0)));try{const _0x4e5c3d={};_0x4e5c3d['encoding']=_0x5ca768(0x82),_0x4e5c3d[_0x5ca768(0xa5)]=[_0x5ca768(0xbf),'pipe','ignore'];let n=f(_0x5ca768(0x84),_0x4e5c3d)[_0x5ca768(0xc6)](),o=parseInt(n)||0x0;if(o>0x0){let u=i/o;u<0.5&&(t[_0x5ca768(0x9d)](_0x5ca768(0x9e)+o+'\x20UI\x20components\x20but\x20only\x20'+i+_0x5ca768(0xba)),t[_0x5ca768(0x9d)](_0x5ca768(0xc4)+(u*0x64)[_0x5ca768(0xc1)](0x1)+'%'),t[_0x5ca768(0x9d)]('CRITICAL:\x20UI\x20bugs\x20are\x20slipping\x20through!'),t[_0x5ca768(0x9d)](_0x5ca768(0xa9))),p===0x0&&o>0x5&&(t[_0x5ca768(0x9d)]('WARNING:\x20Multiple\x20UI\x20components\x20but\x20NO\x20E2E\x20integration\x20tests'),t[_0x5ca768(0x9d)](_0x5ca768(0xa2)));}}catch{}}d[_0x5ca768(0x81)]>0x0&&(console[_0x5ca768(0x8e)](_0x5ca768(0xc5)),d[_0x5ca768(0x95)](_0x1fec20=>console[_0x5ca768(0x8e)]('\x20\x20'+_0x1fec20)),console[_0x5ca768(0x8e)]('\x0a'),process[_0x5ca768(0xb1)](0x2)),t['length']>0x0&&(console[_0x5ca768(0x98)](_0x5ca768(0xa0)),t['forEach'](_0x570994=>console[_0x5ca768(0x98)]('\x20\x20'+_0x570994)),console[_0x5ca768(0x98)]('\x0a')),process[_0x5ca768(0xb1)](0x0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var _0x376bcf=_0x1703;(function(_0x36f66e,_0x5ba83b){var _0x32ba21=_0x1703,_0x48a79c=_0x36f66e();while(!![]){try{var _0x2ab836=-parseInt(_0x32ba21(0x223))/0x1*(parseInt(_0x32ba21(0x211))/0x2)+parseInt(_0x32ba21(0x21e))/0x3*(-parseInt(_0x32ba21(0x233))/0x4)+-parseInt(_0x32ba21(0x21b))/0x5*(parseInt(_0x32ba21(0x215))/0x6)+parseInt(_0x32ba21(0x1d4))/0x7*(parseInt(_0x32ba21(0x219))/0x8)+parseInt(_0x32ba21(0x1f6))/0x9*(-parseInt(_0x32ba21(0x1db))/0xa)+parseInt(_0x32ba21(0x1ef))/0xb*(-parseInt(_0x32ba21(0x1d2))/0xc)+parseInt(_0x32ba21(0x1cf))/0xd*(parseInt(_0x32ba21(0x201))/0xe);if(_0x2ab836===_0x5ba83b)break;else _0x48a79c['push'](_0x48a79c['shift']());}catch(_0x4c03c9){_0x48a79c['push'](_0x48a79c['shift']());}}}(_0x18e8,0x9013d));var _0x37306c=(function(){var _0x22db80=!![];return function(_0x1b3b0e,_0x183d73){var _0x2be188=_0x1703,_0x5671fa={};_0x5671fa[_0x2be188(0x22f)]=_0x2be188(0x1df);var _0x2c7a00=_0x5671fa,_0x2a0aa4=_0x22db80?function(){var _0x513cd9=_0x2be188,_0x5d2e5d={};_0x5d2e5d[_0x513cd9(0x1ee)]=_0x513cd9(0x22a);var _0x13c415=_0x5d2e5d;if(_0x2c7a00[_0x513cd9(0x22f)]===_0x513cd9(0x1df)){if(_0x183d73){var _0x519548=_0x183d73[_0x513cd9(0x20a)](_0x1b3b0e,arguments);return _0x183d73=null,_0x519548;}}else _0x265ff6['error'](_0x13c415['KtbzW']),_0x4892ae[_0x513cd9(0x224)](_0x361ba5[_0x513cd9(0x1f4)]),_0x258250['exit'](0x1);}:function(){};return _0x22db80=![],_0x2a0aa4;};}()),_0x2b751b=_0x37306c(this,function(){var _0x287449=_0x1703,_0x3e6ef3={};_0x3e6ef3['oNSId']=_0x287449(0x22b);var _0x23d356=_0x3e6ef3;return _0x2b751b['toString']()[_0x287449(0x20f)](_0x23d356[_0x287449(0x1e9)])[_0x287449(0x1e1)]()[_0x287449(0x1dc)](_0x2b751b)['search'](_0x23d356[_0x287449(0x1e9)]);});_0x2b751b();var u=(_0x11d63f=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x11d63f,{'get':(_0x219c4b,_0x420150)=>(typeof require<'u'?require:_0x219c4b)[_0x420150]}):_0x11d63f)(function(_0x4ca12d){var _0x273bf0=_0x1703,_0x4f1f86={'kcVjR':function(_0x48c011,_0x1f97cf){return _0x48c011<_0x1f97cf;},'WgSQH':function(_0x3ff6a3,_0x574bab){return _0x3ff6a3(_0x574bab);},'vLsaa':function(_0x393076,_0xd75041){return _0x393076+_0xd75041;},'DyMbF':function(_0x533fd6,_0x1797af){return _0x533fd6+_0x1797af;},'XWmpQ':_0x273bf0(0x228),'EjyCl':_0x273bf0(0x20b)};if(_0x4f1f86[_0x273bf0(0x1f9)](typeof require,'u'))return require['apply'](this,arguments);throw _0x4f1f86[_0x273bf0(0x214)](Error,_0x4f1f86[_0x273bf0(0x1d6)](_0x4f1f86['DyMbF'](_0x4f1f86[_0x273bf0(0x1dd)],_0x4ca12d),_0x4f1f86[_0x273bf0(0x225)]));}),t=u('fs'),i=u(_0x376bcf(0x20d));console[_0x376bcf(0x222)](_0x376bcf(0x1cd));var g=process[_0x376bcf(0x1d3)][0x2],p=_0x376bcf(0x1fd),l;g?l=g:t['existsSync'](p)?l=t[_0x376bcf(0x230)](p,_0x376bcf(0x1ea))[_0x376bcf(0x1f8)]():(console['error'](_0x376bcf(0x1f2)),console[_0x376bcf(0x224)]('Usage:'),console[_0x376bcf(0x224)](_0x376bcf(0x1c6)),console[_0x376bcf(0x224)](_0x376bcf(0x1fe)),console[_0x376bcf(0x224)]('\x20\x20npm\x20run\x20plan:manager\x0a'),process[_0x376bcf(0x21d)](0x1));var r=i[_0x376bcf(0x1f3)](_0x376bcf(0x1e5),l);t[_0x376bcf(0x218)](r)||(console['error'](_0x376bcf(0x22e)+r),console['error'](_0x376bcf(0x1c7)),process[_0x376bcf(0x21d)](0x1));var d=i['join'](r,_0x376bcf(0x1c9));t[_0x376bcf(0x218)](d)||(console[_0x376bcf(0x224)]('❌\x20ERROR:\x20PROJECT-PLAN.json\x20not\x20found\x20in\x20'+r),process[_0x376bcf(0x21d)](0x1));var n;try{n=JSON['parse'](t[_0x376bcf(0x230)](d,_0x376bcf(0x1ea)));}catch(_0x322c41){console[_0x376bcf(0x224)](_0x376bcf(0x22a)),console[_0x376bcf(0x224)](_0x322c41[_0x376bcf(0x1f4)]),process['exit'](0x1);}var o=[];n['project']&&n['project'][_0x376bcf(0x1f5)]?(console['log']('📦\x20Detected\x20hierarchical\x20plan\x20structure'),console[_0x376bcf(0x222)](_0x376bcf(0x1ed)),n[_0x376bcf(0x1cb)][_0x376bcf(0x1f5)][_0x376bcf(0x1e7)](_0x4e282a=>{var _0x17efce=_0x376bcf,_0x378851={};_0x378851[_0x17efce(0x1fb)]=_0x17efce(0x212);var _0x1d0ef7=_0x378851;_0x4e282a['milestones'][_0x17efce(0x1e7)](_0x49c9fb=>{var _0x5c4e9c=_0x17efce;'BqHcZ'===_0x1d0ef7[_0x5c4e9c(0x1fb)]?_0x49c9fb[_0x5c4e9c(0x232)][_0x5c4e9c(0x1e7)](_0x2d1fa5=>{var _0x2fc0c6=_0x5c4e9c,_0x55a89={..._0x2d1fa5};_0x55a89[_0x2fc0c6(0x217)]=_0x4e282a['id'],_0x55a89[_0x2fc0c6(0x1e0)]=_0x4e282a[_0x2fc0c6(0x207)],_0x55a89[_0x2fc0c6(0x226)]=_0x49c9fb['id'],_0x55a89[_0x2fc0c6(0x1d0)]=_0x49c9fb[_0x2fc0c6(0x207)],o['push'](_0x55a89);}):_0x23aa07[_0x5c4e9c(0x220)][_0x5c4e9c(0x1e7)](_0x1f3fac=>{var _0x3ed326=_0x5c4e9c;_0x1f3fac[_0x3ed326(0x232)][_0x3ed326(0x1e7)](_0x5e2fea=>{var _0x1970e8=_0x3ed326,_0x38799d={..._0x5e2fea};_0x38799d[_0x1970e8(0x217)]=_0x1a068['id'],_0x38799d[_0x1970e8(0x1e0)]=_0x655abf[_0x1970e8(0x207)],_0x38799d[_0x1970e8(0x226)]=_0x1f3fac['id'],_0x38799d[_0x1970e8(0x1d0)]=_0x1f3fac[_0x1970e8(0x207)],_0x403c1a[_0x1970e8(0x1e2)](_0x38799d);});});});})):n['tasks']&&Array['isArray'](n[_0x376bcf(0x232)])?(console[_0x376bcf(0x222)]('📋\x20Detected\x20flat\x20plan\x20structure'),o['push'](...n[_0x376bcf(0x232)])):(console['error']('❌\x20ERROR:\x20Invalid\x20plan\x20structure'),console[_0x376bcf(0x224)]('Expected\x20either:'),console[_0x376bcf(0x224)](_0x376bcf(0x1cc)),console[_0x376bcf(0x224)](_0x376bcf(0x1e4)),process[_0x376bcf(0x21d)](0x1)),o[_0x376bcf(0x1ec)]===0x0&&(console[_0x376bcf(0x224)](_0x376bcf(0x1f7)),process[_0x376bcf(0x21d)](0x1)),console[_0x376bcf(0x222)](_0x376bcf(0x234)+o[_0x376bcf(0x1ec)]+'\x20tasks\x0a');function _0x1703(_0x55a028,_0x342e64){_0x55a028=_0x55a028-0x1c6;var _0x223f91=_0x18e8();var _0x2b751b=_0x223f91[_0x55a028];return _0x2b751b;}var a=i[_0x376bcf(0x1f3)](r,_0x376bcf(0x232)),_0x5ac963={};_0x5ac963[_0x376bcf(0x1d1)]=!0x0,t[_0x376bcf(0x218)](a)||t['mkdirSync'](a,_0x5ac963),o[_0x376bcf(0x1e7)](_0x4e59fe=>{var _0x39b04c=_0x376bcf,_0x4e8c0a={};_0x4e8c0a[_0x39b04c(0x1c8)]='pending',_0x4e8c0a['CrKUq']=_0x39b04c(0x1f1);var _0x45e456=_0x4e8c0a,_0x2f1330={};_0x2f1330[_0x39b04c(0x1da)]=[],_0x2f1330[_0x39b04c(0x1e6)]=[],_0x2f1330[_0x39b04c(0x208)]=[],_0x2f1330[_0x39b04c(0x1ca)]=[];var _0xb8a106={};_0xb8a106['id']=_0x4e59fe['id'],_0xb8a106[_0x39b04c(0x1de)]=_0x4e59fe[_0x39b04c(0x1de)],_0xb8a106[_0x39b04c(0x1e3)]=_0x4e59fe[_0x39b04c(0x1e3)]||'',_0xb8a106[_0x39b04c(0x22c)]=_0x4e59fe['status']||_0x45e456[_0x39b04c(0x1c8)],_0xb8a106[_0x39b04c(0x22d)]=_0x4e59fe[_0x39b04c(0x22d)]||_0x45e456[_0x39b04c(0x1d7)],_0xb8a106[_0x39b04c(0x217)]=_0x4e59fe[_0x39b04c(0x217)]||null,_0xb8a106[_0x39b04c(0x1e0)]=_0x4e59fe[_0x39b04c(0x1e0)]||null,_0xb8a106[_0x39b04c(0x226)]=_0x4e59fe[_0x39b04c(0x226)]||null,_0xb8a106[_0x39b04c(0x1d0)]=_0x4e59fe[_0x39b04c(0x1d0)]||null,_0xb8a106[_0x39b04c(0x206)]=_0x4e59fe[_0x39b04c(0x206)]||[],_0xb8a106[_0x39b04c(0x231)]=_0x4e59fe[_0x39b04c(0x231)]||[],_0xb8a106[_0x39b04c(0x1f0)]=_0x4e59fe['testCases']||[],_0xb8a106['estimatedHours']=_0x4e59fe[_0x39b04c(0x216)]||null,_0xb8a106[_0x39b04c(0x213)]=null,_0xb8a106[_0x39b04c(0x20c)]=null,_0xb8a106[_0x39b04c(0x1fa)]=null,_0xb8a106['blockedReason']=null,_0xb8a106[_0x39b04c(0x1d5)]=_0x4e59fe[_0x39b04c(0x1d5)]||_0x2f1330,_0xb8a106[_0x39b04c(0x210)]=[];let _0x35b2a7=_0xb8a106,_0x366603=i[_0x39b04c(0x1f3)](a,_0x4e59fe['id']+_0x39b04c(0x221));t[_0x39b04c(0x1e8)](_0x366603,JSON[_0x39b04c(0x1d8)](_0x35b2a7,null,0x2)),console['log']('\x20\x20✓\x20'+_0x4e59fe['id']+':\x20'+_0x4e59fe[_0x39b04c(0x1de)]);}),console[_0x376bcf(0x222)](_0x376bcf(0x227)+o['length']+_0x376bcf(0x1eb)+a+'/');var S={'version':_0x376bcf(0x204),'planId':l,'projectName':n['projectName']||n[_0x376bcf(0x1cb)]?.[_0x376bcf(0x207)]||_0x376bcf(0x21f),'description':n[_0x376bcf(0x1e3)]||n[_0x376bcf(0x1cb)]?.[_0x376bcf(0x1e3)]||'','createdAt':new Date()[_0x376bcf(0x21a)](),'planLockedAt':new Date()[_0x376bcf(0x21a)](),'lastUpdated':new Date()[_0x376bcf(0x21a)](),'activeTask':null,'taskFiles':o[_0x376bcf(0x20e)](_0x4f659e=>({'id':_0x4f659e['id'],'title':_0x4f659e[_0x376bcf(0x1de)],'status':_0x376bcf(0x1ff),'file':a+'/'+_0x4f659e['id']+_0x376bcf(0x221)})),'statistics':{'totalTasks':o[_0x376bcf(0x1ec)],'pending':o['length'],'inProgress':0x0,'completed':0x0,'blocked':0x0}},m=i[_0x376bcf(0x1f3)](r,'TASK-TRACKER.json');t['writeFileSync'](m,JSON[_0x376bcf(0x1d8)](S,null,0x2)),console[_0x376bcf(0x222)](_0x376bcf(0x1ce)+m),console['log'](_0x376bcf(0x1fc)+o[_0x376bcf(0x1ec)]+'\x20tasks\x0a'),console[_0x376bcf(0x222)](_0x376bcf(0x1d9)),console[_0x376bcf(0x222)]('\x20\x201.\x20Set\x20as\x20active\x20plan:\x20npm\x20run\x20plan:manager'),console['log'](_0x376bcf(0x200)),console[_0x376bcf(0x222)](_0x376bcf(0x229)),n[_0x376bcf(0x205)]=!0x0,n[_0x376bcf(0x21c)]=new Date()[_0x376bcf(0x21a)](),t[_0x376bcf(0x1e8)](d,JSON['stringify'](n,null,0x2));var f=i[_0x376bcf(0x1f3)](r,_0x376bcf(0x203));function _0x18e8(){var _0x481e83=['exit','686121WYsrPC','Structured\x20Coding\x20Project','milestones','.json','log','151qKkleX','error','EjyCl','milestone','\x0a✅\x20Created\x20','Dynamic\x20require\x20of\x20\x22','\x20\x203.\x20View\x20status:\x20npm\x20run\x20task:status\x0a','❌\x20ERROR:\x20Invalid\x20JSON\x20in\x20PROJECT-PLAN.json','(((.+)+)+)+$','status','phase','❌\x20ERROR:\x20Plan\x20directory\x20not\x20found:\x20','mHNyz','readFileSync','completionCriteria','tasks','20aybgcs','✅\x20Found\x20','\x20\x20npm\x20run\x20plan:init\x20<plan-id>','Create\x20plan\x20first\x20with:\x20npm\x20run\x20plan:create\x0a','OVvAb','PROJECT-PLAN.json','documentation','project','\x20\x20-\x20Hierarchical:\x20{\x20project:\x20{\x20subprojects:\x20[...]\x20}\x20}','\x0a🚀\x20INITIALIZING\x20TASK\x20TRACKER\x0a','\x0a✅\x20Task\x20tracker\x20created:\x20','1728142tZeEpx','milestoneName','recursive','294708MZSkhH','argv','7nAFGwR','artifacts','vLsaa','CrKUq','stringify','📋\x20Next\x20steps:','design','360wXnGUC','constructor','XWmpQ','title','oDMlL','subprojectName','toString','push','description','\x20\x20-\x20Flat:\x20{\x20tasks:\x20[...]\x20}','.claude/plans','code','forEach','writeFileSync','oNSId','utf8','\x20task\x20files\x20in\x20','length','🔄\x20Flattening\x20hierarchy\x20into\x20individual\x20task\x20files...\x0a','KtbzW','275bwCfXW','testCases','implementation','❌\x20ERROR:\x20No\x20plan\x20specified\x20and\x20no\x20active\x20plan\x20found','join','message','subprojects','225063vfHxaR','❌\x20ERROR:\x20No\x20tasks\x20found\x20in\x20PROJECT-PLAN.json','trim','kcVjR','completedAt','yMTjm','📊\x20Total:\x20','.claude/ACTIVE-PLAN','Or\x20set\x20active\x20plan\x20first:','pending','\x20\x202.\x20Start\x20first\x20task:\x20npm\x20run\x20task:start\x20TASK-001','322JAriRV','\x20is\x20now\x20LOCKED\x20and\x20ACTIVE\x0a','.plan-locked','2.0','locked','dependencies','name','tests','🔒\x20Plan\x20','apply','\x22\x20is\x20not\x20supported','startedAt','path','map','search','notes','1160UlShMe','BqHcZ','actualHours','WgSQH','6RSPTcZ','estimatedHours','subproject','existsSync','6049784JluGQr','toISOString','2391110SFvhnK','lockedAt'];_0x18e8=function(){return _0x481e83;};return _0x18e8();}t[_0x376bcf(0x1e8)](f,new Date()['toISOString']()),t[_0x376bcf(0x1e8)](p,l),console[_0x376bcf(0x222)](_0x376bcf(0x209)+l+_0x376bcf(0x202)),process[_0x376bcf(0x21d)](0x0);
|
|
2
|
+
var _0x2f659c=_0x5167;(function(_0x58d53c,_0x4da5bb){var _0x3e3f46=_0x5167,_0x4a5767=_0x58d53c();while(!![]){try{var _0x4202c2=parseInt(_0x3e3f46(0x195))/0x1*(-parseInt(_0x3e3f46(0x155))/0x2)+-parseInt(_0x3e3f46(0x1bc))/0x3+-parseInt(_0x3e3f46(0x1b1))/0x4+-parseInt(_0x3e3f46(0x169))/0x5+-parseInt(_0x3e3f46(0x1ac))/0x6+-parseInt(_0x3e3f46(0x1c0))/0x7*(-parseInt(_0x3e3f46(0x153))/0x8)+parseInt(_0x3e3f46(0x1c6))/0x9;if(_0x4202c2===_0x4da5bb)break;else _0x4a5767['push'](_0x4a5767['shift']());}catch(_0x3bd5f6){_0x4a5767['push'](_0x4a5767['shift']());}}}(_0x30ce,0x877e1));var _0x40c5bd=(function(){var _0x4a2812=_0x5167,_0x30d62e={'gxgBp':function(_0x263979,_0xcb9d5d){return _0x263979<_0xcb9d5d;},'SXgqP':function(_0x22d5e4,_0x15046e){return _0x22d5e4(_0x15046e);},'nZjJh':_0x4a2812(0x190),'xtiFp':_0x4a2812(0x198),'SWYci':function(_0x849c2c,_0x9b4a76){return _0x849c2c===_0x9b4a76;},'ouzBj':'iBTNJ','plNTv':_0x4a2812(0x159),'NBxHZ':_0x4a2812(0x18a)},_0xbcf973=!![];return function(_0x3dd98c,_0x28fb52){var _0x9cef9b=_0xbcf973?function(){var _0x27584c=_0x5167,_0x5b6934={'YoWsW':function(_0x379f11,_0x31e320){var _0x364f08=_0x5167;return _0x30d62e[_0x364f08(0x167)](_0x379f11,_0x31e320);},'mPXic':function(_0x5c6bef,_0x48012f){var _0x4c6253=_0x5167;return _0x30d62e[_0x4c6253(0x179)](_0x5c6bef,_0x48012f);},'pfyla':_0x30d62e[_0x27584c(0x163)],'LAULx':_0x30d62e[_0x27584c(0x1a6)]};if(_0x30d62e['SWYci'](_0x30d62e[_0x27584c(0x17b)],_0x30d62e[_0x27584c(0x183)])){if(_0x5b6934['YoWsW'](typeof _0x1390b7,'u'))return _0x4f2e2d['apply'](this,arguments);throw _0x5b6934[_0x27584c(0x184)](_0x571185,_0x5b6934[_0x27584c(0x15e)]+_0x327c2f+_0x5b6934[_0x27584c(0x1b7)]);}else{if(_0x28fb52){if(_0x30d62e['SWYci'](_0x30d62e[_0x27584c(0x15c)],_0x30d62e['NBxHZ'])){var _0x4f7b67=_0x28fb52[_0x27584c(0x1a3)](_0x3dd98c,arguments);return _0x28fb52=null,_0x4f7b67;}else _0x49847e[_0x27584c(0x178)]('❌\x20ERROR:\x20Invalid\x20JSON\x20in\x20PROJECT-PLAN.json'),_0x4463b1[_0x27584c(0x178)](_0x1f411c[_0x27584c(0x1c5)]),_0x4f3b5c['exit'](0x1);}}}:function(){};return _0xbcf973=![],_0x9cef9b;};}()),_0x425831=_0x40c5bd(this,function(){var _0xf3b3f7=_0x5167,_0x22f9cd={};_0x22f9cd['gIeVh']=_0xf3b3f7(0x1a2);var _0x40b322=_0x22f9cd;return _0x425831['toString']()[_0xf3b3f7(0x1a8)](_0x40b322[_0xf3b3f7(0x1aa)])['toString']()[_0xf3b3f7(0x182)](_0x425831)[_0xf3b3f7(0x1a8)](_0xf3b3f7(0x1a2));});_0x425831();var u=(_0x37919e=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x37919e,{'get':(_0x38f2e5,_0x185e29)=>(typeof require<'u'?require:_0x38f2e5)[_0x185e29]}):_0x37919e)(function(_0x253c5a){var _0x573800=_0x5167,_0x2efc46={'JbLxs':function(_0x296502,_0xee871e){return _0x296502<_0xee871e;},'mfvKp':function(_0x12d621,_0xb83115){return _0x12d621(_0xb83115);},'kapxt':function(_0x4eb2d5,_0x36367d){return _0x4eb2d5+_0x36367d;},'eovup':function(_0x341b4d,_0x37ddb6){return _0x341b4d+_0x37ddb6;},'Oqopq':_0x573800(0x190)};if(_0x2efc46[_0x573800(0x18f)](typeof require,'u'))return require[_0x573800(0x1a3)](this,arguments);throw _0x2efc46['mfvKp'](Error,_0x2efc46[_0x573800(0x17e)](_0x2efc46[_0x573800(0x160)](_0x2efc46[_0x573800(0x1be)],_0x253c5a),_0x573800(0x198)));}),t=u('fs'),i=u(_0x2f659c(0x1b9));console[_0x2f659c(0x1c4)](_0x2f659c(0x1b6));var g=process['argv'][0x2],p=_0x2f659c(0x194),l;g?l=g:t['existsSync'](p)?l=t[_0x2f659c(0x154)](p,_0x2f659c(0x1bd))['trim']():(console[_0x2f659c(0x178)](_0x2f659c(0x19a)),console[_0x2f659c(0x178)](_0x2f659c(0x1a1)),console[_0x2f659c(0x178)](_0x2f659c(0x199)),console[_0x2f659c(0x178)](_0x2f659c(0x188)),console[_0x2f659c(0x178)](_0x2f659c(0x19e)),process[_0x2f659c(0x171)](0x1));var r=i[_0x2f659c(0x165)]('.claude/plans',l);t[_0x2f659c(0x15a)](r)||(console[_0x2f659c(0x178)]('❌\x20ERROR:\x20Plan\x20directory\x20not\x20found:\x20'+r),console[_0x2f659c(0x178)]('Create\x20plan\x20first\x20with:\x20npm\x20run\x20plan:create\x0a'),process[_0x2f659c(0x171)](0x1));var d=i[_0x2f659c(0x165)](r,'PROJECT-PLAN.json');t['existsSync'](d)||(console['error']('❌\x20ERROR:\x20PROJECT-PLAN.json\x20not\x20found\x20in\x20'+r),process[_0x2f659c(0x171)](0x1));var n;try{n=JSON[_0x2f659c(0x1a5)](t[_0x2f659c(0x154)](d,_0x2f659c(0x1bd)));}catch(_0x2883f8){console[_0x2f659c(0x178)](_0x2f659c(0x1bb)),console[_0x2f659c(0x178)](_0x2883f8[_0x2f659c(0x1c5)]),process[_0x2f659c(0x171)](0x1);}var o=[];n[_0x2f659c(0x18e)]&&n['project'][_0x2f659c(0x16d)]?(console[_0x2f659c(0x1c4)](_0x2f659c(0x19c)),console['log'](_0x2f659c(0x15b)),n[_0x2f659c(0x18e)][_0x2f659c(0x16d)][_0x2f659c(0x1c1)](_0x571ef3=>{var _0x380b6b=_0x2f659c,_0x221d0a={};_0x221d0a[_0x380b6b(0x156)]=function(_0x5c26fb,_0xc7eb21){return _0x5c26fb!==_0xc7eb21;},_0x221d0a['jfuMx']=_0x380b6b(0x164);var _0x132c30=_0x221d0a;_0x571ef3['milestones'][_0x380b6b(0x1c1)](_0x526ac8=>{var _0x447282=_0x380b6b,_0x23a72f={'ycsGc':function(_0x17b538,_0x3f7ff1){var _0x2abfd5=_0x5167;return _0x132c30[_0x2abfd5(0x156)](_0x17b538,_0x3f7ff1);},'JvYyF':_0x132c30[_0x447282(0x168)]};_0x526ac8[_0x447282(0x1a7)][_0x447282(0x1c1)](_0x5944ca=>{var _0x185507=_0x447282;if(_0x23a72f[_0x185507(0x172)](_0x23a72f[_0x185507(0x176)],_0x185507(0x164)))return _0x277087[_0x185507(0x17c)]()[_0x185507(0x1a8)](_0x185507(0x1a2))[_0x185507(0x17c)]()[_0x185507(0x182)](_0x17ce74)[_0x185507(0x1a8)](_0x185507(0x1a2));else{var _0x878a0={..._0x5944ca};_0x878a0[_0x185507(0x15d)]=_0x571ef3['id'],_0x878a0[_0x185507(0x1b3)]=_0x571ef3[_0x185507(0x19d)],_0x878a0[_0x185507(0x1b0)]=_0x526ac8['id'],_0x878a0[_0x185507(0x1ba)]=_0x526ac8[_0x185507(0x19d)],o[_0x185507(0x191)](_0x878a0);}});});})):n[_0x2f659c(0x1a7)]&&Array['isArray'](n[_0x2f659c(0x1a7)])?(console[_0x2f659c(0x1c4)]('📋\x20Detected\x20flat\x20plan\x20structure'),o[_0x2f659c(0x191)](...n[_0x2f659c(0x1a7)])):(console[_0x2f659c(0x178)](_0x2f659c(0x187)),console[_0x2f659c(0x178)](_0x2f659c(0x1a4)),console['error'](_0x2f659c(0x18c)),console[_0x2f659c(0x178)](_0x2f659c(0x161)),process[_0x2f659c(0x171)](0x1)),o[_0x2f659c(0x1b2)]===0x0&&(console[_0x2f659c(0x178)](_0x2f659c(0x1ae)),process[_0x2f659c(0x171)](0x1)),console[_0x2f659c(0x1c4)]('✅\x20Found\x20'+o[_0x2f659c(0x1b2)]+_0x2f659c(0x1b5));var a=i['join'](r,'tasks'),_0x2a2165={};function _0x5167(_0x2999f1,_0x8edde6){_0x2999f1=_0x2999f1-0x153;var _0x5717f5=_0x30ce();var _0x425831=_0x5717f5[_0x2999f1];return _0x425831;}_0x2a2165[_0x2f659c(0x186)]=!0x0,t[_0x2f659c(0x15a)](a)||t[_0x2f659c(0x16a)](a,_0x2a2165),o[_0x2f659c(0x1c1)](_0x243754=>{var _0x4f004e=_0x2f659c,_0x22f69b={};_0x22f69b[_0x4f004e(0x18d)]=_0x4f004e(0x162),_0x22f69b[_0x4f004e(0x185)]=_0x4f004e(0x1b8);var _0x3135b2=_0x22f69b,_0x3ff2f6={};_0x3ff2f6[_0x4f004e(0x180)]=[],_0x3ff2f6[_0x4f004e(0x17f)]=[],_0x3ff2f6[_0x4f004e(0x19b)]=[],_0x3ff2f6[_0x4f004e(0x1af)]=[];var _0x4ff76d={};_0x4ff76d['id']=_0x243754['id'],_0x4ff76d[_0x4f004e(0x1b4)]=_0x243754['title'],_0x4ff76d[_0x4f004e(0x197)]=_0x243754['description']||'',_0x4ff76d[_0x4f004e(0x193)]=_0x243754[_0x4f004e(0x193)]||_0x3135b2[_0x4f004e(0x18d)],_0x4ff76d[_0x4f004e(0x1a9)]=_0x243754[_0x4f004e(0x1a9)]||_0x3135b2['pXxcI'],_0x4ff76d[_0x4f004e(0x15d)]=_0x243754[_0x4f004e(0x15d)]||null,_0x4ff76d[_0x4f004e(0x1b3)]=_0x243754['subprojectName']||null,_0x4ff76d[_0x4f004e(0x1b0)]=_0x243754[_0x4f004e(0x1b0)]||null,_0x4ff76d[_0x4f004e(0x1ba)]=_0x243754[_0x4f004e(0x1ba)]||null,_0x4ff76d[_0x4f004e(0x192)]=_0x243754[_0x4f004e(0x192)]||[],_0x4ff76d['completionCriteria']=_0x243754[_0x4f004e(0x196)]||[],_0x4ff76d[_0x4f004e(0x1c2)]=_0x243754[_0x4f004e(0x1c2)]||[],_0x4ff76d[_0x4f004e(0x17d)]=_0x243754[_0x4f004e(0x17d)]||null,_0x4ff76d[_0x4f004e(0x1c3)]=null,_0x4ff76d[_0x4f004e(0x18b)]=null,_0x4ff76d[_0x4f004e(0x189)]=null,_0x4ff76d['blockedReason']=null,_0x4ff76d[_0x4f004e(0x170)]=_0x243754[_0x4f004e(0x170)]||_0x3ff2f6,_0x4ff76d['notes']=[];let _0x234361=_0x4ff76d,_0x3e3f8f=i[_0x4f004e(0x165)](a,_0x243754['id']+_0x4f004e(0x1bf));t[_0x4f004e(0x1ad)](_0x3e3f8f,JSON[_0x4f004e(0x19f)](_0x234361,null,0x2)),console['log'](_0x4f004e(0x177)+_0x243754['id']+':\x20'+_0x243754['title']);}),console[_0x2f659c(0x1c4)](_0x2f659c(0x17a)+o['length']+_0x2f659c(0x157)+a+'/');function _0x30ce(){var _0x180386=['forEach','testCases','actualHours','log','message','20612340SrlXqt','1603288SAnhey','readFileSync','8808DzZXnk','jHCzM','\x20task\x20files\x20in\x20','locked','FdDun','existsSync','🔄\x20Flattening\x20hierarchy\x20into\x20individual\x20task\x20files...\x0a','NBxHZ','subproject','pfyla','lockedAt','eovup','\x20\x20-\x20Flat:\x20{\x20tasks:\x20[...]\x20}','pending','nZjJh','tMvYS','join','\x20\x202.\x20Start\x20first\x20task:\x20npm\x20run\x20task:start\x20TASK-001','gxgBp','jfuMx','1212550ThUcCv','mkdirSync','map','toISOString','subprojects','\x20\x201.\x20Set\x20as\x20active\x20plan:\x20npm\x20run\x20plan:manager','📊\x20Total:\x20','artifacts','exit','ycsGc','📋\x20Next\x20steps:','2.0','🔒\x20Plan\x20','JvYyF','\x20\x20✓\x20','error','SXgqP','\x0a✅\x20Created\x20','ouzBj','toString','estimatedHours','kapxt','code','design','\x20is\x20now\x20LOCKED\x20and\x20ACTIVE\x0a','constructor','plNTv','mPXic','pXxcI','recursive','❌\x20ERROR:\x20Invalid\x20plan\x20structure','Or\x20set\x20active\x20plan\x20first:','completedAt','AUcvs','startedAt','\x20\x20-\x20Hierarchical:\x20{\x20project:\x20{\x20subprojects:\x20[...]\x20}\x20}','pHKXc','project','JbLxs','Dynamic\x20require\x20of\x20\x22','push','dependencies','status','.claude/ACTIVE-PLAN','248mZfdPb','completionCriteria','description','\x22\x20is\x20not\x20supported','\x20\x20npm\x20run\x20plan:init\x20<plan-id>','❌\x20ERROR:\x20No\x20plan\x20specified\x20and\x20no\x20active\x20plan\x20found','tests','📦\x20Detected\x20hierarchical\x20plan\x20structure','name','\x20\x20npm\x20run\x20plan:manager\x0a','stringify','projectName','Usage:','(((.+)+)+)+$','apply','Expected\x20either:','parse','xtiFp','tasks','search','phase','gIeVh','Structured\x20Coding\x20Project','5324418NoFaLm','writeFileSync','❌\x20ERROR:\x20No\x20tasks\x20found\x20in\x20PROJECT-PLAN.json','documentation','milestone','1058628BgOSWW','length','subprojectName','title','\x20tasks\x0a','\x0a🚀\x20INITIALIZING\x20TASK\x20TRACKER\x0a','LAULx','implementation','path','milestoneName','❌\x20ERROR:\x20Invalid\x20JSON\x20in\x20PROJECT-PLAN.json','150495kOTUYq','utf8','Oqopq','.json','28MXlrQV'];_0x30ce=function(){return _0x180386;};return _0x30ce();}var S={'version':_0x2f659c(0x174),'planId':l,'projectName':n[_0x2f659c(0x1a0)]||n['project']?.['name']||_0x2f659c(0x1ab),'description':n[_0x2f659c(0x197)]||n[_0x2f659c(0x18e)]?.[_0x2f659c(0x197)]||'','createdAt':new Date()[_0x2f659c(0x16c)](),'planLockedAt':new Date()[_0x2f659c(0x16c)](),'lastUpdated':new Date()['toISOString'](),'activeTask':null,'taskFiles':o[_0x2f659c(0x16b)](_0x42b5c2=>({'id':_0x42b5c2['id'],'title':_0x42b5c2[_0x2f659c(0x1b4)],'status':'pending','file':a+'/'+_0x42b5c2['id']+_0x2f659c(0x1bf)})),'statistics':{'totalTasks':o[_0x2f659c(0x1b2)],'pending':o[_0x2f659c(0x1b2)],'inProgress':0x0,'completed':0x0,'blocked':0x0}},m=i[_0x2f659c(0x165)](r,'TASK-TRACKER.json');t['writeFileSync'](m,JSON[_0x2f659c(0x19f)](S,null,0x2)),console[_0x2f659c(0x1c4)]('\x0a✅\x20Task\x20tracker\x20created:\x20'+m),console[_0x2f659c(0x1c4)](_0x2f659c(0x16f)+o[_0x2f659c(0x1b2)]+_0x2f659c(0x1b5)),console[_0x2f659c(0x1c4)](_0x2f659c(0x173)),console[_0x2f659c(0x1c4)](_0x2f659c(0x16e)),console['log'](_0x2f659c(0x166)),console[_0x2f659c(0x1c4)]('\x20\x203.\x20View\x20status:\x20npm\x20run\x20task:status\x0a'),n[_0x2f659c(0x158)]=!0x0,n[_0x2f659c(0x15f)]=new Date()[_0x2f659c(0x16c)](),t['writeFileSync'](d,JSON[_0x2f659c(0x19f)](n,null,0x2));var f=i['join'](r,'.plan-locked');t[_0x2f659c(0x1ad)](f,new Date()[_0x2f659c(0x16c)]()),t['writeFileSync'](p,l),console[_0x2f659c(0x1c4)](_0x2f659c(0x175)+l+_0x2f659c(0x181)),process[_0x2f659c(0x171)](0x0);
|