Skip to content

Commit 5adee37

Browse files
committed
fix(release): declare workspace peerDeps + align adapter-vercel-ai post-rename
Bundle of F-PA7-CI-06 + F-PA7-CI-07 resolution. Both surfaced on the ce811ae (version-bump) CI run; both block the 1.0.0-rc.0 release path. F-PA7-CI-06 — workspace peerDeps declared via workspace:^ protocol ================================================================== Four packages declared internal peerDeps using literal version ranges (e.g. "@loop-engine/core": "^1.0.0-rc.0"). Before the version bump those literals pointed at ^0.1.5, which resolved against the already-published npm version and worked. After changeset version the literals pointed at ^1.0.0-rc.0 which is not yet published, so `pnpm install --frozen-lockfile` failed in CI with ERR_PNPM_NO_MATCHING_VERSION (chicken-and-egg bootstrap: can't install to build to publish). Switching these specs to workspace:^ makes pnpm resolve against workspace siblings locally; pnpm's publish-transform rewrites workspace:^ to the actual ^X.Y.Z range at publish time, so the published artifact is identical to what the literal range produced. Pure bootstrap-ergonomics fix with zero consumer-visible change. Edited peerDep specs: - packages/adapter-pagerduty @loop-engine/core ^1.0.0-rc.0 -> workspace:^ - packages/adapter-perplexity @loop-engine/core ^1.0.0-rc.0 -> workspace:^ - packages/adapter-vercel-ai @loop-engine/core ^1.0.0-rc.0 -> workspace:^ - packages/runtime @loop-engine/events ^1.0.0-rc.0 -> workspace:^ F-PA7-CI-07 — adapter-vercel-ai aligned to post-SR-010 schema field names ========================================================================= The workspace:^ conversion above unmasked pre-existing drift in packages/adapter-vercel-ai/src/loop-tool-bridge.ts. That file referenced pre-reconciliation field names (definition.loopId, transition.transitionId) which were renamed to definition.id / transition.id during SR-004 + SR-010. The pre-fix literal peerDep resolved @loop-engine/core against externally- published 0.1.5 (which still carried the old field shape), so typecheck falsely passed through all of Pass B against stale input types. Five-token mechanical rename, identical in kind to SR-018's example-tree alignment: - definition.loopId -> definition.id (3 instances) - transition.transitionId -> transition.id (3 instances — 2 wrapped in String()) No behavioral change, no signature change, no new imports. Engine API keyword arguments (loopId:, transitionId:) in the call-site argument positions stay unchanged — those are the engine's public input shape; only the right-hand-side schema-field reads moved. Scope verification ------------------ - `pnpm -r typecheck` clean across all 27 workspace projects (confirms the drift is isolated to this one file; every other package already typechecked against workspace types via workspace:* deps). - `pnpm -r build` clean. - `pnpm -r test` clean (no tests touch the edited lines). - pnpm-lock.yaml regenerated; adapter-postgres (0.2.0) and adapter-kafka (0.1.7) still on their separate version tracks. Classification -------------- F-PA7-CI-06: observation-tier C-15 instance (eighth; verification-gate coverage widened on release-path exercise). F-PA7-CI-07: substantive-tier C-15 *variant* (ninth; verification-against- stale-inputs rather than verification-gap — the typecheck gate existed but its input types were drifted. Distinct from prior C-15 instances. SR-018's "example trees" framing should structurally have been "all workspace files referencing reconciled field names" — to be logged as a scope-derivation lesson for future reconciliation work). Surface-Reconciliation-Id: SR-018 (completion) + SR-019 (release)
1 parent ce811ae commit 5adee37

6 files changed

Lines changed: 15 additions & 34 deletions

File tree

packages/adapter-pagerduty/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"typecheck": "tsc -p tsconfig.json --noEmit"
3636
},
3737
"peerDependencies": {
38-
"@loop-engine/core": "^1.0.0-rc.0"
38+
"@loop-engine/core": "workspace:^"
3939
},
4040
"devDependencies": {
4141
"tsup": "^8.5.1",

packages/adapter-perplexity/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"node": ">=18.17"
4444
},
4545
"peerDependencies": {
46-
"@loop-engine/core": "^1.0.0-rc.0"
46+
"@loop-engine/core": "workspace:^"
4747
},
4848
"devDependencies": {
4949
"@loop-engine/core": "workspace:*",

packages/adapter-vercel-ai/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"@loop-engine/runtime": "workspace:*"
3939
},
4040
"peerDependencies": {
41-
"@loop-engine/core": "^1.0.0-rc.0",
41+
"@loop-engine/core": "workspace:^",
4242
"ai": ">=3.0.0"
4343
},
4444
"devDependencies": {

packages/adapter-vercel-ai/src/loop-tool-bridge.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export async function startGovernedLoop(
1212
): Promise<AggregateId> {
1313
const instanceId = `loop_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` as AggregateId;
1414
await engine.start({
15-
loopId: definition.loopId,
15+
loopId: definition.id,
1616
aggregateId: instanceId,
1717
actor
1818
});
@@ -39,25 +39,25 @@ export async function transitionToState(
3939
);
4040
if (!transition) {
4141
throw new Error(
42-
`[loop-engine/adapter-vercel-ai] missing transition ${current} -> ${toState} in ${definition.loopId}`
42+
`[loop-engine/adapter-vercel-ai] missing transition ${current} -> ${toState} in ${definition.id}`
4343
);
4444
}
4545

4646
const result = await engine.transition({
4747
aggregateId: instanceId,
48-
transitionId: transition.transitionId,
48+
transitionId: transition.id,
4949
actor,
5050
...(evidence ? { evidence } : {})
5151
});
5252
if (result.status === "executed") return;
5353
if (result.status === "guard_failed") {
5454
throw new Error(
55-
`[loop-engine/adapter-vercel-ai] guard failed on ${String(transition.transitionId)}: ${
55+
`[loop-engine/adapter-vercel-ai] guard failed on ${String(transition.id)}: ${
5656
result.guardFailures?.[0]?.guardId ?? "unknown_guard"
5757
}`
5858
);
5959
}
6060
throw new Error(
61-
`[loop-engine/adapter-vercel-ai] transition ${String(transition.transitionId)} returned status ${result.status}`
61+
`[loop-engine/adapter-vercel-ai] transition ${String(transition.id)} returned status ${result.status}`
6262
);
6363
}

packages/runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"@loop-engine/guards": "workspace:*"
3131
},
3232
"peerDependencies": {
33-
"@loop-engine/events": "^1.0.0-rc.0"
33+
"@loop-engine/events": "workspace:^"
3434
},
3535
"files": [
3636
"dist/",

pnpm-lock.yaml

Lines changed: 6 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)