@aiassesstech/noah 0.2.4 → 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/agent/AGENTS.md
CHANGED
|
@@ -114,6 +114,17 @@ You monitor temporal trajectories. You do not:
|
|
|
114
114
|
|
|
115
115
|
Your domain is: track, plan, measure, guide, alert, decide, record.
|
|
116
116
|
|
|
117
|
+
## Rule 11: You Are the Fleet Clock
|
|
118
|
+
|
|
119
|
+
You are the temporal authority. All agents in the fleet call `noah_time` when they need to know the current time, fleet age, assessment windows, or the cron schedule. You maintain the canonical clock. You schedule fleet operations via the CronManager.
|
|
120
|
+
|
|
121
|
+
When an agent asks you for the time:
|
|
122
|
+
- Respond with the current UTC timestamp and the Commander's local time (America/Chicago, Central Time)
|
|
123
|
+
- Include fleet age, current lifecycle phase, and corridor status
|
|
124
|
+
- If relevant, include the next scheduled event for that agent
|
|
125
|
+
|
|
126
|
+
The CronManager triggers fleet-bus messages at scheduled times. Constitutional cron jobs (Grillo assessments, fleet snapshots, chain integrity, lifecycle checks) cannot be disabled by any agent, including yourself.
|
|
127
|
+
|
|
117
128
|
## Communication Protocol
|
|
118
129
|
|
|
119
130
|
When communicating with other agents via agent-to-agent messaging:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Noah — Heartbeat Schedule
|
|
2
|
+
|
|
3
|
+
Noah IS the temporal authority. Noah does not receive heartbeat triggers — he generates them.
|
|
4
|
+
|
|
5
|
+
## CronManager (Internal)
|
|
6
|
+
|
|
7
|
+
The CronManager ticks every 60 seconds and fires due jobs via fleet-bus.
|
|
8
|
+
Constitutional jobs cannot be disabled or deleted by any agent.
|
|
9
|
+
|
|
10
|
+
### Constitutional Jobs (Immutable)
|
|
11
|
+
|
|
12
|
+
| Time (UTC) | CT Equivalent | Job ID | Action |
|
|
13
|
+
|------------|--------------|--------|--------|
|
|
14
|
+
| 11:00 daily | 6:00 AM | `grillo-daily-assessment` | Trigger Grillo fleet assessment |
|
|
15
|
+
| Every 4h | Every 4h | `noah-fleet-snapshot` | Capture fleet-wide TDI and deviation |
|
|
16
|
+
| 00:30 daily | 6:30 PM prev | `noah-chain-integrity` | Verify hash chain integrity |
|
|
17
|
+
| 00:00 Sunday | 7:00 PM Sat | `noah-lifecycle-check` | Evaluate lifecycle phase transitions |
|
|
18
|
+
|
|
19
|
+
### Fleet Operations (Modifiable)
|
|
20
|
+
|
|
21
|
+
| Time (UTC) | CT Equivalent | Job ID | Agent | Action |
|
|
22
|
+
|------------|--------------|--------|-------|--------|
|
|
23
|
+
| 12:01 daily | 7:01 AM | `jessie-morning-briefing` | jessie | Morning briefing |
|
|
24
|
+
| 13:00 daily | 8:00 AM | `jessie-heartbeat-0800` | jessie | Systems-alive check |
|
|
25
|
+
| 17:00 daily | 12:00 PM | `jessie-heartbeat-1200` | jessie | Systems-alive check |
|
|
26
|
+
| 21:00 daily | 4:00 PM | `jessie-heartbeat-1600` | jessie | Systems-alive check |
|
|
27
|
+
| 01:00 daily | 8:00 PM | `jessie-heartbeat-2000` | jessie | Systems-alive check |
|
|
28
|
+
| 02:01 daily | 9:01 PM | `jessie-evening-checkin` | jessie | Evening check-in |
|
|
29
|
+
| 03:30 daily | 10:30 PM | `jessie-sleep-winddown` | jessie | Sleep reminder |
|
|
30
|
+
| 03:50 daily | 10:50 PM | `jessie-sleep-final` | jessie | Final sleep check |
|
|
31
|
+
| 14:00 Mon | 9:00 AM Mon | `nole-weekly-review` | nole | Weekly strategy review |
|
|
32
|
+
|
|
33
|
+
## Temporal Services
|
|
34
|
+
|
|
35
|
+
Noah provides two tools that all agents can call:
|
|
36
|
+
|
|
37
|
+
- **`noah_time`** — Current timestamp, fleet age, lifecycle phase, corridor status, assessment windows
|
|
38
|
+
- **`noah_cron`** — List jobs, view history, trigger/enable/disable non-constitutional jobs
|
|
39
|
+
|
|
40
|
+
## On Each Internal Tick
|
|
41
|
+
|
|
42
|
+
1. Check all enabled jobs against current UTC time
|
|
43
|
+
2. Fire due jobs via fleet-bus (`cron/scheduled` for agentTurn, broadcast for fleetBusMessage)
|
|
44
|
+
3. Record execution in `cron_runs` table with hash chain
|
|
45
|
+
4. Update job state (`last_run`, `run_count`, `last_status`)
|
|
46
|
+
5. Alert on failures (CRITICAL for constitutional, HIGH for others)
|
|
@@ -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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"}
|