@andreprado/agentkit 0.1.0-alpha.20 → 0.1.0-alpha.22

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.
Files changed (49) hide show
  1. package/README.md +1 -0
  2. package/docs/guides/add-channel.md +75 -4
  3. package/docs/guides/add-managed-composio.md +3 -1
  4. package/docs/guides/add-tool.md +6 -3
  5. package/docs/guides/channel-security.md +32 -1
  6. package/docs/guides/connect-whatsapp-evolution.md +121 -0
  7. package/docs/guides/connect-whatsapp-uazapi.md +126 -0
  8. package/docs/guides/create-agent.md +6 -4
  9. package/docs/guides/debug-channel.md +3 -3
  10. package/docs/guides/prepare-deploy.md +1 -1
  11. package/docs/guides/run-evals.md +5 -1
  12. package/docs/guides/use-provider.md +26 -2
  13. package/docs/llms-full.txt +82 -9
  14. package/docs/llms.txt +9 -2
  15. package/package.json +1 -1
  16. package/src/cli/commands/channels.ts +285 -14
  17. package/src/cli/deploy-chat-ui.ts +86 -15
  18. package/src/cli/help.ts +2 -2
  19. package/src/cli/index.ts +107 -8
  20. package/src/index.ts +42 -5
  21. package/src/providers/pi.ts +12 -2
  22. package/src/runtime/channel-test-harness.ts +14 -1
  23. package/src/runtime/channels/generic-webhook.ts +225 -0
  24. package/src/runtime/channels/whatsapp-evolution.ts +1357 -0
  25. package/src/runtime/channels/whatsapp-uazapi.ts +1327 -0
  26. package/src/runtime/channels.ts +1 -1
  27. package/src/runtime/chat.ts +7 -1
  28. package/src/runtime/config.ts +40 -5
  29. package/src/runtime/core/targets.ts +5 -5
  30. package/src/runtime/dev-server.ts +21 -5
  31. package/src/runtime/evals.ts +39 -24
  32. package/src/runtime/targets/cloudflare/build.ts +23 -3
  33. package/src/templates/blank.ts +29 -6
  34. package/src/templates/dentista.ts +22 -4
  35. package/src/templates/skills/agentkit-build-agent/SKILL.md +30 -2
  36. package/src/templates/skills/agentkit-capsule/SKILL.md +22 -1
  37. package/src/templates/skills/agentkit-capsule/references/docs-router.md +1 -1
  38. package/src/templates/skills/agentkit-channels/SKILL.md +25 -2
  39. package/src/templates/skills/agentkit-channels/references/channel-debugging.md +1 -1
  40. package/src/templates/skills/agentkit-channels/references/whatsapp-evolution.md +57 -0
  41. package/src/templates/skills/agentkit-channels/references/whatsapp-uazapi.md +61 -0
  42. package/src/templates/skills/agentkit-database/SKILL.md +11 -0
  43. package/src/templates/skills/agentkit-deploy/SKILL.md +2 -0
  44. package/src/templates/skills/agentkit-evals/SKILL.md +15 -0
  45. package/src/templates/skills/agentkit-improve/SKILL.md +14 -4
  46. package/src/templates/skills/agentkit-integrations/SKILL.md +22 -0
  47. package/src/templates/skills/agentkit-provider/SKILL.md +20 -2
  48. package/src/templates/skills/agentkit-tools/SKILL.md +2 -0
  49. package/src/templates/support.ts +30 -7
@@ -6,7 +6,7 @@ Switch a capsule from the offline `test/fake` provider to a Pi-backed provider.
6
6
 
7
7
  ## When To Use This
8
8
 
9
- Use this when local fake responses are no longer enough and the agent needs model behavior from OpenRouter, OpenAI, Anthropic, or another supported provider.
9
+ Use this when local fake responses are no longer enough and the agent needs model behavior from OpenRouter, OpenAI, Anthropic, OpenCode Zen, OpenCode Go, or another supported provider.
10
10
 
11
11
  The coding agent should not choose a real provider automatically. Ask the owner which provider to use, then update the capsule.
12
12
 
@@ -87,6 +87,30 @@ secrets: ["OPENROUTER_API_KEY"],
87
87
 
88
88
  Prefer model ids or aliases listed by the installed Pi SDK when available, such as `~google/gemini-flash-latest`. If an OpenRouter model id is newer than the Pi model registry, AgentKit passes the id through to OpenRouter using Pi's OpenAI-compatible transport with conservative unknown-model metadata. The provider may still reject the request if the id is invalid, inaccessible, or does not support the tools/features the agent uses.
89
89
 
90
+ OpenCode Zen:
91
+
92
+ ```ts
93
+ provider: {
94
+ name: "opencode",
95
+ model: "big-pickle",
96
+ },
97
+ secrets: ["OPENCODE_API_KEY"],
98
+ ```
99
+
100
+ Use an OpenCode Zen model id listed by the installed Pi SDK, such as `big-pickle`, `deepseek-v4-flash-free`, `claude-sonnet-4-5`, or `gpt-5.4-mini`. OpenCode Zen uses `OPENCODE_API_KEY`.
101
+
102
+ OpenCode Go:
103
+
104
+ ```ts
105
+ provider: {
106
+ name: "opencode-go",
107
+ model: "deepseek-v4-flash",
108
+ },
109
+ secrets: ["OPENCODE_API_KEY"],
110
+ ```
111
+
112
+ Use an OpenCode Go model id listed by the installed Pi SDK, such as `deepseek-v4-flash`, `deepseek-v4-pro`, `glm-5.1`, `kimi-k2.6`, `minimax-m2.7`, or `qwen3.6-plus`. OpenCode Go also uses `OPENCODE_API_KEY`.
113
+
90
114
  ## UI Verification
91
115
 
92
116
  After the provider is configured and the local secret is set, test through chat and UI:
@@ -135,7 +159,7 @@ npm run agentkit -- inspect
135
159
 
136
160
  `provider_model_unsupported`:
137
161
 
138
- For OpenAI or Anthropic, use a model id known to the installed Pi SDK for that provider. For OpenRouter, prefer a known Pi alias when possible; otherwise a raw OpenRouter model id is passed through and any remaining model error comes from OpenRouter.
162
+ For OpenAI, Anthropic, OpenCode Zen, or OpenCode Go, use a model id known to the installed Pi SDK for that provider. For OpenRouter, prefer a known Pi alias when possible; otherwise a raw OpenRouter model id is passed through and any remaining model error comes from OpenRouter.
139
163
 
140
164
  Provider returns auth failure:
141
165
 
@@ -60,8 +60,8 @@ agentkit conversations list
60
60
  agentkit conversations show <conversation-id>
61
61
  agentkit conversations trace <conversation-id> [--deploy]
62
62
  agentkit channels list
63
- agentkit channels add <website|telegram|whatsapp|discord|slack> <name> [--provider zapster|meta] [--mode interactions|bot] [--api <url>]
64
- agentkit channels connect <website|telegram|whatsapp|discord|slack> <name> [--provider zapster|meta] [--mode interactions|bot] [--api <url>]
63
+ agentkit channels add <website|telegram|whatsapp|discord|slack|webhook> <name> [--provider zapster|meta|uazapi|evolution] [--mode interactions|bot] [--api <url>]
64
+ agentkit channels connect <website|telegram|whatsapp|discord|slack|webhook> <name> [--provider zapster|meta|uazapi|evolution] [--mode interactions|bot] [--api <url>]
65
65
  agentkit channels setup <name> [--apply] [--api <url>]
66
66
  agentkit channels status <name> [--api <url>]
67
67
  agentkit channels test <name> [--message <text>] [--fixture <path>] [--api <url>]
@@ -161,7 +161,7 @@ Then open the folder in Codex, Claude Code, or another coding agent and ask dire
161
161
  Develop an appointment and intake agent for an ophthalmology office.
162
162
  ```
163
163
 
164
- The coding agent should infer the first useful version, edit `prompts/instructions.md`, `agentkit.config.ts`, `schema.sql`, `tools/`, and `evals/`, then run the verification commands before finishing. Do not wait for a wizard or recipe. AgentKit provides the scaffold and contract; the coding agent implements directly in the capsule.
164
+ The coding agent should infer the first useful version, edit `prompts/instructions.md`, `agentkit.config.ts`, `schema.sql`, `tools/`, and `evals/`, then run the verification commands before finishing. Do not send the owner back to a CLI brief wizard. AgentKit provides the scaffold, contract, and skills; the coding agent implements directly in the capsule from the owner's chat message.
165
165
 
166
166
  Optional handoff shortcut:
167
167
 
@@ -217,6 +217,8 @@ test
217
217
  openai
218
218
  anthropic
219
219
  openrouter
220
+ opencode
221
+ opencode-go
220
222
  custom
221
223
  ```
222
224
 
@@ -227,6 +229,8 @@ test/fake
227
229
  openai via Pi SDK
228
230
  anthropic via Pi SDK
229
231
  openrouter via Pi SDK
232
+ opencode via Pi SDK
233
+ opencode-go via Pi SDK
230
234
  ```
231
235
 
232
236
  `custom` is a reserved config value. It is not implemented as a local provider adapter yet.
@@ -245,7 +249,7 @@ secrets: [],
245
249
 
246
250
  `test/fake` is deterministic. It is useful for scaffold checks, direct tool checks, and fake-provider evals, but it does not validate natural conversation quality.
247
251
 
248
- Before claiming real conversation behavior has been tested, ask the owner which provider to use: OpenRouter, OpenAI, Anthropic, or another supported provider. Do not choose for them. After the owner chooses, update `agentkit.config.ts`, `.env.schema`, local secrets, hosted secrets if deploying, then rerun chat/UI checks.
252
+ Before claiming real conversation behavior has been tested, ask the owner which provider to use: OpenRouter, OpenAI, Anthropic, OpenCode Zen, OpenCode Go, or another supported provider. Do not choose for them. After the owner chooses, update `agentkit.config.ts`, `.env.schema`, local secrets, hosted secrets if deploying, then rerun chat/UI checks.
249
253
 
250
254
  OpenAI example:
251
255
 
@@ -270,6 +274,30 @@ If a provider key is missing, the runtime returns `secret_not_found`.
270
274
 
271
275
  For OpenRouter, prefer model ids or aliases known to the installed Pi SDK, such as `~google/gemini-flash-latest`. If an OpenRouter id is newer than Pi's registry, AgentKit passes the raw id through to OpenRouter with conservative unknown-model metadata. OpenRouter can still reject invalid, inaccessible, or unsupported models, and unknown-model cost/capability metadata is not authoritative.
272
276
 
277
+ OpenCode Zen example:
278
+
279
+ ```ts
280
+ provider: {
281
+ name: "opencode",
282
+ model: "big-pickle",
283
+ },
284
+ secrets: ["OPENCODE_API_KEY"],
285
+ ```
286
+
287
+ Use an OpenCode Zen model id listed by the installed Pi SDK, such as `big-pickle`, `deepseek-v4-flash-free`, `claude-sonnet-4-5`, or `gpt-5.4-mini`.
288
+
289
+ OpenCode Go example:
290
+
291
+ ```ts
292
+ provider: {
293
+ name: "opencode-go",
294
+ model: "deepseek-v4-flash",
295
+ },
296
+ secrets: ["OPENCODE_API_KEY"],
297
+ ```
298
+
299
+ Use an OpenCode Go model id listed by the installed Pi SDK, such as `deepseek-v4-flash`, `deepseek-v4-pro`, `glm-5.1`, `kimi-k2.6`, `minimax-m2.7`, or `qwen3.6-plus`.
300
+
273
301
  ## Knowledge Contract
274
302
 
275
303
  Knowledge is AgentKit's native retrieval layer for facts the agent should ground in source files. Use it for FAQs, prices, policies, service descriptions, procedures, CSV tables, and reference docs. Do not put secrets, credentials, `.env` contents, or live customer/payment records in Knowledge. Use tools for live or authorization-sensitive data.
@@ -344,7 +372,7 @@ Channels are hosted inbound/outbound conversation transports. They are separate
344
372
  Use these helpers in `agentkit.config.ts`:
345
373
 
346
374
  ```ts
347
- import { defineAgent, discordChannel, slackChannel, telegramChannel, whatsappChannel, websiteChannel } from "@andreprado/agentkit";
375
+ import { defineAgent, discordChannel, slackChannel, telegramChannel, webhookChannel, whatsappChannel, websiteChannel } from "@andreprado/agentkit";
348
376
 
349
377
  export default defineAgent({
350
378
  name: "support-agent",
@@ -357,9 +385,11 @@ export default defineAgent({
357
385
  websiteChannel({ name: "website-chat" }),
358
386
  telegramChannel({ name: "support-telegram" }),
359
387
  whatsappChannel({ name: "support-whatsapp", provider: "zapster" }),
388
+ whatsappChannel({ name: "support-uazapi", provider: "uazapi" }),
360
389
  discordChannel({ name: "support-discord" }),
361
390
  discordChannel({ name: "server-discord", mode: "bot" }),
362
391
  slackChannel({ name: "support-slack" }),
392
+ webhookChannel({ name: "n8n-webhook" }),
363
393
  ],
364
394
  access: { mode: "public" },
365
395
  storage: { driver: "agentkit" },
@@ -398,6 +428,8 @@ Useful guides:
398
428
  - Connect Discord: `docs/guides/connect-discord.md`
399
429
  - Connect Slack: `docs/guides/connect-slack.md`
400
430
  - Connect Telegram: `docs/guides/connect-telegram.md`
431
+ - Connect WhatsApp through Evolution API: `docs/guides/connect-whatsapp-evolution.md`
432
+ - Connect WhatsApp through UAZAPI: `docs/guides/connect-whatsapp-uazapi.md`
401
433
  - Connect WhatsApp through Zapster: `docs/guides/connect-whatsapp-zapster.md`
402
434
  - Debug a channel: `docs/guides/debug-channel.md`
403
435
  - Channel security: `docs/guides/channel-security.md`
@@ -417,6 +449,22 @@ ZAPSTER_INSTANCE_ID
417
449
  ZAPSTER_WEBHOOK_ID
418
450
  ```
419
451
 
452
+ UAZAPI WhatsApp required secrets:
453
+
454
+ ```txt
455
+ UAZAPI_BASE_URL
456
+ UAZAPI_TOKEN
457
+ ```
458
+
459
+ Evolution API WhatsApp required secrets:
460
+
461
+ ```txt
462
+ EVOLUTION_API_BASE_URL
463
+ EVOLUTION_API_KEY
464
+ EVOLUTION_INSTANCE_NAME
465
+ EVOLUTION_WEBHOOK_TOKEN
466
+ ```
467
+
420
468
  Discord slash-command required secret:
421
469
 
422
470
  ```txt
@@ -429,6 +477,24 @@ Discord bot-mode required secret:
429
477
  DISCORD_BOT_TOKEN
430
478
  ```
431
479
 
480
+ Generic webhook required secret:
481
+
482
+ ```txt
483
+ AGENTKIT_WEBHOOK_SECRET
484
+ ```
485
+
486
+ Generic webhook payloads should be canonical JSON:
487
+
488
+ ```json
489
+ {
490
+ "event_id": "evt_123",
491
+ "external_id": "customer_123",
492
+ "message": "hello from n8n"
493
+ }
494
+ ```
495
+
496
+ Use `Authorization: Bearer <AGENTKIT_WEBHOOK_SECRET>`, `X-AgentKit-Webhook-Secret`, or `X-AgentKit-Webhook-Signature: sha256=<hmac>` where the HMAC is SHA-256 over the exact raw JSON body. The hosted URL is `/channels/<name>/webhook`.
497
+
432
498
  Common channel verification:
433
499
 
434
500
  ```sh
@@ -436,9 +502,12 @@ agentkit inspect
436
502
  agentkit deploy
437
503
  agentkit channels list
438
504
  agentkit channels add telegram support-telegram
505
+ agentkit channels connect whatsapp main-whatsapp --provider evolution
506
+ agentkit channels connect whatsapp support-whatsapp --provider uazapi
439
507
  agentkit channels connect discord support-discord
440
508
  agentkit channels connect discord server-discord --mode bot
441
509
  agentkit channels connect slack support-slack
510
+ agentkit channels connect webhook n8n-webhook
442
511
  agentkit channels setup support-telegram
443
512
  agentkit channels test support-telegram --message "hello"
444
513
  agentkit channels test-audio support-telegram --fixture voice-note
@@ -447,7 +516,7 @@ agentkit channels deliveries list support-telegram
447
516
  agentkit channels deliveries show <delivery-id>
448
517
  ```
449
518
 
450
- `channels connect` creates or refreshes the channel resource, validates secrets, runs provider setup when supported, then runs the official synthetic smoke. `channels setup` is read-only by default. `channels setup <telegram-name> --apply` calls Telegram `setWebhook` and requires `TELEGRAM_BOT_TOKEN` plus `TELEGRAM_WEBHOOK_SECRET`.
519
+ `channels connect` creates or refreshes the channel resource, validates secrets, runs provider setup when supported, then runs the official synthetic smoke. `channels setup` is read-only by default. `channels setup <telegram-name> --apply` calls Telegram `setWebhook` and requires `TELEGRAM_BOT_TOKEN` plus `TELEGRAM_WEBHOOK_SECRET`. `channels setup <uazapi-whatsapp-name> --apply` calls UAZAPI `/webhook` and requires `UAZAPI_BASE_URL` plus `UAZAPI_TOKEN`. `channels setup <evolution-whatsapp-name> --apply` calls Evolution API `/webhook/set/{instance}` and requires `EVOLUTION_API_BASE_URL`, `EVOLUTION_API_KEY`, `EVOLUTION_INSTANCE_NAME`, and `EVOLUTION_WEBHOOK_TOKEN`.
451
520
 
452
521
  Discord slash-command mode validates `X-Signature-Ed25519` and `X-Signature-Timestamp` against `DISCORD_PUBLIC_KEY`, answers signed `PING` requests with `type: 1`, acknowledges slash commands with a deferred response, then sends the final answer as an interaction follow-up. Discord bot mode uses `DISCORD_BOT_TOKEN`, Discord Gateway `MESSAGE_CREATE`, Message Content Intent, and `/channels/<channel_id>/messages` bot replies. Discord channels support buffering but do not support `audio` in V1.
453
522
 
@@ -456,10 +525,14 @@ Default tests are offline. Real provider smoke tests are opt-in:
456
525
  ```sh
457
526
  AGENTKIT_RUN_TELEGRAM_CHANNEL_TESTS=1 bun test
458
527
  AGENTKIT_RUN_ZAPSTER_CHANNEL_TESTS=1 bun test
528
+ AGENTKIT_RUN_UAZAPI_CHANNEL_TESTS=1 bun test
529
+ AGENTKIT_RUN_EVOLUTION_CHANNEL_TESTS=1 bun test
459
530
  ```
460
531
 
461
532
  Telegram smoke also requires `TELEGRAM_BOT_TOKEN`, `TELEGRAM_WEBHOOK_SECRET`, and `AGENTKIT_TELEGRAM_WEBHOOK_URL`.
462
533
  Zapster smoke also requires `ZAPSTER_API_KEY`, `AGENTKIT_ZAPSTER_SEND_URL`, and `AGENTKIT_ZAPSTER_TO`.
534
+ UAZAPI smoke also requires `UAZAPI_BASE_URL`, `UAZAPI_TOKEN`, and `AGENTKIT_UAZAPI_TO`.
535
+ Evolution smoke also requires `EVOLUTION_API_BASE_URL`, `EVOLUTION_API_KEY`, `EVOLUTION_INSTANCE_NAME`, and `AGENTKIT_EVOLUTION_TO`.
463
536
 
464
537
  ## Tool Contract
465
538
 
@@ -557,7 +630,7 @@ CREATE TABLE IF NOT EXISTS appointments (
557
630
  );
558
631
  ```
559
632
 
560
- `schema.sql` is an idempotent bootstrap file in v1. Use `CREATE TABLE IF NOT EXISTS`, `CREATE INDEX IF NOT EXISTS`, and only safe additive `ALTER TABLE` statements. AgentKit does not automatically run destructive changes or ordered `migrations/*.sql` yet.
633
+ `schema.sql` is an idempotent bootstrap file. Use `CREATE TABLE IF NOT EXISTS`, `CREATE INDEX IF NOT EXISTS`, and only safe additive `ALTER TABLE` statements. Use ordered `migrations/*.sql` for production-shaped schema evolution; `agentkit db migrate` applies unapplied local migrations before `schema.sql`.
561
634
 
562
635
  Example tool:
563
636
 
@@ -786,7 +859,7 @@ tools.order
786
859
  tools.persisted
787
860
  ```
788
861
 
789
- Import `defineEval` from `@andreprado/agentkit` when writing new evals. `tools.persisted` validates the tool call saved in local SQLite `tool_calls`, not a provider-specific raw response shape. It can be a tool name string or an object with `name`, `input`, `output`, `rendered`, `status`, and/or `visibility`. `tool_call` and `persisted_tool_call` remain accepted as backwards-compatible aliases, but new evals should use `tools.persisted`.
862
+ Import `defineEval` from `@andreprado/agentkit` when writing new evals. `tools.persisted` validates the tool call saved in the eval run's local SQLite `tool_calls`, not a provider-specific raw response shape. It can be a tool name string or an object with `name`, `input`, `output`, `rendered`, `status`, and/or `visibility`. `tool_call` and `persisted_tool_call` remain accepted as backwards-compatible aliases, but new evals should use `tools.persisted`.
790
863
 
791
864
  For date-sensitive evals, set top-level `now` to an ISO timestamp with an explicit timezone designator such as `Z` or `-05:00`. AgentKit uses that fixed clock for every turn and tool call in the eval so "today", "tomorrow", and weekdays remain deterministic while normal chat continues to use the real current date.
792
865
 
@@ -894,7 +967,7 @@ agentkit deploy smoke --message "hello"
894
967
  agentkit chat-ui --deploy
895
968
  ```
896
969
 
897
- `agentkit deploy doctor` checks AgentKit Cloud login, hosted deploy entitlement, online deploy capacity, hosted secrets, local `.env` names that still need `agentkit secret set`, managed Composio API/auth-config readiness by toolkit, and private-access runtime token handling. `agentkit deploy` sends the capsule to AgentKit Cloud, runs the same readiness check automatically before building and uploading, updates the current project deploy slot by default, and writes the local chat/UI deploy access token to `.agentkit/chat-access-token.json` for hosted deploys. `agentkit deploy --smoke "hello"` deploys and then tests `/v1/chat` with the deploy access token. `agentkit deploy smoke --message "hello"` repeats that smoke against the last local deploy. `agentkit chat-ui --deploy` serves a local UI pointed at the hosted deploy using that token without exposing it to browser code, shows the conversation id and tool calls, and supports starting a new conversation. Use `agentkit conversations trace <conversation-id> --deploy` to pull hosted conversation messages and tool calls from the last deploy. Production deploys require an account with `cloudflare_deploy_alpha` or purchased/manual deploy slots; local commands and dry-run builds do not require login. AgentKit owns infrastructure selection, backend migration, managed secrets, and public URL creation.
970
+ `agentkit deploy doctor` checks AgentKit Cloud login, hosted deploy entitlement, online deploy capacity, hosted secrets, local `.env` names that still need `agentkit secret set`, managed Composio API/auth-config readiness by toolkit, and private-access runtime token handling. `agentkit deploy` sends the capsule to AgentKit Cloud, runs the same readiness check automatically before building and uploading, updates the current project deploy slot by default, writes the local chat/UI deploy access token to `.agentkit/chat-access-token.json`, and prints a production handoff with URL, UI command, secret status, database/schema artifact, integration connect commands, smoke status, and the next recommended command. `agentkit deploy --smoke "hello"` deploys and then tests `/v1/chat` with the deploy access token. `agentkit deploy smoke --message "hello"` repeats that smoke against the last local deploy. `agentkit chat-ui --deploy` serves a local UI pointed at the hosted deploy using that token without exposing it to browser code, shows the conversation id and tool calls, and supports starting a new conversation. Use `agentkit conversations trace <conversation-id> --deploy` to pull hosted conversation messages and tool calls from the last deploy. Production deploys require an account with `cloudflare_deploy_alpha` or purchased/manual deploy slots; local commands and dry-run builds do not require login. AgentKit owns infrastructure selection, backend migration, managed secrets, and public URL creation.
898
971
 
899
972
  The CLI defaults to the hosted AgentKit Cloud API at `https://agentkit-cloud.aibuilders.com.br`. Use `AGENTKIT_CLOUD_API_URL` or `agentkit deploy --api <url>` only when the owner gives you a non-default AgentKit Cloud API URL.
900
973
 
package/docs/llms.txt CHANGED
@@ -24,6 +24,8 @@ Task guides:
24
24
  - Connect Discord: `docs/guides/connect-discord.md`
25
25
  - Connect Slack: `docs/guides/connect-slack.md`
26
26
  - Connect Telegram: `docs/guides/connect-telegram.md`
27
+ - Connect WhatsApp through Evolution API: `docs/guides/connect-whatsapp-evolution.md`
28
+ - Connect WhatsApp through UAZAPI: `docs/guides/connect-whatsapp-uazapi.md`
27
29
  - Connect WhatsApp through Zapster: `docs/guides/connect-whatsapp-zapster.md`
28
30
  - Follow channel webhook and delivery-log safety rules: `docs/guides/channel-security.md`
29
31
  - Follow secret, access, and tool safety rules: `docs/guides/security-rules.md`
@@ -55,9 +57,12 @@ agentkit conversations show <conversation-id>
55
57
  agentkit conversations trace <conversation-id> [--deploy]
56
58
  agentkit channels list
57
59
  agentkit channels add telegram support-telegram
60
+ agentkit channels connect whatsapp main-whatsapp --provider evolution
61
+ agentkit channels connect whatsapp support-whatsapp --provider uazapi
58
62
  agentkit channels connect discord support-discord
59
63
  agentkit channels connect discord server-discord --mode bot
60
64
  agentkit channels connect slack support-slack
65
+ agentkit channels connect webhook n8n-webhook
61
66
  agentkit channels setup support-telegram
62
67
  agentkit channels status support-telegram
63
68
  agentkit channels test support-telegram --message "hello"
@@ -90,16 +95,18 @@ agentkit open
90
95
 
91
96
  On Windows PowerShell, if `npm.ps1` or `npx.ps1` is blocked with `PSSecurityException`, run capsule scripts through the `.cmd` shims, for example `npm.cmd run agentkit -- inspect`, `npm.cmd run agentkit -- knowledge sync`, or `npm.cmd run eval`.
92
97
 
93
- Generated capsules include `AGENTKIT.md`, `AGENTS.md`, and a repo-local `skills/` pack so Codex, Claude Code, or another coding agent can treat the owner's natural-language request as the brief and start building immediately without loading the full contract by default. Start with `skills/agentkit-capsule/SKILL.md`, then load the task skill for the current work. `agentkit handoff codex "Develop an ophthalmology office intake agent"` is an optional prompt-printing shortcut for users who are not already inside a coding-agent workspace. There is no wizard or recipe layer: the coding agent edits the capsule directly from the scaffold and contract.
98
+ Generated capsules include `AGENTKIT.md`, `AGENTS.md`, and a repo-local `skills/` pack so Codex, Claude Code, or another coding agent can treat the owner's natural-language request as the brief and start building immediately without loading the full contract by default. Start with `skills/agentkit-capsule/SKILL.md`, then load the task skill for the current work. `agentkit handoff codex "Develop an ophthalmology office intake agent"` is an optional prompt-printing shortcut for users who are not already inside a coding-agent workspace. There is no AgentKit CLI wizard in the normal flow: the coding agent edits the capsule directly from the scaffold and contract.
94
99
 
95
100
  UI testing is part of the handoff. For local UI testing, run `agentkit dev`, open the printed `Chat:` URL, and tell the owner the exact URL. After hosted deploy, run `agentkit chat-ui --deploy`, open the printed `Chat:` URL, and tell the owner it is connected to the deploy.
96
101
 
97
102
  Hosted Chat UI shows the current conversation id, tool calls, tool errors, and a new-conversation control. Use `agentkit conversations trace <conversation-id> --deploy` to pull the hosted trace from the last deploy.
98
103
 
99
- `test/fake` is deterministic and validates scaffold, direct tool calls, and fake-provider evals. It does not validate natural conversation quality. Before claiming real conversation behavior has been tested, ask the owner which provider to use: OpenRouter, OpenAI, Anthropic, or another supported provider. Do not choose for them.
104
+ `test/fake` is deterministic and validates scaffold, direct tool calls, and fake-provider evals. It does not validate natural conversation quality. Before claiming real conversation behavior has been tested, ask the owner which provider to use: OpenRouter, OpenAI, Anthropic, OpenCode Zen, OpenCode Go, or another supported provider. Do not choose for them.
100
105
 
101
106
  For OpenRouter, prefer model ids or aliases known to the installed Pi SDK, such as `~google/gemini-flash-latest`. If an OpenRouter id is newer than Pi's registry, AgentKit passes the raw id through to OpenRouter with conservative unknown-model metadata; OpenRouter can still reject invalid, inaccessible, or unsupported models.
102
107
 
108
+ For OpenCode Zen, use `provider: { name: "opencode", model: "big-pickle" }`. For OpenCode Go, use `provider: { name: "opencode-go", model: "deepseek-v4-flash" }`. Both use `OPENCODE_API_KEY` in `secrets` and `.env.schema`.
109
+
103
110
  AgentKit injects the current ISO timestamp, local date, weekday, local date/time, and timezone dynamically into every chat run. Set `timeZone` in `agentkit.config.ts` for scheduling agents so "today", "tomorrow", and weekdays resolve in the business/user timezone; otherwise AgentKit falls back to `AGENTKIT_TIME_ZONE`, valid `TZ`, then the runtime default. Do not hardcode today's date in prompts.
104
111
 
105
112
  Current local endpoints from `agentkit dev`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andreprado/agentkit",
3
- "version": "0.1.0-alpha.20",
3
+ "version": "0.1.0-alpha.22",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "repository": {