@crewx/sdk 0.9.0-rc.30 → 0.9.0-rc.32

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.
@@ -0,0 +1,199 @@
1
+ export declare const agent_suggestions: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "agent_suggestions";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "agent_suggestions";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ workspace_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "workspace_id";
26
+ tableName: "agent_suggestions";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ agent_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "agent_id";
45
+ tableName: "agent_suggestions";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "task_id";
64
+ tableName: "agent_suggestions";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: false;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "type";
83
+ tableName: "agent_suggestions";
84
+ dataType: "string";
85
+ columnType: "SQLiteText";
86
+ data: string;
87
+ driverParam: string;
88
+ notNull: true;
89
+ hasDefault: false;
90
+ isPrimaryKey: false;
91
+ isAutoincrement: false;
92
+ hasRuntimeDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ identity: undefined;
96
+ generated: undefined;
97
+ }, {}, {
98
+ length: number | undefined;
99
+ }>;
100
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "status";
102
+ tableName: "agent_suggestions";
103
+ dataType: "string";
104
+ columnType: "SQLiteText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: true;
108
+ hasDefault: true;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {
117
+ length: number | undefined;
118
+ }>;
119
+ payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
+ name: "payload";
121
+ tableName: "agent_suggestions";
122
+ dataType: "string";
123
+ columnType: "SQLiteText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: true;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {
136
+ length: number | undefined;
137
+ }>;
138
+ applied_commit_sha: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "applied_commit_sha";
140
+ tableName: "agent_suggestions";
141
+ dataType: "string";
142
+ columnType: "SQLiteText";
143
+ data: string;
144
+ driverParam: string;
145
+ notNull: false;
146
+ hasDefault: false;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: [string, ...string[]];
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {
155
+ length: number | undefined;
156
+ }>;
157
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "created_at";
159
+ tableName: "agent_suggestions";
160
+ dataType: "string";
161
+ columnType: "SQLiteText";
162
+ data: string;
163
+ driverParam: string;
164
+ notNull: true;
165
+ hasDefault: false;
166
+ isPrimaryKey: false;
167
+ isAutoincrement: false;
168
+ hasRuntimeDefault: false;
169
+ enumValues: [string, ...string[]];
170
+ baseColumn: never;
171
+ identity: undefined;
172
+ generated: undefined;
173
+ }, {}, {
174
+ length: number | undefined;
175
+ }>;
176
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
177
+ name: "updated_at";
178
+ tableName: "agent_suggestions";
179
+ dataType: "string";
180
+ columnType: "SQLiteText";
181
+ data: string;
182
+ driverParam: string;
183
+ notNull: true;
184
+ hasDefault: false;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
188
+ enumValues: [string, ...string[]];
189
+ baseColumn: never;
190
+ identity: undefined;
191
+ generated: undefined;
192
+ }, {}, {
193
+ length: number | undefined;
194
+ }>;
195
+ };
196
+ dialect: "sqlite";
197
+ }>;
198
+ export type AgentSuggestion = typeof agent_suggestions.$inferSelect;
199
+ export type NewAgentSuggestion = typeof agent_suggestions.$inferInsert;
@@ -7,3 +7,5 @@ export * from './thread-boxes.js';
7
7
  export * from './request-logs.js';
8
8
  export * from './usage-limit-snapshots.js';
9
9
  export * from './usage-reports.js';
10
+ export * from './notifications.js';
11
+ export * from './agent-suggestions.js';
@@ -0,0 +1,303 @@
1
+ export declare const notifications: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "notifications";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "notifications";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ workspace_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "workspace_id";
26
+ tableName: "notifications";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ agent_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "agent_id";
45
+ tableName: "notifications";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: false;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "task_id";
64
+ tableName: "notifications";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: false;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ thread_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "thread_id";
83
+ tableName: "notifications";
84
+ dataType: "string";
85
+ columnType: "SQLiteText";
86
+ data: string;
87
+ driverParam: string;
88
+ notNull: false;
89
+ hasDefault: false;
90
+ isPrimaryKey: false;
91
+ isAutoincrement: false;
92
+ hasRuntimeDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ identity: undefined;
96
+ generated: undefined;
97
+ }, {}, {
98
+ length: number | undefined;
99
+ }>;
100
+ source: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "source";
102
+ tableName: "notifications";
103
+ dataType: "string";
104
+ columnType: "SQLiteText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: true;
108
+ hasDefault: true;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {
117
+ length: number | undefined;
118
+ }>;
119
+ level: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
+ name: "level";
121
+ tableName: "notifications";
122
+ dataType: "string";
123
+ columnType: "SQLiteText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: true;
127
+ hasDefault: true;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {
136
+ length: number | undefined;
137
+ }>;
138
+ title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "title";
140
+ tableName: "notifications";
141
+ dataType: "string";
142
+ columnType: "SQLiteText";
143
+ data: string;
144
+ driverParam: string;
145
+ notNull: true;
146
+ hasDefault: false;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: [string, ...string[]];
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {
155
+ length: number | undefined;
156
+ }>;
157
+ body: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "body";
159
+ tableName: "notifications";
160
+ dataType: "string";
161
+ columnType: "SQLiteText";
162
+ data: string;
163
+ driverParam: string;
164
+ notNull: false;
165
+ hasDefault: false;
166
+ isPrimaryKey: false;
167
+ isAutoincrement: false;
168
+ hasRuntimeDefault: false;
169
+ enumValues: [string, ...string[]];
170
+ baseColumn: never;
171
+ identity: undefined;
172
+ generated: undefined;
173
+ }, {}, {
174
+ length: number | undefined;
175
+ }>;
176
+ target_user_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
177
+ name: "target_user_id";
178
+ tableName: "notifications";
179
+ dataType: "string";
180
+ columnType: "SQLiteText";
181
+ data: string;
182
+ driverParam: string;
183
+ notNull: false;
184
+ hasDefault: false;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
188
+ enumValues: [string, ...string[]];
189
+ baseColumn: never;
190
+ identity: undefined;
191
+ generated: undefined;
192
+ }, {}, {
193
+ length: number | undefined;
194
+ }>;
195
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
196
+ name: "created_at";
197
+ tableName: "notifications";
198
+ dataType: "string";
199
+ columnType: "SQLiteText";
200
+ data: string;
201
+ driverParam: string;
202
+ notNull: true;
203
+ hasDefault: false;
204
+ isPrimaryKey: false;
205
+ isAutoincrement: false;
206
+ hasRuntimeDefault: false;
207
+ enumValues: [string, ...string[]];
208
+ baseColumn: never;
209
+ identity: undefined;
210
+ generated: undefined;
211
+ }, {}, {
212
+ length: number | undefined;
213
+ }>;
214
+ metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
215
+ name: "metadata";
216
+ tableName: "notifications";
217
+ dataType: "string";
218
+ columnType: "SQLiteText";
219
+ data: string;
220
+ driverParam: string;
221
+ notNull: false;
222
+ hasDefault: false;
223
+ isPrimaryKey: false;
224
+ isAutoincrement: false;
225
+ hasRuntimeDefault: false;
226
+ enumValues: [string, ...string[]];
227
+ baseColumn: never;
228
+ identity: undefined;
229
+ generated: undefined;
230
+ }, {}, {
231
+ length: number | undefined;
232
+ }>;
233
+ };
234
+ dialect: "sqlite";
235
+ }>;
236
+ export declare const notification_reads: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
237
+ name: "notification_reads";
238
+ schema: undefined;
239
+ columns: {
240
+ notification_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
241
+ name: "notification_id";
242
+ tableName: "notification_reads";
243
+ dataType: "string";
244
+ columnType: "SQLiteText";
245
+ data: string;
246
+ driverParam: string;
247
+ notNull: true;
248
+ hasDefault: false;
249
+ isPrimaryKey: false;
250
+ isAutoincrement: false;
251
+ hasRuntimeDefault: false;
252
+ enumValues: [string, ...string[]];
253
+ baseColumn: never;
254
+ identity: undefined;
255
+ generated: undefined;
256
+ }, {}, {
257
+ length: number | undefined;
258
+ }>;
259
+ user_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
260
+ name: "user_id";
261
+ tableName: "notification_reads";
262
+ dataType: "string";
263
+ columnType: "SQLiteText";
264
+ data: string;
265
+ driverParam: string;
266
+ notNull: true;
267
+ hasDefault: false;
268
+ isPrimaryKey: false;
269
+ isAutoincrement: false;
270
+ hasRuntimeDefault: false;
271
+ enumValues: [string, ...string[]];
272
+ baseColumn: never;
273
+ identity: undefined;
274
+ generated: undefined;
275
+ }, {}, {
276
+ length: number | undefined;
277
+ }>;
278
+ read_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
279
+ name: "read_at";
280
+ tableName: "notification_reads";
281
+ dataType: "string";
282
+ columnType: "SQLiteText";
283
+ data: string;
284
+ driverParam: string;
285
+ notNull: true;
286
+ hasDefault: false;
287
+ isPrimaryKey: false;
288
+ isAutoincrement: false;
289
+ hasRuntimeDefault: false;
290
+ enumValues: [string, ...string[]];
291
+ baseColumn: never;
292
+ identity: undefined;
293
+ generated: undefined;
294
+ }, {}, {
295
+ length: number | undefined;
296
+ }>;
297
+ };
298
+ dialect: "sqlite";
299
+ }>;
300
+ export type Notification = typeof notifications.$inferSelect;
301
+ export type NewNotification = typeof notifications.$inferInsert;
302
+ export type NotificationRead = typeof notification_reads.$inferSelect;
303
+ export type NewNotificationRead = typeof notification_reads.$inferInsert;
@@ -397,6 +397,13 @@ export interface GuideRule {
397
397
  say: string;
398
398
  once?: boolean;
399
399
  }
400
+ export declare const SettingsSchema: z.ZodObject<{
401
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
402
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
403
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
404
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
405
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
406
+ }, z.ZodUnknown, "strip">>;
400
407
  export declare const CrewxProjectConfigSchema: z.ZodObject<{
401
408
  agents: z.ZodOptional<z.ZodArray<z.ZodObject<{
402
409
  id: z.ZodString;
@@ -685,7 +692,13 @@ export declare const CrewxProjectConfigSchema: z.ZodObject<{
685
692
  }>>;
686
693
  }, z.ZodUnknown, "strip">>, "many">>;
687
694
  hooks: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
688
- settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
695
+ settings: z.ZodOptional<z.ZodObject<{
696
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
697
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
698
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
699
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
700
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
701
+ }, z.ZodUnknown, "strip">>>;
689
702
  skills: z.ZodOptional<z.ZodUnknown>;
690
703
  layouts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
691
704
  documents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -977,7 +990,13 @@ export declare const CrewxProjectConfigSchema: z.ZodObject<{
977
990
  }>>;
978
991
  }, z.ZodUnknown, "strip">>, "many">>;
979
992
  hooks: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
980
- settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
993
+ settings: z.ZodOptional<z.ZodObject<{
994
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
995
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
996
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
997
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
998
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
999
+ }, z.ZodUnknown, "strip">>>;
981
1000
  skills: z.ZodOptional<z.ZodUnknown>;
982
1001
  layouts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
983
1002
  documents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1269,7 +1288,13 @@ export declare const CrewxProjectConfigSchema: z.ZodObject<{
1269
1288
  }>>;
1270
1289
  }, z.ZodUnknown, "strip">>, "many">>;
1271
1290
  hooks: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
1272
- settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1291
+ settings: z.ZodOptional<z.ZodObject<{
1292
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
1293
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
1294
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
1295
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
1296
+ bin_resolution: z.ZodOptional<z.ZodEnum<["global_first", "local_first"]>>;
1297
+ }, z.ZodUnknown, "strip">>>;
1273
1298
  skills: z.ZodOptional<z.ZodUnknown>;
1274
1299
  layouts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1275
1300
  documents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1,4 +1,4 @@
1
- export type EntityPrefix = 'tsk' | 'thd' | 'msg' | 'box' | 'prj' | 'mem' | 'spn' | 'cron' | 'wbs' | 'job' | 'tcl' | 'req' | 'ws' | 'wfr';
1
+ export type EntityPrefix = 'tsk' | 'thd' | 'msg' | 'box' | 'prj' | 'mem' | 'spn' | 'cron' | 'wbs' | 'job' | 'tcl' | 'req' | 'ws' | 'wfr' | 'ntf' | 'sug';
2
2
  export type PrefixedId<P extends EntityPrefix> = `${P}_${string}`;
3
3
  export declare function generateId<P extends EntityPrefix>(prefix: P): PrefixedId<P>;
4
4
  export declare function generateFingerprint<P extends EntityPrefix>(prefix: P, input: string): PrefixedId<P>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/sdk",
3
- "version": "0.9.0-rc.30",
3
+ "version": "0.9.0-rc.32",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"
@@ -128,6 +128,26 @@ layouts:
128
128
  </cli_options>
129
129
  {{/if}}
130
130
  </session>
131
+
132
+ <delegation_lifecycle>
133
+ You are running as a SINGLE-SHOT CLI process (print mode). There is no next turn:
134
+ - The moment you emit your final answer, this process exits and every child
135
+ process it spawned — including backgrounded Bash commands — is killed (SIGTERM).
136
+ - Harness messages like "running in the background" or "you will be notified
137
+ when it completes" are NOT true in this mode. That notification will never
138
+ arrive; trusting it silently kills the delegated work.
139
+
140
+ Rules for delegation and long-running commands:
141
+ - Run delegations (npx crewx q / npx crewx x) in the FOREGROUND and wait for
142
+ the result within the same turn. Never use run_in_background, `&`, or nohup
143
+ for a CrewX delegation.
144
+ - If the harness force-moves a long command to the background (e.g. on
145
+ timeout), do NOT end your turn. Keep checking completion with short
146
+ foreground status checks until it actually finishes.
147
+ - A PID, a "running" status, a partially created file, or a --thread link is
148
+ NOT evidence of completion. Report success only after the command has
149
+ exited and returned its final result.
150
+ </delegation_lifecycle>
131
151
  </agent_profile>
132
152
  {{/if}}
133
153
 
@@ -246,6 +266,13 @@ layouts:
246
266
  ```
247
267
 
248
268
  → Full usage: `{{env.CREWX_CLI}} workflow --help`
269
+
270
+ ### Notify (`{{env.CREWX_CLI}} notify`)
271
+ Send an in-app notification to the user's CrewX dashboard. Use for signals that need the user's attention or judgment after a run (e.g. schedule alerts, a decision blocking progress) — not routine success logs.
272
+
273
+ ```bash
274
+ {{env.CREWX_CLI}} notify "<title>" [--level=info|warning|critical] [--body="..."]
275
+ ```
249
276
  </builtin_tools>
250
277
  {{/if}}
251
278
 
@@ -406,7 +433,7 @@ agents:
406
433
  name: "CrewX Assistant"
407
434
  role: "assistant"
408
435
  team: "CrewX"
409
- provider: ["cli/claude", "cli/gemini", "cli/copilot"] # Fallback order: claude → gemini → copilot
436
+ provider: ["cli/codex", "cli/claude", "cli/opencode", "cli/gemini", "cli/copilot"] # Fallback order: codex → claude → opencode → gemini → copilot
410
437
  working_directory: "."
411
438
  # Note: Uses provider array for automatic fallback when no model is specified
412
439
  inline: