workos 0.12.0 → 0.12.2
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/dist/cli.config.d.ts +32 -0
- package/dist/cli.config.js +32 -0
- package/dist/cli.config.js.map +1 -1
- package/dist/integrations/dotnet/index.js +13 -1
- package/dist/integrations/dotnet/index.js.map +1 -1
- package/dist/integrations/elixir/index.js +1 -1
- package/dist/integrations/elixir/index.js.map +1 -1
- package/dist/integrations/go/index.js +1 -1
- package/dist/integrations/go/index.js.map +1 -1
- package/dist/integrations/kotlin/index.js +25 -0
- package/dist/integrations/kotlin/index.js.map +1 -1
- package/dist/integrations/python/index.js +1 -0
- package/dist/integrations/python/index.js.map +1 -1
- package/dist/integrations/ruby/index.js +1 -1
- package/dist/integrations/ruby/index.js.map +1 -1
- package/dist/lib/adapters/cli-adapter.js +24 -1
- package/dist/lib/adapters/cli-adapter.js.map +1 -1
- package/dist/lib/adapters/headless-adapter.js +23 -1
- package/dist/lib/adapters/headless-adapter.js.map +1 -1
- package/dist/lib/agent-interface.d.ts +3 -1
- package/dist/lib/agent-interface.js +49 -0
- package/dist/lib/agent-interface.js.map +1 -1
- package/dist/lib/agent-runner.js +3 -1
- package/dist/lib/agent-runner.js.map +1 -1
- package/dist/lib/env-writer.d.ts +10 -0
- package/dist/lib/env-writer.js +36 -6
- package/dist/lib/env-writer.js.map +1 -1
- package/dist/lib/framework-config.d.ts +11 -1
- package/dist/lib/framework-config.js.map +1 -1
- package/dist/lib/port-detection.js +124 -0
- package/dist/lib/port-detection.js.map +1 -1
- package/dist/lib/registry.d.ts +1 -2
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/run-with-core.d.ts +5 -0
- package/dist/lib/run-with-core.js +26 -3
- package/dist/lib/run-with-core.js.map +1 -1
- package/dist/lib/unclaimed-env-provision.js +2 -2
- package/dist/lib/unclaimed-env-provision.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/language-detection.d.ts +0 -20
- package/dist/lib/language-detection.js +0 -96
- package/dist/lib/language-detection.js.map +0 -1
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
function fileExists(cwd, filename) {
|
|
4
|
-
const fullPath = join(cwd, filename);
|
|
5
|
-
return { found: existsSync(fullPath), manifestFile: filename };
|
|
6
|
-
}
|
|
7
|
-
function globExists(cwd, pattern) {
|
|
8
|
-
// Simple glob for *.ext patterns in the root directory
|
|
9
|
-
const ext = pattern.replace('*', '');
|
|
10
|
-
try {
|
|
11
|
-
const files = readdirSync(cwd);
|
|
12
|
-
const match = files.find((f) => f.endsWith(ext));
|
|
13
|
-
return { found: !!match, manifestFile: match || pattern };
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return { found: false, manifestFile: pattern };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function detectPython(cwd) {
|
|
20
|
-
for (const file of ['pyproject.toml', 'requirements.txt', 'setup.py', 'Pipfile']) {
|
|
21
|
-
if (existsSync(join(cwd, file))) {
|
|
22
|
-
return { found: true, manifestFile: file };
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return { found: false, manifestFile: 'pyproject.toml' };
|
|
26
|
-
}
|
|
27
|
-
function detectKotlin(cwd) {
|
|
28
|
-
const ktsPath = join(cwd, 'build.gradle.kts');
|
|
29
|
-
if (existsSync(ktsPath)) {
|
|
30
|
-
try {
|
|
31
|
-
const content = readFileSync(ktsPath, 'utf-8');
|
|
32
|
-
if (/org\.jetbrains\.kotlin/.test(content) || /kotlin\(/.test(content)) {
|
|
33
|
-
return { found: true, manifestFile: 'build.gradle.kts' };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Can't read file
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// Also check build.gradle (Groovy DSL)
|
|
41
|
-
const gradlePath = join(cwd, 'build.gradle');
|
|
42
|
-
if (existsSync(gradlePath)) {
|
|
43
|
-
try {
|
|
44
|
-
const content = readFileSync(gradlePath, 'utf-8');
|
|
45
|
-
if (/kotlin/.test(content)) {
|
|
46
|
-
return { found: true, manifestFile: 'build.gradle' };
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Can't read file
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return { found: false, manifestFile: 'build.gradle.kts' };
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Language detectors ordered by specificity.
|
|
57
|
-
* More specific languages are checked first.
|
|
58
|
-
* JavaScript is last because many non-JS projects also have package.json.
|
|
59
|
-
*/
|
|
60
|
-
const LANGUAGE_DETECTORS = [
|
|
61
|
-
{ language: 'elixir', detect: (cwd) => fileExists(cwd, 'mix.exs') },
|
|
62
|
-
{ language: 'go', detect: (cwd) => fileExists(cwd, 'go.mod') },
|
|
63
|
-
{ language: 'dotnet', detect: (cwd) => globExists(cwd, '*.csproj') },
|
|
64
|
-
{ language: 'kotlin', detect: detectKotlin },
|
|
65
|
-
{ language: 'ruby', detect: (cwd) => fileExists(cwd, 'Gemfile') },
|
|
66
|
-
{ language: 'php', detect: (cwd) => fileExists(cwd, 'composer.json') },
|
|
67
|
-
{ language: 'python', detect: detectPython },
|
|
68
|
-
{ language: 'javascript', detect: (cwd) => fileExists(cwd, 'package.json') },
|
|
69
|
-
];
|
|
70
|
-
/**
|
|
71
|
-
* Detect the primary programming language of a project.
|
|
72
|
-
* Runs all detectors and returns the highest-priority match.
|
|
73
|
-
* Sets `ambiguous: true` if multiple non-JS languages are detected.
|
|
74
|
-
*/
|
|
75
|
-
export function detectLanguage(cwd) {
|
|
76
|
-
const signals = [];
|
|
77
|
-
for (const detector of LANGUAGE_DETECTORS) {
|
|
78
|
-
const result = detector.detect(cwd);
|
|
79
|
-
if (result.found) {
|
|
80
|
-
signals.push({
|
|
81
|
-
language: detector.language,
|
|
82
|
-
confidence: 1.0,
|
|
83
|
-
manifestFile: result.manifestFile,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (signals.length === 0) {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
const primary = signals[0].language;
|
|
91
|
-
// Ambiguous if multiple non-JS languages detected
|
|
92
|
-
const nonJsSignals = signals.filter((s) => s.language !== 'javascript');
|
|
93
|
-
const ambiguous = nonJsSignals.length > 1;
|
|
94
|
-
return { primary, signals, ambiguous };
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=language-detection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"language-detection.js","sourceRoot":"","sources":["../../src/lib/language-detection.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\n/**\n * Supported programming languages for framework detection.\n */\nexport type Language = 'javascript' | 'python' | 'ruby' | 'php' | 'go' | 'kotlin' | 'dotnet' | 'elixir';\n\nexport interface LanguageSignal {\n language: Language;\n confidence: number; // 0-1\n manifestFile: string;\n}\n\nexport interface LanguageDetectionResult {\n primary: Language;\n signals: LanguageSignal[];\n ambiguous: boolean;\n}\n\nfunction fileExists(cwd: string, filename: string): { found: boolean; manifestFile: string } {\n const fullPath = join(cwd, filename);\n return { found: existsSync(fullPath), manifestFile: filename };\n}\n\nfunction globExists(cwd: string, pattern: string): { found: boolean; manifestFile: string } {\n // Simple glob for *.ext patterns in the root directory\n const ext = pattern.replace('*', '');\n try {\n const files = readdirSync(cwd);\n const match = files.find((f) => f.endsWith(ext));\n return { found: !!match, manifestFile: match || pattern };\n } catch {\n return { found: false, manifestFile: pattern };\n }\n}\n\nfunction detectPython(cwd: string): { found: boolean; manifestFile: string } {\n for (const file of ['pyproject.toml', 'requirements.txt', 'setup.py', 'Pipfile']) {\n if (existsSync(join(cwd, file))) {\n return { found: true, manifestFile: file };\n }\n }\n return { found: false, manifestFile: 'pyproject.toml' };\n}\n\nfunction detectKotlin(cwd: string): { found: boolean; manifestFile: string } {\n const ktsPath = join(cwd, 'build.gradle.kts');\n if (existsSync(ktsPath)) {\n try {\n const content = readFileSync(ktsPath, 'utf-8');\n if (/org\\.jetbrains\\.kotlin/.test(content) || /kotlin\\(/.test(content)) {\n return { found: true, manifestFile: 'build.gradle.kts' };\n }\n } catch {\n // Can't read file\n }\n }\n\n // Also check build.gradle (Groovy DSL)\n const gradlePath = join(cwd, 'build.gradle');\n if (existsSync(gradlePath)) {\n try {\n const content = readFileSync(gradlePath, 'utf-8');\n if (/kotlin/.test(content)) {\n return { found: true, manifestFile: 'build.gradle' };\n }\n } catch {\n // Can't read file\n }\n }\n\n return { found: false, manifestFile: 'build.gradle.kts' };\n}\n\n/**\n * Language detectors ordered by specificity.\n * More specific languages are checked first.\n * JavaScript is last because many non-JS projects also have package.json.\n */\nconst LANGUAGE_DETECTORS: Array<{\n language: Language;\n detect: (cwd: string) => { found: boolean; manifestFile: string };\n}> = [\n { language: 'elixir', detect: (cwd) => fileExists(cwd, 'mix.exs') },\n { language: 'go', detect: (cwd) => fileExists(cwd, 'go.mod') },\n { language: 'dotnet', detect: (cwd) => globExists(cwd, '*.csproj') },\n { language: 'kotlin', detect: detectKotlin },\n { language: 'ruby', detect: (cwd) => fileExists(cwd, 'Gemfile') },\n { language: 'php', detect: (cwd) => fileExists(cwd, 'composer.json') },\n { language: 'python', detect: detectPython },\n { language: 'javascript', detect: (cwd) => fileExists(cwd, 'package.json') },\n];\n\n/**\n * Detect the primary programming language of a project.\n * Runs all detectors and returns the highest-priority match.\n * Sets `ambiguous: true` if multiple non-JS languages are detected.\n */\nexport function detectLanguage(cwd: string): LanguageDetectionResult | undefined {\n const signals: LanguageSignal[] = [];\n\n for (const detector of LANGUAGE_DETECTORS) {\n const result = detector.detect(cwd);\n if (result.found) {\n signals.push({\n language: detector.language,\n confidence: 1.0,\n manifestFile: result.manifestFile,\n });\n }\n }\n\n if (signals.length === 0) {\n return undefined;\n }\n\n const primary = signals[0].language;\n\n // Ambiguous if multiple non-JS languages detected\n const nonJsSignals = signals.filter((s) => s.language !== 'javascript');\n const ambiguous = nonJsSignals.length > 1;\n\n return { primary, signals, ambiguous };\n}\n"]}
|