@orchid-labs/pluxx 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +110 -515
  2. package/bin/pluxx.js +19 -28
  3. package/dist/agents.d.ts +16 -0
  4. package/dist/agents.d.ts.map +1 -0
  5. package/dist/cli/agent.d.ts +69 -0
  6. package/dist/cli/agent.d.ts.map +1 -1
  7. package/dist/cli/doctor.d.ts +3 -0
  8. package/dist/cli/doctor.d.ts.map +1 -1
  9. package/dist/cli/entry.d.ts +2 -0
  10. package/dist/cli/entry.d.ts.map +1 -0
  11. package/dist/cli/eval.d.ts +22 -0
  12. package/dist/cli/eval.d.ts.map +1 -0
  13. package/dist/cli/index.d.ts +26 -3
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +21810 -0
  16. package/dist/cli/init-from-mcp.d.ts +34 -3
  17. package/dist/cli/init-from-mcp.d.ts.map +1 -1
  18. package/dist/cli/install.d.ts +3 -0
  19. package/dist/cli/install.d.ts.map +1 -1
  20. package/dist/cli/lint.d.ts +7 -1
  21. package/dist/cli/lint.d.ts.map +1 -1
  22. package/dist/cli/mcp-proxy.d.ts +10 -0
  23. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  24. package/dist/cli/migrate.d.ts.map +1 -1
  25. package/dist/cli/primitive-summary.d.ts +14 -0
  26. package/dist/cli/primitive-summary.d.ts.map +1 -0
  27. package/dist/cli/prompt.d.ts +1 -1
  28. package/dist/cli/publish.d.ts +6 -1
  29. package/dist/cli/publish.d.ts.map +1 -1
  30. package/dist/cli/sync-from-mcp.d.ts.map +1 -1
  31. package/dist/cli/test.d.ts +2 -0
  32. package/dist/cli/test.d.ts.map +1 -1
  33. package/dist/cli/verify-install.d.ts +25 -0
  34. package/dist/cli/verify-install.d.ts.map +1 -0
  35. package/dist/commands.d.ts +10 -0
  36. package/dist/commands.d.ts.map +1 -0
  37. package/dist/compiler-intent.d.ts +165 -0
  38. package/dist/compiler-intent.d.ts.map +1 -0
  39. package/dist/config/load.d.ts.map +1 -1
  40. package/dist/delegation.d.ts +11 -0
  41. package/dist/delegation.d.ts.map +1 -0
  42. package/dist/generators/amp/index.d.ts.map +1 -1
  43. package/dist/generators/base.d.ts +5 -0
  44. package/dist/generators/base.d.ts.map +1 -1
  45. package/dist/generators/claude-code/index.d.ts +2 -0
  46. package/dist/generators/claude-code/index.d.ts.map +1 -1
  47. package/dist/generators/cline/index.d.ts.map +1 -1
  48. package/dist/generators/codex/index.d.ts +5 -0
  49. package/dist/generators/codex/index.d.ts.map +1 -1
  50. package/dist/generators/cursor/index.d.ts +1 -0
  51. package/dist/generators/cursor/index.d.ts.map +1 -1
  52. package/dist/generators/gemini-cli/index.d.ts.map +1 -1
  53. package/dist/generators/github-copilot/index.d.ts.map +1 -1
  54. package/dist/generators/opencode/index.d.ts +1 -0
  55. package/dist/generators/opencode/index.d.ts.map +1 -1
  56. package/dist/generators/openhands/index.d.ts.map +1 -1
  57. package/dist/generators/roo-code/index.d.ts.map +1 -1
  58. package/dist/generators/shared/claude-family.d.ts.map +1 -1
  59. package/dist/generators/warp/index.d.ts.map +1 -1
  60. package/dist/index.d.ts +4 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +5464 -548
  63. package/dist/mcp/introspect.d.ts +43 -1
  64. package/dist/mcp/introspect.d.ts.map +1 -1
  65. package/dist/permissions.d.ts.map +1 -1
  66. package/dist/schema.d.ts +91 -42
  67. package/dist/schema.d.ts.map +1 -1
  68. package/dist/text-files.d.ts +5 -0
  69. package/dist/text-files.d.ts.map +1 -0
  70. package/dist/validation/platform-rules.d.ts +35 -1
  71. package/dist/validation/platform-rules.d.ts.map +1 -1
  72. package/package.json +16 -14
  73. package/src/cli/agent.ts +0 -1030
  74. package/src/cli/dev.ts +0 -112
  75. package/src/cli/doctor.ts +0 -588
  76. package/src/cli/index.ts +0 -2414
  77. package/src/cli/init-from-mcp.ts +0 -1611
  78. package/src/cli/install.ts +0 -698
  79. package/src/cli/lint.ts +0 -1219
  80. package/src/cli/migrate.ts +0 -614
  81. package/src/cli/prompt.ts +0 -82
  82. package/src/cli/publish.ts +0 -401
  83. package/src/cli/runtime.ts +0 -86
  84. package/src/cli/sync-from-mcp.ts +0 -563
  85. package/src/cli/test.ts +0 -134
  86. package/src/compatibility/matrix.ts +0 -149
  87. package/src/config/define.ts +0 -20
  88. package/src/config/load.ts +0 -74
  89. package/src/generators/amp/index.ts +0 -63
  90. package/src/generators/base.ts +0 -188
  91. package/src/generators/claude-code/index.ts +0 -29
  92. package/src/generators/cline/index.ts +0 -35
  93. package/src/generators/codex/index.ts +0 -120
  94. package/src/generators/cursor/index.ts +0 -158
  95. package/src/generators/gemini-cli/index.ts +0 -83
  96. package/src/generators/github-copilot/index.ts +0 -32
  97. package/src/generators/hooks-warning.ts +0 -51
  98. package/src/generators/index.ts +0 -71
  99. package/src/generators/opencode/index.ts +0 -526
  100. package/src/generators/openhands/index.ts +0 -32
  101. package/src/generators/roo-code/index.ts +0 -35
  102. package/src/generators/shared/claude-family.ts +0 -215
  103. package/src/generators/warp/index.ts +0 -32
  104. package/src/hook-events.ts +0 -33
  105. package/src/index.ts +0 -23
  106. package/src/mcp/introspect.ts +0 -834
  107. package/src/permissions.ts +0 -258
  108. package/src/schema.ts +0 -312
  109. package/src/user-config.ts +0 -177
  110. package/src/validation/platform-rules.ts +0 -565
@@ -1,177 +0,0 @@
1
- import type { McpServer, PluginConfig, TargetPlatform, UserConfigEntry } from './schema'
2
-
3
- export interface ResolvedUserConfigEntry {
4
- field: UserConfigEntry
5
- value: string | number | boolean
6
- envVar?: string
7
- }
8
-
9
- interface DerivedUserConfigEntry extends UserConfigEntry {
10
- source: 'explicit' | 'mcp-auth' | 'mcp-env'
11
- }
12
-
13
- const ENV_VAR_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/
14
-
15
- export function normalizeUserConfigKey(value: string): string {
16
- return value
17
- .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
18
- .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
19
- .replace(/[._/\s]+/g, '-')
20
- .toLowerCase()
21
- .replace(/[^a-z0-9-]+/g, '-')
22
- .replace(/-+/g, '-')
23
- .replace(/^-+|-+$/g, '')
24
- }
25
-
26
- export function humanizeUserConfigLabel(value: string): string {
27
- return value
28
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
29
- .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
30
- .replace(/[._/]+/g, ' ')
31
- .replace(/-/g, ' ')
32
- .split(/\s+/)
33
- .filter(Boolean)
34
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
35
- .join(' ')
36
- }
37
-
38
- export function defaultUserConfigEnvVar(key: string): string {
39
- return key
40
- .replace(/[^A-Za-z0-9]+/g, '_')
41
- .replace(/_+/g, '_')
42
- .replace(/^_+|_+$/g, '')
43
- .toUpperCase()
44
- }
45
-
46
- export function extractEnvReference(value: string | undefined): string | undefined {
47
- if (!value) return undefined
48
- const match = value.match(/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/)
49
- return match?.[1]
50
- }
51
-
52
- function isRuntimePlatformManaged(config: PluginConfig, target: TargetPlatform, server: McpServer): boolean {
53
- if (server.transport === 'stdio') return false
54
-
55
- if (server.auth?.type === 'platform') {
56
- return true
57
- }
58
-
59
- if (target === 'claude-code') {
60
- return config.platforms?.['claude-code']?.mcpAuth === 'platform'
61
- }
62
-
63
- if (target === 'cursor') {
64
- return config.platforms?.cursor?.mcpAuth === 'platform'
65
- }
66
-
67
- return false
68
- }
69
-
70
- function targetApplies(entry: UserConfigEntry, target: TargetPlatform): boolean {
71
- return !entry.targets || entry.targets.includes(target)
72
- }
73
-
74
- function dedupeUserConfigEntries(entries: DerivedUserConfigEntry[]): DerivedUserConfigEntry[] {
75
- const deduped: DerivedUserConfigEntry[] = []
76
- const seenKeys = new Set<string>()
77
- const seenEnvVars = new Set<string>()
78
-
79
- for (const entry of entries) {
80
- const envVar = entry.envVar?.trim()
81
-
82
- if (seenKeys.has(entry.key)) continue
83
- if (envVar && seenEnvVars.has(envVar)) continue
84
-
85
- deduped.push(entry)
86
- seenKeys.add(entry.key)
87
- if (envVar) seenEnvVars.add(envVar)
88
- }
89
-
90
- return deduped
91
- }
92
-
93
- export function collectUserConfigEntries(
94
- config: PluginConfig,
95
- platforms: TargetPlatform[] = config.targets,
96
- ): DerivedUserConfigEntry[] {
97
- const explicitEntries = (config.userConfig ?? [])
98
- .filter((entry) => !entry.targets || entry.targets.some((target) => platforms.includes(target)))
99
- .map((entry) => ({ ...entry, source: 'explicit' as const }))
100
-
101
- const derivedEntries: DerivedUserConfigEntry[] = []
102
-
103
- for (const [serverName, server] of Object.entries(config.mcp ?? {})) {
104
- const applicableTargets = platforms.filter((target) => !isRuntimePlatformManaged(config, target, server))
105
-
106
- if (
107
- server.auth?.type
108
- && server.auth.type !== 'none'
109
- && server.auth.type !== 'platform'
110
- && ENV_VAR_NAME.test(server.auth.envVar)
111
- && applicableTargets.length > 0
112
- ) {
113
- derivedEntries.push({
114
- key: normalizeUserConfigKey(server.auth.envVar),
115
- title: humanizeUserConfigLabel(server.auth.envVar),
116
- description: `Authentication credential for the ${serverName} MCP server.`,
117
- type: 'secret',
118
- required: true,
119
- envVar: server.auth.envVar,
120
- targets: applicableTargets,
121
- source: 'mcp-auth',
122
- })
123
- }
124
-
125
- if (server.transport === 'stdio') {
126
- for (const [key, rawValue] of Object.entries(server.env ?? {})) {
127
- const envVar = extractEnvReference(rawValue) ?? (ENV_VAR_NAME.test(key) ? key : undefined)
128
- if (!envVar || !ENV_VAR_NAME.test(envVar)) continue
129
-
130
- // Skip constant stdio env values that do not need install-time input.
131
- if (extractEnvReference(rawValue) === undefined && rawValue !== '') {
132
- continue
133
- }
134
-
135
- derivedEntries.push({
136
- key: normalizeUserConfigKey(envVar),
137
- title: humanizeUserConfigLabel(envVar),
138
- description: `Environment value required to launch the ${serverName} stdio MCP server.`,
139
- type: 'secret',
140
- required: true,
141
- envVar,
142
- targets: applicableTargets.length > 0 ? applicableTargets : platforms,
143
- source: 'mcp-env',
144
- })
145
- }
146
- }
147
- }
148
-
149
- return dedupeUserConfigEntries([
150
- ...explicitEntries,
151
- ...derivedEntries,
152
- ])
153
- }
154
-
155
- export function resolveUserConfigEntriesForTarget(
156
- entries: ResolvedUserConfigEntry[],
157
- target: TargetPlatform,
158
- ): ResolvedUserConfigEntry[] {
159
- return entries.filter(({ field }) => targetApplies(field, target))
160
- }
161
-
162
- export function buildUserConfigEnvMap(entries: ResolvedUserConfigEntry[]): Record<string, string> {
163
- const env: Record<string, string> = {}
164
- for (const entry of entries) {
165
- if (!entry.envVar) continue
166
- env[entry.envVar] = String(entry.value)
167
- }
168
- return env
169
- }
170
-
171
- export function buildUserConfigValueMap(entries: ResolvedUserConfigEntry[]): Record<string, string | number | boolean> {
172
- const values: Record<string, string | number | boolean> = {}
173
- for (const entry of entries) {
174
- values[entry.field.key] = entry.value
175
- }
176
- return values
177
- }