Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 1172,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 1278974,
"Nix": 721
},
"pushed_at": "2026-07-21T16:29:37Z",
"created_at": "2026-07-14T18:50:18Z",
"owner_type": "User",
"updated_at": "2026-07-21T16:26:43Z",
"description": "Auris is a terminal-native financial AI advisor: a ReAct agent that turns natural-language questions into live market data, portfolio analytics, valuation, risk metrics and technical indicators — all driven by pluggable LLM and market providers, with end-to-end encrypted local storage.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "harvey-os.org",
"name": "Rafa",
"type": "User",
"login": "fuchicar",
"company": null,
"location": "Spain",
"followers": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/10864648?v=4",
"created_at": "2015-02-05T11:11:39Z",
"is_verified": null,
"public_repos": 6,
"account_age_days": 4184
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-07-21T16:33:09Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-07-17T09:27:26Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-07-15T10:16:20Z"
}
],
"recent_commits": [
{
"oid": "242f9ac794405e0ee4913c9c076f13f17a656db7",
"body": "Robustecer el system prompt frente a manipulación adversarial",
"is_bot": false,
"headline": "Merge pull request #21 from fuchicar/feat/prompt-manipulation-robustness",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-21T16:24:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "871eea33617d25ab21731b387401e03e7d0a7c47",
"body": "Add explicit system-prompt rules so the agent never discloses its own\ninstructions, never treats user claims of authority (\"I'm support\",\n\"I'm admin\") as credentials, and calls out obvious jailbreak attempts\ninstead of complying or refusing the conversation — without touching\nits openness to legitim\n[…]\ner call the tool, and the\nwarning sits right next to the risky content.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01B2ekVqwJQ2J3YtQRdqfihS",
"is_bot": false,
"headline": "feat: harden agent against prompt-manipulation attempts (#8)",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-21T16:22:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bb96e548ec3441c3196441aa4367adf110e2d3b7",
"body": "…gent-menu\n\ndocs: retire TODO.md in favour of GitHub issues",
"is_bot": false,
"headline": "Merge pull request #20 from fuchicar/fix/portfolio-view-stale-after-a…",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-21T14:37:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30ffb5bb3de09c9577b88ebb8eaf4489081b481f",
"body": "The pending work from TODO.md has been moved to GitHub issues, leaving\nthe file with no reason to exist and creating redundancy with\ndocs/task_completed.md and docs/adr.md.\n\n- docs/task_completed.md: header and tier redirects now point to GitHub\n issues instead of TODO.md; historical mentions prese\n[…]\nerences commit ecc275a.\n- TODO.md removed from working tree (was never tracked, kept out of\n the repo via .gitignore).\n- .gitignore rule preserved per decision to keep it as a personal\n scratch pad.",
"is_bot": false,
"headline": "docs: retire TODO.md in favour of GitHub issues",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-21T12:19:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c5026a2ee8ce0b8204eceb149ddfd2110cf0c583",
"body": "…gent-menu\n\nfix: reload portfolio from disk after /menu from portfolio-agent mode",
"is_bot": false,
"headline": "Merge pull request #19 from fuchicar/fix/portfolio-view-stale-after-a…",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-20T19:34:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e62892da3c89c92109b245e371a80cd481265e9",
"body": "…nt mode\n\nThe agent's portfolio tools (portfolio_add_instrument, portfolio_add_lot,\netc.) write mutations straight to disk without updating the TUI's\nin-memory *portfolio.Portfolio pointer. Returning to the dashboard via\n/menu reused that stale pointer, so newly added instruments/lots were\ninvisible\n[…]\ntil the user left the portfolio entirely and re-entered it.\n\nFixes #10.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01U8MRvDWTZ8ohTezm76b75a",
"is_bot": false,
"headline": "fix: reload portfolio from disk when /menu returns from portfolio-age…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-20T19:30:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d2c66675f9165aa63739f623ca937476ff27c0ad",
"body": null,
"is_bot": false,
"headline": "docs: fix doc/ links broken by the doc -> docs rename",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-20T16:43:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32de5dee6f5ccb64dd1fbb86e0927ba213c6f9d7",
"body": null,
"is_bot": false,
"headline": "Refactor code structure for improved readability and maintainability",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-20T16:34:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c383007873d0099cf24e8ad639c9b4a3c2b4891d",
"body": "chore: move cmd/styletest to tools/styletest",
"is_bot": false,
"headline": "Merge pull request #9 from fuchicar/chore/move-styletest-to-tools",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-17T16:02:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a4bde5270e647341adfb75a8efab32031ca4782",
"body": "styletest is a throwaway visual-comparison program, not a distributed\nbinary (.goreleaser.yaml only builds ./cmd/auris). Keep it around for\nhistorical reference but out of cmd/, which should hold only shipped\nbinaries.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: move cmd/styletest to tools/styletest",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-17T16:00:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "68b27096b73fd1d5cabb795fba5f235404f60c78",
"body": "fix: wrap error messages instead of overflowing the terminal",
"is_bot": false,
"headline": "Merge pull request #6 from fuchicar/fix/error-message-wrapping",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-17T09:18:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5d8960d056d359353789eccf29942a09a241cf6",
"body": "The Error style had no Width set, unlike Help (used for explain text),\nso long error strings (e.g. a connection failure with an interpolated\nURL) ran off the right edge instead of wrapping. Setting Width(PanelWidth)\non the base Error style fixes every screen that renders one, matching\nthe existing convention used by Help.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: wrap error messages instead of overflowing the terminal",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-17T09:14:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "605d3ab43f8bb7fb7cff664bf00e27a39d7fe1d0",
"body": "…stances\n\nfix: support multiple named OpenAI-Compatible AI providers",
"is_bot": false,
"headline": "Merge pull request #5 from fuchicar/fix/openai-compatible-multiple-in…",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-17T09:13:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e578bd3361c85f6cb602b073a41299c6413751df",
"body": "Checking \"OpenAI-Compatible\" in the AI provider checklist now always\nprompts for a display name (e.g. \"DeepSeek\") and stores it under its own\nkey, so it shows up as its own checked row while the generic\n\"OpenAI-Compatible\" row stays available to add another instance (e.g.\n\"Groq\") without ever needin\n[…]\nrom only the\nin-flight \"to add\" queue, so an already-configured provider could show as\nunchecked and get silently deleted on a bare re-confirm.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: support multiple named OpenAI-Compatible AI providers",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-17T08:42:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5d537bd5336779cf29eaff772c402d4237135798",
"body": "Add contextual explanations to setup wizard screens",
"is_bot": false,
"headline": "Merge pull request #4 from fuchicar/feat/setup-wizard-explanations",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-17T07:43:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bdb097152aa74ba04f14d26169ecd57923a459e",
"body": "Adds a brief \"what is this / why configure it\" explanation before each\ninput on the Passphrase, Provider, APIKey, AIProviderSelect,\nAIProviderConfig, and AIDefaultModel setup screens, so first-time users\nunderstand what they're configuring without needing external docs.\n\nThe Passphrase screen also w\n[…]\nds\nits own line inside View() rather than centralizing in AppModel, since\nscreen_ai_config.go's sub-step state isn't exposed upward.\n\nCloses #2\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add contextual explanations to setup wizard screens",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-17T07:36:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "342215715fc75f9ac087111fcaac1c29fe94b346",
"body": null,
"is_bot": false,
"headline": "docs: enhance README and README_ES with documentation links and sections",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T16:37:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e13a85d9b31301a77c2ba77cf92cf50d35765331",
"body": null,
"is_bot": false,
"headline": "build: drop Windows targets, add FreeBSD amd64 to release matrix",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T10:11:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca412dcd1e5935a7f9a4300b258a1782ad12b41b",
"body": null,
"is_bot": false,
"headline": "chore: refresh .goreleaser.yaml release comment for GitHub origin",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T10:11:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6f942ca3974a2e6132c23714b21e8f58febbaa4",
"body": "…688325\n\nAdd claude GitHub actions 1784109688325",
"is_bot": false,
"headline": "Merge pull request #1 from fuchicar/add-claude-github-actions-1784109…",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-15T10:02:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08a2ef8daa87d64bd347ba58a63956b039cd80a4",
"body": null,
"is_bot": false,
"headline": "\"Claude Code Review workflow\"",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-15T10:01:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d599958f8a8dee86cd82e9f94c3aaaed1f978d1d",
"body": null,
"is_bot": false,
"headline": "\"Claude PR Assistant workflow\"",
"author_name": "Rafa",
"author_login": "fuchicar",
"committed_at": "2026-07-15T10:01:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e12c61513d3769a5a115c620ac40846d448a8c2",
"body": null,
"is_bot": false,
"headline": "refactor: rename portfolio identifiers for clarity in tests",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T09:25:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d37896c8e46a837d6c3fe843eac007b54d1a581",
"body": "…e details\n\n- Expanded README_ES.md with detailed descriptions of functionalities, architecture, and installation instructions.\n- Added images for the agent interface in both English and Spanish.\n- Updated presentation.html to reflect the addition of a simulation driver and improved descriptions of market data providers.\n- Revised statistics on test coverage and functionality in the presentation.",
"is_bot": false,
"headline": "Enhance README and presentation with updated features and architectur…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T09:03:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a49721145519dea33c053f6c0fb461c3a8d29f67",
"body": "Aligns the Go module path with the public GitHub repository, enabling\n`go install github.com/fuchicar/auris-ai/cmd/auris@latest` and matching\nthe canonical URL. All internal imports updated; go build, go vet and\nunit tests pass.",
"is_bot": false,
"headline": "refactor: rename module path to github.com/fuchicar/auris-ai",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T07:10:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf86702c4586fe8d124c202d54478795ce299716",
"body": null,
"is_bot": false,
"headline": "docs: add Acknowledgements section in both READMEs",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T06:56:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "918aa9397658ba48d3779ab9ccc5cb799424698e",
"body": null,
"is_bot": false,
"headline": "chore: expand .gitignore and ignore local AI-agent and personal files",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-15T06:55:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "658a69428b71714e8d1036925259e95fb76cc3d2",
"body": null,
"is_bot": false,
"headline": "feat: add MIT License to the project",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T19:00:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6fb7a1f8c0a2db35353742fb5d3cfae8765a399",
"body": "- Closed DD-5 after verifying EODHD's real limit of 20 calls/day, making the FMP→EODHD cascade mandatory.\n- Added DD-9 for currency handling at the portfolio level, implementing a single currency field in `portfolio.Portfolio`.\n- Established secure persistence with atomic writes in DD-10, ensuring i\n[…]\n\n- Expanded RSS feed catalog in FEAT-18 to 51 sources, enhancing macro/regulatory coverage.\n- Implemented UI for editing news feeds in FEAT-14, allowing users to manage their news sources effectively.",
"is_bot": false,
"headline": "feat: Update ADRs and complete Tier C tasks",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T18:37:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "40e94c0857781be85892758a1d78168821e179f0",
"body": "…oercion to zero",
"is_bot": false,
"headline": "fix: improve error handling for numeric arguments to prevent silent c…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T18:05:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a852d1dee3e504059d5a2dc2b7318b29e4b12d0",
"body": "…ed internationalization",
"is_bot": false,
"headline": "fix: replace hardcoded placeholders with localized strings for improv…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T17:51:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7afa98c4c6a0cb3f022adc5ee5d8e48c8b657d6",
"body": null,
"is_bot": false,
"headline": "feat: mask API key inputs with EchoPassword for enhanced security",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T17:43:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20b05f00ec4f833ffa4b60f271b90660af331701",
"body": "…arameter for cash transactions",
"is_bot": false,
"headline": "fix: update portfolio_add_instrument to include optional debit_cash p…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T16:34:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a80a636e62a36765b19475c5e5f0bd15b02d6fa6",
"body": "…sponses",
"is_bot": false,
"headline": "fix: preserve assistant text alongside tool calls in OpenAI driver re…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T16:24:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d973fc7e9f32edc04075481d6bdc36d0ee06556",
"body": null,
"is_bot": false,
"headline": "fix: enhance exit condition in agent loops to handle empty tool calls",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T16:11:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79dfc56c65a17e4fccea3339dfd0f1b0a79edb8d",
"body": "…ve label rendering",
"is_bot": false,
"headline": "feat: enhance adaptive color handling for agent UI elements and impro…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T16:10:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46ca151c3ea88ed6ce17521c55425a84a808ef7d",
"body": "- Implemented monetary formatting in portfolio views and instrument views, ensuring right alignment, thousands separators, and currency symbols.\n- Introduced a currency selection step in the portfolio creation wizard, allowing users to specify the currency for their portfolios.\n- Updated the portfol\n[…]\nalignment.\n- Added tests for new currency formatting functions and updated existing tests to cover new functionality.\n- Updated localization files to include new keys for currency selection and hints.",
"is_bot": false,
"headline": "feat: add currency formatting and selection in portfolio management",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T15:35:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "137c0ff16cd14b67d3783992c94299b661362b95",
"body": "…ng states",
"is_bot": false,
"headline": "feat: surface error messages when model loading fails and reset pendi…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T14:16:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9429ebd3c4c78e5a30f0ca5fa8d702585c06e4b",
"body": "…tors",
"is_bot": false,
"headline": "feat: implement back navigation in setup wizard and enhance UI indica…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T14:10:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84f960d7b05df7a2800a01c0486ec94c9d529553",
"body": "…nd improve deduplication logic",
"is_bot": false,
"headline": "feat: enhance ProgressEvent handling to surface distinct tool calls a…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T08:36:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecc275ac28281e61463505a7bd0fa654cb6b123f",
"body": "…ve mock handling\n\n- Updated `TODO.md` to reflect the closure of REF-10, indicating that integration tests for EODHD no longer hit the real API.\n- Created `eodhd_integration_test.go` for integration tests that require a real API key, ensuring they are run only with the appropriate build tag.\n- Refac\n[…]\nunnecessary API key reading logic from unit tests, ensuring they run without external dependencies.\n- Enhanced error handling and assertions in tests to cover more scenarios and improve test coverage.",
"is_bot": false,
"headline": "Refactor EODHD tests: Migrate integration tests to httptest and impro…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T07:50:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ac190449848444643395f1509db06c12a51de028",
"body": "…ent data races",
"is_bot": false,
"headline": "feat: implement mutex protection for lastUsage and storageKey to prev…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T07:33:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5be2655e40c98405a705b4e365cf131d38fc169b",
"body": null,
"is_bot": false,
"headline": "feat: enhance documentation and metrics, add atomic file write utility",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-14T07:23:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "429ddb3f5e88de40a8ba19dc13e793fb429b0650",
"body": null,
"is_bot": false,
"headline": "feat: add news feeds management functionality and UI",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-13T21:04:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b35e060ac50a91dd4d8039b9f4f30636e58c83a6",
"body": "- Introduced a new simulation mode allowing users to choose between real market data and synthetic data during the initial setup.\n- Added localization support for new strings related to simulation mode in English and Spanish.\n- Implemented a new DataModeModel for selecting data mode and a Simulation\n[…]\nost-setup.\n- Updated the TUI to reflect simulation mode in various screens, including the agent model and menu.\n- Enhanced error handling to prevent market provider management when in simulation mode.",
"is_bot": false,
"headline": "feat: add simulation mode for market data",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-13T20:33:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "57a27c435cee190c909acebd510f3698864f7f88",
"body": null,
"is_bot": false,
"headline": "feat: add context window reporting and info command for agent",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-13T18:17:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71446346d0c12416d2ab82e5564290b79f8c1310",
"body": "- Implemented OpenAI driver in the pkg/drivers/openai package.\n- Added unit and integration tests for the OpenAI driver in pkg/drivers/openai/openai_test.go.\n- Enhanced localization support for base URL and model ID in English and Spanish JSON files.\n- Updated LLM registry to include OpenAI and Open\n[…]\ned TUI to handle OpenAI configuration steps, including base URL, API key, and model name.\n- Added tests for AI provider configuration steps and connection handling in pkg/tui/screen_ai_config_test.go.",
"is_bot": false,
"headline": "Add OpenAI driver and integration tests",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-13T15:13:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fad5795b2ac06e75d9466072c289ba0bb9942c42",
"body": "- Added support for encrypting and decrypting portfolio and session files using a passphrase-derived key.\n- Introduced new functions for generating salts and deriving keys.\n- Updated Save and Load functions for portfolios and sessions to use encryption.\n- Implemented ReencryptAllSessions and Reencry\n[…]\nn in the settings menu.\n- Updated localization files to include new encryption-related strings.\n- Created tests for new encryption functionality and ensured legacy plaintext files can still be loaded.",
"is_bot": false,
"headline": "feat: implement at-rest encryption for portfolios and chat sessions",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-13T13:25:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cffdd4054953887d9f161f26fa1f6662d947d2a6",
"body": "…I updates",
"is_bot": false,
"headline": "feat: implement change passphrase functionality with validation and U…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-10T20:12:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae200b17b08e0c2e7eb3391da416eb6d8191b592",
"body": "- Changed references in market_chain.go, eodhd.go, fmp.go, capability.go, market.go, and app.go to point to the new documentation location for feature explanations.\n- Ensured consistency in documentation across all relevant files regarding unsupported tools and market provider order.",
"is_bot": false,
"headline": "Update documentation references from TODO.md to doc/task_completed.md",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-10T19:37:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7684d62bd4aa859ff612d5910100dfaba9610324",
"body": "# Conflicts:\n#\tTODO.md",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/main'",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T21:56:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9898c77b16bba34efd6470d7beaeeec671773daa",
"body": "Incluye sub-secciones de Bloomberg/FT/Economist/CNBC, cinco feeds\nmacro/institucionales (Fed, BEA, SEC, CBO, BoE) y nuevos diarios\n(Cinco Dias, Europapress, El Diario.es, Guardian, Forbes, Fortune,\nNYT, NPR, ProPublica, Wharton, Mises, DW). Latencia concurrente del\nfetchAllFeeds: 949 ms (vs ~600 ms con los 19 anteriores).\n\nCubre FEAT-18.",
"is_bot": false,
"headline": "news: ampliar catalogo de feeds a 51 (11 ES + 40 EN)",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T21:51:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e404647ce98b15d8a708ff332ec82bb91c564edb",
"body": "…nd dynamic height adjustment",
"is_bot": false,
"headline": "feat: replace text input with textarea for improved user experience a…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T21:37:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "433c9cf1adf12afc1512d2e6bb67959b27509be3",
"body": "…r support",
"is_bot": false,
"headline": "feat: implement capability filtering for agent tools based on provide…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T20:39:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08016ad95339bea16f9755b0883af33c1ffc9d36",
"body": "- Added optional \"label\" parameters to various financial calculation tools for better identification of input series (e.g., \"AAPL\" for stock prices).\n- Introduced \"InputsSummary\" field in result structures across multiple financial calculations to provide clearer context in outputs.\n- Updated relevant functions to utilize the new label and inputs summary features, improving the clarity of results and enhancing user experience.",
"is_bot": false,
"headline": "Enhance financial tools with optional labels and inputs summary",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T20:18:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07cd3fd891ada12c81b65708534bb6189c012a0e",
"body": "- Updated various financial calculation result structs to include a new `ComputedAt` field, which stores the timestamp of when the calculation was performed.\n- Modified the dispatch logic in the agent to populate the `ComputedAt` field with the current UTC time in RFC3339 format for all relevant calculations.\n- Enhanced existing tests to verify that the `ComputedAt` field is correctly populated for each calculation.",
"is_bot": false,
"headline": "feat: add ComputedAt field to financial calculation results",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T19:29:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb782e6270b954f5e0fb624fa89ad0bcdf7a99c3",
"body": "- Implemented validation functions for finite values, positive values, and non-negative values in the finance package.\n- Added functions to calculate Return on Investment (ROI), Compound Annual Growth Rate (CAGR), Profit and Loss (PnL), Discounted Cash Flow (DCF), financial multiples, Price to Free \n[…]\n, and Dividend Yield.\n- Created comprehensive unit tests for all new functions to ensure correctness and handle edge cases.\n- Included error handling for invalid inputs and edge cases in calculations.",
"is_bot": false,
"headline": "Add financial validation functions and calculations",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T16:08:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0b36be56940aa73d73219753dd52a451f0bda22e",
"body": "- Added optional API key input for secondary market providers in setup.\n- Introduced management screen for configuring market data providers, allowing users to add, remove, and reorder providers.\n- Updated localization files for English and Spanish to include new strings related to market provider management.\n- Implemented logic to handle the fallback order of market providers in the application.\n- Added tests for new market provider management functionality and API key handling.",
"is_bot": false,
"headline": "feat: enhance market provider management and localization",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-09T15:23:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42e8e11f006524319f2047ac3be43f3d3036fd74",
"body": null,
"is_bot": false,
"headline": "feat: implement portfolio export functionality to JSON and CSV formats",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-08T19:45:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df6d0230528012032f99834a3d184fd6c78a0d97",
"body": "…e display",
"is_bot": false,
"headline": "feat: add watchlist functionality with live price updates and % chang…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-07T20:57:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "120296de2ae5eac39d47ed531783fea00e100275",
"body": "…ndering in TUI",
"is_bot": false,
"headline": "feat: implement market_render_price_chart tool and integrate chart re…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-07T20:08:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0eb97d4261b3e48b7a9d5f691f51d86f396866d9",
"body": "…MA calculation, and enhance portfolio views",
"is_bot": false,
"headline": "feat: add candlestick chart and sparkline support in TUI, implement S…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-07T19:42:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abc338f80451a6ad9f0b45555271ba20a78a76bb",
"body": "- Added ChatStream method to the Agent struct to handle streaming responses from the LLM.\n- Updated the runLoopStream function to process incremental text fragments and tool calls.\n- Enhanced the StreamChunk struct to include ToolCalls and StopReason for better handling of streaming responses.\n- Mod\n[…]\nll propagation.\n- Added tests for streaming functionality, ensuring tool calls are correctly processed and responses are handled as expected.\n- Updated TUI to display streaming responses in real-time.",
"is_bot": false,
"headline": "feat: implement streaming support for agent interactions",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-06T18:49:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cfd9affcb7b1f0003e5d6296f0f4fa413d83ffe7",
"body": "- Implemented `CalculateTaxPnL` function to classify realized sales into short-term and long-term capital gains based on holding periods.\n- Introduced new tool `portfolio_calculate_tax_pnl` for calculating tax P&L, including handling of date ranges and portfolio ID resolution.\n- Added comprehensive \n[…]\n and long-term classifications, and date range filtering.\n- Updated prompts to include instructions for using the new tax P&L tool.\n- Adjusted the build tools to register the new tax calculation tool.",
"is_bot": false,
"headline": "Add portfolio tax P&L calculation and related tests",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-06T17:30:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "87e782a2356ff248b9cce531b8a2a539e267da6e",
"body": "…io calculations\n\n- Increased the total number of tools from 53 to 56 in the documentation and tests.\n- Implemented the Sortino ratio calculation, including validation and error handling.\n- Added Treynor ratio calculation with appropriate validation for beta.\n- Introduced Information Ratio calculati\n[…]\nks for equal length of asset and benchmark returns.\n- Updated existing tests to cover new functionalities and edge cases.\n- Modified the agent's tool dispatching logic to accommodate new calculations.",
"is_bot": false,
"headline": "feat: update toolset to include Sortino, Treynor, and Information Rat…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-06T16:09:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a7b773bbb37cef0f5695ddb55797d0cfeb673c0",
"body": "- Implemented `buildBenchmarkComparison` to assemble benchmark comparison results including portfolio and benchmark returns, alpha, beta, and correlation.\n- Added `portfolio_compare_benchmark` tool to compare a portfolio's performance against a benchmark index, defaulting to SPY.\n- Introduced `align\n[…]\n portfolio returns using the Modified Dietz method, handling external cash flows appropriately.\n- Added unit tests for new functions and scenarios to ensure correctness of calculations and edge cases.",
"is_bot": false,
"headline": "feat: add portfolio benchmark comparison tool and related functionality",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-06T15:36:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7a695d421573ad3ea1ec474415eba67e844dd45e",
"body": "…ive features",
"is_bot": false,
"headline": "Add presentation HTML for TFM project with styled slides and interact…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T20:40:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "758a912fe1a77e0b0f8993a3653fb4c92a5fd72f",
"body": "…functionality",
"is_bot": false,
"headline": "feat(transactions): implement transaction history screen and related …",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T19:41:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c45c97bee3b8633ae1ef2a1a692c9209524d4d57",
"body": "- Updated the buildTools function to include new tools for cash deposit, withdrawal, and dividend recording.\n- Introduced a new Transaction struct to log cash-flow and position events in portfolios, ensuring a consistent record of cash mutations.\n- Implemented RecordTransaction method to manage port\n[…]\n existing portfolio methods to utilize the new transaction system for better cash management and auditing.\n- Updated agent tests to reflect changes in the portfolio structure and transaction handling.",
"is_bot": false,
"headline": "feat(portfolio): enhance transaction handling and add new tools",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T19:15:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fa938eb0467a6f705391765c2a1e62993b0f2f4f",
"body": "…calculations\n\n- Added validation functions to ensure inputs are finite, positive, and within plausible ranges for various financial metrics.\n- Updated existing calculation functions (e.g., calcROI, calcCAGR, calcVolatility) to utilize new validation checks, improving error handling for invalid inpu\n[…]\nduced a new validation module to centralize input checks, ensuring consistency across calculations.\n- Modified dispatch logic to incorporate validation, preventing erroneous data from being processed.",
"is_bot": false,
"headline": "feat: Implement comprehensive numeric input validation for financial …",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T18:14:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "41e73be039f75533adf9b87556f9863e0fba5f5f",
"body": "…from config",
"is_bot": false,
"headline": "fix(locale): add applyStoredLocale method to initialize translations …",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T15:57:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be372b2548e173da94ce25c24a7307edcd1127c3",
"body": "…ed tests",
"is_bot": false,
"headline": "feat(monte_carlo): implement Monte Carlo simulation tool and associat…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T15:57:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d9d36fa48cf9c5a504ffdb28456d2ffa9bee730",
"body": "…iated logic for suggesting buy/sell operations",
"is_bot": false,
"headline": "feat(portfolio): implement portfolio_suggest_rebalance tool and assoc…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T11:58:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7fc7b7dd834430e06610a85ab991e06484746f18",
"body": "… update existing prompt structure to English",
"is_bot": false,
"headline": "feat(prompts): add comprehensive guide for writing system prompts and…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-05T11:07:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c36441c1c14c2a0f40d48cd3f010de6c380f714",
"body": "…trics",
"is_bot": false,
"headline": "feat(portfolio): add cash management features and update portfolio me…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-04T20:56:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e77f0e7a1d47be1cd78b493b9d99e373a938705",
"body": "…truments",
"is_bot": false,
"headline": "feat(portfolio): add buy action and success message for portfolio ins…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-04T20:44:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3d65fce46e96f049d14fab696697cde665a38fa",
"body": "…rolling support",
"is_bot": false,
"headline": "feat(tui): enhance instrument search model with dynamic sizing and sc…",
"author_name": "Rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-04T18:54:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a9955a203f53ccf70cdae73be676bccdee7eb66",
"body": "…ackend support",
"is_bot": false,
"headline": "feat(portfolio): implement target allocation management; add UI and b…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-02T20:28:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "759944214c92d256c4128303e359d0901e009e67",
"body": "…ate tool registration",
"is_bot": false,
"headline": "feat(math): implement stress test calculation tool; add tests and upd…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-02T19:55:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f67a9467ffa8e9fbb1f39438c5ffc613179f3143",
"body": "…idend yield, and growth; update tests and tool registration",
"is_bot": false,
"headline": "feat(math): implement financial calculation tools for P/FCF, PEG, div…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-02T19:48:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7536af13df6ac84e382ebd6f1f00a6652c61469",
"body": "…ance prompts for technical analysis",
"is_bot": false,
"headline": "feat: implement quotes snapshot handling in portfolio metrics and enh…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-07-02T19:37:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cce15bd4a46caadbeacfba296cc038915b220c75",
"body": "…e handling for missing parameters in calculations",
"is_bot": false,
"headline": "feat: enhance financial metrics with DividendYieldTTM and Beta, updat…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-30T20:22:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a12b3d3662edc1f5807f57ead35837799a1a0e2",
"body": "…relation, metrics)\n\nImplement MATH-1..7 from TODO.md as agent tools:\n\n - calculate_sma, calculate_ema, calculate_rsi, calculate_macd,\n calculate_bollinger_bands, calculate_correlation_matrix (pure math)\n - portfolio_calculate_metrics (aggregates cost basis, value, P&L,\n HHI concentration, d\n[…]\n; the LLM chains\nmarket_get_candles -> calculate_*. FloatSlice serialises NaN/Inf as\nJSON null so warm-up positions do not silently break json.Marshal.\nbuildTools count 33 -> 40; 52 new tests passing.",
"is_bot": false,
"headline": "math,portfolio: add Tier-1 tools (SMA, EMA, RSI, MACD, Bollinger, cor…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-30T17:58:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "74b04a9d3adea002dfedf5a2c6d27e1af9030865",
"body": "…lculations",
"is_bot": false,
"headline": "feat(math): enhance error handling and documentation for financial ca…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-29T19:50:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "129831e3d395080d34a16066897d5fa34a8d7367",
"body": null,
"is_bot": false,
"headline": "feat(news): update ToolDescription and parameter descriptions to English",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-28T20:46:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "246a2700dda50157275f93aec4ead10452e42834",
"body": "Add 17 validated RSS feeds covering both Spanish and English financial\noutlets (7 es, 12 en). All URLs verified against gofeed parser.\n\nAdd pkg/news/feed_test.go with:\n- TestDefaultFeeds_Metadata: structural checks (no duplicates, valid\n http(s) URLs, both languages present).\n- TestDefaultFeeds_Live: integration test that hits every URL with\n gofeed and skips when the network is unavailable, mirroring the\n pattern in drivers/fmp and drivers/ollama.",
"is_bot": false,
"headline": "news: expand DefaultFeeds to bilingual mix (es + en)",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-21T12:52:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "686bc8fed6eab96d0c20cfc46fdfebe5c6393d1a",
"body": "…am and Complete methods",
"is_bot": false,
"headline": "feat(ollama): improve context handling and timeout management in Stre…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-19T15:42:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "065bcf56b06fb1a81f57fce0ee7b8108c22ae30c",
"body": null,
"is_bot": false,
"headline": "feat(minimax): add documentation for ListModels method in MiniMax driver",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-19T15:42:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2725159a6a37e4a7baf5550ecb5d3488be6a22d4",
"body": null,
"is_bot": false,
"headline": "feat(minimax): add MiniMax driver implementation and tests",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-06-14T11:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0daa8215f445cb5694112688f6aaab2431391888",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' of https://ruda.duckdns.org/forja/rafael/auris-ai",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-28T19:21:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08f3eec7e4da1af5612c57359ba9098e0bf9e426",
"body": "…ent model",
"is_bot": false,
"headline": "feat(portfolio): add portfolio management tools and integrate with ag…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-28T19:20:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "701a60f6da3a96c9c25fa056a49cabe85ebd0ac5",
"body": "…e instructions",
"is_bot": false,
"headline": "feat: add English and Spanish README files with installation and usag…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-26T20:19:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6396ac7093171e00103694893c5472e04c4ecbc",
"body": null,
"is_bot": false,
"headline": "feat: add Nix configuration files for development environment",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-26T20:03:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "779729f6711392bb0256d5c71d419f8fc56c5828",
"body": "- Added `screen_portfolio_instruments.go` to display instruments in a portfolio with navigation and selection capabilities.\n- Introduced `screen_portfolio_menu.go` for managing multiple portfolios, including a \"Create\" option.\n- Created `screen_portfolio_view.go` to show detailed information about a\n[…]\n action options.\n- Enhanced `screen_profile.go` to allow users to navigate back from the profile editing screen.\n- Updated `screen_theme.go` to support navigation back from the theme selection screen.",
"is_bot": false,
"headline": "feat(tui): implement portfolio instruments and menu screens",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-26T15:48:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5d6896fb932479527c47c4af1e46b89109289d99",
"body": "- Implemented the Anthropic Claude driver in pkg/drivers/anthropic/anthropic.go, providing support for completion requests, streaming responses, and model management.\n- Added unit and integration tests for the Anthropic driver in pkg/drivers/anthropic/anthropic_test.go, ensuring compliance with the \n[…]\n driver, allowing it to be instantiated with a base URL and API key.\n- Enhanced pkg/tui/screen_agent.go to support news feeds and added a debug logger for improved diagnostics during agent operations.",
"is_bot": false,
"headline": "feat: add Anthropic Claude driver and integration tests",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-24T20:56:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c684ffc51a9154b283ffa751564e08a35e278687",
"body": "…fetching and filtering\n\n- Introduced unit tests for the Anthropics driver, ensuring compliance with the AIProvider interface and testing connection, completion, and streaming functionalities.\n- Added helper tests for Gemini driver, focusing on message handling and request building.\n- Created intern\n[…]\n- Developed tests for news filtering and tool functionality, ensuring correct behavior for various scenarios.\n- Established a structured approach for handling news items and their associated metadata.",
"is_bot": false,
"headline": "Add tests for Anthropics, Gemini, and Ollama drivers; implement news …",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-24T20:56:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7c0817a1a4a251616ec6bd7a574194e6ed37ba25",
"body": "…ction interface",
"is_bot": false,
"headline": "feat: add progress tracking for tool execution and enhance model sele…",
"author_name": "Rafael Fernández",
"author_login": "fuchicar",
"committed_at": "2026-05-22T16:04:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27cdd8f348368cbbbd75b4e698eea01b956d166d",
"body": null,
"is_bot": false,
"headline": "feat: add edit profile option to menu and enhance profile management",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-22T14:39:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "269e5044e6df4287362759231d2d3f59032a7c94",
"body": "…in menu",
"is_bot": false,
"headline": "feat: add configuration menu options and enhance navigation in the ma…",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-22T14:30:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb6abae1e452c2cab890e772f9794d062c265592",
"body": null,
"is_bot": false,
"headline": "feat: add unit tests for math tools and enhance system message prompts",
"author_name": "rafael",
"author_login": "fuchicar",
"committed_at": "2026-05-22T14:14:42Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 3,
"commits_last_year": 123,
"latest_release_at": "2026-07-21T16:33:09Z",
"latest_release_tag": "v1.2.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 9,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/fuchicar/auris-ai",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/fuchicar/auris-ai",
"is_deprecated": false,
"latest_version": "v1.2.0",
"repository_url": "https://github.com/fuchicar/auris-ai",
"versions_count": 3,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-21T16:24:17Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0
},
"open_issues_and_prs": 8
},
"ai_readiness": {
"has_nix": true,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 80992,
"source_files_sampled": 155,
"oversized_source_files": 2,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 22569
},
"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/NimbleMarkets/ntcharts",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.5.1"
},
{
"name": "github.com/anthropics/anthropic-sdk-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.45.0"
},
{
"name": "github.com/charmbracelet/bubbles",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/bubbletea",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.10"
},
{
"name": "github.com/charmbracelet/glamour",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/lipgloss",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.1-0.20250404203927-76690c660834"
},
{
"name": "github.com/charmbracelet/x/ansi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.11.6"
},
{
"name": "github.com/mmcdole/gofeed",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.0"
},
{
"name": "github.com/nicksnyder/go-i18n/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.6.1"
},
{
"name": "github.com/openai/openai-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.12.0"
},
{
"name": "golang.org/x/crypto",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.51.0"
},
{
"name": "golang.org/x/net",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.53.0"
},
{
"name": "golang.org/x/text",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.37.0"
},
{
"name": "google.golang.org/genai",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.57.0"
}
],
"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": 0,
"merged_prs": 8,
"open_issues": 8,
"closed_ratio": 0.385,
"closed_issues": 5,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "fuchicar",
"commits": 123,
"avatar_url": "https://avatars.githubusercontent.com/u/10864648?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"claude-code-review.yml",
"claude.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"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": 10,
"reason": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"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": 0,
"reason": "Found 0/21 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"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": 0,
"reason": "no 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": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow 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": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": "24 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "242f9ac794405e0ee4913c9c076f13f17a656db7",
"ran_at": "2026-07-22T05:18:45Z",
"aggregate_score": 2.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-21T16:33:12Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-21T16:24:18Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 11,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 12,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 13,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 14,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 15,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 16,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 17,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 18,
"created_at": "2026-07-20T18:37:10Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/fuchicar/auris-ai",
"host": "github.com",
"name": "auris-ai",
"owner": "fuchicar"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"security": 27,
"vitality": 72,
"community": 24,
"governance": 48,
"engineering": 71
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 72,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"commits_last_year": 123,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 9
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "9/52 weeks with commits",
"points": 6.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 9
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "123 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 123
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 3,
"latest_release_tag": "v1.2.0",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 3.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "3 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 3
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~3.1 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.1
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 24,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"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": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"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": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 48,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"merged_prs": 8,
"open_issues": 8,
"closed_issues": 5,
"issue_closed_ratio": 0.385,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "38% of issues closed",
"points": 18,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 38
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "8/8 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 8,
"decided": 8
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/21 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 45,
"inputs": {
"followers": 10,
"owner_type": "User",
"is_verified": null,
"owner_login": "fuchicar",
"public_repos": 6,
"account_age_days": 4184
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "10 followers of fuchicar",
"points": 7.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 10,
"login": "fuchicar"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "6 public repos, account ~11 yr old",
"points": 18.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 6
}
},
{
"code": "account_age_years",
"params": {
"years": 11
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"packages": [
"github.com/fuchicar/auris-ai"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 0
},
"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 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "3 published versions",
"points": 12,
"status": "partial",
"details": [
{
"code": "published_versions",
"params": {
"count": 3
}
}
],
"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": "good",
"name": "Engineering Quality",
"value": 71,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"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": "critical",
"name": "Security",
"value": 27,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 2.7
},
"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": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"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 0/21 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"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": "no update tool detected",
"points": 0,
"status": "missed",
"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": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"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 not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "24 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": 2
},
"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": 79,
"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.94,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 22569
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.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": "94 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 94,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_nix": true,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.06,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "go.mod (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "go.mod"
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": "Nix, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Nix, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "6 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 6,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"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": 99,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 80992,
"source_files_sampled": 155,
"oversized_source_files": 2
},
"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": "2/155 source files over 60KB",
"points": 54.3,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 155,
"oversized": 2
}
}
],
"max_points": 55
}
]
}
],
"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": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-22T05:18:55.768543Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fuchicar/auris-ai.svg",
"full_name": "fuchicar/auris-ai",
"license_state": "standard",
"license_spdx": "MIT"
}