Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-23 19:17 UTC

Reihantt6 / sns-myagent

SNS MyAgent — Lightweight personal AI agent CLI. Forked from Hermes Agent (Nous Research) and OMP (OhMyPi)

TypeScriptNo license detected★ 2 stars⑂ 0 forkssince Jun 2026View on GitHub ↗

Reihantt6/sns-myagent holds a health index of 46 out of 100, placing it in the At risk band. It scores highest on Vitality (70/100) and lowest on Sustainability & Governance (29/100). It was last updated 5 days ago. A single contributor accounts for most of its recent work.

46
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

46
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

1 follower3 public repossince Jul 2025

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npm@sns-myagent/cli0.3.92,040115 days agocoding-agentaillmclibyoktelegrammulti-agenttuiagentsnsagentsns-myagent

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

70Good · 22% of overall
How it's scored
36/36Push recency — last push 5 days ago
2.8/36Commit cadence — 4/52 weeks with commits
17.8/18Commit volume — 94 commits in the last year
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Inputs used
commits_last_year94
human_commit_share1
days_since_last_push5
active_weeks_last_year4
How it's scored
27/27Ships releases — 12 releases published
36/36Release recency — latest release 5 days ago
27/27Release cadence — a release every ~2.1 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count12
latest_release_tagv0.3.9
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases2.1

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

30At risk · 18% of overall
How it's scored
0/60Stars — 2 stars
0/25Forks — 0 forks
0/15Watchers — 0 watchers
Inputs used
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
0/22.5License — no license file detected
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseno
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
44.1/80Monthly downloads — 2,040 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packages@sns-myagent/cli
dependents
ecosystemsnpm
total_downloads
monthly_downloads2,040
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

29Critical · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
0/46.8Issue resolution — no issues or no data
0/38.3PR acceptance — no decided pull requests or no data
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
2.2/25Owner reach — 1 followers of Reihantt6
6.5/25Track record — 3 public repos, account ~1 yr old
Inputs used
followers1
owner_typeUser
is_verified
owner_loginReihantt6
public_repos3
account_age_days380
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 5 days ago
20/20Version history — 11 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packages@sns-myagent/cli
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Engineering Quality

Are baseline engineering and documentation practices in place?

62Moderate · 20% of overall
How it's scored
24/24CI workflows — 4 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.

Documentation

65Moderate
How it's scored
30/30README
25/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
0/10Wiki
Inputs used
topics
has_wikino
homepage
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

38At risk · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — no data
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5License — license file not detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 11 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2.7
Excluded from scoring (no data or not applicable): ci_tests. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
7.6/25Indirect dependencies free of known advisories — 3 affected: adm-zip 0.5.18 (high 7.5), sharp 0.34.5 (high 7.3), @opentelemetry/core 2.7.1 (moderate 5.3)
40/40No advisories left outstanding — no advisory has been public longer than 90 days
Inputs used
sourceosv
advisories3
affected_packages3
assessed_packages325
unassessed_packages0
affected_by_severityhigh 2, moderate 1
direct_affected_packages0
Matched the npm:@sns-myagent/cli@0.3.9 runtime dependency closure — what installing the published package pulls in — 325 packages. Reachability is not analyzed.

AI Readiness

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.

52Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 93 of 94 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.989
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
11/11Static type checking — tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
0/10Demonstrated agent practice — no agent-authored commits among the last 94
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileyes
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configstsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
53.9/55Manageable file sizes — 21/1,060 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes492,776
source_files_sampled1,060
oversized_source_files21

Key facts

2GitHub stars
1contributors
94commits, last 12 months
5days since last push
12releases
1bus factor
0open issues
npmpackage ecosystems

Data collection 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

More detail

OpenSSF Scorecard 2.7 / 10
2.7aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-23 19:16 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/aCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities11 existing vulnerabilities detected
Direct dependencies 44
RegistryPackageVersion constraintManifest
npm@agentclientprotocol/sdk0.25.0package.json
npm@babel/parser^7.29.7package.json
npm@mozilla/readability^0.6.0package.json
npm@oh-my-pi/hashline^16.1.18package.json
npm@oh-my-pi/omp-stats^16.1.18package.json
npm@oh-my-pi/pi-agent-core^16.1.18package.json
npm@oh-my-pi/pi-ai^16.1.18package.json
npm@oh-my-pi/pi-catalog^16.1.18package.json
npm@oh-my-pi/pi-mnemopi^16.1.18package.json
npm@oh-my-pi/pi-natives^16.1.18package.json
npm@oh-my-pi/pi-tui^16.1.18package.json
npm@oh-my-pi/pi-utils^16.1.18package.json
npm@oh-my-pi/pi-wire^16.1.18package.json
npm@oh-my-pi/snapcompact^16.1.18package.json
npm@opentelemetry/api^1.9.1package.json
npm@opentelemetry/context-async-hooks^2.7.1package.json
npm@opentelemetry/exporter-trace-otlp-proto^0.218.0package.json
npm@opentelemetry/resources^2.7.1package.json
npm@opentelemetry/sdk-trace-base^2.7.1package.json
npm@opentelemetry/sdk-trace-node^2.7.1package.json
npm@puppeteer/browsers^3.0.4package.json
npm@types/turndown5.0.6package.json
npm@xterm/headless^6.0.0package.json
npmarktype^2.2.0package.json
npmboxen^8.0.1package.json
npmchalk^5.6.2package.json
npmcli-table3^0.6.5package.json
npmdiff^9.0.0package.json
npmfast-xml-parser^5.9.0package.json
npmgradient-string^3.0.0package.json
npmgrammy^1.44.0package.json
npmhandlebars^4.7.9package.json
npmjs-yaml^5.1.0package.json
npmlinkedom^0.18.12package.json
npmlru-cache11.5.1package.json
npmmammoth^1.12.0package.json
npmmupdf^1.27.0package.json
npmora^9.4.1package.json
npmpicocolors^1.1.1package.json
npmpuppeteer-core^25.1.0package.json
npmstring-width^8.2.1package.json
npmturndown7.2.4package.json
npmturndown-plugin-gfm1.0.2package.json
npmzod^4package.json
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Dependency advisories 3

Installing npm:@sns-myagent/cli@0.3.9 pulls in 325 packages, direct and transitive: 3 carry known advisories, of which 0 are direct dependencies.

PackageVersionRelationSeverityAdvisoriesFixed in
adm-zip0.5.18indirecthigh10.6.0
sharp0.34.5indirecthigh10.35.0
@opentelemetry/core2.7.1indirectmoderate12.8.0

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 78383,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "CSS": 32249,
        "HTML": 2721,
        "Ruby": 37065,
        "Julia": 45564,
        "Shell": 22630,
        "Python": 66800,
        "Dockerfile": 1781,
        "JavaScript": 83868,
        "PowerShell": 4646,
        "TypeScript": 10793412
      },
      "pushed_at": "2026-07-18T11:09:57Z",
      "created_at": "2026-06-23T14:25:06Z",
      "owner_type": "User",
      "updated_at": "2026-07-18T11:10:01Z",
      "description": "SNS MyAgent — Lightweight personal AI agent CLI. Forked from Hermes Agent (Nous Research) and OMP (OhMyPi)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "reihsns.web.id",
      "name": "Mohamad Reihan tegar prasetya",
      "type": "User",
      "login": "Reihantt6",
      "company": null,
      "location": "Jember Jawa timur",
      "followers": 1,
      "avatar_url": "https://avatars.githubusercontent.com/u/219822095?v=4",
      "created_at": "2025-07-08T09:31:21Z",
      "is_verified": null,
      "public_repos": 3,
      "account_age_days": 380
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.3.9",
          "kind": "patch",
          "published_at": "2026-07-18T10:37:18Z"
        },
        {
          "tag": "v0.3.8",
          "kind": "patch",
          "published_at": "2026-06-30T14:24:49Z"
        },
        {
          "tag": "v0.3.7",
          "kind": "patch",
          "published_at": "2026-06-30T11:35:45Z"
        },
        {
          "tag": "v0.3.6",
          "kind": "patch",
          "published_at": "2026-06-30T07:24:38Z"
        },
        {
          "tag": "v0.3.5",
          "kind": "patch",
          "published_at": "2026-06-30T06:40:35Z"
        },
        {
          "tag": "v0.3.4",
          "kind": "patch",
          "published_at": "2026-06-30T06:13:41Z"
        },
        {
          "tag": "v0.3.3",
          "kind": "patch",
          "published_at": "2026-06-30T03:43:05Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2026-06-30T02:59:28Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-06-30T01:42:25Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-06-29T18:20:32Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-06-25T09:45:16Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-06-25T06:49:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "9953fe23af270d07b9e7c214a184af95e6653a7d",
          "body": null,
          "is_bot": false,
          "headline": "fix: build script version 0.3.8→0.3.9",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T11:09:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "786850becd781da3c07d42247d0c65b60e22654d",
          "body": "- Unify naming: snscoder → snsagent (all src/docs/README)\n- Theme: OMP cyan/blue/gold → orange #F97316 (dark.json + light.json)\n- Welcome screen: rounded box → flat single-column layout\n- Splash/banner: orange SNS branding\n- BYOK tab: first in /setup (custom endpoint default)\n- Bug fixes: ensemble executor, banner crash, 40 cyan refs\n- Zero OMP/Pi Agent references in user-facing docs",
          "is_bot": false,
          "headline": "release: v0.3.9 — identity overhaul + bug fixes",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T10:31:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1a6c10c43203bb59303e6e08f2a8d602866e194",
          "body": "Bug #1 (critical): ensemble.ts createResilientExecutor threw\n  'executeAgent must be provided by caller' — never called real executor.\n  Now passes executeAgent through.\n\nBug #2: 40 chalk.cyan refs in CLI/UI files → all replaced with orange\n  #F97316. Files: gradient.ts, notifier.ts, grep-cli.ts, ss\n[…]\ne.ts still used OMP rounded box layout. Replaced with\n  flat single-column layout.\n\nBug #5: banner.ts cols=0 crash in non-TTY (|| vs ?? operator).\n  Fixed: ?? → || fallback.\n\nTS clean, binary rebuilt.",
          "is_bot": false,
          "headline": "fix: 5 bugs found in audit",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T08:56:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "42cb253581ea1b31534c48a2b6c781d9a037d35a",
          "body": "…style\n\n- Remove rounded box borders (tl/tr/bl/br/v/h chars)\n- Remove two-column layout (left: logo+model, right: tips+LSP+sessions)\n- New: single-column flat layout — logo → brand → model → divider → shortcuts → sessions → LSP → tip\n- Orange accent dots (●) for section headers\n- No 'Welcome back!' text\n- Dim dividers instead of box borders\n- TS clean, binary rebuilt",
          "is_bot": false,
          "headline": "feat: welcome screen flat layout — no rounded box, no two-column OMP …",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T06:39:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "752b562160a72c8bfe51f0d6b97a794e61c52add",
          "body": null,
          "is_bot": false,
          "headline": "fix: banner cols crash + rebuild binary",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T04:59:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bae9c81b74a87d3fab66db7f723d21051da7530f",
          "body": null,
          "is_bot": false,
          "headline": "fix: BYOK tab first in /setup — custom endpoint default pilihan 1",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T04:16:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e913d3d059ee88623e7c61241a8b73dfb7321dfe",
          "body": "- dark.json: accent #febc38→#F97316, border blue→orange, cyan→orange\n- light.json: teal/blue→orange, all accents orange\n- chat-blocks: cyan bullet → orange #F97316\n- command-palette: cyan → orange\n- chat-ui: cyan → orange, spinner yellow\n- code-cell: cyan accents → orange\n- splash: cyan → orange\n- Schema URL removed (was can1357/oh-my-pi)\n- TS clean (0 errors)",
          "is_bot": false,
          "headline": "feat: theme overhaul — orange everywhere, zero OMP colors",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-18T03:50:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "615dd895ed6355cb4b7fb75d791fe6a9e80c31cd",
          "body": "- Rename all snscoder → snsagent (64 refs in src/, docs/, README)\n- Splash: orange dot + bold SNS + flat info rows (no boxes, no OMP style)\n- Banner: flat layout, no boxen, no gradient boxes, orange SNS logo\n- Colors: primary/accent use orange #F97316 via chalk.hex\n- All docs unified to snsagent naming\n- TS clean (0 errors)",
          "is_bot": false,
          "headline": "feat: unify naming snsagent + redesign splash/banner/colors",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-17T16:26:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a103663322639223ff0c06eddccc8808e0c2fe0",
          "body": "…README cleanup\n\n- Rename PI_LOGO → SNS_LOGO in all 4 import sites (welcome.ts, splash.ts, outro.ts, wizard-overlay.ts)\n- Remove all fork/Pi Agent/oh-my-pi references from README.md and docs/\n- README now presents as independent product, no upstream mentions\n- Fix duplicate '### Web & Browser' section\n- Fix slash command count 61/62 → 68 (actual registered count)\n- docs/faq.md: rewrite comparison as standalone product\n- docs/memory.md: remove 'forked from oh-my-pi' claim\n- TS clean (0 errors)",
          "is_bot": false,
          "headline": "feat(rombak): full identity overhaul — PI_LOGO→SNS_LOGO, docs scrub, …",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-17T15:07:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01890ada902e42a0c4322748b57bf055cd694058",
          "body": null,
          "is_bot": false,
          "headline": "fix: remove duplicate readFileSync import — tsc clean",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-06T14:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "faabcd735b2c1e3f2136c54ed73268a773e4f09e",
          "body": "Code fixes (src/cli/index.ts + byok-setup.ts):\n1. Extract byokProviderSetup() function — re-init no longer crashes (was undefined)\n2. Add missing imports: existsSync, mkdirSync, writeFileSync, join, getAgentDir\n3. Ollama/no-auth providers set auth:'none' instead of auth:'apiKey' (was rejected)\n4. BY\n[…]\ncate code\n\nDoc fixes (README.md):\n7. Config format: YAML not JSON (was wrong: 'config.json (JSON, not YAML)')\n8. Slash command count: 67 not 157 (was inflated 2.3x)\n9. BYOK feature properly documented",
          "is_bot": false,
          "headline": "fix: 6 bugs from systematic audit — crashes, Ollama auth, Escape, docs",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-06T13:48:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0777cad603b780feb17d61a52b5550faf027fa6a",
          "body": "Bug 5 (CRITICAL): BYOK wrote to ~/.sns-myagent/models.yml but runtime reads from\ngetAgentDir()/models.yml (~/.omp/agent/models.yml). Provider config was invisible\nto the agent session. Fixed both TUI tab and CLI init to use getAgentDir().\n\nAlso updated security warning text to generic 'agent config directory'.",
          "is_bot": false,
          "headline": "fix(critical): BYOK models.yml path — align with runtime getAgentDir()",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-06T13:34:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ab90decc5294759192b0d937b3730602400d909",
          "body": "- Fix getAgentDir() → os.homedir()/.sns-myagent (was writing to .omp/agent)\n- Allow re-running 'snsagent init' to re-configure provider\n- Set modal=true during model detection (prevent tab switching)\n- Add API Key security warning in TUI (stored locally in models.yml)",
          "is_bot": false,
          "headline": "fix(byok): 4 bug fixes — path, re-init, modal lock, security warning",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-06T12:35:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2768a58e3ffe0a074fa5fcd608137886b0bb5b1b",
          "body": "- New BYOK tab in setup wizard (src/modes/setup-wizard/scenes/byok-setup.ts)\n- BYOK provider setup in 'snsagent init' / 'snsagent setup' CLI command\n- Auto-detect models from /models endpoint (OpenAI-compatible)\n- Save provider to ~/.sns-myagent/models.yml\n- Setup version bumped 1 → 2\n- Termux (Android) install guide (docs/termux.md)\n- Updated: README, CHANGELOG, docs/configuration.md, docs/installation.md",
          "is_bot": false,
          "headline": "feat(byok): quick setup wizard — Base URL + API Key + auto-detect models",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-07-06T12:17:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f7c1474926a064efe930bbe055d64c4b017d82f",
          "body": null,
          "is_bot": false,
          "headline": "feat(init): interactive memory backend selection (v0.3.8)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-30T14:22:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25ae96f17d4e23c4b68f3064c8f183debd4879d8",
          "body": "TUI redesign — Bung's request: 'jangan gradient, layout diganti':\n- src/tui/splash.ts: 'MY snsagent v0.3.7' single line, info rows as '● key value',\n  no separator boxes, no rounded borders\n- src/tui/chat-blocks.ts: '● role' header + '│' indent for continuation,\n  no rounded box wrapping\n- src/ui/st\n[…]\ner status (10 commands, auto-boot via env)\n  - Multi-agent orchestration (21 tests, executor stubbed)\n  - TUI rebrand notes\n  - CI/CD + publishing pipeline summary\n- Verified 2026-06-30 against source",
          "is_bot": false,
          "headline": "feat(tui+docs): flat '●' prefix layout + Implementation Status (v0.3.7)",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T11:33:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6f7e275ae1037456576286e389a425a788ff3d51",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump to v0.3.6",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T07:27:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06c152ec8c25264cba05865fa6916446cb613164",
          "body": "- src/ui/gradient.ts: 104→24 lines, gradient→single cyan accent\n- src/tui/splash.ts: MY + snsagent brand, single cyan accent\n- src/tui/chat-blocks.ts: single cyan border, role labels only (you/snsagent/tool)\n- src/ui/status-bar.ts: dim key + cyan value, no per-segment color\n- src/ui/memory-toast.ts:\n[…]\norts\n- src/tui/command-palette.ts: removed filterCommands export\n\nVerified: 197 tests pass, smoke-tui.ts renders 7 components cleanly,\nsnsagent v0.3.5 binary runs clean with zero omp/Oh My Pi leakage.",
          "is_bot": false,
          "headline": "feat(tui): minimal single-accent rebrand (v0.3.6)",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T07:22:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "46017a66be251ff5c6e4ca6cfdec544da46dbd3b",
          "body": "…age)\n\n22 files patched in this commit + 18 from parallel subagent (commit split\nfor reviewability — they overlap at file list, single fix pass).\n\nChanges:\n- node_modules/@oh-my-pi/pi-utils/src/dirs.ts: APP_NAME 'omp' → 'snsagent',\n  CONFIG_DIR_NAME '.omp' → '.sns-myagent' (runtime patch, needs re-a\n[…]\n: version 0.3.5, description drop 'Pi Agent', add keywords\n\nVerified: v0.3.5 binary installed, 'snsagent --version' → 0.3.5,\nruntime 'omp'/'Oh My Pi' leak check on 'snsagent config show' = ZERO LEAKS.",
          "is_bot": false,
          "headline": "feat(rebrand): v0.3.5 full SNS-MyAgent identity (no omp/Oh My Pi leak…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T06:38:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6725ae256935fb09655ba974831c8a20a09bd10a",
          "body": "Renders splash + chat blocks + status bar + error display + memory toast +\ncommand palette + gradient helpers in one pass to verify SnsAgent branding\nend-to-end. Also fixes 3 'SnsCoder' → 'SnsAgent' branding leaks in\nsrc/tui/splash.ts (SUBTITLE + renderInlineHeader) and\nsrc/tui/chat-blocks.ts (renderSessionHeader). src/ui/banner.ts SUBTITLE\nalso rebranded.\n\nAll 7 components render without crashing.",
          "is_bot": false,
          "headline": "test(tui): smoke-tui.ts — visual smoke for 7 TUI components",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T06:32:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "069f85732c7e7bc463dc885442fe3b630bb1a50f",
          "body": "…all overwrites)\n\nWithout this, npm refuses to symlink 'snsagent' to PATH because\nthe bin field references a non-existent shim.\n\n- bin/.npmignore: only ship .gitkeep + snsagent.js (NOT 350MB binaries)\n- bin/snsagent.js: intelligent shim — probes for platform binary,\n  prints clear error if missing (no more silent ENOENT crash)\n- Bump to v0.3.4",
          "is_bot": false,
          "headline": "fix(npm): ship bin/snsagent.js shim in tarball (placeholder, postinst…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T06:11:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d119ee02865c683973f0bd102fab65ebbc2bad10",
          "body": "Internal dev tracking docs MUST stay local. They were committed by\nearlier 'git add -A' runs before the gitignore rule was added.\n\n- git rm --cached: removes from index, keeps local copy\n- .gitignore: add PLAN-*.md + DOCS-AUDIT-TRACKER.md (consolidate list)\n- .gitignore: bin/snscoder* → bin/snsagent* (match rebrand)\n\nBung reminded: internal planning never leaves the VPS.",
          "is_bot": false,
          "headline": "chore(gitignore): untrack KANBAN.md + PROGRESS.md + PLAN-PHASE-5.md",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T03:47:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7c91312f61f3cdf6b2f37ec7fa9514a958db264",
          "body": "…tinstall\n\n- All user-facing strings: snscoder → snsagent\n- package.json bin: only 'snsagent' (was: snscoder + snsagent)\n- Build & Release workflow: snsagent-* artifact names\n- Dockerfile, smoke-test, ci.yml: all use snsagent\n- fetch-binary: shim is bin/snsagent.js, hard-exit(1) on failure\n  (was: silent exit 0, left user with broken install)\n\nUX: just type 'snsagent' to start agent (matches Hermes mental model)",
          "is_bot": false,
          "headline": "feat(rebrand): rename binary snsagent (drop snscoder) + hard-fail pos…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T03:41:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a730024ffd2d203f0967c737bd7f1d8ce540ed7d",
          "body": "- Default no-arg behavior now launches full agent mode (was: HELP)\n- New commands: 'agent' (alias for default)\n- Add 'snsagent' binary alias via package.json bin field\n- Update HELP to reflect new default behavior\n- Matches Hermes UX: just type the command, get the agent",
          "is_bot": false,
          "headline": "feat(cli): snscoder (no args) starts agent + add snsagent alias",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T02:57:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba9ce2f2e841709e38e5a3d269df8c0e528646b1",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump to v0.3.1 (PKG_VERSION sync)",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T01:55:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98a996c7bf07e1288f33ccef60aee17658b2057c",
          "body": "- scripts/fetch-binary.mjs: rewrite to handle raw binary assets\n  (not zipped — matches build-release.yml output)\n- Add bin/.npmignore so tarball doesn't ship 350MB of binaries\n- bin/ now in package.json files (postinstall fills it)\n- src/cli/index.ts: strip surrounding quotes from PKG_VERSION define\n  (fixes 'snscoder \"v0.3.0\"' output with literal quotes)\n- Verified end-to-end on VPS: npm install -g → snscoder on PATH → 0.3.0",
          "is_bot": false,
          "headline": "fix(npm): make 'npm install -g @sns-myagent/cli' actually work",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-30T01:40:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47c561c37305c01a1ee0240be69701022eec9d10",
          "body": null,
          "is_bot": false,
          "headline": "docs: PROGRESS.md v0.3.0 shipped — Phase 6 publish complete",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:56:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea00dd6d8d2b4d45f38c7fcc8a67981e994fc5b0",
          "body": "Without this, CI runner's binary throws on every command and stdout\nnever contains 'snscoder ', so version check fails.",
          "is_bot": false,
          "headline": "ci(smoke): install pi_natives in smoke job for JS-only fallback mode",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:52:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "540a7eed6f43cf5a8aff8ebc072897c420e758df",
          "body": "- run_check now only checks exit code (needle argument was eating the\n  command args, making unknown-command test pass on no-args help)\n- run_loose for version/config (tolerates exit 0/1 from js-only fallback)\n- local: 8/8 pass",
          "is_bot": false,
          "headline": "fix(smoke): clean needle-based assertions for pi-natives fallback mode",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:49:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "849434727cfea83bab7e3ba079fe355721d3f332",
          "body": null,
          "is_bot": false,
          "headline": "ci(smoke): upload+download binary artifact between build and smoke jobs",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afe1648931c46b44f0e4c2b90359967775f874d2",
          "body": "- scripts/smoke-test.sh: 9 deterministic checks against built binary\n  (version, help, init, config, orchestrate stub, unknown cmd, telegram)\n- .github/workflows/ci.yml: new 'smoke' job runs after build\n  Wired into all-checks needs + summary table + failure gate\n- Local run: 9/9 PASS",
          "is_bot": false,
          "headline": "test(e2e): smoke-test.sh + CI integration (9 CLI checks)",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:40:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12f8450d83afac698e864154722f80e74347be57",
          "body": "- Dockerfile: 2-stage build (fetcher downloads prebuilt binary from\n  GitHub Releases, runtime = alpine + tini + binary)\n- .dockerignore: exclude tests, internal docs, node_modules\n- .github/workflows/docker.yml: QEMU + buildx + GHCR push\n  - Per-arch tags: latest-amd64, v0.3.0-amd64 etc\n  - Multi-arch manifest: latest, v0.3.0",
          "is_bot": false,
          "headline": "ci(docker): multi-arch Docker image (amd64+arm64) push to ghcr.io",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:38:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99af3e1aefd74aacc25782089014279d992af8fc",
          "body": "… drop metadata field\n\n- Add src/agents/strategies/index.ts (missing barrel)\n- ensemble.ts: extract .result from TaskResult<T> before returning AgentResponse\n- consensus.ts: remove 'metadata' field not in EnsembleResult type\n- All caught by CI's tsgo (stricter than local tsc, but real bugs)",
          "is_bot": false,
          "headline": "fix(agents): CI type errors — strategies barrel + TaskResult unwrap +…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:37:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5c0391620df895d87e63dbda759e7867c057cca",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump to v0.3.0 + harden prepack for standalone clones",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:32:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1bef05dcd71e148767b6393da50c42d9ef66261",
          "body": "… tests, working binary)",
          "is_bot": false,
          "headline": "docs: PROGRESS.md update for v0.3.0 — Phase 5 complete (5 commits, 21…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:28:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3e978265c7a5155a6a3fe652daf7e19b230b78d",
          "body": "- src/agents/: config.ts, ensemble.ts, resilience.ts + 3 strategies (1331 lines, 21 tests)\n- src/cli/index.ts: orchestrate command wired\n- src/async/index.ts: export AsyncJobManager + related types\n- scripts/apply-pi-natives-patch.js: rewrite — conditional JS-only fallback\n  (prior version appended dead code after unconditional throw)\n- .gitignore: bin/* fully gitignored (built via CI)\n- bun.lock: first time tracked\n- binary verified: snscoder 0.3.0 — version, help, orchestrate all work",
          "is_bot": false,
          "headline": "feat(phase-5): multi-agent orchestration + working v0.3.0 binary",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:16:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "519684a204460f64a349904d896980a36ddcdd9b",
          "body": "…defaults",
          "is_bot": false,
          "headline": "test(agents): add 6 config tests — parseYaml + AgentsConfigManager + …",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:04:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17be410cf980ad52fecf7992dd4822026529c9f9",
          "body": "…fallback",
          "is_bot": false,
          "headline": "test(agents): add 9 resilience tests — retry/timeout/circuit-breaker/…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:03:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0d4393ba035d4731e0829a7bc5432e4cb955de8",
          "body": "- snscoder orchestrate <prompt> [--strategy S] [--agents r1,r2] [--ensemble N]\n  Currently returns clear stub message until agent executor is wired\n- src/agents/__tests__/strategies.test.ts — 6 deterministic tests:\n  aggregateTokens x2, ConsensusStrategy x2, BestOfNStrategy, CriticStrategy\n- All 6 pass; pre-existing async 21-test suite still green",
          "is_bot": false,
          "headline": "feat(agents): wire orchestrate CLI + 6 strategy tests",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T18:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2a2a0d6258b78d9a7f994cc86df8ef12c5519c1",
          "body": "…ble strategies\n\n- src/agents/config.ts — YAML schema + arktype validation + role resolver (5.2)\n- src/agents/ensemble.ts — orchestrator entry with cost tracking (5.3e)\n- src/agents/strategies/{consensus,critic,best-of-n}.ts — 3 strategies (5.3a-d)\n- src/agents/resilience.ts — retry + circuit breake\n[…]\ntoast}.ts — premium UI helpers\n- splash.ts version resolution: multi-path fallback + CWD walk\n- modes branding patches (welcome, splash, event-controller)\n- drop bin/snscoder* (rebuild via CI/release)",
          "is_bot": false,
          "headline": "feat(agents): Phase 5 multi-agent orchestration — agents.yaml + ensem…",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-29T17:58:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "62af24c156af5b108b24e6d63280ceaa4bea6e93",
          "body": "…ons (5.3)\n\n- src/async/types.ts: TaskStatus, AsyncTask, TaskRunnerOptions\n- src/async/task-store.ts: SQLite persistence (bun:sqlite, WAL, indexes)\n- src/async/task-runner.ts: background execution with maxConcurrent, timeout, abort\n- src/async/notifier.ts: CLI + Telegram notification formatting\n- sr\n[…]\nort\n- src/slash-commands/helpers/task.ts: /task run/list/status/cancel/result\n- Registered in builtin-registry.ts + Telegram handler\n- 21 tests (13 store + 8 runner), all pass\n- TSC clean on new files",
          "is_bot": false,
          "headline": "feat(async): async workflow engine — background tasks with notificati…",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-27T13:18:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf8bd8af4057d12f74f80dc11ea15c89eac88197",
          "body": "- Phase 4 items moved to DONE\n- v0.2.0 scope marked COMPLETED\n- KANBAN: Phase 5/6 backlogs cleaned\n- Next: v0.3.0 (multi-agent + publish)",
          "is_bot": false,
          "headline": "docs: Phase 4 complete — PROGRESS + KANBAN updated (p4-5)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T14:04:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd3ef38ce80d6fbf28091263cee7d31d07f90483",
          "body": "- Build script defines version 0.2.0\n- Binary rebuilt: 113MB ELF, snscoder 0.2.0 verified",
          "is_bot": false,
          "headline": "build: bump PKG_VERSION to 0.2.0 (p4-4)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T14:00:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "133d7bf1dfb250fc6a320abeb8df5c0511932287",
          "body": "- parseMessage: detect document, photo, video, voice, audio attachments\n- handler: case 'file' — download via Telegram API, forward to agent with metadata\n- bot: sendDocument() for outbound files, downloadFile() using getFile+fetch\n- HandleContext: downloadFile callback wired in onMessage\n\nUpload fl\n[…]\nwnloads to /tmp/sns-telegram-files/ →\nagent receives prompt with file path + mime + caption. Agent tools can read from disk.\nDownload: sendDocument() on TelegramBot class, ready for agent tool wiring.",
          "is_bot": false,
          "headline": "feat(telegram): file upload/download support (p4-3)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T13:58:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f25f490eca46511e53779f8ed355206e5d8ec76f",
          "body": "- bridge.ts: per-chat agent sessions via SDK createAgentSession()\n  - TTL cache (30min idle), resetChatSession, getBridgeStats\n- handler.ts: new /memory /cron /model /code /review commands\n  - dynamic /reset and /status (bridge-aware)\n  - TS narrowing fix for nested switch\n- bot.ts: pass resetChatSession + getBridgeStats to HandleContext\n- index.ts: plumb new opts through startTelegramAdapter\n- cli/index.ts: create bridge in cmdTelegram start, adapt 3→2 arg",
          "is_bot": false,
          "headline": "feat(telegram): wire agent bridge + add slash commands (p4-1, p4-2)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T13:48:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa41082668d3b34716843a0a414d13e2083f7393",
          "body": "… bar, chat blocks\n\n- colors.ts: brand gradient (#00d2ff→#7b2ff7→#ff6b9d) + semantic role colors\n- splash.ts: SNS ASCII art block logo + gradient + model info\n- banner.ts: premium chalk+gradient+boxen frame\n- chat-blocks.ts: gradient borders, premium feel per block\n- status-bar.ts: live bottom bar (model, tokens, time, mem)\n- chat-ui.ts: status bar wired, update on every interaction",
          "is_bot": false,
          "headline": "feat(tui): premium terminal UI — brand gradients, splash logo, status…",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T13:36:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bbe43cca260803f2dd87330fe96938d617836dd",
          "body": null,
          "is_bot": false,
          "headline": "docs: update PROGRESS.md + KANBAN.md for Phase 3 completion",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T08:14:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d47f5836705bfde8cbadde6d96682593fd5d8cbc",
          "body": "- Fix README: 58→61 slash commands, 4→7 memory backends, version badge 0.2.0\n- Remove duplicate 'search' tool entry from README\n- Fix memory.backend options list in config example\n- Add sns-myagent/ to .gitignore (nested copy cleanup)\n- Binary verified working: bin/snscoder --version → snscoder 0.1.0\n- Add 'launch' CLI command for full agent interactive mode",
          "is_bot": false,
          "headline": "fix: Phase 3 — README audit, binary verification, launch command",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-26T08:12:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5090f369a0b592bb2decd1f219fd72fe1412522",
          "body": "- src/tui/chat-blocks.ts: message rendering blocks (189 lines)\n- src/tui/chat-ui.ts: interactive chat UI (249 lines)\n- src/tui/splash.ts: startup splash screen (106 lines)\n- src/cli/index.ts: refactored CLI entry (62 lines)\n- src/config/index.ts: config resolution fix\n- docs-index regenerated",
          "is_bot": false,
          "headline": "feat: TUI chat UI + CLI refactor",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T18:26:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9787289c5b94a14cfb41fb7aa70b8b1da22ee986",
          "body": "… status\n\nPhase 3 Task 3.2:\n- docs/memory.md: 4 → 7 backends, added all resolve.ts backends\n- CHANGELOG.md: 70+ tools → 30 built-in tools\n- Binary verified working (JS-only fallback, --version succeeds)",
          "is_bot": false,
          "headline": "fix: docs accuracy — memory backend count, tool count, backend wiring…",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T18:14:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8f12f3b0e594797e2c05a7fb4d50955312c1c50",
          "body": "…/mode commands\n\n- context-delta: static/dynamic split, SHACL-like hashing (~40% savings)\n- context-pyramid: 5 levels L0-L4, auto-demotion on budget pressure\n- lazy-skills: index-on-demand instead of bulk inject (~85% savings)\n- tool-compress: per-tool budgets, JSON/HTML/markdown reducers\n- tombston\n[…]\nns command with box-drawing UI\n- /mode command: set communication mode\n- TbmManager singleton coordinating all subsystems\n- 660-line test suite (tbm.test.ts)\n- All modules compile clean (tsc --noEmit)",
          "is_bot": false,
          "headline": "feat(tbm): implement full Token Budget Manager — 7 modules + /tokens …",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T15:44:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a50203e70af08b2eb905043f4ed8d63f8d3f32a6",
          "body": null,
          "is_bot": false,
          "headline": "fix: skip stats dashboard embed when ../stats missing — standalone clone",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T11:08:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18a6481df3ec7f52f72f86bb4b49f8f2d171d4aa",
          "body": null,
          "is_bot": false,
          "headline": "fix: make collab-web optional in prepack — not available in fresh clone",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T11:04:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05e4773a61f6210ed86839880a6bd934ea911786",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): verify bin/ binary not dist/ — this is a CLI project",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T11:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2dde49f18ea519474328f4e0d9d00a5a7872726",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): add setup-bun to Build job — bun not on runner PATH",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T10:58:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "476daa384104fa80bf46067b62439267c1112c93",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): remove --frozen-lockfile — no bun.lockb in repo",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T10:55:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbc3401feb31d348d881ff95400d9e3888aa8b22",
          "body": "Windows runner has no 'ls' or 'file' (PowerShell only).\nbash is available on windows-latest runners.",
          "is_bot": false,
          "headline": "fix(ci): bash shell for test step, plain file existence check",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:43:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f6cce7f09db685b27e382dda67ef0757402981f",
          "body": "latest bun on Windows runner had different default target behavior.\n1.3.14 verified working locally.",
          "is_bot": false,
          "headline": "fix(ci): pin bun to 1.3.14 (matches local dev)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:38:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25a07f63859990501721e75c85261ba9cac9bf0a",
          "body": "Without --target, bun build assumes browser target on Windows runner.\nThis breaks imports of bun:* builtins (Glob, YAML) from @oh-my-pi/pi-utils.",
          "is_bot": false,
          "headline": "fix(ci): add --target=bun — Windows defaults to browser target",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:32:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a042f63cea38dc493663b8c7bacbf5619543538",
          "body": "Windows PowerShell interprets bash-style backslash-quote escaping as\nescape character and chokes on single-quotes. Move FLAGS to env block\nso it's shell-agnostic.",
          "is_bot": false,
          "headline": "fix(ci): use env: block for FLAGS — PowerShell-safe across all runners",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:27:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f8966a7d023b64bf519b4e4a89e967d1d13f7de",
          "body": "bun install --frozen-lockfile fails without lockfile.\nRepo uses package.json only.",
          "is_bot": false,
          "headline": "fix(ci): drop --frozen-lockfile (no bun.lockb in repo)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:22:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75441456802941289ba627a6af871eb6d82b77d4",
          "body": "CI failed: bun build can't resolve @oh-my-pi/* packages without install step.\nAlso drop --help/--version check — snscoder binary is REPL, exits without args.",
          "is_bot": false,
          "headline": "fix(ci): bun install before build, replace --help test with file check",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:19:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f45055c13beca525f79972737a1c7ae7bdd8f6e",
          "body": "- Parse wildcards, steps, ranges, lists\n- Range validation (out-of-range, reversed)\n- Step validation (zero/negative)\n- Day-of-week 7 as Sunday alias\n- Match logic for all cron fields\n- Next-run computation (minute, daily, monthly)",
          "is_bot": false,
          "headline": "test: cron parser — 22 tests covering all edge cases",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:17:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf9ebf8f0a5ba51c57d4825f3635720c90c3ab5b",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.2.0",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:10:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcf3a7779d7e2cda805e6b6aff2b5afd07b5cf35",
          "body": "…section + CI binaries\n\nUpdated platform support matrix to reflect all 5 CI-built targets.",
          "is_bot": false,
          "headline": "docs: README — add 3 new memory backends (mnemosyne/mem0/lcm) + cron …",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:05:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe895a6aad2dd54bee8f1347fee68467adf073dc",
          "body": "Matrix builds 5 binaries via Bun compile. Triggered on v* tags.\nAuto-creates GitHub release with all artifacts.",
          "is_bot": false,
          "headline": "ci: GitHub Actions cross-platform build (linux/macOS/windows x64+arm64)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T09:03:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "057f655db324373437441af88045c95e369b6af8",
          "body": null,
          "is_bot": false,
          "headline": "feat: memory backends — mnemosyne, mem0, lcm",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:58:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "873825fca9f5467086d32cfd63ea3b7c2221fa2e",
          "body": "- src/cron/cron-parser.ts: 5-field cron expression parser\n- src/cron/cron-store.ts: SQLite persistence (bun:sqlite)\n- src/cron/cron-scheduler.ts: background scheduler, prompt/shell/skill actions\n- /cron list|add|remove|run|status|enable|disable\n- cron.enabled + cron.intervalMs settings",
          "is_bot": false,
          "headline": "feat: cron scheduler — SQLite-backed, /cron slash command, 7 subcommands",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:50:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "034c7278b79d4c092ba28cf1849309221f47aeb6",
          "body": "- Fix 15 critical gaps: wrong tool names, wrong memory backends, nonexistent cron\n- 30 builtin tools listed (was 5), correct names (read/bash/edit not file_read/file_write/terminal)\n- Memory backends: mnemopi, hindsight, local, off (removed mnemosyne/mem0/lcm)\n- Config: .sns-myagent/config.json (not\n[…]\nconfig.yaml)\n- Removed nonexistent env vars (SNS_MODEL, SNS_PROVIDER, SNS_CONFIG_PATH)\n- Added real project structure, Telegram setup, JSON config examples\n- Removed internal planning/timeline/roadmap",
          "is_bot": false,
          "headline": "docs: rewrite README to match actual source code",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:38:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e63d9891417e2d9cdfab82c8d5ded916f1f3a5a",
          "body": "- Patch loader-state.js to return Proxy stub when .node not found\n- Idempotent postinstall patcher (scripts/apply-pi-natives-patch.js)\n- Patch file saved for reference (patches/pi-natives-js-only-fallback.patch)\n- Source run still works, binary starts in degraded mode",
          "is_bot": false,
          "headline": "fix: pi_natives JS-only fallback for compiled binaries",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:32:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6163830b1d0cbee40cbd6590ea77cafd7e966fe4",
          "body": null,
          "is_bot": false,
          "headline": "fix: gitignore internal tracking docs (PLAN/PROGRESS/KANBAN)",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:19:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60dab6e00273b715ba668987999260f62a464ef1",
          "body": "- PROGRESS.md: full README audit (58 cmds ✅, 29 tools, memory backends, cron missing)\n- KANBAN.md: updated phases 1-2.5 as done, Phase 3 backlog\n- PLAN-PHASE-3.md: binary fix + README corrections plan\n- install.sh: rewritten for multi-arch (x64/ARM64), Termux-aware\n- bin/snscoder-linux-arm64: 91MB ELF aarch64 cross-compiled\n- Release v0.1.0: 4 assets (x64, arm64, default, js shim)",
          "is_bot": false,
          "headline": "docs: audit findings, ARM64 binary, multi-arch installer, Phase 3 plan",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T08:14:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97ba2b5bf7e1ac0f0b682ee2424533cb8c905162",
          "body": null,
          "is_bot": false,
          "headline": "v0.1.0: prebuilt binary, telegram adapter, integration tests, cleanup",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T06:48:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47ceed9eed5762032e0d1d3dd75e75c5b7e6e2f8",
          "body": "- README.md: removed 'Current SNS MyAgent Status' phase block (was internal\n  progress, not user-facing documentation). Public README should describe the\n  product, not its current development state.\n- CHANGELOG.md: rewrote Unreleased section from Roadmap-by-phase into proper\n  Keep-a-Changelog Adde\n[…]\nLocal copy preserved for internal use.\n\nPublic docs (README, CHANGELOG) = product narrative.\nInternal docs (PROGRESS, KANBAN, TODO-INTERNAL) = gitignored.\n\nCloses: docs-internal-tracking-hygiene task.",
          "is_bot": false,
          "headline": "docs: move internal phase tracker out of GitHub-visible files",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T05:01:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f08d181f9b8f6290ee65402339ac9be500d6c255",
          "body": "…e-derived inventory\n\n- Interactive Commands table now lists 58 real built-in slash commands grouped into\n  Session/Model/Memory/Goals/Tools/Output, sourced from\n  src/slash-commands/builtin-registry.ts via grep.\n- Removed 9 fabricated commands (/load, /unload, /skills, /recall, /memory add,\n  /memo\n[…]\nal src/tools/ inventory and\n  flag Telegram bot as not-yet-shipped (no src/telegram files exist).\n- DOCS-AUDIT-TRACKER.md added to .gitignore (internal tracking).\n\nCloses: docs-vs-source audit task 5.",
          "is_bot": false,
          "headline": "docs: replace fabricated slash-commands + tools table with real sourc…",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-25T04:54:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd35615fc720880e7e76b69218de86374c9938bb",
          "body": null,
          "is_bot": false,
          "headline": "ci: add automated diagnostic + workflow scripts",
          "author_name": "Hermes",
          "author_login": null,
          "committed_at": "2026-06-24T18:16:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f7def470f77ad9857e1d6442feccf8aabb1f318",
          "body": null,
          "is_bot": false,
          "headline": "docs: add PROGRESS.md — project tracking file",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T18:00:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46170021e246717528c6f3c701279b1945d3432e",
          "body": null,
          "is_bot": false,
          "headline": "docs: remove internal planning from README — public docs only",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T17:59:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed67b1e3850b3825b5ad553b027488c256368c27",
          "body": "- Mark Caveman Mode, TBM features as Planned (Phase 3)\n- Remove caveman/RTK association; RTK is theme/UI plugin only\n- Remove fabricated TBM config sections from README and configuration.md\n- Remove /mode, /tokens, /cache CLI commands (not in source)\n- Rewrite docs/tbm.md as honest design doc with status markers\n- Document what actually exists: goal token_budget, subagent request budgets\n- Add verification notes pointing to actual source files",
          "is_bot": false,
          "headline": "docs: fix fabricated feature claims — align with actual source code",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T17:28:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dabdc1a8a146d37a75211a5ccb8035029941e7a6",
          "body": null,
          "is_bot": false,
          "headline": "feat: add --version flag to CLI",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T17:21:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c7e823301584a09452171b94b1c7d63ff612914",
          "body": null,
          "is_bot": false,
          "headline": "feat: add GitHub Actions CI/CD workflow",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T17:21:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de9389ddf7162f77dbd798395506069567a8420e",
          "body": "…ller/scripts\n\n- Cleaned all 11 public docs: remove Indo text, fix tables, sync phase status\n- Added bin/snscoder.js (npm CLI shim)\n- Added install.ps1 (Windows PowerShell installer)\n- Added scripts/fetch-binary.mjs (postinstall binary downloader)\n- Updated package.json, install.sh",
          "is_bot": false,
          "headline": "docs: Phase 1 audit — English-only sweep, factual sync, add bin/insta…",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T17:18:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de19c1a9fa4e0071532930a1b3b171574513dd47",
          "body": "- Remove Indonesian prose (3 lines in competitor analysis)\n- Fix corrupt MCP table syntax (|| → |, remove *** artifacts)\n- Update Phase 1 status: Pending → Done (matches d1480eb)\n- Replace bun start CLI references with snscoder binary\n- Neutralize persona (remove I/we/Let's, use OSS third-person)\n- \n[…]\nl src/ tree (commands/, ui/, mnemopi/, mcp/)\n- Add mnemopi as default memory backend (matches upstream)\n- Calibrate TBM savings claim (70-90% → 60-80%)\n- Fix competitor table: Hermes Agent description",
          "is_bot": false,
          "headline": "docs: clean README — full English professional, sync with Phase 1 state",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T15:21:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "037a31dadcdf87748b37f8951fc726f682d16001",
          "body": "…runtime (Bun not Node), fix version, fix YAML format\n\n- README.md: replace all Hermes/NousResearch refs with oh-my-pi/can1357\n- README.md: Node.js/npm → Bun runtime (23 fixes)\n- docs/faq.md: 3 Hermes refs replaced with oh-my-pi\n- docs/terminal-ui.md: v0.2.0 → v0.1.0\n- docs/configuration.md: YAML format fix (comma-separated → proper list)\n- docs/installation.md: add Bun runtime to prerequisites\n- package.json: description fix (remove Hermes mention)",
          "is_bot": false,
          "headline": "fix: docs coherence — correct fork origin (oh-my-pi not Hermes), fix …",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-24T14:54:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1480eb17ebde0b4efe97cdf4c2ae5e114c6a5dd",
          "body": "Fork from Pi Agent (oh-my-pi) v16.1.15:\n- Copied 978 TS source files from Pi Agent npm package\n- Installed runtime deps (picocolors, ora, boxen, js-yaml, etc.)\n- Rebranded user-facing refs (repo URL, user-agent, project name)\n- Kept @oh-my-pi/* package imports (runtime dependencies)\n\nNew files:\n- sr\n[…]\nmd — terminal UI design doc\n\nCLI commands:\n- snscoder chat — interactive chat\n- snscoder setup — first-time setup\n\nConfig: ~/.sns-myagent/config.yaml, env var overrides\nAuth: BYOK (no forced API keys)",
          "is_bot": false,
          "headline": "feat: Phase 1 — fork scaffold, config system, terminal UI, CLI",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T17:45:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5a8dc604c80852160ff0a747310e784b17044a38",
          "body": "Internal dev files (KANBAN, TODO, HANDOFF) gitignored.\nKeep repo clean — only public-facing docs on GitHub.",
          "is_bot": false,
          "headline": "chore: add .gitignore, remove KANBAN.md from tracking",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T16:56:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e98b74a74fa84cc99a19cdac8ec41e2c933283c3",
          "body": "- Phase 0 done items (16 tasks completed)\n- Phase 1-5 backlog with target dates\n- Post-MVP roadmap\n- 6 decision points awaiting Bung",
          "is_bot": false,
          "headline": "chore: add KANBAN.md project tracking board",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T16:51:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c581c7b187380426772faed92c5ec17fb1a12ab2",
          "body": "- README: Project Timeline section with 6 phases, target dates, status\n- README: June/July 2026 monthly plan with weekly breakdown\n- README: Post-MVP roadmap items\n- CHANGELOG: v0.1.0 entry + full roadmap (5 phases detailed)\n- ToC: Project Timeline link added\n\nCurrent: Phase 0 complete (planning + docs)\nNext: Phase 1 (fork + scaffold) pending decision points",
          "is_bot": false,
          "headline": "docs: add project timeline + phase tracking + monthly plan",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T16:50:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cda8b6f05f396f9d9faa0d15ca174da18f54a620",
          "body": "Install methods:\n- curl one-liner (install.sh)\n- npm install -g snscoder\n- npx snscoder\n- git clone (dev)\n- Windows PowerShell\n\nNew files:\n- package.json (with bin field for CLI)\n- install.sh (one-liner installer)\n- SECURITY.md (vulnerability reporting, security model)\n- CONTRIBUTING.md (dev setup, \n[…]\nME updates:\n- 5 install options (curl/npm/npx/clone/Windows)\n- Recommended specs table (RAM, disk, CPU)\n- ToC links to detailed docs\n- Security + Changelog sections\n- Docs cross-references per section",
          "is_bot": false,
          "headline": "docs: full docs structure + multiple install methods + package.json",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T16:30:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "828165707ecc0b23229ec80cd8aa7d6bb4bf0c35",
          "body": "- Hermes Agent can configure itself through chat (same as SNS MyAgent)\n- Mark Hermes ✅ for conversational config + self-configuring\n- SNS MyAgent differentiator: purpose-built single-user terminal + TBM\n- Fix FAQ claim 'no other agent does this'",
          "is_bot": false,
          "headline": "docs: fix competitive table — Hermes ✅ self-configuring",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T15:56:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "682b9b1fa31041e8e8c20e33179e637eee0d9724",
          "body": "- Verified competitor features from GitHub repos (Pi, omp, Hermes, OpenClaw)\n- Accurate ✅/⚠️/❌ per feature (built-in vs extension vs none)\n- Mem0 section: 4 deployment modes (Cloud/Self-host/Library/Local) + pricing\n- Added TBM as unique row in competitive table\n- Legend and per-competitor notes",
          "is_bot": false,
          "headline": "docs: accurate competitive landscape + Mem0 deployment modes",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T15:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe952ee9d3d8a817acfa253ce4ea9894d2ccc6e0",
          "body": null,
          "is_bot": false,
          "headline": "docs: README v2 — competitive positioning, conversational config focus",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T14:55:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d62a1603b73b74dc973bc2d0b0bfa97e399b071f",
          "body": null,
          "is_bot": false,
          "headline": "docs: comprehensive README revision",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T14:44:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bf4635da6ce8559efea1725198579ce790f856c",
          "body": null,
          "is_bot": false,
          "headline": "docs: add README",
          "author_name": "Reihantt6",
          "author_login": "Reihantt6",
          "committed_at": "2026-06-23T14:30:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 12,
      "commits_last_year": 94,
      "latest_release_at": "2026-07-18T10:37:18Z",
      "latest_release_tag": "v0.3.9",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 2.1
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@sns-myagent/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "coding-agent",
            "ai",
            "llm",
            "cli",
            "byok",
            "telegram",
            "multi-agent",
            "tui",
            "agent",
            "snsagent",
            "sns-myagent"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@sns-myagent/cli",
          "is_deprecated": false,
          "latest_version": "0.3.9",
          "repository_url": "https://github.com/Reihantt6/sns-myagent",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2040,
          "first_published_at": "2026-06-25T11:36:27.562000Z",
          "latest_published_at": "2026-07-18T11:49:30.514000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 2,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 492776,
      "source_files_sampled": 1060,
      "oversized_source_files": 21,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "adm-zip",
            "direct": false,
            "version": "0.5.18",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-xcpc-8h2w-3j85"
            ],
            "fixed_version": "0.6.0",
            "advisory_count": 1,
            "oldest_advisory_days": 13
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.7.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-8988-4f7v-96qf"
            ],
            "fixed_version": "2.8.0",
            "advisory_count": 1,
            "oldest_advisory_days": 37
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2,
          "moderate": 1
        },
        "advisory_count": 3,
        "affected_count": 3,
        "assessed_count": 325,
        "malicious_count": 0,
        "assessed_package": "npm:@sns-myagent/cli@0.3.9",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@agentclientprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.25.0"
        },
        {
          "name": "@babel/parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.29.7"
        },
        {
          "name": "@mozilla/readability",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.0"
        },
        {
          "name": "@oh-my-pi/hashline",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/omp-stats",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-agent-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-ai",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-catalog",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-mnemopi",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-natives",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-tui",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-utils",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/pi-wire",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@oh-my-pi/snapcompact",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.18"
        },
        {
          "name": "@opentelemetry/api",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.9.1"
        },
        {
          "name": "@opentelemetry/context-async-hooks",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.7.1"
        },
        {
          "name": "@opentelemetry/exporter-trace-otlp-proto",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.218.0"
        },
        {
          "name": "@opentelemetry/resources",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.7.1"
        },
        {
          "name": "@opentelemetry/sdk-trace-base",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.7.1"
        },
        {
          "name": "@opentelemetry/sdk-trace-node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.7.1"
        },
        {
          "name": "@puppeteer/browsers",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.4"
        },
        {
          "name": "@types/turndown",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "5.0.6"
        },
        {
          "name": "@xterm/headless",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.0"
        },
        {
          "name": "arktype",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "boxen",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.0.1"
        },
        {
          "name": "chalk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.6.2"
        },
        {
          "name": "cli-table3",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.5"
        },
        {
          "name": "diff",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.0"
        },
        {
          "name": "fast-xml-parser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.9.0"
        },
        {
          "name": "gradient-string",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "grammy",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.44.0"
        },
        {
          "name": "handlebars",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.7.9"
        },
        {
          "name": "js-yaml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.0"
        },
        {
          "name": "linkedom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.18.12"
        },
        {
          "name": "lru-cache",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "11.5.1"
        },
        {
          "name": "mammoth",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.12.0"
        },
        {
          "name": "mupdf",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.27.0"
        },
        {
          "name": "ora",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.4.1"
        },
        {
          "name": "picocolors",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "puppeteer-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^25.1.0"
        },
        {
          "name": "string-width",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.2.1"
        },
        {
          "name": "turndown",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "7.2.4"
        },
        {
          "name": "turndown-plugin-gfm",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.0.2"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4"
        }
      ],
      "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": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "Reihantt6",
          "commits": 68,
          "avatar_url": "https://avatars.githubusercontent.com/u/219822095?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-release.yml",
        "ci.yml",
        "docker.yml",
        "issues.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": null,
            "reason": "no pull request found",
            "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/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "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": 0,
            "reason": "license file not 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": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file 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": "11 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "9953fe23af270d07b9e7c214a184af95e6653a7d",
        "ran_at": "2026-07-23T19:16:56Z",
        "aggregate_score": 2.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-18T11:17:07Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "CANCELLED",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Reihantt6/sns-myagent",
    "host": "github.com",
    "name": "sns-myagent",
    "owner": "Reihantt6"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 46,
      "inputs": {
        "security": 38,
        "vitality": 70,
        "community": 30,
        "governance": 29,
        "engineering": 62
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 94,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "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": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "94 commits in the last year",
                "points": 17.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 94
                    }
                  }
                ],
                "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": 12,
              "latest_release_tag": "v0.3.9",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 2.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "12 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "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 ~2.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.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": "at_risk",
        "name": "Community & Adoption",
        "value": 30,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 2,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": true,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "packages": [
                "@sns-myagent/cli"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2040
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,040 downloads/month across npm",
                "points": 44.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2040,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "critical",
        "name": "Sustainability & Governance",
        "value": 29,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "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": 23,
            "inputs": {
              "followers": 1,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "Reihantt6",
              "public_repos": 3,
              "account_age_days": 380
            },
            "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": "1 followers of Reihantt6",
                "points": 2.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1,
                      "login": "Reihantt6"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "3 public repos, account ~1 yr old",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 3
                    }
                  },
                  {
                    "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": [
                "@sns-myagent/cli"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "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": "11 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 62,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 27,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "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": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "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": "11 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the npm:@sns-myagent/cli@0.3.9 runtime dependency closure — what installing the published package pulls in — 325 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@sns-myagent/cli@0.3.9",
                  "assessed": 325
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 83,
            "inputs": {
              "source": "osv",
              "advisories": 3,
              "affected_packages": 3,
              "assessed_packages": 325,
              "unassessed_packages": 0,
              "affected_by_severity": "high 2, moderate 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "3 affected: adm-zip 0.5.18 (high 7.5), sharp 0.34.5 (high 7.3), @opentelemetry/core 2.7.1 (moderate 5.3)",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "adm-zip 0.5.18 (high 7.5), sharp 0.34.5 (high 7.3), @opentelemetry/core 2.7.1 (moderate 5.3)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 325,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": "moderate",
        "name": "AI Readiness",
        "value": 52,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.989,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "93 of 94 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 93,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "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 94",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 94
                    }
                  }
                ],
                "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": "TypeScript",
              "largest_source_bytes": 492776,
              "source_files_sampled": 1060,
              "oversized_source_files": 21
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "21/1060 source files over 60KB",
                "points": 53.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1060,
                      "oversized": 21
                    }
                  }
                ],
                "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": [
    "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-23T19:17:03.138563Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/Reihantt6/sns-myagent.svg",
  "full_name": "Reihantt6/sns-myagent",
  "license_state": "absent",
  "license_spdx": null
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.