Skip to content
This repository was archived by the owner on Dec 17, 2025. It is now read-only.

Gh 11 deploy to ecs#16

Open
SethPaul wants to merge 10 commits into
mainfrom
gh_11-deploy_to_ecs
Open

Gh 11 deploy to ecs#16
SethPaul wants to merge 10 commits into
mainfrom
gh_11-deploy_to_ecs

Conversation

@SethPaul
Copy link
Copy Markdown
Collaborator

@SethPaul SethPaul commented Jul 22, 2025

Summary by CodeRabbit

  • New Features

    • Added comprehensive documentation for Docker builds, npm registry publishing, migration checklists, and usage of published packages.
    • Introduced new scripts for building, testing, versioning, and publishing packages to npm and GitHub registries.
    • Expanded public API exports in core packages for easier integration.
  • Refactor

    • Renamed all package namespaces from @saga-soa to @hipponot for consistency.
    • Updated TypeScript configuration, path aliases, and import statements to match the new namespace.
    • Adjusted package metadata and publishing settings for public distribution.
  • Bug Fixes

    • Improved logger configuration for better compatibility in containerized environments.
    • Fixed MongoDB mock provider compatibility on Alpine Linux.
  • Chores

    • Removed legacy, example, and temporary application files and documentation.
    • Updated and reorganized documentation for clarity and accuracy.
  • Documentation

    • Enhanced and added guides covering package management, publishing, Docker usage, and migration procedures.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jul 22, 2025

Walkthrough

This change is a large-scale, multi-repository refactor and configuration update focused on renaming the package namespace from @saga-soa (and related variants) to @hipponot across all packages, documentation, import paths, and configuration files. It also introduces updated publishing workflows for GitHub Packages, new and improved documentation for package management and Docker usage, and removes legacy/example application code and configuration. Additional improvements include dependency and TypeScript configuration updates, expanded package exports, and enhancements to build, test, and publish scripts.

Changes

Files / Groups Change Summary
apps/docs/**, apps/web/** Entire Next.js app directories removed, including all source, config, and documentation files.
apps/examples/graphql-api/**, apps/examples/rest-api/** All example API application code, configs, scripts, and tests deleted.
docs/docker-registry-examples.md, docs/migration-checklist.md, docs/npm-registry-publishing.md New documentation files added for Docker registry usage, migration planning, and npm publishing.
docs/GETTING-STARTED.md, docs/express-api-guide.md, docs/library-guide.md, docs/turborepo-notes.md, docs/npm-registry-publishing.md Documentation updated for new package scope, usage, and workflows.
memory-bank/** Documentation updated for new package scope and naming conventions.
.npmrc, pnpm-workspace.yaml, turbo.json, package.json Workspace, build, and publish config updated for new package scope, scripts, and outputs.
tsconfig.json, packages/**/tsconfig.json TypeScript path aliases and base configs updated for new package scope and config package.
packages/config/**, packages/db/**, packages/core-api/**, packages/logger/**, packages/typescript-config/**, packages/ui/**, packages/eslint-config/** Package names, dependencies, repository info, publish configs, and scripts updated for new scope; some public exports expanded; devDependencies and scripts improved.
packages/db/src/mocks/mock-mongo-provider.ts MockMongoProvider now forces Ubuntu binaries for MongoMemoryServer to ensure compatibility in Alpine containers.
packages/logger/src/pino-logger.ts Logger now allows stdout logging in production unless REQUIRE_LOG_FILE is set, improving container compatibility.
packages/core-api/src/index.ts New exports added for REST and server utilities.
packages/core-api/src/**, packages/db/src/** Import paths updated for new package scope.
.cursor/rules/naming-conventions.mdc, memory-bank/naming-conventions.md Naming convention docs updated for new package scope.

Changes Table (Compact)

Files / Groups Change Summary
apps/docs/**, apps/web/** Removed all source, config, and documentation files for Next.js apps.
apps/examples/graphql-api/**, apps/examples/rest-api/** Deleted all example API app code, configs, tests, and scripts.
docs/docker-registry-examples.md, docs/migration-checklist.md, docs/npm-registry-publishing.md Added detailed new documentation for Docker, migration, and npm publishing.
docs/GETTING-STARTED.md, docs/express-api-guide.md, docs/library-guide.md, docs/turborepo-notes.md, docs/npm-registry-publishing.md Updated documentation for new package scope, usage, and workflows.
memory-bank/** Updated internal documentation for new package scope and naming conventions.
.npmrc, pnpm-workspace.yaml, turbo.json, package.json Updated workspace, build, and publish configs for new scope, scripts, and outputs.
tsconfig.json, packages/**/tsconfig.json Updated TypeScript path aliases, base configs, and package references for new scope.
packages/config/**, packages/db/**, packages/core-api/**, packages/logger/**, packages/typescript-config/**, packages/ui/**, packages/eslint-config/** Renamed packages, updated dependencies, repository info, publish configs, and scripts; expanded exports in some cases.
packages/db/src/mocks/mock-mongo-provider.ts Forced Ubuntu binaries for MongoMemoryServer for Alpine compatibility.
packages/logger/src/pino-logger.ts Logger allows stdout logging in production unless overridden by environment variable.
packages/core-api/src/index.ts Added exports for REST/server utilities.
packages/core-api/src/**, packages/db/src/** Updated import paths for new package scope.
.cursor/rules/naming-conventions.mdc, memory-bank/naming-conventions.md Updated naming convention documentation for new scope.

Sequence Diagram(s)

sequenceDiagram
    participant Developer
    participant GitHub Registry
    participant Workspace (pnpm/npm)
    participant Docker Build
    participant App

    Developer->>Workspace: Update package.json to @hipponot/* scope
    Developer->>Workspace: Install dependencies (pnpm/npm)
    Workspace->>GitHub Registry: Fetch @hipponot/* packages (public, no auth needed)
    Developer->>Docker Build: Build image with .npmrc for @hipponot/* registry
    Docker Build->>GitHub Registry: Fetch @hipponot/* packages (with NPM_TOKEN for private publish)
    Docker Build->>App: Build and run app with installed packages
Loading

Estimated code review effort

5 (~2–4 hours)

This change is extensive, affecting a large number of files across multiple packages and documentation, with high-complexity refactoring, configuration, and documentation updates. Reviewers should allocate significant time for careful validation of package renaming, dependency and import correctness, build/publish workflow integrity, and documentation accuracy.

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🔭 Outside diff range comments (6)
packages/core-api/src/express-server.ts (1)

26-28: Filtering controllers by init drops legitimate controllers—remove the filter

Controllers without an init method are silently excluded, meaning their routes never get registered.
Keep all supplied controllers, and conditionally call init later:

-    const controllerClasses = [...controllers, SectorsController].filter(
-      (ctrl): ctrl is new (...args: any[]) => any => typeof ctrl === 'function' && ctrl.prototype && ctrl.prototype.init
-    );
+    const controllerClasses = [...controllers, SectorsController];

You already guard the init invocation with if (typeof controllerInstance.init === 'function'), so the filter is unnecessary.

packages/eslint-config/package.json (1)

19-30: typescript-eslint package is invalid – replace with the official scoped plugins
There is no package published to npm under the bare name typescript-eslint.
ESLint integrations are exposed as @typescript-eslint/eslint-plugin (rules) and @typescript-eslint/parser (parser). Keeping the current entry will break pnpm install.

   "devDependencies": {
@@
-    "typescript-eslint": "^8.33.0"
+    "@typescript-eslint/eslint-plugin": "^8.33.0",
+    "@typescript-eslint/parser": "^8.33.0"
 }
packages/core-api/package.json (1)

46-52: vitest script without dependency

"test": "vitest run" remains, but vitest was removed from devDependencies; pnpm test will fail.

+    "vitest": "^1.5.2"

or remove the script.

human-notes/current-chat.md (3)

1452-1460: PinoLoggerSchema typing is too generic – Rely on Zod’s shape instead of ZodObject<HasConfigType>

ZodObject<T> expects T to be a “raw shape” (i.e. { [k:string]: ZodType }).
HasConfigType is almost certainly declared as an interface / type alias containing TypeScript‐only members, not a Zod raw shape; passing it here defeats Zod’s compile-time checks and widens the acceptable object.

-export const PinoLoggerSchema: ZodObject<HasConfigType> = z.object({
+export const PinoLoggerSchema = z.object({

Then export the inferred type as you already do:

export type PinoLoggerConfig = z.infer<typeof PinoLoggerSchema>;

1038-1051: Transport target 'pino/file' is not a built-in transport

pino ≥ 8 ships only the 'pino-pretty' transport. File logging is done by piping stdout to a file or by using community transports (e.g. pino/file, pino/file-transport). The current string will silently fail at runtime.

Verify the intended transport or switch to the recommended pattern:

- targets.push({
-   target: 'pino/file',
-   options: { destination: logFile },
- });
+ targets.push({
+   target: 'pino/file-transport',
+   options: { destination: logFile, mkdir: true },
+ });

(or use pino.destination(logFile) when not in multi-transport mode).


2229-2234: Route registration duplicates segment – prefer a child router

router.get(\${sectorBase}/hello`)yields /saga-soa/hello/hello`, unintuitive for consumers. Mount a child router instead:

public registerRoutes(router: Router): void {
-  const sectorBase = `${this.apiBaseUrl}/${this.sectorName}`;
-  router.get(`${sectorBase}/alive`, this.aliveRoute());
-  router.get(sectorBase, this.sectorHomeRoute());
-  this.registerSectorRoutes(router, sectorBase);
+  const sectorBase = `${this.apiBaseUrl}/${this.sectorName}`;
+  const sectorRouter = Router();
+  sectorRouter.get('/',  this.sectorHomeRoute());
+  sectorRouter.get('/alive', this.aliveRoute());
+  this.registerSectorRoutes(sectorRouter, '/');
+  router.use(sectorBase, sectorRouter);
}

Sector implementations can now add router.get('/hello', …) without repeating the base path.

🧹 Nitpick comments (27)
packages/logger/memory-bank/logger.md (1)

1-11: Header updated, but body still references the old scope

Lines 3 & 7 still say “saga-soa”. For consistency (and to avoid copy-paste confusion) update those occurrences to hipponot.

-This package provides a configurable logging solution for the saga-soa project.
+This package provides a configurable logging solution for the hipponot project.
@@
-- **Pino-based**: Leverages the speed and structured logging capabilities of Pino. Using ping-http to adapt to use in an express context.
+- **Pino-based**: Leverages the speed and structured logging capabilities of Pino. Using ping-http to adapt to use in an express context.
.npmrc (1)

6-10: Re-evaluate legacy-peer-deps & auto-install-peers—can silently mask version conflicts

Turning on legacy peer-dependency resolution together with automatic peer installs trades reliability for convenience: npm will stop warning on incompatible versions and will pull in whatever is “closest”, which can lead to hard-to-debug runtime breakages.
Consider enabling these flags only in CI / publish pipelines (where reproducible lockfiles are produced) and keep them disabled for local installs, or document the exact rationale so future maintainers understand the risk.

packages/db/src/__tests__/mongo-provider.test.ts (1)

5-6: Avoid deep internal imports—export mocks from package root

@hipponot/config/mocks/mock-config-manager.js couples the test to the package’s internal layout; any refactor will break consumers.
Expose MockConfigManager via the main index.ts of @hipponot/config (or a dedicated testing export) and import simply as:

import { MockConfigManager } from '@hipponot/config/testing';
memory-bank/type-resolution-checklist.md (2)

3-3: Update monorepo name to avoid confusion.

The intro still says “saga-soa monorepo”; this is out of sync with the new @hipponot branding.

-...in the saga-soa monorepo.
+...in the hipponot monorepo.

25-28: Consider keeping the workspace protocol for internal deps.

Hard-coding @hipponot/soa-logger@1.0.0 loses the automatic linking you get with:

pnpm add @hipponot/soa-logger@workspace:* --filter <app-path>

Unless you plan on publishing and consuming a fixed version, the workspace protocol remains clearer for local development.

packages/core-api/memory-bank/express-server.md (1)

3-3: Align branding terminology throughout the doc
You switched the namespace to @hipponot, but the intro sentence still talks about the “saga-soa monorepo” in several places above. For clarity, update the remaining references so readers aren’t left wondering whether both scopes are still active.

docs/library-guide.md (2)

8-8: Update monorepo name to match new scope
Line 3 still says “saga-soa monorepo” while the example package name has moved to @hipponot. Pick one naming convention to avoid confusion.


43-43: Prefer workspace protocol over hard-coding “1.0.0”
Pinning internal deps to 1.0.0 means every bump requires manual doc edits and breaks local linking during active development. Consider:

-    "@hipponot/soa-config": "1.0.0"
+    "@hipponot/soa-config": "workspace:*"

This keeps the example aligned with the rest of the monorepo tooling.

packages/core-api/src/sectors-controller.ts (1)

68-68: Remove or implement the no-op init() method
An empty async init() {} is dead weight and suggests unfinished work. Either drop it or implement the intended startup logic.

docs/express-api-guide.md (2)

8-8: Consistent monorepo naming
Similar to the library guide, the intro still refers to the “saga-soa monorepo” while the example uses @hipponot. Harmonise the wording to avoid mixed branding.


41-42: Avoid hard-coding internal package versions in examples
Use workspace:* (or leave the version out) so copy-pasted package.jsons don’t become stale the moment the next release is cut.

packages/ui/package.json (1)

15-16: Consider workspace ranges instead of hard-pinning internal devDependencies

Pinning to 0.0.1 forces every bump to flow through all packages manually and prevents pnpm --filter ... workspace linking.
Using "workspace:*" or at least a caret (^0.0.1) keeps version drift lower-friction.

README.md (2)

24-32: Project branding is half-updated

Lines 24–32 correctly introduce the @hipponot scope, but the top heading (# saga-soa) and several blocks above still say saga-soa.
Search/replace the remaining occurrences to avoid confusing newcomers.


38-49: Scope-only .npmrc entry is safer

Appending

@hipponot:registry=https://npm.pkg.github.com

to the global .npmrc affects all projects on the machine.
Recommend a per-project .npmrc or:

npm config set @hipponot:registry https://npm.pkg.github.com --location project

to localise the change.

packages/logger/package.json (1)

17-18: Use cross-platform cleaner instead of rm -rf

rm breaks on Windows shells. Swap for rimraf (already a dep of tsup) or native pnpm dlx rimraf.

-    "clean": "rm -rf dist",
+    "clean": "rimraf dist",
turbo.json (1)

35-44: pre-publish task has no outputs – disable caching explicitly

With an empty outputs array Turbo still caches the task.
Either add an output (e.g. dist/**) or mark the task non-cacheable:

-    "pre-publish": {
+    "pre-publish": {
+      "cache": false,
packages/typescript-config/package.json (1)

13-17: Consider adding a files whitelist to reduce publish size
Right now the entire folder (including tests, docs, etc.) will be shipped.
Adding

"files": ["base.json", "react-library.json", "nextjs.json"]

keeps the package footprint minimal.

package.json (1)

7-26: Script naming & recursion risk

  1. pre-publish is not an npm lifecycle hook (prepublishOnly is).
    Invoking it manually is fine, but the name is misleading.
  2. publish:packages runs pnpm pre-publish, which in turn runs pnpm build:clean && pnpm test.
    If a contributor later renames the helper script to prepublishOnly, the chain will silently break.

Recommend:

-    "pre-publish": "pnpm build:clean && pnpm test",
+    "prepublishOnly": "pnpm build:clean && pnpm test",
...
-    "publish:packages": "pnpm pre-publish && pnpm -r publish --access public",
+    "publish:packages": "pnpm run -w --if-present prepublishOnly && pnpm -r publish --access public",
packages/db/package.json (1)

18-24: rm -rf is not cross-platform
Windows contributors (or CI images) without a POSIX shell will fail on the clean script.

-    "clean": "rm -rf dist",
+    "clean": "rimraf dist",

Add rimraf to devDependencies if not already present.

docs/migration-checklist.md (1)

78-90: Minor wording: replace “NPM_TOKEN build argument” with “NPM_TOKEN build-arg” for clarity
Pure documentation, no functional impact – feel free to ignore.

docs/GETTING-STARTED.md (2)

19-20: Update branding reference

Still refers to “saga-soa monorepo”; should now be hipponot for consistency with the repo–wide rename.


175-176: Minor grammar nit – compound adjective

Use a hyphen in “backwards-compatible”.

- New features, backwards compatible
+ New features, backwards-compatible
docs/npm-registry-publishing.md (1)

131-135: Hyphenate “backwards-compatible”

Same grammar nit as above for consistency throughout docs.

packages/core-api/package.json (2)

50-51: Cross-platform clean

rm -rf dist breaks on Windows. Prefer rimraf.

-    "clean": "rm -rf dist",
+    "clean": "rimraf dist",
+    "prepare": "pnpm build"

54-55: Internal version skew

Depends on @hipponot/soa-logger 0.0.1 while this package is already 0.0.2. If they are released together, bump for consistency.

human-notes/current-chat.md (2)

1023-1046: Avoid magic-string injection tokens – declare explicit Symbols

Hard-coding "PinoLoggerConfig" / "ILogger" degrades type-safety and makes container re-use brittle. Prefer a central TYPES map:

-@inject('PinoLoggerConfig') private config: PinoLoggerConfig
+@inject(TYPES.PinoLoggerConfig) private config: PinoLoggerConfig

The same applies to the ILogger binding in ExpressServer. Provide:

export const TYPES = {
  ILogger:                Symbol.for('ILogger'),
  PinoLoggerConfig:       Symbol.for('PinoLoggerConfig'),
  // …
} as const;

2276-2280: /hello/hello endpoint caused by duplicated path

If the previous comment is not adopted, at least fix the immediate duplication:

- router.get(`${sectorBase}/hello`, this.helloRoute());
+ router.get(`${sectorBase}`, this.helloRoute());

…but the child-router refactor is the cleaner long-term solution.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between afb9c68 and 5ea105d.

⛔ Files ignored due to path filters (21)
  • apps/docs/app/favicon.ico is excluded by !**/*.ico
  • apps/docs/app/fonts/GeistMonoVF.woff is excluded by !**/*.woff
  • apps/docs/app/fonts/GeistVF.woff is excluded by !**/*.woff
  • apps/docs/public/file-text.svg is excluded by !**/*.svg
  • apps/docs/public/globe.svg is excluded by !**/*.svg
  • apps/docs/public/next.svg is excluded by !**/*.svg
  • apps/docs/public/turborepo-dark.svg is excluded by !**/*.svg
  • apps/docs/public/turborepo-light.svg is excluded by !**/*.svg
  • apps/docs/public/vercel.svg is excluded by !**/*.svg
  • apps/docs/public/window.svg is excluded by !**/*.svg
  • apps/web/app/favicon.ico is excluded by !**/*.ico
  • apps/web/app/fonts/GeistMonoVF.woff is excluded by !**/*.woff
  • apps/web/app/fonts/GeistVF.woff is excluded by !**/*.woff
  • apps/web/public/file-text.svg is excluded by !**/*.svg
  • apps/web/public/globe.svg is excluded by !**/*.svg
  • apps/web/public/next.svg is excluded by !**/*.svg
  • apps/web/public/turborepo-dark.svg is excluded by !**/*.svg
  • apps/web/public/turborepo-light.svg is excluded by !**/*.svg
  • apps/web/public/vercel.svg is excluded by !**/*.svg
  • apps/web/public/window.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (107)
  • .cursor/rules/naming-conventions.mdc (1 hunks)
  • .npmrc (1 hunks)
  • README.md (1 hunks)
  • apps/docs/.gitignore (0 hunks)
  • apps/docs/README.md (0 hunks)
  • apps/docs/app/globals.css (0 hunks)
  • apps/docs/app/layout.d.ts (0 hunks)
  • apps/docs/app/layout.js (0 hunks)
  • apps/docs/app/layout.tsx (0 hunks)
  • apps/docs/app/page.d.ts (0 hunks)
  • apps/docs/app/page.js (0 hunks)
  • apps/docs/app/page.module.css (0 hunks)
  • apps/docs/app/page.tsx (0 hunks)
  • apps/docs/eslint.config.js (0 hunks)
  • apps/docs/next.config.js (0 hunks)
  • apps/docs/package.json (0 hunks)
  • apps/docs/tsconfig.json (0 hunks)
  • apps/examples/graphql-api/memory-bank/schema-design-plan.md (0 hunks)
  • apps/examples/graphql-api/package.json (0 hunks)
  • apps/examples/graphql-api/scripts/emit-schema.ts (0 hunks)
  • apps/examples/graphql-api/src/inversify.config.ts (0 hunks)
  • apps/examples/graphql-api/src/main.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/index.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/gql/index.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/gql/session.data.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/gql/session.input.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/gql/session.resolver.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/gql/session.type.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/index.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/session/rest/session-routes.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/gql/index.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/gql/user.data.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/gql/user.input.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/gql/user.resolver.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/gql/user.type.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/index.ts (0 hunks)
  • apps/examples/graphql-api/src/sectors/user/rest/user-routes.ts (0 hunks)
  • apps/examples/graphql-api/tsconfig.json (0 hunks)
  • apps/examples/graphql-api/tsup.config.ts (0 hunks)
  • apps/examples/graphql-api/vitest.config.ts (0 hunks)
  • apps/examples/rest-api/.vscode/launch.json (0 hunks)
  • apps/examples/rest-api/package.json (0 hunks)
  • apps/examples/rest-api/src/__tests__/integration.test.ts (0 hunks)
  • apps/examples/rest-api/src/inversify.config.ts (0 hunks)
  • apps/examples/rest-api/src/main.ts (0 hunks)
  • apps/examples/rest-api/src/sectors/hello-again-rest.ts (0 hunks)
  • apps/examples/rest-api/src/sectors/hello-mongo.ts (0 hunks)
  • apps/examples/rest-api/src/sectors/hello-rest.ts (0 hunks)
  • apps/examples/rest-api/tsconfig.json (0 hunks)
  • apps/examples/rest-api/tsup.config.ts (0 hunks)
  • apps/examples/rest-api/vitest.config.ts (0 hunks)
  • apps/web/.gitignore (0 hunks)
  • apps/web/README.md (0 hunks)
  • apps/web/app/globals.css (0 hunks)
  • apps/web/app/layout.d.ts (0 hunks)
  • apps/web/app/layout.js (0 hunks)
  • apps/web/app/layout.tsx (0 hunks)
  • apps/web/app/page.d.ts (0 hunks)
  • apps/web/app/page.js (0 hunks)
  • apps/web/app/page.module.css (0 hunks)
  • apps/web/app/page.tsx (0 hunks)
  • apps/web/eslint.config.js (0 hunks)
  • apps/web/next.config.js (0 hunks)
  • apps/web/package.json (0 hunks)
  • apps/web/tsconfig.json (0 hunks)
  • docs/GETTING-STARTED.md (5 hunks)
  • docs/docker-registry-examples.md (1 hunks)
  • docs/express-api-guide.md (2 hunks)
  • docs/library-guide.md (2 hunks)
  • docs/migration-checklist.md (1 hunks)
  • docs/npm-registry-publishing.md (1 hunks)
  • human-notes/current-chat.md (64 hunks)
  • human-notes/turborepo-notes.md (2 hunks)
  • memory-bank/naming-conventions.md (1 hunks)
  • memory-bank/testing/testing-improvement-plan.md (1 hunks)
  • memory-bank/turborepo.md (2 hunks)
  • memory-bank/type-resolution-checklist.md (2 hunks)
  • memory-bank/unit-testing.md (2 hunks)
  • package.json (3 hunks)
  • packages/config/README.md (4 hunks)
  • packages/config/package.json (2 hunks)
  • packages/core-api/memory-bank/express-server.md (2 hunks)
  • packages/core-api/package.json (4 hunks)
  • packages/core-api/src/__tests__/express-server.test.ts (1 hunks)
  • packages/core-api/src/express-server.ts (1 hunks)
  • packages/core-api/src/gql-controller.ts (1 hunks)
  • packages/core-api/src/index.ts (1 hunks)
  • packages/core-api/src/rest-controller.ts (1 hunks)
  • packages/core-api/src/sectors-controller.ts (2 hunks)
  • packages/core-api/tsconfig.json (1 hunks)
  • packages/core-api/tsup.config.ts (1 hunks)
  • packages/db/jest.config.cjs (1 hunks)
  • packages/db/package.json (2 hunks)
  • packages/db/src/__tests__/mongo-provider.test.ts (1 hunks)
  • packages/db/src/mocks/mock-mongo-provider.ts (1 hunks)
  • packages/eslint-config/package.json (2 hunks)
  • packages/logger/memory-bank/logger.md (1 hunks)
  • packages/logger/package.json (3 hunks)
  • packages/logger/src/pino-logger.ts (6 hunks)
  • packages/logger/tsconfig.json (1 hunks)
  • packages/typescript-config/package.json (1 hunks)
  • packages/ui/eslint.config.mjs (1 hunks)
  • packages/ui/package.json (3 hunks)
  • packages/ui/tsconfig.json (1 hunks)
  • pnpm-workspace.yaml (1 hunks)
  • tsconfig.json (1 hunks)
  • turbo.json (2 hunks)
🪛 markdownlint-cli2 (0.17.2)
human-notes/turborepo-notes.md

3-3: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 LanguageTool
docs/npm-registry-publishing.md

[uncategorized] ~133-~133: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ixes - Minor (1.1.0): New features, backwards compatible - Major (2.0.0): Breaking changes ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

human-notes/current-chat.md

[style] ~1743-~1743: Consider using polite language here.
Context: ...est cases or want to extend the logger, let me know! --- User please run the tests ...

(INSERT_PLEASE)

💤 Files with no reviewable changes (62)
  • apps/docs/app/page.d.ts
  • apps/docs/next.config.js
  • apps/examples/graphql-api/tsconfig.json
  • apps/examples/rest-api/tsconfig.json
  • apps/examples/rest-api/.vscode/launch.json
  • apps/docs/README.md
  • apps/web/next.config.js
  • apps/examples/graphql-api/src/sectors/session/index.ts
  • apps/docs/eslint.config.js
  • apps/web/README.md
  • apps/docs/.gitignore
  • apps/examples/rest-api/tsup.config.ts
  • apps/examples/graphql-api/src/sectors/user/index.ts
  • apps/examples/graphql-api/package.json
  • apps/docs/app/globals.css
  • apps/web/eslint.config.js
  • apps/docs/tsconfig.json
  • apps/web/app/page.d.ts
  • apps/examples/graphql-api/src/sectors/index.ts
  • apps/examples/graphql-api/src/sectors/user/gql/user.input.ts
  • apps/docs/app/layout.tsx
  • apps/docs/app/layout.d.ts
  • apps/examples/graphql-api/src/sectors/user/gql/index.ts
  • apps/examples/graphql-api/tsup.config.ts
  • apps/docs/app/layout.js
  • apps/examples/rest-api/package.json
  • apps/examples/graphql-api/scripts/emit-schema.ts
  • apps/examples/graphql-api/src/sectors/session/gql/session.input.ts
  • apps/examples/graphql-api/src/sectors/user/rest/user-routes.ts
  • apps/examples/graphql-api/vitest.config.ts
  • apps/web/app/layout.js
  • apps/examples/rest-api/vitest.config.ts
  • apps/web/package.json
  • apps/docs/app/page.tsx
  • apps/examples/rest-api/src/sectors/hello-rest.ts
  • apps/web/.gitignore
  • apps/examples/rest-api/src/inversify.config.ts
  • apps/examples/rest-api/src/sectors/hello-again-rest.ts
  • apps/examples/graphql-api/src/sectors/session/gql/index.ts
  • apps/examples/graphql-api/src/sectors/session/gql/session.type.ts
  • apps/docs/app/page.module.css
  • apps/web/app/layout.d.ts
  • apps/examples/graphql-api/src/sectors/session/rest/session-routes.ts
  • apps/examples/rest-api/src/main.ts
  • apps/docs/package.json
  • apps/web/tsconfig.json
  • apps/web/app/page.module.css
  • apps/web/app/page.js
  • apps/web/app/layout.tsx
  • apps/examples/graphql-api/src/sectors/user/gql/user.resolver.ts
  • apps/examples/graphql-api/src/inversify.config.ts
  • apps/examples/graphql-api/src/sectors/session/gql/session.resolver.ts
  • apps/examples/rest-api/src/tests/integration.test.ts
  • apps/examples/graphql-api/src/sectors/user/gql/user.data.ts
  • apps/examples/graphql-api/src/sectors/session/gql/session.data.ts
  • apps/web/app/page.tsx
  • apps/examples/graphql-api/src/sectors/user/gql/user.type.ts
  • apps/examples/graphql-api/memory-bank/schema-design-plan.md
  • apps/examples/rest-api/src/sectors/hello-mongo.ts
  • apps/web/app/globals.css
  • apps/examples/graphql-api/src/main.ts
  • apps/docs/app/page.js
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
human-notes/turborepo-notes.md

3-3: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 LanguageTool
docs/npm-registry-publishing.md

[uncategorized] ~133-~133: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ixes - Minor (1.1.0): New features, backwards compatible - Major (2.0.0): Breaking changes ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

human-notes/current-chat.md

[style] ~1743-~1743: Consider using polite language here.
Context: ...est cases or want to extend the logger, let me know! --- User please run the tests ...

(INSERT_PLEASE)

🔇 Additional comments (26)
packages/logger/tsconfig.json (1)

2-2: Ensure dev-dependency on the new base config

"extends": "@hipponot/soa-typescript-config/base.json" implies this package now depends on @hipponot/soa-typescript-config.
Double-check packages/logger/package.json includes it (usually as a devDependency) to avoid CI failures.

packages/ui/tsconfig.json (1)

2-2: Same dependency check applies to @hipponot/soa-typescript-config

Confirm packages/ui/package.json lists the matching version; otherwise tsc -b will fail when the workspace is bootstrapped.

packages/config/README.md (1)

1-40: 👍 Namespace rename looks correct here

Header and code samples have been updated to @hipponot/*. No further issues spotted in the changed lines.

Also applies to: 106-110, 128-132

.npmrc (1)

12-13: enable-pre-post-scripts=true raises supply-chain attack surface

Allowing pre/post-install scripts means every transitive dependency may execute arbitrary code on install.
If you don’t actively rely on those hooks (e.g. pnpm lifecycle), set ignore-scripts=true instead or gate the flag behind an environment variable for trusted CI only.

packages/core-api/src/__tests__/express-server.test.ts (1)

5-5: Ensure ILogger is bound in the DI container

I couldn’t locate any explicit container.bind('ILogger') in your code. Without it, all @inject('ILogger') usages will throw at runtime. Please verify that your DI setup (e.g., in inversify.config.ts or where you bootstrap the container in express-server.ts) includes something like:

container
  .bind<ILogger>('ILogger')
  .to(ConsoleLogger)
  .inSingletonScope();

Key injection sites to double-check against your bindings:

  • packages/core-api/src/sectors-controller.ts:14
  • packages/core-api/src/gql-controller.ts:9
  • packages/core-api/src/express-server.ts:16
packages/core-api/src/gql-controller.ts (1)

1-11: Pure namespace switch—no further action needed
The import path change is correct and nothing else is affected.

packages/core-api/src/rest-controller.ts (2)

2-5: Import path update aligns with namespace refactoring.

The reformatting and namespace change from @saga-soa/logger to @hipponot/soa-logger is consistent with the broader package renaming effort.


7-7: No change needed for REST_API_BASE_PATH

The REST_API_BASE_PATH value of 'saga-soa' aligns with the project’s package name (package.json remains "name": "saga-soa"), and there are no other HTTP routes using an @hipponot prefix—@hipponot/soa-logger is merely an external logger package import. Keeping the base path as 'saga-soa' is intentional for consistency and backward compatibility.

memory-bank/unit-testing.md (1)

25-25: Documentation correctly updated for new Jest config package namespace.

The references to Jest configuration have been consistently updated from @saga-soa/jest-config to @hipponot/jest-config, aligning with the broader package namespace migration.

Also applies to: 43-43

packages/core-api/tsup.config.ts (1)

5-5: Entry point exists and exports confirmed — configuration approved.

  • packages/core-api/src/index.ts is present and exports the intended controllers and utilities
  • package.json’s “main”, “types”, and “exports” fields correctly point to the built files under dist/
  • Build configuration can safely include 'src/index.ts' as an entry point
packages/core-api/tsconfig.json (1)

2-2: Make sure the new base config is installed in this workspace.

"extends": "@hipponot/soa-typescript-config/base.json" assumes that @hipponot/soa-typescript-config is listed in this package’s devDependencies (or is provided via the root).
Please confirm it is present; otherwise tsc will fail to resolve the path.

packages/db/jest.config.cjs (1)

5-10: Namespace switch looks correct – no issues detected.

The mapper and transformIgnorePatterns have been updated consistently to the new @hipponot scope; this should keep ts-jest resolution intact. No further action needed.

memory-bank/naming-conventions.md (1)

147-155: Documentation update is consistent with the new scope.

Examples now reference @hipponot/*; syntax and fenced-block language tags (typescript) are intact. 👍

packages/core-api/memory-bank/express-server.md (1)

40-40: Double-check that @hipponot/config is published & version-pinned
The test plan depends on a mock from @hipponot/config. Make sure the new package has actually been published (or is available via workspace protocol) before others try to follow this guide.

packages/core-api/src/sectors-controller.ts (1)

2-5: Ensure DI binding matches new logger import
The class injects using the identifier 'ILogger'. After migrating to @hipponot/soa-logger, confirm your container still binds that exact token, otherwise runtime resolution will fail.

memory-bank/testing/testing-improvement-plan.md (1)

3-3: Mixed scopes may confuse readers
Section headers now list @saga-soa/db alongside several @hipponot/* packages. Is the DB package intentionally staying under the old scope? If not, update for consistency; if yes, add a note explaining the split branding.

docs/express-api-guide.md (1)

47-47: Highlight path alias changes
Nice catch updating the import to the new scope. 👍

memory-bank/turborepo.md (1)

4-46: LGTM! Consistent namespace update throughout documentation.

The documentation has been systematically updated to reflect the new @hipponot package scope, maintaining consistency across all examples, dependency declarations, and import statements. The technical content and best practices remain intact.

packages/logger/src/pino-logger.ts (1)

30-33: LGTM! Consistent formatting improvements.

The formatting changes to the pretty print options improve code consistency and readability.

Also applies to: 51-54, 78-81, 93-96

packages/config/package.json (3)

2-12: LGTM! Proper GitHub Packages configuration.

The package has been correctly renamed to @hipponot/soa-config with appropriate publishing configuration for GitHub Packages. The repository field and publishConfig are properly set up.


18-18: Good practice: Build before publish.

Adding prepublishOnly script ensures the package is built before publishing, preventing accidental publication of stale builds.


35-35: Consistent dependency update.

The devDependency has been correctly updated to reference the new @hipponot/soa-typescript-config package with the appropriate version.

packages/core-api/src/index.ts (1)

3-6: Public-API expansion looks solid

New named exports expose the REST stack and util loader cleanly; paths align with build output. No issues spotted.

packages/eslint-config/package.json (1)

2-12: Confirm package / repository naming consistency
The package is now scoped as @hipponot/soa-eslint-config, but the repository URL still points to hipponot/saga-soa.git.
If the repo itself is going to be renamed to soa, update the URL to avoid 404s after the rename; otherwise nothing to do.

docs/docker-registry-examples.md (1)

44-51: Credential leakage risk in single-stage example

Writing the token to ~/.npmrc in the same stage bakes the secret into image layers.
Either:

  1. Use the multi-stage pattern shown later (preferred), or
  2. rm ~/.npmrc in the final stage.

Document this explicitly to avoid accidental leaks.

packages/core-api/package.json (1)

7-10: publishConfig.access may be ignored by GitHub Packages

GitHub’s npm registry does not honor "access": "public"; leaving it can cause npm publish to error with “invalid access”.
Confirm publishing succeeds or drop the key.

- Generic type parameters
- Decorator naming
import { add } from @saga/math/add
import { add } from @saga-soa/math/add
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Inconsistent namespace migration pattern needs verification.

The file shows mixed namespace changes:

  • Line 15: @saga/math/add@saga-soa/math/add
  • Line 20: @saga-soa/config@hipponot/config

This inconsistency suggests different migration strategies for different packages. Please verify the correct target namespaces to ensure consistency across the codebase.

Also applies to: 20-20


🏁 Script executed:

#!/bin/bash
# Description: Check for namespace consistency across the codebase
# Expected: Identify which packages use which namespaces

echo "Searching for @saga/ package references:"
rg -A 1 "@saga/" --type md --type ts --type js

echo -e "\nSearching for @saga-soa/ package references:"
rg -A 1 "@saga-soa/" --type md --type ts --type js

echo -e "\nSearching for @hipponot/ package references:"
rg -A 1 "@hipponot/" --type md --type ts --type js

echo -e "\nChecking package.json files for namespace patterns:"
fd package.json --exec cat {} \; --exec echo "--- {} ---" \; | grep -A 5 -B 5 '"name":'

Length of output: 16956


🏁 Script executed:

#!/bin/bash
# Display the first 200 lines of the naming-conventions rule file for context
cat .cursor/rules/naming-conventions.mdc | sed -n '1,200p'

Length of output: 974


Consistently use the @hipponot/soa- scope in all import examples

Please update the example imports in .cursor/rules/naming-conventions.mdc to match the actual package namespace:

• In .cursor/rules/naming-conventions.mdc
– Line 15:
Change
import { add } from @saga-soa/math/add
To
import { add } from '@hipponot/soa-math/add'

– Line 20:
Change
import { IConfigManager, MockConfigManager } from '@hipponot/config';
To
import { IConfigManager, MockConfigManager } from '@hipponot/soa-config';

Diff snippet:

 import { MockConfigManager }                        from './mock-config-manager';
-import { add }                                      from @saga-soa/math/add
+import { add }                                      from '@hipponot/soa-math/add'
 
 // … other items …
 
-import { IConfigManager, MockConfigManager }        from '@hipponot/config';
+import { IConfigManager, MockConfigManager }        from '@hipponot/soa-config';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { add } from @saga-soa/math/add
import { MockConfigManager } from './mock-config-manager';
import { add } from '@hipponot/soa-math/add'
// … other items …
import { IConfigManager, MockConfigManager } from '@hipponot/soa-config';
🤖 Prompt for AI Agents
In .cursor/rules/naming-conventions.mdc at line 15, the import statement uses an
incorrect package scope '@saga-soa'. Update the import to use the correct
'@hipponot/soa-' scope by changing the line to import { add } from
'@hipponot/soa-math/add'. Also, at line 20, update the import from
'@hipponot/config' to '@hipponot/soa-config' to maintain consistent package
namespace usage.

Comment on lines +20 to +23
ARG NPM_TOKEN
RUN echo "@saga:registry=https://your-registry.com" >> ~/.npmrc
RUN echo "//your-registry.com/:_authToken=${NPM_TOKEN}" >> ~/.npmrc

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Registry scope still uses deprecated “@saga

All .npmrc snippets should switch to @hipponot to match the package rename; otherwise installs will fail.

- RUN echo "@saga:registry=https://your-registry.com" >> ~/.npmrc
+ RUN echo "@hipponot:registry=https://your-registry.com" >> ~/.npmrc

Also applies to: 70-74, 235-237

🤖 Prompt for AI Agents
In docs/docker-registry-examples.md at lines 20 to 23, the npm registry scope
uses the deprecated "@saga". Update all occurrences of "@saga" to "@hipponot" to
reflect the package rename and ensure installs work correctly. Also apply this
change to lines 70-74 and 235-237.

Comment on lines +158 to +169
echo "Building Web App..."
docker build \
--network=host \
-t saga-web:latest \
-f apps/web/Dockerfile .

echo "Building Docs..."
docker build \
--network=host \
-t saga-docs:latest \
-f apps/docs/Dockerfile .

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Build script references removed apps

apps/web and apps/docs were deleted in this PR; the build script will exit with non-zero.
Drop those targets or gate them behind an existence check.

🤖 Prompt for AI Agents
In docs/docker-registry-examples.md around lines 158 to 169, the build script
references the deleted directories apps/web and apps/docs, causing build
failures. Update the script to either remove these build targets entirely or add
checks to verify the existence of these directories before attempting to build,
ensuring the script does not fail when the directories are missing.

Comment thread docs/GETTING-STARTED.md
Comment on lines 95 to 102
turbo run build --filter=packages/logger
turbo run build --filter=apps/examples/rest_api
turbo run build --filter=saga-soa-examples/examples/rest-api
```
- **Test:**
```sh
turbo run test --filter=packages/config
turbo run test --filter=apps/examples/rest_api
turbo run test --filter=saga-soa-examples/examples/rest-api
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Stale paths to example projects

Examples still use the legacy saga-soa-examples/... directories, whereas other docs (and Dockerfiles) now point to apps/examples/.... Running these commands will fail in a clean clone.

- turbo run build --filter=saga-soa-examples/examples/rest-api
+ turbo run build --filter=apps/examples/rest-api
...
- pnpm --filter ./saga-soa-examples/web dev
+ pnpm --filter ./apps/web dev

Also applies to: 118-121

🤖 Prompt for AI Agents
In docs/GETTING-STARTED.md around lines 95 to 102 and also lines 118 to 121,
update the example project paths from the legacy saga-soa-examples/...
directories to the current apps/examples/... directories. Replace all
occurrences of saga-soa-examples with apps/examples in the turbo run commands to
ensure they work correctly in a clean clone.

Comment on lines +1 to 5
The exports field in package.json allows more granular support of exports. For example to import only the math function from the package @saga-soa/math you can use the below if it is listed in the package.json exports.

```
import { add } from @saga/math/add
import { add } from @saga-soa/math/add
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Namespace inconsistency – still using @saga-soa.

The docs example should now reference @hipponot/math (or @hipponot/soa-math) to stay aligned with the rest of the rename.

-import { add } from @saga-soa/math/add
+import { add } from @hipponot/soa-math/add
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The exports field in package.json allows more granular support of exports. For example to import only the math function from the package @saga-soa/math you can use the below if it is listed in the package.json exports.
```
import { add } from @saga/math/add
import { add } from @saga-soa/math/add
```
The exports field in package.json allows more granular support of exports. For example to import only the math function from the package @saga-soa/math you can use the below if it is listed in the package.json exports.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

3-3: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In human-notes/turborepo-notes.md lines 1 to 5, the example import statement
uses the outdated namespace `@saga-soa`. Update the import path to use the new
namespace `@hipponot/math` (or `@hipponot/soa-math`) to maintain consistency
with the renamed package throughout the documentation.

Comment on lines 21 to 24
"dependencies": {
"reflect-metadata": "^0.2.2",
"routing-controllers": "^0.11.2"
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Transitive runtime deps don’t belong in a pure “config” package
reflect-metadata and routing-controllers introduce ~4 MB install size and force downstream users to get unnecessary code at runtime.
Move them to devDependencies (or drop altogether) unless they are really required by the exported JSON configs.

-  "dependencies": {
-    "reflect-metadata": "^0.2.2",
-    "routing-controllers": "^0.11.2"
-  }
+  "devDependencies": {
+    "reflect-metadata": "^0.2.2",
+    "routing-controllers": "^0.11.2"
+  }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"dependencies": {
"reflect-metadata": "^0.2.2",
"routing-controllers": "^0.11.2"
}
"devDependencies": {
"reflect-metadata": "^0.2.2",
"routing-controllers": "^0.11.2"
}
🤖 Prompt for AI Agents
In packages/typescript-config/package.json around lines 21 to 24, the
dependencies "reflect-metadata" and "routing-controllers" are runtime
dependencies that increase install size and add unnecessary code for downstream
users of this config package. Move these two packages from "dependencies" to
"devDependencies" unless they are explicitly required at runtime by the exported
JSON configs. This will keep the package lightweight and avoid forcing runtime
installs of these libraries.

@@ -1,4 +1,4 @@
import { config } from "@saga/eslint-config/react-internal";
import { config } from "@saga-soa/eslint-config/react-internal";
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify the target namespace for ESLint configuration.

The import was updated from @saga/eslint-config to @saga-soa/eslint-config, but other files in this PR are migrating to @hipponot namespace. Please confirm if this should be @hipponot/soa-eslint-config instead to maintain consistency.


🏁 Script executed:

#!/bin/bash
# Description: Check for ESLint config package references and verify correct namespace
# Expected: Find other ESLint config references to determine consistent naming

echo "Searching for eslint-config package references:"
rg -A 2 -B 2 "eslint-config"

echo -e "\nSearching for @hipponot/soa-eslint-config references:"
rg -A 2 -B 2 "@hipponot.*eslint-config"

echo -e "\nSearching for @saga-soa/eslint-config references:"
rg -A 2 -B 2 "@saga-soa.*eslint-config"

Length of output: 6770


Update ESLint config import to @hipponot namespace.

The UI package’s devDependencies and the published config package are both under @hipponot/soa-eslint-config, so the import in packages/ui/eslint.config.mjs must be updated accordingly:

• File: packages/ui/eslint.config.mjs
Change the import source to match the @hipponot/soa-eslint-config package.

-import { config } from "@saga-soa/eslint-config/react-internal";
+import { config } from "@hipponot/soa-eslint-config/react-internal";
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { config } from "@saga-soa/eslint-config/react-internal";
-import { config } from "@saga-soa/eslint-config/react-internal";
+import { config } from "@hipponot/soa-eslint-config/react-internal";
🤖 Prompt for AI Agents
In packages/ui/eslint.config.mjs at line 1, update the import statement to
change the source from "@saga-soa/eslint-config/react-internal" to
"@hipponot/soa-eslint-config/react-internal" to align with the correct package
namespace used in devDependencies and the published config package.

Comment thread packages/ui/package.json
Comment on lines +2 to +3
"name": "@hipponot/soa-ui",
"version": "0.0.1",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add publishConfig (and ideally repository) to keep publishing consistent

Other packages now declare

"publishConfig": {
  "registry": "https://npm.pkg.github.com",
  "access": "public"
}

Without it, pnpm publish will default to the public npm registry, breaking the monorepo’s single-registry story.
Add the block (and a repository field) so this package publishes to the same place as the others.

   "version": "0.0.1",
+  "publishConfig": {
+    "registry": "https://npm.pkg.github.com",
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/hipponot/saga-soa.git",
+    "directory": "packages/ui"
+  },
🤖 Prompt for AI Agents
In packages/ui/package.json around lines 2 to 3, add a "publishConfig" field
with "registry" set to "https://npm.pkg.github.com" and "access" set to "public"
to ensure publishing uses the correct registry. Also add a "repository" field
with the appropriate repository URL to keep metadata consistent with other
packages in the monorepo.

Comment thread pnpm-workspace.yaml
Comment on lines +2 to +3
- 'apps/docs'
- 'apps/web'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify that apps/docs and apps/web actually exist and still belong in the workspace

If these directories were deleted (the AI-summary hints at their removal), keeping them listed will break pnpm install -r / pnpm -F ... commands with a package manifest not found error.

Remove the entries or restore the folders so the workspace stays consistent.


🏁 Script executed:

# quick sanity-check
fd package.json apps/docs apps/web

Length of output: 188


🏁 Script executed:

#!/bin/bash
# Verify existence of apps folder and its subdirectories
if [ -d apps ]; then
  echo "apps/ directory found. Contents:"
  ls -1 apps
else
  echo "apps/ directory not found"
fi

Length of output: 78


Remove non-existent workspace entries in pnpm-workspace.yaml

The directories apps/docs and apps/web aren’t present in the repo, so leaving them in pnpm-workspace.yaml will cause package manifest errors when running pnpm install -r or pnpm -F.

Please update pnpm-workspace.yaml to either restore these folders or remove their entries:

• File: pnpm-workspace.yaml (lines 2–3)
• Change:
diff - - 'apps/docs' - - 'apps/web'

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- 'apps/docs'
- 'apps/web'
🤖 Prompt for AI Agents
In pnpm-workspace.yaml at lines 2 to 3, the entries 'apps/docs' and 'apps/web'
refer to directories that do not exist in the repository. To fix this, remove
these two entries from the workspace configuration to prevent package manifest
errors during pnpm install or pnpm commands.

Comment thread tsconfig.json
Comment on lines +6 to +9
"@hipponot/config": ["packages/config/src"],
"@hipponot/config/*": ["packages/config/src/*"],
"@hipponot/soa-logger": ["packages/logger/src"],
"@hipponot/soa-logger/*": ["packages/logger/src/*"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Path mappings updated correctly for namespace change.

The TypeScript path aliases have been properly updated to reflect the new @hipponot namespace. However, there's an inconsistency in the naming pattern: @hipponot/config vs @hipponot/soa-logger. Please verify this is intentional.


🏁 Script executed:

#!/bin/bash
# Check if the naming inconsistency is intentional by examining package.json files
echo "Checking package names in the monorepo:"
fd package.json packages/ --exec cat {} | grep -E '"name":\s*"@hipponot/' | sort

Length of output: 423


Fix TS path alias for config package

The tsconfig.json path mappings use @hipponot/config, but the packages/config/package.json defines the name as @hipponot/soa-config. Please update the aliases to match the actual package name (@hipponot/soa-config). The logger mappings are already correct.

• File: tsconfig.json
Lines: ~6–9

-    "@hipponot/config": ["packages/config/src"],
-    "@hipponot/config/*": ["packages/config/src/*"],
+    "@hipponot/soa-config": ["packages/config/src"],
+    "@hipponot/soa-config/*": ["packages/config/src/*"],
     "@hipponot/soa-logger": ["packages/logger/src"],
     "@hipponot/soa-logger/*": ["packages/logger/src/*"]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"@hipponot/config": ["packages/config/src"],
"@hipponot/config/*": ["packages/config/src/*"],
"@hipponot/soa-logger": ["packages/logger/src"],
"@hipponot/soa-logger/*": ["packages/logger/src/*"]
"@hipponot/soa-config": ["packages/config/src"],
"@hipponot/soa-config/*": ["packages/config/src/*"],
"@hipponot/soa-logger": ["packages/logger/src"],
"@hipponot/soa-logger/*": ["packages/logger/src/*"]
🤖 Prompt for AI Agents
In tsconfig.json around lines 6 to 9, the path aliases for the config package
use "@hipponot/config" but the actual package name is "@hipponot/soa-config".
Update the aliases to "@hipponot/soa-config" and "@hipponot/soa-config/*" to
match the package.json name, leaving the logger aliases unchanged.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant