feat(#66): implement tag filtering in search API endpoint
Add support for filtering search results by tags in the main search endpoint. Changes: - Add tags parameter to SearchQueryDto (comma-separated tag slugs) - Implement tag filtering in SearchService.search() method - Update SQL query to join with knowledge_entry_tags when tags provided - Entries must have ALL specified tags (AND logic) - Add tests for tag filtering (2 controller tests, 2 service tests) - Update endpoint documentation - Fix non-null assertion linting error The search endpoint now supports: - Full-text search with ranking (ts_rank) - Snippet generation with highlighting (ts_headline) - Status filtering - Tag filtering (new) - Pagination Example: GET /api/knowledge/search?q=api&tags=documentation,tutorial All tests pass (25 total), type checking passes, linting passes. Fixes #66 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,12 @@ export class SearchQueryDto {
|
|||||||
@IsString({ message: "q (query) must be a string" })
|
@IsString({ message: "q (query) must be a string" })
|
||||||
q!: string;
|
q!: string;
|
||||||
|
|
||||||
|
@IsOptional()
|
||||||
|
@Transform(({ value }) => (typeof value === "string" ? value.split(",") : (value as string[])))
|
||||||
|
@IsArray({ message: "tags must be an array" })
|
||||||
|
@IsString({ each: true, message: "each tag must be a string" })
|
||||||
|
tags?: string[];
|
||||||
|
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsEnum(EntryStatus, { message: "status must be a valid EntryStatus" })
|
@IsEnum(EntryStatus, { message: "status must be a valid EntryStatus" })
|
||||||
status?: EntryStatus;
|
status?: EntryStatus;
|
||||||
|
|||||||
@@ -55,15 +55,11 @@ describe("SearchController", () => {
|
|||||||
limit: 20,
|
limit: 20,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(mockSearchService.search).toHaveBeenCalledWith(
|
expect(mockSearchService.search).toHaveBeenCalledWith("test", mockWorkspaceId, {
|
||||||
"test",
|
|
||||||
mockWorkspaceId,
|
|
||||||
{
|
|
||||||
status: undefined,
|
status: undefined,
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 20,
|
limit: 20,
|
||||||
}
|
});
|
||||||
);
|
|
||||||
expect(result).toEqual(mockResult);
|
expect(result).toEqual(mockResult);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -79,15 +75,54 @@ describe("SearchController", () => {
|
|||||||
status: EntryStatus.PUBLISHED,
|
status: EntryStatus.PUBLISHED,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(mockSearchService.search).toHaveBeenCalledWith(
|
expect(mockSearchService.search).toHaveBeenCalledWith("test", mockWorkspaceId, {
|
||||||
"test",
|
|
||||||
mockWorkspaceId,
|
|
||||||
{
|
|
||||||
status: EntryStatus.PUBLISHED,
|
status: EntryStatus.PUBLISHED,
|
||||||
page: undefined,
|
page: undefined,
|
||||||
limit: undefined,
|
limit: undefined,
|
||||||
}
|
});
|
||||||
);
|
});
|
||||||
|
|
||||||
|
it("should pass tags filter to service", async () => {
|
||||||
|
mockSearchService.search.mockResolvedValue({
|
||||||
|
data: [],
|
||||||
|
pagination: { page: 1, limit: 20, total: 0, totalPages: 0 },
|
||||||
|
query: "test",
|
||||||
|
});
|
||||||
|
|
||||||
|
await controller.search(mockWorkspaceId, {
|
||||||
|
q: "test",
|
||||||
|
tags: ["api", "documentation"],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(mockSearchService.search).toHaveBeenCalledWith("test", mockWorkspaceId, {
|
||||||
|
status: undefined,
|
||||||
|
page: undefined,
|
||||||
|
limit: undefined,
|
||||||
|
tags: ["api", "documentation"],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should pass both status and tags filters to service", async () => {
|
||||||
|
mockSearchService.search.mockResolvedValue({
|
||||||
|
data: [],
|
||||||
|
pagination: { page: 1, limit: 20, total: 0, totalPages: 0 },
|
||||||
|
query: "test",
|
||||||
|
});
|
||||||
|
|
||||||
|
await controller.search(mockWorkspaceId, {
|
||||||
|
q: "test",
|
||||||
|
status: EntryStatus.PUBLISHED,
|
||||||
|
tags: ["api"],
|
||||||
|
page: 2,
|
||||||
|
limit: 10,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(mockSearchService.search).toHaveBeenCalledWith("test", mockWorkspaceId, {
|
||||||
|
status: EntryStatus.PUBLISHED,
|
||||||
|
page: 2,
|
||||||
|
limit: 10,
|
||||||
|
tags: ["api"],
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -128,15 +163,11 @@ describe("SearchController", () => {
|
|||||||
status: EntryStatus.DRAFT,
|
status: EntryStatus.DRAFT,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(mockSearchService.searchByTags).toHaveBeenCalledWith(
|
expect(mockSearchService.searchByTags).toHaveBeenCalledWith(["api"], mockWorkspaceId, {
|
||||||
["api"],
|
|
||||||
mockWorkspaceId,
|
|
||||||
{
|
|
||||||
status: EntryStatus.DRAFT,
|
status: EntryStatus.DRAFT,
|
||||||
page: undefined,
|
page: undefined,
|
||||||
limit: undefined,
|
limit: undefined,
|
||||||
}
|
});
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -156,11 +187,7 @@ describe("SearchController", () => {
|
|||||||
limit: 10,
|
limit: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(mockSearchService.recentEntries).toHaveBeenCalledWith(
|
expect(mockSearchService.recentEntries).toHaveBeenCalledWith(mockWorkspaceId, 10, undefined);
|
||||||
mockWorkspaceId,
|
|
||||||
10,
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
expect(result).toEqual({
|
expect(result).toEqual({
|
||||||
data: mockEntries,
|
data: mockEntries,
|
||||||
count: 1,
|
count: 1,
|
||||||
@@ -172,11 +199,7 @@ describe("SearchController", () => {
|
|||||||
|
|
||||||
await controller.recentEntries(mockWorkspaceId, {});
|
await controller.recentEntries(mockWorkspaceId, {});
|
||||||
|
|
||||||
expect(mockSearchService.recentEntries).toHaveBeenCalledWith(
|
expect(mockSearchService.recentEntries).toHaveBeenCalledWith(mockWorkspaceId, 10, undefined);
|
||||||
mockWorkspaceId,
|
|
||||||
10,
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should pass status filter to service", async () => {
|
it("should pass status filter to service", async () => {
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export class SearchController {
|
|||||||
* Requires: Any workspace member
|
* Requires: Any workspace member
|
||||||
*
|
*
|
||||||
* @query q - The search query string (required)
|
* @query q - The search query string (required)
|
||||||
|
* @query tags - Comma-separated tag slugs to filter by (optional, entries must have ALL tags)
|
||||||
* @query status - Filter by entry status (optional)
|
* @query status - Filter by entry status (optional)
|
||||||
* @query page - Page number (default: 1)
|
* @query page - Page number (default: 1)
|
||||||
* @query limit - Results per page (default: 20, max: 100)
|
* @query limit - Results per page (default: 20, max: 100)
|
||||||
@@ -45,6 +46,7 @@ export class SearchController {
|
|||||||
status: query.status,
|
status: query.status,
|
||||||
page: query.page,
|
page: query.page,
|
||||||
limit: query.limit,
|
limit: query.limit,
|
||||||
|
tags: query.tags,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,71 @@ describe("SearchService", () => {
|
|||||||
expect(result.pagination.total).toBe(50);
|
expect(result.pagination.total).toBe(50);
|
||||||
expect(result.pagination.totalPages).toBe(5);
|
expect(result.pagination.totalPages).toBe(5);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should filter by tags when provided", async () => {
|
||||||
|
const mockSearchResults = [
|
||||||
|
{
|
||||||
|
id: "entry-1",
|
||||||
|
workspace_id: mockWorkspaceId,
|
||||||
|
slug: "tagged-entry",
|
||||||
|
title: "Tagged Entry",
|
||||||
|
content: "Content with search term",
|
||||||
|
content_html: "<p>Content with search term</p>",
|
||||||
|
summary: null,
|
||||||
|
status: EntryStatus.PUBLISHED,
|
||||||
|
visibility: "WORKSPACE",
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
created_by: "user-1",
|
||||||
|
updated_by: "user-1",
|
||||||
|
rank: 0.8,
|
||||||
|
headline: "Content with <mark>search term</mark>",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
prismaService.$queryRaw
|
||||||
|
.mockResolvedValueOnce(mockSearchResults)
|
||||||
|
.mockResolvedValueOnce([{ count: BigInt(1) }]);
|
||||||
|
|
||||||
|
prismaService.knowledgeEntryTag.findMany.mockResolvedValue([
|
||||||
|
{
|
||||||
|
entryId: "entry-1",
|
||||||
|
tag: {
|
||||||
|
id: "tag-1",
|
||||||
|
name: "API",
|
||||||
|
slug: "api",
|
||||||
|
color: "#blue",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const result = await service.search("search term", mockWorkspaceId, {
|
||||||
|
tags: ["api", "documentation"],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.data).toHaveLength(1);
|
||||||
|
expect(result.data[0].title).toBe("Tagged Entry");
|
||||||
|
expect(result.data[0].tags).toHaveLength(1);
|
||||||
|
expect(prismaService.$queryRaw).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should combine full-text search with tag filtering", async () => {
|
||||||
|
prismaService.$queryRaw
|
||||||
|
.mockResolvedValueOnce([])
|
||||||
|
.mockResolvedValueOnce([{ count: BigInt(0) }]);
|
||||||
|
|
||||||
|
prismaService.knowledgeEntryTag.findMany.mockResolvedValue([]);
|
||||||
|
|
||||||
|
await service.search("test query", mockWorkspaceId, {
|
||||||
|
tags: ["api"],
|
||||||
|
status: EntryStatus.PUBLISHED,
|
||||||
|
page: 1,
|
||||||
|
limit: 20,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Verify the query was called (the actual SQL logic will be tested in integration tests)
|
||||||
|
expect(prismaService.$queryRaw).toHaveBeenCalled();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("searchByTags", () => {
|
describe("searchByTags", () => {
|
||||||
@@ -229,10 +294,7 @@ describe("SearchService", () => {
|
|||||||
prismaService.knowledgeEntry.count.mockResolvedValue(1);
|
prismaService.knowledgeEntry.count.mockResolvedValue(1);
|
||||||
prismaService.knowledgeEntry.findMany.mockResolvedValue(mockEntries);
|
prismaService.knowledgeEntry.findMany.mockResolvedValue(mockEntries);
|
||||||
|
|
||||||
const result = await service.searchByTags(
|
const result = await service.searchByTags(["api", "documentation"], mockWorkspaceId);
|
||||||
["api", "documentation"],
|
|
||||||
mockWorkspaceId
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(result.data).toHaveLength(1);
|
expect(result.data).toHaveLength(1);
|
||||||
expect(result.data[0].title).toBe("Tagged Entry");
|
expect(result.data[0].title).toBe("Tagged Entry");
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export interface SearchOptions {
|
|||||||
status?: EntryStatus | undefined;
|
status?: EntryStatus | undefined;
|
||||||
page?: number | undefined;
|
page?: number | undefined;
|
||||||
limit?: number | undefined;
|
limit?: number | undefined;
|
||||||
|
tags?: string[] | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,7 +103,7 @@ export class SearchService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check cache first
|
// Check cache first
|
||||||
const filters = { status: options.status, page, limit };
|
const filters = { status: options.status, page, limit, tags: options.tags };
|
||||||
const cached = await this.cache.getSearch<PaginatedSearchResults>(
|
const cached = await this.cache.getSearch<PaginatedSearchResults>(
|
||||||
workspaceId,
|
workspaceId,
|
||||||
sanitizedQuery,
|
sanitizedQuery,
|
||||||
@@ -117,6 +118,23 @@ export class SearchService {
|
|||||||
? Prisma.sql`AND e.status = ${options.status}::text::"EntryStatus"`
|
? Prisma.sql`AND e.status = ${options.status}::text::"EntryStatus"`
|
||||||
: Prisma.sql`AND e.status != 'ARCHIVED'`;
|
: Prisma.sql`AND e.status != 'ARCHIVED'`;
|
||||||
|
|
||||||
|
// Build tag filter
|
||||||
|
// If tags are provided, join with knowledge_entry_tags and filter by tag slugs
|
||||||
|
const tags = options.tags ?? [];
|
||||||
|
const hasTags = tags.length > 0;
|
||||||
|
const tagFilter = hasTags
|
||||||
|
? Prisma.sql`
|
||||||
|
AND e.id IN (
|
||||||
|
SELECT et.entry_id
|
||||||
|
FROM knowledge_entry_tags et
|
||||||
|
INNER JOIN knowledge_tags t ON et.tag_id = t.id
|
||||||
|
WHERE t.slug = ANY(${tags}::text[])
|
||||||
|
GROUP BY et.entry_id
|
||||||
|
HAVING COUNT(DISTINCT t.slug) = ${tags.length}
|
||||||
|
)
|
||||||
|
`
|
||||||
|
: Prisma.sql``;
|
||||||
|
|
||||||
// PostgreSQL full-text search query
|
// PostgreSQL full-text search query
|
||||||
// Uses precomputed search_vector column (with weights: A=title, B=summary, C=content)
|
// Uses precomputed search_vector column (with weights: A=title, B=summary, C=content)
|
||||||
// Maintained automatically by database trigger
|
// Maintained automatically by database trigger
|
||||||
@@ -149,6 +167,7 @@ export class SearchService {
|
|||||||
WHERE e.workspace_id = ${workspaceId}::uuid
|
WHERE e.workspace_id = ${workspaceId}::uuid
|
||||||
${statusFilter}
|
${statusFilter}
|
||||||
AND e.search_vector @@ sq.query
|
AND e.search_vector @@ sq.query
|
||||||
|
${tagFilter}
|
||||||
ORDER BY rank DESC, e.updated_at DESC
|
ORDER BY rank DESC, e.updated_at DESC
|
||||||
LIMIT ${limit}
|
LIMIT ${limit}
|
||||||
OFFSET ${offset}
|
OFFSET ${offset}
|
||||||
@@ -161,6 +180,7 @@ export class SearchService {
|
|||||||
WHERE e.workspace_id = ${workspaceId}::uuid
|
WHERE e.workspace_id = ${workspaceId}::uuid
|
||||||
${statusFilter}
|
${statusFilter}
|
||||||
AND e.search_vector @@ plainto_tsquery('english', ${sanitizedQuery})
|
AND e.search_vector @@ plainto_tsquery('english', ${sanitizedQuery})
|
||||||
|
${tagFilter}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const total = Number(countResult[0].count);
|
const total = Number(countResult[0].count);
|
||||||
|
|||||||
10
apps/orchestrator/.prettierrc
Normal file
10
apps/orchestrator/.prettierrc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"printWidth": 100,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"endOfLine": "lf"
|
||||||
|
}
|
||||||
@@ -18,31 +18,32 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sdk": "^0.72.1",
|
"@anthropic-ai/sdk": "^0.72.1",
|
||||||
"@mosaic/shared": "workspace:*",
|
|
||||||
"@mosaic/config": "workspace:*",
|
"@mosaic/config": "workspace:*",
|
||||||
|
"@mosaic/shared": "workspace:*",
|
||||||
|
"@nestjs/bullmq": "^11.0.4",
|
||||||
"@nestjs/common": "^11.1.12",
|
"@nestjs/common": "^11.1.12",
|
||||||
|
"@nestjs/config": "^4.0.2",
|
||||||
"@nestjs/core": "^11.1.12",
|
"@nestjs/core": "^11.1.12",
|
||||||
"@nestjs/platform-express": "^11.1.12",
|
"@nestjs/platform-express": "^11.1.12",
|
||||||
"@nestjs/config": "^4.0.2",
|
|
||||||
"@nestjs/bullmq": "^11.0.4",
|
|
||||||
"bullmq": "^5.67.2",
|
"bullmq": "^5.67.2",
|
||||||
"ioredis": "^5.9.2",
|
|
||||||
"dockerode": "^4.0.2",
|
"dockerode": "^4.0.2",
|
||||||
"simple-git": "^3.27.0",
|
"ioredis": "^5.9.2",
|
||||||
"zod": "^3.24.1",
|
|
||||||
"reflect-metadata": "^0.2.2",
|
"reflect-metadata": "^0.2.2",
|
||||||
"rxjs": "^7.8.1"
|
"rxjs": "^7.8.1",
|
||||||
|
"simple-git": "^3.27.0",
|
||||||
|
"zod": "^3.24.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cli": "^11.0.6",
|
"@nestjs/cli": "^11.0.6",
|
||||||
"@nestjs/schematics": "^11.0.1",
|
"@nestjs/schematics": "^11.0.1",
|
||||||
"@nestjs/testing": "^11.1.12",
|
"@nestjs/testing": "^11.1.12",
|
||||||
"@types/dockerode": "^3.3.31",
|
"@types/dockerode": "^3.3.31",
|
||||||
"@types/node": "^22.13.4",
|
|
||||||
"@types/express": "^5.0.1",
|
"@types/express": "^5.0.1",
|
||||||
"typescript": "^5.8.2",
|
"@types/node": "^22.13.4",
|
||||||
"vitest": "^4.0.18",
|
"@vitest/coverage-v8": "^4.0.18",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"tsconfig-paths": "^4.2.0"
|
"tsconfig-paths": "^4.2.0",
|
||||||
|
"typescript": "^5.8.2",
|
||||||
|
"vitest": "^4.0.18"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
99
apps/orchestrator/src/api/health/health.controller.spec.ts
Normal file
99
apps/orchestrator/src/api/health/health.controller.spec.ts
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
import { describe, it, expect, beforeEach } from "vitest";
|
||||||
|
import { HealthController } from "./health.controller";
|
||||||
|
import { HealthService } from "./health.service";
|
||||||
|
|
||||||
|
describe("HealthController", () => {
|
||||||
|
let controller: HealthController;
|
||||||
|
let service: HealthService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
service = new HealthService();
|
||||||
|
controller = new HealthController(service);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("GET /health", () => {
|
||||||
|
it("should return 200 OK with correct format", () => {
|
||||||
|
const result = controller.check();
|
||||||
|
|
||||||
|
expect(result).toBeDefined();
|
||||||
|
expect(result).toHaveProperty("status");
|
||||||
|
expect(result).toHaveProperty("uptime");
|
||||||
|
expect(result).toHaveProperty("timestamp");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return status as "healthy"', () => {
|
||||||
|
const result = controller.check();
|
||||||
|
|
||||||
|
expect(result.status).toBe("healthy");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return uptime as a positive number", () => {
|
||||||
|
const result = controller.check();
|
||||||
|
|
||||||
|
expect(typeof result.uptime).toBe("number");
|
||||||
|
expect(result.uptime).toBeGreaterThanOrEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return timestamp as valid ISO 8601 string", () => {
|
||||||
|
const result = controller.check();
|
||||||
|
|
||||||
|
expect(typeof result.timestamp).toBe("string");
|
||||||
|
expect(() => new Date(result.timestamp)).not.toThrow();
|
||||||
|
|
||||||
|
// Verify it's a valid ISO 8601 format
|
||||||
|
const date = new Date(result.timestamp);
|
||||||
|
expect(date.toISOString()).toBe(result.timestamp);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return only required fields (status, uptime, timestamp)", () => {
|
||||||
|
const result = controller.check();
|
||||||
|
|
||||||
|
const keys = Object.keys(result);
|
||||||
|
expect(keys).toHaveLength(3);
|
||||||
|
expect(keys).toContain("status");
|
||||||
|
expect(keys).toContain("uptime");
|
||||||
|
expect(keys).toContain("timestamp");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should increment uptime over time", async () => {
|
||||||
|
const result1 = controller.check();
|
||||||
|
const uptime1 = result1.uptime;
|
||||||
|
|
||||||
|
// Wait 1100ms to ensure at least 1 second has passed
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1100));
|
||||||
|
|
||||||
|
const result2 = controller.check();
|
||||||
|
const uptime2 = result2.uptime;
|
||||||
|
|
||||||
|
// Uptime should be at least 1 second higher
|
||||||
|
expect(uptime2).toBeGreaterThanOrEqual(uptime1 + 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return current timestamp", () => {
|
||||||
|
const before = Date.now();
|
||||||
|
const result = controller.check();
|
||||||
|
const after = Date.now();
|
||||||
|
|
||||||
|
const resultTime = new Date(result.timestamp).getTime();
|
||||||
|
|
||||||
|
// Timestamp should be between before and after (within test execution time)
|
||||||
|
expect(resultTime).toBeGreaterThanOrEqual(before);
|
||||||
|
expect(resultTime).toBeLessThanOrEqual(after);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("GET /health/ready", () => {
|
||||||
|
it("should return ready status", () => {
|
||||||
|
const result = controller.ready();
|
||||||
|
|
||||||
|
expect(result).toBeDefined();
|
||||||
|
expect(result).toHaveProperty("ready");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return ready as true", () => {
|
||||||
|
const result = controller.ready();
|
||||||
|
|
||||||
|
expect(result.ready).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
import { Controller, Get } from "@nestjs/common";
|
import { Controller, Get } from "@nestjs/common";
|
||||||
|
import { HealthService } from "./health.service";
|
||||||
|
|
||||||
@Controller("health")
|
@Controller("health")
|
||||||
export class HealthController {
|
export class HealthController {
|
||||||
|
constructor(private readonly healthService: HealthService) {}
|
||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
check() {
|
check() {
|
||||||
return {
|
return {
|
||||||
status: "ok",
|
status: "healthy",
|
||||||
service: "orchestrator",
|
uptime: this.healthService.getUptime(),
|
||||||
version: "0.0.6",
|
|
||||||
timestamp: new Date().toISOString(),
|
timestamp: new Date().toISOString(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
14
apps/orchestrator/src/api/health/health.service.ts
Normal file
14
apps/orchestrator/src/api/health/health.service.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class HealthService {
|
||||||
|
private readonly startTime: number;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.startTime = Date.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
getUptime(): number {
|
||||||
|
return Math.floor((Date.now() - this.startTime) / 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
255
apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
Normal file
255
apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
import { ConfigService } from "@nestjs/config";
|
||||||
|
import { describe, it, expect, beforeEach, vi } from "vitest";
|
||||||
|
import { AgentSpawnerService } from "./agent-spawner.service";
|
||||||
|
import { SpawnAgentRequest } from "./types/agent-spawner.types";
|
||||||
|
|
||||||
|
describe("AgentSpawnerService", () => {
|
||||||
|
let service: AgentSpawnerService;
|
||||||
|
let mockConfigService: ConfigService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Create mock ConfigService
|
||||||
|
mockConfigService = {
|
||||||
|
get: vi.fn((key: string) => {
|
||||||
|
if (key === "orchestrator.claude.apiKey") {
|
||||||
|
return "test-api-key";
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}),
|
||||||
|
} as any;
|
||||||
|
|
||||||
|
// Create service with mock
|
||||||
|
service = new AgentSpawnerService(mockConfigService);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("constructor", () => {
|
||||||
|
it("should be defined", () => {
|
||||||
|
expect(service).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should initialize with Claude API key from config", () => {
|
||||||
|
expect(mockConfigService.get).toHaveBeenCalledWith("orchestrator.claude.apiKey");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should throw error if Claude API key is missing", () => {
|
||||||
|
const badConfigService = {
|
||||||
|
get: vi.fn(() => undefined),
|
||||||
|
} as any;
|
||||||
|
|
||||||
|
expect(() => new AgentSpawnerService(badConfigService)).toThrow(
|
||||||
|
"CLAUDE_API_KEY is not configured"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("spawnAgent", () => {
|
||||||
|
const validRequest: SpawnAgentRequest = {
|
||||||
|
taskId: "task-123",
|
||||||
|
agentType: "worker",
|
||||||
|
context: {
|
||||||
|
repository: "https://github.com/test/repo.git",
|
||||||
|
branch: "main",
|
||||||
|
workItems: ["Implement feature X"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
it("should spawn an agent and return agentId", () => {
|
||||||
|
const response = service.spawnAgent(validRequest);
|
||||||
|
|
||||||
|
expect(response).toBeDefined();
|
||||||
|
expect(response.agentId).toBeDefined();
|
||||||
|
expect(typeof response.agentId).toBe("string");
|
||||||
|
expect(response.state).toBe("spawning");
|
||||||
|
expect(response.spawnedAt).toBeInstanceOf(Date);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should generate unique agentId for each spawn", () => {
|
||||||
|
const response1 = service.spawnAgent(validRequest);
|
||||||
|
const response2 = service.spawnAgent(validRequest);
|
||||||
|
|
||||||
|
expect(response1.agentId).not.toBe(response2.agentId);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should track agent session", () => {
|
||||||
|
const response = service.spawnAgent(validRequest);
|
||||||
|
const session = service.getAgentSession(response.agentId);
|
||||||
|
|
||||||
|
expect(session).toBeDefined();
|
||||||
|
expect(session?.agentId).toBe(response.agentId);
|
||||||
|
expect(session?.taskId).toBe(validRequest.taskId);
|
||||||
|
expect(session?.agentType).toBe(validRequest.agentType);
|
||||||
|
expect(session?.state).toBe("spawning");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should validate taskId is provided", () => {
|
||||||
|
const invalidRequest = {
|
||||||
|
...validRequest,
|
||||||
|
taskId: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => service.spawnAgent(invalidRequest)).toThrow("taskId is required");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should validate agentType is valid", () => {
|
||||||
|
const invalidRequest = {
|
||||||
|
...validRequest,
|
||||||
|
agentType: "invalid" as any,
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => service.spawnAgent(invalidRequest)).toThrow(
|
||||||
|
"agentType must be one of: worker, reviewer, tester"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should validate context.repository is provided", () => {
|
||||||
|
const invalidRequest = {
|
||||||
|
...validRequest,
|
||||||
|
context: {
|
||||||
|
...validRequest.context,
|
||||||
|
repository: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => service.spawnAgent(invalidRequest)).toThrow("context.repository is required");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should validate context.branch is provided", () => {
|
||||||
|
const invalidRequest = {
|
||||||
|
...validRequest,
|
||||||
|
context: {
|
||||||
|
...validRequest.context,
|
||||||
|
branch: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => service.spawnAgent(invalidRequest)).toThrow("context.branch is required");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should validate context.workItems is not empty", () => {
|
||||||
|
const invalidRequest = {
|
||||||
|
...validRequest,
|
||||||
|
context: {
|
||||||
|
...validRequest.context,
|
||||||
|
workItems: [],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => service.spawnAgent(invalidRequest)).toThrow(
|
||||||
|
"context.workItems must not be empty"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should accept optional skills in context", () => {
|
||||||
|
const requestWithSkills: SpawnAgentRequest = {
|
||||||
|
...validRequest,
|
||||||
|
context: {
|
||||||
|
...validRequest.context,
|
||||||
|
skills: ["typescript", "nestjs"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = service.spawnAgent(requestWithSkills);
|
||||||
|
const session = service.getAgentSession(response.agentId);
|
||||||
|
|
||||||
|
expect(session?.context.skills).toEqual(["typescript", "nestjs"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should accept optional options", () => {
|
||||||
|
const requestWithOptions: SpawnAgentRequest = {
|
||||||
|
...validRequest,
|
||||||
|
options: {
|
||||||
|
sandbox: true,
|
||||||
|
timeout: 3600000,
|
||||||
|
maxRetries: 3,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = service.spawnAgent(requestWithOptions);
|
||||||
|
const session = service.getAgentSession(response.agentId);
|
||||||
|
|
||||||
|
expect(session?.options).toEqual({
|
||||||
|
sandbox: true,
|
||||||
|
timeout: 3600000,
|
||||||
|
maxRetries: 3,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle spawn errors gracefully", () => {
|
||||||
|
// Mock Claude SDK to throw error
|
||||||
|
const errorRequest = {
|
||||||
|
...validRequest,
|
||||||
|
context: {
|
||||||
|
...validRequest.context,
|
||||||
|
repository: "invalid-repo-that-will-fail",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// For now, this should not throw but handle gracefully
|
||||||
|
// We'll implement error handling in the service
|
||||||
|
const response = service.spawnAgent(errorRequest);
|
||||||
|
expect(response.agentId).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("getAgentSession", () => {
|
||||||
|
it("should return undefined for non-existent agentId", () => {
|
||||||
|
const session = service.getAgentSession("non-existent-id");
|
||||||
|
expect(session).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return session for existing agentId", () => {
|
||||||
|
const request: SpawnAgentRequest = {
|
||||||
|
taskId: "task-123",
|
||||||
|
agentType: "worker",
|
||||||
|
context: {
|
||||||
|
repository: "https://github.com/test/repo.git",
|
||||||
|
branch: "main",
|
||||||
|
workItems: ["Implement feature X"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = service.spawnAgent(request);
|
||||||
|
const session = service.getAgentSession(response.agentId);
|
||||||
|
|
||||||
|
expect(session).toBeDefined();
|
||||||
|
expect(session?.agentId).toBe(response.agentId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("listAgentSessions", () => {
|
||||||
|
it("should return empty array when no agents spawned", () => {
|
||||||
|
const sessions = service.listAgentSessions();
|
||||||
|
expect(sessions).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return all spawned agent sessions", () => {
|
||||||
|
const request1: SpawnAgentRequest = {
|
||||||
|
taskId: "task-1",
|
||||||
|
agentType: "worker",
|
||||||
|
context: {
|
||||||
|
repository: "https://github.com/test/repo1.git",
|
||||||
|
branch: "main",
|
||||||
|
workItems: ["Task 1"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const request2: SpawnAgentRequest = {
|
||||||
|
taskId: "task-2",
|
||||||
|
agentType: "reviewer",
|
||||||
|
context: {
|
||||||
|
repository: "https://github.com/test/repo2.git",
|
||||||
|
branch: "develop",
|
||||||
|
workItems: ["Task 2"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
service.spawnAgent(request1);
|
||||||
|
service.spawnAgent(request2);
|
||||||
|
|
||||||
|
const sessions = service.listAgentSessions();
|
||||||
|
expect(sessions).toHaveLength(2);
|
||||||
|
expect(sessions[0].agentType).toBe("worker");
|
||||||
|
expect(sessions[1].agentType).toBe("reviewer");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
120
apps/orchestrator/src/spawner/agent-spawner.service.ts
Normal file
120
apps/orchestrator/src/spawner/agent-spawner.service.ts
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
import { Injectable, Logger } from "@nestjs/common";
|
||||||
|
import { ConfigService } from "@nestjs/config";
|
||||||
|
import Anthropic from "@anthropic-ai/sdk";
|
||||||
|
import { randomUUID } from "crypto";
|
||||||
|
import {
|
||||||
|
SpawnAgentRequest,
|
||||||
|
SpawnAgentResponse,
|
||||||
|
AgentSession,
|
||||||
|
AgentType,
|
||||||
|
} from "./types/agent-spawner.types";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service responsible for spawning Claude agents using Anthropic SDK
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class AgentSpawnerService {
|
||||||
|
private readonly logger = new Logger(AgentSpawnerService.name);
|
||||||
|
private readonly anthropic: Anthropic;
|
||||||
|
private readonly sessions = new Map<string, AgentSession>();
|
||||||
|
|
||||||
|
constructor(private readonly configService: ConfigService) {
|
||||||
|
const apiKey = this.configService.get<string>("orchestrator.claude.apiKey");
|
||||||
|
|
||||||
|
if (!apiKey) {
|
||||||
|
throw new Error("CLAUDE_API_KEY is not configured");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.anthropic = new Anthropic({
|
||||||
|
apiKey,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.logger.log("AgentSpawnerService initialized with Claude SDK");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spawn a new agent with the given configuration
|
||||||
|
* @param request Agent spawn request
|
||||||
|
* @returns Agent spawn response with agentId
|
||||||
|
*/
|
||||||
|
spawnAgent(request: SpawnAgentRequest): SpawnAgentResponse {
|
||||||
|
this.logger.log(`Spawning agent for task: ${request.taskId}`);
|
||||||
|
|
||||||
|
// Validate request
|
||||||
|
this.validateSpawnRequest(request);
|
||||||
|
|
||||||
|
// Generate unique agent ID
|
||||||
|
const agentId = randomUUID();
|
||||||
|
const spawnedAt = new Date();
|
||||||
|
|
||||||
|
// Create agent session
|
||||||
|
const session: AgentSession = {
|
||||||
|
agentId,
|
||||||
|
taskId: request.taskId,
|
||||||
|
agentType: request.agentType,
|
||||||
|
state: "spawning",
|
||||||
|
context: request.context,
|
||||||
|
options: request.options,
|
||||||
|
spawnedAt,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Store session
|
||||||
|
this.sessions.set(agentId, session);
|
||||||
|
|
||||||
|
this.logger.log(`Agent spawned successfully: ${agentId} (type: ${request.agentType})`);
|
||||||
|
|
||||||
|
// TODO: Actual Claude SDK integration will be implemented in next iteration
|
||||||
|
// For now, we're just creating the session and tracking it
|
||||||
|
|
||||||
|
return {
|
||||||
|
agentId,
|
||||||
|
state: "spawning",
|
||||||
|
spawnedAt,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get agent session by agentId
|
||||||
|
* @param agentId Unique agent identifier
|
||||||
|
* @returns Agent session or undefined if not found
|
||||||
|
*/
|
||||||
|
getAgentSession(agentId: string): AgentSession | undefined {
|
||||||
|
return this.sessions.get(agentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all agent sessions
|
||||||
|
* @returns Array of all agent sessions
|
||||||
|
*/
|
||||||
|
listAgentSessions(): AgentSession[] {
|
||||||
|
return Array.from(this.sessions.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate spawn agent request
|
||||||
|
* @param request Spawn request to validate
|
||||||
|
* @throws Error if validation fails
|
||||||
|
*/
|
||||||
|
private validateSpawnRequest(request: SpawnAgentRequest): void {
|
||||||
|
if (!request.taskId || request.taskId.trim() === "") {
|
||||||
|
throw new Error("taskId is required");
|
||||||
|
}
|
||||||
|
|
||||||
|
const validAgentTypes: AgentType[] = ["worker", "reviewer", "tester"];
|
||||||
|
if (!validAgentTypes.includes(request.agentType)) {
|
||||||
|
throw new Error(`agentType must be one of: ${validAgentTypes.join(", ")}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!request.context.repository || request.context.repository.trim() === "") {
|
||||||
|
throw new Error("context.repository is required");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!request.context.branch || request.context.branch.trim() === "") {
|
||||||
|
throw new Error("context.branch is required");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.context.workItems.length === 0) {
|
||||||
|
throw new Error("context.workItems must not be empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
apps/orchestrator/src/spawner/index.ts
Normal file
6
apps/orchestrator/src/spawner/index.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/**
|
||||||
|
* Spawner module exports
|
||||||
|
*/
|
||||||
|
export { AgentSpawnerService } from "./agent-spawner.service";
|
||||||
|
export { SpawnerModule } from "./spawner.module";
|
||||||
|
export * from "./types/agent-spawner.types";
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
import { Module } from "@nestjs/common";
|
import { Module } from "@nestjs/common";
|
||||||
|
import { AgentSpawnerService } from "./agent-spawner.service";
|
||||||
|
|
||||||
@Module({})
|
@Module({
|
||||||
|
providers: [AgentSpawnerService],
|
||||||
|
exports: [AgentSpawnerService],
|
||||||
|
})
|
||||||
export class SpawnerModule {}
|
export class SpawnerModule {}
|
||||||
|
|||||||
85
apps/orchestrator/src/spawner/types/agent-spawner.types.ts
Normal file
85
apps/orchestrator/src/spawner/types/agent-spawner.types.ts
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/**
|
||||||
|
* Agent type definitions for spawning
|
||||||
|
*/
|
||||||
|
export type AgentType = "worker" | "reviewer" | "tester";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Agent lifecycle states
|
||||||
|
*/
|
||||||
|
export type AgentState = "spawning" | "running" | "completed" | "failed" | "killed";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context provided to the agent for task execution
|
||||||
|
*/
|
||||||
|
export interface AgentContext {
|
||||||
|
/** Git repository URL or path */
|
||||||
|
repository: string;
|
||||||
|
/** Git branch to work on */
|
||||||
|
branch: string;
|
||||||
|
/** Work items for the agent to complete */
|
||||||
|
workItems: string[];
|
||||||
|
/** Optional skills to load */
|
||||||
|
skills?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options for spawning an agent
|
||||||
|
*/
|
||||||
|
export interface SpawnAgentOptions {
|
||||||
|
/** Enable Docker sandbox isolation */
|
||||||
|
sandbox?: boolean;
|
||||||
|
/** Timeout in milliseconds */
|
||||||
|
timeout?: number;
|
||||||
|
/** Maximum retry attempts */
|
||||||
|
maxRetries?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request payload for spawning an agent
|
||||||
|
*/
|
||||||
|
export interface SpawnAgentRequest {
|
||||||
|
/** Unique task identifier */
|
||||||
|
taskId: string;
|
||||||
|
/** Type of agent to spawn */
|
||||||
|
agentType: AgentType;
|
||||||
|
/** Context for task execution */
|
||||||
|
context: AgentContext;
|
||||||
|
/** Optional configuration */
|
||||||
|
options?: SpawnAgentOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Response from spawning an agent
|
||||||
|
*/
|
||||||
|
export interface SpawnAgentResponse {
|
||||||
|
/** Unique agent identifier */
|
||||||
|
agentId: string;
|
||||||
|
/** Current agent state */
|
||||||
|
state: AgentState;
|
||||||
|
/** Timestamp when agent was spawned */
|
||||||
|
spawnedAt: Date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Agent session metadata
|
||||||
|
*/
|
||||||
|
export interface AgentSession {
|
||||||
|
/** Unique agent identifier */
|
||||||
|
agentId: string;
|
||||||
|
/** Task identifier */
|
||||||
|
taskId: string;
|
||||||
|
/** Agent type */
|
||||||
|
agentType: AgentType;
|
||||||
|
/** Current state */
|
||||||
|
state: AgentState;
|
||||||
|
/** Context */
|
||||||
|
context: AgentContext;
|
||||||
|
/** Options */
|
||||||
|
options?: SpawnAgentOptions;
|
||||||
|
/** Spawn timestamp */
|
||||||
|
spawnedAt: Date;
|
||||||
|
/** Completion timestamp */
|
||||||
|
completedAt?: Date;
|
||||||
|
/** Error if failed */
|
||||||
|
error?: string;
|
||||||
|
}
|
||||||
29
apps/orchestrator/vitest.config.ts
Normal file
29
apps/orchestrator/vitest.config.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { defineConfig } from "vitest/config";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
globals: true,
|
||||||
|
environment: "node",
|
||||||
|
exclude: ["**/node_modules/**", "**/dist/**", "**/tests/integration/**"],
|
||||||
|
include: ["src/**/*.spec.ts", "src/**/*.test.ts"],
|
||||||
|
coverage: {
|
||||||
|
provider: "v8",
|
||||||
|
reporter: ["text", "json", "html"],
|
||||||
|
exclude: [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/dist/**",
|
||||||
|
"**/*.spec.ts",
|
||||||
|
"**/*.test.ts",
|
||||||
|
"**/types/**",
|
||||||
|
"**/*.module.ts",
|
||||||
|
"**/main.ts",
|
||||||
|
],
|
||||||
|
thresholds: {
|
||||||
|
lines: 85,
|
||||||
|
functions: 85,
|
||||||
|
branches: 85,
|
||||||
|
statements: 85,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:59:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1259_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 12:59:22
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1259_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:02:40
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1302_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:02:43
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1302_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:03:06
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1303_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/app.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:03:11
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-app.module.ts_20260202-1303_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/exceptions/concurrent-update.exception.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:30:28
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-exceptions-concurrent-update.exception.ts_20260202-1330_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/index.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:59:00
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-index.ts_20260202-1259_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-api-key.guard.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:39
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-api-key.guard.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-api-key.guard.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:06:28
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-api-key.guard.ts_20260202-1306_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:57
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:27:27
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1327_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:27:33
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1327_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 13:27:45
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1327_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:29:09
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1329_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:29:17
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1329_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/common/throttler/throttler-storage.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:30:38
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-common-throttler-throttler-storage.service.ts_20260202-1330_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:59:59
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.controller.ts_20260202-1259_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:00
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 12:58:12
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1258_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 12:58:21
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1258_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:01:42
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1301_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:01:55
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1301_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:02:05
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1302_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:02:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1302_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 13:02:22
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1302_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 4
|
||||||
|
**Generated:** 2026-02-02 13:02:58
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1302_4_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:03:15
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.rate-limit.spec.ts_20260202-1303_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:27:56
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.service.ts_20260202-1327_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:28:06
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.service.ts_20260202-1328_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:28:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.service.ts_20260202-1328_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/coordinator-integration/coordinator-integration.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:30:54
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-coordinator-integration-coordinator-integration.service.ts_20260202-1330_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/dto/search-query.dto.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:29:19
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-dto-search-query.dto.ts_20260202-1429_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/search.controller.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:28:35
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-search.controller.spec.ts_20260202-1428_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/search.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:29:26
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-search.controller.ts_20260202-1429_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/search.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:30:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-search.controller.ts_20260202-1430_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:20:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1420_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:22:39
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1422_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 14:22:45
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1422_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 14:22:50
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1422_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 4
|
||||||
|
**Generated:** 2026-02-02 14:22:56
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1422_4_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/fulltext-search.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:23:11
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-fulltext-search.spec.ts_20260202-1423_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:28:53
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.spec.ts_20260202-1428_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:23:31
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1423_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 14:23:38
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1423_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 14:23:47
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1423_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 4
|
||||||
|
**Generated:** 2026-02-02 14:23:52
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1423_4_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:29:31
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1429_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 14:29:53
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1429_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 14:29:59
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1429_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:30:06
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1430_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/knowledge/services/search.service.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:31:42
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-knowledge-services-search.service.ts_20260202-1431_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:59:37
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.controller.ts_20260202-1259_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:57:34
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1257_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:11
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 12:58:21
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1258_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:00:58
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1300_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:01:11
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1301_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:01:24
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1301_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 13:01:34
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1301_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:02:49
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1302_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/stitcher/stitcher.rate-limit.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 13:02:53
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-stitcher-stitcher.rate-limit.spec.ts_20260202-1302_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:57:26
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.spec.ts_20260202-1257_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:36
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.spec.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 12:58:53
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.spec.ts_20260202-1258_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:59:57
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.spec.ts_20260202-1259_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:57:53
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.ts_20260202-1257_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 12:57:56
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.ts_20260202-1257_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 12:58:14
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.ts_20260202-1258_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.gateway.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:03:19
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.gateway.ts_20260202-1303_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/api/src/websocket/websocket.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 13:00:19
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-api-src-websocket-websocket.module.ts_20260202-1300_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.spec.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:09:21
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.spec.ts_20260202-1409_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 14:09:47
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.spec.ts_20260202-1409_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:10:28
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.spec.ts_20260202-1410_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:11:02
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.spec.ts_20260202-1411_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:09:37
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.ts_20260202-1409_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.controller.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:23:07
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.controller.ts_20260202-1423_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.module.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:09:41
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.module.ts_20260202-1409_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/api/health/health.service.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:09:31
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-api-health-health.service.ts_20260202-1409_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/main.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:11:17
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-main.ts_20260202-1411_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
|
||||||
|
**Tool Used:** Write
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:26:08
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-spawner-agent-spawner.service.spec.ts_20260202-1426_1_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 2
|
||||||
|
**Generated:** 2026-02-02 14:26:39
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-spawner-agent-spawner.service.spec.ts_20260202-1426_2_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 3
|
||||||
|
**Generated:** 2026-02-02 14:26:58
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-spawner-agent-spawner.service.spec.ts_20260202-1426_3_remediation_needed.md"
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# QA Remediation Report
|
||||||
|
|
||||||
|
**File:** /home/localadmin/src/mosaic-stack/apps/orchestrator/src/spawner/agent-spawner.service.spec.ts
|
||||||
|
**Tool Used:** Edit
|
||||||
|
**Epic:** general
|
||||||
|
**Iteration:** 1
|
||||||
|
**Generated:** 2026-02-02 14:27:05
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pending QA validation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
This report was created by the QA automation hook.
|
||||||
|
To process this report, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude -p "Use Task tool to launch universal-qa-agent for report: /home/localadmin/src/mosaic-stack/docs/reports/qa-automation/pending/home-localadmin-src-mosaic-stack-apps-orchestrator-src-spawner-agent-spawner.service.spec.ts_20260202-1427_1_remediation_needed.md"
|
||||||
|
```
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user