Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/bailian-memory-id-identity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": patch
---

Identify Bailian Memory Stores by their remote ID rather than their non-unique display name. Disable name-based conflict adoption, create a new store when no remote ID is recorded, and exclude archived stores from ID-based lifecycle lookups.
9 changes: 9 additions & 0 deletions .changeset/bailian-native-memory-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@openagentpack/sdk": minor
---

Add native Bailian Memory Store, memory file, and historical version APIs, including store archive, file rename, content SHA preconditions, version redaction, and opaque `page`/`next_page` pagination. Preserve native absolute paths, response fields, operation names, and service errors.

Enable declarative Bailian Memory Stores with ID-only identity, explicit import, declared-key metadata reconciliation, and recoverable initialization. Persist the created store ID and pending initializer hashes before writing content; retries resume missing pending paths without overwriting existing files. Existing and imported stores preserve runtime content by default, while explicit `entries_mode: sync` manages declared paths. Removing a store and applying, or destroying it, irreversibly archives it.

Resolve logical Memory references into native Session resources with access settings, instructions, deduplication, and an eight-store limit. Block Session mounting until initialization completes and reject Memory mounts in file-only Bailian Deployments.
5 changes: 5 additions & 0 deletions .changeset/fix-memory-store-conflict-name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": patch
---

Use the actual creation name when looking up a memory store after a creation conflict, preventing adoption of a different store named after the configuration key.
5 changes: 5 additions & 0 deletions .changeset/memory-entry-initialization-default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": minor
---

Default declarative memory entries to initialization of newly created stores only. Existing, imported, or adopted stores retain their runtime content, and initialization-only entry changes no longer schedule updates. Add entries_mode: sync as an explicit opt-in to the previous continuous YAML synchronization behavior.
5 changes: 5 additions & 0 deletions .changeset/optional-mcp-tool-overrides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": patch
---

Allow MCP toolkit configs and agent-builder tool overrides to be omitted or empty. Bailian requests normalize missing overrides to an empty array, so default_config.enabled can enable all MCP tools without placeholder names. Preserve the disabled default and explicit per-tool overrides.
5 changes: 5 additions & 0 deletions .changeset/preserve-environment-yaml-anchors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": patch
---

Preserve YAML anchors when redacting environment variable values so valid aliases remain usable in version previews and version snapshot checks. Stored and restored configuration retains its original values.
5 changes: 5 additions & 0 deletions .changeset/secure-build-dependencies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/playground": patch
---

Update the bundled editor to a patched ProseMirror view version and refresh vulnerable build dependencies. Backport bounded nesting and AST traversal checks for the workspace's braces dependency while an official fix is unavailable.
5 changes: 5 additions & 0 deletions .changeset/tidy-webhook-context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openagentpack/sdk": minor
---

Add workspace-level Bailian Webhook endpoint management and delivery-event queries through a provider-only API context. Expose endpoint URL normalization and cancellable requests while preserving one-time signing-secret responses, opaque pagination cursors, request IDs, and provider errors. These APIs do not read project files or write project state.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ Beta testers can install `@openagentpack/cli@beta`; see the [release guide](./do
| Skill | native | native | native | native |
| Agent | native | native | native | native |
| MCP Server | native | native | native | native |
| Memory Store | unsupported | native | native | native |
| Memory Store | native | native | native | native |
| Multi-Agent | native | native | native | native |
| Deployment | native | native | native | emulated |
| Session | native | native | native | native |
Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Beta 用户可以安装 `@openagentpack/cli@beta`;固定版本及切回稳定
| Skill | native | native | native | native |
| Agent | native | native | native | native |
| MCP Server | native | native | native | native |
| Memory Store | unsupported | native | native | native |
| Memory Store | native | native | native | native |
| Multi-Agent | native | native | native | native |
| Deployment | native | native | native | emulated |
| Session | native | native | native | native |
Expand Down
6 changes: 6 additions & 0 deletions apps/server/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1568,6 +1568,12 @@
"type": "string",
"nullable": true
},
"environment_variables": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"created_at": {
"type": "string"
},
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/services/project-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ function projectAgentDetails(
memory_stores: agent?.memory_stores ?? [],
resources: (agent?.resources ?? []).map((resource) => ({
type: resource.type,
mount_path: resource.mount_path,
mount_path: resource.type === "github_repository" ? resource.mount_path : undefined,
})),
};
}
Expand Down
3 changes: 3 additions & 0 deletions apps/webui/src/lib/api/generated/schema.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3383,6 +3383,9 @@ export interface components {
[key: string]: unknown;
};
environment_id?: string | null;
environment_variables?: {
[key: string]: string;
};
created_at?: string;
updated_at?: string;
metadata?: {
Expand Down
1 change: 1 addition & 0 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"!**/out",
"!**/coverage",
"!**/bun.lock",
"!vendor/braces",
"!**/*.svg",
"!**/apps/webui/.agents-webui",
"!**/apps/webui/outputs",
Expand Down
24 changes: 15 additions & 9 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions docs/contributing/provider-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ import "./<name>/index.ts";

The registry validates a provider against `REQUIRED_METHODS_BY_KIND` (in `capabilities.ts`) at build time — so an unsupported kind needs no stub methods, and a supported kind must implement its lifecycle + session methods. Read/list methods are an orthogonal, à-la-carte facet and are soft-degraded at their call sites.

## Resource identity

Resource state binds a logical config address to a remote ID. When display names are not unique, implement `supportsResourceNameLookup(type)` with `false` for that resource kind and return `null` from `findResource` when no ID is provided. The executor then preserves create errors instead of adopting a same-name resource.

Bailian Memory Stores use this ID-only lookup rule. Without a recorded ID, create a new store and persist its returned ID; with an ID, read and update that exact store. Reusing an existing store requires an explicit ID import. This lookup contract does not enable a resource's lifecycle capability by itself.

## Verify

```sh
Expand Down
2 changes: 1 addition & 1 deletion docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ agents destroy
| Skill | native | native | native | native |
| Agent | native | native | native | native |
| MCP Server | native | native | native | native |
| Memory Store | unsupported | native | native | native |
| Memory Store | native | native | native | native |
| Multi-Agent | native | native | native | native |
| Deployment | native | native | native | emulated |
| Session | native | native | native | native |
Expand Down
23 changes: 22 additions & 1 deletion docs/guides/manage-deployments.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ deployments:
| `agent` | yes | Agent name to run. |
| `agent_version` | no | Pin a versioned agent. |
| `environment` | no | Override the agent's environment. |
| `environment_variables` | no | Bailian: string-valued map. Qoder: its existing `KEY=VALUE` string format. |
| `vaults` | no | Vault bindings. |
| `memory_stores` | no | Memory store bindings. |
| `resources` | no | `file`, `memory_store`, or `github_repository` resources to mount. |
Expand Down Expand Up @@ -65,7 +66,27 @@ agents deployment unpause <name> # resume scheduled runs (native provider
agents deployment run <name> # trigger a run
```

Qoder deployments may also declare `environment_variables` as a semicolon- or newline-separated `KEY=VALUE` string. Qoder copies these variables into every Session created by that deployment; Claude does not support this extension.
## Environment variables

Bailian deployments accept `environment_variables` as a string-valued map. The variables are injected into the sandbox for deployment runs and can be read by name:

```yaml
deployments:
daily-report:
provider: bailian
agent: reporter
environment_variables:
REPORT_REGION: "cn-hangzhou"
REPORT_FORMAT: "markdown"
FEATURE_ENABLED: "true"
initial_events:
- type: user.message
content: "Generate the daily report."
```

All values must be strings; quote numeric or boolean-looking values. The reserved map key `__proto__` is not supported. Run `agents plan` and `agents apply` after changing the map. When a Bailian deployment declaration removes `environment_variables` or sets it to `{}`, the next update sends an empty variable map to clear the deployment's variables.

Qoder continues to use a semicolon- or newline-separated `KEY=VALUE` string, for example `environment_variables: "REPORT_REGION=cn-hangzhou;REPORT_FORMAT=markdown"`. Qoder copies these variables into every Session created by the deployment. Claude and Ark do not support deployment environment variables.

## Native vs. emulated

Expand Down
7 changes: 2 additions & 5 deletions docs/guides/use-mcp-and-vaults.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,13 @@ agents:
- type: mcp_toolkit
mcpServerName: WebSearch
defaultConfig:
enabled: false
configs:
- name: bailian_web_search
enabled: true
enabled: true
mcp_servers:
- type: official
name: WebSearch
```

The `mcp_toolkit` block (under `tools.mcp[]`) selects which tools the official server exposes. It accepts either snake_case (`mcp_server_name`, `default_config`) or camelCase (`mcpServerName`, `defaultConfig`) keys.
The `mcp_toolkit` block (under `tools.mcp[]`) selects which tools the official server exposes. It accepts either snake_case (`mcp_server_name`, `default_config`) or camelCase (`mcpServerName`, `defaultConfig`) keys. The example enables all tools without listing tool names. `configs` may be omitted or set to `[]`; add entries only to override individual tools, such as `{ name: bailian_web_search, enabled: false }`. If `default_config` is omitted, tools remain disabled unless explicitly enabled in `configs`.

## Network policy

Expand Down
Loading
Loading