@openma/deepseek-harness-acp 0.4.27 → 0.4.28

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/cordis.patch.yml CHANGED
@@ -20,6 +20,14 @@
20
20
  - id: hmr
21
21
  disabled: true
22
22
 
23
+ # Newer dsh versions seed the acp profile with their own ACP transport.
24
+ # This bundle owns stdout and must replace that transport.
25
+ - id: acp
26
+ disabled: true
27
+
28
+ - id: acp-app-startup
29
+ disabled: true
30
+
23
31
  # Model-facing tool rows move off the host plane and into each agent preset's
24
32
  # own composition (standard/code/minimal/cordis ship complete agent.cordis.yml
25
33
  # files) — the same split the web-app bundle makes, and what gives "minimal"
package/dist/bridge.js CHANGED
@@ -1911,26 +1911,27 @@ function installAcpUserQuestionProvider(service, options) {
1911
1911
  let router = routers.get(owner);
1912
1912
  if (router === void 0) {
1913
1913
  const routes = [];
1914
- const disposeProvider = service.registerProvider({
1915
- async ask(request) {
1916
- for (let index = routes.length - 1; index >= 0; index -= 1) {
1917
- const route = routes[index];
1918
- const sessionId = route?.sessionIdForRequest(request);
1919
- if (route === void 0 || sessionId === void 0) continue;
1920
- if (!route.formSupported()) {
1921
- throw new UserQuestionError(
1922
- "the ACP client does not support form elicitation",
1923
- "CLIENT_UNSUPPORTED"
1924
- );
1925
- }
1926
- return askUserQuestionsOverAcp(request, sessionId, route.create);
1914
+ const ask = async (request, next) => {
1915
+ for (let index = routes.length - 1; index >= 0; index -= 1) {
1916
+ const route = routes[index];
1917
+ const sessionId = route?.sessionIdForRequest(request);
1918
+ if (route === void 0 || sessionId === void 0) continue;
1919
+ if (!route.formSupported()) {
1920
+ throw new UserQuestionError(
1921
+ "the ACP client does not support form elicitation",
1922
+ "CLIENT_UNSUPPORTED"
1923
+ );
1927
1924
  }
1928
- throw new UserQuestionError(
1929
- "ACP user interaction requires a live root session",
1930
- "ASK_MISSING_AGENT"
1931
- );
1925
+ return askUserQuestionsOverAcp(request, sessionId, route.create);
1932
1926
  }
1933
- });
1927
+ if (next !== void 0) return next();
1928
+ throw new UserQuestionError(
1929
+ "ACP user interaction requires a live root session",
1930
+ "ASK_MISSING_AGENT"
1931
+ );
1932
+ };
1933
+ const legacy = service;
1934
+ const disposeProvider = typeof legacy.registerProvider === "function" ? legacy.registerProvider({ ask }) : service.ctx.root.on("user-questions/request", ask);
1934
1935
  router = { routes, disposeProvider };
1935
1936
  routers.set(owner, router);
1936
1937
  }
@@ -1973,6 +1974,9 @@ function presetDisplayName(preset) {
1973
1974
  // src/bridge/index.ts
1974
1975
  var name3 = "acp-bridge";
1975
1976
  var inject3 = ["agents", "credentials", "llm", "agentDefaultModel", "sessionPersistence", "approval", "permissionPresets", "commands", "agentPresets", "skills", "subagents", "userQuestions"];
1977
+ function readSessionEvents(session) {
1978
+ return session.snapshotEvents?.() ?? session.events ?? [];
1979
+ }
1976
1980
  function invalidParams(detail) {
1977
1981
  return RequestError.invalidParams(void 0, detail);
1978
1982
  }
@@ -2354,8 +2358,7 @@ async function apply3(ctx, config = {}) {
2354
2358
  );
2355
2359
  if (presetId !== void 0) record.preset = presetId;
2356
2360
  {
2357
- const permission = permissionService();
2358
- const storedMode = permission.current(events);
2361
+ const storedMode = currentPermission(record);
2359
2362
  if (storedMode !== void 0) record.modeId = storedMode;
2360
2363
  for (let index = events.length - 1; index >= 0; index -= 1) {
2361
2364
  const event = events[index];
@@ -2550,6 +2553,10 @@ async function apply3(ctx, config = {}) {
2550
2553
  record.approvals = policy;
2551
2554
  };
2552
2555
  const permissionService = () => permissionPresets;
2556
+ const currentPermission = (record) => {
2557
+ const session = record.agent.session;
2558
+ return permissionService().current(typeof session.snapshotEvents === "function" ? session : readSessionEvents(session));
2559
+ };
2553
2560
  const permissionPresentation = (id) => {
2554
2561
  const spec = permissionService().resolve(id);
2555
2562
  const stock = MODE_LABELS[id];
@@ -2635,7 +2642,7 @@ async function apply3(ctx, config = {}) {
2635
2642
  });
2636
2643
  }
2637
2644
  if (commandRuntime.list(record.agent).some((command) => command.name === "plan")) {
2638
- const active = [...record.agent.session.events].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2645
+ const active = [...readSessionEvents(record.agent.session)].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2639
2646
  result.push({
2640
2647
  type: "select",
2641
2648
  id: "collaboration_mode",
@@ -2803,10 +2810,8 @@ async function apply3(ctx, config = {}) {
2803
2810
  });
2804
2811
  };
2805
2812
  const syncPermissionState = (record, sessionId) => {
2806
- const events = record.agent.session.events;
2807
- if (events === void 0) return;
2808
- const permission = permissionService();
2809
- const storedMode = permission.current(events);
2813
+ const events = readSessionEvents(record.agent.session);
2814
+ const storedMode = currentPermission(record);
2810
2815
  for (let index = events.length - 1; index >= 0; index -= 1) {
2811
2816
  const event = events[index];
2812
2817
  if (event?.type === "approval/policy") {
package/dist/plugin.js CHANGED
@@ -1913,26 +1913,27 @@ function installAcpUserQuestionProvider(service, options) {
1913
1913
  let router = routers.get(owner);
1914
1914
  if (router === void 0) {
1915
1915
  const routes = [];
1916
- const disposeProvider = service.registerProvider({
1917
- async ask(request) {
1918
- for (let index = routes.length - 1; index >= 0; index -= 1) {
1919
- const route = routes[index];
1920
- const sessionId = route?.sessionIdForRequest(request);
1921
- if (route === void 0 || sessionId === void 0) continue;
1922
- if (!route.formSupported()) {
1923
- throw new UserQuestionError(
1924
- "the ACP client does not support form elicitation",
1925
- "CLIENT_UNSUPPORTED"
1926
- );
1927
- }
1928
- return askUserQuestionsOverAcp(request, sessionId, route.create);
1916
+ const ask = async (request, next) => {
1917
+ for (let index = routes.length - 1; index >= 0; index -= 1) {
1918
+ const route = routes[index];
1919
+ const sessionId = route?.sessionIdForRequest(request);
1920
+ if (route === void 0 || sessionId === void 0) continue;
1921
+ if (!route.formSupported()) {
1922
+ throw new UserQuestionError(
1923
+ "the ACP client does not support form elicitation",
1924
+ "CLIENT_UNSUPPORTED"
1925
+ );
1929
1926
  }
1930
- throw new UserQuestionError(
1931
- "ACP user interaction requires a live root session",
1932
- "ASK_MISSING_AGENT"
1933
- );
1927
+ return askUserQuestionsOverAcp(request, sessionId, route.create);
1934
1928
  }
1935
- });
1929
+ if (next !== void 0) return next();
1930
+ throw new UserQuestionError(
1931
+ "ACP user interaction requires a live root session",
1932
+ "ASK_MISSING_AGENT"
1933
+ );
1934
+ };
1935
+ const legacy = service;
1936
+ const disposeProvider = typeof legacy.registerProvider === "function" ? legacy.registerProvider({ ask }) : service.ctx.root.on("user-questions/request", ask);
1936
1937
  router = { routes, disposeProvider };
1937
1938
  routers.set(owner, router);
1938
1939
  }
@@ -1975,6 +1976,9 @@ function presetDisplayName(preset) {
1975
1976
  // src/bridge/index.ts
1976
1977
  var name3 = "acp-bridge";
1977
1978
  var inject3 = ["agents", "credentials", "llm", "agentDefaultModel", "sessionPersistence", "approval", "permissionPresets", "commands", "agentPresets", "skills", "subagents", "userQuestions"];
1979
+ function readSessionEvents(session) {
1980
+ return session.snapshotEvents?.() ?? session.events ?? [];
1981
+ }
1978
1982
  function invalidParams(detail) {
1979
1983
  return RequestError.invalidParams(void 0, detail);
1980
1984
  }
@@ -2356,8 +2360,7 @@ async function apply3(ctx, config = {}) {
2356
2360
  );
2357
2361
  if (presetId !== void 0) record.preset = presetId;
2358
2362
  {
2359
- const permission = permissionService();
2360
- const storedMode = permission.current(events);
2363
+ const storedMode = currentPermission(record);
2361
2364
  if (storedMode !== void 0) record.modeId = storedMode;
2362
2365
  for (let index = events.length - 1; index >= 0; index -= 1) {
2363
2366
  const event = events[index];
@@ -2552,6 +2555,10 @@ async function apply3(ctx, config = {}) {
2552
2555
  record.approvals = policy;
2553
2556
  };
2554
2557
  const permissionService = () => permissionPresets;
2558
+ const currentPermission = (record) => {
2559
+ const session = record.agent.session;
2560
+ return permissionService().current(typeof session.snapshotEvents === "function" ? session : readSessionEvents(session));
2561
+ };
2555
2562
  const permissionPresentation = (id) => {
2556
2563
  const spec = permissionService().resolve(id);
2557
2564
  const stock = MODE_LABELS[id];
@@ -2637,7 +2644,7 @@ async function apply3(ctx, config = {}) {
2637
2644
  });
2638
2645
  }
2639
2646
  if (commandRuntime.list(record.agent).some((command) => command.name === "plan")) {
2640
- const active = [...record.agent.session.events].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2647
+ const active = [...readSessionEvents(record.agent.session)].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2641
2648
  result.push({
2642
2649
  type: "select",
2643
2650
  id: "collaboration_mode",
@@ -2805,10 +2812,8 @@ async function apply3(ctx, config = {}) {
2805
2812
  });
2806
2813
  };
2807
2814
  const syncPermissionState = (record, sessionId) => {
2808
- const events = record.agent.session.events;
2809
- if (events === void 0) return;
2810
- const permission = permissionService();
2811
- const storedMode = permission.current(events);
2815
+ const events = readSessionEvents(record.agent.session);
2816
+ const storedMode = currentPermission(record);
2812
2817
  for (let index = events.length - 1; index >= 0; index -= 1) {
2813
2818
  const event = events[index];
2814
2819
  if (event?.type === "approval/policy") {
@@ -3569,39 +3574,59 @@ function resolvedHostModule(ctx, specifier) {
3569
3574
  for (const anchor of anchors) {
3570
3575
  try {
3571
3576
  return pathToFileURL(createRequire2(anchor).resolve(specifier)).href;
3572
- } catch {
3577
+ } catch (error) {
3578
+ if (error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED") return specifier;
3573
3579
  }
3574
3580
  }
3575
3581
  return specifier;
3576
3582
  }
3577
- function shippedPresetRoot(ctx) {
3583
+ function shippedPresetRoots(ctx) {
3578
3584
  const anchors = [ctx.baseUrl, import.meta.url].filter((value) => typeof value === "string");
3579
3585
  for (const anchor of anchors) {
3580
3586
  try {
3581
3587
  const manifest = createRequire2(anchor).resolve("@deepseek-ai/dsh/package.json");
3582
3588
  const root = join(dirname(manifest), "config", "agent-presets");
3583
- if (existsSync(root)) return root;
3589
+ if (existsSync(root)) return [{ path: root, trust: "system" }];
3584
3590
  } catch {
3585
3591
  }
3586
3592
  }
3587
- throw new Error("dsh-acp-plugin: cannot resolve the dsh shipped agent presets");
3593
+ for (const anchor of anchors) {
3594
+ try {
3595
+ const manifest = createRequire2(anchor).resolve("@deepseek-ai/dsh-agent-presets/package.json");
3596
+ if (existsSync(join(dirname(manifest), "presets"))) return [];
3597
+ } catch {
3598
+ }
3599
+ }
3600
+ throw new Error(
3601
+ "dsh-acp-plugin: cannot resolve the dsh shipped agent presets (looked for @deepseek-ai/dsh/config/agent-presets and a self-shipping @deepseek-ai/dsh-agent-presets)"
3602
+ );
3588
3603
  }
3589
3604
  async function mountService(ctx, service, specifier, config) {
3590
3605
  if (ctx.get(service) !== void 0) return;
3606
+ const resolved = typeof config === "function" ? config() : config;
3591
3607
  const exports = await ctx.loader.import(resolvedHostModule(ctx, specifier));
3592
3608
  const plugin = ctx.loader.unwrapExports(exports);
3593
- await ctx.plugin(plugin, config);
3609
+ await ctx.plugin(plugin, resolved);
3594
3610
  if (ctx.get(service) === void 0) {
3595
3611
  throw new Error(`dsh-acp-plugin: ${specifier} did not provide ${service}`);
3596
3612
  }
3597
3613
  }
3598
3614
  async function apply5(ctx, config = {}) {
3599
3615
  if (ctx.get("acpServer") !== void 0) return;
3600
- await mountService(ctx, "agentPresets", "@deepseek-ai/dsh-agent-presets", {
3601
- default: "standard",
3602
- roots: [{ path: shippedPresetRoot(ctx), trust: "system" }]
3616
+ await mountService(ctx, "agentPresets", "@deepseek-ai/dsh-agent-presets", () => {
3617
+ const roots = shippedPresetRoots(ctx);
3618
+ return {
3619
+ default: "standard",
3620
+ // dsh 0.1.2's roster self-ships its presets (includeShippedRoot);
3621
+ // passing the legacy root there would duplicate the roster.
3622
+ ...roots.length > 0 ? { roots } : {}
3623
+ };
3603
3624
  });
3604
3625
  await mountService(ctx, "dynamicCordisRunner", "@deepseek-ai/dsh-cordis-host-runner");
3626
+ const modelSettings = "@deepseek-ai/dsh-tool-subagent/model-selection-settings";
3627
+ if (ctx.get("subagentModelSelection") === void 0 && resolvedHostModule(ctx, modelSettings) !== modelSettings) {
3628
+ await mountService(ctx, "subagentModelSelection", modelSettings);
3629
+ }
3605
3630
  await ctx.plugin(server_exports, config);
3606
3631
  if (ctx.get("acpServer") === void 0) {
3607
3632
  throw new Error("dsh-acp-plugin: ACP server did not activate");
package/dist/server.js CHANGED
@@ -1907,26 +1907,27 @@ function installAcpUserQuestionProvider(service, options) {
1907
1907
  let router = routers.get(owner);
1908
1908
  if (router === void 0) {
1909
1909
  const routes = [];
1910
- const disposeProvider = service.registerProvider({
1911
- async ask(request) {
1912
- for (let index = routes.length - 1; index >= 0; index -= 1) {
1913
- const route = routes[index];
1914
- const sessionId = route?.sessionIdForRequest(request);
1915
- if (route === void 0 || sessionId === void 0) continue;
1916
- if (!route.formSupported()) {
1917
- throw new UserQuestionError(
1918
- "the ACP client does not support form elicitation",
1919
- "CLIENT_UNSUPPORTED"
1920
- );
1921
- }
1922
- return askUserQuestionsOverAcp(request, sessionId, route.create);
1910
+ const ask = async (request, next) => {
1911
+ for (let index = routes.length - 1; index >= 0; index -= 1) {
1912
+ const route = routes[index];
1913
+ const sessionId = route?.sessionIdForRequest(request);
1914
+ if (route === void 0 || sessionId === void 0) continue;
1915
+ if (!route.formSupported()) {
1916
+ throw new UserQuestionError(
1917
+ "the ACP client does not support form elicitation",
1918
+ "CLIENT_UNSUPPORTED"
1919
+ );
1923
1920
  }
1924
- throw new UserQuestionError(
1925
- "ACP user interaction requires a live root session",
1926
- "ASK_MISSING_AGENT"
1927
- );
1921
+ return askUserQuestionsOverAcp(request, sessionId, route.create);
1928
1922
  }
1929
- });
1923
+ if (next !== void 0) return next();
1924
+ throw new UserQuestionError(
1925
+ "ACP user interaction requires a live root session",
1926
+ "ASK_MISSING_AGENT"
1927
+ );
1928
+ };
1929
+ const legacy = service;
1930
+ const disposeProvider = typeof legacy.registerProvider === "function" ? legacy.registerProvider({ ask }) : service.ctx.root.on("user-questions/request", ask);
1930
1931
  router = { routes, disposeProvider };
1931
1932
  routers.set(owner, router);
1932
1933
  }
@@ -1969,6 +1970,9 @@ function presetDisplayName(preset) {
1969
1970
  // src/bridge/index.ts
1970
1971
  var name3 = "acp-bridge";
1971
1972
  var inject3 = ["agents", "credentials", "llm", "agentDefaultModel", "sessionPersistence", "approval", "permissionPresets", "commands", "agentPresets", "skills", "subagents", "userQuestions"];
1973
+ function readSessionEvents(session) {
1974
+ return session.snapshotEvents?.() ?? session.events ?? [];
1975
+ }
1972
1976
  function invalidParams(detail) {
1973
1977
  return RequestError.invalidParams(void 0, detail);
1974
1978
  }
@@ -2350,8 +2354,7 @@ async function apply3(ctx, config = {}) {
2350
2354
  );
2351
2355
  if (presetId !== void 0) record.preset = presetId;
2352
2356
  {
2353
- const permission = permissionService();
2354
- const storedMode = permission.current(events);
2357
+ const storedMode = currentPermission(record);
2355
2358
  if (storedMode !== void 0) record.modeId = storedMode;
2356
2359
  for (let index = events.length - 1; index >= 0; index -= 1) {
2357
2360
  const event = events[index];
@@ -2546,6 +2549,10 @@ async function apply3(ctx, config = {}) {
2546
2549
  record.approvals = policy;
2547
2550
  };
2548
2551
  const permissionService = () => permissionPresets;
2552
+ const currentPermission = (record) => {
2553
+ const session = record.agent.session;
2554
+ return permissionService().current(typeof session.snapshotEvents === "function" ? session : readSessionEvents(session));
2555
+ };
2549
2556
  const permissionPresentation = (id) => {
2550
2557
  const spec = permissionService().resolve(id);
2551
2558
  const stock = MODE_LABELS[id];
@@ -2631,7 +2638,7 @@ async function apply3(ctx, config = {}) {
2631
2638
  });
2632
2639
  }
2633
2640
  if (commandRuntime.list(record.agent).some((command) => command.name === "plan")) {
2634
- const active = [...record.agent.session.events].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2641
+ const active = [...readSessionEvents(record.agent.session)].reverse().map((event) => event).find((event) => event.type === "plan/mode")?.data?.["active"] === true;
2635
2642
  result.push({
2636
2643
  type: "select",
2637
2644
  id: "collaboration_mode",
@@ -2799,10 +2806,8 @@ async function apply3(ctx, config = {}) {
2799
2806
  });
2800
2807
  };
2801
2808
  const syncPermissionState = (record, sessionId) => {
2802
- const events = record.agent.session.events;
2803
- if (events === void 0) return;
2804
- const permission = permissionService();
2805
- const storedMode = permission.current(events);
2809
+ const events = readSessionEvents(record.agent.session);
2810
+ const storedMode = currentPermission(record);
2806
2811
  for (let index = events.length - 1; index >= 0; index -= 1) {
2807
2812
  const event = events[index];
2808
2813
  if (event?.type === "approval/policy") {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.4.27",
6
+ "version": "0.4.28",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/openma-ai/deepseek-harness-acp.git"
@@ -53,62 +53,61 @@
53
53
  "devDependencies": {
54
54
  "@deepseek-ai/cordis": "^4.0.1",
55
55
  "@deepseek-ai/cordis-plugin-timer": "^1.1.3",
56
- "@deepseek-ai/dsh": "0.1.1-rc.2",
57
- "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
58
- "@deepseek-ai/dsh-agent-instructions": "0.1.1-rc.2",
59
- "@deepseek-ai/dsh-agent-loop": "0.1.1-rc.2",
60
- "@deepseek-ai/dsh-agent-spine-demo": "0.1.1-rc.2",
61
- "@deepseek-ai/dsh-anonymous-user-id": "0.1.1-rc.2",
62
- "@deepseek-ai/dsh-attachment": "0.1.1-rc.2",
63
- "@deepseek-ai/dsh-bash-sandbox": "0.1.1-rc.2",
64
- "@deepseek-ai/dsh-brand": "0.1.1-rc.2",
65
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
66
- "@deepseek-ai/dsh-compaction": "0.1.1-rc.2",
67
- "@deepseek-ai/dsh-compaction-basic": "0.1.1-rc.2",
68
- "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.1-rc.2",
69
- "@deepseek-ai/dsh-credentials": "0.1.1-rc.2",
70
- "@deepseek-ai/dsh-credentials-local": "0.1.1-rc.2",
71
- "@deepseek-ai/dsh-fs": "0.1.1-rc.2",
72
- "@deepseek-ai/dsh-fs-local": "0.1.1-rc.2",
73
- "@deepseek-ai/dsh-fs-observation-policy": "0.1.1-rc.2",
74
- "@deepseek-ai/dsh-fs-sandbox": "0.1.1-rc.2",
75
- "@deepseek-ai/dsh-goal": "0.1.1-rc.2",
76
- "@deepseek-ai/dsh-goal-round-driver": "0.1.1-rc.2",
77
- "@deepseek-ai/dsh-home-paths": "0.1.1-rc.2",
78
- "@deepseek-ai/dsh-invariants": "0.1.1-rc.2",
79
- "@deepseek-ai/dsh-jobs-local": "0.1.1-rc.2",
80
- "@deepseek-ai/dsh-launch-environment": "0.1.1-rc.2",
81
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
82
- "@deepseek-ai/dsh-llm-deepseek": "0.1.1-rc.2",
83
- "@deepseek-ai/dsh-llm-retry": "0.1.1-rc.2",
84
- "@deepseek-ai/dsh-sandbox": "0.1.1-rc.2",
85
- "@deepseek-ai/dsh-sandbox-local": "0.1.1-rc.2",
86
- "@deepseek-ai/dsh-sandbox-policy": "0.1.1-rc.2",
87
- "@deepseek-ai/dsh-scope": "0.1.1-rc.2",
88
- "@deepseek-ai/dsh-session": "0.1.1-rc.2",
89
- "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.1-rc.2",
90
- "@deepseek-ai/dsh-session-persistence": "0.1.1-rc.2",
91
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.1-rc.2",
92
- "@deepseek-ai/dsh-session-projection": "0.1.1-rc.2",
93
- "@deepseek-ai/dsh-session-title": "0.1.1-rc.2",
94
- "@deepseek-ai/dsh-settings": "0.1.1-rc.2",
95
- "@deepseek-ai/dsh-shell": "0.1.1-rc.2",
96
- "@deepseek-ai/dsh-shell-env": "0.1.1-rc.2",
97
- "@deepseek-ai/dsh-skill": "0.1.1-rc.2",
98
- "@deepseek-ai/dsh-skill-filesystem": "0.1.1-rc.2",
99
- "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
100
- "@deepseek-ai/dsh-subprocess-local": "0.1.1-rc.2",
101
- "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
102
- "@deepseek-ai/dsh-timeout": "0.1.1-rc.2",
103
- "@deepseek-ai/dsh-token-meter": "0.1.1-rc.2",
104
- "@deepseek-ai/dsh-tool-bash": "0.1.1-rc.2",
105
- "@deepseek-ai/dsh-tool-fs": "0.1.1-rc.2",
106
- "@deepseek-ai/dsh-tool-goal": "0.1.1-rc.2",
107
- "@deepseek-ai/dsh-tool-jobs": "0.1.1-rc.2",
108
- "@deepseek-ai/dsh-tool-skill": "0.1.1-rc.2",
109
- "@deepseek-ai/dsh-tool-todo": "0.1.1-rc.2",
110
- "@deepseek-ai/dsh-tools": "0.1.1-rc.2",
111
- "@deepseek-ai/dsh-user-approval": "0.1.1-rc.2",
56
+ "@deepseek-ai/dsh": "0.1.2-rc.1",
57
+ "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
58
+ "@deepseek-ai/dsh-agent-instructions": "0.1.2-rc.1",
59
+ "@deepseek-ai/dsh-agent-loop": "0.1.2-rc.1",
60
+ "@deepseek-ai/dsh-anonymous-user-id": "0.1.2-rc.1",
61
+ "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
62
+ "@deepseek-ai/dsh-bash-sandbox": "0.1.2-rc.1",
63
+ "@deepseek-ai/dsh-brand": "0.1.2-rc.1",
64
+ "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
65
+ "@deepseek-ai/dsh-compaction": "0.1.2-rc.1",
66
+ "@deepseek-ai/dsh-compaction-basic": "0.1.2-rc.1",
67
+ "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.2-rc.1",
68
+ "@deepseek-ai/dsh-credentials": "0.1.2-rc.1",
69
+ "@deepseek-ai/dsh-credentials-local": "0.1.2-rc.1",
70
+ "@deepseek-ai/dsh-fs": "0.1.2-rc.1",
71
+ "@deepseek-ai/dsh-fs-local": "0.1.2-rc.1",
72
+ "@deepseek-ai/dsh-fs-observation-policy": "0.1.2-rc.1",
73
+ "@deepseek-ai/dsh-fs-sandbox": "0.1.2-rc.1",
74
+ "@deepseek-ai/dsh-goal": "0.1.2-rc.1",
75
+ "@deepseek-ai/dsh-goal-round-driver": "0.1.2-rc.1",
76
+ "@deepseek-ai/dsh-home-paths": "0.1.2-rc.1",
77
+ "@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
78
+ "@deepseek-ai/dsh-jobs-local": "0.1.2-rc.1",
79
+ "@deepseek-ai/dsh-launch-environment": "0.1.2-rc.1",
80
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
81
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.2-rc.1",
82
+ "@deepseek-ai/dsh-llm-retry": "0.1.2-rc.1",
83
+ "@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
84
+ "@deepseek-ai/dsh-sandbox-local": "0.1.2-rc.1",
85
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.2-rc.1",
86
+ "@deepseek-ai/dsh-scope": "0.1.2-rc.1",
87
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1",
88
+ "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.2-rc.1",
89
+ "@deepseek-ai/dsh-session-persistence": "0.1.2-rc.1",
90
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.2-rc.1",
91
+ "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
92
+ "@deepseek-ai/dsh-session-title": "0.1.2-rc.1",
93
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
94
+ "@deepseek-ai/dsh-shell": "0.1.2-rc.1",
95
+ "@deepseek-ai/dsh-shell-env": "0.1.2-rc.1",
96
+ "@deepseek-ai/dsh-skill": "0.1.2-rc.1",
97
+ "@deepseek-ai/dsh-skill-filesystem": "0.1.2-rc.1",
98
+ "@deepseek-ai/dsh-subprocess": "0.1.2-rc.1",
99
+ "@deepseek-ai/dsh-subprocess-local": "0.1.2-rc.1",
100
+ "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
101
+ "@deepseek-ai/dsh-timeout": "0.1.2-rc.1",
102
+ "@deepseek-ai/dsh-token-meter": "0.1.2-rc.1",
103
+ "@deepseek-ai/dsh-tool-bash": "0.1.2-rc.1",
104
+ "@deepseek-ai/dsh-tool-fs": "0.1.2-rc.1",
105
+ "@deepseek-ai/dsh-tool-goal": "0.1.2-rc.1",
106
+ "@deepseek-ai/dsh-tool-jobs": "0.1.2-rc.1",
107
+ "@deepseek-ai/dsh-tool-skill": "0.1.2-rc.1",
108
+ "@deepseek-ai/dsh-tool-todo": "0.1.2-rc.1",
109
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
110
+ "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
112
111
  "@types/node": "^26.1.0",
113
112
  "esbuild": "^0.28.1",
114
113
  "pnpm": "11.22.0",
@@ -145,7 +144,7 @@
145
144
  }
146
145
  },
147
146
  "dshAcp": {
148
- "standaloneDsh": "0.1.1-rc.2",
147
+ "standaloneDsh": "0.1.2-rc.1",
149
148
  "hostCompatibility": {
150
149
  "cordisProtocol": 0,
151
150
  "policy": "capability-negotiated"
Binary file
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "archive": "dsh-runtime.tgz",
3
- "dsh": "0.1.1-rc.2",
4
- "sha256": "a144a57cdb63bd5bc0152cc392534fd14fdf947922e68cda16d8f1d0243356e7"
3
+ "dsh": "0.1.2-rc.1",
4
+ "sha256": "3c6bc3b858fddfe1b8f5d547721977699ce69e68feca19620a1df9dcde642a1b"
5
5
  }