qwen-agent-server 0.11.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/README.md +211 -0
- package/dist/backends.js +444 -0
- package/dist/backends.js.map +1 -0
- package/dist/embed.js +92 -0
- package/dist/embed.js.map +1 -0
- package/dist/extensions.js +497 -0
- package/dist/extensions.js.map +1 -0
- package/dist/log.js +21 -0
- package/dist/log.js.map +1 -0
- package/dist/openai-compat.js +147 -0
- package/dist/openai-compat.js.map +1 -0
- package/dist/permissions.js +71 -0
- package/dist/permissions.js.map +1 -0
- package/dist/pool.js +155 -0
- package/dist/pool.js.map +1 -0
- package/dist/rerank.js +93 -0
- package/dist/rerank.js.map +1 -0
- package/dist/server.js +1050 -0
- package/dist/server.js.map +1 -0
- package/dist/session.js +649 -0
- package/dist/session.js.map +1 -0
- package/dist/shutdown.js +68 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/threads.js +218 -0
- package/dist/threads.js.map +1 -0
- package/dist/tokenize.js +90 -0
- package/dist/tokenize.js.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/version.js +13 -0
- package/dist/version.js.map +1 -0
- package/dist/vision.js +293 -0
- package/dist/vision.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/shutdown.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Graceful shutdown for the MCP server.
|
|
4
|
+
//
|
|
5
|
+
// Design: exported setupShutdown() wires SIGTERM/SIGINT handlers and
|
|
6
|
+
// returns { handleSignal, isShuttingDown } so tests can invoke handlers
|
|
7
|
+
// directly without sending real signals to the test process.
|
|
8
|
+
//
|
|
9
|
+
// Shutdown sequence:
|
|
10
|
+
// 1. Set shutting_down flag (qwen_spawn returns error after this)
|
|
11
|
+
// 2. Close MCP server transport
|
|
12
|
+
// 3. For each live session: call stop() with a 5s per-session timeout
|
|
13
|
+
// 4. If any stop() exceeds 5s → exit code 1 (force kill path)
|
|
14
|
+
// Otherwise → exit code 0
|
|
15
|
+
//
|
|
16
|
+
// The reaper interval handle is NOT cleared here — it should be
|
|
17
|
+
// unref()d so it doesn't block process exit (done in server.ts).
|
|
18
|
+
import { createLogger } from "./log.js";
|
|
19
|
+
const log = createLogger("qwen-shutdown");
|
|
20
|
+
const STOP_TIMEOUT_MS = 5_000;
|
|
21
|
+
// ─────────────────────────────────────────────────────────────────
|
|
22
|
+
// setupShutdown
|
|
23
|
+
export function setupShutdown(server, pool, exit = process.exit) {
|
|
24
|
+
let shuttingDown = false;
|
|
25
|
+
let shutdownStarted = false;
|
|
26
|
+
const isShuttingDown = () => shuttingDown;
|
|
27
|
+
const handleSignal = async (signal) => {
|
|
28
|
+
if (shutdownStarted)
|
|
29
|
+
return;
|
|
30
|
+
shutdownStarted = true;
|
|
31
|
+
shuttingDown = true;
|
|
32
|
+
log.info({ signal, event_type: "shutdown" }, "shutdown signal received");
|
|
33
|
+
// Close MCP transport — stops accepting new connections
|
|
34
|
+
try {
|
|
35
|
+
await server.close();
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
log.error({ err }, "error closing MCP server");
|
|
39
|
+
}
|
|
40
|
+
// Stop all live sessions with a per-session timeout
|
|
41
|
+
const sessions = [...pool.sessions.values()];
|
|
42
|
+
log.info({ count: sessions.length, event_type: "shutdown" }, "stopping sessions");
|
|
43
|
+
let forcedKill = false;
|
|
44
|
+
await Promise.allSettled(sessions.map(async (session) => {
|
|
45
|
+
const raceResult = await Promise.race([
|
|
46
|
+
Promise.resolve().then(() => session.stop()),
|
|
47
|
+
new Promise((resolve) => setTimeout(() => resolve("timeout"), STOP_TIMEOUT_MS)),
|
|
48
|
+
]);
|
|
49
|
+
if (raceResult === "timeout") {
|
|
50
|
+
forcedKill = true;
|
|
51
|
+
log.error({ task_id: session.task_id, event_type: "force_kill" }, "session stop() timed out after 5s — force kill");
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
log.info({ task_id: session.task_id, event_type: "stopped", state: session.state }, "session stopped");
|
|
55
|
+
}
|
|
56
|
+
}));
|
|
57
|
+
if (forcedKill) {
|
|
58
|
+
log.error({ event_type: "shutdown" }, "forced exit with code 1");
|
|
59
|
+
exit(1);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
log.info({ event_type: "shutdown" }, "clean exit with code 0");
|
|
63
|
+
exit(0);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
return { handleSignal, isShuttingDown };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"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"}
|
package/dist/threads.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// threads.ts — in-memory conversation threading for stateless oneshot tools.
|
|
4
|
+
//
|
|
5
|
+
// `qwen_oneshot` and `qwen_oneshot_vision` are stateless by contract:
|
|
6
|
+
// each call spawns / connects to a backend, runs one round-trip, and
|
|
7
|
+
// returns. Pool sessions handle multi-turn within a single conversation,
|
|
8
|
+
// but they cost a process per session and don't cross tool boundaries.
|
|
9
|
+
//
|
|
10
|
+
// This module is the lightweight alternative: a process-local Map of
|
|
11
|
+
// thread_id → ordered turns. Callers pass `continuation_id` on the next
|
|
12
|
+
// call; the supervisor prepends prior turns into the prompt (oneshot)
|
|
13
|
+
// or the messages array (vision) and returns the same id so the caller
|
|
14
|
+
// can chain.
|
|
15
|
+
//
|
|
16
|
+
// What this is NOT:
|
|
17
|
+
// - Cross-process. Threads live in this process only; restart wipes
|
|
18
|
+
// them. Operator-owned local supervisor; "I want durable threads"
|
|
19
|
+
// is a separate feature (and v1 doesn't ship it).
|
|
20
|
+
// - A session pool. No backend pinning, no budget tracking, no LRU
|
|
21
|
+
// eviction. Threads just remember text.
|
|
22
|
+
// - Image-aware in v1. Vision turns lose their image attachments in
|
|
23
|
+
// the prelude — a `[image attached]` placeholder is emitted instead.
|
|
24
|
+
import { randomUUID } from "node:crypto";
|
|
25
|
+
const DEFAULT_TTL_MS = 3 * 60 * 60 * 1000;
|
|
26
|
+
const DEFAULT_MAX_TURNS = 20;
|
|
27
|
+
const DEFAULT_REAP_INTERVAL_MS = 10 * 60 * 1000;
|
|
28
|
+
export class ThreadStore {
|
|
29
|
+
threads = new Map();
|
|
30
|
+
ttl_ms;
|
|
31
|
+
max_turns;
|
|
32
|
+
reaper = null;
|
|
33
|
+
constructor(opts = {}) {
|
|
34
|
+
this.ttl_ms = opts.ttl_ms ?? DEFAULT_TTL_MS;
|
|
35
|
+
this.max_turns = opts.max_turns ?? DEFAULT_MAX_TURNS;
|
|
36
|
+
const interval = opts.reap_interval_ms ?? DEFAULT_REAP_INTERVAL_MS;
|
|
37
|
+
// Don't start the reaper in tests (set interval to 0 to disable).
|
|
38
|
+
if (interval > 0) {
|
|
39
|
+
this.reaper = setInterval(() => this.reap(), interval);
|
|
40
|
+
// unref() so the interval doesn't keep the process alive on exit.
|
|
41
|
+
this.reaper.unref();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get or create the thread for `id`. When `id` is undefined or
|
|
46
|
+
* unknown, a fresh thread is created; when known, its expiry is
|
|
47
|
+
* refreshed.
|
|
48
|
+
*
|
|
49
|
+
* Returns the canonical id (caller-supplied or newly minted) plus
|
|
50
|
+
* the current turns in chronological order.
|
|
51
|
+
*/
|
|
52
|
+
resolve(id) {
|
|
53
|
+
if (id !== undefined && id !== "") {
|
|
54
|
+
const existing = this.threads.get(id);
|
|
55
|
+
if (existing !== undefined && existing.expires_at > Date.now()) {
|
|
56
|
+
existing.expires_at = Date.now() + this.ttl_ms;
|
|
57
|
+
return { id, turns: [...existing.turns] };
|
|
58
|
+
}
|
|
59
|
+
// Honour caller-supplied id even if unknown — they may be
|
|
60
|
+
// restarting a thread after a process bounce. v1 starts a fresh
|
|
61
|
+
// thread under the supplied id rather than rejecting; this is
|
|
62
|
+
// the more useful default.
|
|
63
|
+
const fresh = {
|
|
64
|
+
id,
|
|
65
|
+
turns: [],
|
|
66
|
+
expires_at: Date.now() + this.ttl_ms,
|
|
67
|
+
};
|
|
68
|
+
this.threads.set(id, fresh);
|
|
69
|
+
return { id, turns: [] };
|
|
70
|
+
}
|
|
71
|
+
const newId = randomUUID();
|
|
72
|
+
const fresh = {
|
|
73
|
+
id: newId,
|
|
74
|
+
turns: [],
|
|
75
|
+
expires_at: Date.now() + this.ttl_ms,
|
|
76
|
+
};
|
|
77
|
+
this.threads.set(newId, fresh);
|
|
78
|
+
return { id: newId, turns: [] };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Append a turn to thread `id`. Enforces the per-thread turn cap by
|
|
82
|
+
* dropping the oldest turn when full. Idempotent for unknown ids:
|
|
83
|
+
* creates the thread under the supplied id.
|
|
84
|
+
*/
|
|
85
|
+
append(id, turn) {
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
let thread = this.threads.get(id);
|
|
88
|
+
if (thread === undefined) {
|
|
89
|
+
thread = { id, turns: [], expires_at: now + this.ttl_ms };
|
|
90
|
+
this.threads.set(id, thread);
|
|
91
|
+
}
|
|
92
|
+
thread.turns.push({ ...turn, ts: now });
|
|
93
|
+
if (thread.turns.length > this.max_turns) {
|
|
94
|
+
// Drop oldest. This is a simple cap; callers wanting precise
|
|
95
|
+
// token budgeting should also use formatTextPrelude's
|
|
96
|
+
// max_chars knob to cap *serialized* length.
|
|
97
|
+
thread.turns.splice(0, thread.turns.length - this.max_turns);
|
|
98
|
+
}
|
|
99
|
+
thread.expires_at = now + this.ttl_ms;
|
|
100
|
+
}
|
|
101
|
+
/** Number of currently-stored threads (test surface). */
|
|
102
|
+
size() {
|
|
103
|
+
return this.threads.size;
|
|
104
|
+
}
|
|
105
|
+
/** True if `id` has any stored turns (test surface). */
|
|
106
|
+
has(id) {
|
|
107
|
+
return this.threads.has(id);
|
|
108
|
+
}
|
|
109
|
+
/** Get the turn list for `id`, or [] if unknown. Test surface. */
|
|
110
|
+
turns(id) {
|
|
111
|
+
return [...(this.threads.get(id)?.turns ?? [])];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Remove expired threads. Called automatically on a timer; exposed
|
|
115
|
+
* for tests that want to drive expiry deterministically without
|
|
116
|
+
* waiting on real time.
|
|
117
|
+
*/
|
|
118
|
+
reap(now = Date.now()) {
|
|
119
|
+
let removed = 0;
|
|
120
|
+
for (const [id, t] of this.threads) {
|
|
121
|
+
if (t.expires_at <= now) {
|
|
122
|
+
this.threads.delete(id);
|
|
123
|
+
removed++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return removed;
|
|
127
|
+
}
|
|
128
|
+
/** Stop the reap interval. Test cleanup. */
|
|
129
|
+
shutdown() {
|
|
130
|
+
if (this.reaper !== null) {
|
|
131
|
+
clearInterval(this.reaper);
|
|
132
|
+
this.reaper = null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format a list of prior turns as a text prelude prepended to the
|
|
138
|
+
* current task on `qwen_oneshot` calls (the SDK / Qwen-CLI dispatch
|
|
139
|
+
* path doesn't accept a messages array — only a single prompt string).
|
|
140
|
+
*
|
|
141
|
+
* Drops oldest turns until the serialised prelude fits within
|
|
142
|
+
* `max_chars`. Returns the prelude as a plain string (empty when no
|
|
143
|
+
* turns), suitable for concatenation with the current task.
|
|
144
|
+
*/
|
|
145
|
+
export function formatTextPrelude(turns, opts = {}) {
|
|
146
|
+
const max = opts.max_chars ?? 50_000;
|
|
147
|
+
if (turns.length === 0)
|
|
148
|
+
return "";
|
|
149
|
+
// Build newest-first, dropping when over budget. Then reverse for
|
|
150
|
+
// chronological presentation to the model.
|
|
151
|
+
const kept = [];
|
|
152
|
+
let total = 0;
|
|
153
|
+
const header = "Prior conversation:\n";
|
|
154
|
+
const footer = "\n\nCurrent task:\n";
|
|
155
|
+
// Char budget reserved for the actual prior-turn content, excluding
|
|
156
|
+
// the header and footer scaffold. Truncation marker accounts for the
|
|
157
|
+
// "…[truncated]" tail we append when shortening the single newest
|
|
158
|
+
// turn so the overall prelude still respects the cap.
|
|
159
|
+
const TRUNCATION_MARKER = "…[truncated]";
|
|
160
|
+
const contentBudget = Math.max(0, max - header.length - footer.length);
|
|
161
|
+
for (let i = turns.length - 1; i >= 0; i--) {
|
|
162
|
+
const turn = turns[i];
|
|
163
|
+
const tag = turn.role === "user" ? "[user]" : "[assistant]";
|
|
164
|
+
const attach = turn.had_images ? " [image attached]" : "";
|
|
165
|
+
const block = `${tag}${attach}: ${turn.content}\n`;
|
|
166
|
+
if (total + block.length > contentBudget) {
|
|
167
|
+
if (kept.length === 0) {
|
|
168
|
+
// The newest turn alone exceeds the cap. Keep continuity by
|
|
169
|
+
// truncating it rather than emitting it whole — emitting whole
|
|
170
|
+
// would silently inflate the next prompt by potentially many
|
|
171
|
+
// multiples of `max`, and the operator-visible cap would be
|
|
172
|
+
// a lie. (Round-2 critique bead 1m4.)
|
|
173
|
+
const prefix = `${tag}${attach}: `;
|
|
174
|
+
const room = Math.max(0, contentBudget - prefix.length - TRUNCATION_MARKER.length - 1);
|
|
175
|
+
const truncatedBlock = `${prefix}${turn.content.slice(0, room)}${TRUNCATION_MARKER}\n`;
|
|
176
|
+
kept.push(truncatedBlock);
|
|
177
|
+
total += truncatedBlock.length;
|
|
178
|
+
}
|
|
179
|
+
// Either we just truncated the newest turn, or we already had at
|
|
180
|
+
// least one turn kept — stop including older turns in both cases.
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
kept.push(block);
|
|
184
|
+
total += block.length;
|
|
185
|
+
}
|
|
186
|
+
if (kept.length === 0)
|
|
187
|
+
return "";
|
|
188
|
+
// Reverse to chronological order (oldest first).
|
|
189
|
+
kept.reverse();
|
|
190
|
+
return header + kept.join("") + footer;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format prior turns as an array of OpenAI-style chat messages for
|
|
194
|
+
* `qwen_oneshot_vision`'s direct-HTTP path. Drops oldest turns until
|
|
195
|
+
* serialised JSON length is under `max_chars`. Images from prior turns
|
|
196
|
+
* are NOT carried forward in v1 — `had_images` turns get a marker
|
|
197
|
+
* appended to their content.
|
|
198
|
+
*/
|
|
199
|
+
export function formatChatPrelude(turns, opts = {}) {
|
|
200
|
+
const max = opts.max_chars ?? 50_000;
|
|
201
|
+
if (turns.length === 0)
|
|
202
|
+
return [];
|
|
203
|
+
const out = [];
|
|
204
|
+
let total = 0;
|
|
205
|
+
for (let i = turns.length - 1; i >= 0; i--) {
|
|
206
|
+
const turn = turns[i];
|
|
207
|
+
const content = turn.had_images
|
|
208
|
+
? `${turn.content}\n[image attached in prior turn — not carried forward]`
|
|
209
|
+
: turn.content;
|
|
210
|
+
const entrySize = content.length + 32; // rough overhead for JSON shape
|
|
211
|
+
if (total + entrySize > max && out.length > 0)
|
|
212
|
+
break;
|
|
213
|
+
out.unshift({ role: turn.role, content });
|
|
214
|
+
total += entrySize;
|
|
215
|
+
}
|
|
216
|
+
return out;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=threads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"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"}
|
package/dist/tokenize.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// tokenize.ts — direct-HTTP dispatch for `qwen_tokenize`.
|
|
4
|
+
//
|
|
5
|
+
// llama-server exposes /tokenize (NOT /v1/tokenize — sits outside the
|
|
6
|
+
// OpenAI-compat namespace). Returns the model's exact token IDs and
|
|
7
|
+
// count. Useful for budget arithmetic, chunk sizing, and pre-flight
|
|
8
|
+
// context-window math.
|
|
9
|
+
//
|
|
10
|
+
// The tokenizer is colocated with whatever model is loaded — any
|
|
11
|
+
// text or multimodal backend can serve this call. No new modality.
|
|
12
|
+
import { createLogger } from "./log.js";
|
|
13
|
+
import { dispatchOpenAIPost } from "./openai-compat.js";
|
|
14
|
+
const log = createLogger("qwen-tokenize");
|
|
15
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
16
|
+
export async function dispatchTokenize(backend, content, opts = {}) {
|
|
17
|
+
const timeout_ms = opts.timeout_ms ?? DEFAULT_TIMEOUT_MS;
|
|
18
|
+
const body = { content };
|
|
19
|
+
if (opts.add_special !== undefined)
|
|
20
|
+
body.add_special = opts.add_special;
|
|
21
|
+
if (opts.with_pieces !== undefined)
|
|
22
|
+
body.with_pieces = opts.with_pieces;
|
|
23
|
+
// `/tokenize` sits at server root, not under /v1. The shared
|
|
24
|
+
// buildRequestUrl helper strips `/v1` from backend.url when the
|
|
25
|
+
// endpoint is non-/v1 root-relative.
|
|
26
|
+
const outcome = await dispatchOpenAIPost(backend, "/tokenize", body, {
|
|
27
|
+
timeout_ms,
|
|
28
|
+
});
|
|
29
|
+
if (!outcome.ok) {
|
|
30
|
+
if (outcome.status !== undefined) {
|
|
31
|
+
log.warn({
|
|
32
|
+
backend_id: backend.id,
|
|
33
|
+
status: outcome.status,
|
|
34
|
+
body_excerpt: outcome.body_text?.slice(0, 200),
|
|
35
|
+
}, "tokenize dispatch HTTP failure");
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
elapsed_ms: outcome.elapsed_ms,
|
|
40
|
+
backend_id: backend.id,
|
|
41
|
+
error: outcome.error,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
let parsed;
|
|
45
|
+
try {
|
|
46
|
+
parsed = JSON.parse(outcome.body_text);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
elapsed_ms: outcome.elapsed_ms,
|
|
52
|
+
backend_id: backend.id,
|
|
53
|
+
error: {
|
|
54
|
+
code: "backend_error",
|
|
55
|
+
message: `non-JSON response: ${err.message}`,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (!Array.isArray(parsed.tokens)) {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
elapsed_ms: outcome.elapsed_ms,
|
|
63
|
+
backend_id: backend.id,
|
|
64
|
+
error: { code: "no_tokens", message: "backend returned no tokens field" },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// With with_pieces=true, llama-server emits [{id, piece}, …]; without,
|
|
68
|
+
// it emits a flat number[]. Normalize both shapes.
|
|
69
|
+
const ids = [];
|
|
70
|
+
const pieces = [];
|
|
71
|
+
for (const t of parsed.tokens) {
|
|
72
|
+
if (typeof t === "number") {
|
|
73
|
+
ids.push(t);
|
|
74
|
+
}
|
|
75
|
+
else if (t && typeof t === "object" && typeof t.id === "number") {
|
|
76
|
+
ids.push(t.id);
|
|
77
|
+
if (typeof t.piece === "string")
|
|
78
|
+
pieces.push(t.piece);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
ok: true,
|
|
83
|
+
tokens: ids,
|
|
84
|
+
count: ids.length,
|
|
85
|
+
...(pieces.length > 0 ? { pieces } : {}),
|
|
86
|
+
elapsed_ms: outcome.elapsed_ms,
|
|
87
|
+
backend_id: backend.id,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=tokenize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../src/tokenize.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Shared type surface for the qwen-agent-server supervisor.
|
|
4
|
+
// See docs/rdr/RDR-001 for rationale; types here are the implementation
|
|
5
|
+
// contract. Changes here ripple through session.ts / backends.ts /
|
|
6
|
+
// permissions.ts / server.ts.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,4DAA4D;AAC5D,wEAAwE;AACxE,mEAAmE;AACnE,8BAA8B"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Single source of truth for the supervisor binary's externally-visible
|
|
4
|
+
// version string. Reported via MCP ServerInfo.version on the wire and
|
|
5
|
+
// asserted in tests against the plugin and marketplace manifests so a
|
|
6
|
+
// release bump that misses any one surface fails CI rather than ships
|
|
7
|
+
// silently stale (see bead qwen-coprocessor-stack-djv).
|
|
8
|
+
//
|
|
9
|
+
// Bump this in lockstep with .claude-plugin/plugin.json and
|
|
10
|
+
// .claude-plugin/marketplace.json (metadata.version and plugins[0].version).
|
|
11
|
+
// The version_consistency test enforces equality across all four sites.
|
|
12
|
+
export const SUPERVISOR_VERSION = "0.11.1";
|
|
13
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,sEAAsE;AACtE,wDAAwD;AACxD,EAAE;AACF,4DAA4D;AAC5D,6EAA6E;AAC7E,wEAAwE;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC"}
|