@proletariat/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Chris McDermut
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,283 @@
1
+ # ⚒️ PROLETARIAT CLI
2
+
3
+ > **Multi-Agent Development Orchestrator**
4
+ > *Orchestrate parallel coding agents through git worktrees - each agent works independently on features, bugs, or experiments*
5
+
6
+ 🚩 **Transform your development workflow with autonomous coding agents working in parallel!** 🚩
7
+
8
+ ---
9
+
10
+ ## 💰 What Is This?
11
+
12
+ **PROLETARIAT CLI** orchestrates multiple coding agents working in parallel on your codebase. Each agent is an independent git worktree that can:
13
+
14
+ - 🤖 **Work autonomously** on different features, bugs, or experiments simultaneously
15
+ - 🔀 **Operate in isolation** without conflicts between agents
16
+ - 🎯 **Focus on specific tasks** while maintaining clean separation of concerns
17
+
18
+ Using memorable themes, you manage your agent workforce:
19
+ - 💰 **Billionaires** become your coding workforce (Bezos, Musk, Gates)
20
+ - 🚗 **Toyotas** drive your development forward (Prius, Tacoma, Tundra)
21
+ - 🏢 **Companies** form your development portfolio (Apple, Google, Microsoft)
22
+
23
+ Each agent operates independently via git worktrees, enabling true parallel development workflows!
24
+
25
+ ---
26
+
27
+ ## 🎯 Core Features
28
+
29
+ ### ⚡ **Zero Configuration**
30
+ Just `prlt init` and you're ready to go. Zero configuration required.
31
+
32
+ ### 🎨 **Three Fun Themes**
33
+ - **💰 Billionaires**: Hire/fire billionaire workers in `../project-staff/`
34
+ - **🚗 Cars**: Drive/park cars in your `../project-garage/`
35
+ - **🏢 Companies**: Buy/sell companies in your `../project-portfolio/`
36
+
37
+ ### 🔀 **Agent-Based Development**
38
+ Each coding agent is a clean git worktree on its own branch, working independently and in parallel with other agents.
39
+
40
+ ---
41
+
42
+ ## 🚀 Quick Start
43
+
44
+ ```bash
45
+ # Install
46
+ npm install -g @proletariat/cli
47
+
48
+ # Initialize with interactive theme selection
49
+ cd your-project
50
+ prlt init # Prompts you to choose: billionaires, toyotas, or companies
51
+
52
+ # Create worktrees with themed commands
53
+ prlt hire bezos musk # Billionaires theme
54
+ prlt drive tesla prius # Cars theme
55
+ prlt buy apple microsoft # Companies theme
56
+
57
+ # Check status
58
+ prlt staff # Billionaires theme
59
+ prlt garage # Cars theme
60
+ prlt portfolio # Companies theme
61
+
62
+ # Remove worktrees
63
+ prlt fire gates # Billionaires theme
64
+ prlt park honda # Cars theme
65
+ prlt sell nvidia # Companies theme
66
+ ```
67
+
68
+ ### 🏗️ Flexible Agent Workspace Layouts
69
+
70
+ **Default Layout** - Agents as siblings to your project:
71
+ ```
72
+ parent-dir/
73
+ ├── your-project/ (main codebase)
74
+ ├── your-project-staff/ (billionaire agents)
75
+ ├── your-project-garage/ (toyota agents)
76
+ └── your-project-portfolio/ (company agents)
77
+ ```
78
+
79
+ **Workspace Layout** - Group project and agents under one parent directory:
80
+ ```bash
81
+ prlt init --workspace my-platform
82
+ # Creates: ../my-platform/project-name-staff/
83
+ # Optionally offers to move your repo to: ../my-platform/project-name/
84
+ ```
85
+
86
+ **Custom Location** - Point agents anywhere you want:
87
+ ```bash
88
+ prlt init --workspace-root ~/code/agents
89
+ # Creates agents in your specified directory
90
+ ```
91
+
92
+ ---
93
+
94
+ ## 💼 The Billionaire Experience
95
+
96
+ ```bash
97
+ $ prlt init
98
+ ⚒️ PROLETARIAT ⚒️
99
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100
+ 💰 Billionaire Staff 💰
101
+ ⚒️ Making billionaires work as your git worktrees!
102
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
103
+
104
+ $ prlt hire bezos musk
105
+ 💰 Hiring billionaire workers
106
+ 💰 BEZOS: Ready to work at ../your-project-staff/bezos
107
+ 💰 MUSK: Ready to work at ../your-project-staff/musk
108
+
109
+ $ prlt staff
110
+ 💰 Current billionaire staff
111
+ 💰 BEZOS: ✅ ACTIVE - ../your-project-staff/bezos
112
+ 📝 Branch: agent/bezos/work
113
+ 💰 MUSK: ✅ ACTIVE - ../your-project-staff/musk
114
+ 📝 Branch: agent/musk/work
115
+
116
+ Workers of the codebase, unite! ✊
117
+ ```
118
+
119
+ ---
120
+
121
+ ## 🎨 Choose Your Theme
122
+
123
+ ### 💰 Billionaires (Default)
124
+ Make the ultra-wealthy work for YOU!
125
+
126
+ ```bash
127
+ prlt init --theme=billionaires
128
+ prlt hire bezos musk gates buffett
129
+ prlt fire zuckerberg # You're fired!
130
+ prlt staff # Check your workers
131
+ ```
132
+
133
+ **Agents**: altman, amodei, andreesen, arnault, bezos, blakely, bloomberg, branson, brin, buffett, cook, ellison, gates, horowitz, jobs, ma, munger, musk, nadella, oprah, page, perkins, swift, whitney, wojcicki, zuckerberg
134
+ **Directory**: `../[project]-staff/`
135
+
136
+ ### 🚗 Toyotas
137
+ Manufacturing's finest keeping your fleet humming.
138
+
139
+ ```bash
140
+ prlt init --theme=toyotas
141
+ prlt drive prius tacoma
142
+ prlt park 4runner # Back to the bay
143
+ prlt garage # Check your fleet
144
+ ```
145
+
146
+ **Agents**: 4runner, camry, fj40, highlander, hilux, ironpig, landcruiser, prius, sierra, tacoma, tercel, troopy, tundra
147
+ **Directory**: `../[project]-garage/`
148
+
149
+ ### 🏢 Companies
150
+ Let the Fortune 500 take orders from you.
151
+
152
+ ```bash
153
+ prlt init --theme=companies
154
+ prlt buy adobe amazon apple
155
+ prlt sell netflix # Trim the overperformer
156
+ prlt portfolio # Check your holdings
157
+ ```
158
+
159
+ **Agents**: adobe, amazon, apple, atlassian, cisco, google, ibm, meta, microsoft, netflix, nvidia, oracle, shopify, snowflake, tesla, zoom
160
+ **Directory**: `../[project]-portfolio/`
161
+
162
+ ---
163
+
164
+ ## 📚 Command Reference
165
+
166
+ | Theme | Create | Remove | Status | Directory |
167
+ |-------|--------|--------|--------|-----------|
168
+ | **💰 Billionaires** | `hire` | `fire` | `staff` | `../project-staff/` |
169
+ | **🚗 Cars** | `drive` | `park` | `garage` | `../project-garage/` |
170
+ | **🏢 Companies** | `buy` | `sell` | `portfolio` | `../project-portfolio/` |
171
+
172
+ ### Universal Commands
173
+ - `prlt init [--theme=cars]` - Initialize with theme
174
+ - `prlt init --workspace <name>` - Optional workspace layout
175
+ - `prlt init --workspace-root <path>` - Use a custom agent directory
176
+ - `prlt list [--theme=cars]` - List available agents
177
+ - `prlt themes` - Show all themes
178
+
179
+ ---
180
+
181
+ ## 🛠️ How It Works
182
+
183
+ 1. **Initialize**: Choose your theme, creates `../project-[directory]/`
184
+ 2. **Create**: `git worktree add -b "agent/[name]/work" ../project-[directory]/[name]`
185
+ 3. **Track**: Saves active agents in `.proletariat/config.json`
186
+ 4. **Work**: Each agent is a persistent workspace - a complete copy of your repo where you can switch between any feature branches
187
+ 5. **Remove**: `git worktree remove` and clean up tracking
188
+
189
+ **That's it!** Simple and clean.
190
+
191
+ If you chose a workspace or custom location, the layout details are stored in `.proletariat/config.json` so future commands know where to work.
192
+
193
+ ---
194
+
195
+ ## 🎯 Multi-Agent Workflow
196
+
197
+ ```bash
198
+ # Deploy multiple agents to work on different tasks
199
+ prlt hire bezos musk gates
200
+
201
+ # Agent 1: Bezos tackles the checkout feature
202
+ cd ../your-project-staff/bezos
203
+ git checkout -b feat/checkout-flow
204
+ # ... autonomous development
205
+
206
+ # Agent 2: Musk implements AI search
207
+ cd ../your-project-staff/musk
208
+ git checkout -b feat/ai-search
209
+ # ... parallel development
210
+
211
+ # Agent 3: Gates fixes security issues
212
+ cd ../your-project-staff/gates
213
+ git checkout -b fix/security-patches
214
+ # ... independent work
215
+
216
+ # Orchestrate: Merge all agent work
217
+ cd ../your-project
218
+ git merge feat/checkout-flow # Integrate Bezos's work
219
+ git merge feat/ai-search # Integrate Musk's work
220
+ git merge fix/security-patches # Integrate Gates's work
221
+ ```
222
+
223
+ ---
224
+
225
+ ## 🌟 Why Multi-Agent Development?
226
+
227
+ ### ❌ **Traditional Single-Thread Development**
228
+ ```bash
229
+ # Work on one thing at a time
230
+ git checkout -b feature-1
231
+ # ... work ...
232
+ git checkout main
233
+ git checkout -b feature-2
234
+ # Context switching, stashing, conflicts...
235
+ ```
236
+
237
+ ### ✅ **Multi-Agent Parallel Development**
238
+ ```bash
239
+ # Deploy agents to work simultaneously
240
+ prlt hire bezos musk gates
241
+
242
+ # Three agents, three features, zero conflicts
243
+ prlt staff
244
+ # 💰 BEZOS: ✅ Working on checkout-flow
245
+ # 💰 MUSK: ✅ Building AI search
246
+ # 💰 GATES: ✅ Fixing security issues
247
+ ```
248
+
249
+ **True parallel development with memorable agent management!** 🎉
250
+
251
+ ---
252
+
253
+
254
+ ## 🏆 Perfect For
255
+
256
+ - **Parallel Feature Development** - Multiple agents work on different features simultaneously
257
+ - **AI-Assisted Coding** - Each agent can be powered by different AI tools or prompts
258
+ - **Distributed Bug Fixing** - Deploy agents to tackle multiple bugs in parallel
259
+ - **Experimentation** - Agents explore different solutions independently
260
+ - **Code Reviews** - Each agent's work is isolated and easy to review
261
+ - **Team Collaboration** - Assign real team members to specific agents
262
+
263
+ ---
264
+
265
+ ## 📜 License
266
+
267
+ MIT License - Because even revolutionaries believe in open source!
268
+
269
+ ---
270
+
271
+ <div align="center">
272
+
273
+ **🚩 WORKERS OF THE CODEBASE, UNITE! ✊**
274
+
275
+ *The simplest, most fun git worktree manager in existence!*
276
+
277
+ [![npm version](https://badge.fury.io/js/@proletariat/cli.svg)](https://badge.fury.io/js/@proletariat/cli)
278
+ [![Downloads](https://img.shields.io/npm/dm/@proletariat/cli.svg)](https://npmjs.org/package/@proletariat/cli)
279
+ [![Revolutionary](https://img.shields.io/badge/git--worktree-themed-red.svg)](https://github.com/proletariat-dev/proletariat)
280
+
281
+ **[⭐ Star on GitHub](https://github.com/proletariat-dev/proletariat) • [📦 Install from NPM](https://www.npmjs.com/package/@proletariat/cli) • [🐛 Report Issues](https://github.com/proletariat-dev/proletariat/issues)**
282
+
283
+ </div>
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 🚩 PROLETARIAT - Simple Themed Git Worktree Manager
4
+ * ⚒️ Making git worktrees fun with themed agents!
5
+ *
6
+ * Billionaires: "Workers of the codebase, unite!"
7
+ * Cars: "Start your engines!"
8
+ * Companies: "Time to make some acquisitions!"
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=prlt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prlt.d.ts","sourceRoot":"","sources":["../../src/bin/prlt.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * 🚩 PROLETARIAT - Simple Themed Git Worktree Manager
5
+ * ⚒️ Making git worktrees fun with themed agents!
6
+ *
7
+ * Billionaires: "Workers of the codebase, unite!"
8
+ * Cars: "Start your engines!"
9
+ * Companies: "Time to make some acquisitions!"
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const commander_1 = require("commander");
16
+ const chalk_1 = __importDefault(require("chalk"));
17
+ // Import modules
18
+ const index_js_1 = require("../lib/themes/index.js");
19
+ const index_js_2 = require("../lib/worktree/index.js");
20
+ const helpers_js_1 = require("../lib/utils/helpers.js");
21
+ const logger_js_1 = require("../lib/utils/logger.js");
22
+ const program = new commander_1.Command();
23
+ // Get themes for CLI setup
24
+ const THEMES = (0, index_js_1.getAllThemes)();
25
+ // CLI Program setup
26
+ program
27
+ .name('prlt')
28
+ .description('⚒️ Simple Themed Git Worktree Manager')
29
+ .version('2.0.0');
30
+ program
31
+ .command('init')
32
+ .description('🚩 Initialize themed worktree management')
33
+ .option('-t, --theme <theme>', 'theme (billionaires, cars, companies)')
34
+ .option('--workspace <name>', 'Create a workspace directory (e.g. acme-project) to hold the repo and agents')
35
+ .option('--workspace-root <path>', 'Explicit path where agent worktrees should live')
36
+ .action(async (options) => {
37
+ await (0, index_js_2.initProject)(options);
38
+ });
39
+ // Dynamic theme commands
40
+ Object.values(THEMES).forEach(theme => {
41
+ program
42
+ .command(`${theme.commands.create} <agents...>`)
43
+ .description(`${theme.emoji} Create worktrees for ${theme.name} agents`)
44
+ .action(async (agents) => {
45
+ await (0, index_js_2.createWorktrees)(agents);
46
+ });
47
+ program
48
+ .command(`${theme.commands.remove} <agents...>`)
49
+ .description(`${theme.emoji} Remove worktrees for ${theme.name} agents`)
50
+ .action(async (agents) => {
51
+ await (0, index_js_2.removeWorktrees)(agents);
52
+ });
53
+ program
54
+ .command(theme.commands.list)
55
+ .description(`${theme.emoji} Show active ${theme.name} agents`)
56
+ .action(() => {
57
+ (0, index_js_2.showStatus)();
58
+ });
59
+ });
60
+ program
61
+ .command('list')
62
+ .description('📋 List available agents for a theme')
63
+ .option('-t, --theme <theme>', 'theme to list agents for')
64
+ .action((options) => (0, helpers_js_1.listAgents)(options));
65
+ program
66
+ .command('themes')
67
+ .description('🎨 List available themes')
68
+ .action(() => (0, helpers_js_1.listThemes)());
69
+ // Parse command line arguments
70
+ program.parse(process.argv);
71
+ // Show help if no command provided
72
+ if (!process.argv.slice(2).length) {
73
+ const theme = THEMES.billionaires;
74
+ (0, logger_js_1.showBanner)(theme);
75
+ program.outputHelp();
76
+ console.log(chalk_1.default.yellow('\n💡 Start with: prlt init'));
77
+ console.log(chalk_1.default.cyan('💡 Simple themed git worktree management! ⚒️\n'));
78
+ }
79
+ //# sourceMappingURL=prlt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prlt.js","sourceRoot":"","sources":["../../src/bin/prlt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Theme, ProjectConfig, InitOptions, WorkspaceLayout } from '../../types/index.js';
2
+ export declare function getProjectRoot(): string;
3
+ export declare function getProjectName(): string;
4
+ export declare function getConfigPath(): string;
5
+ export interface WorkspaceResolution {
6
+ workspaceDir: string;
7
+ layout: WorkspaceLayout;
8
+ }
9
+ export declare function resolveWorkspace(theme: Theme, options?: InitOptions): WorkspaceResolution;
10
+ export declare function isInitialized(): boolean;
11
+ export declare function loadConfig(): ProjectConfig;
12
+ export declare function saveConfig(configData: ProjectConfig): void;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1F,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,WAAgB,GAAG,mBAAmB,CA2B7F;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,UAAU,IAAI,aAAa,CAW1C;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CAS1D"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getProjectRoot = getProjectRoot;
37
+ exports.getProjectName = getProjectName;
38
+ exports.getConfigPath = getConfigPath;
39
+ exports.resolveWorkspace = resolveWorkspace;
40
+ exports.isInitialized = isInitialized;
41
+ exports.loadConfig = loadConfig;
42
+ exports.saveConfig = saveConfig;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const child_process_1 = require("child_process");
46
+ const index_js_1 = require("../themes/index.js");
47
+ function getProjectRoot() {
48
+ try {
49
+ return (0, child_process_1.execSync)('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();
50
+ }
51
+ catch (error) {
52
+ throw new Error('Not in a git repository! Proletariat requires version control.');
53
+ }
54
+ }
55
+ function getProjectName() {
56
+ const projectRoot = getProjectRoot();
57
+ return path.basename(projectRoot);
58
+ }
59
+ function getConfigPath() {
60
+ const projectRoot = getProjectRoot();
61
+ return path.join(projectRoot, '.proletariat', 'config.json');
62
+ }
63
+ function resolveWorkspace(theme, options = {}) {
64
+ const projectRoot = getProjectRoot();
65
+ const projectName = getProjectName();
66
+ const parentDir = path.dirname(projectRoot);
67
+ let mode = 'sibling';
68
+ let baseDir = parentDir;
69
+ let workspaceName;
70
+ let workspaceDir;
71
+ if (options.workspaceRoot) {
72
+ workspaceDir = path.resolve(projectRoot, options.workspaceRoot);
73
+ baseDir = path.dirname(workspaceDir);
74
+ mode = 'custom';
75
+ }
76
+ else if (options.workspace) {
77
+ workspaceName = options.workspace;
78
+ baseDir = path.join(parentDir, workspaceName);
79
+ workspaceDir = path.join(baseDir, `${projectName}-${theme.directory}`);
80
+ mode = 'workspace';
81
+ }
82
+ else {
83
+ workspaceDir = path.join(parentDir, `${projectName}-${theme.directory}`);
84
+ }
85
+ return {
86
+ workspaceDir,
87
+ layout: { mode, baseDir, workspaceName }
88
+ };
89
+ }
90
+ function isInitialized() {
91
+ return fs.existsSync(getConfigPath());
92
+ }
93
+ function loadConfig() {
94
+ if (!isInitialized()) {
95
+ throw new Error('Proletariat not initialized! Run `prlt init` first.');
96
+ }
97
+ const configPath = getConfigPath();
98
+ const rawConfig = JSON.parse(fs.readFileSync(configPath, 'utf8'));
99
+ return {
100
+ ...rawConfig,
101
+ theme: (0, index_js_1.getTheme)(rawConfig.themeName)
102
+ };
103
+ }
104
+ function saveConfig(configData) {
105
+ const configPath = getConfigPath();
106
+ const configDir = path.dirname(configPath);
107
+ if (!fs.existsSync(configDir)) {
108
+ fs.mkdirSync(configDir, { recursive: true });
109
+ }
110
+ fs.writeFileSync(configPath, JSON.stringify(configData, null, 2));
111
+ }
112
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wCAMC;AAED,wCAGC;AAED,sCAGC;AAOD,4CA2BC;AAED,sCAEC;AAED,gCAWC;AAED,gCASC;AApFD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,iDAA8C;AAG9C,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,OAAO,IAAA,wBAAQ,EAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAgB,cAAc;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAOD,SAAgB,gBAAgB,CAAC,KAAY,EAAE,UAAuB,EAAE;IACtE,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,IAAI,GAA4B,SAAS,CAAC;IAC9C,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,aAAiC,CAAC;IACtC,IAAI,YAAoB,CAAC;IAEzB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7B,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC9C,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,GAAG,WAAW,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,YAAY;QACZ,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,UAAU;IACxB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAkB,CAAC;IACnF,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,EAAE,IAAA,mBAAQ,EAAC,SAAS,CAAC,SAAS,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,UAAyB;IAClD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Theme, ThemeCollection } from '../../types/index.js';
2
+ declare const THEMES: ThemeCollection;
3
+ export declare function getTheme(themeName: string): Theme;
4
+ export declare function getAllThemes(): ThemeCollection;
5
+ export declare function getThemeNames(): string[];
6
+ export declare function isValidTheme(themeName: string): boolean;
7
+ export { THEMES };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9D,QAAA,MAAM,MAAM,EAAE,eA0Db,CAAC;AAEF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAEjD;AAED,wBAAgB,YAAY,IAAI,eAAe,CAE9C;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.THEMES = void 0;
4
+ exports.getTheme = getTheme;
5
+ exports.getAllThemes = getAllThemes;
6
+ exports.getThemeNames = getThemeNames;
7
+ exports.isValidTheme = isValidTheme;
8
+ const THEMES = {
9
+ billionaires: {
10
+ name: 'billionaires',
11
+ displayName: 'Billionaire Staff',
12
+ description: '⚒️ Put billionaires on payroll duty for your project.',
13
+ emoji: '💰',
14
+ directory: 'staff',
15
+ agents: ['altman', 'amodei', 'andreesen', 'arnault', 'bezos', 'blakely', 'bloomberg', 'branson', 'brin', 'buffett', 'cook', 'ellison', 'gates', 'horowitz', 'jobs', 'ma', 'munger', 'musk', 'nadella', 'oprah', 'page', 'perkins', 'swift', 'whitney', 'wojcicki', 'zuckerberg'],
16
+ commands: {
17
+ create: 'hire',
18
+ remove: 'fire',
19
+ list: 'staff'
20
+ },
21
+ messages: {
22
+ create: 'Putting billionaires on the payroll',
23
+ remove: 'Firing billionaires who slack off',
24
+ list: 'Current billionaire roll call',
25
+ slogan: 'They finally work for us.'
26
+ }
27
+ },
28
+ cars: {
29
+ name: 'toyotas',
30
+ displayName: 'Toyota Garage',
31
+ description: '🚗 Manufacturing\'s finest wrenching for your project.',
32
+ emoji: '🚗',
33
+ directory: 'garage',
34
+ agents: ['4runner', 'camry', 'fj40', 'highlander', 'hilux', 'ironpig', 'landcruiser', 'prius', 'sierra', 'tacoma', 'tercel', 'troopy', 'tundra'],
35
+ commands: {
36
+ create: 'drive',
37
+ remove: 'park',
38
+ list: 'garage'
39
+ },
40
+ messages: {
41
+ create: 'Rolling the fleet onto the line',
42
+ remove: 'Parking rigs back in the bay',
43
+ list: 'Fleet inventory',
44
+ slogan: 'The fleet that never breaks down.'
45
+ }
46
+ },
47
+ companies: {
48
+ name: 'companies',
49
+ displayName: 'Company Portfolio',
50
+ description: '🏢 Own the boardroom: your favorite companies now report to you.',
51
+ emoji: '🏢',
52
+ directory: 'portfolio',
53
+ agents: ['adobe', 'amazon', 'apple', 'atlassian', 'cisco', 'google', 'ibm', 'meta', 'microsoft', 'netflix', 'nvidia', 'oracle', 'shopify', 'snowflake', 'tesla', 'zoom'],
54
+ commands: {
55
+ create: 'buy',
56
+ remove: 'sell',
57
+ list: 'portfolio'
58
+ },
59
+ messages: {
60
+ create: 'Closing fresh acquisitions',
61
+ remove: 'Cutting underperformers loose',
62
+ list: 'Portfolio under management',
63
+ slogan: 'Now they\re the consumer.'
64
+ }
65
+ }
66
+ };
67
+ exports.THEMES = THEMES;
68
+ function getTheme(themeName) {
69
+ return THEMES[themeName] || THEMES.billionaires;
70
+ }
71
+ function getAllThemes() {
72
+ return THEMES;
73
+ }
74
+ function getThemeNames() {
75
+ return Object.keys(THEMES);
76
+ }
77
+ function isValidTheme(themeName) {
78
+ return themeName in THEMES;
79
+ }
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/themes/index.ts"],"names":[],"mappings":";;;AA8DA,4BAEC;AAED,oCAEC;AAED,sCAEC;AAED,oCAEC;AA1ED,MAAM,MAAM,GAAoB;IAC9B,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,uDAAuD;QACpE,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;QAChR,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,qCAAqC;YAC7C,MAAM,EAAE,mCAAmC;YAC3C,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,2BAA2B;SACpC;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,wDAAwD;QACrE,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAChJ,QAAQ,EAAE;YACR,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,iCAAiC;YACzC,MAAM,EAAE,8BAA8B;YACtC,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,mCAAmC;SAC5C;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,kEAAkE;QAC/E,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;QACxK,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW;SAClB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,4BAA4B;YACpC,MAAM,EAAE,+BAA+B;YACvC,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,2BAA2B;SACpC;KACF;CACF,CAAC;AAkBO,wBAAM;AAhBf,SAAgB,QAAQ,CAAC,SAAiB;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;AAClD,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,SAAS,IAAI,MAAM,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ListOptions } from '../../types/index.js';
2
+ export declare function listAgents(options: ListOptions): void;
3
+ export declare function listThemes(): void;
4
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAqBrD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAWjC"}
@@ -0,0 +1,39 @@
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.listAgents = listAgents;
7
+ exports.listThemes = listThemes;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const index_js_1 = require("../themes/index.js");
10
+ function listAgents(options) {
11
+ const themeName = options.theme || 'billionaires';
12
+ const themes = (0, index_js_1.getAllThemes)();
13
+ const theme = themes[themeName];
14
+ if (!theme) {
15
+ console.log(chalk_1.default.red('❌'), `Theme '${themeName}' not found!`);
16
+ console.log(chalk_1.default.blue('ℹ️'), `Available themes: ${Object.keys(themes).join(', ')}`);
17
+ return;
18
+ }
19
+ console.log(chalk_1.default.blue(`\n${theme.emoji} Available ${theme.displayName} Agents:\n`));
20
+ theme.agents.forEach(agent => {
21
+ console.log(` ${chalk_1.default.green(agent)}`);
22
+ });
23
+ console.log('\n' + chalk_1.default.yellow('Usage Examples:'));
24
+ console.log(` prlt ${theme.commands.create} ${theme.agents.slice(0, 2).join(' ')}`);
25
+ console.log(` prlt ${theme.commands.remove} ${theme.agents[0]}`);
26
+ console.log(` prlt ${theme.commands.list}`);
27
+ }
28
+ function listThemes() {
29
+ console.log(chalk_1.default.blue('\n🎨 Available Themes:\n'));
30
+ const themes = (0, index_js_1.getAllThemes)();
31
+ Object.values(themes).forEach(theme => {
32
+ console.log(`${chalk_1.default.green(theme.emoji)} ${chalk_1.default.bold(theme.name)}`);
33
+ console.log(` ${theme.description}`);
34
+ console.log(` Commands: ${theme.commands.create}, ${theme.commands.remove}, ${theme.commands.list}`);
35
+ console.log(` Agents: ${theme.agents.slice(0, 4).join(', ')}...`);
36
+ console.log('');
37
+ });
38
+ }
39
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/utils/helpers.ts"],"names":[],"mappings":";;;;;AAIA,gCAqBC;AAED,gCAWC;AAtCD,kDAA0B;AAC1B,iDAAkD;AAGlD,SAAgB,UAAU,CAAC,OAAoB;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,uBAAY,GAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,SAAS,cAAc,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,cAAc,KAAK,CAAC,WAAW,YAAY,CAAC,CAAC,CAAC;IAErF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAA,uBAAY,GAAE,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Theme, Logger } from '../../types/index.js';
2
+ export declare const log: Logger;
3
+ export declare function showBanner(theme: Theme): void;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,GAAG,EAAE,MASjB,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAQ7C"}
@@ -0,0 +1,28 @@
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.log = void 0;
7
+ exports.showBanner = showBanner;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ exports.log = {
10
+ theme: (theme, msg) => console.log(chalk_1.default.cyan(`${theme.emoji}`), chalk_1.default.bold(msg)),
11
+ success: (msg) => console.log(chalk_1.default.green('✅'), msg),
12
+ warning: (msg) => console.log(chalk_1.default.yellow('⚠️'), msg),
13
+ error: (msg) => console.log(chalk_1.default.red('❌'), msg),
14
+ info: (msg) => console.log(chalk_1.default.blue('ℹ️'), msg),
15
+ agent: (agent, msg, theme) => {
16
+ console.log(chalk_1.default.cyan(`${theme.emoji} ${agent.toUpperCase()}:`), msg);
17
+ }
18
+ };
19
+ function showBanner(theme) {
20
+ console.log(`
21
+ ${chalk_1.default.red('⚒️ PROLETARIAT ⚒️')}
22
+ ${chalk_1.default.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
23
+ ${chalk_1.default.green(`${theme.emoji} ${theme.displayName} ${theme.emoji}`)}
24
+ ${chalk_1.default.cyan(theme.description)}
25
+ ${chalk_1.default.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
26
+ `);
27
+ }
28
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/lib/utils/logger.ts"],"names":[],"mappings":";;;;;;AAcA,gCAQC;AAtBD,kDAA0B;AAGb,QAAA,GAAG,GAAW;IACzB,KAAK,EAAE,CAAC,KAAY,EAAE,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtG,OAAO,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAClE,OAAO,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IACpE,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAC/D,KAAK,EAAE,CAAC,KAAa,EAAE,GAAW,EAAE,KAAY,EAAQ,EAAE;QACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;CACF,CAAC;AAEF,SAAgB,UAAU,CAAC,KAAY;IACrC,OAAO,CAAC,GAAG,CAAC;EACZ,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;EAC/B,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC;EAC5D,eAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;EACjE,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;EAC7B,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC;CAC7D,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { InitOptions, ProjectConfig } from '../../types/index.js';
2
+ export declare function initProject(options: InitOptions): Promise<ProjectConfig | void>;
3
+ export declare function createWorktrees(agents: string[]): Promise<ProjectConfig | void>;
4
+ export declare function removeWorktrees(agents: string[]): Promise<ProjectConfig | void>;
5
+ export declare function showStatus(): ProjectConfig | void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/worktree/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAS,MAAM,sBAAsB,CAAC;AAEzE,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwKrF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwErF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqDrF;AAED,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAqDjD"}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.initProject = initProject;
40
+ exports.createWorktrees = createWorktrees;
41
+ exports.removeWorktrees = removeWorktrees;
42
+ exports.showStatus = showStatus;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const child_process_1 = require("child_process");
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const inquirer_1 = __importDefault(require("inquirer"));
48
+ const index_js_1 = require("../themes/index.js");
49
+ const index_js_2 = require("../config/index.js");
50
+ const logger_js_1 = require("../utils/logger.js");
51
+ async function initProject(options) {
52
+ const projectRoot = (0, index_js_2.getProjectRoot)();
53
+ const projectName = (0, index_js_2.getProjectName)();
54
+ if ((0, index_js_2.isInitialized)()) {
55
+ logger_js_1.log.warning(`Proletariat already initialized for ${projectName}!`);
56
+ const config = (0, index_js_2.loadConfig)();
57
+ if (config.theme) {
58
+ (0, logger_js_1.showBanner)(config.theme);
59
+ }
60
+ return config;
61
+ }
62
+ let themeName = options.theme || 'billionaires';
63
+ // Interactive theme selection if no theme specified
64
+ if (!options.theme) {
65
+ const themes = (0, index_js_1.getAllThemes)();
66
+ const themeChoices = Object.values(themes).map(t => ({
67
+ name: `${t.emoji} ${t.displayName} - ${t.description}`,
68
+ value: t.name
69
+ }));
70
+ const answers = await inquirer_1.default.prompt([
71
+ {
72
+ type: 'list',
73
+ name: 'theme',
74
+ message: 'Choose your worktree theme:',
75
+ choices: themeChoices
76
+ }
77
+ ]);
78
+ themeName = answers.theme;
79
+ }
80
+ if (!(0, index_js_1.isValidTheme)(themeName)) {
81
+ logger_js_1.log.error(`Theme '${themeName}' not found!`);
82
+ logger_js_1.log.info(`Available themes: ${(0, index_js_1.getThemeNames)().join(', ')}`);
83
+ return;
84
+ }
85
+ const themes = (0, index_js_1.getAllThemes)();
86
+ const theme = themes[themeName];
87
+ const resolvedOptions = { ...options };
88
+ if (!resolvedOptions.workspaceRoot && !resolvedOptions.workspace) {
89
+ const { layoutChoice } = await inquirer_1.default.prompt([{
90
+ type: 'list',
91
+ name: 'layoutChoice',
92
+ message: 'Where should agent worktrees live?',
93
+ choices: [
94
+ { name: 'Keep them alongside this repo (../project-staff)', value: 'sibling' },
95
+ { name: 'Create a workspace directory to hold everything', value: 'workspace' },
96
+ { name: 'Use a custom path', value: 'custom' }
97
+ ]
98
+ }]);
99
+ if (layoutChoice === 'workspace') {
100
+ const { workspaceName } = await inquirer_1.default.prompt([{
101
+ type: 'input',
102
+ name: 'workspaceName',
103
+ message: 'Workspace directory name (tip: use your company or product name):',
104
+ default: `${projectName}-workspace`,
105
+ validate: (input) => input.trim().length ? true : 'Please provide a directory name.'
106
+ }]);
107
+ resolvedOptions.workspace = workspaceName.trim();
108
+ }
109
+ else if (layoutChoice === 'custom') {
110
+ const { workspaceRoot } = await inquirer_1.default.prompt([{
111
+ type: 'input',
112
+ name: 'workspaceRoot',
113
+ message: 'Path for agent worktrees (relative or absolute):',
114
+ default: `../${projectName}-staff`,
115
+ validate: (input) => input.trim().length ? true : 'Please provide a path.'
116
+ }]);
117
+ resolvedOptions.workspaceRoot = workspaceRoot.trim();
118
+ }
119
+ }
120
+ const { workspaceDir, layout } = (0, index_js_2.resolveWorkspace)(theme, resolvedOptions);
121
+ const configData = {
122
+ version: '2.0.0',
123
+ projectName,
124
+ themeName: theme.name,
125
+ workspaceDir,
126
+ activeAgents: [],
127
+ initialized: new Date().toISOString(),
128
+ layout
129
+ };
130
+ (0, index_js_2.saveConfig)(configData);
131
+ (0, logger_js_1.showBanner)(theme);
132
+ logger_js_1.log.theme(theme, `Initializing ${projectName} with ${theme.displayName} theme...`);
133
+ if (layout.mode === 'workspace' && !fs.existsSync(layout.baseDir)) {
134
+ fs.mkdirSync(layout.baseDir, { recursive: true });
135
+ logger_js_1.log.success(`Created workspace directory: ${layout.baseDir}`);
136
+ }
137
+ if (!fs.existsSync(workspaceDir)) {
138
+ fs.mkdirSync(workspaceDir, { recursive: true });
139
+ logger_js_1.log.success(`Created workspace: ${workspaceDir}`);
140
+ }
141
+ else {
142
+ logger_js_1.log.info(`Using existing workspace: ${workspaceDir}`);
143
+ }
144
+ if (layout.mode === 'workspace') {
145
+ const targetRepoPath = path.join(layout.baseDir, projectName);
146
+ if (path.resolve(projectRoot) !== path.resolve(targetRepoPath)) {
147
+ logger_js_1.log.info(`💡 Recommended: place this repository inside ${targetRepoPath} so your company workspace contains both the source repo and its agents.`);
148
+ const { moveNow } = await inquirer_1.default.prompt([
149
+ {
150
+ type: 'confirm',
151
+ name: 'moveNow',
152
+ message: `Move the current repository into ${targetRepoPath}?`,
153
+ default: false
154
+ }
155
+ ]);
156
+ if (moveNow) {
157
+ try {
158
+ const status = (0, child_process_1.execSync)('git status --porcelain', { cwd: projectRoot, encoding: 'utf8' }).trim();
159
+ if (status.length > 0) {
160
+ logger_js_1.log.warning('Cannot move repository: working tree has uncommitted changes. Commit or stash first.');
161
+ }
162
+ else {
163
+ if (!fs.existsSync(layout.baseDir)) {
164
+ fs.mkdirSync(layout.baseDir, { recursive: true });
165
+ }
166
+ const repoName = path.basename(projectRoot);
167
+ const destination = path.join(layout.baseDir, repoName);
168
+ if (fs.existsSync(destination)) {
169
+ logger_js_1.log.error(`Destination ${destination} already exists. Move aborted.`);
170
+ }
171
+ else {
172
+ fs.renameSync(projectRoot, destination);
173
+ logger_js_1.log.success(`Repository moved to ${destination}`);
174
+ logger_js_1.log.success('Proletariat initialized!');
175
+ logger_js_1.log.info('Please open a new shell and run prlt commands from the moved path.');
176
+ return { ...configData, theme };
177
+ }
178
+ }
179
+ }
180
+ catch (error) {
181
+ const message = error instanceof Error ? error.message : String(error);
182
+ logger_js_1.log.error(`Failed to move repository: ${message}`);
183
+ }
184
+ }
185
+ else {
186
+ logger_js_1.log.info('You can move the repository later; worktrees will still be created in the workspace directory.');
187
+ }
188
+ }
189
+ }
190
+ if (layout.mode === 'custom') {
191
+ logger_js_1.log.info(`Custom workspace path in use: ${workspaceDir}`);
192
+ }
193
+ logger_js_1.log.success('Proletariat initialized!');
194
+ logger_js_1.log.info(`Available agents: ${theme.agents.join(', ')}`);
195
+ logger_js_1.log.theme(theme, 'Next steps:');
196
+ console.log(` prlt ${theme.commands.create} ${theme.agents.slice(0, 2).join(' ')} # Create worktrees`);
197
+ console.log(` prlt ${theme.commands.list} # Show status`);
198
+ console.log(`
199
+ ${chalk_1.default.cyan(theme.messages.slogan)}`);
200
+ return { ...configData, theme };
201
+ }
202
+ async function createWorktrees(agents) {
203
+ if (!(0, index_js_2.isInitialized)()) {
204
+ logger_js_1.log.error('Proletariat not initialized! Run `prlt init` first.');
205
+ return;
206
+ }
207
+ const config = (0, index_js_2.loadConfig)();
208
+ const currentTheme = config.theme;
209
+ if (!currentTheme) {
210
+ logger_js_1.log.error('Theme not found in configuration!');
211
+ return;
212
+ }
213
+ if (agents.length === 0) {
214
+ logger_js_1.log.error(`Usage: prlt ${currentTheme.commands.create} <agent1> [agent2] ...`);
215
+ logger_js_1.log.info(`Available agents: ${currentTheme.agents.join(', ')}`);
216
+ return;
217
+ }
218
+ (0, logger_js_1.showBanner)(currentTheme);
219
+ logger_js_1.log.theme(currentTheme, currentTheme.messages.create);
220
+ const validAgents = agents.filter(agent => {
221
+ if (!currentTheme.agents.includes(agent)) {
222
+ logger_js_1.log.warning(`Agent '${agent}' not available in ${currentTheme.name} theme`);
223
+ return false;
224
+ }
225
+ return true;
226
+ });
227
+ if (validAgents.length === 0) {
228
+ logger_js_1.log.error('No valid agents specified!');
229
+ return;
230
+ }
231
+ for (const agent of validAgents) {
232
+ const agentPath = path.join(config.workspaceDir, agent);
233
+ try {
234
+ // Check if worktree already exists
235
+ const worktrees = (0, child_process_1.execSync)('git worktree list', { encoding: 'utf8' });
236
+ if (worktrees.includes(agentPath)) {
237
+ logger_js_1.log.agent(agent, `Already active at ${agentPath}`, currentTheme);
238
+ }
239
+ else {
240
+ // Create worktree with new branch from main
241
+ const branchName = `${agent}-workspace`;
242
+ (0, child_process_1.execSync)(`git worktree add -b "${branchName}" "${agentPath}" main`);
243
+ logger_js_1.log.agent(agent, `Ready to work at ${agentPath}`, currentTheme);
244
+ // Update config
245
+ if (!config.activeAgents.includes(agent)) {
246
+ config.activeAgents.push(agent);
247
+ }
248
+ }
249
+ }
250
+ catch (error) {
251
+ const errorMessage = error instanceof Error ? error.message : String(error);
252
+ logger_js_1.log.error(`Failed to create worktree for ${agent}: ${errorMessage}`);
253
+ }
254
+ }
255
+ // Save updated config
256
+ (0, index_js_2.saveConfig)({
257
+ ...config,
258
+ activeAgents: config.activeAgents
259
+ });
260
+ logger_js_1.log.theme(currentTheme, `${currentTheme.messages.create} complete!`);
261
+ logger_js_1.log.info(`Use 'prlt ${currentTheme.commands.list}' to see all active agents`);
262
+ return config;
263
+ }
264
+ async function removeWorktrees(agents) {
265
+ if (!(0, index_js_2.isInitialized)()) {
266
+ logger_js_1.log.error('Proletariat not initialized! Run `prlt init` first.');
267
+ return;
268
+ }
269
+ const config = (0, index_js_2.loadConfig)();
270
+ const currentTheme = config.theme;
271
+ if (!currentTheme) {
272
+ logger_js_1.log.error('Theme not found in configuration!');
273
+ return;
274
+ }
275
+ if (agents.length === 0) {
276
+ logger_js_1.log.error(`Usage: prlt ${currentTheme.commands.remove} <agent1> [agent2] ...`);
277
+ return;
278
+ }
279
+ (0, logger_js_1.showBanner)(currentTheme);
280
+ logger_js_1.log.theme(currentTheme, currentTheme.messages.remove);
281
+ for (const agent of agents) {
282
+ const agentPath = path.join(config.workspaceDir, agent);
283
+ try {
284
+ // Check if worktree exists
285
+ const worktrees = (0, child_process_1.execSync)('git worktree list', { encoding: 'utf8' });
286
+ if (worktrees.includes(agentPath)) {
287
+ (0, child_process_1.execSync)(`git worktree remove "${agentPath}"`);
288
+ logger_js_1.log.agent(agent, 'Worktree removed', currentTheme);
289
+ // Update config
290
+ config.activeAgents = config.activeAgents.filter(a => a !== agent);
291
+ }
292
+ else {
293
+ logger_js_1.log.warning(`Agent '${agent}' is not active`);
294
+ }
295
+ }
296
+ catch (error) {
297
+ const errorMessage = error instanceof Error ? error.message : String(error);
298
+ logger_js_1.log.error(`Failed to remove worktree for ${agent}: ${errorMessage}`);
299
+ }
300
+ }
301
+ // Save updated config
302
+ (0, index_js_2.saveConfig)({
303
+ ...config,
304
+ activeAgents: config.activeAgents
305
+ });
306
+ logger_js_1.log.theme(currentTheme, `${currentTheme.messages.remove} complete!`);
307
+ return config;
308
+ }
309
+ function showStatus() {
310
+ if (!(0, index_js_2.isInitialized)()) {
311
+ logger_js_1.log.error('Proletariat not initialized! Run `prlt init` first.');
312
+ return;
313
+ }
314
+ const config = (0, index_js_2.loadConfig)();
315
+ const currentTheme = config.theme;
316
+ if (!currentTheme) {
317
+ logger_js_1.log.error('Theme not found in configuration!');
318
+ return;
319
+ }
320
+ (0, logger_js_1.showBanner)(currentTheme);
321
+ logger_js_1.log.theme(currentTheme, currentTheme.messages.list);
322
+ try {
323
+ const worktrees = (0, child_process_1.execSync)('git worktree list', { encoding: 'utf8' });
324
+ console.log(chalk_1.default.blue(`\n📊 ${currentTheme.displayName}:\n`));
325
+ if (config.activeAgents.length === 0) {
326
+ console.log(chalk_1.default.dim('No active agents'));
327
+ }
328
+ else {
329
+ config.activeAgents.forEach(agent => {
330
+ const agentPath = path.join(config.workspaceDir, agent);
331
+ const isActive = worktrees.includes(agentPath);
332
+ if (isActive) {
333
+ logger_js_1.log.agent(agent, chalk_1.default.green('✅ ACTIVE') + ` - ${agentPath}`, currentTheme);
334
+ // Show current branch if possible
335
+ try {
336
+ const branch = (0, child_process_1.execSync)(`git -C "${agentPath}" branch --show-current`, { encoding: 'utf8' }).trim();
337
+ console.log(` ${chalk_1.default.dim('📝 Branch:')} ${branch}`);
338
+ }
339
+ catch (e) {
340
+ // Ignore branch detection errors
341
+ }
342
+ }
343
+ else {
344
+ logger_js_1.log.agent(agent, chalk_1.default.red('💤 INACTIVE') + ' - worktree missing', currentTheme);
345
+ }
346
+ });
347
+ }
348
+ console.log('\n' + chalk_1.default.yellow(`💡 Tip: Use 'prlt ${currentTheme.commands.create} <agent>' to add more agents`));
349
+ console.log(chalk_1.default.cyan(currentTheme.messages.slogan));
350
+ }
351
+ catch (error) {
352
+ const errorMessage = error instanceof Error ? error.message : String(error);
353
+ logger_js_1.log.error(`Failed to get status: ${errorMessage}`);
354
+ }
355
+ return config;
356
+ }
357
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/worktree/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export interface ThemeCommands {
2
+ create: string;
3
+ remove: string;
4
+ list: string;
5
+ }
6
+ export interface ThemeMessages {
7
+ create: string;
8
+ remove: string;
9
+ list: string;
10
+ slogan: string;
11
+ }
12
+ export interface Theme {
13
+ name: string;
14
+ displayName: string;
15
+ description: string;
16
+ emoji: string;
17
+ directory: string;
18
+ agents: string[];
19
+ commands: ThemeCommands;
20
+ messages: ThemeMessages;
21
+ }
22
+ export interface ThemeCollection {
23
+ [key: string]: Theme;
24
+ }
25
+ export interface WorkspaceLayout {
26
+ mode: 'sibling' | 'workspace' | 'custom';
27
+ baseDir: string;
28
+ workspaceName?: string;
29
+ }
30
+ export interface ProjectConfig {
31
+ version: string;
32
+ projectName: string;
33
+ themeName: string;
34
+ workspaceDir: string;
35
+ activeAgents: string[];
36
+ initialized: string;
37
+ theme?: Theme;
38
+ layout?: WorkspaceLayout;
39
+ }
40
+ export interface InitOptions {
41
+ theme?: string;
42
+ workspace?: string;
43
+ workspaceRoot?: string;
44
+ }
45
+ export interface ListOptions {
46
+ theme?: string;
47
+ }
48
+ export interface Logger {
49
+ theme: (theme: Theme, msg: string) => void;
50
+ success: (msg: string) => void;
51
+ warning: (msg: string) => void;
52
+ error: (msg: string) => void;
53
+ info: (msg: string) => void;
54
+ agent: (agent: string, msg: string, theme: Theme) => void;
55
+ }
56
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@proletariat/cli",
3
+ "version": "0.1.0",
4
+ "description": "Multi-agent development CLI - Orchestrate parallel coding agents via git worktrees with memorable themes for distributed development workflows",
5
+ "main": "dist/bin/prlt.js",
6
+ "bin": {
7
+ "prlt": "./dist/bin/prlt.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsc --watch",
12
+ "clean": "rm -rf dist",
13
+ "prepublishOnly": "pnpm run clean && pnpm run build",
14
+ "test": "echo \"Workers of the world, unite!\" && exit 0"
15
+ },
16
+ "keywords": [
17
+ "multi-agent",
18
+ "coding-agents",
19
+ "parallel-development",
20
+ "git",
21
+ "worktree",
22
+ "development",
23
+ "orchestration",
24
+ "distributed",
25
+ "themed",
26
+ "cli",
27
+ "workflow",
28
+ "automation"
29
+ ],
30
+ "author": "Chris McDermut <chris@mcdermut.com>",
31
+ "license": "MIT",
32
+ "engines": {
33
+ "node": ">=16.0.0"
34
+ },
35
+ "dependencies": {
36
+ "commander": "^11.0.0",
37
+ "chalk": "^4.1.2",
38
+ "inquirer": "^8.2.5"
39
+ },
40
+ "devDependencies": {
41
+ "@types/inquirer": "^8.2.6",
42
+ "@types/node": "^20.0.0",
43
+ "eslint": "^8.44.0",
44
+ "typescript": "^5.0.0"
45
+ },
46
+ "preferGlobal": true,
47
+ "files": [
48
+ "dist/",
49
+ "README.md",
50
+ "LICENSE"
51
+ ],
52
+ "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
53
+ }