devchain-cli 0.2.2 → 0.3.1
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/README.md +2 -0
- package/dist/drizzle/0018_whole_zodiak.sql +43 -0
- package/dist/drizzle/0019_flat_avengers.sql +3 -0
- package/dist/drizzle/0020_statuses_mcp_hidden.sql +1 -0
- package/dist/drizzle/meta/0018_snapshot.json +2920 -0
- package/dist/drizzle/meta/0019_snapshot.json +2943 -0
- package/dist/drizzle/meta/0020_snapshot.json +2951 -0
- package/dist/drizzle/meta/_journal.json +21 -0
- package/dist/server/app.module.js +11 -1
- package/dist/server/app.module.js.map +1 -1
- package/dist/server/common/config/env.config.d.ts +1 -0
- package/dist/server/common/config/env.config.js +4 -0
- package/dist/server/common/config/env.config.js.map +1 -1
- package/dist/server/common/filters/http-exception.filter.js +24 -1
- package/dist/server/common/filters/http-exception.filter.js.map +1 -1
- package/dist/server/common/logging/logger.js +4 -3
- package/dist/server/common/logging/logger.js.map +1 -1
- package/dist/server/main.js +0 -3
- package/dist/server/main.js.map +1 -1
- package/dist/server/modules/agents/agents.module.js +2 -1
- package/dist/server/modules/agents/agents.module.js.map +1 -1
- package/dist/server/modules/agents/controllers/agents.controller.d.ts +17 -2
- package/dist/server/modules/agents/controllers/agents.controller.js +84 -3
- package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
- package/dist/server/modules/chat/dtos/chat.dto.d.ts +18 -18
- package/dist/server/modules/chat/services/invite-template.util.js +1 -1
- package/dist/server/modules/chat/services/invite-template.util.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +40 -0
- package/dist/server/modules/events/catalog/index.js +2 -0
- package/dist/server/modules/events/catalog/index.js.map +1 -1
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +45 -0
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.js +22 -0
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.js.map +1 -0
- package/dist/server/modules/events/subscribers/chat-message-delivery.subscriber.d.ts +1 -0
- package/dist/server/modules/events/subscribers/chat-message-delivery.subscriber.js +30 -12
- package/dist/server/modules/events/subscribers/chat-message-delivery.subscriber.js.map +1 -1
- package/dist/server/modules/mcp/constants.js +5 -1
- package/dist/server/modules/mcp/constants.js.map +1 -1
- package/dist/server/modules/mcp/controllers/mcp-http.controller.js +78 -77
- package/dist/server/modules/mcp/controllers/mcp-http.controller.js.map +1 -1
- package/dist/server/modules/mcp/controllers/mcp-sdk.controller.js +78 -77
- package/dist/server/modules/mcp/controllers/mcp-sdk.controller.js.map +1 -1
- package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +125 -97
- package/dist/server/modules/mcp/dtos/mcp.dto.js +23 -26
- package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
- package/dist/server/modules/mcp/services/instructions-resolver.d.ts +3 -0
- package/dist/server/modules/mcp/services/instructions-resolver.js +83 -2
- package/dist/server/modules/mcp/services/instructions-resolver.js.map +1 -1
- package/dist/server/modules/mcp/services/mcp.service.d.ts +3 -2
- package/dist/server/modules/mcp/services/mcp.service.js +549 -263
- package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +41 -0
- package/dist/server/modules/projects/projects.module.js +2 -1
- package/dist/server/modules/projects/projects.module.js.map +1 -1
- package/dist/server/modules/projects/services/projects.service.d.ts +46 -1
- package/dist/server/modules/projects/services/projects.service.js +243 -18
- package/dist/server/modules/projects/services/projects.service.js.map +1 -1
- package/dist/server/modules/prompts/controllers/prompts.controller.d.ts +1 -1
- package/dist/server/modules/prompts/controllers/prompts.controller.js +26 -4
- package/dist/server/modules/prompts/controllers/prompts.controller.js.map +1 -1
- package/dist/server/modules/sessions/utils/template-renderer.js +1 -0
- package/dist/server/modules/sessions/utils/template-renderer.js.map +1 -1
- package/dist/server/modules/statuses/controllers/statuses.controller.js +2 -0
- package/dist/server/modules/statuses/controllers/statuses.controller.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +613 -0
- package/dist/server/modules/storage/db/schema.js +50 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +40 -2
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +18 -3
- package/dist/server/modules/storage/local/local-storage.service.js +407 -11
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +59 -1
- package/dist/server/modules/subscribers/actions/action.interface.d.ts +67 -0
- package/dist/server/modules/subscribers/actions/action.interface.js +3 -0
- package/dist/server/modules/subscribers/actions/action.interface.js.map +1 -0
- package/dist/server/modules/subscribers/actions/actions.registry.d.ts +7 -0
- package/dist/server/modules/subscribers/actions/actions.registry.js +37 -0
- package/dist/server/modules/subscribers/actions/actions.registry.js.map +1 -0
- package/dist/server/modules/subscribers/actions/restart-agent.action.d.ts +8 -0
- package/dist/server/modules/subscribers/actions/restart-agent.action.js +119 -0
- package/dist/server/modules/subscribers/actions/restart-agent.action.js.map +1 -0
- package/dist/server/modules/subscribers/actions/send-message.action.d.ts +2 -0
- package/dist/server/modules/subscribers/actions/send-message.action.js +83 -0
- package/dist/server/modules/subscribers/actions/send-message.action.js.map +1 -0
- package/dist/server/modules/subscribers/controllers/actions.controller.d.ts +6 -0
- package/dist/server/modules/subscribers/controllers/actions.controller.js +51 -0
- package/dist/server/modules/subscribers/controllers/actions.controller.js.map +1 -0
- package/dist/server/modules/subscribers/controllers/subscribers.controller.d.ts +17 -0
- package/dist/server/modules/subscribers/controllers/subscribers.controller.js +178 -0
- package/dist/server/modules/subscribers/controllers/subscribers.controller.js.map +1 -0
- package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +251 -0
- package/dist/server/modules/subscribers/dtos/subscriber.dto.js +68 -0
- package/dist/server/modules/subscribers/dtos/subscriber.dto.js.map +1 -0
- package/dist/server/modules/subscribers/events/event-fields-catalog.d.ts +19 -0
- package/dist/server/modules/subscribers/events/event-fields-catalog.js +98 -0
- package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -0
- package/dist/server/modules/subscribers/services/automation-scheduler.service.d.ts +49 -0
- package/dist/server/modules/subscribers/services/automation-scheduler.service.js +300 -0
- package/dist/server/modules/subscribers/services/automation-scheduler.service.js.map +1 -0
- package/dist/server/modules/subscribers/services/subscriber-executor.service.d.ts +77 -0
- package/dist/server/modules/subscribers/services/subscriber-executor.service.js +576 -0
- package/dist/server/modules/subscribers/services/subscriber-executor.service.js.map +1 -0
- package/dist/server/modules/subscribers/services/subscribers.service.d.ts +14 -0
- package/dist/server/modules/subscribers/services/subscribers.service.js +70 -0
- package/dist/server/modules/subscribers/services/subscribers.service.js.map +1 -0
- package/dist/server/modules/subscribers/subscribers.module.d.ts +2 -0
- package/dist/server/modules/subscribers/subscribers.module.js +36 -0
- package/dist/server/modules/subscribers/subscribers.module.js.map +1 -0
- package/dist/server/modules/terminal/services/tmux.service.js +9 -6
- package/dist/server/modules/terminal/services/tmux.service.js.map +1 -1
- package/dist/server/modules/watchers/controllers/watchers.controller.d.ts +16 -0
- package/dist/server/modules/watchers/controllers/watchers.controller.js +180 -0
- package/dist/server/modules/watchers/controllers/watchers.controller.js.map +1 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.d.ts +206 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.js +54 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.js.map +1 -0
- package/dist/server/modules/watchers/services/watcher-runner.service.d.ts +68 -0
- package/dist/server/modules/watchers/services/watcher-runner.service.js +477 -0
- package/dist/server/modules/watchers/services/watcher-runner.service.js.map +1 -0
- package/dist/server/modules/watchers/services/watchers.service.d.ts +29 -0
- package/dist/server/modules/watchers/services/watchers.service.js +98 -0
- package/dist/server/modules/watchers/services/watchers.service.js.map +1 -0
- package/dist/server/modules/watchers/watchers.module.d.ts +2 -0
- package/dist/server/modules/watchers/watchers.module.js +34 -0
- package/dist/server/modules/watchers/watchers.module.js.map +1 -0
- package/dist/server/templates/claude-codex-advanced.json +377 -0
- package/dist/server/templates/claude-opus.json +29 -25
- package/dist/server/templates/simple-codex.json +29 -25
- package/dist/server/test-setup-node.d.ts +1 -0
- package/dist/server/test-setup-node.js +8 -0
- package/dist/server/test-setup-node.js.map +1 -0
- package/dist/server/test-setup.js +2 -0
- package/dist/server/test-setup.js.map +1 -1
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/index-C9GXCjnF.js +700 -0
- package/dist/server/ui/assets/index-o0FbZg-1.css +32 -0
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/claude-codex-advanced.json +377 -0
- package/dist/templates/claude-opus.json +29 -25
- package/dist/templates/simple-codex.json +29 -25
- package/package.json +41 -27
- package/dist/server/templates/codex-claude.json +0 -178
- package/dist/server/ui/assets/index-CbYIbCQV.css +0 -32
- package/dist/server/ui/assets/index-sfYpjMjv.js +0 -641
- package/dist/templates/codex-claude.json +0 -178
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ActionInputSchema: z.ZodEffects<z.ZodObject<{
|
|
3
|
+
source: z.ZodEnum<["event_field", "custom"]>;
|
|
4
|
+
eventField: z.ZodOptional<z.ZodString>;
|
|
5
|
+
customValue: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
source: "event_field" | "custom";
|
|
8
|
+
eventField?: string | undefined;
|
|
9
|
+
customValue?: string | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
source: "event_field" | "custom";
|
|
12
|
+
eventField?: string | undefined;
|
|
13
|
+
customValue?: string | undefined;
|
|
14
|
+
}>, {
|
|
15
|
+
source: "event_field" | "custom";
|
|
16
|
+
eventField?: string | undefined;
|
|
17
|
+
customValue?: string | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
source: "event_field" | "custom";
|
|
20
|
+
eventField?: string | undefined;
|
|
21
|
+
customValue?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type ActionInput = z.infer<typeof ActionInputSchema>;
|
|
24
|
+
export declare const EventFilterSchema: z.ZodNullable<z.ZodObject<{
|
|
25
|
+
field: z.ZodString;
|
|
26
|
+
operator: z.ZodEnum<["equals", "contains", "regex"]>;
|
|
27
|
+
value: z.ZodString;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
value: string;
|
|
30
|
+
field: string;
|
|
31
|
+
operator: "contains" | "regex" | "equals";
|
|
32
|
+
}, {
|
|
33
|
+
value: string;
|
|
34
|
+
field: string;
|
|
35
|
+
operator: "contains" | "regex" | "equals";
|
|
36
|
+
}>>;
|
|
37
|
+
export type EventFilter = z.infer<typeof EventFilterSchema>;
|
|
38
|
+
export declare const CreateSubscriberSchema: z.ZodObject<{
|
|
39
|
+
projectId: z.ZodString;
|
|
40
|
+
name: z.ZodString;
|
|
41
|
+
description: z.ZodOptional<z.ZodString>;
|
|
42
|
+
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
43
|
+
eventName: z.ZodString;
|
|
44
|
+
eventFilter: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
45
|
+
field: z.ZodString;
|
|
46
|
+
operator: z.ZodEnum<["equals", "contains", "regex"]>;
|
|
47
|
+
value: z.ZodString;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
value: string;
|
|
50
|
+
field: string;
|
|
51
|
+
operator: "contains" | "regex" | "equals";
|
|
52
|
+
}, {
|
|
53
|
+
value: string;
|
|
54
|
+
field: string;
|
|
55
|
+
operator: "contains" | "regex" | "equals";
|
|
56
|
+
}>>>;
|
|
57
|
+
actionType: z.ZodString;
|
|
58
|
+
actionInputs: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
|
|
59
|
+
source: z.ZodEnum<["event_field", "custom"]>;
|
|
60
|
+
eventField: z.ZodOptional<z.ZodString>;
|
|
61
|
+
customValue: z.ZodOptional<z.ZodString>;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
source: "event_field" | "custom";
|
|
64
|
+
eventField?: string | undefined;
|
|
65
|
+
customValue?: string | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
source: "event_field" | "custom";
|
|
68
|
+
eventField?: string | undefined;
|
|
69
|
+
customValue?: string | undefined;
|
|
70
|
+
}>, {
|
|
71
|
+
source: "event_field" | "custom";
|
|
72
|
+
eventField?: string | undefined;
|
|
73
|
+
customValue?: string | undefined;
|
|
74
|
+
}, {
|
|
75
|
+
source: "event_field" | "custom";
|
|
76
|
+
eventField?: string | undefined;
|
|
77
|
+
customValue?: string | undefined;
|
|
78
|
+
}>>;
|
|
79
|
+
delayMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
80
|
+
cooldownMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
81
|
+
retryOnError: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
82
|
+
groupName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
83
|
+
position: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
84
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
name: string;
|
|
87
|
+
projectId: string;
|
|
88
|
+
position: number;
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
cooldownMs: number;
|
|
91
|
+
eventName: string;
|
|
92
|
+
actionType: string;
|
|
93
|
+
actionInputs: Record<string, {
|
|
94
|
+
source: "event_field" | "custom";
|
|
95
|
+
eventField?: string | undefined;
|
|
96
|
+
customValue?: string | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
delayMs: number;
|
|
99
|
+
retryOnError: boolean;
|
|
100
|
+
priority: number;
|
|
101
|
+
description?: string | undefined;
|
|
102
|
+
eventFilter?: {
|
|
103
|
+
value: string;
|
|
104
|
+
field: string;
|
|
105
|
+
operator: "contains" | "regex" | "equals";
|
|
106
|
+
} | null | undefined;
|
|
107
|
+
groupName?: string | null | undefined;
|
|
108
|
+
}, {
|
|
109
|
+
name: string;
|
|
110
|
+
projectId: string;
|
|
111
|
+
eventName: string;
|
|
112
|
+
actionType: string;
|
|
113
|
+
actionInputs: Record<string, {
|
|
114
|
+
source: "event_field" | "custom";
|
|
115
|
+
eventField?: string | undefined;
|
|
116
|
+
customValue?: string | undefined;
|
|
117
|
+
}>;
|
|
118
|
+
description?: string | undefined;
|
|
119
|
+
position?: number | undefined;
|
|
120
|
+
enabled?: boolean | undefined;
|
|
121
|
+
cooldownMs?: number | undefined;
|
|
122
|
+
eventFilter?: {
|
|
123
|
+
value: string;
|
|
124
|
+
field: string;
|
|
125
|
+
operator: "contains" | "regex" | "equals";
|
|
126
|
+
} | null | undefined;
|
|
127
|
+
delayMs?: number | undefined;
|
|
128
|
+
retryOnError?: boolean | undefined;
|
|
129
|
+
groupName?: string | null | undefined;
|
|
130
|
+
priority?: number | undefined;
|
|
131
|
+
}>;
|
|
132
|
+
export type CreateSubscriberData = z.infer<typeof CreateSubscriberSchema>;
|
|
133
|
+
export declare const UpdateSubscriberSchema: z.ZodObject<{
|
|
134
|
+
name: z.ZodOptional<z.ZodString>;
|
|
135
|
+
description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
136
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
137
|
+
eventName: z.ZodOptional<z.ZodString>;
|
|
138
|
+
eventFilter: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
139
|
+
field: z.ZodString;
|
|
140
|
+
operator: z.ZodEnum<["equals", "contains", "regex"]>;
|
|
141
|
+
value: z.ZodString;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
value: string;
|
|
144
|
+
field: string;
|
|
145
|
+
operator: "contains" | "regex" | "equals";
|
|
146
|
+
}, {
|
|
147
|
+
value: string;
|
|
148
|
+
field: string;
|
|
149
|
+
operator: "contains" | "regex" | "equals";
|
|
150
|
+
}>>>;
|
|
151
|
+
actionType: z.ZodOptional<z.ZodString>;
|
|
152
|
+
actionInputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
|
|
153
|
+
source: z.ZodEnum<["event_field", "custom"]>;
|
|
154
|
+
eventField: z.ZodOptional<z.ZodString>;
|
|
155
|
+
customValue: z.ZodOptional<z.ZodString>;
|
|
156
|
+
}, "strip", z.ZodTypeAny, {
|
|
157
|
+
source: "event_field" | "custom";
|
|
158
|
+
eventField?: string | undefined;
|
|
159
|
+
customValue?: string | undefined;
|
|
160
|
+
}, {
|
|
161
|
+
source: "event_field" | "custom";
|
|
162
|
+
eventField?: string | undefined;
|
|
163
|
+
customValue?: string | undefined;
|
|
164
|
+
}>, {
|
|
165
|
+
source: "event_field" | "custom";
|
|
166
|
+
eventField?: string | undefined;
|
|
167
|
+
customValue?: string | undefined;
|
|
168
|
+
}, {
|
|
169
|
+
source: "event_field" | "custom";
|
|
170
|
+
eventField?: string | undefined;
|
|
171
|
+
customValue?: string | undefined;
|
|
172
|
+
}>>>;
|
|
173
|
+
delayMs: z.ZodOptional<z.ZodNumber>;
|
|
174
|
+
cooldownMs: z.ZodOptional<z.ZodNumber>;
|
|
175
|
+
retryOnError: z.ZodOptional<z.ZodBoolean>;
|
|
176
|
+
groupName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
177
|
+
position: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
179
|
+
}, "strip", z.ZodTypeAny, {
|
|
180
|
+
description?: string | null | undefined;
|
|
181
|
+
name?: string | undefined;
|
|
182
|
+
position?: number | undefined;
|
|
183
|
+
enabled?: boolean | undefined;
|
|
184
|
+
cooldownMs?: number | undefined;
|
|
185
|
+
eventName?: string | undefined;
|
|
186
|
+
eventFilter?: {
|
|
187
|
+
value: string;
|
|
188
|
+
field: string;
|
|
189
|
+
operator: "contains" | "regex" | "equals";
|
|
190
|
+
} | null | undefined;
|
|
191
|
+
actionType?: string | undefined;
|
|
192
|
+
actionInputs?: Record<string, {
|
|
193
|
+
source: "event_field" | "custom";
|
|
194
|
+
eventField?: string | undefined;
|
|
195
|
+
customValue?: string | undefined;
|
|
196
|
+
}> | undefined;
|
|
197
|
+
delayMs?: number | undefined;
|
|
198
|
+
retryOnError?: boolean | undefined;
|
|
199
|
+
groupName?: string | null | undefined;
|
|
200
|
+
priority?: number | undefined;
|
|
201
|
+
}, {
|
|
202
|
+
description?: string | null | undefined;
|
|
203
|
+
name?: string | undefined;
|
|
204
|
+
position?: number | undefined;
|
|
205
|
+
enabled?: boolean | undefined;
|
|
206
|
+
cooldownMs?: number | undefined;
|
|
207
|
+
eventName?: string | undefined;
|
|
208
|
+
eventFilter?: {
|
|
209
|
+
value: string;
|
|
210
|
+
field: string;
|
|
211
|
+
operator: "contains" | "regex" | "equals";
|
|
212
|
+
} | null | undefined;
|
|
213
|
+
actionType?: string | undefined;
|
|
214
|
+
actionInputs?: Record<string, {
|
|
215
|
+
source: "event_field" | "custom";
|
|
216
|
+
eventField?: string | undefined;
|
|
217
|
+
customValue?: string | undefined;
|
|
218
|
+
}> | undefined;
|
|
219
|
+
delayMs?: number | undefined;
|
|
220
|
+
retryOnError?: boolean | undefined;
|
|
221
|
+
groupName?: string | null | undefined;
|
|
222
|
+
priority?: number | undefined;
|
|
223
|
+
}>;
|
|
224
|
+
export type UpdateSubscriberData = z.infer<typeof UpdateSubscriberSchema>;
|
|
225
|
+
export declare const ToggleSubscriberSchema: z.ZodObject<{
|
|
226
|
+
enabled: z.ZodBoolean;
|
|
227
|
+
}, "strip", z.ZodTypeAny, {
|
|
228
|
+
enabled: boolean;
|
|
229
|
+
}, {
|
|
230
|
+
enabled: boolean;
|
|
231
|
+
}>;
|
|
232
|
+
export type ToggleSubscriberData = z.infer<typeof ToggleSubscriberSchema>;
|
|
233
|
+
export interface SubscriberDto {
|
|
234
|
+
id: string;
|
|
235
|
+
projectId: string;
|
|
236
|
+
name: string;
|
|
237
|
+
description: string | null;
|
|
238
|
+
enabled: boolean;
|
|
239
|
+
eventName: string;
|
|
240
|
+
eventFilter: EventFilter | null;
|
|
241
|
+
actionType: string;
|
|
242
|
+
actionInputs: Record<string, ActionInput>;
|
|
243
|
+
delayMs: number;
|
|
244
|
+
cooldownMs: number;
|
|
245
|
+
retryOnError: boolean;
|
|
246
|
+
groupName: string | null;
|
|
247
|
+
position: number;
|
|
248
|
+
priority: number;
|
|
249
|
+
createdAt: string;
|
|
250
|
+
updatedAt: string;
|
|
251
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToggleSubscriberSchema = exports.UpdateSubscriberSchema = exports.CreateSubscriberSchema = exports.EventFilterSchema = exports.ActionInputSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.ActionInputSchema = zod_1.z
|
|
6
|
+
.object({
|
|
7
|
+
source: zod_1.z.enum(['event_field', 'custom']),
|
|
8
|
+
eventField: zod_1.z.string().optional(),
|
|
9
|
+
customValue: zod_1.z.string().optional(),
|
|
10
|
+
})
|
|
11
|
+
.superRefine((data, ctx) => {
|
|
12
|
+
if (data.source === 'event_field' && !data.eventField) {
|
|
13
|
+
ctx.addIssue({
|
|
14
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
15
|
+
message: 'eventField is required when source is "event_field"',
|
|
16
|
+
path: ['eventField'],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (data.source === 'custom' && data.customValue === undefined) {
|
|
20
|
+
ctx.addIssue({
|
|
21
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
22
|
+
message: 'customValue is required when source is "custom"',
|
|
23
|
+
path: ['customValue'],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
exports.EventFilterSchema = zod_1.z
|
|
28
|
+
.object({
|
|
29
|
+
field: zod_1.z.string().min(1),
|
|
30
|
+
operator: zod_1.z.enum(['equals', 'contains', 'regex']),
|
|
31
|
+
value: zod_1.z.string(),
|
|
32
|
+
})
|
|
33
|
+
.nullable();
|
|
34
|
+
exports.CreateSubscriberSchema = zod_1.z.object({
|
|
35
|
+
projectId: zod_1.z.string().uuid(),
|
|
36
|
+
name: zod_1.z.string().min(1).max(100),
|
|
37
|
+
description: zod_1.z.string().max(500).optional(),
|
|
38
|
+
enabled: zod_1.z.boolean().optional().default(true),
|
|
39
|
+
eventName: zod_1.z.string().min(1).max(100),
|
|
40
|
+
eventFilter: exports.EventFilterSchema.optional(),
|
|
41
|
+
actionType: zod_1.z.string().min(1).max(50),
|
|
42
|
+
actionInputs: zod_1.z.record(zod_1.z.string(), exports.ActionInputSchema),
|
|
43
|
+
delayMs: zod_1.z.number().int().min(0).max(30000).optional().default(0),
|
|
44
|
+
cooldownMs: zod_1.z.number().int().min(0).max(60000).optional().default(5000),
|
|
45
|
+
retryOnError: zod_1.z.boolean().optional().default(false),
|
|
46
|
+
groupName: zod_1.z.string().max(100).nullable().optional(),
|
|
47
|
+
position: zod_1.z.number().int().min(0).optional().default(0),
|
|
48
|
+
priority: zod_1.z.number().int().min(-100).max(100).optional().default(0),
|
|
49
|
+
});
|
|
50
|
+
exports.UpdateSubscriberSchema = zod_1.z.object({
|
|
51
|
+
name: zod_1.z.string().min(1).max(100).optional(),
|
|
52
|
+
description: zod_1.z.string().max(500).optional().nullable(),
|
|
53
|
+
enabled: zod_1.z.boolean().optional(),
|
|
54
|
+
eventName: zod_1.z.string().min(1).max(100).optional(),
|
|
55
|
+
eventFilter: exports.EventFilterSchema.optional(),
|
|
56
|
+
actionType: zod_1.z.string().min(1).max(50).optional(),
|
|
57
|
+
actionInputs: zod_1.z.record(zod_1.z.string(), exports.ActionInputSchema).optional(),
|
|
58
|
+
delayMs: zod_1.z.number().int().min(0).max(30000).optional(),
|
|
59
|
+
cooldownMs: zod_1.z.number().int().min(0).max(60000).optional(),
|
|
60
|
+
retryOnError: zod_1.z.boolean().optional(),
|
|
61
|
+
groupName: zod_1.z.string().max(100).nullable().optional(),
|
|
62
|
+
position: zod_1.z.number().int().min(0).optional(),
|
|
63
|
+
priority: zod_1.z.number().int().min(-100).max(100).optional(),
|
|
64
|
+
});
|
|
65
|
+
exports.ToggleSubscriberSchema = zod_1.z.object({
|
|
66
|
+
enabled: zod_1.z.boolean(),
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=subscriber.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriber.dto.js","sourceRoot":"","sources":["../../../../src/modules/subscribers/dtos/subscriber.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface EventFieldDefinition {
|
|
2
|
+
field: string;
|
|
3
|
+
label: string;
|
|
4
|
+
type: 'string' | 'number' | 'boolean';
|
|
5
|
+
nullable?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface SubscribableEventDefinition {
|
|
8
|
+
name: string;
|
|
9
|
+
label: string;
|
|
10
|
+
description: string;
|
|
11
|
+
category: 'terminal' | 'session' | 'epic' | 'chat';
|
|
12
|
+
fields: EventFieldDefinition[];
|
|
13
|
+
}
|
|
14
|
+
export declare const EVENT_FIELDS_CATALOG: Record<string, SubscribableEventDefinition>;
|
|
15
|
+
export declare function getSubscribableEvents(): string[];
|
|
16
|
+
export declare function getEventDefinition(eventName: string): SubscribableEventDefinition | undefined;
|
|
17
|
+
export declare function getEventFields(eventName: string): EventFieldDefinition[];
|
|
18
|
+
export declare function isSubscribableEvent(eventName: string): boolean;
|
|
19
|
+
export declare function getEventsByCategory(): Map<string, SubscribableEventDefinition[]>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EVENT_FIELDS_CATALOG = void 0;
|
|
4
|
+
exports.getSubscribableEvents = getSubscribableEvents;
|
|
5
|
+
exports.getEventDefinition = getEventDefinition;
|
|
6
|
+
exports.getEventFields = getEventFields;
|
|
7
|
+
exports.isSubscribableEvent = isSubscribableEvent;
|
|
8
|
+
exports.getEventsByCategory = getEventsByCategory;
|
|
9
|
+
exports.EVENT_FIELDS_CATALOG = {
|
|
10
|
+
'terminal.watcher.triggered': {
|
|
11
|
+
name: 'terminal.watcher.triggered',
|
|
12
|
+
label: 'Terminal Watcher Triggered',
|
|
13
|
+
description: 'Fired when a terminal watcher matches content in the viewport',
|
|
14
|
+
category: 'terminal',
|
|
15
|
+
fields: [
|
|
16
|
+
{ field: 'watcherId', label: 'Watcher ID', type: 'string' },
|
|
17
|
+
{ field: 'watcherName', label: 'Watcher Name', type: 'string' },
|
|
18
|
+
{ field: 'customEventName', label: 'Custom Event Name', type: 'string' },
|
|
19
|
+
{ field: 'sessionId', label: 'Session ID', type: 'string' },
|
|
20
|
+
{ field: 'agentId', label: 'Agent ID', type: 'string', nullable: true },
|
|
21
|
+
{ field: 'agentName', label: 'Agent Name', type: 'string', nullable: true },
|
|
22
|
+
{ field: 'projectId', label: 'Project ID', type: 'string' },
|
|
23
|
+
{ field: 'viewportSnippet', label: 'Viewport Snippet', type: 'string' },
|
|
24
|
+
{ field: 'viewportHash', label: 'Viewport Hash', type: 'string' },
|
|
25
|
+
{ field: 'matchedPattern', label: 'Matched Pattern', type: 'string', nullable: true },
|
|
26
|
+
{ field: 'triggerCount', label: 'Trigger Count', type: 'number' },
|
|
27
|
+
{ field: 'triggeredAt', label: 'Triggered At', type: 'string' },
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
'epic.assigned': {
|
|
31
|
+
name: 'epic.assigned',
|
|
32
|
+
label: 'Epic Assigned',
|
|
33
|
+
description: 'Fired when an epic is assigned to an agent',
|
|
34
|
+
category: 'epic',
|
|
35
|
+
fields: [
|
|
36
|
+
{ field: 'epicId', label: 'Epic ID', type: 'string' },
|
|
37
|
+
{ field: 'agentId', label: 'Agent ID', type: 'string' },
|
|
38
|
+
{ field: 'projectId', label: 'Project ID', type: 'string' },
|
|
39
|
+
{ field: 'assignedBy', label: 'Assigned By', type: 'string', nullable: true },
|
|
40
|
+
{ field: 'epicTitle', label: 'Epic Title', type: 'string', nullable: true },
|
|
41
|
+
{ field: 'agentName', label: 'Agent Name', type: 'string', nullable: true },
|
|
42
|
+
{ field: 'projectName', label: 'Project Name', type: 'string', nullable: true },
|
|
43
|
+
{ field: 'previousAgentId', label: 'Previous Agent ID', type: 'string', nullable: true },
|
|
44
|
+
{ field: 'triggeredBy', label: 'Triggered By', type: 'string', nullable: true },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
'session.started': {
|
|
48
|
+
name: 'session.started',
|
|
49
|
+
label: 'Session Started',
|
|
50
|
+
description: 'Fired when a new session is started',
|
|
51
|
+
category: 'session',
|
|
52
|
+
fields: [
|
|
53
|
+
{ field: 'sessionId', label: 'Session ID', type: 'string' },
|
|
54
|
+
{ field: 'epicId', label: 'Epic ID', type: 'string', nullable: true },
|
|
55
|
+
{ field: 'agentId', label: 'Agent ID', type: 'string' },
|
|
56
|
+
{ field: 'tmuxSessionName', label: 'Tmux Session Name', type: 'string' },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
'session.stopped': {
|
|
60
|
+
name: 'session.stopped',
|
|
61
|
+
label: 'Session Stopped',
|
|
62
|
+
description: 'Fired when a session is stopped',
|
|
63
|
+
category: 'session',
|
|
64
|
+
fields: [{ field: 'sessionId', label: 'Session ID', type: 'string' }],
|
|
65
|
+
},
|
|
66
|
+
'session.crashed': {
|
|
67
|
+
name: 'session.crashed',
|
|
68
|
+
label: 'Session Crashed',
|
|
69
|
+
description: 'Fired when a session crashes unexpectedly',
|
|
70
|
+
category: 'session',
|
|
71
|
+
fields: [
|
|
72
|
+
{ field: 'sessionId', label: 'Session ID', type: 'string' },
|
|
73
|
+
{ field: 'sessionName', label: 'Session Name', type: 'string' },
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
function getSubscribableEvents() {
|
|
78
|
+
return Object.keys(exports.EVENT_FIELDS_CATALOG);
|
|
79
|
+
}
|
|
80
|
+
function getEventDefinition(eventName) {
|
|
81
|
+
return exports.EVENT_FIELDS_CATALOG[eventName];
|
|
82
|
+
}
|
|
83
|
+
function getEventFields(eventName) {
|
|
84
|
+
return exports.EVENT_FIELDS_CATALOG[eventName]?.fields || [];
|
|
85
|
+
}
|
|
86
|
+
function isSubscribableEvent(eventName) {
|
|
87
|
+
return eventName in exports.EVENT_FIELDS_CATALOG;
|
|
88
|
+
}
|
|
89
|
+
function getEventsByCategory() {
|
|
90
|
+
const byCategory = new Map();
|
|
91
|
+
for (const event of Object.values(exports.EVENT_FIELDS_CATALOG)) {
|
|
92
|
+
const existing = byCategory.get(event.category) || [];
|
|
93
|
+
existing.push(event);
|
|
94
|
+
byCategory.set(event.category, existing);
|
|
95
|
+
}
|
|
96
|
+
return byCategory;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=event-fields-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-fields-catalog.js","sourceRoot":"","sources":["../../../../src/modules/subscribers/events/event-fields-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import type { SubscriberExecutionResult } from './subscriber-executor.service';
|
|
3
|
+
export interface ScheduledTask {
|
|
4
|
+
taskId: string;
|
|
5
|
+
subscriberId: string;
|
|
6
|
+
eventId?: string;
|
|
7
|
+
runAt: number;
|
|
8
|
+
priority: number;
|
|
9
|
+
position: number;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
agentId?: string;
|
|
12
|
+
groupKey: string;
|
|
13
|
+
execute: () => Promise<SubscriberExecutionResult>;
|
|
14
|
+
}
|
|
15
|
+
export interface ConcurrencyConfig {
|
|
16
|
+
maxGlobal: number;
|
|
17
|
+
maxPerAgent: number;
|
|
18
|
+
maxPerGroup: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function compareScheduledTasks(a: ScheduledTask, b: ScheduledTask): number;
|
|
21
|
+
export declare class AutomationSchedulerService implements OnModuleDestroy {
|
|
22
|
+
private queue;
|
|
23
|
+
private wakeTimer;
|
|
24
|
+
private executingTasks;
|
|
25
|
+
private executingByAgent;
|
|
26
|
+
private executingByGroup;
|
|
27
|
+
private concurrency;
|
|
28
|
+
private isShuttingDown;
|
|
29
|
+
constructor();
|
|
30
|
+
onModuleDestroy(): void;
|
|
31
|
+
setConcurrency(config: Partial<ConcurrencyConfig>): void;
|
|
32
|
+
getConcurrency(): ConcurrencyConfig;
|
|
33
|
+
schedule(task: ScheduledTask): void;
|
|
34
|
+
cancel(taskId: string): boolean;
|
|
35
|
+
cancelBySubscriber(subscriberId: string): number;
|
|
36
|
+
getQueueLength(): number;
|
|
37
|
+
getExecutingCount(): number;
|
|
38
|
+
isExecuting(taskId: string): boolean;
|
|
39
|
+
private insertSorted;
|
|
40
|
+
private clearWakeTimer;
|
|
41
|
+
private scheduleNextWake;
|
|
42
|
+
private processDueTasks;
|
|
43
|
+
private canExecute;
|
|
44
|
+
private executeTask;
|
|
45
|
+
private releaseTask;
|
|
46
|
+
_getQueue(): ScheduledTask[];
|
|
47
|
+
_processDueTasks(): void;
|
|
48
|
+
_hasWakeTimer(): boolean;
|
|
49
|
+
}
|