@adonis-agora/agent 0.62.0 → 0.64.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.
Files changed (149) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/providers/agent_provider.d.ts.map +1 -1
  3. package/dist/providers/agent_provider.js +1 -12
  4. package/dist/providers/agent_provider.js.map +1 -1
  5. package/dist/src/action-proposal-service.d.ts +3 -2
  6. package/dist/src/action-proposal-service.d.ts.map +1 -1
  7. package/dist/src/action-proposal-service.js +1 -0
  8. package/dist/src/action-proposal-service.js.map +1 -1
  9. package/dist/src/action-proposal-text.d.ts +5 -0
  10. package/dist/src/action-proposal-text.d.ts.map +1 -1
  11. package/dist/src/action-proposal-text.js +1 -0
  12. package/dist/src/action-proposal-text.js.map +1 -1
  13. package/dist/src/actor-resolver.d.ts +12 -4
  14. package/dist/src/actor-resolver.d.ts.map +1 -1
  15. package/dist/src/actor-resolver.js +24 -7
  16. package/dist/src/actor-resolver.js.map +1 -1
  17. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  18. package/dist/src/ag-ui/adapter.js +32 -6
  19. package/dist/src/ag-ui/adapter.js.map +1 -1
  20. package/dist/src/ag-ui/core/encoder.d.ts +2 -1
  21. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -1
  22. package/dist/src/ag-ui/core/encoder.js +16 -5
  23. package/dist/src/ag-ui/core/encoder.js.map +1 -1
  24. package/dist/src/ag-ui/core/index.d.ts +2 -2
  25. package/dist/src/ag-ui/core/index.d.ts.map +1 -1
  26. package/dist/src/ag-ui/core/index.js +2 -2
  27. package/dist/src/ag-ui/core/index.js.map +1 -1
  28. package/dist/src/ag-ui/core/input.d.ts +21 -3
  29. package/dist/src/ag-ui/core/input.d.ts.map +1 -1
  30. package/dist/src/ag-ui/core/input.js +24 -6
  31. package/dist/src/ag-ui/core/input.js.map +1 -1
  32. package/dist/src/ag-ui/core/stream.d.ts +24 -2
  33. package/dist/src/ag-ui/core/stream.d.ts.map +1 -1
  34. package/dist/src/ag-ui/core/stream.js +25 -3
  35. package/dist/src/ag-ui/core/stream.js.map +1 -1
  36. package/dist/src/ag-ui/core/types.d.ts +2 -2
  37. package/dist/src/ag-ui/core/types.d.ts.map +1 -1
  38. package/dist/src/ag-ui/core/types.js +2 -2
  39. package/dist/src/ag-ui/core/types.js.map +1 -1
  40. package/dist/src/ag-ui/frames.d.ts +5 -1
  41. package/dist/src/ag-ui/frames.d.ts.map +1 -1
  42. package/dist/src/ag-ui/frames.js +13 -3
  43. package/dist/src/ag-ui/frames.js.map +1 -1
  44. package/dist/src/ag-ui/index.d.ts +1 -1
  45. package/dist/src/ag-ui/index.d.ts.map +1 -1
  46. package/dist/src/ag-ui/index.js +1 -1
  47. package/dist/src/ag-ui/index.js.map +1 -1
  48. package/dist/src/agent-service.d.ts +36 -3
  49. package/dist/src/agent-service.d.ts.map +1 -1
  50. package/dist/src/agent-service.js +65 -1
  51. package/dist/src/agent-service.js.map +1 -1
  52. package/dist/src/attachment-limits.d.ts +10 -0
  53. package/dist/src/attachment-limits.d.ts.map +1 -0
  54. package/dist/src/attachment-limits.js +13 -0
  55. package/dist/src/attachment-limits.js.map +1 -0
  56. package/dist/src/channels/adapters/evolution_api.d.ts +58 -0
  57. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -0
  58. package/dist/src/channels/adapters/evolution_api.js +256 -0
  59. package/dist/src/channels/adapters/evolution_api.js.map +1 -0
  60. package/dist/src/channels/adapters/telegram.d.ts +34 -0
  61. package/dist/src/channels/adapters/telegram.d.ts.map +1 -0
  62. package/dist/src/channels/adapters/telegram.js +196 -0
  63. package/dist/src/channels/adapters/telegram.js.map +1 -0
  64. package/dist/src/channels/adapters/whatsapp_cloud.d.ts +31 -0
  65. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -0
  66. package/dist/src/channels/adapters/whatsapp_cloud.js +177 -0
  67. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -0
  68. package/dist/src/channels/adapters/whatsmiau.d.ts +26 -0
  69. package/dist/src/channels/adapters/whatsmiau.d.ts.map +1 -0
  70. package/dist/src/channels/adapters/whatsmiau.js +18 -0
  71. package/dist/src/channels/adapters/whatsmiau.js.map +1 -0
  72. package/dist/src/channels/handler.d.ts +190 -0
  73. package/dist/src/channels/handler.d.ts.map +1 -0
  74. package/dist/src/channels/handler.js +626 -0
  75. package/dist/src/channels/handler.js.map +1 -0
  76. package/dist/src/channels/http.d.ts +45 -0
  77. package/dist/src/channels/http.d.ts.map +1 -0
  78. package/dist/src/channels/http.js +147 -0
  79. package/dist/src/channels/http.js.map +1 -0
  80. package/dist/src/channels/index.d.ts +17 -0
  81. package/dist/src/channels/index.d.ts.map +1 -0
  82. package/dist/src/channels/index.js +16 -0
  83. package/dist/src/channels/index.js.map +1 -0
  84. package/dist/src/channels/markdown.d.ts +12 -0
  85. package/dist/src/channels/markdown.d.ts.map +1 -0
  86. package/dist/src/channels/markdown.js +120 -0
  87. package/dist/src/channels/markdown.js.map +1 -0
  88. package/dist/src/channels/questions.d.ts +45 -0
  89. package/dist/src/channels/questions.d.ts.map +1 -0
  90. package/dist/src/channels/questions.js +131 -0
  91. package/dist/src/channels/questions.js.map +1 -0
  92. package/dist/src/channels/split.d.ts +8 -0
  93. package/dist/src/channels/split.d.ts.map +1 -0
  94. package/dist/src/channels/split.js +45 -0
  95. package/dist/src/channels/split.js.map +1 -0
  96. package/dist/src/channels/store.d.ts +78 -0
  97. package/dist/src/channels/store.d.ts.map +1 -0
  98. package/dist/src/channels/store.js +151 -0
  99. package/dist/src/channels/store.js.map +1 -0
  100. package/dist/src/channels/types.d.ts +145 -0
  101. package/dist/src/channels/types.d.ts.map +1 -0
  102. package/dist/src/channels/types.js +7 -0
  103. package/dist/src/channels/types.js.map +1 -0
  104. package/dist/src/genui/builtins.d.ts.map +1 -1
  105. package/dist/src/genui/builtins.js +65 -6
  106. package/dist/src/genui/builtins.js.map +1 -1
  107. package/dist/src/genui/catalog.d.ts +11 -2
  108. package/dist/src/genui/catalog.d.ts.map +1 -1
  109. package/dist/src/genui/catalog.js +8 -0
  110. package/dist/src/genui/catalog.js.map +1 -1
  111. package/dist/src/genui/text.d.ts +4 -3
  112. package/dist/src/genui/text.d.ts.map +1 -1
  113. package/dist/src/genui/text.js +25 -24
  114. package/dist/src/genui/text.js.map +1 -1
  115. package/dist/src/genui/tools.d.ts +2 -1
  116. package/dist/src/genui/tools.d.ts.map +1 -1
  117. package/dist/src/genui/tools.js +6 -7
  118. package/dist/src/genui/tools.js.map +1 -1
  119. package/dist/src/index.d.ts +3 -2
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +3 -2
  122. package/dist/src/index.js.map +1 -1
  123. package/dist/src/opencode/turns.d.ts +4 -2
  124. package/dist/src/opencode/turns.d.ts.map +1 -1
  125. package/dist/src/opencode/turns.js.map +1 -1
  126. package/dist/src/react/core/ag-ui-backend.d.ts +38 -14
  127. package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -1
  128. package/dist/src/react/core/ag-ui-backend.js +182 -17
  129. package/dist/src/react/core/ag-ui-backend.js.map +1 -1
  130. package/dist/src/react/core/agent-chat-transport.d.ts.map +1 -1
  131. package/dist/src/react/core/agent-chat-transport.js +22 -1
  132. package/dist/src/react/core/agent-chat-transport.js.map +1 -1
  133. package/dist/src/react/core/backend.d.ts +11 -0
  134. package/dist/src/react/core/backend.d.ts.map +1 -1
  135. package/dist/src/react/core/backend.js.map +1 -1
  136. package/dist/src/react/core/index.d.ts +1 -1
  137. package/dist/src/react/core/index.d.ts.map +1 -1
  138. package/dist/src/react/core/index.js.map +1 -1
  139. package/dist/src/stores/lucid-schema.d.ts +24 -6
  140. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  141. package/dist/src/stores/lucid-schema.js +47 -6
  142. package/dist/src/stores/lucid-schema.js.map +1 -1
  143. package/dist/src/stores/lucid.d.ts +2 -0
  144. package/dist/src/stores/lucid.d.ts.map +1 -1
  145. package/dist/src/stores/lucid.js +4 -0
  146. package/dist/src/stores/lucid.js.map +1 -1
  147. package/package.json +6 -1
  148. package/skills/agent-setup/SKILL.md +40 -3
  149. package/skills/agent-tools/SKILL.md +3 -0
@@ -0,0 +1,190 @@
1
+ import type { HttpContext } from '@adonisjs/core/http';
2
+ import { type TextActionProposalVocabulary } from '../action-proposal-text.js';
3
+ import { AgentService } from '../agent-service.js';
4
+ import type { AttachmentLimits } from '../attachment-limits.js';
5
+ import type { ActionProposal } from '../spi/action-proposal-store.js';
6
+ import type { ToolConfirmation } from '../tool-presentation.js';
7
+ import type { Actor, PageContext } from '../types.js';
8
+ import { type ChannelQuestionTexts } from './questions.js';
9
+ import { type ChannelStore } from './store.js';
10
+ import type { ChannelAdapter, InboundMedia, InboundMessage } from './types.js';
11
+ /**
12
+ * What a channel turn needs from the agent — `AgentService` is one. The optional methods turn
13
+ * features on: proposals (buttons, outcomes), questions (`answer`), media (`stageAttachment`), and
14
+ * the Lucid default store (`lucidDatabase`).
15
+ */
16
+ export interface ChannelTurnService extends Pick<AgentService, 'send' | 'subscribe' | 'skip' | 'cancel' | 'actionProposalReply'>, Partial<Pick<AgentService, 'decideActionProposal' | 'listActionProposals' | 'actionProposalVocabulary' | 'actionApprovalMode' | 'answer' | 'attachmentLimits' | 'stageAttachment' | 'lucidDatabase'>> {
17
+ }
18
+ /** A proposal the turn left pending, as the channel puts it to the person. */
19
+ export interface ChannelProposal {
20
+ id: string;
21
+ toolName: string;
22
+ confirmation?: ToolConfirmation;
23
+ }
24
+ /** Why a media message could not be attached. */
25
+ export type ChannelMediaRefusal = 'disabled' | 'type' | 'size' | 'failed';
26
+ /**
27
+ * Everything the channel says on its own (not the model). English by default, Brazilian Portuguese
28
+ * ({@link ptBrChannelTexts}) when the agent's `actionProposalText` is `ptBrActionProposalText`;
29
+ * override any.
30
+ */
31
+ export interface ChannelTexts {
32
+ /** The Confirm button's label. */
33
+ approve: string;
34
+ /** The Cancel button's label. */
35
+ reject: string;
36
+ /** What a proposal says above its buttons — default: its confirmation's bold title and detail. */
37
+ proposal(proposal: ChannelProposal): string;
38
+ /**
39
+ * How to answer a proposal by text, when there are no buttons. `approve`/`reject` are the reply
40
+ * commands, built from the configured `actionProposalText.vocabulary` — `#ID` included when more
41
+ * than one proposal is waiting.
42
+ */
43
+ instruction(commands: {
44
+ approve: string;
45
+ reject: string;
46
+ }): string;
47
+ /** An approval in blocking mode, which a text channel cannot settle. */
48
+ blockingApproval: string;
49
+ /** The turn failed. */
50
+ failed: string;
51
+ /** An approved action ran, and presented nothing the channel could show. */
52
+ actionSucceeded: string;
53
+ /** An approved action's execution failed. */
54
+ actionFailed: string;
55
+ /** A file that could not be attached — no attachment store, a type or size it refuses, a failed download. */
56
+ mediaRefused(reason: ChannelMediaRefusal, media: InboundMedia, limits: AttachmentLimits | null): string;
57
+ /** How questions (the `ask` tool, intakes) are worded. */
58
+ questions: ChannelQuestionTexts;
59
+ /** Answer a sender `actor()` maps to nobody. Omitted → say nothing. */
60
+ unknownSender?: string;
61
+ }
62
+ export declare const DEFAULT_CHANNEL_TEXTS: ChannelTexts;
63
+ /**
64
+ * Brazilian Portuguese channel texts — the default when the agent's `actionProposalText` is
65
+ * `ptBrActionProposalText`, so the reply words and what the channel says agree.
66
+ */
67
+ export declare const ptBrChannelTexts: ChannelTexts;
68
+ /**
69
+ * The channel texts that speak the language of the agent's text-decision words: {@link
70
+ * ptBrChannelTexts} for `ptBrActionProposalText` (or any vocabulary whose `language` is Portuguese),
71
+ * else {@link DEFAULT_CHANNEL_TEXTS}.
72
+ */
73
+ export declare function channelTextsFor(vocabulary?: TextActionProposalVocabulary | null): ChannelTexts;
74
+ /**
75
+ * `texts` as `channels.handle` takes it: any part, `questions` too — over the texts in the language of
76
+ * the agent's `actionProposalText` (see {@link channelTextsFor}).
77
+ */
78
+ export type ChannelTextsOverrides = Partial<Omit<ChannelTexts, 'questions'>> & {
79
+ questions?: Partial<ChannelQuestionTexts>;
80
+ };
81
+ export interface ChannelHandleOptions {
82
+ /**
83
+ * The account the sender is — from `message.from` (a phone number, a Telegram id). `null` → the
84
+ * message is not answered (or answered with `texts.unknownSender`). This IS the authentication of
85
+ * every message, so map only senders the channel itself vouches for.
86
+ */
87
+ actor(message: InboundMessage): Actor | null | Promise<Actor | null>;
88
+ /**
89
+ * The thread this conversation continues; `null`/`undefined` → a new one, reported to
90
+ * {@link onThreadCreated} so you can store it.
91
+ */
92
+ thread(actor: Actor, message: InboundMessage): string | null | undefined | Promise<string | null | undefined>;
93
+ /** A new thread was created for the conversation — remember it for {@link thread}. */
94
+ onThreadCreated?(threadId: string, actor: Actor, message: InboundMessage): void | Promise<void>;
95
+ /**
96
+ * The turn's page context. Default `{ kind: adapter.name }`. The handler adds `channel: { name,
97
+ * conversation }` to it — what a proposal's outcome is routed back by.
98
+ */
99
+ pageContext?: PageContext | ((message: InboundMessage) => PageContext);
100
+ /** The agent that answers. Default: the thread's, else the configured default. */
101
+ agentName?: string;
102
+ /** The agent service. Default: `AgentService` from the container. */
103
+ service?: ChannelTurnService;
104
+ /**
105
+ * Where the channel's short-lived state lives: message ids already taken, questions waiting for an
106
+ * answer, outcomes already relayed. Default: `lucidChannelStore()` over the agent store's database
107
+ * when the agent store is Lucid, else this process's memory.
108
+ */
109
+ store?: ChannelStore;
110
+ /** How long a message id is remembered. Default 24 h. */
111
+ dedupeTtlMs?: number;
112
+ /** Stop waiting for a turn after this long (and cancel it). Default 5 minutes. */
113
+ timeoutMs?: number;
114
+ /**
115
+ * After a proposal is approved, wait this long for it to execute and relay its outcome. `0` → do
116
+ * not wait (the decision reply is all the person gets; `channels.onSettled` can still relay it).
117
+ * Default 60 s.
118
+ */
119
+ outcomeTimeoutMs?: number;
120
+ /** How long a question waits for its answer before the agent proceeds without it. Default 30 min. */
121
+ questionTimeoutMs?: number;
122
+ /**
123
+ * What the channel says on its own. Omitted parts come from {@link channelTextsFor}: Brazilian
124
+ * Portuguese when the agent's `actionProposalText` is `ptBrActionProposalText`, else English.
125
+ */
126
+ texts?: ChannelTextsOverrides;
127
+ /** A message whose handling failed. Default: `console.error`. */
128
+ onError?(error: unknown, message: InboundMessage): void;
129
+ }
130
+ /** The route handler `channels.handle()` returns. */
131
+ export interface ChannelRouteHandler {
132
+ (ctx: HttpContext): Promise<void>;
133
+ /** Resolves once every turn this handler started has been answered — for tests and shutdown. */
134
+ drain(): Promise<void>;
135
+ }
136
+ /** The button ids for a proposal: what {@link ChannelRouteHandler} maps back to its decision. */
137
+ export declare function proposalButtonIds(proposalId: string): {
138
+ approve: string;
139
+ reject: string;
140
+ };
141
+ /** Where a turn's output goes back to — `pageContext.channel`, recorded with every proposal. */
142
+ export interface ChannelAddress {
143
+ name: string;
144
+ conversation: string;
145
+ }
146
+ /**
147
+ * The webhook route for one channel. Each request is verified (`401` when it is not the provider's),
148
+ * parsed, deduplicated by the provider's message id, and acknowledged with `200` at once; the turn
149
+ * runs after the response, so a slow model never makes the provider retry. Then:
150
+ *
151
+ * - media are downloaded and attached (held to the attachment store's limits), or refused with a text;
152
+ * - the message is sent with text-only capabilities (components arrive as their `fallbackText`);
153
+ * a text decision ("yes", "confirm #ID") is answered with its reply instead of starting a turn;
154
+ * - a press on a proposal's button decides that proposal (`via` = the adapter's name);
155
+ * - a question the turn asks is sent as text, one at a time, and the next messages answer it;
156
+ * - the reply is converted to the channel's markdown, split at its length limit, and sent;
157
+ * - a proposal the turn left pending is sent with Confirm/Cancel buttons — or, on a channel without
158
+ * them, with a text instruction in the configured `actionProposalText` vocabulary;
159
+ * - an approved proposal's outcome is relayed once it executed (see `outcomeTimeoutMs`, and
160
+ * `channels.onSettled` for one that runs later).
161
+ *
162
+ * Wants `actionApprovalMode: 'independent'`: a blocking approval holds the turn open until someone
163
+ * decides it in the app, so the channel sends what it has and `texts.blockingApproval`.
164
+ *
165
+ * Registers the adapter under its `name` for `channels.onSettled` — names must be unique.
166
+ */
167
+ export declare function handleChannel(adapter: ChannelAdapter, options: ChannelHandleOptions): ChannelRouteHandler;
168
+ /**
169
+ * `actionProposalWorker.onSettled` for text channels: relays an executed proposal's outcome to the
170
+ * conversation it was proposed in, through the adapter registered under the recorded channel name.
171
+ * Proposals from other surfaces are ignored. Safe next to the handler's own wait: an outcome is
172
+ * relayed once.
173
+ *
174
+ * ```ts
175
+ * // config/agent.ts
176
+ * actionProposalWorker: { onSettled: channels.onSettled }
177
+ * ```
178
+ */
179
+ export declare function relayChannelOutcome(proposal: ActionProposal): Promise<void>;
180
+ export declare const channels: {
181
+ /** See {@link handleChannel}. */
182
+ handle: typeof handleChannel;
183
+ /** See {@link relayChannelOutcome}. */
184
+ onSettled: typeof relayChannelOutcome;
185
+ /** Relay one proposal's outcome now; `true` when it was sent. */
186
+ deliverOutcome: (proposal: ActionProposal, service?: ChannelTurnService) => Promise<boolean>;
187
+ /** The adapter registered under `name` (by `channels.handle`), if any. */
188
+ adapter: (name: string) => ChannelAdapter | undefined;
189
+ };
190
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/channels/handler.ts"],"names":[],"mappings":"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"}