Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
commit: |
❌ Dogfood Test: failed |
|
✅ Expect tests passed Test output |
|
✅ Expect tests passed Test output |
|
✅ Expect tests passed Test output |
|
✅ Expect tests passed Test output |
|
✅ Expect tests passed Test output |
…planning and change-analysis guidance
…and update related functionality in prompts and flow storage
…amps for markers and improve state management
4092c5f to
a732368
Compare
Test Results✅ Website Test: passed3 passed, 0 failed out of 3 steps — 96s
Session Recordinghttps://github.com/millionco/expect/releases/download/ci-pr-62/1d202c9917e3f51bd19f2ae0ea16f7cc.webm |
| () => | ||
| <A, E, R>(effect: Effect.Effect<A, E, R>) => | ||
| effect, | ||
| getMainBranch: Effect.succeed("main"), |
| "- Only take a visual screenshot if the failure might be layout/rendering related.", | ||
| "- Summarize the failure category and the most important evidence inside <why-it-failed>.", | ||
| "- Make <why-it-failed> dense and copy-pasteable for a follow-up coding agent. Do not write a vague summary like 'button missing' or 'page broken'.", | ||
| "- Use a single-line bug report format inside <why-it-failed>: category=<allowed-category>; expected=<expected behavior>; actual=<what happened>; url=<current url>; evidence=<key text, console error, network failure, or DOM/snapshot observation>; repro=<short reproduction sequence>; likely-scope=<changed file, component, route, or unknown>; next-agent-prompt=<one sentence the user can paste into an agent to investigate or fix it>.", |
There was a problem hiding this comment.
should we make everything XML based? rn we have this weird separator thing for steps
| new AgentText({ text: lastEvent.text + update.content.text }), | ||
| ], | ||
| }); | ||
| }).finalizeTextBlock(receivedAt, true); |
There was a problem hiding this comment.
rasmus didnt like this for some reason because apparently it should auto run, check the slack for when he yelled at me :(
There was a problem hiding this comment.
1 issue found across 22 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/supervisor/src/flow-storage.ts">
<violation number="1" location="packages/supervisor/src/flow-storage.ts:36">
P2: `note` is derived from raw fields instead of resolved saved values, so it can duplicate `instruction` or `expectedOutcome` after fallback.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
| steps: plan.steps.map((step) => { | ||
| const summaryText = Option.getOrElse(step.summary, () => ""); | ||
| const routeHint = Option.getOrElse(step.routeHint, () => ""); | ||
| const note = |
There was a problem hiding this comment.
P2: note is derived from raw fields instead of resolved saved values, so it can duplicate instruction or expectedOutcome after fallback.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/supervisor/src/flow-storage.ts, line 36:
<comment>`note` is derived from raw fields instead of resolved saved values, so it can duplicate `instruction` or `expectedOutcome` after fallback.</comment>
<file context>
@@ -32,11 +32,21 @@ const testPlanToSavedFlowFileData = (plan: TestPlan): SavedFlowFileData => ({
steps: plan.steps.map((step) => {
const summaryText = Option.getOrElse(step.summary, () => "");
+ const routeHint = Option.getOrElse(step.routeHint, () => "");
+ const note =
+ summaryText.length > 0 &&
+ summaryText !== step.expectedOutcome &&
</file context>
|
|
||
| export const buildSessionMeta = ({ provider, systemPrompt, metadata }: BuildSessionMetaOptions) => | ||
| Match.value(provider).pipe( | ||
| Match.when("claude", () => { |
There was a problem hiding this comment.
this whole thing is highly overcomplicated, should just be something like
return {
...Option.map(systemPrompt, (systemPrompt) => ({ systemPrompt })).pipe(Option.getOrElse({})),
...(metadata.isGitHubActions ? { effort: "high", thinking: { type: "adaptive" } } : {})
}| @@ -86,6 +86,7 @@ export class Analytics extends ServiceMap.Service<Analytics>()("@expect/Analytic | |||
| const provider = yield* AnalyticsProvider; | |||
| const noTelemetryValue = yield* Config.option(Config.string("NO_TELEMETRY")); | |||
| const noTelemetryLegacy = yield* Config.option(Config.string("NO_TELEMTRY")); | |||
There was a problem hiding this comment.
unrelated but why do we have legacy already? xd
|
|
||
| const distinctId = yield* Effect.tryPromise(() => machineId()).pipe(Effect.orDie); | ||
| const projectId = hash(process.cwd()); | ||
| const capture = telemetryDisabled |
There was a problem hiding this comment.
extremely hard to read, just put an early return inside the capture if telemetryDisabled return;
| title: string; | ||
| instruction: string; | ||
| expectedOutcome: string; | ||
| routeHint?: string; |
There was a problem hiding this comment.
we shouldn't need SavedFlow and SavedFlowStep when we already have the ExecutedTestPlan?
| return undefined; | ||
| }; | ||
|
|
||
| const splitMarkerLines = (text: string, completeLinesOnly: boolean) => { |
There was a problem hiding this comment.
this is tech debt.
there is literally no reason for this code...
i assume this is tech debt that's caused by this .finalizeTextBlock(receivedAt); changes that were made previously.
please fix the tech debt instead
we should ONLY CALL ExecutedTestPlan.addEvent(AcpSessionUpdate), there should be NO OTHER LOGIC.
if there is some other logic -> tech debt.
this remainingText is already in events key of ExecutedTestPlan if the addEvent is implemented correctly
| new AgentText({ text: lastEvent.text + update.content.text }), | ||
| ], | ||
| }); | ||
| }).finalizeTextBlock(receivedAt, true); |
There was a problem hiding this comment.
yeah please fix this haha XD
| status: "active", | ||
| title: marker.title, | ||
| startedAt: Option.some(DateTime.nowUnsafe()), | ||
| startedAt: Option.some(receivedAt), |
There was a problem hiding this comment.
this is fine functionally but when is receivedAt different from DateTime.nowUnsafe() ?
| sessionId: Option.none(), | ||
| prompt, | ||
| systemPrompt: Option.none(), | ||
| systemPrompt: Option.some(systemPrompt), |
There was a problem hiding this comment.
how does system prompt get handled with ACP providers that dont support system prompt like Codex?
No description provided.