@nextclaw/ncp-toolkit 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +28 -19
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -2,14 +2,22 @@
|
|
|
2
2
|
import {
|
|
3
3
|
NcpEventType
|
|
4
4
|
} from "@nextclaw/ncp";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
// src/agent/agent-conversation-message-normalizer.ts
|
|
7
|
+
import { sanitizeAssistantReplyTags } from "@nextclaw/ncp";
|
|
8
|
+
function cloneConversationMessage(message) {
|
|
7
9
|
return {
|
|
8
10
|
...message,
|
|
9
11
|
parts: [...message.parts],
|
|
10
12
|
metadata: message.metadata ? { ...message.metadata } : void 0
|
|
11
13
|
};
|
|
12
|
-
}
|
|
14
|
+
}
|
|
15
|
+
function normalizeConversationMessage(message) {
|
|
16
|
+
return cloneConversationMessage(sanitizeAssistantReplyTags(message));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// src/agent/agent-conversation-state-manager.ts
|
|
20
|
+
var DEFAULT_ASSISTANT_ROLE = "assistant";
|
|
13
21
|
var buildRuntimeError = (payload) => {
|
|
14
22
|
const message = payload.error?.trim();
|
|
15
23
|
return {
|
|
@@ -39,8 +47,8 @@ var DefaultNcpAgentConversationStateManager = class {
|
|
|
39
47
|
return this.snapshotCache;
|
|
40
48
|
}
|
|
41
49
|
const snapshot = {
|
|
42
|
-
messages: this.messages.map((message) =>
|
|
43
|
-
streamingMessage: this.streamingMessage ?
|
|
50
|
+
messages: this.messages.map((message) => cloneConversationMessage(message)),
|
|
51
|
+
streamingMessage: this.streamingMessage ? cloneConversationMessage(this.streamingMessage) : null,
|
|
44
52
|
error: this.error ? { ...this.error, details: this.error.details ? { ...this.error.details } : void 0 } : null,
|
|
45
53
|
activeRun: this.activeRun ? { ...this.activeRun } : null
|
|
46
54
|
};
|
|
@@ -66,7 +74,7 @@ var DefaultNcpAgentConversationStateManager = class {
|
|
|
66
74
|
this.notifyListeners();
|
|
67
75
|
}
|
|
68
76
|
hydrate(payload) {
|
|
69
|
-
this.messages = payload.messages.map((message) =>
|
|
77
|
+
this.messages = payload.messages.map((message) => normalizeConversationMessage(message));
|
|
70
78
|
this.streamingMessage = null;
|
|
71
79
|
this.error = null;
|
|
72
80
|
this.activeRun = payload.activeRun ? {
|
|
@@ -387,7 +395,7 @@ var DefaultNcpAgentConversationStateManager = class {
|
|
|
387
395
|
}
|
|
388
396
|
const messageIndex = this.messages.findIndex((message) => message.id === messageId);
|
|
389
397
|
if (messageIndex >= 0) {
|
|
390
|
-
const existingMessage =
|
|
398
|
+
const existingMessage = cloneConversationMessage(this.messages[messageIndex]);
|
|
391
399
|
const nextMessages = [...this.messages];
|
|
392
400
|
nextMessages.splice(messageIndex, 1);
|
|
393
401
|
this.messages = nextMessages;
|
|
@@ -471,7 +479,7 @@ var DefaultNcpAgentConversationStateManager = class {
|
|
|
471
479
|
return nextParts;
|
|
472
480
|
}
|
|
473
481
|
upsertMessage(message) {
|
|
474
|
-
const normalizedMessage =
|
|
482
|
+
const normalizedMessage = normalizeConversationMessage(message);
|
|
475
483
|
const messageIndex = this.messages.findIndex((item) => item.id === normalizedMessage.id);
|
|
476
484
|
if (messageIndex < 0) {
|
|
477
485
|
this.messages = [...this.messages, normalizedMessage];
|
|
@@ -487,7 +495,7 @@ var DefaultNcpAgentConversationStateManager = class {
|
|
|
487
495
|
if (!nextStreamingMessage && !this.streamingMessage) {
|
|
488
496
|
return;
|
|
489
497
|
}
|
|
490
|
-
this.streamingMessage = nextStreamingMessage ?
|
|
498
|
+
this.streamingMessage = nextStreamingMessage ? normalizeConversationMessage(nextStreamingMessage) : null;
|
|
491
499
|
this.stateVersion += 1;
|
|
492
500
|
}
|
|
493
501
|
setError(nextError) {
|
|
@@ -652,21 +660,19 @@ var AgentRunExecutor = class {
|
|
|
652
660
|
metadata: envelope.metadata
|
|
653
661
|
}
|
|
654
662
|
};
|
|
655
|
-
|
|
663
|
+
await session.stateManager.dispatch(messageSent);
|
|
664
|
+
await this.persistSession(envelope.sessionId);
|
|
665
|
+
yield structuredClone(messageSent);
|
|
656
666
|
try {
|
|
657
667
|
for await (const event of session.runtime.run(
|
|
658
668
|
{
|
|
659
669
|
sessionId: envelope.sessionId,
|
|
660
670
|
messages: [envelope.message],
|
|
661
|
-
correlationId: envelope.correlationId
|
|
671
|
+
correlationId: envelope.correlationId,
|
|
672
|
+
metadata: envelope.metadata
|
|
662
673
|
},
|
|
663
674
|
{ signal: controller.signal }
|
|
664
675
|
)) {
|
|
665
|
-
if (!messageSentPublished) {
|
|
666
|
-
messageSentPublished = true;
|
|
667
|
-
await this.persistSession(envelope.sessionId);
|
|
668
|
-
yield structuredClone(messageSent);
|
|
669
|
-
}
|
|
670
676
|
await this.persistSession(envelope.sessionId);
|
|
671
677
|
yield structuredClone(event);
|
|
672
678
|
}
|
|
@@ -1076,7 +1082,8 @@ var DefaultNcpAgentBackend = class {
|
|
|
1076
1082
|
await this.sessionStore.saveSession({
|
|
1077
1083
|
sessionId,
|
|
1078
1084
|
messages: readMessages(snapshot),
|
|
1079
|
-
updatedAt: now()
|
|
1085
|
+
updatedAt: now(),
|
|
1086
|
+
metadata: session.activeExecution?.requestEnvelope.metadata
|
|
1080
1087
|
});
|
|
1081
1088
|
}
|
|
1082
1089
|
};
|
|
@@ -1092,7 +1099,8 @@ function toSessionSummary(session, liveSession) {
|
|
|
1092
1099
|
sessionId: session.sessionId,
|
|
1093
1100
|
messageCount: session.messages.length,
|
|
1094
1101
|
updatedAt: session.updatedAt,
|
|
1095
|
-
status: liveSession?.activeExecution ? "running" : "idle"
|
|
1102
|
+
status: liveSession?.activeExecution ? "running" : "idle",
|
|
1103
|
+
...session.metadata ? { metadata: structuredClone(session.metadata) } : {}
|
|
1096
1104
|
};
|
|
1097
1105
|
}
|
|
1098
1106
|
function toLiveSessionSummary(session) {
|
|
@@ -1101,7 +1109,8 @@ function toLiveSessionSummary(session) {
|
|
|
1101
1109
|
sessionId: session.sessionId,
|
|
1102
1110
|
messageCount: readMessages(snapshot).length,
|
|
1103
1111
|
updatedAt: now(),
|
|
1104
|
-
status: session.activeExecution ? "running" : "idle"
|
|
1112
|
+
status: session.activeExecution ? "running" : "idle",
|
|
1113
|
+
...session.activeExecution?.requestEnvelope.metadata ? { metadata: structuredClone(session.activeExecution.requestEnvelope.metadata) } : {}
|
|
1105
1114
|
};
|
|
1106
1115
|
}
|
|
1107
1116
|
function now() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextclaw/ncp-toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Toolkit implementations built on top of the NextClaw Communication Protocol.",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@nextclaw/ncp": "0.
|
|
18
|
+
"@nextclaw/ncp": "0.3.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/node": "^20.17.6",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"tsup": "^8.3.5",
|
|
24
24
|
"typescript": "^5.6.3",
|
|
25
25
|
"vitest": "^2.1.2",
|
|
26
|
-
"@nextclaw/ncp-agent-runtime": "0.
|
|
26
|
+
"@nextclaw/ncp-agent-runtime": "0.2.0"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "tsup src/index.ts --format esm --dts --out-dir dist",
|