@onesclawkolor/onesclaw 0.1.0 → 0.1.1

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.
Files changed (48) hide show
  1. package/README.md +2 -0
  2. package/dist/agent/loop.d.ts +14 -20
  3. package/dist/agent/loop.js +377 -38
  4. package/dist/agent/loop.js.map +1 -1
  5. package/dist/agent/ones-answer.d.ts +29 -0
  6. package/dist/agent/ones-answer.js +380 -0
  7. package/dist/agent/ones-answer.js.map +1 -0
  8. package/dist/agent/ones-routing.d.ts +10 -0
  9. package/dist/agent/ones-routing.js +160 -0
  10. package/dist/agent/ones-routing.js.map +1 -0
  11. package/dist/cli/logger.js +17 -1
  12. package/dist/cli/logger.js.map +1 -1
  13. package/dist/commands/kb.d.ts +4 -0
  14. package/dist/commands/kb.js +154 -0
  15. package/dist/commands/kb.js.map +1 -0
  16. package/dist/config/manager.d.ts +43 -0
  17. package/dist/config/manager.js +143 -3
  18. package/dist/config/manager.js.map +1 -1
  19. package/dist/config/types.d.ts +2 -0
  20. package/dist/index.js +37 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/knowledge/helper-scripts.d.ts +11 -0
  23. package/dist/knowledge/helper-scripts.js +325 -0
  24. package/dist/knowledge/helper-scripts.js.map +1 -0
  25. package/dist/knowledge/manager.d.ts +28 -0
  26. package/dist/knowledge/manager.js +377 -0
  27. package/dist/knowledge/manager.js.map +1 -0
  28. package/dist/knowledge/preprocess.d.ts +10 -0
  29. package/dist/knowledge/preprocess.js +93 -0
  30. package/dist/knowledge/preprocess.js.map +1 -0
  31. package/dist/knowledge/qmd.d.ts +53 -0
  32. package/dist/knowledge/qmd.js +236 -0
  33. package/dist/knowledge/qmd.js.map +1 -0
  34. package/dist/knowledge/rerank.d.ts +14 -0
  35. package/dist/knowledge/rerank.js +256 -0
  36. package/dist/knowledge/rerank.js.map +1 -0
  37. package/dist/knowledge/tools.d.ts +6 -0
  38. package/dist/knowledge/tools.js +131 -0
  39. package/dist/knowledge/tools.js.map +1 -0
  40. package/dist/knowledge/types.d.ts +96 -0
  41. package/dist/knowledge/types.js +2 -0
  42. package/dist/knowledge/types.js.map +1 -0
  43. package/dist/prompts/system.js +64 -41
  44. package/dist/prompts/system.js.map +1 -1
  45. package/dist/tools/registry.d.ts +2 -2
  46. package/dist/tools/registry.js +12 -3
  47. package/dist/tools/registry.js.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,325 @@
1
+ import { access, chmod, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { getKnowledgeBinDir } from '../config/manager.js';
4
+ const MANAGED_HEADER = '# Generated by onesclaw from /Users/kolor/Documents/docs Markdown. DO NOT EDIT.\n';
5
+ export async function ensureKnowledgeHelperScripts() {
6
+ const dir = getKnowledgeBinDir();
7
+ const templates = getHelperScriptTemplates();
8
+ for (const template of templates) {
9
+ const path = join(dir, template.name);
10
+ await writeFile(path, template.content, 'utf-8');
11
+ await chmod(path, 0o755);
12
+ }
13
+ return templates.map((template) => ({
14
+ name: template.name,
15
+ path: join(dir, template.name),
16
+ description: template.description,
17
+ example_invocation: template.exampleInvocation,
18
+ }));
19
+ }
20
+ export async function listKnowledgeHelperScripts() {
21
+ const dir = getKnowledgeBinDir();
22
+ const templates = getHelperScriptTemplates();
23
+ const scripts = [];
24
+ for (const template of templates) {
25
+ const path = join(dir, template.name);
26
+ try {
27
+ await access(path);
28
+ scripts.push({
29
+ name: template.name,
30
+ path,
31
+ description: template.description,
32
+ example_invocation: template.exampleInvocation,
33
+ });
34
+ }
35
+ catch {
36
+ continue;
37
+ }
38
+ }
39
+ return scripts;
40
+ }
41
+ export function getHelperScriptTemplates() {
42
+ return [
43
+ {
44
+ name: 'check.sh',
45
+ description: '封装 envcheck.md 的环境检测下载、解压与执行流程',
46
+ exampleInvocation: '~/.onesclaw/kb/bin/check.sh --preset medium --arch amd64',
47
+ content: `${MANAGED_HEADER}#!/usr/bin/env bash
48
+ set -euo pipefail
49
+
50
+ PRESET="small"
51
+ ARCH=""
52
+ DATA_PATH="/data/ones"
53
+
54
+ usage() {
55
+ cat <<'USAGE'
56
+ Usage: check.sh [--preset small|medium|large|xlarge] [--arch amd64|arm64] [--data-path /data/ones]
57
+
58
+ Presets are mapped from /Users/kolor/Documents/docs/environmental-requirements/K3S/envcheck.md:
59
+ small -> 8 cores / 250GB / 24GB
60
+ medium -> 16 cores / 1000GB / 48GB
61
+ large -> 32 cores / 2000GB / 64GB
62
+ xlarge -> 48 cores / 4000GB / 96GB
63
+ USAGE
64
+ }
65
+
66
+ while [[ $# -gt 0 ]]; do
67
+ case "$1" in
68
+ --preset)
69
+ PRESET="$2"
70
+ shift 2
71
+ ;;
72
+ --arch)
73
+ ARCH="$2"
74
+ shift 2
75
+ ;;
76
+ --data-path)
77
+ DATA_PATH="$2"
78
+ shift 2
79
+ ;;
80
+ -h|--help)
81
+ usage
82
+ exit 0
83
+ ;;
84
+ *)
85
+ echo "Unknown argument: $1" >&2
86
+ usage >&2
87
+ exit 1
88
+ ;;
89
+ esac
90
+ done
91
+
92
+ if [[ -z "$ARCH" ]]; then
93
+ case "$(uname -m)" in
94
+ x86_64|amd64) ARCH="amd64" ;;
95
+ aarch64|arm64) ARCH="arm64" ;;
96
+ *) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
97
+ esac
98
+ fi
99
+
100
+ case "$PRESET" in
101
+ small)
102
+ CPU_CORES="8"
103
+ DATA_DISK_SIZE="250GB"
104
+ MEM_SIZE="24GB"
105
+ ;;
106
+ medium)
107
+ CPU_CORES="16"
108
+ DATA_DISK_SIZE="1000GB"
109
+ MEM_SIZE="48GB"
110
+ ;;
111
+ large)
112
+ CPU_CORES="32"
113
+ DATA_DISK_SIZE="2000GB"
114
+ MEM_SIZE="64GB"
115
+ ;;
116
+ xlarge)
117
+ CPU_CORES="48"
118
+ DATA_DISK_SIZE="4000GB"
119
+ MEM_SIZE="96GB"
120
+ ;;
121
+ *)
122
+ echo "Unsupported preset: $PRESET" >&2
123
+ usage >&2
124
+ exit 1
125
+ ;;
126
+ esac
127
+
128
+ ENVCHECK_BASE="https://ones-cn-package.oss-cn-shenzhen.aliyuncs.com/release/envcheck"
129
+ ENVCHECK_VERSION="$(curl -Ls "$ENVCHECK_BASE/latest.txt")"
130
+ if [[ -z "$ENVCHECK_VERSION" ]]; then
131
+ echo "Failed to resolve envcheck version" >&2
132
+ exit 1
133
+ fi
134
+
135
+ ARCHIVE_URL="$ENVCHECK_BASE/$ENVCHECK_VERSION/linux/$ARCH/envcheck.tar"
136
+ echo "Downloading envcheck from: $ARCHIVE_URL"
137
+ curl -O "$ARCHIVE_URL"
138
+ tar -xvf envcheck.tar
139
+ chmod +x envcheck
140
+ ./envcheck --cpu-cores "$CPU_CORES" --data-disk-size "$DATA_DISK_SIZE" --mem-size "$MEM_SIZE" --data-path "$DATA_PATH"
141
+ `,
142
+ },
143
+ {
144
+ name: 'download-package.sh',
145
+ description: '封装 install-new.md / install-ha.md 的 quickstart 下载入口',
146
+ exampleInvocation: '~/.onesclaw/kb/bin/download-package.sh --version v6.18.0 --download',
147
+ content: `${MANAGED_HEADER}#!/usr/bin/env bash
148
+ set -euo pipefail
149
+
150
+ MODE="download"
151
+ VERSION=""
152
+
153
+ usage() {
154
+ cat <<'USAGE'
155
+ Usage: download-package.sh [--list-versions] [--version <ones-version> --download]
156
+
157
+ Document source:
158
+ - /Users/kolor/Documents/docs/install-upgrade/K3S/install-new.md
159
+ - /Users/kolor/Documents/docs/install-upgrade/K3S/install-ha.md
160
+ USAGE
161
+ }
162
+
163
+ while [[ $# -gt 0 ]]; do
164
+ case "$1" in
165
+ --list-versions)
166
+ MODE="list"
167
+ shift
168
+ ;;
169
+ --version)
170
+ VERSION="$2"
171
+ shift 2
172
+ ;;
173
+ --download)
174
+ MODE="download"
175
+ shift
176
+ ;;
177
+ -h|--help)
178
+ usage
179
+ exit 0
180
+ ;;
181
+ *)
182
+ echo "Unknown argument: $1" >&2
183
+ usage >&2
184
+ exit 1
185
+ ;;
186
+ esac
187
+ done
188
+
189
+ curl -O https://packages.ones.cn/release/latest/quickstart.sh
190
+
191
+ if [[ "$MODE" == "list" ]]; then
192
+ bash quickstart.sh --list-versions
193
+ exit 0
194
+ fi
195
+
196
+ if [[ -z "$VERSION" ]]; then
197
+ echo "--version is required for download mode" >&2
198
+ usage >&2
199
+ exit 1
200
+ fi
201
+
202
+ bash quickstart.sh --version "$VERSION" --download
203
+ `,
204
+ },
205
+ {
206
+ name: 'install-single.sh',
207
+ description: '封装 install-new.md 的单机离线安装入口',
208
+ exampleInvocation: '~/.onesclaw/kb/bin/install-single.sh --offline-file /data/install/ones_offline_pkg_xxx.tar.gz --data-dir /data/ones',
209
+ content: `${MANAGED_HEADER}#!/usr/bin/env bash
210
+ set -euo pipefail
211
+
212
+ OFFLINE_FILE=""
213
+ DATA_DIR=""
214
+
215
+ usage() {
216
+ cat <<'USAGE'
217
+ Usage: install-single.sh --offline-file <ones_offline_pkg.tar.gz> [--data-dir /data/ones]
218
+
219
+ Document source:
220
+ /Users/kolor/Documents/docs/install-upgrade/K3S/install-new.md
221
+ USAGE
222
+ }
223
+
224
+ while [[ $# -gt 0 ]]; do
225
+ case "$1" in
226
+ --offline-file)
227
+ OFFLINE_FILE="$2"
228
+ shift 2
229
+ ;;
230
+ --data-dir)
231
+ DATA_DIR="$2"
232
+ shift 2
233
+ ;;
234
+ -h|--help)
235
+ usage
236
+ exit 0
237
+ ;;
238
+ *)
239
+ echo "Unknown argument: $1" >&2
240
+ usage >&2
241
+ exit 1
242
+ ;;
243
+ esac
244
+ done
245
+
246
+ if [[ -z "$OFFLINE_FILE" ]]; then
247
+ echo "--offline-file is required" >&2
248
+ usage >&2
249
+ exit 1
250
+ fi
251
+
252
+ if [[ ! -f quickstart.sh ]]; then
253
+ echo "quickstart.sh not found in current directory" >&2
254
+ exit 1
255
+ fi
256
+
257
+ if [[ -n "$DATA_DIR" ]]; then
258
+ export ONES_DATA_DIR="$DATA_DIR"
259
+ fi
260
+
261
+ bash quickstart.sh --offline-file "$OFFLINE_FILE"
262
+ `,
263
+ },
264
+ {
265
+ name: 'install-ha.sh',
266
+ description: '封装 install-ha.md 的 HA 离线安装入口',
267
+ exampleInvocation: '~/.onesclaw/kb/bin/install-ha.sh --offline-file /data/install/ones_offline_pkg_xxx.tar.gz --data-dir /data/ones',
268
+ content: `${MANAGED_HEADER}#!/usr/bin/env bash
269
+ set -euo pipefail
270
+
271
+ OFFLINE_FILE=""
272
+ DATA_DIR=""
273
+
274
+ usage() {
275
+ cat <<'USAGE'
276
+ Usage: install-ha.sh --offline-file <ones_offline_pkg.tar.gz> [--data-dir /data/ones]
277
+
278
+ Document source:
279
+ /Users/kolor/Documents/docs/install-upgrade/K3S/install-ha.md
280
+ USAGE
281
+ }
282
+
283
+ while [[ $# -gt 0 ]]; do
284
+ case "$1" in
285
+ --offline-file)
286
+ OFFLINE_FILE="$2"
287
+ shift 2
288
+ ;;
289
+ --data-dir)
290
+ DATA_DIR="$2"
291
+ shift 2
292
+ ;;
293
+ -h|--help)
294
+ usage
295
+ exit 0
296
+ ;;
297
+ *)
298
+ echo "Unknown argument: $1" >&2
299
+ usage >&2
300
+ exit 1
301
+ ;;
302
+ esac
303
+ done
304
+
305
+ if [[ -z "$OFFLINE_FILE" ]]; then
306
+ echo "--offline-file is required" >&2
307
+ usage >&2
308
+ exit 1
309
+ fi
310
+
311
+ if [[ ! -f quickstart.sh ]]; then
312
+ echo "quickstart.sh not found in current directory" >&2
313
+ exit 1
314
+ fi
315
+
316
+ if [[ -n "$DATA_DIR" ]]; then
317
+ export ONES_DATA_DIR="$DATA_DIR"
318
+ fi
319
+
320
+ DEPLOY_MODE=ha bash quickstart.sh --offline-file "$OFFLINE_FILE"
321
+ `,
322
+ },
323
+ ];
324
+ }
325
+ //# sourceMappingURL=helper-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-scripts.js","sourceRoot":"","sources":["../../src/knowledge/helper-scripts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { KnowledgeCommandBlock, KnowledgeConfig, KnowledgeHelperScript, KnowledgeSearchResult, KnowledgeStatus, SourceManifest } from './types.js';
2
+ import { type CommandRunner } from './qmd.js';
3
+ export declare class KnowledgeManager {
4
+ readonly config: KnowledgeConfig;
5
+ private readonly qmd;
6
+ private readonly commandBlockCache;
7
+ constructor(config?: Partial<KnowledgeConfig> | null, runner?: CommandRunner);
8
+ getPromptContext(): {
9
+ enabled: boolean;
10
+ sourceNames: string[];
11
+ priority: import("./types.js").KnowledgePriority[];
12
+ };
13
+ bootstrap(sourcePath: string, sourceName?: string): Promise<SourceManifest>;
14
+ syncAll(): Promise<SourceManifest[]>;
15
+ autoSyncIfNeeded(): Promise<void>;
16
+ status(): Promise<KnowledgeStatus>;
17
+ search(query: string, limit?: number): Promise<KnowledgeSearchResult[]>;
18
+ getDocument(pathRef: string, section?: string): Promise<string>;
19
+ extractCommands(pathRef: string, section?: string): Promise<KnowledgeCommandBlock[]>;
20
+ listHelperScripts(): Promise<KnowledgeHelperScript[]>;
21
+ private normalizeRelativePath;
22
+ private findSourceForRelativePath;
23
+ private readManagedDocument;
24
+ private syncSource;
25
+ private getCommandCacheKey;
26
+ private cleanManagedDirectory;
27
+ private readManifest;
28
+ }