zilmate 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +5 -0
- package/README.md +82 -4
- package/dist/agents/automation-planner.agent.d.ts +103 -0
- package/dist/agents/automation-planner.agent.d.ts.map +1 -0
- package/dist/agents/automation-planner.agent.js +28 -0
- package/dist/agents/automation-planner.agent.js.map +1 -0
- package/dist/agents/chat.agent.d.ts +8 -0
- package/dist/agents/chat.agent.d.ts.map +1 -1
- package/dist/agents/chat.agent.js +5 -2
- package/dist/agents/chat.agent.js.map +1 -1
- package/dist/agents/developer-helper.agent.d.ts +94 -0
- package/dist/agents/developer-helper.agent.d.ts.map +1 -0
- package/dist/agents/developer-helper.agent.js +34 -0
- package/dist/agents/developer-helper.agent.js.map +1 -0
- package/dist/agents/docs-research.agent.d.ts +8 -0
- package/dist/agents/docs-research.agent.d.ts.map +1 -1
- package/dist/agents/docs-research.agent.js +5 -2
- package/dist/agents/docs-research.agent.js.map +1 -1
- package/dist/agents/image.agent.d.ts.map +1 -1
- package/dist/agents/image.agent.js +2 -1
- package/dist/agents/image.agent.js.map +1 -1
- package/dist/agents/manager.d.ts +36 -0
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +39 -1
- package/dist/agents/manager.js.map +1 -1
- package/dist/agents/personal-assistant.agent.d.ts +30 -0
- package/dist/agents/personal-assistant.agent.d.ts.map +1 -0
- package/dist/agents/personal-assistant.agent.js +25 -0
- package/dist/agents/personal-assistant.agent.js.map +1 -0
- package/dist/agents/post.agent.d.ts.map +1 -1
- package/dist/agents/post.agent.js +2 -1
- package/dist/agents/post.agent.js.map +1 -1
- package/dist/agents/quick-help.agent.d.ts +8 -0
- package/dist/agents/quick-help.agent.d.ts.map +1 -1
- package/dist/agents/quick-help.agent.js +5 -2
- package/dist/agents/quick-help.agent.js.map +1 -1
- package/dist/cli/apps.d.ts +16 -0
- package/dist/cli/apps.d.ts.map +1 -0
- package/dist/cli/apps.js +19 -0
- package/dist/cli/apps.js.map +1 -0
- package/dist/cli/confirm.d.ts.map +1 -1
- package/dist/cli/confirm.js +20 -2
- package/dist/cli/confirm.js.map +1 -1
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +24 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/format.d.ts +5 -0
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +96 -0
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/health.d.ts +3 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +23 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/interactive.js +2 -2
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/jobs.d.ts +19 -0
- package/dist/cli/jobs.d.ts.map +1 -0
- package/dist/cli/jobs.js +68 -0
- package/dist/cli/jobs.js.map +1 -0
- package/dist/cli/memory.d.ts +3 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +14 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/menu.d.ts +2 -0
- package/dist/cli/menu.d.ts.map +1 -0
- package/dist/cli/menu.js +75 -0
- package/dist/cli/menu.js.map +1 -0
- package/dist/cli/setup.d.ts +5 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +88 -3
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/triggers.d.ts.map +1 -1
- package/dist/cli/triggers.js +11 -0
- package/dist/cli/triggers.js.map +1 -1
- package/dist/cli/welcome.d.ts +2 -0
- package/dist/cli/welcome.d.ts.map +1 -0
- package/dist/cli/welcome.js +24 -0
- package/dist/cli/welcome.js.map +1 -0
- package/dist/config/env.d.ts +6 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +8 -0
- package/dist/config/env.js.map +1 -1
- package/dist/index.js +180 -18
- package/dist/index.js.map +1 -1
- package/dist/jobs/qstash.d.ts +3 -0
- package/dist/jobs/qstash.d.ts.map +1 -0
- package/dist/jobs/qstash.js +37 -0
- package/dist/jobs/qstash.js.map +1 -0
- package/dist/jobs/runner.d.ts +14 -0
- package/dist/jobs/runner.d.ts.map +1 -0
- package/dist/jobs/runner.js +101 -0
- package/dist/jobs/runner.js.map +1 -0
- package/dist/jobs/schedule.d.ts +5 -0
- package/dist/jobs/schedule.d.ts.map +1 -0
- package/dist/jobs/schedule.js +72 -0
- package/dist/jobs/schedule.js.map +1 -0
- package/dist/jobs/store.d.ts +9 -0
- package/dist/jobs/store.d.ts.map +1 -0
- package/dist/jobs/store.js +133 -0
- package/dist/jobs/store.js.map +1 -0
- package/dist/jobs/types.d.ts +54 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +2 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs/workflows.d.ts +4 -0
- package/dist/jobs/workflows.d.ts.map +1 -0
- package/dist/jobs/workflows.js +50 -0
- package/dist/jobs/workflows.js.map +1 -0
- package/dist/safety/limits.js +2 -2
- package/dist/safety/limits.js.map +1 -1
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/composio.tool.d.ts.map +1 -1
- package/dist/tools/composio.tool.js +21 -5
- package/dist/tools/composio.tool.js.map +1 -1
- package/dist/tools/jobs.tool.d.ts +22 -0
- package/dist/tools/jobs.tool.d.ts.map +1 -0
- package/dist/tools/jobs.tool.js +105 -0
- package/dist/tools/jobs.tool.js.map +1 -0
- package/dist/tools/time.tool.d.ts +11 -0
- package/dist/tools/time.tool.d.ts.map +1 -0
- package/dist/tools/time.tool.js +35 -0
- package/dist/tools/time.tool.js.map +1 -0
- package/package.json +4 -2
package/dist/agents/manager.js
CHANGED
|
@@ -7,6 +7,9 @@ import { createChatAgent } from './chat.agent.js';
|
|
|
7
7
|
import { createPostAgent } from './post.agent.js';
|
|
8
8
|
import { createImageAgent } from './image.agent.js';
|
|
9
9
|
import { createDocsResearchAgent } from './docs-research.agent.js';
|
|
10
|
+
import { createAutomationPlannerAgent } from './automation-planner.agent.js';
|
|
11
|
+
import { createPersonalAssistantAgent } from './personal-assistant.agent.js';
|
|
12
|
+
import { createDeveloperHelperAgent } from './developer-helper.agent.js';
|
|
10
13
|
import { checkReadOnlyIntent } from '../safety/approvals.js';
|
|
11
14
|
import { limits } from '../safety/limits.js';
|
|
12
15
|
import { emitProgress, withProgressListener } from '../runtime/progress.js';
|
|
@@ -16,6 +19,8 @@ import { ziloDocsTools } from '../tools/zilo-docs.tool.js';
|
|
|
16
19
|
import { createComposioTools } from '../tools/composio.tool.js';
|
|
17
20
|
import { memoryTools } from '../tools/memory.tool.js';
|
|
18
21
|
import { triggerTools } from '../tools/triggers.tool.js';
|
|
22
|
+
import { jobTools } from '../tools/jobs.tool.js';
|
|
23
|
+
import { timeTools } from '../tools/time.tool.js';
|
|
19
24
|
function agentInput(prompt, abortSignal) {
|
|
20
25
|
return abortSignal ? { prompt, abortSignal } : { prompt };
|
|
21
26
|
}
|
|
@@ -26,6 +31,9 @@ function describeTool(name) {
|
|
|
26
31
|
post: 'Using post-writing subagent',
|
|
27
32
|
image: 'Using image generation subagent',
|
|
28
33
|
research: 'Using research subagent',
|
|
34
|
+
automationPlanner: 'Using automation planner subagent',
|
|
35
|
+
personalAssistant: 'Using personal assistant subagent',
|
|
36
|
+
developerHelper: 'Using developer helper subagent',
|
|
29
37
|
readScratchpad: 'Reading scratchpad',
|
|
30
38
|
appendScratchpad: 'Updating scratchpad',
|
|
31
39
|
rememberMemory: 'Saving memory',
|
|
@@ -39,6 +47,12 @@ function describeTool(name) {
|
|
|
39
47
|
showTriggerType: 'Loading trigger schema',
|
|
40
48
|
listTriggers: 'Listing triggers',
|
|
41
49
|
createTrigger: 'Creating trigger',
|
|
50
|
+
createJob: 'Creating job',
|
|
51
|
+
listJobs: 'Listing jobs',
|
|
52
|
+
showJob: 'Loading job',
|
|
53
|
+
listJobLogs: 'Loading job logs',
|
|
54
|
+
cancelJob: 'Cancelling job',
|
|
55
|
+
getCurrentTime: 'Checking time',
|
|
42
56
|
COMPOSIO_SEARCH_TOOLS: 'Searching Composio tools',
|
|
43
57
|
COMPOSIO_GET_TOOL_SCHEMAS: 'Loading Composio tool schemas',
|
|
44
58
|
COMPOSIO_MANAGE_CONNECTIONS: 'Managing Composio connection',
|
|
@@ -73,6 +87,9 @@ export async function createManagerAgent(runId = randomUUID(), options = {}) {
|
|
|
73
87
|
const post = createPostAgent();
|
|
74
88
|
const image = createImageAgent();
|
|
75
89
|
const research = createDocsResearchAgent(runId);
|
|
90
|
+
const automationPlanner = createAutomationPlannerAgent();
|
|
91
|
+
const personalAssistant = createPersonalAssistantAgent();
|
|
92
|
+
const developerHelper = createDeveloperHelperAgent(runId);
|
|
76
93
|
const scratchpadTools = createScratchpadTools(runId);
|
|
77
94
|
const composioTools = await createComposioTools(options.sessionId || 'default');
|
|
78
95
|
return new ToolLoopAgent({
|
|
@@ -84,8 +101,15 @@ export async function createManagerAgent(runId = randomUUID(), options = {}) {
|
|
|
84
101
|
'For Composio, prefer this flow: use COMPOSIO_SEARCH_TOOLS to find relevant external app tools, COMPOSIO_GET_TOOL_SCHEMAS to inspect required arguments, COMPOSIO_MANAGE_CONNECTIONS to create or show app connection links, and COMPOSIO_MULTI_EXECUTE_TOOL to execute selected tools after arguments are clear.',
|
|
85
102
|
'When COMPOSIO_MANAGE_CONNECTIONS returns an authorization or connect URL, print that URL plainly and tell the user to open it to connect their account before retrying the app action.',
|
|
86
103
|
'For app events, use trigger tools: listTriggerTypes to discover current trigger slugs, showTriggerType to inspect required config, listTriggers to inspect existing trigger instances, and createTrigger only after config is clear. Prefer dryRun first, then ask for confirmation before creating a real trigger.',
|
|
104
|
+
'Use job tools when the user wants ZilMate to keep working after chat, schedule a task, create a report later, monitor something, follow up, inspect job status, read job logs, or cancel background work.',
|
|
105
|
+
'Explain that local jobs require `zilmate jobs worker` to be running, and hosted laptop-closed schedules require QStash plus a public job webhook.',
|
|
106
|
+
'Use getCurrentTime whenever the user asks about the current date, current time, today, tomorrow, yesterday, or any schedule-relative wording. Do not guess dates or times.',
|
|
87
107
|
'When returning tool slugs, trigger slugs, ids, env vars, or command names, wrap them in backticks so exact underscores and casing are preserved.',
|
|
88
|
-
'Use
|
|
108
|
+
'Use specialized subagents for focused chat, quick help, post copy, image assets, research, automation planning, personal-assistant planning, and developer integration help.',
|
|
109
|
+
'Use automationPlanner for background jobs, schedules, Composio trigger workflows, QStash, webhook planning, monitoring, and follow-up automations.',
|
|
110
|
+
'Use personalAssistant for daily planning, reminders, briefings, prioritization, follow-ups, summaries, and memory-aware personal organization.',
|
|
111
|
+
'Use developerHelper for SDK usage, Next.js routes, install issues, package publishing, Cloudflare tunnels, webhooks, QStash, Composio setup, and technical troubleshooting.',
|
|
112
|
+
'Use research for current web or documentation questions that need sources.',
|
|
89
113
|
'Use long-term memory tools for stable preferences, durable project facts, and recurring context. Do not save secrets, API keys, tokens, passwords, or sensitive personal data to memory.',
|
|
90
114
|
'Keep parent context small and use scratchpad tools for compact notes during multi-source or multi-step tasks.',
|
|
91
115
|
'Do not build OAuth flows yourself. Do not claim live external changes happened unless the tool result confirms them.',
|
|
@@ -111,8 +135,22 @@ export async function createManagerAgent(runId = randomUUID(), options = {}) {
|
|
|
111
135
|
const result = await research.generate(agentInput(prompt, abortSignal));
|
|
112
136
|
return result.text;
|
|
113
137
|
}),
|
|
138
|
+
automationPlanner: subagentTool('automationPlanner', 'Plan background jobs, schedules, trigger workflows, monitoring, follow-ups, QStash, and webhook automations.', async (prompt, abortSignal) => {
|
|
139
|
+
const result = await automationPlanner.generate(agentInput(prompt, abortSignal));
|
|
140
|
+
return result.text;
|
|
141
|
+
}),
|
|
142
|
+
personalAssistant: subagentTool('personalAssistant', 'Daily planning, reminders, briefings, prioritization, follow-ups, summaries, and memory-aware assistant work.', async (prompt, abortSignal) => {
|
|
143
|
+
const result = await personalAssistant.generate(agentInput(prompt, abortSignal));
|
|
144
|
+
return result.text;
|
|
145
|
+
}),
|
|
146
|
+
developerHelper: subagentTool('developerHelper', 'Developer-focused help for ZilMate CLI, SDK, Next.js integration, publishing, QStash, Cloudflare tunnels, webhooks, and debugging.', async (prompt, abortSignal) => {
|
|
147
|
+
const result = await developerHelper.generate(agentInput(prompt, abortSignal));
|
|
148
|
+
return result.text;
|
|
149
|
+
}),
|
|
114
150
|
...ziloDocsTools,
|
|
115
151
|
...memoryTools,
|
|
152
|
+
...timeTools,
|
|
153
|
+
...jobTools,
|
|
116
154
|
...triggerTools,
|
|
117
155
|
...scratchpadTools,
|
|
118
156
|
...composioTools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAsB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAA4B,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ToolLoopAgent } from 'ai';
|
|
2
|
+
export declare function createPersonalAssistantAgent(): ToolLoopAgent<never, {
|
|
3
|
+
appKnowledge: import("ai").Tool<{
|
|
4
|
+
key: "agent-docs" | "readme";
|
|
5
|
+
}, string>;
|
|
6
|
+
rememberMemory: import("ai").Tool<{
|
|
7
|
+
text: string;
|
|
8
|
+
tags?: string[] | undefined;
|
|
9
|
+
}, import("../server.js").LongTermMemory>;
|
|
10
|
+
recallMemory: import("ai").Tool<{
|
|
11
|
+
query?: string | undefined;
|
|
12
|
+
limit?: number | undefined;
|
|
13
|
+
}, import("../server.js").LongTermMemory[]>;
|
|
14
|
+
listMemory: import("ai").Tool<Record<string, never>, import("../server.js").LongTermMemory[]>;
|
|
15
|
+
forgetMemory: import("ai").Tool<{
|
|
16
|
+
id: string;
|
|
17
|
+
}, {
|
|
18
|
+
id: string;
|
|
19
|
+
deleted: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
getCurrentTime: import("ai").Tool<{
|
|
22
|
+
timeZone?: string | undefined;
|
|
23
|
+
}, {
|
|
24
|
+
iso: string;
|
|
25
|
+
unixMs: number;
|
|
26
|
+
timeZone: string;
|
|
27
|
+
formatted: string;
|
|
28
|
+
}>;
|
|
29
|
+
}, never>;
|
|
30
|
+
//# sourceMappingURL=personal-assistant.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-assistant.agent.d.ts","sourceRoot":"","sources":["../../src/agents/personal-assistant.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAOhD,wBAAgB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiB3C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { stepCountIs, ToolLoopAgent } from 'ai';
|
|
2
|
+
import { models } from '../config/models.js';
|
|
3
|
+
import { appKnowledgeTool } from '../tools/app-knowledge.tool.js';
|
|
4
|
+
import { memoryTools } from '../tools/memory.tool.js';
|
|
5
|
+
import { timeTools } from '../tools/time.tool.js';
|
|
6
|
+
import { limits } from '../safety/limits.js';
|
|
7
|
+
export function createPersonalAssistantAgent() {
|
|
8
|
+
return new ToolLoopAgent({
|
|
9
|
+
model: models.chat,
|
|
10
|
+
instructions: [
|
|
11
|
+
'You are ZilMate Personal Assistant. Help with daily planning, reminders, briefings, follow-ups, prioritization, summaries, and practical life/work organization.',
|
|
12
|
+
'Use time tools whenever the user uses today, tomorrow, later, this week, current time, or schedule-relative wording.',
|
|
13
|
+
'Use memory tools for stable preferences and durable recurring context only. Do not save secrets, tokens, passwords, or sensitive personal data.',
|
|
14
|
+
'When the user wants recurring work, monitoring, reports, or reminders, explain that the manager can create background jobs and schedules.',
|
|
15
|
+
'Keep outputs warm, concise, and action-oriented.',
|
|
16
|
+
].join(' '),
|
|
17
|
+
tools: {
|
|
18
|
+
...timeTools,
|
|
19
|
+
...memoryTools,
|
|
20
|
+
appKnowledge: appKnowledgeTool,
|
|
21
|
+
},
|
|
22
|
+
stopWhen: stepCountIs(limits.subagentSteps),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=personal-assistant.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-assistant.agent.js","sourceRoot":"","sources":["../../src/agents/personal-assistant.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,aAAa,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC,IAAI;QAClB,YAAY,EAAE;YACZ,kKAAkK;YAClK,sHAAsH;YACtH,iJAAiJ;YACjJ,2IAA2I;YAC3I,kDAAkD;SACnD,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,KAAK,EAAE;YACL,GAAG,SAAS;YACZ,GAAG,WAAW;YACd,YAAY,EAAE,gBAAgB;SAC/B;QACD,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.agent.d.ts","sourceRoot":"","sources":["../../src/agents/post.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"post.agent.d.ts","sourceRoot":"","sources":["../../src/agents/post.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAKhD,wBAAgB,eAAe;;;;UAO9B"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { stepCountIs, ToolLoopAgent } from 'ai';
|
|
2
2
|
import { models } from '../config/models.js';
|
|
3
3
|
import { postGenerateTool } from '../tools/post-generate.tool.js';
|
|
4
|
+
import { limits } from '../safety/limits.js';
|
|
4
5
|
export function createPostAgent() {
|
|
5
6
|
return new ToolLoopAgent({
|
|
6
7
|
model: models.post,
|
|
7
8
|
instructions: 'You create concise, useful ZiloShift social posts, WhatsApp statuses, campaign copy, and launch messages. Keep language clear and Ghana-friendly when requested.',
|
|
8
9
|
tools: { generatePost: postGenerateTool },
|
|
9
|
-
stopWhen: stepCountIs(
|
|
10
|
+
stopWhen: stepCountIs(limits.subagentSteps),
|
|
10
11
|
});
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=post.agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.agent.js","sourceRoot":"","sources":["../../src/agents/post.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"post.agent.js","sourceRoot":"","sources":["../../src/agents/post.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,aAAa,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC,IAAI;QAClB,YAAY,EAAE,kKAAkK;QAChL,KAAK,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE;QACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,6 +3,14 @@ export declare function createQuickHelpAgent(): ToolLoopAgent<never, {
|
|
|
3
3
|
appKnowledge: import("ai").Tool<{
|
|
4
4
|
key: "agent-docs" | "readme";
|
|
5
5
|
}, string>;
|
|
6
|
+
getCurrentTime: import("ai").Tool<{
|
|
7
|
+
timeZone?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
iso: string;
|
|
10
|
+
unixMs: number;
|
|
11
|
+
timeZone: string;
|
|
12
|
+
formatted: string;
|
|
13
|
+
}>;
|
|
6
14
|
listZiloDocs: import("ai").Tool<Record<string, never>, {
|
|
7
15
|
key: string;
|
|
8
16
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-help.agent.d.ts","sourceRoot":"","sources":["../../src/agents/quick-help.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"quick-help.agent.d.ts","sourceRoot":"","sources":["../../src/agents/quick-help.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAOhD,wBAAgB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAWnC"}
|
|
@@ -2,15 +2,18 @@ import { stepCountIs, ToolLoopAgent } from 'ai';
|
|
|
2
2
|
import { models } from '../config/models.js';
|
|
3
3
|
import { appKnowledgeTool } from '../tools/app-knowledge.tool.js';
|
|
4
4
|
import { ziloDocsTools } from '../tools/zilo-docs.tool.js';
|
|
5
|
+
import { timeTools } from '../tools/time.tool.js';
|
|
6
|
+
import { limits } from '../safety/limits.js';
|
|
5
7
|
export function createQuickHelpAgent() {
|
|
6
8
|
return new ToolLoopAgent({
|
|
7
9
|
model: models.help,
|
|
8
|
-
instructions: 'You are ZilMate Quick Help. Give short, practical troubleshooting answers for ZiloShift operators. Prefer local ZiloShift docs before app knowledge. Ask for missing details only when required. If the issue involves safety, money, identity, fraud, legal risk, or a platform bug, give clear next steps and say it should be escalated to the ZiloShift team.',
|
|
10
|
+
instructions: 'You are ZilMate Quick Help. Give short, practical troubleshooting answers for ZiloShift operators. Prefer local ZiloShift docs before app knowledge. Use getCurrentTime when the user asks for current date/time or relative schedule wording. Ask for missing details only when required. If the issue involves safety, money, identity, fraud, legal risk, or a platform bug, give clear next steps and say it should be escalated to the ZiloShift team.',
|
|
9
11
|
tools: {
|
|
10
12
|
...ziloDocsTools,
|
|
13
|
+
...timeTools,
|
|
11
14
|
appKnowledge: appKnowledgeTool,
|
|
12
15
|
},
|
|
13
|
-
stopWhen: stepCountIs(
|
|
16
|
+
stopWhen: stepCountIs(limits.subagentSteps),
|
|
14
17
|
});
|
|
15
18
|
}
|
|
16
19
|
//# sourceMappingURL=quick-help.agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-help.agent.js","sourceRoot":"","sources":["../../src/agents/quick-help.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"quick-help.agent.js","sourceRoot":"","sources":["../../src/agents/quick-help.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,aAAa,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC,IAAI;QAClB,YAAY,EAAE,6bAA6b;QAC3c,KAAK,EAAE;YACL,GAAG,aAAa;YAChB,GAAG,SAAS;YACZ,YAAY,EAAE,gBAAgB;SAC/B;QACD,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type AppStatus = {
|
|
2
|
+
configured: boolean;
|
|
3
|
+
userId: string | null;
|
|
4
|
+
sessionId: string | null;
|
|
5
|
+
reusedSession: boolean;
|
|
6
|
+
toolkits: Array<{
|
|
7
|
+
slug: string;
|
|
8
|
+
name: string;
|
|
9
|
+
isNoAuth: boolean;
|
|
10
|
+
connected: boolean;
|
|
11
|
+
status?: string;
|
|
12
|
+
}>;
|
|
13
|
+
};
|
|
14
|
+
export declare function printAppsStatus(status: AppStatus): void;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=apps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/cli/apps.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzG,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAkBhD"}
|
package/dist/cli/apps.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { printPanel, printTable } from './format.js';
|
|
2
|
+
export function printAppsStatus(status) {
|
|
3
|
+
printPanel('Composio Apps', [
|
|
4
|
+
['Configured', status.configured ? 'yes' : 'no'],
|
|
5
|
+
['User', status.userId ?? 'not set'],
|
|
6
|
+
['Session', status.sessionId ?? 'none'],
|
|
7
|
+
['Session reused', status.reusedSession ? 'yes' : 'no'],
|
|
8
|
+
]);
|
|
9
|
+
if (!status.configured) {
|
|
10
|
+
console.log('Composio is optional. Run `zilmate setup` to add it, or keep using local tools.');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
printTable(['App', 'Connected', 'Status'], status.toolkits.map((toolkit) => [
|
|
14
|
+
toolkit.slug,
|
|
15
|
+
toolkit.connected ? 'yes' : toolkit.isNoAuth ? 'no auth' : 'no',
|
|
16
|
+
toolkit.status ?? toolkit.name,
|
|
17
|
+
]));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/cli/apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUrD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,UAAU,CAAC,eAAe,EAAE;QAC1B,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;QACpC,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;QACvC,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;KACxD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1E,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC/D,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;KAC/B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/cli/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAG9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/cli/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAG9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAgBjE,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CA2BtF;AAED,wBAAgB,0BAA0B,IAAI,mBAAmB,CAUhE"}
|
package/dist/cli/confirm.js
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import readline from 'node:readline/promises';
|
|
2
2
|
import { stdin as input, stdout as output } from 'node:process';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
+
const sessionApprovals = new Set();
|
|
5
|
+
function approvalKey(request) {
|
|
6
|
+
const tools = request.targetTools && request.targetTools.length > 0
|
|
7
|
+
? request.targetTools.slice().sort().join(',')
|
|
8
|
+
: request.toolSlug;
|
|
9
|
+
return `${request.toolkitSlug}:${request.access || 'Write'}:${tools}`;
|
|
10
|
+
}
|
|
4
11
|
export function createReadlineConfirmation(rl) {
|
|
5
|
-
return async (
|
|
12
|
+
return async (request) => {
|
|
13
|
+
const { toolkitSlug, toolSlug, summary, action, access, targetTools, details } = request;
|
|
14
|
+
const key = approvalKey(request);
|
|
15
|
+
if (sessionApprovals.has(key)) {
|
|
16
|
+
console.log(chalk.gray(`\nApproved for this session: ${toolkitSlug} / ${(targetTools && targetTools.length > 0) ? targetTools.join(', ') : toolSlug}`));
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
6
19
|
console.log(chalk.yellow(`\nZilMate wants to use ${toolkitSlug}`));
|
|
7
20
|
console.log(`${chalk.gray('Action:')} ${action || 'External app action'}`);
|
|
8
21
|
console.log(`${chalk.gray('Access:')} ${access || 'Write'}`);
|
|
@@ -15,7 +28,12 @@ export function createReadlineConfirmation(rl) {
|
|
|
15
28
|
else {
|
|
16
29
|
console.log(`${chalk.gray('Details:')} ${summary}`);
|
|
17
30
|
}
|
|
18
|
-
const answer = (await rl.question('Proceed? (y/N) ')).trim().toLowerCase();
|
|
31
|
+
const answer = (await rl.question('Proceed? (y/N/s=session) ')).trim().toLowerCase();
|
|
32
|
+
if (answer === 's' || answer === 'session' || answer === 'ys' || answer === 'yes-session') {
|
|
33
|
+
sessionApprovals.add(key);
|
|
34
|
+
console.log(chalk.green('Approved for this CLI session.'));
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
19
37
|
return answer === 'y' || answer === 'yes';
|
|
20
38
|
};
|
|
21
39
|
}
|
package/dist/cli/confirm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/cli/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,0BAA0B,CAAC,EAAsB;IAC/D,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/cli/confirm.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export declare function getConfigSummary(): {
|
|
|
19
19
|
tavily: boolean;
|
|
20
20
|
redisUrl: boolean;
|
|
21
21
|
redisToken: boolean;
|
|
22
|
+
jobs: boolean;
|
|
23
|
+
qstash: boolean;
|
|
24
|
+
jobWebhookUrl: boolean;
|
|
25
|
+
triggerWorkflows: boolean;
|
|
22
26
|
};
|
|
23
27
|
memory: {
|
|
24
28
|
backend: string;
|
|
@@ -40,6 +44,10 @@ export declare function getResolvedConfigSummary(): Promise<{
|
|
|
40
44
|
tavily: boolean;
|
|
41
45
|
redisUrl: boolean;
|
|
42
46
|
redisToken: boolean;
|
|
47
|
+
jobs: boolean;
|
|
48
|
+
qstash: boolean;
|
|
49
|
+
jobWebhookUrl: boolean;
|
|
50
|
+
triggerWorkflows: boolean;
|
|
43
51
|
};
|
|
44
52
|
memory: {
|
|
45
53
|
backend: string;
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAuBF,wBAAgB,gBAAgB;;aAGX,MAAM,GAAG,IAAI
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAuBF,wBAAgB,gBAAgB;;aAGX,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;EAuBjC;AAED,wBAAsB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;GAK7C;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,0BAwGnF"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -2,7 +2,7 @@ import { access, mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
|
|
|
2
2
|
import { constants, existsSync } from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { env, hasComposio, hasGatewayAuth, hasRedis } from '../config/env.js';
|
|
5
|
+
import { env, hasComposio, hasGatewayAuth, hasQStash, hasRedis } from '../config/env.js';
|
|
6
6
|
import { getModelAvailability, models } from '../config/models.js';
|
|
7
7
|
import { getComposioStatus } from '../tools/composio.tool.js';
|
|
8
8
|
import { memoryBackendName } from '../memory/redis.js';
|
|
@@ -41,6 +41,10 @@ export function getConfigSummary() {
|
|
|
41
41
|
tavily: Boolean(env.tavilyApiKey),
|
|
42
42
|
redisUrl: Boolean(env.upstashRedisRestUrl),
|
|
43
43
|
redisToken: Boolean(env.upstashRedisRestToken),
|
|
44
|
+
jobs: env.zilmateJobsEnabled,
|
|
45
|
+
qstash: Boolean(env.upstashQstashToken),
|
|
46
|
+
jobWebhookUrl: Boolean(env.zilmatePublicJobWebhookUrl),
|
|
47
|
+
triggerWorkflows: env.zilmateTriggerWorkflowsEnabled,
|
|
44
48
|
},
|
|
45
49
|
memory: {
|
|
46
50
|
backend: memoryBackendName(),
|
|
@@ -101,6 +105,25 @@ export async function runDoctor(options = {}) {
|
|
|
101
105
|
? 'Redis is partially configured; set both URL and token'
|
|
102
106
|
: 'Redis not configured; using local file memory',
|
|
103
107
|
});
|
|
108
|
+
checks.push({
|
|
109
|
+
name: 'Jobs',
|
|
110
|
+
status: env.zilmateJobsEnabled ? 'pass' : 'warn',
|
|
111
|
+
detail: env.zilmateJobsEnabled ? 'Background jobs are enabled' : 'Background jobs are disabled; set ZILMATE_JOBS_ENABLED=true',
|
|
112
|
+
});
|
|
113
|
+
checks.push({
|
|
114
|
+
name: 'QStash',
|
|
115
|
+
status: hasQStash() ? 'pass' : env.upstashQstashToken || env.zilmatePublicJobWebhookUrl ? 'fail' : 'warn',
|
|
116
|
+
detail: hasQStash()
|
|
117
|
+
? 'QStash hosted scheduling is configured'
|
|
118
|
+
: env.upstashQstashToken || env.zilmatePublicJobWebhookUrl
|
|
119
|
+
? 'QStash is partially configured; set token and public webhook URL'
|
|
120
|
+
: 'QStash not configured; using local worker scheduling only',
|
|
121
|
+
});
|
|
122
|
+
checks.push({
|
|
123
|
+
name: 'Trigger workflows',
|
|
124
|
+
status: env.zilmateTriggerWorkflowsEnabled ? 'pass' : 'warn',
|
|
125
|
+
detail: env.zilmateTriggerWorkflowsEnabled ? 'Composio trigger events will queue jobs' : 'Composio trigger workflows are disabled',
|
|
126
|
+
});
|
|
104
127
|
try {
|
|
105
128
|
const folder = await writableMemoryFolder();
|
|
106
129
|
checks.push({ name: 'Memory folder', status: 'pass', detail: `Writable: ${folder}` });
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/format.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import type { ProgressEvent } from '../runtime/progress.js';
|
|
|
2
2
|
export declare function renderMarkdown(markdown: string): string;
|
|
3
3
|
export declare function printMarkdown(markdown: string): void;
|
|
4
4
|
export declare function printJson(value: unknown): void;
|
|
5
|
+
export declare function clip(value: unknown, width: number): string;
|
|
6
|
+
export declare function printPanel(title: string, rows: Array<[string, string]>): void;
|
|
7
|
+
export declare function printTable(headers: string[], rows: string[][]): void;
|
|
8
|
+
export declare function statusText(value: boolean, label?: string): string;
|
|
9
|
+
export declare function printZilMateBanner(subtitle?: string): void;
|
|
5
10
|
export declare function printTitle(title: string, subtitle?: string): void;
|
|
6
11
|
export declare function printStatus(label: string, value: string): void;
|
|
7
12
|
export declare function printAssistant(markdown: string): void;
|
package/dist/cli/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAmH5D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAI9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,QAE7C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,QAEvC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAIjD;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAUtE;AAgCD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAyB7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAO,UAEtD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,QAQnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,QAK1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEvD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAK9C;AAED,wBAAgB,eAAe,WAE9B;AAED,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,QA6BjD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,QAEzC"}
|
package/dist/cli/format.js
CHANGED
|
@@ -2,6 +2,14 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { marked } from 'marked';
|
|
3
3
|
const maxWidth = () => Math.min(process.stdout.columns || 96, 110);
|
|
4
4
|
const divider = (color = chalk.gray) => color('─'.repeat(Math.min(maxWidth(), 88)));
|
|
5
|
+
const zilmateBanner = String.raw `
|
|
6
|
+
███████╗██╗██╗ ███╗ ███╗ █████╗ ████████╗███████╗
|
|
7
|
+
╚══███╔╝██║██║ ████╗ ████║██╔══██╗╚══██╔══╝██╔════╝
|
|
8
|
+
███╔╝ ██║██║ ██╔████╔██║███████║ ██║ █████╗
|
|
9
|
+
███╔╝ ██║██║ ██║╚██╔╝██║██╔══██║ ██║ ██╔══╝
|
|
10
|
+
███████╗██║███████╗██║ ╚═╝ ██║██║ ██║ ██║ ███████╗
|
|
11
|
+
╚══════╝╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝
|
|
12
|
+
`;
|
|
5
13
|
function stripInline(markdown) {
|
|
6
14
|
return markdown
|
|
7
15
|
.replace(/\\_/g, '_')
|
|
@@ -109,6 +117,94 @@ export function printMarkdown(markdown) {
|
|
|
109
117
|
export function printJson(value) {
|
|
110
118
|
console.log(chalk.gray(JSON.stringify(value, null, 2)));
|
|
111
119
|
}
|
|
120
|
+
export function clip(value, width) {
|
|
121
|
+
const text = value === undefined || value === null ? '' : String(value).replace(/\s+/g, ' ').trim();
|
|
122
|
+
if (text.length <= width)
|
|
123
|
+
return text.padEnd(width);
|
|
124
|
+
return `${text.slice(0, Math.max(0, width - 1))}…`;
|
|
125
|
+
}
|
|
126
|
+
function plain(value) {
|
|
127
|
+
return value === undefined || value === null ? '' : String(value).replace(/\s+/g, ' ').trim();
|
|
128
|
+
}
|
|
129
|
+
export function printPanel(title, rows) {
|
|
130
|
+
const width = Math.min(maxWidth(), 88);
|
|
131
|
+
console.log(chalk.cyan(`╭${'─'.repeat(width - 2)}╮`));
|
|
132
|
+
console.log(chalk.cyan('│') + chalk.bold.cyanBright(` ${clip(title, width - 4)} `) + chalk.cyan('│'));
|
|
133
|
+
console.log(chalk.cyan(`├${'─'.repeat(width - 2)}┤`));
|
|
134
|
+
for (const [label, value] of rows) {
|
|
135
|
+
const line = `${label.padEnd(20)} ${value}`;
|
|
136
|
+
console.log(chalk.cyan('│') + ` ${clip(line, width - 4)} ` + chalk.cyan('│'));
|
|
137
|
+
}
|
|
138
|
+
console.log(chalk.cyan(`╰${'─'.repeat(width - 2)}╯`));
|
|
139
|
+
}
|
|
140
|
+
function colorCell(value) {
|
|
141
|
+
const trimmed = value.trim().toLowerCase();
|
|
142
|
+
if (['pass', 'ready', 'enabled', 'yes', 'succeeded', 'running', 'configured'].includes(trimmed))
|
|
143
|
+
return chalk.green(value);
|
|
144
|
+
if (['queued', 'warn', 'warning', 'local fallback', 'local schedules only'].includes(trimmed))
|
|
145
|
+
return chalk.yellow(value);
|
|
146
|
+
if (['fail', 'failed', 'error', 'missing', 'no'].includes(trimmed))
|
|
147
|
+
return chalk.red(value);
|
|
148
|
+
if (['off', 'disabled', 'skipped', 'none', '-'].includes(trimmed))
|
|
149
|
+
return chalk.gray(value);
|
|
150
|
+
if (/^job_[a-f0-9-]+/i.test(trimmed))
|
|
151
|
+
return chalk.cyan(value);
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
function tableWidths(headers, rows) {
|
|
155
|
+
const available = Math.max(40, maxWidth() - headers.length * 3 - 1);
|
|
156
|
+
const minimums = headers.map((header) => Math.min(Math.max(header.length, 6), 12));
|
|
157
|
+
const natural = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => plain(row[index]).length)));
|
|
158
|
+
let widths = natural.map((width, index) => Math.max(minimums[index], Math.min(width, index === headers.length - 1 ? 52 : 22)));
|
|
159
|
+
let total = widths.reduce((sum, width) => sum + width, 0);
|
|
160
|
+
while (total > available) {
|
|
161
|
+
const index = widths
|
|
162
|
+
.map((width, itemIndex) => ({ width, itemIndex, min: minimums[itemIndex] }))
|
|
163
|
+
.filter((item) => item.width > item.min)
|
|
164
|
+
.sort((a, b) => b.width - a.width)[0]?.itemIndex;
|
|
165
|
+
if (index === undefined)
|
|
166
|
+
break;
|
|
167
|
+
widths[index] = widths[index] - 1;
|
|
168
|
+
total -= 1;
|
|
169
|
+
}
|
|
170
|
+
return widths;
|
|
171
|
+
}
|
|
172
|
+
export function printTable(headers, rows) {
|
|
173
|
+
if (rows.length === 0) {
|
|
174
|
+
printPanel('Table', [['Status', 'No rows']]);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const widths = tableWidths(headers, rows);
|
|
178
|
+
const top = `╭${widths.map((width) => '─'.repeat(width + 2)).join('┬')}╮`;
|
|
179
|
+
const middle = `├${widths.map((width) => '─'.repeat(width + 2)).join('┼')}┤`;
|
|
180
|
+
const bottom = `╰${widths.map((width) => '─'.repeat(width + 2)).join('┴')}╯`;
|
|
181
|
+
const renderRow = (row, header = false) => (`│${row.map((cell, index) => {
|
|
182
|
+
const value = clip(cell, widths[index]);
|
|
183
|
+
return ` ${header ? chalk.bold.cyanBright(value) : colorCell(value)} `;
|
|
184
|
+
}).join('│')}│`);
|
|
185
|
+
console.log(chalk.cyan(top));
|
|
186
|
+
console.log(renderRow(headers, true));
|
|
187
|
+
console.log(chalk.cyan(middle));
|
|
188
|
+
rows.forEach((row, index) => {
|
|
189
|
+
console.log(renderRow(row));
|
|
190
|
+
if (index < rows.length - 1)
|
|
191
|
+
console.log(chalk.gray(`├${widths.map((width) => '─'.repeat(width + 2)).join('┼')}┤`));
|
|
192
|
+
});
|
|
193
|
+
console.log(chalk.cyan(bottom));
|
|
194
|
+
}
|
|
195
|
+
export function statusText(value, label = 'on') {
|
|
196
|
+
return value ? chalk.green(label) : chalk.gray('off');
|
|
197
|
+
}
|
|
198
|
+
export function printZilMateBanner(subtitle) {
|
|
199
|
+
const width = Math.min(maxWidth(), 64);
|
|
200
|
+
const line = '═'.repeat(width);
|
|
201
|
+
console.log(chalk.cyanBright(line));
|
|
202
|
+
console.log(chalk.cyanBright(zilmateBanner));
|
|
203
|
+
if (subtitle)
|
|
204
|
+
console.log(chalk.whiteBright(` ${subtitle}`));
|
|
205
|
+
console.log(chalk.gray(' CLI assistant · subagents · memory · jobs · tools'));
|
|
206
|
+
console.log(chalk.cyanBright(line));
|
|
207
|
+
}
|
|
112
208
|
export function printTitle(title, subtitle) {
|
|
113
209
|
console.log(chalk.cyan(divider(chalk.cyan)));
|
|
114
210
|
console.log(chalk.bold.cyanBright(title));
|