@canonmsg/agent-sdk 11.2.0 → 12.0.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 +171 -536
- package/dist/chunks/chunk-6VK4UZHJ.js +2806 -0
- package/dist/chunks/chunk-FPQFTTND.js +4899 -0
- package/dist/chunks/chunk-OLJ7H4E2.js +14705 -0
- package/dist/chunks/mls-crypto-NZDNSPAO.js +10 -0
- package/dist/cli.js +198 -0
- package/dist/drivers/claude.d.ts +36 -0
- package/dist/drivers/code.d.ts +18 -0
- package/dist/drivers/codex.d.ts +37 -0
- package/dist/index.d.ts +12 -25
- package/dist/index.js +69 -13
- package/dist/internal/backend-contracts/agentBehaviorPolicy.d.ts +122 -0
- package/dist/internal/backend-contracts/agentDirectory.d.ts +32 -0
- package/dist/internal/backend-contracts/agentOrigin.d.ts +23 -0
- package/dist/internal/backend-contracts/agentSearch.d.ts +17 -0
- package/dist/internal/backend-contracts/api-origins.generated.d.ts +4 -0
- package/dist/internal/backend-contracts/apiErrors.d.ts +1 -0
- package/dist/internal/backend-contracts/artifactActions.d.ts +159 -0
- package/dist/internal/backend-contracts/artifacts.d.ts +386 -0
- package/dist/internal/backend-contracts/communication.d.ts +131 -0
- package/dist/internal/backend-contracts/conversationMembership.d.ts +28 -0
- package/dist/internal/backend-contracts/deliveryObservation.d.ts +23 -0
- package/dist/internal/backend-contracts/diffRedaction.d.ts +6 -0
- package/dist/internal/backend-contracts/endpoint-unread.d.ts +4 -0
- package/dist/internal/backend-contracts/endpoint.d.ts +103 -0
- package/dist/internal/backend-contracts/endpointContentPolicy.d.ts +37 -0
- package/dist/internal/backend-contracts/environment.d.ts +20 -0
- package/dist/internal/backend-contracts/externalInbound.d.ts +24 -0
- package/dist/internal/backend-contracts/firestoreValues.d.ts +9 -0
- package/dist/internal/backend-contracts/index.d.ts +48 -0
- package/dist/internal/backend-contracts/media-url.d.ts +6 -0
- package/dist/internal/backend-contracts/media.d.ts +51 -0
- package/dist/internal/backend-contracts/mediaDelivery.d.ts +46 -0
- package/dist/internal/backend-contracts/mediaTransferProtocol.d.ts +17 -0
- package/dist/internal/backend-contracts/membershipChange.d.ts +21 -0
- package/dist/internal/backend-contracts/message.d.ts +86 -0
- package/dist/internal/backend-contracts/messageText.d.ts +6 -0
- package/dist/internal/backend-contracts/mlsDevApplication.d.ts +73 -0
- package/dist/internal/backend-contracts/mlsDevCredential.d.ts +75 -0
- package/dist/internal/backend-contracts/mlsDevCredentialReconciliation.d.ts +45 -0
- package/dist/internal/backend-contracts/mlsDevDeviceCustody.d.ts +51 -0
- package/dist/internal/backend-contracts/mlsDevEnrollment.d.ts +74 -0
- package/dist/internal/backend-contracts/mlsDevGroup.d.ts +197 -0
- package/dist/internal/backend-contracts/mlsDevGroupFeed.d.ts +47 -0
- package/dist/internal/backend-contracts/mlsDevKeyPackage.d.ts +42 -0
- package/dist/internal/backend-contracts/mlsDevKeyPackages.d.ts +55 -0
- package/dist/internal/backend-contracts/moderation.d.ts +7 -0
- package/dist/internal/backend-contracts/plaintextProcessors.d.ts +63 -0
- package/dist/internal/backend-contracts/preparedContent.d.ts +54 -0
- package/dist/internal/backend-contracts/replyAuthority.d.ts +14 -0
- package/dist/internal/backend-contracts/runtimeCardFields.d.ts +66 -0
- package/dist/internal/backend-contracts/runtimeCardStorage.d.ts +3 -0
- package/dist/internal/backend-contracts/runtimeDescriptor.d.ts +88 -0
- package/dist/internal/backend-contracts/selfContext.d.ts +9 -0
- package/dist/internal/backend-contracts/turnProtocol.d.ts +43 -0
- package/dist/internal/backend-contracts/verbContract.d.ts +848 -0
- package/dist/internal/backend-contracts/verbSchemas.d.ts +1707 -0
- package/dist/internal/backend-contracts/verbWire.d.ts +493 -0
- package/dist/internal/backend-contracts/webAuth.d.ts +8 -0
- package/dist/internal/backend-contracts/workSessions.d.ts +205 -0
- package/dist/internal/core/agent-profiles.d.ts +69 -0
- package/dist/internal/core/agent-resolver.d.ts +49 -0
- package/dist/internal/core/agent-session.d.ts +12 -0
- package/dist/internal/core/approval-format.d.ts +26 -0
- package/dist/internal/core/approval-manager.d.ts +43 -0
- package/dist/internal/core/approval-types.d.ts +74 -0
- package/dist/internal/core/artifacts.d.ts +262 -0
- package/dist/internal/core/attached-native-session.d.ts +174 -0
- package/dist/internal/core/attached-session-file-store.d.ts +3 -0
- package/dist/internal/core/base-url.d.ts +1 -0
- package/dist/internal/core/cli-metadata.d.ts +13 -0
- package/dist/internal/core/client.d.ts +486 -0
- package/dist/internal/core/completed-output-journal.d.ts +39 -0
- package/dist/internal/core/constants.d.ts +4 -0
- package/dist/internal/core/control-poller.d.ts +221 -0
- package/dist/internal/core/endpoint-client.d.ts +43 -0
- package/dist/internal/core/exclusive-json-file-store.d.ts +7 -0
- package/dist/internal/core/execution-environment-mode.d.ts +8 -0
- package/dist/internal/core/execution-environment.d.ts +55 -0
- package/dist/internal/core/gifs.d.ts +35 -0
- package/dist/internal/core/group-context.d.ts +25 -0
- package/dist/internal/core/host-runtime.d.ts +257 -0
- package/dist/internal/core/inbound-frame.d.ts +64 -0
- package/dist/internal/core/index.d.ts +107 -0
- package/dist/internal/core/local-runtime-catalog.d.ts +131 -0
- package/dist/internal/core/message-format.d.ts +13 -0
- package/dist/internal/core/native-session-interaction.d.ts +44 -0
- package/dist/internal/core/node-media.d.ts +6 -0
- package/dist/internal/core/policy.d.ts +2 -0
- package/dist/internal/core/provenance.d.ts +31 -0
- package/dist/internal/core/registration-cli.d.ts +40 -0
- package/dist/internal/core/registration-profile.d.ts +10 -0
- package/dist/internal/core/registration-session.d.ts +55 -0
- package/dist/internal/core/registration.d.ts +21 -0
- package/dist/internal/core/retry.d.ts +122 -0
- package/dist/internal/core/rtdb-rest.d.ts +145 -0
- package/dist/internal/core/runtime-cards.d.ts +331 -0
- package/dist/internal/core/runtime-descriptor.d.ts +75 -0
- package/dist/internal/core/runtime-endpoints.d.ts +26 -0
- package/dist/internal/core/runtime-heartbeat.d.ts +29 -0
- package/dist/internal/core/runtime-presentation.d.ts +35 -0
- package/dist/internal/core/runtime-request-manager.d.ts +284 -0
- package/dist/internal/core/runtime-state-publisher.d.ts +42 -0
- package/dist/internal/core/self-context.d.ts +61 -0
- package/dist/internal/core/silent-turn.d.ts +86 -0
- package/dist/internal/core/stream.d.ts +77 -0
- package/dist/internal/core/turn-output-controller.d.ts +69 -0
- package/dist/internal/core/turn-protocol.d.ts +33 -0
- package/dist/internal/core/turn-verbosity.d.ts +97 -0
- package/dist/internal/core/types.d.ts +1075 -0
- package/dist/internal/core/typing-status-publisher.d.ts +14 -0
- package/dist/internal/core/unified-diff.d.ts +35 -0
- package/dist/internal/core/work-session-provider.d.ts +29 -0
- package/dist/internal/core/workspace-discovery.d.ts +17 -0
- package/dist/internal/endpoint/artifact-images.d.ts +60 -0
- package/dist/internal/endpoint/artifact-reducer.d.ts +35 -0
- package/dist/internal/endpoint/artifact-views.d.ts +113 -0
- package/dist/internal/endpoint/artifacts.d.ts +75 -0
- package/dist/internal/endpoint/delivery.d.ts +47 -0
- package/dist/internal/endpoint/engine.d.ts +219 -0
- package/dist/internal/endpoint/ephemeral.d.ts +8 -0
- package/dist/internal/endpoint/events.d.ts +32 -0
- package/dist/internal/endpoint/external-inbound.d.ts +36 -0
- package/dist/internal/endpoint/handoff.d.ts +50 -0
- package/dist/internal/endpoint/history.d.ts +22 -0
- package/dist/internal/endpoint/image-generation-errors.d.ts +2 -0
- package/dist/internal/endpoint/inbound.d.ts +29 -0
- package/dist/internal/endpoint/index.d.ts +32 -0
- package/dist/internal/endpoint/media.d.ts +172 -0
- package/dist/internal/endpoint/migration.d.ts +50 -0
- package/dist/internal/endpoint/mls-crypto.d.ts +25 -0
- package/dist/internal/endpoint/mls-dev-client.d.ts +44 -0
- package/dist/internal/endpoint/mls-dev-device.d.ts +67 -0
- package/dist/internal/endpoint/mls-dev-groups.d.ts +114 -0
- package/dist/internal/endpoint/mls-dev-key-package-service.d.ts +33 -0
- package/dist/internal/endpoint/mls-dev-key-packages.d.ts +42 -0
- package/dist/internal/endpoint/mls-dev-transport.d.ts +37 -0
- package/dist/internal/endpoint/node-mls-custody-protocol.d.ts +24 -0
- package/dist/internal/endpoint/node-mls-custody.d.ts +15 -0
- package/dist/internal/endpoint/node.d.ts +7 -0
- package/dist/internal/endpoint/observe-query.d.ts +17 -0
- package/dist/internal/endpoint/portable-node-mls-custody.d.ts +23 -0
- package/dist/internal/endpoint/queue.d.ts +22 -0
- package/dist/internal/endpoint/recovery.d.ts +27 -0
- package/dist/internal/endpoint/retention.d.ts +7 -0
- package/dist/internal/endpoint/store.d.ts +22 -0
- package/dist/internal/endpoint/sync.d.ts +33 -0
- package/dist/internal/endpoint/transient-publisher.d.ts +8 -0
- package/dist/internal/endpoint/transport.d.ts +58 -0
- package/dist/media.d.ts +1 -1
- package/dist/media.js +42 -541
- package/dist/runner/runner.d.ts +37 -0
- package/dist/runner/types.d.ts +168 -0
- package/package.json +18 -5
- package/dist/attached-session.d.ts +0 -58
- package/dist/attached-session.js +0 -638
- package/dist/bounded-file-read.d.ts +0 -14
- package/dist/bounded-file-read.js +0 -34
- package/dist/canon-agent.d.ts +0 -238
- package/dist/canon-agent.js +0 -2534
- package/dist/debouncer.d.ts +0 -18
- package/dist/debouncer.js +0 -133
- package/dist/inbound-handoff.d.ts +0 -6
- package/dist/inbound-handoff.js +0 -17
- package/dist/managed-session-host.d.ts +0 -27
- package/dist/managed-session-host.js +0 -195
- package/dist/managed-session-setup.d.ts +0 -99
- package/dist/managed-session-setup.js +0 -234
- package/dist/realtime.d.ts +0 -62
- package/dist/realtime.js +0 -193
- package/dist/runtime-card.d.ts +0 -48
- package/dist/runtime-card.js +0 -64
- package/dist/session-manager.d.ts +0 -77
- package/dist/session-manager.js +0 -285
- package/dist/turn-streaming-request.d.ts +0 -17
- package/dist/turn-streaming-request.js +0 -22
- package/dist/turn-verbosity-option.d.ts +0 -33
- package/dist/turn-verbosity-option.js +0 -23
- package/dist/types.d.ts +0 -387
- package/dist/types.js +0 -1
- package/dist/work-session-coordination.d.ts +0 -21
- package/dist/work-session-coordination.js +0 -53
- package/dist/work-session-host.d.ts +0 -31
- package/dist/work-session-host.js +0 -617
- package/dist/work-session-interactions.d.ts +0 -12
- package/dist/work-session-interactions.js +0 -173
- package/dist/work-session-state.d.ts +0 -36
- package/dist/work-session-state.js +0 -62
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import type { MediaAttachment } from '../internal/core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A runtime adapter: it only runs turns. Canon semantics (inbox, queue, Stop,
|
|
4
|
+
* turn identity, delivery, descriptor) belong to the runner. Experimental until
|
|
5
|
+
* the claude and codex drivers pass the conformance suite.
|
|
6
|
+
*/
|
|
7
|
+
export interface RuntimeDriver {
|
|
8
|
+
readonly name: 'code' | 'claude' | 'codex' | 'hermes';
|
|
9
|
+
/** Input to the generated runtime descriptor; never a static table. */
|
|
10
|
+
readonly capabilities: DriverCapabilities;
|
|
11
|
+
runTurn(turn: DriverTurn): Promise<DriverResult>;
|
|
12
|
+
/** Discard the native session, even mid-turn. */
|
|
13
|
+
reset?(session: string): Promise<void>;
|
|
14
|
+
/** Process shutdown only. */
|
|
15
|
+
close?(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface DriverTurn {
|
|
18
|
+
/** Native-session key: the conversation id. */
|
|
19
|
+
session: string;
|
|
20
|
+
/** Canon-rendered input for the model. */
|
|
21
|
+
prompt: string;
|
|
22
|
+
/** The same facts, structured and read-only; no Canon handle. */
|
|
23
|
+
input: TurnInput;
|
|
24
|
+
/** Absolute paths of this turn's materialized inbound attachments. */
|
|
25
|
+
files: string[];
|
|
26
|
+
/** The only control: Stop, no_reply, deadline, membership loss, shutdown. */
|
|
27
|
+
signal: AbortSignal;
|
|
28
|
+
/** The full visible answer so far (never a delta); preview only, never durable. */
|
|
29
|
+
onText(snapshot: string): void;
|
|
30
|
+
/** Minimal "working on…" status; replaces the row with the same id. */
|
|
31
|
+
onActivity(event: ActivityEvent): void;
|
|
32
|
+
ask(request: AskRequest): Promise<AskAnswer>;
|
|
33
|
+
/** Persisted by the runner, scoped to (installation, driver, session). */
|
|
34
|
+
state: DriverState;
|
|
35
|
+
/** Runner tools bound to this turn by a per-turn token. */
|
|
36
|
+
tools: TurnTools;
|
|
37
|
+
}
|
|
38
|
+
/** `reply: null` is deliberate silence. */
|
|
39
|
+
export interface DriverResult {
|
|
40
|
+
reply: string | null;
|
|
41
|
+
files?: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface DriverCapabilities {
|
|
44
|
+
/** 'none': every prompt carries the recent history window. */
|
|
45
|
+
sessionMemory: 'native' | 'none';
|
|
46
|
+
ask: ReadonlyArray<'approve' | 'choose' | 'text'>;
|
|
47
|
+
streaming: boolean;
|
|
48
|
+
activity: boolean;
|
|
49
|
+
/** The runtime can call TurnTools; required for model-driven no_reply. */
|
|
50
|
+
tools: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The runtime has a question tool of its own that the driver maps to `ask` (Claude Code's AskUserQuestion). Without
|
|
53
|
+
* one, a driver declaring `choose` and `text` gets the runner's `ask_question` tool, so a runtime never has two.
|
|
54
|
+
*/
|
|
55
|
+
nativeQuestions?: boolean;
|
|
56
|
+
outboundFiles: {
|
|
57
|
+
roots: string[];
|
|
58
|
+
} | false;
|
|
59
|
+
/** Across rooms; runner default 8. */
|
|
60
|
+
maxConcurrentTurns?: number;
|
|
61
|
+
}
|
|
62
|
+
export type ActivityEvent = {
|
|
63
|
+
id: string;
|
|
64
|
+
kind: 'tool' | 'status';
|
|
65
|
+
title: string;
|
|
66
|
+
state: 'running' | 'done' | 'failed';
|
|
67
|
+
};
|
|
68
|
+
export type AskRequest =
|
|
69
|
+
/**
|
|
70
|
+
* `scopeKey`: what a session approval covers, e.g. the runtime's tool name. Asks with the same key share the owner's
|
|
71
|
+
* session rule; without one, a rule covers only this exact title. A key of letters, digits, `_`, `:` and `-` (up to
|
|
72
|
+
* 64) is kept as the card's tool name and compared without regard to case; any other key is hashed.
|
|
73
|
+
*/
|
|
74
|
+
{
|
|
75
|
+
kind: 'approve';
|
|
76
|
+
id: string;
|
|
77
|
+
title: string;
|
|
78
|
+
detail?: string;
|
|
79
|
+
risk?: 'normal' | 'destructive';
|
|
80
|
+
allowSession?: boolean;
|
|
81
|
+
scopeKey?: string;
|
|
82
|
+
} | {
|
|
83
|
+
kind: 'choose';
|
|
84
|
+
id: string;
|
|
85
|
+
question: string;
|
|
86
|
+
options: Array<{
|
|
87
|
+
id: string;
|
|
88
|
+
label: string;
|
|
89
|
+
}>;
|
|
90
|
+
multiple?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/** `secret`: owner only, the value is never posted. */
|
|
93
|
+
| {
|
|
94
|
+
kind: 'text';
|
|
95
|
+
id: string;
|
|
96
|
+
question: string;
|
|
97
|
+
secret?: boolean;
|
|
98
|
+
};
|
|
99
|
+
export type AskAnswer = {
|
|
100
|
+
status: 'answered';
|
|
101
|
+
by: string;
|
|
102
|
+
allow?: boolean;
|
|
103
|
+
scope?: 'once' | 'session';
|
|
104
|
+
choices?: string[];
|
|
105
|
+
text?: string;
|
|
106
|
+
} | {
|
|
107
|
+
status: 'expired' | 'cancelled';
|
|
108
|
+
};
|
|
109
|
+
/** JSON only, at most 64 KiB per session; durable before the turn's inputs settle. */
|
|
110
|
+
export interface DriverState {
|
|
111
|
+
get<T>(key: string): T | undefined;
|
|
112
|
+
set(key: string, value: unknown): void;
|
|
113
|
+
delete(key: string): void;
|
|
114
|
+
}
|
|
115
|
+
export interface ToolDefinition {
|
|
116
|
+
name: string;
|
|
117
|
+
description: string;
|
|
118
|
+
inputSchema: Record<string, unknown>;
|
|
119
|
+
}
|
|
120
|
+
export interface ToolResult {
|
|
121
|
+
content: Array<{
|
|
122
|
+
type: 'text';
|
|
123
|
+
text: string;
|
|
124
|
+
}>;
|
|
125
|
+
isError?: boolean;
|
|
126
|
+
}
|
|
127
|
+
export interface TurnTools {
|
|
128
|
+
/** 128-bit, valid only while this turn is open. */
|
|
129
|
+
token: string;
|
|
130
|
+
/** http://127.0.0.1:<port>/mcp/t/<token> (MCP Streamable HTTP). */
|
|
131
|
+
url: string;
|
|
132
|
+
/** no_reply, communicate, react, send_file (with outbound roots) and ask_question (without native questions). */
|
|
133
|
+
definitions: ToolDefinition[];
|
|
134
|
+
/** The same handlers, in process. */
|
|
135
|
+
call(name: string, args: unknown): Promise<ToolResult>;
|
|
136
|
+
}
|
|
137
|
+
export interface TurnInputMessage {
|
|
138
|
+
readonly id: string;
|
|
139
|
+
readonly senderId: string;
|
|
140
|
+
readonly senderName?: string;
|
|
141
|
+
readonly senderType: 'human' | 'ai_agent';
|
|
142
|
+
readonly isOwner: boolean;
|
|
143
|
+
readonly text: string;
|
|
144
|
+
readonly contentType: string;
|
|
145
|
+
readonly attachments: ReadonlyArray<MediaAttachment>;
|
|
146
|
+
readonly mentions: ReadonlyArray<string>;
|
|
147
|
+
readonly replyTo?: string;
|
|
148
|
+
readonly createdAt: string;
|
|
149
|
+
}
|
|
150
|
+
export interface TurnInput {
|
|
151
|
+
readonly conversationId: string;
|
|
152
|
+
readonly room: 'direct' | 'group';
|
|
153
|
+
/** Sender of the newest input (the turn's trigger). */
|
|
154
|
+
readonly sender: {
|
|
155
|
+
readonly id: string;
|
|
156
|
+
readonly name?: string;
|
|
157
|
+
readonly type: 'human' | 'ai_agent';
|
|
158
|
+
readonly isOwner: boolean;
|
|
159
|
+
};
|
|
160
|
+
/** This turn's inputs, oldest first. */
|
|
161
|
+
readonly messages: ReadonlyArray<TurnInputMessage>;
|
|
162
|
+
/** For drivers without session memory: up to 20 earlier messages since the agent's admission, oldest first. */
|
|
163
|
+
readonly history: ReadonlyArray<TurnInputMessage>;
|
|
164
|
+
}
|
|
165
|
+
/** Thrown by a driver whose native session is unusable: the turn fails and the runner resets the session. */
|
|
166
|
+
export declare class DriverSessionError extends Error {
|
|
167
|
+
name: string;
|
|
168
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonmsg/agent-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"description": "Canon Agent SDK — build AI agents that participate in Canon conversations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,20 +15,32 @@
|
|
|
15
15
|
"types": "./dist/media.d.ts"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
|
+
"bin": {
|
|
19
|
+
"canon-agent": "dist/cli.js"
|
|
20
|
+
},
|
|
18
21
|
"files": [
|
|
19
22
|
"dist"
|
|
20
23
|
],
|
|
21
24
|
"scripts": {
|
|
22
|
-
"build": "node -
|
|
23
|
-
"dev": "tsc --watch",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
+
"build": "node ../../scripts/build-agent-sdk.mjs",
|
|
26
|
+
"dev": "tsc --watch --noEmit",
|
|
25
27
|
"prepack": "npm run build"
|
|
26
28
|
},
|
|
27
29
|
"engines": {
|
|
28
30
|
"node": ">=22.22.3"
|
|
29
31
|
},
|
|
30
32
|
"dependencies": {
|
|
31
|
-
"@
|
|
33
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
34
|
+
"@noble/curves": "2.4.0",
|
|
35
|
+
"chess.js": "1.4.0"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.289"
|
|
39
|
+
},
|
|
40
|
+
"peerDependenciesMeta": {
|
|
41
|
+
"@anthropic-ai/claude-agent-sdk": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
32
44
|
},
|
|
33
45
|
"repository": {
|
|
34
46
|
"type": "git",
|
|
@@ -39,6 +51,7 @@
|
|
|
39
51
|
"access": "public"
|
|
40
52
|
},
|
|
41
53
|
"devDependencies": {
|
|
54
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.289",
|
|
42
55
|
"@types/node": "^22.0.0",
|
|
43
56
|
"typescript": "~5.7.0",
|
|
44
57
|
"vitest": "^4.1.8"
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { CanonClient, CanonStream, type AttachedNativeSessionAdapter, type AttachedSessionBinding, type AttachedSessionPublisher, type AttachedSessionState, type AttachedSessionStore, type ResolvedAgent, type RuntimeStatePublisher } from '@canonmsg/core';
|
|
2
|
-
export type CanonAttachedSessionConnection = Pick<ResolvedAgent, 'apiKey' | 'environmentId' | 'baseUrl' | 'streamUrl' | 'rtdbUrl' | 'firebaseApiKey' | 'clientType'> & {
|
|
3
|
-
agentId: string;
|
|
4
|
-
};
|
|
5
|
-
export interface CanonAttachedSessionStatus {
|
|
6
|
-
status: 'connecting' | 'connected' | 'disconnected' | 'native' | 'accepted' | 'blocked' | 'stopped';
|
|
7
|
-
reason?: string;
|
|
8
|
-
messageId?: string;
|
|
9
|
-
nativeState?: AttachedSessionState;
|
|
10
|
-
/** REST history is an observation, not fresh permission to execute. */
|
|
11
|
-
pendingMessageIds?: string[];
|
|
12
|
-
}
|
|
13
|
-
export interface CanonAttachedSessionOptions {
|
|
14
|
-
connection: CanonAttachedSessionConnection;
|
|
15
|
-
binding: AttachedSessionBinding;
|
|
16
|
-
native: AttachedNativeSessionAdapter;
|
|
17
|
-
/** Exclusive durable store; the Core attachment closes it on stop/failure. */
|
|
18
|
-
store: AttachedSessionStore;
|
|
19
|
-
reconcileIntervalMs?: number;
|
|
20
|
-
onStatus?: (status: CanonAttachedSessionStatus) => void;
|
|
21
|
-
onError?: (error: unknown, operation: string) => void;
|
|
22
|
-
/** An account coordinator may supply its authenticated transport for several rooms. */
|
|
23
|
-
transport?: CanonAttachedSessionTransport;
|
|
24
|
-
}
|
|
25
|
-
export type CanonAttachedSessionStreamHandler = ConstructorParameters<typeof CanonStream>[0]['handler'];
|
|
26
|
-
/** Account resources stay with the coordinator; an individual room never closes them. */
|
|
27
|
-
export interface CanonAttachedSessionTransport {
|
|
28
|
-
agentId: string;
|
|
29
|
-
environmentId: string;
|
|
30
|
-
client: CanonClient;
|
|
31
|
-
publisher: RuntimeStatePublisher;
|
|
32
|
-
subscribe(handler: CanonAttachedSessionStreamHandler): () => void;
|
|
33
|
-
hasPendingInteraction?(conversationId: string): boolean;
|
|
34
|
-
/** A prepared observer can wait for its owner's durable setup acknowledgement. */
|
|
35
|
-
isRouteActive?(conversationId: string): boolean;
|
|
36
|
-
}
|
|
37
|
-
export interface CanonAttachedSession {
|
|
38
|
-
/** Resolves after native attachment and Canon transport startup, not stream termination. */
|
|
39
|
-
start(): Promise<void>;
|
|
40
|
-
/** Terminal: closes this attachment; the native session keeps running. */
|
|
41
|
-
stop(): Promise<void>;
|
|
42
|
-
getState(): AttachedSessionState;
|
|
43
|
-
/** Republish an external native interaction's waiting state. */
|
|
44
|
-
refreshRuntimeState(): void;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Connect one existing native session to one existing Canon conversation.
|
|
48
|
-
* This is account-level participation, not a second group member. The caller
|
|
49
|
-
* must hold exclusive account and native-session ownership so no competing
|
|
50
|
-
* runtime writes this account's live state or republishes the native thread.
|
|
51
|
-
*/
|
|
52
|
-
export declare function createCanonAttachedSession(options: CanonAttachedSessionOptions): CanonAttachedSession;
|
|
53
|
-
/**
|
|
54
|
-
* Observed native turns may combine local and Canon input. They are proactive
|
|
55
|
-
* agent transcript publications, never replies authorized by a particular
|
|
56
|
-
* Canon input. Core persists these immutable parts before calling send.
|
|
57
|
-
*/
|
|
58
|
-
export declare function createCanonAttachedSessionPublisher(client: Pick<CanonClient, 'sendProactiveMessage'>, binding: AttachedSessionBinding): AttachedSessionPublisher;
|