@canonmsg/agent-sdk 4.0.0 → 5.1.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.
- package/README.md +343 -41
- package/dist/auth.d.ts +22 -0
- package/dist/auth.js +73 -0
- package/dist/canon-agent.d.ts +214 -0
- package/dist/canon-agent.js +1992 -0
- package/dist/debouncer.d.ts +15 -0
- package/dist/debouncer.js +98 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.js +2 -6
- package/dist/policy-history.d.ts +10 -0
- package/dist/policy-history.js +11 -0
- package/dist/realtime.d.ts +55 -0
- package/dist/realtime.js +194 -0
- package/dist/runtime-card.d.ts +29 -0
- package/dist/runtime-card.js +22 -0
- package/dist/turn-filter.d.ts +9 -0
- package/dist/turn-filter.js +25 -0
- package/dist/types.d.ts +321 -0
- package/dist/types.js +1 -0
- package/package.json +7 -7
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
export type { AddMemberResult, AgentClientType, CanonGroupContext, CanonRuntimeActivityItem, CanonRuntimeActivityKind, CanonRuntimeActivityStatus, CanonRuntimeDescriptor, CanonRuntimeFact, CanonRuntimeFactGroup, CanonRuntimePrimitiveId, CanonRuntimeProvenance, CanonTurnContextV2, CanonMessage, CanonConversation, CanonReplyContext, CanonContact, CanonContactRequest, CanonResolveAdmissionResult, ContactAddedPayload, ContactRemovedPayload, ContactSource, AgentContext, ResolveAdmissionTargetInput, ResolvedAdmissionState, ResolvedAdmissionTargetSummary, ResolvedTargetAdmissionPayload, CanonSelfContext, CreateConversationResult, DirectSessionSelection, SendContextualMessageOptions, SendContextualMessageResult, SendContextualSelfContextInput, SendMessageOptions, SessionConfig, CreateConversationOptions, TurnLifecycleState, TurnOutputBlock, TurnOutputBlockInput, ApprovalNativeRequestMetadata, ApprovalRequestCategory, ApprovalRequestDetail, ApprovalRequestMetadata, ApprovalRisk, ApprovalReplyMetadata, ApprovalOutcomeMetadata, RuntimeInputChoice, RuntimeInputAnswers, RuntimeInputKind, RuntimeInputNativeMetadata, RuntimeInputQuestion, RuntimeCardNativeMetadata, RuntimeCardV1, SessionRule, ApprovalResult, } from '@canonmsg/core';
|
|
2
|
+
import type { AddMemberResult, CanonGroupContext, CanonMessage, CanonConversation, CanonReplyContext, ContactCardPayload, CanonRuntimeActionDispatch, CanonRuntimePrimitiveId, CanonRuntimeProvenance, CanonTurnContextV2, ApprovalNativeRequestMetadata, ApprovalRequestCategory, ApprovalRequestDetail, ApprovalResult, ApprovalRisk, RuntimeInputChoice, RuntimeInputAnswers, RuntimeInputKind, RuntimeInputNativeMetadata, RuntimeInputQuestion, RuntimeCardNativeMetadata, RuntimeCardV1, SendMessageOptions, SendContextualSelfContextInput, SessionConfig, DirectSessionSelection, TurnOutputBlock, TurnOutputBlockInput } from '@canonmsg/core';
|
|
3
|
+
import type { MaterializeMediaOptions, MaterializedCanonAttachment, ReplyWithFileOptions, UploadMediaFileOptions } from './media.js';
|
|
4
|
+
export interface ProgressMessageOptions extends SendMessageOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Persist the progress update to Firestore.
|
|
7
|
+
* By default, progress stays ephemeral and only updates the live RTDB turn state.
|
|
8
|
+
*/
|
|
9
|
+
durable?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type ProgressMessageResult = {
|
|
12
|
+
turnId: string;
|
|
13
|
+
durable: false;
|
|
14
|
+
messageId: null;
|
|
15
|
+
} | {
|
|
16
|
+
turnId: string;
|
|
17
|
+
durable: true;
|
|
18
|
+
messageId: string;
|
|
19
|
+
};
|
|
20
|
+
export interface SessionInfo {
|
|
21
|
+
/** Session ID (= conversationId) */
|
|
22
|
+
id: string;
|
|
23
|
+
/** All accumulated messages for this conversation (within the context limit), oldest first */
|
|
24
|
+
messages: CanonMessage[];
|
|
25
|
+
/** Arbitrary per-session state the agent can read/write across handler calls */
|
|
26
|
+
metadata: Record<string, unknown>;
|
|
27
|
+
queueDepth?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface TurnController {
|
|
30
|
+
id: string;
|
|
31
|
+
state: import('@canonmsg/core').TurnLifecycleState;
|
|
32
|
+
setThinking: (text?: string) => Promise<void>;
|
|
33
|
+
setStreaming: (text: string) => Promise<void>;
|
|
34
|
+
appendDelta: (delta: string) => void;
|
|
35
|
+
appendBlock: (block: string) => void;
|
|
36
|
+
appendTextSegmentDelta: (id: string, delta: string) => void;
|
|
37
|
+
replaceTextSegmentSnapshot: (id: string, text: string) => void;
|
|
38
|
+
addBlock: (block: TurnOutputBlockInput) => Promise<TurnOutputBlock>;
|
|
39
|
+
updateBlock: (id: string, patch: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence'>>) => Promise<TurnOutputBlock | null>;
|
|
40
|
+
completeBlock: (id: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence' | 'status'>>) => Promise<TurnOutputBlock | null>;
|
|
41
|
+
failBlock: (id: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence' | 'status'>>) => Promise<TurnOutputBlock | null>;
|
|
42
|
+
replaceSnapshot: (text: string) => Promise<void>;
|
|
43
|
+
flush: () => Promise<void>;
|
|
44
|
+
clear: () => Promise<void>;
|
|
45
|
+
setTool: (text: string) => Promise<void>;
|
|
46
|
+
setWaitingInput: (text?: string) => Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export interface RuntimeApprovalRequest {
|
|
49
|
+
/** Native runtime/tool/action name that is asking for permission. */
|
|
50
|
+
toolName: string;
|
|
51
|
+
/** Structured native input. Raw values are summarized/redacted before storage. */
|
|
52
|
+
toolInput?: Record<string, unknown>;
|
|
53
|
+
/** Optional pre-redacted summary when a runtime already has user-facing copy. */
|
|
54
|
+
toolSummary?: string;
|
|
55
|
+
category?: ApprovalRequestCategory;
|
|
56
|
+
risk?: ApprovalRisk;
|
|
57
|
+
riskLevel?: 'normal' | 'destructive';
|
|
58
|
+
runtimeId?: string;
|
|
59
|
+
turnId?: string;
|
|
60
|
+
native?: ApprovalNativeRequestMetadata;
|
|
61
|
+
details?: ApprovalRequestDetail[];
|
|
62
|
+
/**
|
|
63
|
+
* Ignore in-memory session rules for this approval request. Useful when the
|
|
64
|
+
* action was triggered by someone other than the agent owner.
|
|
65
|
+
*/
|
|
66
|
+
ignoreSessionRules?: boolean;
|
|
67
|
+
/** Whether an approval reply may set an in-memory session rule. */
|
|
68
|
+
allowSessionRule?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface RuntimeInputRequest {
|
|
71
|
+
kind: RuntimeInputKind;
|
|
72
|
+
title: string;
|
|
73
|
+
prompt: string;
|
|
74
|
+
choices?: RuntimeInputChoice[];
|
|
75
|
+
questions?: RuntimeInputQuestion[];
|
|
76
|
+
secretName?: string;
|
|
77
|
+
sensitive?: boolean;
|
|
78
|
+
runtimeId?: string;
|
|
79
|
+
turnId?: string;
|
|
80
|
+
native?: RuntimeInputNativeMetadata;
|
|
81
|
+
inputId?: string;
|
|
82
|
+
timeoutMs?: number;
|
|
83
|
+
}
|
|
84
|
+
export interface RuntimeInputResult {
|
|
85
|
+
status: 'submitted' | 'cancelled' | 'timeout';
|
|
86
|
+
value?: string;
|
|
87
|
+
answers?: RuntimeInputAnswers;
|
|
88
|
+
inputId: string;
|
|
89
|
+
}
|
|
90
|
+
export interface RuntimeCardRequest {
|
|
91
|
+
card: RuntimeCardV1;
|
|
92
|
+
cardId?: string;
|
|
93
|
+
expiresAt?: string | number | Date;
|
|
94
|
+
responseUserId?: string;
|
|
95
|
+
timeoutMs?: number;
|
|
96
|
+
runtimeId?: string;
|
|
97
|
+
turnId?: string;
|
|
98
|
+
native?: RuntimeCardNativeMetadata;
|
|
99
|
+
}
|
|
100
|
+
export interface RuntimeCardResult {
|
|
101
|
+
status: 'submitted' | 'cancelled' | 'timeout' | 'displayed';
|
|
102
|
+
cardId: string;
|
|
103
|
+
actionId?: string;
|
|
104
|
+
values?: Record<string, unknown>;
|
|
105
|
+
}
|
|
106
|
+
export interface MessageHandlerContext {
|
|
107
|
+
messages: CanonMessage[];
|
|
108
|
+
history: CanonMessage[];
|
|
109
|
+
/** Resolved message/media content for the latest swipe-reply target, if any. */
|
|
110
|
+
replyContext: CanonReplyContext | null;
|
|
111
|
+
conversationId: string;
|
|
112
|
+
conversation: CanonConversation;
|
|
113
|
+
/** Lightweight group awareness, present for group conversations. */
|
|
114
|
+
groupContext?: CanonGroupContext;
|
|
115
|
+
replyFinal: (text: string, options?: SendMessageOptions) => Promise<{
|
|
116
|
+
messageId: string;
|
|
117
|
+
}>;
|
|
118
|
+
replyProgress: (text: string, options?: ProgressMessageOptions) => Promise<ProgressMessageResult>;
|
|
119
|
+
/** Soft-delete a message (agent must be the sender) */
|
|
120
|
+
deleteMessage: (messageId: string) => Promise<void>;
|
|
121
|
+
/** Mark conversation as read */
|
|
122
|
+
markAsRead: () => Promise<void>;
|
|
123
|
+
/** Leave this conversation */
|
|
124
|
+
leave: () => Promise<void>;
|
|
125
|
+
/** Toggle emoji reaction on a message */
|
|
126
|
+
react: (messageId: string, emoji: string) => Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Add a member to this conversation (requires owner/admin role).
|
|
129
|
+
* Returns `{ status: 'added' }` on immediate add, or
|
|
130
|
+
* `{ status: 'pending', requestId }` if the target requires approval —
|
|
131
|
+
* a contact-request (kind: 'group_invite') is created and the join
|
|
132
|
+
* lands when the approver accepts.
|
|
133
|
+
*/
|
|
134
|
+
addMember: (userId: string) => Promise<AddMemberResult>;
|
|
135
|
+
/** Remove a member from this conversation (requires owner/admin role) */
|
|
136
|
+
removeMember: (userId: string) => Promise<void>;
|
|
137
|
+
/** Send into another Canon conversation with private cross-session self-context. */
|
|
138
|
+
sendContextualMessage: (target: {
|
|
139
|
+
targetConversationId: string;
|
|
140
|
+
} | {
|
|
141
|
+
targetUserId: string;
|
|
142
|
+
}, text: string, options: Omit<import('@canonmsg/core').SendContextualMessageOptions, 'sourceConversationId' | 'targetConversationId' | 'targetUserId' | 'text'>) => Promise<import('@canonmsg/core').SendContextualMessageResult>;
|
|
143
|
+
/** Reach a contact card from this conversation; contextual reach-outs use this conversation as source. */
|
|
144
|
+
reachOut: (card: ContactCardPayload, options?: Omit<ReachOutOptions, 'sourceConversationId'>) => Promise<ReachOutResult>;
|
|
145
|
+
/** Trusted agent identity & access context */
|
|
146
|
+
agent: import('@canonmsg/core').AgentContext;
|
|
147
|
+
/** Active private self-context to continue for this turn, if Canon supplied one. */
|
|
148
|
+
activeSelfContextId: string | null;
|
|
149
|
+
/** Canon-provided private context explaining this agent's cross-session actions. */
|
|
150
|
+
selfContexts?: import('@canonmsg/core').CanonSelfContext[];
|
|
151
|
+
/** Trusted Canon provenance for the latest inbound message in this handler batch. */
|
|
152
|
+
provenance: CanonRuntimeProvenance;
|
|
153
|
+
/** Compact structured Canon turn context for the latest inbound message in this handler batch. */
|
|
154
|
+
turnContext: CanonTurnContextV2;
|
|
155
|
+
/** Runtime turn mode requested by the sender for this inbound turn, if any. */
|
|
156
|
+
requestedTurnMode: string | null;
|
|
157
|
+
/**
|
|
158
|
+
* Ask the conversation owner to approve a native runtime action. This only
|
|
159
|
+
* renders Canon's inline approval card; runtimes must explicitly wait for
|
|
160
|
+
* and enforce the returned decision in their own approval hook.
|
|
161
|
+
*/
|
|
162
|
+
requestApproval: (request: RuntimeApprovalRequest) => Promise<ApprovalResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Ask the agent owner for runtime input such as clarification, sudo, or a
|
|
165
|
+
* secret. Sensitive values are returned only to the calling runtime and are
|
|
166
|
+
* never persisted in Canon message metadata.
|
|
167
|
+
*/
|
|
168
|
+
requestRuntimeInput: (request: RuntimeInputRequest) => Promise<RuntimeInputResult>;
|
|
169
|
+
/**
|
|
170
|
+
* Ask the agent owner to review/respond to a generic rich card. The visible
|
|
171
|
+
* card document is redacted for presentation; raw response values return
|
|
172
|
+
* only to the calling runtime through Canon's control path.
|
|
173
|
+
*/
|
|
174
|
+
requestCard: (request: RuntimeCardRequest) => Promise<RuntimeCardResult>;
|
|
175
|
+
/**
|
|
176
|
+
* Post a fire-and-forget display/report card and return immediately with
|
|
177
|
+
* `{ status: 'displayed' }` — no waiting-input lifecycle. Use requestCard for
|
|
178
|
+
* cards that expect a response. (requestCard also auto-detects action-less
|
|
179
|
+
* cards and delegates here.)
|
|
180
|
+
*/
|
|
181
|
+
sendCard: (request: RuntimeCardRequest) => Promise<RuntimeCardResult>;
|
|
182
|
+
/** Canon-managed local media access for the current conversation. */
|
|
183
|
+
media: {
|
|
184
|
+
materialize: (message?: CanonMessage, options?: Omit<MaterializeMediaOptions, 'agentId' | 'conversationId' | 'messageId'>) => Promise<MaterializedCanonAttachment[]>;
|
|
185
|
+
uploadFile: (filePath: string, options?: UploadMediaFileOptions) => Promise<{
|
|
186
|
+
url: string;
|
|
187
|
+
attachment: import('@canonmsg/core').MediaAttachment;
|
|
188
|
+
}>;
|
|
189
|
+
replyWithFile: (filePath: string, text?: string, options?: ReplyWithFileOptions) => Promise<{
|
|
190
|
+
messageId: string;
|
|
191
|
+
}>;
|
|
192
|
+
};
|
|
193
|
+
/** Per-conversation session state. Present when sessions are enabled. */
|
|
194
|
+
session?: SessionInfo;
|
|
195
|
+
/** Turn lifecycle helpers for live-work rendering and progress reporting. */
|
|
196
|
+
turn?: TurnController;
|
|
197
|
+
/** Aborted when Canon sends an interrupt/stop signal for this active turn. */
|
|
198
|
+
abortSignal: AbortSignal;
|
|
199
|
+
}
|
|
200
|
+
export type MessageHandler = (ctx: MessageHandlerContext) => Promise<void>;
|
|
201
|
+
export type MessageUpdatedHandler = (payload: import('@canonmsg/core').MessageUpdatedPayload) => void | Promise<void>;
|
|
202
|
+
export interface SessionOptions {
|
|
203
|
+
/** Enable per-conversation session management (default: false) */
|
|
204
|
+
enabled: boolean;
|
|
205
|
+
/** Max messages retained per session (default: 50) */
|
|
206
|
+
contextLimit?: number;
|
|
207
|
+
/** Max sessions processing concurrently (default: 10) */
|
|
208
|
+
concurrency?: number;
|
|
209
|
+
/** Evict idle sessions after this many ms (default: 3600000 = 1h) */
|
|
210
|
+
idleTimeoutMs?: number;
|
|
211
|
+
}
|
|
212
|
+
export type DeliveryMode = 'auto' | 'sse';
|
|
213
|
+
export type RuntimeSignalType = Extract<CanonRuntimeActionDispatch, {
|
|
214
|
+
kind: 'signal';
|
|
215
|
+
}>['signal'];
|
|
216
|
+
export interface RuntimeSignalContext {
|
|
217
|
+
conversationId: string;
|
|
218
|
+
signal: RuntimeSignalType;
|
|
219
|
+
updatedAt?: number;
|
|
220
|
+
abortSignal?: AbortSignal;
|
|
221
|
+
droppedMessageIds: string[];
|
|
222
|
+
}
|
|
223
|
+
export type RuntimeSignalHandler = (context: RuntimeSignalContext) => void | Promise<void>;
|
|
224
|
+
export interface RuntimeControlHandlers {
|
|
225
|
+
onInterrupt?: RuntimeSignalHandler;
|
|
226
|
+
onStopAndDrop?: RuntimeSignalHandler;
|
|
227
|
+
onNewSession?: RuntimeSignalHandler;
|
|
228
|
+
}
|
|
229
|
+
export type RuntimeControlSurface = 'agent' | 'host';
|
|
230
|
+
export interface RuntimePrimitiveContext {
|
|
231
|
+
conversationId: string;
|
|
232
|
+
primitive: CanonRuntimePrimitiveId;
|
|
233
|
+
args: Record<string, string | boolean>;
|
|
234
|
+
rawText?: string;
|
|
235
|
+
alias?: string;
|
|
236
|
+
requestId?: string;
|
|
237
|
+
updatedAt?: number;
|
|
238
|
+
}
|
|
239
|
+
export type RuntimePrimitiveHandler = (context: RuntimePrimitiveContext) => void | Promise<void>;
|
|
240
|
+
export type RuntimePrimitiveHandlers = Partial<Record<CanonRuntimePrimitiveId, RuntimePrimitiveHandler>> & {
|
|
241
|
+
'*'?: RuntimePrimitiveHandler;
|
|
242
|
+
};
|
|
243
|
+
export interface CanonAgentOptions {
|
|
244
|
+
apiKey: string;
|
|
245
|
+
baseUrl?: string;
|
|
246
|
+
streamUrl?: string;
|
|
247
|
+
/** `auto` resolves to SSE. */
|
|
248
|
+
deliveryMode?: DeliveryMode;
|
|
249
|
+
debounceMs?: number;
|
|
250
|
+
historyLimit?: number;
|
|
251
|
+
/** Automatically mark conversations as read when handling messages (default: true) */
|
|
252
|
+
autoMarkRead?: boolean;
|
|
253
|
+
/** Per-conversation session management */
|
|
254
|
+
sessions?: SessionOptions;
|
|
255
|
+
/** Agent client type for capability detection. Defaults to 'generic'. */
|
|
256
|
+
clientType?: import('@canonmsg/core').AgentClientType;
|
|
257
|
+
/** Optional runtime descriptor published to Canon for setup/live UI rendering. */
|
|
258
|
+
runtimeDescriptor?: import('@canonmsg/core').CanonRuntimeDescriptor;
|
|
259
|
+
/** Optional Canon runtime signal handlers. Enables interrupt controls when provided. */
|
|
260
|
+
runtimeControls?: RuntimeControlHandlers;
|
|
261
|
+
/** Runtime publishing surface. Use `host` when this agent owns live runtime controls. */
|
|
262
|
+
runtimeControlSurface?: RuntimeControlSurface;
|
|
263
|
+
/** Optional typed runtime primitive handlers. Enables descriptor-backed command controls when provided. */
|
|
264
|
+
runtimePrimitives?: RuntimePrimitiveHandlers;
|
|
265
|
+
/**
|
|
266
|
+
* Enable RTDB session-state reporting. Off by default.
|
|
267
|
+
* Turn-state reporting is automatic while handlers run.
|
|
268
|
+
*/
|
|
269
|
+
sessionState?: boolean;
|
|
270
|
+
}
|
|
271
|
+
export type ContactRequestHandler = (request: import('@canonmsg/core').CanonContactRequest) => void | Promise<void>;
|
|
272
|
+
export type ContactAddedHandler = (contact: import('@canonmsg/core').ContactAddedPayload) => void | Promise<void>;
|
|
273
|
+
export type ContactRemovedHandler = (payload: import('@canonmsg/core').ContactRemovedPayload) => void | Promise<void>;
|
|
274
|
+
/**
|
|
275
|
+
* Result of `agent.reachOut(card)` — describes which side-effect ran so the
|
|
276
|
+
* caller can decide what to tell the LLM. `messaged` means the agent opened
|
|
277
|
+
* (or sent into) a direct conversation; `requested` means the target's
|
|
278
|
+
* inbound policy required a contact request, which has been created;
|
|
279
|
+
* `pending` means a prior outbound request is still awaiting approval; and
|
|
280
|
+
* `blocked` / `unavailable` describe terminal states with `reason` set.
|
|
281
|
+
*/
|
|
282
|
+
export type ReachOutResult = {
|
|
283
|
+
status: 'messaged';
|
|
284
|
+
conversationId: string;
|
|
285
|
+
messageId?: string;
|
|
286
|
+
selfContextId?: string;
|
|
287
|
+
created?: boolean;
|
|
288
|
+
reused?: boolean;
|
|
289
|
+
sessionSelection?: DirectSessionSelection['mode'];
|
|
290
|
+
} | {
|
|
291
|
+
status: 'requested';
|
|
292
|
+
requestId: string | null;
|
|
293
|
+
deferredIntentId?: string | null;
|
|
294
|
+
} | {
|
|
295
|
+
status: 'pending';
|
|
296
|
+
requestId: string | null;
|
|
297
|
+
deferredIntentId?: string | null;
|
|
298
|
+
} | {
|
|
299
|
+
status: 'setup_required';
|
|
300
|
+
reason: string;
|
|
301
|
+
} | {
|
|
302
|
+
status: 'no_session';
|
|
303
|
+
reason: string;
|
|
304
|
+
} | {
|
|
305
|
+
status: 'blocked' | 'unavailable';
|
|
306
|
+
reason: string;
|
|
307
|
+
};
|
|
308
|
+
export interface ReachOutOptions {
|
|
309
|
+
/** Optional first message to send when admission is `allowed`. */
|
|
310
|
+
text?: string;
|
|
311
|
+
/** Optional contact-request note. Defaults to `text` when admission is `request-required`. */
|
|
312
|
+
requestMessage?: string;
|
|
313
|
+
/** Explicit session setup to use when the contact-card target is an agent. */
|
|
314
|
+
sessionConfig?: SessionConfig | null;
|
|
315
|
+
/** Whether to continue an existing direct agent session or start a fresh one. */
|
|
316
|
+
sessionSelection?: DirectSessionSelection;
|
|
317
|
+
/** Source conversation for contextual cross-session reach-outs. */
|
|
318
|
+
sourceConversationId?: string;
|
|
319
|
+
/** Private context for the agent when this reach-out sends a cross-session message. */
|
|
320
|
+
selfContext?: SendContextualSelfContextInput;
|
|
321
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonmsg/agent-sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Canon
|
|
3
|
+
"version": "5.1.0",
|
|
4
|
+
"description": "Canon Agent SDK — build AI agents that participate in Canon conversations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"
|
|
11
|
-
"
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
12
|
},
|
|
13
13
|
"./media": {
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"import": "./dist/media.js",
|
|
15
|
+
"types": "./dist/media.d.ts"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"node": ">=18.0.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@canonmsg/core": "^
|
|
31
|
+
"@canonmsg/core": "^4.2.0"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public"
|