Files
bot-agents/.agents/memory/bot-agents-migration-decisions.md
T
Danny Kim 0a9f86a102
Agents / agent (pull_request) Has been skipped
Check / check (pull_request) Successful in 38s
Group the sources into aliased modules and lint with the published plugins
2026-10-18 23:50:27 +09:00

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 current main (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.yml became profiles.json with the same content (encrypted v1: values unchanged), read with JSON.parse. That removed the only runtime dependency (@std/yaml); keep it free of runtime dependencies (@eslint/core and the other devDependencies serve only the tooling).
  • Node 24.2+, not 22: src/post.ts uses import.meta.main. There is no engines (user decision 2026-10-18): the node:24-bookworm job image decides the version (bot-agents-runtime-no-build).
  • Published lint plugins (2026-10-18, after they reached npm): eslint-plugin-import-structure (modules config) and eslint-plugin-explicit-types (concrete and absence configs) are devDependencies, enabled in vite.config.ts. explicit-types' naming config is left off: its upper-snake-string-unions and no-upper-snake-object-keys rules 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-robust does not apply (no Lit).
  • Stricter input checks were accepted in the migration: Gitea /user and comment responses, the runtime manifest, and the outcome's profile type are validated; some type errors became TypeError with the same messages.
  • Merging is the user's call; the bot account's approval is required first (git-pr-workflow).