agentlas 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,402 +9,313 @@
9
9
  ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
10
10
  ```
11
11
 
12
- **Agentlas 터미널 CLI** — `npm install -g agentlas` 하나로 깔리고 `agentlas`
13
- 하나로 도는 독립 에이전트 터미널. 설치된 AI 에이전트·팀과 대화하고, 새로 만들고,
14
- 멀티세션으로 굴린다. 데스크탑 앱이 없어도 동작하며, 앱이 깔려 있으면 같은
15
- SQLite(userData)를 공유해 에이전트·대화·자동화가 양쪽에서 그대로 보인다.
16
- 모델은 당신 것을 쓴다 — Claude Code / Codex / Gemini CLI 구독 또는 BYOK API 키.
12
+ **Agentlas Terminal CLI** — Independent AI agent runtime installed via `npm install -g agentlas` and launched with `agentlas`. Run exact installed agents, teams, and parallel sessions directly from your shell without keeping Desktop open. When Desktop is installed, Terminal reads the same local project, agent, and runtime state. Bring your own model — use your existing Claude Code, Codex, or Gemini CLI subscriptions or BYOK API keys.
13
+
14
+ This existing independent Terminal remains the command-line runtime: inspect owner-private packages with `agentlas cloud list`, restore one with `agentlas cloud restore <slug>`, or install an eligible public package with `agentlas install <slug>`.
17
15
 
18
16
  > **We are Agent Trust. Your agent is not a program. It is an asset. — Agentlas —**
19
17
 
20
- Agent Trust 에이전트 패키지를 소유자 범위·이식 가능·검사 가능·복원 가능하게
21
- 다룬다는 **제품 원칙**이다. 금융·법률상 신탁(trust) 서비스를 뜻하지 않는다.
22
- Agent Cloud는 소유한 패키지를 보관하고, 이 터미널은 그 로컬 실행 사본을 지원
23
- 런타임으로 검증·실행한다.
18
+ Agent Trust is our product principle: agent packages are treated as portable, owner-scoped, inspectable, and restorable assets. (It does not imply regulated financial or fiduciary services.) Agent Cloud stores package assets in your private cloud account, while Agentlas Terminal verifies and executes local runtime copies on your host machine.
24
19
 
25
20
  ---
26
21
 
27
- ## 요구사항
22
+ ## Requirements
28
23
 
29
- | 항목 | 내용 |
24
+ | Category | Requirement |
30
25
  | --- | --- |
31
- | Node | **22+ 권장.** `package.json`의 `engines`는 `>=20`이지만, 런처는 optional 네이티브 의존성 `better-sqlite3` 빌드가 실패하면 Node 22+의 `node:sqlite`로만 폴백한다 (`bin/agentlas.cjs`). **Node 20 better-sqlite3 네이티브 빌드가 성공할 때만** 동작한다. |
32
- | 에이전트 CLI | 실행에는 `claude` · `codex` · `gemini` 최소 하나가 PATH 필요하다. 하나도 없으면 `no_runtime`으로 정직하게 멈춘다(가짜 응답 폴백 없음). |
33
- | OS | macOS / Linux 검증. Windows 런처·설치 스크립트가 있으나 미검증. |
26
+ | **Node.js** | **Node 22+ recommended.** `package.json` specifies `engines: ">=20"`, but if native optional dependency `better-sqlite3` build fails, the launcher falls back strictly to `node:sqlite` in Node 22+. Node 20 works when `better-sqlite3` native build succeeds. |
27
+ | **Agent CLI** | Requires at least one supported runtime CLI (`claude`, `codex`, or `gemini`) in your `PATH`. Halts honestly with `no_runtime` if none are found (no fake model responses). |
28
+ | **OS** | macOS is verified by the current local release gate. Linux is covered by the public adapter/CI contract. A Windows launcher is provided, but this release does not claim independent end-to-end Windows verification. |
34
29
 
35
- `kimi` · `grok` · `cursor-agent`는 **탐지만 되고 아직 구동되지 않는다**
36
- (`engine/runtimes/resolve.cjs`의 `EXECUTABLE_KINDS = claude-code, codex, gemini`).
37
- `doctor`가 이들을 "감지됨"으로 표시해도 `--runtime`으로 지정하면
38
- `has no v2 streaming driver yet`으로 거절한다.
30
+ *Note: `kimi`, `grok`, and `cursor-agent` are detected by diagnostics (`doctor`) but not yet executable (`has no v2 streaming driver yet`). Supported active runtimes are `claude-code`, `codex`, and `gemini`.*
39
31
 
40
- ## 설치
32
+ ## Installation
41
33
 
42
34
  ```sh
43
35
  npm install -g agentlas
44
- # 또는 폴더에서: npm install -g .
45
- # 또는: sh install.sh # ~/.local/bin/agentlas 심링크 (sudo 불필요)
46
- # 또는: sh install.sh --prefix /usr/local/bin
36
+ # Or from local source: npm install -g .
37
+ # Or via shell installer: sh install.sh # Symlinks to ~/.local/bin/agentlas (no sudo needed)
38
+ # Or with custom prefix: sh install.sh --prefix /usr/local/bin
47
39
  ```
48
40
 
49
- Windows(미검증): `powershell -ExecutionPolicy Bypass -File install.ps1`
41
+ Windows (launcher available; end-to-end release not independently verified): `powershell -ExecutionPolicy Bypass -File install.ps1`
50
42
 
51
- ## 빠른 시작
43
+ ## Quick Start
52
44
 
53
45
  ```sh
54
46
  agentlas
55
47
  ```
56
48
 
57
- **1. 실행 마법사** — TTY 실행에서 3단계 온보딩이 뜬다: 언어 기본 런타임
58
- (`auto` 또는 설치된 CLI) → 기본 권한(read/write/full). 결과는 `cli-prefs.json`에
59
- 저장되고, 언제든 `agentlas setup`으로 다시 돌린다. 같은 실행에서 데이터 폴더가
60
- 없으면 데스크탑과 동일한 스키마로 SQLite를 부트스트랩하고 빌트인 에이전트
61
- (오케스트레이터·PM 소울·메모리 큐레이터 등)를 시드한다.
49
+ **1. Interactive Onboarding Wizard**On first TTY execution, a 3-step setup guides you through language selection, default runtime preference (`auto` or installed CLI), and default permission level (`read`/`write`/`full`). Settings are saved in `cli-prefs.json` and re-configurable via `agentlas setup`. If no local database exists, it bootstraps SQLite with Desktop-compatible schemas and seeds built-in agents (Orchestrator, PM Soul, Memory Curator).
62
50
 
63
- **2. 실제 작업 한 번 돌리기**
51
+ **2. Single Task Execution**
64
52
 
65
53
  ```sh
66
- agentlas " 저장소의 테스트 실패 원인을 찾아줘" # 자동 라우팅 1회 실행
67
- agentlas run -p "CHANGELOG 최근 3 요약" # 최종 답만 stdout (파이프용)
68
- git log --oneline -20 | agentlas run # 프롬프트 없으면 stdin 읽는다
69
- agentlas <agent> # 에이전트와 대화형 REPL
70
- agentlas firm <firm> "요청" # 회사(팀) CEO에 위임
54
+ agentlas "Identify why repository tests are failing" # Uses the connected project's first agent as controller
55
+ agentlas run -p "Summarize the last 3 CHANGELOG entries" # Prints the project controller's final answer to stdout
56
+ git log --oneline -20 | agentlas run # Reads stdin; still requires a connected project
57
+ agentlas run <agent> "Advanced direct request" # Exact-agent direct invocation; no project substitution
58
+ agentlas <agent> # Starts an interactive REPL with an exact agent
59
+ agentlas firm <firm> "Request" # Delegates to an exact firm CEO
71
60
  ```
72
61
 
73
- 자동 라우팅은 호스트 LLM 판정이 고른다. 어휘 점수는 후보 모집에만 쓰고 선택은
74
- 하지 않는다. 판정 런타임이 없으면 기본 에이전트로 폴백하되 그 사실을 stderr에
75
- 반드시 남긴다(조용한 오라우팅 금지).
62
+ Ordinary one-shot work is project-first: run it inside a folder connected to a Desktop Work project. The first agent in that project's ordered pool owns the task; remaining members are eligible task-scoped sub-agents. Missing projects, empty teams, and unavailable controllers stop without substituting another agent. The separate `agentlas route` preview is model-judged and stays unresolved when no exact installed agent can be justified.
76
63
 
77
- **3. 대화 이어가기**
64
+ **3. Resuming & Managing Conversations**
78
65
 
79
66
  ```sh
80
- agentlas chats # 최근 대화 목록 (데스크탑과 같은 DB)
81
- agentlas chats 30
82
- agentlas open <chat-id> # 챗의 에이전트로 REPL 재개
67
+ agentlas chats # List recent conversations (shares SQLite DB with Desktop app)
68
+ agentlas chats 30 # List last 30 conversations
69
+ agentlas open <chat-id> # Re-open REPL with the chat's assigned agent
83
70
  ```
84
71
 
85
- ## 명령 목록
72
+ ## Command Reference
86
73
 
87
- `agentlas help`가 정본이다. 아래는 같은 그룹 구성이다.
74
+ Run `agentlas help` for the authoritative command list. Below is the organized command structure:
88
75
 
89
76
  ### TALK & RUN
90
77
  ```sh
91
- agentlas <agent> # 에이전트와 대화 (= chat <agent>)
78
+ agentlas <agent> # Chat with agent (equivalent to chat <agent>)
92
79
  agentlas chat <agent>
93
- agentlas run [agent] [prompt] # 1회 실행 (-p · --runtime · --permission · stdin)
94
- agentlas firm <firm> [task] # 회사 CEO에 위임
95
- agentlas chats [n] # 최근 대화
96
- agentlas open <chat-id> # 대화 재개
97
- agentlas cd <agent> # 에이전트 폴더 경로만 출력 (cd "$(agentlas cd x)")
80
+ agentlas run [agent] [prompt] # Single-run execution (-p, --runtime, --permission, stdin)
81
+ agentlas firm <firm> [task] # Delegate task to firm CEO
82
+ agentlas chats [n] # List recent chat conversations
83
+ agentlas open <chat-id> # Resume conversation by ID
84
+ agentlas cd <agent> # Print folder path of an agent (cd "$(agentlas cd x)")
98
85
  ```
99
86
 
100
87
  ### AGENTS & HUB
101
88
  ```sh
102
- agentlas search "<필요한 일>" # Hub 에이전트 검색 (로그인 불필요)
103
- agentlas install <slug> # Hub 에이전트 로컬 설치 (아래 설치 게이트 참고)
104
- agentlas plugin add <slug> # Hub 플러그인(MCP 서버) 추가
105
- agentlas plugin list # (= agentlas plugins)
106
- agentlas build "<요청>" # 에이전트/팀 빌드·수리·패키징
107
- agentlas upload <경로> # 기본은 owner-private Agent Cloud 저장
108
- agentlas upload <경로> --visibility marketplace # 명시적 공개 Hub 발행
109
- agentlas connect <sub> # Telegram 플랫폼 연결 (무인자는 usage, exit 0)
110
- agentlas import <폴더> # 로컬 에이전트/팀 임포트
111
- agentlas native prepare <agent> # 네이티브 CLI 문맥 파일 생성
112
- agentlas list # 설치 에이전트/회사 + 활성 런타임
113
- agentlas uninstall <agent> [--yes] # 설치 에이전트 제거 (빌트인 거부).
114
- # 대화 이력이 있으면 건수를 보여주고 --yes 없이는 거절한다
115
- # (챗/메시지가 CASCADE로 함께 영구 삭제되기 때문).
116
- agentlas experience <sub> # list|inspect|validate|save|publish|status|export|unpublish|withdraw
117
- agentlas variant resolve --base-release <id> # 로컬 variant 호환성 프리뷰 (권위 없음, `agentlas variant help`)
89
+ agentlas search "<query>" # Search Hub agents (no login required)
90
+ agentlas install <slug> # Install Hub agent locally (gated by security trust checks)
91
+ agentlas plugin add <slug> # Add Hub plugin (MCP server)
92
+ agentlas plugin list # List active plugins (= agentlas plugins)
93
+ agentlas build "<prompt>" # Build, repair, and package agents or multi-agent teams
94
+ agentlas upload <path> # Upload package to private Agent Cloud (default)
95
+ agentlas upload <path> --visibility marketplace # Explicitly publish to public Agentlas Hub
96
+ agentlas connect <sub> # Connect external platforms (e.g. Telegram)
97
+ agentlas import <folder> # Import local agent or firm directory
98
+ agentlas native prepare <agent> # Generate native CLI context files
99
+ agentlas list # List installed agents/firms and active runtimes
100
+ agentlas uninstall <agent> [--yes] # Remove an installed agent (fails if chat history exists unless --yes)
101
+ agentlas experience <sub> # Manage agent experience (list|inspect|validate|save|publish|status|export|unpublish|withdraw)
102
+ agentlas variant resolve --base-release <id> # Preview local variant compatibility
118
103
  ```
119
104
 
120
105
  ### EXECUTE
121
106
  ```sh
122
- agentlas storm "<목표>" # Goal+UltraCode 하네스: 계획 배정 실행 검증 [--research]
123
- agentlas swarm "<목표>" # emergent 에이전트 스웜 [--parallel N]
124
- agentlas workforce "<요청>" # Agent Workforce Ontology 라우트
125
- agentlas network "<요청>" # workforce 별칭
126
- agentlas taskforce "<요청>" # workforce 별칭
127
- agentlas legacy-network "<요청>" # 이전 Hephaestus 분해기 (명시 호출 전용)
128
- agentlas call "a,b" "<맥락>" # 이름을 정확히 지정한 Hub/Cloud 에이전트 호출
129
- agentlas browser [...] # 실제 브라우저 하드포인트
130
- agentlas route "<요청>" [--json] # 라우팅 미리보기 (실행 없음)
131
- agentlas research <sub> # status|gather|search|read|plan
107
+ agentlas storm "<goal>" # Goal + UltraCode harness: plan -> assign -> execute -> verify [--research]
108
+ agentlas swarm "<goal>" # Emergent multi-agent swarm [--parallel N]
109
+ agentlas workforce "<prompt>" # Route through Agent Workforce Ontology
110
+ agentlas network "<prompt>" # Alias for workforce
111
+ agentlas taskforce "<prompt>" # Alias for workforce
112
+ agentlas legacy-network "<prompt>" # Legacy Hephaestus solver (explicit invocation only)
113
+ agentlas call "a,b" "<context>" # Call explicitly named Hub or Cloud agents
114
+ agentlas browser [...] # Real browser hardpoint launcher
115
+ agentlas route "<prompt>" [--json] # Preview routing decisions without execution
116
+ agentlas research <sub> # Research loadout (status|gather|search|read|plan)
132
117
  ```
133
118
 
134
119
  ### KNOWLEDGE
135
120
  ```sh
136
- agentlas memory import <경로> --agent <id> [--apply]
121
+ agentlas memory import <path> --agent <id> [--apply]
137
122
  agentlas evolve [list|apply <id>|revert <id>]
138
- agentlas ontology <sub> # status|list|add
139
- agentlas career-graph <sub> # 상태·소스 등록 + ingest|query|verify|trace|public-card 위임
140
- agentlas journal <sub> # status|verify|repair|gate
141
- agentlas project [status|init] # `.agentlas/` 를 만드는 유일한 진입점
142
- agentlas context <sub> # refresh|locate|refs|slice|impact|verify
123
+ agentlas ontology <sub> # Manage project ontology (status|list|add)
124
+ agentlas career-graph <sub> # Ingest, query, verify, and trace career graph indices
125
+ agentlas journal <sub> # Run journal operations (status|verify|repair|gate)
126
+ agentlas project [status|init] # Explicit entry point to initialize `.agentlas/` context
127
+ agentlas context <sub> # Context slice operations (refresh|locate|refs|slice|impact|verify)
143
128
  ```
144
129
 
145
- `agentlas project init`으로 **명시 초기화한 프로젝트에서만** 일반 실행·팀·
146
- Stormbreaker·Workforce가 같은 로컬 Context Slice를 받는다. 읽기·쓰기·전체 권한만
147
- 으로는 `.agentlas/`나 `.gitignore`를 만들거나 고치지 않는다. Hub/Cloud 검색에는
148
- 코드맵·소스 경로·프로젝트 파일 내용이 전송되지 않는다.
130
+ Only in projects explicitly initialized with `agentlas project init` do single runs, team executions, Stormbreaker, and Workforce receive local Context Slices. Read, write, or full permissions do not create or alter `.agentlas/` or `.gitignore` files. Code maps, source paths, and file contents are never transmitted during Hub/Cloud search.
149
131
 
150
132
  ### ACCOUNT & OPS
151
133
  ```sh
152
- agentlas login | logout | whoami # Agentlas Cloud 로그인 (loopback 브라우저 플로우)
153
- agentlas billing # 크레딧 잔액
154
- agentlas cloud <sub> # save|publish|package|list|restore|delete|search|install
155
- # |security scan|runtime bundle|field-test (cloud help 참고)
156
- agentlas automation <sub> # list|add|on|off|remove|run <id>|runs|daemon
134
+ agentlas login | logout | whoami # Agentlas Cloud authentication (loopback browser flow)
135
+ agentlas billing # Check account credit balance
136
+ agentlas cloud <sub> # Manage private Agent Cloud packages (save|publish|package|list|restore|delete|search|install|security scan|runtime bundle|field-test)
137
+ agentlas automation <sub> # Scheduled automations (list|add|on|off|remove|run <id>|runs|daemon)
157
138
  agentlas creds save --provider <n> --key <ENV> --value <v>
158
- agentlas creds file --source <경로> [--env <ENV>] # 값은 어떤 경로로도 출력하지 않음
159
- agentlas env # 공유 env 이름만 열거 ( 없음)
160
- agentlas usage # 로컬 사용 현황 (공급자 쿼터 대시보드는 데스크탑)
161
- agentlas telegram # 바인딩 현황 (읽기 전용)
162
- agentlas mcp # MCP 서버 목록
163
- agentlas mcp probe <id> # initializetools/list 핸드셰이크만 확인
164
- agentlas multimodal # 이미지/영상/음성 provider 설정
165
- agentlas doctor # 런타임·데이터·세션 점검
166
- agentlas setup # 실행 마법사 재실행 (TTY 필요)
167
- agentlas update # npm 최신판 확인 (자기 패키지만)
168
- agentlas oberon <sub> # AI 필름 렌더: scaffold|render|list|open (= agentlas film)
169
- agentlas hep <sub…> # Hephaestus 네이티브 전체 패스스루
170
- agentlas netadmin <sub> # 로컬 네트워크 admin (init|status|reindex|bench|add-source)
139
+ agentlas creds file --source <path> [--env <ENV>] # Imports credentials (values never logged)
140
+ agentlas env # List shared environment variable keys (values hidden)
141
+ agentlas usage # Local usage statistics
142
+ agentlas telegram # Telegram binding status (read-only)
143
+ agentlas mcp # List configured MCP servers
144
+ agentlas mcp probe <id> # Check initialize -> tools/list handshake
145
+ agentlas multimodal # Configure provider settings for image/video/audio
146
+ agentlas doctor # Runtime, database, and session diagnostics
147
+ agentlas setup # Re-run first-time onboarding setup wizard (TTY required)
148
+ agentlas update # Check for latest package updates on npm
149
+ agentlas oberon <sub> # AI film rendering pipeline: scaffold|render|list|open (= agentlas film)
150
+ agentlas hep <sub...> # Native Hephaestus passthrough
151
+ agentlas netadmin <sub> # Local network administration (init|status|reindex|bench|add-source)
171
152
  agentlas version | help
172
153
  ```
173
154
 
174
- 공통 옵션: `-p|--print` · `--runtime claude-code|codex|gemini` ·
175
- `--permission read|write|full`
155
+ Common flags across subcommands: `-p|--print`, `--runtime claude-code|codex|gemini`, `--permission read|write|full`.
176
156
 
177
- ### 오타 가드 / 데스크탑 표면 거절
157
+ ### Typo Guard & Desktop Surface Redirection
178
158
 
179
- 공백 없는 **한 단어**를 넣었는데 명령도 에이전트도 아니면, 프롬프트로 흘려서
180
- 모델을 부르지 않는다. 편집거리로 가장 가까운 명령을 최대 3개 제안하고 exit 1로
181
- 멈춘다.
159
+ If a single non-flag word is entered that does not match a valid command or installed agent slug, Agentlas halts with exit code 1 instead of sending the mistyped command to an LLM:
182
160
 
183
161
  ```
184
162
  $ agentlas lst
185
- 'lst' 은(는) agentlas 명령이 아닙니다. 혹시: list
186
- 명령 목록: agentlas help · 단어를 그대로 실행하려면: agentlas run -p "lst"
163
+ 'lst' is not an agentlas command. Did you mean: list
164
+ Command list: agentlas help · To run this exact prompt: agentlas run -p "lst"
187
165
  ```
188
166
 
189
- 데스크탑 전용 표면 이름(`site` `trex` `prompts` `dashboard` `marketplace`
190
- `library` `groups` `settings` `apps` `quests` `bookmarks` `one` …)도 같은 방식으로
191
- 멈추고 터미널 대체 경로를 안내한다. 진짜 그 단어를 작업으로 돌리려면 따옴표로
192
- 감싸거나 `run -p`를 쓴다.
167
+ Desktop-only surface names (`site`, `trex`, `prompts`, `dashboard`, `marketplace`, `library`, `groups`, `settings`, `apps`, `quests`, `bookmarks`, `one`) also halt with typo guard guidance directing you to equivalent terminal commands. To run a single word as a prompt, wrap it in quotes or pass `run -p`.
193
168
 
194
- ### 권한
169
+ ### Permission Levels
195
170
 
196
- | Agentlas 권한 | Claude Code | Codex | Gemini CLI |
171
+ | Agentlas Level | Claude Code | Codex | Gemini CLI |
197
172
  | --- | --- | --- | --- |
198
173
  | `read` | `plan` | `read-only` sandbox | `plan` |
199
174
  | `write` | `acceptEdits` | `workspace-write` sandbox | `auto_edit` |
200
- | `full` | permission 검사 우회 | approval + sandbox 우회 | `yolo` |
175
+ | `full` | bypass permission prompts | approval + sandbox bypass | `yolo` |
201
176
 
202
- 저장된 `full`은 세션 한정이라 다음 실행에서 `write`로 fail-closed 강등된다.
203
- REPL의 `!<셸명령>`은 작업 공간 경계를 강제할 수 없어 **`full`에서만** 실행되며,
204
- 출력 8MB 캡·표시 전 시크릿 마스킹·프로세스 그룹 종료가 걸린다.
177
+ *Note: Saved `full` permission is session-bound and automatically fails closed to `write` on subsequent executions. REPL shell execution (`!<command>`) runs strictly under `full` permission, enforced with 8MB output capping, secret masking, and process-group termination.*
205
178
 
206
- ## REPL & Orca 멀티세션
179
+ ## REPL & Orca Multi-Session Architecture
207
180
 
208
- `agentlas`를 인자 없이 실행하면 REPL 들어간다. 포그라운드 턴도 하나의 세션이고,
209
- `/spawn`으로 만든 서브에이전트는 백그라운드 세션으로 병렬로 돈다. 화면은 활성
210
- 세션 하나만 스트리밍하고, 백그라운드 턴 종료는 한 줄 알림으로 뜬다.
181
+ Executing `agentlas` with no arguments starts an interactive REPL session. Foreground execution turns run inside an active session, while subagents created via `/spawn` execute concurrently in background sessions. The terminal streams output from the currently focused active session and displays one-line notices when background tasks finish.
211
182
 
212
- ### 슬래시 명령 (정본: `engine/ui/palette.cjs`)
183
+ ### REPL Slash Commands
213
184
 
214
- | 명령 | 하는 |
185
+ | Command | Action |
215
186
  | --- | --- |
216
- | `/help` | 명령·단축키 |
217
- | `/sessions` · `/tree` | 세션 / 부모-자식 트리 |
218
- | `/s <n>` · `/switch <n>` | 활성 세션 전환 (tail 재생 + 라이브 구독) |
219
- | `/spawn <agent> [task]` | 서브에이전트 세션 생성(+task 주면 즉시 실행) |
220
- | `/steer <n> <msg>` | 세션의 다음 턴에 지시 큐잉 |
221
- | `/kill <n>` | 실행 중단 |
222
- | `/rm <n>` | 세션 제거 |
223
- | `/broadcast <msg>` | 모든 세션에 같은 지시 |
224
- | `/use <agent>` | 메인 세션 에이전트 교체 |
225
- | `/agents` · `/list` | 설치 에이전트 목록 |
226
- | `/chats [n]` | 최근 대화 |
227
- | `/mcp` | MCP 서버 목록 |
228
- | `/doctor` | 런타임·데이터 점검 |
229
- | `/runtime <kind>` | 세션 런타임 지정 (claude-code\|codex\|gemini) |
230
- | `/permission <level>` | 세션 권한 지정 (read\|write\|full) |
231
- | `/quit` · `/exit` | 종료 |
232
-
233
- 목록에 없는 슬래시는 `unknown: /xxx (see /help)`로 멈춘다 — REPL 슬래시는
234
- top-level 명령으로 흘러가지 않는다.
235
-
236
- ### 키·입력
237
-
238
- | 입력 | 동작 |
187
+ | `/help` | Display available commands and keybindings |
188
+ | `/sessions` · `/tree` | View session table or parent-child process tree |
189
+ | `/s <n>` · `/switch <n>` | Switch active session (replays tail logs & subscribes to live stream) |
190
+ | `/spawn <agent> [task]` | Spawn subagent background session (executes task immediately if supplied) |
191
+ | `/steer <n> <msg>` | Queue instruction for session `n`'s next turn |
192
+ | `/kill <n>` | Interrupt active turn in session `n` |
193
+ | `/rm <n>` | Remove session `n` |
194
+ | `/broadcast <msg>` | Broadcast instruction to all running sessions |
195
+ | `/use <agent>` | Change active agent in main session |
196
+ | `/agents` · `/list` | List installed agents |
197
+ | `/chats [n]` | View recent conversations |
198
+ | `/mcp` | List active MCP servers |
199
+ | `/doctor` | Run runtime & database diagnostics |
200
+ | `/runtime <kind>` | Set runtime for new sessions (`claude-code` \| `codex` \| `gemini`) |
201
+ | `/permission <level>` | Set permission level for new sessions (`read` \| `write` \| `full`) |
202
+ | `/quit` · `/exit` | Exit REPL |
203
+
204
+ Unrecognized slash commands halt with `unknown: /xxx (see /help)`.
205
+
206
+ ### Controls & Input Shortcuts
207
+
208
+ | Input | Behavior |
239
209
  | --- | --- |
240
- | 실행 타이핑 Enter | 세션의 **다음 스티어링 큐**에 들어간다 (턴을 끊지 않음) |
241
- | `ctrl-c` (실행 ) | 현재 턴만 중단 |
242
- | `ctrl-c` (유휴) | 1회는 경고, **2회 연속이면 종료** |
243
- | `Tab` | 슬래시 명령 · 에이전트/회사 슬러그 · **살아있는 세션 (s1, s2)** · `/runtime` `/permission` 완성 |
244
- | `@경로` + `Tab` | 파일 경로 완성 |
245
- | `↑` / `↓` | 입력 히스토리 |
246
- | `!<셸명령>` | 실행 **`full` 권한에서만** |
247
-
248
- 동시 실행 상한은 기본 4다. 초과 스폰은 대기가 아니라 정직한 거부이며
249
- `AGENTLAS_MAX_PARALLEL`(최대 16)로 올린다.
210
+ | Typing + `Enter` during execution | Queues message into session's **steering queue** for next turn (does not abort current turn) |
211
+ | `Ctrl+C` (during execution) | Interrupts current turn |
212
+ | `Ctrl+C` (when idle) | 1st press shows warning; **2nd consecutive press exits** |
213
+ | `Tab` | Autocompletes slash commands, agent/firm slugs, **live session keys (s1, s2...)**, and `/runtime` / `/permission` values |
214
+ | `@path` + `Tab` | Autocompletes local file paths |
215
+ | `Up` / `Down` | Input history navigation |
216
+ | `!<shell-command>` | Execute shell command (requires **`full` permission**) |
250
217
 
251
- ## 동작 방식
218
+ Parallel execution limit defaults to 4 concurrent sessions. Exceeding the limit halts with explicit refusal; increase limit via `AGENTLAS_MAX_PARALLEL` (up to 16).
252
219
 
253
- ### 엔진 경계 — 터미널은 Agentlas OS를 재구현하지 않는다
220
+ ## Operating Architecture
254
221
 
255
- 이건 자주 오해된다. 터미널은 **설치된 Agentlas OS(Hephaestus/Core) 런타임을 찾아
256
- 그 런타임을 실행**한다. 자체 사본을 들고 있지 않다.
222
+ ### Engine Boundary No Duplicated Core OS Logic
257
223
 
258
- 탐색 순서 (`engine/agentlas-core-harness.cjs`, `engine/hephaestus/runtime.cjs`):
224
+ Agentlas Terminal does not re-implement Agentlas OS. It resolves and executes the installed **Agentlas OS (Hephaestus/Core)** runtime on your system.
259
225
 
226
+ Runtime Search Order (`engine/agentlas-core-harness.cjs`, `engine/hephaestus/runtime.cjs`):
260
227
  1. `HEPHAESTUS_BIN` / `HEPHAESTUS_RUNTIME_ROOT`
261
228
  2. `~/.agentlas/runtime/current`
262
- 3. 패키징된 Core (`<resources>/Hephaestus`, macOS
263
- `/Applications/Agentlas.app/Contents/Resources/Hephaestus`)
229
+ 3. Packaged Core (`<resources>/Hephaestus`, macOS: `/Applications/Agentlas.app/Contents/Resources/Hephaestus`)
264
230
 
265
- `storm` · `swarm` · `workforce`/`network` · `route` · `research` · `context` ·
266
- `career-graph`(파생 인덱스) · `journal` · `netadmin` · `hep` · `build` · `call` ·
267
- `browser` · `connect`은 이 런타임으로 넘어가는 **패스스루**다. 런타임이 없으면
268
- 로컬 모조 실행이나 어휘 폴백을 만들지 않고 무엇이 없는지 말하고 exit 1 한다
269
- (예: `storm`은 `stormbreaker-core-harness-unavailable`, `context`는 Core/Python
270
- 부재를 보고). 이 정직 정지가 계약이다.
231
+ Commands including `storm`, `swarm`, `workforce`/`network`, `route`, `research`, `context`, `career-graph`, `journal`, `netadmin`, `hep`, `build`, `call`, `browser`, and `connect` pass directly through to this core runtime. If no core runtime is found, Agentlas Terminal halts with an explicit error and exit code 1 (no silent fallback).
271
232
 
272
- 터미널 자체가 소유한 것: REPL·세션 오케스트레이션·에이전트 레지스트리·Hub/Cloud
273
- HTTP 표면·자격증명·MCP 프리플라이트·자동화 스케줄러·SQLite 스키마.
233
+ The terminal package owns REPL orchestration, session trees, agent registries, Hub/Cloud HTTP client surfaces, credential storage, MCP preflight probing, automation scheduling, and SQLite schema management.
274
234
 
275
- ### 공유 상태 데스크탑과 같은 DB
235
+ ### Shared State with Agentlas Desktop
276
236
 
277
- 런처(`bin/agentlas.cjs`) 패키지의 `engine/`(정본)을 시스템 Node로 실행한다.
278
- 데이터 폴더는 데스크탑 앱과 **동일한 userData**다 (`engine/core/paths.cjs`):
237
+ The launcher (`bin/agentlas.cjs`) runs system Node against `engine/`. The default data directory is identical to Agentlas Desktop's `userData`:
279
238
 
280
- | OS | 경로 |
239
+ | OS | Default Data Path |
281
240
  | --- | --- |
282
241
  | macOS | `~/Library/Application Support/Agentlas` |
283
242
  | Windows | `%APPDATA%\Agentlas` |
284
- | Linux | `$XDG_CONFIG_HOME/Agentlas` (기본 `~/.config/Agentlas`) |
243
+ | Linux | `$XDG_CONFIG_HOME/Agentlas` (default `~/.config/Agentlas`) |
285
244
 
286
- DB는 폴더의 `agentlas.sqlite`. 실행 `engine/bootstrap-schema.sql`
287
- (`user_version=45`)로 부트스트랩하며, 앱을 나중에 깔면 앱이 거기서부터
288
- 마이그레이션한다. 결과적으로 **에이전트·챗·자동화·MCP 등록이 양쪽에서 같이
289
- 보인다.** `/spawn`으로 만든 서브에이전트 세션은 데스크탑의 `division` 서브챗
290
- (`kind='division'` + `parent_chat_id`)으로 그대로 남는다.
245
+ The SQLite database file is `agentlas.sqlite` (`user_version=85`). When launched for the first time without an existing database, it bootstraps schemas using `engine/bootstrap-schema.sql`. Consequently, **projects, installed agents, task history, automation sessions, and MCP registrations are shared across Desktop and Terminal**. Subagent sessions spawned via `/spawn` are stored as scoped execution ledgers rather than new global Work conversations.
291
246
 
292
- SQLite 드라이버 사다리: `better-sqlite3`(optionalDependency, 네이티브 빌드
293
- 성공 시) → 실패하면 Node 22+ `node:sqlite`.
247
+ SQLite Driver Fallback Ladder: `better-sqlite3` (optionalDependency native build) -> Node 22+ `node:sqlite`.
294
248
 
295
- ### Hub 빌려 쓰는 기본, 설치는 예외
249
+ ### Hub Installation & Safety Policy
296
250
 
297
- `engine/hub/install.cjs`의 `assertHubInstallAllowed`가 로컬 설치를 게이트한다.
298
- 막히는 경우:
251
+ Local installation of Hub agents is gated by `assertHubInstallAllowed` (`engine/hub/install.cjs`). Installation is restricted in the following scenarios:
299
252
 
300
- - **cloud-callable / call-only 에이전트** 로컬 설치 불가. 빌려 쓴다:
301
- `agentlas call <slug>` (데스크탑에서는 북마크). 소유자는
302
- `agentlas cloud restore <slug>`로 자기 패키지를 복원한다.
303
- - **지시문 없는 패키지** 안전한 로컬 설치에 필요한 instructions가 없으면 거절.
304
- - **trustGrade가 A/B가 아님** 사이드로드는 명시 승인이 필요하다며 차단.
305
- - **web-only 에이전트** — 터미널에서 제공하지 않는다.
306
- - **회수된 공개 리스팅** — 데스크탑 마켓플레이스와 같은 관측 결과
307
- (`Hub agent not found`).
253
+ - **Cloud-callable / Call-only Agents**: Local install blocked. Use via `agentlas call <slug>`. Owners restore via `agentlas cloud restore <slug>`.
254
+ - **Packages without Instructions**: Blocked if required instruction manifests are missing.
255
+ - **Untrusted Trust Grades**: Packages with trust grade lower than A/B require explicit side-load overrides.
256
+ - **Web-only Agents**: Blocked on terminal surface.
257
+ - **Withdrawn Catalog Items**: Fails with `Hub agent not found`.
308
258
 
309
- `upload`도 같은 방향이다: 기본은 owner-private Agent Cloud 저장이고, 공개 Hub
310
- 발행은 `--visibility marketplace`를 명시할 때만 일어난다.
259
+ Package uploads (`upload`) default to private owner-scoped Agent Cloud storage; public Hub publishing requires explicit `--visibility marketplace`.
311
260
 
312
- ## 데스크탑 전용 (터미널에서 약속하지 않는 것)
261
+ ## Desktop-Only Surface Scope
313
262
 
314
- - Telegram 발급·포트 관리 (터미널의 `telegram`은 **읽기 전용 바인딩 조회**)
315
- - 에이전트 그룹(조합)
316
- - 승인 인박스 / 브라우저 승인 시트
317
- - MCP 커스텀 서버 추가·토글 (터미널은 목록 + `mcp probe`만)
318
- - Site 스튜디오 · T-rex 슬라이드 스튜디오 · Prompt Store
319
- - 모바일 페어링
320
- - 퀘스트
321
- - Hub 북마크
322
- - 공급자 쿼터 대시보드, Marketplace/Library 브라우징, Agentlas One
263
+ The following GUI-specific features are reserved for Agentlas Desktop and are not exposed in the terminal CLI:
264
+ - Telegram bot token issuance & port configuration (`agentlas telegram` is read-only)
265
+ - Visual project-team composition and ordering
266
+ - Interactive GUI approval sheets & browser popups
267
+ - Custom MCP server addition GUI (Terminal supports listing & `mcp probe`)
268
+ - Site Studio, T-rex slide studio, Prompt Store GUI
269
+ - Mobile pairing QR sheets & Quests
270
+ - Provider quota dashboards & visual marketplace browsing
323
271
 
324
- ## 환경변수
272
+ ## Environment Variables
325
273
 
326
- | 변수 | 효과 |
274
+ | Variable | Description |
327
275
  | --- | --- |
328
- | `AGENTLAS_USER_DATA_DIR` | 데이터 폴더 override (기본: 데스크탑과 같은 userData) |
329
- | `AGENTLAS_LANG` | `ko` \| `en` — prefs와 `LANG`보다 우선 |
330
- | `AGENTLAS_MAX_PARALLEL` | 동시 실행 세션 상한 (기본 4, 최대 16) |
331
- | `AGENTLAS_SESSION` | Agentlas Cloud 세션 쿠키 값. 해석 순서는 env → 세션 파일이라, 설정돼 있으면 `logout` 후에도 로그인 상태로 보인다 |
332
- | `AGENTLAS_WEB_BASE_URL` | 베이스 (기본 `https://agentlas.cloud`) |
333
- | `AGENTLAS_MCP_BASE_URL` | Hub MCP 베이스 (기본 `<web>/api/mcp/v1`) |
334
- | `HEPHAESTUS_BIN` · `HEPHAESTUS_RUNTIME_ROOT` | Agentlas OS 런타임 위치 지정 (탐색 사다리 1순위) |
335
- | `AGENTLAS_MODEL_MAX_TIER` | `economy`\|`balanced`\|`frontier` **swarm 배정 한정** 비용 상한 |
336
- | `NO_COLOR` | 비어 있지 않으면 컬러 출력 (`FORCE_COLOR=1`로 강제 켜기, `AGENTLAS_NO_COLOR=1`도 끔) |
337
-
338
- ## 문제 해결
276
+ | `AGENTLAS_USER_DATA_DIR` | Custom data directory override (default: shared Desktop `userData`) |
277
+ | `AGENTLAS_LANG` | Preferred locale (`ko` \| `en`)overrides system `LANG` |
278
+ | `AGENTLAS_MAX_PARALLEL` | Maximum concurrent execution sessions (default: 4, max: 16) |
279
+ | `AGENTLAS_SESSION` | Agentlas Cloud session cookie token |
280
+ | `AGENTLAS_WEB_BASE_URL` | Base URL for Web services (default: `https://agentlas.cloud`) |
281
+ | `AGENTLAS_MCP_BASE_URL` | Base URL for Hub MCP APIs (default: `<web>/api/mcp/v1`) |
282
+ | `HEPHAESTUS_BIN` / `HEPHAESTUS_RUNTIME_ROOT` | Custom path to Agentlas OS core runtime |
283
+ | `AGENTLAS_MODEL_MAX_TIER` | Max model tier cap for swarms (`economy` \| `balanced` \| `frontier`) |
284
+ | `NO_COLOR` | Disables ANSI color output if non-empty (`FORCE_COLOR=1` forces color on) |
285
+
286
+ ## Troubleshooting & Diagnostics
339
287
 
340
288
  ```sh
341
- agentlas doctor # DB · PATH 런타임 · 활성 런타임 · 클라우드 세션
342
- agentlas --where # 런처/엔진/DB 해석 결과 + sqlite 드라이버 + Node 버전 JSON
289
+ agentlas doctor # Checks database, PATH runtimes, active CLI drivers, and cloud session
290
+ agentlas --where # Outputs JSON diagnostic of launcher, engine, DB paths, driver, and Node version
343
291
  ```
344
292
 
345
- - **`no_runtime: no agent CLI found`** `claude` / `codex` / `gemini` 하나를
346
- 설치하고 PATH에 올린다. `doctor`가 `kimi`/`grok`/`cursor-agent`를 감지했더라도
347
- 구동 드라이버가 없어 실행 대상이 아니다.
348
- - **`runtime '<kind>' has no v2 streaming driver yet`** `--runtime`에 아직
349
- 구동되지 않는 런타임을 지정했다. `claude-code` · `codex` · `gemini`만 된다.
350
- - **`Node vX — Node 22+ (node:sqlite) is required when better-sqlite3 is
351
- unavailable.`** — Node 20/21에서 `better-sqlite3` 네이티브 빌드가 실패했다.
352
- Node 22+로 올리거나 빌드 도구를 갖추고 재설치한다. `--where`의 `sqliteDriver`가
353
- 실제 사용 드라이버를 알려준다.
354
- - **`storm`/`context`/`hep`가 런타임 없음으로 멈춤** — Agentlas OS 런타임이 없다.
355
- 설치하거나 `HEPHAESTUS_BIN=<경로>`를 지정한다.
356
- - **`'xxx' 은(는) agentlas 명령이 아닙니다`** — 오타 가드다. 작업으로 돌리려면
357
- `agentlas run -p "xxx"`.
358
- - **`logout` 했는데 로그인 상태** — `AGENTLAS_SESSION`이 설정돼 있다. env를 지운다.
359
- - **`agentlas setup requires an interactive terminal`** — 비-TTY에서 마법사를 돌리면
360
- 조용한 성공으로 위장되므로 거절한다.
361
-
362
- ## 개발
363
-
364
- 엔진 소스는 `engine/*.cjs` — 여기가 정본이므로 직접 수정한다.
365
-
366
- ```sh
367
- sh test/smoke.sh # 기본 표면 + 무인자 가드 + 신선 환경 첫 실행
368
- # + 계약 테스트 + Runtime Doctor 3제품 패리티 게이트
369
- npm run smoke # 동일 (= npm run test:release-contracts)
370
- sh scripts/gen-bootstrap-schema.sh [db-path] # engine/bootstrap-schema.sql 재생성
371
- ```
293
+ - **`no_runtime: no agent CLI found`**: Install `claude`, `codex`, or `gemini` CLI and add to `PATH`. Note that `kimi`/`grok`/`cursor-agent` are detected by `doctor` but do not yet have streaming execution drivers.
294
+ - **`runtime '<kind>' has no v2 streaming driver yet`**: Specified `--runtime` is not supported for active execution. Supported values: `claude-code`, `codex`, `gemini`.
295
+ - **`Node vX Node 22+ (node:sqlite) is required when better-sqlite3 is unavailable`**: `better-sqlite3` native build failed on Node 20/21. Upgrade to Node 22+ or install build tools for native compilation.
296
+ - **`storm`/`context`/`hep` halting due to missing runtime**: Agentlas OS core runtime is missing. Install Agentlas OS or set `HEPHAESTUS_BIN=<path>`.
297
+ - **`'xxx' is not an agentlas command`**: Typo guard intercepted an unrecognized command. Use `agentlas run -p "xxx"` to run it as a prompt.
372
298
 
373
- 스모크는 임시 `AGENTLAS_USER_DATA_DIR`에서 돌아 실제 데이터를 건드리지 않는다.
374
- 런타임 진단·수리 규칙(`engine/agentlas-doctor.cjs`)을 고쳤다면 3제품 패리티
375
- 게이트를 반드시 통과시켜라.
299
+ ## Development & Verification
376
300
 
377
- ## 제거
301
+ Engine source code resides in `engine/*.cjs`.
378
302
 
379
303
  ```sh
380
- npm uninstall -g agentlas # npm 설치
381
- rm ~/.local/bin/agentlas # install.sh 설치 (또는 지정한 --prefix)
304
+ sh test/smoke.sh # Runs surface tests, guard tests, fresh DB tests, contract tests & parity gates
305
+ npm run smoke # Equivalent to npm run test:release-contracts
306
+ sh scripts/gen-bootstrap-schema.sh [db-path] # Regenerates engine/bootstrap-schema.sql
382
307
  ```
383
308
 
384
- 데이터는 userData 폴더에 남는다 (위 "공유 상태" 참고) 데스크탑 앱과 공유하는
385
- 폴더이므로 지우기 전에 확인한다. `agentlas uninstall <agent>`는 **설치 에이전트**를
386
- 지우는 별개 명령이며 CLI 자체를 제거하지 않는다.
309
+ Smoke tests run isolated inside a temporary `AGENTLAS_USER_DATA_DIR` and do not touch local user data.
387
310
 
388
- ## 릴리스 / npm 경계
311
+ ## Release & Security Allowlist
389
312
 
390
- published 버전은 `npm view agentlas version`이 알려주는 값이 정본이다.
391
- 저장소의 소스 커밋이나 `package.json`의 버전은 GitHub 릴리스나 npm 발행을 증명하지
392
- 않는다 — 설치 전에 레지스트리를 직접 확인하라.
313
+ Published package versions on npm are governed strictly by OIDC trusted publisher workflows (`.github/workflows/npm-publish.yml`).
393
314
 
394
- 발행은 저장소의 OIDC trusted publisher 워크플로(`.github/workflows/npm-publish.yml`)
395
- 하나로만 이뤄진다. 정확한 immutable `vX.Y.Z` 태그(또는 현재 main의 정확한 커밋
396
- SHA + 명시 버전)만 받고, 태그↔패키지 identity 검증 → 릴리스 계약 + 스모크 →
397
- `npm pack` 산출물 allowlist 검사(test/docs/fixtures/scripts 등 개발 전용 경로 차단)
398
- → 발행 → 레지스트리 재확인 순으로 진행한다. 장기 npm publish 토큰은 GitHub에
399
- 저장하지 않는다.
315
+ Release verification enforces tag identity (`vX.Y.Z`), contract tests, smoke tests, and manifest allowlists preventing non-release files (development tests, fixtures, internal documents) from being packaged into npm artifacts.
400
316
 
401
- 릴리스 이력과 소스-대-레지스트리 경계는 [CHANGELOG.md](CHANGELOG.md)에 기록된다.
402
- 발행된 버전은 언제나 그 정확한 태그에서 나와야 하고, 태그 이후의 `main` 변경은
403
- 다음 버전이지 옛 번호로 재발행되지 않는다.
317
+ Detailed release logs and source-to-registry boundaries are documented in [CHANGELOG.md](CHANGELOG.md).
404
318
 
405
319
  ## License
406
320
 
407
- Apache-2.0 — Agentlas Terminal is the independent terminal runtime for the
408
- [Agentlas OS](https://github.com/agentlas-ai/Agentlas-OS) package contract. Its
409
- `engine/` directory is maintained and released from this repository; it is not
410
- a generated mirror of Agentlas Desktop.
321
+ [Apache-2.0](LICENSE) — Agentlas Terminal is the independent terminal runtime for the [Agentlas OS](https://github.com/agentlas-ai/Agentlas-OS) package contract.