@profoundlogic/coderflow-server 0.6.2 → 0.6.4
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/dist/base-image/Dockerfile +4 -2
- package/dist/base-image/agent-wrapper.sh +32 -4
- package/dist/base-image/entrypoint.sh +3 -0
- package/dist/coder-server.js +1 -1
- package/dist/config/cli-models.json +12 -0
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.html +39 -0
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +23 -0
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +101 -1
- package/dist/web-ui/public/task.html +46 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/.claude/settings.local.json +0 -20
- package/dist/playwright-test-results/.last-run.json +0 -54
|
@@ -81,7 +81,8 @@ RUN userdel -r node 2>/dev/null || true
|
|
|
81
81
|
RUN groupadd -g ${USER_GID} coder && \
|
|
82
82
|
useradd -m -u ${USER_UID} -g ${USER_GID} -s /bin/bash coder && \
|
|
83
83
|
mkdir -p /home/coder/.ssh /home/coder/.claude /home/coder/.codex \
|
|
84
|
-
/home/coder/.config/google-generative-ai /home/coder/.gemini
|
|
84
|
+
/home/coder/.config/google-generative-ai /home/coder/.gemini \
|
|
85
|
+
/home/coder/.bob && \
|
|
85
86
|
chown -R coder:coder /home/coder
|
|
86
87
|
|
|
87
88
|
# Configure git for root user (used during docker builds with BuildKit secrets)
|
|
@@ -118,8 +119,9 @@ RUN chmod 644 /etc/ssh/ssh_config.d/10-github-multiplexing.conf
|
|
|
118
119
|
RUN sed -i '/^# If not running interactively/i # Source environment variables from setup.sh\nif [ -f ~/.bash_env ]; then\n . ~/.bash_env\nfi\n' /home/coder/.bashrc && \
|
|
119
120
|
printf '\n# Source environment variables from setup.sh\nif [ -f ~/.bash_env ]; then\n . ~/.bash_env\nfi\n' >> /home/coder/.profile
|
|
120
121
|
|
|
121
|
-
# Install Claude Code, Codex,
|
|
122
|
+
# Install Claude Code, Codex, Gemini CLI, and Bob-Shell globally
|
|
122
123
|
RUN npm install -g @openai/codex @google/gemini-cli && \
|
|
124
|
+
npm install -g "https://ibm.biz/bob-shell-install" && \
|
|
123
125
|
su - coder -c "curl -fsSL https://claude.ai/install.sh | bash"
|
|
124
126
|
|
|
125
127
|
# Pre-install Playwright browser binaries (not the skill itself)
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# Wrapper script to run AI agents (Claude/Codex/Gemini) and output JSON statistics
|
|
2
|
+
# Wrapper script to run AI agents (Claude/Codex/Gemini/Bob) and output JSON statistics
|
|
3
3
|
#
|
|
4
4
|
# Model selection via environment variables:
|
|
5
5
|
# CLAUDE_MODEL - Model for Claude (e.g., opus, sonnet, haiku)
|
|
6
6
|
# CLAUDE_CODE_EFFORT_LEVEL - Effort level for Claude (low, medium, high, max)
|
|
7
7
|
# OPENAI_MODEL - Model for Codex/OpenAI (e.g., gpt-5.4)
|
|
8
8
|
# GEMINI_MODEL - Model for Gemini (e.g., gemini-2.5-pro)
|
|
9
|
+
# BOB_SHELL_MODEL - Model for Bob-Shell (e.g., bob-2.5-pro)
|
|
9
10
|
# CODEX_REASONING_LEVEL - Reasoning level for Codex (low, medium, high, xhigh)
|
|
10
11
|
# CODEX_MODEL_PROVIDER - Optional Codex model provider override (e.g., coderflow_managed_custom_endpoint)
|
|
11
12
|
#
|
|
@@ -32,6 +33,10 @@ elif [[ "$AGENT_CMD" == *"gemini"* ]]; then
|
|
|
32
33
|
if [[ -n "$GEMINI_MODEL" ]]; then
|
|
33
34
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Model: $GEMINI_MODEL" >&2
|
|
34
35
|
fi
|
|
36
|
+
elif [[ "$AGENT_CMD" == *"bob"* ]]; then
|
|
37
|
+
if [[ -n "$BOB_SHELL_MODEL" ]]; then
|
|
38
|
+
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Model: $BOB_SHELL_MODEL" >&2
|
|
39
|
+
fi
|
|
35
40
|
else
|
|
36
41
|
if [[ -n "$CLAUDE_MODEL" ]]; then
|
|
37
42
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Model: $CLAUDE_MODEL" >&2
|
|
@@ -141,6 +146,29 @@ elif [[ "$AGENT_CMD" == *"gemini"* ]]; then
|
|
|
141
146
|
EXIT_CODE=$?
|
|
142
147
|
fi
|
|
143
148
|
|
|
149
|
+
elif [[ "$AGENT_CMD" == *"bob"* ]]; then
|
|
150
|
+
# Bob-Shell is a Gemini CLI fork - uses BOB_SHELL_MODEL env var
|
|
151
|
+
# Only pass --model if explicitly configured; otherwise let Bob use its default
|
|
152
|
+
BOB_MODEL_ARG=""
|
|
153
|
+
if [[ -n "$BOB_SHELL_MODEL" ]]; then
|
|
154
|
+
BOB_MODEL_ARG="--model $BOB_SHELL_MODEL"
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
# Same pattern as Gemini: stdin for instructions, --yolo for auto-approval
|
|
158
|
+
if [[ "$*" == *"--resume"* ]]; then
|
|
159
|
+
cat "$TEMP_INPUT" | "$AGENT_CMD" $BOB_MODEL_ARG --resume latest --yolo --include-directories /task-output --include-directories /workspace --output-format stream-json >> /task-output/debug-stream.jsonl 2>&1 &
|
|
160
|
+
AGENT_PID=$!
|
|
161
|
+
echo "$AGENT_PID" > "$AGENT_PID_FILE"
|
|
162
|
+
wait_for_agent
|
|
163
|
+
EXIT_CODE=$?
|
|
164
|
+
else
|
|
165
|
+
cat "$TEMP_INPUT" | "$AGENT_CMD" $BOB_MODEL_ARG --yolo --include-directories /task-output --include-directories /workspace --output-format stream-json "$@" >> /task-output/debug-stream.jsonl 2>&1 &
|
|
166
|
+
AGENT_PID=$!
|
|
167
|
+
echo "$AGENT_PID" > "$AGENT_PID_FILE"
|
|
168
|
+
wait_for_agent
|
|
169
|
+
EXIT_CODE=$?
|
|
170
|
+
fi
|
|
171
|
+
|
|
144
172
|
else
|
|
145
173
|
# Claude - pass model via --model flag if CLAUDE_MODEL is set
|
|
146
174
|
MODEL_ARG=""
|
|
@@ -167,9 +195,9 @@ if [ -f /task-output/debug-stream.jsonl ] && [ $EXIT_CODE -eq 0 ]; then
|
|
|
167
195
|
if [[ "$AGENT_CMD" == *"claude"* ]]; then
|
|
168
196
|
# Claude: Look for last text block in assistant message
|
|
169
197
|
RESPONSE=$(grep -a '"type":"assistant"' /task-output/debug-stream.jsonl | tail -1 | jq -r '.message.content[] | select(.type=="text") | .text' 2>/dev/null | head -20 || echo "")
|
|
170
|
-
elif [[ "$AGENT_CMD" == *"gemini"* ]]; then
|
|
171
|
-
# Gemini: Extract last assistant message content (the actual response)
|
|
172
|
-
#
|
|
198
|
+
elif [[ "$AGENT_CMD" == *"gemini"* ]] || [[ "$AGENT_CMD" == *"bob"* ]]; then
|
|
199
|
+
# Gemini/Bob-Shell: Extract last assistant message content (the actual response)
|
|
200
|
+
# Format: {"type":"message","role":"assistant","content":"...","delta":true}
|
|
173
201
|
RESPONSE=$(grep -a '"type":"message"' /task-output/debug-stream.jsonl | grep -a '"role":"assistant"' | tail -1 | jq -r '.content' 2>/dev/null || echo "")
|
|
174
202
|
elif [[ "$AGENT_CMD" == *"codex"* ]]; then
|
|
175
203
|
# Codex: Look for last agent_message or reasoning item
|
|
@@ -907,6 +907,9 @@ main() {
|
|
|
907
907
|
elif [ "$AGENT" = "gemini" ]; then
|
|
908
908
|
ln -sf /workspace/AGENTS.md /workspace/GEMINI.md
|
|
909
909
|
log "AGENTS.md copied and GEMINI.md symlink created" >&2
|
|
910
|
+
elif [ "$AGENT" = "bob" ]; then
|
|
911
|
+
# Bob-Shell reads AGENTS.md directly (no agent-specific symlink needed)
|
|
912
|
+
log "AGENTS.md copied (Bob reads AGENTS.md directly)" >&2
|
|
910
913
|
elif [ "$AGENT" = "codex" ]; then
|
|
911
914
|
# Codex doesn't use agent-specific files, just AGENTS.md
|
|
912
915
|
log "AGENTS.md copied (no agent-specific symlink for Codex)" >&2
|