Skip to content

chore: add .nvmrc for Node.js 22#2

Merged
zbigniewsobiecki merged 1 commit intomainfrom
chore/standardize-node-22
Jan 1, 2026
Merged

chore: add .nvmrc for Node.js 22#2
zbigniewsobiecki merged 1 commit intomainfrom
chore/standardize-node-22

Conversation

@zbigniewsobiecki
Copy link
Copy Markdown
Member

Summary

  • Add .nvmrc file for nvm/fnm auto-switching

Note: engines field already present in package.json.

This ensures pre-built native module binaries (like better-sqlite3) are used instead of compiling from source.

Test plan

  • Tests pass

🤖 Generated with Claude Code

Add .nvmrc file for nvm/fnm auto-switching to Node.js 22.
(engines field already present in package.json)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@zbigniewsobiecki zbigniewsobiecki merged commit fdfa47e into main Jan 1, 2026
@zbigniewsobiecki zbigniewsobiecki deleted the chore/standardize-node-22 branch January 1, 2026 12:35
zbigniewsobiecki added a commit that referenced this pull request Jan 1, 2026
* chore: add .nvmrc for Node.js 22 (#2)

Add .nvmrc file for nvm/fnm auto-switching to Node.js 22.
(engines field already present in package.json)

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* chore: update llmist and zangief dependencies

- @llmist/cli: 12.0.3 → 12.0.4
- llmist: 12.0.3 → 12.0.4
- zangief: 0.1.2 → 1.0.0

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
zbigniewsobiecki added a commit that referenced this pull request Jan 1, 2026
* chore: add .nvmrc for Node.js 22 (#2)

Add .nvmrc file for nvm/fnm auto-switching to Node.js 22.
(engines field already present in package.json)

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* chore: update llmist and zangief dependencies

- @llmist/cli: 12.0.3 → 12.0.4
- llmist: 12.0.3 → 12.0.4
- zangief: 0.1.2 → 1.0.0

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
aaight pushed a commit that referenced this pull request Feb 25, 2026
…ercise createPMProvider

- Replace if/else conditional assertions in github-personas and
  pm-provider-switching tests with direct expect() calls that fail
  if behavior changes (addresses review observation #3)
- Replace manual pm.type ?? 'trello' reimplementation with actual
  createPMProvider() call in "defaults to Trello" test (addresses
  review observation #2)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
aaight pushed a commit that referenced this pull request Mar 15, 2026
…uild compatibility

The backend catalog now includes a 'number' type field (thinkingBudgetTokens) in
ClaudeCodeEngine settings. The frontend EngineSettingField union type only had 'select'
and 'boolean', causing a TypeScript error during the frontend build. This adds 'number'
to the frontend type union and skips rendering number fields until Story #2 implements
numeric field support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
aaight added a commit that referenced this pull request Mar 15, 2026
…, and thinkingBudgetTokens (#873)

* feat(claude-code): add ClaudeCodeSettingsSchema with effort, thinking, and thinkingBudgetTokens

* fix(frontend): add 'number' to EngineSettingField type for frontend build compatibility

The backend catalog now includes a 'number' type field (thinkingBudgetTokens) in
ClaudeCodeEngine settings. The frontend EngineSettingField union type only had 'select'
and 'boolean', causing a TypeScript error during the frontend build. This adds 'number'
to the frontend type union and skips rendering number fields until Story #2 implements
numeric field support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Cascade Bot <bot@cascade.dev>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
zbigniewsobiecki added a commit that referenced this pull request Apr 16, 2026
Adds src/integrations/pm/trello/ with:
- manifest.ts: PMProviderManifest wiring TrelloIntegration, TrelloRouterAdapter,
  all 7 Trello trigger handlers, and TrelloPlatformClient. verifyWebhookSignature
  wraps the existing verifyTrelloSignature (HMAC-SHA1 of body+callbackUrl) with
  Host/X-Forwarded-Proto header reconstruction — no shared factory because
  Trello's signing scheme is unique among providers.
- index.ts: side-effect module that calls registerPMProvider(trelloManifest).

src/integrations/pm/index.ts: new barrel importing ./trello/index.js for
the side effect. Plans 006/3 and 006/4 append jira + linear.

Contract adjustments surfaced during TDD:
- Dropped parseWebhookPayload field from PMProviderManifest (redundant with
  routerAdapter.parseWebhook; had wrong return type in 006/1). Each caller
  uses the appropriate one: router uses routerAdapter, PM-domain code uses
  pmIntegration.parseWebhookPayload.
- Relaxed conformance harness's platform-client assertion from 3 methods to
  2 (postComment + deleteComment). updateComment/postReaction are provider
  extensions, not contract.
- registerTestProvider is now additive (no longer resets the registry), so
  the conformance harness iterates TestProvider AND every real provider
  side-by-side — validating AC #2 of the spec.

Tests: 15 new Trello manifest tests + conformance now 22 (11 per provider x 2).

Trello's legacy registrations (bootstrap.ts, builtins.ts, worker-env extractor
branch, pm-wizard.tsx branch) still fire — removed in task 3 of this plan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
zbigniewsobiecki added a commit that referenced this pull request Apr 16, 2026
Closes plan 006/5 — the final cleanup plan of spec 006.

Backend:
- src/integrations/bootstrap.ts — DELETED. PM registrations flow through
  src/integrations/pm/index.ts (which also mirrors manifests into
  integrationRegistry). SCM (GitHub) and alerting (Sentry) self-register
  via new side-effect modules.
- src/github/register.ts + src/sentry/register.ts — new minimal
  side-effect modules that replace the respective branches of the
  deleted bootstrap. SCM + alerting stay on the legacy IntegrationModule
  pattern (out of spec 006 scope).
- src/pm/registry.ts — converted to a read-only adapter over
  pmProviderRegistry. get/getOrNull/all/createProvider/
  resolveLifecycleConfig all delegate to the manifest registry.
  register() is a deprecation warn. The ~9 unmigrated call sites
  (webhook handlers, manual runner, credential scope, lifecycle, GitHub
  adapter) keep working unchanged — they now transparently read from
  the manifest registry, so there is no divergent registration.
- src/router/index.ts + src/worker-entry.ts — updated to import the
  three new side-effect modules instead of the deleted bootstrap.
- src/integrations/registry.ts — header comment updated to reflect
  the new population topology.

Tests:
- tests/unit/integrations/bootstrap.test.ts — rewritten to cover the
  new side-effect-module wiring (the file name stays for audit clarity;
  its content asserts the same end-state invariants).
- 8 other test files that imported bootstrap.js for side effect are
  migrated to import the three new modules (pm barrel + github/register
  + sentry/register).

Docs:
- src/integrations/README.md — rewritten. Transitional note + "Legacy
  path" section removed. The README is now the single canonical
  author's guide for adding a new PM provider.
- CLAUDE.md — integration-abstraction pointer updated to final state.
- CHANGELOG.md — entry per plan.

Plan-divergence:
- AC #2 (delete pm/registry.ts) — became: convert to a read-only
  delegate. Deleting it would require migrating 9 call sites that are
  out of spec scope. The delegate preserves the end state (single
  source of truth = pmProviderRegistry) without downstream churn.
- AC #5 (consolidate createXxxLabel tRPC endpoints) — deferred to a
  follow-up PR. Purely additive cleanup; not required for any spec AC.

Both divergences documented in the .done plan.

Tests: 7809/7809 pass. Build + lint + typecheck clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
zbigniewsobiecki added a commit that referenced this pull request Apr 25, 2026
…tructured envelope, --comment alias) (#1190)

* docs(014): spec + plans for cascade-tools agent ergonomics

Adds docs/specs/014-cascade-tools-agent-ergonomics.md plus two plans
covering shared-infra and create-pr-review adoption. Prompted by prod
run 5d993b04-6e05-4ae1-b7de-8c274cf3496b.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(plan-014): lock plan 1 (shared-infra)

* feat(cascade-tools): plan 014/1 shared-infra — truthful prompts + envelope

Ships the root-cause fix for prod run 5d993b04-6e05-4ae1-b7de-8c274cf3496b
plus the shared infrastructure every future gadget inherits:

- System-prompt renderer (src/backends/shared/nativeToolPrompts.ts) stops
  stripping trailing 's' from array param names and claiming '<string>
  (repeatable)' for every array. Array-of-object params now render as
  `--<flag> '<json>'` with aliases appended via `|` and a one-line runnable
  example from the tool definition.
- Factory (src/gadgets/shared/cliCommandFactory.ts) gains oclif flag aliases,
  JSON parsing for array-of-object flags, file-input JSON parsing, `examples`
  wired into oclif `--help`, and Levenshtein-based 'did you mean' suggestions
  for mistyped flags (via fastest-levenshtein).
- New shared error envelope (src/gadgets/shared/errorEnvelope.ts) — every
  CLI failure emits `{"success":false,"error":{type,flag?,message,got?,
  expected?,hint?,example?}}` on stdout plus a one-line prose summary on
  stderr. All prior `this.error()` / flat `{success:false,error:"<string>"}`
  call sites migrated.
- Contracts widened: ParameterDefinition gains `cliAliases`, FileInput-
  Alternative gains `parseAs`, ToolManifest parameters carry `items`,
  `aliases`, `example`.
- Manifest generator threads the new fields through.
- bin/cascade-tools.js wraps `run()` to swallow oclif ExitError cleanly so
  the envelope isn't obscured by Node's default stack dump.

Plan-1 ACs #1#17 all delivered. 8438/8438 unit tests passing.

Test surface delta: 57 new unit tests across errorEnvelope.test.ts,
shared-nativeToolPrompts.test.ts, and factories.test.ts. Seven legacy
assertions encoding the pre-014 error surface updated in cli/cli-command-
factory, cli/file-input-flags, cli/scm/create-pr-sidecar, cli/scm/create-
pr-review-sidecar, backends/claude-code.

Plan 2 adopts the pattern on createPRReviewDef — zero shared-file edits —
proving the declarative-metadata invariant.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(plan-014): lock plan 2 (createprreview-adopt)

* feat(cascade-tools): plan 014/2 createprreview-adopt + spec done

Applies the spec-014 declarative-metadata pattern to createPRReviewDef:

- --comment alias for --comments (the exact muscle-memory mistake from
  prod run 5d993b04-6e05-4ae1-b7de-8c274cf3496b).
- --comments-file <path> (and - for stdin) JSON-parsed escape hatch for
  long payloads that don't survive shell quoting.
- Two declarative fields on createPRReviewDef.parameters.comments.cliAliases
  + createPRReviewDef.cli.fileInputAlternatives. Zero edits to shared
  infrastructure (cliCommandFactory, manifestGenerator, nativeToolPrompts,
  errorEnvelope) — proves spec 014's single-entrypoint invariant.

Per-plan ACs #1, #2, #3, #5, #6, #7, #8, #9, #11, #12 auto-verified
(unit tests + build + lint + typecheck). AC #4 (binary-level smoke)
tagged [manual] because vitest fork-pool workers fail to capture
stdout/stderr from spawned binaries that do top-level await import();
the six scenarios were verified manually against the built binary and
the trace is recorded in the plan. AC #10 n/a — integration test path
abandoned for the same reason.

All plans done. Spec 014 marked .done (docs/specs/014-*.md → .done).
CHANGELOG Unreleased updated with a per-plan entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant