Commit Graph

218 Commits

Author SHA1 Message Date
Kurtis Van Gent
399cd8686f chore: correct formatting on intro (#279) 2025-02-06 09:45:31 -08:00
Kurtis Van Gent
9ab4dcceac chore(docs): correct reference to auth params (#278) 2025-02-06 10:32:42 -07:00
Anubhav Dhawan
4e37e5818a doc: Update README for a typo in sources link (#277) 2025-02-06 07:01:40 -07:00
Twisha Bansal
8c9305c4c8 chore(docs): fix quickstart (#276) 2025-02-06 04:40:48 -07:00
Kurtis Van Gent
cd4b35e108 chore: make docs public (#274) 2025-02-05 21:32:39 -07:00
Kurtis Van Gent
59b4282adb chore: update README and move to docs site (#273)
Updates the README and pushes doc site changes.
2025-02-06 04:01:54 +00:00
release-please[bot]
53158b07f2 chore(main): release 0.1.0 (#217)
🤖 I have created a release *beep* *boop*
---


##
[0.1.0](https://github.com/googleapis/genai-toolbox/compare/v0.0.5...v0.1.0)
(2025-02-06)


### ⚠ BREAKING CHANGES

* **langchain-sdk:** The SDK for `toolbox-langchain` is now located
[here](https://github.com/googleapis/genai-toolbox-langchain-python).

### Features

* Add Cloud SQL for SQL Server Source and Tool
([#223](https://github.com/googleapis/genai-toolbox/issues/223))
([9bad952](9bad952060))
* Add Cloud SQL for MySQL Source and Tool
([#221](https://github.com/googleapis/genai-toolbox/issues/221))
([f1f61d7](f1f61d7087))
* Add Dgraph Source and Tool
([#233](https://github.com/googleapis/genai-toolbox/issues/233))
([617cc87](617cc872d1))
* Add local quickstart
([#232](https://github.com/googleapis/genai-toolbox/issues/232))
([497fb06](497fb06fae))
* Add user agents for cloud sources
([#244](https://github.com/googleapis/genai-toolbox/issues/244))
([8452f8e](8452f8eb44))
* Add MySQL Source
([#250](https://github.com/googleapis/genai-toolbox/issues/250))
([378692a](378692ab50))
* Add MSSQL source
([#255](https://github.com/googleapis/genai-toolbox/issues/255))
([8fca0a9](8fca0a95ee))


### Bug Fixes

* Auth token verification failure should not throw error immediately
([#234](https://github.com/googleapis/genai-toolbox/issues/234))
([4639cc6](4639cc6560))
* Fix typo in postgres test
([#216](https://github.com/googleapis/genai-toolbox/issues/216))
([0c3d12a](0c3d12ae04))
* **mssql:** Fix mssql tool kind to mssql-sql
([#249](https://github.com/googleapis/genai-toolbox/issues/249))
([1357be2](1357be2569))
* **mysql:** Fix mysql tool kind to mysql-sql
([#248](https://github.com/googleapis/genai-toolbox/issues/248))
([669d6b7](669d6b7239))
* Schema float type
([#264](https://github.com/googleapis/genai-toolbox/issues/264))
([1702f74](1702f74e99))
* Typos at test cases
([#265](https://github.com/googleapis/genai-toolbox/issues/265))
([b7c5661](b7c5661215))
* Update README and quickstart with the correct async APIs.
([#269](https://github.com/googleapis/genai-toolbox/issues/269))
([21eef2e](21eef2e198))
* Update tool invoke to return json
([#266](https://github.com/googleapis/genai-toolbox/issues/266))
([ad58cd5](ad58cd5855))

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
v0.1.0
2025-02-05 18:46:38 -08:00
Yuan
c6e3f731e2 chore(main): release 0.1.0 (#272)
Release-As: 0.1.0
2025-02-05 17:07:38 -08:00
Yuan
5fedbde87c chore: remove sdks and doc fixes (#271)
Remove `/sdks` folder and fix README file.
Update quickstart to remove installing python package from git repo.
2025-02-06 00:24:52 +00:00
Yuan
2d80922900 doc: fix typo for quickstart (#270) 2025-02-05 23:58:53 +00:00
Anubhav Dhawan
21eef2e198 fix: Update README and quickstart with the correct async APIs. (#269) 2025-02-05 22:39:24 +00:00
Kurtis Van Gent
2a78de8f46 chore: add FAQ (#268)
Adds a simple FAQ.

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-02-05 22:31:51 +00:00
Anubhav Dhawan
1e0dd04f32 doc: update READMEs for sync/async (#237)
Follows
https://github.com/googleapis/genai-toolbox-langchain-python/pull/15
2025-02-05 15:19:25 -07:00
Yuan
ad58cd5855 fix: update tool invoke to return json (#266)
Return actual rows as `[]any` that contains `map` of results. Each `map`
represent a row, with the key being column name.
2025-02-05 13:45:01 -08:00
Yuan
1702f74e99 fix: schema float type (#264)
float type is "float" in manifest.
2025-02-05 10:04:44 -08:00
Kurtis Van Gent
91b134a2a3 chore: move telemetry and deploy pages (#263) 2025-02-04 19:51:24 -07:00
Yuan
b7c5661215 fix: typos at test cases (#265)
Fix port and host typo at test cases
2025-02-04 22:54:36 +00:00
Kurtis Van Gent
a402c9e670 chore: improve quickstart (#262)
Improves the quick start to mention more Chat Models, and uses info boxes now that they are added.
2025-02-04 15:09:24 -07:00
Kurtis Van Gent
1104ec9668 chore: move AuthSources to new docsite (#236)
Migrations the AuthSources parts of the documentation to the new
docsite.
2025-02-04 19:26:12 +00:00
Kurtis Van Gent
77a9999a24 chore: migrate tools to docsite (#235)
This migrates the 'tools' documentation to the new docsite.
2025-02-04 19:18:35 +00:00
Kurtis Van Gent
69395fa637 chore(docs): fix favicon (#260)
Fixes the favicon for the docs site.
2025-02-04 15:45:41 +00:00
Yuan
a0ac5334d1 chore: return error for untested fields in tools.yaml (#239)
This only checks within `SourceConfig`, `ToolConfig`, and
`AuthSourceConfig`.

Error when an unknown field is provided:
`2025-01-27T22:43:46.988401-08:00 ERROR "unable to parse tool file at
\"tools.yaml\": unable to parse as \"cloud-sql-postgres\": [2:1] unknown
field \"extra\"\n 1 | database: test_database\n> 2 | extra: here\n ^\n 3
| instance: toolbox-cloudsql\n 4 | kind: cloud-sql-postgres\n 5 |
password: postgres\n 6 | "`

Error when a required field is not provided:
`2025-01-27T17:49:47.584846-08:00 ERROR "unable to parse tool file at
\"tools.yaml\": validation failed: Key: 'Config.Region' Error:Field
validation for 'Region' failed on the 'required' tag"`

---------

Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
2025-02-03 15:30:27 -08:00
dependabot[bot]
d2efd8c11d chore(deps): bump golang.org/x/net from 0.32.0 to 0.33.0 (#230)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.32.0 to
0.33.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dfc720dfe0"><code>dfc720d</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="8e66b04771"><code>8e66b04</code></a>
html: use strings.EqualFold instead of lowering ourselves</li>
<li><a
href="b935f7b5d7"><code>b935f7b</code></a>
html: avoid endless loop on error token</li>
<li><a
href="9af49ef148"><code>9af49ef</code></a>
route: remove unused sizeof* consts</li>
<li><a
href="6705db9a4d"><code>6705db9</code></a>
quic: clean up crypto streams when dropping packet protection keys</li>
<li><a
href="4ef7588d2b"><code>4ef7588</code></a>
quic: handle ACK frame in packet which drops number space</li>
<li><a
href="552d8ac903"><code>552d8ac</code></a>
Revert &quot;route: change from syscall to x/sys/unix&quot;</li>
<li><a
href="13a7c0108b"><code>13a7c01</code></a>
Revert &quot;route: remove unused sizeof* consts on freebsd&quot;</li>
<li>See full diff in <a
href="https://github.com/golang/net/compare/v0.32.0...v0.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/net&package-manager=go_modules&previous-version=0.32.0&new-version=0.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/googleapis/genai-toolbox/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Yuan <45984206+Yuan325@users.noreply.github.com>
2025-02-03 14:43:37 -08:00
Yuan
b578e6ce89 docs(mssql): add docs for source (#256)
Add docs for `mssql` source, and update for `mssql-sql` tool.
2025-02-03 18:34:01 +00:00
Yuan
2a7a1eb49c ci(mssql): add integration test (#257)
Add integration test for `mssql`.
2025-02-03 18:27:22 +00:00
Shivaji Kharse
617cc872d1 feat: add dgraph tool and source (#233)
* add dgraph tool and source
2025-02-01 15:32:06 -07:00
Yuan
8fca0a95ee feat(sqlserver): add mssql source (#255)
Add `mssql` source for non-cloud sql server.
2025-01-31 19:13:54 +00:00
Yuan
5f9fc762e5 docs(mysql): add docs for source (#251)
Add docs for `mysql` source.
2025-01-31 19:07:41 +00:00
Yuan
1764a4918c ci(mysql): add integration test (#252)
Add integration test for `mysql`.
2025-01-31 18:54:00 +00:00
Yuan
378692ab50 feat(mysql): add source (#250)
Add `mysql` source.
2025-01-31 10:48:05 -08:00
Twisha Bansal
b0c94946d6 chore(docs): Fix typo and language (#254) 2025-01-30 20:18:29 +05:30
Yuan
8452f8eb44 feat: add user agent to cloud databases (#244)
Add user agent to cloud databases that provides us anonymized data
request count, number of users, number of projects, and other
environment settings.

User agent is using the format: `genai-toolbox/$version+metadata`
2025-01-29 17:19:52 -08:00
Yuan
8152a98b7a ci(cloudsqlmysql): add integration tests (#243)
Add integration test for CloudSQL for MySQL.

Added other integration tests' tag into `.golangci.yaml`, and fixing
lint errors.

Moved getCloudSQLDialOpts to `common_test.go` since it is used across
all three cloud sql integration tests.
2025-01-29 17:03:40 -08:00
Yuan
1357be2569 fix(mssql): fix mssql tool kind to mssql-sql (#249)
Fixing `mssql` tool to `mssql-sql`.
2025-01-29 23:46:01 +00:00
Yuan
669d6b7239 fix(mysql): fix mysql tool kind to mysql-sql (#248)
Update `mysql` tool to `mysql-sql`.
2025-01-29 23:09:13 +00:00
Yuan
b0ecc16a43 docs(cloudsql-pg): fix typos (#247)
Fix typos in cloud sql pg docs.
2025-01-29 15:04:54 -08:00
Yuan
a7b4f20c3c docs(cloudsql-mssql): fixing some typo and add doc to github pages (#246)
Fixing typo to be consistent with other cloudsql docs, and add source
docs to github pages.
2025-01-29 22:45:55 +00:00
Yuan
a900e562d6 docs(cloudsql-mysql): add docs for source and tools (#240)
Add docs for `cloud-sql-mysql` source and `mysql-sql` tool.
2025-01-29 14:41:40 -08:00
Kurtis Van Gent
497fb06fae feat: add local quickstart (#232)
This is a continuation of #218, which add a local quickstart for running
Toolbox with Python and LangGraph.

---------

Co-authored-by: Twisha Bansal <twishabansal@google.com>
Co-authored-by: Anubhav Dhawan <anubhav756@gmail.com>
2025-01-24 12:18:19 -07:00
Wenxin Du
4639cc6560 fix: Auth token verification failure should not throw error immedicately (#234)
Currently, we are throwing 401 error immediately after auth token
verification failure. This is not expected in the following situations:
1. Non-auth tool invocation with auth token that is invalid.
2. Auth tool invocation with all the required auth token, but the header
contains extra non-required token that is invalid
These requests should pass the authorization check but fail under the
current implementation.

Change made in this PR:
1. Do not throw error immediately after auth token verification failure.
Instead only log it and continue to the next header iteration.
2. In the parseParams() method, if an auth parameter is missing, we
should error with the message telling the user that either the auth
header is missing or is invalid.
2025-01-24 08:49:51 -07:00
Wenxin Du
9bad952060 feat: Add Cloud SQL for SQL Server Source and Tool (#223)
1. `sql/database` provides a `Scan()`interface to scan query results
into typed variables. Therefore we have to create a slice of typed
variables (types retrieved from rows.ColumnTypes()) to pass them into
`Scan()`. Using []byte works but makes the printing result different
from other tools (e.g [1] instead of %!s(int32=1)]
2. MS SQL supports both named (e.g @name) and positional args (e.g @p2),
so we have to check if the name is contained in the original statement
before passing them into `db.Query()` as either named arg or as values.
2025-01-23 21:21:12 +08:00
Kurtis Van Gent
1de3853006 chore: move sources documentation to docsite (#225)
Migrates the docs/sources documentation to the new docsite.

---------

Co-authored-by: Anubhav Dhawan <anubhav756@gmail.com>
2025-01-22 16:57:06 +00:00
Anubhav Dhawan
e2faaf2069 fix: Add coverage file to .gitignore (#228) 2025-01-22 08:45:27 +00:00
Anubhav Dhawan
779bf6b9a2 fix(langchain-sdk): Inherit from BaseTool and implement placeholder _run method.
This is some ground-work before we add sync tool calls support to ToolboxTool.
2025-01-22 14:04:43 +05:30
Yuan
f1f61d7087 feat: add cloudsql mysql source and tool (#221)
Add CloudSQL for MySQL source and tool.

CloudSQLMySQL source is initialize with the following config:
```
sources:
    my-cloudsqlmysql-source:
        kind: cloud-sql-mysql
        project: my-project-name
        region: my-region
        instance: my-instance-name
        user: my_user
        password: my_pass
        database: my_db
        # ipType: public # The default dialect is public.
```

MySQL tool is initialize with the following config.
```
tools:
    test_tool:
        kind: mysql
        source: my-cloudsqlmysql-source
        description: >
            Testing tool.
        statement: "SELECT 1;"
```
2025-01-21 13:53:37 +00:00
Anubhav Dhawan
0937200644 doc(langchain-sdk): Update LangChain SDK README according to the updated APIs for ToolboxTool. (#193) 2025-01-20 07:31:47 +00:00
Anubhav Dhawan
e0ee1286f9 feat(langchain-sdk): Add features for binding parameters to ToolboxTool class. (#192)
The newly implemented `ToolboxTool` class manages tool state and
supports this new feature of binding parameters along wiith the existing
OAuth.

> [!NOTE]
> These changes are done in the LlamaIndex SDK as well in #203, along
with documentation updates in #193.
2025-01-20 12:57:50 +05:30
Anubhav Dhawan
a136308f55 feat(langchain-sdk)!: Migrate existing state and APIs to a tools level class. (#171)
# `ToolboxTool` Class

The newly implemented `ToolboxTool` class manages tool state and
supports features like bound params and OAuth.

We have also added the logic as well as state related to bound params to
`ToolboxTool` in #192.

`ToolboxTool` follows a functional approach, meaning it ensures that the
internal tool state remains unchanged and a new copy of the tool is
updated with the new values of auth tokens (or bound params from #192).

## `ToolboxTool` Class Diagram

To better explain, here's a visual diagram of the ToolboxTool class.

The boxes have member function names, and the "red" box means a function
is mutating the internal state, while "green" means it does not change
the internal state (like a C++ `const` function or JS immutable
function). The red box also shows the member variable they mutated.

![Image of a diagram showing the `ToolboxTool` class with member
functions and their colors indicating whether they mutate the internal
state](https://github.com/user-attachments/assets/a59eadf2-4aa5-49f0-9b8d-65864e26df07)

## Constructor

From the diagram above, it is evident that all the state changes, or
rather setting of the state, is done in the class constructor.

For further reference, here's a visual explanation of the functionality
of the constructor showing which params we add as auth tokens, which
params we add to the underlying schema, and for what the error/warnings
are thrown.

![Image of a diagram showing the functionality of the `ToolboxTool`
constructor](https://github.com/user-attachments/assets/b4e6c0a1-f0da-4cf5-a56c-976c4c4b006e)

> [!NOTE]
> Documentation updates are done by #193 and the corresponding changes
to the LlamaIndex SDK are done by #203.
2025-01-20 12:38:36 +05:30
Twisha Bansal
b6e753add9 test(llamaindex-sdk): Add more test cases to e2e tests (#219)
Test for tool calls with

1. Missing params
2. Wrong param type
2025-01-17 06:11:08 +00:00
Yuan
45fc046437 chore: migrate yaml library to goccy/go-yaml (#211)
Migrate yaml library from
[gopkg.in/yaml.v3](https://pkg.go.dev/gopkg.in/yaml.v3) to
[goccy/go-yaml](https://github.com/goccy/go-yaml).

We are trying to add validation feature to the unmarshaling of yaml.
However, `yaml.v3` currently does not support that and the library had
not been actively maintained for awhile. This migration will allow us to
use validation processing such as
[go-playground/validator](https://github.com/go-playground/validator)

---------

Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
2025-01-16 09:15:18 -08:00