Skip to content

release: 0.1.0#2

Open
stainless-app[bot] wants to merge 46 commits into
mainfrom
release-please--branches--main--changes--next
Open

release: 0.1.0#2
stainless-app[bot] wants to merge 46 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Copy Markdown
Contributor

@stainless-app stainless-app Bot commented Apr 3, 2026

Automated Release PR

0.1.0 (2026-05-15)

Full Changelog: v0.0.2...v0.1.0

Features

Bug Fixes

  • go: avoid panic when http.DefaultTransport is wrapped (ee40854)

Chores

  • avoid embedding reflect.Type for dead code elimination (6567e85)
  • internal: more robust bootstrap script (c2663fb)
  • redact api-key headers in debug logs (ce6b68d)
  • tests: bump steady to v0.22.1 (90f868d)

Documentation


This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app Bot commented Apr 3, 2026

🧪 Testing

To try out this version of the SDK:

Download and unzip: 'https://pkg.stainless.com/s/hyperspell-go/c55d3c76edf15fbb6b6d51c42341e1a15f4f72a6/source.zip'. Run 'go mod edit -replace github.com/hyperspell/hyperspell-go=/path/to/unzipped_directory'.

Expires at: Sat, 13 Jun 2026 04:15:26 GMT
Updated at: Thu, 14 May 2026 04:15:26 GMT

Comment thread memory.go Outdated
type MemoryUploadParams struct {
// The file to ingest.
File io.Reader `json:"file,omitzero" api:"required" format:"binary"`
File string `json:"file" api:"required"`
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Correctness: Changing File from io.Reader (with format:"binary") to string breaks actual binary file uploads — apiform.MarshalRoot will now write a plain string value into the multipart form instead of streaming binary file content, making the Upload endpoint non-functional for real files.

🤖 AI Agent Prompt for Cursor/Windsurf

📋 Copy this prompt to your AI coding assistant (Cursor, Windsurf, etc.) to get help fixing this issue

In memory.go at line 964, the `File` field in `MemoryUploadParams` was changed from `io.Reader` with `format:"binary"` tag to `string`. This breaks the `MarshalMultipart` method because `apiform.MarshalRoot` relies on the `format:"binary"` tag to correctly stream binary file content into the multipart writer. Revert this field back to `io.Reader` with the original tags: `json:"file,omitzero" api:"required" format:"binary"`. Also ensure that the `io` package import is present (or re-added if removed).

@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 1/5 - Blocking Issues

Not safe to merge — the change to memory.go that converts the File field from io.Reader (with format:"binary") to a plain string type fundamentally breaks binary file upload functionality. When apiform.MarshalRoot processes the multipart form, it will serialize a string literal instead of streaming actual binary file content, rendering the Upload endpoint non-functional for any real file uploads. While this PR appears to be a v0.1.0 release milestone, shipping a broken file upload API as the initial release would be a poor foundation.

Key Findings:

  • In memory.go, changing File from io.Reader with format:"binary" to string means apiform.MarshalRoot will write a plain string value into the multipart form body — actual binary file content cannot be transmitted this way, making the Upload endpoint completely non-functional for real use cases.
  • This is a critical correctness bug (score 9.0) in a core file upload path — not a style issue or minor edge case — which means it would ship broken functionality to all consumers of this v0.1.0 release.
  • The severity is amplified by the fact that this is a release PR (v0.1.0): any downstream users pinning to this version would get a broken file upload API with no workaround short of upgrading.
Files requiring special attention
  • memory.go

@canaries-inc
Copy link
Copy Markdown

canaries-inc Bot commented Apr 3, 2026

🐤 Canary Summary

This is a Go SDK library release with no UI/UX components:

  • No web frontend, mobile app, or graphical user interface exists in this repository
  • This is a backend SDK for developers to integrate into their applications
  • Changes are purely infrastructure (version bumps, release management, API client code)
  • The repository contains only Go SDK code, tests, and documentation

@canaries-inc
Copy link
Copy Markdown

canaries-inc Bot commented Apr 3, 2026

🐤 Canary Proposed Tests

No testable user journeys found for this PR.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 43a3754 to 183ab13 Compare April 8, 2026 03:30
@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this is a clean version bump release PR for hyperspell-go SDK v0.1.0 with no logic changes, only metadata and documentation updates. The changes are confined to internal/version.go (constant update), .release-please-manifest.json, README.md installation pin, CHANGELOG.md entry, and .stats.yml config hash — all of which are standard release artifacts. No review comments were generated, no pre-existing unresolved issues exist, and the scope of changes carries essentially zero runtime risk.

Key Findings:

  • The PackageVersion constant in internal/version.go is updated from 0.0.2 to 0.1.0, which is a purely mechanical string change with no behavioral impact beyond version reporting.
  • All other changed files (CHANGELOG.md, README.md, .release-please-manifest.json, .stats.yml) are documentation or manifest files that carry no runtime execution risk.
  • No review comments were raised by the automated analysis, and there are zero unresolved pre-existing concerns associated with this PR.
  • The PR is consistent with a standard release-please generated release workflow, which reduces the likelihood of human error in the versioning process.
Files requiring special attention
  • internal/version.go
  • .release-please-manifest.json

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 183ab13 to a270d0c Compare April 8, 2026 22:30
@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this PR is a version bump release that increments PackageVersion in internal/version.go from 0.0.2 to 0.1.0, with coordinated updates across .release-please-manifest.json, README.md, CHANGELOG.md, and the OpenAPI spec hash. The changes are purely mechanical and administrative with no logic, behavior, or API surface modifications. No review comments were generated and no pre-existing unresolved issues exist.

Key Findings:

  • The PackageVersion constant change in internal/version.go is a straightforward string update with no runtime logic impact beyond version reporting.
  • The CHANGELOG.md addition and README installation command update (v0.1.0 pin) are documentation-only changes that correctly reflect the new release version.
  • The OpenAPI spec URL and hash refresh is consistent with the release process and introduces no functional code changes.
  • Zero review comments were generated across reviewed files, and heuristic analysis found no critical, significant, or medium-severity issues.
Files requiring special attention
  • internal/version.go
  • .release-please-manifest.json

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from a270d0c to f7738a1 Compare April 9, 2026 02:30
@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this PR is a straightforward version bump coordinating the PackageVersion constant in internal/version.go, .release-please-manifest.json, README.md, CHANGELOG.md, and .stats.yml from 0.0.2 to 0.1.0. No logic, runtime behavior, or API surface is modified; the changes are purely metadata and documentation updates driven by the release tooling. The changelog accurately documents two API updates and the stats file reflects refreshed spec hashes, all consistent with a standard minor release cut.

Key Findings:

  • PackageVersion in internal/version.go is updated from 0.0.2 to 0.1.0, which is a non-breaking string constant change with no runtime side effects beyond correct SDK version reporting.
  • .release-please-manifest.json and README.md pin the install version consistently at v0.1.0, keeping documentation and release tooling in sync with the actual version constant.
  • .stats.yml hash updates reflect the new OpenAPI spec revision, which is expected housekeeping for a minor release and carries no logic risk.
  • No review comments were generated and no pre-existing unresolved issues are present; all five changed files align coherently around a single version increment.
Files requiring special attention
  • internal/version.go
  • CHANGELOG.md

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from f7738a1 to 4771fd0 Compare April 11, 2026 09:05
@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this PR is a clean version bump from 0.0.2 to 0.1.0 with no logic changes, consisting entirely of version string updates in .release-please-manifest.json and internal/version.go, changelog additions, and cosmetic test fixture improvements replacing generic "text" placeholders with "..." or more descriptive strings. The changes in client_test.go, usage_test.go, and memory_test.go are purely cosmetic fixture updates that improve readability without altering any test logic or assertions. No review comments were generated and no pre-existing unresolved issues are present.

Key Findings:

  • Version bump is consistently applied across both .release-please-manifest.json and internal/version.go, ensuring no version skew between manifest and runtime-reported version.
  • Test fixture changes in client_test.go, usage_test.go, and memory_test.go replace placeholder "text" strings with "..." or descriptive values — purely cosmetic with zero impact on test correctness or coverage.
  • README.md install command version pin update correctly reflects the new 0.1.0 release, keeping documentation in sync with the released version.
  • CHANGELOG.md entry for v0.1.0 follows the existing format, making this a well-structured release PR with all expected release artifacts updated.
Files requiring special attention
  • internal/version.go
  • .release-please-manifest.json
  • CHANGELOG.md

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 4771fd0 to 6331c45 Compare April 16, 2026 19:30
@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this PR is a clean release bump from 0.0.2 to 0.1.0 that involves only version string updates and alphabetical reordering of enum constants (placing github before google_drive) across files like action.go, aliases.go, auth.go, connection.go, integration.go, integrationwebcrawler.go, memory.go, and shared/shared.go. No logic changes, no new code paths, and no behavioral modifications are introduced. The review produced zero comments across 13 of 16 changed files, and the heuristic analysis found no critical, significant, or medium-severity issues.

Key Findings:

  • Version bump in .release-please-manifest.json, internal/version.go, and README.md is consistent and correct — all three sources updated atomically to 0.1.0.
  • Enum constant reordering (alphabetizing github before google_drive) is purely cosmetic and does not affect runtime behavior, as Go iota-based or string-based enum values are not position-sensitive in the way this change is applied.
  • No review comments were generated and heuristic analysis found zero issues at any severity level, making this one of the rare cases where a score of 5 is justified.
Files requiring special attention
  • internal/version.go
  • .release-please-manifest.json
  • shared/shared.go

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6331c45 to 7f7913b Compare April 18, 2026 00:30
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

entelligence-ai-pr-reviews Bot commented Apr 18, 2026

EntelligenceAI PR Summary

This PR releases v0.1.0 of the Hyperspell Go SDK with new integrations, security hardening, and internal optimizations.

  • New providers: Added Granola, Fathom, and Linear constants to all provider/source enums across action.go, aliases.go, auth.go, connection.go, integration.go, integrationwebcrawler.go, memory.go, and shared/shared.go
  • New struct fields: SelectedCount in ConnectionListResponseConnection, RequiresChannelSelection in IntegrationListResponseIntegration, FolderAncestors in Resource, Date in MemoryUpdateParams, RecencyHalfLifeDays in MemorySearchParamsOptions
  • Memory search: Replaced raw integer Effort with typed MemorySearchParamsEffort enum (minimal, low, medium, high)
  • Default HTTP client: New default_http_client.go with 10-minute ResponseHeaderTimeout; integrated into DefaultClientOptions()
  • Custom headers: client.go now reads HYPERSPELL_CUSTOM_HEADERS env var and parses newline-separated key: value pairs as request options
  • Debug log redaction: option/middleware.go redacts sensitive headers (authorization, api-key, cookie, etc.) before logging
  • JSON encoder optimization: Added skipCompaction option via WithSkipCompaction functional option; packages/param/encoder.go uses it in MarshalWithExtras and MarshalUnion
  • Internal refactor: Replaced embedded reflect.Type with explicit typ field in encoderEntry/decoderEntry structs across four internal encoder packages
  • CI security: Pinned actions/checkout, actions/github-script, and actions/setup-go to immutable commit SHAs
  • Dependency bump: @stdy/cli updated from 0.20.2 to 0.22.1 in mock/test scripts

Confidence Score: 2/5 - Changes Needed

Not safe to merge — this PR carries unresolved bugs that affect correctness at runtime. Most critically, WithSkipCompaction in internal/encoding/json/opt.go ignores its boolean argument b entirely, meaning the skip-compaction optimization is either always on or always off regardless of how callers invoke it — a silent behavioral bug. Compounding this, MarshalWithExtras in packages/param/encoder.go omits the WithSkipCompaction(true) call that was added to the normal and union marshal paths, creating an inconsistency in encoding behavior. Additionally, the Date field in memory.go (around L375-L388) uses any instead of param.Opt[time.Time] and lacks the format:"date-time" struct tag present on the analogous field in MemoryAddParams, which will cause incorrect serialization for time values. The PR itself delivers meaningful additions (Granola/Fathom/Linear provider constants, new struct fields, security hardening), but these correctness issues must be resolved before merging.

Key Findings:

  • WithSkipCompaction in internal/encoding/json/opt.go never reads its b parameter, so callers passing true or false get identical behavior — this is a logic bug that silently undermines the compaction-skipping optimization added throughout this PR.
  • MarshalWithExtras in packages/param/encoder.go does not apply WithSkipCompaction(true) unlike the normal and union marshal paths, creating an asymmetric and potentially incorrect encoding path for extras.
  • The Date field in memory.go (MemoryUpdateParams or similar struct, L375-L388) is typed as any instead of param.Opt[time.Time] and is missing the format:"date-time" struct tag, so time.Time values passed here will not be serialized correctly as date-time strings.
  • The test file packages/param/encoder_test.go uses t.Logf on shimjson output mismatches instead of t.Fatalf, meaning test failures are silently logged rather than causing test suite failures — this masks future regressions.
Files requiring special attention
  • internal/encoding/json/opt.go
  • packages/param/encoder.go
  • memory.go
  • packages/param/encoder_test.go

@entelligence-ai-pr-reviews
Copy link
Copy Markdown

Version bump from 0.0.2 to 0.1.0 with enum reordering, a new MemoryUpdateParams field, and test/doc cleanup.

  • Bumped version in .release-please-manifest.json and internal/version.go; updated CHANGELOG.md and README.md
  • Reordered github/google_drive constants alphabetically in action.go, aliases.go, auth.go, connection.go, integration.go, integrationwebcrawler.go, memory.go, and shared/shared.go
  • Added Date field to MemoryUpdateParams in memory.go for date-based ranking and filtering
  • Replaced "text" placeholder with "..." in README.md, client_test.go, and usage_test.go
  • Updated memory_test.go with realistic parameter values, expanded metadata, and corrected field usage
  • Refreshed OpenAPI spec URL and hashes in .stats.yml

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7f7913b to 8201b03 Compare April 18, 2026 08:15
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

Releases Hyperspell Go SDK v0.1.0 with enum ordering fixes, a new memory field, dependency upgrades, and updated test data.

  • Bumps PackageVersion constant and release manifest from 0.0.2 to 0.1.0
  • Refreshes OpenAPI spec URL, spec hash, and config hash in .stats.yml
  • Reorders github/google_drive provider and source constants alphabetically across action.go, aliases.go, auth.go, connection.go, integration.go, integrationwebcrawler.go, memory.go, and shared/shared.go
  • Adds Date field (any, omitzero) to MemoryUpdateParams in memory.go
  • Replaces "text" placeholder with "..." in README.md, client_test.go, and usage_test.go
  • Updates memory_test.go with realistic test data including Date, metadata fields, and vault source
  • Upgrades @stdy/cli from 0.20.2 to 0.22.1 in scripts/mock and scripts/test

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 821266a to bd1ca51 Compare May 6, 2026 20:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from bd1ca51 to c30ab5d Compare May 7, 2026 19:31
Comment thread default_http_client.go Outdated
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from c30ab5d to 7c1a0f0 Compare May 8, 2026 03:31
Comment thread default_http_client.go Outdated
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7c1a0f0 to 1d7935c Compare May 8, 2026 05:11
defaultHTTPClient performed an unchecked type assertion on
http.DefaultTransport, which panicked for any caller that had wrapped
the global transport (e.g. otelhttp.NewTransport for distributed
tracing). When the assertion fails, fall back to the wrapped
RoundTripper as-is — preserving the caller's wrapping at the cost of
ResponseHeaderTimeout, which is strictly better than panicking.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 1d7935c to e0c329e Compare May 8, 2026 05:12
Comment thread default_http_client.go Outdated
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e0c329e to bffa33b Compare May 8, 2026 17:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from bffa33b to 988ae20 Compare May 8, 2026 18:31
Pin all GitHub Actions referenced in generated workflows (both
first-party `actions/*` and third-party) to immutable commit SHAs.
Updating pinned actions is now a deliberate codegen-side bump rather
than implicit on every workflow run.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 988ae20 to 9234279 Compare May 13, 2026 04:09
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9234279 to ea92ac7 Compare May 13, 2026 15:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from ea92ac7 to 7baa80c Compare May 13, 2026 19:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7baa80c to 57940c4 Compare May 14, 2026 04:15
Comment on lines +11 to +15
func WithSkipCompaction(b bool) Option {
return func(eos *encOpts) {
eos.skipCompaction = true
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MAJOR BUG WithSkipCompaction ignores its bool argument

The parameter b is never read; the closure unconditionally sets skipCompaction = true, so WithSkipCompaction(false) silently enables skip-compaction instead of disabling it.

Suggested change
func WithSkipCompaction(b bool) Option {
return func(eos *encOpts) {
eos.skipCompaction = true
}
}
func WithSkipCompaction(b bool) Option {
return func(eos *encOpts) {
eos.skipCompaction = b
}
}
Prompt to fix with AI

Copy this prompt into your AI coding assistant to fix this issue.

In file `internal/encoding/json/opt.go`, lines 11–15, the function `WithSkipCompaction(b bool)` ignores its `b` parameter and always sets `eos.skipCompaction = true`. Fix it by replacing the hardcoded `true` with `b`: change `eos.skipCompaction = true` to `eos.skipCompaction = b`.

Comment on lines +548 to +550
if string(b) != test.expected {
t.Logf("expected %s (%s), received %s", test.expected, reflect.TypeOf(test.value), string(b))
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

NIT BUG Use t.Fatalf instead of t.Logf on shimjson output mismatch

t.Logf on mismatch means this subtest always passes regardless of what shimjson.Marshal returns, making it impossible to catch regressions in the shim encoder.

Suggested change
if string(b) != test.expected {
t.Logf("expected %s (%s), received %s", test.expected, reflect.TypeOf(test.value), string(b))
}
if string(b) != test.expected {
t.Fatalf("expected %s (%s), received %s", test.expected, reflect.TypeOf(test.value), string(b))
}
Prompt to fix with AI

Copy this prompt into your AI coding assistant to fix this issue.

In packages/param/encoder_test.go at line 549, the assertion `t.Logf("expected %s (%s), received %s", test.expected, reflect.TypeOf(test.value), string(b))` should be `t.Fatalf(...)` instead of `t.Logf(...)`. The current code silently passes the test even when shimjson.Marshal returns a wrong value. Change `t.Logf` to `t.Fatalf` to match the pattern used in the json-marshal subtest (line 539) so that output mismatches actually fail the test.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 57940c4 to d07a27e Compare May 15, 2026 09:31
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

File: packages/param/encoder.go

NIT CORRECTNESS MarshalWithExtras extras path omits WithSkipCompaction unlike normal path

The PR adds WithSkipCompaction(true) to the normal and union marshal paths (lines 69, 99) as an optimization for SDK types, but the extras branch at line 47 calls shimjson.Marshal(underlying) without the option, inconsistently missing the same optimization.

		bytes, err := shimjson.Marshal(underlying, shimjson.WithSkipCompaction(true))
Prompt to fix with AI

Copy this prompt into your AI coding assistant to fix this issue.

In packages/param/encoder.go MarshalWithExtras, add shimjson.WithSkipCompaction(true) to the shimjson.Marshal call in the `len(extras) > 0` branch (line 47) to match the optimization applied in the normal path (line 69) and MarshalUnion (line 99). The underlying value here is also an SDK struct and the same compaction-skip optimization is valid.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants