Files
bot-agents/.agents/memory/bot-agents-migration-decisions.md
T
Danny Kim ccfb08f4d5 Document that package.json aliases may target only direct subfolders of src (#21)
Follow-up to #20, which was merged before this landed.

bot-agents has no `package.json` `imports` aliases (`src/` is flat and everything imports relatively), so no code changes. This records the new rule in the docs:

- `.agents/memory/imports-aliases-barrels.md`: aliases may target only a direct subfolder of `src/` (its `index.ts` or a `#x/*` pattern); nothing outside `src/`, not `src/` itself, not deeper folders; such code imports relatively.
- `.agents/memory/tests-layout-vitest.md`: `tests/` reach the public entry through a relative import, not a `#plugin` alias.
- `.agents/skills/migrate-deno-repo/SKILL.md` and `AGENTS.md`: same rule.

`vp check`, `vp test`, and `damem doctor` pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #21
Reviewed-by: bot <noreply@capsulizers.com>
Co-authored-by: Danny Kim <temeddix@gmail.com>
Co-committed-by: Danny Kim <temeddix@gmail.com>
2026-10-18 14:37:49 +00:00

2.2 KiB


description: bot-agents migration decisions: live @main action for six repos, JSON profiles, Node 24.2+, Deno kept only for agents, no eslint-plugin-* packages needed

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).
  • Deno stays in the action's global npm install (action.yml), only because the agents still check Deno-based consumer repos (memona, memona-home). Remove it once those repos have moved; it is not a dependency of this repo's TypeScript.
  • No eslint-plugin-* packages (eslint-plugin-explicit-types, eslint-plugin-import-structure, eslint-plugin-lit-robust; unscoped since 2026-10-18, formerly @cunarist/...). The Deno setup enabled no plugin, so this repo depends on none and CI passes without them being published. Planned (2026-10-17): once the plugins are on npm, add eslint-plugin-import-structure (rule prefix import-structure/) here for its import checks.
  • 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).