@canonmsg/core 0.15.5 → 0.16.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.
@@ -132,6 +132,7 @@ export function buildAgentSessionSnapshot(input) {
132
132
  executionFallbackReason: input.sessionState?.executionFallbackReason,
133
133
  turnState: input.turnState?.state,
134
134
  supportsQueue: input.turnState?.capabilities?.supportsQueue,
135
+ supportsInputInterrupt: input.turnState?.capabilities?.supportsInterrupt,
135
136
  queueDepth: input.turnState?.queueDepth ?? 0,
136
137
  waitingForInput: input.turnState?.state === 'waiting_input',
137
138
  contextUsage: input.sessionState?.contextUsage,
package/dist/browser.d.ts CHANGED
@@ -7,7 +7,7 @@ export type { ExecutionEnvironmentMode } from './execution-environment-mode.js';
7
7
  export type { CanonSelfContext, CanonSelfContextType, SelfContextPromptRenderOptions, SendContextualMessageOptions, SendContextualMessageResult, SendContextualSelfContextInput, } from './self-context.js';
8
8
  export { buildSelfContextPromptLines, normalizeSelfContexts, } from './self-context.js';
9
9
  export { buildAgentSessionSnapshot } from './agent-session.js';
10
- export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
10
+ export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, RUNTIME_NEW_SESSION_ACTION, RUNTIME_STOP_ACTION, RUNTIME_STOP_AND_DROP_ACTION, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
11
11
  export type { AgentBehaviorSettings, ParticipationHistoryMessage, ParticipationHistorySnapshot, ParticipationStyle, ResolvedAgentBehaviorPolicy, } from './policy.js';
12
12
  export { buildParticipationHistorySnapshot, buildParticipationHistorySnapshots, buildBehaviorPolicyLines, DEFAULT_PARTICIPATION_HISTORY_FETCH_LIMIT, evaluateParticipationPolicy, getDefaultParticipationPolicy, resolveAgentBehaviorPolicy, } from './policy.js';
13
13
  export { DEFAULT_RUNTIME_CAPABILITIES, FINAL_MESSAGE_HANDOFF_MS, isTurnOpen, normalizeTurnMetadata, normalizeTurnState, resolveTurnMessageSemantics, shouldPromoteConversationMessage, shouldTriggerAgentTurn, } from './turn-protocol.js';
package/dist/browser.js CHANGED
@@ -4,7 +4,7 @@ export { DEFAULT_BASE_URL, DEFAULT_STREAM_URL, DEFAULT_RTDB_URL, FIREBASE_WEB_AP
4
4
  export { EXECUTION_ENVIRONMENT_MODES, isExecutionEnvironmentMode, } from './execution-environment-mode.js';
5
5
  export { buildSelfContextPromptLines, normalizeSelfContexts, } from './self-context.js';
6
6
  export { buildAgentSessionSnapshot } from './agent-session.js';
7
- export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
7
+ export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, RUNTIME_NEW_SESSION_ACTION, RUNTIME_STOP_ACTION, RUNTIME_STOP_AND_DROP_ACTION, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
8
8
  export { buildParticipationHistorySnapshot, buildParticipationHistorySnapshots, buildBehaviorPolicyLines, DEFAULT_PARTICIPATION_HISTORY_FETCH_LIMIT, evaluateParticipationPolicy, getDefaultParticipationPolicy, resolveAgentBehaviorPolicy, } from './policy.js';
9
9
  export { DEFAULT_RUNTIME_CAPABILITIES, FINAL_MESSAGE_HANDOFF_MS, isTurnOpen, normalizeTurnMetadata, normalizeTurnState, resolveTurnMessageSemantics, shouldPromoteConversationMessage, shouldTriggerAgentTurn, } from './turn-protocol.js';
10
10
  export { buildApprovalReply, buildApprovalRequest, buildApprovalOutcome, generateApprovalId, parseTextApprovalReply, redactSecrets, } from './approval-format.js';
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { buildConfiguredWorkspaceOptionsWithRoots, buildPublicWorkspaceRoots, bu
6
6
  export type { ConfiguredWorkspaceRoot, WorkspaceDiscoveryResult, } from './workspace-discovery.js';
7
7
  export { CanonClient, CanonApiError } from './client.js';
8
8
  export { buildAgentSessionSnapshot } from './agent-session.js';
9
- export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
9
+ export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, RUNTIME_NEW_SESSION_ACTION, RUNTIME_STOP_ACTION, RUNTIME_STOP_AND_DROP_ACTION, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
10
10
  export { CanonStream } from './stream.js';
11
11
  export type { StreamHandler } from './stream.js';
12
12
  export type { PolicyRole, ParticipationStyle, RepresentationMode, PermissionLevel, ConversationScope, AgentBehaviorSettings, Participant, Relationship, ContextOverlay, BehaviorProfile, AdmissionPolicy, RuntimeControlPolicy, ActionApprovalPolicy, ParticipationPolicy, ResolvedPolicy, ResolvedTurnEligibility, ResolvedAgentBehaviorPolicy, ParticipationHistoryMessage, ParticipationHistorySnapshot, ParticipationDecisionInput, ParticipationDecision, } from './policy.js';
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ export { buildConfiguredWorkspaceOptionsWithRoots, buildPublicWorkspaceRoots, bu
5
5
  // Client
6
6
  export { CanonClient, CanonApiError } from './client.js';
7
7
  export { buildAgentSessionSnapshot } from './agent-session.js';
8
- export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
8
+ export { CLAUDE_EFFORT_OPTIONS, EXECUTION_MODE_CONTROL_OPTIONS, RUNTIME_NEW_SESSION_ACTION, RUNTIME_STOP_ACTION, RUNTIME_STOP_AND_DROP_ACTION, buildFirstPartyCodingRuntimeDescriptor, buildRuntimeEffortControl, buildRuntimeExecutionModeControl, buildRuntimeExecutionModeOptions, buildRuntimeModelControl, buildRuntimePermissionModeControl, buildRuntimeWorkspaceControl, buildRuntimeWorkspaceControlOptions, } from './runtime-descriptor.js';
9
9
  // Stream
10
10
  export { CanonStream } from './stream.js';
11
11
  export { buildParticipationHistorySnapshot, buildParticipationHistorySnapshots, buildBehaviorPolicyLines, DEFAULT_PARTICIPATION_HISTORY_FETCH_LIMIT, evaluateParticipationPolicy, getDefaultParticipationPolicy, resolveAgentBehaviorPolicy, } from './policy.js';
@@ -80,6 +80,7 @@ export interface AgentSessionSnapshotPatch {
80
80
  state?: null;
81
81
  turnState?: TurnLifecycleState | null;
82
82
  supportsQueue?: boolean | null;
83
+ supportsInputInterrupt?: boolean | null;
83
84
  queueDepth?: number;
84
85
  waitingForInput?: boolean;
85
86
  contextUsage?: {
package/dist/rtdb-rest.js CHANGED
@@ -198,6 +198,9 @@ function createRTDBClientHandle(client, options) {
198
198
  ...(state.capabilities?.supportsQueue !== undefined
199
199
  ? { supportsQueue: state.capabilities.supportsQueue }
200
200
  : {}),
201
+ ...(state.capabilities?.supportsInterrupt !== undefined
202
+ ? { supportsInputInterrupt: state.capabilities.supportsInterrupt }
203
+ : {}),
201
204
  queueDepth: state.queueDepth,
202
205
  waitingForInput: state.state === 'waiting_input',
203
206
  lastHeartbeatAt: { '.sv': 'timestamp' },
@@ -36,6 +36,9 @@ export declare function buildRuntimePermissionModeControl(input: {
36
36
  defaultValue?: string | null;
37
37
  }): CanonControlDescriptor;
38
38
  export declare function buildRuntimeEffortControl(): CanonControlDescriptor;
39
+ export declare const RUNTIME_STOP_ACTION: CanonRuntimeActionDescriptor;
40
+ export declare const RUNTIME_STOP_AND_DROP_ACTION: CanonRuntimeActionDescriptor;
41
+ export declare const RUNTIME_NEW_SESSION_ACTION: CanonRuntimeActionDescriptor;
39
42
  export declare function buildFirstPartyCodingRuntimeDescriptor(input: {
40
43
  clientType: Extract<AgentClientType, 'claude-code' | 'codex'>;
41
44
  models: ReadonlyArray<ModelOption>;
@@ -93,6 +93,36 @@ export function buildRuntimeEffortControl() {
93
93
  selectionPolicy: 'inherit',
94
94
  };
95
95
  }
96
+ export const RUNTIME_STOP_ACTION = {
97
+ id: 'stop',
98
+ label: 'Stop',
99
+ description: 'Interrupt the current turn.',
100
+ aliases: ['stop'],
101
+ category: 'turn',
102
+ placements: ['composer_slash', 'command_palette'],
103
+ availability: ['busy'],
104
+ dispatch: { kind: 'signal', signal: 'interrupt' },
105
+ };
106
+ export const RUNTIME_STOP_AND_DROP_ACTION = {
107
+ id: 'stop-and-clear-queue',
108
+ label: 'Stop & clear queue',
109
+ description: 'Interrupt the current turn and drop queued Canon messages.',
110
+ aliases: ['stop-clear', 'clear-queue'],
111
+ category: 'turn',
112
+ placements: ['composer_slash', 'command_palette', 'session_strip'],
113
+ availability: ['busy_with_queue'],
114
+ dispatch: { kind: 'signal', signal: 'stop_and_drop' },
115
+ };
116
+ export const RUNTIME_NEW_SESSION_ACTION = {
117
+ id: 'new-session',
118
+ label: 'New session',
119
+ description: 'Reset this runtime session inside the current Canon chat.',
120
+ aliases: ['new'],
121
+ category: 'session',
122
+ placements: ['composer_slash', 'command_palette', 'session_strip'],
123
+ availability: ['always'],
124
+ dispatch: { kind: 'signal', signal: 'new_session' },
125
+ };
96
126
  export function buildFirstPartyCodingRuntimeDescriptor(input) {
97
127
  const permissionModes = input.permissionModes
98
128
  ?? (input.clientType === 'claude-code' ? CLAUDE_PERMISSION_MODE_OPTIONS : []);
@@ -122,6 +152,7 @@ export function buildFirstPartyCodingRuntimeDescriptor(input) {
122
152
  actions: input.actions,
123
153
  workspaceRoots: input.workspaceRoots,
124
154
  supportsInterrupt: true,
155
+ supportsInputInterrupt: true,
125
156
  streamingTextMode: input.streamingTextMode,
126
157
  admissionActions: input.admissionActions,
127
158
  };
package/dist/types.d.ts CHANGED
@@ -235,7 +235,7 @@ export type CanonRuntimeActionDispatch = {
235
235
  value: CanonControlValue;
236
236
  } | {
237
237
  kind: 'signal';
238
- signal: 'interrupt' | 'stop_and_drop';
238
+ signal: 'interrupt' | 'stop_and_drop' | 'new_session';
239
239
  } | {
240
240
  kind: 'compose';
241
241
  text: string;
@@ -278,6 +278,7 @@ export interface CanonRuntimeDescriptor {
278
278
  workspaceRoots?: ReadonlyArray<CanonWorkspaceRootMetadata>;
279
279
  writableRoots?: ReadonlyArray<CanonWorkspaceRootMetadata>;
280
280
  supportsInterrupt?: boolean;
281
+ supportsInputInterrupt?: boolean;
281
282
  /**
282
283
  * Fidelity of live text exposed through Canon's streaming bubble path.
283
284
  * `delta` means token/content deltas, `block` means chunked live previews,
@@ -601,6 +602,7 @@ export interface AgentSessionSnapshot {
601
602
  executionFallbackReason?: string | null;
602
603
  turnState?: TurnLifecycleState;
603
604
  supportsQueue?: boolean;
605
+ supportsInputInterrupt?: boolean;
604
606
  queueDepth: number;
605
607
  waitingForInput: boolean;
606
608
  contextUsage?: SessionState['contextUsage'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonmsg/core",
3
- "version": "0.15.5",
3
+ "version": "0.16.0",
4
4
  "description": "Canon core — shared types, REST client, SSE stream, and registration for Canon messaging",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",