You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: apps/evi/agent/schedules/digest.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ export default defineSchedule({
13
13
}
14
14
waitUntil(
15
15
receive(photon,{
16
-
message: 'Load the daily-digest skill and follow it for the last 24 hours.',
16
+
message: 'Load the daily-digest skill and follow it for the last 24 hours. This scheduled turn resumes a long-lived thread: ignore earlier conversation topics and stale pending requests, and do only this task.',
17
17
// Spectrum direct-chat guid: `any;-;<address>`, so the thread is
18
18
// derived from the phone number instead of a captured thread id.
Copy file name to clipboardExpand all lines: apps/evi/agent/schedules/upstream-sync.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ export default defineSchedule({
14
14
waitUntil(
15
15
receive(photon,{
16
16
message:
17
-
'Load the upstream-sync skill and check the eve and Vercel Connect ecosystem for updates. Open draft PRs for anything warranted.',
17
+
'Load the upstream-sync skill and check the eve and Vercel Connect ecosystem for updates. Open draft PRs for anything warranted. This scheduled turn resumes a long-lived thread: ignore earlier conversation topics and stale pending requests, and do only this task.',
18
18
// Spectrum direct-chat guid: `any;-;<address>`, so the thread is
19
19
// derived from the phone number instead of a captured thread id.
description: 'Admin: AI Gateway credit balance and lifetime spend for the entire team account (not Evi-scoped). Prefer ai_gateway__report for Evi digests.',
// Dynamic map keys are bare tool names (no file-slug prefix), so the
9
-
// namespace is spelled out here to match every blob__upload_image reference.
10
-
return{
11
-
blob__upload_image: defineTool({
12
-
description: 'Upload an image file from the sandbox to the evlog Vercel Blob store and return its public URL. Use it to share screenshots (before/after comparisons, visual evidence) in pull requests and conversations. png/jpg/webp/gif, 8 MB max. The URL is public: upload only captures of evlog surfaces.',
13
-
inputSchema: z.object({
14
-
path: z.string().min(1).describe('Sandbox path of the image, e.g. /workspace/screenshots/after.png'),
15
-
}),
16
-
asyncexecute(input,ctx){
17
-
constcontentType=imageContentType(input.path)
18
-
if(!contentType){
19
-
return{success: falseasconst,error: `"${input.path}" is not a supported image (png/jpg/webp/gif).`}
20
-
}
21
-
if(!process.env.BLOB_READ_WRITE_TOKEN){
22
-
return{success: falseasconst,error: 'BLOB_READ_WRITE_TOKEN is not configured. Locally, run `vercel env pull` in apps/evi.'}
description: 'Upload an image file from the sandbox to the evlog Vercel Blob store and return its public URL. Use it to share screenshots (before/after comparisons, visual evidence) in pull requests and conversations. png/jpg/webp/gif, 8 MB max. The URL is public: upload only captures of evlog surfaces.',
16
+
inputSchema: z.object({
17
+
path: z.string().min(1).describe('Sandbox path of the image, e.g. /workspace/screenshots/after.png'),
description: 'Capture a before/after comparison of an evlog surface in one call: for each URL, open it in the sandbox browser, wait 5s for animations to settle, screenshot (cropped to the selector when given), validate and upload both frames to the Blob store, and return the finished markdown table with an attestation receipt. Origins are restricted to evlog domains, Vercel previews, and sandbox dev servers. For surfaces that can show real user data (telemetry), review the pages with browser__screenshot before calling this: the returned URLs are public immediately.',
52
57
inputSchema: z.object({
53
58
beforeUrl: z.string().min(1).describe('URL of the before state, e.g. https://evlog.dev'),
@@ -59,8 +64,8 @@ function captureTools() {
59
64
// Skill-level "review sensitive surfaces first" is not an enforceable
60
65
// control; a capture of a surface that can show real user data parks on
0 commit comments