@wiro-ai/wiro-mcp 1.3.4 → 1.4.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 +173 -16
- package/dist/client.d.ts +10 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -20
- package/dist/client.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +25 -0
- package/dist/instructions.js.map +1 -0
- package/dist/playbooks.d.ts +8 -0
- package/dist/playbooks.d.ts.map +1 -0
- package/dist/playbooks.js +665 -0
- package/dist/playbooks.js.map +1 -0
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +133 -0
- package/dist/prompts.js.map +1 -0
- package/dist/server.d.ts +9 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/apply-agent-skills.d.ts +4 -0
- package/dist/tools/apply-agent-skills.d.ts.map +1 -0
- package/dist/tools/apply-agent-skills.js +545 -0
- package/dist/tools/apply-agent-skills.js.map +1 -0
- package/dist/tools/cancel-agent-message.d.ts +4 -0
- package/dist/tools/cancel-agent-message.d.ts.map +1 -0
- package/dist/tools/cancel-agent-message.js +126 -0
- package/dist/tools/cancel-agent-message.js.map +1 -0
- package/dist/tools/cancel-task.js +3 -3
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/clone-workflow.d.ts +4 -0
- package/dist/tools/clone-workflow.d.ts.map +1 -0
- package/dist/tools/clone-workflow.js +83 -0
- package/dist/tools/clone-workflow.js.map +1 -0
- package/dist/tools/connect-agent-oauth.d.ts +4 -0
- package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/connect-agent-oauth.js +508 -0
- package/dist/tools/connect-agent-oauth.js.map +1 -0
- package/dist/tools/control-agent.d.ts +4 -0
- package/dist/tools/control-agent.d.ts.map +1 -0
- package/dist/tools/control-agent.js +274 -0
- package/dist/tools/control-agent.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +100 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +103 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-agent-session.d.ts +6 -0
- package/dist/tools/delete-agent-session.d.ts.map +1 -0
- package/dist/tools/delete-agent-session.js +134 -0
- package/dist/tools/delete-agent-session.js.map +1 -0
- package/dist/tools/delete-agent.d.ts +4 -0
- package/dist/tools/delete-agent.d.ts.map +1 -0
- package/dist/tools/delete-agent.js +144 -0
- package/dist/tools/delete-agent.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +4 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +77 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/deploy-agent.d.ts +4 -0
- package/dist/tools/deploy-agent.d.ts.map +1 -0
- package/dist/tools/deploy-agent.js +455 -0
- package/dist/tools/deploy-agent.js.map +1 -0
- package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
- package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/disconnect-agent-oauth.js +118 -0
- package/dist/tools/disconnect-agent-oauth.js.map +1 -0
- package/dist/tools/get-account.d.ts +4 -0
- package/dist/tools/get-account.d.ts.map +1 -0
- package/dist/tools/get-account.js +110 -0
- package/dist/tools/get-account.js.map +1 -0
- package/dist/tools/get-agent-activity.d.ts +4 -0
- package/dist/tools/get-agent-activity.d.ts.map +1 -0
- package/dist/tools/get-agent-activity.js +383 -0
- package/dist/tools/get-agent-activity.js.map +1 -0
- package/dist/tools/get-agent-conversation.d.ts +4 -0
- package/dist/tools/get-agent-conversation.d.ts.map +1 -0
- package/dist/tools/get-agent-conversation.js +224 -0
- package/dist/tools/get-agent-conversation.js.map +1 -0
- package/dist/tools/get-agent-message.d.ts +4 -0
- package/dist/tools/get-agent-message.d.ts.map +1 -0
- package/dist/tools/get-agent-message.js +68 -0
- package/dist/tools/get-agent-message.js.map +1 -0
- package/dist/tools/get-agent-template.d.ts +4 -0
- package/dist/tools/get-agent-template.d.ts.map +1 -0
- package/dist/tools/get-agent-template.js +107 -0
- package/dist/tools/get-agent-template.js.map +1 -0
- package/dist/tools/get-model-schema.d.ts +5 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +136 -8
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-my-agent.d.ts +4 -0
- package/dist/tools/get-my-agent.d.ts.map +1 -0
- package/dist/tools/get-my-agent.js +78 -0
- package/dist/tools/get-my-agent.js.map +1 -0
- package/dist/tools/get-playbook.d.ts +3 -0
- package/dist/tools/get-playbook.d.ts.map +1 -0
- package/dist/tools/get-playbook.js +50 -0
- package/dist/tools/get-playbook.js.map +1 -0
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +42 -15
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +4 -3
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/get-workflow.d.ts +9 -0
- package/dist/tools/get-workflow.d.ts.map +1 -0
- package/dist/tools/get-workflow.js +99 -0
- package/dist/tools/get-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +62 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +127 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +10 -6
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-agent-skills.d.ts +4 -0
- package/dist/tools/list-agent-skills.d.ts.map +1 -0
- package/dist/tools/list-agent-skills.js +242 -0
- package/dist/tools/list-agent-skills.js.map +1 -0
- package/dist/tools/list-agent-templates.d.ts +4 -0
- package/dist/tools/list-agent-templates.d.ts.map +1 -0
- package/dist/tools/list-agent-templates.js +110 -0
- package/dist/tools/list-agent-templates.js.map +1 -0
- package/dist/tools/list-my-agents.d.ts +4 -0
- package/dist/tools/list-my-agents.d.ts.map +1 -0
- package/dist/tools/list-my-agents.js +90 -0
- package/dist/tools/list-my-agents.js.map +1 -0
- package/dist/tools/list-studio-results.d.ts +4 -0
- package/dist/tools/list-studio-results.d.ts.map +1 -0
- package/dist/tools/list-studio-results.js +95 -0
- package/dist/tools/list-studio-results.js.map +1 -0
- package/dist/tools/list-tasks.d.ts.map +1 -1
- package/dist/tools/list-tasks.js +7 -5
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/list-workflow-runs.d.ts +4 -0
- package/dist/tools/list-workflow-runs.d.ts.map +1 -0
- package/dist/tools/list-workflow-runs.js +110 -0
- package/dist/tools/list-workflow-runs.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +4 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +143 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/manage-agent-billing.d.ts +4 -0
- package/dist/tools/manage-agent-billing.d.ts.map +1 -0
- package/dist/tools/manage-agent-billing.js +764 -0
- package/dist/tools/manage-agent-billing.js.map +1 -0
- package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
- package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
- package/dist/tools/manage-agent-custom-skill.js +537 -0
- package/dist/tools/manage-agent-custom-skill.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +6 -5
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/resume-workflow-run.d.ts +4 -0
- package/dist/tools/resume-workflow-run.d.ts.map +1 -0
- package/dist/tools/resume-workflow-run.js +69 -0
- package/dist/tools/resume-workflow-run.js.map +1 -0
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +39 -3
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/run-workflow.d.ts +6 -0
- package/dist/tools/run-workflow.d.ts.map +1 -0
- package/dist/tools/run-workflow.js +132 -0
- package/dist/tools/run-workflow.js.map +1 -0
- package/dist/tools/save-workflow-from-agent.d.ts +4 -0
- package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
- package/dist/tools/save-workflow-from-agent.js +283 -0
- package/dist/tools/save-workflow-from-agent.js.map +1 -0
- package/dist/tools/schemas.d.ts +62 -12
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +17 -3
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/search-models.js +6 -6
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/send-agent-message.d.ts +4 -0
- package/dist/tools/send-agent-message.d.ts.map +1 -0
- package/dist/tools/send-agent-message.js +156 -0
- package/dist/tools/send-agent-message.js.map +1 -0
- package/dist/tools/set-agent-credentials.d.ts +4 -0
- package/dist/tools/set-agent-credentials.d.ts.map +1 -0
- package/dist/tools/set-agent-credentials.js +529 -0
- package/dist/tools/set-agent-credentials.js.map +1 -0
- package/dist/tools/update-agent.d.ts +4 -0
- package/dist/tools/update-agent.d.ts.map +1 -0
- package/dist/tools/update-agent.js +178 -0
- package/dist/tools/update-agent.js.map +1 -0
- package/dist/tools/update-workflow.d.ts +201 -0
- package/dist/tools/update-workflow.d.ts.map +1 -0
- package/dist/tools/update-workflow.js +168 -0
- package/dist/tools/update-workflow.js.map +1 -0
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +4 -3
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-workflow-run.d.ts +259 -0
- package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
- package/dist/tools/wait-for-workflow-run.js +190 -0
- package/dist/tools/wait-for-workflow-run.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-catalog.d.ts +1256 -0
- package/dist/utils/agent-catalog.d.ts.map +1 -0
- package/dist/utils/agent-catalog.js +388 -0
- package/dist/utils/agent-catalog.js.map +1 -0
- package/dist/utils/agent-config.d.ts +441 -0
- package/dist/utils/agent-config.d.ts.map +1 -0
- package/dist/utils/agent-config.js +1667 -0
- package/dist/utils/agent-config.js.map +1 -0
- package/dist/utils/agent-message.d.ts +115 -0
- package/dist/utils/agent-message.d.ts.map +1 -0
- package/dist/utils/agent-message.js +246 -0
- package/dist/utils/agent-message.js.map +1 -0
- package/dist/utils/agent-targets.d.ts +76 -0
- package/dist/utils/agent-targets.d.ts.map +1 -0
- package/dist/utils/agent-targets.js +408 -0
- package/dist/utils/agent-targets.js.map +1 -0
- package/dist/utils/agent-turns.d.ts +354 -0
- package/dist/utils/agent-turns.d.ts.map +1 -0
- package/dist/utils/agent-turns.js +623 -0
- package/dist/utils/agent-turns.js.map +1 -0
- package/dist/utils/api.d.ts +40 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +111 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/format.d.ts +38 -1
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +162 -13
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/media.d.ts +28 -0
- package/dist/utils/media.d.ts.map +1 -0
- package/dist/utils/media.js +65 -0
- package/dist/utils/media.js.map +1 -0
- package/dist/utils/poll.d.ts +39 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +111 -0
- package/dist/utils/poll.js.map +1 -0
- package/dist/utils/remote-file.js +2 -2
- package/dist/utils/remote-file.js.map +1 -1
- package/dist/utils/structured.d.ts +2 -0
- package/dist/utils/structured.d.ts.map +1 -1
- package/dist/utils/structured.js +9 -6
- package/dist/utils/structured.js.map +1 -1
- package/dist/utils/studio-runs.d.ts +87 -0
- package/dist/utils/studio-runs.d.ts.map +1 -0
- package/dist/utils/studio-runs.js +167 -0
- package/dist/utils/studio-runs.js.map +1 -0
- package/dist/utils/user-agent.d.ts +1140 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +802 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/utils/workflow-agent.d.ts +151 -0
- package/dist/utils/workflow-agent.d.ts.map +1 -0
- package/dist/utils/workflow-agent.js +292 -0
- package/dist/utils/workflow-agent.js.map +1 -0
- package/dist/utils/workflow-artifacts.d.ts +160 -0
- package/dist/utils/workflow-artifacts.d.ts.map +1 -0
- package/dist/utils/workflow-artifacts.js +801 -0
- package/dist/utils/workflow-artifacts.js.map +1 -0
- package/dist/utils/workflow-save.d.ts +123 -0
- package/dist/utils/workflow-save.d.ts.map +1 -0
- package/dist/utils/workflow-save.js +734 -0
- package/dist/utils/workflow-save.js.map +1 -0
- package/dist/utils/workflow.d.ts +559 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +613 -0
- package/dist/utils/workflow.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-agent-billing.js","sourceRoot":"","sources":["../../src/tools/manage-agent-billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { WiroClient } from '../client.js';
|
|
3
|
+
export declare function registerManageAgentCustomSkill(server: McpServer, client: WiroClient): void;
|
|
4
|
+
//# sourceMappingURL=manage-agent-custom-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-agent-custom-skill.d.ts","sourceRoot":"","sources":["../../src/tools/manage-agent-custom-skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkiB/C,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAgF1F"}
|
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { asString, errorResult, errorText, isPlainObject, requireApiSuccess, truncate, } from '../utils/api.js';
|
|
3
|
+
import { DEFAULT_CRON_INTERVAL, agentStatusOf, customSkillEntries, customSkillErrorMessage, customSkillKindOf, humanizeCustomSkillKey, isCustomBuild, looksLikeCron, normalizeCustomSkillKey, readUserAgent, resolveExistingCustomSkillKey, restartNote, templateTaskTextError, toIsoTime, upsertCustomSkillKey, workspaceHint, } from '../utils/agent-config.js';
|
|
4
|
+
import { nextActionSchema } from './schemas.js';
|
|
5
|
+
const MAX_VALUE_ECHO = 1_500;
|
|
6
|
+
const kindSchema = z.enum(['skill', 'scheduled_task']);
|
|
7
|
+
const entrySchema = z.object({
|
|
8
|
+
key: z.string(),
|
|
9
|
+
kind: kindSchema,
|
|
10
|
+
description: z.string(),
|
|
11
|
+
value: z.string(),
|
|
12
|
+
valueTruncated: z.boolean().optional(),
|
|
13
|
+
interval: z.string().nullable(),
|
|
14
|
+
enabled: z.boolean(),
|
|
15
|
+
origin: z.enum(['agent', 'user']),
|
|
16
|
+
});
|
|
17
|
+
const outputSchema = {
|
|
18
|
+
action: z.enum(['upsert', 'rename', 'delete', 'history', 'revert']),
|
|
19
|
+
agentGuid: z.string(),
|
|
20
|
+
key: z.string(),
|
|
21
|
+
kind: kindSchema,
|
|
22
|
+
status: z.enum(['saved', 'renamed', 'deleted', 'reverted', 'listed', 'confirm_needed', 'no_change']),
|
|
23
|
+
created: z.boolean().optional(),
|
|
24
|
+
renamedTo: z.string().optional(),
|
|
25
|
+
revertResult: z.string().optional(),
|
|
26
|
+
entry: entrySchema.nullable().optional(),
|
|
27
|
+
schedule: z.object({
|
|
28
|
+
interval: z.string(),
|
|
29
|
+
timeZone: z.string(),
|
|
30
|
+
note: z.string(),
|
|
31
|
+
}).optional(),
|
|
32
|
+
history: z.array(z.object({
|
|
33
|
+
versionId: z.string(),
|
|
34
|
+
operation: z.string(),
|
|
35
|
+
changedAt: z.string().optional(),
|
|
36
|
+
changedFields: z.array(z.string()),
|
|
37
|
+
value: z.string().nullable(),
|
|
38
|
+
valueTruncated: z.boolean().optional(),
|
|
39
|
+
interval: z.string().nullable(),
|
|
40
|
+
enabled: z.boolean().nullable(),
|
|
41
|
+
})).optional(),
|
|
42
|
+
presetDefault: z.object({
|
|
43
|
+
value: z.string(),
|
|
44
|
+
valueTruncated: z.boolean().optional(),
|
|
45
|
+
interval: z.string().nullable(),
|
|
46
|
+
enabled: z.boolean().nullable(),
|
|
47
|
+
description: z.string(),
|
|
48
|
+
}).nullable().optional(),
|
|
49
|
+
templates: z.array(z.object({
|
|
50
|
+
title: z.string(),
|
|
51
|
+
description: z.string(),
|
|
52
|
+
value: z.string(),
|
|
53
|
+
interval: z.string().optional(),
|
|
54
|
+
})).optional(),
|
|
55
|
+
restart: z.string().optional(),
|
|
56
|
+
warnings: z.array(z.string()),
|
|
57
|
+
message: z.string(),
|
|
58
|
+
nextAction: nextActionSchema.optional(),
|
|
59
|
+
};
|
|
60
|
+
function echo(value) {
|
|
61
|
+
const text = value ?? '';
|
|
62
|
+
return text.length > MAX_VALUE_ECHO
|
|
63
|
+
? { value: truncate(text, MAX_VALUE_ECHO), valueTruncated: true }
|
|
64
|
+
: { value: text };
|
|
65
|
+
}
|
|
66
|
+
/** An entry as returned; full keeps its whole text, which an edit starts from. */
|
|
67
|
+
function toEntry(entry, full = false) {
|
|
68
|
+
return {
|
|
69
|
+
key: entry.key,
|
|
70
|
+
kind: entry.kind,
|
|
71
|
+
description: entry.description,
|
|
72
|
+
...(full ? { value: entry.value } : echo(entry.value)),
|
|
73
|
+
interval: entry.interval,
|
|
74
|
+
enabled: entry.enabled,
|
|
75
|
+
origin: entry.userCreated ? 'user' : 'agent',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Text in a fence longer than any run of backticks inside it, so it shows as is. */
|
|
79
|
+
function textBlock(value) {
|
|
80
|
+
let fence = '```';
|
|
81
|
+
while (value.includes(fence))
|
|
82
|
+
fence += '`';
|
|
83
|
+
return [`${fence}text`, value, fence];
|
|
84
|
+
}
|
|
85
|
+
function kindLabel(kind) {
|
|
86
|
+
return kind === 'scheduled_task' ? 'scheduled task' : 'custom skill';
|
|
87
|
+
}
|
|
88
|
+
function boolOrNull(value) {
|
|
89
|
+
return typeof value === 'boolean' ? value : null;
|
|
90
|
+
}
|
|
91
|
+
function reply(input, key, status, message, extra = {}, textExtra = []) {
|
|
92
|
+
const warnings = Array.isArray(extra.warnings) ? extra.warnings : [];
|
|
93
|
+
const label = kindLabel(customSkillKindOf(key));
|
|
94
|
+
const lines = [
|
|
95
|
+
`## ${label.charAt(0).toUpperCase()}${label.slice(1)} \`${key}\``,
|
|
96
|
+
'',
|
|
97
|
+
message,
|
|
98
|
+
...textExtra,
|
|
99
|
+
...(typeof extra.restart === 'string' ? ['', `**Restart:** ${extra.restart}`] : []),
|
|
100
|
+
...(warnings.length > 0 ? ['', ...warnings.map(warning => `- ${warning}`)] : []),
|
|
101
|
+
];
|
|
102
|
+
return {
|
|
103
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
104
|
+
structuredContent: {
|
|
105
|
+
action: input.action,
|
|
106
|
+
agentGuid: input.agent_guid,
|
|
107
|
+
key,
|
|
108
|
+
kind: customSkillKindOf(key),
|
|
109
|
+
status,
|
|
110
|
+
warnings,
|
|
111
|
+
message,
|
|
112
|
+
...extra,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function scheduleInfo(row, interval, isDefault, entry) {
|
|
117
|
+
const timeZone = asString(row.timezone)?.trim() || 'UTC';
|
|
118
|
+
const parts = [
|
|
119
|
+
`Runs on the cron schedule "${interval}"${isDefault ? ' (the default: Mondays at 10:00)' : ''} in the agent's time zone, ${timeZone}. The time zone can be changed with update_agent.`,
|
|
120
|
+
'Every run spends the agent\'s credits.',
|
|
121
|
+
entry.enabled ? '' : 'It is turned off, so it does not run.',
|
|
122
|
+
entry.requiresCredentials.length > 0 ? `It only runs while ${entry.requiresCredentials.join(', ')} is connected.` : '',
|
|
123
|
+
].filter(Boolean);
|
|
124
|
+
return { interval, timeZone, note: parts.join(' ') };
|
|
125
|
+
}
|
|
126
|
+
async function upsert(client, input, signal) {
|
|
127
|
+
const checked = upsertCustomSkillKey(input.key, input.kind, input.interval);
|
|
128
|
+
if (checked.error || !checked.key)
|
|
129
|
+
return errorResult(new Error(checked.error ?? 'Invalid key.'));
|
|
130
|
+
const interval = input.interval?.trim();
|
|
131
|
+
if (input.interval !== undefined && (!interval || !looksLikeCron(interval))) {
|
|
132
|
+
return errorResult(new Error('interval must be a cron expression with five fields: minute hour day-of-month month day-of-week, for example "0 9 * * 1-5" for weekdays at 09:00.'));
|
|
133
|
+
}
|
|
134
|
+
if (input.value !== undefined && !input.value.trim()) {
|
|
135
|
+
return errorResult(new Error('value cannot be empty: an entry without text never reaches the agent. To stop it, set enabled: false.'));
|
|
136
|
+
}
|
|
137
|
+
const row = await readUserAgent(client, input.agent_guid, signal);
|
|
138
|
+
const entries = customSkillEntries(row);
|
|
139
|
+
// A bare key edits the agent's own entry of that name, whichever kind it is.
|
|
140
|
+
const computed = upsertCustomSkillKey(input.key, input.kind, input.interval, new Set(entries.map(entry => entry.key)));
|
|
141
|
+
if (computed.error || !computed.key)
|
|
142
|
+
return errorResult(new Error(computed.error ?? 'Invalid key.'));
|
|
143
|
+
const key = computed.key;
|
|
144
|
+
const kind = customSkillKindOf(key);
|
|
145
|
+
const existing = entries.find(entry => entry.key === key) ?? null;
|
|
146
|
+
const fromAgent = existing !== null && !existing.userCreated;
|
|
147
|
+
if (!existing && input.value === undefined) {
|
|
148
|
+
return errorResult(new Error(`${key} does not exist yet. A new ${kindLabel(kind)} needs value: ${kind === 'scheduled_task' ? 'the prompt the agent runs on schedule' : 'the instructions the agent follows'}.`));
|
|
149
|
+
}
|
|
150
|
+
if (existing && input.value === undefined && input.interval === undefined
|
|
151
|
+
&& input.enabled === undefined && input.description === undefined) {
|
|
152
|
+
return errorResult(new Error('Nothing to change: pass value, interval, enabled or description.'));
|
|
153
|
+
}
|
|
154
|
+
if (fromAgent && input.description !== undefined && input.description.trim() !== existing.description.trim()) {
|
|
155
|
+
return errorResult(new Error(`${key} comes with the agent, so its description cannot be changed. Its text${kind === 'scheduled_task' ? ', schedule' : ''} and on/off state can.`));
|
|
156
|
+
}
|
|
157
|
+
if (fromAgent && kind === 'scheduled_task' && existing.source === 'skill-bundle' && !isCustomBuild(row)
|
|
158
|
+
&& input.value !== undefined && input.value !== existing.value) {
|
|
159
|
+
return errorResult(new Error(templateTaskTextError(key)));
|
|
160
|
+
}
|
|
161
|
+
const body = { useragentguid: input.agent_guid, skillkey: key };
|
|
162
|
+
if (input.value !== undefined)
|
|
163
|
+
body.value = input.value;
|
|
164
|
+
if (interval !== undefined)
|
|
165
|
+
body.interval = interval;
|
|
166
|
+
if (input.enabled !== undefined)
|
|
167
|
+
body.enabled = input.enabled;
|
|
168
|
+
if (input.description !== undefined)
|
|
169
|
+
body.description = input.description;
|
|
170
|
+
requireApiSuccess(await client.post('/UserAgent/CustomSkillUpsert', body, signal), `Could not save ${key}.`);
|
|
171
|
+
const functional = !existing
|
|
172
|
+
|| (input.value !== undefined && input.value !== existing.value)
|
|
173
|
+
|| (interval !== undefined && interval !== (existing.interval ?? ''))
|
|
174
|
+
|| (input.enabled !== undefined && input.enabled !== existing.enabled);
|
|
175
|
+
const after = {
|
|
176
|
+
key,
|
|
177
|
+
kind,
|
|
178
|
+
description: input.description ?? existing?.description ?? humanizeCustomSkillKey(key),
|
|
179
|
+
value: input.value ?? existing?.value ?? '',
|
|
180
|
+
interval: kind === 'scheduled_task' ? interval ?? existing?.interval ?? DEFAULT_CRON_INTERVAL : null,
|
|
181
|
+
enabled: input.enabled ?? existing?.enabled ?? true,
|
|
182
|
+
source: existing?.source ?? 'user-created',
|
|
183
|
+
userCreated: existing ? existing.userCreated : true,
|
|
184
|
+
requiresCredentials: existing?.requiresCredentials ?? [],
|
|
185
|
+
};
|
|
186
|
+
const warnings = [];
|
|
187
|
+
if (input.key.trim() !== key)
|
|
188
|
+
warnings.push(`Saved under the key ${key}.`);
|
|
189
|
+
const schedule = kind === 'scheduled_task' && after.interval
|
|
190
|
+
? scheduleInfo(row, after.interval, !existing && interval === undefined, after)
|
|
191
|
+
: undefined;
|
|
192
|
+
const restart = functional
|
|
193
|
+
? restartNote(agentStatusOf(row), 'change')
|
|
194
|
+
: 'Its text, schedule and on/off state are unchanged, so the agent does not restart.';
|
|
195
|
+
return reply(input, key, 'saved', existing ? `Updated the ${kindLabel(kind)} ${key}.` : `Created the ${kindLabel(kind)} ${key}.`, {
|
|
196
|
+
created: !existing,
|
|
197
|
+
entry: toEntry(after),
|
|
198
|
+
...(schedule ? { schedule } : {}),
|
|
199
|
+
restart,
|
|
200
|
+
warnings,
|
|
201
|
+
}, schedule ? ['', `**Schedule:** ${schedule.note}`] : []);
|
|
202
|
+
}
|
|
203
|
+
function resolveKey(input, entries) {
|
|
204
|
+
return resolveExistingCustomSkillKey(input.key, new Set(entries.map(entry => entry.key)), input.kind);
|
|
205
|
+
}
|
|
206
|
+
async function rename(client, input, signal) {
|
|
207
|
+
const row = await readUserAgent(client, input.agent_guid, signal);
|
|
208
|
+
const entries = customSkillEntries(row);
|
|
209
|
+
const resolved = resolveKey(input, entries);
|
|
210
|
+
if (resolved.error || !resolved.key)
|
|
211
|
+
return errorResult(new Error(resolved.error ?? 'Invalid key.'));
|
|
212
|
+
const oldKey = resolved.key;
|
|
213
|
+
const existing = entries.find(entry => entry.key === oldKey);
|
|
214
|
+
if (!existing)
|
|
215
|
+
return errorResult(new Error(`This agent has no ${kindLabel(customSkillKindOf(oldKey))} ${oldKey}.`));
|
|
216
|
+
if (!existing.userCreated) {
|
|
217
|
+
return errorResult(new Error(`${oldKey} comes with the agent and cannot be renamed. Turn it off with action upsert and enabled: false, and create a new one instead.`));
|
|
218
|
+
}
|
|
219
|
+
if (!input.new_key?.trim())
|
|
220
|
+
return errorResult(new Error('new_key is required for rename.'));
|
|
221
|
+
const target = input.new_key.trim();
|
|
222
|
+
const targetIsTask = target.startsWith('cs-cron-') || target.startsWith('cron-');
|
|
223
|
+
const targetIsSkill = target.startsWith('cs-') && !target.startsWith('cs-cron-');
|
|
224
|
+
if ((existing.kind === 'skill' && targetIsTask) || (existing.kind === 'scheduled_task' && targetIsSkill)) {
|
|
225
|
+
return errorResult(new Error('A custom skill and a scheduled task cannot be renamed into each other. Delete it and create a new one of the other kind.'));
|
|
226
|
+
}
|
|
227
|
+
const newKey = normalizeCustomSkillKey(target, { scheduled: existing.kind === 'scheduled_task' });
|
|
228
|
+
if (!newKey) {
|
|
229
|
+
return errorResult(new Error(`Invalid new_key "${input.new_key}". Use lowercase letters, digits and single dashes, for example weekly-report.`));
|
|
230
|
+
}
|
|
231
|
+
if (newKey === oldKey)
|
|
232
|
+
return errorResult(new Error(`${oldKey} already has that key.`));
|
|
233
|
+
if (entries.some(entry => entry.key === newKey))
|
|
234
|
+
return errorResult(new Error(`${newKey} already exists on this agent.`));
|
|
235
|
+
const response = requireApiSuccess(await client.post('/UserAgent/CustomSkillRename', {
|
|
236
|
+
useragentguid: input.agent_guid,
|
|
237
|
+
oldskillkey: oldKey,
|
|
238
|
+
newskillkey: newKey,
|
|
239
|
+
...(input.description !== undefined ? { description: input.description } : {}),
|
|
240
|
+
}, signal), `Could not rename ${oldKey}.`);
|
|
241
|
+
const renamedTo = asString(response.newskillkey) ?? newKey;
|
|
242
|
+
return reply(input, oldKey, 'renamed', `Renamed ${oldKey} to ${renamedTo}.`, {
|
|
243
|
+
renamedTo,
|
|
244
|
+
entry: toEntry({ ...existing, key: renamedTo, description: input.description ?? existing.description }),
|
|
245
|
+
restart: restartNote(agentStatusOf(row), 'new name'),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
async function remove(client, input, signal) {
|
|
249
|
+
const row = await readUserAgent(client, input.agent_guid, signal);
|
|
250
|
+
const entries = customSkillEntries(row);
|
|
251
|
+
const resolved = resolveKey(input, entries);
|
|
252
|
+
if (resolved.error || !resolved.key)
|
|
253
|
+
return errorResult(new Error(resolved.error ?? 'Invalid key.'));
|
|
254
|
+
const key = resolved.key;
|
|
255
|
+
const existing = entries.find(entry => entry.key === key);
|
|
256
|
+
// The key is checked against the agent's entries first, so a key that matches none is reported, not sent.
|
|
257
|
+
if (!existing)
|
|
258
|
+
return errorResult(new Error(`This agent has no ${kindLabel(customSkillKindOf(key))} ${key}.`));
|
|
259
|
+
if (!existing.userCreated) {
|
|
260
|
+
const response = reply(input, key, 'no_change', `${key} comes with the agent and cannot be deleted. Turn it off instead.`, {
|
|
261
|
+
entry: toEntry(existing),
|
|
262
|
+
nextAction: {
|
|
263
|
+
tool: 'manage_agent_custom_skill',
|
|
264
|
+
arguments: { action: 'upsert', agent_guid: input.agent_guid, key, enabled: false },
|
|
265
|
+
reason: 'Turn it off instead of deleting it.',
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
return { ...response, isError: true };
|
|
269
|
+
}
|
|
270
|
+
if (!input.confirm) {
|
|
271
|
+
return reply(input, key, 'confirm_needed', `Deleting ${key} removes it together with its whole version history. It cannot be restored. Nothing has changed yet.`, {
|
|
272
|
+
entry: toEntry(existing),
|
|
273
|
+
nextAction: {
|
|
274
|
+
tool: 'manage_agent_custom_skill',
|
|
275
|
+
arguments: { action: 'delete', agent_guid: input.agent_guid, key, confirm: true },
|
|
276
|
+
reason: 'Ask the user to confirm this first.',
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
requireApiSuccess(await client.post('/UserAgent/CustomSkillDelete', {
|
|
281
|
+
useragentguid: input.agent_guid,
|
|
282
|
+
skillkey: key,
|
|
283
|
+
}, signal), `Could not delete ${key}.`);
|
|
284
|
+
return reply(input, key, 'deleted', `Deleted ${key} and its history.`, {
|
|
285
|
+
entry: null,
|
|
286
|
+
restart: restartNote(agentStatusOf(row), 'change'),
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
async function readHistory(client, input, key, signal) {
|
|
290
|
+
const body = requireApiSuccess(await client.post('/UserAgent/CustomSkillHistory', {
|
|
291
|
+
useragentguid: input.agent_guid,
|
|
292
|
+
skillkey: key,
|
|
293
|
+
}, signal), `Could not read the history of ${key}.`);
|
|
294
|
+
return {
|
|
295
|
+
entries: Array.isArray(body.entries) ? body.entries.filter(isPlainObject) : [],
|
|
296
|
+
presetDefault: isPlainObject(body.preset_default) ? body.preset_default : null,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
// History rows store the state before each save; after_* is what that save produced.
|
|
300
|
+
function historyEntry(row) {
|
|
301
|
+
const value = row.after_value === null || row.after_value === undefined ? null : String(row.after_value);
|
|
302
|
+
const changedAt = toIsoTime(row.changedat);
|
|
303
|
+
return {
|
|
304
|
+
versionId: asString(row.guid) ?? '',
|
|
305
|
+
operation: asString(row.operation) ?? '',
|
|
306
|
+
...(changedAt ? { changedAt } : {}),
|
|
307
|
+
changedFields: Array.isArray(row.changed_fields) ? row.changed_fields.map(String) : [],
|
|
308
|
+
...(value === null ? { value: null } : echo(value)),
|
|
309
|
+
interval: asString(row.after_interval) ?? null,
|
|
310
|
+
enabled: boolOrNull(row.after_enabled),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
function presetDefaultOf(preset) {
|
|
314
|
+
if (!preset)
|
|
315
|
+
return null;
|
|
316
|
+
return {
|
|
317
|
+
...echo(asString(preset.value)),
|
|
318
|
+
interval: asString(preset.intervalexpr) ?? null,
|
|
319
|
+
enabled: boolOrNull(preset.enabled),
|
|
320
|
+
description: asString(preset.description) ?? '',
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
async function history(client, input, signal) {
|
|
324
|
+
const row = await readUserAgent(client, input.agent_guid, signal);
|
|
325
|
+
const entries = customSkillEntries(row);
|
|
326
|
+
const resolved = resolveKey(input, entries);
|
|
327
|
+
if (resolved.error || !resolved.key)
|
|
328
|
+
return errorResult(new Error(resolved.error ?? 'Invalid key.'));
|
|
329
|
+
const key = resolved.key;
|
|
330
|
+
const warnings = [];
|
|
331
|
+
const [data, alternatives] = await Promise.all([
|
|
332
|
+
readHistory(client, input, key, signal),
|
|
333
|
+
client.post('/UserAgent/CustomSkillAlternatives', {
|
|
334
|
+
useragentguid: input.agent_guid,
|
|
335
|
+
skillkey: key,
|
|
336
|
+
}, signal).catch((error) => {
|
|
337
|
+
warnings.push(`Templates could not be read: ${errorText(error)}`);
|
|
338
|
+
return null;
|
|
339
|
+
}),
|
|
340
|
+
]);
|
|
341
|
+
const templates = alternatives?.result === true && Array.isArray(alternatives.alternatives)
|
|
342
|
+
? alternatives.alternatives.filter(isPlainObject).map(template => ({
|
|
343
|
+
title: asString(template.title) ?? '',
|
|
344
|
+
description: asString(template.description) ?? '',
|
|
345
|
+
value: truncate(asString(template.value) ?? '', 4_000),
|
|
346
|
+
...(asString(template.intervalexpr) ? { interval: asString(template.intervalexpr) } : {}),
|
|
347
|
+
}))
|
|
348
|
+
: [];
|
|
349
|
+
const versions = data.entries.slice(0, input.limit).map(historyEntry);
|
|
350
|
+
const current = entries.find(entry => entry.key === key) ?? null;
|
|
351
|
+
const presetDefault = presetDefaultOf(data.presetDefault);
|
|
352
|
+
const message = [
|
|
353
|
+
current ? `Current: ${current.enabled ? 'on' : 'off'}${current.interval ? `, schedule "${current.interval}"` : ''}.` : 'This key has no live entry on the agent.',
|
|
354
|
+
`${data.entries.length} saved version${data.entries.length === 1 ? '' : 's'}${versions.length < data.entries.length ? `, showing the newest ${versions.length}` : ''}.`,
|
|
355
|
+
presetDefault ? 'It has a template default (revert with source preset).' : 'It has no template default.',
|
|
356
|
+
templates.length > 0 ? `${templates.length} ready-made template${templates.length === 1 ? '' : 's'} can be used as its text.` : '',
|
|
357
|
+
].filter(Boolean).join(' ');
|
|
358
|
+
return reply(input, key, 'listed', message, {
|
|
359
|
+
entry: current ? toEntry(current, true) : null,
|
|
360
|
+
history: versions,
|
|
361
|
+
presetDefault,
|
|
362
|
+
templates,
|
|
363
|
+
warnings,
|
|
364
|
+
}, [
|
|
365
|
+
...(current?.value ? ['', '**Current text:**', '', ...textBlock(current.value)] : []),
|
|
366
|
+
'',
|
|
367
|
+
...versions.map(version => `- \`${version.versionId}\` ${version.changedAt ?? ''} ${version.operation}${version.changedFields.length > 0 ? ` (${version.changedFields.join(', ')})` : ''}`),
|
|
368
|
+
...(templates.length > 0 ? ['', '**Templates:**', ...templates.map(template => `- ${template.title}${template.interval ? ` (schedule "${template.interval}")` : ''}: ${template.description}`)] : []),
|
|
369
|
+
]);
|
|
370
|
+
}
|
|
371
|
+
async function revert(client, input, signal) {
|
|
372
|
+
if (!input.source)
|
|
373
|
+
return errorResult(new Error('source is required for revert: preset (the template default) or history (an earlier version).'));
|
|
374
|
+
if (input.source === 'history' && !input.version_id) {
|
|
375
|
+
return errorResult(new Error('version_id is required with source history. List the versions with action history.'));
|
|
376
|
+
}
|
|
377
|
+
const row = await readUserAgent(client, input.agent_guid, signal);
|
|
378
|
+
const entries = customSkillEntries(row);
|
|
379
|
+
const resolved = resolveKey(input, entries);
|
|
380
|
+
if (resolved.error || !resolved.key)
|
|
381
|
+
return errorResult(new Error(resolved.error ?? 'Invalid key.'));
|
|
382
|
+
const key = resolved.key;
|
|
383
|
+
const current = entries.find(entry => entry.key === key) ?? null;
|
|
384
|
+
if (!input.confirm) {
|
|
385
|
+
const data = await readHistory(client, input, key, signal);
|
|
386
|
+
const warnings = [];
|
|
387
|
+
let message;
|
|
388
|
+
if (input.source === 'preset') {
|
|
389
|
+
message = data.presetDefault
|
|
390
|
+
? `Reverting resets ${key} to the template default: its text, schedule, on/off state and description. Your edits are replaced.`
|
|
391
|
+
: `${key} has no template default, so reverting to the template deletes it from the agent.`;
|
|
392
|
+
if (!data.presetDefault)
|
|
393
|
+
warnings.push('This removes the entry. Its history is kept, so a version can be restored later with source history.');
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
const version = data.entries.find(entry => asString(entry.guid) === input.version_id);
|
|
397
|
+
if (!version)
|
|
398
|
+
return errorResult(new Error(`Version ${input.version_id} was not found for ${key}. List the versions with action history.`));
|
|
399
|
+
const restored = historyEntry(version);
|
|
400
|
+
message = `Reverting restores the version of ${key} saved${restored.changedAt ? ` at ${restored.changedAt}` : ''}: its text${restored.interval ? `, schedule "${restored.interval}"` : ''} and on/off state. The current text is replaced.`;
|
|
401
|
+
}
|
|
402
|
+
return reply(input, key, 'confirm_needed', `${message} Nothing has changed yet.`, {
|
|
403
|
+
entry: current ? toEntry(current) : null,
|
|
404
|
+
presetDefault: presetDefaultOf(data.presetDefault),
|
|
405
|
+
warnings,
|
|
406
|
+
nextAction: {
|
|
407
|
+
tool: 'manage_agent_custom_skill',
|
|
408
|
+
arguments: {
|
|
409
|
+
action: 'revert',
|
|
410
|
+
agent_guid: input.agent_guid,
|
|
411
|
+
key,
|
|
412
|
+
source: input.source,
|
|
413
|
+
...(input.version_id ? { version_id: input.version_id } : {}),
|
|
414
|
+
confirm: true,
|
|
415
|
+
},
|
|
416
|
+
reason: 'Ask the user to confirm this first.',
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
const response = requireApiSuccess(await client.post('/UserAgent/CustomSkillRevert', {
|
|
421
|
+
useragentguid: input.agent_guid,
|
|
422
|
+
skillkey: key,
|
|
423
|
+
source: input.source,
|
|
424
|
+
...(input.source === 'history' ? { versionguid: input.version_id } : {}),
|
|
425
|
+
}, signal), `Could not revert ${key}.`);
|
|
426
|
+
const outcome = asString(response.action) ?? '';
|
|
427
|
+
const kind = customSkillKindOf(key);
|
|
428
|
+
const currentValue = response.current_value === null || response.current_value === undefined
|
|
429
|
+
? null
|
|
430
|
+
: String(response.current_value);
|
|
431
|
+
const entry = currentValue === null
|
|
432
|
+
? null
|
|
433
|
+
: toEntry({
|
|
434
|
+
key,
|
|
435
|
+
kind,
|
|
436
|
+
description: current?.description ?? '',
|
|
437
|
+
value: currentValue,
|
|
438
|
+
interval: asString(response.current_interval) ?? null,
|
|
439
|
+
enabled: response.current_enabled !== false,
|
|
440
|
+
source: current?.source ?? '',
|
|
441
|
+
userCreated: current?.userCreated ?? false,
|
|
442
|
+
requiresCredentials: current?.requiresCredentials ?? [],
|
|
443
|
+
});
|
|
444
|
+
const messages = {
|
|
445
|
+
'no-op': `${key} already matches that version; nothing changed.`,
|
|
446
|
+
reset: `${key} is back to the template default.`,
|
|
447
|
+
deleted: `${key} had no template default, so it was removed from the agent.`,
|
|
448
|
+
reverted: `${key} is restored to the chosen version.`,
|
|
449
|
+
're-inserted': `${key} is restored to the chosen version and is back on the agent.`,
|
|
450
|
+
};
|
|
451
|
+
return reply(input, key, outcome === 'no-op' ? 'no_change' : outcome === 'deleted' ? 'deleted' : 'reverted', messages[outcome] ?? `${key} was reverted.`, {
|
|
452
|
+
revertResult: outcome,
|
|
453
|
+
entry,
|
|
454
|
+
restart: outcome === 'no-op'
|
|
455
|
+
? 'Nothing changed, so the agent does not restart.'
|
|
456
|
+
: restartNote(agentStatusOf(row), 'change'),
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
export function registerManageAgentCustomSkill(server, client) {
|
|
460
|
+
server.registerTool('manage_agent_custom_skill', {
|
|
461
|
+
title: 'Manage custom skills and scheduled tasks',
|
|
462
|
+
description: 'Create and manage a deployed agent\'s own skills. A custom skill (key cs-...) is '
|
|
463
|
+
+ 'standing instructions the agent follows, for example a tone or an approval policy. A '
|
|
464
|
+
+ 'scheduled task (key cs-cron-...) is a prompt the agent runs by itself on a cron schedule, '
|
|
465
|
+
+ 'for example a weekly report. Actions: upsert creates or updates one (a bare key such as '
|
|
466
|
+
+ '"weekly-report" updates the agent\'s own entry of that name when there is one, and otherwise '
|
|
467
|
+
+ 'gets its prefix from kind or interval; the result gives the final key); rename '
|
|
468
|
+
+ 'changes the key of one you created; delete removes one you created together with its '
|
|
469
|
+
+ 'history (needs confirm: true); history shows the current text in full and lists earlier '
|
|
470
|
+
+ 'versions, the template default and ready-made templates (key "cs-my-custom-strategy" or '
|
|
471
|
+
+ '"cs-cron-my-scheduled-task" gives starter templates); revert restores the template default '
|
|
472
|
+
+ 'or an earlier version (needs confirm: true). Schedules use the agent\'s time zone, which is '
|
|
473
|
+
+ 'UTC unless it was set with update_agent; a new task without interval runs Mondays at 10:00. '
|
|
474
|
+
+ 'Every scheduled run spends the agent\'s credits, so confirm the schedule with the user. '
|
|
475
|
+
+ 'Entries from the agent\'s template, cs-approval-policy and the scheduled tasks its skills '
|
|
476
|
+
+ 'brought cannot be deleted or renamed: set enabled false instead. The agent '
|
|
477
|
+
+ 'restarts when the text, schedule or on/off state changes. get_my_agent lists the '
|
|
478
|
+
+ 'current entries. Registry skills are switched with apply_agent_skills instead. The agents '
|
|
479
|
+
+ 'playbook (get_playbook) covers custom skills and schedules.',
|
|
480
|
+
inputSchema: {
|
|
481
|
+
action: z.enum(['upsert', 'rename', 'delete', 'history', 'revert'])
|
|
482
|
+
.describe('What to do.'),
|
|
483
|
+
agent_guid: z.string().min(1).describe('The deployed agent\'s guid, from list_my_agents.'),
|
|
484
|
+
key: z.string().min(1).max(80)
|
|
485
|
+
.describe('The entry\'s key: a full key (cs-... or cs-cron-...) or a bare slug such as "weekly-report" (lowercase letters, digits, single dashes). A bare slug names the agent\'s existing entry of that name, whichever kind it is.'),
|
|
486
|
+
kind: kindSchema.optional()
|
|
487
|
+
.describe('skill (instructions, cs-) or scheduled_task (runs on a schedule, cs-cron-). Decides the prefix of a bare key; without it a new bare key becomes a custom skill unless interval is given.'),
|
|
488
|
+
value: z.string().max(100_000).optional()
|
|
489
|
+
.describe('upsert: the instructions (custom skill) or the prompt to run (scheduled task). Required when creating.'),
|
|
490
|
+
interval: z.string().max(120).optional()
|
|
491
|
+
.describe('upsert, scheduled tasks only: a 5-field cron expression such as "0 9 * * 1-5" (weekdays 09:00). Omit to keep the current schedule, or Mondays 10:00 for a new task.'),
|
|
492
|
+
enabled: z.boolean().optional()
|
|
493
|
+
.describe('upsert: true to turn it on, false to turn it off. New entries start on.'),
|
|
494
|
+
description: z.string().max(1_000).optional()
|
|
495
|
+
.describe('upsert or rename: a short summary the agent uses to pick the skill. Fixed for entries that come with the agent.'),
|
|
496
|
+
new_key: z.string().max(80).optional()
|
|
497
|
+
.describe('rename: the new key, of the same kind.'),
|
|
498
|
+
source: z.enum(['preset', 'history']).optional()
|
|
499
|
+
.describe('revert: preset (the template default) or history (an earlier version).'),
|
|
500
|
+
version_id: z.string().optional()
|
|
501
|
+
.describe('revert with source history: a versionId from action history.'),
|
|
502
|
+
limit: z.number().int().min(1).max(500).default(20)
|
|
503
|
+
.describe('history: how many versions to return, newest first (default 20).'),
|
|
504
|
+
confirm: z.boolean().default(false)
|
|
505
|
+
.describe('delete and revert: true to do it after the user agreed. Without it they only describe what would happen.'),
|
|
506
|
+
},
|
|
507
|
+
outputSchema,
|
|
508
|
+
annotations: {
|
|
509
|
+
readOnlyHint: false,
|
|
510
|
+
destructiveHint: true,
|
|
511
|
+
idempotentHint: false,
|
|
512
|
+
openWorldHint: true,
|
|
513
|
+
},
|
|
514
|
+
}, async (args, extra) => {
|
|
515
|
+
const input = args;
|
|
516
|
+
try {
|
|
517
|
+
switch (input.action) {
|
|
518
|
+
case 'upsert':
|
|
519
|
+
return await upsert(client, input, extra.signal);
|
|
520
|
+
case 'rename':
|
|
521
|
+
return await rename(client, input, extra.signal);
|
|
522
|
+
case 'delete':
|
|
523
|
+
return await remove(client, input, extra.signal);
|
|
524
|
+
case 'history':
|
|
525
|
+
return await history(client, input, extra.signal);
|
|
526
|
+
default:
|
|
527
|
+
return await revert(client, input, extra.signal);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
catch (error) {
|
|
531
|
+
const message = customSkillErrorMessage(errorText(error));
|
|
532
|
+
const hint = workspaceHint(message);
|
|
533
|
+
return errorResult(new Error(hint ? `${message} ${hint}` : message));
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
//# sourceMappingURL=manage-agent-custom-skill.js.map
|