@orchid-labs/pluxx 0.1.1 → 0.1.4

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 (103) hide show
  1. package/README.md +25 -8
  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 +62 -0
  6. package/dist/cli/agent.d.ts.map +1 -1
  7. package/dist/cli/doctor.d.ts +2 -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/index.d.ts +7 -1
  12. package/dist/cli/index.d.ts.map +1 -1
  13. package/dist/cli/index.js +21810 -0
  14. package/dist/cli/init-from-mcp.d.ts +17 -1
  15. package/dist/cli/init-from-mcp.d.ts.map +1 -1
  16. package/dist/cli/install.d.ts +1 -0
  17. package/dist/cli/install.d.ts.map +1 -1
  18. package/dist/cli/lint.d.ts +3 -1
  19. package/dist/cli/lint.d.ts.map +1 -1
  20. package/dist/cli/mcp-proxy.d.ts.map +1 -1
  21. package/dist/cli/migrate.d.ts.map +1 -1
  22. package/dist/cli/primitive-summary.d.ts +14 -0
  23. package/dist/cli/primitive-summary.d.ts.map +1 -0
  24. package/dist/cli/prompt.d.ts +1 -1
  25. package/dist/cli/publish.d.ts +6 -1
  26. package/dist/cli/publish.d.ts.map +1 -1
  27. package/dist/cli/sync-from-mcp.d.ts.map +1 -1
  28. package/dist/cli/verify-install.d.ts +25 -0
  29. package/dist/cli/verify-install.d.ts.map +1 -0
  30. package/dist/commands.d.ts +10 -0
  31. package/dist/commands.d.ts.map +1 -0
  32. package/dist/compiler-intent.d.ts +165 -0
  33. package/dist/compiler-intent.d.ts.map +1 -0
  34. package/dist/config/load.d.ts.map +1 -1
  35. package/dist/delegation.d.ts +11 -0
  36. package/dist/delegation.d.ts.map +1 -0
  37. package/dist/generators/amp/index.d.ts.map +1 -1
  38. package/dist/generators/base.d.ts +5 -0
  39. package/dist/generators/base.d.ts.map +1 -1
  40. package/dist/generators/claude-code/index.d.ts.map +1 -1
  41. package/dist/generators/cline/index.d.ts.map +1 -1
  42. package/dist/generators/codex/index.d.ts +4 -0
  43. package/dist/generators/codex/index.d.ts.map +1 -1
  44. package/dist/generators/cursor/index.d.ts +1 -0
  45. package/dist/generators/cursor/index.d.ts.map +1 -1
  46. package/dist/generators/gemini-cli/index.d.ts.map +1 -1
  47. package/dist/generators/github-copilot/index.d.ts.map +1 -1
  48. package/dist/generators/opencode/index.d.ts +1 -0
  49. package/dist/generators/opencode/index.d.ts.map +1 -1
  50. package/dist/generators/openhands/index.d.ts.map +1 -1
  51. package/dist/generators/roo-code/index.d.ts.map +1 -1
  52. package/dist/generators/shared/claude-family.d.ts.map +1 -1
  53. package/dist/generators/warp/index.d.ts.map +1 -1
  54. package/dist/index.d.ts +4 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +5371 -553
  57. package/dist/schema.d.ts +91 -42
  58. package/dist/schema.d.ts.map +1 -1
  59. package/dist/text-files.d.ts +5 -0
  60. package/dist/text-files.d.ts.map +1 -0
  61. package/dist/validation/platform-rules.d.ts +15 -1
  62. package/dist/validation/platform-rules.d.ts.map +1 -1
  63. package/package.json +15 -13
  64. package/src/cli/agent.ts +0 -1455
  65. package/src/cli/dev.ts +0 -112
  66. package/src/cli/doctor.ts +0 -987
  67. package/src/cli/eval.ts +0 -470
  68. package/src/cli/index.ts +0 -2933
  69. package/src/cli/init-from-mcp.ts +0 -2115
  70. package/src/cli/install.ts +0 -860
  71. package/src/cli/lint.ts +0 -1249
  72. package/src/cli/mcp-proxy.ts +0 -322
  73. package/src/cli/migrate.ts +0 -867
  74. package/src/cli/prompt.ts +0 -82
  75. package/src/cli/publish.ts +0 -401
  76. package/src/cli/runtime.ts +0 -86
  77. package/src/cli/sync-from-mcp.ts +0 -586
  78. package/src/cli/test.ts +0 -142
  79. package/src/compatibility/matrix.ts +0 -149
  80. package/src/config/define.ts +0 -20
  81. package/src/config/load.ts +0 -74
  82. package/src/generators/amp/index.ts +0 -63
  83. package/src/generators/base.ts +0 -188
  84. package/src/generators/claude-code/index.ts +0 -172
  85. package/src/generators/cline/index.ts +0 -35
  86. package/src/generators/codex/index.ts +0 -143
  87. package/src/generators/cursor/index.ts +0 -158
  88. package/src/generators/gemini-cli/index.ts +0 -83
  89. package/src/generators/github-copilot/index.ts +0 -32
  90. package/src/generators/hooks-warning.ts +0 -51
  91. package/src/generators/index.ts +0 -71
  92. package/src/generators/opencode/index.ts +0 -526
  93. package/src/generators/openhands/index.ts +0 -32
  94. package/src/generators/roo-code/index.ts +0 -35
  95. package/src/generators/shared/claude-family.ts +0 -215
  96. package/src/generators/warp/index.ts +0 -32
  97. package/src/hook-events.ts +0 -33
  98. package/src/index.ts +0 -34
  99. package/src/mcp/introspect.ts +0 -1107
  100. package/src/permissions.ts +0 -260
  101. package/src/schema.ts +0 -312
  102. package/src/user-config.ts +0 -177
  103. package/src/validation/platform-rules.ts +0 -686
@@ -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
- }