@superclawd-ai/fda 0.0.0-stage → 0.1.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/package.json CHANGED
@@ -1,6 +1,87 @@
1
1
  {
2
2
  "name": "@superclawd-ai/fda",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "SuperClawd FDA \u2014 a forward deployed agent for your team: a Slack-driven AI developer that runs on its own machine with your SuperClawd workspace.",
6
+ "author": "SuperClawd <support@superclawd.com>",
7
+ "license": "SEE LICENSE IN LICENSE",
8
+ "homepage": "https://superclawd.com",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/superclawd-ai/superclawd"
12
+ },
13
+ "keywords": [
14
+ "superclawd",
15
+ "fda",
16
+ "claude-code",
17
+ "slack",
18
+ "ai-agent",
19
+ "autonomous"
20
+ ],
21
+ "engines": {
22
+ "node": ">=22.13"
23
+ },
24
+ "type": "module",
25
+ "main": "dist-server/index.mjs",
26
+ "bin": {
27
+ "superclawd-fda": "dist-server/cli.mjs"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "dist-server",
32
+ "scripts",
33
+ "README.md",
34
+ "LICENSE"
35
+ ],
36
+ "scripts": {
37
+ "dev": "concurrently -k -n api,web -c blue,green \"pnpm dev:api\" \"pnpm dev:web\"",
38
+ "dev:api": "FDA_HOME=.fda-dev tsx watch server/index.ts",
39
+ "dev:web": "vite",
40
+ "build": "node build.mjs",
41
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.app.json",
42
+ "test": "tsx test/run-all.ts",
43
+ "lint": "eslint 'server/**/*.ts' 'src/**/*.{ts,tsx}'",
44
+ "format": "prettier --check 'server/**/*.ts' 'test/**/*.ts' 'src/**/*.{ts,tsx}'",
45
+ "format:fix": "prettier --write 'server/**/*.ts' 'test/**/*.ts' 'src/**/*.{ts,tsx}'"
46
+ },
47
+ "dependencies": {
48
+ "@modelcontextprotocol/sdk": "^1.7.0",
49
+ "@slack/socket-mode": "^3.1.0",
50
+ "@slack/web-api": "^8.2.0",
51
+ "express": "^4.21.2",
52
+ "zod": "^3.24.2"
53
+ },
54
+ "devDependencies": {
55
+ "@eslint/js": "^9.39.1",
56
+ "@tanstack/react-query": "^5.90.11",
57
+ "@types/express": "^4.17.21",
58
+ "@types/node": "^22.10.0",
59
+ "@types/react": "^18.3.12",
60
+ "@types/react-dom": "^18.3.1",
61
+ "@typescript-eslint/eslint-plugin": "^8.44.1",
62
+ "@typescript-eslint/parser": "^8.44.1",
63
+ "@vitejs/plugin-react": "^4.3.4",
64
+ "autoprefixer": "^10.4.22",
65
+ "class-variance-authority": "^0.7.1",
66
+ "clsx": "^2.1.1",
67
+ "concurrently": "^9.1.0",
68
+ "esbuild": "^0.24.0",
69
+ "eslint": "^9.36.0",
70
+ "eslint-config-prettier": "^10.1.8",
71
+ "eslint-plugin-prettier": "^5.5.4",
72
+ "eslint-plugin-react-hooks": "^5.1.0",
73
+ "eslint-plugin-react-refresh": "^0.4.16",
74
+ "lucide-react": "^0.555.0",
75
+ "postcss": "^8.5.6",
76
+ "prettier": "^3.6.2",
77
+ "react": "^18.3.1",
78
+ "react-dom": "^18.3.1",
79
+ "react-router-dom": "^7.9.6",
80
+ "tailwind-merge": "^3.4.0",
81
+ "tailwindcss": "3",
82
+ "tailwindcss-animate": "^1.0.7",
83
+ "tsx": "^4.19.2",
84
+ "typescript": "^5.9.2",
85
+ "vite": "^6.0.5"
86
+ }
87
+ }
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env bash
2
+ # SuperClawd FDA machine installer (Ubuntu 24.04+). Run as the operator user, NOT root:
3
+ # curl -fsSLO https://superclawd.com/fda/install.sh && bash install.sh [--with-browser]
4
+ # It uses sudo only for system packages and the systemd unit. Safe to re-run (idempotent).
5
+ set -euo pipefail
6
+
7
+ main() {
8
+ # Pinned versions (bumped together with the setup guide's dependency table).
9
+ local NODE_MAJOR=22
10
+ local SUPERCLAWD_VERSION="${SUPERCLAWD_VERSION:-latest}"
11
+ local FDA_VERSION="${FDA_VERSION:-latest}"
12
+ local PLAYWRIGHT_MCP_VERSION="0.0.83"
13
+ local WITH_BROWSER=0
14
+ local FROM_DIR=""
15
+
16
+ while [ $# -gt 0 ]; do
17
+ case "$1" in
18
+ --with-browser) WITH_BROWSER=1 ;;
19
+ --from-dir) FROM_DIR="$2"; shift ;; # dev: install packed tarballs (superclawd-*.tgz, superclawd-ai-fda-*.tgz)
20
+ -h|--help) echo "Usage: bash install.sh [--with-browser] [--from-dir <dir-with-tgz>]"; return 0 ;;
21
+ *) echo "Unknown option: $1" >&2; return 64 ;;
22
+ esac
23
+ shift
24
+ done
25
+
26
+ if [ "$(id -u)" -eq 0 ]; then
27
+ echo "✗ Run this as your regular user (not root). It uses sudo only where needed." >&2
28
+ return 1
29
+ fi
30
+ . /etc/os-release 2>/dev/null || true
31
+ if [ "${ID:-}" != "ubuntu" ]; then
32
+ echo "! This installer is tested on Ubuntu 24.04+; continuing on ${PRETTY_NAME:-an unknown system}." >&2
33
+ fi
34
+
35
+ echo "→ System packages"
36
+ sudo apt-get update -qq
37
+ sudo apt-get install -y -qq git curl ca-certificates jq gnupg bubblewrap >/dev/null
38
+
39
+ if ! command -v node >/dev/null || [ "$(node -p 'process.versions.node.split(".")[0]')" -lt "$NODE_MAJOR" ] \
40
+ || ! node -e 'const [a,b]=process.versions.node.split(".").map(Number); process.exit(a>22||(a===22&&b>=13)?0:1)'; then
41
+ echo "→ Node.js $NODE_MAJOR (NodeSource)"
42
+ curl -fsSL "https://deb.nodesource.com/setup_${NODE_MAJOR}.x" | sudo -E bash - >/dev/null
43
+ sudo apt-get install -y -qq nodejs >/dev/null
44
+ fi
45
+
46
+ if ! command -v gh >/dev/null; then
47
+ echo "→ GitHub CLI"
48
+ sudo mkdir -p -m 755 /etc/apt/keyrings
49
+ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null
50
+ sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
51
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
52
+ | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null
53
+ sudo apt-get update -qq && sudo apt-get install -y -qq gh >/dev/null
54
+ fi
55
+
56
+ echo "→ SuperClawd CLI + FDA"
57
+ if [ -n "$FROM_DIR" ]; then
58
+ sudo npm i -g --no-fund --no-audit "$FROM_DIR"/superclawd-[0-9]*.tgz "$FROM_DIR"/superclawd-ai-fda-*.tgz >/dev/null
59
+ else
60
+ sudo npm i -g --no-fund --no-audit "superclawd@${SUPERCLAWD_VERSION}" "@superclawd-ai/fda@${FDA_VERSION}" >/dev/null
61
+ fi
62
+
63
+ if ! command -v claude >/dev/null && [ ! -x "$HOME/.local/bin/claude" ]; then
64
+ echo "→ Claude Code"
65
+ curl -fsSL https://claude.ai/install.sh | bash >/dev/null
66
+ fi
67
+
68
+ mkdir -p -m 700 "$HOME/.superclawd/fda"
69
+ local envfile="$HOME/.superclawd/fda/env"
70
+ if [ ! -f "$envfile" ]; then
71
+ printf 'DISABLE_AUTOUPDATER=1\n' > "$envfile"
72
+ chmod 600 "$envfile"
73
+ fi
74
+
75
+ if [ "$WITH_BROWSER" = 1 ]; then
76
+ echo "→ Browser (Playwright MCP $PLAYWRIGHT_MCP_VERSION + Chromium)"
77
+ local bdir="$HOME/.superclawd/fda/browser"
78
+ mkdir -p "$bdir"
79
+ (cd "$bdir" && npm init -y >/dev/null && npm i --no-fund --no-audit "@playwright/mcp@${PLAYWRIGHT_MCP_VERSION}" >/dev/null)
80
+ local pwv
81
+ pwv="$(node -p "require('$bdir/node_modules/playwright/package.json').version")"
82
+ sudo npx -y "playwright@${pwv}" install-deps chromium >/dev/null
83
+ npx -y "playwright@${pwv}" install chromium >/dev/null
84
+ fi
85
+
86
+ echo "→ Service"
87
+ local node cli tmpl
88
+ node="$(command -v node)"
89
+ cli="$(npm root -g)/@superclawd-ai/fda/dist-server/cli.mjs"
90
+ tmpl="$(npm root -g)/@superclawd-ai/fda/scripts/superclawd-fda.service.tmpl"
91
+ [ -f "$cli" ] || { echo "✗ FDA package not found at $cli" >&2; return 1; }
92
+ sed -e "s|__USER__|$(id -un)|g" -e "s|__HOME__|$HOME|g" -e "s|__NODE__|$node|g" -e "s|__CLI__|$cli|g" "$tmpl" \
93
+ | sudo tee /etc/systemd/system/superclawd-fda.service >/dev/null
94
+ sudo systemctl daemon-reload
95
+ sudo systemctl enable superclawd-fda >/dev/null
96
+
97
+ cat <<NEXT
98
+
99
+ ✓ Installed. Next steps (see the setup guide):
100
+ 1. superclawd login
101
+ 2. superclawd fda setup --workspace <your-workspace-slug>
102
+ 3. printf '%s' "\$ANTHROPIC_API_KEY" | superclawd fda config set-key
103
+ 4. superclawd fda start && superclawd fda doctor
104
+ 5. Open the admin panel (tailscale serve --bg --https=443 http://127.0.0.1:63220), sign in with
105
+ the password from: superclawd fda credentials
106
+ NEXT
107
+ }
108
+
109
+ main "$@"
@@ -0,0 +1,28 @@
1
+ # SuperClawd FDA daemon. Installed by install.sh; placeholders are filled in at install time.
2
+ [Unit]
3
+ Description=SuperClawd FDA (Slack-driven AI engineer)
4
+ Wants=network-online.target
5
+ After=network-online.target tailscaled.service
6
+ StartLimitIntervalSec=300
7
+ StartLimitBurst=5
8
+
9
+ [Service]
10
+ Type=simple
11
+ User=__USER__
12
+ WorkingDirectory=__HOME__
13
+ Environment=HOME=__HOME__
14
+ Environment=PATH=__HOME__/.local/bin:/usr/local/bin:/usr/bin:/bin
15
+ Environment=NODE_ENV=production
16
+ EnvironmentFile=-__HOME__/.superclawd/fda/env
17
+ ExecStart=__NODE__ __CLI__ run
18
+ Restart=on-failure
19
+ RestartSec=5
20
+ # 78 = configuration problem a human must fix (don't restart-loop on it).
21
+ RestartPreventExitStatus=78
22
+ # SIGTERM to the daemon (it stops the running turn gracefully), then SIGKILL for the rest of the cgroup.
23
+ KillMode=mixed
24
+ TimeoutStopSec=45
25
+ NoNewPrivileges=true
26
+
27
+ [Install]
28
+ WantedBy=multi-user.target