mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-07 08:27:12 +00:00
parent
f120fc68ab
commit
086bbf3eb8
4 changed files with 448 additions and 17 deletions
383
run.json
383
run.json
File diff suppressed because one or more lines are too long
71
stages/013-fixup@2/diff.patch
Normal file
71
stages/013-fixup@2/diff.patch
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
diff --git a/apps/fabro-web/app/components/stage-insights-sidebar.test.tsx b/apps/fabro-web/app/components/stage-insights-sidebar.test.tsx
|
||||
index 713f1b4bc..9bf0cf530 100644
|
||||
--- a/apps/fabro-web/app/components/stage-insights-sidebar.test.tsx
|
||||
+++ b/apps/fabro-web/app/components/stage-insights-sidebar.test.tsx
|
||||
@@ -5,7 +5,6 @@ import { MemoryRouter } from "react-router";
|
||||
import {
|
||||
AgentToolCategory,
|
||||
AgentSkillActivationSource,
|
||||
- PermissionLevel,
|
||||
StageContextWindowCategory,
|
||||
StageContextWindowCountMethod,
|
||||
StageContextWindowStaleness,
|
||||
@@ -148,17 +147,7 @@ describe("StageInsightsSidebar", () => {
|
||||
expect(dom).not.toContain("31%");
|
||||
});
|
||||
|
||||
- test("renders permission badge for read-only", () => {
|
||||
- const dom = render(makeStage({ permission_level: PermissionLevel.READ_ONLY }), null);
|
||||
- expect(dom).toContain("Read-only");
|
||||
- });
|
||||
-
|
||||
- test("renders permission badge for full access", () => {
|
||||
- const dom = render(makeStage({ permission_level: PermissionLevel.FULL }), null);
|
||||
- expect(dom).toContain("Full access");
|
||||
- });
|
||||
-
|
||||
- test("renders projected agent tool names, descriptions, categories, and invoked state", () => {
|
||||
+ test("renders projected agent tool names, descriptions as tooltips, and invoked state", () => {
|
||||
const dom = render(
|
||||
makeStage({
|
||||
agent_tools: [
|
||||
@@ -177,28 +166,20 @@ describe("StageInsightsSidebar", () => {
|
||||
invoked: false,
|
||||
},
|
||||
],
|
||||
- permission_level: PermissionLevel.FULL,
|
||||
}),
|
||||
null,
|
||||
);
|
||||
|
||||
expect(dom).toContain("1/2");
|
||||
expect(dom).toContain("apply_patch");
|
||||
+ // Descriptions are surfaced as `title` tooltip props on each tool row.
|
||||
expect(dom).toContain("Apply a unified diff patch");
|
||||
- expect(dom).toContain("write");
|
||||
- expect(dom).toContain("used");
|
||||
expect(dom).toContain("grep");
|
||||
expect(dom).toContain("Search file contents");
|
||||
- expect(dom).toContain("read");
|
||||
- expect(dom).toContain("available");
|
||||
- // Permission remains secondary compatibility metadata, not the source of
|
||||
- // the tool list.
|
||||
- expect(dom).toContain("Full access");
|
||||
});
|
||||
|
||||
- test("legacy stages without agent tools keep permission fallback only", () => {
|
||||
- const dom = render(makeStage({ permission_level: PermissionLevel.READ_WRITE }), null);
|
||||
- expect(dom).toContain("Read/write");
|
||||
+ test("legacy stages without agent tools render no tool rows", () => {
|
||||
+ const dom = render(makeStage(), null);
|
||||
expect(dom).not.toContain("apply_patch");
|
||||
});
|
||||
|
||||
@@ -266,6 +247,6 @@ describe("StageInsightsSidebar", () => {
|
||||
const dom = render(undefined, null);
|
||||
// sidebar still renders even with no data
|
||||
expect(dom).toContain("Agent");
|
||||
- expect(dom).toContain("Unknown");
|
||||
+ expect(dom).toContain("Context");
|
||||
});
|
||||
});
|
||||
6
stages/013-fixup@2/status.json
Normal file
6
stages/013-fixup@2/status.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"outcome": "succeeded",
|
||||
"notes": "Stage completed: fixup",
|
||||
"failure_reason": null,
|
||||
"timestamp": "2026-05-25T01:12:11.551584Z"
|
||||
}
|
||||
5
stages/014-verify@3/script_invocation.json
Normal file
5
stages/014-verify@3/script_invocation.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"script": "git fetch origin main 2>&1 && git merge --no-edit --no-stat origin/main 2>&1 && cargo +nightly-2026-04-14 fmt --all 2>&1 && cargo dev docs refresh 2>&1 && cargo +nightly-2026-04-14 fmt --check --all 2>&1 && { command -v rg >/dev/null 2>&1 || { echo 'rg is required for verify'; exit 127; }; } && ! rg -n 'AuthMode::Disabled|RunAuthMethod|RunSubjectProvenance|\\bActorRef\\b|\\bActorKind\\b|AuthenticatedSubject|AuthenticatedService|AuthorizeRunScoped|AuthorizeRunBlob|AuthorizeStageArtifact|AuthorizeCommandLog|auth_method\\s*==\\s*\"disabled\"' lib/crates apps lib/packages docs/public/api-reference/fabro-api.yaml 2>&1 && cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D warnings 2>&1 && cargo nextest run --workspace --status-level slow --profile ci 2>&1 && cargo dev docs check 2>&1 && bun install --frozen-lockfile 2>&1 && (cd apps/fabro-web && bun run typecheck) 2>&1 && (cd apps/fabro-web && bun run test) 2>&1 && (cd lib/packages/fabro-api-client && bun run typecheck) 2>&1 && cargo dev build -- -p fabro-cli --release 2>&1",
|
||||
"command": "exec 2>&1\ngit fetch origin main 2>&1 && git merge --no-edit --no-stat origin/main 2>&1 && cargo +nightly-2026-04-14 fmt --all 2>&1 && cargo dev docs refresh 2>&1 && cargo +nightly-2026-04-14 fmt --check --all 2>&1 && { command -v rg >/dev/null 2>&1 || { echo 'rg is required for verify'; exit 127; }; } && ! rg -n 'AuthMode::Disabled|RunAuthMethod|RunSubjectProvenance|\\bActorRef\\b|\\bActorKind\\b|AuthenticatedSubject|AuthenticatedService|AuthorizeRunScoped|AuthorizeRunBlob|AuthorizeStageArtifact|AuthorizeCommandLog|auth_method\\s*==\\s*\"disabled\"' lib/crates apps lib/packages docs/public/api-reference/fabro-api.yaml 2>&1 && cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D warnings 2>&1 && cargo nextest run --workspace --status-level slow --profile ci 2>&1 && cargo dev docs check 2>&1 && bun install --frozen-lockfile 2>&1 && (cd apps/fabro-web && bun run typecheck) 2>&1 && (cd apps/fabro-web && bun run test) 2>&1 && (cd lib/packages/fabro-api-client && bun run typecheck) 2>&1 && cargo dev build -- -p fabro-cli --release 2>&1",
|
||||
"language": "shell"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue