@salesforce/sfdx-agent-harness-mastra 0.99.0 → 0.100.0

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 CHANGED
@@ -3,6 +3,11 @@
3
3
  All notable changes to `@salesforce/sfdx-agent-harness-mastra` are documented in this file.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
+ ## [0.100.0] - 2026-10-09
7
+
8
+ ### Chores
9
+ - **agent-sdk,harness-claude,harness-mastra,harness-openai**: remove the openai harness @W-24458323@ ([#871](https://github.com/forcedotcom/agentic-dx/pull/871))
10
+
6
11
  ## [0.99.0] - 2026-10-06
7
12
 
8
13
  ### Features
@@ -327,9 +327,8 @@ export declare class MastraHarness implements MastraAgentHarness {
327
327
  * counter owned by the language model would bleed across turns AND across
328
328
  * concurrent threads; owning it here — the innermost map reset at each
329
329
  * `stream()` (per-turn) and keyed by thread (per-thread) — matches Claude's
330
- * per-`stream()` `toolArgFailureCounts` and OpenAI's per-turn
331
- * `consumerToolArgsAttempts`, so the exhaustion-clause wording is identical
332
- * across all three harnesses. Nested (rather than a `${agentId}::${threadId}`
330
+ * per-`stream()` `toolArgFailureCounts`, so the exhaustion-clause wording is
331
+ * identical across both harnesses. Nested (rather than a `${agentId}::${threadId}`
333
332
  * string key) so a consumer id containing the delimiter can't alias two
334
333
  * distinct scopes, and cleanup is O(1): `destroyThread` deletes the thread
335
334
  * entry, `destroyAgent` deletes the agent entry, `shutdown` clears all.
@@ -495,9 +495,8 @@ export class MastraHarness {
495
495
  * counter owned by the language model would bleed across turns AND across
496
496
  * concurrent threads; owning it here — the innermost map reset at each
497
497
  * `stream()` (per-turn) and keyed by thread (per-thread) — matches Claude's
498
- * per-`stream()` `toolArgFailureCounts` and OpenAI's per-turn
499
- * `consumerToolArgsAttempts`, so the exhaustion-clause wording is identical
500
- * across all three harnesses. Nested (rather than a `${agentId}::${threadId}`
498
+ * per-`stream()` `toolArgFailureCounts`, so the exhaustion-clause wording is
499
+ * identical across both harnesses. Nested (rather than a `${agentId}::${threadId}`
501
500
  * string key) so a consumer id containing the delimiter can't alias two
502
501
  * distinct scopes, and cleanup is O(1): `destroyThread` deletes the thread
503
502
  * entry, `destroyAgent` deletes the agent entry, `shutdown` clears all.
@@ -54,9 +54,8 @@ export function mapToolDefinitionsToMastraTools(tools, parkerLookup) {
54
54
  inputSchema: toStandardSchema(ensureJsonSchemaMarker(tool.inputSchema)),
55
55
  // `strict: false` keeps a provider compat-layer (OpenAI/Anthropic
56
56
  // strict-mode) from RE-degrading the preserved schema on the way to the
57
- // wire — arbitrary consumer schemas aren't structured-output schemas
58
- // (the OpenAI harness sets `strict: false` on consumer tools for the
59
- // same reason). Without it, `CoreToolBuilder.build` applies a matching
57
+ // wire — arbitrary consumer schemas aren't structured-output schemas.
58
+ // Without it, `CoreToolBuilder.build` applies a matching
60
59
  // compat layer that reintroduces `additionalProperties:false`.
61
60
  strict: false,
62
61
  // Issue #529 step 2c (Path A) — consumer tools bypass the
@@ -50,9 +50,9 @@ export declare function buildAnthropicLanguageModel(opts: {
50
50
  * `standardSchemaToJSONSchema`), which injects `additionalProperties: false`
51
51
  * onto any object node that declared none (JSON Schema's default is open).
52
52
  * Gating against that closed schema would reject extra keys on an
53
- * implicitly-open nested object and diverge from Claude/OpenAI (which gate
53
+ * implicitly-open nested object and diverge from Claude (which gates
54
54
  * the pristine declared schema); validating the declared schema keeps the
55
- * gate verdict identical across all three harnesses (W-24023028). Same
55
+ * gate verdict identical across both harnesses (W-24023028). Same
56
56
  * per-config-snapshot freshness caveat as `getConsumerToolNames`. Defaults to
57
57
  * an empty map (no schema → the gate treats every consumer tool as
58
58
  * unvalidatable-`ok`) for callers that don't thread it.
@@ -17,7 +17,7 @@ export declare function sortJsonValue(value: JsonValue, depth: number): JsonValu
17
17
  * `.tmp` + `rename` (atomic on POSIX); a per-`(agentId, threadId)` in-flight
18
18
  * queue serializes read/write cycles and covers Windows rename EPERM. `read`
19
19
  * returns `{}` on miss or corruption (logged), never null, never throws on a
20
- * miss. A behavioral copy of the Claude / OpenAI harness stores (harnesses can't
20
+ * miss. A behavioral copy of the Claude harness store (harnesses can't
21
21
  * depend on each other); drift-guarded by `runSessionContextConformance`.
22
22
  */
23
23
  export declare class SessionContextStore {
@@ -61,7 +61,7 @@ function serializeSessionContext(value) {
61
61
  * `.tmp` + `rename` (atomic on POSIX); a per-`(agentId, threadId)` in-flight
62
62
  * queue serializes read/write cycles and covers Windows rename EPERM. `read`
63
63
  * returns `{}` on miss or corruption (logged), never null, never throws on a
64
- * miss. A behavioral copy of the Claude / OpenAI harness stores (harnesses can't
64
+ * miss. A behavioral copy of the Claude harness store (harnesses can't
65
65
  * depend on each other); drift-guarded by `runSessionContextConformance`.
66
66
  */
67
67
  export class SessionContextStore {
@@ -12,7 +12,7 @@
12
12
  * OR this marker into `isError` on the persisted read and the live event
13
13
  * respectively. (An earlier S4 design ALSO used it to suppress the
14
14
  * consumer-visible `tool-call` ChatEvent; that suppression was removed —
15
- * gated calls now surface a live `tool-call` + error `tool-result` on all three
15
+ * gated calls now surface a live `tool-call` + error `tool-result` on both
16
16
  * harnesses — so the marker no longer gates any event emission.)
17
17
  *
18
18
  * Single-sourced here so the writer (`v3-stream-mapping.ts`), the read mapper
@@ -16,7 +16,7 @@
16
16
  * OR this marker into `isError` on the persisted read and the live event
17
17
  * respectively. (An earlier S4 design ALSO used it to suppress the
18
18
  * consumer-visible `tool-call` ChatEvent; that suppression was removed —
19
- * gated calls now surface a live `tool-call` + error `tool-result` on all three
19
+ * gated calls now surface a live `tool-call` + error `tool-result` on both
20
20
  * harnesses — so the marker no longer gates any event emission.)
21
21
  *
22
22
  * Single-sourced here so the writer (`v3-stream-mapping.ts`), the read mapper
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/sfdx-agent-harness-mastra",
3
- "version": "0.99.0",
3
+ "version": "0.100.0",
4
4
  "description": "Mastra-backed AgentHarness implementation for @salesforce/sfdx-agent-sdk",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -42,12 +42,12 @@
42
42
  "openai": "^7.23.0"
43
43
  },
44
44
  "peerDependencies": {
45
- "@salesforce/sfdx-agent-sdk": "0.100.0"
45
+ "@salesforce/sfdx-agent-sdk": "0.101.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@eslint/js": "^10.0.1",
49
49
  "@salesforce/harness-conformance": "0.0.1",
50
- "@salesforce/sfdx-agent-sdk": "0.100.0",
50
+ "@salesforce/sfdx-agent-sdk": "0.101.0",
51
51
  "@types/node": "^22.20.1",
52
52
  "@vitest/coverage-istanbul": "^5.0.2",
53
53
  "@vitest/eslint-plugin": "^1.6.27",