@nextclaw/ncp 0.6.6 → 0.7.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.
- package/dist/index.d.ts +42 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,17 @@ declare function isHiddenNcpMessage(message: Pick<NcpMessage, "metadata"> | null
|
|
|
22
22
|
* - `error` — Terminated with an error; `parts` may be incomplete.
|
|
23
23
|
*/
|
|
24
24
|
type NcpMessageStatus = "pending" | "streaming" | "final" | "error";
|
|
25
|
+
/**
|
|
26
|
+
* Message lifecycle timing.
|
|
27
|
+
*
|
|
28
|
+
* For assistant messages, these fields describe when the response started and
|
|
29
|
+
* stopped being produced. They are intentionally message-level and not tied to
|
|
30
|
+
* a specific runtime implementation such as an NCP run.
|
|
31
|
+
*/
|
|
32
|
+
type NcpMessageLifecycle = {
|
|
33
|
+
startedAt?: string;
|
|
34
|
+
endedAt?: string;
|
|
35
|
+
};
|
|
25
36
|
/** Plain text content. The most common part type. */
|
|
26
37
|
type NcpTextPart = {
|
|
27
38
|
type: "text";
|
|
@@ -142,7 +153,8 @@ type NcpMessage = {
|
|
|
142
153
|
role: NcpMessageRole;
|
|
143
154
|
status: NcpMessageStatus;
|
|
144
155
|
parts: NcpMessagePart[]; /** ISO 8601 timestamp (e.g. `"2024-01-15T10:30:00.000Z"`). */
|
|
145
|
-
timestamp: string; /**
|
|
156
|
+
timestamp: string; /** Optional lifecycle timing for this message. */
|
|
157
|
+
lifecycle?: NcpMessageLifecycle; /** Arbitrary transport- or application-level metadata. */
|
|
146
158
|
metadata?: Record<string, unknown>;
|
|
147
159
|
};
|
|
148
160
|
//#endregion
|
|
@@ -260,7 +272,7 @@ type OpenAITool$1 = {
|
|
|
260
272
|
};
|
|
261
273
|
};
|
|
262
274
|
//#endregion
|
|
263
|
-
//#region src/types/events.d.ts
|
|
275
|
+
//#region src/types/events.types.d.ts
|
|
264
276
|
/**
|
|
265
277
|
* NCP event and payload definitions.
|
|
266
278
|
*
|
|
@@ -313,10 +325,12 @@ type NcpMessageAcceptedPayload = {
|
|
|
313
325
|
messageId: string;
|
|
314
326
|
transportId?: string;
|
|
315
327
|
} & NcpCorrelationPayload;
|
|
316
|
-
/** Payload for message.abort: identifies
|
|
328
|
+
/** Payload for message.abort: identifies and explains a cancelled active execution. */
|
|
317
329
|
type NcpMessageAbortPayload = {
|
|
318
330
|
sessionId: string;
|
|
319
331
|
messageId?: string;
|
|
332
|
+
runId?: string | undefined;
|
|
333
|
+
reason?: NcpError | undefined;
|
|
320
334
|
} & NcpCorrelationPayload;
|
|
321
335
|
/**
|
|
322
336
|
* Payload for message.stream-request: attach to the live event stream of a session.
|
|
@@ -374,12 +388,15 @@ type NcpRunStartedPayload = {
|
|
|
374
388
|
messageId?: string;
|
|
375
389
|
threadId?: string;
|
|
376
390
|
runId?: string;
|
|
391
|
+
startedAt?: string;
|
|
377
392
|
} & NcpCorrelationPayload;
|
|
378
393
|
type NcpRunFinishedPayload = {
|
|
379
394
|
sessionId?: string;
|
|
380
395
|
messageId?: string;
|
|
381
396
|
threadId?: string;
|
|
382
397
|
runId?: string;
|
|
398
|
+
startedAt?: string;
|
|
399
|
+
endedAt?: string;
|
|
383
400
|
} & NcpCorrelationPayload;
|
|
384
401
|
type NcpRunErrorPayload = {
|
|
385
402
|
sessionId?: string;
|
|
@@ -387,6 +404,8 @@ type NcpRunErrorPayload = {
|
|
|
387
404
|
error?: string;
|
|
388
405
|
threadId?: string;
|
|
389
406
|
runId?: string;
|
|
407
|
+
startedAt?: string;
|
|
408
|
+
endedAt?: string;
|
|
390
409
|
} & NcpCorrelationPayload;
|
|
391
410
|
type NcpRunMetadataPayload = {
|
|
392
411
|
sessionId?: string;
|
|
@@ -486,7 +505,10 @@ declare enum NcpEventType {
|
|
|
486
505
|
TypingEnd = "typing.end",
|
|
487
506
|
PresenceUpdated = "presence.updated"
|
|
488
507
|
}
|
|
489
|
-
type
|
|
508
|
+
type NcpEventTiming = {
|
|
509
|
+
/** ISO 8601 timestamp for when the event happened in the producer's domain. */occurredAt?: string;
|
|
510
|
+
};
|
|
511
|
+
type NcpEndpointEvent = NcpEventTiming & ({
|
|
490
512
|
type: NcpEventType.EndpointReady;
|
|
491
513
|
} | {
|
|
492
514
|
type: NcpEventType.MessageRequest;
|
|
@@ -584,13 +606,19 @@ type NcpEndpointEvent = {
|
|
|
584
606
|
} | {
|
|
585
607
|
type: NcpEventType.MessageReaction;
|
|
586
608
|
payload: NcpMessageReactionPayload;
|
|
609
|
+
});
|
|
610
|
+
type NcpEndpointEventDraft = NcpEndpointEvent extends infer Event ? Event extends NcpEndpointEvent ? Omit<Event, "occurredAt"> : never : never;
|
|
611
|
+
declare function createNcpEndpointEvent<T extends NcpEndpointEventDraft>(event: T & {
|
|
612
|
+
occurredAt?: string;
|
|
613
|
+
}, occurredAt?: string): T & {
|
|
614
|
+
occurredAt: string;
|
|
587
615
|
};
|
|
588
616
|
type NcpEndpointSubscriber = (event: NcpEndpointEvent) => void;
|
|
589
617
|
//#endregion
|
|
590
|
-
//#region src/types/run.d.ts
|
|
618
|
+
//#region src/types/run.types.d.ts
|
|
591
619
|
/**
|
|
592
620
|
* Run-related types: snapshot state and run.metadata schema conventions.
|
|
593
|
-
* Not event payloads — event payloads live in events.ts.
|
|
621
|
+
* Not event payloads — event payloads live in events.types.ts.
|
|
594
622
|
*/
|
|
595
623
|
/** Current run state for agent snapshot. Used by UI for run status and abort. */
|
|
596
624
|
type NcpRunContext = {
|
|
@@ -620,13 +648,13 @@ type NcpRunFinalMetadata = {
|
|
|
620
648
|
sessionId?: string;
|
|
621
649
|
};
|
|
622
650
|
//#endregion
|
|
623
|
-
//#region src/types/endpoint.d.ts
|
|
651
|
+
//#region src/types/endpoint.types.d.ts
|
|
624
652
|
/**
|
|
625
653
|
* Core interface every NCP endpoint adapter must implement.
|
|
626
654
|
*
|
|
627
655
|
* An endpoint is a named, lifecycle-managed communication channel.
|
|
628
656
|
* Single primitive: emit(event) to send, subscribe(listener) to receive.
|
|
629
|
-
* Event types and payloads are defined in events.ts (aligned with agent-chat).
|
|
657
|
+
* Event types and payloads are defined in events.types.ts (aligned with agent-chat).
|
|
630
658
|
*
|
|
631
659
|
* @example
|
|
632
660
|
* const endpoint: NcpEndpoint = new MyAgentEndpoint(options);
|
|
@@ -669,7 +697,7 @@ interface NcpEndpoint {
|
|
|
669
697
|
subscribe(listener: NcpEndpointSubscriber): () => void;
|
|
670
698
|
}
|
|
671
699
|
//#endregion
|
|
672
|
-
//#region src/endpoint/agent-client
|
|
700
|
+
//#region src/endpoint/agent-client.endpoint.d.ts
|
|
673
701
|
/**
|
|
674
702
|
* Client-side endpoint for agent chat: initiates requests and can cancel in-flight runs.
|
|
675
703
|
*
|
|
@@ -685,7 +713,7 @@ interface NcpAgentClientEndpoint extends NcpEndpoint {
|
|
|
685
713
|
abort(payload: NcpMessageAbortPayload): Promise<void>;
|
|
686
714
|
}
|
|
687
715
|
//#endregion
|
|
688
|
-
//#region src/endpoint/agent-server
|
|
716
|
+
//#region src/endpoint/agent-server.endpoint.d.ts
|
|
689
717
|
/**
|
|
690
718
|
* Agent server-side endpoint: receives requests and produces downstream events.
|
|
691
719
|
*
|
|
@@ -844,6 +872,7 @@ interface NcpTool {
|
|
|
844
872
|
execute(args: unknown, context?: NcpToolExecutionContext): Promise<unknown>;
|
|
845
873
|
}
|
|
846
874
|
type NcpToolExecutionContext = {
|
|
875
|
+
abortSignal?: AbortSignal;
|
|
847
876
|
toolCallId: string;
|
|
848
877
|
updateToolCallResult?: (result: unknown) => Promise<void>;
|
|
849
878
|
};
|
|
@@ -906,7 +935,7 @@ type NcpAgentStreamProvider = {
|
|
|
906
935
|
}): AsyncIterable<NcpEndpointEvent>;
|
|
907
936
|
};
|
|
908
937
|
//#endregion
|
|
909
|
-
//#region src/toolkit/conversation-state.d.ts
|
|
938
|
+
//#region src/toolkit/conversation-state.types.d.ts
|
|
910
939
|
/**
|
|
911
940
|
* Read-only snapshot of conversation state maintained by a state manager.
|
|
912
941
|
*
|
|
@@ -958,7 +987,7 @@ interface NcpConversationStateManager {
|
|
|
958
987
|
subscribe(listener: (snapshot: NcpConversationSnapshot) => void): () => void;
|
|
959
988
|
}
|
|
960
989
|
//#endregion
|
|
961
|
-
//#region src/toolkit/agent/agent-conversation-state
|
|
990
|
+
//#region src/toolkit/agent/agent-conversation-state.manager.d.ts
|
|
962
991
|
type NcpAgentConversationHydrationParams = {
|
|
963
992
|
sessionId: string;
|
|
964
993
|
messages: ReadonlyArray<NcpMessage>;
|
|
@@ -1035,5 +1064,5 @@ declare function normalizeAssistantText(text: string, mode: NcpAssistantReasonin
|
|
|
1035
1064
|
declare function createNcpRunHandle(envelope: NcpRequestEnvelope): NcpRunHandle;
|
|
1036
1065
|
declare function consumeNcpRunHandle(events: AsyncIterable<NcpEndpointEvent>, fallback: NcpRunHandle): Promise<NcpRunHandle>;
|
|
1037
1066
|
//#endregion
|
|
1038
|
-
export { ListMessagesOptions, ListSessionsOptions, NCP_INTERNAL_VISIBILITY_METADATA_KEY, NcpActionPart, NcpAgentClientEndpoint, NcpAgentConversationHydrationParams, NcpAgentConversationSnapshot, NcpAgentConversationStateManager, NcpAgentRunApi, NcpAgentRunExecutionContext, NcpAgentRunInput, NcpAgentRunOptions, NcpAgentRunSendOptions, NcpAgentRunStreamOptions, NcpAgentRuntime, NcpAgentSendEnvelope, NcpAgentServerEndpoint, NcpAgentStreamProvider, NcpAssistantReasoningNormalizationMode, NcpAssistantReasoningSegment, NcpAssistantTextStreamNormalizer, NcpCardPart, NcpCompletedEnvelope, NcpContextBuilder, NcpContextPrepareOptions, NcpContextWindowUpdatedPayload, NcpConversationSnapshot, NcpConversationStateManager, NcpCorrelationPayload, NcpEncodeContext, NcpEndpoint, NcpEndpointEvent, NcpEndpointKind, NcpEndpointLatency, NcpEndpointManifest, NcpEndpointSubscriber, NcpError, NcpErrorCode, NcpEventType, NcpExtensionPart, NcpFailedEnvelope, NcpFilePart, NcpInvalidToolArgumentsResult, NcpLLMApi, NcpLLMApiInput, NcpLLMApiOptions, NcpMessage, NcpMessageAbortPayload, NcpMessageAcceptedPayload, NcpMessageDeliveredPayload, NcpMessagePart, NcpMessageReactionPayload, NcpMessageReadPayload, NcpMessageRecalledPayload, NcpMessageRole, NcpMessageSentPayload, NcpMessageStatus, NcpOutboundMessageDraft, NcpPendingToolCall, NcpPresenceUpdatedPayload, NcpProviderRuntimeRoute, NcpReasoningDeltaPayload, NcpReasoningEndPayload, NcpReasoningPart, NcpReasoningStartPayload, NcpReplyTagParseResult, NcpRequestEnvelope, NcpResponseEnvelope, NcpRichTextPart, NcpRoundBuffer, NcpRunContext, NcpRunErrorPayload, NcpRunFinalMetadata, NcpRunFinishedPayload, NcpRunHandle, NcpRunMetadataPayload, NcpRunReadyMetadata, NcpRunStartedPayload, NcpSessionApi, NcpSessionPatch, NcpSessionStatus, NcpSessionSummary, NcpSourcePart, NcpStepStartPart, NcpStreamEncoder, NcpStreamRequestPayload, NcpTextDeltaPayload, NcpTextEndPayload, NcpTextPart, NcpTextStartPayload, NcpTool, NcpToolCallArgsDeltaPayload, NcpToolCallArgsPayload, NcpToolCallEndPayload, NcpToolCallResult, NcpToolCallResultPayload, NcpToolCallStartPayload, NcpToolDefinition, NcpToolExecutionContext, NcpToolInvocationPart, NcpToolOutputContentItem, NcpToolOutputImageItem, NcpToolOutputTextItem, NcpToolRegistry, NcpTypingEndPayload, NcpTypingStartPayload, OpenAIChatChunk, OpenAIChatMessage, OpenAIContentPart, OpenAITool, OpenAIToolCall, OpenAIToolCallDelta, consumeNcpRunHandle, createNcpRunHandle, isHiddenNcpMessage, normalizeAssistantText, readAssistantReasoningNormalizationMode, readAssistantReasoningNormalizationModeFromMetadata, sanitizeAssistantReplyTags, stripReplyTagsFromText, writeAssistantReasoningNormalizationModeToMetadata };
|
|
1067
|
+
export { ListMessagesOptions, ListSessionsOptions, NCP_INTERNAL_VISIBILITY_METADATA_KEY, NcpActionPart, NcpAgentClientEndpoint, NcpAgentConversationHydrationParams, NcpAgentConversationSnapshot, NcpAgentConversationStateManager, NcpAgentRunApi, NcpAgentRunExecutionContext, NcpAgentRunInput, NcpAgentRunOptions, NcpAgentRunSendOptions, NcpAgentRunStreamOptions, NcpAgentRuntime, NcpAgentSendEnvelope, NcpAgentServerEndpoint, NcpAgentStreamProvider, NcpAssistantReasoningNormalizationMode, NcpAssistantReasoningSegment, NcpAssistantTextStreamNormalizer, NcpCardPart, NcpCompletedEnvelope, NcpContextBuilder, NcpContextPrepareOptions, NcpContextWindowUpdatedPayload, NcpConversationSnapshot, NcpConversationStateManager, NcpCorrelationPayload, NcpEncodeContext, NcpEndpoint, NcpEndpointEvent, NcpEndpointEventDraft, NcpEndpointKind, NcpEndpointLatency, NcpEndpointManifest, NcpEndpointSubscriber, NcpError, NcpErrorCode, NcpEventTiming, NcpEventType, NcpExtensionPart, NcpFailedEnvelope, NcpFilePart, NcpInvalidToolArgumentsResult, NcpLLMApi, NcpLLMApiInput, NcpLLMApiOptions, NcpMessage, NcpMessageAbortPayload, NcpMessageAcceptedPayload, NcpMessageDeliveredPayload, NcpMessageLifecycle, NcpMessagePart, NcpMessageReactionPayload, NcpMessageReadPayload, NcpMessageRecalledPayload, NcpMessageRole, NcpMessageSentPayload, NcpMessageStatus, NcpOutboundMessageDraft, NcpPendingToolCall, NcpPresenceUpdatedPayload, NcpProviderRuntimeRoute, NcpReasoningDeltaPayload, NcpReasoningEndPayload, NcpReasoningPart, NcpReasoningStartPayload, NcpReplyTagParseResult, NcpRequestEnvelope, NcpResponseEnvelope, NcpRichTextPart, NcpRoundBuffer, NcpRunContext, NcpRunErrorPayload, NcpRunFinalMetadata, NcpRunFinishedPayload, NcpRunHandle, NcpRunMetadataPayload, NcpRunReadyMetadata, NcpRunStartedPayload, NcpSessionApi, NcpSessionPatch, NcpSessionStatus, NcpSessionSummary, NcpSourcePart, NcpStepStartPart, NcpStreamEncoder, NcpStreamRequestPayload, NcpTextDeltaPayload, NcpTextEndPayload, NcpTextPart, NcpTextStartPayload, NcpTool, NcpToolCallArgsDeltaPayload, NcpToolCallArgsPayload, NcpToolCallEndPayload, NcpToolCallResult, NcpToolCallResultPayload, NcpToolCallStartPayload, NcpToolDefinition, NcpToolExecutionContext, NcpToolInvocationPart, NcpToolOutputContentItem, NcpToolOutputImageItem, NcpToolOutputTextItem, NcpToolRegistry, NcpTypingEndPayload, NcpTypingStartPayload, OpenAIChatChunk, OpenAIChatMessage, OpenAIContentPart, OpenAITool, OpenAIToolCall, OpenAIToolCallDelta, consumeNcpRunHandle, createNcpEndpointEvent, createNcpRunHandle, isHiddenNcpMessage, normalizeAssistantText, readAssistantReasoningNormalizationMode, readAssistantReasoningNormalizationModeFromMetadata, sanitizeAssistantReplyTags, stripReplyTagsFromText, writeAssistantReasoningNormalizationModeToMetadata };
|
|
1039
1068
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/message.ts","../src/types/manifest.ts","../src/types/errors.ts","../src/types/session.types.ts","../src/agent-runtime/llm-api.ts","../src/types/events.ts","../src/types/run.ts","../src/types/endpoint.ts","../src/endpoint/agent-client-endpoint.ts","../src/endpoint/agent-server-endpoint.ts","../src/types/agent-runtime.types.ts","../src/agent-backend/controller.ts","../src/toolkit/conversation-state.ts","../src/toolkit/agent/agent-conversation-state-manager.ts","../src/toolkit/reply-tags.ts","../src/toolkit/reasoning-normalization.ts","../src/toolkit/run-handle.utils.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/message.ts","../src/types/manifest.ts","../src/types/errors.ts","../src/types/session.types.ts","../src/agent-runtime/llm-api.ts","../src/types/events.types.ts","../src/types/run.types.ts","../src/types/endpoint.types.ts","../src/endpoint/agent-client.endpoint.ts","../src/endpoint/agent-server.endpoint.ts","../src/types/agent-runtime.types.ts","../src/agent-backend/controller.ts","../src/toolkit/conversation-state.types.ts","../src/toolkit/agent/agent-conversation-state.manager.ts","../src/toolkit/reply-tags.ts","../src/toolkit/reasoning-normalization.ts","../src/toolkit/run-handle.utils.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ function isHiddenNcpMessage(message) {
|
|
|
4
4
|
return message?.metadata?.[NCP_INTERNAL_VISIBILITY_METADATA_KEY] === "hidden";
|
|
5
5
|
}
|
|
6
6
|
//#endregion
|
|
7
|
-
//#region src/types/events.ts
|
|
7
|
+
//#region src/types/events.types.ts
|
|
8
8
|
let NcpEventType = /* @__PURE__ */ function(NcpEventType) {
|
|
9
9
|
NcpEventType["EndpointReady"] = "endpoint.ready";
|
|
10
10
|
NcpEventType["EndpointError"] = "endpoint.error";
|
|
@@ -41,6 +41,12 @@ let NcpEventType = /* @__PURE__ */ function(NcpEventType) {
|
|
|
41
41
|
NcpEventType["PresenceUpdated"] = "presence.updated";
|
|
42
42
|
return NcpEventType;
|
|
43
43
|
}({});
|
|
44
|
+
function createNcpEndpointEvent(event, occurredAt = event.occurredAt ?? (/* @__PURE__ */ new Date()).toISOString()) {
|
|
45
|
+
return {
|
|
46
|
+
...event,
|
|
47
|
+
occurredAt
|
|
48
|
+
};
|
|
49
|
+
}
|
|
44
50
|
//#endregion
|
|
45
51
|
//#region src/toolkit/reply-tags.ts
|
|
46
52
|
const REPLY_TO_CURRENT_PATTERN = /\[\[\s*reply_to_current\s*\]\]/gi;
|
|
@@ -319,6 +325,6 @@ function consumeNcpRunHandle(events, fallback) {
|
|
|
319
325
|
});
|
|
320
326
|
}
|
|
321
327
|
//#endregion
|
|
322
|
-
export { NCP_INTERNAL_VISIBILITY_METADATA_KEY, NcpAssistantTextStreamNormalizer, NcpEventType, consumeNcpRunHandle, createNcpRunHandle, isHiddenNcpMessage, normalizeAssistantText, readAssistantReasoningNormalizationMode, readAssistantReasoningNormalizationModeFromMetadata, sanitizeAssistantReplyTags, stripReplyTagsFromText, writeAssistantReasoningNormalizationModeToMetadata };
|
|
328
|
+
export { NCP_INTERNAL_VISIBILITY_METADATA_KEY, NcpAssistantTextStreamNormalizer, NcpEventType, consumeNcpRunHandle, createNcpEndpointEvent, createNcpRunHandle, isHiddenNcpMessage, normalizeAssistantText, readAssistantReasoningNormalizationMode, readAssistantReasoningNormalizationModeFromMetadata, sanitizeAssistantReplyTags, stripReplyTagsFromText, writeAssistantReasoningNormalizationModeToMetadata };
|
|
323
329
|
|
|
324
330
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/types/message.ts","../src/types/events.ts","../src/toolkit/reply-tags.ts","../src/toolkit/reasoning-normalization.ts","../src/toolkit/run-handle.utils.ts"],"sourcesContent":["/**\n * Participants in an NCP conversation.\n *\n * - `user` — A human end-user interacting with the system.\n * - `assistant` — An AI model generating responses.\n * - `system` — Configuration or instruction injected before the conversation.\n * - `tool` — The result returned by a tool invocation.\n * - `service` — A platform-side notification or event (e.g. a bot posting a card),\n * distinct from an AI assistant response.\n */\nexport type NcpMessageRole = \"user\" | \"assistant\" | \"system\" | \"tool\" | \"service\";\n\nexport const NCP_INTERNAL_VISIBILITY_METADATA_KEY = \"ncp_internal_visibility\";\n\nexport function isHiddenNcpMessage(message: Pick<NcpMessage, \"metadata\"> | null | undefined): boolean {\n return message?.metadata?.[NCP_INTERNAL_VISIBILITY_METADATA_KEY] === \"hidden\";\n}\n\n/**\n * Lifecycle state of a message.\n *\n * Applies to both streaming and non-streaming endpoints:\n * - `pending` — Created but not yet sent or received.\n * - `streaming` — Actively receiving incremental deltas.\n * - `final` — Fully received; no further updates expected.\n * - `error` — Terminated with an error; `parts` may be incomplete.\n */\nexport type NcpMessageStatus = \"pending\" | \"streaming\" | \"final\" | \"error\";\n\n// ---------------------------------------------------------------------------\n// Core portable parts\n// ---------------------------------------------------------------------------\n\n/** Plain text content. The most common part type. */\nexport type NcpTextPart = {\n type: \"text\";\n text: string;\n};\n\n/**\n * A file attachment, delivered either as a URL or inline Base64 content.\n *\n * `url` and `contentBase64` are mutually exclusive — populate exactly one.\n */\nexport type NcpFilePart = {\n type: \"file\";\n name?: string;\n mimeType?: string;\n /** Stable logical asset reference managed by the hosting app. */\n assetUri?: string;\n /** Remote URL pointing to the file. Mutually exclusive with `contentBase64`. */\n url?: string;\n /** Inline file content encoded as Base64. Mutually exclusive with `url`. */\n contentBase64?: string;\n sizeBytes?: number;\n};\n\n/** A cited source or reference, typically surfaced alongside AI-generated content. */\nexport type NcpSourcePart = {\n type: \"source\";\n title?: string;\n url?: string;\n /** Short excerpt from the source relevant to the message. */\n snippet?: string;\n};\n\n/**\n * Marks the beginning of a logical reasoning step in a multi-step response.\n * Used by chain-of-thought or agentic flows to delimit discrete steps.\n */\nexport type NcpStepStartPart = {\n type: \"step-start\";\n stepId?: string;\n /** Human-readable label for the step (e.g. \"Searching the web\"). */\n title?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Agent-oriented parts\n// ---------------------------------------------------------------------------\n\n/** Internal reasoning text produced by the model before its final response. */\nexport type NcpReasoningPart = {\n type: \"reasoning\";\n text: string;\n};\n\nexport type NcpToolOutputTextItem = {\n type: \"input_text\";\n text: string;\n};\n\nexport type NcpToolOutputImageItem = {\n type: \"input_image\";\n imageUrl: string;\n mimeType?: string;\n detail?: \"low\" | \"high\" | \"auto\" | \"original\";\n originalDataChars?: number;\n dataOmitted?: boolean;\n};\n\nexport type NcpToolOutputContentItem =\n | NcpToolOutputTextItem\n | NcpToolOutputImageItem;\n\n/**\n * Represents a tool call and its lifecycle.\n *\n * State semantics (aligned with the Vercel AI SDK convention):\n * - `\"call\"` — The model has emitted a complete tool call; `args` is populated.\n * - `\"partial-call\"` — Arguments are still being streamed; `args` may be incomplete.\n * - `\"result\"` — The tool has returned; `result` is populated.\n * - `\"cancelled\"` — The tool was interrupted before a result was delivered.\n */\nexport type NcpToolInvocationPart = {\n type: \"tool-invocation\";\n toolName: string;\n toolCallId?: string;\n state?: \"call\" | \"partial-call\" | \"result\" | \"cancelled\";\n /** Tool input arguments. May be partial when `state === \"partial-call\"`. */\n args?: unknown;\n /** Tool output. Populated when `state === \"result\"`. */\n result?: unknown;\n /** Model-visible structured output items. Text is bounded; images remain image items. */\n resultContentItems?: NcpToolOutputContentItem[];\n};\n\n// ---------------------------------------------------------------------------\n// Collaboration-platform parts\n// ---------------------------------------------------------------------------\n\n/**\n * A rich card with arbitrary structured data.\n * Rendering is delegated to the platform (e.g. Slack block kit, Teams card).\n */\nexport type NcpCardPart = {\n type: \"card\";\n payload: Record<string, unknown>;\n};\n\n/** Formatted text with an explicit markup format hint. */\nexport type NcpRichTextPart = {\n type: \"rich-text\";\n format: \"markdown\" | \"html\" | \"plain\";\n text: string;\n};\n\n/**\n * An interactive action button or trigger exposed to the user.\n * The platform is responsible for rendering and routing the action.\n */\nexport type NcpActionPart = {\n type: \"action\";\n actionId: string;\n /** Display label shown to the user. */\n label: string;\n /** Arbitrary data forwarded to the action handler. */\n payload?: unknown;\n};\n\n// ---------------------------------------------------------------------------\n// Open extension slot\n// ---------------------------------------------------------------------------\n\n/**\n * Escape hatch for custom or future part types not yet in the NCP spec.\n *\n * Use this to avoid forking the protocol during early iterations.\n * Once a part type stabilizes, promote it to a first-class `NcpXxxPart`.\n */\nexport type NcpExtensionPart = {\n type: \"extension\";\n /** Namespaced identifier for the custom part (e.g. `\"myapp.highlight\"`). */\n extensionType: string;\n data: unknown;\n};\n\n// ---------------------------------------------------------------------------\n// Unified part union\n// ---------------------------------------------------------------------------\n\n/** Union of all recognized NCP message part types. */\nexport type NcpMessagePart =\n | NcpTextPart\n | NcpFilePart\n | NcpSourcePart\n | NcpStepStartPart\n | NcpReasoningPart\n | NcpToolInvocationPart\n | NcpCardPart\n | NcpRichTextPart\n | NcpActionPart\n | NcpExtensionPart;\n\n// ---------------------------------------------------------------------------\n// Message envelope\n// ---------------------------------------------------------------------------\n\n/**\n * Canonical message envelope exchanged and persisted in NCP.\n *\n * A message is composed of an ordered list of typed `parts`, allowing\n * heterogeneous content (text, files, tool calls, etc.) in a single message.\n */\nexport type NcpMessage = {\n /** Globally unique message identifier. */\n id: string;\n /** The session this message belongs to. */\n sessionId: string;\n role: NcpMessageRole;\n status: NcpMessageStatus;\n parts: NcpMessagePart[];\n /** ISO 8601 timestamp (e.g. `\"2024-01-15T10:30:00.000Z\"`). */\n timestamp: string;\n /** Arbitrary transport- or application-level metadata. */\n metadata?: Record<string, unknown>;\n};\n","import type { OpenAITool } from \"../agent-runtime/llm-api.js\";\nimport type { NcpError } from \"./errors.js\";\nimport type { NcpMessage, NcpToolOutputContentItem } from \"./message.js\";\n\n/**\n * NCP event and payload definitions.\n *\n * Streaming content (text, reasoning, tool args) uses start → delta sequence → end.\n * The same content can be sent as a single full event (e.g. message.incoming or message.completed)\n * instead; endpoints or upper layers choose as needed.\n */\n\n// ---------------------------------------------------------------------------\n// Message envelopes (used by request/incoming/completed/failed)\n// ---------------------------------------------------------------------------\n\nexport type NcpCorrelationPayload = {\n correlationId?: string;\n};\n\nexport type NcpRequestEnvelope = {\n sessionId: string;\n message: NcpMessage;\n correlationId?: string;\n metadata?: Record<string, unknown>;\n providerRoute?: NcpProviderRuntimeRoute;\n tools?: ReadonlyArray<OpenAITool>;\n};\n\nexport type NcpOutboundMessageDraft = Omit<NcpMessage, \"sessionId\"> & {\n sessionId?: string;\n};\n\nexport type NcpAgentSendEnvelope = Omit<NcpRequestEnvelope, \"sessionId\" | \"message\"> & {\n sessionId?: string;\n message: NcpMessage | NcpOutboundMessageDraft;\n};\n\nexport type NcpProviderRuntimeRoute = {\n model: string;\n apiKey?: string | null;\n apiBase?: string | null;\n headers: Record<string, string>;\n};\n\n/** Payload for message.incoming: message content from the other peer (partial or full). */\nexport type NcpResponseEnvelope = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpCompletedEnvelope = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpFailedEnvelope = {\n sessionId: string;\n messageId?: string;\n error: NcpError;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpMessageAcceptedPayload = {\n messageId: string;\n transportId?: string;\n} & NcpCorrelationPayload;\n\n/** Payload for message.abort: identifies which session's active execution to cancel. */\nexport type NcpMessageAbortPayload = {\n sessionId: string;\n messageId?: string;\n} & NcpCorrelationPayload;\n\n/**\n * Payload for message.stream-request: attach to the live event stream of a session.\n * Used when reconnecting during an active response or attaching another live reader.\n */\nexport type NcpStreamRequestPayload = {\n sessionId: string;\n metadata?: Record<string, unknown>;\n};\n\n/**\n * Payload for message.sent: the local peer has sent a message (outbound).\n * Typically non-streaming; add the message to the local conversation state.\n */\nexport type NcpMessageSentPayload = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// IM: typing indicator (user or bot)\n// ---------------------------------------------------------------------------\n\nexport type NcpTypingStartPayload = {\n sessionId: string;\n /** Participant who is typing (human user or bot/assistant). */\n userId?: string;\n};\n\nexport type NcpTypingEndPayload = {\n sessionId: string;\n /** Participant who stopped typing (human user or bot/assistant). */\n userId?: string;\n};\n\n// ---------------------------------------------------------------------------\n// IM: presence (online/offline/away)\n// ---------------------------------------------------------------------------\n\nexport type NcpPresenceUpdatedPayload = {\n sessionId: string;\n /** Participant this presence applies to (human user or bot/assistant). */\n userId?: string;\n status: \"online\" | \"offline\" | \"away\";\n};\n\n// ---------------------------------------------------------------------------\n// IM: read receipt, delivery receipt, recall, reaction\n// ---------------------------------------------------------------------------\n\nexport type NcpMessageReadPayload = {\n sessionId: string;\n messageId: string;\n readAt?: string;\n readerId?: string;\n};\n\nexport type NcpMessageDeliveredPayload = {\n sessionId: string;\n messageId: string;\n};\n\nexport type NcpMessageRecalledPayload = {\n sessionId: string;\n messageId: string;\n};\n\nexport type NcpMessageReactionPayload = {\n sessionId: string;\n messageId: string;\n reaction: string;\n added: boolean;\n /** Participant who added or removed the reaction (human user or bot/assistant). */\n userId?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Run lifecycle (aligned with agent-chat RUN_*)\n// ---------------------------------------------------------------------------\n\nexport type NcpRunStartedPayload = {\n sessionId?: string;\n messageId?: string;\n threadId?: string;\n runId?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunFinishedPayload = {\n sessionId?: string;\n messageId?: string;\n threadId?: string;\n runId?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunErrorPayload = {\n sessionId?: string;\n messageId?: string;\n error?: string;\n threadId?: string;\n runId?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunMetadataPayload = {\n sessionId?: string;\n messageId?: string;\n runId?: string;\n metadata: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpContextWindowUpdatedPayload = {\n sessionId: string;\n contextWindow: Record<string, unknown>;\n};\n\n// ---------------------------------------------------------------------------\n// Text stream (aligned with agent-chat TEXT_*)\n// Streaming: text-start → text-delta sequence → text-end. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpTextStartPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpTextDeltaPayload = {\n sessionId: string;\n messageId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpTextEndPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Reasoning stream (aligned with agent-chat REASONING_*)\n// Streaming: reasoning-start → reasoning-delta sequence → reasoning-end. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpReasoningStartPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpReasoningDeltaPayload = {\n sessionId: string;\n messageId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpReasoningEndPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Tool call stream (aligned with agent-chat TOOL_CALL_*)\n// Streaming: tool-call-start → tool-call-args or tool-call-args-delta sequence → tool-call-end; then tool-call-result. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpToolCallStartPayload = {\n sessionId: string;\n messageId?: string;\n toolCallId: string;\n toolName: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallArgsPayload = {\n sessionId: string;\n toolCallId: string;\n args: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallArgsDeltaPayload = {\n sessionId: string;\n messageId?: string;\n toolCallId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallEndPayload = {\n sessionId: string;\n toolCallId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallResultPayload = {\n sessionId: string;\n toolCallId: string;\n content: unknown;\n contentItems?: NcpToolOutputContentItem[];\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Event type enum\n// ---------------------------------------------------------------------------\n\nexport enum NcpEventType {\n EndpointReady = \"endpoint.ready\",\n EndpointError = \"endpoint.error\",\n MessageRequest = \"message.request\",\n MessageStreamRequest = \"message.stream-request\",\n MessageSent = \"message.sent\",\n MessageAccepted = \"message.accepted\",\n MessageIncoming = \"message.incoming\",\n MessageCompleted = \"message.completed\",\n MessageFailed = \"message.failed\",\n MessageAbort = \"message.abort\",\n MessageTextStart = \"message.text-start\",\n MessageTextDelta = \"message.text-delta\",\n MessageTextEnd = \"message.text-end\",\n MessageReasoningStart = \"message.reasoning-start\",\n MessageReasoningDelta = \"message.reasoning-delta\",\n MessageReasoningEnd = \"message.reasoning-end\",\n MessageToolCallStart = \"message.tool-call-start\",\n MessageToolCallArgs = \"message.tool-call-args\",\n MessageToolCallArgsDelta = \"message.tool-call-args-delta\",\n MessageToolCallEnd = \"message.tool-call-end\",\n MessageToolCallResult = \"message.tool-call-result\",\n MessageRead = \"message.read\",\n MessageDelivered = \"message.delivered\",\n MessageRecalled = \"message.recalled\",\n MessageReaction = \"message.reaction\",\n RunStarted = \"run.started\",\n RunFinished = \"run.finished\",\n RunError = \"run.error\",\n RunMetadata = \"run.metadata\",\n ContextWindowUpdated = \"context-window.updated\",\n TypingStart = \"typing.start\",\n TypingEnd = \"typing.end\",\n PresenceUpdated = \"presence.updated\",\n}\n\n// ---------------------------------------------------------------------------\n// Event union (aligned with agent-chat EventType + endpoint lifecycle)\n// ---------------------------------------------------------------------------\n\nexport type NcpEndpointEvent =\n | { type: NcpEventType.EndpointReady }\n | { type: NcpEventType.MessageRequest; payload: NcpAgentSendEnvelope }\n | { type: NcpEventType.MessageStreamRequest; payload: NcpStreamRequestPayload }\n | { type: NcpEventType.MessageSent; payload: NcpMessageSentPayload }\n | { type: NcpEventType.MessageAccepted; payload: NcpMessageAcceptedPayload }\n | { type: NcpEventType.MessageIncoming; payload: NcpResponseEnvelope }\n | { type: NcpEventType.MessageCompleted; payload: NcpCompletedEnvelope }\n | { type: NcpEventType.MessageFailed; payload: NcpFailedEnvelope }\n | { type: NcpEventType.MessageAbort; payload: NcpMessageAbortPayload }\n | { type: NcpEventType.EndpointError; payload: NcpError }\n | { type: NcpEventType.RunStarted; payload: NcpRunStartedPayload }\n | { type: NcpEventType.RunFinished; payload: NcpRunFinishedPayload }\n | { type: NcpEventType.RunError; payload: NcpRunErrorPayload }\n | { type: NcpEventType.RunMetadata; payload: NcpRunMetadataPayload }\n | { type: NcpEventType.ContextWindowUpdated; payload: NcpContextWindowUpdatedPayload }\n | { type: NcpEventType.MessageTextStart; payload: NcpTextStartPayload }\n | { type: NcpEventType.MessageTextDelta; payload: NcpTextDeltaPayload }\n | { type: NcpEventType.MessageTextEnd; payload: NcpTextEndPayload }\n | { type: NcpEventType.MessageReasoningStart; payload: NcpReasoningStartPayload }\n | { type: NcpEventType.MessageReasoningDelta; payload: NcpReasoningDeltaPayload }\n | { type: NcpEventType.MessageReasoningEnd; payload: NcpReasoningEndPayload }\n | { type: NcpEventType.MessageToolCallStart; payload: NcpToolCallStartPayload }\n | { type: NcpEventType.MessageToolCallArgs; payload: NcpToolCallArgsPayload }\n | { type: NcpEventType.MessageToolCallArgsDelta; payload: NcpToolCallArgsDeltaPayload }\n | { type: NcpEventType.MessageToolCallEnd; payload: NcpToolCallEndPayload }\n | { type: NcpEventType.MessageToolCallResult; payload: NcpToolCallResultPayload }\n | { type: NcpEventType.TypingStart; payload: NcpTypingStartPayload }\n | { type: NcpEventType.TypingEnd; payload: NcpTypingEndPayload }\n | { type: NcpEventType.PresenceUpdated; payload: NcpPresenceUpdatedPayload }\n | { type: NcpEventType.MessageRead; payload: NcpMessageReadPayload }\n | { type: NcpEventType.MessageDelivered; payload: NcpMessageDeliveredPayload }\n | { type: NcpEventType.MessageRecalled; payload: NcpMessageRecalledPayload }\n | { type: NcpEventType.MessageReaction; payload: NcpMessageReactionPayload };\n\nexport type NcpEndpointSubscriber = (event: NcpEndpointEvent) => void;\n","import type { NcpMessage } from \"../types/message.js\";\n\nexport type NcpReplyTagParseResult = {\n content: string;\n replyTo?: string;\n};\n\nconst REPLY_TO_CURRENT_PATTERN = /\\[\\[\\s*reply_to_current\\s*\\]\\]/gi;\nconst REPLY_TO_ID_PATTERN = /\\[\\[\\s*reply_to\\s*:\\s*([^\\]]+?)\\s*\\]\\]/i;\n\nfunction normalizeReplyTarget(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nexport function stripReplyTagsFromText(content: string, currentMessageId?: string): NcpReplyTagParseResult {\n let nextContent = content;\n let replyTo: string | undefined;\n\n if (REPLY_TO_CURRENT_PATTERN.test(nextContent)) {\n replyTo = normalizeReplyTarget(currentMessageId);\n nextContent = nextContent.replace(REPLY_TO_CURRENT_PATTERN, \"\").trim();\n }\n\n const explicitReplyTarget = nextContent.match(REPLY_TO_ID_PATTERN)?.[1];\n if (explicitReplyTarget) {\n replyTo = normalizeReplyTarget(explicitReplyTarget);\n nextContent = nextContent.replace(REPLY_TO_ID_PATTERN, \"\").trim();\n }\n\n return replyTo ? { content: nextContent, replyTo } : { content: nextContent };\n}\n\nexport function sanitizeAssistantReplyTags(\n message: NcpMessage,\n currentMessageId = message.id,\n): NcpMessage {\n if (message.role !== \"assistant\") {\n return {\n ...message,\n parts: [...message.parts],\n metadata: message.metadata ? { ...message.metadata } : undefined,\n };\n }\n\n const firstTextIndex = message.parts.findIndex((part) => part.type === \"text\");\n const nextMetadata = message.metadata ? { ...message.metadata } : undefined;\n const existingReplyTo = normalizeReplyTarget(nextMetadata?.reply_to);\n\n if (firstTextIndex < 0) {\n return {\n ...message,\n parts: [...message.parts],\n metadata: nextMetadata,\n };\n }\n\n const firstTextPart = message.parts[firstTextIndex];\n if (!firstTextPart || firstTextPart.type !== \"text\") {\n return {\n ...message,\n parts: [...message.parts],\n metadata: nextMetadata,\n };\n }\n\n const { content, replyTo } = stripReplyTagsFromText(firstTextPart.text, currentMessageId);\n const effectiveReplyTo = replyTo ?? existingReplyTo;\n const nextParts = message.parts.flatMap((part, index) => {\n if (index !== firstTextIndex || part.type !== \"text\") {\n return [part];\n }\n if (content.length === 0) {\n return [];\n }\n return [{ ...part, text: content }];\n });\n\n if (effectiveReplyTo) {\n return {\n ...message,\n parts: nextParts,\n metadata: {\n ...nextMetadata,\n reply_to: effectiveReplyTo,\n },\n };\n }\n\n return {\n ...message,\n parts: nextParts,\n metadata: nextMetadata,\n };\n}\n","export type NcpAssistantReasoningNormalizationMode = \"off\" | \"think-tags\";\n\nexport type NcpAssistantReasoningSegment = {\n type: \"text\" | \"reasoning\";\n text: string;\n};\n\nconst THINK_OPEN_TAG = \"<think>\";\nconst THINK_CLOSE_TAG = \"</think>\";\nconst FINAL_OPEN_TAG = \"<final>\";\nconst FINAL_CLOSE_TAG = \"</final>\";\nconst LEADING_CONTROL_TAGS = [THINK_CLOSE_TAG, FINAL_OPEN_TAG, FINAL_CLOSE_TAG] as const;\nconst MAX_REASONING_DELIMITER_TAIL = THINK_CLOSE_TAG.length - 1;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction normalizeMode(value: unknown): NcpAssistantReasoningNormalizationMode | null {\n if (value === \"off\" || value === \"think-tags\") {\n return value;\n }\n return null;\n}\n\nfunction readLeadingThinkTagState(\n buffer: string,\n): { status: \"matched\"; consumed: number } | { status: \"pending\" | \"rejected\" } {\n let cursor = 0;\n while (cursor < buffer.length && isWhitespace(buffer[cursor]!)) {\n cursor += 1;\n }\n\n const rest = buffer.slice(cursor);\n if (rest.startsWith(THINK_OPEN_TAG)) {\n return {\n status: \"matched\",\n consumed: cursor + THINK_OPEN_TAG.length,\n };\n }\n if (THINK_OPEN_TAG.startsWith(rest)) {\n return { status: \"pending\" };\n }\n return { status: \"rejected\" };\n}\n\nfunction stripLeadingControlTags(buffer: string): { buffer: string; pending: boolean } {\n let nextBuffer = buffer;\n\n while (true) {\n let cursor = 0;\n while (cursor < nextBuffer.length && isWhitespace(nextBuffer[cursor]!)) {\n cursor += 1;\n }\n\n const rest = nextBuffer.slice(cursor);\n if (rest.length === 0) {\n return { buffer: \"\", pending: false };\n }\n\n const matchedTag = LEADING_CONTROL_TAGS.find((tag) => rest.startsWith(tag));\n if (matchedTag) {\n nextBuffer = rest.slice(matchedTag.length);\n continue;\n }\n\n if (LEADING_CONTROL_TAGS.some((tag) => tag.startsWith(rest))) {\n return { buffer: rest, pending: true };\n }\n\n return { buffer: rest, pending: false };\n }\n}\n\nfunction findReasoningBoundary(buffer: string): { index: number; tag: string } | null {\n const indices = [\n { index: buffer.indexOf(THINK_CLOSE_TAG), tag: THINK_CLOSE_TAG },\n { index: buffer.indexOf(FINAL_OPEN_TAG), tag: FINAL_OPEN_TAG },\n ].filter((entry) => entry.index >= 0);\n\n if (indices.length === 0) {\n return null;\n }\n\n return indices.reduce((left, right) => (right.index < left.index ? right : left));\n}\n\nexport function readAssistantReasoningNormalizationMode(\n value: unknown,\n): NcpAssistantReasoningNormalizationMode | null {\n if (typeof value === \"string\") {\n return normalizeMode(value);\n }\n if (isRecord(value)) {\n return normalizeMode(value.mode);\n }\n return null;\n}\n\nexport function readAssistantReasoningNormalizationModeFromMetadata(\n metadata: Record<string, unknown> | null | undefined,\n): NcpAssistantReasoningNormalizationMode | null {\n if (!metadata) {\n return null;\n }\n return (\n readAssistantReasoningNormalizationMode(metadata.reasoning_normalization) ??\n readAssistantReasoningNormalizationMode(metadata.reasoningNormalization) ??\n normalizeMode(metadata.reasoning_normalization_mode) ??\n normalizeMode(metadata.reasoningNormalizationMode)\n );\n}\n\nexport function writeAssistantReasoningNormalizationModeToMetadata(\n metadata: Record<string, unknown>,\n mode: NcpAssistantReasoningNormalizationMode,\n): Record<string, unknown> {\n const nextMetadata = {\n ...metadata,\n };\n delete nextMetadata.reasoningNormalization;\n delete nextMetadata.reasoningNormalizationMode;\n delete nextMetadata.reasoning_normalization_mode;\n nextMetadata.reasoning_normalization = { mode };\n return nextMetadata;\n}\n\nexport class NcpAssistantTextStreamNormalizer {\n private buffer = \"\";\n private phase: \"initial\" | \"reasoning\" | \"text\" = \"initial\";\n private stripLeadingTextControlTags = false;\n\n constructor(private readonly mode: NcpAssistantReasoningNormalizationMode = \"off\") {}\n\n push(delta: string): NcpAssistantReasoningSegment[] {\n if (!delta) {\n return [];\n }\n if (this.mode !== \"think-tags\") {\n return [{ type: \"text\", text: delta }];\n }\n\n this.buffer += delta;\n return this.flush(false);\n }\n\n finish(): NcpAssistantReasoningSegment[] {\n if (this.mode !== \"think-tags\") {\n return [];\n }\n return this.flush(true);\n }\n\n private flush(final: boolean): NcpAssistantReasoningSegment[] {\n const segments: NcpAssistantReasoningSegment[] = [];\n\n while (true) {\n if (this.phase === \"initial\") {\n const leadingState = readLeadingThinkTagState(this.buffer);\n if (leadingState.status === \"matched\") {\n this.buffer = this.buffer.slice(leadingState.consumed);\n this.phase = \"reasoning\";\n continue;\n }\n if (leadingState.status === \"pending\" && !final) {\n return segments;\n }\n this.phase = \"text\";\n continue;\n }\n\n if (this.phase === \"reasoning\") {\n const boundary = findReasoningBoundary(this.buffer);\n if (boundary) {\n const reasoningText = this.buffer.slice(0, boundary.index);\n if (reasoningText.length > 0) {\n segments.push({ type: \"reasoning\", text: reasoningText });\n }\n this.buffer = this.buffer.slice(boundary.index + boundary.tag.length);\n this.phase = \"text\";\n this.stripLeadingTextControlTags = true;\n continue;\n }\n\n const safeLength = final ? this.buffer.length : Math.max(0, this.buffer.length - MAX_REASONING_DELIMITER_TAIL);\n if (safeLength === 0) {\n return segments;\n }\n segments.push({\n type: \"reasoning\",\n text: this.buffer.slice(0, safeLength),\n });\n this.buffer = this.buffer.slice(safeLength);\n if (!final) {\n return segments;\n }\n continue;\n }\n\n if (this.stripLeadingTextControlTags) {\n const stripped = stripLeadingControlTags(this.buffer);\n if (stripped.pending && !final) {\n this.buffer = stripped.buffer;\n return segments;\n }\n this.buffer = stripped.buffer;\n this.stripLeadingTextControlTags = false;\n }\n\n if (this.buffer.length === 0) {\n return segments;\n }\n\n segments.push({\n type: \"text\",\n text: this.buffer,\n });\n this.buffer = \"\";\n return segments;\n }\n }\n}\n\nexport function normalizeAssistantText(\n text: string,\n mode: NcpAssistantReasoningNormalizationMode,\n): {\n text: string;\n reasoning: string;\n parts: NcpAssistantReasoningSegment[];\n} {\n const normalizer = new NcpAssistantTextStreamNormalizer(mode);\n const parts = [...normalizer.push(text), ...normalizer.finish()].filter((part) => part.text.length > 0);\n\n return {\n text: parts\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\"),\n reasoning: parts\n .filter((part) => part.type === \"reasoning\")\n .map((part) => part.text)\n .join(\"\"),\n parts,\n };\n}\n","import {\n type NcpEndpointEvent,\n NcpEventType,\n type NcpRequestEnvelope,\n type NcpRunHandle,\n} from \"../types/ncp.types.js\";\n\nexport function createNcpRunHandle(envelope: NcpRequestEnvelope): NcpRunHandle {\n return {\n sessionId: envelope.sessionId,\n userMessageId: envelope.message.id,\n assistantMessageId: null,\n runId: null,\n ...(envelope.correlationId ? { correlationId: envelope.correlationId } : {}),\n };\n}\n\nexport function consumeNcpRunHandle(\n events: AsyncIterable<NcpEndpointEvent>,\n fallback: NcpRunHandle,\n): Promise<NcpRunHandle> {\n let resolved = false;\n let handle = fallback;\n\n return new Promise<NcpRunHandle>((resolve, reject) => {\n const resolveOnce = (): void => {\n if (resolved) {\n return;\n }\n resolved = true;\n resolve(handle);\n };\n\n void (async () => {\n try {\n for await (const event of events) {\n if (event.type === NcpEventType.RunStarted) {\n handle = {\n ...handle,\n assistantMessageId: event.payload.messageId ?? null,\n runId: event.payload.runId ?? null,\n };\n resolveOnce();\n }\n }\n resolveOnce();\n } catch (error) {\n if (!resolved) reject(error);\n }\n })();\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/types/message.ts","../src/types/events.types.ts","../src/toolkit/reply-tags.ts","../src/toolkit/reasoning-normalization.ts","../src/toolkit/run-handle.utils.ts"],"sourcesContent":["/**\n * Participants in an NCP conversation.\n *\n * - `user` — A human end-user interacting with the system.\n * - `assistant` — An AI model generating responses.\n * - `system` — Configuration or instruction injected before the conversation.\n * - `tool` — The result returned by a tool invocation.\n * - `service` — A platform-side notification or event (e.g. a bot posting a card),\n * distinct from an AI assistant response.\n */\nexport type NcpMessageRole = \"user\" | \"assistant\" | \"system\" | \"tool\" | \"service\";\n\nexport const NCP_INTERNAL_VISIBILITY_METADATA_KEY = \"ncp_internal_visibility\";\n\nexport function isHiddenNcpMessage(message: Pick<NcpMessage, \"metadata\"> | null | undefined): boolean {\n return message?.metadata?.[NCP_INTERNAL_VISIBILITY_METADATA_KEY] === \"hidden\";\n}\n\n/**\n * Lifecycle state of a message.\n *\n * Applies to both streaming and non-streaming endpoints:\n * - `pending` — Created but not yet sent or received.\n * - `streaming` — Actively receiving incremental deltas.\n * - `final` — Fully received; no further updates expected.\n * - `error` — Terminated with an error; `parts` may be incomplete.\n */\nexport type NcpMessageStatus = \"pending\" | \"streaming\" | \"final\" | \"error\";\n\n/**\n * Message lifecycle timing.\n *\n * For assistant messages, these fields describe when the response started and\n * stopped being produced. They are intentionally message-level and not tied to\n * a specific runtime implementation such as an NCP run.\n */\nexport type NcpMessageLifecycle = {\n startedAt?: string;\n endedAt?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Core portable parts\n// ---------------------------------------------------------------------------\n\n/** Plain text content. The most common part type. */\nexport type NcpTextPart = {\n type: \"text\";\n text: string;\n};\n\n/**\n * A file attachment, delivered either as a URL or inline Base64 content.\n *\n * `url` and `contentBase64` are mutually exclusive — populate exactly one.\n */\nexport type NcpFilePart = {\n type: \"file\";\n name?: string;\n mimeType?: string;\n /** Stable logical asset reference managed by the hosting app. */\n assetUri?: string;\n /** Remote URL pointing to the file. Mutually exclusive with `contentBase64`. */\n url?: string;\n /** Inline file content encoded as Base64. Mutually exclusive with `url`. */\n contentBase64?: string;\n sizeBytes?: number;\n};\n\n/** A cited source or reference, typically surfaced alongside AI-generated content. */\nexport type NcpSourcePart = {\n type: \"source\";\n title?: string;\n url?: string;\n /** Short excerpt from the source relevant to the message. */\n snippet?: string;\n};\n\n/**\n * Marks the beginning of a logical reasoning step in a multi-step response.\n * Used by chain-of-thought or agentic flows to delimit discrete steps.\n */\nexport type NcpStepStartPart = {\n type: \"step-start\";\n stepId?: string;\n /** Human-readable label for the step (e.g. \"Searching the web\"). */\n title?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Agent-oriented parts\n// ---------------------------------------------------------------------------\n\n/** Internal reasoning text produced by the model before its final response. */\nexport type NcpReasoningPart = {\n type: \"reasoning\";\n text: string;\n};\n\nexport type NcpToolOutputTextItem = {\n type: \"input_text\";\n text: string;\n};\n\nexport type NcpToolOutputImageItem = {\n type: \"input_image\";\n imageUrl: string;\n mimeType?: string;\n detail?: \"low\" | \"high\" | \"auto\" | \"original\";\n originalDataChars?: number;\n dataOmitted?: boolean;\n};\n\nexport type NcpToolOutputContentItem =\n | NcpToolOutputTextItem\n | NcpToolOutputImageItem;\n\n/**\n * Represents a tool call and its lifecycle.\n *\n * State semantics (aligned with the Vercel AI SDK convention):\n * - `\"call\"` — The model has emitted a complete tool call; `args` is populated.\n * - `\"partial-call\"` — Arguments are still being streamed; `args` may be incomplete.\n * - `\"result\"` — The tool has returned; `result` is populated.\n * - `\"cancelled\"` — The tool was interrupted before a result was delivered.\n */\nexport type NcpToolInvocationPart = {\n type: \"tool-invocation\";\n toolName: string;\n toolCallId?: string;\n state?: \"call\" | \"partial-call\" | \"result\" | \"cancelled\";\n /** Tool input arguments. May be partial when `state === \"partial-call\"`. */\n args?: unknown;\n /** Tool output. Populated when `state === \"result\"`. */\n result?: unknown;\n /** Model-visible structured output items. Text is bounded; images remain image items. */\n resultContentItems?: NcpToolOutputContentItem[];\n};\n\n// ---------------------------------------------------------------------------\n// Collaboration-platform parts\n// ---------------------------------------------------------------------------\n\n/**\n * A rich card with arbitrary structured data.\n * Rendering is delegated to the platform (e.g. Slack block kit, Teams card).\n */\nexport type NcpCardPart = {\n type: \"card\";\n payload: Record<string, unknown>;\n};\n\n/** Formatted text with an explicit markup format hint. */\nexport type NcpRichTextPart = {\n type: \"rich-text\";\n format: \"markdown\" | \"html\" | \"plain\";\n text: string;\n};\n\n/**\n * An interactive action button or trigger exposed to the user.\n * The platform is responsible for rendering and routing the action.\n */\nexport type NcpActionPart = {\n type: \"action\";\n actionId: string;\n /** Display label shown to the user. */\n label: string;\n /** Arbitrary data forwarded to the action handler. */\n payload?: unknown;\n};\n\n// ---------------------------------------------------------------------------\n// Open extension slot\n// ---------------------------------------------------------------------------\n\n/**\n * Escape hatch for custom or future part types not yet in the NCP spec.\n *\n * Use this to avoid forking the protocol during early iterations.\n * Once a part type stabilizes, promote it to a first-class `NcpXxxPart`.\n */\nexport type NcpExtensionPart = {\n type: \"extension\";\n /** Namespaced identifier for the custom part (e.g. `\"myapp.highlight\"`). */\n extensionType: string;\n data: unknown;\n};\n\n// ---------------------------------------------------------------------------\n// Unified part union\n// ---------------------------------------------------------------------------\n\n/** Union of all recognized NCP message part types. */\nexport type NcpMessagePart =\n | NcpTextPart\n | NcpFilePart\n | NcpSourcePart\n | NcpStepStartPart\n | NcpReasoningPart\n | NcpToolInvocationPart\n | NcpCardPart\n | NcpRichTextPart\n | NcpActionPart\n | NcpExtensionPart;\n\n// ---------------------------------------------------------------------------\n// Message envelope\n// ---------------------------------------------------------------------------\n\n/**\n * Canonical message envelope exchanged and persisted in NCP.\n *\n * A message is composed of an ordered list of typed `parts`, allowing\n * heterogeneous content (text, files, tool calls, etc.) in a single message.\n */\nexport type NcpMessage = {\n /** Globally unique message identifier. */\n id: string;\n /** The session this message belongs to. */\n sessionId: string;\n role: NcpMessageRole;\n status: NcpMessageStatus;\n parts: NcpMessagePart[];\n /** ISO 8601 timestamp (e.g. `\"2024-01-15T10:30:00.000Z\"`). */\n timestamp: string;\n /** Optional lifecycle timing for this message. */\n lifecycle?: NcpMessageLifecycle;\n /** Arbitrary transport- or application-level metadata. */\n metadata?: Record<string, unknown>;\n};\n","import type { OpenAITool } from \"../agent-runtime/llm-api.js\";\nimport type { NcpError } from \"./errors.js\";\nimport type { NcpMessage, NcpToolOutputContentItem } from \"./message.js\";\n\n/**\n * NCP event and payload definitions.\n *\n * Streaming content (text, reasoning, tool args) uses start → delta sequence → end.\n * The same content can be sent as a single full event (e.g. message.incoming or message.completed)\n * instead; endpoints or upper layers choose as needed.\n */\n\n// ---------------------------------------------------------------------------\n// Message envelopes (used by request/incoming/completed/failed)\n// ---------------------------------------------------------------------------\n\nexport type NcpCorrelationPayload = {\n correlationId?: string;\n};\n\nexport type NcpRequestEnvelope = {\n sessionId: string;\n message: NcpMessage;\n correlationId?: string;\n metadata?: Record<string, unknown>;\n providerRoute?: NcpProviderRuntimeRoute;\n tools?: ReadonlyArray<OpenAITool>;\n};\n\nexport type NcpOutboundMessageDraft = Omit<NcpMessage, \"sessionId\"> & {\n sessionId?: string;\n};\n\nexport type NcpAgentSendEnvelope = Omit<NcpRequestEnvelope, \"sessionId\" | \"message\"> & {\n sessionId?: string;\n message: NcpMessage | NcpOutboundMessageDraft;\n};\n\nexport type NcpProviderRuntimeRoute = {\n model: string;\n apiKey?: string | null;\n apiBase?: string | null;\n headers: Record<string, string>;\n};\n\n/** Payload for message.incoming: message content from the other peer (partial or full). */\nexport type NcpResponseEnvelope = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpCompletedEnvelope = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpFailedEnvelope = {\n sessionId: string;\n messageId?: string;\n error: NcpError;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpMessageAcceptedPayload = {\n messageId: string;\n transportId?: string;\n} & NcpCorrelationPayload;\n\n/** Payload for message.abort: identifies and explains a cancelled active execution. */\nexport type NcpMessageAbortPayload = {\n sessionId: string;\n messageId?: string;\n runId?: string | undefined;\n reason?: NcpError | undefined;\n} & NcpCorrelationPayload;\n\n/**\n * Payload for message.stream-request: attach to the live event stream of a session.\n * Used when reconnecting during an active response or attaching another live reader.\n */\nexport type NcpStreamRequestPayload = {\n sessionId: string;\n metadata?: Record<string, unknown>;\n};\n\n/**\n * Payload for message.sent: the local peer has sent a message (outbound).\n * Typically non-streaming; add the message to the local conversation state.\n */\nexport type NcpMessageSentPayload = {\n sessionId: string;\n message: NcpMessage;\n metadata?: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// IM: typing indicator (user or bot)\n// ---------------------------------------------------------------------------\n\nexport type NcpTypingStartPayload = {\n sessionId: string;\n /** Participant who is typing (human user or bot/assistant). */\n userId?: string;\n};\n\nexport type NcpTypingEndPayload = {\n sessionId: string;\n /** Participant who stopped typing (human user or bot/assistant). */\n userId?: string;\n};\n\n// ---------------------------------------------------------------------------\n// IM: presence (online/offline/away)\n// ---------------------------------------------------------------------------\n\nexport type NcpPresenceUpdatedPayload = {\n sessionId: string;\n /** Participant this presence applies to (human user or bot/assistant). */\n userId?: string;\n status: \"online\" | \"offline\" | \"away\";\n};\n\n// ---------------------------------------------------------------------------\n// IM: read receipt, delivery receipt, recall, reaction\n// ---------------------------------------------------------------------------\n\nexport type NcpMessageReadPayload = {\n sessionId: string;\n messageId: string;\n readAt?: string;\n readerId?: string;\n};\n\nexport type NcpMessageDeliveredPayload = {\n sessionId: string;\n messageId: string;\n};\n\nexport type NcpMessageRecalledPayload = {\n sessionId: string;\n messageId: string;\n};\n\nexport type NcpMessageReactionPayload = {\n sessionId: string;\n messageId: string;\n reaction: string;\n added: boolean;\n /** Participant who added or removed the reaction (human user or bot/assistant). */\n userId?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Run lifecycle (aligned with agent-chat RUN_*)\n// ---------------------------------------------------------------------------\n\nexport type NcpRunStartedPayload = {\n sessionId?: string;\n messageId?: string;\n threadId?: string;\n runId?: string;\n startedAt?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunFinishedPayload = {\n sessionId?: string;\n messageId?: string;\n threadId?: string;\n runId?: string;\n startedAt?: string;\n endedAt?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunErrorPayload = {\n sessionId?: string;\n messageId?: string;\n error?: string;\n threadId?: string;\n runId?: string;\n startedAt?: string;\n endedAt?: string;\n} & NcpCorrelationPayload;\n\nexport type NcpRunMetadataPayload = {\n sessionId?: string;\n messageId?: string;\n runId?: string;\n metadata: Record<string, unknown>;\n} & NcpCorrelationPayload;\n\nexport type NcpContextWindowUpdatedPayload = {\n sessionId: string;\n contextWindow: Record<string, unknown>;\n};\n\n// ---------------------------------------------------------------------------\n// Text stream (aligned with agent-chat TEXT_*)\n// Streaming: text-start → text-delta sequence → text-end. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpTextStartPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpTextDeltaPayload = {\n sessionId: string;\n messageId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpTextEndPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Reasoning stream (aligned with agent-chat REASONING_*)\n// Streaming: reasoning-start → reasoning-delta sequence → reasoning-end. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpReasoningStartPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpReasoningDeltaPayload = {\n sessionId: string;\n messageId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpReasoningEndPayload = {\n sessionId: string;\n messageId: string;\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Tool call stream (aligned with agent-chat TOOL_CALL_*)\n// Streaming: tool-call-start → tool-call-args or tool-call-args-delta sequence → tool-call-end; then tool-call-result. Alternative: message.incoming / message.completed with full NcpMessage.\n// ---------------------------------------------------------------------------\n\nexport type NcpToolCallStartPayload = {\n sessionId: string;\n messageId?: string;\n toolCallId: string;\n toolName: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallArgsPayload = {\n sessionId: string;\n toolCallId: string;\n args: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallArgsDeltaPayload = {\n sessionId: string;\n messageId?: string;\n toolCallId: string;\n delta: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallEndPayload = {\n sessionId: string;\n toolCallId: string;\n} & NcpCorrelationPayload;\n\nexport type NcpToolCallResultPayload = {\n sessionId: string;\n toolCallId: string;\n content: unknown;\n contentItems?: NcpToolOutputContentItem[];\n} & NcpCorrelationPayload;\n\n// ---------------------------------------------------------------------------\n// Event type enum\n// ---------------------------------------------------------------------------\n\nexport enum NcpEventType {\n EndpointReady = \"endpoint.ready\",\n EndpointError = \"endpoint.error\",\n MessageRequest = \"message.request\",\n MessageStreamRequest = \"message.stream-request\",\n MessageSent = \"message.sent\",\n MessageAccepted = \"message.accepted\",\n MessageIncoming = \"message.incoming\",\n MessageCompleted = \"message.completed\",\n MessageFailed = \"message.failed\",\n MessageAbort = \"message.abort\",\n MessageTextStart = \"message.text-start\",\n MessageTextDelta = \"message.text-delta\",\n MessageTextEnd = \"message.text-end\",\n MessageReasoningStart = \"message.reasoning-start\",\n MessageReasoningDelta = \"message.reasoning-delta\",\n MessageReasoningEnd = \"message.reasoning-end\",\n MessageToolCallStart = \"message.tool-call-start\",\n MessageToolCallArgs = \"message.tool-call-args\",\n MessageToolCallArgsDelta = \"message.tool-call-args-delta\",\n MessageToolCallEnd = \"message.tool-call-end\",\n MessageToolCallResult = \"message.tool-call-result\",\n MessageRead = \"message.read\",\n MessageDelivered = \"message.delivered\",\n MessageRecalled = \"message.recalled\",\n MessageReaction = \"message.reaction\",\n RunStarted = \"run.started\",\n RunFinished = \"run.finished\",\n RunError = \"run.error\",\n RunMetadata = \"run.metadata\",\n ContextWindowUpdated = \"context-window.updated\",\n TypingStart = \"typing.start\",\n TypingEnd = \"typing.end\",\n PresenceUpdated = \"presence.updated\",\n}\n\n// ---------------------------------------------------------------------------\n// Event union (aligned with agent-chat EventType + endpoint lifecycle)\n// ---------------------------------------------------------------------------\n\nexport type NcpEventTiming = {\n /** ISO 8601 timestamp for when the event happened in the producer's domain. */\n occurredAt?: string;\n};\n\nexport type NcpEndpointEvent = NcpEventTiming & (\n | { type: NcpEventType.EndpointReady }\n | { type: NcpEventType.MessageRequest; payload: NcpAgentSendEnvelope }\n | { type: NcpEventType.MessageStreamRequest; payload: NcpStreamRequestPayload }\n | { type: NcpEventType.MessageSent; payload: NcpMessageSentPayload }\n | { type: NcpEventType.MessageAccepted; payload: NcpMessageAcceptedPayload }\n | { type: NcpEventType.MessageIncoming; payload: NcpResponseEnvelope }\n | { type: NcpEventType.MessageCompleted; payload: NcpCompletedEnvelope }\n | { type: NcpEventType.MessageFailed; payload: NcpFailedEnvelope }\n | { type: NcpEventType.MessageAbort; payload: NcpMessageAbortPayload }\n | { type: NcpEventType.EndpointError; payload: NcpError }\n | { type: NcpEventType.RunStarted; payload: NcpRunStartedPayload }\n | { type: NcpEventType.RunFinished; payload: NcpRunFinishedPayload }\n | { type: NcpEventType.RunError; payload: NcpRunErrorPayload }\n | { type: NcpEventType.RunMetadata; payload: NcpRunMetadataPayload }\n | { type: NcpEventType.ContextWindowUpdated; payload: NcpContextWindowUpdatedPayload }\n | { type: NcpEventType.MessageTextStart; payload: NcpTextStartPayload }\n | { type: NcpEventType.MessageTextDelta; payload: NcpTextDeltaPayload }\n | { type: NcpEventType.MessageTextEnd; payload: NcpTextEndPayload }\n | { type: NcpEventType.MessageReasoningStart; payload: NcpReasoningStartPayload }\n | { type: NcpEventType.MessageReasoningDelta; payload: NcpReasoningDeltaPayload }\n | { type: NcpEventType.MessageReasoningEnd; payload: NcpReasoningEndPayload }\n | { type: NcpEventType.MessageToolCallStart; payload: NcpToolCallStartPayload }\n | { type: NcpEventType.MessageToolCallArgs; payload: NcpToolCallArgsPayload }\n | { type: NcpEventType.MessageToolCallArgsDelta; payload: NcpToolCallArgsDeltaPayload }\n | { type: NcpEventType.MessageToolCallEnd; payload: NcpToolCallEndPayload }\n | { type: NcpEventType.MessageToolCallResult; payload: NcpToolCallResultPayload }\n | { type: NcpEventType.TypingStart; payload: NcpTypingStartPayload }\n | { type: NcpEventType.TypingEnd; payload: NcpTypingEndPayload }\n | { type: NcpEventType.PresenceUpdated; payload: NcpPresenceUpdatedPayload }\n | { type: NcpEventType.MessageRead; payload: NcpMessageReadPayload }\n | { type: NcpEventType.MessageDelivered; payload: NcpMessageDeliveredPayload }\n | { type: NcpEventType.MessageRecalled; payload: NcpMessageRecalledPayload }\n | { type: NcpEventType.MessageReaction; payload: NcpMessageReactionPayload }\n);\n\nexport type NcpEndpointEventDraft = NcpEndpointEvent extends infer Event\n ? Event extends NcpEndpointEvent\n ? Omit<Event, \"occurredAt\">\n : never\n : never;\n\nexport function createNcpEndpointEvent<T extends NcpEndpointEventDraft>(\n event: T & { occurredAt?: string },\n occurredAt = event.occurredAt ?? new Date().toISOString(),\n): T & { occurredAt: string } {\n return {\n ...event,\n occurredAt,\n };\n}\n\nexport type NcpEndpointSubscriber = (event: NcpEndpointEvent) => void;\n","import type { NcpMessage } from \"../types/message.js\";\n\nexport type NcpReplyTagParseResult = {\n content: string;\n replyTo?: string;\n};\n\nconst REPLY_TO_CURRENT_PATTERN = /\\[\\[\\s*reply_to_current\\s*\\]\\]/gi;\nconst REPLY_TO_ID_PATTERN = /\\[\\[\\s*reply_to\\s*:\\s*([^\\]]+?)\\s*\\]\\]/i;\n\nfunction normalizeReplyTarget(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nexport function stripReplyTagsFromText(content: string, currentMessageId?: string): NcpReplyTagParseResult {\n let nextContent = content;\n let replyTo: string | undefined;\n\n if (REPLY_TO_CURRENT_PATTERN.test(nextContent)) {\n replyTo = normalizeReplyTarget(currentMessageId);\n nextContent = nextContent.replace(REPLY_TO_CURRENT_PATTERN, \"\").trim();\n }\n\n const explicitReplyTarget = nextContent.match(REPLY_TO_ID_PATTERN)?.[1];\n if (explicitReplyTarget) {\n replyTo = normalizeReplyTarget(explicitReplyTarget);\n nextContent = nextContent.replace(REPLY_TO_ID_PATTERN, \"\").trim();\n }\n\n return replyTo ? { content: nextContent, replyTo } : { content: nextContent };\n}\n\nexport function sanitizeAssistantReplyTags(\n message: NcpMessage,\n currentMessageId = message.id,\n): NcpMessage {\n if (message.role !== \"assistant\") {\n return {\n ...message,\n parts: [...message.parts],\n metadata: message.metadata ? { ...message.metadata } : undefined,\n };\n }\n\n const firstTextIndex = message.parts.findIndex((part) => part.type === \"text\");\n const nextMetadata = message.metadata ? { ...message.metadata } : undefined;\n const existingReplyTo = normalizeReplyTarget(nextMetadata?.reply_to);\n\n if (firstTextIndex < 0) {\n return {\n ...message,\n parts: [...message.parts],\n metadata: nextMetadata,\n };\n }\n\n const firstTextPart = message.parts[firstTextIndex];\n if (!firstTextPart || firstTextPart.type !== \"text\") {\n return {\n ...message,\n parts: [...message.parts],\n metadata: nextMetadata,\n };\n }\n\n const { content, replyTo } = stripReplyTagsFromText(firstTextPart.text, currentMessageId);\n const effectiveReplyTo = replyTo ?? existingReplyTo;\n const nextParts = message.parts.flatMap((part, index) => {\n if (index !== firstTextIndex || part.type !== \"text\") {\n return [part];\n }\n if (content.length === 0) {\n return [];\n }\n return [{ ...part, text: content }];\n });\n\n if (effectiveReplyTo) {\n return {\n ...message,\n parts: nextParts,\n metadata: {\n ...nextMetadata,\n reply_to: effectiveReplyTo,\n },\n };\n }\n\n return {\n ...message,\n parts: nextParts,\n metadata: nextMetadata,\n };\n}\n","export type NcpAssistantReasoningNormalizationMode = \"off\" | \"think-tags\";\n\nexport type NcpAssistantReasoningSegment = {\n type: \"text\" | \"reasoning\";\n text: string;\n};\n\nconst THINK_OPEN_TAG = \"<think>\";\nconst THINK_CLOSE_TAG = \"</think>\";\nconst FINAL_OPEN_TAG = \"<final>\";\nconst FINAL_CLOSE_TAG = \"</final>\";\nconst LEADING_CONTROL_TAGS = [THINK_CLOSE_TAG, FINAL_OPEN_TAG, FINAL_CLOSE_TAG] as const;\nconst MAX_REASONING_DELIMITER_TAIL = THINK_CLOSE_TAG.length - 1;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction normalizeMode(value: unknown): NcpAssistantReasoningNormalizationMode | null {\n if (value === \"off\" || value === \"think-tags\") {\n return value;\n }\n return null;\n}\n\nfunction readLeadingThinkTagState(\n buffer: string,\n): { status: \"matched\"; consumed: number } | { status: \"pending\" | \"rejected\" } {\n let cursor = 0;\n while (cursor < buffer.length && isWhitespace(buffer[cursor]!)) {\n cursor += 1;\n }\n\n const rest = buffer.slice(cursor);\n if (rest.startsWith(THINK_OPEN_TAG)) {\n return {\n status: \"matched\",\n consumed: cursor + THINK_OPEN_TAG.length,\n };\n }\n if (THINK_OPEN_TAG.startsWith(rest)) {\n return { status: \"pending\" };\n }\n return { status: \"rejected\" };\n}\n\nfunction stripLeadingControlTags(buffer: string): { buffer: string; pending: boolean } {\n let nextBuffer = buffer;\n\n while (true) {\n let cursor = 0;\n while (cursor < nextBuffer.length && isWhitespace(nextBuffer[cursor]!)) {\n cursor += 1;\n }\n\n const rest = nextBuffer.slice(cursor);\n if (rest.length === 0) {\n return { buffer: \"\", pending: false };\n }\n\n const matchedTag = LEADING_CONTROL_TAGS.find((tag) => rest.startsWith(tag));\n if (matchedTag) {\n nextBuffer = rest.slice(matchedTag.length);\n continue;\n }\n\n if (LEADING_CONTROL_TAGS.some((tag) => tag.startsWith(rest))) {\n return { buffer: rest, pending: true };\n }\n\n return { buffer: rest, pending: false };\n }\n}\n\nfunction findReasoningBoundary(buffer: string): { index: number; tag: string } | null {\n const indices = [\n { index: buffer.indexOf(THINK_CLOSE_TAG), tag: THINK_CLOSE_TAG },\n { index: buffer.indexOf(FINAL_OPEN_TAG), tag: FINAL_OPEN_TAG },\n ].filter((entry) => entry.index >= 0);\n\n if (indices.length === 0) {\n return null;\n }\n\n return indices.reduce((left, right) => (right.index < left.index ? right : left));\n}\n\nexport function readAssistantReasoningNormalizationMode(\n value: unknown,\n): NcpAssistantReasoningNormalizationMode | null {\n if (typeof value === \"string\") {\n return normalizeMode(value);\n }\n if (isRecord(value)) {\n return normalizeMode(value.mode);\n }\n return null;\n}\n\nexport function readAssistantReasoningNormalizationModeFromMetadata(\n metadata: Record<string, unknown> | null | undefined,\n): NcpAssistantReasoningNormalizationMode | null {\n if (!metadata) {\n return null;\n }\n return (\n readAssistantReasoningNormalizationMode(metadata.reasoning_normalization) ??\n readAssistantReasoningNormalizationMode(metadata.reasoningNormalization) ??\n normalizeMode(metadata.reasoning_normalization_mode) ??\n normalizeMode(metadata.reasoningNormalizationMode)\n );\n}\n\nexport function writeAssistantReasoningNormalizationModeToMetadata(\n metadata: Record<string, unknown>,\n mode: NcpAssistantReasoningNormalizationMode,\n): Record<string, unknown> {\n const nextMetadata = {\n ...metadata,\n };\n delete nextMetadata.reasoningNormalization;\n delete nextMetadata.reasoningNormalizationMode;\n delete nextMetadata.reasoning_normalization_mode;\n nextMetadata.reasoning_normalization = { mode };\n return nextMetadata;\n}\n\nexport class NcpAssistantTextStreamNormalizer {\n private buffer = \"\";\n private phase: \"initial\" | \"reasoning\" | \"text\" = \"initial\";\n private stripLeadingTextControlTags = false;\n\n constructor(private readonly mode: NcpAssistantReasoningNormalizationMode = \"off\") {}\n\n push(delta: string): NcpAssistantReasoningSegment[] {\n if (!delta) {\n return [];\n }\n if (this.mode !== \"think-tags\") {\n return [{ type: \"text\", text: delta }];\n }\n\n this.buffer += delta;\n return this.flush(false);\n }\n\n finish(): NcpAssistantReasoningSegment[] {\n if (this.mode !== \"think-tags\") {\n return [];\n }\n return this.flush(true);\n }\n\n private flush(final: boolean): NcpAssistantReasoningSegment[] {\n const segments: NcpAssistantReasoningSegment[] = [];\n\n while (true) {\n if (this.phase === \"initial\") {\n const leadingState = readLeadingThinkTagState(this.buffer);\n if (leadingState.status === \"matched\") {\n this.buffer = this.buffer.slice(leadingState.consumed);\n this.phase = \"reasoning\";\n continue;\n }\n if (leadingState.status === \"pending\" && !final) {\n return segments;\n }\n this.phase = \"text\";\n continue;\n }\n\n if (this.phase === \"reasoning\") {\n const boundary = findReasoningBoundary(this.buffer);\n if (boundary) {\n const reasoningText = this.buffer.slice(0, boundary.index);\n if (reasoningText.length > 0) {\n segments.push({ type: \"reasoning\", text: reasoningText });\n }\n this.buffer = this.buffer.slice(boundary.index + boundary.tag.length);\n this.phase = \"text\";\n this.stripLeadingTextControlTags = true;\n continue;\n }\n\n const safeLength = final ? this.buffer.length : Math.max(0, this.buffer.length - MAX_REASONING_DELIMITER_TAIL);\n if (safeLength === 0) {\n return segments;\n }\n segments.push({\n type: \"reasoning\",\n text: this.buffer.slice(0, safeLength),\n });\n this.buffer = this.buffer.slice(safeLength);\n if (!final) {\n return segments;\n }\n continue;\n }\n\n if (this.stripLeadingTextControlTags) {\n const stripped = stripLeadingControlTags(this.buffer);\n if (stripped.pending && !final) {\n this.buffer = stripped.buffer;\n return segments;\n }\n this.buffer = stripped.buffer;\n this.stripLeadingTextControlTags = false;\n }\n\n if (this.buffer.length === 0) {\n return segments;\n }\n\n segments.push({\n type: \"text\",\n text: this.buffer,\n });\n this.buffer = \"\";\n return segments;\n }\n }\n}\n\nexport function normalizeAssistantText(\n text: string,\n mode: NcpAssistantReasoningNormalizationMode,\n): {\n text: string;\n reasoning: string;\n parts: NcpAssistantReasoningSegment[];\n} {\n const normalizer = new NcpAssistantTextStreamNormalizer(mode);\n const parts = [...normalizer.push(text), ...normalizer.finish()].filter((part) => part.text.length > 0);\n\n return {\n text: parts\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\"),\n reasoning: parts\n .filter((part) => part.type === \"reasoning\")\n .map((part) => part.text)\n .join(\"\"),\n parts,\n };\n}\n","import {\n type NcpEndpointEvent,\n NcpEventType,\n type NcpRequestEnvelope,\n type NcpRunHandle,\n} from \"../types/ncp.types.js\";\n\nexport function createNcpRunHandle(envelope: NcpRequestEnvelope): NcpRunHandle {\n return {\n sessionId: envelope.sessionId,\n userMessageId: envelope.message.id,\n assistantMessageId: null,\n runId: null,\n ...(envelope.correlationId ? { correlationId: envelope.correlationId } : {}),\n };\n}\n\nexport function consumeNcpRunHandle(\n events: AsyncIterable<NcpEndpointEvent>,\n fallback: NcpRunHandle,\n): Promise<NcpRunHandle> {\n let resolved = false;\n let handle = fallback;\n\n return new Promise<NcpRunHandle>((resolve, reject) => {\n const resolveOnce = (): void => {\n if (resolved) {\n return;\n }\n resolved = true;\n resolve(handle);\n };\n\n void (async () => {\n try {\n for await (const event of events) {\n if (event.type === NcpEventType.RunStarted) {\n handle = {\n ...handle,\n assistantMessageId: event.payload.messageId ?? null,\n runId: event.payload.runId ?? null,\n };\n resolveOnce();\n }\n }\n resolveOnce();\n } catch (error) {\n if (!resolved) reject(error);\n }\n })();\n });\n}\n"],"mappings":"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"}
|