KickSide GitLab — access-token connection provider for gitlab.com and self-managed GitLab with project discovery.
Run
wippy run kickside/gitlabKickSide GitLab
GitLab as a KickSide connection provider for gitlab.com and self-managed GitLab instances.
What It Declares
| Entry | Kind | Purpose |
|---|---|---|
| kickside.gitlab.connection:gitlab_connection | contract.binding | Access-token connection (meta.provider: gitlab) implementing kickside.connection:connection, kickside.contract:component, and kickside.contract:deletable. |
| kickside.gitlab.client:api | library.lua | GitLab REST API v4 client: base URL normalization, auth headers, error mapping, pagination. |
| kickside.gitlab.client:transport | library.lua | Resolves a connection component into a Conn. |
Credentials
The generic Connections page renders the binding's credential_schema:
base_url(optional): the GitLab instance URL. Blank meanshttps://gitlab.com. Only absolutehttp/httpsURLs are accepted; the scheme and host are lowercased, trailing slashes and a pasted/api/v4are removed, and a sub-path such ashttps://example.com/gitlabis kept. The API base is<base_url>/api/v4.token(required): a personal, group, or project access token, sent as thePRIVATE-TOKENheader.read_apisupports repository reads; useapifor the Writer capability.
Connection Methods
test_connection:GET /user.discover_resources:GET /projects?membership=true&simple=true&order_by=path&sort=ascwithpage/per_pagefromcursor/limit(1..100, default 100) andsearchfromq. Rows have typegitlab_project,id= numeric project id as a string,key/name=path_with_namespace,url=web_url, andmetadatawithowner(namespacefull_path),visibility,default_branch, andupdated_at(last_activity_at). The simple representation carries noarchivedflag, so rows omit it.next_cursorcomes from theX-Next-Pageheader, falling back to theLinkheader.get_status/delete:kickside.connection:base_connectionhelpers.
Tests
make test boots the offline harness in test/ and runs the packaging and
unit suites in test/suites/.
Agent capabilities
Reader, Writer, and Manager appear in the agent capability picker and use the
shared connection selector. Read and write tools declare typed actions in
traits/_index.yaml and implement them in repository.lua. Repository tools
return {success, data, next_page?}; infrastructure failures return a typed error,
and rejected provider requests preserve structured status and rate-limit details.
Tokens and secret-like response fields are redacted. Read capability tools reject
write actions. File edits target an explicit branch; merges use an expected head
SHA where the provider API supports it.