u-foo 2.3.32 → 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 +5 -5
- package/scripts/chat-app-smoke.js +1 -1
- package/scripts/global-chat-switch-benchmark.js +5 -5
- package/scripts/ink-demo.js +1 -1
- package/scripts/ink-smoke.js +1 -1
- package/scripts/ucode-app-smoke.js +1 -1
- 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 +50 -26
- 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 +45 -3
- package/src/{chat → app/chat}/dashboardView.js +2 -1
- package/src/app/chat/index.js +6 -0
- package/src/{chat → app/chat}/inputSubmitHandler.js +4 -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}/transport.js +1 -1
- 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} +59 -57
- 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/tui.js +3 -1454
- 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/{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 +105 -53
- package/src/{daemon → runtime/daemon}/ipcServer.js +1 -1
- 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 +7 -7
- package/src/runtime/daemon/providerSessions.js +230 -0
- package/src/{daemon → runtime/daemon}/reporting.js +4 -4
- package/src/{daemon → runtime/daemon}/run.js +4 -4
- 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/{projects → runtime/projects}/registry.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 +42 -88
- package/src/ui/format/index.js +5 -28
- package/src/ui/index.js +1 -1
- package/src/ui/{components → ink}/ChatApp.js +812 -88
- package/src/ui/ink/DashboardBar.js +685 -0
- package/src/ui/{components → ink}/MultilineInput.js +230 -5
- package/src/ui/{components → ink}/UcodeApp.js +16 -7
- package/src/ui/{components → ink}/agentMirror.js +24 -19
- package/src/ui/{components → ink}/chatReducer.js +29 -7
- 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 -533
- package/src/chat/index.js +0 -2222
- 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/ui/components/DashboardBar.js +0 -417
- /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}/daemonTransport.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}/projectCloseController.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}/shellCommand.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}/agentRegistryDiagnostics.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/{utils → runtime/process}/nodeExecutable.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/{projects → runtime/projects}/runtimes.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/src/ui/{components → ink}/InkDemo.js +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# ufoo
|
|
2
2
|
|
|
3
|
-
[
|
|
3
|
+
[中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
ufoo is a project-scoped multi-agent workspace runtime. It wraps Claude Code,
|
|
6
|
+
OpenAI Codex, Antigravity, and ufoo's native `ucode` agent with a shared chat
|
|
7
|
+
dashboard, daemon, event bus, memory, reports, group orchestration, and terminal
|
|
8
|
+
launch modes.
|
|
6
9
|
|
|
7
10
|
Package: [u-foo on npm](https://www.npmjs.com/package/u-foo)
|
|
8
11
|
|
|
@@ -12,23 +15,25 @@ Package: [u-foo on npm](https://www.npmjs.com/package/u-foo)
|
|
|
12
15
|
[](https://nodejs.org)
|
|
13
16
|
[](https://www.apple.com/macos)
|
|
14
17
|
|
|
15
|
-
##
|
|
18
|
+
## Highlights
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
20
|
+
- One TUI dashboard for launching, watching, messaging, and resuming agents.
|
|
21
|
+
- Project daemon over `.ufoo/run/ufoo.sock` for launch/resume, reports, groups,
|
|
22
|
+
cron, and controller routing.
|
|
23
|
+
- Project-local event bus for agent-to-agent messages, wakeups, queue checks,
|
|
24
|
+
and activation.
|
|
25
|
+
- Shared context primitives: decisions, durable memory, prompt history, reports,
|
|
26
|
+
and agent registry state.
|
|
27
|
+
- Launch modes for internal, tmux, host, Terminal.app, and iTerm2 workflows.
|
|
28
|
+
- Built-in group templates for launching and orchestrating multi-agent workflows.
|
|
29
|
+
- `ucode`, a native ufoo coding-agent runtime.
|
|
26
30
|
|
|
27
31
|
## Requirements
|
|
28
32
|
|
|
29
33
|
- Node.js 18 or newer.
|
|
30
|
-
- macOS for Terminal.app/iTerm2
|
|
31
|
-
- Claude Code
|
|
34
|
+
- macOS for Terminal.app/iTerm2 integration.
|
|
35
|
+
- Claude Code, Codex CLI, or Antigravity CLI installed when using the matching
|
|
36
|
+
wrappers: `uclaude`, `ucodex`, or `uagy`.
|
|
32
37
|
|
|
33
38
|
## Installation
|
|
34
39
|
|
|
@@ -49,15 +54,17 @@ npm link
|
|
|
49
54
|
|
|
50
55
|
Installed binaries:
|
|
51
56
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
| Binary | Purpose |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `ufoo` | Main CLI, chat dashboard, daemon, groups, bus, context, memory, reports, and online helpers. |
|
|
60
|
+
| `uclaude` | Claude Code wrapper with ufoo bootstrap and bus identity. |
|
|
61
|
+
| `ucodex` | Codex wrapper with ufoo bootstrap and bus identity. |
|
|
62
|
+
| `uagy` | Antigravity wrapper with ufoo bootstrap and bus identity. |
|
|
63
|
+
| `ucode` | Native ufoo coding-agent CLI/TUI. |
|
|
57
64
|
|
|
58
65
|
## Quick Start
|
|
59
66
|
|
|
60
|
-
Initialize a project and open chat:
|
|
67
|
+
Initialize a project and open the chat dashboard:
|
|
61
68
|
|
|
62
69
|
```bash
|
|
63
70
|
cd your-project
|
|
@@ -65,110 +72,128 @@ ufoo init --modules context,bus
|
|
|
65
72
|
ufoo
|
|
66
73
|
```
|
|
67
74
|
|
|
68
|
-
Launch agents from
|
|
75
|
+
Launch agents from chat:
|
|
69
76
|
|
|
70
77
|
```text
|
|
71
|
-
> /launch
|
|
72
|
-
> /launch
|
|
73
|
-
> /launch ucode
|
|
74
|
-
> @
|
|
78
|
+
> /launch codex reviewer
|
|
79
|
+
> /launch claude builder
|
|
80
|
+
> /launch ucode fixer
|
|
81
|
+
> @reviewer inspect the current diff and list release risks
|
|
75
82
|
```
|
|
76
83
|
|
|
77
|
-
Or launch wrappers directly
|
|
84
|
+
Or launch wrappers directly inside a project:
|
|
78
85
|
|
|
79
86
|
```bash
|
|
80
87
|
uclaude
|
|
81
88
|
ucodex
|
|
89
|
+
uagy
|
|
82
90
|
ucode
|
|
83
91
|
```
|
|
84
92
|
|
|
85
|
-
|
|
93
|
+
Use global chat mode to switch between registered projects:
|
|
86
94
|
|
|
87
95
|
```bash
|
|
88
96
|
ufoo -g
|
|
89
97
|
```
|
|
90
98
|
|
|
91
|
-
##
|
|
99
|
+
## Runtime Model
|
|
92
100
|
|
|
93
101
|
```text
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
| | |
|
|
103
|
-
v v v
|
|
104
|
-
controller group runtime project registry
|
|
105
|
-
gate/router loop orchestration ~/.ufoo/projects
|
|
106
|
-
|
|
|
107
|
-
v
|
|
108
|
-
provider API transports and tools
|
|
109
|
-
codex/claude/ucode, memory, bus, terminal
|
|
110
|
-
|
|
|
111
|
-
v
|
|
112
|
-
uclaude / ucodex / ucode agent sessions
|
|
102
|
+
ufoo / ufoo chat
|
|
103
|
+
-> src/app/chat + src/ui/ink
|
|
104
|
+
-> project daemon over .ufoo/run/ufoo.sock
|
|
105
|
+
-> runtime daemon launch/resume/recover/reports/cron/groups
|
|
106
|
+
-> orchestration router, group templates, solo roles
|
|
107
|
+
-> agents launch/providers/internal/controller/activity
|
|
108
|
+
-> coordination bus/context/memory/history/report/state/status
|
|
109
|
+
-> shared controller/worker tools and native ucode tools
|
|
113
110
|
```
|
|
114
111
|
|
|
115
|
-
|
|
112
|
+
Chat is a UI client. The daemon owns project runtime state. Agents communicate
|
|
113
|
+
through bus queues, prompt injection, shared memory, reports, and tool handlers
|
|
114
|
+
instead of importing chat UI code.
|
|
116
115
|
|
|
117
|
-
##
|
|
116
|
+
## Daily Usage
|
|
118
117
|
|
|
119
|
-
|
|
118
|
+
The normal workflow is to enter chat first, then launch agents and run project
|
|
119
|
+
commands inside the dashboard:
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
ufoo
|
|
123
|
-
ufoo
|
|
124
|
-
ufoo doctor
|
|
125
|
-
ufoo daemon --start
|
|
126
|
-
ufoo daemon --status
|
|
127
|
-
ufoo daemon --stop
|
|
122
|
+
ufoo
|
|
123
|
+
ufoo -g
|
|
128
124
|
```
|
|
129
125
|
|
|
130
|
-
`ufoo
|
|
126
|
+
`ufoo` opens the current project chat. `ufoo -g` opens global chat for switching
|
|
127
|
+
between registered projects. The project daemon is started as needed.
|
|
131
128
|
|
|
132
|
-
### Chat
|
|
129
|
+
### Chat Commands
|
|
133
130
|
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
131
|
+
```text
|
|
132
|
+
/launch codex reviewer
|
|
133
|
+
/launch claude builder
|
|
134
|
+
/launch ucode fixer
|
|
135
|
+
@reviewer inspect the current diff and list release risks
|
|
136
|
+
|
|
137
|
+
/status
|
|
138
|
+
/settings
|
|
139
|
+
/multi
|
|
140
|
+
/resume list
|
|
141
|
+
/project list
|
|
142
|
+
/project switch 2
|
|
143
|
+
/open /path/to/project
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
Direct wrapper commands such as `uclaude`, `ucodex`, `uagy`, and `ucode` are
|
|
147
|
+
still available, but the normal ufoo workflow is to work from chat.
|
|
148
|
+
|
|
149
|
+
### Initialization And Maintenance
|
|
150
|
+
|
|
151
|
+
These are setup or troubleshooting commands. In chat, use slash commands:
|
|
147
152
|
|
|
148
|
-
|
|
153
|
+
```text
|
|
154
|
+
/init context bus resources
|
|
155
|
+
/doctor
|
|
156
|
+
/status
|
|
157
|
+
/daemon status
|
|
158
|
+
/daemon restart
|
|
159
|
+
/daemon stop
|
|
160
|
+
/daemon start
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
`ufoo init` creates `.ufoo/`, ensures `AGENTS.md` and `CLAUDE.md`, initializes
|
|
164
|
+
selected modules, and prepares shared storage. `CLAUDE.md` may be a symlink;
|
|
165
|
+
edit project instructions in `AGENTS.md`.
|
|
166
|
+
|
|
167
|
+
Before a project has been initialized, the equivalent CLI form is also useful:
|
|
168
|
+
`ufoo init --modules context,bus`.
|
|
149
169
|
|
|
150
170
|
### Event Bus
|
|
151
171
|
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
ufoo bus alert codex:abc123 --daemon --notify
|
|
159
|
-
ufoo bus wake ufoo-builder --reason follow-up
|
|
160
|
-
ufoo bus activate ufoo-builder
|
|
172
|
+
```text
|
|
173
|
+
/bus list
|
|
174
|
+
/bus status
|
|
175
|
+
/bus send codex:abc123 Please implement the approved slice.
|
|
176
|
+
/bus activate reviewer
|
|
177
|
+
/bus rename codex:abc123 reviewer
|
|
161
178
|
```
|
|
162
179
|
|
|
163
|
-
Use
|
|
180
|
+
Use `/bus status` to find the real subscriber ID or resolvable nickname
|
|
181
|
+
before sending. Agents should handle pending work, reply to the sender, and
|
|
182
|
+
acknowledge their queue.
|
|
164
183
|
|
|
165
|
-
### Context, Memory,
|
|
184
|
+
### Context, Memory, History, Reports
|
|
166
185
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
186
|
+
Inside chat:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
/ctx status
|
|
190
|
+
/ctx doctor
|
|
191
|
+
/ctx decisions
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Memory, history, and report management are CLI utilities:
|
|
171
195
|
|
|
196
|
+
```bash
|
|
172
197
|
ufoo memory add "Provider contract" --body "Durable fact..." --tags provider,contract
|
|
173
198
|
ufoo memory list --tag provider
|
|
174
199
|
ufoo memory show mem-0001
|
|
@@ -177,86 +202,58 @@ ufoo history build
|
|
|
177
202
|
ufoo history show 20
|
|
178
203
|
ufoo history prompt 30
|
|
179
204
|
|
|
180
|
-
ufoo report start "Implement README refresh" --task docs-readme --agent
|
|
181
|
-
ufoo report done "README updated" --task docs-readme --agent
|
|
205
|
+
ufoo report start "Implement README refresh" --task docs-readme --agent builder
|
|
206
|
+
ufoo report done "README updated" --task docs-readme --agent builder
|
|
182
207
|
ufoo report list
|
|
183
208
|
```
|
|
184
209
|
|
|
185
|
-
Use decisions
|
|
186
|
-
|
|
187
|
-
### Command Reference
|
|
188
|
-
|
|
189
|
-
| Area | Commands |
|
|
190
|
-
|------|----------|
|
|
191
|
-
| Runtime | `ufoo`, `ufoo chat`, `ufoo -g`, `ufoo init`, `ufoo status`, `ufoo doctor`, `ufoo daemon --start|--status|--stop` |
|
|
192
|
-
| Projects | `ufoo project list`, `ufoo project current`, `ufoo project switch` (chat-only in v1), chat `/open <path>` |
|
|
193
|
-
| Agents | `ufoo launch`, `ufoo solo list|run`, `ufoo role`, `ufoo resume <target>`, `ufoo recover list|run` |
|
|
194
|
-
| Bus | `ufoo bus join|status|send|check|listen|alert|wake|activate` |
|
|
195
|
-
| Context | `ufoo ctx doctor`, `ufoo ctx decisions`, `ufoo ctx sync` |
|
|
196
|
-
| Memory | `ufoo memory add|list|show|edit|forget|rebuild-index|audit` |
|
|
197
|
-
| Reports | `ufoo report start|progress|done|error|list` |
|
|
198
|
-
| Groups | `ufoo group templates|template|run|status|diagram|stop` |
|
|
199
|
-
| Online | `ufoo online server|token|room|channel|connect|send|inbox` |
|
|
200
|
-
| History | `ufoo history build|show|prompt` |
|
|
201
|
-
| Skills | `ufoo skills list|install` |
|
|
202
|
-
| Chat commands | `/skills`, `/settings`, `/settings agent`, `/settings router`, `/settings ucode` |
|
|
210
|
+
Use decisions only for plan-level constraints. Durable project facts belong in
|
|
211
|
+
memory.
|
|
203
212
|
|
|
204
213
|
### Groups
|
|
205
214
|
|
|
206
215
|
Built-in group templates live in `templates/groups/`.
|
|
207
216
|
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
+
```text
|
|
218
|
+
/group templates
|
|
219
|
+
/group template show build-lane
|
|
220
|
+
/group template validate templates/groups/build-lane.json
|
|
221
|
+
/group run build-lane dry_run=true
|
|
222
|
+
/group run build-lane instance=docs-refresh
|
|
223
|
+
/group status
|
|
224
|
+
/group diagram build-lane mermaid
|
|
225
|
+
/group stop docs-refresh
|
|
217
226
|
```
|
|
218
227
|
|
|
219
|
-
Current built-ins include `build-lane`, `build-ultra`, `design-system`, `product-discovery`, `ui-plan-review`, `ui-polish`, and `verify-ship`.
|
|
220
|
-
|
|
221
228
|
### Online Relay
|
|
222
229
|
|
|
223
230
|
```bash
|
|
224
231
|
ufoo online server --host 127.0.0.1 --port 8787
|
|
225
232
|
ufoo online token codex:abc123 --nickname builder
|
|
226
|
-
ufoo online channel list --nickname builder
|
|
227
233
|
ufoo online room create --nickname builder --name review-room --type private --password secret
|
|
228
234
|
ufoo online connect --nickname builder --room <room_id> --room-password secret
|
|
229
235
|
ufoo online send --nickname builder --room <room_id> --text "handoff ready"
|
|
230
236
|
ufoo online inbox builder --unread
|
|
231
237
|
```
|
|
232
238
|
|
|
233
|
-
|
|
239
|
+
The default public service URL is `https://online.ufoo.dev`. Local development
|
|
240
|
+
can run its own relay with `ufoo online server`.
|
|
234
241
|
|
|
235
242
|
### Native ucode Runtime
|
|
236
243
|
|
|
237
|
-
Prepare and inspect native `ucode` wiring:
|
|
238
|
-
|
|
239
244
|
```bash
|
|
240
245
|
ufoo ucode doctor
|
|
241
246
|
ufoo ucode prepare
|
|
242
247
|
ufoo ucode build
|
|
243
248
|
```
|
|
244
249
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
ucode-core submit --tool read --args-json '{"path":"README.md"}' --json
|
|
249
|
-
ucode-core run-once --json
|
|
250
|
-
ucode-core list --json
|
|
251
|
-
ucode-core skills list --json
|
|
252
|
-
ucode-core skills show <name>
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
`ucode-core skills list` discovers ufoo/ucode built-in and local `SKILL.md` preset workflow capabilities for selection. It lists metadata only; full skill bodies are loaded by ucode only when the user explicitly references a skill such as `$demo` or a direct `SKILL.md` link.
|
|
250
|
+
`ucode` can discover built-in and local `SKILL.md` workflow capabilities. Full
|
|
251
|
+
skill bodies are loaded only when explicitly referenced.
|
|
256
252
|
|
|
257
253
|
## Configuration
|
|
258
254
|
|
|
259
|
-
Project configuration is stored in `.ufoo/config.json`. `ucode` provider
|
|
255
|
+
Project configuration is stored in `.ufoo/config.json`. `ucode` provider
|
|
256
|
+
credentials are stored globally in `~/.ufoo/config.json` and merged at load time.
|
|
260
257
|
|
|
261
258
|
Common project settings:
|
|
262
259
|
|
|
@@ -278,7 +275,9 @@ Common project settings:
|
|
|
278
275
|
}
|
|
279
276
|
```
|
|
280
277
|
|
|
281
|
-
Supported `launchMode` values
|
|
278
|
+
Supported `launchMode` values: `auto`, `internal`, `tmux`, `terminal`, and
|
|
279
|
+
`host`. `controllerMode` accepts `main`, `shadow`, `loop`, and legacy
|
|
280
|
+
compatibility values.
|
|
282
281
|
|
|
283
282
|
Global `ucode` settings:
|
|
284
283
|
|
|
@@ -292,81 +291,24 @@ Global `ucode` settings:
|
|
|
292
291
|
}
|
|
293
292
|
```
|
|
294
293
|
|
|
295
|
-
##
|
|
296
|
-
|
|
297
|
-
Repository layout:
|
|
294
|
+
## Source Layout
|
|
298
295
|
|
|
299
296
|
```text
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
daemon/ project daemon, IPC, orchestration
|
|
311
|
-
group/ prompt profiles and group templates
|
|
312
|
-
memory/ shared memory store
|
|
313
|
-
online/ relay client/server helpers
|
|
314
|
-
projects/ global project registry
|
|
315
|
-
providerapi/ redaction and provider shadow-diff helpers
|
|
316
|
-
report/ agent report store
|
|
317
|
-
terminal/ Terminal.app, iTerm2, tmux, host adapters
|
|
318
|
-
tools/ controller/tool handler registry
|
|
319
|
-
templates/groups/ built-in multi-agent group templates
|
|
320
|
-
modules/ init templates and packaged module docs
|
|
321
|
-
SKILLS/ packaged agent skills
|
|
322
|
-
test/ Jest unit and integration tests
|
|
297
|
+
src/
|
|
298
|
+
app/ chat client state and CLI command entry
|
|
299
|
+
ui/ Ink components and pure formatting helpers
|
|
300
|
+
runtime/ daemon, projects, terminal adapters, contracts, privacy, process helpers
|
|
301
|
+
coordination/ bus, context, memory, history, reports, state, status
|
|
302
|
+
orchestration/ router/controller logic, groups, solo roles
|
|
303
|
+
agents/ launchers, providers, prompts, internal runner, activity, controller
|
|
304
|
+
code/ native ucode runtime, launcher, skills, file/shell tools
|
|
305
|
+
tools/ shared controller/worker tool registry and handlers
|
|
306
|
+
online/ relay client/server/runner/token helpers
|
|
323
307
|
```
|
|
324
308
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
your-project/
|
|
329
|
-
.ufoo/
|
|
330
|
-
memory/ durable project facts
|
|
331
|
-
context/
|
|
332
|
-
decisions/ decision files
|
|
333
|
-
decisions.jsonl decision index
|
|
334
|
-
bus/
|
|
335
|
-
events/ event log files
|
|
336
|
-
queues/ per-agent queues
|
|
337
|
-
logs/ bus logs
|
|
338
|
-
offsets/ read offsets
|
|
339
|
-
agent/
|
|
340
|
-
all-agents.json agent metadata registry
|
|
341
|
-
daemon/
|
|
342
|
-
counts/ bus daemon delivery counts
|
|
343
|
-
docs -> docs/ optional symlink when project docs exist
|
|
344
|
-
AGENTS.md canonical agent instructions
|
|
345
|
-
CLAUDE.md Claude-compatible instructions file
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
Created at runtime or when the related feature is used:
|
|
349
|
-
|
|
350
|
-
```text
|
|
351
|
-
.ufoo/run/
|
|
352
|
-
ufoo.sock project daemon IPC socket
|
|
353
|
-
ufoo-daemon.pid project daemon pid
|
|
354
|
-
ufoo-daemon.log project daemon log
|
|
355
|
-
.ufoo/daemon/
|
|
356
|
-
daemon.pid bus auto-inject daemon pid
|
|
357
|
-
daemon.log bus auto-inject daemon log
|
|
358
|
-
.ufoo/chat/ chat runtime state
|
|
359
|
-
.ufoo/groups/ group runtime instances
|
|
360
|
-
.ufoo/history/ agent input timeline
|
|
361
|
-
.ufoo/agent/
|
|
362
|
-
reports/ agent report records
|
|
363
|
-
private-inbox/ private controller inbox
|
|
364
|
-
sessions/ provider/session metadata
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
`CLAUDE.md` may be a regular file or a symlink; project instructions should be edited in `AGENTS.md`.
|
|
368
|
-
|
|
369
|
-
Global runtime state lives under `~/.ufoo/`, including `~/.ufoo/config.json` for `ucode` provider settings and `~/.ufoo/projects/runtime/*.json` for global chat project registry records.
|
|
309
|
+
See [PROJECT.md](PROJECT.md) for the maintainer-facing map and
|
|
310
|
+
[docs/source-structure.md](docs/source-structure.md) for detailed package
|
|
311
|
+
ownership.
|
|
370
312
|
|
|
371
313
|
## Development
|
|
372
314
|
|
|
@@ -383,41 +325,43 @@ Useful checks:
|
|
|
383
325
|
npm run test:watch
|
|
384
326
|
npm run test:coverage
|
|
385
327
|
npm run bench:global-switch
|
|
386
|
-
node bin/ucode-core.js --help
|
|
387
328
|
```
|
|
388
329
|
|
|
389
|
-
The
|
|
330
|
+
The repository is CommonJS, targets Node.js 18+, and has no build step.
|
|
390
331
|
|
|
391
332
|
## Release
|
|
392
333
|
|
|
393
|
-
|
|
334
|
+
Use the standard npm flow from a clean worktree:
|
|
394
335
|
|
|
395
336
|
```bash
|
|
396
337
|
npm test
|
|
397
338
|
npm pack --dry-run
|
|
398
|
-
npm version patch
|
|
399
|
-
npm publish
|
|
339
|
+
npm version patch
|
|
340
|
+
npm publish --access public
|
|
400
341
|
git push --follow-tags
|
|
401
342
|
```
|
|
402
343
|
|
|
403
|
-
`npm pack --dry-run` should be used to verify the final tarball.
|
|
344
|
+
`npm pack --dry-run` should be used to verify the final tarball. Publishing
|
|
345
|
+
requires an npm account/token with permission for `u-foo`.
|
|
404
346
|
|
|
405
347
|
## Troubleshooting
|
|
406
348
|
|
|
407
|
-
|
|
349
|
+
Run a local entry directly if the linked binary is not on `PATH`:
|
|
408
350
|
|
|
409
351
|
```bash
|
|
410
352
|
node bin/ufoo.js --help
|
|
411
353
|
```
|
|
412
354
|
|
|
413
|
-
If Codex cannot write under its default home, point it at a project-local
|
|
355
|
+
If Codex cannot write under its default home, point it at a project-local
|
|
356
|
+
directory before launching chat or agents:
|
|
414
357
|
|
|
415
358
|
```bash
|
|
416
359
|
export CODEX_HOME="$PWD/.ufoo/codex"
|
|
417
360
|
ufoo
|
|
418
361
|
```
|
|
419
362
|
|
|
420
|
-
For Codex-friendly notifications, prefer
|
|
363
|
+
For Codex-friendly notifications, prefer bus helpers over raw terminal text
|
|
364
|
+
injection:
|
|
421
365
|
|
|
422
366
|
```bash
|
|
423
367
|
ufoo bus alert codex:abc123 --daemon
|