Skip to content

Manual Release - 2026-08-31 - #11

Open
optave-sdk-publisher[bot] wants to merge 1 commit into
mainfrom
release/manual-2026-08-31-20-21
Open

Manual Release - 2026-08-31#11
optave-sdk-publisher[bot] wants to merge 1 commit into
mainfrom
release/manual-2026-08-31-20-21

Conversation

@optave-sdk-publisher

Copy link
Copy Markdown

Manual Release

Version: 3.4.0
Source: chore/release-3.4.0
Target Environment: Public Production
Target Repository: optave/interface-client-sdk-lib-dist
Triggered by: ndovha

Files Published:

  • sdks/javascript/README.md (SDK documentation)
  • sdks/javascript/BUILDING.md (build documentation)
  • sdks/javascript/package.json & package-lock.json (package configuration, lock file if present)
  • sdks/javascript/webpack*.js (build configurations)
  • sdks/javascript/tsconfig.json (TypeScript configuration)
  • sdks/javascript/runtime/ (SDK source code)
  • sdks/javascript/integration/ (integration examples and usage samples)
  • sdks/javascript/generated/ (TypeScript types & validators)
  • sdks/javascript/dist/ (built SDK bundles)
  • sdks/javascript/scripts/prod/ (production build scripts)
  • sdks/javascript/scripts/shared/ (shared utilities)
  • sdks/javascript/assets/ (if present)
  • sdks/javascript/LICENSE (Apache 2.0 - public SDK license)

Validation Completed:

  • ✅ AsyncAPI specification validated
  • ✅ TypeScript types validated (no drift)
  • ✅ Full Vitest test suite passed
  • ✅ Version alignment verified

Ready for review and merge to main.

@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown

Greptile Summary

This release publishes JavaScript SDK 3.4.0 with a new assistant action, generated protocol types, configurable server URL builders, mandatory payload privacy checks, refreshed bundles, integrations, and build tooling.

  • Adds assistant and assistantAsync support across runtime declarations, generated examples, and bundles.
  • Changes generated protocol metadata and outbound schema references from major version 3 to major version 1.
  • Adds privacy validation for location, metadata, and reference fields.
  • Updates environment defaults, dependencies, build configurations, documentation, and distribution artifacts.

Confidence Score: 2/5

This PR should not merge until the v1 envelope incompatibility and the bypass in mandatory direct-identifier protection are corrected.

Every outbound envelope now carries a schema reference rejected by the existing coupled integration's v3 contract, while the new privacy boundary still permits phone numbers in generic reference values to reach persistent analytics storage.

Files Needing Attention: sdks/javascript/generated/constants.js, sdks/javascript/runtime/validation/pi-guard.js, sdks/javascript/runtime/core/main.js

Security Review

The mandatory payload privacy guard remains bypassable for phone numbers and other short direct identifiers stored as generic reference values, allowing them to reach the append-only analytics store.

Important Files Changed

Filename Overview
sdks/javascript/generated/constants.js Changes the protocol major used by every outbound schema reference from v3 to v1, conflicting with the coupled integration contract.
sdks/javascript/runtime/validation/pi-guard.js Adds mandatory privacy checks but leaves generic reference values containing phone numbers and other short identifiers unprotected.
sdks/javascript/runtime/core/main.js Wires privacy validation into all outbound sends and emits the newly derived schema reference in every envelope.
sdks/javascript/generated/types.d.ts Expands generated payload types and actions while loosening schemaRef from a literal protocol contract to an unrestricted string.
sdks/javascript/package.json Publishes version 3.4.0 and updates dependencies, test commands, generation scripts, and lint tooling.

Sequence Diagram

sequenceDiagram
  participant Consumer
  participant SDK
  participant Guard as Privacy Guard
  participant Integration
  Consumer->>SDK: assistant/interaction(params)
  SDK->>Guard: validatePayloadPrivacy(payload)
  Guard-->>SDK: validation result
  SDK->>SDK: build envelope with optave.message.v1
  SDK->>Integration: send WebSocket envelope
  Integration->>Integration: validate expected optave.message.v3
Loading

Fix all with Greploop Fix All in Claude Code

Reviews (1): Last reviewed commit: "chore(release): promote SDK changes to p..." | Re-trigger Greptile

Comment on lines +6 to 10
export const SPEC_VERSION = "1.0.0";

// Schema ref is derived from spec major
// Schema ref is derived from protocol major version
const SPEC_MAJOR = SPEC_VERSION.split('.')[0];
export const SCHEMA_REF = `optave.message.v${SPEC_MAJOR}`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Schema reference breaks v3 contract

When this SDK sends a request to the existing coupled integration, deriving SCHEMA_REF from protocol version 1.0.0 places optave.message.v1 in every outbound envelope, while the integration validator and public envelope type require optave.message.v3, causing requests to fail envelope validation or routing.

Fix in Claude Code

Comment on lines +47 to +57
function scanString(value, path, errors) {
if (typeof value !== 'string' || value.length === 0) return;
if (EMAIL_RE.test(value)) {
errors.push(createError(path, 'must not contain an email address', { kind: 'email' }));
}
if (GPS_RE.test(value)) {
errors.push(createError(path, 'must not contain precise coordinates', { kind: 'coordinates' }));
}
if (looksLikeMessageContent(value)) {
errors.push(createError(path, 'must not contain message content or other direct identifiers', { kind: 'messageContent' }));
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 security Identifier values bypass privacy guard

When a caller supplies a phone number as a generic value such as request.reference.ids[0].value, the mandatory guard checks only email addresses, coordinates, and long message-like strings, so the direct identifier is transmitted to the append-only analytics store despite the new privacy boundary.

How this was verified: The complete string-scanning path contains no phone-number check, while identifier detection examines object keys rather than generic values.

Fix in Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants