@phuetz/code-buddy 0.1.24 → 0.1.26
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 +1049 -741
- package/dist/agent/codebuddy-agent.d.ts +5 -0
- package/dist/agent/codebuddy-agent.js +46 -1
- package/dist/agent/codebuddy-agent.js.map +1 -1
- package/dist/agent/execution/agent-executor.d.ts +12 -0
- package/dist/agent/execution/agent-executor.js +147 -6
- package/dist/agent/execution/agent-executor.js.map +1 -1
- package/dist/agent/lessons-tracker.d.ts +50 -0
- package/dist/agent/lessons-tracker.js +234 -0
- package/dist/agent/lessons-tracker.js.map +1 -0
- package/dist/agent/message-queue.d.ts +39 -2
- package/dist/agent/message-queue.js +67 -2
- package/dist/agent/message-queue.js.map +1 -1
- package/dist/agent/middleware/index.d.ts +1 -0
- package/dist/agent/middleware/index.js +1 -0
- package/dist/agent/middleware/index.js.map +1 -1
- package/dist/agent/middleware/workflow-guard.d.ts +21 -0
- package/dist/agent/middleware/workflow-guard.js +94 -0
- package/dist/agent/middleware/workflow-guard.js.map +1 -0
- package/dist/agent/repo-profiler.d.ts +61 -0
- package/dist/agent/repo-profiler.js +295 -0
- package/dist/agent/repo-profiler.js.map +1 -0
- package/dist/agent/response-constraint.d.ts +61 -0
- package/dist/agent/response-constraint.js +91 -0
- package/dist/agent/response-constraint.js.map +1 -0
- package/dist/agent/todo-tracker.d.ts +67 -0
- package/dist/agent/todo-tracker.js +245 -0
- package/dist/agent/todo-tracker.js.map +1 -0
- package/dist/agent/tool-handler.d.ts +11 -0
- package/dist/agent/tool-handler.js +79 -1
- package/dist/agent/tool-handler.js.map +1 -1
- package/dist/agent/types.d.ts +20 -2
- package/dist/agent/wide-research.d.ts +93 -0
- package/dist/agent/wide-research.js +232 -0
- package/dist/agent/wide-research.js.map +1 -0
- package/dist/channels/index.d.ts +2 -0
- package/dist/channels/index.js +2 -0
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/pro/callback-router.d.ts +54 -0
- package/dist/channels/pro/callback-router.js +178 -0
- package/dist/channels/pro/callback-router.js.map +1 -0
- package/dist/channels/pro/ci-watcher.d.ts +86 -0
- package/dist/channels/pro/ci-watcher.js +343 -0
- package/dist/channels/pro/ci-watcher.js.map +1 -0
- package/dist/channels/pro/diff-first.d.ts +63 -0
- package/dist/channels/pro/diff-first.js +187 -0
- package/dist/channels/pro/diff-first.js.map +1 -0
- package/dist/channels/pro/enhanced-commands.d.ts +83 -0
- package/dist/channels/pro/enhanced-commands.js +218 -0
- package/dist/channels/pro/enhanced-commands.js.map +1 -0
- package/dist/channels/pro/index.d.ts +19 -0
- package/dist/channels/pro/index.js +21 -0
- package/dist/channels/pro/index.js.map +1 -0
- package/dist/channels/pro/pro-features.d.ts +79 -0
- package/dist/channels/pro/pro-features.js +203 -0
- package/dist/channels/pro/pro-features.js.map +1 -0
- package/dist/channels/pro/run-commands.d.ts +59 -0
- package/dist/channels/pro/run-commands.js +122 -0
- package/dist/channels/pro/run-commands.js.map +1 -0
- package/dist/channels/pro/run-tracker.d.ts +74 -0
- package/dist/channels/pro/run-tracker.js +252 -0
- package/dist/channels/pro/run-tracker.js.map +1 -0
- package/dist/channels/pro/scoped-auth.d.ts +97 -0
- package/dist/channels/pro/scoped-auth.js +340 -0
- package/dist/channels/pro/scoped-auth.js.map +1 -0
- package/dist/channels/pro/text-formatter.d.ts +27 -0
- package/dist/channels/pro/text-formatter.js +269 -0
- package/dist/channels/pro/text-formatter.js.map +1 -0
- package/dist/channels/pro/types.d.ts +242 -0
- package/dist/channels/pro/types.js +14 -0
- package/dist/channels/pro/types.js.map +1 -0
- package/dist/channels/streaming-policy.d.ts +66 -0
- package/dist/channels/streaming-policy.js +266 -0
- package/dist/channels/streaming-policy.js.map +1 -0
- package/dist/channels/telegram/ci-watcher.d.ts +5 -0
- package/dist/channels/telegram/ci-watcher.js +5 -0
- package/dist/channels/telegram/ci-watcher.js.map +1 -0
- package/dist/channels/telegram/client.d.ts +28 -0
- package/dist/channels/telegram/client.js +147 -1
- package/dist/channels/telegram/client.js.map +1 -1
- package/dist/channels/telegram/diff-first.d.ts +5 -0
- package/dist/channels/telegram/diff-first.js +5 -0
- package/dist/channels/telegram/diff-first.js.map +1 -0
- package/dist/channels/telegram/enhanced-commands.d.ts +6 -0
- package/dist/channels/telegram/enhanced-commands.js +6 -0
- package/dist/channels/telegram/enhanced-commands.js.map +1 -0
- package/dist/channels/telegram/index.d.ts +6 -0
- package/dist/channels/telegram/index.js +6 -0
- package/dist/channels/telegram/index.js.map +1 -1
- package/dist/channels/telegram/pro-formatter.d.ts +30 -0
- package/dist/channels/telegram/pro-formatter.js +276 -0
- package/dist/channels/telegram/pro-formatter.js.map +1 -0
- package/dist/channels/telegram/run-commands.d.ts +5 -0
- package/dist/channels/telegram/run-commands.js +6 -0
- package/dist/channels/telegram/run-commands.js.map +1 -0
- package/dist/channels/telegram/run-tracker.d.ts +5 -0
- package/dist/channels/telegram/run-tracker.js +5 -0
- package/dist/channels/telegram/run-tracker.js.map +1 -0
- package/dist/channels/telegram/scoped-auth.d.ts +6 -0
- package/dist/channels/telegram/scoped-auth.js +5 -0
- package/dist/channels/telegram/scoped-auth.js.map +1 -0
- package/dist/channels/telegram/types.d.ts +34 -0
- package/dist/codebuddy/client.js +14 -1
- package/dist/codebuddy/client.js.map +1 -1
- package/dist/commands/dev/index.d.ts +12 -0
- package/dist/commands/dev/index.js +231 -0
- package/dist/commands/dev/index.js.map +1 -0
- package/dist/commands/dev/workflows.d.ts +31 -0
- package/dist/commands/dev/workflows.js +214 -0
- package/dist/commands/dev/workflows.js.map +1 -0
- package/dist/commands/execpolicy.d.ts +17 -0
- package/dist/commands/execpolicy.js +155 -0
- package/dist/commands/execpolicy.js.map +1 -0
- package/dist/commands/knowledge.d.ts +13 -0
- package/dist/commands/knowledge.js +142 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/lessons.d.ts +11 -0
- package/dist/commands/lessons.js +129 -0
- package/dist/commands/lessons.js.map +1 -0
- package/dist/commands/pairing.d.ts +14 -0
- package/dist/commands/pairing.js +132 -0
- package/dist/commands/pairing.js.map +1 -0
- package/dist/commands/research/index.d.ts +13 -0
- package/dist/commands/research/index.js +91 -0
- package/dist/commands/research/index.js.map +1 -0
- package/dist/commands/run-cli/index.d.ts +11 -0
- package/dist/commands/run-cli/index.js +49 -0
- package/dist/commands/run-cli/index.js.map +1 -0
- package/dist/commands/todos.d.ts +9 -0
- package/dist/commands/todos.js +119 -0
- package/dist/commands/todos.js.map +1 -0
- package/dist/config/toml-config.d.ts +21 -0
- package/dist/config/toml-config.js +15 -0
- package/dist/config/toml-config.js.map +1 -1
- package/dist/context/enhanced-compression.js +12 -1
- package/dist/context/enhanced-compression.js.map +1 -1
- package/dist/context/observation-variator.d.ts +44 -0
- package/dist/context/observation-variator.js +83 -0
- package/dist/context/observation-variator.js.map +1 -0
- package/dist/context/precompaction-flush.d.ts +40 -0
- package/dist/context/precompaction-flush.js +134 -0
- package/dist/context/precompaction-flush.js.map +1 -0
- package/dist/context/restorable-compression.d.ts +80 -0
- package/dist/context/restorable-compression.js +228 -0
- package/dist/context/restorable-compression.js.map +1 -0
- package/dist/daemon/daily-reset.d.ts +77 -0
- package/dist/daemon/daily-reset.js +175 -0
- package/dist/daemon/daily-reset.js.map +1 -0
- package/dist/daemon/index.d.ts +1 -0
- package/dist/daemon/index.js +1 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/knowledge-manager.d.ts +77 -0
- package/dist/knowledge/knowledge-manager.js +244 -0
- package/dist/knowledge/knowledge-manager.js.map +1 -0
- package/dist/observability/run-store.d.ts +133 -0
- package/dist/observability/run-store.js +419 -0
- package/dist/observability/run-store.js.map +1 -0
- package/dist/observability/run-viewer.d.ts +33 -0
- package/dist/observability/run-viewer.js +254 -0
- package/dist/observability/run-viewer.js.map +1 -0
- package/dist/optimization/cache-breakpoints.d.ts +52 -0
- package/dist/optimization/cache-breakpoints.js +97 -0
- package/dist/optimization/cache-breakpoints.js.map +1 -0
- package/dist/persistence/session-store.d.ts +3 -1
- package/dist/persistence/session-store.js +1 -1
- package/dist/persistence/session-store.js.map +1 -1
- package/dist/prompts/system-base.js +51 -7
- package/dist/prompts/system-base.js.map +1 -1
- package/dist/prompts/variation-injector.d.ts +55 -0
- package/dist/prompts/variation-injector.js +171 -0
- package/dist/prompts/variation-injector.js.map +1 -0
- package/dist/prompts/workflow-rules.d.ts +10 -0
- package/dist/prompts/workflow-rules.js +79 -0
- package/dist/prompts/workflow-rules.js.map +1 -0
- package/dist/sandbox/execpolicy.d.ts +45 -0
- package/dist/sandbox/execpolicy.js +80 -0
- package/dist/sandbox/execpolicy.js.map +1 -1
- package/dist/sandbox/os-sandbox.d.ts +25 -0
- package/dist/sandbox/os-sandbox.js +73 -0
- package/dist/sandbox/os-sandbox.js.map +1 -1
- package/dist/security/security-audit.d.ts +10 -0
- package/dist/security/security-audit.js +116 -0
- package/dist/security/security-audit.js.map +1 -1
- package/dist/security/shell-env-policy.d.ts +45 -0
- package/dist/security/shell-env-policy.js +141 -0
- package/dist/security/shell-env-policy.js.map +1 -0
- package/dist/security/ssrf-guard.d.ts +61 -0
- package/dist/security/ssrf-guard.js +382 -0
- package/dist/security/ssrf-guard.js.map +1 -0
- package/dist/security/write-policy.d.ts +57 -0
- package/dist/security/write-policy.js +117 -0
- package/dist/security/write-policy.js.map +1 -0
- package/dist/services/prompt-builder.js +37 -0
- package/dist/services/prompt-builder.js.map +1 -1
- package/dist/themes/theme-schema.d.ts +10 -10
- package/dist/tools/ask-human-tool.d.ts +62 -0
- package/dist/tools/ask-human-tool.js +112 -0
- package/dist/tools/ask-human-tool.js.map +1 -0
- package/dist/tools/bash/bash-tool.d.ts +15 -0
- package/dist/tools/bash/bash-tool.js +62 -0
- package/dist/tools/bash/bash-tool.js.map +1 -1
- package/dist/tools/bash/command-validator.d.ts +1 -0
- package/dist/tools/bash/command-validator.js +5 -0
- package/dist/tools/bash/command-validator.js.map +1 -1
- package/dist/tools/create-skill-tool.d.ts +87 -0
- package/dist/tools/create-skill-tool.js +142 -0
- package/dist/tools/create-skill-tool.js.map +1 -0
- package/dist/tools/fetch-tool.js +5 -3
- package/dist/tools/fetch-tool.js.map +1 -1
- package/dist/tools/hooks/default-hooks.js +24 -23
- package/dist/tools/hooks/default-hooks.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/plan-tool.d.ts +22 -0
- package/dist/tools/plan-tool.js +128 -0
- package/dist/tools/plan-tool.js.map +1 -0
- package/dist/tools/registry/attention-tools.d.ts +32 -0
- package/dist/tools/registry/attention-tools.js +225 -0
- package/dist/tools/registry/attention-tools.js.map +1 -0
- package/dist/tools/registry/index.d.ts +9 -1
- package/dist/tools/registry/index.js +30 -2
- package/dist/tools/registry/index.js.map +1 -1
- package/dist/tools/registry/knowledge-tools.d.ts +46 -0
- package/dist/tools/registry/knowledge-tools.js +293 -0
- package/dist/tools/registry/knowledge-tools.js.map +1 -0
- package/dist/tools/registry/lessons-tools.d.ts +48 -0
- package/dist/tools/registry/lessons-tools.js +359 -0
- package/dist/tools/registry/lessons-tools.js.map +1 -0
- package/dist/tools/registry/plan-tools.d.ts +2 -0
- package/dist/tools/registry/plan-tools.js +7 -0
- package/dist/tools/registry/plan-tools.js.map +1 -0
- package/dist/tools/registry/script-tools.d.ts +2 -0
- package/dist/tools/registry/script-tools.js +7 -0
- package/dist/tools/registry/script-tools.js.map +1 -0
- package/dist/tools/registry/tool-aliases.d.ts +44 -0
- package/dist/tools/registry/tool-aliases.js +130 -0
- package/dist/tools/registry/tool-aliases.js.map +1 -0
- package/dist/tools/run-script-tool.d.ts +13 -0
- package/dist/tools/run-script-tool.js +146 -0
- package/dist/tools/run-script-tool.js.map +1 -0
- package/dist/tools/web-search.d.ts +25 -0
- package/dist/tools/web-search.js +68 -6
- package/dist/tools/web-search.js.map +1 -1
- package/dist/utils/config-validation/schema.d.ts +2 -2
- package/dist/utils/debug-logger.d.ts +1 -1
- package/dist/utils/rtk-compressor.d.ts +13 -10
- package/dist/utils/rtk-compressor.js +83 -34
- package/dist/utils/rtk-compressor.js.map +1 -1
- package/dist/utils/stable-json.d.ts +27 -0
- package/dist/utils/stable-json.js +50 -0
- package/dist/utils/stable-json.js.map +1 -0
- package/dist/webhooks/webhook-manager.d.ts +7 -0
- package/dist/webhooks/webhook-manager.js +29 -0
- package/dist/webhooks/webhook-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CreateSkill Tool (OpenClaw self-authoring inspired)
|
|
3
|
+
*
|
|
4
|
+
* Allows the agent to write new SKILL.md files to the workspace
|
|
5
|
+
* skills directory at runtime. The SkillRegistry's hot-reload watcher
|
|
6
|
+
* picks up the new file within ~250ms, making the skill immediately
|
|
7
|
+
* available in subsequent turns without restart.
|
|
8
|
+
*
|
|
9
|
+
* This is a form of self-extension: the agent can observe what
|
|
10
|
+
* commands it uses repeatedly and codify them as reusable skills.
|
|
11
|
+
*
|
|
12
|
+
* Skill file location:
|
|
13
|
+
* .codebuddy/skills/workspace/<slug>/SKILL.md
|
|
14
|
+
*
|
|
15
|
+
* The tool generates valid SKILL.md frontmatter and validates that
|
|
16
|
+
* the slug does not already exist before writing.
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from 'fs/promises';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
import { existsSync } from 'fs';
|
|
21
|
+
export class CreateSkillTool {
|
|
22
|
+
get workspaceDir() {
|
|
23
|
+
return path.join(process.cwd(), '.codebuddy', 'skills', 'workspace');
|
|
24
|
+
}
|
|
25
|
+
async execute(input) {
|
|
26
|
+
const { name, description, body, tags = [], env = {}, requires = [], overwrite = false, } = input;
|
|
27
|
+
if (!name?.trim()) {
|
|
28
|
+
return { success: false, error: 'name is required' };
|
|
29
|
+
}
|
|
30
|
+
if (!description?.trim()) {
|
|
31
|
+
return { success: false, error: 'description is required' };
|
|
32
|
+
}
|
|
33
|
+
if (!body?.trim()) {
|
|
34
|
+
return { success: false, error: 'body is required' };
|
|
35
|
+
}
|
|
36
|
+
// Derive a filesystem-safe slug
|
|
37
|
+
const slug = name
|
|
38
|
+
.toLowerCase()
|
|
39
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
40
|
+
.replace(/^-+|-+$/g, '');
|
|
41
|
+
const skillDir = path.join(this.workspaceDir, slug);
|
|
42
|
+
const skillFile = path.join(skillDir, 'SKILL.md');
|
|
43
|
+
// Check for existing skill
|
|
44
|
+
if (existsSync(skillFile) && !overwrite) {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
error: `Skill "${slug}" already exists. Set overwrite: true to replace it.`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Build YAML frontmatter
|
|
51
|
+
const fm = ['---', `name: ${name}`, `version: 1.0.0`, `description: ${description}`];
|
|
52
|
+
if (tags.length > 0) {
|
|
53
|
+
fm.push(`tags: [${tags.join(', ')}]`);
|
|
54
|
+
}
|
|
55
|
+
if (Object.keys(env).length > 0) {
|
|
56
|
+
fm.push('env:');
|
|
57
|
+
for (const [k, v] of Object.entries(env)) {
|
|
58
|
+
fm.push(` ${k}: ${v}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (requires.length > 0) {
|
|
62
|
+
fm.push(`requires: [${requires.join(', ')}]`);
|
|
63
|
+
}
|
|
64
|
+
fm.push('---');
|
|
65
|
+
const skillContent = `${fm.join('\n')}\n\n${body.trim()}\n`;
|
|
66
|
+
// Write to disk
|
|
67
|
+
try {
|
|
68
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
69
|
+
await fs.writeFile(skillFile, skillContent, 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
error: `Failed to write skill: ${err instanceof Error ? err.message : String(err)}`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
success: true,
|
|
79
|
+
output: [
|
|
80
|
+
`✅ Skill created: ${name}`,
|
|
81
|
+
` Path: ${skillFile}`,
|
|
82
|
+
` Tags: ${tags.join(', ') || 'none'}`,
|
|
83
|
+
'',
|
|
84
|
+
'The skill is now available in the workspace registry.',
|
|
85
|
+
'Run `buddy hub search ${name}` or `/skills` to verify.',
|
|
86
|
+
].join('\n'),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
getSchema() {
|
|
90
|
+
return {
|
|
91
|
+
name: 'create_skill',
|
|
92
|
+
description: 'Create a new SKILL.md file in the workspace skills directory. Use this to codify reusable workflows, idioms, or domain-specific procedures so they are available in future sessions. The skill is immediately hot-reloaded into the registry.',
|
|
93
|
+
parameters: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
name: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
description: 'Human-readable skill name (e.g. "Deploy to Railway")',
|
|
99
|
+
},
|
|
100
|
+
description: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
description: 'One-sentence description shown in skill search results',
|
|
103
|
+
},
|
|
104
|
+
body: {
|
|
105
|
+
type: 'string',
|
|
106
|
+
description: 'Full Markdown body: describe WHEN to use this skill and HOW (steps, examples, commands)',
|
|
107
|
+
},
|
|
108
|
+
tags: {
|
|
109
|
+
type: 'array',
|
|
110
|
+
items: { type: 'string' },
|
|
111
|
+
description: 'Tags for discovery (e.g. ["deploy", "devops", "railway"])',
|
|
112
|
+
},
|
|
113
|
+
env: {
|
|
114
|
+
type: 'object',
|
|
115
|
+
description: 'Environment variables required: { "VAR_NAME": "description" }',
|
|
116
|
+
},
|
|
117
|
+
requires: {
|
|
118
|
+
type: 'array',
|
|
119
|
+
items: { type: 'string' },
|
|
120
|
+
description: 'CLI tools required (e.g. ["docker", "kubectl"])',
|
|
121
|
+
},
|
|
122
|
+
overwrite: {
|
|
123
|
+
type: 'boolean',
|
|
124
|
+
description: 'Overwrite existing skill with the same name (default: false)',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
required: ['name', 'description', 'body'],
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
let instance = null;
|
|
133
|
+
export function getCreateSkillTool() {
|
|
134
|
+
if (!instance) {
|
|
135
|
+
instance = new CreateSkillTool();
|
|
136
|
+
}
|
|
137
|
+
return instance;
|
|
138
|
+
}
|
|
139
|
+
export function resetCreateSkillTool() {
|
|
140
|
+
instance = null;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=create-skill-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-skill-tool.js","sourceRoot":"","sources":["../../src/tools/create-skill-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/fetch-tool.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Make HTTP requests to APIs and web resources.
|
|
5
5
|
* Supports GET, POST, PUT, DELETE with JSON handling.
|
|
6
6
|
*/
|
|
7
|
+
import { assertSafeUrl } from '../security/ssrf-guard.js';
|
|
7
8
|
// ============================================================================
|
|
8
9
|
// Fetch Tool
|
|
9
10
|
// ============================================================================
|
|
@@ -60,9 +61,10 @@ export class FetchTool {
|
|
|
60
61
|
catch {
|
|
61
62
|
return { success: false, error: `Invalid URL: ${url}` };
|
|
62
63
|
}
|
|
63
|
-
// Security check -
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
// Security check — full SSRF guard (OpenClaw-inspired, replaces basic isInternalUrl)
|
|
65
|
+
const ssrfCheck = await assertSafeUrl(url);
|
|
66
|
+
if (!ssrfCheck.safe) {
|
|
67
|
+
return { success: false, error: `SSRF protection: ${ssrfCheck.reason}` };
|
|
66
68
|
}
|
|
67
69
|
// Prepare request
|
|
68
70
|
const requestHeaders = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-tool.js","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"fetch-tool.js","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { getToolHooksManager, } from './tool-hooks.js';
|
|
9
9
|
import { sanitizeResult, } from './result-sanitizer.js';
|
|
10
10
|
import { logger } from '../../utils/logger.js';
|
|
11
|
-
import {
|
|
11
|
+
import { wrapWithRTK, isRTKAvailable } from '../../utils/rtk-compressor.js';
|
|
12
12
|
import { getConfigManager } from '../../config/toml-config.js';
|
|
13
13
|
// Track current provider for sanitization
|
|
14
14
|
let currentProvider = 'grok';
|
|
@@ -36,31 +36,32 @@ export function registerDefaultHooks() {
|
|
|
36
36
|
logger.debug('Default hooks already registered');
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
// RTK
|
|
40
|
-
hooksManager.
|
|
41
|
-
if (
|
|
42
|
-
return
|
|
39
|
+
// RTK command proxy hook (before tool execution — wraps bash commands with `rtk`)
|
|
40
|
+
hooksManager.registerBeforeHook('rtk-command-proxy', async (context) => {
|
|
41
|
+
if (context.toolName !== 'bash')
|
|
42
|
+
return;
|
|
43
43
|
const config = getConfigManager().getConfig();
|
|
44
44
|
if (!config.integrations?.rtk_enabled)
|
|
45
|
-
return
|
|
46
|
-
const minLength = config.integrations.rtk_min_output_length ?? 500;
|
|
47
|
-
if (result.output.length < minLength)
|
|
48
|
-
return result;
|
|
45
|
+
return;
|
|
49
46
|
if (!isRTKAvailable())
|
|
50
|
-
return
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
53
|
-
return
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
return;
|
|
48
|
+
const command = context.args.command;
|
|
49
|
+
if (!command)
|
|
50
|
+
return;
|
|
51
|
+
const wrapped = wrapWithRTK(command);
|
|
52
|
+
if (wrapped !== command) {
|
|
53
|
+
logger.debug('RTK wrapping bash command', {
|
|
54
|
+
original: command.substring(0, 100),
|
|
55
|
+
wrapped: wrapped.substring(0, 100),
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
...context,
|
|
59
|
+
args: { ...context.args, command: wrapped },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
61
62
|
}, {
|
|
62
|
-
name: 'RTK
|
|
63
|
-
priority: 90, // Runs before
|
|
63
|
+
name: 'RTK Command Proxy',
|
|
64
|
+
priority: 90, // Runs before other hooks
|
|
64
65
|
});
|
|
65
66
|
// Result sanitization hook (after tool execution)
|
|
66
67
|
hooksManager.registerAfterHook('result-sanitizer', async (context, result) => {
|
|
@@ -153,7 +154,7 @@ export function registerDefaultHooks() {
|
|
|
153
154
|
*/
|
|
154
155
|
export function unregisterDefaultHooks() {
|
|
155
156
|
const hooksManager = getToolHooksManager();
|
|
156
|
-
hooksManager.unregisterHook('
|
|
157
|
+
hooksManager.unregisterHook('before_tool_call', 'rtk-command-proxy');
|
|
157
158
|
hooksManager.unregisterHook('after_tool_call', 'result-sanitizer');
|
|
158
159
|
hooksManager.unregisterHook('after_tool_call', 'execution-logger');
|
|
159
160
|
hooksManager.unregisterHook('tool_error', 'error-tracker');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-hooks.js","sourceRoot":"","sources":["../../../src/tools/hooks/default-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,mBAAmB,GAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"default-hooks.js","sourceRoot":"","sources":["../../../src/tools/hooks/default-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,mBAAmB,GAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,0CAA0C;AAC1C,IAAI,eAAe,GAAgB,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAqB;IACtD,eAAe,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,wCAAwC;IACxC,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAC1D,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,kFAAkF;IAClF,YAAY,CAAC,kBAAkB,CAC7B,mBAAmB,EACnB,KAAK,EAAE,OAAwB,EAAmC,EAAE;QAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW;YAAE,OAAO;QAE9C,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO;QAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAA6B,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;gBACnC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;aACnC,CAAC,CAAC;YACH,OAAO;gBACL,GAAG,OAAO;gBACV,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC,EACD;QACE,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,EAAE,EAAE,0BAA0B;KACzC,CACF,CAAC;IAEF,kDAAkD;IAClD,YAAY,CAAC,iBAAiB,CAC5B,kBAAkB,EAClB,KAAK,EAAE,OAAwB,EAAE,MAAsB,EAA2B,EAAE;QAClF,6DAA6D;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,MAAM,KAAK,GAAoB;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC7D,YAAY,EAAE;gBACZ,YAAY,EAAE,SAAS,CAAC,YAAY;aACrC;SACF,CAAC;IACJ,CAAC,EACD;QACE,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,EAAE,EAAE,0CAA0C;KACzD,CACF,CAAC;IAEF,sCAAsC;IACtC,YAAY,CAAC,iBAAiB,CAC5B,kBAAkB,EAClB,KAAK,EAAE,OAAwB,EAAE,MAAsB,EAAiB,EAAE;QACxE,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;SACzC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACpC,GAAG,OAAO;gBACV,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EACD;QACE,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,EAAE,EAAE,0BAA0B;KACzC,CACF,CAAC;IAEF,sBAAsB;IACtB,YAAY,CAAC,iBAAiB,CAC5B,eAAe,EACf,KAAK,EAAE,OAAwB,EAAE,KAAY,EAAiB,EAAE;QAC9D,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;YACxB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC,EACD;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,GAAG;KACd,CACF,CAAC;IAEF,wBAAwB;IACxB,YAAY,CAAC,mBAAmB,CAC9B,iBAAiB,EACjB,KAAK,EAAE,OAAwB,EAAE,KAAY,EAAiB,EAAE;QAC9D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC,EACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,GAAG;KACd,CACF,CAAC;IAEF,uBAAuB;IACvB,YAAY,CAAC,kBAAkB,CAC7B,gBAAgB,EAChB,KAAK,EAAE,OAAwB,EAAE,KAAY,EAAiB,EAAE;QAC9D,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YACzB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC,EACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,GAAG;KACd,CACF,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,YAAY,CAAC,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IACrE,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IACnE,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IACnE,YAAY,CAAC,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC3D,YAAY,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC/D,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAE7D,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { ReasoningTool } from "./reasoning-tool.js";
|
|
|
9
9
|
export { BrowserTool, getBrowserTool, resetBrowserTool, type BrowserAction, type BrowserParams, type BrowserConfig, type PageInfo, type LinkInfo, type FormInfo, } from "./browser-tool.js";
|
|
10
10
|
export { DockerTool, type ContainerInfo, type ImageInfo, type DockerBuildOptions, type DockerRunOptions, } from "./docker-tool.js";
|
|
11
11
|
export { KubernetesTool, getKubernetesTool, type K8sResourceType, type K8sGetOptions, type K8sApplyOptions, type K8sDeleteOptions, type K8sLogsOptions, type K8sExecOptions, type K8sScaleOptions, } from "./kubernetes-tool.js";
|
|
12
|
+
export { RunScriptTool } from "./run-script-tool.js";
|
|
12
13
|
export type { ToolResult } from '../types/index.js';
|
package/dist/tools/index.js
CHANGED
|
@@ -10,4 +10,5 @@ export { ReasoningTool } from "./reasoning-tool.js";
|
|
|
10
10
|
export { BrowserTool, getBrowserTool, resetBrowserTool, } from "./browser-tool.js";
|
|
11
11
|
export { DockerTool, } from "./docker-tool.js";
|
|
12
12
|
export { KubernetesTool, getKubernetesTool, } from "./kubernetes-tool.js";
|
|
13
|
+
export { RunScriptTool } from "./run-script-tool.js";
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAiC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,UAAU,GAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAwC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,GAOjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,GAKX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,iBAAiB,GAQlB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAiC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,UAAU,GAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAwC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,GAOjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,GAKX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,iBAAiB,GAQlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseTool, ParameterDefinition } from './base-tool.js';
|
|
2
|
+
import { ToolResult } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* PlanTool
|
|
5
|
+
*
|
|
6
|
+
* Manages a persistent PLAN.md file to track complex task execution.
|
|
7
|
+
* This aligns with the "Open Manus" / "CodeAct" philosophy of maintaining
|
|
8
|
+
* a visible, persistent state of the agent's plan.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PlanTool extends BaseTool {
|
|
11
|
+
readonly name = "plan";
|
|
12
|
+
readonly description = "Manage a persistent execution plan (PLAN.md). Use this to track progress on complex tasks.";
|
|
13
|
+
private planPath;
|
|
14
|
+
constructor(cwd?: string);
|
|
15
|
+
protected getParameters(): Record<string, ParameterDefinition>;
|
|
16
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
17
|
+
private initPlan;
|
|
18
|
+
private readPlan;
|
|
19
|
+
private appendStep;
|
|
20
|
+
private updateStep;
|
|
21
|
+
private getStatusMarker;
|
|
22
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { BaseTool } from './base-tool.js';
|
|
2
|
+
import * as fs from 'fs-extra';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* PlanTool
|
|
6
|
+
*
|
|
7
|
+
* Manages a persistent PLAN.md file to track complex task execution.
|
|
8
|
+
* This aligns with the "Open Manus" / "CodeAct" philosophy of maintaining
|
|
9
|
+
* a visible, persistent state of the agent's plan.
|
|
10
|
+
*/
|
|
11
|
+
export class PlanTool extends BaseTool {
|
|
12
|
+
name = 'plan';
|
|
13
|
+
description = 'Manage a persistent execution plan (PLAN.md). Use this to track progress on complex tasks.';
|
|
14
|
+
planPath;
|
|
15
|
+
constructor(cwd = process.cwd()) {
|
|
16
|
+
super();
|
|
17
|
+
this.planPath = path.join(cwd, 'PLAN.md');
|
|
18
|
+
}
|
|
19
|
+
getParameters() {
|
|
20
|
+
return {
|
|
21
|
+
action: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Action to perform: "init" (create new), "read" (view), "update" (mark step), "append" (add step).',
|
|
24
|
+
enum: ['init', 'read', 'update', 'append'],
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
goal: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'The main goal for "init" action.',
|
|
30
|
+
},
|
|
31
|
+
step: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'The step description for "append" or the text to match for "update".',
|
|
34
|
+
},
|
|
35
|
+
status: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Status for "update" action: "pending" ([ ]), "in_progress" ([/]), "completed" ([x]), "failed" ([-]).',
|
|
38
|
+
enum: ['pending', 'in_progress', 'completed', 'failed'],
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async execute(input) {
|
|
43
|
+
const action = input.action;
|
|
44
|
+
try {
|
|
45
|
+
if (action === 'init') {
|
|
46
|
+
return this.initPlan(input.goal);
|
|
47
|
+
}
|
|
48
|
+
else if (action === 'read') {
|
|
49
|
+
return this.readPlan();
|
|
50
|
+
}
|
|
51
|
+
else if (action === 'append') {
|
|
52
|
+
return this.appendStep(input.step);
|
|
53
|
+
}
|
|
54
|
+
else if (action === 'update') {
|
|
55
|
+
return this.updateStep(input.step, input.status);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return this.error(`Unknown action: ${action}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
return this.error(`Plan operation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async initPlan(goal) {
|
|
66
|
+
if (!goal)
|
|
67
|
+
return this.error('Goal is required for init');
|
|
68
|
+
const content = `# Execution Plan
|
|
69
|
+
|
|
70
|
+
**Goal:** ${goal}
|
|
71
|
+
|
|
72
|
+
## Steps
|
|
73
|
+
`;
|
|
74
|
+
await fs.writeFile(this.planPath, content);
|
|
75
|
+
return this.success(`Created new plan at ${this.planPath}`, { content });
|
|
76
|
+
}
|
|
77
|
+
async readPlan() {
|
|
78
|
+
if (!await fs.pathExists(this.planPath)) {
|
|
79
|
+
return this.error('No PLAN.md found. Initialize one first.');
|
|
80
|
+
}
|
|
81
|
+
const content = await fs.readFile(this.planPath, 'utf-8');
|
|
82
|
+
return this.success(content);
|
|
83
|
+
}
|
|
84
|
+
async appendStep(step) {
|
|
85
|
+
if (!step)
|
|
86
|
+
return this.error('Step description is required for append');
|
|
87
|
+
if (!await fs.pathExists(this.planPath))
|
|
88
|
+
return this.error('No PLAN.md found.');
|
|
89
|
+
const line = `- [ ] ${step}
|
|
90
|
+
`;
|
|
91
|
+
await fs.appendFile(this.planPath, line);
|
|
92
|
+
return this.readPlan();
|
|
93
|
+
}
|
|
94
|
+
async updateStep(stepMatch, status) {
|
|
95
|
+
if (!stepMatch)
|
|
96
|
+
return this.error('Step match text is required for update');
|
|
97
|
+
if (!await fs.pathExists(this.planPath))
|
|
98
|
+
return this.error('No PLAN.md found.');
|
|
99
|
+
const content = await fs.readFile(this.planPath, 'utf-8');
|
|
100
|
+
const lines = content.split('\n');
|
|
101
|
+
let updated = false;
|
|
102
|
+
const marker = this.getStatusMarker(status);
|
|
103
|
+
const newLines = lines.map(line => {
|
|
104
|
+
// Simple fuzzy match: if the line contains the text and looks like a task
|
|
105
|
+
if (line.includes(stepMatch) && line.trim().startsWith('- [')) {
|
|
106
|
+
updated = true;
|
|
107
|
+
// Replace the marker [ ] or [x] with new marker
|
|
108
|
+
return line.replace(/- \[[^\]]*\]/, `- [${marker}]`);
|
|
109
|
+
}
|
|
110
|
+
return line;
|
|
111
|
+
});
|
|
112
|
+
if (!updated) {
|
|
113
|
+
return this.error(`Could not find a task matching "${stepMatch}"`);
|
|
114
|
+
}
|
|
115
|
+
const newContent = newLines.join('\n');
|
|
116
|
+
await fs.writeFile(this.planPath, newContent);
|
|
117
|
+
return this.success(`Updated task status to ${status}\n\n${newContent}`);
|
|
118
|
+
}
|
|
119
|
+
getStatusMarker(status) {
|
|
120
|
+
switch (status) {
|
|
121
|
+
case 'completed': return 'x';
|
|
122
|
+
case 'in_progress': return '/';
|
|
123
|
+
case 'failed': return '-';
|
|
124
|
+
default: return ' ';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=plan-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-tool.js","sourceRoot":"","sources":["../../src/tools/plan-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attention Tool Adapters
|
|
3
|
+
*
|
|
4
|
+
* ITool-compliant adapters for:
|
|
5
|
+
* - TodoAttentionTool (`todo_update`) — Manus AI attention bias
|
|
6
|
+
* - RestoreContextTool (`restore_context`) — Manus AI restorable compression
|
|
7
|
+
*
|
|
8
|
+
* These two tools work together: the agent updates todos to maintain
|
|
9
|
+
* focus across long sessions, and can restore compressed context content
|
|
10
|
+
* by identifier when it needs to revisit earlier information.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolResult } from '../../types/index.js';
|
|
13
|
+
import type { ITool, ToolSchema, IToolMetadata, IValidationResult } from './types.js';
|
|
14
|
+
export declare class TodoAttentionTool implements ITool {
|
|
15
|
+
readonly name = "todo_update";
|
|
16
|
+
readonly description: string;
|
|
17
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
18
|
+
getSchema(): ToolSchema;
|
|
19
|
+
validate(input: Record<string, unknown>): IValidationResult;
|
|
20
|
+
getMetadata(): IToolMetadata;
|
|
21
|
+
isAvailable(): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
export declare class RestoreContextTool implements ITool {
|
|
24
|
+
readonly name = "restore_context";
|
|
25
|
+
readonly description: string;
|
|
26
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
27
|
+
getSchema(): ToolSchema;
|
|
28
|
+
validate(input: Record<string, unknown>): IValidationResult;
|
|
29
|
+
getMetadata(): IToolMetadata;
|
|
30
|
+
isAvailable(): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
export declare function createAttentionTools(): ITool[];
|