@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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # @dsh-enhanced/llm-route-capabilities
2
2
 
3
- 普通、非激活型 TypeScript 库,用于把 provider/model 的工具调用能力声明附着到一个精确的 DSH `LlmRuntime` 实例。它不声明 `dsh.bundle`,也不会向 profile 注入任何 Cordis patch。
3
+ 普通、非激活型 TypeScript 库,用于把 provider/model 的工具调用**协议投影方式**附着到一个精确的 DSH `LlmRuntime` 实例。它不声明 `dsh.bundle`,也不会向 profile 注入任何 Cordis patch。
4
4
 
5
- 能力分为 `none`(不能接收 DSH tools)、`native`(原生 tool-call stream)和 `bridge`(由 provider 的受约束协议桥接为 DSH tool calls)。精确 model 声明覆盖 provider 声明;重复 selector 会失败,卸载 disposer 只撤回自己注册的声明。
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 { LlmRuntime } from '@deepseek-ai/dsh-llm';
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
- * Attach one audited capability declaration to exactly one live LLM runtime.
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
  */
@@ -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;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,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;AA2EnD;;;;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"}
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 capability declaration to exactly one live LLM runtime.
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":"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"}
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.3";
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.3';
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.3",
4
- "description": "Runtime-local LLM route capability declarations for DeepSeek Harness integrations.",
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",