@dsh-enhanced/traex-acp-provider 0.1.2 → 0.1.4

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/lib/prompt.js CHANGED
@@ -30,7 +30,7 @@ export function buildPrompt(options, maxPromptBytes) {
30
30
  protocol: 'dsh-traex-acp-provider/v1',
31
31
  instruction: tools.length === 0
32
32
  ? 'Continue the conversation as the assistant. Return only the next assistant response. Do not modify files or execute commands.'
33
- : `Continue the conversation as the assistant. Do not modify files or execute commands inside TraeX. Tools can only be used through DSH. If the task requires a tool, request the required tool now instead of merely describing a plan, claiming future work, asking for confirmation, or stopping early. For a tool request, return exactly one JSON object matching constraints.tools.responseFormat, with no Markdown or other text. When no tool is needed and the task is complete, return only the final assistant response as normal text.`,
33
+ : `Continue the conversation as the assistant. Do not modify files or execute commands inside TraeX and do not invoke TraeX-native tools; they are unavailable in this backend session. Tools can only be used through DSH. If the task requires a tool, request the required tool now instead of merely describing a plan, claiming future work, asking for confirmation, or stopping early. For a tool request, return exactly one JSON object matching constraints.tools.responseFormat. The first output character must be { and the last must be }; do not add a preamble, progress update, explanation, Markdown fence, or any other text before or after the object. When no tool is needed and the task is complete, return only the final assistant response as normal text.`,
34
34
  system: options.system ?? null,
35
35
  conversation: options.messages.map(serializeMessage),
36
36
  constraints: {
@@ -54,7 +54,8 @@ export function buildPrompt(options, maxPromptBytes) {
54
54
  const prompt = `Act as a text model backend for DeepSeek Harness. The JSON request follows.\n${JSON.stringify(request)}`;
55
55
  const size = Buffer.byteLength(prompt, 'utf8');
56
56
  if (size > maxPromptBytes) {
57
- throw new Error(`serialized DSH request is ${size} bytes; configured limit is ${maxPromptBytes}`);
57
+ throw new Error(`serialized DSH request is ${size} bytes; configured limit is ${maxPromptBytes}. `
58
+ + 'Raise `maxPromptBytes` for this plugin if the request is legitimately this large.', { cause: 'prompt-limit' });
58
59
  }
59
60
  return prompt;
60
61
  }
@@ -66,13 +67,10 @@ function jsonPayload(value) {
66
67
  const fenced = /^```(?:json)?\s*\n([\s\S]*?)\n```$/i.exec(trimmed);
67
68
  return fenced?.[1]?.trim() ?? trimmed;
68
69
  }
69
- /** Decode the model-hidden tool envelope; ordinary assistant text returns `undefined`. */
70
- export function parseDelegatedToolCalls(response, tools) {
71
- if (tools.length === 0)
72
- return undefined;
70
+ function parsedToolEnvelope(candidate, tools) {
73
71
  let value;
74
72
  try {
75
- value = JSON.parse(jsonPayload(response));
73
+ value = JSON.parse(jsonPayload(candidate));
76
74
  }
77
75
  catch {
78
76
  return undefined;
@@ -90,4 +88,48 @@ export function parseDelegatedToolCalls(response, tools) {
90
88
  return { name: call.name, arguments: JSON.stringify(call.arguments) };
91
89
  });
92
90
  }
91
+ function embeddedToolEnvelope(response) {
92
+ let searchFrom = 0;
93
+ while (searchFrom < response.length) {
94
+ const protocolIndex = response.indexOf(`"protocol"`, searchFrom);
95
+ if (protocolIndex < 0)
96
+ return undefined;
97
+ const start = response.lastIndexOf('{', protocolIndex);
98
+ if (start < 0)
99
+ return undefined;
100
+ let depth = 0;
101
+ let quoted = false;
102
+ let escaped = false;
103
+ for (let index = start; index < response.length; index += 1) {
104
+ const character = response[index];
105
+ if (quoted) {
106
+ if (escaped)
107
+ escaped = false;
108
+ else if (character === '\\')
109
+ escaped = true;
110
+ else if (character === '"')
111
+ quoted = false;
112
+ continue;
113
+ }
114
+ if (character === '"')
115
+ quoted = true;
116
+ else if (character === '{')
117
+ depth += 1;
118
+ else if (character === '}' && --depth === 0)
119
+ return response.slice(start, index + 1);
120
+ }
121
+ searchFrom = protocolIndex + 10;
122
+ }
123
+ return undefined;
124
+ }
125
+ /** Decode the model-hidden tool envelope; ordinary assistant text returns `undefined`. */
126
+ export function parseDelegatedToolCalls(response, tools) {
127
+ if (tools.length === 0)
128
+ return undefined;
129
+ const exact = parsedToolEnvelope(response, tools);
130
+ if (exact !== undefined)
131
+ return exact;
132
+ const embedded = embeddedToolEnvelope(response);
133
+ return embedded === undefined ? undefined : parsedToolEnvelope(embedded, tools);
134
+ }
93
135
  //# sourceMappingURL=prompt.js.map
package/lib/prompt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type GenerateOptions } from '@deepseek-ai/dsh-llm';
2
+ import type { AgentLoopRequestAttestor } from '@dsh-enhanced/llm-route-capabilities';
3
+ export interface LiveSessionCwd {
4
+ readonly id: NonNullable<GenerateOptions['sessionId']>;
5
+ readonly header: {
6
+ readonly cwd?: string;
7
+ };
8
+ }
9
+ export interface LiveSessionLookup {
10
+ get(id: NonNullable<GenerateOptions['sessionId']>): LiveSessionCwd | undefined;
11
+ }
12
+ export declare class TrustedSessionCwdError extends Error {
13
+ constructor();
14
+ }
15
+ /**
16
+ * Resolves the only cwd a local ACP process may receive for this request.
17
+ * A same-module marker or the Host-owned exact live-agent proof is mandatory;
18
+ * copied request fields or a persisted/stale session id cannot select a path.
19
+ */
20
+ export declare function resolveTrustedSessionCwd(input: {
21
+ request: GenerateOptions;
22
+ configuredCwd: string;
23
+ sessions: LiveSessionLookup | undefined;
24
+ attestor?: AgentLoopRequestAttestor;
25
+ }): string;
26
+ //# sourceMappingURL=session-cwd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cwd.d.ts","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAEpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/E;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAIhD;AAWD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,eAAe,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,EAAE,wBAAwB,CAAA;CACpC,GAAG,MAAM,CAeT"}
@@ -0,0 +1,42 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { isAbsolute } from 'node:path';
3
+ import { isAgentLoopRequest } from '@deepseek-ai/dsh-llm';
4
+ export class TrustedSessionCwdError extends Error {
5
+ constructor() {
6
+ super('local provider requires a matching live loop session and canonical cwd');
7
+ }
8
+ }
9
+ function canonicalDirectory(path) {
10
+ if (!isAbsolute(path))
11
+ throw new TrustedSessionCwdError();
12
+ try {
13
+ return realpathSync.native(path);
14
+ }
15
+ catch {
16
+ throw new TrustedSessionCwdError();
17
+ }
18
+ }
19
+ /**
20
+ * Resolves the only cwd a local ACP process may receive for this request.
21
+ * A same-module marker or the Host-owned exact live-agent proof is mandatory;
22
+ * copied request fields or a persisted/stale session id cannot select a path.
23
+ */
24
+ export function resolveTrustedSessionCwd(input) {
25
+ const sessionId = input.request.sessionId;
26
+ if (sessionId === undefined || Object.hasOwn(input.request, 'purpose') || !Object.isFrozen(input.request)) {
27
+ throw new TrustedSessionCwdError();
28
+ }
29
+ const session = input.sessions?.get(sessionId);
30
+ if (session === undefined || session.id !== sessionId || typeof session.header.cwd !== 'string') {
31
+ throw new TrustedSessionCwdError();
32
+ }
33
+ const loopOwned = isAgentLoopRequest(input.request) || input.attestor?.claim(input.request, session) === true;
34
+ if (!loopOwned)
35
+ throw new TrustedSessionCwdError();
36
+ const configuredCwd = canonicalDirectory(input.configuredCwd);
37
+ const sessionCwd = canonicalDirectory(session.header.cwd);
38
+ if (configuredCwd !== sessionCwd)
39
+ throw new TrustedSessionCwdError();
40
+ return sessionCwd;
41
+ }
42
+ //# sourceMappingURL=session-cwd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-cwd.js","sourceRoot":"","sources":["../src/session-cwd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAA;AAY/E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,wEAAwE,CAAC,CAAA;IACjF,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAKxC;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;IACzC,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1G,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChG,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7G,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzD,IAAI,aAAa,KAAK,UAAU;QAAE,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpE,OAAO,UAAU,CAAA;AACnB,CAAC"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.1.2";
1
+ export declare const version = "0.1.4";
2
2
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.1.2';
1
+ export const version = '0.1.4';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dsh-enhanced/traex-acp-provider",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Use a local TraeX coding agent as a DeepSeek Harness model provider over ACP.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -47,15 +47,34 @@
47
47
  "dependencies": {
48
48
  "@agentclientprotocol/sdk": "0.25.1",
49
49
  "@deepseek-ai/schemastery": "3.18.1",
50
- "zod": "4.4.3"
50
+ "zod": "4.4.3",
51
+ "@dsh-enhanced/llm-route-capabilities": "0.1.4"
51
52
  },
52
53
  "peerDependencies": {
53
54
  "@deepseek-ai/cordis": "^4.0.1",
54
- "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6 <0.2.0"
55
+ "@deepseek-ai/dsh-agent": ">=0.1.0-rc.8 <0.2.0",
56
+ "@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0",
57
+ "@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@deepseek-ai/cordis": {
61
+ "optional": true
62
+ },
63
+ "@deepseek-ai/dsh-agent": {
64
+ "optional": true
65
+ },
66
+ "@deepseek-ai/dsh-llm": {
67
+ "optional": true
68
+ },
69
+ "@deepseek-ai/dsh-session": {
70
+ "optional": true
71
+ }
55
72
  },
56
73
  "devDependencies": {
57
74
  "@deepseek-ai/cordis": "4.0.1",
58
- "@deepseek-ai/dsh-llm": "0.1.0-rc.6",
75
+ "@deepseek-ai/dsh-agent": "0.1.0-rc.8",
76
+ "@deepseek-ai/dsh-llm": "0.1.0-rc.8",
77
+ "@deepseek-ai/dsh-session": "0.1.0-rc.8",
59
78
  "@types/node": "22.20.0",
60
79
  "typescript": "6.0.3",
61
80
  "vitest": "4.1.8"