@desplega.ai/agent-swarm 2.7.6 → 2.7.7
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/dist/{acp-adapter-bp91d37f.js → acp-adapter-7b4vk3h5.js} +5 -4
- package/dist/{actions-yj0eeaqh.js → actions-3tt153af.js} +18 -18
- package/dist/{amp-adapter-4pg9h34q.js → amp-adapter-njpts0yr.js} +1 -1
- package/dist/{anthropic-messages-x4q6rfq5.js → anthropic-messages-xey2skwx.js} +7 -7
- package/dist/{app-909e97cr.js → app-nky4378f.js} +3 -3
- package/dist/{assistant-qdyb5fyy.js → assistant-jnb669pa.js} +19 -19
- package/dist/{azure-openai-responses-s1w5n70z.js → azure-openai-responses-26t7j9ra.js} +5 -5
- package/dist/{boot-reembed-fk0s9z18.js → boot-reembed-9mgvaztt.js} +1 -1
- package/dist/{boot-reembed-gs1rzrnh.js → boot-reembed-qs2djdej.js} +1 -1
- package/dist/{boot-scrub-sweep-4qfd4kfx.js → boot-scrub-sweep-yjpdj7s1.js} +3 -3
- package/dist/{boot-seeds-yr00k13d.js → boot-seeds-5cm6ambd.js} +4 -4
- package/dist/{boxd-vdmfssd9.js → boxd-nv507va8.js} +1 -1
- package/dist/{claude-adapter-qta1f1xn.js → claude-adapter-fn287zmm.js} +5 -4
- package/dist/{claude-managed-setup-sc6j4dm0.js → claude-managed-setup-wtdz2mj2.js} +1 -1
- package/dist/{claude-sdk-session-zgrz6yvc.js → claude-sdk-session-x91kqyhm.js} +8288 -8224
- package/dist/{cli-wp9sp1qb.js → cli-08bmz9z9.js} +1 -1
- package/dist/{cli-yy3rhsdw.js → cli-1c6tzt8g.js} +7 -7
- package/dist/{cli-q0k1w5zd.js → cli-35rsp8ye.js} +1 -1
- package/dist/{cli-xnrwazav.js → cli-3fg0bdcv.js} +1 -1
- package/dist/{cli-89knwags.js → cli-5b456bpf.js} +2 -2
- package/dist/{cli-drr5v6av.js → cli-5jnhv72d.js} +1 -1
- package/dist/{cli-dxae2yg7.js → cli-5zx699j9.js} +2 -2
- package/dist/{cli-0at8w34w.js → cli-6g0hb4cp.js} +8 -8
- package/dist/{cli-e3r2neck.js → cli-6pfd54vx.js} +5 -5
- package/dist/{cli-bsn8nhrq.js → cli-6vcp76qk.js} +3 -3
- package/dist/{cli-ekwks2vs.js → cli-72v799xn.js} +1 -1
- package/dist/cli-82j36f2m.js +45 -0
- package/dist/{cli-yx4kfngt.js → cli-8305gbq0.js} +29 -16
- package/dist/{cli-4necwtsv.js → cli-8sckt74b.js} +8 -8
- package/dist/{cli-vvpx3gsx.js → cli-95jzxcp3.js} +1 -1
- package/dist/{cli-hr2e2fft.js → cli-adeegh7d.js} +7 -7
- package/dist/{cli-m48g6p95.js → cli-afkqkrtw.js} +3 -3
- package/dist/{cli-0qatpy8q.js → cli-ayayvfg4.js} +24 -4
- package/dist/{cli-bqt1mptt.js → cli-az48n0nr.js} +4 -4
- package/dist/{cli-zm72anhg.js → cli-bfv7vdg6.js} +9 -9
- package/dist/{cli-hgaazk69.js → cli-caj33vcq.js} +5 -5
- package/dist/{cli-3ypk9vk1.js → cli-cb2a8pna.js} +1 -1
- package/dist/{cli-waqbxg08.js → cli-cppkf404.js} +17 -17
- package/dist/{cli-yn4kxs06.js → cli-ddaanqkd.js} +4 -4
- package/dist/{cli-386tyxxg.js → cli-e0kmphd6.js} +2 -2
- package/dist/{cli-54t00gt8.js → cli-e46hg0xw.js} +1 -1
- package/dist/{cli-jm2vfpfd.js → cli-e5bzrn01.js} +1 -1
- package/dist/{cli-436532ck.js → cli-excnnjg2.js} +165 -153
- package/dist/{cli-71ptav7x.js → cli-ferkkrg9.js} +1 -1
- package/dist/{cli-vpf89f34.js → cli-fmjd0t1y.js} +3 -3
- package/dist/{cli-pd7vagab.js → cli-fyt2g4wd.js} +3 -3
- package/dist/{cli-gdhpcbhf.js → cli-g08zdaec.js} +1 -1
- package/dist/{cli-ehq736cn.js → cli-g7s47cc5.js} +4 -4
- package/dist/{cli-svj5090z.js → cli-gz6q4eve.js} +3 -3
- package/dist/{cli-8snvgs5r.js → cli-je518txm.js} +10 -10
- package/dist/{cli-rmmmrjkd.js → cli-jtjtabxe.js} +1 -1
- package/dist/{cli-611a1294.js → cli-k0wwfqbg.js} +18 -1
- package/dist/{cli-es6va8jk.js → cli-k1nje3v3.js} +38 -43
- package/dist/{cli-p5gp8pcx.js → cli-k8196sh2.js} +6 -6
- package/dist/{cli-nwj0ee2w.js → cli-k899ehvh.js} +2 -2
- package/dist/{cli-decfb6v8.js → cli-m0da8j35.js} +23 -9
- package/dist/{cli-he9wchme.js → cli-mkk9rnzz.js} +4 -4
- package/dist/{cli-nhrvpaj7.js → cli-n6bv12jn.js} +510 -4
- package/dist/{cli-8bc1w0tw.js → cli-nmzhp1b5.js} +14 -12
- package/dist/{cli-0yv5z2pg.js → cli-p82cnnjq.js} +1 -1
- package/dist/{cli-c60vetmm.js → cli-pc6n7fre.js} +1 -1
- package/dist/{cli-xds5f77d.js → cli-pjctyea3.js} +2 -2
- package/dist/{cli-xbbndvjy.js → cli-pq73h5mz.js} +3 -3
- package/dist/{cli-aa6yxc7m.js → cli-pz4rk021.js} +1 -1
- package/dist/{cli-xnqgpshy.js → cli-q3tkegby.js} +1 -1
- package/dist/cli-qghe0h66.js +67 -0
- package/dist/{cli-zbbwez0r.js → cli-qh4d4tvk.js} +4 -4
- package/dist/{cli-w6dt9ged.js → cli-rtt8g4v9.js} +1 -1
- package/dist/{cli-1h3wcpbw.js → cli-snpj5zbj.js} +2 -2
- package/dist/{cli-a7v854rf.js → cli-tgrv9cjx.js} +263 -12
- package/dist/{cli-faxe6thg.js → cli-vz22fyqv.js} +186 -54
- package/dist/{cli-k2gzwsj2.js → cli-wk5yrfwd.js} +160 -26
- package/dist/{cli-shpbx5ee.js → cli-ws19768n.js} +1641 -49
- package/dist/{cli-70r77n04.js → cli-xae4g51r.js} +1 -1
- package/dist/{cli-kqdg1bsb.js → cli-yndmfxb3.js} +2 -2
- package/dist/{cli-bjb3z51z.js → cli-yyj3j5m4.js} +2 -2
- package/dist/cli.js +21 -21
- package/dist/{cloudflare-workers-ai-system-one-bm60fjm0.js → cloudflare-workers-ai-system-one-ef2a980q.js} +2 -2
- package/dist/{codex-adapter-ayd1fb6h.js → codex-adapter-cf2yxe9m.js} +3 -2
- package/dist/{codex-hook-9efm2x1m.js → codex-hook-a0c6g6t6.js} +1 -1
- package/dist/{codex-session-runner-jesa32xc.js → codex-session-runner-6vfzdgbd.js} +3 -2
- package/dist/{commands-hanewgf2.js → commands-t3mfy7vn.js} +3 -3
- package/dist/{controller-dt1n3c1q.js → controller-q7xrbaz0.js} +3 -3
- package/dist/{controllers-connect-xx8x64n5.js → controllers-connect-c6nm70kg.js} +19 -19
- package/dist/{cursor-adapter-9s4dwwdw.js → cursor-adapter-ftd81ga8.js} +1 -1
- package/dist/{db-3vttcbv4.js → db-dk572x25.js} +3 -3
- package/dist/{db-9dv0g1ab.js → db-vemtpmcc.js} +4 -2
- package/dist/{dispatcher-tx9hd1sv.js → dispatcher-kh7ecxh9.js} +17 -17
- package/dist/{dsh-adapter-007y4ejs.js → dsh-adapter-v8628r89.js} +1 -1
- package/dist/{e2b-we6hs6q5.js → e2b-fr12yccx.js} +1 -1
- package/dist/{e2b-a19d28rz.js → e2b-x6ywzak3.js} +1 -1
- package/dist/{easter-egg-3d-rgbrqb8s.js → easter-egg-3d-nenw4x63.js} +1 -1
- package/dist/{embedding-space-ny1e2940.js → embedding-space-0jepb239.js} +6 -6
- package/dist/{embeddings-2t386t13.js → embeddings-xxt49yxg.js} +1 -1
- package/dist/{execute-pksh0ceh.js → execute-1mhw6e4x.js} +1 -1
- package/dist/{external-channel-phgmhmd7.js → external-channel-55v12e60.js} +2 -2
- package/dist/{fx-adapter-fy8rr921.js → fx-adapter-bs8wqrk5.js} +6 -5
- package/dist/{google-generative-ai-8y3m3k4b.js → google-generative-ai-v94hr7h0.js} +5 -5
- package/dist/{google-vertex-w3v98n7b.js → google-vertex-g7vr6cf8.js} +5 -5
- package/dist/{grok-adapter-q0abvpaj.js → grok-adapter-gpjqmkcq.js} +6 -5
- package/dist/handlers-zxmp1ta4.js +32 -0
- package/dist/{heartbeat-kadyek8p.js → heartbeat-k42svnr0.js} +20 -20
- package/dist/{hook-9k551xnj.js → hook-114m7hap.js} +4 -3
- package/dist/{hook-5zs3msf6.js → hook-6nphweh0.js} +24 -9
- package/dist/{http-mhz9vw1f.js → http-r8cc4wz7.js} +1025 -173
- package/dist/index-a8phxqnk.js +37 -0
- package/dist/{index-vdygbq10.js → index-e3s8wmxy.js} +1 -1
- package/dist/{index-q361cg2f.js → index-fpk4bcd9.js} +1 -1
- package/dist/index-k6h00t4c.js +30 -0
- package/dist/{index-rvr00sg7.js → index-nh3wyqdt.js} +1017 -574
- package/dist/index-xrz7te8h.js +33 -0
- package/dist/{keepalive-w56f32cg.js → keepalive-x060nt9p.js} +3 -3
- package/dist/lead-956sd2yc.js +71 -0
- package/dist/{maintenance-7mdgxcea.js → maintenance-2xxfexhf.js} +1 -1
- package/dist/{mistral-conversations-4pmwj1c0.js → mistral-conversations-3gjpdb4b.js} +4 -4
- package/dist/{oauth-refresh-sweep-29txy9vk.js → oauth-refresh-sweep-fckc4ar5.js} +2 -2
- package/dist/{onboard-kpsrkarj.js → onboard-zc48j237.js} +3 -3
- package/dist/{openai-codex-responses-44j573nm.js → openai-codex-responses-8pbxq9h5.js} +5 -5
- package/dist/{openai-completions-a4gee2a8.js → openai-completions-rm00s912.js} +4 -4
- package/dist/{openai-decisions-w4qkrcar.js → openai-decisions-8v957r2r.js} +1 -1
- package/dist/{openai-responses-rbp6h5kr.js → openai-responses-agxpf96k.js} +5 -5
- package/dist/{opencode-adapter-j25vm3rr.js → opencode-adapter-r690h1cr.js} +4 -3
- package/dist/{otel-impl-6kkct7a8.js → otel-impl-r5xbh81q.js} +4 -4
- package/dist/{pi-mono-adapter-exhkzhn2.js → pi-mono-adapter-c7v8sdec.js} +7 -6
- package/dist/{pricing-refresh-n2x7jh6k.js → pricing-refresh-3pmre11v.js} +3 -3
- package/dist/{rbac-roles-81ypx6es.js → rbac-roles-3vbshwsb.js} +1 -1
- package/dist/{rbac-roles-b5htkjby.js → rbac-roles-910mmkgz.js} +2 -2
- package/dist/{render-v2-qn6jmpk4.js → render-v2-pxykkbab.js} +3 -3
- package/dist/{resume-wd30wx23.js → resume-adda0bwy.js} +6 -6
- package/dist/{runtime-4hsg7h60.js → runtime-fnbm7stk.js} +1 -1
- package/dist/{session-access-5qvfevhk.js → session-access-2fvamrdc.js} +4 -4
- package/dist/{session-source-backfill-n1czavbr.js → session-source-backfill-08xvv0sm.js} +2 -2
- package/dist/{setup-dnb56qy5.js → setup-1aqmvmh1.js} +1 -1
- package/dist/{typesafe-system-one-5mavm259.js → typesafe-system-one-0bmqcxfg.js} +2 -2
- package/dist/{virtual-modules-76xxv9fs.js → virtual-modules-d2pjk9j1.js} +5 -5
- package/dist/{work-objects-4n21tfkm.js → work-objects-9s0yrm5j.js} +20 -20
- package/dist/{worker-follow-up-77hvzxww.js → worker-follow-up-3q78fqmr.js} +17 -17
- package/dist/worker-y15hy08h.js +71 -0
- package/openapi.json +197 -4
- package/package.json +5 -5
- package/src/apps/definition.ts +6 -5
- package/src/be/db/page-theme-tokens.ts +12 -0
- package/src/be/db/tasks/read.ts +9 -1
- package/src/be/db/tasks/write.ts +19 -0
- package/src/be/db-client.ts +107 -7
- package/src/be/db.ts +34 -2
- package/src/be/migrations/269_pages_design_system.sql +23 -0
- package/src/be/seed/schedules-seeder.ts +0 -10
- package/src/be/seed-scripts/catalog/catalog-report.inline.ts +2 -0
- package/src/be/seed-scripts/catalog/catalog-report.ts +2 -0
- package/src/be/seed-scripts/catalog/memory-eval.ts +2 -0
- package/src/be/seed-scripts/catalog/swarm-update-check.ts +150 -0
- package/src/be/seed-scripts/index.ts +9 -0
- package/src/be/seed-skills/bundled-files.generated.json +3 -3
- package/src/be/swarm-config-guard.ts +32 -0
- package/src/be/task-auto-title-listener.ts +127 -0
- package/src/commands/onboard/agent-fs-version.ts +1 -1
- package/src/commands/profile-sync.ts +151 -16
- package/src/commands/runner.ts +15 -7
- package/src/hooks/hook.ts +20 -9
- package/src/http/index.ts +3 -0
- package/src/http/pages-public.ts +93 -129
- package/src/http/pages.ts +94 -21
- package/src/pages/browser-sdk.ts +48 -21
- package/src/pages/color-literals.ts +115 -0
- package/src/pages/page-head.ts +766 -0
- package/src/pages/version.ts +3 -0
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/codex-adapter.ts +1 -0
- package/src/providers/codex-app-server.ts +27 -1
- package/src/providers/pi-mono-extension.ts +30 -15
- package/src/tasks/follow-up-gate.ts +318 -0
- package/src/tasks/worker-follow-up.ts +21 -1
- package/src/tests/codex-app-server.test.ts +59 -0
- package/src/tests/codex-gateway-route.test.ts +50 -1
- package/src/tests/create-page-tool.test.ts +501 -0
- package/src/tests/db-client-busy-retry.test.ts +81 -0
- package/src/tests/db-task-read-contract.test.ts +1 -0
- package/src/tests/db-task-write-contract.test.ts +2 -0
- package/src/tests/db-tasks-read.test.ts +21 -0
- package/src/tests/fixtures/pages/head-v1.html +56 -0
- package/src/tests/follow-up-gate-shadow.test.ts +513 -0
- package/src/tests/identity-field-budget.test.ts +1 -1
- package/src/tests/internal-ai/credentials.test.ts +62 -0
- package/src/tests/internal-ai/task-title.test.ts +283 -0
- package/src/tests/merge-gate-detect-changes.test.ts +145 -0
- package/src/tests/page-proxy.test.ts +1 -1
- package/src/tests/page-session-dev-cookie.test.ts +188 -0
- package/src/tests/pages-frame-ancestors.test.ts +28 -1
- package/src/tests/pages-head-v2.test.ts +534 -0
- package/src/tests/pages-http.test.ts +330 -0
- package/src/tests/pages-public-html.test.ts +43 -0
- package/src/tests/pages-storage.test.ts +182 -0
- package/src/tests/pages-versioning.test.ts +72 -0
- package/src/tests/profile-sync-stale-writeback.test.ts +334 -0
- package/src/tests/profile-sync.test.ts +11 -15
- package/src/tests/scheduled-task-required-params-migration.test.ts +3 -1
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/seed-registry.test.ts +28 -6
- package/src/tests/seed-schedules.test.ts +61 -8
- package/src/tests/seed-scripts.test.ts +142 -2
- package/src/tests/swarm-diff.test.ts +121 -2
- package/src/tests/task-auto-title-config-guard.test.ts +37 -0
- package/src/tests/task-auto-title-listener.test.ts +165 -0
- package/src/tests/theme-import.test.ts +758 -0
- package/src/tests/themes-page-theme.test.ts +155 -0
- package/src/tests/themes-presets.test.ts +172 -0
- package/src/tests/workflow-script-principal.test.ts +2 -1
- package/src/themes/classics.ts +949 -0
- package/src/themes/import.ts +420 -0
- package/src/themes/page-fields.ts +40 -0
- package/src/themes/page-theme.ts +102 -0
- package/src/themes/presets.ts +561 -0
- package/src/themes/tokens.ts +218 -0
- package/src/tools/app-upsert.ts +1 -1
- package/src/tools/create-page.ts +118 -12
- package/src/tools/utils.ts +33 -0
- package/src/types.ts +45 -3
- package/src/utils/constants.ts +19 -0
- package/src/utils/follow-up-gate-schedule-ids.ts +13 -0
- package/src/utils/internal-ai/credentials.ts +146 -93
- package/src/utils/internal-ai/index.ts +10 -0
- package/src/utils/internal-ai/models.ts +18 -0
- package/src/utils/internal-ai/task-title.ts +282 -0
- package/src/utils/page-session.ts +37 -0
- package/templates/schedules/daily-status-report/content.md +88 -2
- package/templates/schedules/daily-swarm-update-check/content.md +16 -40
- package/templates/skills/apps/SKILL.md +1 -1
- package/templates/skills/apps/content.md +1 -1
- package/templates/skills/heartbeat-runbook/content.md +1 -1
- package/templates/skills/pages/config.json +1 -1
- package/templates/skills/pages/content.md +539 -86
- package/templates/skills/pages/files/examples/annotated-pr.html +21 -12
- package/templates/skills/pages/files/examples/multiplayer-board.html +41 -41
- package/templates/skills/pages/files/examples/report-page.html +125 -124
- package/dist/cli-2pnswgh8.js +0 -189
- package/dist/handlers-by3sfxyx.js +0 -32
- package/dist/index-4f2pvxae.js +0 -37
- package/dist/index-98gz7tmp.js +0 -30
- package/dist/index-k08z2cak.js +0 -33
- package/dist/lead-enq35nqp.js +0 -70
- package/dist/worker-gg1576j3.js +0 -70
- package/templates/schedules/daily-workflow-health-audit/config.json +0 -19
- package/templates/schedules/daily-workflow-health-audit/content.md +0 -191
package/dist/cli-2pnswgh8.js
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
registerTemplate,
|
|
3
|
-
init_registry3
|
|
4
|
-
} from "./cli-cm5yqn35.js";
|
|
5
|
-
import {
|
|
6
|
-
__esm
|
|
7
|
-
} from "./cli-242037k3.js";
|
|
8
|
-
|
|
9
|
-
// src/commands/templates.ts
|
|
10
|
-
var init_templates4 = __esm(() => {
|
|
11
|
-
init_registry3();
|
|
12
|
-
registerTemplate({
|
|
13
|
-
eventType: "task.trigger.assigned",
|
|
14
|
-
header: "",
|
|
15
|
-
defaultBody: `{{work_on_task_cmd}} {{task_id}}{{task_desc_section}}{{attachments_section}}{{output_instructions}}`,
|
|
16
|
-
variables: [
|
|
17
|
-
{ name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
|
|
18
|
-
{ name: "task_id", description: "Task ID" },
|
|
19
|
-
{ name: "task_desc_section", description: "Task description section or empty string" },
|
|
20
|
-
{
|
|
21
|
-
name: "attachments_section",
|
|
22
|
-
description: "Ready-to-run fetch recipe per task attachment (or empty string if none) — lets the agent download an attachment in one call instead of discovering the path/provider itself"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "output_instructions",
|
|
26
|
-
description: "Output format instructions (with outputSchema if present, or generic store-progress)"
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
category: "task_lifecycle"
|
|
30
|
-
});
|
|
31
|
-
registerTemplate({
|
|
32
|
-
eventType: "task.trigger.offered",
|
|
33
|
-
header: "",
|
|
34
|
-
defaultBody: `{{review_offered_task_cmd}} {{task_id}}{{task_desc_section}}
|
|
35
|
-
|
|
36
|
-
Accept if you have capacity and skills. Reject with a reason if you cannot handle it.`,
|
|
37
|
-
variables: [
|
|
38
|
-
{ name: "review_offered_task_cmd", description: "Formatted /review-offered-task command" },
|
|
39
|
-
{ name: "task_id", description: "Task ID" },
|
|
40
|
-
{ name: "task_desc_section", description: "Task description section or empty string" }
|
|
41
|
-
],
|
|
42
|
-
category: "task_lifecycle"
|
|
43
|
-
});
|
|
44
|
-
registerTemplate({
|
|
45
|
-
eventType: "task.profile_sync_rejection",
|
|
46
|
-
header: "",
|
|
47
|
-
defaultBody: `=== PERSISTED PROFILE SYNC REJECTION ===
|
|
48
|
-
A {{timestamp}} sync of {{field_label}} did not reach the database. Disk size: {{disk_size}}; DB size: {{db_size}}; budget: {{budget}}; delta: {{delta}}.
|
|
49
|
-
Audit event: {{event_id}}. {{recovery_guidance}}
|
|
50
|
-
=== END PROFILE SYNC REJECTION ===
|
|
51
|
-
|
|
52
|
-
`,
|
|
53
|
-
variables: [
|
|
54
|
-
{ name: "timestamp", description: "UTC timestamp of the rejected sync" },
|
|
55
|
-
{ name: "field_label", description: "Profile field and its harness-specific file path" },
|
|
56
|
-
{ name: "disk_size", description: "Rejected local file size" },
|
|
57
|
-
{ name: "db_size", description: "Stored database field size" },
|
|
58
|
-
{ name: "budget", description: "Configured field budget" },
|
|
59
|
-
{ name: "delta", description: "Signed size delta" },
|
|
60
|
-
{ name: "event_id", description: "Persisted audit event ID" },
|
|
61
|
-
{ name: "recovery_guidance", description: "Accurate field-specific recovery instructions" }
|
|
62
|
-
],
|
|
63
|
-
category: "task_lifecycle"
|
|
64
|
-
});
|
|
65
|
-
registerTemplate({
|
|
66
|
-
eventType: "task.nudge.empty_final_turn",
|
|
67
|
-
header: "",
|
|
68
|
-
defaultBody: `Your last turn returned no text and no tool call. Finish now: if the task needs a result, call store-progress with it.`,
|
|
69
|
-
variables: [],
|
|
70
|
-
category: "task_lifecycle"
|
|
71
|
-
});
|
|
72
|
-
registerTemplate({
|
|
73
|
-
eventType: "task.trigger.unread_mentions",
|
|
74
|
-
header: "",
|
|
75
|
-
defaultBody: `You have {{mention_count}} mention(s) in chat channels.
|
|
76
|
-
|
|
77
|
-
1. Use \`read-messages\` with unreadOnly: true to see them
|
|
78
|
-
2. Respond to questions or requests directed at you
|
|
79
|
-
3. If a message requires work, create a task using \`send-task\``,
|
|
80
|
-
variables: [{ name: "mention_count", description: "Number of unread mentions or 'unread'" }],
|
|
81
|
-
category: "task_lifecycle"
|
|
82
|
-
});
|
|
83
|
-
registerTemplate({
|
|
84
|
-
eventType: "task.trigger.pool_available",
|
|
85
|
-
header: "",
|
|
86
|
-
defaultBody: `{{task_count}} task(s) available in the pool.
|
|
87
|
-
|
|
88
|
-
1. Run \`get-tasks\` with unassigned: true to browse
|
|
89
|
-
2. Pick one matching your skills
|
|
90
|
-
3. Run \`task-action\` with action: "claim" and taskId: "<id>"
|
|
91
|
-
|
|
92
|
-
Note: Claims are first-come-first-serve. If claim fails, pick another.`,
|
|
93
|
-
variables: [{ name: "task_count", description: "Number of available pool tasks" }],
|
|
94
|
-
category: "task_lifecycle"
|
|
95
|
-
});
|
|
96
|
-
registerTemplate({
|
|
97
|
-
eventType: "task.trigger.channel_activity",
|
|
98
|
-
header: "",
|
|
99
|
-
defaultBody: `## Slack Channel Activity
|
|
100
|
-
|
|
101
|
-
{{message_count}} new message(s) in monitored Slack channels:
|
|
102
|
-
|
|
103
|
-
{{messages_detail}}
|
|
104
|
-
## Your Task
|
|
105
|
-
|
|
106
|
-
Review these messages and decide if any require action:
|
|
107
|
-
1. If a message is a question or request, respond using \`slack-reply\` or create a task with \`send-task\`
|
|
108
|
-
2. If a message is informational, no action needed
|
|
109
|
-
3. Use \`slack-read\` with the channelId to get more context if needed`,
|
|
110
|
-
variables: [
|
|
111
|
-
{ name: "message_count", description: "Number of new messages" },
|
|
112
|
-
{
|
|
113
|
-
name: "messages_detail",
|
|
114
|
-
description: "Formatted list of messages with channel and user info"
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
category: "task_lifecycle"
|
|
118
|
-
});
|
|
119
|
-
registerTemplate({
|
|
120
|
-
eventType: "task.resumption.with_progress",
|
|
121
|
-
header: "",
|
|
122
|
-
defaultBody: `{{work_on_task_cmd}} {{task_id}}
|
|
123
|
-
|
|
124
|
-
**RESUMED TASK** - This task was interrupted during a deployment and is being resumed.
|
|
125
|
-
|
|
126
|
-
Task: "{{task_description}}"{{attachments_section}}
|
|
127
|
-
|
|
128
|
-
Previous Progress:
|
|
129
|
-
{{progress}}
|
|
130
|
-
|
|
131
|
-
Continue from where you left off. Review the progress above and complete the remaining work.{{completion_instructions}}`,
|
|
132
|
-
variables: [
|
|
133
|
-
{ name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
|
|
134
|
-
{ name: "task_id", description: "Task ID" },
|
|
135
|
-
{ name: "task_description", description: "Original task description" },
|
|
136
|
-
{ name: "attachments_section", description: "Task attachment fetch recipes" },
|
|
137
|
-
{ name: "progress", description: "Previous progress text" },
|
|
138
|
-
{
|
|
139
|
-
name: "completion_instructions",
|
|
140
|
-
description: "Completion instructions (empty for providers without MCP)"
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
|
-
category: "task_lifecycle"
|
|
144
|
-
});
|
|
145
|
-
registerTemplate({
|
|
146
|
-
eventType: "task.resumption.no_progress",
|
|
147
|
-
header: "",
|
|
148
|
-
defaultBody: `{{work_on_task_cmd}} {{task_id}}
|
|
149
|
-
|
|
150
|
-
**RESUMED TASK** - This task was interrupted during a deployment and is being resumed.
|
|
151
|
-
|
|
152
|
-
Task: "{{task_description}}"{{attachments_section}}
|
|
153
|
-
|
|
154
|
-
No progress was saved before the interruption. Start the task fresh but be aware files may have been partially modified.{{completion_instructions}}`,
|
|
155
|
-
variables: [
|
|
156
|
-
{ name: "work_on_task_cmd", description: "Formatted /work-on-task command" },
|
|
157
|
-
{ name: "task_id", description: "Task ID" },
|
|
158
|
-
{ name: "task_description", description: "Original task description" },
|
|
159
|
-
{ name: "attachments_section", description: "Task attachment fetch recipes" },
|
|
160
|
-
{
|
|
161
|
-
name: "completion_instructions",
|
|
162
|
-
description: "Completion instructions (empty for providers without MCP)"
|
|
163
|
-
}
|
|
164
|
-
],
|
|
165
|
-
category: "task_lifecycle"
|
|
166
|
-
});
|
|
167
|
-
registerTemplate({
|
|
168
|
-
eventType: "task.output.schema",
|
|
169
|
-
header: "",
|
|
170
|
-
defaultBody: `
|
|
171
|
-
|
|
172
|
-
**Required Output Format**: When completing this task, you MUST call store-progress with output that is valid JSON conforming to this schema:
|
|
173
|
-
\`\`\`json
|
|
174
|
-
{{schema}}
|
|
175
|
-
\`\`\`
|
|
176
|
-
Call store-progress with status "completed" and your JSON output. If your output doesn't match the schema, the tool call will fail and you should fix and retry.`,
|
|
177
|
-
variables: [{ name: "schema", description: "Required output JSON schema" }],
|
|
178
|
-
category: "task_lifecycle"
|
|
179
|
-
});
|
|
180
|
-
registerTemplate({
|
|
181
|
-
eventType: "task.output.generic",
|
|
182
|
-
header: "",
|
|
183
|
-
defaultBody: '\n\nWhen done, use `store-progress` with status: "completed" and include your output.',
|
|
184
|
-
variables: [],
|
|
185
|
-
category: "task_lifecycle"
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
export { init_templates4 };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isUserAllowed2,
|
|
3
|
-
registerMessageHandler2,
|
|
4
|
-
init_handlers
|
|
5
|
-
} from "./cli-yy3rhsdw.js";
|
|
6
|
-
import"./cli-p5gp8pcx.js";
|
|
7
|
-
import"./cli-xbbndvjy.js";
|
|
8
|
-
import"./cli-shpbx5ee.js";
|
|
9
|
-
import"./cli-zbbwez0r.js";
|
|
10
|
-
import"./cli-89knwags.js";
|
|
11
|
-
import"./cli-c60vetmm.js";
|
|
12
|
-
import"./cli-hr2e2fft.js";
|
|
13
|
-
import"./cli-xnqgpshy.js";
|
|
14
|
-
import"./cli-3xj33nrx.js";
|
|
15
|
-
import"./cli-4necwtsv.js";
|
|
16
|
-
import"./cli-m48g6p95.js";
|
|
17
|
-
import"./cli-8bc1w0tw.js";
|
|
18
|
-
import"./cli-waqbxg08.js";
|
|
19
|
-
import"./cli-gdhpcbhf.js";
|
|
20
|
-
import"./cli-w6dt9ged.js";
|
|
21
|
-
import"./cli-hgaazk69.js";
|
|
22
|
-
import"./cli-yn4kxs06.js";
|
|
23
|
-
import"./cli-drr5v6av.js";
|
|
24
|
-
import"./cli-rmmmrjkd.js";
|
|
25
|
-
import"./cli-k2gzwsj2.js";
|
|
26
|
-
import"./cli-wx3rhnm0.js";
|
|
27
|
-
init_handlers();
|
|
28
|
-
|
|
29
|
-
export {
|
|
30
|
-
isUserAllowed2 as isUserAllowed,
|
|
31
|
-
registerMessageHandler2 as registerMessageHandler
|
|
32
|
-
};
|
package/dist/index-4f2pvxae.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getExecutorRegistry2,
|
|
3
|
-
initWorkflows2,
|
|
4
|
-
init_workflows
|
|
5
|
-
} from "./cli-shpbx5ee.js";
|
|
6
|
-
import"./cli-zbbwez0r.js";
|
|
7
|
-
import"./cli-89knwags.js";
|
|
8
|
-
import"./cli-c60vetmm.js";
|
|
9
|
-
import"./cli-hr2e2fft.js";
|
|
10
|
-
import"./cli-xnqgpshy.js";
|
|
11
|
-
import"./cli-3xj33nrx.js";
|
|
12
|
-
import"./cli-4necwtsv.js";
|
|
13
|
-
import {
|
|
14
|
-
retryFailedRun2,
|
|
15
|
-
cancelWorkflowRun2
|
|
16
|
-
} from "./cli-m48g6p95.js";
|
|
17
|
-
import {
|
|
18
|
-
startWorkflowExecution2
|
|
19
|
-
} from "./cli-8bc1w0tw.js";
|
|
20
|
-
import"./cli-waqbxg08.js";
|
|
21
|
-
import"./cli-gdhpcbhf.js";
|
|
22
|
-
import"./cli-w6dt9ged.js";
|
|
23
|
-
import"./cli-hgaazk69.js";
|
|
24
|
-
import"./cli-yn4kxs06.js";
|
|
25
|
-
import"./cli-drr5v6av.js";
|
|
26
|
-
import"./cli-rmmmrjkd.js";
|
|
27
|
-
import"./cli-k2gzwsj2.js";
|
|
28
|
-
import"./cli-wx3rhnm0.js";
|
|
29
|
-
init_workflows();
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
cancelWorkflowRun2 as cancelWorkflowRun,
|
|
33
|
-
getExecutorRegistry2 as getExecutorRegistry,
|
|
34
|
-
initWorkflows2 as initWorkflows,
|
|
35
|
-
retryFailedRun2 as retryFailedRun,
|
|
36
|
-
startWorkflowExecution2 as startWorkflowExecution
|
|
37
|
-
};
|
package/dist/index-98gz7tmp.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import"./cli-ns59dc6r.js";
|
|
2
|
-
import {
|
|
3
|
-
startHeartbeat2,
|
|
4
|
-
stopHeartbeat2
|
|
5
|
-
} from "./cli-zm72anhg.js";
|
|
6
|
-
import"./cli-8snvgs5r.js";
|
|
7
|
-
import"./cli-xnrwazav.js";
|
|
8
|
-
import"./cli-shpbx5ee.js";
|
|
9
|
-
import"./cli-zbbwez0r.js";
|
|
10
|
-
import"./cli-89knwags.js";
|
|
11
|
-
import"./cli-c60vetmm.js";
|
|
12
|
-
import"./cli-hr2e2fft.js";
|
|
13
|
-
import"./cli-xnqgpshy.js";
|
|
14
|
-
import"./cli-3xj33nrx.js";
|
|
15
|
-
import"./cli-4necwtsv.js";
|
|
16
|
-
import"./cli-m48g6p95.js";
|
|
17
|
-
import"./cli-8bc1w0tw.js";
|
|
18
|
-
import"./cli-waqbxg08.js";
|
|
19
|
-
import"./cli-gdhpcbhf.js";
|
|
20
|
-
import"./cli-w6dt9ged.js";
|
|
21
|
-
import"./cli-hgaazk69.js";
|
|
22
|
-
import"./cli-yn4kxs06.js";
|
|
23
|
-
import"./cli-drr5v6av.js";
|
|
24
|
-
import"./cli-rmmmrjkd.js";
|
|
25
|
-
import"./cli-k2gzwsj2.js";
|
|
26
|
-
import"./cli-wx3rhnm0.js";
|
|
27
|
-
export {
|
|
28
|
-
startHeartbeat2 as startHeartbeat,
|
|
29
|
-
stopHeartbeat2 as stopHeartbeat
|
|
30
|
-
};
|
package/dist/index-k08z2cak.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
calculateNextRun2,
|
|
3
|
-
startScheduler2,
|
|
4
|
-
stopScheduler2,
|
|
5
|
-
runScheduleNow2,
|
|
6
|
-
init_scheduler2
|
|
7
|
-
} from "./cli-shpbx5ee.js";
|
|
8
|
-
import"./cli-zbbwez0r.js";
|
|
9
|
-
import"./cli-89knwags.js";
|
|
10
|
-
import"./cli-c60vetmm.js";
|
|
11
|
-
import"./cli-hr2e2fft.js";
|
|
12
|
-
import"./cli-xnqgpshy.js";
|
|
13
|
-
import"./cli-3xj33nrx.js";
|
|
14
|
-
import"./cli-4necwtsv.js";
|
|
15
|
-
import"./cli-m48g6p95.js";
|
|
16
|
-
import"./cli-8bc1w0tw.js";
|
|
17
|
-
import"./cli-waqbxg08.js";
|
|
18
|
-
import"./cli-gdhpcbhf.js";
|
|
19
|
-
import"./cli-w6dt9ged.js";
|
|
20
|
-
import"./cli-hgaazk69.js";
|
|
21
|
-
import"./cli-yn4kxs06.js";
|
|
22
|
-
import"./cli-drr5v6av.js";
|
|
23
|
-
import"./cli-rmmmrjkd.js";
|
|
24
|
-
import"./cli-k2gzwsj2.js";
|
|
25
|
-
import"./cli-wx3rhnm0.js";
|
|
26
|
-
init_scheduler2();
|
|
27
|
-
|
|
28
|
-
export {
|
|
29
|
-
calculateNextRun2 as calculateNextRun,
|
|
30
|
-
runScheduleNow2 as runScheduleNow,
|
|
31
|
-
startScheduler2 as startScheduler,
|
|
32
|
-
stopScheduler2 as stopScheduler
|
|
33
|
-
};
|
package/dist/lead-enq35nqp.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import"./cli-k2gzwsj2.js";
|
|
2
|
-
import"./cli-rmmmrjkd.js";
|
|
3
|
-
import"./cli-zbbwez0r.js";
|
|
4
|
-
import"./cli-89knwags.js";
|
|
5
|
-
import"./cli-wx3rhnm0.js";
|
|
6
|
-
import"./cli-w6dt9ged.js";
|
|
7
|
-
import"./cli-waqbxg08.js";
|
|
8
|
-
import"./cli-m48g6p95.js";
|
|
9
|
-
import {
|
|
10
|
-
getEnabledCapabilities,
|
|
11
|
-
init_server
|
|
12
|
-
} from "./cli-shpbx5ee.js";
|
|
13
|
-
import"./cli-3xj33nrx.js";
|
|
14
|
-
import"./cli-yn4kxs06.js";
|
|
15
|
-
import"./cli-4necwtsv.js";
|
|
16
|
-
import"./cli-bjb3z51z.js";
|
|
17
|
-
import"./cli-ftyxyspd.js";
|
|
18
|
-
import {
|
|
19
|
-
runAgent
|
|
20
|
-
} from "./cli-es6va8jk.js";
|
|
21
|
-
import"./cli-98rw5dt5.js";
|
|
22
|
-
import"./cli-77cd6gy8.js";
|
|
23
|
-
import"./cli-mthwvjre.js";
|
|
24
|
-
import"./cli-a22h291q.js";
|
|
25
|
-
import"./cli-dhar9qay.js";
|
|
26
|
-
import"./cli-jc1g9ndz.js";
|
|
27
|
-
import"./cli-nwj0ee2w.js";
|
|
28
|
-
import"./cli-jm2vfpfd.js";
|
|
29
|
-
import"./cli-faxe6thg.js";
|
|
30
|
-
import"./cli-d82btycs.js";
|
|
31
|
-
import"./cli-0726awxw.js";
|
|
32
|
-
import"./cli-decfb6v8.js";
|
|
33
|
-
import"./cli-svj5090z.js";
|
|
34
|
-
import"./cli-4bd1rck6.js";
|
|
35
|
-
import"./cli-98rwmcyc.js";
|
|
36
|
-
import"./cli-318r69gq.js";
|
|
37
|
-
import"./cli-vfym7wmz.js";
|
|
38
|
-
import"./cli-kr5tjjtz.js";
|
|
39
|
-
import"./cli-0qatpy8q.js";
|
|
40
|
-
import"./cli-wp9sp1qb.js";
|
|
41
|
-
import"./cli-srye3vdt.js";
|
|
42
|
-
import"./cli-vvpx3gsx.js";
|
|
43
|
-
import"./cli-pd7vagab.js";
|
|
44
|
-
import"./cli-yx4kfngt.js";
|
|
45
|
-
import"./cli-ekwks2vs.js";
|
|
46
|
-
import"./cli-54t00gt8.js";
|
|
47
|
-
import"./cli-3ypk9vk1.js";
|
|
48
|
-
import"./cli-4zsenjhy.js";
|
|
49
|
-
import"./cli-c60vetmm.js";
|
|
50
|
-
import"./cli-hr2e2fft.js";
|
|
51
|
-
import"./cli-xnqgpshy.js";
|
|
52
|
-
import"./cli-8bc1w0tw.js";
|
|
53
|
-
import"./cli-gdhpcbhf.js";
|
|
54
|
-
import"./cli-hgaazk69.js";
|
|
55
|
-
import"./cli-drr5v6av.js";
|
|
56
|
-
|
|
57
|
-
// src/commands/lead.ts
|
|
58
|
-
init_server();
|
|
59
|
-
var leadConfig = {
|
|
60
|
-
role: "lead",
|
|
61
|
-
defaultPrompt: "/start-leader",
|
|
62
|
-
metadataType: "lead_metadata",
|
|
63
|
-
capabilities: getEnabledCapabilities()
|
|
64
|
-
};
|
|
65
|
-
async function runLead(opts) {
|
|
66
|
-
return runAgent(leadConfig, opts);
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
runLead
|
|
70
|
-
};
|
package/dist/worker-gg1576j3.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import"./cli-k2gzwsj2.js";
|
|
2
|
-
import"./cli-rmmmrjkd.js";
|
|
3
|
-
import"./cli-zbbwez0r.js";
|
|
4
|
-
import"./cli-89knwags.js";
|
|
5
|
-
import"./cli-wx3rhnm0.js";
|
|
6
|
-
import"./cli-w6dt9ged.js";
|
|
7
|
-
import"./cli-waqbxg08.js";
|
|
8
|
-
import"./cli-m48g6p95.js";
|
|
9
|
-
import {
|
|
10
|
-
getEnabledCapabilities,
|
|
11
|
-
init_server
|
|
12
|
-
} from "./cli-shpbx5ee.js";
|
|
13
|
-
import"./cli-3xj33nrx.js";
|
|
14
|
-
import"./cli-yn4kxs06.js";
|
|
15
|
-
import"./cli-4necwtsv.js";
|
|
16
|
-
import"./cli-bjb3z51z.js";
|
|
17
|
-
import"./cli-ftyxyspd.js";
|
|
18
|
-
import {
|
|
19
|
-
runAgent
|
|
20
|
-
} from "./cli-es6va8jk.js";
|
|
21
|
-
import"./cli-98rw5dt5.js";
|
|
22
|
-
import"./cli-77cd6gy8.js";
|
|
23
|
-
import"./cli-mthwvjre.js";
|
|
24
|
-
import"./cli-a22h291q.js";
|
|
25
|
-
import"./cli-dhar9qay.js";
|
|
26
|
-
import"./cli-jc1g9ndz.js";
|
|
27
|
-
import"./cli-nwj0ee2w.js";
|
|
28
|
-
import"./cli-jm2vfpfd.js";
|
|
29
|
-
import"./cli-faxe6thg.js";
|
|
30
|
-
import"./cli-d82btycs.js";
|
|
31
|
-
import"./cli-0726awxw.js";
|
|
32
|
-
import"./cli-decfb6v8.js";
|
|
33
|
-
import"./cli-svj5090z.js";
|
|
34
|
-
import"./cli-4bd1rck6.js";
|
|
35
|
-
import"./cli-98rwmcyc.js";
|
|
36
|
-
import"./cli-318r69gq.js";
|
|
37
|
-
import"./cli-vfym7wmz.js";
|
|
38
|
-
import"./cli-kr5tjjtz.js";
|
|
39
|
-
import"./cli-0qatpy8q.js";
|
|
40
|
-
import"./cli-wp9sp1qb.js";
|
|
41
|
-
import"./cli-srye3vdt.js";
|
|
42
|
-
import"./cli-vvpx3gsx.js";
|
|
43
|
-
import"./cli-pd7vagab.js";
|
|
44
|
-
import"./cli-yx4kfngt.js";
|
|
45
|
-
import"./cli-ekwks2vs.js";
|
|
46
|
-
import"./cli-54t00gt8.js";
|
|
47
|
-
import"./cli-3ypk9vk1.js";
|
|
48
|
-
import"./cli-4zsenjhy.js";
|
|
49
|
-
import"./cli-c60vetmm.js";
|
|
50
|
-
import"./cli-hr2e2fft.js";
|
|
51
|
-
import"./cli-xnqgpshy.js";
|
|
52
|
-
import"./cli-8bc1w0tw.js";
|
|
53
|
-
import"./cli-gdhpcbhf.js";
|
|
54
|
-
import"./cli-hgaazk69.js";
|
|
55
|
-
import"./cli-drr5v6av.js";
|
|
56
|
-
|
|
57
|
-
// src/commands/worker.ts
|
|
58
|
-
init_server();
|
|
59
|
-
var workerConfig = {
|
|
60
|
-
role: "worker",
|
|
61
|
-
defaultPrompt: "/start-worker",
|
|
62
|
-
metadataType: "worker_metadata",
|
|
63
|
-
capabilities: getEnabledCapabilities()
|
|
64
|
-
};
|
|
65
|
-
async function runWorker(opts) {
|
|
66
|
-
return runAgent(workerConfig, opts);
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
runWorker
|
|
70
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"kind": "schedule",
|
|
3
|
-
"name": "daily-workflow-health-audit",
|
|
4
|
-
"displayName": "Daily Workflow Health Audit",
|
|
5
|
-
"slug": "daily-workflow-health-audit",
|
|
6
|
-
"title": "Daily Workflow Health Audit",
|
|
7
|
-
"description": "Check scheduled jobs and workflows for repeated failures, stale runs, and silent drift.",
|
|
8
|
-
"version": "1.0.0",
|
|
9
|
-
"category": "schedules",
|
|
10
|
-
"placeholders": [],
|
|
11
|
-
"requires": [],
|
|
12
|
-
"runAllSeedersCandidate": true,
|
|
13
|
-
"autoEnableCandidate": true,
|
|
14
|
-
"tags": [
|
|
15
|
-
"workflows",
|
|
16
|
-
"schedules",
|
|
17
|
-
"reliability"
|
|
18
|
-
]
|
|
19
|
-
}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
# Daily Workflow Health Audit
|
|
2
|
-
|
|
3
|
-
Delivery uses configured admin channels with an in-app fallback.
|
|
4
|
-
|
|
5
|
-
Check scheduled jobs and workflows for repeated failures, stale runs, and silent drift.
|
|
6
|
-
|
|
7
|
-
## Schedule
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"cron": "0 8 * * *",
|
|
12
|
-
"timezone": "UTC",
|
|
13
|
-
"agentRole": "lead",
|
|
14
|
-
"enabled": true
|
|
15
|
-
}
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Scheduled Task
|
|
19
|
-
|
|
20
|
-
This is the full task prompt the schedule runs on each fire. Adapt the channel IDs, mentions, app URLs, and escalation rules to your environment before enabling. As you learn from real incidents, expand this prompt with your own local failure modes and recovery notes.
|
|
21
|
-
|
|
22
|
-
Task Type: Daily Workflow + Schedule Health Audit
|
|
23
|
-
|
|
24
|
-
You are Lead. Run this audit and post a single Slack digest. Cadence: daily at 08:00 UTC. Purpose: surface any workflow run or scheduled-task fire from the last 24h that hard-failed or silently failed (completed but produced nothing useful) so the team catches broken cron/workflow plumbing before it ages out.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Phase 1 — Query the six failure modes
|
|
29
|
-
|
|
30
|
-
Use `db-query` for each.
|
|
31
|
-
|
|
32
|
-
### 1A. Hard-failed workflow runs (last 24h)
|
|
33
|
-
|
|
34
|
-
```sql
|
|
35
|
-
SELECT wr.id, w.name AS workflowName, wr.status,
|
|
36
|
-
wr.finishedAt, wr.lastUpdatedAt,
|
|
37
|
-
SUBSTR(COALESCE(wr.error, ''), 1, 220) AS errSnippet
|
|
38
|
-
FROM workflow_runs wr
|
|
39
|
-
JOIN workflows w ON w.id = wr.workflowId
|
|
40
|
-
WHERE wr.status = 'failed'
|
|
41
|
-
AND datetime(COALESCE(wr.finishedAt, wr.lastUpdatedAt, wr.startedAt)) > datetime('now', '-24 hours')
|
|
42
|
-
ORDER BY wr.lastUpdatedAt DESC;
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 1B. Hard-failed schedule-spawned tasks (last 24h)
|
|
46
|
-
|
|
47
|
-
```sql
|
|
48
|
-
SELECT t.id, s.name AS scheduleName, t.status,
|
|
49
|
-
SUBSTR(COALESCE(t.failureReason, ''), 1, 220) AS reasonSnippet,
|
|
50
|
-
SUBSTR(COALESCE(t.output, ''), 1, 220) AS outSnippet,
|
|
51
|
-
t.lastUpdatedAt
|
|
52
|
-
FROM agent_tasks t
|
|
53
|
-
LEFT JOIN scheduled_tasks s ON s.id = t.scheduleId
|
|
54
|
-
WHERE t.status = 'failed'
|
|
55
|
-
AND t.scheduleId IS NOT NULL
|
|
56
|
-
AND datetime(t.lastUpdatedAt) > datetime('now', '-24 hours')
|
|
57
|
-
ORDER BY t.lastUpdatedAt DESC;
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 1C. Halted >24h workflow runs (silent stuck)
|
|
61
|
-
|
|
62
|
-
```sql
|
|
63
|
-
SELECT wr.id, w.name AS workflowName, wr.status, wr.lastUpdatedAt
|
|
64
|
-
FROM workflow_runs wr
|
|
65
|
-
JOIN workflows w ON w.id = wr.workflowId
|
|
66
|
-
WHERE wr.status IN ('running', 'waiting')
|
|
67
|
-
AND datetime(wr.lastUpdatedAt) < datetime('now', '-24 hours')
|
|
68
|
-
ORDER BY wr.lastUpdatedAt ASC;
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 1D. Silent: schedule-spawned task completed with empty/sentinel output
|
|
72
|
-
|
|
73
|
-
```sql
|
|
74
|
-
SELECT t.id, s.name AS scheduleName, t.status,
|
|
75
|
-
SUBSTR(COALESCE(t.output, ''), 1, 220) AS outSnippet,
|
|
76
|
-
LENGTH(TRIM(COALESCE(t.output, ''))) AS outLen,
|
|
77
|
-
t.lastUpdatedAt
|
|
78
|
-
FROM agent_tasks t
|
|
79
|
-
LEFT JOIN scheduled_tasks s ON s.id = t.scheduleId
|
|
80
|
-
WHERE t.status = 'completed'
|
|
81
|
-
AND t.scheduleId IS NOT NULL
|
|
82
|
-
AND datetime(t.lastUpdatedAt) > datetime('now', '-24 hours')
|
|
83
|
-
AND (
|
|
84
|
-
t.output IS NULL
|
|
85
|
-
OR TRIM(t.output) = ''
|
|
86
|
-
OR TRIM(t.output) = '⚡ Running shell command'
|
|
87
|
-
OR LENGTH(TRIM(t.output)) < 10
|
|
88
|
-
)
|
|
89
|
-
ORDER BY t.lastUpdatedAt DESC;
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 1E. Cron didn't fire (nextRunAt in the past)
|
|
93
|
-
|
|
94
|
-
```sql
|
|
95
|
-
SELECT s.id, s.name, s.cronExpression, s.lastRunAt, s.nextRunAt, s.consecutiveErrors,
|
|
96
|
-
SUBSTR(COALESCE(s.lastErrorMessage, ''), 1, 220) AS lastErrSnippet
|
|
97
|
-
FROM scheduled_tasks s
|
|
98
|
-
WHERE s.enabled = 1
|
|
99
|
-
AND s.scheduleType = 'recurring'
|
|
100
|
-
AND s.nextRunAt IS NOT NULL
|
|
101
|
-
AND datetime(s.nextRunAt) < datetime('now', '-1 hour')
|
|
102
|
-
ORDER BY s.nextRunAt ASC;
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### 1F. Schedules with consecutive errors (defensive)
|
|
106
|
-
|
|
107
|
-
```sql
|
|
108
|
-
SELECT s.id, s.name, s.cronExpression, s.consecutiveErrors, s.lastErrorAt,
|
|
109
|
-
SUBSTR(COALESCE(s.lastErrorMessage, ''), 1, 220) AS lastErrSnippet
|
|
110
|
-
FROM scheduled_tasks s
|
|
111
|
-
WHERE s.enabled = 1
|
|
112
|
-
AND s.consecutiveErrors >= 3
|
|
113
|
-
ORDER BY s.consecutiveErrors DESC;
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### 1G. Totals (for the "all clear" denominator)
|
|
117
|
-
|
|
118
|
-
```sql
|
|
119
|
-
SELECT
|
|
120
|
-
(SELECT COUNT(*) FROM workflow_runs WHERE datetime(lastUpdatedAt) > datetime('now','-24 hours')) AS workflowRuns24h,
|
|
121
|
-
(SELECT COUNT(*) FROM agent_tasks WHERE scheduleId IS NOT NULL AND datetime(lastUpdatedAt) > datetime('now','-24 hours')) AS scheduledFires24h;
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Phase 2 — Render the digest
|
|
127
|
-
|
|
128
|
-
Each bullet must include a clickable URL.
|
|
129
|
-
|
|
130
|
-
- Workflow run URL: `https://app.agent-swarm.dev/workflow-runs/<id>` → Slack format: `<https://app.agent-swarm.dev/workflow-runs/<id>|workflow:<workflowName>>`
|
|
131
|
-
- Task URL: `https://app.agent-swarm.dev/tasks/<id>` → Slack format: `<https://app.agent-swarm.dev/tasks/<id>|schedule:<scheduleName>>`
|
|
132
|
-
|
|
133
|
-
Truncate error/output snippets to 200 chars + `…` if longer. Replace newlines with ` ⏎ `.
|
|
134
|
-
|
|
135
|
-
### Template
|
|
136
|
-
|
|
137
|
-
If TOTAL issues across 1A–1F is zero:
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
:white_check_mark: *Daily Workflow + Schedule Health Audit* — <YYYY-MM-DD>
|
|
141
|
-
|
|
142
|
-
<OWNER_OR_TEAM_MENTION> All clear — <workflowRuns24h> workflow runs + <scheduledFires24h> scheduled fires in the last 24h, all produced expected output.
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
Otherwise:
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
:stethoscope: *Daily Workflow + Schedule Health Audit* — <YYYY-MM-DD>
|
|
149
|
-
|
|
150
|
-
<OWNER_OR_TEAM_MENTION> Audit window: last 24h. Totals: <workflowRuns24h> workflow runs · <scheduledFires24h> scheduled fires · *<TOTAL_ISSUES> issues*
|
|
151
|
-
|
|
152
|
-
*Hard failures — workflow runs* (<N1A>)
|
|
153
|
-
• <url|workflow:name> — failed <relative-time>
|
|
154
|
-
↳ <errSnippet>
|
|
155
|
-
|
|
156
|
-
*Hard failures — scheduled tasks* (<N1B>)
|
|
157
|
-
• <url|schedule:name> — failed <relative-time>
|
|
158
|
-
↳ <reasonSnippet OR outSnippet OR "(no failureReason set)">
|
|
159
|
-
|
|
160
|
-
*Silent: halted >24h* (<N1C>)
|
|
161
|
-
• <url|workflow:name> — status=<status>, no progress since <timestamp>
|
|
162
|
-
|
|
163
|
-
*Silent: empty output* (<N1D>)
|
|
164
|
-
• <url|schedule:name> — completed, output=<"empty" | first-N-chars>
|
|
165
|
-
|
|
166
|
-
*Cron didn't fire on time* (<N1E>)
|
|
167
|
-
• schedule:<name> (cron `<expr>`) — nextRunAt=<past-timestamp>, lastRunAt=<timestamp or "never">
|
|
168
|
-
|
|
169
|
-
*Schedules with ≥3 consecutive errors* (<N1F>)
|
|
170
|
-
• schedule:<name> — consecutiveErrors=<n>, last error: <lastErrSnippet>
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Omit any section whose count is 0. **HARD CEILING 700 characters — not the 4000-char Slack limit.** (Operator feedback, 2026-09-23: "too verbose every day".) Keep at most the top 3 items across ALL sections combined, one line each; everything else goes in the `store-progress` output, not the post. Over 700 chars ⇒ cut until it fits. A long digest is a failed run, not a thorough one.
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Phase 3 — Post to Slack and complete
|
|
178
|
-
|
|
179
|
-
1. Post `message=<rendered digest>` through configured admin delivery channels, using the in-app fallback when no external channel is configured. Prefer a top-level daily fire unless your team's convention is to thread recurring audit messages.
|
|
180
|
-
2. Call `store-progress` with `status: "completed"` and a one-paragraph `output` summary:
|
|
181
|
-
- `Issues found: hard-fail-wf=<N1A>, hard-fail-task=<N1B>, halted-24h=<N1C>, silent-empty=<N1D>, cron-stuck=<N1E>, consec-err=<N1F>.`
|
|
182
|
-
- `Totals: workflowRuns24h=<X>, scheduledFires24h=<Y>.`
|
|
183
|
-
- `Slack message ts: <ts from slack-post response>.`
|
|
184
|
-
|
|
185
|
-
## Anti-patterns
|
|
186
|
-
|
|
187
|
-
- ❌ Posting a separate Slack message per failure mode — ONE digest.
|
|
188
|
-
- ❌ Raw IDs without clickable URLs.
|
|
189
|
-
- ❌ Dumping full `error` / `output` content — truncate to 220 chars per item.
|
|
190
|
-
- ❌ Threading the daily digest somewhere your team will not scan.
|
|
191
|
-
- ❌ Skipping the "all clear" message when zero issues — the heartbeat itself is the signal that the audit ran.
|