@openduo/duoduo 0.4.4 → 0.4.6
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/bootstrap/codex-runtime.md +68 -0
- package/bootstrap/dashboard.html +1 -1
- package/bootstrap/var/channels/DUODUO.md +5 -0
- package/bootstrap/var/telemetry/DUODUO.md +8 -0
- package/dist/release/cli.js +834 -770
- package/dist/release/daemon.js +318 -277
- package/dist/release/feishu-gateway.js +48 -33
- package/dist/release/stdio.js +145 -122
- package/package.json +2 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Codex Runtime
|
|
2
|
+
|
|
3
|
+
Duoduo supports two runtime backends:
|
|
4
|
+
|
|
5
|
+
- **Claude** (default) — Claude Agent SDK.
|
|
6
|
+
- **Codex** (GPT-5.4) — Codex app-server protocol over stdio.
|
|
7
|
+
|
|
8
|
+
Codex is off by default.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- `codex` CLI installed and on `$PATH`.
|
|
13
|
+
- `codex` authenticated with valid API credentials.
|
|
14
|
+
|
|
15
|
+
## Environment Variables
|
|
16
|
+
|
|
17
|
+
| Variable | Required | Values | Default |
|
|
18
|
+
| ---------------------- | -------- | ------------------ | ----------------- |
|
|
19
|
+
| `ALADUO_CODEX_ENABLED` | Yes | `1`, `true`, `yes` | off |
|
|
20
|
+
| `ALADUO_CODEX_SANDBOX` | No | see below | `workspace-write` |
|
|
21
|
+
|
|
22
|
+
### Sandbox Modes
|
|
23
|
+
|
|
24
|
+
| Value | Disk | Network | Notes |
|
|
25
|
+
| -------------------- | --------- | ------- | --------------------------------------------- |
|
|
26
|
+
| `workspace-write` | cwd only | No | Default. Safe for most jobs. |
|
|
27
|
+
| `read-only` | Read-only | No | Analysis-only tasks. |
|
|
28
|
+
| `danger-full-access` | Full | Yes | Needed for localhost API or external network. |
|
|
29
|
+
|
|
30
|
+
## Enable
|
|
31
|
+
|
|
32
|
+
Add the variables to the daemon's persistent config file and restart:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# ~/.config/duoduo/.env (created if missing)
|
|
36
|
+
echo 'ALADUO_CODEX_ENABLED=1' >> ~/.config/duoduo/.env
|
|
37
|
+
# optional:
|
|
38
|
+
echo 'ALADUO_CODEX_SANDBOX=workspace-write' >> ~/.config/duoduo/.env
|
|
39
|
+
|
|
40
|
+
duoduo daemon restart
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> **Note:** The daemon reads `~/.config/duoduo/.env` on startup. Shell-only
|
|
44
|
+
> `export` does not persist across launchd/systemd restarts.
|
|
45
|
+
|
|
46
|
+
## Disable
|
|
47
|
+
|
|
48
|
+
Remove or comment out `ALADUO_CODEX_ENABLED` from `~/.config/duoduo/.env`,
|
|
49
|
+
then restart:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
sed -i '' '/^ALADUO_CODEX_ENABLED/d' ~/.config/duoduo/.env
|
|
53
|
+
duoduo daemon restart
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Existing `runtime: codex` jobs silently fall back to Claude.
|
|
57
|
+
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
When enabled, the ManageJob tool exposes a `runtime` field (`"claude"` | `"codex"`).
|
|
61
|
+
A preflight check runs `codex --version` at job creation and reports errors early.
|
|
62
|
+
|
|
63
|
+
## Limitations
|
|
64
|
+
|
|
65
|
+
- Codex built-in tools (bash, file edit, web search) cannot be selectively disabled.
|
|
66
|
+
- `additionalDirectories` not supported — memory board is injected inline.
|
|
67
|
+
- `AGENTS.md` is auto-symlinked from `CLAUDE.md` in job workspaces.
|
|
68
|
+
- Memory board changes take effect on next thread, not mid-thread.
|
package/bootstrap/dashboard.html
CHANGED
|
@@ -836,7 +836,7 @@ body{
|
|
|
836
836
|
interval_ms:"ALADUO_CADENCE_INTERVAL_MS",meta_max_quiet_ticks:"ALADUO_META_MAX_QUIET_TICKS",
|
|
837
837
|
runtime_lock_heartbeat_ms:"ALADUO_RUNTIME_LOCK_HEARTBEAT_MS",
|
|
838
838
|
pull_limit:"ALADUO_PULL_LIMIT",pull_wait_ms:"ALADUO_PULL_WAIT_MS",subscribe_replay_limit:"ALADUO_SUBSCRIBE_REPLAY_LIMIT",
|
|
839
|
-
log_level:"ALADUO_LOG_LEVEL",sdk_debug:"ALADUO_SDK_DEBUG",log_session_lifecycle:"ALADUO_LOG_SESSION_LIFECYCLE",
|
|
839
|
+
log_level:"ALADUO_LOG_LEVEL",sdk_debug:"ALADUO_SDK_DEBUG",log_session_lifecycle:"ALADUO_LOG_SESSION_LIFECYCLE",telemetry_enabled:"ALADUO_TELEMETRY_ENABLED",
|
|
840
840
|
permission_mode:"ALADUO_PERMISSION_MODE",
|
|
841
841
|
work_dir:"ALADUO_WORK_DIR",bootstrap_dir:"ALADUO_BOOTSTRAP_DIR",meta_prompt_path:"ALADUO_META_PROMPT_PATH"
|
|
842
842
|
};
|
|
@@ -54,6 +54,11 @@ disallowedTools: ["EnterPlanMode"]
|
|
|
54
54
|
additionalDirectories:
|
|
55
55
|
- /refs
|
|
56
56
|
- ~/shared-docs
|
|
57
|
+
|
|
58
|
+
# Enable/disable streaming (optional, default: true)
|
|
59
|
+
# When false, output is buffered until the turn completes.
|
|
60
|
+
# Useful for group chats where streaming typing indicators are noise.
|
|
61
|
+
stream: false
|
|
57
62
|
---
|
|
58
63
|
You are a research assistant specialized in financial analysis.
|
|
59
64
|
Use the reference documents in /refs/ for evidence-based answers.
|
|
@@ -54,6 +54,14 @@ Bare numeric values are treated as minutes, so `--since 90` means the last 90 mi
|
|
|
54
54
|
|
|
55
55
|
The report prints `count`, `avg`, `p50`, `p95`, and `max` for each known metric.
|
|
56
56
|
|
|
57
|
+
To disable telemetry file persistence entirely on a host, set:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ALADUO_TELEMETRY_ENABLED=false
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
When disabled, duoduo still emits in-process debug telemetry logs when log level allows it, but it skips appending JSONL files under this directory.
|
|
64
|
+
|
|
57
65
|
## Guarantees
|
|
58
66
|
|
|
59
67
|
- **Append-only**: telemetry files are never rewritten in place.
|