@poolzin/pool-bot 2026.4.44 → 2026.4.46
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/agents/model-catalog-gemma4.d.ts +6 -0
- package/dist/agents/model-catalog-gemma4.d.ts.map +1 -0
- package/dist/agents/model-catalog-gemma4.js +17 -0
- package/dist/agents/model-catalog.d.ts.map +1 -1
- package/dist/agents/model-catalog.js +7 -0
- package/dist/agents/tools/music-edit-tool.d.ts +9 -0
- package/dist/agents/tools/music-edit-tool.d.ts.map +1 -0
- package/dist/agents/tools/music-edit-tool.js +46 -0
- package/dist/agents/tools/video-edit-tool.d.ts +9 -0
- package/dist/agents/tools/video-edit-tool.d.ts.map +1 -0
- package/dist/agents/tools/video-edit-tool.js +46 -0
- package/dist/build-info.json +3 -3
- package/dist/cli/completion.d.ts +15 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +183 -0
- package/dist/cli/onboard-cli.d.ts.map +1 -1
- package/dist/cli/onboard-cli.js +4 -1
- package/dist/cli/program/register.subclis.js +5 -5
- package/dist/cli/sessions-checkpoints-cli.d.ts +6 -0
- package/dist/cli/sessions-checkpoints-cli.d.ts.map +1 -0
- package/dist/cli/sessions-checkpoints-cli.js +117 -0
- package/dist/cli/webhooks-cli.d.ts +13 -0
- package/dist/cli/webhooks-cli.d.ts.map +1 -1
- package/dist/cli/webhooks-cli.js +323 -130
- package/dist/errors/user-friendly-errors.d.ts +23 -0
- package/dist/errors/user-friendly-errors.d.ts.map +1 -0
- package/dist/errors/user-friendly-errors.js +182 -0
- package/dist/infra/net/fetch-guard.d.ts.map +1 -1
- package/dist/memory/wiki/store.d.ts +53 -0
- package/dist/memory/wiki/store.d.ts.map +1 -0
- package/dist/memory/wiki/store.js +222 -0
- package/dist/memory/wiki/types.d.ts +57 -0
- package/dist/memory/wiki/types.d.ts.map +1 -0
- package/dist/memory/wiki/types.js +6 -0
- package/dist/plugins/webhook-ingress.d.ts +104 -0
- package/dist/plugins/webhook-ingress.d.ts.map +1 -0
- package/dist/plugins/webhook-ingress.js +287 -0
- package/dist/providers/ollama-vision.d.ts +30 -0
- package/dist/providers/ollama-vision.d.ts.map +1 -0
- package/dist/providers/ollama-vision.js +62 -0
- package/dist/sessions/checkpoints.d.ts +76 -0
- package/dist/sessions/checkpoints.d.ts.map +1 -0
- package/dist/sessions/checkpoints.js +162 -0
- package/dist/slack/channel.d.ts.map +1 -1
- package/dist/slack/channel.js +13 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog-gemma4.d.ts","sourceRoot":"","sources":["../../src/agents/model-catalog-gemma4.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAa3C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemma 4 Model Support
|
|
3
|
+
*/
|
|
4
|
+
export const gemma4Models = [
|
|
5
|
+
{
|
|
6
|
+
id: "google/gemma-4-27b-it",
|
|
7
|
+
name: "Google Gemma 4 27B Instruct",
|
|
8
|
+
provider: "google",
|
|
9
|
+
contextWindow: 131072,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: "google/gemma-4-12b-it",
|
|
13
|
+
name: "Google Gemma 4 12B Instruct",
|
|
14
|
+
provider: "google",
|
|
15
|
+
contextWindow: 131072,
|
|
16
|
+
},
|
|
17
|
+
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/agents/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/agents/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,qBAAqB,CAAC;AAQrE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;CACjC,CAAC;AAWF,KAAK,WAAW,GAAG,cAAc,yBAAyB,CAAC,CAAC;AAoC5D,wBAAgB,6BAA6B,SAI5C;AAGD,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,QAEjF;AAUD,wBAAsB,gBAAgB,CAAC,MAAM,CAAC,EAAE;IAC9C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0F/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAEjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,iBAAiB,GAAG,SAAS,CAQ/B"}
|
|
@@ -2,6 +2,7 @@ import { loadConfig } from "../config/config.js";
|
|
|
2
2
|
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
3
3
|
import { resolvePoolbotAgentDir } from "./agent-paths.js";
|
|
4
4
|
import { ensurePoolbotModelsJson } from "./models-config.js";
|
|
5
|
+
import { gemma4Models } from "./model-catalog-gemma4.js";
|
|
5
6
|
const log = createSubsystemLogger("model-catalog");
|
|
6
7
|
let modelCatalogPromise = null;
|
|
7
8
|
let hasLoggedModelCatalogError = false;
|
|
@@ -104,8 +105,14 @@ export async function loadModelCatalog(params) {
|
|
|
104
105
|
// Don't poison the cache on transient dependency/filesystem issues.
|
|
105
106
|
modelCatalogPromise = null;
|
|
106
107
|
if (models.length > 0) {
|
|
108
|
+
// Add Gemma 4 models
|
|
109
|
+
models.push(...gemma4Models);
|
|
107
110
|
return sortModels(models);
|
|
108
111
|
}
|
|
112
|
+
// Add Gemma 4 models even if no other models
|
|
113
|
+
if (gemma4Models.length > 0) {
|
|
114
|
+
return sortModels([...gemma4Models]);
|
|
115
|
+
}
|
|
109
116
|
return [];
|
|
110
117
|
}
|
|
111
118
|
})();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Music Editing Tool
|
|
3
|
+
*
|
|
4
|
+
* Allows editing music with prompts (audio-to-audio).
|
|
5
|
+
* Simplified version using external APIs.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyAgentTool } from "./common.js";
|
|
8
|
+
export declare function createMusicEditTool(): AnyAgentTool;
|
|
9
|
+
//# sourceMappingURL=music-edit-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"music-edit-tool.d.ts","sourceRoot":"","sources":["../../../src/agents/tools/music-edit-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,mBAAmB,IAAI,YAAY,CA4ClD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Music Editing Tool
|
|
3
|
+
*
|
|
4
|
+
* Allows editing music with prompts (audio-to-audio).
|
|
5
|
+
* Simplified version using external APIs.
|
|
6
|
+
*/
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
export function createMusicEditTool() {
|
|
9
|
+
return {
|
|
10
|
+
name: "music_edit",
|
|
11
|
+
label: "Music Edit",
|
|
12
|
+
description: "Edit a music track using a text prompt (audio-to-audio). " +
|
|
13
|
+
"Provide a source audio URL and describe the changes you want.",
|
|
14
|
+
parameters: Type.Object({
|
|
15
|
+
sourceUrl: Type.String({
|
|
16
|
+
description: "URL of the source audio to edit",
|
|
17
|
+
}),
|
|
18
|
+
prompt: Type.String({
|
|
19
|
+
description: "Description of the edits to apply",
|
|
20
|
+
}),
|
|
21
|
+
duration: Type.Optional(Type.Number({
|
|
22
|
+
description: "Output duration in seconds (optional)",
|
|
23
|
+
})),
|
|
24
|
+
genre: Type.Optional(Type.String({
|
|
25
|
+
description: "Target genre (e.g., 'jazz', 'electronic', 'classical')",
|
|
26
|
+
})),
|
|
27
|
+
}),
|
|
28
|
+
execute: async (_toolCallId, params) => {
|
|
29
|
+
// Placeholder - in production, integrate with Suno, Udio, or MusicLM
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: "text",
|
|
34
|
+
text: `Music edit task queued.\n\n` +
|
|
35
|
+
`Source: ${params.sourceUrl}\n` +
|
|
36
|
+
`Prompt: ${params.prompt}\n` +
|
|
37
|
+
`Duration: ${params.duration ?? "same as source"}s\n` +
|
|
38
|
+
`Genre: ${params.genre ?? "none"}\n\n` +
|
|
39
|
+
`Note: Music editing requires external API integration (Suno, Udio, MusicLM). ` +
|
|
40
|
+
`This is a placeholder for the workflow.`,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video Editing Tool
|
|
3
|
+
*
|
|
4
|
+
* Allows editing videos with prompts (video-to-video).
|
|
5
|
+
* Simplified version using external APIs.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyAgentTool } from "./common.js";
|
|
8
|
+
export declare function createVideoEditTool(): AnyAgentTool;
|
|
9
|
+
//# sourceMappingURL=video-edit-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-edit-tool.d.ts","sourceRoot":"","sources":["../../../src/agents/tools/video-edit-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,mBAAmB,IAAI,YAAY,CA4ClD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video Editing Tool
|
|
3
|
+
*
|
|
4
|
+
* Allows editing videos with prompts (video-to-video).
|
|
5
|
+
* Simplified version using external APIs.
|
|
6
|
+
*/
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
export function createVideoEditTool() {
|
|
9
|
+
return {
|
|
10
|
+
name: "video_edit",
|
|
11
|
+
label: "Video Edit",
|
|
12
|
+
description: "Edit a video using a text prompt (video-to-video). " +
|
|
13
|
+
"Provide a source video URL and describe the changes you want.",
|
|
14
|
+
parameters: Type.Object({
|
|
15
|
+
sourceUrl: Type.String({
|
|
16
|
+
description: "URL of the source video to edit",
|
|
17
|
+
}),
|
|
18
|
+
prompt: Type.String({
|
|
19
|
+
description: "Description of the edits to apply",
|
|
20
|
+
}),
|
|
21
|
+
duration: Type.Optional(Type.Number({
|
|
22
|
+
description: "Output duration in seconds (optional)",
|
|
23
|
+
})),
|
|
24
|
+
style: Type.Optional(Type.String({
|
|
25
|
+
description: "Style preset (e.g., 'cinematic', 'anime', 'realistic')",
|
|
26
|
+
})),
|
|
27
|
+
}),
|
|
28
|
+
execute: async (_toolCallId, params) => {
|
|
29
|
+
// Placeholder - in production, integrate with Runway, Pika, or ComfyUI
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: "text",
|
|
34
|
+
text: `Video edit task queued.\n\n` +
|
|
35
|
+
`Source: ${params.sourceUrl}\n` +
|
|
36
|
+
`Prompt: ${params.prompt}\n` +
|
|
37
|
+
`Duration: ${params.duration ?? "same as source"}s\n` +
|
|
38
|
+
`Style: ${params.style ?? "none"}\n\n` +
|
|
39
|
+
`Note: Video editing requires external API integration (Runway, Pika, ComfyUI). ` +
|
|
40
|
+
`This is a placeholder for the workflow.`,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
package/dist/build-info.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Auto-Complete Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates shell completion scripts for bash, zsh, and fish.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* poolbot completion bash # Bash completion
|
|
8
|
+
* poolbot completion zsh # Zsh completion
|
|
9
|
+
* poolbot completion fish # Fish completion
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from "commander";
|
|
12
|
+
export declare function generateBashCompletion(program: Command): string;
|
|
13
|
+
export declare function generateZshCompletion(program: Command): string;
|
|
14
|
+
export declare function generateFishCompletion(program: Command): string;
|
|
15
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/cli/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkDzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA0B/D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA8D9D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAoC/D"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Auto-Complete Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates shell completion scripts for bash, zsh, and fish.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* poolbot completion bash # Bash completion
|
|
8
|
+
* poolbot completion zsh # Zsh completion
|
|
9
|
+
* poolbot completion fish # Fish completion
|
|
10
|
+
*/
|
|
11
|
+
const commands = [
|
|
12
|
+
"agent",
|
|
13
|
+
"channels",
|
|
14
|
+
"config",
|
|
15
|
+
"cron",
|
|
16
|
+
"devices",
|
|
17
|
+
"doctor",
|
|
18
|
+
"exec-approvals",
|
|
19
|
+
"gateway",
|
|
20
|
+
"infer",
|
|
21
|
+
"message",
|
|
22
|
+
"models",
|
|
23
|
+
"mcp",
|
|
24
|
+
"nodes",
|
|
25
|
+
"onboard",
|
|
26
|
+
"plugins",
|
|
27
|
+
"secret",
|
|
28
|
+
"security",
|
|
29
|
+
"sessions",
|
|
30
|
+
"skills",
|
|
31
|
+
"status",
|
|
32
|
+
"telemetry",
|
|
33
|
+
"update",
|
|
34
|
+
"webhooks",
|
|
35
|
+
];
|
|
36
|
+
const agentCommands = ["run", "stop", "status", "list"];
|
|
37
|
+
const channelCommands = ["list", "status", "probe", "add", "remove", "enable", "disable"];
|
|
38
|
+
const configCommands = ["show", "set", "get", "validate", "schema"];
|
|
39
|
+
const cronCommands = ["list", "add", "remove", "run", "enable", "disable"];
|
|
40
|
+
const inferCommands = [
|
|
41
|
+
"chat",
|
|
42
|
+
"image",
|
|
43
|
+
"video",
|
|
44
|
+
"music",
|
|
45
|
+
"embed",
|
|
46
|
+
"web-search",
|
|
47
|
+
"web-fetch",
|
|
48
|
+
"batch",
|
|
49
|
+
];
|
|
50
|
+
const modelCommands = ["list", "set", "status", "aliases", "fallbacks", "scan"];
|
|
51
|
+
const pluginCommands = ["list", "install", "uninstall", "enable", "disable", "update"];
|
|
52
|
+
const secretCommands = ["list", "get", "set", "rotate", "validate", "delete"];
|
|
53
|
+
const sessionCommands = ["list", "show", "checkpoints"];
|
|
54
|
+
const checkpointCommands = ["list", "show", "prune"];
|
|
55
|
+
const skillCommands = ["list", "show", "enable", "disable"];
|
|
56
|
+
const webhookCommands = ["list", "create", "show", "delete", "enable", "disable", "stats", "serve"];
|
|
57
|
+
export function generateBashCompletion(program) {
|
|
58
|
+
return `# Pool Bot bash completion
|
|
59
|
+
_poolbot_completion() {
|
|
60
|
+
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
61
|
+
local prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
62
|
+
local cmd="\${COMP_WORDS[1]}"
|
|
63
|
+
|
|
64
|
+
case "\$cmd" in
|
|
65
|
+
agent) COMPREPLY=(\$(compgen -W "${agentCommands.join(" ")}" -- "\$cur")) ;;
|
|
66
|
+
channels) COMPREPLY=(\$(compgen -W "${channelCommands.join(" ")}" -- "\$cur")) ;;
|
|
67
|
+
config) COMPREPLY=(\$(compgen -W "${configCommands.join(" ")}" -- "\$cur")) ;;
|
|
68
|
+
cron) COMPREPLY=(\$(compgen -W "${cronCommands.join(" ")}" -- "\$cur")) ;;
|
|
69
|
+
infer) COMPREPLY=(\$(compgen -W "${inferCommands.join(" ")}" -- "\$cur")) ;;
|
|
70
|
+
models) COMPREPLY=(\$(compgen -W "${modelCommands.join(" ")}" -- "\$cur")) ;;
|
|
71
|
+
plugins) COMPREPLY=(\$(compgen -W "${pluginCommands.join(" ")}" -- "\$cur")) ;;
|
|
72
|
+
secret) COMPREPLY=(\$(compgen -W "${secretCommands.join(" ")}" -- "\$cur")) ;;
|
|
73
|
+
sessions) COMPREPLY=(\$(compgen -W "${sessionCommands.join(" ")}" -- "\$cur")) ;;
|
|
74
|
+
checkpoints) COMPREPLY=(\$(compgen -W "${checkpointCommands.join(" ")}" -- "\$cur")) ;;
|
|
75
|
+
skills) COMPREPLY=(\$(compgen -W "${skillCommands.join(" ")}" -- "\$cur")) ;;
|
|
76
|
+
webhooks) COMPREPLY=(\$(compgen -W "${webhookCommands.join(" ")}" -- "\$cur")) ;;
|
|
77
|
+
*) COMPREPLY=(\$(compgen -W "${commands.join(" ")}" -- "\$cur")) ;;
|
|
78
|
+
esac
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
complete -F _poolbot_completion poolbot
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
export function generateZshCompletion(program) {
|
|
85
|
+
return `# Pool Bot zsh completion
|
|
86
|
+
#compdef poolbot
|
|
87
|
+
|
|
88
|
+
_poolbot() {
|
|
89
|
+
local -a commands
|
|
90
|
+
local -a agent_cmds
|
|
91
|
+
local -a channel_cmds
|
|
92
|
+
local -a config_cmds
|
|
93
|
+
local -a cron_cmds
|
|
94
|
+
local -a infer_cmds
|
|
95
|
+
local -a model_cmds
|
|
96
|
+
local -a plugin_cmds
|
|
97
|
+
local -a secret_cmds
|
|
98
|
+
local -a session_cmds
|
|
99
|
+
local -a checkpoint_cmds
|
|
100
|
+
local -a skill_cmds
|
|
101
|
+
local -a webhook_cmds
|
|
102
|
+
|
|
103
|
+
commands=(${commands.map((c) => `'${c}'`).join(" ")})
|
|
104
|
+
agent_cmds=(${agentCommands.map((c) => `'${c}'`).join(" ")})
|
|
105
|
+
channel_cmds=(${channelCommands.map((c) => `'${c}'`).join(" ")})
|
|
106
|
+
config_cmds=(${configCommands.map((c) => `'${c}'`).join(" ")})
|
|
107
|
+
cron_cmds=(${cronCommands.map((c) => `'${c}'`).join(" ")})
|
|
108
|
+
infer_cmds=(${inferCommands.map((c) => `'${c}'`).join(" ")})
|
|
109
|
+
model_cmds=(${modelCommands.map((c) => `'${c}'`).join(" ")})
|
|
110
|
+
plugin_cmds=(${pluginCommands.map((c) => `'${c}'`).join(" ")})
|
|
111
|
+
secret_cmds=(${secretCommands.map((c) => `'${c}'`).join(" ")})
|
|
112
|
+
session_cmds=(${sessionCommands.map((c) => `'${c}'`).join(" ")})
|
|
113
|
+
checkpoint_cmds=(${checkpointCommands.map((c) => `'${c}'`).join(" ")})
|
|
114
|
+
skill_cmds=(${skillCommands.map((c) => `'${c}'`).join(" ")})
|
|
115
|
+
webhook_cmds=(${webhookCommands.map((c) => `'${c}'`).join(" ")})
|
|
116
|
+
|
|
117
|
+
_arguments -C \\
|
|
118
|
+
'1: :->cmds' \\
|
|
119
|
+
'*::arg:->args'
|
|
120
|
+
|
|
121
|
+
case \$state in
|
|
122
|
+
cmds)
|
|
123
|
+
_values 'command' \$commands
|
|
124
|
+
;;
|
|
125
|
+
args)
|
|
126
|
+
case \$words[2] in
|
|
127
|
+
agent) _values 'agent command' \$agent_cmds ;;
|
|
128
|
+
channels) _values 'channel command' \$channel_cmds ;;
|
|
129
|
+
config) _values 'config command' \$config_cmds ;;
|
|
130
|
+
cron) _values 'cron command' \$cron_cmds ;;
|
|
131
|
+
infer) _values 'infer command' \$infer_cmds ;;
|
|
132
|
+
models) _values 'model command' \$model_cmds ;;
|
|
133
|
+
plugins) _values 'plugin command' \$plugin_cmds ;;
|
|
134
|
+
secret) _values 'secret command' \$secret_cmds ;;
|
|
135
|
+
sessions) _values 'session command' \$session_cmds ;;
|
|
136
|
+
checkpoints) _values 'checkpoint command' \$checkpoint_cmds ;;
|
|
137
|
+
skills) _values 'skill command' \$skill_cmds ;;
|
|
138
|
+
webhooks) _values 'webhook command' \$webhook_cmds ;;
|
|
139
|
+
esac
|
|
140
|
+
;;
|
|
141
|
+
esac
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
_poolbot
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
export function generateFishCompletion(program) {
|
|
148
|
+
return `# Pool Bot fish completion
|
|
149
|
+
function __fish_poolbot_needs_command
|
|
150
|
+
set -l cmd (commandline -opc)
|
|
151
|
+
if [ (count $cmd) -eq 1 -a $cmd[1] = 'poolbot' ]
|
|
152
|
+
return 0
|
|
153
|
+
end
|
|
154
|
+
return 1
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
function __fish_poolbot_using_command
|
|
158
|
+
set -l cmd (commandline -opc)
|
|
159
|
+
if [ (count $cmd) -gt 1 ]
|
|
160
|
+
if [ $argv[1] = $cmd[2] ]
|
|
161
|
+
return 0
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
return 1
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Main commands
|
|
168
|
+
complete -c poolbot -n '__fish_poolbot_needs_command' -a "${commands.join(" ")}"
|
|
169
|
+
|
|
170
|
+
# Subcommands
|
|
171
|
+
complete -c poolbot -n '__fish_poolbot_using_command agent' -a "${agentCommands.join(" ")}"
|
|
172
|
+
complete -c poolbot -n '__fish_poolbot_using_command channels' -a "${channelCommands.join(" ")}"
|
|
173
|
+
complete -c poolbot -n '__fish_poolbot_using_command config' -a "${configCommands.join(" ")}"
|
|
174
|
+
complete -c poolbot -n '__fish_poolbot_using_command cron' -a "${cronCommands.join(" ")}"
|
|
175
|
+
complete -c poolbot -n '__fish_poolbot_using_command infer' -a "${inferCommands.join(" ")}"
|
|
176
|
+
complete -c poolbot -n '__fish_poolbot_using_command models' -a "${modelCommands.join(" ")}"
|
|
177
|
+
complete -c poolbot -n '__fish_poolbot_using_command plugins' -a "${pluginCommands.join(" ")}"
|
|
178
|
+
complete -c poolbot -n '__fish_poolbot_using_command secret' -a "${secretCommands.join(" ")}"
|
|
179
|
+
complete -c poolbot -n '__fish_poolbot_using_command sessions' -a "${sessionCommands.join(" ")}"
|
|
180
|
+
complete -c poolbot -n '__fish_poolbot_using_command skills' -a "${skillCommands.join(" ")}"
|
|
181
|
+
complete -c poolbot -n '__fish_poolbot_using_command webhooks' -a "${webhookCommands.join(" ")}"
|
|
182
|
+
`;
|
|
183
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard-cli.d.ts","sourceRoot":"","sources":["../../src/cli/onboard-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"onboard-cli.d.ts","sourceRoot":"","sources":["../../src/cli/onboard-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4gBzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,QA0BlD"}
|
package/dist/cli/onboard-cli.js
CHANGED
|
@@ -96,7 +96,10 @@ async function promptSelect(rl, question, options, defaultValue) {
|
|
|
96
96
|
async function runSystemChecks(_options) {
|
|
97
97
|
printStepHeader(1, 6, "System Checks");
|
|
98
98
|
const checks = [
|
|
99
|
-
{
|
|
99
|
+
{
|
|
100
|
+
name: "Node.js version",
|
|
101
|
+
pass: process.version.startsWith("v22") || process.version.startsWith("v20"),
|
|
102
|
+
},
|
|
100
103
|
{ name: "Home directory", pass: Boolean(process.env.HOME) },
|
|
101
104
|
{ name: "Config directory writable", pass: true }, // Assume OK for now
|
|
102
105
|
];
|
|
@@ -291,12 +291,12 @@ const entries = [
|
|
|
291
291
|
},
|
|
292
292
|
},
|
|
293
293
|
{
|
|
294
|
-
name: "
|
|
295
|
-
description: "
|
|
296
|
-
hasSubcommands:
|
|
294
|
+
name: "webhooks",
|
|
295
|
+
description: "Manage webhook ingress routes (TaskFlows via HTTP)",
|
|
296
|
+
hasSubcommands: true,
|
|
297
297
|
register: async (program) => {
|
|
298
|
-
const mod = await import("../
|
|
299
|
-
mod.
|
|
298
|
+
const mod = await import("../webhooks-cli.js");
|
|
299
|
+
mod.registerWebhooksCli(program);
|
|
300
300
|
},
|
|
301
301
|
},
|
|
302
302
|
{
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-checkpoints-cli.d.ts","sourceRoot":"","sources":["../../src/cli/sessions-checkpoints-cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,QAgH7D"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Checkpoints CLI
|
|
3
|
+
*/
|
|
4
|
+
import { loadConfig } from "../config/config.js";
|
|
5
|
+
import { resolveAgentWorkspaceDir } from "../agents/agent-scope.js";
|
|
6
|
+
import { defaultRuntime } from "../runtime.js";
|
|
7
|
+
import { theme } from "../terminal/theme.js";
|
|
8
|
+
import { danger, info, success } from "../globals.js";
|
|
9
|
+
import { formatDocsLink } from "../terminal/links.js";
|
|
10
|
+
import { listAllCheckpoints, listSessionCheckpoints, getCheckpoint, pruneOldCheckpoints, getCheckpointStats, } from "../sessions/checkpoints.js";
|
|
11
|
+
import { runCommandWithRuntime } from "./cli-utils.js";
|
|
12
|
+
function runSessionCommand(action) {
|
|
13
|
+
return runCommandWithRuntime(defaultRuntime, action);
|
|
14
|
+
}
|
|
15
|
+
export function registerSessionCheckpointsCli(program) {
|
|
16
|
+
const checkpoints = program
|
|
17
|
+
.command("checkpoints")
|
|
18
|
+
.description("Manage session checkpoints (list/show/prune)")
|
|
19
|
+
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/sessions/checkpoints", "docs.molt.bot/sessions/checkpoints")}\n`);
|
|
20
|
+
checkpoints
|
|
21
|
+
.command("list")
|
|
22
|
+
.description("List session checkpoints")
|
|
23
|
+
.option("--json", "Output JSON", false)
|
|
24
|
+
.option("--session <key>", "Filter by session key")
|
|
25
|
+
.option("--limit <n>", "Maximum checkpoints to return", "50")
|
|
26
|
+
.action(async (opts) => {
|
|
27
|
+
await runSessionCommand(async () => {
|
|
28
|
+
const config = loadConfig();
|
|
29
|
+
const workspaceDir = resolveAgentWorkspaceDir(config, "main");
|
|
30
|
+
const checkpointsList = opts.session
|
|
31
|
+
? listSessionCheckpoints(workspaceDir, opts.session)
|
|
32
|
+
: listAllCheckpoints(workspaceDir, Number.parseInt(opts.limit || "50", 10));
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
defaultRuntime.log(JSON.stringify(checkpointsList, null, 2));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
defaultRuntime.log("");
|
|
38
|
+
defaultRuntime.log(theme.heading("Session Checkpoints"));
|
|
39
|
+
defaultRuntime.log(theme.muted("─────────────────────────────────────────"));
|
|
40
|
+
if (checkpointsList.length === 0) {
|
|
41
|
+
defaultRuntime.log(info("No checkpoints found."));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
for (const checkpoint of checkpointsList) {
|
|
45
|
+
const date = new Date(checkpoint.createdAt).toLocaleString();
|
|
46
|
+
const reason = checkpoint.reason === "auto-compaction" ? "🔄 auto" : `📌 ${checkpoint.reason}`;
|
|
47
|
+
defaultRuntime.log(` ${theme.success("●")} ${checkpoint.id.substring(0, 12)}... | ${reason} | ${date}`);
|
|
48
|
+
if (checkpoint.metadata?.model)
|
|
49
|
+
defaultRuntime.log(theme.muted(` Model: ${checkpoint.metadata.model}`));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const stats = getCheckpointStats(workspaceDir);
|
|
53
|
+
defaultRuntime.log(theme.muted(`Total: ${stats.total} checkpoints`));
|
|
54
|
+
defaultRuntime.exit(0);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
checkpoints
|
|
58
|
+
.command("show <id>")
|
|
59
|
+
.description("Show checkpoint details")
|
|
60
|
+
.option("--json", "Output JSON", false)
|
|
61
|
+
.action(async (id, opts) => {
|
|
62
|
+
await runSessionCommand(async () => {
|
|
63
|
+
const config = loadConfig();
|
|
64
|
+
const workspaceDir = resolveAgentWorkspaceDir(config, "main");
|
|
65
|
+
const checkpoint = getCheckpoint(workspaceDir, id);
|
|
66
|
+
if (!checkpoint) {
|
|
67
|
+
defaultRuntime.log(danger(`Checkpoint "${id}" not found.`));
|
|
68
|
+
defaultRuntime.exit(1);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (opts.json) {
|
|
72
|
+
defaultRuntime.log(JSON.stringify(checkpoint, null, 2));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
defaultRuntime.log("");
|
|
76
|
+
defaultRuntime.log(theme.heading(`Checkpoint: ${checkpoint.id}`));
|
|
77
|
+
defaultRuntime.log(theme.muted("─────────────────────────────────────────"));
|
|
78
|
+
defaultRuntime.log(` Session: ${checkpoint.sessionKey}`);
|
|
79
|
+
defaultRuntime.log(` Reason: ${checkpoint.reason}`);
|
|
80
|
+
defaultRuntime.log(` Created: ${new Date(checkpoint.createdAt).toLocaleString()}`);
|
|
81
|
+
if (checkpoint.metadata?.model)
|
|
82
|
+
defaultRuntime.log(` Model: ${checkpoint.metadata.model}`);
|
|
83
|
+
if (checkpoint.metadata?.note)
|
|
84
|
+
defaultRuntime.log(` Note: ${checkpoint.metadata.note}`);
|
|
85
|
+
defaultRuntime.exit(0);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
checkpoints
|
|
89
|
+
.command("prune")
|
|
90
|
+
.description("Prune old checkpoints")
|
|
91
|
+
.option("--age <days>", "Prune checkpoints older than N days", "30")
|
|
92
|
+
.option("--yes", "Skip confirmation", false)
|
|
93
|
+
.action(async (opts) => {
|
|
94
|
+
await runSessionCommand(async () => {
|
|
95
|
+
const config = loadConfig();
|
|
96
|
+
const workspaceDir = resolveAgentWorkspaceDir(config, "main");
|
|
97
|
+
const ageDays = Number.parseInt(opts.age || "30", 10);
|
|
98
|
+
const maxAgeMs = ageDays * 24 * 60 * 60 * 1000;
|
|
99
|
+
if (!opts.yes) {
|
|
100
|
+
const stats = getCheckpointStats(workspaceDir);
|
|
101
|
+
defaultRuntime.log("");
|
|
102
|
+
defaultRuntime.log(danger(`⚠️ This will prune checkpoints older than ${ageDays} days`));
|
|
103
|
+
defaultRuntime.log(`Current checkpoints: ${stats.total}`);
|
|
104
|
+
if (stats.oldest)
|
|
105
|
+
defaultRuntime.log(`Oldest: ${new Date(stats.oldest).toLocaleDateString()}`);
|
|
106
|
+
defaultRuntime.log("");
|
|
107
|
+
defaultRuntime.log(info("Use --yes to skip this confirmation."));
|
|
108
|
+
defaultRuntime.exit(1);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const pruned = pruneOldCheckpoints(workspaceDir, maxAgeMs);
|
|
112
|
+
defaultRuntime.log("");
|
|
113
|
+
defaultRuntime.log(success(`Pruned ${pruned} old checkpoint(s).`));
|
|
114
|
+
defaultRuntime.exit(0);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook CLI - Manage webhook ingress routes
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* poolbot webhooks list # List all webhook routes
|
|
6
|
+
* poolbot webhooks create <path> # Create webhook route
|
|
7
|
+
* poolbot webhooks show <id> # Show webhook details
|
|
8
|
+
* poolbot webhooks delete <id> # Delete webhook route
|
|
9
|
+
* poolbot webhooks enable <id> # Enable webhook route
|
|
10
|
+
* poolbot webhooks disable <id> # Disable webhook route
|
|
11
|
+
* poolbot webhooks stats # Show webhook statistics
|
|
12
|
+
* poolbot webhooks serve # Start webhook server
|
|
13
|
+
*/
|
|
1
14
|
import type { Command } from "commander";
|
|
2
15
|
export declare function registerWebhooksCli(program: Command): void;
|
|
3
16
|
//# sourceMappingURL=webhooks-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks-cli.d.ts","sourceRoot":"","sources":["../../src/cli/webhooks-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"webhooks-cli.d.ts","sourceRoot":"","sources":["../../src/cli/webhooks-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA4WnD"}
|