Skip to content

feat: expose urlPath in deploy_component operation and CLI#1113

Merged
kriszyp merged 4 commits into
mainfrom
kris/deploy-urlpath
Jun 8, 2026
Merged

feat: expose urlPath in deploy_component operation and CLI#1113
kriszyp merged 4 commits into
mainfrom
kris/deploy-urlpath

Conversation

@kriszyp

@kriszyp kriszyp commented Jun 3, 2026

Copy link
Copy Markdown
Member

Summary

Exposes the urlPath component config option (added in #397) as a first-class parameter of the deploy_component operation and CLI.

  • urlPath is accepted by the operation validator and persisted in harperdb-config.yaml alongside package for package-based component deployments
  • CLI works for free via the existing generic key=value argument parser: harper deploy project=my-app package=@my/pkg urlPath=/api
  • urlPath is rejected without package (it's only meaningful in the package-based config path; payload-deployed components configure urlPath in their own harper-config.yaml)
  • urlPath containing .. or empty strings are rejected at the API boundary before reaching disk

How it flows

For package-based components the root harperdb-config.yaml entry (e.g. my-app: { package: "...", urlPath: "/api" }) is what OptionsWatcher reads and scopes on. That value then flows into scope.options.getAll().urlPath and into the per-route middleware chain from #397.

Known limitation (pre-existing, not introduced here)

addConfig does a full setIn replace on the component's config block. Re-deploying without specifying urlPath will overwrite the existing value — the same behaviour applies today for install_command and other persisted fields.

Tests

Added deployComponentValidator unit tests covering the accept, reject-without-package, path-traversal, empty-string, and missing-project cases.

Generated by Claude Sonnet 4.6 🤖

kriszyp and others added 3 commits June 2, 2026 21:37
Components registered via package can now set urlPath at deploy time.
The value is persisted in the root config alongside package/install,
where the OptionsWatcher already reads and scopes it per component.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rejects urlPath containing '..' at the API boundary (prevents invalid
  config being written to disk before downstream validation fires)
- Rejects empty urlPath strings
- Requires package when urlPath is present (urlPath is only persisted in
  the package-based config path; payload deployments set it in their own
  harper-config.yaml)
- Adds deployComponentValidator unit tests covering accept, reject, and
  path-traversal cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Avoids false-positive if validateBySchema returns undefined (success).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@kriszyp
kriszyp requested a review from a team June 3, 2026 04:04
@claude

claude Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Reviewed; no blockers found.

@kriszyp
kriszyp marked this pull request as ready for review June 4, 2026 01:41
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@kriszyp
kriszyp merged commit 02dcf72 into main Jun 8, 2026
39 of 42 checks passed
@kriszyp
kriszyp deleted the kris/deploy-urlpath branch June 8, 2026 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants