myuru 0.1.0 → 0.2.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/README.md CHANGED
@@ -11,7 +11,7 @@ Multi-provider AI agent orchestrator. Coordinate Claude, GPT, and Gemini agents
11
11
  - **Council Mode**: Agents deliberate in a chatroom, then execute tasks together
12
12
  - **Session Persistence**: Agents maintain context across invocations
13
13
  - **Terminal Dashboard**: Real-time ANSI UI showing agent status
14
- - **Tier System**: Free (2 sequential agents) / Pro (5 concurrent + config packs, $29 one-time)
14
+ - **Concurrent Execution**: Run agents in parallel or sequentially
15
15
 
16
16
  ## Installation
17
17
 
@@ -85,11 +85,6 @@ Create `.myuru.json`:
85
85
  }
86
86
  ```
87
87
 
88
- ## Pricing
89
-
90
- **Free**: 2 sequential agents, basic reporting
91
- **Pro**: 5 concurrent agents, config packs, priority support — $29 one-time
92
-
93
88
  ## Requirements
94
89
 
95
90
  - Node.js >= 18
package/bin/myuru.js CHANGED
@@ -28,7 +28,7 @@ program
28
28
  .option('--provider <name>', 'Single provider: claude, openai, gemini', 'claude')
29
29
  .option('--model <name>', 'Model override')
30
30
  .option('--agents <n>', 'Number of builder agents', '2')
31
- .option('--pro', 'Enable Pro tier (concurrent execution, more agents)')
31
+ .option('--concurrent', 'Run agents concurrently instead of sequentially')
32
32
  .option('--budget <usd>', 'Max budget in USD')
33
33
  .option('--dry-run', 'Show what would run without executing')
34
34
  .action(async (opts) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myuru",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Multi-provider AI agent orchestrator. Coordinate Claude, GPT, and Gemini agents to build software in parallel.",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -4,8 +4,6 @@ const { createProvider } = require("../providers");
4
4
  const AgentRunner = require("../lib/agent-runner");
5
5
  const TaskDB = require("../lib/task-db");
6
6
  const Dashboard = require("../lib/dashboard");
7
- const { TierManager } = require("../lib/tiers");
8
-
9
7
  async function run(opts) {
10
8
  const cwd = process.cwd();
11
9
  const stateDir = path.join(cwd, ".myuru");
@@ -26,23 +24,13 @@ async function run(opts) {
26
24
  const agentCount = parseInt(opts.agents) || config.agents || 2;
27
25
  const budget = opts.budget || config.budget || "5";
28
26
  const maxTurns = config.maxTurns || 10;
29
- const isPro = opts.pro || false;
30
-
31
- // Tier enforcement
32
- const tier = new TierManager(isPro ? "PRO" : "FREE");
33
- const tierInfo = tier.info();
27
+ const concurrent = opts.concurrent || config.concurrent || false;
34
28
 
35
- console.log(`MyUru v0.1.0 | ${tierInfo.tier} tier | ${providerName}/${model}`);
36
- console.log(`Agents: ${agentCount} | Execution: ${tierInfo.concurrency}`);
29
+ const execMode = concurrent ? "concurrent" : "sequential";
30
+ console.log(`MyUru v0.1.0 | ${providerName}/${model}`);
31
+ console.log(`Agents: ${agentCount} | Execution: ${execMode}`);
37
32
  console.log("─".repeat(50));
38
33
 
39
- try {
40
- tier.enforceLimit(agentCount, isPro);
41
- } catch (err) {
42
- console.error(err.message);
43
- process.exit(1);
44
- }
45
-
46
34
  // Resolve task
47
35
  let task = opts.task;
48
36
  if (!task && opts.file) {
@@ -104,7 +92,7 @@ async function run(opts) {
104
92
  const running = agents.filter(a => a.busy).length;
105
93
  const done = agents.filter(a => a.invocationCount > 0 && !a.busy).length;
106
94
  return [
107
- `\x1b[36mMyUru\x1b[0m | ${providerName}/${model} | ${tierInfo.tier}`,
95
+ `\x1b[36mMyUru\x1b[0m | ${providerName}/${model} | ${execMode}`,
108
96
  `Task: ${task.substring(0, 60)}`,
109
97
  `Agents: ${running} running, ${done} done | ${elapsed}s elapsed`,
110
98
  "─".repeat(dashboard.cols),
@@ -140,11 +128,9 @@ async function run(opts) {
140
128
  };
141
129
 
142
130
  let results;
143
- if (isPro && agentCount > 1) {
144
- // Concurrent execution (PRO)
131
+ if (concurrent && agentCount > 1) {
145
132
  results = await Promise.all(agents.map((a, i) => runAgent(a, i)));
146
133
  } else {
147
- // Sequential execution (FREE)
148
134
  results = [];
149
135
  for (let i = 0; i < agents.length; i++) {
150
136
  results.push(await runAgent(agents[i], i));
package/src/index.js CHANGED
@@ -2,7 +2,6 @@ const AgentRunner = require("./lib/agent-runner");
2
2
  const TaskDB = require("./lib/task-db");
3
3
  const Dashboard = require("./lib/dashboard");
4
4
  const CouncilServer = require("./lib/council-server");
5
- const { TierManager, TIERS } = require("./lib/tiers");
6
5
  const { createProvider, ClaudeProvider, OpenAIProvider } = require("./providers");
7
6
 
8
7
  module.exports = {
@@ -10,8 +9,6 @@ module.exports = {
10
9
  TaskDB,
11
10
  Dashboard,
12
11
  CouncilServer,
13
- TierManager,
14
- TIERS,
15
12
  createProvider,
16
13
  ClaudeProvider,
17
14
  OpenAIProvider,
package/src/lib/tiers.js DELETED
@@ -1,76 +0,0 @@
1
- /**
2
- * Tier enforcement for MyUru.
3
- * FREE: 2 sequential agents. PRO: 5 concurrent + config packs.
4
- */
5
-
6
- const TIERS = {
7
- FREE: {
8
- name: "Free",
9
- maxAgents: 2,
10
- maxConcurrency: 1,
11
- configPacks: false,
12
- price: 0,
13
- },
14
- PRO: {
15
- name: "Pro",
16
- maxAgents: 5,
17
- maxConcurrency: 5,
18
- configPacks: true,
19
- price: 2900,
20
- },
21
- };
22
-
23
- class TierManager {
24
- constructor(tier = "FREE") {
25
- this.tier = TIERS[tier] || TIERS.FREE;
26
- }
27
-
28
- canRunAgents(count) {
29
- if (count > this.tier.maxAgents) {
30
- return {
31
- allowed: false,
32
- reason: `Tier "${this.tier.name}" allows max ${this.tier.maxAgents} agents. You requested ${count}.`,
33
- upgrade: `Upgrade to Pro ($29) for up to ${TIERS.PRO.maxAgents} agents.`,
34
- };
35
- }
36
- return { allowed: true };
37
- }
38
-
39
- canUseConcurrency() {
40
- if (this.tier.maxConcurrency === 1) {
41
- return {
42
- allowed: false,
43
- reason: "Free tier only supports sequential execution.",
44
- upgrade: "Upgrade to Pro ($29) for concurrent orchestration.",
45
- };
46
- }
47
- return { allowed: true };
48
- }
49
-
50
- enforceLimit(agentCount, concurrent = false) {
51
- const check = this.canRunAgents(agentCount);
52
- if (!check.allowed) throw new Error(`${check.reason}\n${check.upgrade}`);
53
-
54
- if (concurrent) {
55
- const concCheck = this.canUseConcurrency();
56
- if (!concCheck.allowed) {
57
- console.warn(` ${concCheck.reason} Running sequentially.`);
58
- return false;
59
- }
60
- return true;
61
- }
62
- return true;
63
- }
64
-
65
- info() {
66
- return {
67
- tier: this.tier.name,
68
- price: this.tier.price === 0 ? "Free" : `$${(this.tier.price / 100).toFixed(2)}`,
69
- maxAgents: this.tier.maxAgents,
70
- concurrency: this.tier.maxConcurrency > 1 ? "concurrent" : "sequential",
71
- configPacks: this.tier.configPacks,
72
- };
73
- }
74
- }
75
-
76
- module.exports = { TierManager, TIERS };