aiexecode 1.0.92 → 1.0.96
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.
Potentially problematic release.
This version of aiexecode might be problematic. Click here for more details.
- package/README.md +210 -87
- package/index.js +33 -1
- package/package.json +3 -3
- package/payload_viewer/out/404/index.html +1 -1
- package/payload_viewer/out/404.html +1 -1
- package/payload_viewer/out/_next/static/chunks/{37d0cd2587a38f79.js → b6c0459f3789d25c.js} +1 -1
- package/payload_viewer/out/_next/static/chunks/b75131b58f8ca46a.css +3 -0
- package/payload_viewer/out/index.html +1 -1
- package/payload_viewer/out/index.txt +3 -3
- package/payload_viewer/web_server.js +361 -0
- package/src/LLMClient/client.js +392 -16
- package/src/LLMClient/converters/responses-to-claude.js +67 -18
- package/src/LLMClient/converters/responses-to-zai.js +608 -0
- package/src/LLMClient/errors.js +18 -4
- package/src/LLMClient/index.js +5 -0
- package/src/ai_based/completion_judge.js +35 -4
- package/src/ai_based/orchestrator.js +146 -35
- package/src/commands/agents.js +70 -0
- package/src/commands/commands.js +51 -0
- package/src/commands/debug.js +52 -0
- package/src/commands/help.js +11 -1
- package/src/commands/model.js +43 -7
- package/src/commands/skills.js +46 -0
- package/src/config/ai_models.js +96 -5
- package/src/config/constants.js +71 -0
- package/src/frontend/App.js +4 -5
- package/src/frontend/components/ConversationItem.js +25 -24
- package/src/frontend/components/HelpView.js +106 -2
- package/src/frontend/components/SetupWizard.js +53 -8
- package/src/frontend/utils/syntaxHighlighter.js +4 -4
- package/src/frontend/utils/toolUIFormatter.js +261 -0
- package/src/system/agents_loader.js +289 -0
- package/src/system/ai_request.js +147 -9
- package/src/system/command_parser.js +33 -3
- package/src/system/conversation_state.js +265 -0
- package/src/system/custom_command_loader.js +386 -0
- package/src/system/session.js +59 -35
- package/src/system/skill_loader.js +318 -0
- package/src/system/tool_approval.js +10 -0
- package/src/tools/file_reader.js +49 -9
- package/src/tools/glob.js +0 -3
- package/src/tools/ripgrep.js +5 -7
- package/src/tools/skill_tool.js +122 -0
- package/src/tools/web_downloader.js +0 -3
- package/src/util/clone.js +174 -0
- package/src/util/config.js +38 -2
- package/src/util/config_migration.js +174 -0
- package/src/util/path_validator.js +178 -0
- package/src/util/prompt_loader.js +68 -1
- package/src/util/safe_fs.js +43 -3
- package/payload_viewer/out/_next/static/chunks/ecd2072ebf41611f.css +0 -3
- /package/payload_viewer/out/_next/static/{d0-fu2rgYnshgGFPxr1CR → lHmNygVpv4N1VR0LdnwkJ}/_buildManifest.js +0 -0
- /package/payload_viewer/out/_next/static/{d0-fu2rgYnshgGFPxr1CR → lHmNygVpv4N1VR0LdnwkJ}/_clientMiddlewareManifest.json +0 -0
- /package/payload_viewer/out/_next/static/{d0-fu2rgYnshgGFPxr1CR → lHmNygVpv4N1VR0LdnwkJ}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
|
|
5
|
-
**AI-Powered Autonomous Coding
|
|
5
|
+
**AI-Powered Autonomous Coding Agent**
|
|
6
6
|
|
|
7
7
|
*by 코드깎는노인*
|
|
8
8
|
|
|
@@ -12,19 +12,26 @@
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
## What is
|
|
15
|
+
## What is AIEXEcode?
|
|
16
16
|
|
|
17
|
-
**AIEXEcode** is a CLI
|
|
17
|
+
**AIEXEcode** is a CLI-based AI coding agent that autonomously handles software development tasks. Simply describe what you want in natural language, and the AI will analyze, plan, and execute the work for you.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### Key Features
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
- **Natural Language Interface**: Just describe what you want - no complex commands needed
|
|
22
|
+
- **Autonomous Execution**: AI analyzes code, creates plans, and executes them automatically
|
|
23
|
+
- **Session Management**: Pause and resume work anytime with session IDs
|
|
24
|
+
- **Log Viewer**: Web-based UI to review AI's actions and decisions
|
|
25
|
+
- **MCP Integration**: Extend capabilities with Model Context Protocol servers
|
|
26
|
+
- **Multi-Provider Support**: Works with OpenAI and Z.AI models
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
+
### What You Can Do
|
|
29
|
+
|
|
30
|
+
- **Bug Fixes**: "Fix the authentication error in login.js"
|
|
31
|
+
- **Add Features**: "Create a user profile editing feature"
|
|
32
|
+
- **Refactoring**: "Clean up the auth module for better readability"
|
|
33
|
+
- **Write Tests**: "Write unit tests for all API endpoints"
|
|
34
|
+
- **Documentation**: "Add JSDoc comments to main functions"
|
|
28
35
|
|
|
29
36
|
---
|
|
30
37
|
|
|
@@ -32,13 +39,14 @@ Just say things like "fix the lint errors in this file" or "add login functional
|
|
|
32
39
|
|
|
33
40
|
### System Requirements
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
| Requirement | Details |
|
|
43
|
+
|-------------|---------|
|
|
44
|
+
| **OS** | macOS, Linux (Windows not supported) |
|
|
45
|
+
| **Node.js** | 18.0.0 or higher |
|
|
46
|
+
| **npm** | 8.0.0 or higher |
|
|
47
|
+
| **ripgrep** | Required for code search |
|
|
40
48
|
|
|
41
|
-
### 1
|
|
49
|
+
### Step 1: Install ripgrep
|
|
42
50
|
|
|
43
51
|
**macOS:**
|
|
44
52
|
```bash
|
|
@@ -60,177 +68,292 @@ sudo dnf install ripgrep
|
|
|
60
68
|
sudo pacman -S ripgrep
|
|
61
69
|
```
|
|
62
70
|
|
|
63
|
-
### 2
|
|
71
|
+
### Step 2: Install AIEXEcode
|
|
64
72
|
|
|
65
73
|
```bash
|
|
66
74
|
npm install -g aiexecode
|
|
67
75
|
```
|
|
68
76
|
|
|
69
|
-
Done! The `aiexecode` command is now available everywhere.
|
|
70
|
-
|
|
71
77
|
---
|
|
72
78
|
|
|
73
79
|
## Getting Started
|
|
74
80
|
|
|
75
|
-
###
|
|
81
|
+
### First Run Setup
|
|
76
82
|
|
|
77
83
|
```bash
|
|
78
84
|
aiexecode
|
|
79
85
|
```
|
|
80
86
|
|
|
81
|
-
On first run, the setup wizard
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
On first run, the setup wizard will guide you through:
|
|
88
|
+
|
|
89
|
+
1. **Enter API Key** - Your OpenAI or Z.AI API key
|
|
90
|
+
2. **Select Model** - Choose from available models
|
|
91
|
+
3. **Reasoning Effort** (OpenAI only) - Set AI's thinking depth
|
|
84
92
|
|
|
85
93
|
**Where to get API keys:**
|
|
86
|
-
- OpenAI
|
|
87
|
-
-
|
|
94
|
+
- **OpenAI**: https://platform.openai.com/account/api-keys
|
|
95
|
+
- **Z.AI**: https://z.ai/manage-apikey/apikey-list
|
|
88
96
|
|
|
89
|
-
###
|
|
97
|
+
### Basic Usage
|
|
90
98
|
|
|
91
99
|
**Interactive Mode (Recommended):**
|
|
92
100
|
```bash
|
|
93
101
|
aiexecode
|
|
94
102
|
```
|
|
95
103
|
|
|
96
|
-
|
|
104
|
+
Then enter your requests naturally:
|
|
97
105
|
```
|
|
98
|
-
>
|
|
99
|
-
>
|
|
106
|
+
> Fix all lint errors in src/
|
|
107
|
+
> Add input validation to the signup form
|
|
100
108
|
> /exit
|
|
101
109
|
```
|
|
102
110
|
|
|
103
|
-
**
|
|
111
|
+
**Direct Execution:**
|
|
112
|
+
```bash
|
|
113
|
+
aiexecode "create a REST API for user management"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Supported Models
|
|
119
|
+
|
|
120
|
+
### OpenAI (GPT-5 Series)
|
|
121
|
+
|
|
122
|
+
| Model | Description | Context | Max Output |
|
|
123
|
+
|-------|-------------|---------|------------|
|
|
124
|
+
| `gpt-5` | Full-featured model | 400K | 128K |
|
|
125
|
+
| `gpt-5-mini` | Default, balanced | 400K | 128K |
|
|
126
|
+
| `gpt-5-nano` | Lightweight, fast | 400K | 128K |
|
|
127
|
+
| `gpt-5-codex` | Coding optimized | 400K | 128K |
|
|
128
|
+
|
|
129
|
+
- Supports **Reasoning Effort**: minimal, low, medium (default), high
|
|
130
|
+
|
|
131
|
+
### Z.AI (GLM Series)
|
|
132
|
+
|
|
133
|
+
| Model | Description | Context | Max Output |
|
|
134
|
+
|-------|-------------|---------|------------|
|
|
135
|
+
| `glm-4.7` | Latest model | 128K | 8K |
|
|
136
|
+
| `glm-4.5-air` | Fast, lightweight | 128K | 8K |
|
|
137
|
+
| `glm-4.5` | Standard model | 128K | 8K |
|
|
138
|
+
|
|
139
|
+
- Supports **Thinking Mode**, prompt caching, and server-side web search
|
|
140
|
+
|
|
141
|
+
Use `/model list` to see all models or `/model <name>` to switch.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Commands
|
|
146
|
+
|
|
147
|
+
### CLI Options
|
|
148
|
+
|
|
104
149
|
```bash
|
|
105
|
-
aiexecode
|
|
150
|
+
aiexecode # Interactive mode
|
|
151
|
+
aiexecode "task description" # Direct execution
|
|
152
|
+
aiexecode -c <session_id> # Continue previous session
|
|
153
|
+
aiexecode -c <session_id> "new task" # Continue with new task
|
|
154
|
+
aiexecode --init # Initialize project prompts
|
|
155
|
+
aiexecode --viewer # Start log viewer (port 3300)
|
|
156
|
+
aiexecode --viewer --port 8080 # Log viewer on custom port
|
|
157
|
+
aiexecode --dangerously-skip-permissions "task" # Skip approval prompts
|
|
106
158
|
```
|
|
107
159
|
|
|
108
|
-
|
|
160
|
+
### Interactive Commands
|
|
161
|
+
|
|
162
|
+
| Command | Description |
|
|
163
|
+
|---------|-------------|
|
|
164
|
+
| `/help` | Show all available commands |
|
|
165
|
+
| `/exit` | Exit the application |
|
|
166
|
+
| `/clear` | Clear the screen |
|
|
167
|
+
| `/apikey` | Change API key |
|
|
168
|
+
| `/model` | Select AI model |
|
|
169
|
+
| `/model list` | List all available models |
|
|
170
|
+
| `/reasoning_effort` | Set reasoning level (OpenAI) |
|
|
171
|
+
| `/tools` | Enable/disable tools |
|
|
172
|
+
| `/mcp` | View MCP server status |
|
|
173
|
+
| `/agents` | Show AGENTS.md content |
|
|
174
|
+
| `/skills` | List project skills |
|
|
175
|
+
| `/commands` | List custom commands |
|
|
109
176
|
|
|
110
177
|
---
|
|
111
178
|
|
|
112
|
-
##
|
|
179
|
+
## Session Management
|
|
113
180
|
|
|
114
|
-
|
|
181
|
+
AIEXEcode automatically saves your work sessions, allowing you to pause and resume later.
|
|
115
182
|
|
|
116
|
-
|
|
183
|
+
### How It Works
|
|
117
184
|
|
|
118
185
|
```bash
|
|
119
|
-
#
|
|
186
|
+
# Start a new session
|
|
120
187
|
aiexecode
|
|
121
|
-
> Create large file processing feature
|
|
122
|
-
# Output:
|
|
188
|
+
> Create a large file processing feature
|
|
189
|
+
# Output: Session ID: abc1234567890def
|
|
123
190
|
|
|
124
191
|
# Continue later
|
|
125
192
|
aiexecode -c abc1234567890def
|
|
126
|
-
> Now add error handling
|
|
193
|
+
> Now add error handling
|
|
127
194
|
```
|
|
128
195
|
|
|
129
|
-
|
|
196
|
+
Sessions are stored in `.aiexe/<session_id>/` and include:
|
|
197
|
+
- Complete conversation history
|
|
198
|
+
- Tool execution logs
|
|
199
|
+
- File modification records
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Log Viewer
|
|
130
204
|
|
|
131
|
-
|
|
205
|
+
Review what the AI did through a web-based interface.
|
|
132
206
|
|
|
133
207
|
```bash
|
|
134
208
|
aiexecode --viewer
|
|
135
209
|
```
|
|
136
210
|
|
|
137
|
-
Open `http://localhost:3300`
|
|
211
|
+
Open `http://localhost:3300` to see:
|
|
138
212
|
- Commands executed by AI
|
|
139
213
|
- File modification history
|
|
140
214
|
- AI's thinking process
|
|
215
|
+
- API request/response logs
|
|
141
216
|
|
|
142
|
-
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## MCP Server Integration
|
|
143
220
|
|
|
144
|
-
|
|
221
|
+
Extend AIEXEcode's capabilities by connecting Model Context Protocol (MCP) servers.
|
|
145
222
|
|
|
223
|
+
### Adding MCP Servers
|
|
224
|
+
|
|
225
|
+
**stdio-based server:**
|
|
146
226
|
```bash
|
|
147
|
-
/
|
|
148
|
-
/exit # Exit
|
|
149
|
-
/clear # Clear screen
|
|
150
|
-
/apikey # Change API key
|
|
151
|
-
/model # Change model
|
|
227
|
+
aiexecode mcp add --transport stdio github -- npx -y @modelcontextprotocol/server-github
|
|
152
228
|
```
|
|
153
229
|
|
|
154
|
-
|
|
230
|
+
**HTTP-based server:**
|
|
231
|
+
```bash
|
|
232
|
+
aiexecode mcp add --transport http myserver http://localhost:3000
|
|
233
|
+
```
|
|
155
234
|
|
|
156
|
-
|
|
235
|
+
**JSON configuration:**
|
|
236
|
+
```bash
|
|
237
|
+
aiexecode mcp add-json github '{"type":"stdio","command":"npx","args":["-y","@modelcontextprotocol/server-github"]}'
|
|
238
|
+
```
|
|
157
239
|
|
|
158
|
-
|
|
159
|
-
- gpt-5
|
|
160
|
-
- gpt-5-mini (default)
|
|
161
|
-
- gpt-5-nano
|
|
162
|
-
- gpt-5-codex
|
|
240
|
+
### Managing MCP Servers
|
|
163
241
|
|
|
164
|
-
|
|
242
|
+
```bash
|
|
243
|
+
aiexecode mcp list # List all servers
|
|
244
|
+
aiexecode mcp get <name> # Get server details
|
|
245
|
+
aiexecode mcp remove <name> # Remove a server
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### In Interactive Mode
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
/mcp # Show all MCP servers and tools
|
|
252
|
+
/mcp <server-name> # Show specific server's tools
|
|
253
|
+
```
|
|
165
254
|
|
|
166
255
|
---
|
|
167
256
|
|
|
168
|
-
##
|
|
257
|
+
## Project Customization
|
|
169
258
|
|
|
170
|
-
###
|
|
259
|
+
### Custom Prompts
|
|
171
260
|
|
|
172
|
-
|
|
261
|
+
Initialize project-specific AI behavior:
|
|
173
262
|
|
|
174
263
|
```bash
|
|
175
264
|
aiexecode --init
|
|
176
265
|
```
|
|
177
266
|
|
|
178
|
-
|
|
267
|
+
This creates `.aiexe/prompts/` where you can customize how AI behaves for your project.
|
|
179
268
|
|
|
180
|
-
###
|
|
269
|
+
### Custom Commands
|
|
181
270
|
|
|
182
|
-
|
|
271
|
+
Add JavaScript files to `.aiexe/commands/` for project-specific slash commands.
|
|
183
272
|
|
|
184
|
-
|
|
185
|
-
# Connect GitHub
|
|
186
|
-
aiexecode mcp add --transport stdio github -- npx -y @modelcontextprotocol/server-github
|
|
273
|
+
### Skills
|
|
187
274
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
275
|
+
Add JavaScript files to `.aiexe/skills/` for reusable AI capabilities.
|
|
276
|
+
|
|
277
|
+
### AGENTS.md
|
|
278
|
+
|
|
279
|
+
Create an `AGENTS.md` file in your project root to provide additional context to the AI about your project's conventions and requirements.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Configuration
|
|
284
|
+
|
|
285
|
+
### Settings Location
|
|
286
|
+
|
|
287
|
+
| Path | Description |
|
|
288
|
+
|------|-------------|
|
|
289
|
+
| `~/.aiexe/settings.json` | Main configuration |
|
|
290
|
+
| `~/.aiexe/mcp_config.json` | MCP server settings |
|
|
291
|
+
| `~/.aiexe/skills/` | Personal skills |
|
|
292
|
+
| `~/.aiexe/commands/` | Personal commands |
|
|
293
|
+
| `.aiexe/` | Project-specific settings |
|
|
294
|
+
|
|
295
|
+
### Available Tools
|
|
296
|
+
|
|
297
|
+
AIEXEcode provides these built-in tools for AI:
|
|
298
|
+
|
|
299
|
+
- `edit_file_range` - Edit specific line ranges
|
|
300
|
+
- `edit_file_replace` - Replace exact strings
|
|
301
|
+
- `write_file` - Create or overwrite files
|
|
302
|
+
- `read_file` - Read entire files
|
|
303
|
+
- `read_file_range` - Read specific line ranges
|
|
304
|
+
- `bash` - Execute shell commands
|
|
305
|
+
- `run_python_code` - Run Python scripts
|
|
306
|
+
- `fetch_web_page` - Fetch web content
|
|
307
|
+
- `ripgrep` - Search code with ripgrep
|
|
308
|
+
- `glob_search` - Find files by pattern
|
|
309
|
+
|
|
310
|
+
Enable/disable tools with `/tools enable|disable <tool-name>`.
|
|
191
311
|
|
|
192
312
|
---
|
|
193
313
|
|
|
194
|
-
## Requirements
|
|
314
|
+
## Requirements Summary
|
|
195
315
|
|
|
196
316
|
**Required:**
|
|
197
|
-
- macOS or Linux
|
|
198
|
-
- Node.js
|
|
199
|
-
-
|
|
200
|
-
-
|
|
317
|
+
- macOS or Linux
|
|
318
|
+
- Node.js 18+
|
|
319
|
+
- npm 8+
|
|
320
|
+
- ripgrep
|
|
321
|
+
- API key (OpenAI or Z.AI)
|
|
201
322
|
|
|
202
323
|
**Optional:**
|
|
203
|
-
- Python 3 (for Python code execution
|
|
324
|
+
- Python 3 (for Python code execution)
|
|
204
325
|
|
|
205
326
|
---
|
|
206
327
|
|
|
207
328
|
## Contact
|
|
208
329
|
|
|
209
|
-
- Website
|
|
210
|
-
-
|
|
330
|
+
- **Website**: https://aiexecode.com
|
|
331
|
+
- **Issues**: https://github.com/kstost/aiexecode/issues
|
|
211
332
|
|
|
212
333
|
---
|
|
213
334
|
|
|
214
335
|
## Disclaimer
|
|
215
336
|
|
|
216
|
-
**THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.**
|
|
337
|
+
**THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.**
|
|
338
|
+
|
|
339
|
+
**IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS, OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.**
|
|
217
340
|
|
|
218
|
-
|
|
341
|
+
This includes, without limitation:
|
|
342
|
+
- Data loss or corruption
|
|
343
|
+
- System damage or malfunction
|
|
344
|
+
- Security breaches or vulnerabilities
|
|
345
|
+
- Financial losses
|
|
346
|
+
- Any direct, indirect, incidental, special, exemplary, or consequential damages
|
|
219
347
|
|
|
220
|
-
|
|
221
|
-
- The developers and contributors are not liable for any damages, data loss, or issues arising from the use of this software
|
|
222
|
-
- Users assume all risks associated with using an AI-powered code modification tool
|
|
223
|
-
- Always review AI-generated code changes before committing them to production
|
|
224
|
-
- Maintain proper backups of your codebase before using this tool
|
|
225
|
-
- The software may produce unexpected results or behaviors
|
|
348
|
+
**The user assumes full responsibility for all consequences arising from the use of this software, regardless of whether such use was intended, authorized, or anticipated.**
|
|
226
349
|
|
|
227
|
-
**USE AT YOUR OWN RISK.**
|
|
350
|
+
**USE AT YOUR OWN RISK.**
|
|
228
351
|
|
|
229
352
|
---
|
|
230
353
|
|
|
231
354
|
<div align="center">
|
|
232
355
|
|
|
233
|
-
**AIEXEcode** - AI Coding
|
|
356
|
+
**AIEXEcode** - AI Coding Agent for Developers
|
|
234
357
|
|
|
235
358
|
Made by 코드깎는노인
|
|
236
359
|
|
package/index.js
CHANGED
|
@@ -39,6 +39,7 @@ program
|
|
|
39
39
|
.option('--viewer', 'Start payload viewer web server')
|
|
40
40
|
.option('-p, --port <port>', 'Port for payload viewer (default: 3300)', '3300')
|
|
41
41
|
.option('--init', 'Initialize project-specific prompts in current directory')
|
|
42
|
+
.option('--dangerously-skip-permissions', 'Skip all tool approval prompts (use with caution)')
|
|
42
43
|
.argument('[mission]', 'Natural language task description (e.g., "refactor auth module")')
|
|
43
44
|
.action((mission, options) => {
|
|
44
45
|
// 메인 커맨드 action 핸들러
|
|
@@ -58,6 +59,8 @@ Examples:
|
|
|
58
59
|
Start payload viewer on default port (3300)
|
|
59
60
|
$ aiexecode --viewer --port 8000
|
|
60
61
|
Start payload viewer on custom port
|
|
62
|
+
$ aiexecode --dangerously-skip-permissions "build the project"
|
|
63
|
+
Run without tool approval prompts (use with caution)
|
|
61
64
|
|
|
62
65
|
Available Slash Commands (in interactive mode):
|
|
63
66
|
/help Show all available commands
|
|
@@ -105,6 +108,7 @@ const shouldContinue = options.continue;
|
|
|
105
108
|
const viewerMode = options.viewer;
|
|
106
109
|
const initMode = options.init;
|
|
107
110
|
const viewerPort = parseInt(options.port, 10);
|
|
111
|
+
const dangerouslySkipPermissions = options.dangerouslySkipPermissions || false;
|
|
108
112
|
let mission = args[0];
|
|
109
113
|
|
|
110
114
|
// Init 모드 처리
|
|
@@ -170,6 +174,7 @@ if (viewerMode) {
|
|
|
170
174
|
// 전역 설정
|
|
171
175
|
process.app_custom = {};
|
|
172
176
|
process.app_custom.__dirname = dirname(fileURLToPath(import.meta.url));
|
|
177
|
+
process.app_custom.dangerouslySkipPermissions = dangerouslySkipPermissions;
|
|
173
178
|
|
|
174
179
|
// 개발 모드 감지: 현재 디렉토리에서 node index.js로 실행했는지 확인
|
|
175
180
|
// (글로벌 설치 후 aiexecode 명령으로 실행 시에는 다른 경로에서 실행됨)
|
|
@@ -451,7 +456,34 @@ async function handleSubmit(text) {
|
|
|
451
456
|
// 슬래시 커맨드 처리
|
|
452
457
|
if (isCommand(text)) {
|
|
453
458
|
try {
|
|
454
|
-
await commandRegistry.execute(text);
|
|
459
|
+
const result = await commandRegistry.execute(text);
|
|
460
|
+
|
|
461
|
+
// 커스텀 커맨드가 반환된 경우 AI에게 전달하여 실행
|
|
462
|
+
if (result && result.type === 'custom_command') {
|
|
463
|
+
debugLog(`Custom command invoked: ${result.commandName}`);
|
|
464
|
+
uiEvents.addSystemMessage(`📋 Command: ${result.commandName}`);
|
|
465
|
+
|
|
466
|
+
// 커맨드의 프롬프트를 미션으로 사용하여 세션 실행
|
|
467
|
+
await runSession({
|
|
468
|
+
mission: result.prompt,
|
|
469
|
+
maxIterations: 50,
|
|
470
|
+
mcpToolSchemas,
|
|
471
|
+
mcpToolFunctions
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
// 스킬이 반환된 경우 AI에게 전달하여 실행
|
|
475
|
+
else if (result && result.type === 'skill') {
|
|
476
|
+
debugLog(`Skill invoked: ${result.skillName}`);
|
|
477
|
+
uiEvents.addSystemMessage(`🎯 Skill: ${result.skillName}`);
|
|
478
|
+
|
|
479
|
+
// 스킬의 프롬프트를 미션으로 사용하여 세션 실행
|
|
480
|
+
await runSession({
|
|
481
|
+
mission: result.prompt,
|
|
482
|
+
maxIterations: 50,
|
|
483
|
+
mcpToolSchemas,
|
|
484
|
+
mcpToolFunctions
|
|
485
|
+
});
|
|
486
|
+
}
|
|
455
487
|
} catch (err) {
|
|
456
488
|
debugLog(`Command execution error: ${err.message}`);
|
|
457
489
|
uiEvents.addErrorMessage(`${err.message}\nType /help to see available commands`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiexecode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.96",
|
|
4
4
|
"description": "A CLI-based AI Coding Agent",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"LICENSE"
|
|
22
22
|
],
|
|
23
23
|
"engines": {
|
|
24
|
-
"node": ">=
|
|
25
|
-
"npm": ">=
|
|
24
|
+
"node": ">= 18.0.0",
|
|
25
|
+
"npm": ">= 8.0.0"
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://aiexecode.com",
|
|
28
28
|
"repository": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--lHmNygVpv4N1VR0LdnwkJ--><html lang="ko" class="dark h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/b75131b58f8ca46a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e411019f55d87c42.js"/><script src="/_next/static/chunks/103c802c8f4a5ea1.js" async=""></script><script src="/_next/static/chunks/305b077a9873cf54.js" async=""></script><script src="/_next/static/chunks/turbopack-0ac29803ce3c3c7a.js" async=""></script><script src="/_next/static/chunks/060f9a97930f3d04.js" async=""></script><script src="/_next/static/chunks/cdd12d5c1a5a6064.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Payload Log Viewer</title><meta name="description" content="AI Agent 로그 파일 뷰어 및 편집기"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div data-rht-toaster="" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><script src="/_next/static/chunks/e411019f55d87c42.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n4:I[5766,[\"/_next/static/chunks/cdd12d5c1a5a6064.js\"],\"Toaster\"]\n5:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"OutletBoundary\"]\n7:I[11533,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"AsyncMetadataOutlet\"]\n9:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[68027,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n:HL[\"/_next/static/chunks/b75131b58f8ca46a.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"lHmNygVpv4N1VR0LdnwkJ\",\"p\":\"\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/b75131b58f8ca46a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/cdd12d5c1a5a6064.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"className\":\"dark h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased h-screen overflow-hidden\",\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L4\",null,{\"position\":\"bottom-right\",\"toastOptions\":{\"duration\":4000,\"style\":{\"background\":\"hsl(var(--background))\",\"color\":\"hsl(var(--foreground))\",\"border\":\"1px solid hsl(var(--border))\"}}}]]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"f:I[27201,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"IconMark\"]\n8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Payload Log Viewer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI Agent 로그 파일 뷰어 및 편집기\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Lf\",\"3\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--lHmNygVpv4N1VR0LdnwkJ--><html lang="ko" class="dark h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/b75131b58f8ca46a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e411019f55d87c42.js"/><script src="/_next/static/chunks/103c802c8f4a5ea1.js" async=""></script><script src="/_next/static/chunks/305b077a9873cf54.js" async=""></script><script src="/_next/static/chunks/turbopack-0ac29803ce3c3c7a.js" async=""></script><script src="/_next/static/chunks/060f9a97930f3d04.js" async=""></script><script src="/_next/static/chunks/cdd12d5c1a5a6064.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Payload Log Viewer</title><meta name="description" content="AI Agent 로그 파일 뷰어 및 편집기"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div data-rht-toaster="" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><script src="/_next/static/chunks/e411019f55d87c42.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n4:I[5766,[\"/_next/static/chunks/cdd12d5c1a5a6064.js\"],\"Toaster\"]\n5:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"OutletBoundary\"]\n7:I[11533,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"AsyncMetadataOutlet\"]\n9:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[68027,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"default\"]\n:HL[\"/_next/static/chunks/b75131b58f8ca46a.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"lHmNygVpv4N1VR0LdnwkJ\",\"p\":\"\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/b75131b58f8ca46a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/cdd12d5c1a5a6064.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"className\":\"dark h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased h-screen overflow-hidden\",\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L4\",null,{\"position\":\"bottom-right\",\"toastOptions\":{\"duration\":4000,\"style\":{\"background\":\"hsl(var(--background))\",\"color\":\"hsl(var(--foreground))\",\"border\":\"1px solid hsl(var(--border))\"}}}]]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"f:I[27201,[\"/_next/static/chunks/060f9a97930f3d04.js\"],\"IconMark\"]\n8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Payload Log Viewer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI Agent 로그 파일 뷰어 및 편집기\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Lf\",\"3\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
|