@nahisaho/katashiro-analyzer 0.2.2 → 0.2.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 (153) hide show
  1. package/dist/factcheck/ClaimParser.d.ts +41 -0
  2. package/dist/factcheck/ClaimParser.d.ts.map +1 -0
  3. package/dist/factcheck/ClaimParser.js +149 -0
  4. package/dist/factcheck/ClaimParser.js.map +1 -0
  5. package/dist/factcheck/ConsistencyChecker.d.ts +56 -0
  6. package/dist/factcheck/ConsistencyChecker.d.ts.map +1 -0
  7. package/dist/factcheck/ConsistencyChecker.js +184 -0
  8. package/dist/factcheck/ConsistencyChecker.js.map +1 -0
  9. package/dist/factcheck/EvidenceCollector.d.ts +89 -0
  10. package/dist/factcheck/EvidenceCollector.d.ts.map +1 -0
  11. package/dist/factcheck/EvidenceCollector.js +222 -0
  12. package/dist/factcheck/EvidenceCollector.js.map +1 -0
  13. package/dist/factcheck/FactChecker.d.ts +81 -0
  14. package/dist/factcheck/FactChecker.d.ts.map +1 -0
  15. package/dist/factcheck/FactChecker.js +302 -0
  16. package/dist/factcheck/FactChecker.js.map +1 -0
  17. package/dist/factcheck/TrustedSourceRegistry.d.ts +47 -0
  18. package/dist/factcheck/TrustedSourceRegistry.d.ts.map +1 -0
  19. package/dist/factcheck/TrustedSourceRegistry.js +208 -0
  20. package/dist/factcheck/TrustedSourceRegistry.js.map +1 -0
  21. package/dist/factcheck/VerdictGenerator.d.ts +36 -0
  22. package/dist/factcheck/VerdictGenerator.d.ts.map +1 -0
  23. package/dist/factcheck/VerdictGenerator.js +154 -0
  24. package/dist/factcheck/VerdictGenerator.js.map +1 -0
  25. package/dist/factcheck/index.d.ts +15 -0
  26. package/dist/factcheck/index.d.ts.map +1 -0
  27. package/dist/factcheck/index.js +14 -0
  28. package/dist/factcheck/index.js.map +1 -0
  29. package/dist/factcheck/types.d.ts +265 -0
  30. package/dist/factcheck/types.d.ts.map +1 -0
  31. package/dist/factcheck/types.js +18 -0
  32. package/dist/factcheck/types.js.map +1 -0
  33. package/dist/index.d.ts +5 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interpreter/CodeInterpreter.d.ts +119 -0
  38. package/dist/interpreter/CodeInterpreter.d.ts.map +1 -0
  39. package/dist/interpreter/CodeInterpreter.js +241 -0
  40. package/dist/interpreter/CodeInterpreter.js.map +1 -0
  41. package/dist/interpreter/CodeValidator.d.ts +57 -0
  42. package/dist/interpreter/CodeValidator.d.ts.map +1 -0
  43. package/dist/interpreter/CodeValidator.js +283 -0
  44. package/dist/interpreter/CodeValidator.js.map +1 -0
  45. package/dist/interpreter/ExecutionEngine.d.ts +73 -0
  46. package/dist/interpreter/ExecutionEngine.d.ts.map +1 -0
  47. package/dist/interpreter/ExecutionEngine.js +273 -0
  48. package/dist/interpreter/ExecutionEngine.js.map +1 -0
  49. package/dist/interpreter/ResultFormatter.d.ts +72 -0
  50. package/dist/interpreter/ResultFormatter.d.ts.map +1 -0
  51. package/dist/interpreter/ResultFormatter.js +187 -0
  52. package/dist/interpreter/ResultFormatter.js.map +1 -0
  53. package/dist/interpreter/SandboxManager.d.ts +111 -0
  54. package/dist/interpreter/SandboxManager.d.ts.map +1 -0
  55. package/dist/interpreter/SandboxManager.js +215 -0
  56. package/dist/interpreter/SandboxManager.js.map +1 -0
  57. package/dist/interpreter/SessionManager.d.ts +101 -0
  58. package/dist/interpreter/SessionManager.d.ts.map +1 -0
  59. package/dist/interpreter/SessionManager.js +184 -0
  60. package/dist/interpreter/SessionManager.js.map +1 -0
  61. package/dist/interpreter/index.d.ts +13 -0
  62. package/dist/interpreter/index.d.ts.map +1 -0
  63. package/dist/interpreter/index.js +13 -0
  64. package/dist/interpreter/index.js.map +1 -0
  65. package/dist/interpreter/types.d.ts +311 -0
  66. package/dist/interpreter/types.d.ts.map +1 -0
  67. package/dist/interpreter/types.js +91 -0
  68. package/dist/interpreter/types.js.map +1 -0
  69. package/dist/moa/AgentOrchestrator.d.ts +53 -0
  70. package/dist/moa/AgentOrchestrator.d.ts.map +1 -0
  71. package/dist/moa/AgentOrchestrator.js +164 -0
  72. package/dist/moa/AgentOrchestrator.js.map +1 -0
  73. package/dist/moa/ConsensusCalculator.d.ts +76 -0
  74. package/dist/moa/ConsensusCalculator.d.ts.map +1 -0
  75. package/dist/moa/ConsensusCalculator.js +221 -0
  76. package/dist/moa/ConsensusCalculator.js.map +1 -0
  77. package/dist/moa/MoAEngine.d.ts +97 -0
  78. package/dist/moa/MoAEngine.d.ts.map +1 -0
  79. package/dist/moa/MoAEngine.js +303 -0
  80. package/dist/moa/MoAEngine.js.map +1 -0
  81. package/dist/moa/ResponseAggregator.d.ts +65 -0
  82. package/dist/moa/ResponseAggregator.d.ts.map +1 -0
  83. package/dist/moa/ResponseAggregator.js +274 -0
  84. package/dist/moa/ResponseAggregator.js.map +1 -0
  85. package/dist/moa/TaskAnalyzer.d.ts +30 -0
  86. package/dist/moa/TaskAnalyzer.d.ts.map +1 -0
  87. package/dist/moa/TaskAnalyzer.js +116 -0
  88. package/dist/moa/TaskAnalyzer.js.map +1 -0
  89. package/dist/moa/index.d.ts +19 -0
  90. package/dist/moa/index.d.ts.map +1 -0
  91. package/dist/moa/index.js +18 -0
  92. package/dist/moa/index.js.map +1 -0
  93. package/dist/moa/types.d.ts +261 -0
  94. package/dist/moa/types.d.ts.map +1 -0
  95. package/dist/moa/types.js +70 -0
  96. package/dist/moa/types.js.map +1 -0
  97. package/dist/research/ConvergenceDetector.d.ts +37 -0
  98. package/dist/research/ConvergenceDetector.d.ts.map +1 -0
  99. package/dist/research/ConvergenceDetector.js +62 -0
  100. package/dist/research/ConvergenceDetector.js.map +1 -0
  101. package/dist/research/DeepResearchOrchestrator.d.ts +63 -0
  102. package/dist/research/DeepResearchOrchestrator.d.ts.map +1 -0
  103. package/dist/research/DeepResearchOrchestrator.js +283 -0
  104. package/dist/research/DeepResearchOrchestrator.js.map +1 -0
  105. package/dist/research/FindingIntegrator.d.ts +42 -0
  106. package/dist/research/FindingIntegrator.d.ts.map +1 -0
  107. package/dist/research/FindingIntegrator.js +239 -0
  108. package/dist/research/FindingIntegrator.js.map +1 -0
  109. package/dist/research/GapAnalyzer.d.ts +41 -0
  110. package/dist/research/GapAnalyzer.d.ts.map +1 -0
  111. package/dist/research/GapAnalyzer.js +145 -0
  112. package/dist/research/GapAnalyzer.js.map +1 -0
  113. package/dist/research/QueryGenerator.d.ts +38 -0
  114. package/dist/research/QueryGenerator.d.ts.map +1 -0
  115. package/dist/research/QueryGenerator.js +79 -0
  116. package/dist/research/QueryGenerator.js.map +1 -0
  117. package/dist/research/index.d.ts +14 -0
  118. package/dist/research/index.d.ts.map +1 -0
  119. package/dist/research/index.js +13 -0
  120. package/dist/research/index.js.map +1 -0
  121. package/dist/research/types.d.ts +215 -0
  122. package/dist/research/types.d.ts.map +1 -0
  123. package/dist/research/types.js +18 -0
  124. package/dist/research/types.js.map +1 -0
  125. package/dist/trend/ForecastEngine.d.ts +65 -0
  126. package/dist/trend/ForecastEngine.d.ts.map +1 -0
  127. package/dist/trend/ForecastEngine.js +260 -0
  128. package/dist/trend/ForecastEngine.js.map +1 -0
  129. package/dist/trend/TimeSeriesCollector.d.ts +42 -0
  130. package/dist/trend/TimeSeriesCollector.d.ts.map +1 -0
  131. package/dist/trend/TimeSeriesCollector.js +172 -0
  132. package/dist/trend/TimeSeriesCollector.js.map +1 -0
  133. package/dist/trend/TrendAnalyzer.d.ts +72 -0
  134. package/dist/trend/TrendAnalyzer.d.ts.map +1 -0
  135. package/dist/trend/TrendAnalyzer.js +291 -0
  136. package/dist/trend/TrendAnalyzer.js.map +1 -0
  137. package/dist/trend/TrendDetector.d.ts +67 -0
  138. package/dist/trend/TrendDetector.d.ts.map +1 -0
  139. package/dist/trend/TrendDetector.js +325 -0
  140. package/dist/trend/TrendDetector.js.map +1 -0
  141. package/dist/trend/VisualizationGenerator.d.ts +75 -0
  142. package/dist/trend/VisualizationGenerator.d.ts.map +1 -0
  143. package/dist/trend/VisualizationGenerator.js +294 -0
  144. package/dist/trend/VisualizationGenerator.js.map +1 -0
  145. package/dist/trend/index.d.ts +16 -0
  146. package/dist/trend/index.d.ts.map +1 -0
  147. package/dist/trend/index.js +18 -0
  148. package/dist/trend/index.js.map +1 -0
  149. package/dist/trend/types.d.ts +279 -0
  150. package/dist/trend/types.d.ts.map +1 -0
  151. package/dist/trend/types.js +17 -0
  152. package/dist/trend/types.js.map +1 -0
  153. package/package.json +4 -2
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Sandbox Manager
3
+ * サンドボックス環境の管理
4
+ * REQ-ANALYZE-009: コードインタープリタ機能
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import * as os from 'os';
9
+ import { CodeInterpreterError, INTERPRETER_ERROR_CODES, } from './types.js';
10
+ /**
11
+ * サンドボックスマネージャー
12
+ *
13
+ * コード実行用のサンドボックス環境を管理する。
14
+ * 現在はファイルシステムベースの簡易サンドボックスを提供。
15
+ * 将来的にはDocker/gVisorによる本格的な分離をサポート予定。
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const manager = new SandboxManager();
20
+ *
21
+ * // サンドボックス作成
22
+ * const sandbox = await manager.create({
23
+ * workDir: '/tmp/sandbox',
24
+ * timeout: 30000,
25
+ * memoryLimit: 256,
26
+ * allowNetwork: false,
27
+ * allowedHosts: [],
28
+ * env: {},
29
+ * });
30
+ *
31
+ * // ファイルを配置
32
+ * await manager.writeFile(sandbox.id, 'script.py', 'print("hello")');
33
+ *
34
+ * // クリーンアップ
35
+ * await manager.destroy(sandbox.id);
36
+ * ```
37
+ */
38
+ export class SandboxManager {
39
+ sandboxes = new Map();
40
+ baseDir;
41
+ constructor(baseDir) {
42
+ this.baseDir = baseDir || path.join(os.tmpdir(), 'katashiro-sandbox');
43
+ }
44
+ /**
45
+ * サンドボックスを作成
46
+ */
47
+ async create(config) {
48
+ const id = this.generateId();
49
+ const workDir = path.join(this.baseDir, id);
50
+ // ディレクトリ作成
51
+ await fs.mkdir(workDir, { recursive: true });
52
+ const sandbox = {
53
+ id,
54
+ workDir,
55
+ config,
56
+ createdAt: new Date(),
57
+ active: true,
58
+ };
59
+ this.sandboxes.set(id, sandbox);
60
+ return sandbox;
61
+ }
62
+ /**
63
+ * サンドボックスを取得
64
+ */
65
+ get(id) {
66
+ return this.sandboxes.get(id);
67
+ }
68
+ /**
69
+ * サンドボックスを破棄
70
+ */
71
+ async destroy(id) {
72
+ const sandbox = this.sandboxes.get(id);
73
+ if (!sandbox)
74
+ return;
75
+ sandbox.active = false;
76
+ try {
77
+ // ディレクトリを削除
78
+ await fs.rm(sandbox.workDir, { recursive: true, force: true });
79
+ }
80
+ catch {
81
+ // クリーンアップエラーは無視
82
+ }
83
+ this.sandboxes.delete(id);
84
+ }
85
+ /**
86
+ * すべてのサンドボックスを破棄
87
+ */
88
+ async destroyAll() {
89
+ const ids = Array.from(this.sandboxes.keys());
90
+ await Promise.all(ids.map((id) => this.destroy(id)));
91
+ }
92
+ /**
93
+ * ファイルを書き込み
94
+ */
95
+ async writeFile(sandboxId, filename, content) {
96
+ const sandbox = this.sandboxes.get(sandboxId);
97
+ if (!sandbox) {
98
+ throw new CodeInterpreterError(INTERPRETER_ERROR_CODES.SANDBOX_ERROR, `Sandbox not found: ${sandboxId}`);
99
+ }
100
+ // パストラバーサル防止
101
+ const safeName = path.basename(filename);
102
+ const filePath = path.join(sandbox.workDir, safeName);
103
+ await fs.writeFile(filePath, content);
104
+ return filePath;
105
+ }
106
+ /**
107
+ * ファイルを読み込み
108
+ */
109
+ async readFile(sandboxId, filename) {
110
+ const sandbox = this.sandboxes.get(sandboxId);
111
+ if (!sandbox) {
112
+ throw new CodeInterpreterError(INTERPRETER_ERROR_CODES.SANDBOX_ERROR, `Sandbox not found: ${sandboxId}`);
113
+ }
114
+ const safeName = path.basename(filename);
115
+ const filePath = path.join(sandbox.workDir, safeName);
116
+ return fs.readFile(filePath);
117
+ }
118
+ /**
119
+ * ディレクトリ内のファイルを一覧
120
+ */
121
+ async listFiles(sandboxId) {
122
+ const sandbox = this.sandboxes.get(sandboxId);
123
+ if (!sandbox) {
124
+ throw new CodeInterpreterError(INTERPRETER_ERROR_CODES.SANDBOX_ERROR, `Sandbox not found: ${sandboxId}`);
125
+ }
126
+ try {
127
+ const entries = await fs.readdir(sandbox.workDir);
128
+ return entries;
129
+ }
130
+ catch {
131
+ return [];
132
+ }
133
+ }
134
+ /**
135
+ * ファイルを収集(出力ファイル取得用)
136
+ */
137
+ async collectFiles(sandboxId, excludePatterns = [/^script\./]) {
138
+ const sandbox = this.sandboxes.get(sandboxId);
139
+ if (!sandbox)
140
+ return [];
141
+ const files = [];
142
+ try {
143
+ const entries = await fs.readdir(sandbox.workDir, { withFileTypes: true });
144
+ for (const entry of entries) {
145
+ if (!entry.isFile())
146
+ continue;
147
+ // 除外パターンチェック
148
+ const shouldExclude = excludePatterns.some((p) => p.test(entry.name));
149
+ if (shouldExclude)
150
+ continue;
151
+ const filePath = path.join(sandbox.workDir, entry.name);
152
+ const content = await fs.readFile(filePath);
153
+ const stats = await fs.stat(filePath);
154
+ files.push({
155
+ name: entry.name,
156
+ content,
157
+ size: stats.size,
158
+ });
159
+ }
160
+ }
161
+ catch {
162
+ // エラーは無視
163
+ }
164
+ return files;
165
+ }
166
+ /**
167
+ * コードファイル名を取得
168
+ */
169
+ getCodeFileName(language) {
170
+ const extensions = {
171
+ python: 'script.py',
172
+ javascript: 'script.js',
173
+ typescript: 'script.ts',
174
+ shell: 'script.sh',
175
+ };
176
+ return extensions[language];
177
+ }
178
+ /**
179
+ * 実行コマンドを取得
180
+ */
181
+ getExecutionCommand(language, codeFile) {
182
+ const commands = {
183
+ python: ['python3', [codeFile]],
184
+ javascript: ['node', [codeFile]],
185
+ typescript: ['npx', ['ts-node', codeFile]],
186
+ shell: ['bash', [codeFile]],
187
+ };
188
+ return commands[language];
189
+ }
190
+ /**
191
+ * ランタイムバージョンを取得
192
+ */
193
+ getRuntimeVersion(language) {
194
+ const versions = {
195
+ python: '3.11',
196
+ javascript: '20.x',
197
+ typescript: '5.x',
198
+ shell: 'bash 5.x',
199
+ };
200
+ return versions[language];
201
+ }
202
+ /**
203
+ * アクティブなサンドボックス数
204
+ */
205
+ get activeCount() {
206
+ return Array.from(this.sandboxes.values()).filter((s) => s.active).length;
207
+ }
208
+ /**
209
+ * IDを生成
210
+ */
211
+ generateId() {
212
+ return `sandbox-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
213
+ }
214
+ }
215
+ //# sourceMappingURL=SandboxManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SandboxManager.js","sourceRoot":"","sources":["../../src/interpreter/SandboxManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Session Manager
3
+ * REPLセッション管理
4
+ * REQ-ANALYZE-009: コードインタープリタ機能
5
+ */
6
+ import { ExecutionSession, SupportedLanguage, SessionHistoryEntry } from './types.js';
7
+ /**
8
+ * セッションマネージャー
9
+ *
10
+ * REPLモード用のセッションを管理する。
11
+ * セッション内では変数やインポートが保持される。
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const manager = new SessionManager();
16
+ *
17
+ * // セッション作成
18
+ * const session = await manager.create('python');
19
+ *
20
+ * // セッション情報
21
+ * console.log(session.id); // "session-xxx"
22
+ * console.log(session.language); // "python"
23
+ * console.log(session.state); // "active"
24
+ *
25
+ * // 履歴追加
26
+ * manager.addHistory(session.id, {
27
+ * input: 'x = 1',
28
+ * output: '',
29
+ * executedAt: new Date(),
30
+ * success: true,
31
+ * });
32
+ *
33
+ * // セッション終了
34
+ * await manager.terminate(session.id);
35
+ * ```
36
+ */
37
+ export declare class SessionManager {
38
+ private sessions;
39
+ private readonly maxIdleTime;
40
+ /**
41
+ * セッションを作成
42
+ */
43
+ create(language: SupportedLanguage): Promise<ExecutionSession>;
44
+ /**
45
+ * セッションを取得
46
+ */
47
+ get(id: string): ExecutionSession | undefined;
48
+ /**
49
+ * セッションが存在するかチェック
50
+ */
51
+ has(id: string): boolean;
52
+ /**
53
+ * セッションを終了
54
+ */
55
+ terminate(id: string): Promise<void>;
56
+ /**
57
+ * セッションをアクティブ化
58
+ */
59
+ activate(id: string): void;
60
+ /**
61
+ * 履歴を追加
62
+ */
63
+ addHistory(id: string, entry: SessionHistoryEntry): void;
64
+ /**
65
+ * グローバル変数を設定
66
+ */
67
+ setGlobal(id: string, key: string, value: unknown): void;
68
+ /**
69
+ * グローバル変数を取得
70
+ */
71
+ getGlobal(id: string, key: string): unknown;
72
+ /**
73
+ * すべてのグローバル変数を取得
74
+ */
75
+ getAllGlobals(id: string): Record<string, unknown>;
76
+ /**
77
+ * セッション一覧
78
+ */
79
+ list(): ExecutionSession[];
80
+ /**
81
+ * アクティブセッション一覧
82
+ */
83
+ listActive(): ExecutionSession[];
84
+ /**
85
+ * すべてのセッションを終了
86
+ */
87
+ terminateAll(): Promise<void>;
88
+ /**
89
+ * アイドルセッションをクリーンアップ
90
+ */
91
+ cleanupIdle(): Promise<number>;
92
+ /**
93
+ * セッション数
94
+ */
95
+ get count(): number;
96
+ /**
97
+ * IDを生成
98
+ */
99
+ private generateId;
100
+ }
101
+ //# sourceMappingURL=SessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../src/interpreter/SessionManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAE9C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBpE;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAc7C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ1B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAaxD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQxD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKlD;;OAEG;IACH,IAAI,IAAI,gBAAgB,EAAE;IAI1B;;OAEG;IACH,UAAU,IAAI,gBAAgB,EAAE;IAIhC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBpC;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Session Manager
3
+ * REPLセッション管理
4
+ * REQ-ANALYZE-009: コードインタープリタ機能
5
+ */
6
+ /**
7
+ * セッションマネージャー
8
+ *
9
+ * REPLモード用のセッションを管理する。
10
+ * セッション内では変数やインポートが保持される。
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const manager = new SessionManager();
15
+ *
16
+ * // セッション作成
17
+ * const session = await manager.create('python');
18
+ *
19
+ * // セッション情報
20
+ * console.log(session.id); // "session-xxx"
21
+ * console.log(session.language); // "python"
22
+ * console.log(session.state); // "active"
23
+ *
24
+ * // 履歴追加
25
+ * manager.addHistory(session.id, {
26
+ * input: 'x = 1',
27
+ * output: '',
28
+ * executedAt: new Date(),
29
+ * success: true,
30
+ * });
31
+ *
32
+ * // セッション終了
33
+ * await manager.terminate(session.id);
34
+ * ```
35
+ */
36
+ export class SessionManager {
37
+ sessions = new Map();
38
+ maxIdleTime = 30 * 60 * 1000; // 30分
39
+ /**
40
+ * セッションを作成
41
+ */
42
+ async create(language) {
43
+ const id = this.generateId();
44
+ const now = new Date();
45
+ const session = {
46
+ id,
47
+ language,
48
+ state: 'active',
49
+ history: [],
50
+ globals: {},
51
+ createdAt: now,
52
+ lastActivity: now,
53
+ };
54
+ this.sessions.set(id, session);
55
+ return session;
56
+ }
57
+ /**
58
+ * セッションを取得
59
+ */
60
+ get(id) {
61
+ const session = this.sessions.get(id);
62
+ if (session) {
63
+ // アイドルタイムアウトチェック
64
+ const idleTime = Date.now() - session.lastActivity.getTime();
65
+ if (idleTime > this.maxIdleTime && session.state === 'active') {
66
+ session.state = 'idle';
67
+ }
68
+ }
69
+ return session;
70
+ }
71
+ /**
72
+ * セッションが存在するかチェック
73
+ */
74
+ has(id) {
75
+ return this.sessions.has(id);
76
+ }
77
+ /**
78
+ * セッションを終了
79
+ */
80
+ async terminate(id) {
81
+ const session = this.sessions.get(id);
82
+ if (session) {
83
+ session.state = 'terminated';
84
+ this.sessions.delete(id);
85
+ }
86
+ }
87
+ /**
88
+ * セッションをアクティブ化
89
+ */
90
+ activate(id) {
91
+ const session = this.sessions.get(id);
92
+ if (session && session.state !== 'terminated') {
93
+ session.state = 'active';
94
+ session.lastActivity = new Date();
95
+ }
96
+ }
97
+ /**
98
+ * 履歴を追加
99
+ */
100
+ addHistory(id, entry) {
101
+ const session = this.sessions.get(id);
102
+ if (session) {
103
+ session.history.push(entry);
104
+ session.lastActivity = new Date();
105
+ // 履歴の上限(100エントリ)
106
+ if (session.history.length > 100) {
107
+ session.history = session.history.slice(-100);
108
+ }
109
+ }
110
+ }
111
+ /**
112
+ * グローバル変数を設定
113
+ */
114
+ setGlobal(id, key, value) {
115
+ const session = this.sessions.get(id);
116
+ if (session) {
117
+ session.globals[key] = value;
118
+ session.lastActivity = new Date();
119
+ }
120
+ }
121
+ /**
122
+ * グローバル変数を取得
123
+ */
124
+ getGlobal(id, key) {
125
+ const session = this.sessions.get(id);
126
+ return session?.globals[key];
127
+ }
128
+ /**
129
+ * すべてのグローバル変数を取得
130
+ */
131
+ getAllGlobals(id) {
132
+ const session = this.sessions.get(id);
133
+ return session?.globals || {};
134
+ }
135
+ /**
136
+ * セッション一覧
137
+ */
138
+ list() {
139
+ return Array.from(this.sessions.values());
140
+ }
141
+ /**
142
+ * アクティブセッション一覧
143
+ */
144
+ listActive() {
145
+ return this.list().filter((s) => s.state === 'active');
146
+ }
147
+ /**
148
+ * すべてのセッションを終了
149
+ */
150
+ async terminateAll() {
151
+ const ids = Array.from(this.sessions.keys());
152
+ await Promise.all(ids.map((id) => this.terminate(id)));
153
+ }
154
+ /**
155
+ * アイドルセッションをクリーンアップ
156
+ */
157
+ async cleanupIdle() {
158
+ const now = Date.now();
159
+ const toRemove = [];
160
+ for (const [id, session] of this.sessions) {
161
+ const idleTime = now - session.lastActivity.getTime();
162
+ if (idleTime > this.maxIdleTime) {
163
+ toRemove.push(id);
164
+ }
165
+ }
166
+ for (const id of toRemove) {
167
+ await this.terminate(id);
168
+ }
169
+ return toRemove.length;
170
+ }
171
+ /**
172
+ * セッション数
173
+ */
174
+ get count() {
175
+ return this.sessions.size;
176
+ }
177
+ /**
178
+ * IDを生成
179
+ */
180
+ generateId() {
181
+ return `session-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
182
+ }
183
+ }
184
+ //# sourceMappingURL=SessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../src/interpreter/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code Interpreter Module
3
+ * REQ-ANALYZE-009: コードインタープリタ機能
4
+ */
5
+ export type { SupportedLanguage, ExecutionMode, ErrorType, SessionState, InputFile, OutputFile, GeneratedImage, ExecutionLog, ExecutionError, SecurityConstraints, ExecutionMetadata, ExecutionRequest, ExecutionResult, CodeAnalysis, ValidationResult, SessionHistoryEntry, ExecutionSession, SandboxConfig, SandboxExecutionResult, } from './types.js';
6
+ export { BLOCKED_PYTHON_MODULES, ALLOWED_PYTHON_MODULES, DEFAULT_EXECUTION_CONFIG, CodeInterpreterError, INTERPRETER_ERROR_CODES, } from './types.js';
7
+ export { CodeInterpreter } from './CodeInterpreter.js';
8
+ export { CodeValidator } from './CodeValidator.js';
9
+ export { SandboxManager, type SandboxInstance } from './SandboxManager.js';
10
+ export { ExecutionEngine, type ExecutionOptions } from './ExecutionEngine.js';
11
+ export { ResultFormatter, type FormatOptions } from './ResultFormatter.js';
12
+ export { SessionManager } from './SessionManager.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interpreter/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code Interpreter Module
3
+ * REQ-ANALYZE-009: コードインタープリタ機能
4
+ */
5
+ export { BLOCKED_PYTHON_MODULES, ALLOWED_PYTHON_MODULES, DEFAULT_EXECUTION_CONFIG, CodeInterpreterError, INTERPRETER_ERROR_CODES, } from './types.js';
6
+ // Classes
7
+ export { CodeInterpreter } from './CodeInterpreter.js';
8
+ export { CodeValidator } from './CodeValidator.js';
9
+ export { SandboxManager } from './SandboxManager.js';
10
+ export { ExecutionEngine } from './ExecutionEngine.js';
11
+ export { ResultFormatter } from './ResultFormatter.js';
12
+ export { SessionManager } from './SessionManager.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interpreter/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,UAAU;AACV,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAsB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}