Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 49036,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 1525154,
"HTML": 11567,
"Shell": 5083,
"Makefile": 1190,
"Dockerfile": 1015
},
"pushed_at": "2026-07-17T13:08:32Z",
"created_at": "2025-11-15T16:41:25Z",
"owner_type": "Organization",
"updated_at": "2026-07-17T12:52:31Z",
"description": "Build AI agents in light speed",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "https://stellarlink.co",
"name": "重庆星纬智联 stellarlink.co",
"type": "Organization",
"login": "stellarlinkco",
"company": null,
"location": "China",
"followers": 47,
"avatar_url": "https://avatars.githubusercontent.com/u/216462265?v=4",
"created_at": "2025-06-16T01:18:41Z",
"is_verified": null,
"public_repos": 14,
"account_age_days": 401
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2026-07-17T13:08:40Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-05-09T15:02:50Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-04-07T05:26:02Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-03-22T13:28:58Z"
},
{
"tag": "v0.9.5",
"kind": "patch",
"published_at": "2026-03-04T05:17:12Z"
},
{
"tag": "v0.9.3",
"kind": "patch",
"published_at": "2026-02-27T14:17:32Z"
},
{
"tag": "v0.9.2",
"kind": "patch",
"published_at": "2026-02-13T15:06:05Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2026-02-10T14:17:14Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-02-10T08:28:17Z"
},
{
"tag": "v0.8.4",
"kind": "patch",
"published_at": "2026-02-10T03:15:47Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2026-02-08T15:13:08Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-02-08T09:21:58Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-02-08T09:12:09Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-02-07T10:47:59Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-02-06T15:23:41Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-02-06T06:58:10Z"
},
{
"tag": "v0.6.8",
"kind": "patch",
"published_at": "2026-02-04T02:01:12Z"
},
{
"tag": "v0.6.7",
"kind": "patch",
"published_at": "2026-02-03T14:23:20Z"
},
{
"tag": "v0.6.6",
"kind": "patch",
"published_at": "2026-01-26T07:50:28Z"
},
{
"tag": "v0.6.5",
"kind": "patch",
"published_at": "2026-01-26T07:32:23Z"
},
{
"tag": "v0.6.4",
"kind": "patch",
"published_at": "2026-01-03T14:27:02Z"
},
{
"tag": "v0.6.3",
"kind": "patch",
"published_at": "2025-12-30T07:13:21Z"
},
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2025-12-29T16:13:54Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2025-12-29T06:28:10Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2025-12-27T09:20:08Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2025-12-26T03:56:06Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2025-12-24T09:57:32Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2025-12-23T03:37:14Z"
},
{
"tag": "v0.4.3",
"kind": "patch",
"published_at": "2025-12-22T14:56:44Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2025-12-18T15:35:36Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2025-12-18T06:40:15Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2025-12-12T16:24:50Z"
},
{
"tag": "0.3",
"kind": "other",
"published_at": "2025-11-26T14:58:51Z"
},
{
"tag": "0.2",
"kind": "other",
"published_at": "2025-11-23T15:51:29Z"
},
{
"tag": "0.1",
"kind": "other",
"published_at": "2025-11-22T09:09:59Z"
}
],
"recent_commits": [
{
"oid": "00317e1ccbb7738abbd86b78869f0cb1d573efc4",
"body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 7.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v5...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n dependency-version: '7'\n depen\n[…]\nirect:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): bump actions/setup-go from 5 to 7 (#110)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-17T12:52:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c1913a851d9db0b586d2cc13820a44d7ec024b19",
"body": null,
"is_bot": false,
"headline": "docs(readme): document engineering workflow",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-05-15T14:55:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "520402aabfad73cdbabb5e3efec54c0a62f8f860",
"body": null,
"is_bot": false,
"headline": "chore(eng): initialize engineering guardrails",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-05-15T14:52:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2729de26949071307e392b76cf1e2310150279db",
"body": null,
"is_bot": false,
"headline": "fix segmented parallel tool execution",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-05-15T14:28:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a410380267f66829f32b70356f6579b9bf9c9122",
"body": "fix(model): replace \".\" placeholder with zero-width space for empty C…",
"is_bot": false,
"headline": "Merge pull request #97 from etrace-io/zerowidthspace",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-05-15T13:17:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d876f319ea107d9aaefaea4823c95848dad11c3",
"body": "…ontent\n\nOpenAI requires non-empty Content in user messages. Using visible\n\".\" pollutes the UI and creates feedback loops when the model\nechoes it back. Switch to (zero-width space) instead.",
"is_bot": false,
"headline": "fix(model): replace \".\" placeholder with zero-width space for empty C…",
"author_name": "codingcrush",
"author_login": "CodingCrush",
"committed_at": "2026-05-14T06:04:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e7c9ca39f0211415939886ab2bd813153074b8f",
"body": "* feat(api): expose session history for external persistence\n\n* fix(api): harden session history persistence API\n\nReturn session history as immutable snapshots and surface loader failures so callers do not silently lose restored context.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>\n\n---------\n\nCo-authored-by: codingcrush <codingcrush@163.com>\nCo-authored-by: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(api): harden session history persistence (#94)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-05-09T14:57:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e82fc4a62b0f8314942c6face0ca30f0ec984ac3",
"body": "…emantics (#93)",
"is_bot": false,
"headline": "feat(glob): replace filepath.Glob with doublestar for bash-style ** s…",
"author_name": "CodingCrush",
"author_login": "CodingCrush",
"committed_at": "2026-05-09T13:58:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "883f33eb1f01b6f2083326b1668452ab73a17bb3",
"body": null,
"is_bot": false,
"headline": "fix(ci): stabilize windows stop hook test",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-04-07T05:15:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be6348c0a0844e89b5bcbdbae3713e51e808cf33",
"body": null,
"is_bot": false,
"headline": "fix(ci): resolve errcheck failures",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-04-07T03:25:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24967d114caddedb62178949b2ed79183c07f357",
"body": null,
"is_bot": false,
"headline": "feat(v2.2): add teams orchestration",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-04-07T03:17:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e98a197d97f4f0b38348d08772980c4f72813a2",
"body": "Group A — Agent Loop Reliability:\n- A1: micro-compaction — strips reasoning blocks, media, truncates tool\n results at zero LLM cost (pkg/api/micro_compact.go)\n- A2: token budget + diminishing returns detection (pkg/api/token_budget.go)\n- A3: tool concurrency partitioning — read-only/concurrency-saf\n[…]\nkg/hooks/types.go)\nNew example: examples/13-v21-features — all features verified with\nstub models, no API key required\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat(v2.1): implement all 17 AEC features",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-04-07T02:44:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4b0950903f6dfbc80703a93b553479a636bcc980",
"body": "os.WriteFile on Linux emits two fsnotify events (truncate + write).\nWithout debouncing, the watcher fires on truncate and reads an empty\nfile. Add 50ms debounce via time.AfterFunc so the reload happens after\nthe write completes.\n\nFixes flaky TestRulesLoader_WatchChanges in CI.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(config): debounce rules watcher to prevent reading truncated files",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-03-20T03:05:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f137928662ef893af10be8c5c1987bca17d9ff1",
"body": "- Delete RELEASE_NOTES.md (outdated v1 content, consolidated into CHANGELOG)\n- Add v2.0.0 entry covering module rename, package consolidation, API changes\n- Remove duplicate Chinese entries from historical versions\n- Clean up old entries for consistency\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "docs: remove RELEASE_NOTES.md, update CHANGELOG.md for v2",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-03-20T02:31:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8ea5c74de7be63849ec68013ad28cdddcd3923b",
"body": "Fix outdated code examples in Chinese README to match current v2 API:\n- model.NewAnthropicProvider() → &model.AnthropicProvider{}\n- middleware.Middleware{} → middleware.Funcs{}\n- RunStream without error return → with error return\n- String event types → typed constants (api.EventContentBlockDelta)\n- \n[…]\nAutoCompact section and HTTP event types\n- Add Trace/SmartDefaults doc links\n- Add Features/Examples section structure\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "docs: sync README_zh.md with v2 API changes",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-03-20T02:19:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ee0cbb185434249f9d5228a7c190556a342b3ebe",
"body": "…n, dead code removal (#90)\n\n* chore: rename module to github.com/stellarlinkco/agentsdk-go\n\n* docs: update module path, .agents/ config refs, and AGENTS.md for v2\n\n* feat(v2): remove deprecated packages (acp, agent, core, prompts, tasks, commands)\n\n* feat(v2): remove pkg/security (absorbed into pkg\n[…]\nv2): drop approval queue doc\n\n* fix(ci): lint clean + stabilize tests\n\n* fix(config): stabilize watcher test; honor HOME\n\n* chore(v2): meet PRD metrics; trim tool docs\n\n* docs(v2): add upgrading guide",
"is_bot": false,
"headline": "feat(v2): SDK v2 simplification — module rename, package consolidatio…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-03-20T02:10:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a9179b60a1f5f53ba8416d3075e463146ade9a3",
"body": "…… (#87)\n\n* fix:After activating the approval queue, there is a problem with the whitelist of approval commands.\n\n* fix: align permission approvals with command-level cache\n\n* docs: update approval queue semantics\n\n* docs: clarify ApprovalWhitelistTTL semantics\n\n* test: make approval expiration dete\n[…]\nved records with whitelist\n\n* fix(security): don't reuse auto-approved records as command approvals\n\n---------\n\nCo-authored-by: zhanbei <zhanbei@databuff.com>\nCo-authored-by: ben <evanxian9@gmail.com>",
"is_bot": false,
"headline": "fix:After activating the approval queue, there is a problem with the …",
"author_name": "desmond",
"author_login": "zhanbei1",
"committed_at": "2026-03-15T15:57:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bc2681cc9d3e089ea172552d7b2d60cc553883ea",
"body": "* fix(compact): preserve tool transactions during compaction\n\n* fix(compact): keep preserved user text after summary\n\n* fix(rollout): avoid compact event filename collisions\n\n---------\n\nCo-authored-by: ben <evanxian9@gmail.com>",
"is_bot": false,
"headline": "fix(compact): preserve tool transactions during compaction (#85)",
"author_name": "LiHtCocoa",
"author_login": "LiHtCocoa",
"committed_at": "2026-03-15T12:21:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64ce21e1c93df2a22e450eec10e01fc7815b395b",
"body": "* test(api): fix hook-based tests on Windows\n\n* feat(acp): add sdk-first adapter, session replay, and cli mode\n\n* test(acp): add in-process dual-end protocol coverage\n\n* refactor(acp): reuse api history persistence helpers\n\n* feat(acp): enforce ask/code/architect mode semantics\n\n* feat(acp): wire sd\n[…]\n* feat(acp): bridge Edit via client fs capabilities\n\n* fix(lint): address errcheck and gofmt issues\n\n* fix(acp): harden sessions and test timeouts\n\n---------\n\nCo-authored-by: ben <evanxian9@gmail.com>",
"is_bot": false,
"headline": "feat(acp): add SDK-first ACP adapter with stable session APIs (#80)",
"author_name": "yoke",
"author_login": "yoke233",
"committed_at": "2026-03-04T04:37:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "898ff895f58ae6099d96c23c4784bdbc9947e101",
"body": "* tool/bash: unblock stream readers after timeout\n\n* tool/bash: fix stream timeout unblock without output race",
"is_bot": false,
"headline": "tool/bash: prevent StreamExecute hang after timeout/cancel (#82)",
"author_name": "LiHtCocoa",
"author_login": "LiHtCocoa",
"committed_at": "2026-03-04T04:15:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "88413ee7557b9eb4404174a05165f65ce937f50f",
"body": null,
"is_bot": false,
"headline": "message: count reasoning and tool result in naive counter (#81)",
"author_name": "LiHtCocoa",
"author_login": "LiHtCocoa",
"committed_at": "2026-03-04T04:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a96b9897fb1a5a8f88aae98016d1a8522e9c33ef",
"body": "* model/openai: encode tool arguments as JSON object\n\nDefault assistant tool call function.arguments to {} when Arguments is nil or marshaling fails.\n\nFixes #78.\n\n* test: fix errcheck in openai e2e test\n\n* test(middleware): close trace middleware",
"is_bot": false,
"headline": "Fix OpenAI tool call arguments JSON encoding (#79)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-27T14:12:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb19b18ca7fdfb18ca72ce84910b5e9b4ddf6957",
"body": "- Increase default maxCommandBytes from 4096 to 32768\n- Increase default maxArgs from 64 to 512\n- Add SetMaxCommandBytes/SetMaxArgs on Validator\n- Add SetCommandLimits on Sandbox and BashTool\n- Enables code-generation agents to write files via bash\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat(security): configurable command length and argument limits",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-16T14:49:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f58b34e4d96a36b1ea5c1d2eaff40f8fa1aee1ba",
"body": "- OpenTelemetry: 1.39.0 → 1.40.0\n- gRPC: 1.77.0 → 1.78.0\n- grpc-gateway: 2.27.3 → 2.27.7\n- Add openai-go v1.12.0\n- Update golang.org/x packages (net, oauth2, sys, text, tools)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "chore(deps): update dependencies in examples/08-askuserquestion",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T15:05:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75bfc7fbbc4eb874db57d9e4d83f2e5437cb487e",
"body": "- Hook tests: write .bat scripts on Windows with cmd-compatible syntax\n (exit /b, echo, findstr) instead of Unix shell scripts\n- executor_additional_test: use \"cd >&2\" on Windows instead of \"pwd >&2\"\n- hooks_adapter_test/options_more_test: use \"&\" command chaining and\n \"exit /b\" for inline command\n[…]\ne.go: add Close() to release open file handles, fixing Windows\n TempDir cleanup failure due to file locking semantics\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix: make tests cross-platform for Windows CI",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T14:08:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2cc12940d9af68b323fb0f80df2b73fff80d67fe",
"body": "Split the single build job into test (ubuntu/macos/windows matrix)\nand lint-and-coverage (ubuntu-only) to verify cross-platform\ncompilation and test correctness.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "ci: add multi-platform test matrix for macOS and Windows",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T13:32:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9698f31be21aea07e5c08e93a2f596a246c159ce",
"body": "…thForWalk\n\nRefactor buildResponsesMultimodalInput to eliminate 5 duplicate switch\ncases via responsesRoleForMessage helper. Add tests for system/developer/\nunknown role branches, TaskStore.Close no-op, and splitPathForWalk.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "test: improve coverage for multimodal roles, TaskStore.Close, splitPa…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:33:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45f00e958d1ec7fe16c2eb4a43568074eebeaa99",
"body": "Remove trailing blank lines flagged by golangci-lint gofmt check.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "style: fix gofmt formatting issues",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:09:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34296d6aeb4a76ee1288b1565758a564ec5095fb",
"body": "The looksLikeScriptPath function was removed when newShellCommand was\nsimplified to a 2-branch GOOS check. The test referencing it caused\na CI typecheck failure.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(ci): remove stale TestLooksLikeScriptPath test",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:06:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8047f8b20b79770e8ede86faee158553aec62599",
"body": "feat(mcp): add tool filters, per-tool timeouts, and review fixes",
"is_bot": false,
"headline": "Merge pull request #77 from cexll/feat/mcp-tool-filters",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:03:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5e55b89f5deb43e452df0e6dab56694d205428a",
"body": null,
"is_bot": false,
"headline": "feat(mcp): add tool filters/timeouts and address review regressions",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T12:02:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5888c5cc947677e860cdf7cc476d50200d30efaa",
"body": "feat(model): add multimodal content block support for OpenAI",
"is_bot": false,
"headline": "Merge pull request #76 from cexll/feat/openai-multimodal",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:01:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d9bb6c9178b397b19e503547833a111a8aa4255",
"body": "feat(tasks): inject task store and allow custom subagent types",
"is_bot": false,
"headline": "Merge pull request #75 from cexll/feat/taskstore-interface",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:00:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae8a96adb367a33b64cb802e25d93fb54c0fffac",
"body": "fix(security): split openNoFollow by platform + review fixes",
"is_bot": false,
"headline": "Merge pull request #74 from cexll/fix/windows-security",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T12:00:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7fb692070b03d36f3c1b71aa3f71a557d1331203",
"body": "- Simplify newShellCommand to 2-branch GOOS check\n- Document Windows openNoFollow security gap\n- Fix variable shadowing in prompts/hooks.go and skills.go\n- Revert trace.go performance regression\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix: address review issues for Windows security PR",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T11:26:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b337c18ae6566fae0671efec901071ee0a58d033",
"body": "- Add tool role handling in buildResponsesMultimodalInput\n- Document openAIImageURL default media type\n- Add test for tool message preservation\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix: handle tool messages in multimodal input and document defaults",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T11:22:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2171272be66fb90657a7ff4ca2ee9a6a847a9151",
"body": "- Add Snapshot() to Store interface for completeness\n- Remove redundant initLocked() in NewTaskStoreFromSnapshot\n- Document Close() no-op rationale\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix: improve TaskStore interface design",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-13T11:20:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7e781dfc7aac1bba718cb5db1d7462b0ef99959",
"body": null,
"is_bot": false,
"headline": "fix(model): map ContentBlocks images for OpenAI chat and responses",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T11:16:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7aedfeea987491e810775a20aef7930f994aa38b",
"body": null,
"is_bot": false,
"headline": "feat(tasks): inject task store and allow custom subagent types",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T11:16:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58f5d1f4ffccdcfdf93c65dffea94a0db2740129",
"body": null,
"is_bot": false,
"headline": "fix(windows): stabilize cross-platform paths and tests",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T11:16:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "671cdc897a76c358acc0406d45c2d7d683bbb7e1",
"body": null,
"is_bot": false,
"headline": "fix(security): normalize windows paths in resolver and matcher",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T11:16:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a8cec454d31b95123a7786ebb64667e9b4a3efea",
"body": null,
"is_bot": false,
"headline": "fix(security): split openNoFollow by platform",
"author_name": "yaguang",
"author_login": "yoke233",
"committed_at": "2026-02-13T11:16:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e51f03ceb22d22258ea5b8f5c55ca99f59762e6c",
"body": "Generated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "docs(readme): translate Chinese tool registration notes to English",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-11T12:02:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df5c5f035fe3d4e454fede0d7e7edd0f629c8477",
"body": "The 05-embed → 06-embed rename left .gitignore still referencing the old\npath, so examples/06-embed/.claude/settings.json was ignored and the\ngo:embed directive failed in CI.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(ci): update .gitignore for renamed 06-embed example",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-11T11:59:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c25337ea91a114418d6f3196cb742a8d0a6a7f6f",
"body": "…ayout\n\nRemove obsolete examples (05-feature-test, 05-multimodel-llm, 06-v0.4.0-features),\nrenumber 05-embed → 06-embed and 05-multimodel → 07-multimodel to make room for\n05-custom-tools, and update all documentation to reflect the new 12-example structure.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "refactor(examples): renumber and consolidate examples to 12-example l…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-11T11:55:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49b024e33a80e1c0933115bf2e28a3e0aa6fec95",
"body": "…sages\n\nWhen a user message has both Content (text prompt) and ContentBlocks\n(images/documents), the text was silently dropped during Anthropic API\nconversion. This caused multimodal requests to lose the user's text\ninstruction, making the model unable to understand what to do with the\nattached media.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(model): include text content when ContentBlocks exist in user mes…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T14:16:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d6b28f0450e0ae17bba6520c7dd201aec166c84",
"body": "…ments\n\nAdd ContentBlocks []ContentBlock alongside existing Content string field\nto support images (base64/URL) and PDF documents in user messages with\nzero breaking changes. When ContentBlocks is non-empty it takes precedence;\nwhen empty, Content is used as before.\n\nChanges across 8 production file\n[…]\napi/runtime_helpers.go: package bridge functions\n- examples/12-multimodal: end-to-end demo (text, base64 image, mixed)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat(model): add multimodal content block support for images and docu…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T08:27:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "babee96c3d04897b4150e4f9438ecf52dacadf10",
"body": "Apply gofmt to fix struct field alignment in openai.go, interface.go,\nconverter.go, runtime_helpers.go and doc comment formatting in example.\nSuppress errcheck for best-effort reasoning_content JSON extraction.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "fix(ci): resolve gofmt alignment and errcheck lint failures",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T03:23:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3c188f5fbf8dc5e29264b48cfef5c6c4831f7eb",
"body": "Support reasoning_content/thinking blocks for both OpenAI and Anthropic\nproviders. Tested with DeepSeek deepseek-reasoner via both endpoints.",
"is_bot": false,
"headline": "Merge PR #72: reasoning_content passthrough for thinking models",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T03:14:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d09ce72c5a4848f42e6d86e8a440b75bff12f40d",
"body": "Extract thinking blocks from Anthropic responses into ReasoningContent,\necho them back via NewThinkingBlock in buildAssistantContent, pass through\nunknown model names in mapModelName, and set WithAuthToken for Bearer auth\ncompatibility with DeepSeek's Anthropic endpoint. Add integration tests\nand update example to support --provider anthropic flag.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat(model): add Anthropic provider reasoning_content support",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T03:14:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80a10f6cf480ef7c2c5a2cd8dc6e024ae036ba4a",
"body": "…n tests\n\nAdd unit tests verifying ReasoningContent passthrough in CloneMessage,\nconvertMessages, and buildOpenAIAssistantMessage. Add DeepSeek integration\ntests (non-streaming, streaming, multi-turn) and an example demonstrating\nreasoning_content capture and display.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "test(model): add reasoning_content unit tests and DeepSeek integratio…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-02-10T02:20:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9b20da710419182df910442fd2c2b60266237e2",
"body": "Thinking models (DeepSeek-R1, Kimi k2.5, kimi-k2-thinking) return a\nreasoning_content field in assistant messages. Some providers like\nMoonshot require this field echoed back in conversation history,\notherwise multi-turn requests fail with 400 errors.\n\nAdd ReasoningContent to model.Message and message.Message, threading\nit through capture, history storage, and re-sending via SetExtraFields.\n\nBackward compatible: zero-value empty string, non-thinking models\nunaffected.",
"is_bot": false,
"headline": "feat(model): support reasoning_content passthrough for thinking models",
"author_name": "LiHtCocoa",
"author_login": "LiHtCocoa",
"committed_at": "2026-02-09T16:11:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83933ec93a9d5db4d51a085e7b891ef5e3a16c06",
"body": "Ensures the configured API key overrides any ANTHROPIC_AUTH_TOKEN or\nANTHROPIC_API_KEY from the environment when constructing the client.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(model): explicitly set API key in Anthropic client request options",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-08T15:12:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7012894efd553a44ea781290aeeed9702ef88214",
"body": "SA1012 staticcheck flagged passing nil Context to Complete() in\nCompleteStream test stubs. Use context.Background() instead.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(ci): replace nil context with context.Background() in test stubs",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-08T09:16:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab517e53e391879d8987e0cbaf59fa8733821058",
"body": "…roxies\n\nAPI proxies may return empty tool_use.input ({}) in non-streaming mode\nwhile streaming mode works correctly. Switch Generate() and compactor\nto use CompleteStream internally, which is also the production-standard\npath for the Anthropic API.\n\nChanges:\n- pkg/api/agent.go: Generate() uses Comp\n[…]\nnthropicProvider for AUTH_TOKEN fallback\n- examples/09-task-system: remove separate go.mod, integrate into main module\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(api): use streaming by default to fix empty tool_use.input from p…",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-08T09:10:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a922ba036e0e37d325034af2a8fe5ca50be53790",
"body": "…sponses API\n\n- Add OpenAI Chat Completions API implementation (pkg/model/openai.go)\n- Add OpenAI Responses API implementation (pkg/model/openai_responses.go)\n- Add comprehensive unit tests for both APIs\n- Add OpenAIProvider with double-checked locking for thread-safe caching\n- Fix tool call orderin\n[…]\n logic tests\n- Add multi-LLM example (examples/05-multimodel-llm)\n- Update .gitignore to include trace-out directories\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(model): add OpenAI provider support with Chat Completions and Re…",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-07T10:45:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d8c29fec97f1039711320ae785cfe545e90b457e",
"body": "- Dockerfile: bump Go 1.23→1.24 to match go.mod, update model name\n- CI: add build step, replace redundant test with race-enabled test\n- hooks: flatten ContextCompacted/ModelSelected payloads (M1)\n- hooks: fix Once dedup when Name is empty, fall back to Command (M2)\n- agent: RunStream SessionEnd emits dynamic reason (M6)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(ci): update CI pipeline and fix hook issues",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-06T15:22:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01c2171356b3ee27b10bac6e739950c4458aad2a",
"body": "- Update hooks documentation in CLAUDE.md to reflect new Claude Code spec\n (exit codes, flat payload, HookOutput, events, ShellHook options)\n- Add .claude/hooks/pre_push_ci.sh: runs golangci-lint + go test before git push\n- Add .claude/settings.json: register PreToolUse hook for Bash tool\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "docs(hooks): update CLAUDE.md and add pre-push CI hook",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-06T06:59:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3726fda73cd3838f619af3fe24693a588aed28f",
"body": "- Fix gofmt formatting in executor.go, types.go, hooks_adapter_test.go, hooks_bridge_test.go\n- Fix errcheck: check NewSelector and os.ReadFile return values in tests\n- Fix errcheck: check json.Unmarshal return values in tests\n- Fix gosec G306: use 0o700 with nolint for test script helper\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(lint): resolve golangci-lint errors for hooks alignment",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-06T06:33:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5aeef81226d029e9fc8dfadaf1327abeaa452796",
"body": "BREAKING CHANGE: Hook exit code semantics changed from 0=allow/1=deny/2=ask\nto Claude Code spec: 0=success(parse JSON), 2=blocking error, other=non-blocking.\n\nCore changes:\n- Exit codes: 0=success(parse JSON stdout), 2=blocking error(stderr), other=non-blocking(log & continue)\n- JSON output: structu\n[…]\nesence, timeout positivity\n- Examples: updated 10-hooks example with new spec (flat payload, JSON output, async hooks)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(hooks): align hooks implementation with Claude Code specification",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-06T06:17:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d65e06e2a2f4065e64abe9b1c09549b67d60edaf",
"body": "- Fix gofmt formatting issues in multiple files\n- Add proper error checking for type assertions\n- Check return values of Register, ReadFile, Marshal, NewRequest\n- Use context.TODO() instead of nil context in tests\n- Change WriteFile permission from 0644 to 0600 (gosec)\n- Add nolint directive for deprecated mcp.BuildSessionTransport\n- Remove unused equalStringSlices function\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(lint): resolve golangci-lint errors for CI",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T02:00:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ead74cccf9fccc29483a531eba01e17b0af1d5b1",
"body": "Generated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "test(prompts): add tests for commands, skills, and subagents",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcb1fd0b9d67d6610834cdfd64ee71594d4c8c00",
"body": "- Update CLAUDE.md with latest project guidance\n- Refresh README.md and README_zh.md\n- Update RELEASE_NOTES.md with v0.6.8 changes\n- Update API reference and architecture docs\n- Update security documentation\n- Refresh examples/04-advanced after plugins removal\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "docs: update documentation for v0.6.8 release",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3e195386b79709d83c345a2ca11950bd3371e3b",
"body": "- Add platform-specific files for Unix/Windows compatibility\n - runtime_helpers_{unix,windows}.go\n - resolver_{unix,windows}.go\n - bash_{unix,windows}.go\n - persister_{unix,windows}.go\n- Add claude_embed_hooks.go for embedded hook support\n- Add claude_md.go for CLAUDE.md parsing\n- Add task_types.go and todo_write.go for task system\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat: add platform-specific implementations and new modules",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32a4c1af63981f6de2b212df438688ac1340aee2",
"body": "- Split large test files into focused *_additional_test.go files\n- Improve test organization across all packages\n- Maintain 91% overall test coverage\n- All tests pass with race detection enabled\n\nAffected packages:\n- pkg/api, pkg/config, pkg/middleware\n- pkg/model, pkg/security, pkg/tool\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "test: reorganize and split large test files",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "165f45565a08434705466d1287d1574e48833f2a",
"body": "- Expand registry capabilities with improved MCP support\n- Update bash and file tools for better error handling\n- Improve executor and persister modules\n- Add new tool registration patterns\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor(tool): enhance registry and builtin tools",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9df4c2364630bda25bd8e355bbd22976c4bc7ef3",
"body": "- Simplify settings merge logic in pkg/config\n- Remove unused test helpers\n- Improve security approval handling\n- Update resolver for cleaner permission checks\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor(config,security): cleanup settings merge and approval",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:44:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "def75e053f8f665259f359918fa26615f4544d9a",
"body": "- Simplify pkg/api/agent.go with improved session handling\n- Refactor MCP bridge for cleaner tool registration\n- Update options and runtime helpers\n- Minor improvements to hooks executor and agent core\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor(api): streamline runtime and MCP integration",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:43:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65a950f1f40760a0b0c8cda482aeedcde7132545",
"body": "- Remove pkg/tool/builtin/task_store.go (185 lines)\n- Update task tools to use centralized pkg/runtime/tasks/store\n- Improve separation of concerns between tools and storage\n- All task-related tests pass with improved coverage\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor(tool): consolidate task storage to runtime/tasks",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:43:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bae6a0d3d61d1057c0806005318e1ab78dc58c8b",
"body": "- Delete pkg/plugins/ directory (10 files)\n- Remove pkg/api/plugins_bridge.go and tests\n- Remove examples/04-advanced/.claude-plugin/ directory\n- Remove examples/04-advanced/plugins.go\n\nThe plugins system was experimental and has been superseded by\nthe skills and commands runtime. This cleanup reduces codebase\ncomplexity by ~2000 lines.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor: remove deprecated plugins system",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-04T01:43:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "224caab0266f0fac98fdd2a109ff5565aae9d691",
"body": null,
"is_bot": true,
"headline": "update ignore",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:35:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2b582c4a7e0b4469247b944e09fe6934bb2ec4b",
"body": "- Demonstrate TaskCreate, TaskList, TaskGet, TaskUpdate tools\n- Show task dependency chain (A -> B -> C)\n- Verify automatic dependency resolution on completion\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "docs(examples): add task system demo",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:34:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a92019a8b77f1b97d20b8008414db78e621bfa1f",
"body": "- Add diskHistoryPersister for session history storage\n- Store history as JSON files under .claude/history/\n- Auto-cleanup old sessions based on cleanupPeriodDays setting\n- Integrate with historyStore loader for session restore\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(api): add disk-based history persistence",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:34:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35b41977a33ffd0cbcb3793db37fa255f33a8a11",
"body": "- Add pkg/prompts package for parsing .claude directory from embed.FS\n- Support skills, commands, subagents, and hooks parsing\n- Parse YAML frontmatter for metadata extraction\n- Return ready-to-use registration structures for api.Options\n- 89.6% test coverage\n\nUsage:\n builtins := prompts.Parse(clau\n[…]\nlls,\n Commands: builtins.Commands,\n Subagents: builtins.Subagents,\n TypedHooks: builtins.Hooks,\n })\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(prompts): add compile-time prompt packaging from embed.FS",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:34:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3fd675e99e8b9853df8a8833ec3b44c4fb4837bf",
"body": "- Change CleanupPeriodDays from int to *int for explicit nil handling\n- Add loader callback to historyStore for disk-based session restore\n- Update docs to reflect history persistence behavior\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(config): add history persistence with cleanupPeriodDays setting",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:32:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69d8174b91230b54832e55c10439caa51d4bf935",
"body": "- Check json.Marshal error returns in bash.go, bashstatus.go\n- Add nolint:errcheck comments for best-effort operations\n- Fix json.Number case order in coerceString/stringValue (staticcheck)\n- Fix ineffassign in async_manager.go\n- Change file permissions from 0644 to 0600 in file_sandbox.go (gosec)\n- Add nolint:gosec for checked uint conversion in read.go\n- Remove unused serverHost function in webfetch_test.go\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(lint): resolve golangci-lint issues in builtin tools",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:32:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32782b11a7195cce7a1a52ff1874aaa93b46d8a8",
"body": "Generated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor(api): remove unused tasks package import",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:32:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72491e505469c79523ee898fb6bc3d0886acdb4b",
"body": "- TaskCreateTool now uses toolbuiltin.TaskStore instead of tasks.TaskStore\n- All task tools (TaskCreate, TaskList, TaskGet, TaskUpdate) share the same store\n- Added CreateTask method to toolbuiltin.TaskStore\n- Added Description and ActiveForm fields to Task struct\n- Added integration test TestTaskToolsShareSameStore\n- Removed orphaned pkg/tasks package\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix(task): unify TaskStore across all task tools",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:32:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e0bfae9c42e04f9cd7468e553525a15e7e941e9",
"body": "Generated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "style: fix gofmt formatting issues",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T02:00:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08ca2d50971fa842f7d524f00dda62c3ccab0652",
"body": "…r support\n\n- Add PostToolUseFailure to validateEvent in executor.go\n- Add WithWorkDir option for hook command execution\n- Pass ProjectRoot as workdir in hooks_bridge.go\n- Add examples/10-hooks with pre/post tool use scripts\n- Increase test coverage from 88.9% to 94.7%\n- Support Claude Code array format and SDK simplified format\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat(hooks): complete hooks system with all 12 event types and workdi…",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-02-03T01:51:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d4053c79e342d3abd906175a978d9396ceb0dfb",
"body": null,
"is_bot": true,
"headline": "Merge branch 'main' of github.com:cexll/agentsdk-go",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-28T09:49:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d92bf932d54bd4abb3b3cb949ee87cf7ebfd8ca6",
"body": null,
"is_bot": true,
"headline": "fix bash desc",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-28T09:49:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "367beaf0494ab90b8dcdebabeab5817d5ec7d04b",
"body": "feat(tasks): implement TaskStore core storage",
"is_bot": false,
"headline": "Merge pull request #70 from cexll/swe-agent/issue-55",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T09:43:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91c8998b88801dc3db44ff77f60aca7f6ef86b31",
"body": "…dencies (#71)\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(task-system): implement TaskUpdate tool with bidirectional depen…",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T09:42:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fe51ce8116c108194ed95383785f7f5c6a1607a",
"body": null,
"is_bot": true,
"headline": "fix(tasks): check error returns in tests",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-28T09:42:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "300a33a7988b8eee899152b92a8bb9f34109b527",
"body": "Co-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(task-system): remove TodoWrite tool (#69)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T09:37:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f571e35413bda1cbc259e4d3f7c779a3967b319",
"body": "* feat(task-system): implement TaskCreate tool (#56)\n\n- Add minimal TaskStore with in-memory storage and unique ID generation\n- Implement TaskCreateTool with Name, Description, Schema, Execute methods\n- Validate required fields (subject, activeForm) and optional description\n- Return taskId in JSON f\n[…]\ne context cancellation and nil store cases\n\nCloses #56\n\n* test: update tool count assertions for TaskCreate (#56)\n\n---------\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(task-system): implement TaskCreate tool (#56) (#68)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T09:20:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b7c0b322535059e67fe835fee4d59d3e01119bba",
"body": null,
"is_bot": true,
"headline": "feat(tasks): implement TaskStore core storage",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-28T09:17:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f3af8e059c98c2f8a0b88c799bee7d3749e8893",
"body": "Co-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(task): implement TaskList and TaskGet tools (#67)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T08:53:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "169627ed7098b3080a010f5e28b98b2dbb8b7023",
"body": "- Add TaskCreate/TaskGet/TaskUpdate/TaskList to deriveTarget\n- Extract task_id parameter for permission matching\n- Add comprehensive unit tests for all Task* tools\n\nCloses #64\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(security): add Task* tools to permission matcher (#66)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-28T08:45:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f8471156feeb43aa529705f6dd6b87e147ea774",
"body": "Generated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "chore: remove deprecated ANTHROPIC_AUTH_TOKEN warning",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T07:49:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fae78f564b4623d0adb3ed34b7314f6aa2db9c1",
"body": "…solated\n\nCreate separate script files for each goroutine to avoid concurrent\nexecution of the same file causing ETXTBSY on Linux CI.\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix: resolve Text file busy race condition in TestConcurrentCallsAreI…",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T07:36:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "061c64fed414041899fc6c793831798c2de332df",
"body": "Adds examples/05-feature-test to verify new features:\n- Glob/Grep respectGitignore functionality\n- SpoolWriter large output persistence\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "feat: add feature test example for respectGitignore and SpoolWriter",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T07:31:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d52fc7cddeb4079f6050f83a1262cfcc7357f2b",
"body": "- Fix unchecked error return in TestMatchEmpty\n- Change WriteFile permissions from 0644 to 0600 (gosec G306)\n- Apply gofmt formatting\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix: resolve lint issues in test files",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T07:14:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e27e40fe656509cb38a80eefd0e2503ee190602",
"body": "- Remove getManagedSettingsPath() function and managed layer loading\n- Update configuration precedence: runtime overrides > local > project > defaults\n- Remove related test cases and helper functions\n- Update documentation (CLAUDE.md, README.md, README_zh.md, getting-started.md)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "refactor: remove managed-settings.json support",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T07:01:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c1e2fe8a512e9b585dc1f8d3e5b67a9972b0520",
"body": "Change API key resolution order:\n1. Configured APIKey (highest priority)\n2. ANTHROPIC_API_KEY (standard SDK variable)\n3. ANTHROPIC_AUTH_TOKEN (legacy, prints deprecation warning)\n\nGenerated with SWE-Agent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": true,
"headline": "fix: ANTHROPIC_API_KEY takes priority over ANTHROPIC_AUTH_TOKEN (#61)",
"author_name": "swe-agent[bot]",
"author_login": null,
"committed_at": "2026-01-26T06:53:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f49e7ffaf9c9e1800be2616cb8048b78077dce1",
"body": "Implements per-project .gitignore pattern filtering for Glob and Grep tools,\nmatching Claude Code 2.1.0's \"respectGitignore per-project control\" feature.\n\nChanges:\n- Add `respectGitignore` config option to Settings (default: true)\n- Create `pkg/gitignore` package for .gitignore pattern parsing\n- Int\n[…]\nore() method to toggle behavior\n\nCloses #42\n\nGenerated with SWE-Agent.ai\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>\nCo-authored-by: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat: add respectGitignore support for Glob/Grep tools (#42) (#60)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-24T05:19:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b097763a66d595036654df15f526e9f1761a045",
"body": "* feat: implement universal tool output persistence layer (#44)\n\n实现通用的工具输出持久化层,自动将超过阈值的工具输出保存到磁盘。\n\n## 主要改动\n\n### 核心实现\n- **通用 SpoolWriter** (pkg/tool/output.go)\n - 从 #39 提取为通用组件\n - 阈值内存缓冲,超阈值自动落盘\n - 落盘失败时截断模式,不影响工具执行\n\n- **OutputPersister 中间件** (pkg/tool/persister.go)\n - Executor 级别的输出后处理\n - 默认阈值 \n[…]\nAgent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>\n\n---------\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>\nCo-authored-by: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat: implement skills hot-reload support (#41) (#48)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-11T13:46:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3abf017ff860a16cdd5ccd5c698a3d6c7ae605b8",
"body": "* feat: implement universal tool output persistence layer (#44)\n\n实现通用的工具输出持久化层,自动将超过阈值的工具输出保存到磁盘。\n\n## 主要改动\n\n### 核心实现\n- **通用 SpoolWriter** (pkg/tool/output.go)\n - 从 #39 提取为通用组件\n - 阈值内存缓冲,超阈值自动落盘\n - 落盘失败时截断模式,不影响工具执行\n\n- **OutputPersister 中间件** (pkg/tool/persister.go)\n - Executor 级别的输出后处理\n - 默认阈值 \n[…]\nAgent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>\n\n---------\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>\nCo-authored-by: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "feat: implement universal tool output persistence layer (#44) (#47)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-11T12:22:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2fb5e4f579351857ed6c21ff571a9db423177a96",
"body": "* feat: implement large bash output disk persistence (#39)\n\n实现大型 Bash 输出自动保存到磁盘功能,防止关键信息丢失。\n\n## 主要改动\n\n### 核心实现\n- **输出管理器** (pkg/tool/builtin/bash.go)\n - 新增 bashOutputSpool 和 spoolWriter 实现输出缓冲和落盘\n - 输出超过阈值时自动写入 /tmp/agentsdk/bash-output/{sessionID}/\n - 支持 stdout/stderr 分开处理后合并\n - 返回文件路径引用 [Outpu\n[…]\nAgent.ai\n\nCo-Authored-By: SWE-Agent.ai <noreply@swe-agent.ai>\n\n---------\n\nCo-authored-by: swe-agent[bot] <0+swe-agent[bot]@users.noreply.github.com>\nCo-authored-by: SWE-Agent.ai <noreply@swe-agent.ai>",
"is_bot": false,
"headline": "Fix #39: 大型 Bash 输出保存到磁盘 (#46)",
"author_name": "ben",
"author_login": "cexll",
"committed_at": "2026-01-09T09:15:50Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 35,
"commits_last_year": 275,
"latest_release_at": "2026-07-17T13:08:40Z",
"latest_release_tag": "v1.2.1",
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 20,
"days_since_latest_release": 5,
"mean_days_between_releases": 17.5
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "github.com/stellarlinkco/agentsdk-go",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/stellarlinkco/agentsdk-go",
"is_deprecated": false,
"latest_version": "v1.2.1",
"repository_url": "https://github.com/stellarlinkco/agentsdk-go",
"versions_count": 32,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-17T12:52:24Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 27,
"stars": 156,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2025-12-03",
"count": 1
},
{
"date": "2026-01-09",
"count": 4
},
{
"date": "2026-01-10",
"count": 1
},
{
"date": "2026-01-19",
"count": 1
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-09",
"count": 2
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-11",
"count": 1
},
{
"date": "2026-02-12",
"count": 2
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-03-25",
"count": 1
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-06",
"count": 1
},
{
"date": "2026-07-05",
"count": 1
}
],
"complete": true,
"collected": 25,
"total_forks": 27
},
"star_history": null,
"open_issues_and_prs": 11
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"demos",
"examples"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 27894,
"source_files_sampled": 378,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"test/integration/testdata/.agents/agents/test-agent/AGENT.md"
],
"agent_instruction_max_bytes": 10509
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/anthropics/anthropic-sdk-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.18.0"
},
{
"name": "github.com/bmatcuk/doublestar/v4",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v4.9.1"
},
{
"name": "github.com/fsnotify/fsnotify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.9.0"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/modelcontextprotocol/go-sdk",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/openai/openai-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.12.0"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "go.opentelemetry.io/otel",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.40.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.40.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.40.0"
},
{
"name": "go.opentelemetry.io/otel/sdk",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.40.0"
},
{
"name": "go.opentelemetry.io/otel/trace",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.40.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 10,
"merged_prs": 47,
"open_issues": 1,
"closed_ratio": 0.978,
"closed_issues": 45,
"closed_unmerged_prs": 7
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "cexll",
"commits": 205,
"avatar_url": "https://avatars.githubusercontent.com/u/26520956?v=4"
},
{
"type": "User",
"login": "yoke233",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/2161917?v=4"
},
{
"type": "User",
"login": "LiHtCocoa",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/104016753?v=4"
},
{
"type": "User",
"login": "CodingCrush",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/21290558?v=4"
},
{
"type": "User",
"login": "zhanbei1",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/23068139?v=4"
}
],
"contributors_sampled": 5,
"top_contributor_share": 0.936
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 9,
"reason": "11 out of 12 merged PRs checked by a CI test -- score normalized to 9",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 2,
"reason": "Found 7/28 approved changesets -- score normalized to 2",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 7 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 7,
"reason": "8 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "19 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "00317e1ccbb7738abbd86b78869f0cb1d573efc4",
"ran_at": "2026-07-22T20:51:59Z",
"aggregate_score": 4.4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-17T13:08:43Z",
"oldest_open_prs": [
{
"number": 95,
"created_at": "2026-05-11T02:22:16Z",
"last_comment_at": "2026-05-22T07:22:53Z",
"last_comment_author": "vicleung01"
},
{
"number": 96,
"created_at": "2026-05-14T04:56:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 98,
"created_at": "2026-05-15T14:53:53Z",
"last_comment_at": "2026-05-15T14:53:53Z",
"last_comment_author": "dependabot"
},
{
"number": 99,
"created_at": "2026-05-15T14:53:55Z",
"last_comment_at": "2026-05-15T14:53:55Z",
"last_comment_author": "dependabot"
},
{
"number": 101,
"created_at": "2026-05-15T14:53:59Z",
"last_comment_at": "2026-05-15T14:54:00Z",
"last_comment_author": "dependabot"
},
{
"number": 102,
"created_at": "2026-05-15T14:53:59Z",
"last_comment_at": "2026-05-15T14:54:00Z",
"last_comment_author": "dependabot"
},
{
"number": 103,
"created_at": "2026-05-15T14:54:01Z",
"last_comment_at": "2026-05-15T14:54:02Z",
"last_comment_author": "dependabot"
},
{
"number": 105,
"created_at": "2026-05-15T14:54:05Z",
"last_comment_at": "2026-05-15T14:54:06Z",
"last_comment_author": "dependabot"
},
{
"number": 106,
"created_at": "2026-05-15T14:54:06Z",
"last_comment_at": "2026-05-15T14:54:06Z",
"last_comment_author": "dependabot"
},
{
"number": 109,
"created_at": "2026-06-19T11:53:38Z",
"last_comment_at": "2026-07-17T12:54:32Z",
"last_comment_author": "cexll"
}
],
"last_merged_pr_at": "2026-07-17T12:52:24Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 38,
"created_at": "2026-01-09T01:45:59Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/stellarlinkco/agentsdk-go",
"host": "github.com",
"name": "agentsdk-go",
"owner": "stellarlinkco"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"security": 44,
"vitality": 85,
"community": 52,
"governance": 62,
"engineering": 89
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 85,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"commits_last_year": 275,
"human_commit_share": 0.61,
"days_since_last_push": 5,
"active_weeks_last_year": 20
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "20/52 weeks with commits",
"points": 13.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 20
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "275 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 275
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "8 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 7",
"points": 7,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 35,
"latest_release_tag": "v1.2.1",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 17.5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "35 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 35
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~17.5 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 17.5
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 68,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 68 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 68
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 52,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 47,
"inputs": {
"forks": 27,
"stars": 156,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "156 stars",
"points": 35.5,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 156
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "27 forks",
"points": 11.8,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 27
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 62,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 5,
"top_contributor_share": 0.936
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 94% of commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 94
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "5 contributors",
"points": 6.8,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 5
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 7 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"merged_prs": 47,
"open_issues": 1,
"closed_issues": 45,
"issue_closed_ratio": 0.978,
"closed_unmerged_prs": 7
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "98% of issues closed",
"points": 45.7,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 98
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "47/54 decided PRs merged",
"points": 33.3,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 47,
"decided": 54
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 7/28 approved changesets -- score normalized to 2",
"points": 3,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"followers": 47,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "stellarlinkco",
"public_repos": 14,
"account_age_days": 401
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "47 followers of stellarlinkco",
"points": 12.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 47,
"login": "stellarlinkco"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "14 public repos, account ~1 yr old",
"points": 10.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 14
}
},
{
"code": "account_age_years",
"params": {
"years": 1
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/stellarlinkco/agentsdk-go"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "32 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 32
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 89,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "11 out of 12 merged PRs checked by a CI test -- score normalized to 9",
"points": 18,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 44,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 44,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.4
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "11 out of 12 merged PRs checked by a CI test -- score normalized to 9",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 7/28 approved changesets -- score normalized to 2",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 7 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "8 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 7",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "19 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 82,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.984,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"test/integration/testdata/.agents/agents/test-agent/AGENT.md"
],
"agent_instruction_max_bytes": 10509
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md, test/integration/testdata/.agents/agents/test-agent/AGENT.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md, test/integration/testdata/.agents/agents/test-agent/AGENT.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "60 of 61 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 60,
"sampled": 61
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.01
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "1 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 27894,
"source_files_sampled": 378,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/378 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 378,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "moderate",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"example_dirs": [
"demos",
"examples"
],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "demos, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "demos, examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-22T20:52:12.226645Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/stellarlinkco/agentsdk-go.svg",
"full_name": "stellarlinkco/agentsdk-go",
"license_state": "standard",
"license_spdx": "MIT"
}