@adonis-agora/agent 0.64.1 → 0.65.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/src/agent-service.d.ts +16 -1
  3. package/dist/src/agent-service.d.ts.map +1 -1
  4. package/dist/src/agent-service.js +11 -2
  5. package/dist/src/agent-service.js.map +1 -1
  6. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -1
  7. package/dist/src/channels/adapters/evolution_api.js +25 -1
  8. package/dist/src/channels/adapters/evolution_api.js.map +1 -1
  9. package/dist/src/channels/adapters/telegram.d.ts +2 -1
  10. package/dist/src/channels/adapters/telegram.d.ts.map +1 -1
  11. package/dist/src/channels/adapters/telegram.js +57 -4
  12. package/dist/src/channels/adapters/telegram.js.map +1 -1
  13. package/dist/src/channels/adapters/whatsapp_cloud.d.ts +3 -2
  14. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -1
  15. package/dist/src/channels/adapters/whatsapp_cloud.js +55 -4
  16. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -1
  17. package/dist/src/channels/executor.d.ts +116 -0
  18. package/dist/src/channels/executor.d.ts.map +1 -0
  19. package/dist/src/channels/executor.js +138 -0
  20. package/dist/src/channels/executor.js.map +1 -0
  21. package/dist/src/channels/handler.d.ts +228 -89
  22. package/dist/src/channels/handler.d.ts.map +1 -1
  23. package/dist/src/channels/handler.js +856 -388
  24. package/dist/src/channels/handler.js.map +1 -1
  25. package/dist/src/channels/http.d.ts +15 -0
  26. package/dist/src/channels/http.d.ts.map +1 -1
  27. package/dist/src/channels/http.js +43 -0
  28. package/dist/src/channels/http.js.map +1 -1
  29. package/dist/src/channels/index.d.ts +7 -4
  30. package/dist/src/channels/index.d.ts.map +1 -1
  31. package/dist/src/channels/index.js +6 -3
  32. package/dist/src/channels/index.js.map +1 -1
  33. package/dist/src/channels/texts.d.ts +102 -0
  34. package/dist/src/channels/texts.d.ts.map +1 -0
  35. package/dist/src/channels/texts.js +79 -0
  36. package/dist/src/channels/texts.js.map +1 -0
  37. package/dist/src/channels/types.d.ts +41 -1
  38. package/dist/src/channels/types.d.ts.map +1 -1
  39. package/dist/src/durable/agent-run-context.d.ts +10 -0
  40. package/dist/src/durable/agent-run-context.d.ts.map +1 -1
  41. package/dist/src/durable/agent-run-context.js +22 -0
  42. package/dist/src/durable/agent-run-context.js.map +1 -1
  43. package/dist/src/durable/agent-run-workflow.d.ts.map +1 -1
  44. package/dist/src/durable/agent-run-workflow.js +1 -27
  45. package/dist/src/durable/agent-run-workflow.js.map +1 -1
  46. package/dist/src/durable/drive-pending-runs.d.ts +17 -0
  47. package/dist/src/durable/drive-pending-runs.d.ts.map +1 -0
  48. package/dist/src/durable/drive-pending-runs.js +41 -0
  49. package/dist/src/durable/drive-pending-runs.js.map +1 -0
  50. package/dist/src/durable/durable-agent-runner.d.ts +4 -0
  51. package/dist/src/durable/durable-agent-runner.d.ts.map +1 -1
  52. package/dist/src/durable/durable-agent-runner.js +7 -0
  53. package/dist/src/durable/durable-agent-runner.js.map +1 -1
  54. package/dist/src/durable/outside-workflow-ctx.d.ts +27 -0
  55. package/dist/src/durable/outside-workflow-ctx.d.ts.map +1 -0
  56. package/dist/src/durable/outside-workflow-ctx.js +29 -0
  57. package/dist/src/durable/outside-workflow-ctx.js.map +1 -0
  58. package/dist/src/index.d.ts +2 -2
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +1 -1
  61. package/dist/src/index.js.map +1 -1
  62. package/dist/src/opencode/durable/runner.d.ts +4 -0
  63. package/dist/src/opencode/durable/runner.d.ts.map +1 -1
  64. package/dist/src/opencode/durable/runner.js +7 -0
  65. package/dist/src/opencode/durable/runner.js.map +1 -1
  66. package/dist/src/spi/agent-runner.d.ts +8 -0
  67. package/dist/src/spi/agent-runner.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/skills/agent-setup/SKILL.md +9 -2
@@ -1,4 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
+ import { drivePendingRuns } from '../../durable/drive-pending-runs.js';
2
3
  import { openCodeLog } from '../log.js';
3
4
  import { decisionToken, isControlFlowSignal, OpenCodeRunWorkflow } from './workflow.js';
4
5
  function isRunInput(value) {
@@ -67,6 +68,12 @@ export class DurableOpenCodeAgentRunner {
67
68
  async signal(runId, toolCallId, reply) {
68
69
  await this.engine.signal(decisionToken(runId, toolCallId), reply);
69
70
  }
71
+ /** The runs {@link drive} set going that have not ended yet. */
72
+ driving = new Set();
73
+ /** Lease and execute here what of `runId` is still pending — see `drivePendingRuns`. */
74
+ async drive(runId) {
75
+ await drivePendingRuns(this.engine, runId, this.driving);
76
+ }
70
77
  /**
71
78
  * Interrupt OpenCode, cancel the run in the runtime (a run parked on a person never runs its body
72
79
  * again), and settle it here: the queue, the thread, the `cancelled` frame and the run row.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/opencode/durable/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/opencode/durable/runner.ts"],"names":[],"mappings":"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"}
@@ -55,5 +55,13 @@ export interface AgentRunner {
55
55
  */
56
56
  signal(runId: string, toolCallId: string, reply: HumanReply): Promise<void>;
57
57
  cancel(runId: string): Promise<void>;
58
+ /**
59
+ * OPTIONAL: execute in this process what of `runId` waits for a worker to pick it up — the run
60
+ * while it is not started yet, and the delegates it waits on — unless another process already
61
+ * holds it. Returns once that is set going, not once it ends. For a caller that waits on the run
62
+ * while being, itself, the work a worker is busy with (a channel job reading the turn it started):
63
+ * the run would otherwise wait for that worker. Absent → runs only where the runner sends them.
64
+ */
65
+ drive?(runId: string): Promise<void>;
58
66
  }
59
67
  //# sourceMappingURL=agent-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../../src/spi/agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF;;;;OAIG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;IACxC;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC"}
1
+ {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../../src/spi/agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF;;;;OAIG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;IACxC;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/agent",
3
- "version": "0.64.1",
3
+ "version": "0.65.1",
4
4
  "description": "Governed, durable-backed AI agent (chat + tool-calling + governance) for AdonisJS — part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -286,8 +286,15 @@ router.post(
286
286
  ```
287
287
 
288
288
  The handler verifies the webhook (token / HMAC / secret header), dedupes by provider message id,
289
- answers `200` at once and runs the turn in the background (`await handler.drain()` in tests).
290
- Replies are text-only (components → `fallbackText`), converted to the channel's markdown and split
289
+ answers `200` at once and runs the turn in the background (`await handler.drain()` in tests) — one
290
+ message at a time per conversation, each phase retried, each outgoing message sent at most once.
291
+ With `durable: true` in `config/agent.ts` the message is persisted as an `agora.channel.job` run
292
+ before the `200` and resumed after a crash (create the handler at boot in every process that runs
293
+ durable work). Text decisions only decide cards delivered to that conversation. Hooks for the app's
294
+ own flows: `unknownSender`, `beforeTurn`, `canDeliver`, `texts` as a function, `onTurnStarted`,
295
+ `renderComponent` (components as files), `prepareMedia` / `mediaLimits` / `transformInbound`,
296
+ `formatOutcome`, `onWebhook`, `allowRemember: false`.
297
+ Replies are text-only by default (components → `fallbackText`), or files `renderComponent` makes of them (`OutboundMessage.media` where the adapter declares `capabilities.media`), converted to the channel's markdown and split
291
298
  at its length limit. Media is downloaded and attached when `attachments` is configured (else the
292
299
  person is told why not). `ask` questions go out as numbered text, one at a time; the next messages
293
300
  answer them. State (message ids, questions in progress, relayed outcomes) lives in