@intrect/openswarm 0.2.2 → 0.3.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.
Files changed (155) hide show
  1. package/README.md +236 -331
  2. package/config.example.yaml +36 -13
  3. package/dist/adapters/base.d.ts.map +1 -1
  4. package/dist/adapters/base.js +4 -0
  5. package/dist/adapters/base.js.map +1 -1
  6. package/dist/adapters/cryptoQuantAdapter.js +1 -1
  7. package/dist/adapters/cryptoQuantAdapter.js.map +1 -1
  8. package/dist/adapters/gpt.d.ts +15 -0
  9. package/dist/adapters/gpt.d.ts.map +1 -0
  10. package/dist/adapters/gpt.js +274 -0
  11. package/dist/adapters/gpt.js.map +1 -0
  12. package/dist/adapters/index.d.ts +2 -0
  13. package/dist/adapters/index.d.ts.map +1 -1
  14. package/dist/adapters/index.js +6 -0
  15. package/dist/adapters/index.js.map +1 -1
  16. package/dist/adapters/local.d.ts +22 -0
  17. package/dist/adapters/local.d.ts.map +1 -0
  18. package/dist/adapters/local.js +277 -0
  19. package/dist/adapters/local.js.map +1 -0
  20. package/dist/adapters/types.d.ts +6 -1
  21. package/dist/adapters/types.d.ts.map +1 -1
  22. package/dist/agents/pairPipeline.d.ts.map +1 -1
  23. package/dist/agents/pairPipeline.js +21 -6
  24. package/dist/agents/pairPipeline.js.map +1 -1
  25. package/dist/agents/pipelineGuards.d.ts.map +1 -1
  26. package/dist/agents/pipelineGuards.js +84 -2
  27. package/dist/agents/pipelineGuards.js.map +1 -1
  28. package/dist/auth/index.d.ts +3 -0
  29. package/dist/auth/index.d.ts.map +1 -0
  30. package/dist/auth/index.js +6 -0
  31. package/dist/auth/index.js.map +1 -0
  32. package/dist/auth/oauthPkce.d.ts +21 -0
  33. package/dist/auth/oauthPkce.d.ts.map +1 -0
  34. package/dist/auth/oauthPkce.js +212 -0
  35. package/dist/auth/oauthPkce.js.map +1 -0
  36. package/dist/auth/oauthStore.d.ts +24 -0
  37. package/dist/auth/oauthStore.d.ts.map +1 -0
  38. package/dist/auth/oauthStore.js +96 -0
  39. package/dist/auth/oauthStore.js.map +1 -0
  40. package/dist/automation/autonomousRunner.d.ts +5 -5
  41. package/dist/automation/runnerTypes.d.ts +1 -1
  42. package/dist/automation/runnerTypes.d.ts.map +1 -1
  43. package/dist/cli/authHandler.d.ts +16 -0
  44. package/dist/cli/authHandler.d.ts.map +1 -0
  45. package/dist/cli/authHandler.js +93 -0
  46. package/dist/cli/authHandler.js.map +1 -0
  47. package/dist/cli/checkHandler.d.ts +25 -0
  48. package/dist/cli/checkHandler.d.ts.map +1 -0
  49. package/dist/cli/checkHandler.js +465 -0
  50. package/dist/cli/checkHandler.js.map +1 -0
  51. package/dist/cli.js +64 -0
  52. package/dist/cli.js.map +1 -1
  53. package/dist/core/config.d.ts +17 -4
  54. package/dist/core/config.d.ts.map +1 -1
  55. package/dist/core/config.js +21 -8
  56. package/dist/core/config.js.map +1 -1
  57. package/dist/core/service.d.ts.map +1 -1
  58. package/dist/core/service.js +18 -8
  59. package/dist/core/service.js.map +1 -1
  60. package/dist/core/types.d.ts +4 -2
  61. package/dist/core/types.d.ts.map +1 -1
  62. package/dist/issues/graphql/resolvers.d.ts +252 -0
  63. package/dist/issues/graphql/resolvers.d.ts.map +1 -0
  64. package/dist/issues/graphql/resolvers.js +88 -0
  65. package/dist/issues/graphql/resolvers.js.map +1 -0
  66. package/dist/issues/graphql/server.d.ts +13 -0
  67. package/dist/issues/graphql/server.d.ts.map +1 -0
  68. package/dist/issues/graphql/server.js +56 -0
  69. package/dist/issues/graphql/server.js.map +1 -0
  70. package/dist/issues/graphql/typeDefs.d.ts +2 -0
  71. package/dist/issues/graphql/typeDefs.d.ts.map +1 -0
  72. package/dist/issues/graphql/typeDefs.js +251 -0
  73. package/dist/issues/graphql/typeDefs.js.map +1 -0
  74. package/dist/issues/index.d.ts +8 -0
  75. package/dist/issues/index.d.ts.map +1 -0
  76. package/dist/issues/index.js +11 -0
  77. package/dist/issues/index.js.map +1 -0
  78. package/dist/issues/issueBoardHtml.d.ts +2 -0
  79. package/dist/issues/issueBoardHtml.d.ts.map +1 -0
  80. package/dist/issues/issueBoardHtml.js +677 -0
  81. package/dist/issues/issueBoardHtml.js.map +1 -0
  82. package/dist/issues/linearBridge.d.ts +27 -0
  83. package/dist/issues/linearBridge.d.ts.map +1 -0
  84. package/dist/issues/linearBridge.js +211 -0
  85. package/dist/issues/linearBridge.js.map +1 -0
  86. package/dist/issues/memoryBridge.d.ts +35 -0
  87. package/dist/issues/memoryBridge.d.ts.map +1 -0
  88. package/dist/issues/memoryBridge.js +184 -0
  89. package/dist/issues/memoryBridge.js.map +1 -0
  90. package/dist/issues/schema.d.ts +162 -0
  91. package/dist/issues/schema.d.ts.map +1 -0
  92. package/dist/issues/schema.js +121 -0
  93. package/dist/issues/schema.js.map +1 -0
  94. package/dist/issues/sqliteStore.d.ts +90 -0
  95. package/dist/issues/sqliteStore.d.ts.map +1 -0
  96. package/dist/issues/sqliteStore.js +488 -0
  97. package/dist/issues/sqliteStore.js.map +1 -0
  98. package/dist/knowledge/index.d.ts.map +1 -1
  99. package/dist/knowledge/index.js +9 -3
  100. package/dist/knowledge/index.js.map +1 -1
  101. package/dist/linear/linear.d.ts +4 -0
  102. package/dist/linear/linear.d.ts.map +1 -1
  103. package/dist/linear/linear.js +27 -0
  104. package/dist/linear/linear.js.map +1 -1
  105. package/dist/registry/bsDetector.d.ts +24 -0
  106. package/dist/registry/bsDetector.d.ts.map +1 -0
  107. package/dist/registry/bsDetector.js +276 -0
  108. package/dist/registry/bsDetector.js.map +1 -0
  109. package/dist/registry/entityScanner.d.ts +36 -0
  110. package/dist/registry/entityScanner.d.ts.map +1 -0
  111. package/dist/registry/entityScanner.js +693 -0
  112. package/dist/registry/entityScanner.js.map +1 -0
  113. package/dist/registry/graphql/resolvers.d.ts +778 -0
  114. package/dist/registry/graphql/resolvers.d.ts.map +1 -0
  115. package/dist/registry/graphql/resolvers.js +127 -0
  116. package/dist/registry/graphql/resolvers.js.map +1 -0
  117. package/dist/registry/graphql/typeDefs.d.ts +2 -0
  118. package/dist/registry/graphql/typeDefs.d.ts.map +1 -0
  119. package/dist/registry/graphql/typeDefs.js +276 -0
  120. package/dist/registry/graphql/typeDefs.js.map +1 -0
  121. package/dist/registry/index.d.ts +12 -0
  122. package/dist/registry/index.d.ts.map +1 -0
  123. package/dist/registry/index.js +18 -0
  124. package/dist/registry/index.js.map +1 -0
  125. package/dist/registry/issueBridge.d.ts +8 -0
  126. package/dist/registry/issueBridge.d.ts.map +1 -0
  127. package/dist/registry/issueBridge.js +30 -0
  128. package/dist/registry/issueBridge.js.map +1 -0
  129. package/dist/registry/memoryBridge.d.ts +13 -0
  130. package/dist/registry/memoryBridge.d.ts.map +1 -0
  131. package/dist/registry/memoryBridge.js +60 -0
  132. package/dist/registry/memoryBridge.js.map +1 -0
  133. package/dist/registry/schema.d.ts +307 -0
  134. package/dist/registry/schema.d.ts.map +1 -0
  135. package/dist/registry/schema.js +139 -0
  136. package/dist/registry/schema.js.map +1 -0
  137. package/dist/registry/sqliteStore.d.ts +101 -0
  138. package/dist/registry/sqliteStore.d.ts.map +1 -0
  139. package/dist/registry/sqliteStore.js +688 -0
  140. package/dist/registry/sqliteStore.js.map +1 -0
  141. package/dist/support/chatBackend.d.ts.map +1 -1
  142. package/dist/support/chatBackend.js +35 -4
  143. package/dist/support/chatBackend.js.map +1 -1
  144. package/dist/support/chatTui.d.ts.map +1 -1
  145. package/dist/support/chatTui.js +109 -3
  146. package/dist/support/chatTui.js.map +1 -1
  147. package/dist/support/dashboardHtml.d.ts +1 -1
  148. package/dist/support/dashboardHtml.d.ts.map +1 -1
  149. package/dist/support/dashboardHtml.js +1 -0
  150. package/dist/support/dashboardHtml.js.map +1 -1
  151. package/dist/support/web.d.ts.map +1 -1
  152. package/dist/support/web.js +16 -3
  153. package/dist/support/web.js.map +1 -1
  154. package/package.json +8 -2
  155. package/templates/TOOLS.md +2 -2
@@ -4,6 +4,8 @@
4
4
  // ============================================
5
5
  import { execFile } from 'node:child_process';
6
6
  import { promisify } from 'node:util';
7
+ import { getRegistryStore } from '../registry/sqliteStore.js';
8
+ import { scanFile as scanFileForBs } from '../registry/bsDetector.js';
7
9
  const execFileAsync = promisify(execFile);
8
10
  // Uncertainty Detection Patterns
9
11
  const UNCERTAINTY_PATTERNS = [
@@ -57,7 +59,8 @@ async function runQualityGate(workerResult, projectPath) {
57
59
  });
58
60
  }
59
61
  catch (err) {
60
- const stderr = err.stderr || err.stdout || String(err);
62
+ const execErr = err;
63
+ const stderr = execErr.stderr || execErr.stdout || String(err);
61
64
  issues.push(`TypeScript check failed: ${stderr.slice(0, 500)}`);
62
65
  }
63
66
  }
@@ -69,7 +72,8 @@ async function runQualityGate(workerResult, projectPath) {
69
72
  });
70
73
  }
71
74
  catch (err) {
72
- const stderr = err.stderr || err.stdout || String(err);
75
+ const execErr = err;
76
+ const stderr = execErr.stderr || execErr.stdout || String(err);
73
77
  issues.push(`Ruff check failed: ${stderr.slice(0, 500)}`);
74
78
  }
75
79
  }
@@ -148,6 +152,78 @@ function runUncertaintyDetection(workerResult) {
148
152
  }
149
153
  return { passed: issues.length === 0, guard, issues, blocking: false };
150
154
  }
155
+ /**
156
+ * Registry check: scan changed files against code registry.
157
+ * Non-blocking — warns about deprecated/broken entities being modified,
158
+ * untested entities being added, or active warnings on touched code.
159
+ */
160
+ function runRegistryCheck(workerResult) {
161
+ const guard = 'registryCheck';
162
+ const issues = [];
163
+ try {
164
+ const store = getRegistryStore();
165
+ for (const filePath of workerResult.filesChanged) {
166
+ const brief = store.fileBrief(filePath);
167
+ if (brief.entities.length === 0)
168
+ continue;
169
+ // deprecated 엔티티가 있는 파일 수정 시 경고
170
+ const deprecated = brief.entities.filter(e => e.status === 'deprecated');
171
+ if (deprecated.length > 0) {
172
+ issues.push(`[${filePath}] ${deprecated.length} deprecated entity modified: ` +
173
+ deprecated.map(e => `${e.name}${e.deprecatedReason ? ` (${e.deprecatedReason})` : ''}`).join(', '));
174
+ }
175
+ // broken 엔티티가 있는 파일 수정 시 경고
176
+ const broken = brief.entities.filter(e => e.status === 'broken');
177
+ if (broken.length > 0) {
178
+ issues.push(`[${filePath}] ${broken.length} broken entity: ${broken.map(e => e.name).join(', ')}`);
179
+ }
180
+ // 미해결 critical/error 경고가 있는 엔티티
181
+ const withCriticalWarnings = brief.entities.filter(e => e.warnings.some(w => !w.resolved && (w.severity === 'critical' || w.severity === 'error')));
182
+ if (withCriticalWarnings.length > 0) {
183
+ for (const e of withCriticalWarnings) {
184
+ const criticals = e.warnings.filter(w => !w.resolved && (w.severity === 'critical' || w.severity === 'error'));
185
+ issues.push(`[${filePath}] ${e.name}: ${criticals.map(w => `${w.severity}/${w.category}: ${w.message}`).join('; ')}`);
186
+ }
187
+ }
188
+ // high-risk + untested 조합 경고
189
+ const riskyUntested = brief.entities.filter(e => e.riskLevel === 'high' && !e.hasTests && e.status === 'active');
190
+ if (riskyUntested.length > 0) {
191
+ issues.push(`[${filePath}] ${riskyUntested.length} high-risk untested: ${riskyUntested.map(e => e.name).join(', ')}`);
192
+ }
193
+ }
194
+ }
195
+ catch (err) {
196
+ // 레지스트리 DB가 없거나 접근 불가 시 무시
197
+ console.warn('[Guard:registryCheck] Registry unavailable:', err);
198
+ }
199
+ return { passed: issues.length === 0, guard, issues, blocking: false };
200
+ }
201
+ /**
202
+ * BS Detector guard: scan changed files for BS patterns in actual source code.
203
+ * CRITICAL BS → blocking. WARNING/MINOR → non-blocking.
204
+ */
205
+ async function runBsDetectorGuard(workerResult, projectPath) {
206
+ const guard = 'bsDetector';
207
+ const issues = [];
208
+ let hasCritical = false;
209
+ try {
210
+ const { join } = await import('node:path');
211
+ for (const filePath of workerResult.filesChanged) {
212
+ const fullPath = join(projectPath, filePath);
213
+ const bsIssues = await scanFileForBs(fullPath);
214
+ for (const bs of bsIssues) {
215
+ const prefix = bs.severity === 'critical' ? 'CRITICAL' : bs.severity === 'warning' ? 'WARNING' : 'MINOR';
216
+ issues.push(`[${prefix}] ${filePath}:${bs.line} — ${bs.message} (${bs.matchedText})`);
217
+ if (bs.severity === 'critical')
218
+ hasCritical = true;
219
+ }
220
+ }
221
+ }
222
+ catch (err) {
223
+ console.warn('[Guard:bsDetector] Error:', err);
224
+ }
225
+ return { passed: issues.length === 0, guard, issues, blocking: hasCritical };
226
+ }
151
227
  // Guard Runner
152
228
  /**
153
229
  * Run all enabled guards on a worker result.
@@ -166,6 +242,12 @@ export async function runGuards(workerResult, projectPath, config) {
166
242
  if (config.uncertaintyDetection) {
167
243
  results.push(runUncertaintyDetection(workerResult));
168
244
  }
245
+ if (config.registryCheck) {
246
+ results.push(runRegistryCheck(workerResult));
247
+ }
248
+ if (config.bsDetector) {
249
+ results.push(await runBsDetectorGuard(workerResult, projectPath));
250
+ }
169
251
  // conventionalCommits is checked separately (needs commit message)
170
252
  // haltToLinear is handled by the pipeline, not a guard function
171
253
  const combinedIssues = results.flatMap(r => r.issues);
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineGuards.js","sourceRoot":"","sources":["../../src/agents/pipelineGuards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelineGuards.js","sourceRoot":"","sources":["../../src/agents/pipelineGuards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { AuthProfileStore, ensureValidToken, type AuthProfile } from './oauthStore.js';
2
+ export { runOAuthPkceFlow, loginAndSaveProfile, type OAuthFlowResult, type OAuthFlowOptions } from './oauthPkce.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // ============================================
2
+ // OpenSwarm - Auth Module
3
+ // ============================================
4
+ export { AuthProfileStore, ensureValidToken } from './oauthStore.js';
5
+ export { runOAuthPkceFlow, loginAndSaveProfile } from './oauthPkce.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAoB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAA+C,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface OAuthFlowResult {
2
+ accessToken: string;
3
+ refreshToken: string;
4
+ expiresIn: number;
5
+ accountId?: string;
6
+ }
7
+ export interface OAuthFlowOptions {
8
+ clientId: string;
9
+ port?: number;
10
+ scopes?: string;
11
+ }
12
+ /**
13
+ * OAuth 2.1 PKCE 흐름 실행.
14
+ * 로컬 HTTP 서버에서 callback을 받고, token을 교환하여 저장한다.
15
+ */
16
+ export declare function runOAuthPkceFlow(options: OAuthFlowOptions): Promise<OAuthFlowResult>;
17
+ /**
18
+ * OAuth 로그인 → 토큰 저장 (온보딩 전체 흐름)
19
+ */
20
+ export declare function loginAndSaveProfile(clientId: string, port?: number): Promise<void>;
21
+ //# sourceMappingURL=oauthPkce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthPkce.d.ts","sourceRoot":"","sources":["../../src/auth/oauthPkce.ts"],"names":[],"mappings":"AAqDA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsJ1F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxF"}
@@ -0,0 +1,212 @@
1
+ // ============================================
2
+ // OpenSwarm - OAuth 2.1 PKCE Flow
3
+ // Browser-based OpenAI OAuth login
4
+ // ============================================
5
+ import { createServer } from 'node:http';
6
+ import { randomBytes, createHash } from 'node:crypto';
7
+ import { exec } from 'node:child_process';
8
+ import { AuthProfileStore } from './oauthStore.js';
9
+ // Constants
10
+ const OPENAI_AUTH_ENDPOINT = 'https://auth.openai.com/oauth/authorize';
11
+ const OPENAI_TOKEN_ENDPOINT = 'https://auth.openai.com/oauth/token';
12
+ const DEFAULT_CALLBACK_PORT = 1455;
13
+ const DEFAULT_SCOPES = 'openid profile email offline_access model.request';
14
+ const LOGIN_TIMEOUT_MS = 120_000; // 2분
15
+ const PROFILE_KEY = 'openai-gpt:default';
16
+ // PKCE helpers
17
+ function generateCodeVerifier() {
18
+ // 43-128자 base64url-safe 랜덤 문자열
19
+ return randomBytes(96).toString('base64url');
20
+ }
21
+ function generateCodeChallenge(verifier) {
22
+ return createHash('sha256').update(verifier).digest('base64url');
23
+ }
24
+ function generateState() {
25
+ return randomBytes(32).toString('hex');
26
+ }
27
+ // Browser open (cross-platform)
28
+ function openBrowser(url) {
29
+ const platform = process.platform;
30
+ const cmd = platform === 'darwin' ? 'open' :
31
+ platform === 'win32' ? 'start' :
32
+ 'xdg-open';
33
+ exec(`${cmd} "${url}"`, (err) => {
34
+ if (err) {
35
+ console.error(`[Auth] 브라우저를 자동으로 열 수 없습니다. 직접 열어주세요:`);
36
+ console.error(url);
37
+ }
38
+ });
39
+ }
40
+ /**
41
+ * OAuth 2.1 PKCE 흐름 실행.
42
+ * 로컬 HTTP 서버에서 callback을 받고, token을 교환하여 저장한다.
43
+ */
44
+ export async function runOAuthPkceFlow(options) {
45
+ const { clientId, port = DEFAULT_CALLBACK_PORT, scopes = DEFAULT_SCOPES } = options;
46
+ const redirectUri = `http://127.0.0.1:${port}/auth/callback`;
47
+ // 1. PKCE 생성
48
+ const codeVerifier = generateCodeVerifier();
49
+ const codeChallenge = generateCodeChallenge(codeVerifier);
50
+ const state = generateState();
51
+ // 2. Authorization URL 구성
52
+ const authParams = new URLSearchParams({
53
+ response_type: 'code',
54
+ client_id: clientId,
55
+ redirect_uri: redirectUri,
56
+ code_challenge: codeChallenge,
57
+ code_challenge_method: 'S256',
58
+ scope: scopes,
59
+ state,
60
+ });
61
+ const authUrl = `${OPENAI_AUTH_ENDPOINT}?${authParams.toString()}`;
62
+ // 3. 로컬 HTTP 서버 시작 + callback 대기
63
+ return new Promise((resolve, reject) => {
64
+ let settled = false;
65
+ const timeout = setTimeout(() => {
66
+ if (!settled) {
67
+ settled = true;
68
+ server.close();
69
+ reject(new Error('OAuth login timed out (120s). 다시 시도하세요.'));
70
+ }
71
+ }, LOGIN_TIMEOUT_MS);
72
+ const server = createServer(async (req, res) => {
73
+ if (settled) {
74
+ res.writeHead(400);
75
+ res.end();
76
+ return;
77
+ }
78
+ const url = new URL(req.url ?? '/', `http://127.0.0.1:${port}`);
79
+ if (url.pathname !== '/auth/callback') {
80
+ res.writeHead(404);
81
+ res.end('Not found');
82
+ return;
83
+ }
84
+ const code = url.searchParams.get('code');
85
+ const returnedState = url.searchParams.get('state');
86
+ const error = url.searchParams.get('error');
87
+ if (error) {
88
+ settled = true;
89
+ clearTimeout(timeout);
90
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
91
+ res.end(errorHtml(error));
92
+ server.close();
93
+ reject(new Error(`OAuth error: ${error}`));
94
+ return;
95
+ }
96
+ if (!code || returnedState !== state) {
97
+ settled = true;
98
+ clearTimeout(timeout);
99
+ res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
100
+ res.end(errorHtml('Invalid callback parameters'));
101
+ server.close();
102
+ reject(new Error('Invalid OAuth callback: missing code or state mismatch'));
103
+ return;
104
+ }
105
+ // 4. Token Exchange
106
+ try {
107
+ const tokenBody = new URLSearchParams({
108
+ grant_type: 'authorization_code',
109
+ code,
110
+ code_verifier: codeVerifier,
111
+ redirect_uri: redirectUri,
112
+ client_id: clientId,
113
+ });
114
+ const tokenRes = await fetch(OPENAI_TOKEN_ENDPOINT, {
115
+ method: 'POST',
116
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
117
+ body: tokenBody.toString(),
118
+ });
119
+ if (!tokenRes.ok) {
120
+ const errText = await tokenRes.text().catch(() => '');
121
+ throw new Error(`Token exchange failed (${tokenRes.status}): ${errText.slice(0, 300)}`);
122
+ }
123
+ const tokens = (await tokenRes.json());
124
+ // id_token에서 accountId 추출 (JWT payload)
125
+ let accountId;
126
+ if (tokens.id_token) {
127
+ try {
128
+ const payload = JSON.parse(Buffer.from(tokens.id_token.split('.')[1], 'base64url').toString());
129
+ accountId = payload.sub;
130
+ }
131
+ catch {
132
+ // id_token 파싱 실패는 무시
133
+ }
134
+ }
135
+ const result = {
136
+ accessToken: tokens.access_token,
137
+ refreshToken: tokens.refresh_token,
138
+ expiresIn: tokens.expires_in,
139
+ accountId,
140
+ };
141
+ settled = true;
142
+ clearTimeout(timeout);
143
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
144
+ res.end(successHtml());
145
+ server.close();
146
+ resolve(result);
147
+ }
148
+ catch (err) {
149
+ settled = true;
150
+ clearTimeout(timeout);
151
+ res.writeHead(500, { 'Content-Type': 'text/html; charset=utf-8' });
152
+ res.end(errorHtml(String(err)));
153
+ server.close();
154
+ reject(err);
155
+ }
156
+ });
157
+ server.listen(port, '127.0.0.1', () => {
158
+ console.log(`[Auth] Callback server listening on http://127.0.0.1:${port}`);
159
+ console.log(`[Auth] 브라우저에서 OpenAI 로그인 페이지를 엽니다...`);
160
+ openBrowser(authUrl);
161
+ });
162
+ server.on('error', (err) => {
163
+ if (!settled) {
164
+ settled = true;
165
+ clearTimeout(timeout);
166
+ reject(new Error(`Callback server error: ${err.message}`));
167
+ }
168
+ });
169
+ });
170
+ }
171
+ /**
172
+ * OAuth 로그인 → 토큰 저장 (온보딩 전체 흐름)
173
+ */
174
+ export async function loginAndSaveProfile(clientId, port) {
175
+ const result = await runOAuthPkceFlow({ clientId, port });
176
+ const profile = {
177
+ type: 'oauth',
178
+ provider: 'openai-gpt',
179
+ access: result.accessToken,
180
+ refresh: result.refreshToken,
181
+ expires: Date.now() + result.expiresIn * 1000,
182
+ clientId,
183
+ accountId: result.accountId,
184
+ };
185
+ const store = new AuthProfileStore();
186
+ store.setProfile(PROFILE_KEY, profile);
187
+ console.log(`[Auth] GPT OAuth 인증 완료. 프로필 저장됨: ${PROFILE_KEY}`);
188
+ if (result.accountId) {
189
+ console.log(`[Auth] Account ID: ${result.accountId}`);
190
+ }
191
+ }
192
+ // HTML templates
193
+ function successHtml() {
194
+ return `<!DOCTYPE html>
195
+ <html><head><meta charset="utf-8"><title>OpenSwarm Auth</title>
196
+ <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#f0fdf4}
197
+ .card{text-align:center;padding:2rem;border-radius:12px;background:white;box-shadow:0 2px 8px rgba(0,0,0,0.1)}
198
+ h1{color:#16a34a;margin-bottom:0.5rem}p{color:#666}</style></head>
199
+ <body><div class="card"><h1>✓ 인증 완료</h1><p>OpenSwarm에 GPT OAuth 인증이 완료되었습니다.<br>이 창을 닫아도 됩니다.</p></div></body></html>`;
200
+ }
201
+ function errorHtml(error) {
202
+ return `<!DOCTYPE html>
203
+ <html><head><meta charset="utf-8"><title>OpenSwarm Auth Error</title>
204
+ <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#fef2f2}
205
+ .card{text-align:center;padding:2rem;border-radius:12px;background:white;box-shadow:0 2px 8px rgba(0,0,0,0.1)}
206
+ h1{color:#dc2626;margin-bottom:0.5rem}p{color:#666}code{background:#f3f4f6;padding:0.2rem 0.5rem;border-radius:4px;font-size:0.9rem}</style></head>
207
+ <body><div class="card"><h1>✗ 인증 실패</h1><p>${escapeHtml(error)}</p><p>터미널에서 다시 시도하세요.</p></div></body></html>`;
208
+ }
209
+ function escapeHtml(s) {
210
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
211
+ }
212
+ //# sourceMappingURL=oauthPkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthPkce.js","sourceRoot":"","sources":["../../src/auth/oauthPkce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface AuthProfile {
2
+ type: 'oauth';
3
+ provider: string;
4
+ access: string;
5
+ refresh: string;
6
+ expires: number;
7
+ clientId: string;
8
+ accountId?: string;
9
+ }
10
+ export declare class AuthProfileStore {
11
+ private data;
12
+ constructor();
13
+ private load;
14
+ save(): void;
15
+ getProfile(key: string): AuthProfile | null;
16
+ setProfile(key: string, profile: AuthProfile): void;
17
+ deleteProfile(key: string): boolean;
18
+ listProfiles(): Record<string, AuthProfile>;
19
+ }
20
+ /**
21
+ * 유효한 access token 반환. 만료 임박 시 자동 refresh.
22
+ */
23
+ export declare function ensureValidToken(store: AuthProfileStore, profileKey: string): Promise<string>;
24
+ //# sourceMappingURL=oauthStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthStore.d.ts","sourceRoot":"","sources":["../../src/auth/oauthStore.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAkB;;IAM9B,OAAO,CAAC,IAAI;IAYZ,IAAI,IAAI,IAAI;IASZ,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAKnD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOnC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;CAG5C;AAID;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDnG"}
@@ -0,0 +1,96 @@
1
+ // ============================================
2
+ // OpenSwarm - OAuth Token Store
3
+ // Persistent storage + auto-refresh for OAuth tokens
4
+ // ============================================
5
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ // Constants
9
+ const STORE_DIR = join(homedir(), '.openswarm');
10
+ const STORE_PATH = join(STORE_DIR, 'auth-profiles.json');
11
+ const REFRESH_BUFFER_MS = 5 * 60 * 1000; // 5분 전에 갱신
12
+ const OPENAI_TOKEN_ENDPOINT = 'https://auth.openai.com/oauth/token';
13
+ // AuthProfileStore
14
+ export class AuthProfileStore {
15
+ data;
16
+ constructor() {
17
+ this.data = this.load();
18
+ }
19
+ load() {
20
+ if (!existsSync(STORE_PATH)) {
21
+ return { version: 1, profiles: {} };
22
+ }
23
+ try {
24
+ const raw = readFileSync(STORE_PATH, 'utf-8');
25
+ return JSON.parse(raw);
26
+ }
27
+ catch {
28
+ return { version: 1, profiles: {} };
29
+ }
30
+ }
31
+ save() {
32
+ if (!existsSync(STORE_DIR)) {
33
+ mkdirSync(STORE_DIR, { recursive: true });
34
+ }
35
+ writeFileSync(STORE_PATH, JSON.stringify(this.data, null, 2), 'utf-8');
36
+ // owner read/write only
37
+ chmodSync(STORE_PATH, 0o600);
38
+ }
39
+ getProfile(key) {
40
+ return this.data.profiles[key] ?? null;
41
+ }
42
+ setProfile(key, profile) {
43
+ this.data.profiles[key] = profile;
44
+ this.save();
45
+ }
46
+ deleteProfile(key) {
47
+ if (!(key in this.data.profiles))
48
+ return false;
49
+ delete this.data.profiles[key];
50
+ this.save();
51
+ return true;
52
+ }
53
+ listProfiles() {
54
+ return { ...this.data.profiles };
55
+ }
56
+ }
57
+ // Token refresh
58
+ /**
59
+ * 유효한 access token 반환. 만료 임박 시 자동 refresh.
60
+ */
61
+ export async function ensureValidToken(store, profileKey) {
62
+ const profile = store.getProfile(profileKey);
63
+ if (!profile) {
64
+ throw new Error(`Auth profile "${profileKey}" not found. Run: openswarm auth login --provider gpt`);
65
+ }
66
+ const now = Date.now();
67
+ if (now < profile.expires - REFRESH_BUFFER_MS) {
68
+ return profile.access;
69
+ }
70
+ // Token 갱신
71
+ console.log(`[Auth] Refreshing token for ${profileKey}...`);
72
+ const body = new URLSearchParams({
73
+ grant_type: 'refresh_token',
74
+ refresh_token: profile.refresh,
75
+ client_id: profile.clientId,
76
+ });
77
+ const res = await fetch(OPENAI_TOKEN_ENDPOINT, {
78
+ method: 'POST',
79
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
80
+ body: body.toString(),
81
+ });
82
+ if (!res.ok) {
83
+ const errText = await res.text().catch(() => '');
84
+ throw new Error(`Token refresh failed (${res.status}): ${errText.slice(0, 200)}. Run: openswarm auth login --provider gpt`);
85
+ }
86
+ const tokens = (await res.json());
87
+ profile.access = tokens.access_token;
88
+ if (tokens.refresh_token) {
89
+ profile.refresh = tokens.refresh_token;
90
+ }
91
+ profile.expires = Date.now() + tokens.expires_in * 1000;
92
+ store.setProfile(profileKey, profile);
93
+ console.log(`[Auth] Token refreshed successfully.`);
94
+ return profile.access;
95
+ }
96
+ //# sourceMappingURL=oauthStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthStore.js","sourceRoot":"","sources":["../../src/auth/oauthStore.ts"],"names":[],"mappings":"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"}
@@ -74,24 +74,24 @@ export declare class AutonomousRunner {
74
74
  getTurboMode(): boolean;
75
75
  setTurboMode(enabled: boolean): void;
76
76
  getAdapterSummary(): {
77
- defaultAdapter: "claude" | "codex";
77
+ defaultAdapter: "local" | "claude" | "codex" | "gpt";
78
78
  worker: {
79
- adapter: "claude" | "codex";
79
+ adapter: "local" | "claude" | "codex" | "gpt";
80
80
  model: string;
81
81
  enabled: boolean;
82
82
  };
83
83
  reviewer: {
84
- adapter: "claude" | "codex";
84
+ adapter: "local" | "claude" | "codex" | "gpt";
85
85
  model: string;
86
86
  enabled: boolean;
87
87
  };
88
88
  tester: {
89
- adapter: "claude" | "codex";
89
+ adapter: "local" | "claude" | "codex" | "gpt";
90
90
  model: string;
91
91
  enabled: boolean;
92
92
  } | undefined;
93
93
  documenter: {
94
- adapter: "claude" | "codex";
94
+ adapter: "local" | "claude" | "codex" | "gpt";
95
95
  model: string;
96
96
  enabled: boolean;
97
97
  } | undefined;
@@ -2,7 +2,7 @@ import type { DecisionResult, TaskItem } from '../orchestration/decisionEngine.j
2
2
  import type { ExecutorResult } from '../orchestration/workflow.js';
3
3
  import type { DefaultRolesConfig, ProjectAgentConfig, JobProfile } from '../core/types.js';
4
4
  export interface AutonomousConfig {
5
- defaultAdapter?: 'claude' | 'codex';
5
+ defaultAdapter?: 'claude' | 'codex' | 'gpt' | 'local';
6
6
  linearTeamId: string;
7
7
  allowedProjects: string[];
8
8
  heartbeatSchedule: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runnerTypes.d.ts","sourceRoot":"","sources":["../../src/automation/runnerTypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,mBAAmB,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAClE,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"runnerTypes.d.ts","sourceRoot":"","sources":["../../src/automation/runnerTypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,mBAAmB,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAClE,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * GPT OAuth 로그인 흐름 실행
3
+ */
4
+ export declare function handleAuthLogin(provider: string, opts: {
5
+ clientId?: string;
6
+ port?: number;
7
+ }): Promise<void>;
8
+ /**
9
+ * 저장된 인증 프로필 상태 표시
10
+ */
11
+ export declare function handleAuthStatus(): void;
12
+ /**
13
+ * 인증 프로필 삭제
14
+ */
15
+ export declare function handleAuthLogout(provider: string): void;
16
+ //# sourceMappingURL=authHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authHandler.d.ts","sourceRoot":"","sources":["../../src/cli/authHandler.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CA6BvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAcvD"}