2.2 KiB
2.2 KiB
description: bot-agents migration decisions: live @main action for six repos, JSON profiles, Node 24.2+, lints with eslint-plugin-import-structure and explicit-types (concrete, absence)
Decisions for commons/bot-agents (Capsulizers Gitea), from the Deno to
Node + Vite+ migration (PR #20, node-migration, 2026-10-15/16):
- Live action. Six consumer repos use
commons/bot-agents@main, so a merge switches all of them at once. It changes only through a PR and a careful review. Suggested before merging a risky change: tag the currentmain(e.g.deno-final) as a rollback target and canary the branch from one consumer (uses: .../commons/bot-agents@<branch>) on a throwaway PR. - Profiles are JSON.
profiles.ymlbecameprofiles.jsonwith the same content (encryptedv1:values unchanged), read withJSON.parse. That removed the only runtime dependency (@std/yaml); keep it free of runtime dependencies (@eslint/coreand the other devDependencies serve only the tooling). - Node 24.2+, not 22:
src/post/index.tsusesimport.meta.main. There is noengines(user decision 2026-10-18): thenode:24-bookwormjob image decides the version (bot-agents-runtime-no-build). - Published lint plugins (2026-10-18, after they reached npm):
eslint-plugin-import-structure(modulesconfig) andeslint-plugin-explicit-types(concreteandabsenceconfigs) are devDependencies, enabled invite.config.ts. explicit-types'namingconfig is left off: itsupper-snake-string-unionsandno-upper-snake-object-keysrules fire on wire tokens this repo does not name (profile types such as"claude", failure reasons posted to Gitea, environment variable names), which cannot change without changing behavior. Open question for the user.eslint-plugin-lit-robustdoes not apply (no Lit). - Stricter input checks were accepted in the migration: Gitea
/userand comment responses, the runtime manifest, and the outcome's profile type are validated; some type errors becameTypeErrorwith the same messages. - Merging is the user's call; the
botaccount's approval is required first (git-pr-workflow).