vibeman 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime/api/.tsbuildinfo +1 -1
- package/dist/runtime/api/agent/agent-service.d.ts +7 -6
- package/dist/runtime/api/agent/agent-service.js +36 -27
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.d.ts +2 -0
- package/dist/runtime/api/agent/ai-providers/codex-cli-provider.js +62 -30
- package/dist/runtime/api/agent/codex-cli-provider.test.js +47 -2
- package/dist/runtime/api/agent/routing-policy.d.ts +13 -30
- package/dist/runtime/api/agent/routing-policy.js +82 -132
- package/dist/runtime/api/agent/routing-policy.test.js +63 -0
- package/dist/runtime/api/api/routers/ai.d.ts +15 -3
- package/dist/runtime/api/api/routers/ai.js +7 -6
- package/dist/runtime/api/api/routers/executions.d.ts +1 -1
- package/dist/runtime/api/api/routers/tasks.d.ts +3 -3
- package/dist/runtime/api/api/routers/workflows.d.ts +8 -0
- package/dist/runtime/api/api/routers/workflows.js +2 -1
- package/dist/runtime/api/api/trpc.d.ts +6 -6
- package/dist/runtime/api/lib/trpc/server.d.ts +27 -7
- package/dist/runtime/api/router.d.ts +27 -7
- package/dist/runtime/api/settings-service.js +49 -1
- package/dist/runtime/api/types/index.d.ts +8 -1
- package/dist/runtime/api/types/settings.d.ts +15 -2
- package/dist/runtime/api/workflows/vibing-orchestrator.js +32 -1
- package/dist/runtime/web/.next/BUILD_ID +1 -1
- package/dist/runtime/web/.next/app-build-manifest.json +18 -11
- package/dist/runtime/web/.next/app-path-routes-manifest.json +2 -1
- package/dist/runtime/web/.next/build-manifest.json +2 -2
- package/dist/runtime/web/.next/prerender-manifest.json +10 -10
- package/dist/runtime/web/.next/routes-manifest.json +8 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js +1 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route.js.nft.json +1 -0
- package/dist/runtime/web/.next/server/app/.vibeman/assets/images/[...path]/route_client-reference-manifest.js +1 -0
- package/dist/runtime/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/_not-found.html +2 -2
- package/dist/runtime/web/.next/server/app/_not-found.rsc +1 -1
- package/dist/runtime/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/images/[...path]/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/api/upload/route.js +1 -1
- package/dist/runtime/web/.next/server/app/api/upload/route_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app/index.html +2 -2
- package/dist/runtime/web/.next/server/app/index.rsc +2 -2
- package/dist/runtime/web/.next/server/app/page.js +21 -21
- package/dist/runtime/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/runtime/web/.next/server/app-paths-manifest.json +2 -1
- package/dist/runtime/web/.next/server/pages/404.html +2 -2
- package/dist/runtime/web/.next/server/pages/500.html +1 -1
- package/dist/runtime/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/runtime/web/.next/static/5_15u1WQCxN1_eHZpldCv/_buildManifest.js +1 -0
- package/dist/runtime/web/.next/static/chunks/{277-0142a939f08738c3.js → 823-6f371a6e829adbba.js} +1 -1
- package/dist/runtime/web/.next/static/chunks/app/.vibeman/assets/images/[...path]/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-751c9265a65409e5.js +1 -0
- package/dist/runtime/web/.next/static/chunks/app/page-9fe7d75095b4ccec.js +1 -0
- package/package.json +1 -1
- package/dist/runtime/api/lib/image-paste-drop-extension.d.ts +0 -26
- package/dist/runtime/api/lib/image-paste-drop-extension.js +0 -125
- package/dist/runtime/api/lib/markdown-utils.d.ts +0 -8
- package/dist/runtime/api/lib/markdown-utils.js +0 -282
- package/dist/runtime/api/lib/markdown-utils.test.js +0 -348
- package/dist/runtime/api/lib/tiptap-utils.clamp-selection.test.d.ts +0 -1
- package/dist/runtime/api/lib/tiptap-utils.clamp-selection.test.js +0 -27
- package/dist/runtime/api/lib/tiptap-utils.d.ts +0 -130
- package/dist/runtime/api/lib/tiptap-utils.js +0 -327
- package/dist/runtime/web/.next/static/chunks/app/api/health/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/images/[...path]/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/api/upload/route-105a61ae865ba536.js +0 -1
- package/dist/runtime/web/.next/static/chunks/app/page-8c3ba579efc6f918.js +0 -1
- package/dist/runtime/web/.next/static/mRpNgPfbYR_0wrODzlg_4/_buildManifest.js +0 -1
- /package/dist/runtime/api/{lib/markdown-utils.test.d.ts → agent/routing-policy.test.d.ts} +0 -0
- /package/dist/runtime/web/.next/static/{mRpNgPfbYR_0wrODzlg_4 → 5_15u1WQCxN1_eHZpldCv}/_ssgManifest.js +0 -0
|
@@ -120,14 +120,26 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
120
120
|
}>;
|
|
121
121
|
getRoutingPolicy: import("@trpc/server").TRPCQueryProcedure<{
|
|
122
122
|
input: void;
|
|
123
|
-
output:
|
|
123
|
+
output: {
|
|
124
|
+
defaultProvider: string;
|
|
125
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
|
|
126
|
+
provider: string;
|
|
127
|
+
options?: {
|
|
128
|
+
temperature?: number | undefined;
|
|
129
|
+
maxTokens?: number | undefined;
|
|
130
|
+
tools?: string[] | undefined;
|
|
131
|
+
} | undefined;
|
|
132
|
+
model?: string | undefined;
|
|
133
|
+
fallback?: string[] | undefined;
|
|
134
|
+
}>> | undefined;
|
|
135
|
+
};
|
|
124
136
|
meta: object;
|
|
125
137
|
}>;
|
|
126
138
|
updateRoutingPolicy: import("@trpc/server").TRPCMutationProcedure<{
|
|
127
139
|
input: {
|
|
128
140
|
policy: {
|
|
129
141
|
defaultProvider?: string | undefined;
|
|
130
|
-
operations?: Partial<Record<"execute_task" | "improve_task" | "ai_merge" | "ai_codereview", {
|
|
142
|
+
operations?: Partial<Record<"execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview", {
|
|
131
143
|
provider: string;
|
|
132
144
|
options?: {
|
|
133
145
|
temperature?: number | undefined;
|
|
@@ -157,7 +169,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
157
169
|
}>;
|
|
158
170
|
setOperationConfig: import("@trpc/server").TRPCMutationProcedure<{
|
|
159
171
|
input: {
|
|
160
|
-
operation: "execute_task" | "improve_task" | "ai_merge" | "ai_codereview";
|
|
172
|
+
operation: "execute_task" | "quality_checks" | "improve_task" | "ai_merge" | "ai_codereview";
|
|
161
173
|
config: {
|
|
162
174
|
provider: string;
|
|
163
175
|
options?: {
|
|
@@ -350,6 +362,10 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
350
362
|
provider?: string | undefined;
|
|
351
363
|
model?: string | undefined;
|
|
352
364
|
} | undefined;
|
|
365
|
+
quality_checks?: {
|
|
366
|
+
provider?: string | undefined;
|
|
367
|
+
model?: string | undefined;
|
|
368
|
+
} | undefined;
|
|
353
369
|
improve_task?: {
|
|
354
370
|
provider?: string | undefined;
|
|
355
371
|
model?: string | undefined;
|
|
@@ -386,6 +402,10 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
386
402
|
provider?: string | undefined;
|
|
387
403
|
model?: string | undefined;
|
|
388
404
|
} | undefined;
|
|
405
|
+
quality_checks?: {
|
|
406
|
+
provider?: string | undefined;
|
|
407
|
+
model?: string | undefined;
|
|
408
|
+
} | undefined;
|
|
389
409
|
improve_task?: {
|
|
390
410
|
provider?: string | undefined;
|
|
391
411
|
model?: string | undefined;
|
|
@@ -750,7 +770,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
750
770
|
input: {
|
|
751
771
|
title: string;
|
|
752
772
|
type: "feature" | "bug" | "chore" | "refactor" | "test" | "doc";
|
|
753
|
-
priority: "
|
|
773
|
+
priority: "low" | "medium" | "high";
|
|
754
774
|
content: string;
|
|
755
775
|
taskId: string;
|
|
756
776
|
executionId?: string | undefined;
|
|
@@ -782,7 +802,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
782
802
|
status?: "review" | "in-progress" | "backlog" | "done" | undefined;
|
|
783
803
|
type?: "feature" | "bug" | "chore" | "refactor" | "test" | "doc" | undefined;
|
|
784
804
|
tags?: string[] | undefined;
|
|
785
|
-
priority?: "
|
|
805
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
786
806
|
search?: string | undefined;
|
|
787
807
|
includeDeleted?: boolean | undefined;
|
|
788
808
|
onlyDeleted?: boolean | undefined;
|
|
@@ -807,7 +827,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
807
827
|
tags?: string[] | undefined;
|
|
808
828
|
due_date?: string | undefined;
|
|
809
829
|
assignee?: string[] | undefined;
|
|
810
|
-
priority?: "
|
|
830
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
811
831
|
comments?: string[] | undefined;
|
|
812
832
|
};
|
|
813
833
|
output: import("./types/index.js").Task;
|
|
@@ -822,7 +842,7 @@ export declare function createRouter(taskService: TaskService, gitService: GitSe
|
|
|
822
842
|
tags?: string[] | undefined;
|
|
823
843
|
due_date?: string | undefined;
|
|
824
844
|
assignee?: string[] | undefined;
|
|
825
|
-
priority?: "
|
|
845
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
826
846
|
comments?: string[] | undefined;
|
|
827
847
|
content?: string | undefined;
|
|
828
848
|
deleted_at?: string | undefined;
|
|
@@ -16,7 +16,42 @@ const CLAUDE_ALLOWED_MODELS = [
|
|
|
16
16
|
'claude-opus-4-1-20250805',
|
|
17
17
|
'claude-3-5-haiku-20241022',
|
|
18
18
|
];
|
|
19
|
-
const
|
|
19
|
+
const CODEX_ALLOWED_MODELS = [
|
|
20
|
+
'gpt-5',
|
|
21
|
+
'gpt-5-low',
|
|
22
|
+
'gpt-5-medium',
|
|
23
|
+
'gpt-5-high',
|
|
24
|
+
'gpt-5-codex',
|
|
25
|
+
'gpt-5-codex-low',
|
|
26
|
+
'gpt-5-codex-medium',
|
|
27
|
+
'gpt-5-codex-high',
|
|
28
|
+
];
|
|
29
|
+
const MODEL_ENUM = [...CLAUDE_ALLOWED_MODELS, ...CODEX_ALLOWED_MODELS];
|
|
30
|
+
const ROUTABLE_OPERATIONS = [
|
|
31
|
+
'execute_task',
|
|
32
|
+
'quality_checks',
|
|
33
|
+
'ai_codereview',
|
|
34
|
+
'ai_merge',
|
|
35
|
+
'improve_task',
|
|
36
|
+
];
|
|
37
|
+
const RoutingOperationSchema = z.object({
|
|
38
|
+
provider: z.string(),
|
|
39
|
+
model: z.string().optional(),
|
|
40
|
+
options: z
|
|
41
|
+
.object({
|
|
42
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
43
|
+
maxTokens: z.number().positive().optional(),
|
|
44
|
+
tools: z.array(z.string()).optional(),
|
|
45
|
+
})
|
|
46
|
+
.optional(),
|
|
47
|
+
fallback: z.array(z.string()).optional(),
|
|
48
|
+
});
|
|
49
|
+
const RoutingPolicySettingsSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
defaultProvider: z.enum(['claude-code', 'codex']).optional(),
|
|
52
|
+
operations: z.record(z.enum(ROUTABLE_OPERATIONS), RoutingOperationSchema).optional(),
|
|
53
|
+
})
|
|
54
|
+
.optional();
|
|
20
55
|
const VibemanSettingsSchema = z.object({
|
|
21
56
|
agents: z.object({
|
|
22
57
|
defaultProvider: z.enum(['claude-code', 'codex']),
|
|
@@ -43,6 +78,7 @@ const VibemanSettingsSchema = z.object({
|
|
|
43
78
|
codex: z.object({ binPath: z.string().min(1).optional() }).optional(),
|
|
44
79
|
})
|
|
45
80
|
.optional(),
|
|
81
|
+
routingPolicy: RoutingPolicySettingsSchema,
|
|
46
82
|
}),
|
|
47
83
|
defaultWorkflow: z.object({
|
|
48
84
|
autoQualityChecks: z.boolean(),
|
|
@@ -116,6 +152,10 @@ const DEFAULT_SETTINGS = {
|
|
|
116
152
|
taskPrompt: 'Please implement the following task with attention to quality and testing.',
|
|
117
153
|
},
|
|
118
154
|
providers: {},
|
|
155
|
+
routingPolicy: {
|
|
156
|
+
defaultProvider: 'claude-code',
|
|
157
|
+
operations: {},
|
|
158
|
+
},
|
|
119
159
|
},
|
|
120
160
|
defaultWorkflow: {
|
|
121
161
|
autoQualityChecks: true,
|
|
@@ -558,6 +598,14 @@ export class SettingsService extends EventEmitter {
|
|
|
558
598
|
...DEFAULT_SETTINGS.agents.defaultPrompts,
|
|
559
599
|
...settings.agents?.defaultPrompts,
|
|
560
600
|
},
|
|
601
|
+
routingPolicy: {
|
|
602
|
+
...DEFAULT_SETTINGS.agents.routingPolicy,
|
|
603
|
+
...settings.agents?.routingPolicy,
|
|
604
|
+
operations: {
|
|
605
|
+
...(DEFAULT_SETTINGS.agents.routingPolicy?.operations ?? {}),
|
|
606
|
+
...(settings.agents?.routingPolicy?.operations ?? {}),
|
|
607
|
+
},
|
|
608
|
+
},
|
|
561
609
|
},
|
|
562
610
|
defaultWorkflow: {
|
|
563
611
|
...DEFAULT_SETTINGS.defaultWorkflow,
|
|
@@ -109,6 +109,13 @@ export interface VibingExecution {
|
|
|
109
109
|
previousExecutionId?: string;
|
|
110
110
|
}>;
|
|
111
111
|
qualityResults?: QualityResults;
|
|
112
|
+
aiReviewResult?: {
|
|
113
|
+
executionId: string;
|
|
114
|
+
reviewSummary: string;
|
|
115
|
+
recommendations: string[];
|
|
116
|
+
qualityScore: number;
|
|
117
|
+
timestamp?: string;
|
|
118
|
+
};
|
|
112
119
|
links?: {
|
|
113
120
|
prUrl?: string;
|
|
114
121
|
prNumber?: number;
|
|
@@ -164,7 +171,7 @@ export interface VibingConfig {
|
|
|
164
171
|
timeout?: number;
|
|
165
172
|
enabled?: boolean;
|
|
166
173
|
}>;
|
|
167
|
-
aiRoutingOverrides?: Partial<Record<'execute_task' | '
|
|
174
|
+
aiRoutingOverrides?: Partial<Record<'execute_task' | 'quality_checks' | 'ai_codereview' | 'ai_merge' | 'improve_task', {
|
|
168
175
|
provider?: string;
|
|
169
176
|
model?: string;
|
|
170
177
|
}>>;
|
|
@@ -3,12 +3,12 @@ export interface VibemanSettings {
|
|
|
3
3
|
defaultProvider: 'claude-code' | 'codex';
|
|
4
4
|
codingAgent: {
|
|
5
5
|
provider: 'claude-code' | 'codex';
|
|
6
|
-
model: 'claude-sonnet-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-3-5-haiku-20241022' | 'gpt-5';
|
|
6
|
+
model: 'claude-sonnet-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-3-5-haiku-20241022' | 'gpt-5' | 'gpt-5-low' | 'gpt-5-medium' | 'gpt-5-high' | 'gpt-5-codex' | 'gpt-5-codex-low' | 'gpt-5-codex-medium' | 'gpt-5-codex-high';
|
|
7
7
|
maxTokens?: number;
|
|
8
8
|
};
|
|
9
9
|
judgeAgent: {
|
|
10
10
|
provider: 'claude-code' | 'codex';
|
|
11
|
-
model: 'claude-sonnet-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-3-5-haiku-20241022' | 'gpt-5';
|
|
11
|
+
model: 'claude-sonnet-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-3-5-haiku-20241022' | 'gpt-5' | 'gpt-5-low' | 'gpt-5-medium' | 'gpt-5-high' | 'gpt-5-codex' | 'gpt-5-codex-low' | 'gpt-5-codex-medium' | 'gpt-5-codex-high';
|
|
12
12
|
maxTokens?: number;
|
|
13
13
|
reviewThresholdScore: number;
|
|
14
14
|
};
|
|
@@ -24,6 +24,19 @@ export interface VibemanSettings {
|
|
|
24
24
|
binPath?: string;
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
|
+
routingPolicy?: {
|
|
28
|
+
defaultProvider?: 'claude-code' | 'codex';
|
|
29
|
+
operations?: Partial<Record<'execute_task' | 'quality_checks' | 'ai_codereview' | 'ai_merge' | 'improve_task', {
|
|
30
|
+
provider: string;
|
|
31
|
+
model?: string;
|
|
32
|
+
options?: {
|
|
33
|
+
temperature?: number;
|
|
34
|
+
maxTokens?: number;
|
|
35
|
+
tools?: string[];
|
|
36
|
+
};
|
|
37
|
+
fallback?: string[];
|
|
38
|
+
}>>;
|
|
39
|
+
};
|
|
27
40
|
};
|
|
28
41
|
defaultWorkflow: {
|
|
29
42
|
autoQualityChecks: boolean;
|
|
@@ -323,10 +323,12 @@ export class VibingOrchestrator extends EventEmitter {
|
|
|
323
323
|
if (wfId) {
|
|
324
324
|
const wf = this.workflows.get(wfId);
|
|
325
325
|
if (wf) {
|
|
326
|
+
const timestamp = new Date().toISOString();
|
|
326
327
|
wf.metadata = {
|
|
327
328
|
...wf.metadata,
|
|
328
|
-
aiReviewResult: { ...res, timestamp
|
|
329
|
+
aiReviewResult: { ...res, timestamp },
|
|
329
330
|
};
|
|
331
|
+
wf.aiReviewResult = { ...res, timestamp };
|
|
330
332
|
// Record execution ID under ai-reviewing for UI/observability
|
|
331
333
|
if (res?.executionId) {
|
|
332
334
|
wf.executionIds = wf.executionIds || {};
|
|
@@ -737,6 +739,14 @@ export class VibingOrchestrator extends EventEmitter {
|
|
|
737
739
|
(workflow.failureContext?.atPhase
|
|
738
740
|
? `Retry after ${workflow.failureContext.atPhase} failure`
|
|
739
741
|
: undefined);
|
|
742
|
+
const aiReviewSource = workflow.aiReviewResult || workflow.metadata?.aiReviewResult;
|
|
743
|
+
const aiReviewContext = aiReviewSource
|
|
744
|
+
? {
|
|
745
|
+
summary: aiReviewSource.reviewSummary,
|
|
746
|
+
recommendations: aiReviewSource.recommendations,
|
|
747
|
+
score: aiReviewSource.qualityScore,
|
|
748
|
+
}
|
|
749
|
+
: undefined;
|
|
740
750
|
// Prepare to capture executionId from event, then start execution
|
|
741
751
|
const createdPromise = this.waitForExecutionCreated(workflow.taskId, workflowId, 20000);
|
|
742
752
|
// Fire-and-forget; attach catch to prevent unhandled rejection from crashing process
|
|
@@ -748,6 +758,7 @@ export class VibingOrchestrator extends EventEmitter {
|
|
|
748
758
|
previousExecutionId: previousExecId,
|
|
749
759
|
failurePhase: workflow.failureContext?.atPhase,
|
|
750
760
|
qualityResults: workflow.qualityResults,
|
|
761
|
+
aiReview: aiReviewContext,
|
|
751
762
|
attempt,
|
|
752
763
|
}
|
|
753
764
|
: undefined,
|
|
@@ -945,6 +956,7 @@ export class VibingOrchestrator extends EventEmitter {
|
|
|
945
956
|
...workflow.metadata,
|
|
946
957
|
aiReviewResult: { ...review, timestamp },
|
|
947
958
|
};
|
|
959
|
+
workflow.aiReviewResult = { ...review, timestamp };
|
|
948
960
|
// Track execution ID under ai-reviewing for observability
|
|
949
961
|
const executionId = providedExecutionId ?? review?.executionId;
|
|
950
962
|
if (executionId) {
|
|
@@ -1088,6 +1100,17 @@ export class VibingOrchestrator extends EventEmitter {
|
|
|
1088
1100
|
workflowId,
|
|
1089
1101
|
workingDirectory,
|
|
1090
1102
|
});
|
|
1103
|
+
const qualityOverride = workflow.metadata?.aiRoutingOverrides?.quality_checks;
|
|
1104
|
+
try {
|
|
1105
|
+
const resolved = await this.agentService.previewProviderForOperation('quality_checks', qualityOverride);
|
|
1106
|
+
const providerLabel = resolved.model
|
|
1107
|
+
? `${resolved.provider} (model: ${resolved.model})`
|
|
1108
|
+
: resolved.provider;
|
|
1109
|
+
await this.agentService.logGenericExecution(execId, `[validation] Using provider: ${providerLabel}`);
|
|
1110
|
+
}
|
|
1111
|
+
catch (err) {
|
|
1112
|
+
log.warn('Failed to resolve quality-check provider', err, 'vibing-orchestrator');
|
|
1113
|
+
}
|
|
1091
1114
|
workflow.executionIds = workflow.executionIds || {};
|
|
1092
1115
|
const valList = workflow.executionIds['validating'] || [];
|
|
1093
1116
|
workflow.executionIds['validating'] = [...valList, execId];
|
|
@@ -1831,6 +1854,14 @@ function serializeVibe(workflow) {
|
|
|
1831
1854
|
timestamp: new Date(workflow.qualityResults.timestamp).toISOString(),
|
|
1832
1855
|
}
|
|
1833
1856
|
: undefined,
|
|
1857
|
+
aiReviewResult: workflow.aiReviewResult
|
|
1858
|
+
? {
|
|
1859
|
+
...workflow.aiReviewResult,
|
|
1860
|
+
timestamp: workflow.aiReviewResult.timestamp
|
|
1861
|
+
? new Date(workflow.aiReviewResult.timestamp).toISOString()
|
|
1862
|
+
: undefined,
|
|
1863
|
+
}
|
|
1864
|
+
: undefined,
|
|
1834
1865
|
};
|
|
1835
1866
|
}
|
|
1836
1867
|
async function getDbStats(db) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5_15u1WQCxN1_eHZpldCv
|
|
@@ -7,19 +7,33 @@
|
|
|
7
7
|
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
8
8
|
"static/chunks/app/_not-found/page-1cb74d1cba27d0ab.js"
|
|
9
9
|
],
|
|
10
|
+
"/.vibeman/assets/images/[...path]/route": [
|
|
11
|
+
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
12
|
+
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
13
|
+
"static/chunks/18-15c10d3288afef2e.js",
|
|
14
|
+
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
15
|
+
"static/chunks/app/.vibeman/assets/images/[...path]/route-751c9265a65409e5.js"
|
|
16
|
+
],
|
|
10
17
|
"/api/health/route": [
|
|
11
18
|
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
12
19
|
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
13
20
|
"static/chunks/18-15c10d3288afef2e.js",
|
|
14
21
|
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
15
|
-
"static/chunks/app/api/health/route-
|
|
22
|
+
"static/chunks/app/api/health/route-751c9265a65409e5.js"
|
|
16
23
|
],
|
|
17
24
|
"/api/images/[...path]/route": [
|
|
18
25
|
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
19
26
|
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
20
27
|
"static/chunks/18-15c10d3288afef2e.js",
|
|
21
28
|
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
22
|
-
"static/chunks/app/api/images/[...path]/route-
|
|
29
|
+
"static/chunks/app/api/images/[...path]/route-751c9265a65409e5.js"
|
|
30
|
+
],
|
|
31
|
+
"/api/upload/route": [
|
|
32
|
+
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
33
|
+
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
34
|
+
"static/chunks/18-15c10d3288afef2e.js",
|
|
35
|
+
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
36
|
+
"static/chunks/app/api/upload/route-751c9265a65409e5.js"
|
|
23
37
|
],
|
|
24
38
|
"/layout": [
|
|
25
39
|
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
@@ -34,13 +48,6 @@
|
|
|
34
48
|
"static/chunks/765-e838910065b50c3d.js",
|
|
35
49
|
"static/chunks/app/layout-8435322f09fd0975.js"
|
|
36
50
|
],
|
|
37
|
-
"/api/upload/route": [
|
|
38
|
-
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
39
|
-
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
40
|
-
"static/chunks/18-15c10d3288afef2e.js",
|
|
41
|
-
"static/chunks/main-app-c0b0f5ba4f7f9d75.js",
|
|
42
|
-
"static/chunks/app/api/upload/route-105a61ae865ba536.js"
|
|
43
|
-
],
|
|
44
51
|
"/page": [
|
|
45
52
|
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
46
53
|
"static/chunks/87c73c54-09e1ba5c70e60a51.js",
|
|
@@ -52,8 +59,8 @@
|
|
|
52
59
|
"static/chunks/22747d63-ad5da0c19f4cfe41.js",
|
|
53
60
|
"static/chunks/8bb4d8db-3e2aa02b0a2384b9.js",
|
|
54
61
|
"static/chunks/575-e2478287c27da87b.js",
|
|
55
|
-
"static/chunks/
|
|
56
|
-
"static/chunks/app/page-
|
|
62
|
+
"static/chunks/823-6f371a6e829adbba.js",
|
|
63
|
+
"static/chunks/app/page-9fe7d75095b4ccec.js"
|
|
57
64
|
]
|
|
58
65
|
}
|
|
59
66
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
+
"/.vibeman/assets/images/[...path]/route": "/.vibeman/assets/images/[...path]",
|
|
2
3
|
"/api/health/route": "/api/health",
|
|
3
4
|
"/api/images/[...path]/route": "/api/images/[...path]",
|
|
4
|
-
"/_not-found/page": "/_not-found",
|
|
5
5
|
"/api/upload/route": "/api/upload",
|
|
6
|
+
"/_not-found/page": "/_not-found",
|
|
6
7
|
"/page": "/"
|
|
7
8
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/5_15u1WQCxN1_eHZpldCv/_buildManifest.js",
|
|
9
|
+
"static/5_15u1WQCxN1_eHZpldCv/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [
|
|
12
12
|
"static/chunks/webpack-c8de37305b4635cf.js",
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 4,
|
|
3
3
|
"routes": {
|
|
4
|
-
"/
|
|
5
|
-
"initialStatus": 404,
|
|
4
|
+
"/": {
|
|
6
5
|
"experimentalBypassFor": [
|
|
7
6
|
{
|
|
8
7
|
"type": "header",
|
|
@@ -15,8 +14,8 @@
|
|
|
15
14
|
}
|
|
16
15
|
],
|
|
17
16
|
"initialRevalidateSeconds": false,
|
|
18
|
-
"srcRoute": "/
|
|
19
|
-
"dataRoute": "/
|
|
17
|
+
"srcRoute": "/",
|
|
18
|
+
"dataRoute": "/index.rsc",
|
|
20
19
|
"allowHeader": [
|
|
21
20
|
"host",
|
|
22
21
|
"x-matched-path",
|
|
@@ -26,7 +25,8 @@
|
|
|
26
25
|
"x-next-revalidate-tag-token"
|
|
27
26
|
]
|
|
28
27
|
},
|
|
29
|
-
"/": {
|
|
28
|
+
"/_not-found": {
|
|
29
|
+
"initialStatus": 404,
|
|
30
30
|
"experimentalBypassFor": [
|
|
31
31
|
{
|
|
32
32
|
"type": "header",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
41
|
"initialRevalidateSeconds": false,
|
|
42
|
-
"srcRoute": "/",
|
|
43
|
-
"dataRoute": "/
|
|
42
|
+
"srcRoute": "/_not-found",
|
|
43
|
+
"dataRoute": "/_not-found.rsc",
|
|
44
44
|
"allowHeader": [
|
|
45
45
|
"host",
|
|
46
46
|
"x-matched-path",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"dynamicRoutes": {},
|
|
55
55
|
"notFoundRoutes": [],
|
|
56
56
|
"preview": {
|
|
57
|
-
"previewModeId": "
|
|
58
|
-
"previewModeSigningKey": "
|
|
59
|
-
"previewModeEncryptionKey": "
|
|
57
|
+
"previewModeId": "6acd1c87e3fa37988f1d8d27a0715b12",
|
|
58
|
+
"previewModeSigningKey": "37a84e68e50eed8a1f5d5a84a7e75d77f54e557e249e5e9f642c9b2a9f493a23",
|
|
59
|
+
"previewModeEncryptionKey": "3cd5a924f19c2a5ae113f75d937257ab4fcabe25e19d35dbfba3aa31e304f371"
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
"fallback": []
|
|
20
20
|
},
|
|
21
21
|
"dynamicRoutes": [
|
|
22
|
+
{
|
|
23
|
+
"page": "/.vibeman/assets/images/[...path]",
|
|
24
|
+
"regex": "^/\\.vibeman/assets/images/(.+?)(?:/)?$",
|
|
25
|
+
"routeKeys": {
|
|
26
|
+
"nxtPpath": "nxtPpath"
|
|
27
|
+
},
|
|
28
|
+
"namedRegex": "^/\\.vibeman/assets/images/(?<nxtPpath>.+?)(?:/)?$"
|
|
29
|
+
},
|
|
22
30
|
{
|
|
23
31
|
"page": "/api/images/[...path]",
|
|
24
32
|
"regex": "^/api/images/(.+?)(?:/)?$",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{var a={};a.id=744,a.ids=[744],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32511:(a,b,c)=>{"use strict";c.d(b,{C0:()=>i,Ui:()=>j,bx:()=>k,k3:()=>h});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f);function h(){return g().join(g().join(g().join(function(){let a=process.env.VIBEMAN_PROJECT_ROOT?.trim();if(a){if(g().isAbsolute(a))return g().normalize(a);let b=[process.env.VIBEMAN_PROJECT_ROOT_BASE,process.env.INIT_CWD,process.env.PWD,process.cwd()].filter(a=>!!a?.trim()),c=null;for(let d of b){let b=g().resolve(d,a);if(c||(c=b),e().existsSync(b))return b}return c??g().resolve(a)}let b=process.cwd(),{root:c}=g().parse(b);for(;;){if(e().existsSync(g().join(b,".git")))return b;if(b===c)break;b=g().dirname(b)}for(b=process.cwd();;){if(e().existsSync(g().join(b,".vibeman")))return b;if(b===c)break;b=g().dirname(b)}return process.cwd()}(),".vibeman"),"assets"),"images")}async function i(){let a=h();return await d.promises.mkdir(a,{recursive:!0}),a}function j(a){return[".vibeman/assets/images",l(a)].join("/")}function k(a){return["/.vibeman/assets/images",l(a)].join("/")}function l(a){let b=a.replace(/\\\\/g,"/"),c=g().posix.normalize(b);if(c.startsWith(".."))throw Error("Invalid image filename");return c.replace(/^\//,"")}},33873:a=>{"use strict";a.exports=require("path")},40306:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d={};c.r(d),c.d(d,{GET:()=>u.GET});var e=c(26421),f=c(97714),g=c(85681),h=c(22369),i=c(37587),j=c(261),k=c(46537),l=c(3463),m=c(1889),n=c(85250),o=c(23620),p=c(29790),q=c(67876),r=c(57749),s=c(86439),t=c(40139),u=c(91827);let v=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/.vibeman/assets/images/[...path]/route",pathname:"/.vibeman/assets/images/[...path]",filename:"route",bundlePath:"app/.vibeman/assets/images/[...path]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/harryyu/BDev/vibeman/apps/web/src/app/.vibeman/assets/images/[...path]/route.ts",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,g.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){var d;let e="/.vibeman/assets/images/[...path]/route";"/index"===e&&(e="/");let g=await v.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:w,nextConfig:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(z.dynamicRoutes[E]||z.routes[D]);if(F&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||v.isDev||y||(G="/index"===(G=D)?"/":G);let H=!0===v.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:w,prerenderManifest:z,renderOpts:{experimental:{cacheComponents:!!x.experimental.cacheComponents,authInterrupts:!!x.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=x.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>v.onRequestError(a,b,d,A)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>v.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},A),b}},l=await v.handleResponse({req:a,nextConfig:x,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(L||b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},80408:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87032:()=>{},91827:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>j});var d=c(53444),e=c(29021),f=c(33873),g=c.n(f),h=c(32511);let i={".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml"};async function j(a,{params:b}){try{let a=b?.path??[];if(!Array.isArray(a)||0===a.length)return new d.NextResponse("Not Found",{status:404});let c=function(a){let b=a.join("/"),c=g().posix.normalize(b);return c.startsWith("..")?null:c}(a);if(!c)return new d.NextResponse("Forbidden",{status:403});let f=(0,h.k3)(),j=g().join(f,c),k=g().normalize(j),l=g().normalize(f+g().sep);if(!k.startsWith(l))return new d.NextResponse("Forbidden",{status:403});try{await e.promises.access(j)}catch{return new d.NextResponse("Not Found",{status:404})}let m=await e.promises.readFile(j),n=i[g().extname(j).toLowerCase()]??"application/octet-stream";return new d.NextResponse(m,{headers:{"Content-Type":n,"Cache-Control":"public, max-age=31536000, immutable"}})}catch(a){return console.error("Error serving image:",a),new d.NextResponse("Internal Server Error",{status:500})}}}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[635,825],()=>b(b.s=40306));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"files":["../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/635.js","../../../../../chunks/825.js","../../../../../webpack-runtime.js","route_client-reference-manifest.js"]}
|