u-foo 2.3.31 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -213
- package/README.zh-CN.md +151 -197
- package/SKILLS/ufoo/SKILL.md +8 -8
- package/bin/uagy.js +69 -0
- package/bin/uclaude.js +2 -2
- package/bin/ucode.js +4 -4
- package/bin/ucodex.js +2 -2
- package/bin/ufoo.js +5 -23
- package/modules/AGENTS.template.md +1 -1
- package/modules/bus/SKILLS/ubus/SKILL.md +35 -10
- package/package.json +9 -5
- package/scripts/chat-app-smoke.js +30 -0
- package/scripts/global-chat-switch-benchmark.js +5 -5
- package/scripts/ink-demo.js +23 -0
- package/scripts/ink-smoke.js +30 -0
- package/scripts/ucode-app-smoke.js +36 -0
- package/src/{agent → agents/activity}/activityDetector.js +39 -2
- package/src/{agent → agents/activity}/activityStatePublisher.js +1 -1
- package/src/{agent → agents/activity}/activityStateWriter.js +2 -2
- package/src/{agent → agents/activity}/activityTracker.js +1 -1
- package/src/agents/activity/index.js +8 -0
- package/src/{agent → agents/controller}/controllerToolExecutor.js +4 -4
- package/src/agents/controller/index.js +8 -0
- package/src/{agent → agents/controller}/loopObservability.js +2 -2
- package/src/{agent → agents/controller}/loopRuntime.js +1 -1
- package/src/{agent → agents/controller}/ufooAgent.js +9 -9
- package/src/agents/index.js +10 -0
- package/src/agents/internal/index.js +3 -0
- package/src/{agent → agents/internal}/internalRunner.js +45 -22
- package/src/agents/launch/agyConversation.js +159 -0
- package/src/agents/launch/index.js +12 -0
- package/src/{agent → agents/launch}/launchEnvironment.js +2 -3
- package/src/{agent → agents/launch}/launcher.js +64 -21
- package/src/{agent → agents/launch}/notifier.js +23 -12
- package/src/{agent → agents/launch}/ptyRunner.js +44 -12
- package/src/{agent → agents/launch}/ptyWrapper.js +2 -2
- package/src/{agent → agents/launch}/publisherRouting.js +1 -1
- package/src/{agent → agents/launch}/readyDetector.js +23 -0
- package/src/{agent → agents/prompts}/defaultBootstrap.js +63 -4
- package/src/{group/bootstrap.js → agents/prompts/groupBootstrap.js} +41 -6
- package/src/agents/prompts/index.js +8 -0
- package/src/{code/prompts → agents/prompts/native}/index.js +1 -1
- package/src/{agent → agents/providers}/claudeThreadProvider.js +1 -1
- package/src/{agent → agents/providers}/codexThreadProvider.js +1 -1
- package/src/{agent → agents/providers}/directAuthStatus.js +184 -1
- package/src/agents/providers/index.js +13 -0
- package/src/{agent → agents/providers}/upstreamTransport.js +2 -2
- package/src/{chat → app/chat}/agentSockets.js +1 -1
- package/src/{chat → app/chat}/commandExecutor.js +56 -28
- package/src/{chat → app/chat}/commands.js +119 -5
- package/src/{chat → app/chat}/daemonConnection.js +1 -1
- package/src/{chat → app/chat}/daemonMessageRouter.js +54 -4
- package/src/{chat → app/chat}/daemonTransport.js +2 -1
- package/src/{chat → app/chat}/dashboardView.js +2 -21
- package/src/app/chat/index.js +6 -0
- package/src/{chat → app/chat}/inputSubmitHandler.js +38 -13
- package/src/{chat → app/chat}/internalAgentLogHistory.js +1 -1
- package/src/app/chat/multiWindow/index.js +268 -0
- package/src/app/chat/multiWindow/paneLayout.js +84 -0
- package/src/app/chat/multiWindow/paneManager.js +299 -0
- package/src/app/chat/multiWindow/renderer.js +384 -0
- package/src/app/chat/multiWindow/virtualTerminal.js +327 -0
- package/src/{chat → app/chat}/projectCloseController.js +1 -1
- package/src/app/chat/shellCommand.js +42 -0
- package/src/{chat → app/chat}/transport.js +16 -3
- package/src/{cli → app/cli}/ctxCoreCommands.js +3 -3
- package/src/{doctor/index.js → app/cli/features/doctor.js} +1 -1
- package/src/{init/index.js → app/cli/features/init.js} +14 -32
- package/src/{cli → app/cli}/groupCoreCommands.js +2 -2
- package/src/app/cli/index.js +9 -0
- package/src/{cli → app/cli}/onlineCoreCommands.js +5 -5
- package/src/{cli.js → app/cli/run.js} +62 -59
- package/src/app/index.js +6 -0
- package/src/code/agent.js +10 -9
- package/src/code/index.js +2 -0
- package/src/code/launcher/index.js +9 -0
- package/src/{agent → code/launcher}/ucode.js +7 -8
- package/src/{agent → code/launcher}/ucodeBootstrap.js +3 -3
- package/src/{agent → code/launcher}/ucodeBuild.js +2 -2
- package/src/{agent → code/launcher}/ucodeDoctor.js +2 -2
- package/src/{agent → code/launcher}/ucodeRuntimeConfig.js +1 -2
- package/src/code/nativeRunner.js +4 -4
- package/src/code/taskDecomposer.js +5 -4
- package/src/code/tui.js +39 -1997
- package/src/config.js +15 -2
- package/src/{bus → coordination/bus}/activate.js +2 -2
- package/src/{bus → coordination/bus}/daemon.js +15 -5
- package/src/coordination/bus/envelope.js +173 -0
- package/src/{bus → coordination/bus}/index.js +7 -3
- package/src/{bus → coordination/bus}/inject.js +11 -3
- package/src/{bus → coordination/bus}/message.js +1 -1
- package/src/coordination/bus/messageMeta.js +130 -0
- package/src/coordination/bus/promptEnvelope.js +65 -0
- package/src/{bus → coordination/bus}/shake.js +1 -1
- package/src/{bus → coordination/bus}/store.js +3 -3
- package/src/{bus → coordination/bus}/subscriber.js +2 -2
- package/src/{bus → coordination/bus}/utils.js +2 -2
- package/src/{history → coordination/history}/inputTimeline.js +5 -5
- package/src/coordination/index.js +10 -0
- package/src/{memory → coordination/memory}/historySearch.js +1 -1
- package/src/{memory → coordination/memory}/index.js +3 -3
- package/src/{report → coordination/report}/store.js +2 -2
- package/src/{ufoo → coordination/state}/agentRegistryDiagnostics.js +43 -0
- package/src/{status → coordination/status}/index.js +3 -3
- package/src/online/bridge.js +2 -2
- package/src/{controller → orchestration/controller}/flags.js +1 -1
- package/src/{controller → orchestration/controller}/gateRouter.js +1 -1
- package/src/orchestration/controller/index.js +10 -0
- package/src/{controller → orchestration/controller}/shadowGuard.js +1 -1
- package/src/orchestration/groups/bootstrap.js +3 -0
- package/src/orchestration/groups/index.js +10 -0
- package/src/orchestration/groups/promptProfiles.js +3 -0
- package/src/{group → orchestration/groups}/templates.js +1 -1
- package/src/{group → orchestration/groups}/validateTemplate.js +1 -1
- package/src/orchestration/index.js +7 -0
- package/src/orchestration/solo/index.js +3 -0
- package/src/{daemon → runtime/daemon}/agentProcessManager.js +1 -1
- package/src/{daemon → runtime/daemon}/cronOps.js +3 -2
- package/src/{daemon → runtime/daemon}/groupOrchestrator.js +26 -9
- package/src/{daemon → runtime/daemon}/index.js +273 -79
- package/src/{daemon → runtime/daemon}/ipcServer.js +24 -2
- package/src/{daemon → runtime/daemon}/nicknameScope.js +6 -3
- package/src/{daemon → runtime/daemon}/ops.js +48 -61
- package/src/{daemon → runtime/daemon}/promptLoop.js +1 -1
- package/src/{daemon → runtime/daemon}/promptRequest.js +13 -8
- package/src/runtime/daemon/providerSessions.js +230 -0
- package/src/{daemon → runtime/daemon}/reporting.js +4 -4
- package/src/{daemon → runtime/daemon}/run.js +12 -5
- package/src/{daemon → runtime/daemon}/soloBootstrap.js +7 -7
- package/src/{daemon → runtime/daemon}/status.js +5 -5
- package/src/runtime/index.js +10 -0
- package/src/runtime/process/nodeExecutable.js +26 -0
- package/src/{projects → runtime/projects}/registry.js +1 -1
- package/src/{projects → runtime/projects}/runtimes.js +1 -1
- package/src/{terminal → runtime/terminal}/adapterRouter.js +0 -10
- package/src/{terminal → runtime/terminal}/adapters/internalAdapter.js +0 -4
- package/src/tools/handlers/common.js +1 -1
- package/src/tools/handlers/listAgents.js +1 -1
- package/src/tools/handlers/memory.js +3 -3
- package/src/tools/handlers/readBusSummary.js +1 -1
- package/src/tools/handlers/readOpenDecisions.js +1 -1
- package/src/tools/handlers/readProjectRegistry.js +1 -1
- package/src/tools/handlers/readPromptHistory.js +2 -2
- package/src/tools/schemaFixtures.js +1 -1
- package/src/ui/MIGRATION.md +336 -0
- package/src/ui/format/index.js +974 -0
- package/src/ui/index.js +9 -0
- package/src/ui/ink/ChatApp.js +3674 -0
- package/src/ui/ink/DashboardBar.js +685 -0
- package/src/ui/ink/InkDemo.js +96 -0
- package/src/ui/ink/MultilineInput.js +612 -0
- package/src/ui/ink/UcodeApp.js +822 -0
- package/src/ui/ink/agentMirror.js +730 -0
- package/src/ui/ink/chatReducer.js +359 -0
- package/src/ui/runInk.js +57 -0
- package/src/bus/messageMeta.js +0 -52
- package/src/chat/agentViewController.js +0 -1072
- package/src/chat/chatLogController.js +0 -138
- package/src/chat/completionController.js +0 -533
- package/src/chat/dashboardKeyController.js +0 -573
- package/src/chat/index.js +0 -2214
- package/src/chat/inputHistoryController.js +0 -135
- package/src/chat/inputListenerController.js +0 -470
- package/src/chat/layout.js +0 -186
- package/src/chat/pasteController.js +0 -81
- package/src/chat/statusLineController.js +0 -223
- package/src/chat/streamTracker.js +0 -156
- package/src/code/config +0 -0
- package/src/daemon/providerSessions.js +0 -488
- package/src/terminal/adapters/internalPtyAdapter.js +0 -42
- /package/src/{code/prompts → agents/prompts/native}/actions.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/efficiency.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/environment.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/identity.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/safety.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/sections.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/system.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/tasks.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/toolDescriptions/bash.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/toolDescriptions/edit.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/toolDescriptions/read.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/toolDescriptions/write.js +0 -0
- /package/src/{code/prompts → agents/prompts/native}/ufoo.js +0 -0
- /package/src/{group → agents/prompts}/promptProfiles.js +0 -0
- /package/src/{agent → agents/providers}/claudeEventTranslator.js +0 -0
- /package/src/{agent → agents/providers}/claudeOauthTokenReader.js +0 -0
- /package/src/{agent → agents/providers}/claudeSessionFiles.js +0 -0
- /package/src/{agent → agents/providers}/codexEventTranslator.js +0 -0
- /package/src/{agent → agents/providers}/credentials/claude.js +0 -0
- /package/src/{agent → agents/providers}/credentials/codex.js +0 -0
- /package/src/{agent → agents/providers}/credentials/index.js +0 -0
- /package/src/{chat → app/chat}/agentBar.js +0 -0
- /package/src/{chat → app/chat}/agentDirectory.js +0 -0
- /package/src/{chat → app/chat}/cronScheduler.js +0 -0
- /package/src/{chat → app/chat}/daemonCoordinator.js +0 -0
- /package/src/{chat → app/chat}/daemonReconnect.js +0 -0
- /package/src/{chat → app/chat}/daemonTransportDefaults.js +0 -0
- /package/src/{chat → app/chat}/inputMath.js +0 -0
- /package/src/{chat → app/chat}/rawKeyMap.js +0 -0
- /package/src/{chat → app/chat}/settingsController.js +0 -0
- /package/src/{chat → app/chat}/text.js +0 -0
- /package/src/{chat → app/chat}/transientAgentState.js +0 -0
- /package/src/{cli → app/cli}/busCoreCommands.js +0 -0
- /package/src/{skills/index.js → app/cli/features/skills.js} +0 -0
- /package/src/{bus → coordination/bus}/nickname.js +0 -0
- /package/src/{bus → coordination/bus}/queue.js +0 -0
- /package/src/{context → coordination/context}/decisions.js +0 -0
- /package/src/{context → coordination/context}/doctor.js +0 -0
- /package/src/{context → coordination/context}/index.js +0 -0
- /package/src/{context → coordination/context}/sync.js +0 -0
- /package/src/{ufoo → coordination/state}/agentsStore.js +0 -0
- /package/src/{ufoo → coordination/state}/paths.js +0 -0
- /package/src/{controller → orchestration/controller}/launchRouting.js +0 -0
- /package/src/{controller → orchestration/controller}/routerFastPath.js +0 -0
- /package/src/{controller → orchestration/controller}/routerFinalize.js +0 -0
- /package/src/{group → orchestration/groups}/diagram.js +0 -0
- /package/src/{group → orchestration/groups}/templateValidation.js +0 -0
- /package/src/{solo → orchestration/solo}/commands.js +0 -0
- /package/src/{shared → runtime/contracts}/eventContract.js +0 -0
- /package/src/{shared → runtime/contracts}/ptySocketContract.js +0 -0
- /package/src/{providerapi → runtime/privacy}/redactor.js +0 -0
- /package/src/{providerapi → runtime/privacy}/shadowDiff.js +0 -0
- /package/src/{projects → runtime/projects}/identity.js +0 -0
- /package/src/{projects → runtime/projects}/index.js +0 -0
- /package/src/{projects → runtime/projects}/projectId.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapterContract.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapters/externalAdapter.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapters/hostAdapter.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapters/internalQueueAdapter.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapters/terminalAdapter.js +0 -0
- /package/src/{terminal → runtime/terminal}/adapters/tmuxAdapter.js +0 -0
- /package/src/{terminal → runtime/terminal}/detect.js +0 -0
- /package/src/{terminal → runtime/terminal}/index.js +0 -0
- /package/src/{terminal → runtime/terminal}/iterm2.js +0 -0
- /package/src/{utils → ui/format}/banner.js +0 -0
- /package/src/{shared → ui/format}/markdownRenderer.js +0 -0
package/README.zh-CN.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md)
|
|
4
4
|
|
|
5
|
-
ufoo
|
|
5
|
+
ufoo 是一个按项目隔离的多 Agent 工作区运行时。它把 Claude Code、
|
|
6
|
+
OpenAI Codex、Antigravity 和 ufoo 原生 `ucode` Agent 接入同一个 chat
|
|
7
|
+
仪表盘、daemon、事件总线、memory、report、group 编排和终端启动层。
|
|
6
8
|
|
|
7
9
|
npm 包:[u-foo](https://www.npmjs.com/package/u-foo)
|
|
8
10
|
|
|
@@ -12,21 +14,24 @@ npm 包:[u-foo](https://www.npmjs.com/package/u-foo)
|
|
|
12
14
|
[](https://nodejs.org)
|
|
13
15
|
[](https://www.apple.com/macos)
|
|
14
16
|
|
|
15
|
-
##
|
|
17
|
+
## 亮点
|
|
16
18
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
-
|
|
19
|
+
- 一个 TUI 仪表盘,用来启动、观察、消息通知和恢复多个 Agent。
|
|
20
|
+
- 项目 daemon 通过 `.ufoo/run/ufoo.sock` 管理启动/恢复、report、group、
|
|
21
|
+
cron 和 controller 路由。
|
|
22
|
+
- 项目内事件总线支持 Agent 间消息、唤醒、队列检查和终端激活。
|
|
23
|
+
- 共享上下文能力:decision、durable memory、prompt history、report 和
|
|
24
|
+
agent registry state。
|
|
25
|
+
- 支持 internal、tmux、host、Terminal.app、iTerm2 等启动模式。
|
|
26
|
+
- 内置 group 模板,用于启动和编排多 Agent 工作流。
|
|
27
|
+
- 提供原生 ufoo coding-agent 运行时 `ucode`。
|
|
24
28
|
|
|
25
29
|
## 环境要求
|
|
26
30
|
|
|
27
31
|
- Node.js 18 或更新版本。
|
|
28
|
-
- macOS,用于 Terminal.app/iTerm2
|
|
29
|
-
-
|
|
32
|
+
- macOS,用于 Terminal.app/iTerm2 集成。
|
|
33
|
+
- 使用对应包装器时,需要安装 Claude Code、Codex CLI 或 Antigravity CLI:
|
|
34
|
+
`uclaude`、`ucodex`、`uagy`。
|
|
30
35
|
|
|
31
36
|
## 安装
|
|
32
37
|
|
|
@@ -45,120 +50,145 @@ npm install
|
|
|
45
50
|
npm link
|
|
46
51
|
```
|
|
47
52
|
|
|
48
|
-
|
|
53
|
+
安装后提供这些命令:
|
|
54
|
+
|
|
55
|
+
| 命令 | 用途 |
|
|
56
|
+
|---|---|
|
|
57
|
+
| `ufoo` | 主 CLI、chat 仪表盘、daemon、group、bus、context、memory、report 和 online helper。 |
|
|
58
|
+
| `uclaude` | Claude Code 包装器,注入 ufoo bootstrap 和 bus 身份。 |
|
|
59
|
+
| `ucodex` | Codex 包装器,注入 ufoo bootstrap 和 bus 身份。 |
|
|
60
|
+
| `uagy` | Antigravity 包装器,注入 ufoo bootstrap 和 bus 身份。 |
|
|
61
|
+
| `ucode` | 原生 ufoo coding-agent CLI/TUI。 |
|
|
49
62
|
|
|
50
63
|
## 快速开始
|
|
51
64
|
|
|
65
|
+
初始化项目并打开 chat 仪表盘:
|
|
66
|
+
|
|
52
67
|
```bash
|
|
53
68
|
cd your-project
|
|
54
69
|
ufoo init --modules context,bus
|
|
55
70
|
ufoo
|
|
56
71
|
```
|
|
57
72
|
|
|
58
|
-
在 chat
|
|
73
|
+
在 chat 中启动 Agent:
|
|
59
74
|
|
|
60
75
|
```text
|
|
61
|
-
> /launch
|
|
62
|
-
> /launch
|
|
63
|
-
> /launch ucode
|
|
64
|
-
> @
|
|
76
|
+
> /launch codex reviewer
|
|
77
|
+
> /launch claude builder
|
|
78
|
+
> /launch ucode fixer
|
|
79
|
+
> @reviewer inspect the current diff and list release risks
|
|
65
80
|
```
|
|
66
81
|
|
|
67
|
-
|
|
82
|
+
也可以在项目目录中直接启动包装器:
|
|
68
83
|
|
|
69
84
|
```bash
|
|
70
85
|
uclaude
|
|
71
86
|
ucodex
|
|
87
|
+
uagy
|
|
72
88
|
ucode
|
|
73
89
|
```
|
|
74
90
|
|
|
75
|
-
|
|
91
|
+
跨项目全局 chat 模式:
|
|
76
92
|
|
|
77
93
|
```bash
|
|
78
94
|
ufoo -g
|
|
79
95
|
```
|
|
80
96
|
|
|
81
|
-
##
|
|
97
|
+
## 运行模型
|
|
82
98
|
|
|
83
99
|
```text
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
| | |
|
|
93
|
-
v v v
|
|
94
|
-
controller group runtime project registry
|
|
95
|
-
gate/router loop orchestration ~/.ufoo/projects
|
|
96
|
-
|
|
|
97
|
-
v
|
|
98
|
-
provider API transports and tools
|
|
99
|
-
codex/claude/ucode, memory, bus, terminal
|
|
100
|
-
|
|
|
101
|
-
v
|
|
102
|
-
uclaude / ucodex / ucode agent sessions
|
|
100
|
+
ufoo / ufoo chat
|
|
101
|
+
-> src/app/chat + src/ui/ink
|
|
102
|
+
-> project daemon over .ufoo/run/ufoo.sock
|
|
103
|
+
-> runtime daemon launch/resume/recover/reports/cron/groups
|
|
104
|
+
-> orchestration router, group templates, solo roles
|
|
105
|
+
-> agents launch/providers/internal/controller/activity
|
|
106
|
+
-> coordination bus/context/memory/history/report/state/status
|
|
107
|
+
-> shared controller/worker tools and native ucode tools
|
|
103
108
|
```
|
|
104
109
|
|
|
105
|
-
Chat UI
|
|
110
|
+
Chat 是 UI client。daemon 拥有项目运行态。Agent 通过 bus queue、prompt
|
|
111
|
+
injection、shared memory、report 和 tool handler 协作,而不是直接依赖
|
|
112
|
+
chat UI 代码。
|
|
106
113
|
|
|
107
|
-
##
|
|
114
|
+
## 日常使用
|
|
108
115
|
|
|
109
|
-
|
|
116
|
+
日常路径通常是先进入 chat,再在仪表盘里启动 Agent 和执行项目命令:
|
|
110
117
|
|
|
111
118
|
```bash
|
|
112
|
-
ufoo
|
|
113
|
-
ufoo
|
|
114
|
-
ufoo doctor
|
|
115
|
-
ufoo daemon --start
|
|
116
|
-
ufoo daemon --status
|
|
117
|
-
ufoo daemon --stop
|
|
119
|
+
ufoo
|
|
120
|
+
ufoo -g
|
|
118
121
|
```
|
|
119
122
|
|
|
120
|
-
`ufoo
|
|
123
|
+
`ufoo` 打开当前项目 chat。`ufoo -g` 打开全局 chat,用于在已注册项目之间
|
|
124
|
+
切换。项目 daemon 会按需启动。
|
|
121
125
|
|
|
122
|
-
### Chat
|
|
126
|
+
### Chat 内命令
|
|
123
127
|
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
```text
|
|
129
|
+
/launch codex reviewer
|
|
130
|
+
/launch claude builder
|
|
131
|
+
/launch ucode fixer
|
|
132
|
+
@reviewer inspect the current diff and list release risks
|
|
133
|
+
|
|
134
|
+
/status
|
|
135
|
+
/settings
|
|
136
|
+
/multi
|
|
137
|
+
/resume list
|
|
138
|
+
/project list
|
|
139
|
+
/project switch 2
|
|
140
|
+
/open /path/to/project
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
`uclaude`、`ucodex`、`uagy`、`ucode` 这些直接包装器仍然可用,但 ufoo 的
|
|
144
|
+
主要工作流是在 chat 里完成。
|
|
145
|
+
|
|
146
|
+
### 初始化与维护
|
|
147
|
+
|
|
148
|
+
这些是初始化或排障命令。进入 chat 后优先使用 slash command:
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
/init context bus resources
|
|
152
|
+
/doctor
|
|
153
|
+
/status
|
|
154
|
+
/daemon status
|
|
155
|
+
/daemon restart
|
|
156
|
+
/daemon stop
|
|
157
|
+
/daemon start
|
|
134
158
|
```
|
|
135
159
|
|
|
136
|
-
|
|
160
|
+
`ufoo init` 会创建 `.ufoo/`,确保 `AGENTS.md` 和 `CLAUDE.md` 存在,
|
|
161
|
+
初始化选中的模块,并准备共享存储。`CLAUDE.md` 可以是 symlink;项目指令
|
|
162
|
+
优先编辑 `AGENTS.md`。
|
|
137
163
|
|
|
138
|
-
|
|
164
|
+
项目尚未初始化时,也可以先在外部执行等价 CLI:`ufoo init --modules context,bus`。
|
|
139
165
|
|
|
140
166
|
### 事件总线
|
|
141
167
|
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
ufoo bus alert codex:abc123 --daemon --notify
|
|
149
|
-
ufoo bus wake ufoo-builder --reason follow-up
|
|
150
|
-
ufoo bus activate ufoo-builder
|
|
168
|
+
```text
|
|
169
|
+
/bus list
|
|
170
|
+
/bus status
|
|
171
|
+
/bus send codex:abc123 Please implement the approved slice.
|
|
172
|
+
/bus activate reviewer
|
|
173
|
+
/bus rename codex:abc123 reviewer
|
|
151
174
|
```
|
|
152
175
|
|
|
153
|
-
|
|
176
|
+
发送消息前,先用 `/bus status` 查看真实 subscriber ID 或可解析昵称。
|
|
177
|
+
Agent 应处理 pending work、回复发送方,并 ack 自己的队列。
|
|
154
178
|
|
|
155
|
-
###
|
|
179
|
+
### Context、Memory、History、Report
|
|
156
180
|
|
|
157
|
-
|
|
158
|
-
ufoo ctx decisions -l
|
|
159
|
-
ufoo ctx decisions -n 1
|
|
160
|
-
ufoo ctx decisions new "Adopt API-backed loop architecture"
|
|
181
|
+
在 chat 内:
|
|
161
182
|
|
|
183
|
+
```text
|
|
184
|
+
/ctx status
|
|
185
|
+
/ctx doctor
|
|
186
|
+
/ctx decisions
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Memory、history、report 管理仍是 CLI 辅助能力:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
162
192
|
ufoo memory add "Provider contract" --body "Durable fact..." --tags provider,contract
|
|
163
193
|
ufoo memory list --tag provider
|
|
164
194
|
ufoo memory show mem-0001
|
|
@@ -167,41 +197,41 @@ ufoo history build
|
|
|
167
197
|
ufoo history show 20
|
|
168
198
|
ufoo history prompt 30
|
|
169
199
|
|
|
170
|
-
ufoo report start "Implement README refresh" --task docs-readme --agent
|
|
171
|
-
ufoo report done "README updated" --task docs-readme --agent
|
|
200
|
+
ufoo report start "Implement README refresh" --task docs-readme --agent builder
|
|
201
|
+
ufoo report done "README updated" --task docs-readme --agent builder
|
|
172
202
|
ufoo report list
|
|
173
203
|
```
|
|
174
204
|
|
|
175
|
-
|
|
205
|
+
Decision 只用于计划级约束;长期项目事实应写入 memory。
|
|
176
206
|
|
|
177
207
|
### Group
|
|
178
208
|
|
|
179
|
-
|
|
180
|
-
ufoo group templates
|
|
181
|
-
ufoo group template show build-lane
|
|
182
|
-
ufoo group template validate templates/groups/build-lane.json
|
|
183
|
-
ufoo group run build-lane --dry-run
|
|
184
|
-
ufoo group run build-lane --instance docs-refresh
|
|
185
|
-
ufoo group status
|
|
186
|
-
ufoo group diagram build-lane --mermaid
|
|
187
|
-
ufoo group stop docs-refresh
|
|
188
|
-
```
|
|
209
|
+
内置 group 模板位于 `templates/groups/`。
|
|
189
210
|
|
|
190
|
-
|
|
211
|
+
```text
|
|
212
|
+
/group templates
|
|
213
|
+
/group template show build-lane
|
|
214
|
+
/group template validate templates/groups/build-lane.json
|
|
215
|
+
/group run build-lane dry_run=true
|
|
216
|
+
/group run build-lane instance=docs-refresh
|
|
217
|
+
/group status
|
|
218
|
+
/group diagram build-lane mermaid
|
|
219
|
+
/group stop docs-refresh
|
|
220
|
+
```
|
|
191
221
|
|
|
192
222
|
### Online Relay
|
|
193
223
|
|
|
194
224
|
```bash
|
|
195
225
|
ufoo online server --host 127.0.0.1 --port 8787
|
|
196
226
|
ufoo online token codex:abc123 --nickname builder
|
|
197
|
-
ufoo online channel list --nickname builder
|
|
198
227
|
ufoo online room create --nickname builder --name review-room --type private --password secret
|
|
199
228
|
ufoo online connect --nickname builder --room <room_id> --room-password secret
|
|
200
229
|
ufoo online send --nickname builder --room <room_id> --text "handoff ready"
|
|
201
230
|
ufoo online inbox builder --unread
|
|
202
231
|
```
|
|
203
232
|
|
|
204
|
-
|
|
233
|
+
默认公开服务地址是 `https://online.ufoo.dev`。本地开发可以用
|
|
234
|
+
`ufoo online server` 启动自己的 relay。
|
|
205
235
|
|
|
206
236
|
### 原生 ucode 运行时
|
|
207
237
|
|
|
@@ -209,36 +239,15 @@ ufoo online inbox builder --unread
|
|
|
209
239
|
ufoo ucode doctor
|
|
210
240
|
ufoo ucode prepare
|
|
211
241
|
ufoo ucode build
|
|
212
|
-
|
|
213
|
-
ucode-core submit --tool read --args-json '{"path":"README.md"}' --json
|
|
214
|
-
ucode-core run-once --json
|
|
215
|
-
ucode-core list --json
|
|
216
|
-
ucode-core skills list --json
|
|
217
|
-
ucode-core skills show <name>
|
|
218
242
|
```
|
|
219
243
|
|
|
220
|
-
`ucode
|
|
221
|
-
|
|
222
|
-
## 命令参考
|
|
223
|
-
|
|
224
|
-
| 范围 | 命令 |
|
|
225
|
-
|------|------|
|
|
226
|
-
| 运行态 | `ufoo`, `ufoo chat`, `ufoo -g`, `ufoo init`, `ufoo status`, `ufoo doctor`, `ufoo daemon --start|--status|--stop` |
|
|
227
|
-
| 项目 | `ufoo project list`, `ufoo project current`, `ufoo project switch`(v1 中仅 chat 可切换), chat `/open <path>` |
|
|
228
|
-
| Agent | `ufoo launch`, `ufoo solo list|run`, `ufoo role`, `ufoo resume <target>`, `ufoo recover list|run` |
|
|
229
|
-
| Bus | `ufoo bus join|status|send|check|listen|alert|wake|activate` |
|
|
230
|
-
| Context | `ufoo ctx doctor`, `ufoo ctx decisions`, `ufoo ctx sync` |
|
|
231
|
-
| Memory | `ufoo memory add|list|show|edit|forget|rebuild-index|audit` |
|
|
232
|
-
| Report | `ufoo report start|progress|done|error|list` |
|
|
233
|
-
| Group | `ufoo group templates|template|run|status|diagram|stop` |
|
|
234
|
-
| Online | `ufoo online server|token|room|channel|connect|send|inbox` |
|
|
235
|
-
| History | `ufoo history build|show|prompt` |
|
|
236
|
-
| Skills | `ufoo skills list|install` |
|
|
237
|
-
| Chat 命令 | `/skills`, `/settings`, `/settings agent`, `/settings router`, `/settings ucode` |
|
|
244
|
+
`ucode` 可以发现内置和本地 `SKILL.md` 工作流能力。完整 skill 内容只会在被
|
|
245
|
+
显式引用时加载。
|
|
238
246
|
|
|
239
247
|
## 配置
|
|
240
248
|
|
|
241
|
-
项目配置文件是 `.ufoo/config.json`。`ucode` provider 凭据写入全局
|
|
249
|
+
项目配置文件是 `.ufoo/config.json`。`ucode` provider 凭据写入全局
|
|
250
|
+
`~/.ufoo/config.json`,加载项目配置时会合并进来。
|
|
242
251
|
|
|
243
252
|
常见项目配置:
|
|
244
253
|
|
|
@@ -260,7 +269,8 @@ ucode-core skills show <name>
|
|
|
260
269
|
}
|
|
261
270
|
```
|
|
262
271
|
|
|
263
|
-
`launchMode` 支持 `auto`、`internal`、`
|
|
272
|
+
`launchMode` 支持 `auto`、`internal`、`tmux`、`terminal`、`host`。
|
|
273
|
+
`controllerMode` 支持 `main`、`shadow`、`loop` 和 legacy 兼容值。
|
|
264
274
|
|
|
265
275
|
全局 `ucode` 配置:
|
|
266
276
|
|
|
@@ -274,79 +284,23 @@ ucode-core skills show <name>
|
|
|
274
284
|
}
|
|
275
285
|
```
|
|
276
286
|
|
|
277
|
-
##
|
|
278
|
-
|
|
279
|
-
仓库结构:
|
|
280
|
-
|
|
281
|
-
```text
|
|
282
|
-
ufoo/
|
|
283
|
-
bin/ CLI 入口
|
|
284
|
-
src/ CommonJS 实现
|
|
285
|
-
agent/ Agent 启动、bootstrap、运行时、provider
|
|
286
|
-
bus/ 项目事件总线
|
|
287
|
-
chat/ 终端 dashboard UI
|
|
288
|
-
cli/ 命令适配层
|
|
289
|
-
code/ 原生 ucode core
|
|
290
|
-
controller/ gate router、launch routing、shadow guard
|
|
291
|
-
context/ 决策与上下文检查
|
|
292
|
-
daemon/ 项目 daemon、IPC、编排
|
|
293
|
-
group/ prompt profiles 与 group templates
|
|
294
|
-
memory/ shared memory store
|
|
295
|
-
online/ relay client/server helpers
|
|
296
|
-
projects/ 全局项目注册表
|
|
297
|
-
providerapi/ redaction 与 provider shadow-diff helpers
|
|
298
|
-
report/ Agent report store
|
|
299
|
-
terminal/ Terminal.app、iTerm2、tmux、host adapters
|
|
300
|
-
tools/ controller/tool handler registry
|
|
301
|
-
templates/groups/ 内置多 Agent group 模板
|
|
302
|
-
modules/ init 模板和打包模块文档
|
|
303
|
-
SKILLS/ 打包的 Agent skills
|
|
304
|
-
test/ Jest 单元测试和集成测试
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
执行 `ufoo init --modules context,bus` 后创建:
|
|
308
|
-
|
|
309
|
-
```text
|
|
310
|
-
your-project/
|
|
311
|
-
.ufoo/
|
|
312
|
-
memory/ 长期项目事实
|
|
313
|
-
context/
|
|
314
|
-
decisions/ decision 文件
|
|
315
|
-
decisions.jsonl decision 索引
|
|
316
|
-
bus/
|
|
317
|
-
events/ event log files
|
|
318
|
-
queues/ per-agent queues
|
|
319
|
-
logs/ bus logs
|
|
320
|
-
offsets/ read offsets
|
|
321
|
-
agent/
|
|
322
|
-
all-agents.json Agent 元数据注册表
|
|
323
|
-
daemon/
|
|
324
|
-
counts/ bus daemon delivery counts
|
|
325
|
-
docs -> docs/ 当项目存在 docs/ 时创建的可选 symlink
|
|
326
|
-
AGENTS.md 规范 Agent 指令文件
|
|
327
|
-
CLAUDE.md Claude 兼容指令文件
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
运行时或相关功能使用后创建:
|
|
287
|
+
## 源码结构
|
|
331
288
|
|
|
332
289
|
```text
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
.ufoo/agent/
|
|
344
|
-
reports/ Agent report records
|
|
345
|
-
private-inbox/ private controller inbox
|
|
346
|
-
sessions/ provider/session metadata
|
|
290
|
+
src/
|
|
291
|
+
app/ chat client state 和 CLI command entry
|
|
292
|
+
ui/ Ink components 和纯格式化 helper
|
|
293
|
+
runtime/ daemon、projects、terminal adapters、contracts、privacy、process helpers
|
|
294
|
+
coordination/ bus、context、memory、history、reports、state、status
|
|
295
|
+
orchestration/ router/controller logic、groups、solo roles
|
|
296
|
+
agents/ launchers、providers、prompts、internal runner、activity、controller
|
|
297
|
+
code/ 原生 ucode runtime、launcher、skills、file/shell tools
|
|
298
|
+
tools/ shared controller/worker tool registry 和 handlers
|
|
299
|
+
online/ relay client/server/runner/token helpers
|
|
347
300
|
```
|
|
348
301
|
|
|
349
|
-
|
|
302
|
+
维护者视角的项目地图见 [PROJECT.md](PROJECT.md),更细的目录 ownership 见
|
|
303
|
+
[docs/source-structure.md](docs/source-structure.md)。
|
|
350
304
|
|
|
351
305
|
## 开发
|
|
352
306
|
|
|
@@ -363,41 +317,41 @@ npm test
|
|
|
363
317
|
npm run test:watch
|
|
364
318
|
npm run test:coverage
|
|
365
319
|
npm run bench:global-switch
|
|
366
|
-
node bin/ucode-core.js --help
|
|
367
320
|
```
|
|
368
321
|
|
|
369
|
-
|
|
322
|
+
本仓库是 CommonJS,目标 Node.js 18+,没有 build step。
|
|
370
323
|
|
|
371
324
|
## 发布
|
|
372
325
|
|
|
373
|
-
|
|
326
|
+
请在干净工作区按标准 npm 流程发布:
|
|
374
327
|
|
|
375
328
|
```bash
|
|
376
329
|
npm test
|
|
377
330
|
npm pack --dry-run
|
|
378
|
-
npm version patch
|
|
379
|
-
npm publish
|
|
331
|
+
npm version patch
|
|
332
|
+
npm publish --access public
|
|
380
333
|
git push --follow-tags
|
|
381
334
|
```
|
|
382
335
|
|
|
383
|
-
发布前用 `npm pack --dry-run` 检查最终 tarball
|
|
336
|
+
发布前用 `npm pack --dry-run` 检查最终 tarball。发布需要有 `u-foo` 权限的
|
|
337
|
+
npm 账号/token。
|
|
384
338
|
|
|
385
339
|
## 故障排查
|
|
386
340
|
|
|
387
|
-
如果
|
|
341
|
+
如果 linked binary 不在 `PATH`,可以直接运行本地入口:
|
|
388
342
|
|
|
389
343
|
```bash
|
|
390
344
|
node bin/ufoo.js --help
|
|
391
345
|
```
|
|
392
346
|
|
|
393
|
-
如果 Codex 默认 home
|
|
347
|
+
如果 Codex 默认 home 不可写,可以在启动 chat 或 Agent 前指定项目内目录:
|
|
394
348
|
|
|
395
349
|
```bash
|
|
396
350
|
export CODEX_HOME="$PWD/.ufoo/codex"
|
|
397
351
|
ufoo
|
|
398
352
|
```
|
|
399
353
|
|
|
400
|
-
Codex 场景下建议使用 bus
|
|
354
|
+
Codex 场景下建议使用 bus helper,而不是依赖原始终端文本注入提醒:
|
|
401
355
|
|
|
402
356
|
```bash
|
|
403
357
|
ufoo bus alert codex:abc123 --daemon
|
package/SKILLS/ufoo/SKILL.md
CHANGED
|
@@ -15,12 +15,6 @@ ufoo is the multi-agent coordination layer. It provides four capabilities:
|
|
|
15
15
|
3. **Event Bus** — Inter-agent messaging
|
|
16
16
|
4. **Initialization** — Project setup for ufoo modules
|
|
17
17
|
|
|
18
|
-
## Session Marker
|
|
19
|
-
|
|
20
|
-
When you see a probe marker command like `/ufoo <marker>` (Claude) or `$ufoo <marker>` (Codex), this is daemon session tracking. **Do not reply.** Silently ignore it and wait for the next user input.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
18
|
## 1. Context Decisions (uctx)
|
|
25
19
|
|
|
26
20
|
### When to Record
|
|
@@ -161,8 +155,14 @@ Notes:
|
|
|
161
155
|
|
|
162
156
|
1. Check: `ufoo bus check $UFOO_SUBSCRIBER_ID`
|
|
163
157
|
2. Execute each task
|
|
164
|
-
3.
|
|
165
|
-
4.
|
|
158
|
+
3. **Always ack**: `ufoo bus ack $UFOO_SUBSCRIBER_ID`
|
|
159
|
+
4. Reply only when substantive — send `ufoo bus send "<publisher>" "<result>"` only if:
|
|
160
|
+
- The sender asked a question → reply with the answer
|
|
161
|
+
- The sender delegated a task → reply with the result / artifact
|
|
162
|
+
- You found something the sender needs to proceed
|
|
163
|
+
Do NOT reply with greetings, acknowledgments, or emoji alone — those create infinite reply loops.
|
|
164
|
+
5. **Report** if the work arrived from `[manual]<to:...>` or `[ufoo]<from:...>`:
|
|
165
|
+
`ufoo report progress|done|error "<short summary>"`
|
|
166
166
|
|
|
167
167
|
---
|
|
168
168
|
|
package/bin/uagy.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* uagy: Launch Antigravity CLI (agy) and auto-join the ufoo event bus.
|
|
4
|
+
*
|
|
5
|
+
* Usage: uagy [agy args...]
|
|
6
|
+
*
|
|
7
|
+
* Differences vs ucodex / uclaude:
|
|
8
|
+
* - agy is authenticated via Google OAuth + the OS keyring; ufoo does NOT
|
|
9
|
+
* manage credentials. Requires an account that is eligible for
|
|
10
|
+
* Antigravity (18+, supported region).
|
|
11
|
+
* - Model selection is in-REPL via `/model` (no command-line flag),
|
|
12
|
+
* so we never inject --model.
|
|
13
|
+
* - Session resume uses agy's own conversation UUIDs: when a previous
|
|
14
|
+
* session is found for the current tty/tmux pane, we pass
|
|
15
|
+
* `--conversation=<UUID>`. The id is captured on the previous exit by
|
|
16
|
+
* grepping the `Resume: agy --conversation=<UUID>` line agy prints to
|
|
17
|
+
* stdout right before quitting (see src/agents/launch/launcher.js +
|
|
18
|
+
* src/agents/launch/agyConversation.js).
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const AgentLauncher = require("../src/agents/launch/launcher");
|
|
22
|
+
const { resolveDefaultManualBootstrap } = require("../src/agents/prompts/defaultBootstrap");
|
|
23
|
+
const {
|
|
24
|
+
readPreviousConversationId,
|
|
25
|
+
buildAgyLaunchArgs,
|
|
26
|
+
} = require("../src/agents/launch/agyConversation");
|
|
27
|
+
|
|
28
|
+
const cwd = process.cwd();
|
|
29
|
+
|
|
30
|
+
// Resume: read the most recent conversation UUID recorded for the current
|
|
31
|
+
// tty/tmux pane. If found, agy will receive --conversation=<id>.
|
|
32
|
+
//
|
|
33
|
+
// IMPORTANT: use the launcher's own tty detection (shell `tty` command) so
|
|
34
|
+
// the value here matches what the launcher will later record on the agent
|
|
35
|
+
// meta. Reading only env vars (UFOO_TTY_OVERRIDE / TMUX_PANE) means
|
|
36
|
+
// autoResume silently no-ops for typical terminal users.
|
|
37
|
+
const ttyForLookup = (AgentLauncher._getEnvTtyOverride && AgentLauncher._getEnvTtyOverride())
|
|
38
|
+
|| (AgentLauncher._detectTtyOnce && AgentLauncher._detectTtyOnce())
|
|
39
|
+
|| "";
|
|
40
|
+
const previousConversationId = readPreviousConversationId(cwd, {
|
|
41
|
+
tty: ttyForLookup,
|
|
42
|
+
tmuxPane: process.env.TMUX_PANE || "",
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// In internal / unattended modes, auto-approve tool prompts so the agent
|
|
46
|
+
// doesn't stall waiting on a y/n the operator can't see. Terminal/tmux
|
|
47
|
+
// modes leave permissions in the user's hands (agy's default).
|
|
48
|
+
const launchMode = String(process.env.UFOO_LAUNCH_MODE || "").trim().toLowerCase();
|
|
49
|
+
const skipPermissions = launchMode === "internal";
|
|
50
|
+
|
|
51
|
+
const launchArgs = buildAgyLaunchArgs({
|
|
52
|
+
userArgs: process.argv.slice(2),
|
|
53
|
+
previousConversationId,
|
|
54
|
+
skipPermissions,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const launcher = new AgentLauncher("agy", "agy");
|
|
58
|
+
const resolved = resolveDefaultManualBootstrap({
|
|
59
|
+
projectRoot: cwd,
|
|
60
|
+
agentType: "agy",
|
|
61
|
+
args: launchArgs,
|
|
62
|
+
env: process.env,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
for (const [key, value] of Object.entries(resolved.env || {})) {
|
|
66
|
+
process.env[key] = String(value);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
launcher.launch(resolved.args);
|
package/bin/uclaude.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Usage: uclaude [claude args...]
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
const AgentLauncher = require("../src/
|
|
9
|
-
const { resolveDefaultManualBootstrap } = require("../src/
|
|
8
|
+
const AgentLauncher = require("../src/agents/launch/launcher");
|
|
9
|
+
const { resolveDefaultManualBootstrap } = require("../src/agents/prompts/defaultBootstrap");
|
|
10
10
|
|
|
11
11
|
const launcher = new AgentLauncher("claude-code", "claude");
|
|
12
12
|
const resolved = resolveDefaultManualBootstrap({
|
package/bin/ucode.js
CHANGED
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
const fs = require("fs");
|
|
14
|
-
const AgentLauncher = require("../src/
|
|
15
|
-
const { resolveUcodeLaunch } = require("../src/
|
|
16
|
-
const { prepareUcodeBootstrap } = require("../src/
|
|
17
|
-
const { prepareUcodeRuntimeConfig } = require("../src/
|
|
14
|
+
const AgentLauncher = require("../src/agents/launch/launcher");
|
|
15
|
+
const { resolveUcodeLaunch } = require("../src/code/launcher/ucode");
|
|
16
|
+
const { prepareUcodeBootstrap } = require("../src/code/launcher/ucodeBootstrap");
|
|
17
|
+
const { prepareUcodeRuntimeConfig } = require("../src/code/launcher/ucodeRuntimeConfig");
|
|
18
18
|
|
|
19
19
|
function stripAppendSystemPromptArgs(args = [], targetFile = "") {
|
|
20
20
|
const normalizedTarget = String(targetFile || "").trim();
|
package/bin/ucodex.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Usage: ucodex [codex args...]
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
const AgentLauncher = require("../src/
|
|
9
|
-
const { resolveDefaultManualBootstrap } = require("../src/
|
|
8
|
+
const AgentLauncher = require("../src/agents/launch/launcher");
|
|
9
|
+
const { resolveDefaultManualBootstrap } = require("../src/agents/prompts/defaultBootstrap");
|
|
10
10
|
|
|
11
11
|
const launcher = new AgentLauncher("codex", "codex");
|
|
12
12
|
const resolved = resolveDefaultManualBootstrap({
|