@copilotkit/runtime 1.79.2-canary.1792172552 → 1.81.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/_virtual/_rolldown/runtime.mjs +15 -1
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts +5 -3
- package/dist/agent/index.d.cts.map +1 -1
- package/dist/agent/index.d.mts +4 -2
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +25 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +25 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +17 -3
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts +2 -3
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts +2 -3
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +18 -4
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/lib/runtime/legacy-service-adapter-agent.cjs +360 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.cjs.map +1 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.mjs +359 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.mjs.map +1 -0
- package/dist/lib/telemetry-client.cjs +12 -1
- package/dist/lib/telemetry-client.cjs.map +1 -1
- package/dist/lib/telemetry-client.mjs +12 -1
- package/dist/lib/telemetry-client.mjs.map +1 -1
- package/dist/package.cjs +6 -6
- package/dist/package.mjs +6 -6
- package/dist/service-adapters/events.cjs +91 -0
- package/dist/service-adapters/events.cjs.map +1 -1
- package/dist/service-adapters/events.d.cts +6 -1
- package/dist/service-adapters/events.d.cts.map +1 -1
- package/dist/service-adapters/events.d.mts +6 -1
- package/dist/service-adapters/events.d.mts.map +1 -1
- package/dist/service-adapters/events.mjs +90 -1
- package/dist/service-adapters/events.mjs.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.cjs +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.cjs.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.cts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.mts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.mjs +2 -2
- package/dist/service-adapters/langchain/langchain-adapter.mjs.map +1 -1
- package/dist/service-adapters/langchain/utils.cjs +53 -15
- package/dist/service-adapters/langchain/utils.cjs.map +1 -1
- package/dist/service-adapters/langchain/utils.mjs +53 -16
- package/dist/service-adapters/langchain/utils.mjs.map +1 -1
- package/dist/v2/index.cjs +6 -0
- package/dist/v2/index.d.cts +7 -4
- package/dist/v2/index.d.mts +7 -4
- package/dist/v2/index.mjs +5 -3
- package/dist/v2/runtime/core/middleware-sse-parser.cjs +11 -2
- package/dist/v2/runtime/core/middleware-sse-parser.cjs.map +1 -1
- package/dist/v2/runtime/core/middleware-sse-parser.mjs +11 -2
- package/dist/v2/runtime/core/middleware-sse-parser.mjs.map +1 -1
- package/dist/v2/runtime/core/package-info.cjs +1 -1
- package/dist/v2/runtime/core/package-info.mjs +1 -1
- package/dist/v2/runtime/core/runtime.cjs +6 -3
- package/dist/v2/runtime/core/runtime.cjs.map +1 -1
- package/dist/v2/runtime/core/runtime.d.cts +15 -3
- package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
- package/dist/v2/runtime/core/runtime.d.mts +15 -3
- package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
- package/dist/v2/runtime/core/runtime.mjs +6 -3
- package/dist/v2/runtime/core/runtime.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.cjs +2 -2
- package/dist/v2/runtime/endpoints/express.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.mjs +2 -2
- package/dist/v2/runtime/endpoints/express.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs +51 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs +52 -2
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs.map +1 -1
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs +394 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts +21 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts +21 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs +393 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs.map +1 -0
- package/dist/v2/runtime/generative-ui/index.d.cts +3 -0
- package/dist/v2/runtime/generative-ui/index.d.mts +3 -0
- package/dist/v2/runtime/generative-ui/surface-writer.cjs +86 -0
- package/dist/v2/runtime/generative-ui/surface-writer.cjs.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.cts +33 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.cts.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.mts +33 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.mts.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.mjs +85 -0
- package/dist/v2/runtime/generative-ui/surface-writer.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-run.cjs +8 -3
- package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-run.mjs +5 -1
- package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.cjs +2 -3
- package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.mjs +2 -3
- package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +7 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +7 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.cjs +39 -0
- package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.mjs +39 -0
- package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
- package/dist/v2/runtime/index.d.cts +7 -3
- package/dist/v2/runtime/index.d.cts.map +1 -1
- package/dist/v2/runtime/index.d.mts +7 -3
- package/dist/v2/runtime/index.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs +100 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts +33 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts +33 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs +100 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/experimental.d.cts +27 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.cts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.mts +27 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/index.d.cts +2 -1
- package/dist/v2/runtime/intelligence-platform/index.d.mts +2 -1
- package/dist/v2/runtime/intelligence-platform/learning-management.cjs +204 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.cjs.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.cts +112 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.cts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.mts +112 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.mjs +194 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.mjs.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.cjs +16 -0
- package/dist/v2/runtime/runner/agent-runner.cjs.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.d.cts +11 -1
- package/dist/v2/runtime/runner/agent-runner.d.cts.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.d.mts +11 -1
- package/dist/v2/runtime/runner/agent-runner.d.mts.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.mjs +16 -1
- package/dist/v2/runtime/runner/agent-runner.mjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.cjs +1 -1
- package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.mjs +2 -2
- package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
- package/dist/v2/runtime/runner/index.d.cts +2 -2
- package/dist/v2/runtime/runner/index.d.mts +2 -2
- package/dist/v2/runtime/runner/index.mjs +1 -1
- package/dist/v2/runtime/runner/intelligence.cjs +25 -85
- package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.cts +2 -31
- package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.mts +2 -31
- package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.mjs +27 -87
- package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
- package/package.json +8 -8
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs +0 -82
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs.map +0 -1
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs +0 -81
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs.map +0 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
//#region src/v2/runtime/intelligence-platform/learning-management.ts
|
|
5
|
+
/** Wire contracts for the project-key Learning API; keep aligned with Intelligence. */
|
|
6
|
+
const learningContainerIdSchema = z.string().min(1).max(64).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);
|
|
7
|
+
const learningContainerSchema = z.object({
|
|
8
|
+
id: learningContainerIdSchema,
|
|
9
|
+
name: z.string().min(1),
|
|
10
|
+
projectId: z.number().int().positive(),
|
|
11
|
+
promptContext: z.string().nullable(),
|
|
12
|
+
createdAt: z.string().datetime({ offset: true }),
|
|
13
|
+
updatedAt: z.string().datetime({ offset: true })
|
|
14
|
+
});
|
|
15
|
+
const learningContainerPageSchema = z.object({
|
|
16
|
+
containers: z.array(learningContainerSchema).max(500),
|
|
17
|
+
nextCursor: z.string().min(1).nullable()
|
|
18
|
+
});
|
|
19
|
+
/** Validates a stable identifier before constructing a request path. */
|
|
20
|
+
function learningContainerPath(containerId) {
|
|
21
|
+
return `/api/v1/learning/containers/${encodeURIComponent(learningContainerIdSchema.parse(containerId))}`;
|
|
22
|
+
}
|
|
23
|
+
/** Reads a bounded JSON response while the request's signal governs stream cancellation. */
|
|
24
|
+
async function readLearningJson(response, limit = 16 * 1024 * 1024, signal) {
|
|
25
|
+
if (!response.body) throw new Error("Missing Learning response body");
|
|
26
|
+
const reader = response.body.getReader();
|
|
27
|
+
const abort = () => {
|
|
28
|
+
reader.cancel(signal?.reason).catch(() => void 0);
|
|
29
|
+
};
|
|
30
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
31
|
+
if (signal?.aborted) abort();
|
|
32
|
+
const decoder = new TextDecoder();
|
|
33
|
+
let text = "";
|
|
34
|
+
let bytes = 0;
|
|
35
|
+
try {
|
|
36
|
+
while (true) {
|
|
37
|
+
signal?.throwIfAborted();
|
|
38
|
+
const next = await reader.read();
|
|
39
|
+
signal?.throwIfAborted();
|
|
40
|
+
if (next.done) break;
|
|
41
|
+
bytes += next.value.byteLength;
|
|
42
|
+
if (bytes > limit) {
|
|
43
|
+
await reader.cancel();
|
|
44
|
+
throw new Error("Learning response exceeds its size limit");
|
|
45
|
+
}
|
|
46
|
+
text += decoder.decode(next.value, { stream: true });
|
|
47
|
+
}
|
|
48
|
+
return JSON.parse(text + decoder.decode());
|
|
49
|
+
} finally {
|
|
50
|
+
signal?.removeEventListener("abort", abort);
|
|
51
|
+
reader.releaseLock();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const learningSha256Schema = z.string().regex(/^[a-f0-9]{64}$/u);
|
|
55
|
+
const learningUuidSchema = z.string().uuid();
|
|
56
|
+
const learningDateTimeSchema = z.string().datetime({ offset: true });
|
|
57
|
+
/** One immutable file in a proposed Skill candidate bundle. */
|
|
58
|
+
const learningSkillBundleFileSchema = z.object({
|
|
59
|
+
content: z.string(),
|
|
60
|
+
path: z.string().min(1).refine((path) => !path.startsWith("/") && !path.split("/").some((segment) => segment === ".."), "Bundle paths must be relative and may not traverse parent directories."),
|
|
61
|
+
sha256: learningSha256Schema
|
|
62
|
+
});
|
|
63
|
+
/** Complete Skill files attached to one review candidate. */
|
|
64
|
+
const learningSkillBundleSchema = z.object({
|
|
65
|
+
files: z.array(learningSkillBundleFileSchema).min(1),
|
|
66
|
+
schemaVersion: z.literal(1)
|
|
67
|
+
}).superRefine(({ files }, context) => {
|
|
68
|
+
const paths = /* @__PURE__ */ new Set();
|
|
69
|
+
for (const file of files) {
|
|
70
|
+
if (paths.has(file.path)) context.addIssue({
|
|
71
|
+
code: "custom",
|
|
72
|
+
message: `Duplicate bundle path: ${file.path}`,
|
|
73
|
+
path: ["files"]
|
|
74
|
+
});
|
|
75
|
+
paths.add(file.path);
|
|
76
|
+
}
|
|
77
|
+
if (!paths.has("SKILL.md")) context.addIssue({
|
|
78
|
+
code: "custom",
|
|
79
|
+
message: "A Skill bundle must contain SKILL.md.",
|
|
80
|
+
path: ["files"]
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
/** Review state and summary returned for one proposed Skill change. */
|
|
84
|
+
const learningCandidateSchema = z.object({
|
|
85
|
+
bundleSha256: learningSha256Schema,
|
|
86
|
+
createdAt: learningDateTimeSchema,
|
|
87
|
+
description: z.string().min(1),
|
|
88
|
+
id: learningUuidSchema,
|
|
89
|
+
operation: z.enum([
|
|
90
|
+
"add",
|
|
91
|
+
"update",
|
|
92
|
+
"remove"
|
|
93
|
+
]),
|
|
94
|
+
publishedRegistryRevision: z.number().int().positive().nullable(),
|
|
95
|
+
publishedSkillId: learningUuidSchema.nullable(),
|
|
96
|
+
reason: z.string().min(1),
|
|
97
|
+
registryBaseRevision: z.number().int().nonnegative(),
|
|
98
|
+
reviewedAt: learningDateTimeSchema.nullable(),
|
|
99
|
+
runId: learningUuidSchema,
|
|
100
|
+
status: z.enum([
|
|
101
|
+
"pending_review",
|
|
102
|
+
"approved",
|
|
103
|
+
"rejected"
|
|
104
|
+
]),
|
|
105
|
+
subjectSha256: learningSha256Schema,
|
|
106
|
+
targetSkillId: learningUuidSchema.nullable(),
|
|
107
|
+
targetSkillRevision: z.number().int().positive().nullable(),
|
|
108
|
+
title: z.string().min(1)
|
|
109
|
+
});
|
|
110
|
+
/** Full proposed Skill change, including evidence and every bundle file. */
|
|
111
|
+
const learningCandidateDetailSchema = learningCandidateSchema.extend({
|
|
112
|
+
bundle: learningSkillBundleSchema,
|
|
113
|
+
supportingInsights: z.array(z.object({
|
|
114
|
+
alias: z.string().min(1),
|
|
115
|
+
id: learningUuidSchema,
|
|
116
|
+
impact: z.string().min(1),
|
|
117
|
+
statement: z.string().min(1)
|
|
118
|
+
}))
|
|
119
|
+
});
|
|
120
|
+
/** Result returned after a human or agent reviews a Skill candidate. */
|
|
121
|
+
const learningCandidateReviewSchema = z.object({
|
|
122
|
+
candidateId: learningUuidSchema,
|
|
123
|
+
operation: z.enum([
|
|
124
|
+
"add",
|
|
125
|
+
"update",
|
|
126
|
+
"remove"
|
|
127
|
+
]),
|
|
128
|
+
publishedRegistryRevision: z.number().int().positive().nullable(),
|
|
129
|
+
publishedSkillId: learningUuidSchema.nullable(),
|
|
130
|
+
status: z.enum(["approved", "rejected"])
|
|
131
|
+
});
|
|
132
|
+
const learningRunSchema = z.object({
|
|
133
|
+
id: z.string().uuid(),
|
|
134
|
+
learningContainerId: learningContainerIdSchema,
|
|
135
|
+
projectId: z.number().int().positive(),
|
|
136
|
+
status: z.enum([
|
|
137
|
+
"queued",
|
|
138
|
+
"freezing",
|
|
139
|
+
"batching",
|
|
140
|
+
"reducing",
|
|
141
|
+
"finalizing",
|
|
142
|
+
"succeeded",
|
|
143
|
+
"failed"
|
|
144
|
+
]),
|
|
145
|
+
triggerSource: z.enum(["automatic", "manual"]),
|
|
146
|
+
attemptCount: z.number().int().nonnegative(),
|
|
147
|
+
candidateCount: z.number().int().nonnegative().nullable(),
|
|
148
|
+
insightCount: z.number().int().nonnegative().nullable(),
|
|
149
|
+
evidenceThreadCount: z.number().int().nonnegative().nullable().optional(),
|
|
150
|
+
createdAt: learningDateTimeSchema,
|
|
151
|
+
updatedAt: learningDateTimeSchema,
|
|
152
|
+
startedAt: learningDateTimeSchema.nullable(),
|
|
153
|
+
completedAt: learningDateTimeSchema.nullable(),
|
|
154
|
+
failureCode: z.string().nullable(),
|
|
155
|
+
kubernetesJobName: z.string().nullable()
|
|
156
|
+
});
|
|
157
|
+
const unavailableSchema = z.enum(["snapshot-missing", "snapshot-unreadable"]).nullable();
|
|
158
|
+
const learningInsightEvidenceSchema = z.union([z.object({
|
|
159
|
+
cited: z.array(z.object({
|
|
160
|
+
id: z.string(),
|
|
161
|
+
content: z.string(),
|
|
162
|
+
role: z.enum([
|
|
163
|
+
"assistant",
|
|
164
|
+
"tool",
|
|
165
|
+
"user"
|
|
166
|
+
])
|
|
167
|
+
})),
|
|
168
|
+
messageCount: z.number().int().nonnegative(),
|
|
169
|
+
threadId: z.string(),
|
|
170
|
+
threadName: z.string().nullable(),
|
|
171
|
+
threadPresent: z.boolean(),
|
|
172
|
+
unavailable: unavailableSchema
|
|
173
|
+
}), z.object({
|
|
174
|
+
kind: z.literal("trajectory"),
|
|
175
|
+
trajectoryId: z.string().uuid(),
|
|
176
|
+
trajectoryPresent: z.boolean(),
|
|
177
|
+
eventCount: z.number().int().nonnegative(),
|
|
178
|
+
events: z.array(z.object({
|
|
179
|
+
seq: z.number().int().nonnegative(),
|
|
180
|
+
name: z.string(),
|
|
181
|
+
offsetMs: z.number(),
|
|
182
|
+
value: z.unknown(),
|
|
183
|
+
eventId: z.string().nullable()
|
|
184
|
+
})),
|
|
185
|
+
unavailable: unavailableSchema
|
|
186
|
+
})]);
|
|
187
|
+
/** Validates object IDs independently from container IDs; neither may alter the path. */
|
|
188
|
+
function learningObjectId(id) {
|
|
189
|
+
return z.string().uuid().parse(id);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
//#endregion
|
|
193
|
+
export { learningCandidateDetailSchema, learningCandidateReviewSchema, learningCandidateSchema, learningContainerPageSchema, learningContainerPath, learningContainerSchema, learningInsightEvidenceSchema, learningObjectId, learningRunSchema, readLearningJson };
|
|
194
|
+
//# sourceMappingURL=learning-management.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning-management.mjs","names":[],"sources":["../../../../src/v2/runtime/intelligence-platform/learning-management.ts"],"sourcesContent":["import { z } from \"zod\";\n\n/** Wire contracts for the project-key Learning API; keep aligned with Intelligence. */\nexport const learningContainerIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);\nexport const learningContainerSchema = z.object({\n id: learningContainerIdSchema,\n name: z.string().min(1),\n projectId: z.number().int().positive(),\n promptContext: z.string().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport const learningContainerPageSchema = z.object({\n containers: z.array(learningContainerSchema).max(500),\n nextCursor: z.string().min(1).nullable(),\n});\n/** Explicit wire types preserve required/null fields in declarations emitted with strictNullChecks disabled. */\nexport interface LearningContainer {\n id: string;\n name: string;\n projectId: number;\n promptContext: string | null;\n createdAt: string;\n updatedAt: string;\n}\nexport interface LearningContainerPage {\n containers: LearningContainer[];\n nextCursor: string | null;\n}\nexport interface LearningRequestOptions {\n readonly signal?: AbortSignal;\n}\nexport interface LearningContainerRequest extends LearningRequestOptions {\n readonly containerId: string;\n}\n\n/** Validates a stable identifier before constructing a request path. */\nexport function learningContainerPath(containerId: string): string {\n return `/api/v1/learning/containers/${encodeURIComponent(learningContainerIdSchema.parse(containerId))}`;\n}\n\n/** Reads a bounded JSON response while the request's signal governs stream cancellation. */\nexport async function readLearningJson(\n response: Response,\n limit = 16 * 1024 * 1024,\n signal?: AbortSignal,\n): Promise<unknown> {\n if (!response.body) throw new Error(\"Missing Learning response body\");\n const reader = response.body.getReader();\n const abort = () => {\n void reader.cancel(signal?.reason).catch(() => undefined);\n };\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted) abort();\n const decoder = new TextDecoder();\n let text = \"\";\n let bytes = 0;\n try {\n while (true) {\n signal?.throwIfAborted();\n const next = await reader.read();\n signal?.throwIfAborted();\n if (next.done) break;\n bytes += next.value.byteLength;\n if (bytes > limit) {\n await reader.cancel();\n throw new Error(\"Learning response exceeds its size limit\");\n }\n text += decoder.decode(next.value, { stream: true });\n }\n return JSON.parse(text + decoder.decode());\n } finally {\n signal?.removeEventListener(\"abort\", abort);\n reader.releaseLock();\n }\n}\n\nconst learningSha256Schema = z.string().regex(/^[a-f0-9]{64}$/u);\nconst learningUuidSchema = z.string().uuid();\nconst learningDateTimeSchema = z.string().datetime({ offset: true });\n\n/** One immutable file in a proposed Skill candidate bundle. */\nexport const learningSkillBundleFileSchema = z.object({\n content: z.string(),\n path: z\n .string()\n .min(1)\n .refine(\n (path) =>\n !path.startsWith(\"/\") &&\n !path.split(\"/\").some((segment) => segment === \"..\"),\n \"Bundle paths must be relative and may not traverse parent directories.\",\n ),\n sha256: learningSha256Schema,\n});\n\n/** Complete Skill files attached to one review candidate. */\nexport const learningSkillBundleSchema = z\n .object({\n files: z.array(learningSkillBundleFileSchema).min(1),\n schemaVersion: z.literal(1),\n })\n\n .superRefine(({ files }, context) => {\n const paths = new Set<string>();\n for (const file of files) {\n if (paths.has(file.path)) {\n context.addIssue({\n code: \"custom\",\n message: `Duplicate bundle path: ${file.path}`,\n path: [\"files\"],\n });\n }\n paths.add(file.path);\n }\n if (!paths.has(\"SKILL.md\")) {\n context.addIssue({\n code: \"custom\",\n message: \"A Skill bundle must contain SKILL.md.\",\n path: [\"files\"],\n });\n }\n });\n\n/** Review state and summary returned for one proposed Skill change. */\nexport const learningCandidateSchema = z.object({\n bundleSha256: learningSha256Schema,\n createdAt: learningDateTimeSchema,\n description: z.string().min(1),\n id: learningUuidSchema,\n operation: z.enum([\"add\", \"update\", \"remove\"]),\n publishedRegistryRevision: z.number().int().positive().nullable(),\n publishedSkillId: learningUuidSchema.nullable(),\n reason: z.string().min(1),\n registryBaseRevision: z.number().int().nonnegative(),\n reviewedAt: learningDateTimeSchema.nullable(),\n runId: learningUuidSchema,\n status: z.enum([\"pending_review\", \"approved\", \"rejected\"]),\n subjectSha256: learningSha256Schema,\n targetSkillId: learningUuidSchema.nullable(),\n targetSkillRevision: z.number().int().positive().nullable(),\n title: z.string().min(1),\n});\n\n/** Full proposed Skill change, including evidence and every bundle file. */\nexport const learningCandidateDetailSchema = learningCandidateSchema.extend({\n bundle: learningSkillBundleSchema,\n supportingInsights: z.array(\n z.object({\n alias: z.string().min(1),\n id: learningUuidSchema,\n impact: z.string().min(1),\n statement: z.string().min(1),\n }),\n ),\n});\n\n/** Result returned after a human or agent reviews a Skill candidate. */\nexport const learningCandidateReviewSchema = z.object({\n candidateId: learningUuidSchema,\n operation: z.enum([\"add\", \"update\", \"remove\"]),\n publishedRegistryRevision: z.number().int().positive().nullable(),\n publishedSkillId: learningUuidSchema.nullable(),\n status: z.enum([\"approved\", \"rejected\"]),\n});\n\nexport interface LearningCandidate {\n id: string;\n bundleSha256: string;\n createdAt: string;\n description: string;\n operation: \"add\" | \"update\" | \"remove\";\n publishedRegistryRevision: number | null;\n publishedSkillId: string | null;\n reason: string;\n registryBaseRevision: number;\n reviewedAt: string | null;\n runId: string;\n status: \"pending_review\" | \"approved\" | \"rejected\";\n subjectSha256: string;\n targetSkillId: string | null;\n targetSkillRevision: number | null;\n title: string;\n}\nexport interface LearningCandidateDetail extends LearningCandidate {\n bundle: {\n schemaVersion: 1;\n files: Array<{ path: string; content: string; sha256: string }>;\n };\n supportingInsights: Array<{\n alias: string;\n id: string;\n impact: string;\n statement: string;\n }>;\n}\nexport interface LearningCandidateReview {\n candidateId: string;\n operation: \"add\" | \"update\" | \"remove\";\n publishedRegistryRevision: number | null;\n publishedSkillId: string | null;\n status: \"approved\" | \"rejected\";\n}\nexport interface LearningCandidateRequest extends LearningContainerRequest {\n readonly candidateId: string;\n}\n\nexport const learningRunSchema = z.object({\n id: z.string().uuid(),\n learningContainerId: learningContainerIdSchema,\n projectId: z.number().int().positive(),\n status: z.enum([\n \"queued\",\n \"freezing\",\n \"batching\",\n \"reducing\",\n \"finalizing\",\n \"succeeded\",\n \"failed\",\n ]),\n triggerSource: z.enum([\"automatic\", \"manual\"]),\n attemptCount: z.number().int().nonnegative(),\n candidateCount: z.number().int().nonnegative().nullable(),\n insightCount: z.number().int().nonnegative().nullable(),\n evidenceThreadCount: z.number().int().nonnegative().nullable().optional(),\n createdAt: learningDateTimeSchema,\n updatedAt: learningDateTimeSchema,\n startedAt: learningDateTimeSchema.nullable(),\n completedAt: learningDateTimeSchema.nullable(),\n failureCode: z.string().nullable(),\n kubernetesJobName: z.string().nullable(),\n});\nexport interface LearningRun {\n id: string;\n learningContainerId: string;\n projectId: number;\n status:\n | \"queued\"\n | \"freezing\"\n | \"batching\"\n | \"reducing\"\n | \"finalizing\"\n | \"succeeded\"\n | \"failed\";\n triggerSource: \"automatic\" | \"manual\";\n attemptCount: number;\n candidateCount: number | null;\n insightCount: number | null;\n evidenceThreadCount?: number | null;\n createdAt: string;\n updatedAt: string;\n startedAt: string | null;\n completedAt: string | null;\n failureCode: string | null;\n kubernetesJobName: string | null;\n}\nconst unavailableSchema = z\n .enum([\"snapshot-missing\", \"snapshot-unreadable\"])\n .nullable();\nexport const learningInsightEvidenceSchema = z.union([\n z.object({\n cited: z.array(\n z.object({\n id: z.string(),\n content: z.string(),\n role: z.enum([\"assistant\", \"tool\", \"user\"]),\n }),\n ),\n messageCount: z.number().int().nonnegative(),\n threadId: z.string(),\n threadName: z.string().nullable(),\n threadPresent: z.boolean(),\n unavailable: unavailableSchema,\n }),\n z.object({\n kind: z.literal(\"trajectory\"),\n trajectoryId: z.string().uuid(),\n trajectoryPresent: z.boolean(),\n eventCount: z.number().int().nonnegative(),\n events: z.array(\n z.object({\n seq: z.number().int().nonnegative(),\n name: z.string(),\n offsetMs: z.number(),\n value: z.unknown(),\n eventId: z.string().nullable(),\n }),\n ),\n unavailable: unavailableSchema,\n }),\n]);\nexport type LearningInsightEvidence =\n | {\n cited: Array<{\n id: string;\n content: string;\n role: \"assistant\" | \"tool\" | \"user\";\n }>;\n messageCount: number;\n threadId: string;\n threadName: string | null;\n threadPresent: boolean;\n unavailable: \"snapshot-missing\" | \"snapshot-unreadable\" | null;\n }\n | {\n kind: \"trajectory\";\n trajectoryId: string;\n trajectoryPresent: boolean;\n eventCount: number;\n events: Array<{\n seq: number;\n name: string;\n offsetMs: number;\n value?: unknown;\n eventId: string | null;\n }>;\n unavailable: \"snapshot-missing\" | \"snapshot-unreadable\" | null;\n };\n\n/** Validates object IDs independently from container IDs; neither may alter the path. */\nexport function learningObjectId(id: string): string {\n return z.string().uuid().parse(id);\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
require("reflect-metadata");
|
|
2
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
let _copilotkit_shared = require("@copilotkit/shared");
|
|
2
4
|
|
|
3
5
|
//#region src/v2/runtime/runner/agent-runner.ts
|
|
6
|
+
/**
|
|
7
|
+
* Thrown by a runner when the thread already has a run in flight. The SSE
|
|
8
|
+
* handler sends it to the client as a `RUN_ERROR` with
|
|
9
|
+
* {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of
|
|
10
|
+
* this class from another package version still counts.
|
|
11
|
+
*/
|
|
12
|
+
var ThreadAlreadyRunningError = class extends Error {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("Thread already running");
|
|
15
|
+
this.code = _copilotkit_shared.THREAD_ALREADY_RUNNING_ERROR_CODE;
|
|
16
|
+
this.name = "ThreadAlreadyRunningError";
|
|
17
|
+
}
|
|
18
|
+
};
|
|
4
19
|
function supportsLocalThreadEndpoints(runner) {
|
|
5
20
|
return runner.ɵsupportsLocalThreadEndpoints === true;
|
|
6
21
|
}
|
|
@@ -8,5 +23,6 @@ var AgentRunner = class {};
|
|
|
8
23
|
|
|
9
24
|
//#endregion
|
|
10
25
|
exports.AgentRunner = AgentRunner;
|
|
26
|
+
exports.ThreadAlreadyRunningError = ThreadAlreadyRunningError;
|
|
11
27
|
exports.supportsLocalThreadEndpoints = supportsLocalThreadEndpoints;
|
|
12
28
|
//# sourceMappingURL=agent-runner.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.cjs","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport type { Observable } from \"rxjs\";\n\nexport interface AgentRunnerRunRequest {\n threadId: string;\n /** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */\n backendThreadId?: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n persistedInputMessages?: Message[];\n /** Short-lived token scoped to this runner invocation. */\n authToken?: string;\n}\n\nexport interface AgentRunnerConnectRequest {\n threadId: string;\n agentId?: string;\n headers?: Record<string, string>;\n joinCode?: string;\n}\n\nexport interface AgentRunnerIsRunningRequest {\n threadId: string;\n}\n\nexport interface AgentRunnerStopRequest {\n threadId: string;\n /** When present, stop only this exact run and never a newer run on the Thread. */\n runId?: string;\n}\n\nexport interface LocalThreadEndpointRecord {\n id: string;\n name: string | null;\n agentId: string;\n organizationId: string;\n createdById: string;\n archived: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface LocalThreadEndpointRunner extends AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints: true;\n listThreads(): LocalThreadEndpointRecord[];\n getThreadMessages(threadId: string): Message[];\n getThreadEvents(threadId: string): BaseEvent[];\n getThreadState(threadId: string): Record<string, unknown> | null;\n clearThreads(): void;\n}\n\nexport function supportsLocalThreadEndpoints(\n runner: AgentRunner,\n): runner is LocalThreadEndpointRunner {\n return runner.ɵsupportsLocalThreadEndpoints === true;\n}\n\nexport abstract class AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints?: boolean;\n\n abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;\n abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;\n abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;\n abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;\n}\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"agent-runner.cjs","names":["THREAD_ALREADY_RUNNING_ERROR_CODE"],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport type { Observable } from \"rxjs\";\nimport { THREAD_ALREADY_RUNNING_ERROR_CODE } from \"@copilotkit/shared\";\n\n/**\n * Thrown by a runner when the thread already has a run in flight. The SSE\n * handler sends it to the client as a `RUN_ERROR` with\n * {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of\n * this class from another package version still counts.\n */\nexport class ThreadAlreadyRunningError extends Error {\n readonly code = THREAD_ALREADY_RUNNING_ERROR_CODE;\n\n constructor() {\n super(\"Thread already running\");\n this.name = \"ThreadAlreadyRunningError\";\n }\n}\n\nexport interface AgentRunnerRunRequest {\n threadId: string;\n /** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */\n backendThreadId?: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n persistedInputMessages?: Message[];\n /** Short-lived token scoped to this runner invocation. */\n authToken?: string;\n}\n\nexport interface AgentRunnerConnectRequest {\n threadId: string;\n agentId?: string;\n headers?: Record<string, string>;\n joinCode?: string;\n}\n\nexport interface AgentRunnerIsRunningRequest {\n threadId: string;\n}\n\nexport interface AgentRunnerStopRequest {\n threadId: string;\n /** When present, stop only this exact run and never a newer run on the Thread. */\n runId?: string;\n}\n\nexport interface LocalThreadEndpointRecord {\n id: string;\n name: string | null;\n agentId: string;\n organizationId: string;\n createdById: string;\n archived: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface LocalThreadEndpointRunner extends AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints: true;\n listThreads(): LocalThreadEndpointRecord[];\n getThreadMessages(threadId: string): Message[];\n getThreadEvents(threadId: string): BaseEvent[];\n getThreadState(threadId: string): Record<string, unknown> | null;\n clearThreads(): void;\n}\n\nexport function supportsLocalThreadEndpoints(\n runner: AgentRunner,\n): runner is LocalThreadEndpointRunner {\n return runner.ɵsupportsLocalThreadEndpoints === true;\n}\n\nexport abstract class AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints?: boolean;\n\n abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;\n abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;\n abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;\n abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;\n}\n"],"mappings":";;;;;;;;;;;AAeA,IAAa,4BAAb,cAA+C,MAAM;CAGnD,cAAc;AACZ,QAAM,yBAAyB;cAHjBA;AAId,OAAK,OAAO;;;AAoDhB,SAAgB,6BACd,QACqC;AACrC,QAAO,OAAO,kCAAkC;;AAGlD,IAAsB,cAAtB,MAAkC"}
|
|
@@ -3,6 +3,16 @@ import { AbstractAgent, BaseEvent, Message, RunAgentInput } from "@ag-ui/client"
|
|
|
3
3
|
import { Observable } from "rxjs";
|
|
4
4
|
|
|
5
5
|
//#region src/v2/runtime/runner/agent-runner.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Thrown by a runner when the thread already has a run in flight. The SSE
|
|
8
|
+
* handler sends it to the client as a `RUN_ERROR` with
|
|
9
|
+
* {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of
|
|
10
|
+
* this class from another package version still counts.
|
|
11
|
+
*/
|
|
12
|
+
declare class ThreadAlreadyRunningError extends Error {
|
|
13
|
+
readonly code = "THREAD_ALREADY_RUNNING";
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
6
16
|
interface AgentRunnerRunRequest {
|
|
7
17
|
threadId: string;
|
|
8
18
|
/** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */
|
|
@@ -54,5 +64,5 @@ declare abstract class AgentRunner {
|
|
|
54
64
|
abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;
|
|
55
65
|
}
|
|
56
66
|
//#endregion
|
|
57
|
-
export { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, supportsLocalThreadEndpoints };
|
|
67
|
+
export { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, ThreadAlreadyRunningError, supportsLocalThreadEndpoints };
|
|
58
68
|
//# sourceMappingURL=agent-runner.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.cts","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-runner.d.cts","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"mappings":";;;;;;;AAeA;;;;cAAa,yBAAA,SAAkC,KAAA;EAAA,SACpC,IAAA;;;UAQM,qBAAA;EACf,QAAA;EADoC;EAGpC,eAAA;EACA,KAAA,EAAO,aAAA;EACP,KAAA,EAAO,aAAA;EACP,sBAAA,GAAyB,OAAA;EAAO;EAEhC,SAAA;AAAA;AAAA,UAGe,yBAAA;EACf,QAAA;EACA,OAAA;EACA,OAAA,GAAU,MAAA;EACV,QAAA;AAAA;AAAA,UAGe,2BAAA;EACf,QAAA;AAAA;AAAA,UAGe,sBAAA;EACf,QAAA;EAZwC;EAcxC,KAAA;AAAA;AAAA,UAGe,yBAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;EACA,cAAA;EACA,WAAA;EACA,QAAA;EACA,SAAA;EACA,SAAA;AAAA;AAAA,UAGe,yBAAA,SAAkC,WAAA;EAAA,SACxC,6BAAA;EACT,WAAA,IAAe,yBAAA;EACf,iBAAA,CAAkB,QAAA,WAAmB,OAAA;EACrC,eAAA,CAAgB,QAAA,WAAmB,SAAA;EACnC,cAAA,CAAe,QAAA,WAAmB,MAAA;EAClC,YAAA;AAAA;AAAA,iBAGc,4BAAA,CACd,MAAA,EAAQ,WAAA,GACP,MAAA,IAAU,yBAAA;AAAA,uBAIS,WAAA;EAAA,SACX,6BAAA;EAAA,SAEA,GAAA,CAAI,OAAA,EAAS,qBAAA,GAAwB,UAAA,CAAW,SAAA;EAAA,SAChD,OAAA,CAAQ,OAAA,EAAS,yBAAA,GAA4B,UAAA,CAAW,SAAA;EAAA,SACxD,SAAA,CAAU,OAAA,EAAS,2BAAA,GAA8B,OAAA;EAAA,SACjD,IAAA,CAAK,OAAA,EAAS,sBAAA,GAAyB,OAAA;AAAA"}
|
|
@@ -3,6 +3,16 @@ import { Observable } from "rxjs";
|
|
|
3
3
|
import { AbstractAgent, BaseEvent, Message, RunAgentInput } from "@ag-ui/client";
|
|
4
4
|
|
|
5
5
|
//#region src/v2/runtime/runner/agent-runner.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Thrown by a runner when the thread already has a run in flight. The SSE
|
|
8
|
+
* handler sends it to the client as a `RUN_ERROR` with
|
|
9
|
+
* {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of
|
|
10
|
+
* this class from another package version still counts.
|
|
11
|
+
*/
|
|
12
|
+
declare class ThreadAlreadyRunningError extends Error {
|
|
13
|
+
readonly code = "THREAD_ALREADY_RUNNING";
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
6
16
|
interface AgentRunnerRunRequest {
|
|
7
17
|
threadId: string;
|
|
8
18
|
/** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */
|
|
@@ -54,5 +64,5 @@ declare abstract class AgentRunner {
|
|
|
54
64
|
abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;
|
|
55
65
|
}
|
|
56
66
|
//#endregion
|
|
57
|
-
export { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, supportsLocalThreadEndpoints };
|
|
67
|
+
export { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, ThreadAlreadyRunningError, supportsLocalThreadEndpoints };
|
|
58
68
|
//# sourceMappingURL=agent-runner.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.mts","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-runner.d.mts","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"mappings":";;;;;;;AAeA;;;;cAAa,yBAAA,SAAkC,KAAA;EAAA,SACpC,IAAA;;;UAQM,qBAAA;EACf,QAAA;EADoC;EAGpC,eAAA;EACA,KAAA,EAAO,aAAA;EACP,KAAA,EAAO,aAAA;EACP,sBAAA,GAAyB,OAAA;EAAO;EAEhC,SAAA;AAAA;AAAA,UAGe,yBAAA;EACf,QAAA;EACA,OAAA;EACA,OAAA,GAAU,MAAA;EACV,QAAA;AAAA;AAAA,UAGe,2BAAA;EACf,QAAA;AAAA;AAAA,UAGe,sBAAA;EACf,QAAA;EAZwC;EAcxC,KAAA;AAAA;AAAA,UAGe,yBAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;EACA,cAAA;EACA,WAAA;EACA,QAAA;EACA,SAAA;EACA,SAAA;AAAA;AAAA,UAGe,yBAAA,SAAkC,WAAA;EAAA,SACxC,6BAAA;EACT,WAAA,IAAe,yBAAA;EACf,iBAAA,CAAkB,QAAA,WAAmB,OAAA;EACrC,eAAA,CAAgB,QAAA,WAAmB,SAAA;EACnC,cAAA,CAAe,QAAA,WAAmB,MAAA;EAClC,YAAA;AAAA;AAAA,iBAGc,4BAAA,CACd,MAAA,EAAQ,WAAA,GACP,MAAA,IAAU,yBAAA;AAAA,uBAIS,WAAA;EAAA,SACX,6BAAA;EAAA,SAEA,GAAA,CAAI,OAAA,EAAS,qBAAA,GAAwB,UAAA,CAAW,SAAA;EAAA,SAChD,OAAA,CAAQ,OAAA,EAAS,yBAAA,GAA4B,UAAA,CAAW,SAAA;EAAA,SACxD,SAAA,CAAU,OAAA,EAAS,2BAAA,GAA8B,OAAA;EAAA,SACjD,IAAA,CAAK,OAAA,EAAS,sBAAA,GAAyB,OAAA;AAAA"}
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
+
import { THREAD_ALREADY_RUNNING_ERROR_CODE } from "@copilotkit/shared";
|
|
3
|
+
|
|
2
4
|
//#region src/v2/runtime/runner/agent-runner.ts
|
|
5
|
+
/**
|
|
6
|
+
* Thrown by a runner when the thread already has a run in flight. The SSE
|
|
7
|
+
* handler sends it to the client as a `RUN_ERROR` with
|
|
8
|
+
* {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of
|
|
9
|
+
* this class from another package version still counts.
|
|
10
|
+
*/
|
|
11
|
+
var ThreadAlreadyRunningError = class extends Error {
|
|
12
|
+
constructor() {
|
|
13
|
+
super("Thread already running");
|
|
14
|
+
this.code = THREAD_ALREADY_RUNNING_ERROR_CODE;
|
|
15
|
+
this.name = "ThreadAlreadyRunningError";
|
|
16
|
+
}
|
|
17
|
+
};
|
|
3
18
|
function supportsLocalThreadEndpoints(runner) {
|
|
4
19
|
return runner.ɵsupportsLocalThreadEndpoints === true;
|
|
5
20
|
}
|
|
6
21
|
var AgentRunner = class {};
|
|
7
22
|
|
|
8
23
|
//#endregion
|
|
9
|
-
export { AgentRunner, supportsLocalThreadEndpoints };
|
|
24
|
+
export { AgentRunner, ThreadAlreadyRunningError, supportsLocalThreadEndpoints };
|
|
10
25
|
//# sourceMappingURL=agent-runner.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.mjs","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport type { Observable } from \"rxjs\";\n\nexport interface AgentRunnerRunRequest {\n threadId: string;\n /** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */\n backendThreadId?: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n persistedInputMessages?: Message[];\n /** Short-lived token scoped to this runner invocation. */\n authToken?: string;\n}\n\nexport interface AgentRunnerConnectRequest {\n threadId: string;\n agentId?: string;\n headers?: Record<string, string>;\n joinCode?: string;\n}\n\nexport interface AgentRunnerIsRunningRequest {\n threadId: string;\n}\n\nexport interface AgentRunnerStopRequest {\n threadId: string;\n /** When present, stop only this exact run and never a newer run on the Thread. */\n runId?: string;\n}\n\nexport interface LocalThreadEndpointRecord {\n id: string;\n name: string | null;\n agentId: string;\n organizationId: string;\n createdById: string;\n archived: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface LocalThreadEndpointRunner extends AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints: true;\n listThreads(): LocalThreadEndpointRecord[];\n getThreadMessages(threadId: string): Message[];\n getThreadEvents(threadId: string): BaseEvent[];\n getThreadState(threadId: string): Record<string, unknown> | null;\n clearThreads(): void;\n}\n\nexport function supportsLocalThreadEndpoints(\n runner: AgentRunner,\n): runner is LocalThreadEndpointRunner {\n return runner.ɵsupportsLocalThreadEndpoints === true;\n}\n\nexport abstract class AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints?: boolean;\n\n abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;\n abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;\n abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;\n abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-runner.mjs","names":[],"sources":["../../../../src/v2/runtime/runner/agent-runner.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport type { Observable } from \"rxjs\";\nimport { THREAD_ALREADY_RUNNING_ERROR_CODE } from \"@copilotkit/shared\";\n\n/**\n * Thrown by a runner when the thread already has a run in flight. The SSE\n * handler sends it to the client as a `RUN_ERROR` with\n * {@link THREAD_ALREADY_RUNNING_ERROR_CODE}, matched on `code` so a copy of\n * this class from another package version still counts.\n */\nexport class ThreadAlreadyRunningError extends Error {\n readonly code = THREAD_ALREADY_RUNNING_ERROR_CODE;\n\n constructor() {\n super(\"Thread already running\");\n this.name = \"ThreadAlreadyRunningError\";\n }\n}\n\nexport interface AgentRunnerRunRequest {\n threadId: string;\n /** Backend execution ID supplied by Intelligence for imported non-UUID sessions. */\n backendThreadId?: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n persistedInputMessages?: Message[];\n /** Short-lived token scoped to this runner invocation. */\n authToken?: string;\n}\n\nexport interface AgentRunnerConnectRequest {\n threadId: string;\n agentId?: string;\n headers?: Record<string, string>;\n joinCode?: string;\n}\n\nexport interface AgentRunnerIsRunningRequest {\n threadId: string;\n}\n\nexport interface AgentRunnerStopRequest {\n threadId: string;\n /** When present, stop only this exact run and never a newer run on the Thread. */\n runId?: string;\n}\n\nexport interface LocalThreadEndpointRecord {\n id: string;\n name: string | null;\n agentId: string;\n organizationId: string;\n createdById: string;\n archived: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface LocalThreadEndpointRunner extends AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints: true;\n listThreads(): LocalThreadEndpointRecord[];\n getThreadMessages(threadId: string): Message[];\n getThreadEvents(threadId: string): BaseEvent[];\n getThreadState(threadId: string): Record<string, unknown> | null;\n clearThreads(): void;\n}\n\nexport function supportsLocalThreadEndpoints(\n runner: AgentRunner,\n): runner is LocalThreadEndpointRunner {\n return runner.ɵsupportsLocalThreadEndpoints === true;\n}\n\nexport abstract class AgentRunner {\n readonly ɵsupportsLocalThreadEndpoints?: boolean;\n\n abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;\n abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;\n abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;\n abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,4BAAb,cAA+C,MAAM;CAGnD,cAAc;AACZ,QAAM,yBAAyB;cAHjB;AAId,OAAK,OAAO;;;AAoDhB,SAAgB,6BACd,QACqC;AACrC,QAAO,OAAO,kCAAkC;;AAGlD,IAAsB,cAAtB,MAAkC"}
|
|
@@ -298,7 +298,7 @@ var InMemoryAgentRunner = class extends require_agent_runner.AgentRunner {
|
|
|
298
298
|
run(request) {
|
|
299
299
|
const store = sharedStore.getOrCreate(request.threadId);
|
|
300
300
|
if (store.isRunning || store.stopRequested) {
|
|
301
|
-
if (this.onConcurrentRun !== "supersede") throw new
|
|
301
|
+
if (this.onConcurrentRun !== "supersede") throw new require_agent_runner.ThreadAlreadyRunningError();
|
|
302
302
|
const priorAgent = store.agent;
|
|
303
303
|
const priorFinalize = store.activeFinalize;
|
|
304
304
|
if (priorFinalize) priorFinalize.stopRequested = true;
|