@wundam/orchex 1.0.0-rc.1
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 +65 -0
- package/README.md +332 -0
- package/bin/orchex.js +2 -0
- package/dist/artifacts.d.ts +132 -0
- package/dist/artifacts.js +832 -0
- package/dist/claude-executor.d.ts +31 -0
- package/dist/claude-executor.js +200 -0
- package/dist/commands.d.ts +36 -0
- package/dist/commands.js +264 -0
- package/dist/config.d.ts +100 -0
- package/dist/config.js +172 -0
- package/dist/context-builder.d.ts +46 -0
- package/dist/context-builder.js +506 -0
- package/dist/cost.d.ts +29 -0
- package/dist/cost.js +60 -0
- package/dist/execution-broadcaster.d.ts +18 -0
- package/dist/execution-broadcaster.js +17 -0
- package/dist/executors/base.d.ts +99 -0
- package/dist/executors/base.js +206 -0
- package/dist/executors/circuit-breaker.d.ts +36 -0
- package/dist/executors/circuit-breaker.js +109 -0
- package/dist/executors/deepseek-executor.d.ts +22 -0
- package/dist/executors/deepseek-executor.js +145 -0
- package/dist/executors/gemini-executor.d.ts +20 -0
- package/dist/executors/gemini-executor.js +176 -0
- package/dist/executors/index.d.ts +81 -0
- package/dist/executors/index.js +193 -0
- package/dist/executors/ollama-executor.d.ts +25 -0
- package/dist/executors/ollama-executor.js +184 -0
- package/dist/executors/openai-executor.d.ts +22 -0
- package/dist/executors/openai-executor.js +142 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +115 -0
- package/dist/intelligence/anti-pattern-detector.d.ts +117 -0
- package/dist/intelligence/anti-pattern-detector.js +327 -0
- package/dist/intelligence/budget-enforcer.d.ts +119 -0
- package/dist/intelligence/budget-enforcer.js +226 -0
- package/dist/intelligence/context-optimizer.d.ts +111 -0
- package/dist/intelligence/context-optimizer.js +282 -0
- package/dist/intelligence/cost-tracker.d.ts +114 -0
- package/dist/intelligence/cost-tracker.js +183 -0
- package/dist/intelligence/deliverable-extractor.d.ts +134 -0
- package/dist/intelligence/deliverable-extractor.js +909 -0
- package/dist/intelligence/dependency-inferrer.d.ts +87 -0
- package/dist/intelligence/dependency-inferrer.js +403 -0
- package/dist/intelligence/diagnostics.d.ts +25 -0
- package/dist/intelligence/diagnostics.js +36 -0
- package/dist/intelligence/error-analyzer.d.ts +7 -0
- package/dist/intelligence/error-analyzer.js +76 -0
- package/dist/intelligence/file-chunker.d.ts +15 -0
- package/dist/intelligence/file-chunker.js +64 -0
- package/dist/intelligence/fix-stream-manager.d.ts +59 -0
- package/dist/intelligence/fix-stream-manager.js +212 -0
- package/dist/intelligence/heuristics.d.ts +23 -0
- package/dist/intelligence/heuristics.js +124 -0
- package/dist/intelligence/learning-engine.d.ts +157 -0
- package/dist/intelligence/learning-engine.js +433 -0
- package/dist/intelligence/learning-feedback.d.ts +96 -0
- package/dist/intelligence/learning-feedback.js +202 -0
- package/dist/intelligence/pattern-analyzer.d.ts +35 -0
- package/dist/intelligence/pattern-analyzer.js +189 -0
- package/dist/intelligence/plan-parser.d.ts +124 -0
- package/dist/intelligence/plan-parser.js +498 -0
- package/dist/intelligence/planner.d.ts +29 -0
- package/dist/intelligence/planner.js +86 -0
- package/dist/intelligence/self-healer.d.ts +16 -0
- package/dist/intelligence/self-healer.js +84 -0
- package/dist/intelligence/slicing-metrics.d.ts +62 -0
- package/dist/intelligence/slicing-metrics.js +202 -0
- package/dist/intelligence/slicing-templates.d.ts +81 -0
- package/dist/intelligence/slicing-templates.js +420 -0
- package/dist/intelligence/split-suggester.d.ts +69 -0
- package/dist/intelligence/split-suggester.js +176 -0
- package/dist/intelligence/stream-generator.d.ts +90 -0
- package/dist/intelligence/stream-generator.js +452 -0
- package/dist/logger.d.ts +34 -0
- package/dist/logger.js +83 -0
- package/dist/logging.d.ts +5 -0
- package/dist/logging.js +38 -0
- package/dist/manifest.d.ts +56 -0
- package/dist/manifest.js +254 -0
- package/dist/metrics.d.ts +35 -0
- package/dist/metrics.js +75 -0
- package/dist/orchestrator.d.ts +35 -0
- package/dist/orchestrator.js +723 -0
- package/dist/ownership.d.ts +44 -0
- package/dist/ownership.js +250 -0
- package/dist/semaphore.d.ts +12 -0
- package/dist/semaphore.js +34 -0
- package/dist/telemetry/telemetry-types.d.ts +85 -0
- package/dist/telemetry/telemetry-types.js +1 -0
- package/dist/tier-gating.d.ts +24 -0
- package/dist/tier-gating.js +88 -0
- package/dist/tiers.d.ts +92 -0
- package/dist/tiers.js +108 -0
- package/dist/tools.d.ts +18 -0
- package/dist/tools.js +1363 -0
- package/dist/types.d.ts +740 -0
- package/dist/types.js +160 -0
- package/dist/utils/ownership-validator.d.ts +6 -0
- package/dist/utils/ownership-validator.js +21 -0
- package/dist/waves.d.ts +21 -0
- package/dist/waves.js +146 -0
- package/package.json +120 -0
package/dist/tiers.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Tier Definitions
|
|
4
|
+
// ============================================================================
|
|
5
|
+
export const TierIdSchema = z.enum(['free', 'pro', 'team', 'enterprise']);
|
|
6
|
+
export const TierSchema = z.object({
|
|
7
|
+
id: TierIdSchema,
|
|
8
|
+
name: z.string(),
|
|
9
|
+
price: z.number().describe('Monthly price in USD, -1 = contact sales'),
|
|
10
|
+
cloudOrchestrations: z.number().describe('Max cloud orchestrations per month, 0 = local only, -1 = unlimited'),
|
|
11
|
+
maxParallelAgents: z.number().describe('Max parallel agents'),
|
|
12
|
+
selfHealing: z.enum(['none', 'full']),
|
|
13
|
+
smartPlanning: z.enum(['none', 'full']),
|
|
14
|
+
teamMembers: z.number().describe('Max team members, 1 = solo, -1 = unlimited'),
|
|
15
|
+
/** Maximum # of dependency waves (-1 = unlimited) */
|
|
16
|
+
maxWaves: z.number().describe('Max dependency waves allowed. -1 = unlimited'),
|
|
17
|
+
/** Maximum # of distinct LLM providers per orchestration (-1 = unlimited) */
|
|
18
|
+
maxProviders: z.number().describe('Max LLM providers allowed per orchestration. -1 = unlimited'),
|
|
19
|
+
});
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Canonical tier definitions — 4-tier value-based pricing (2026-02-06)
|
|
22
|
+
// ============================================================================
|
|
23
|
+
//
|
|
24
|
+
// PRICING RATIONALE (Updated 2026-02-13 — charm pricing alignment):
|
|
25
|
+
// ------------------
|
|
26
|
+
// Cost Analysis:
|
|
27
|
+
// - Variable cost per orchestration: ~$0.006 (Fly.io per-second billing + storage)
|
|
28
|
+
// - Fixed infrastructure: ~$35-55/month (API server, PostgreSQL, monitoring)
|
|
29
|
+
// - LLM API costs: $0 (BYOK - user pays their own API costs)
|
|
30
|
+
//
|
|
31
|
+
// With BYOK and efficient infrastructure, margins are 93%+. We price for VALUE,
|
|
32
|
+
// not cost. Users save ~30 min per orchestration in time value.
|
|
33
|
+
//
|
|
34
|
+
// Value Calculation:
|
|
35
|
+
// - Time saved per orchestration: ~30 minutes (parallel execution, auto-apply, self-healing)
|
|
36
|
+
// - At $50/hr developer rate: ~$25 value per orchestration
|
|
37
|
+
// - Pro user (50 orchestrations): $1,250 potential value for $19 = 65x ROI
|
|
38
|
+
//
|
|
39
|
+
// Tier Design (5-tier model, code tracks 4 — Trial is a feature of Free):
|
|
40
|
+
// - Free: Funnel, local only, no cloud costs. $5 one-time cloud credit (30 days).
|
|
41
|
+
// - Pro ($19): Individual devs, freelancers - 100 orchestrations covers power users
|
|
42
|
+
// - Team ($49): Small teams (2-10) - shared quotas, org management, 500 runs
|
|
43
|
+
// - Enterprise: Custom - SLA, dedicated infra, custom integrations (compliance discussed in sales)
|
|
44
|
+
//
|
|
45
|
+
// Why 100 orchestrations for Pro:
|
|
46
|
+
// - Most users do 15-50/month (won't hit limit)
|
|
47
|
+
// - Power users (50-100/month) still comfortable
|
|
48
|
+
// - Heavy users (100+) naturally upgrade to Team
|
|
49
|
+
// ============================================================================
|
|
50
|
+
export const TIERS = {
|
|
51
|
+
free: {
|
|
52
|
+
id: 'free',
|
|
53
|
+
name: 'Free',
|
|
54
|
+
price: 0,
|
|
55
|
+
cloudOrchestrations: 0,
|
|
56
|
+
maxParallelAgents: 5,
|
|
57
|
+
selfHealing: 'none',
|
|
58
|
+
smartPlanning: 'none',
|
|
59
|
+
teamMembers: 1,
|
|
60
|
+
maxWaves: 2, // max dependency depth for free tier (decision: all docs agree on 2)
|
|
61
|
+
maxProviders: 1, // only 1 provider allowed for free
|
|
62
|
+
},
|
|
63
|
+
pro: {
|
|
64
|
+
id: 'pro',
|
|
65
|
+
name: 'Pro',
|
|
66
|
+
price: 19,
|
|
67
|
+
cloudOrchestrations: 100,
|
|
68
|
+
maxParallelAgents: 15,
|
|
69
|
+
selfHealing: 'full',
|
|
70
|
+
smartPlanning: 'full',
|
|
71
|
+
teamMembers: 1,
|
|
72
|
+
maxWaves: 10, // e.g., higher but not unlimited
|
|
73
|
+
maxProviders: 2,
|
|
74
|
+
},
|
|
75
|
+
team: {
|
|
76
|
+
id: 'team',
|
|
77
|
+
name: 'Team',
|
|
78
|
+
price: 49,
|
|
79
|
+
cloudOrchestrations: 500,
|
|
80
|
+
maxParallelAgents: 25,
|
|
81
|
+
selfHealing: 'full',
|
|
82
|
+
smartPlanning: 'full',
|
|
83
|
+
teamMembers: -1, // unlimited
|
|
84
|
+
maxWaves: 25,
|
|
85
|
+
maxProviders: 3,
|
|
86
|
+
},
|
|
87
|
+
enterprise: {
|
|
88
|
+
id: 'enterprise',
|
|
89
|
+
name: 'Enterprise',
|
|
90
|
+
price: -1, // contact sales
|
|
91
|
+
cloudOrchestrations: -1, // unlimited
|
|
92
|
+
maxParallelAgents: 50,
|
|
93
|
+
selfHealing: 'full',
|
|
94
|
+
smartPlanning: 'full',
|
|
95
|
+
teamMembers: -1, // unlimited
|
|
96
|
+
maxWaves: -1, // unlimited
|
|
97
|
+
maxProviders: -1, // unlimited
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// Helpers
|
|
102
|
+
// ============================================================================
|
|
103
|
+
export function getTier(id) {
|
|
104
|
+
return TIERS[id];
|
|
105
|
+
}
|
|
106
|
+
export function isCloudTier(id) {
|
|
107
|
+
return TIERS[id].cloudOrchestrations !== 0;
|
|
108
|
+
}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ExecutorStrategy } from './types.js';
|
|
3
|
+
import type { TierId } from './tiers.js';
|
|
4
|
+
import type { IUserStore } from './storage/users.js';
|
|
5
|
+
import type { IProviderKeyStore } from './storage/provider-keys.js';
|
|
6
|
+
import type { IHistoryStore } from './storage/history.js';
|
|
7
|
+
export declare function setProjectDir(dir: string): void;
|
|
8
|
+
export interface ToolContext {
|
|
9
|
+
userStore: IUserStore;
|
|
10
|
+
userId: string;
|
|
11
|
+
userTier: TierId;
|
|
12
|
+
userCreatedAt: string;
|
|
13
|
+
organizationId?: string;
|
|
14
|
+
providerKeyStore?: IProviderKeyStore;
|
|
15
|
+
historyStore?: IHistoryStore;
|
|
16
|
+
}
|
|
17
|
+
export declare function generatePlanTemplate(featureName: string, slug: string): string;
|
|
18
|
+
export declare function registerTools(server: McpServer, executor?: ExecutorStrategy, context?: ToolContext): void;
|