@dsh-enhanced/llm-route-capabilities 0.1.3 → 0.1.5
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 +11 -2
- package/lib/index.d.ts +37 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +447 -1
- package/lib/index.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +9 -2
package/README.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @dsh-enhanced/llm-route-capabilities
|
|
2
2
|
|
|
3
|
-
普通、非激活型 TypeScript 库,用于把 provider/model
|
|
3
|
+
普通、非激活型 TypeScript 库,用于把 provider/model 的工具调用**协议投影方式**附着到一个精确的 DSH `LlmRuntime` 实例。它不声明 `dsh.bundle`,也不会向 profile 注入任何 Cordis patch。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`native` 表示 adapter 直接产生 tool-call stream,`bridge` 表示 adapter 把受约束的模型输出转换为同一套 DSH tool calls;`none` 表示 adapter 明确没有实现统一 DSH tool-call 协议。该元数据不决定 Agent 的工具/Skill 可见性、Policy 或审批:所有模型共享 preset 决定的同一工具平面,实际执行始终由 DSH Agent Loop 完成。Host 不维护 provider allowlist;声明缺失、`native` 和 `bridge` 都不会阻止工具请求,只有显式 `none` 可以让 Delivery/Automation 在非空工具 scope 下因协议不可实现而失败关闭。精确 model 声明覆盖 provider 声明;重复 selector 会失败,卸载 disposer 只撤回自己注册的声明。
|
|
6
|
+
|
|
7
|
+
本库也提供 `createAgentLoopRequestAttestor()`,供本机子进程 provider 跨
|
|
8
|
+
`dsh-llm` 包副本及 adapter 请求克隆验证 Agent Loop 来源。它使用 Host 的
|
|
9
|
+
`AgentRegistry` initiator,要求 Agent 仍为 `running`、registry 与 `sessions`
|
|
10
|
+
返回同一个 Agent/Session 对象,并从该 Session 的 request header 与 derived
|
|
11
|
+
messages 重建完整普通对话请求。唯一允许的消息差异是 DSH rc.8
|
|
12
|
+
`forAdapter()` 为跨 route 历史删除 `replayState` 时产生的冻结副本;辅助调用、
|
|
13
|
+
任意嵌套调用、过期 Session 与其他变形均失败关闭。该证明不替代 provider
|
|
14
|
+
自己的静态授权目录或 canonical cwd 复核。
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AgentRegistry } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import { type GenerateOptions, type LlmRuntime } from '@deepseek-ai/dsh-llm';
|
|
2
3
|
import { version } from './version.js';
|
|
4
|
+
/**
|
|
5
|
+
* Adapter protocol projection only; never an Agent tool authorization decision.
|
|
6
|
+
* `none` is an explicit negative implementation declaration, not a model capability tier.
|
|
7
|
+
*/
|
|
3
8
|
export type ToolCallMode = 'none' | 'native' | 'bridge';
|
|
4
9
|
export interface LlmRouteCapabilityDeclaration {
|
|
5
10
|
readonly provider: string;
|
|
@@ -8,7 +13,37 @@ export interface LlmRouteCapabilityDeclaration {
|
|
|
8
13
|
}
|
|
9
14
|
export type LlmRouteCapabilityDisposer = () => void;
|
|
10
15
|
/**
|
|
11
|
-
*
|
|
16
|
+
* Host-owned proof that an adapter request is running inside one exact live
|
|
17
|
+
* Agent driver and still names that Agent's exact Session object.
|
|
18
|
+
*/
|
|
19
|
+
export interface AgentLoopRequestAttestor {
|
|
20
|
+
claim(request: GenerateOptions, session: object): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Claim the one rc.8 `dsh-compaction-basic` auxiliary call that belongs to
|
|
23
|
+
* the exact active Agent turn. The upstream compactor builds a mutable
|
|
24
|
+
* envelope, so a successful claim seals that plain-data envelope in place at
|
|
25
|
+
* this Host-owned provider-authority seam before validating its full shape.
|
|
26
|
+
* Implementations that do not explicitly support this proof omit the method.
|
|
27
|
+
*/
|
|
28
|
+
claimCompaction?(request: GenerateOptions, session: object): boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Preserve Agent Loop provenance across package duplication and transformations
|
|
32
|
+
* owned by DSH's LLM runtime. DSH rc.8 keeps its request marker in a module-local
|
|
33
|
+
* WeakSet and may clone a frozen request while materializing adapter defaults or
|
|
34
|
+
* stripping another adapter's replay state. The Agent Registry's initiator scope
|
|
35
|
+
* instead spans the whole driver Promise and is owned by the Host service.
|
|
36
|
+
*
|
|
37
|
+
* Ambient initiator presence is not enough: every claim also requires a running
|
|
38
|
+
* Agent, exact registry identity, matching request/session id, the exact Session
|
|
39
|
+
* object returned by the Host, and an envelope reconstructed from that Session's
|
|
40
|
+
* current request header and derived message history. The only accepted clone is
|
|
41
|
+
* DSH rc.8's documented replayState removal in forAdapter(). Provider-side
|
|
42
|
+
* canonical-cwd checks remain separate and mandatory.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createAgentLoopRequestAttestor(agents: Pick<AgentRegistry, 'currentInitiator' | 'get'>, ownedRoutes: readonly string[]): AgentLoopRequestAttestor;
|
|
45
|
+
/**
|
|
46
|
+
* Attach one audited tool-call projection declaration to exactly one live LLM runtime.
|
|
12
47
|
* A selector has a single owner; even an identical duplicate is rejected so
|
|
13
48
|
* plugin unload cannot make another plugin's declaration disappear.
|
|
14
49
|
*/
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;CACjC;AAED,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAA;AAEnD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAEzD;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CACrE;AAocD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,KAAK,CAAC,EACvD,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,wBAAwB,CAmD1B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,6BAA6B,GACnC,0BAA0B,CAsB5B;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC,6BAA6B,CAAC,GAAG,SAAS,CAIrD;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,72 @@
|
|
|
1
|
+
import { deepFreeze } from '@deepseek-ai/dsh-llm';
|
|
2
|
+
import { types as nodeTypes } from 'node:util';
|
|
1
3
|
import { version } from './version.js';
|
|
2
4
|
const registrySymbol = Symbol.for('@dsh-enhanced/llm-route-capabilities/runtime-registry/v1');
|
|
3
5
|
const providerPattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$/u;
|
|
4
6
|
const modes = new Set(['none', 'native', 'bridge']);
|
|
7
|
+
const uuidV4Pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;
|
|
8
|
+
const MAX_COMPACTION_TOKENS = 8_192;
|
|
9
|
+
const compactionRequestKeys = new Set([
|
|
10
|
+
'provider',
|
|
11
|
+
'model',
|
|
12
|
+
'reasoningEffort',
|
|
13
|
+
'messages',
|
|
14
|
+
'system',
|
|
15
|
+
'tools',
|
|
16
|
+
'maxTokens',
|
|
17
|
+
'sessionId',
|
|
18
|
+
'purpose',
|
|
19
|
+
'signal',
|
|
20
|
+
]);
|
|
21
|
+
const requiredCompactionRequestKeys = [
|
|
22
|
+
'provider',
|
|
23
|
+
'model',
|
|
24
|
+
'messages',
|
|
25
|
+
'maxTokens',
|
|
26
|
+
'sessionId',
|
|
27
|
+
'purpose',
|
|
28
|
+
'signal',
|
|
29
|
+
];
|
|
30
|
+
const instructionMessageKeys = new Set(['id', 'role', 'content', 'source']);
|
|
31
|
+
const compactionStartKeys = new Set(['compactionId', 'sourceCommandId', 'turn']);
|
|
32
|
+
const automaticCompactionStartKeys = new Set(['compactionId', 'turn']);
|
|
33
|
+
/** Exact final user instruction emitted by @deepseek-ai/dsh-compaction-basic rc.8. */
|
|
34
|
+
const RC8_COMPACTION_INSTRUCTION = [
|
|
35
|
+
'You are now acting as a compaction engine for this AI coding assistant. Condense the conversation ABOVE into a structured checkpoint that lets another model resume the work with no loss of essential context.',
|
|
36
|
+
'',
|
|
37
|
+
'Output EXACTLY the Markdown structure below: keep every section, in order. Use terse bullets, not prose paragraphs. Write "(none)" for an empty section — never drop a section.',
|
|
38
|
+
'',
|
|
39
|
+
'## Primary Request and Intent',
|
|
40
|
+
'- [the user\'s original and evolving goals; quote verbatim where the exact wording matters]',
|
|
41
|
+
'',
|
|
42
|
+
'## Key Technical Concepts',
|
|
43
|
+
'- [technologies, frameworks, patterns, and conventions in play]',
|
|
44
|
+
'',
|
|
45
|
+
'## Files and Code',
|
|
46
|
+
'- [exact path: why it matters, key changes or snippets]',
|
|
47
|
+
'',
|
|
48
|
+
'## Errors and Fixes',
|
|
49
|
+
'- [error: how it was resolved, plus any related user feedback]',
|
|
50
|
+
'',
|
|
51
|
+
'## Pending Jobs',
|
|
52
|
+
'- [explicitly requested work not yet completed]',
|
|
53
|
+
'',
|
|
54
|
+
'## Current Work',
|
|
55
|
+
'- [precisely what was in progress at this checkpoint]',
|
|
56
|
+
'',
|
|
57
|
+
'## Next Step',
|
|
58
|
+
'- [the single next action, directly in line with the most recent request, or "(none)"]',
|
|
59
|
+
'',
|
|
60
|
+
'## Critical Context',
|
|
61
|
+
'- [decisions and their rationale, constraints, user preferences, open questions, data needed to continue]',
|
|
62
|
+
'',
|
|
63
|
+
'Rules:',
|
|
64
|
+
'- Write concise English engineering prose. Preserve exact file paths, commands, error strings, identifiers, numeric values, function signatures, and syntax fragments.',
|
|
65
|
+
'- Capture user feedback and explicit instructions faithfully, especially corrections.',
|
|
66
|
+
'- Do NOT mention this summarization request or that the context was compacted.',
|
|
67
|
+
'- Output only the checkpoint text: do not call any tool or take any other action.',
|
|
68
|
+
'- If the conversation already contains a <compacted-summary> block, it is a PRIOR checkpoint. Do not copy it forward verbatim: preserve still-true facts, drop stale ones, and merge newer information into a single consolidated summary under the same structure.',
|
|
69
|
+
].join('\n');
|
|
5
70
|
function registryTarget(runtime) {
|
|
6
71
|
return runtime;
|
|
7
72
|
}
|
|
@@ -57,8 +122,389 @@ function normalize(input) {
|
|
|
57
122
|
function modelKey(provider, model) {
|
|
58
123
|
return JSON.stringify([provider, model]);
|
|
59
124
|
}
|
|
125
|
+
function own(value, key) {
|
|
126
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
127
|
+
}
|
|
128
|
+
function dataRecord(value) {
|
|
129
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
130
|
+
}
|
|
131
|
+
function plainDataKeys(value) {
|
|
132
|
+
if (nodeTypes.isProxy(value))
|
|
133
|
+
return undefined;
|
|
134
|
+
if (Array.isArray(value)) {
|
|
135
|
+
if (Object.getPrototypeOf(value) !== Array.prototype)
|
|
136
|
+
return undefined;
|
|
137
|
+
const keys = Reflect.ownKeys(value);
|
|
138
|
+
if (keys.some(key => typeof key !== 'string'))
|
|
139
|
+
return undefined;
|
|
140
|
+
const dataKeys = keys.filter(key => key !== 'length');
|
|
141
|
+
if (dataKeys.length !== value.length
|
|
142
|
+
|| dataKeys.some((key, index) => key !== String(index)))
|
|
143
|
+
return undefined;
|
|
144
|
+
return dataKeys;
|
|
145
|
+
}
|
|
146
|
+
const prototype = Object.getPrototypeOf(value);
|
|
147
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
148
|
+
return undefined;
|
|
149
|
+
const keys = Reflect.ownKeys(value);
|
|
150
|
+
if (keys.some(key => typeof key !== 'string'))
|
|
151
|
+
return undefined;
|
|
152
|
+
for (const key of keys) {
|
|
153
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
154
|
+
if (descriptor === undefined || !descriptor.enumerable || !own(descriptor, 'value'))
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
return keys;
|
|
158
|
+
}
|
|
159
|
+
/** Compare the JSON-shaped request/session snapshots without serializing secrets. */
|
|
160
|
+
function sameData(left, right) {
|
|
161
|
+
const pending = [[left, right]];
|
|
162
|
+
const seen = new WeakMap();
|
|
163
|
+
while (pending.length > 0) {
|
|
164
|
+
const pair = pending.pop();
|
|
165
|
+
if (Object.is(pair[0], pair[1]))
|
|
166
|
+
continue;
|
|
167
|
+
if (pair[0] === null || pair[1] === null
|
|
168
|
+
|| typeof pair[0] !== 'object' || typeof pair[1] !== 'object')
|
|
169
|
+
return false;
|
|
170
|
+
const leftArray = Array.isArray(pair[0]);
|
|
171
|
+
if (leftArray !== Array.isArray(pair[1]))
|
|
172
|
+
return false;
|
|
173
|
+
if (!leftArray && (!dataRecord(pair[0]) || !dataRecord(pair[1])))
|
|
174
|
+
return false;
|
|
175
|
+
let rights = seen.get(pair[0]);
|
|
176
|
+
if (rights?.has(pair[1]))
|
|
177
|
+
continue;
|
|
178
|
+
if (rights === undefined) {
|
|
179
|
+
rights = new WeakSet();
|
|
180
|
+
seen.set(pair[0], rights);
|
|
181
|
+
}
|
|
182
|
+
rights.add(pair[1]);
|
|
183
|
+
const leftKeys = plainDataKeys(pair[0]);
|
|
184
|
+
const rightKeys = plainDataKeys(pair[1]);
|
|
185
|
+
if (leftKeys === undefined || rightKeys === undefined || leftKeys.length !== rightKeys.length)
|
|
186
|
+
return false;
|
|
187
|
+
const rightKeySet = new Set(rightKeys);
|
|
188
|
+
for (const key of leftKeys) {
|
|
189
|
+
if (!rightKeySet.has(key))
|
|
190
|
+
return false;
|
|
191
|
+
pending.push([
|
|
192
|
+
pair[0][key],
|
|
193
|
+
pair[1][key],
|
|
194
|
+
]);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
function deeplyFrozen(value) {
|
|
200
|
+
const pending = [{ value }];
|
|
201
|
+
const active = new WeakSet();
|
|
202
|
+
const complete = new WeakSet();
|
|
203
|
+
while (pending.length > 0) {
|
|
204
|
+
const current = pending.pop();
|
|
205
|
+
if (current.leave) {
|
|
206
|
+
active.delete(current.value);
|
|
207
|
+
complete.add(current.value);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (current.value === null || typeof current.value !== 'object') {
|
|
211
|
+
if (current.value === undefined || typeof current.value === 'symbol' || typeof current.value === 'function'
|
|
212
|
+
|| (typeof current.value === 'number' && (!Number.isFinite(current.value) || Object.is(current.value, -0))))
|
|
213
|
+
return false;
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (current.value instanceof AbortSignal)
|
|
217
|
+
continue;
|
|
218
|
+
if (active.has(current.value))
|
|
219
|
+
return false;
|
|
220
|
+
if (complete.has(current.value))
|
|
221
|
+
continue;
|
|
222
|
+
active.add(current.value);
|
|
223
|
+
pending.push({ value: current.value, leave: true });
|
|
224
|
+
const keys = plainDataKeys(current.value);
|
|
225
|
+
if (keys === undefined)
|
|
226
|
+
return false;
|
|
227
|
+
const currentRecord = current.value;
|
|
228
|
+
if (!Object.isFrozen(current.value))
|
|
229
|
+
return false;
|
|
230
|
+
for (const key of keys) {
|
|
231
|
+
pending.push({ value: currentRecord[key] });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Validate the complete request graph without invoking getters before the
|
|
238
|
+
* attestor freezes an upstream-owned compaction envelope in place. The only
|
|
239
|
+
* exotic object admitted is the exact root `signal`; nested AbortSignals and
|
|
240
|
+
* every accessor/proxy-visible non-data shape fail closed.
|
|
241
|
+
*/
|
|
242
|
+
function plainCompactionRequestGraph(request, signal) {
|
|
243
|
+
const pending = [
|
|
244
|
+
{ value: request, root: true },
|
|
245
|
+
];
|
|
246
|
+
const active = new WeakSet();
|
|
247
|
+
const complete = new WeakSet();
|
|
248
|
+
while (pending.length > 0) {
|
|
249
|
+
const current = pending.pop();
|
|
250
|
+
if (current.leave) {
|
|
251
|
+
active.delete(current.value);
|
|
252
|
+
complete.add(current.value);
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (current.value === null || typeof current.value !== 'object') {
|
|
256
|
+
if (current.value === undefined || typeof current.value === 'symbol' || typeof current.value === 'function'
|
|
257
|
+
|| (typeof current.value === 'number' && (!Number.isFinite(current.value) || Object.is(current.value, -0))))
|
|
258
|
+
return false;
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
if (current.value instanceof AbortSignal) {
|
|
262
|
+
if (current.signal !== true || current.value !== signal)
|
|
263
|
+
return false;
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (active.has(current.value))
|
|
267
|
+
return false;
|
|
268
|
+
if (complete.has(current.value))
|
|
269
|
+
continue;
|
|
270
|
+
active.add(current.value);
|
|
271
|
+
pending.push({ value: current.value, leave: true });
|
|
272
|
+
const keys = plainDataKeys(current.value);
|
|
273
|
+
if (keys === undefined)
|
|
274
|
+
return false;
|
|
275
|
+
for (const key of keys) {
|
|
276
|
+
const descriptor = Object.getOwnPropertyDescriptor(current.value, key);
|
|
277
|
+
// plainDataKeys() has already established an enumerable data descriptor.
|
|
278
|
+
if (descriptor === undefined || !own(descriptor, 'value'))
|
|
279
|
+
return false;
|
|
280
|
+
pending.push({
|
|
281
|
+
value: descriptor.value,
|
|
282
|
+
signal: current.root === true && key === 'signal',
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
function exactKeys(keys, expected) {
|
|
289
|
+
return keys.length === expected.size && keys.every(key => expected.has(key));
|
|
290
|
+
}
|
|
291
|
+
function exactCompactionInstruction(message) {
|
|
292
|
+
const keys = plainDataKeys(message);
|
|
293
|
+
return keys !== undefined
|
|
294
|
+
&& exactKeys(keys, instructionMessageKeys)
|
|
295
|
+
&& typeof message.id === 'string'
|
|
296
|
+
&& uuidV4Pattern.test(message.id)
|
|
297
|
+
&& sameData({ role: message.role, content: message.content, source: message.source }, {
|
|
298
|
+
role: 'user',
|
|
299
|
+
content: [{ type: 'text', text: RC8_COMPACTION_INSTRUCTION }],
|
|
300
|
+
source: { kind: 'plugin', plugin: 'dsh-compaction-basic' },
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/** Require the rc.8 opening marker to be the live turn's latest durable fact. */
|
|
304
|
+
function hasFreshCurrentTurnCompaction(session) {
|
|
305
|
+
const events = session.events;
|
|
306
|
+
let openTurn;
|
|
307
|
+
let openCompaction;
|
|
308
|
+
for (const candidate of events) {
|
|
309
|
+
if (!dataRecord(candidate) || typeof candidate.type !== 'string')
|
|
310
|
+
return false;
|
|
311
|
+
const event = candidate;
|
|
312
|
+
const data = event.data;
|
|
313
|
+
if (!dataRecord(data))
|
|
314
|
+
return false;
|
|
315
|
+
if (event.type === 'session/end-seed') {
|
|
316
|
+
openTurn = undefined;
|
|
317
|
+
openCompaction = undefined;
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
if (event.type === 'turn/start') {
|
|
321
|
+
const turn = data.turn;
|
|
322
|
+
if (openTurn !== undefined || openCompaction !== undefined
|
|
323
|
+
|| !Number.isInteger(turn) || turn < 0)
|
|
324
|
+
return false;
|
|
325
|
+
openTurn = turn;
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
if (event.type === 'turn/end') {
|
|
329
|
+
if (openTurn === undefined || data.turn !== openTurn || openCompaction !== undefined)
|
|
330
|
+
return false;
|
|
331
|
+
openTurn = undefined;
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
if (event.type === 'compaction/start') {
|
|
335
|
+
const keys = plainDataKeys(data);
|
|
336
|
+
const turn = data.turn;
|
|
337
|
+
if (openCompaction !== undefined
|
|
338
|
+
|| keys === undefined || keys.some(key => !compactionStartKeys.has(key))
|
|
339
|
+
|| !keys.includes('compactionId') || !keys.includes('turn')
|
|
340
|
+
|| typeof data.compactionId !== 'string' || !uuidV4Pattern.test(data.compactionId)
|
|
341
|
+
|| !(turn === null ? openTurn === undefined : Number.isInteger(turn) && turn === openTurn)
|
|
342
|
+
|| (own(data, 'sourceCommandId')
|
|
343
|
+
&& (typeof data.sourceCommandId !== 'string' || data.sourceCommandId.length === 0)))
|
|
344
|
+
return false;
|
|
345
|
+
openCompaction = {
|
|
346
|
+
event,
|
|
347
|
+
id: data.compactionId,
|
|
348
|
+
turn: turn,
|
|
349
|
+
automatic: exactKeys(keys, automaticCompactionStartKeys),
|
|
350
|
+
};
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
if (event.type === 'compaction/end') {
|
|
354
|
+
if (openCompaction === undefined || data.compactionId !== openCompaction.id
|
|
355
|
+
|| data.turn !== openCompaction.turn)
|
|
356
|
+
return false;
|
|
357
|
+
openCompaction = undefined;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return openTurn !== undefined
|
|
361
|
+
&& openCompaction !== undefined
|
|
362
|
+
&& openCompaction.automatic
|
|
363
|
+
&& openCompaction.turn === openTurn
|
|
364
|
+
&& events.at(-1) === openCompaction.event;
|
|
365
|
+
}
|
|
366
|
+
function sameLoopMessage(actual, expected, ownedRoutes) {
|
|
367
|
+
if (actual === expected)
|
|
368
|
+
return true;
|
|
369
|
+
const source = expected.source;
|
|
370
|
+
if (expected.role !== 'assistant' || source.kind !== 'model' || source.replayState === undefined
|
|
371
|
+
|| ownedRoutes.has(source.provider))
|
|
372
|
+
return false;
|
|
373
|
+
// DSH rc.8's forAdapter() makes exactly this detached snapshot when the
|
|
374
|
+
// historical replay state belongs to another adapter instance.
|
|
375
|
+
return sameData(actual, {
|
|
376
|
+
...expected,
|
|
377
|
+
source: {
|
|
378
|
+
kind: 'model',
|
|
379
|
+
provider: source.provider,
|
|
380
|
+
model: source.model,
|
|
381
|
+
},
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
function exactLoopEnvelope(request, session, ownedRoutes) {
|
|
385
|
+
if (own(request, 'purpose') || !own(request, 'signal')
|
|
386
|
+
|| !(request.signal instanceof AbortSignal) || request.signal.aborted
|
|
387
|
+
|| !deeplyFrozen(request))
|
|
388
|
+
return false;
|
|
389
|
+
const header = session.requestHeader();
|
|
390
|
+
if (header === undefined)
|
|
391
|
+
return false;
|
|
392
|
+
const expectedMessages = session.deriveMessages();
|
|
393
|
+
if (request.messages.length !== expectedMessages.length
|
|
394
|
+
|| !request.messages.every((message, index) => sameLoopMessage(message, expectedMessages[index], ownedRoutes)))
|
|
395
|
+
return false;
|
|
396
|
+
const expected = {
|
|
397
|
+
...header.config,
|
|
398
|
+
messages: request.messages,
|
|
399
|
+
...(header.system === undefined ? {} : { system: header.system }),
|
|
400
|
+
...(header.tools === undefined ? {} : { tools: header.tools }),
|
|
401
|
+
sessionId: session.id,
|
|
402
|
+
signal: request.signal,
|
|
403
|
+
};
|
|
404
|
+
return sameData(request, expected);
|
|
405
|
+
}
|
|
406
|
+
function exactCompactionEnvelope(request, session, ownedRoutes) {
|
|
407
|
+
const keys = plainDataKeys(request);
|
|
408
|
+
if (keys === undefined || keys.some(key => !compactionRequestKeys.has(key))
|
|
409
|
+
|| requiredCompactionRequestKeys.some(key => !keys.includes(key))
|
|
410
|
+
|| request.purpose !== 'compaction'
|
|
411
|
+
|| !ownedRoutes.has(request.provider)
|
|
412
|
+
|| !providerPattern.test(request.provider)
|
|
413
|
+
|| request.model.length === 0 || request.model.length > 512 || /[\s\p{Cc}]/u.test(request.model)
|
|
414
|
+
|| !Number.isInteger(request.maxTokens) || request.maxTokens <= 0 || request.maxTokens > MAX_COMPACTION_TOKENS
|
|
415
|
+
|| !own(request, 'signal') || !(request.signal instanceof AbortSignal) || request.signal.aborted
|
|
416
|
+
|| !deeplyFrozen(request))
|
|
417
|
+
return false;
|
|
418
|
+
const header = session.requestHeader();
|
|
419
|
+
if (header === undefined || request.provider !== header.config.provider || request.model !== header.config.model
|
|
420
|
+
|| own(request, 'system') !== own(header, 'system') || !sameData(request.system, header.system)
|
|
421
|
+
|| own(request, 'tools') !== own(header, 'tools') || !sameData(request.tools, header.tools))
|
|
422
|
+
return false;
|
|
423
|
+
if (own(request, 'reasoningEffort')) {
|
|
424
|
+
if (!own(header.config, 'reasoningEffort') || request.reasoningEffort !== header.config.reasoningEffort)
|
|
425
|
+
return false;
|
|
426
|
+
}
|
|
427
|
+
const expectedMessages = session.deriveMessages();
|
|
428
|
+
const prefixLength = request.messages.length - 1;
|
|
429
|
+
if (prefixLength <= 0 || prefixLength >= expectedMessages.length
|
|
430
|
+
|| !request.messages.slice(0, prefixLength).every((message, index) => (sameLoopMessage(message, expectedMessages[index], ownedRoutes))))
|
|
431
|
+
return false;
|
|
432
|
+
const instruction = request.messages.at(-1);
|
|
433
|
+
return instruction !== undefined
|
|
434
|
+
&& exactCompactionInstruction(instruction)
|
|
435
|
+
&& request.messages.filter(exactCompactionInstruction).length === 1;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Preserve Agent Loop provenance across package duplication and transformations
|
|
439
|
+
* owned by DSH's LLM runtime. DSH rc.8 keeps its request marker in a module-local
|
|
440
|
+
* WeakSet and may clone a frozen request while materializing adapter defaults or
|
|
441
|
+
* stripping another adapter's replay state. The Agent Registry's initiator scope
|
|
442
|
+
* instead spans the whole driver Promise and is owned by the Host service.
|
|
443
|
+
*
|
|
444
|
+
* Ambient initiator presence is not enough: every claim also requires a running
|
|
445
|
+
* Agent, exact registry identity, matching request/session id, the exact Session
|
|
446
|
+
* object returned by the Host, and an envelope reconstructed from that Session's
|
|
447
|
+
* current request header and derived message history. The only accepted clone is
|
|
448
|
+
* DSH rc.8's documented replayState removal in forAdapter(). Provider-side
|
|
449
|
+
* canonical-cwd checks remain separate and mandatory.
|
|
450
|
+
*/
|
|
451
|
+
export function createAgentLoopRequestAttestor(agents, ownedRoutes) {
|
|
452
|
+
const routes = new Set(ownedRoutes);
|
|
453
|
+
if (routes.size === 0 || routes.size !== ownedRoutes.length || ownedRoutes.some(route => !providerPattern.test(route))) {
|
|
454
|
+
throw new Error('llm-route-capabilities: attestor requires unique exact provider routes');
|
|
455
|
+
}
|
|
456
|
+
return Object.freeze({
|
|
457
|
+
claim(request, session) {
|
|
458
|
+
try {
|
|
459
|
+
const initiator = agents.currentInitiator();
|
|
460
|
+
return initiator !== undefined
|
|
461
|
+
&& initiator.status === 'running'
|
|
462
|
+
&& request.sessionId !== undefined
|
|
463
|
+
&& initiator.id === request.sessionId
|
|
464
|
+
&& agents.get(initiator.id) === initiator
|
|
465
|
+
&& initiator.session === session
|
|
466
|
+
&& initiator.session.id === request.sessionId
|
|
467
|
+
&& exactLoopEnvelope(request, initiator.session, routes);
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
// Service teardown or a malformed host facade fails closed at the
|
|
471
|
+
// provider boundary and is reported as an unattested local request.
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
claimCompaction(request, session) {
|
|
476
|
+
try {
|
|
477
|
+
// Inspect only root data descriptors and cheap scalar/identity facts
|
|
478
|
+
// before touching the caller-owned nested graph or freezing it.
|
|
479
|
+
const keys = plainDataKeys(request);
|
|
480
|
+
if (keys === undefined || keys.some(key => !compactionRequestKeys.has(key))
|
|
481
|
+
|| requiredCompactionRequestKeys.some(key => !keys.includes(key))
|
|
482
|
+
|| request.purpose !== 'compaction'
|
|
483
|
+
|| !own(request, 'signal') || !(request.signal instanceof AbortSignal) || request.signal.aborted
|
|
484
|
+
|| request.sessionId === undefined)
|
|
485
|
+
return false;
|
|
486
|
+
const initiator = agents.currentInitiator();
|
|
487
|
+
if (initiator === undefined || initiator.status !== 'running'
|
|
488
|
+
|| initiator.id !== request.sessionId
|
|
489
|
+
|| agents.get(initiator.id) !== initiator
|
|
490
|
+
|| initiator.session !== session
|
|
491
|
+
|| initiator.session.id !== request.sessionId
|
|
492
|
+
|| !hasFreshCurrentTurnCompaction(initiator.session))
|
|
493
|
+
return false;
|
|
494
|
+
if (!plainCompactionRequestGraph(request, request.signal))
|
|
495
|
+
return false;
|
|
496
|
+
deepFreeze(request);
|
|
497
|
+
return exactCompactionEnvelope(request, initiator.session, routes);
|
|
498
|
+
}
|
|
499
|
+
catch {
|
|
500
|
+
// Never freeze or authorize a malformed/stale ambient auxiliary call.
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
});
|
|
505
|
+
}
|
|
60
506
|
/**
|
|
61
|
-
* Attach one audited
|
|
507
|
+
* Attach one audited tool-call projection declaration to exactly one live LLM runtime.
|
|
62
508
|
* A selector has a single owner; even an identical duplicate is rejected so
|
|
63
509
|
* plugin unload cannot make another plugin's declaration disappear.
|
|
64
510
|
*/
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAuBtC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;AAC7F,MAAM,eAAe,GAAG,qCAAqC,CAAA;AAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEjE,SAAS,cAAc,CAAC,OAAmB;IACzC,OAAO,OAAkD,CAAA;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,SAAS,GAAG,KAA+B,CAAA;IACjD,OAAO,SAAS,CAAC,aAAa,KAAK,CAAC;WAC/B,SAAS,CAAC,SAAS,YAAY,GAAG;WAClC,SAAS,CAAC,MAAM,YAAY,GAAG,CAAA;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,OAAmB,EAAE,MAAe;IACpD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA;QACzG,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,KAAK,GAAkB;QAC3B,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,MAAM,EAAE,IAAI,GAAG,EAAE;KAClB,CAAA;IACD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE;QAC5C,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAoC;IACrD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;WACxB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,KAAa;IAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAmB,EACnB,KAAoC;IAEpC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAE,CAAA;IACtC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IAChF,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS;QACzC,CAAC,CAAC,WAAW,CAAC,QAAQ;QACtB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS;YAC9C,CAAC,CAAC,WAAW,CAAC,QAAQ;YACtB,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,CAAA;QAClD,MAAM,IAAI,KAAK,CAAC,gEAAgE,QAAQ,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACxC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ;YAAE,OAAM;QACpB,QAAQ,GAAG,IAAI,CAAA;QACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,OAAO,EAAE,KAAK,KAAK,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,yBAAyB,CACvC,OAAmB,EACnB,QAAgB,EAChB,KAAa;IAEb,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACtC,OAAO,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW;WAC3D,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;AAClD,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.1.
|
|
1
|
+
export declare const version = "0.1.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '0.1.
|
|
1
|
+
export const version = '0.1.5';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-enhanced/llm-route-capabilities",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Runtime-local LLM route
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Runtime-local LLM route tool-call projection metadata for DeepSeek Harness integrations.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./lib/index.js",
|
|
@@ -36,10 +36,17 @@
|
|
|
36
36
|
"tool-calls"
|
|
37
37
|
],
|
|
38
38
|
"peerDependencies": {
|
|
39
|
+
"@deepseek-ai/dsh-agent": ">=0.1.0-rc.8 <0.2.0",
|
|
39
40
|
"@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0"
|
|
40
41
|
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"@deepseek-ai/dsh-agent": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
41
47
|
"devDependencies": {
|
|
42
48
|
"@deepseek-ai/cordis": "4.0.1",
|
|
49
|
+
"@deepseek-ai/dsh-agent": "0.1.0-rc.8",
|
|
43
50
|
"@deepseek-ai/dsh-llm": "0.1.0-rc.8",
|
|
44
51
|
"@types/node": "22.20.0",
|
|
45
52
|
"typescript": "6.0.3",
|