@onesclawkolor/onesclaw 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/README.md +65 -0
- package/dist/agent/conversation.d.ts +34 -0
- package/dist/agent/conversation.js +61 -0
- package/dist/agent/conversation.js.map +1 -0
- package/dist/agent/loop.d.ts +40 -0
- package/dist/agent/loop.js +213 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/session.d.ts +73 -0
- package/dist/agent/session.js +225 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/audit/file-sink.d.ts +6 -0
- package/dist/audit/file-sink.js +21 -0
- package/dist/audit/file-sink.js.map +1 -0
- package/dist/audit/ids.d.ts +3 -0
- package/dist/audit/ids.js +15 -0
- package/dist/audit/ids.js.map +1 -0
- package/dist/audit/types.d.ts +13 -0
- package/dist/audit/types.js +2 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/cli/commands.d.ts +31 -0
- package/dist/cli/commands.js +433 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/logger.d.ts +57 -0
- package/dist/cli/logger.js +79 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/output.d.ts +59 -0
- package/dist/cli/output.js +306 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/prompt.d.ts +29 -0
- package/dist/cli/prompt.js +197 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/repl.d.ts +4 -0
- package/dist/cli/repl.js +486 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.js +84 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/model.d.ts +3 -0
- package/dist/commands/model.js +178 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/plugin-init.d.ts +23 -0
- package/dist/commands/plugin-init.js +303 -0
- package/dist/commands/plugin-init.js.map +1 -0
- package/dist/commands/provider-auth.d.ts +14 -0
- package/dist/commands/provider-auth.js +153 -0
- package/dist/commands/provider-auth.js.map +1 -0
- package/dist/config/manager.d.ts +71 -0
- package/dist/config/manager.js +201 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/types.d.ts +43 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.js +55 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/anthropic.d.ts +83 -0
- package/dist/llm/anthropic.js +190 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/factory.d.ts +105 -0
- package/dist/llm/factory.js +164 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/openai-codex.d.ts +102 -0
- package/dist/llm/openai-codex.js +445 -0
- package/dist/llm/openai-codex.js.map +1 -0
- package/dist/llm/openai.d.ts +71 -0
- package/dist/llm/openai.js +289 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/llm/provider.d.ts +1 -0
- package/dist/llm/provider.js +2 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/llm/types.d.ts +72 -0
- package/dist/llm/types.js +2 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/mcp/bridge.d.ts +17 -0
- package/dist/mcp/bridge.js +74 -0
- package/dist/mcp/bridge.js.map +1 -0
- package/dist/mcp/config.d.ts +10 -0
- package/dist/mcp/config.js +27 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/manager.d.ts +67 -0
- package/dist/mcp/manager.js +207 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/memory/scope.d.ts +4 -0
- package/dist/memory/scope.js +14 -0
- package/dist/memory/scope.js.map +1 -0
- package/dist/memory/store.d.ts +28 -0
- package/dist/memory/store.js +126 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/prompts/system.d.ts +4 -0
- package/dist/prompts/system.js +197 -0
- package/dist/prompts/system.js.map +1 -0
- package/dist/skills/loader.d.ts +25 -0
- package/dist/skills/loader.js +98 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts +57 -0
- package/dist/skills/registry.js +132 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/sync.d.ts +33 -0
- package/dist/skills/sync.js +180 -0
- package/dist/skills/sync.js.map +1 -0
- package/dist/skills/types.d.ts +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/ask.d.ts +30 -0
- package/dist/tools/ask.js +60 -0
- package/dist/tools/ask.js.map +1 -0
- package/dist/tools/confirmation.d.ts +12 -0
- package/dist/tools/confirmation.js +75 -0
- package/dist/tools/confirmation.js.map +1 -0
- package/dist/tools/plugin-init.d.ts +29 -0
- package/dist/tools/plugin-init.js +47 -0
- package/dist/tools/plugin-init.js.map +1 -0
- package/dist/tools/registry.d.ts +56 -0
- package/dist/tools/registry.js +123 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/safety.d.ts +2 -0
- package/dist/tools/safety.js +30 -0
- package/dist/tools/safety.js.map +1 -0
- package/dist/tools/server.d.ts +91 -0
- package/dist/tools/server.js +149 -0
- package/dist/tools/server.js.map +1 -0
- package/dist/tools/shell.d.ts +11 -0
- package/dist/tools/shell.js +174 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/skills-sync.d.ts +19 -0
- package/dist/tools/skills-sync.js +29 -0
- package/dist/tools/skills-sync.js.map +1 -0
- package/dist/tools/ssh.d.ts +62 -0
- package/dist/tools/ssh.js +343 -0
- package/dist/tools/ssh.js.map +1 -0
- package/dist/tools/types.d.ts +10 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/retry.d.ts +7 -0
- package/dist/utils/retry.js +34 -0
- package/dist/utils/retry.js.map +1 -0
- package/install.sh +171 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { logger } from '../cli/logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* 通用重试函数(指数退避)
|
|
5
|
+
*
|
|
6
|
+
* 首次执行 fn(),失败后按 baseDelayMs * 2^attempt 间隔重试,
|
|
7
|
+
* 直到成功或达到 maxRetries 次。
|
|
8
|
+
*/
|
|
9
|
+
export async function withRetry(fn, options) {
|
|
10
|
+
const { maxRetries, baseDelayMs, maxDelayMs = 10000, shouldRetry } = options;
|
|
11
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
12
|
+
try {
|
|
13
|
+
return await fn();
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
// 最后一次尝试 or 不可重试 → 直接抛出
|
|
17
|
+
if (attempt === maxRetries)
|
|
18
|
+
throw error;
|
|
19
|
+
if (shouldRetry && !shouldRetry(error))
|
|
20
|
+
throw error;
|
|
21
|
+
// 指数退避
|
|
22
|
+
const delay = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
|
|
23
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
24
|
+
logger.debug('retry', `Attempt ${attempt + 1}/${maxRetries} failed: ${message}, retrying in ${delay}ms`);
|
|
25
|
+
await sleep(delay);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// TypeScript 需要(实际不会到达)
|
|
29
|
+
throw new Error('Unreachable');
|
|
30
|
+
}
|
|
31
|
+
function sleep(ms) {
|
|
32
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAE,EAAE,OAAO;IACvC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC7E,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,wBAAwB;YACxB,IAAI,OAAO,KAAK,UAAU;gBACtB,MAAM,KAAK,CAAC;YAChB,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAClC,MAAM,KAAK,CAAC;YAChB,OAAO;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,OAAO,GAAG,CAAC,IAAI,UAAU,YAAY,OAAO,iBAAiB,KAAK,IAAI,CAAC,CAAC;YACzG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,wBAAwB;IACxB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,KAAK,CAAC,EAAE;IACb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
package/install.sh
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
PACKAGE_NAME="${ONESCLAW_PACKAGE_NAME:-@onesclawkolor/onesclaw}"
|
|
5
|
+
NPM_REGISTRY="${ONESCLAW_NPM_REGISTRY:-https://registry.npmjs.org/}"
|
|
6
|
+
NPM_GLOBAL_PREFIX="${ONESCLAW_NPM_GLOBAL_PREFIX:-}"
|
|
7
|
+
SKIP_INIT="${ONESCLAW_SKIP_INIT:-0}"
|
|
8
|
+
MIN_NODE_VERSION=18
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[0;33m'
|
|
11
|
+
RED='\033[0;31m'
|
|
12
|
+
CYAN='\033[0;36m'
|
|
13
|
+
NC='\033[0m'
|
|
14
|
+
|
|
15
|
+
info() { printf "${CYAN} %s${NC}\n" "$1"; }
|
|
16
|
+
success() { printf "${GREEN} ✓ %s${NC}\n" "$1"; }
|
|
17
|
+
warn() { printf "${YELLOW} ⚠ %s${NC}\n" "$1"; }
|
|
18
|
+
error() { printf "${RED} ✗ %s${NC}\n" "$1"; }
|
|
19
|
+
|
|
20
|
+
detect_os() {
|
|
21
|
+
case "$(uname -s)" in
|
|
22
|
+
Darwin*) echo "macos" ;;
|
|
23
|
+
Linux*) echo "linux" ;;
|
|
24
|
+
MINGW*|MSYS*|CYGWIN*) echo "windows" ;;
|
|
25
|
+
*) echo "unknown" ;;
|
|
26
|
+
esac
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
check_node() {
|
|
30
|
+
if command -v node &>/dev/null; then
|
|
31
|
+
local node_version
|
|
32
|
+
node_version=$(node -v | sed 's/v//' | cut -d. -f1)
|
|
33
|
+
if [ "$node_version" -ge "$MIN_NODE_VERSION" ]; then
|
|
34
|
+
success "Node.js $(node -v) found"
|
|
35
|
+
return 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
warn "Node.js $(node -v) found, but >= v${MIN_NODE_VERSION} is required"
|
|
39
|
+
return 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
warn "Node.js not found"
|
|
43
|
+
return 1
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
install_node() {
|
|
47
|
+
info "Node.js >= v${MIN_NODE_VERSION} is required. Installing automatically..."
|
|
48
|
+
|
|
49
|
+
if [ "$OS" = "macos" ]; then
|
|
50
|
+
if ! command -v brew &>/dev/null; then
|
|
51
|
+
info "Homebrew not found. Installing Homebrew first..."
|
|
52
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
53
|
+
if [ -f /opt/homebrew/bin/brew ]; then
|
|
54
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
55
|
+
fi
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
info "Installing Node.js via Homebrew..."
|
|
59
|
+
brew install node
|
|
60
|
+
else
|
|
61
|
+
if command -v apt-get &>/dev/null; then
|
|
62
|
+
info "Installing Node.js 22.x via NodeSource (apt)..."
|
|
63
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
64
|
+
sudo apt-get install -y nodejs
|
|
65
|
+
elif command -v dnf &>/dev/null; then
|
|
66
|
+
info "Installing Node.js 22.x via NodeSource (dnf)..."
|
|
67
|
+
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
|
|
68
|
+
sudo dnf install -y nodejs
|
|
69
|
+
elif command -v yum &>/dev/null; then
|
|
70
|
+
info "Installing Node.js 22.x via NodeSource (yum)..."
|
|
71
|
+
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
|
|
72
|
+
sudo yum install -y nodejs
|
|
73
|
+
else
|
|
74
|
+
error "Could not detect package manager (apt/dnf/yum)."
|
|
75
|
+
error "Please install Node.js >= v${MIN_NODE_VERSION} manually: https://nodejs.org/"
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
if command -v node &>/dev/null; then
|
|
81
|
+
success "Node.js $(node -v) installed successfully"
|
|
82
|
+
else
|
|
83
|
+
error "Node.js installation failed. Please install manually: https://nodejs.org/"
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
echo ""
|
|
89
|
+
echo " ╔════════════════════════════════════╗"
|
|
90
|
+
echo " ║ ONESCLAW CLI Installer ║"
|
|
91
|
+
echo " ║ ONES 企业内部 AI Agent CLI ║"
|
|
92
|
+
echo " ╚════════════════════════════════════╝"
|
|
93
|
+
echo ""
|
|
94
|
+
|
|
95
|
+
OS=$(detect_os)
|
|
96
|
+
if [ "$OS" = "unknown" ]; then
|
|
97
|
+
error "Unsupported operating system: $(uname -s)"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
if [ "$OS" = "windows" ]; then
|
|
102
|
+
error "Windows is not supported. Please use WSL (Windows Subsystem for Linux)."
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
info "Detected OS: $OS"
|
|
107
|
+
|
|
108
|
+
if ! check_node; then
|
|
109
|
+
install_node
|
|
110
|
+
fi
|
|
111
|
+
|
|
112
|
+
if ! command -v npm &>/dev/null; then
|
|
113
|
+
error "npm not found. It should be installed with Node.js."
|
|
114
|
+
error "Please reinstall Node.js from https://nodejs.org/"
|
|
115
|
+
exit 1
|
|
116
|
+
fi
|
|
117
|
+
success "npm $(npm -v) found"
|
|
118
|
+
info "Using npm registry: ${NPM_REGISTRY}"
|
|
119
|
+
|
|
120
|
+
NPM_INSTALL_ARGS=(-g "${PACKAGE_NAME}")
|
|
121
|
+
NPM_INSTALL_ARGS+=("--registry" "${NPM_REGISTRY}")
|
|
122
|
+
if [ -n "${NPM_GLOBAL_PREFIX}" ]; then
|
|
123
|
+
NPM_INSTALL_ARGS+=("--prefix" "${NPM_GLOBAL_PREFIX}")
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
echo ""
|
|
127
|
+
info "Installing onesclaw globally..."
|
|
128
|
+
echo ""
|
|
129
|
+
|
|
130
|
+
if npm install "${NPM_INSTALL_ARGS[@]}" 2>&1; then
|
|
131
|
+
echo ""
|
|
132
|
+
success "onesclaw installed successfully!"
|
|
133
|
+
else
|
|
134
|
+
echo ""
|
|
135
|
+
error "Installation failed."
|
|
136
|
+
echo ""
|
|
137
|
+
info "If you got a permission error, try:"
|
|
138
|
+
echo ""
|
|
139
|
+
if [ -n "${NPM_REGISTRY}" ]; then
|
|
140
|
+
echo " sudo npm install -g ${PACKAGE_NAME} --registry ${NPM_REGISTRY}"
|
|
141
|
+
else
|
|
142
|
+
echo " sudo npm install -g ${PACKAGE_NAME}"
|
|
143
|
+
fi
|
|
144
|
+
echo ""
|
|
145
|
+
exit 1
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
if [ -n "${NPM_GLOBAL_PREFIX}" ]; then
|
|
149
|
+
export PATH="${NPM_GLOBAL_PREFIX}/bin:${PATH}"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
if ! command -v onesclaw &>/dev/null; then
|
|
153
|
+
warn "onesclaw was installed but is not in your PATH."
|
|
154
|
+
info "You may need to add npm's global bin directory to your PATH:"
|
|
155
|
+
echo ""
|
|
156
|
+
echo " export PATH=\"$(npm config get prefix)/bin:\$PATH\""
|
|
157
|
+
echo ""
|
|
158
|
+
exit 1
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
success "onesclaw $(onesclaw --version 2>/dev/null || echo 'unknown') is ready"
|
|
162
|
+
|
|
163
|
+
if [ "${SKIP_INIT}" = "1" ]; then
|
|
164
|
+
info "ONESCLAW_SKIP_INIT=1 detected, skipping interactive init."
|
|
165
|
+
exit 0
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
echo ""
|
|
169
|
+
info "Starting initial setup..."
|
|
170
|
+
echo ""
|
|
171
|
+
exec onesclaw init < /dev/tty
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@onesclawkolor/onesclaw",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "ONES internal AI Agent CLI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"onesclaw": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"install.sh"
|
|
14
|
+
],
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18.0.0"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public",
|
|
20
|
+
"registry": "https://registry.npmjs.org/"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/ones-ai/onesclaw.git"
|
|
25
|
+
},
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"keywords": [
|
|
28
|
+
"cli",
|
|
29
|
+
"ai",
|
|
30
|
+
"agent",
|
|
31
|
+
"ones",
|
|
32
|
+
"mcp"
|
|
33
|
+
],
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.8.0",
|
|
37
|
+
"chalk": "^5.4.1",
|
|
38
|
+
"commander": "^13.1.0",
|
|
39
|
+
"dotenv": "^16.4.7",
|
|
40
|
+
"gray-matter": "^4.0.3",
|
|
41
|
+
"marked": "^15.0.7",
|
|
42
|
+
"marked-terminal": "^7.3.0",
|
|
43
|
+
"openai": "^6.27.0",
|
|
44
|
+
"ora": "^8.2.0",
|
|
45
|
+
"sqlite": "^5.1.1",
|
|
46
|
+
"sqlite3": "^5.1.7",
|
|
47
|
+
"ssh2": "^1.17.0"
|
|
48
|
+
}
|
|
49
|
+
}
|