@desplega.ai/agent-swarm 1.73.5 → 1.74.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Agent Swarm API",
5
- "version": "1.73.5",
5
+ "version": "1.74.1",
6
6
  "description": "Multi-agent orchestration API for Claude Code, Codex, and Gemini CLI. Enables task distribution, agent communication, and service discovery.\n\nMCP tools are documented separately in [MCP.md](./MCP.md)."
7
7
  },
8
8
  "servers": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desplega.ai/agent-swarm",
3
- "version": "1.73.5",
3
+ "version": "1.74.1",
4
4
  "description": "Multi-agent orchestration for Claude Code, Codex, Gemini CLI, and other AI coding assistants",
5
5
  "license": "MIT",
6
6
  "author": "desplega.sh <contact@desplega.sh>",
@@ -98,17 +98,17 @@
98
98
  },
99
99
  "dependencies": {
100
100
  "@ai-sdk/openai": "^3.0.41",
101
- "@anthropic-ai/sdk": "latest",
101
+ "@anthropic-ai/sdk": "^0.93.0",
102
102
  "@asteasolutions/zod-to-openapi": "^8.0.0",
103
103
  "@desplega.ai/business-use": "^0.4.2",
104
104
  "@desplega.ai/localtunnel": "^2.2.0",
105
105
  "@inkjs/ui": "^2.0.0",
106
106
  "@linear/sdk": "^77.0.0",
107
- "@mariozechner/pi-agent-core": "^0.67.2",
108
- "@mariozechner/pi-ai": "^0.67.2",
109
- "@mariozechner/pi-coding-agent": "^0.67.2",
107
+ "@mariozechner/pi-agent-core": "^0.73.0",
108
+ "@mariozechner/pi-ai": "^0.73.0",
109
+ "@mariozechner/pi-coding-agent": "^0.73.0",
110
110
  "@modelcontextprotocol/sdk": "^1.25.1",
111
- "@openai/codex-sdk": "^0.118.0",
111
+ "@openai/codex-sdk": "^0.125.0",
112
112
  "@opencode-ai/sdk": "^1.14.30",
113
113
  "@openfort/openfort-node": "^0.9.1",
114
114
  "@slack/bolt": "^4.6.0",
package/src/be/db.ts CHANGED
@@ -2033,6 +2033,15 @@ export interface CreateTaskOptions {
2033
2033
  workflowRunId?: string;
2034
2034
  workflowRunStepId?: string;
2035
2035
  sourceTaskId?: string;
2036
+ /**
2037
+ * Optional JSON Schema the agent's final output must conform to.
2038
+ *
2039
+ * Enforced via the MCP `store-progress` tool (validated in
2040
+ * `src/tools/store-progress.ts`). NOT enforced when the task runs on
2041
+ * default-mode Devin (no MCP) — see runbooks/harness-providers.md
2042
+ * ("Per-task outputSchema support"). Callers reading `task.output` for
2043
+ * a schema'd task should be defensive about JSON parsing.
2044
+ */
2036
2045
  outputSchema?: Record<string, unknown>;
2037
2046
  requestedByUserId?: string;
2038
2047
  contextKey?: string;
@@ -551,6 +551,10 @@ export async function ensureTaskFinished(
551
551
  body.failureReason = failureReason || `Claude process exited with code ${exitCode}`;
552
552
  } else if (providerOutput) {
553
553
  // Provider already supplied structured output (e.g. Devin) — use directly.
554
+ // NOTE: providerOutput is NOT validated against task.outputSchema here.
555
+ // Known gap for default-mode Devin; see runbooks/harness-providers.md
556
+ // ("Per-task outputSchema support"). Schema enforcement only happens on
557
+ // the MCP path via store-progress.
554
558
  body.output = providerOutput;
555
559
  } else {
556
560
  // Try structured output fallback if the task has an outputSchema
@@ -19,9 +19,10 @@ import {
19
19
  type AgentSession,
20
20
  createAgentSession,
21
21
  DefaultResourceLoader,
22
+ getAgentDir,
22
23
  SessionManager,
23
24
  } from "@mariozechner/pi-coding-agent";
24
- import { type TSchema, Type } from "@sinclair/typebox";
25
+ import { type TSchema, Type } from "typebox";
25
26
  import { scrubSecrets } from "../utils/secret-scrubber";
26
27
  import { createSwarmHooksExtension } from "./pi-mono-extension";
27
28
  import { McpHttpClient } from "./pi-mono-mcp-client";
@@ -508,6 +509,8 @@ export class PiMonoAdapter implements ProviderAdapter {
508
509
 
509
510
  // 5. Create resource loader with system prompt + extension
510
511
  const resourceLoader = new DefaultResourceLoader({
512
+ cwd: config.cwd,
513
+ agentDir: getAgentDir(),
511
514
  appendSystemPrompt: config.systemPrompt ? [config.systemPrompt] : undefined,
512
515
  extensionFactories: [swarmExtension],
513
516
  });