@aiassesstech/noah 0.2.4 → 0.3.0
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.
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
* Mark's health checks remain autonomous (survival paradox —
|
|
7
7
|
* the system checking health can't depend on the system being healthy).
|
|
8
8
|
* Noah can OBSERVE Mark's results but cannot SCHEDULE Mark's runs.
|
|
9
|
+
*
|
|
10
|
+
* All cron expressions are in UTC. Commander's timezone is America/Chicago (CT).
|
|
11
|
+
* CDT = UTC-5 (Mar–Nov), CST = UTC-6 (Nov–Mar).
|
|
12
|
+
* Current conversions assume CDT (UTC-5).
|
|
9
13
|
*/
|
|
10
14
|
import type { FleetCronJobDefinition } from './cron-types.js';
|
|
11
15
|
export declare const DEFAULT_FLEET_CRON_SCHEDULE: readonly FleetCronJobDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-schedule.d.ts","sourceRoot":"","sources":["../../src/cron/default-schedule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"default-schedule.d.ts","sourceRoot":"","sources":["../../src/cron/default-schedule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,SAAS,sBAAsB,EAiL/D,CAAC;AAEX,wBAAgB,kBAAkB,IAAI,sBAAsB,EAAE,CAE7D;AAED,wBAAgB,qBAAqB,IAAI,sBAAsB,EAAE,CAEhE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C"}
|
|
@@ -6,16 +6,21 @@
|
|
|
6
6
|
* Mark's health checks remain autonomous (survival paradox —
|
|
7
7
|
* the system checking health can't depend on the system being healthy).
|
|
8
8
|
* Noah can OBSERVE Mark's results but cannot SCHEDULE Mark's runs.
|
|
9
|
+
*
|
|
10
|
+
* All cron expressions are in UTC. Commander's timezone is America/Chicago (CT).
|
|
11
|
+
* CDT = UTC-5 (Mar–Nov), CST = UTC-6 (Nov–Mar).
|
|
12
|
+
* Current conversions assume CDT (UTC-5).
|
|
9
13
|
*/
|
|
10
14
|
export const DEFAULT_FLEET_CRON_SCHEDULE = [
|
|
15
|
+
// ── Constitutional Jobs (cannot be disabled/deleted) ──
|
|
11
16
|
{
|
|
12
17
|
id: 'grillo-daily-assessment',
|
|
13
18
|
agentId: 'grillo',
|
|
14
19
|
name: 'Daily LCSH Assessment Cycle',
|
|
15
|
-
description: 'Grillo runs full LCSH assessment against all governed agents',
|
|
20
|
+
description: 'Grillo runs full LCSH assessment against all governed agents (6:00 AM CT)',
|
|
16
21
|
enabled: true,
|
|
17
22
|
constitutional: true,
|
|
18
|
-
schedule: { kind: 'cron', expression: '0
|
|
23
|
+
schedule: { kind: 'cron', expression: '0 11 * * *', timezone: 'UTC' },
|
|
19
24
|
payload: { kind: 'agentTurn', action: 'run_assessment_cycle' },
|
|
20
25
|
},
|
|
21
26
|
{
|
|
@@ -39,35 +44,141 @@ export const DEFAULT_FLEET_CRON_SCHEDULE = [
|
|
|
39
44
|
payload: { kind: 'internal', action: 'verify_hash_chains' },
|
|
40
45
|
},
|
|
41
46
|
{
|
|
42
|
-
id: '
|
|
47
|
+
id: 'noah-lifecycle-check',
|
|
48
|
+
agentId: 'noah',
|
|
49
|
+
name: 'Lifecycle Phase Evaluation',
|
|
50
|
+
description: 'Evaluate whether fleet should transition to next lifecycle phase',
|
|
51
|
+
enabled: true,
|
|
52
|
+
constitutional: true,
|
|
53
|
+
schedule: { kind: 'cron', expression: '0 0 * * 0', timezone: 'UTC' },
|
|
54
|
+
payload: { kind: 'internal', action: 'evaluate_lifecycle_phase' },
|
|
55
|
+
},
|
|
56
|
+
// ── Jessie — Morning & Evening Reports ──
|
|
57
|
+
{
|
|
58
|
+
id: 'jessie-morning-briefing',
|
|
59
|
+
agentId: 'jessie',
|
|
60
|
+
name: 'Morning Briefing',
|
|
61
|
+
description: "Jessie sends Greg's morning briefing to Telegram (7:01 AM CT)",
|
|
62
|
+
enabled: true,
|
|
63
|
+
constitutional: false,
|
|
64
|
+
schedule: { kind: 'cron', expression: '1 12 * * *', timezone: 'UTC' },
|
|
65
|
+
payload: {
|
|
66
|
+
kind: 'agentTurn',
|
|
67
|
+
action: 'morning_briefing',
|
|
68
|
+
data: { channel: 'telegram', recipient: '1590789327' },
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'jessie-evening-checkin',
|
|
73
|
+
agentId: 'jessie',
|
|
74
|
+
name: 'Evening Check-in',
|
|
75
|
+
description: "Jessie sends Greg's evening check-in to Telegram (9:01 PM CT)",
|
|
76
|
+
enabled: true,
|
|
77
|
+
constitutional: false,
|
|
78
|
+
schedule: { kind: 'cron', expression: '1 2 * * *', timezone: 'UTC' },
|
|
79
|
+
payload: {
|
|
80
|
+
kind: 'agentTurn',
|
|
81
|
+
action: 'evening_checkin',
|
|
82
|
+
data: { channel: 'telegram', recipient: '1590789327' },
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
// ── Jessie — Heartbeat Checks (4x daily) ──
|
|
86
|
+
{
|
|
87
|
+
id: 'jessie-heartbeat-0800',
|
|
88
|
+
agentId: 'jessie',
|
|
89
|
+
name: 'Heartbeat Check (8 AM)',
|
|
90
|
+
description: 'Jessie sends systems-alive note to Greg (8:00 AM CT)',
|
|
91
|
+
enabled: true,
|
|
92
|
+
constitutional: false,
|
|
93
|
+
schedule: { kind: 'cron', expression: '0 13 * * *', timezone: 'UTC' },
|
|
94
|
+
payload: {
|
|
95
|
+
kind: 'agentTurn',
|
|
96
|
+
action: 'heartbeat_checkin',
|
|
97
|
+
data: { channel: 'telegram', recipient: '1590789327', period: 'morning' },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'jessie-heartbeat-1200',
|
|
102
|
+
agentId: 'jessie',
|
|
103
|
+
name: 'Heartbeat Check (12 PM)',
|
|
104
|
+
description: 'Jessie sends systems-alive note to Greg (12:00 PM CT)',
|
|
105
|
+
enabled: true,
|
|
106
|
+
constitutional: false,
|
|
107
|
+
schedule: { kind: 'cron', expression: '0 17 * * *', timezone: 'UTC' },
|
|
108
|
+
payload: {
|
|
109
|
+
kind: 'agentTurn',
|
|
110
|
+
action: 'heartbeat_checkin',
|
|
111
|
+
data: { channel: 'telegram', recipient: '1590789327', period: 'midday' },
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 'jessie-heartbeat-1600',
|
|
116
|
+
agentId: 'jessie',
|
|
117
|
+
name: 'Heartbeat Check (4 PM)',
|
|
118
|
+
description: 'Jessie sends systems-alive note to Greg (4:00 PM CT)',
|
|
119
|
+
enabled: true,
|
|
120
|
+
constitutional: false,
|
|
121
|
+
schedule: { kind: 'cron', expression: '0 21 * * *', timezone: 'UTC' },
|
|
122
|
+
payload: {
|
|
123
|
+
kind: 'agentTurn',
|
|
124
|
+
action: 'heartbeat_checkin',
|
|
125
|
+
data: { channel: 'telegram', recipient: '1590789327', period: 'afternoon' },
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'jessie-heartbeat-2000',
|
|
130
|
+
agentId: 'jessie',
|
|
131
|
+
name: 'Heartbeat Check (8 PM)',
|
|
132
|
+
description: 'Jessie sends systems-alive note to Greg (8:00 PM CT)',
|
|
133
|
+
enabled: true,
|
|
134
|
+
constitutional: false,
|
|
135
|
+
schedule: { kind: 'cron', expression: '0 1 * * *', timezone: 'UTC' },
|
|
136
|
+
payload: {
|
|
137
|
+
kind: 'agentTurn',
|
|
138
|
+
action: 'heartbeat_checkin',
|
|
139
|
+
data: { channel: 'telegram', recipient: '1590789327', period: 'evening' },
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
// ── Jessie — Sleep Reminders ──
|
|
143
|
+
{
|
|
144
|
+
id: 'jessie-sleep-winddown',
|
|
145
|
+
agentId: 'jessie',
|
|
146
|
+
name: 'Sleep Wind-down Reminder',
|
|
147
|
+
description: 'Jessie sends sleep wind-down reminder to Greg (10:30 PM CT)',
|
|
148
|
+
enabled: true,
|
|
149
|
+
constitutional: false,
|
|
150
|
+
schedule: { kind: 'cron', expression: '30 3 * * *', timezone: 'UTC' },
|
|
151
|
+
payload: {
|
|
152
|
+
kind: 'agentTurn',
|
|
153
|
+
action: 'sleep_reminder',
|
|
154
|
+
data: { channel: 'telegram', recipient: '1590789327', phase: 'winddown' },
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: 'jessie-sleep-final',
|
|
43
159
|
agentId: 'jessie',
|
|
44
|
-
name: '
|
|
45
|
-
description: 'Jessie
|
|
160
|
+
name: 'Sleep Final Check',
|
|
161
|
+
description: 'Jessie sends final sleep check to Greg (10:50 PM CT)',
|
|
46
162
|
enabled: true,
|
|
47
163
|
constitutional: false,
|
|
48
|
-
schedule: { kind: 'cron', expression: '
|
|
49
|
-
payload: {
|
|
164
|
+
schedule: { kind: 'cron', expression: '50 3 * * *', timezone: 'UTC' },
|
|
165
|
+
payload: {
|
|
166
|
+
kind: 'agentTurn',
|
|
167
|
+
action: 'sleep_reminder',
|
|
168
|
+
data: { channel: 'telegram', recipient: '1590789327', phase: 'final' },
|
|
169
|
+
},
|
|
50
170
|
},
|
|
171
|
+
// ── Nole — Weekly Review ──
|
|
51
172
|
{
|
|
52
173
|
id: 'nole-weekly-review',
|
|
53
174
|
agentId: 'nole',
|
|
54
175
|
name: 'Weekly Strategy Review',
|
|
55
|
-
description: 'Nole prepares weekly operational strategy review',
|
|
176
|
+
description: 'Nole prepares weekly operational strategy review (Monday 9:00 AM CT)',
|
|
56
177
|
enabled: true,
|
|
57
178
|
constitutional: false,
|
|
58
|
-
schedule: { kind: 'cron', expression: '0
|
|
179
|
+
schedule: { kind: 'cron', expression: '0 14 * * 1', timezone: 'UTC' },
|
|
59
180
|
payload: { kind: 'agentTurn', action: 'weekly_strategy_review' },
|
|
60
181
|
},
|
|
61
|
-
{
|
|
62
|
-
id: 'noah-lifecycle-check',
|
|
63
|
-
agentId: 'noah',
|
|
64
|
-
name: 'Lifecycle Phase Evaluation',
|
|
65
|
-
description: 'Evaluate whether fleet should transition to next lifecycle phase',
|
|
66
|
-
enabled: true,
|
|
67
|
-
constitutional: true,
|
|
68
|
-
schedule: { kind: 'cron', expression: '0 0 * * 0', timezone: 'UTC' },
|
|
69
|
-
payload: { kind: 'internal', action: 'evaluate_lifecycle_phase' },
|
|
70
|
-
},
|
|
71
182
|
];
|
|
72
183
|
export function getDefaultSchedule() {
|
|
73
184
|
return [...DEFAULT_FLEET_CRON_SCHEDULE];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-schedule.js","sourceRoot":"","sources":["../../src/cron/default-schedule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"default-schedule.js","sourceRoot":"","sources":["../../src/cron/default-schedule.ts"],"names":[],"mappings":"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"}
|