Files
hub/tasks/sync/relocate-core-remaining-modules.md
glm-5.1 2b63cda1c7 Setup repo: migrate architecture specs, code stubs, and tasks from alkhub_ts
Copy architecture docs, ADRs, storage domain specs, research, reviews,
and 56 storage architecture tasks from the alkhub_ts monorepo. Adapt for
standalone @alkdev/hub repo structure (src/ not packages/hub/).

Sanitize all sensitive information:
- Replace private IPs (10.0.0.1) with localhost defaults
- Remove internal server hostnames (dev1, ns528096)
- Replace /workspace/ private paths with npm package references
- Remove hardcoded credentials from examples
- Rewrite infrastructure.md without private network details

Add Deno project scaffolding: deno.json (pinned deps), .gitignore,
AGENTS.md, entry point. Migrate existing code stubs (crypto, config
types, logger) with updated import paths.
2026-05-25 10:56:32 +00:00

2.8 KiB

id, name, status, depends_on, scope, risk, impact, level
id name status depends_on scope risk impact level
relocate-core-remaining-modules Relocate Config, Logger, and Crypto to Hub completed
delete-replaced-core-code
moderate medium component implementation

Description

Move the three remaining modules from packages/core/ into packages/hub/, then remove the packages/core/ package entirely. These modules are hub-specific concerns:

  • config/types.ts (169 lines) — TypeBox schemas for HubConfig, SpokeConfig, BaseConfig, PostgresConfig, RedisConfig, etc. Both hub and spoke need config types. For now, these go into hub; if spokes need shared config types later, we can extract them into a thin @alkdev/config or inline them in the spoke package.
  • logger/mod.ts (27 lines) — Logtape wrapper. Currently a stub (only logs ["logtape", "meta"] category). Needs proper configuration — that's a hub startup concern.
  • utils/crypto.ts (119 lines) — AES-256-GCM encryption/decryption, PBKDF2 key derivation, key generation. Hub-only (encryption key management lives in the hub).

After relocating, packages/core/ is empty and should be removed from the workspace.

Steps

  1. Create packages/hub/src/config/ directory and move config/types.ts there
  2. Create packages/hub/src/logger/ directory and move logger/mod.ts there
  3. Create packages/hub/src/utils/ directory and move utils/crypto.ts there
  4. Update all imports in moved files (they'll use @alkdev/typebox etc. from npm)
  5. Add packages/hub/deno.json with proper dependencies
  6. Update packages/hub/mod.ts to export the new modules
  7. Remove packages/core/ entirely
  8. Remove "packages/core" from root deno.json workspace array
  9. Verify deno check packages/hub/ passes

Note on SpokeConfig

SpokeConfig types are used by spokes, but for now the spoke package can duplicate the small number of fields it needs (SpokeConfig is just hub.url + hub.auth.tokenFile). When we implement the spoke, we'll decide whether to:

  • A) Duplicate the few spoke-relevant fields in the spoke package
  • B) Create a thin shared @alkdev/config npm package
  • C) Have the spoke import hub's config types (not ideal, creates coupling)

This decision can be deferred until spoke implementation begins.

Acceptance Criteria

  • packages/hub/src/config/types.ts exists with config TypeBox schemas
  • packages/hub/src/logger/mod.ts exists with logtape wrapper
  • packages/hub/src/utils/crypto.ts exists with AES-256-GCM functions
  • packages/hub/deno.json has correct dependencies and exports
  • packages/core/ directory is deleted
  • Root deno.json workspace no longer includes packages/core
  • deno check packages/hub/ passes
  • No references to @alkhub/core or packages/core remain in the codebase

References

  • docs/reviews/core-library-extraction-sync-2026-05-18.md (Section 1.2, 1.3, 6.1, 6.2)