Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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)

TypeScriptSin licencia detectada★ 2 estrellas⑂ 0 forksdesde jun 2026Ver en GitHub ↗

Reihantt6/sns-myagent tiene un índice de salud de 46 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (70/100) y la más baja, Sustainability & Governance (29/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

46
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

46
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

1 seguidor3 repositorios públicosdesde jul 2025

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@sns-myagent/cli0.3.9204011hace 5 díascoding-agentaillmclibyoktelegrammulti-agenttuiagentsnsagentsns-myagent

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

70Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
2.8/36Cadencia de commits — 4/52 semanas con commits
17.8/18Volumen de commits — 94 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year94
human_commit_share1
days_since_last_push5
active_weeks_last_year4
Cómo se puntúa
27/27Publica versiones — 12 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~2,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count12
latest_release_tagv0.3.9
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases2,1

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

30En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 2 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
44.1/80Descargas mensuales — 2040 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@sns-myagent/cli
dependents
ecosystemsnpm
total_downloads
monthly_downloads2040
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

29Crítico · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
2.2/25Alcance del propietario — 1 seguidores de Reihantt6
6.5/25Trayectoria — 3 repos públicos, cuenta de ~1 años
Datos de entrada utilizados
followers1
owner_typeUser
is_verified
owner_loginReihantt6
public_repos3
account_age_days380
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 11 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@sns-myagent/cli
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

62Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 4 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

65Moderado
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

38En riesgo · 16% del índice global
Cómo se puntúa
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 — sin datos
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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
7.6/25Dependencias indirectas libres de avisos conocidos — 3 afectados: adm-zip 0.5.18 (high 7.5), sharp 0.34.5 (high 7.3), @opentelemetry/core 2.7.1 (moderate 5.3)
40/40Sin avisos pendientes — ningún aviso lleva público más de 90 días
Datos de entrada utilizados
sourceosv
advisories3
affected_packages3
assessed_packages325
unassessed_packages0
affected_by_severityhigh 2, moderate 1
direct_affected_packages0
Se cotejó el cierre de dependencias en tiempo de ejecución de npm:@sns-myagent/cli@0.3.9 —lo que arrastra la instalación del paquete publicado—: 325 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

52Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 93 de 94 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,989
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — tsconfig.json
10/10Entorno reproducible — Dockerfile, lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 94
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configstsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
53.9/55Tamaños de archivo manejables — 21/1060 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes492.776
source_files_sampled1060
oversized_source_files21

Datos clave

2estrellas de GitHub
1contribuidores
94commits en los últimos 12 meses
5días desde el último push
12versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

OpenSSF Scorecard 2.7 / 10
2.7agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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/dCI-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
Dependencias directas 44
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Avisos de dependencias 3

Instalar npm:@sns-myagent/cli@0.3.9 arrastra 325 paquetes, directos y transitivos: 3 tienen avisos conocidos, de los cuales 0 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
adm-zip0.5.18indirectaalta10.6.0
sharp0.34.5indirectaalta10.35.0
@opentelemetry/core2.7.1indirectamoderada12.8.0

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.