open-multi-agent-kit 0.98.1 → 0.98.2
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/CHANGELOG.md +14 -0
- package/README.md +2 -2
- package/dist/cli/mcp-attach.d.ts +15 -0
- package/dist/cli/mcp-attach.d.ts.map +1 -0
- package/dist/cli/mcp-attach.js +14 -0
- package/dist/cli/mcp-attach.js.map +1 -0
- package/dist/core/agent-session.d.ts +7 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +66 -14
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +19 -2
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +57 -6
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/oauth-recovery.d.ts +29 -0
- package/dist/core/compaction/oauth-recovery.d.ts.map +1 -0
- package/dist/core/compaction/oauth-recovery.js +40 -0
- package/dist/core/compaction/oauth-recovery.js.map +1 -0
- package/dist/core/model-registry.d.ts +10 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +16 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/provider-resilience.d.ts +8 -0
- package/dist/core/provider-resilience.d.ts.map +1 -1
- package/dist/core/provider-resilience.js +17 -0
- package/dist/core/provider-resilience.js.map +1 -1
- package/dist/core/provider-usage.d.ts +1 -1
- package/dist/core/provider-usage.d.ts.map +1 -1
- package/dist/core/provider-usage.js +3 -2
- package/dist/core/provider-usage.js.map +1 -1
- package/dist/core/session-failure-cause.d.ts.map +1 -1
- package/dist/core/session-failure-cause.js +7 -1
- package/dist/core/session-failure-cause.js.map +1 -1
- package/dist/core/session-termination.d.ts.map +1 -1
- package/dist/core/session-termination.js +3 -1
- package/dist/core/session-termination.js.map +1 -1
- package/dist/core/verified-bash-runtime.d.ts.map +1 -1
- package/dist/core/verified-bash-runtime.js +6 -4
- package/dist/core/verified-bash-runtime.js.map +1 -1
- package/dist/guardrails/workspace-fingerprint.d.ts +2 -0
- package/dist/guardrails/workspace-fingerprint.d.ts.map +1 -1
- package/dist/guardrails/workspace-fingerprint.js +12 -10
- package/dist/guardrails/workspace-fingerprint.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -0
- package/dist/main.js.map +1 -1
- package/docs/book-to-skill.md +17 -0
- package/docs/docs.json +4 -0
- package/docs/index.md +2 -0
- package/docs/mcp.md +10 -2
- package/docs/security.md +4 -9
- package/examples/extensions/custom-provider-anthropic/index.ts +4 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +18 -18
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.98.2] - 2026-09-02
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- The `omk` CLI now connects configured MCP servers. `AgentSession.attachMcpServers()` was complete and tested but had no caller outside the SDK, so a `~/.omk/mcp.json` or `.omk/mcp.json` written by a CLI user spawned nothing and the control-panel MCP rows only ever showed the config inventory. The single CLI session factory now attaches on every session it creates — interactive, `-p`, RPC, `/new`, `/resume`, and forks — while `--help` and `--list-models` still spawn nothing. A server that fails to start becomes a startup warning naming the server and the reason (never an env value); the session continues with the servers that did connect.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- A dirty working-tree entry whose name the receipt parser rejects no longer kills every verified bash call in the session. `resolveSessionWorkspaceScope` handed the whole `git status` set to `captureWorkspaceFingerprint`, which throws on any path containing a backslash, `..`, or an empty segment; a mangled `\wsl.localhost\...` directory left in a repo root therefore failed each bash invocation with `workspace scope artifactPaths[N] must be a normalized root-relative path`, and subagent lanes lost their shell entirely. The scope builder now filters with the same `isNormalizedArtifactPath` predicate the parser enforces, which also subsumes the earlier one-off trailing-slash and nested-repository exclusions.
|
|
12
|
+
- A credential-less install no longer tells the user to `Run /login unknown`. The placeholder model resolved when no provider is configured carries the literal provider `unknown`, and the `provider_auth` recovery hint interpolated it verbatim; the hint now omits an unknown provider and mentions the API-key environment variable path for headless `-p` runs where `/login` is not available.
|
|
13
|
+
- Classified Anthropic's `claude_code_version_too_old` rejection (HTTP 400 carrying `invalid_request_error`) as a permanent configuration fault: it no longer enters the transient retry/failover loop, and the session failure cause reports `configuration`/`invalid` instead of the retryable protocol default. The usage and quota probes now read the spoofed Claude Code client version from omk-ai's single `CLAUDE_CODE_VERSION` constant, so every request presents the same user-agent as the messages API.
|
|
14
|
+
- Compaction now recovers from an OAuth token the provider rejects as expired while the stored expiry still lies ahead. ChatGPT/Codex answers `401 token_expired` days before the JWT `exp`, and because `compaction.model` can differ from the session model (`openai-codex/gpt-5.6-sol` under an `xai/grok-4.6` session), every turn kept succeeding while every compaction failed with "Provided authentication token is expired" — and the transient-retry classifier rightly never replays a 401. `AuthStorage.refreshRejectedOAuthToken()` now force-refreshes the rejected credential under the storage lock (skipping the refresh when another omk process already rotated it), and manual and automatic compaction retry the summarization once with the new token. A failed refresh names `/login <provider>`. Compaction failures are now attributed to the compaction model instead of the session model.
|
|
15
|
+
- Compaction now asks for an OAuth access token with at least ten minutes of remaining validity. Compaction resolves auth once and reuses it for a summarization that can stream for minutes with retries, so a token accepted seconds before expiry came back as a provider 401 mid-run. `AuthStorage.getApiKey()` accepts `minRemainingMs` and refreshes proactively, falling back to the still-valid token when that early refresh fails.
|
|
16
|
+
|
|
3
17
|
## [0.98.1] - 2026-08-30
|
|
4
18
|
|
|
5
19
|
## [0.98.0] - 2026-08-28
|
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ OMK stores user configuration under `~/.omk/agent/` and project configuration un
|
|
|
47
47
|
Install `omk-book-to-skill` to compile documents into reusable skills without adding Python extractors to OMK core:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
omk install npm:omk-book-to-skill@0.98.
|
|
50
|
+
omk install npm:omk-book-to-skill@0.98.2
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
It provides compile, update, and verification commands plus a local SHA-256 provenance manifest. See [Book to Skill](https://github.com/dmae97/omk/blob/main/packages/coding-agent/docs/book-to-skill.md).
|
|
@@ -247,7 +247,7 @@ npm test
|
|
|
247
247
|
|
|
248
248
|
See [Development](https://github.com/dmae97/omk/blob/main/packages/coding-agent/docs/development.md) and [CONTRIBUTING.md](https://github.com/dmae97/omk/blob/main/CONTRIBUTING.md).
|
|
249
249
|
|
|
250
|
-
Release notes: [v0.98.
|
|
250
|
+
Release notes: [v0.98.2](https://github.com/dmae97/omk/blob/main/.github/RELEASE_NOTES_v0.98.2.md).
|
|
251
251
|
|
|
252
252
|
## License
|
|
253
253
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface McpAttachStatus {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
readonly state: string;
|
|
4
|
+
readonly error?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Startup diagnostics for `AgentSession.attachMcpServers()` results. A ready
|
|
8
|
+
* server is silent; anything else becomes a warning so one broken server is
|
|
9
|
+
* visible without taking the session down. Error text never carries env values.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mcpAttachDiagnostics(statuses: readonly McpAttachStatus[]): Array<{
|
|
12
|
+
type: "warning";
|
|
13
|
+
message: string;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=mcp-attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-attach.d.ts","sourceRoot":"","sources":["../../src/cli/mcp-attach.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAClC,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7C","sourcesContent":["// Structural shapes on purpose: importing the core types here would put cli/ in an import cycle.\nexport interface McpAttachStatus {\n\treadonly name: string;\n\treadonly state: string;\n\treadonly error?: string;\n}\n\n/**\n * Startup diagnostics for `AgentSession.attachMcpServers()` results. A ready\n * server is silent; anything else becomes a warning so one broken server is\n * visible without taking the session down. Error text never carries env values.\n */\nexport function mcpAttachDiagnostics(\n\tstatuses: readonly McpAttachStatus[],\n): Array<{ type: \"warning\"; message: string }> {\n\treturn statuses.flatMap((status) => {\n\t\tif (status.state === \"ready\") return [];\n\t\tconst reason = status.error ? `: ${status.error}` : \"\";\n\t\treturn [{ type: \"warning\", message: `MCP server \"${status.name}\" ${status.state}${reason}` }];\n\t});\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup diagnostics for `AgentSession.attachMcpServers()` results. A ready
|
|
3
|
+
* server is silent; anything else becomes a warning so one broken server is
|
|
4
|
+
* visible without taking the session down. Error text never carries env values.
|
|
5
|
+
*/
|
|
6
|
+
export function mcpAttachDiagnostics(statuses) {
|
|
7
|
+
return statuses.flatMap((status) => {
|
|
8
|
+
if (status.state === "ready")
|
|
9
|
+
return [];
|
|
10
|
+
const reason = status.error ? `: ${status.error}` : "";
|
|
11
|
+
return [{ type: "warning", message: `MCP server "${status.name}" ${status.state}${reason}` }];
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mcp-attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-attach.js","sourceRoot":"","sources":["../../src/cli/mcp-attach.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CACnC,QAAoC,EACU;IAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;IAAA,CAC9F,CAAC,CAAC;AAAA,CACH","sourcesContent":["// Structural shapes on purpose: importing the core types here would put cli/ in an import cycle.\nexport interface McpAttachStatus {\n\treadonly name: string;\n\treadonly state: string;\n\treadonly error?: string;\n}\n\n/**\n * Startup diagnostics for `AgentSession.attachMcpServers()` results. A ready\n * server is silent; anything else becomes a warning so one broken server is\n * visible without taking the session down. Error text never carries env values.\n */\nexport function mcpAttachDiagnostics(\n\tstatuses: readonly McpAttachStatus[],\n): Array<{ type: \"warning\"; message: string }> {\n\treturn statuses.flatMap((status) => {\n\t\tif (status.state === \"ready\") return [];\n\t\tconst reason = status.error ? `: ${status.error}` : \"\";\n\t\treturn [{ type: \"warning\", message: `MCP server \"${status.name}\" ${status.state}${reason}` }];\n\t});\n}\n"]}
|
|
@@ -805,6 +805,13 @@ export declare class AgentSession {
|
|
|
805
805
|
* Used when the primary model's quota is exhausted (same-model retry is
|
|
806
806
|
* useless until reset; another provider can still save the compaction).
|
|
807
807
|
*/
|
|
808
|
+
/**
|
|
809
|
+
* Summarize for manual and automatic compaction alike. If the provider
|
|
810
|
+
* rejects the OAuth token as expired despite a still-future stored expiry
|
|
811
|
+
* (ChatGPT `401 token_expired`), the credential is force-refreshed once and
|
|
812
|
+
* the summarization retried; the retry classifier rightly never replays a 401.
|
|
813
|
+
*/
|
|
814
|
+
private _summarizeCompaction;
|
|
808
815
|
private _compactionFailoverModels;
|
|
809
816
|
/**
|
|
810
817
|
* Manually compact the session context.
|