zilmate 1.6.2 → 1.7.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/SDK.md +320 -0
- package/agent-docs.md +12 -0
- package/dist/agents/coding.agent.d.ts +102 -0
- package/dist/agents/coding.agent.d.ts.map +1 -1
- package/dist/agents/coding.agent.js +89 -5
- package/dist/agents/coding.agent.js.map +1 -1
- package/dist/agents/image.agent.d.ts +13 -0
- package/dist/agents/image.agent.d.ts.map +1 -1
- package/dist/agents/image.agent.js +39 -3
- package/dist/agents/image.agent.js.map +1 -1
- package/dist/agents/manager.d.ts +153 -1
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +16 -4
- package/dist/agents/manager.js.map +1 -1
- package/dist/agents/security.agent.d.ts +2 -2
- package/dist/cli/composer.d.ts +3 -0
- package/dist/cli/composer.d.ts.map +1 -0
- package/dist/cli/composer.js +11 -0
- package/dist/cli/composer.js.map +1 -0
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +29 -3
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +65 -14
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/models.d.ts +17 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +116 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/render.d.ts +13 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +59 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +23 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/theme.d.ts +23 -0
- package/dist/cli/theme.d.ts.map +1 -0
- package/dist/cli/theme.js +34 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/triggers.d.ts.map +1 -1
- package/dist/cli/triggers.js +26 -16
- package/dist/cli/triggers.js.map +1 -1
- package/dist/config/model-store.d.ts +14 -0
- package/dist/config/model-store.d.ts.map +1 -0
- package/dist/config/model-store.js +60 -0
- package/dist/config/model-store.js.map +1 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +14 -11
- package/dist/config/models.js.map +1 -1
- package/dist/index.js +9 -13
- package/dist/index.js.map +1 -1
- package/dist/jobs/trigger-router.d.ts.map +1 -1
- package/dist/jobs/trigger-router.js +8 -3
- package/dist/jobs/trigger-router.js.map +1 -1
- package/dist/server.d.ts +49 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/code-intelligence.tool.d.ts +68 -0
- package/dist/tools/code-intelligence.tool.d.ts.map +1 -0
- package/dist/tools/code-intelligence.tool.js +176 -0
- package/dist/tools/code-intelligence.tool.js.map +1 -0
- package/dist/tools/computer-use.tool.d.ts +2 -2
- package/dist/tools/image-generate.tool.d.ts +10 -0
- package/dist/tools/image-generate.tool.d.ts.map +1 -1
- package/dist/tools/image-generate.tool.js +115 -22
- package/dist/tools/image-generate.tool.js.map +1 -1
- package/dist/tools/notebook.tool.js +5 -5
- package/dist/tools/notebook.tool.js.map +1 -1
- package/dist/tools/osint.tool.d.ts +4 -4
- package/dist/tools/session-continuity.tool.d.ts +25 -0
- package/dist/tools/session-continuity.tool.d.ts.map +1 -0
- package/dist/tools/session-continuity.tool.js +90 -0
- package/dist/tools/session-continuity.tool.js.map +1 -0
- package/dist/tools/situational-awareness.tool.d.ts +71 -0
- package/dist/tools/situational-awareness.tool.d.ts.map +1 -0
- package/dist/tools/situational-awareness.tool.js +90 -0
- package/dist/tools/situational-awareness.tool.js.map +1 -0
- package/dist/tools/weather.tool.d.ts +88 -0
- package/dist/tools/weather.tool.d.ts.map +1 -0
- package/dist/tools/weather.tool.js +228 -0
- package/dist/tools/weather.tool.js.map +1 -0
- package/package.json +3 -1
- package/scripts/release-github.mjs +12 -11
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export declare const weatherTools: {
|
|
2
|
+
getWeather: import("ai").Tool<{
|
|
3
|
+
location: string;
|
|
4
|
+
}, {
|
|
5
|
+
location: string;
|
|
6
|
+
coordinates: {
|
|
7
|
+
lat: number;
|
|
8
|
+
lon: number;
|
|
9
|
+
};
|
|
10
|
+
current: {
|
|
11
|
+
temperature: {
|
|
12
|
+
value: number;
|
|
13
|
+
unit: string;
|
|
14
|
+
};
|
|
15
|
+
feelsLike: {
|
|
16
|
+
value: number;
|
|
17
|
+
unit: string;
|
|
18
|
+
};
|
|
19
|
+
humidity: {
|
|
20
|
+
value: number;
|
|
21
|
+
unit: string;
|
|
22
|
+
};
|
|
23
|
+
windSpeed: {
|
|
24
|
+
value: number;
|
|
25
|
+
unit: string;
|
|
26
|
+
};
|
|
27
|
+
condition: string;
|
|
28
|
+
emoji: string;
|
|
29
|
+
};
|
|
30
|
+
today: {
|
|
31
|
+
high: {
|
|
32
|
+
value: number;
|
|
33
|
+
unit: string;
|
|
34
|
+
};
|
|
35
|
+
low: {
|
|
36
|
+
value: number;
|
|
37
|
+
unit: string;
|
|
38
|
+
};
|
|
39
|
+
precipitationChance: {
|
|
40
|
+
value: number;
|
|
41
|
+
unit: string;
|
|
42
|
+
};
|
|
43
|
+
} | null;
|
|
44
|
+
}>;
|
|
45
|
+
getForecast: import("ai").Tool<{
|
|
46
|
+
location: string;
|
|
47
|
+
days: number;
|
|
48
|
+
}, {
|
|
49
|
+
location: string;
|
|
50
|
+
coordinates: {
|
|
51
|
+
lat: number;
|
|
52
|
+
lon: number;
|
|
53
|
+
};
|
|
54
|
+
forecast: {
|
|
55
|
+
date: string;
|
|
56
|
+
condition: string;
|
|
57
|
+
emoji: string;
|
|
58
|
+
high: {
|
|
59
|
+
value: number;
|
|
60
|
+
unit: string;
|
|
61
|
+
};
|
|
62
|
+
low: {
|
|
63
|
+
value: number;
|
|
64
|
+
unit: string;
|
|
65
|
+
};
|
|
66
|
+
precipitationChance: {
|
|
67
|
+
value: number;
|
|
68
|
+
unit: string;
|
|
69
|
+
};
|
|
70
|
+
windMax: {
|
|
71
|
+
value: number;
|
|
72
|
+
unit: string;
|
|
73
|
+
};
|
|
74
|
+
}[];
|
|
75
|
+
}>;
|
|
76
|
+
getCurrentLocation: import("ai").Tool<Record<string, never>, {
|
|
77
|
+
ip: string;
|
|
78
|
+
city: string;
|
|
79
|
+
region: string;
|
|
80
|
+
country: string;
|
|
81
|
+
coordinates: {
|
|
82
|
+
lat: number;
|
|
83
|
+
lon: number;
|
|
84
|
+
};
|
|
85
|
+
displayName: string;
|
|
86
|
+
}>;
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=weather.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weather.tool.d.ts","sourceRoot":"","sources":["../../src/tools/weather.tool.ts"],"names":[],"mappings":"AAwIA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IxB,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { emitProgress } from '../runtime/progress.js';
|
|
4
|
+
// WMO Weather interpretation codes (https://open-meteo.com/en/docs#weathervariables)
|
|
5
|
+
const weatherCodes = {
|
|
6
|
+
0: 'Clear sky',
|
|
7
|
+
1: 'Mainly clear',
|
|
8
|
+
2: 'Partly cloudy',
|
|
9
|
+
3: 'Overcast',
|
|
10
|
+
45: 'Fog',
|
|
11
|
+
48: 'Depositing rime fog',
|
|
12
|
+
51: 'Light drizzle',
|
|
13
|
+
53: 'Moderate drizzle',
|
|
14
|
+
55: 'Dense drizzle',
|
|
15
|
+
56: 'Light freezing drizzle',
|
|
16
|
+
57: 'Dense freezing drizzle',
|
|
17
|
+
61: 'Slight rain',
|
|
18
|
+
63: 'Moderate rain',
|
|
19
|
+
65: 'Heavy rain',
|
|
20
|
+
66: 'Light freezing rain',
|
|
21
|
+
67: 'Heavy freezing rain',
|
|
22
|
+
71: 'Slight snow fall',
|
|
23
|
+
73: 'Moderate snow fall',
|
|
24
|
+
75: 'Heavy snow fall',
|
|
25
|
+
77: 'Snow grains',
|
|
26
|
+
80: 'Slight rain showers',
|
|
27
|
+
81: 'Moderate rain showers',
|
|
28
|
+
82: 'Violent rain showers',
|
|
29
|
+
85: 'Slight snow showers',
|
|
30
|
+
86: 'Heavy snow showers',
|
|
31
|
+
95: 'Thunderstorm',
|
|
32
|
+
96: 'Thunderstorm with slight hail',
|
|
33
|
+
99: 'Thunderstorm with heavy hail',
|
|
34
|
+
};
|
|
35
|
+
function weatherDescription(code) {
|
|
36
|
+
return weatherCodes[code] ?? `Unknown (code ${code})`;
|
|
37
|
+
}
|
|
38
|
+
function emojiForWeather(code) {
|
|
39
|
+
if (code === 0)
|
|
40
|
+
return '☀️';
|
|
41
|
+
if (code <= 2)
|
|
42
|
+
return '⛅';
|
|
43
|
+
if (code === 3)
|
|
44
|
+
return '☁️';
|
|
45
|
+
if (code >= 45 && code <= 48)
|
|
46
|
+
return '🌫️';
|
|
47
|
+
if (code >= 51 && code <= 57)
|
|
48
|
+
return '🌦️';
|
|
49
|
+
if (code >= 61 && code <= 67)
|
|
50
|
+
return '🌧️';
|
|
51
|
+
if (code >= 71 && code <= 77)
|
|
52
|
+
return '❄️';
|
|
53
|
+
if (code >= 80 && code <= 82)
|
|
54
|
+
return '🌦️';
|
|
55
|
+
if (code >= 85 && code <= 86)
|
|
56
|
+
return '🌨️';
|
|
57
|
+
if (code >= 95)
|
|
58
|
+
return '⛈️';
|
|
59
|
+
return '🌈';
|
|
60
|
+
}
|
|
61
|
+
// ─── Geocode: city name → {lat, lon} via Open-Meteo Geocoding API ────────────
|
|
62
|
+
async function geocodeCity(city, count = 5) {
|
|
63
|
+
const url = `https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(city)}&count=${count}&language=en&format=json`;
|
|
64
|
+
const response = await fetch(url);
|
|
65
|
+
if (!response.ok)
|
|
66
|
+
throw new Error(`Geocoding failed (${response.status}): ${response.statusText}`);
|
|
67
|
+
const data = (await response.json());
|
|
68
|
+
return data.results ?? [];
|
|
69
|
+
}
|
|
70
|
+
async function reverseGeocode(lat, lon) {
|
|
71
|
+
const url = `https://geocoding-api.open-meteo.com/v1/reverse?latitude=${lat}&longitude=${lon}&language=en&format=json`;
|
|
72
|
+
const response = await fetch(url);
|
|
73
|
+
if (!response.ok)
|
|
74
|
+
return `${lat}, ${lon}`;
|
|
75
|
+
const data = (await response.json());
|
|
76
|
+
const result = data.results?.[0];
|
|
77
|
+
if (!result)
|
|
78
|
+
return `${lat}, ${lon}`;
|
|
79
|
+
return result.admin1 ? `${result.name}, ${result.admin1}, ${result.country}` : `${result.name}, ${result.country}`;
|
|
80
|
+
}
|
|
81
|
+
// ─── Fetch current weather from Open-Meteo ───────────────────────────────────
|
|
82
|
+
async function fetchWeather(lat, lon) {
|
|
83
|
+
const url = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}¤t=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_probability_max,wind_speed_10m_max&timezone=auto&forecast_days=7`;
|
|
84
|
+
const response = await fetch(url);
|
|
85
|
+
if (!response.ok)
|
|
86
|
+
throw new Error(`Weather API failed (${response.status}): ${response.statusText}`);
|
|
87
|
+
return (await response.json());
|
|
88
|
+
}
|
|
89
|
+
// ─── Get approximate location from IP ────────────────────────────────────────
|
|
90
|
+
// Uses ip-api.com free tier (no key, 45 req/min limit)
|
|
91
|
+
// Docs: https://ip-api.com/docs/api:json
|
|
92
|
+
async function ipLocation() {
|
|
93
|
+
const response = await fetch('http://ip-api.com/json/?fields=status,query,lat,lon,city,region,country');
|
|
94
|
+
if (!response.ok)
|
|
95
|
+
throw new Error(`IP geolocation failed (${response.status})`);
|
|
96
|
+
const data = (await response.json());
|
|
97
|
+
if (data.status !== 'success')
|
|
98
|
+
throw new Error('IP geolocation returned non-success status');
|
|
99
|
+
return { lat: data.lat, lon: data.lon, city: data.city, region: data.region, country: data.country, ip: data.query };
|
|
100
|
+
}
|
|
101
|
+
// ─── Tools ────────────────────────────────────────────────────────────────────
|
|
102
|
+
export const weatherTools = {
|
|
103
|
+
getWeather: tool({
|
|
104
|
+
description: 'Get current weather conditions for a city or coordinates. Uses free Open-Meteo API — no API key needed. Returns temperature, feels-like, humidity, wind, and conditions.',
|
|
105
|
+
inputSchema: z.object({
|
|
106
|
+
location: z.string().min(1).describe('City name (e.g. "London", "Accra", "New York") or "latitude,longitude" coordinates.'),
|
|
107
|
+
}),
|
|
108
|
+
execute: async ({ location }) => {
|
|
109
|
+
emitProgress({ type: 'fetch:start', label: 'Getting weather', detail: location });
|
|
110
|
+
// Parse direct coordinates if provided
|
|
111
|
+
const coordMatch = /^(-?\d+\.?\d*),\s*(-?\d+\.?\d*)$/.exec(location.trim());
|
|
112
|
+
let lat;
|
|
113
|
+
let lon;
|
|
114
|
+
let resolvedLocation;
|
|
115
|
+
if (coordMatch) {
|
|
116
|
+
lat = parseFloat(coordMatch[1]);
|
|
117
|
+
lon = parseFloat(coordMatch[2]);
|
|
118
|
+
resolvedLocation = await reverseGeocode(lat, lon);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const results = await geocodeCity(location);
|
|
122
|
+
if (results.length === 0)
|
|
123
|
+
throw new Error(`Could not find location: "${location}". Try a different city name or use "latitude,longitude" coordinates.`);
|
|
124
|
+
lat = results[0].latitude;
|
|
125
|
+
lon = results[0].longitude;
|
|
126
|
+
resolvedLocation = results[0].admin1
|
|
127
|
+
? `${results[0].name}, ${results[0].admin1}, ${results[0].country}`
|
|
128
|
+
: `${results[0].name}, ${results[0].country}`;
|
|
129
|
+
}
|
|
130
|
+
const weather = await fetchWeather(lat, lon);
|
|
131
|
+
if (!weather.current) {
|
|
132
|
+
throw new Error('No current weather data returned for this location.');
|
|
133
|
+
}
|
|
134
|
+
const { temperature_2m: temp, relative_humidity_2m: humidity, apparent_temperature: feelsLike, weather_code: code, wind_speed_10m: wind } = weather.current;
|
|
135
|
+
const today = weather.daily ? {
|
|
136
|
+
high: weather.daily.temperature_2m_max[0],
|
|
137
|
+
low: weather.daily.temperature_2m_min[0],
|
|
138
|
+
precipChance: weather.daily.precipitation_probability_max[0],
|
|
139
|
+
} : null;
|
|
140
|
+
const emoji = emojiForWeather(code);
|
|
141
|
+
const desc = weatherDescription(code);
|
|
142
|
+
emitProgress({ type: 'fetch:end', label: 'Weather fetched', detail: resolvedLocation });
|
|
143
|
+
return {
|
|
144
|
+
location: resolvedLocation,
|
|
145
|
+
coordinates: { lat, lon },
|
|
146
|
+
current: {
|
|
147
|
+
temperature: { value: temp, unit: '°C' },
|
|
148
|
+
feelsLike: { value: feelsLike, unit: '°C' },
|
|
149
|
+
humidity: { value: humidity, unit: '%' },
|
|
150
|
+
windSpeed: { value: wind, unit: 'km/h' },
|
|
151
|
+
condition: desc,
|
|
152
|
+
emoji,
|
|
153
|
+
},
|
|
154
|
+
today: today ? {
|
|
155
|
+
high: { value: today.high, unit: '°C' },
|
|
156
|
+
low: { value: today.low, unit: '°C' },
|
|
157
|
+
precipitationChance: { value: today.precipChance, unit: '%' },
|
|
158
|
+
} : null,
|
|
159
|
+
};
|
|
160
|
+
},
|
|
161
|
+
}),
|
|
162
|
+
getForecast: tool({
|
|
163
|
+
description: 'Get a multi-day weather forecast for a city or coordinates. Returns daily highs, lows, conditions, precipitation chance, and wind. Uses free Open-Meteo API — no API key needed.',
|
|
164
|
+
inputSchema: z.object({
|
|
165
|
+
location: z.string().min(1).describe('City name or "latitude,longitude" coordinates.'),
|
|
166
|
+
days: z.number().int().min(1).max(7).optional().default(5).describe('Number of forecast days (1–7, default 5).'),
|
|
167
|
+
}),
|
|
168
|
+
execute: async ({ location, days }) => {
|
|
169
|
+
emitProgress({ type: 'fetch:start', label: 'Getting forecast', detail: `${location} (${days} days)` });
|
|
170
|
+
const coordMatch = /^(-?\d+\.?\d*),\s*(-?\d+\.?\d*)$/.exec(location.trim());
|
|
171
|
+
let lat;
|
|
172
|
+
let lon;
|
|
173
|
+
let resolvedLocation;
|
|
174
|
+
if (coordMatch) {
|
|
175
|
+
lat = parseFloat(coordMatch[1]);
|
|
176
|
+
lon = parseFloat(coordMatch[2]);
|
|
177
|
+
resolvedLocation = await reverseGeocode(lat, lon);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const results = await geocodeCity(location);
|
|
181
|
+
if (results.length === 0)
|
|
182
|
+
throw new Error(`Could not find location: "${location}".`);
|
|
183
|
+
lat = results[0].latitude;
|
|
184
|
+
lon = results[0].longitude;
|
|
185
|
+
resolvedLocation = results[0].admin1
|
|
186
|
+
? `${results[0].name}, ${results[0].admin1}, ${results[0].country}`
|
|
187
|
+
: `${results[0].name}, ${results[0].country}`;
|
|
188
|
+
}
|
|
189
|
+
const weather = await fetchWeather(lat, lon);
|
|
190
|
+
if (!weather.daily) {
|
|
191
|
+
throw new Error('No forecast data returned for this location.');
|
|
192
|
+
}
|
|
193
|
+
const forecastDays = weather.daily.time.slice(0, days).map((date, i) => ({
|
|
194
|
+
date,
|
|
195
|
+
condition: weatherDescription(weather.daily.weather_code[i]),
|
|
196
|
+
emoji: emojiForWeather(weather.daily.weather_code[i]),
|
|
197
|
+
high: { value: weather.daily.temperature_2m_max[i], unit: '°C' },
|
|
198
|
+
low: { value: weather.daily.temperature_2m_min[i], unit: '°C' },
|
|
199
|
+
precipitationChance: { value: weather.daily.precipitation_probability_max[i], unit: '%' },
|
|
200
|
+
windMax: { value: weather.daily.wind_speed_10m_max[i], unit: 'km/h' },
|
|
201
|
+
}));
|
|
202
|
+
emitProgress({ type: 'fetch:end', label: 'Forecast fetched', detail: `${days} days for ${resolvedLocation}` });
|
|
203
|
+
return {
|
|
204
|
+
location: resolvedLocation,
|
|
205
|
+
coordinates: { lat, lon },
|
|
206
|
+
forecast: forecastDays,
|
|
207
|
+
};
|
|
208
|
+
},
|
|
209
|
+
}),
|
|
210
|
+
getCurrentLocation: tool({
|
|
211
|
+
description: 'Get the approximate current location (city, region, country, and coordinates) from your IP address. Uses free ip-api.com — no API key needed. Pair with getWeather to check local weather.',
|
|
212
|
+
inputSchema: z.object({}),
|
|
213
|
+
execute: async () => {
|
|
214
|
+
emitProgress({ type: 'fetch:start', label: 'Detecting location from IP' });
|
|
215
|
+
const location = await ipLocation();
|
|
216
|
+
emitProgress({ type: 'fetch:end', label: 'Location detected', detail: `${location.city}, ${location.country}` });
|
|
217
|
+
return {
|
|
218
|
+
ip: location.ip,
|
|
219
|
+
city: location.city,
|
|
220
|
+
region: location.region,
|
|
221
|
+
country: location.country,
|
|
222
|
+
coordinates: { lat: location.lat, lon: location.lon },
|
|
223
|
+
displayName: [location.city, location.region, location.country].filter(Boolean).join(', '),
|
|
224
|
+
};
|
|
225
|
+
},
|
|
226
|
+
}),
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=weather.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weather.tool.js","sourceRoot":"","sources":["../../src/tools/weather.tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zilmate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "ZilMate CLI multi-agent assistant for ZiloShift workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/server.js",
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"commander": "^15.0.0",
|
|
60
60
|
"cross-fetch": "^4.1.0",
|
|
61
61
|
"dotenv": "^17.4.2",
|
|
62
|
+
"log-update": "^8.0.0",
|
|
62
63
|
"marked": "^15.0.12",
|
|
63
64
|
"marked-terminal": "^7.3.0",
|
|
64
65
|
"pdfkit": "^0.19.1",
|
|
@@ -81,6 +82,7 @@
|
|
|
81
82
|
"scripts/",
|
|
82
83
|
"agent-docs.md",
|
|
83
84
|
"README.md",
|
|
85
|
+
"SDK.md",
|
|
84
86
|
".env.example",
|
|
85
87
|
"install.ps1"
|
|
86
88
|
],
|
|
@@ -12,7 +12,7 @@ const title = `ZilMate ${tag}`;
|
|
|
12
12
|
|
|
13
13
|
const notes = `# ${title}
|
|
14
14
|
|
|
15
|
-
ZilMate ${tag} —
|
|
15
|
+
ZilMate ${tag} — Claude-inspired CLI, situational awareness, session handoffs, model picker, and SDK docs.
|
|
16
16
|
|
|
17
17
|
## Install
|
|
18
18
|
|
|
@@ -20,24 +20,25 @@ ZilMate ${tag} — workspace-first assistant with merge setup, documents, skills
|
|
|
20
20
|
npm install -g zilmate@${version}
|
|
21
21
|
zilmate setup
|
|
22
22
|
zilmate doctor --live
|
|
23
|
+
zilmate talk
|
|
23
24
|
\`\`\`
|
|
24
25
|
|
|
25
26
|
## Highlights
|
|
26
27
|
|
|
27
|
-
- **
|
|
28
|
-
-
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
28
|
+
- **Beautiful CLI** — welcome card, tips, boxed composer input, Claude-style tool progress (\`● tool\` / \`└ Done\`).
|
|
29
|
+
- **/model pick** — interactively choose manager, coding, image, and vision models; persisted to workspace \`config/models.json\`.
|
|
30
|
+
- **Situational awareness** — \`getSituationBrief\` snapshots cwd, git, workspace, jobs, memory, models, and capabilities.
|
|
31
|
+
- **Session continuity** — handoff save/load/generate so ZilMate resumes where you left off.
|
|
32
|
+
- **Coding intelligence** — five tools: grep, working-tree review, symbol explain, scaffold, project checks; appBuilder + qaIntegration sub-coders.
|
|
33
|
+
- **Image director** — \`enhanceImagePrompt\` + generation with art-direction presets.
|
|
34
|
+
- **Cloudflare setup** — dedicated tunnel section in \`zilmate setup\`; \`zilmate jobs listen --tunnel\`.
|
|
35
|
+
- **SDK.md** — Next.js App Router streaming route, subagents, jobs, voice, model selection.
|
|
35
36
|
|
|
36
37
|
## Quick Checks
|
|
37
38
|
|
|
38
39
|
\`\`\`powershell
|
|
39
|
-
zilmate
|
|
40
|
-
|
|
40
|
+
zilmate talk
|
|
41
|
+
/model pick
|
|
41
42
|
zilmate jobs listen --tunnel
|
|
42
43
|
\`\`\`
|
|
43
44
|
|