@hasna/uptime 0.1.22 → 0.1.24
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/CHANGELOG.md +22 -0
- package/NOTICE +1 -1
- package/README.md +4 -1
- package/THIRD_PARTY_NOTICES.md +4 -1
- package/dist/api.d.ts +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +271 -56
- package/dist/checks.d.ts +4 -0
- package/dist/checks.d.ts.map +1 -1
- package/dist/checks.js +26 -3
- package/dist/cli/index.js +301 -60
- package/dist/cloud-plan.d.ts +3 -1
- package/dist/cloud-plan.d.ts.map +1 -1
- package/dist/cloud-plan.js +5 -2
- package/dist/imports.d.ts +5 -1
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +277 -58
- package/dist/mcp/index.js +225 -51
- package/dist/service.d.ts +23 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +225 -51
- package/dist/store.d.ts +6 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +79 -12
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/aws-deployment-runbook.md +16 -10
- package/docs/aws-runtime-security.md +2 -1
- package/docs/cloud-source-of-truth.md +13 -10
- package/docs/deployment-metadata.example.json +1 -1
- package/docs/operational-tracking.md +2 -2
- package/infra/aws/terraform.tfvars.example +1 -1
- package/infra/aws/variables.tf +1 -1
- package/package.json +1 -1
package/dist/store.js
CHANGED
|
@@ -271,7 +271,7 @@ var REQUIRED_TABLES = [
|
|
|
271
271
|
];
|
|
272
272
|
var PROBE_TABLES = new Set(["probe_identities", "probe_check_jobs", "probe_submissions"]);
|
|
273
273
|
var REPORT_AUDIT_TABLES = new Set(["report_schedules", "report_runs", "audit_events"]);
|
|
274
|
-
var CURRENT_SCHEMA_VERSION = "
|
|
274
|
+
var CURRENT_SCHEMA_VERSION = "5";
|
|
275
275
|
|
|
276
276
|
class StaleCheckResultError extends Error {
|
|
277
277
|
constructor(message) {
|
|
@@ -384,15 +384,17 @@ class UptimeStore {
|
|
|
384
384
|
`);
|
|
385
385
|
this.db.run(`
|
|
386
386
|
CREATE TABLE IF NOT EXISTS monitor_provenance (
|
|
387
|
+
workspace_id TEXT NOT NULL DEFAULT 'local',
|
|
387
388
|
monitor_id TEXT NOT NULL REFERENCES monitors(id) ON DELETE CASCADE,
|
|
388
389
|
source TEXT NOT NULL,
|
|
389
390
|
source_id TEXT NOT NULL,
|
|
390
391
|
source_label TEXT,
|
|
391
392
|
imported_at TEXT NOT NULL,
|
|
392
393
|
snapshot_json TEXT NOT NULL,
|
|
393
|
-
PRIMARY KEY (source, source_id)
|
|
394
|
+
PRIMARY KEY (workspace_id, source, source_id)
|
|
394
395
|
)
|
|
395
396
|
`);
|
|
397
|
+
this.ensureMonitorProvenanceWorkspaceScoped();
|
|
396
398
|
this.db.run(`
|
|
397
399
|
CREATE TABLE IF NOT EXISTS import_batches (
|
|
398
400
|
id TEXT PRIMARY KEY,
|
|
@@ -484,6 +486,7 @@ class UptimeStore {
|
|
|
484
486
|
this.db.run(`
|
|
485
487
|
CREATE TABLE IF NOT EXISTS audit_events (
|
|
486
488
|
id TEXT PRIMARY KEY,
|
|
489
|
+
workspace_id TEXT,
|
|
487
490
|
action TEXT NOT NULL,
|
|
488
491
|
resource_type TEXT,
|
|
489
492
|
resource_id TEXT,
|
|
@@ -493,6 +496,7 @@ class UptimeStore {
|
|
|
493
496
|
created_at TEXT NOT NULL
|
|
494
497
|
)
|
|
495
498
|
`);
|
|
499
|
+
this.ensureColumn("audit_events", "workspace_id", "TEXT");
|
|
496
500
|
this.db.run(`
|
|
497
501
|
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
498
502
|
key TEXT PRIMARY KEY,
|
|
@@ -506,6 +510,7 @@ class UptimeStore {
|
|
|
506
510
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_incidents_monitor_status ON incidents(monitor_id, status)");
|
|
507
511
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_check_leases_until ON check_leases(leased_until)");
|
|
508
512
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_monitor_provenance_monitor ON monitor_provenance(monitor_id)");
|
|
513
|
+
this.db.run("CREATE INDEX IF NOT EXISTS idx_monitor_provenance_workspace_source ON monitor_provenance(workspace_id, source, source_id)");
|
|
509
514
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_probe_jobs_status_due ON probe_check_jobs(status, due_at)");
|
|
510
515
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_probe_jobs_probe_status ON probe_check_jobs(claimed_by_probe_id, status)");
|
|
511
516
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_probe_submissions_probe_time ON probe_submissions(probe_id, submitted_at DESC)");
|
|
@@ -514,6 +519,7 @@ class UptimeStore {
|
|
|
514
519
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_report_schedules_due ON report_schedules(enabled, next_run_at)");
|
|
515
520
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_report_runs_schedule_time ON report_runs(schedule_id, started_at DESC)");
|
|
516
521
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_audit_events_resource_time ON audit_events(resource_type, resource_id, created_at DESC)");
|
|
522
|
+
this.db.run("CREATE INDEX IF NOT EXISTS idx_audit_events_workspace_time ON audit_events(workspace_id, created_at DESC)");
|
|
517
523
|
this.db.run("CREATE INDEX IF NOT EXISTS idx_audit_events_time ON audit_events(created_at DESC)");
|
|
518
524
|
}
|
|
519
525
|
backup(destinationPath) {
|
|
@@ -563,6 +569,9 @@ class UptimeStore {
|
|
|
563
569
|
const normalized = normalizeCreateMonitor(input, options.allowBrowserPage === true);
|
|
564
570
|
if (this.mode === "hosted")
|
|
565
571
|
assertHostedTargetAllowed(normalized);
|
|
572
|
+
if (this.mode === "hosted" && normalized.kind === "browser_page" && normalized.enabled !== false) {
|
|
573
|
+
throw new Error("hosted browser_page monitors must remain disabled until browser evidence workers are configured");
|
|
574
|
+
}
|
|
566
575
|
const now = new Date().toISOString();
|
|
567
576
|
const workspaceId = normalizeWorkspaceId(options.workspaceId ?? input.workspaceId ?? "local");
|
|
568
577
|
const monitor = {
|
|
@@ -627,6 +636,9 @@ class UptimeStore {
|
|
|
627
636
|
const next = normalizeUpdateMonitor(current, input, updatedAt, options.allowBrowserPage === true);
|
|
628
637
|
if (this.mode === "hosted")
|
|
629
638
|
assertHostedTargetAllowed(next);
|
|
639
|
+
if (this.mode === "hosted" && next.kind === "browser_page" && next.enabled) {
|
|
640
|
+
throw new Error("hosted browser_page monitors must remain disabled until browser evidence workers are configured");
|
|
641
|
+
}
|
|
630
642
|
this.db.query(`UPDATE monitors SET
|
|
631
643
|
name = ?, kind = ?, url = ?, host = ?, port = ?, method = ?,
|
|
632
644
|
expected_status = ?, interval_seconds = ?, timeout_ms = ?,
|
|
@@ -923,8 +935,10 @@ class UptimeStore {
|
|
|
923
935
|
const action = normalizeAuditText(input.action, "Audit action", 160);
|
|
924
936
|
const createdAt = input.createdAt ?? new Date().toISOString();
|
|
925
937
|
assertIsoTimestamp(createdAt, "Audit event createdAt");
|
|
938
|
+
const workspaceId = input.workspaceId == null ? null : normalizeWorkspaceId(input.workspaceId);
|
|
926
939
|
const event = {
|
|
927
940
|
id: newId("aud"),
|
|
941
|
+
workspaceId,
|
|
928
942
|
action,
|
|
929
943
|
resourceType: normalizeNullableAuditText(input.resourceType, "Audit resourceType", 80),
|
|
930
944
|
resourceId: normalizeNullableAuditText(input.resourceId, "Audit resourceId", 160),
|
|
@@ -934,13 +948,17 @@ class UptimeStore {
|
|
|
934
948
|
createdAt
|
|
935
949
|
};
|
|
936
950
|
this.db.query(`INSERT INTO audit_events (
|
|
937
|
-
id, action, resource_type, resource_id, message, metadata_json, actor, created_at
|
|
938
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(event.id, event.action, event.resourceType, event.resourceId, event.message, JSON.stringify(event.metadata), event.actor, event.createdAt);
|
|
951
|
+
id, workspace_id, action, resource_type, resource_id, message, metadata_json, actor, created_at
|
|
952
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(event.id, event.workspaceId, event.action, event.resourceType, event.resourceId, event.message, JSON.stringify(event.metadata), event.actor, event.createdAt);
|
|
939
953
|
return event;
|
|
940
954
|
}
|
|
941
955
|
listAuditEvents(options = {}) {
|
|
942
956
|
const clauses = [];
|
|
943
957
|
const args = [];
|
|
958
|
+
if (options.workspaceId) {
|
|
959
|
+
clauses.push("workspace_id = ?");
|
|
960
|
+
args.push(normalizeWorkspaceId(options.workspaceId));
|
|
961
|
+
}
|
|
944
962
|
if (options.resourceType) {
|
|
945
963
|
clauses.push("resource_type = ?");
|
|
946
964
|
args.push(options.resourceType);
|
|
@@ -1032,21 +1050,24 @@ class UptimeStore {
|
|
|
1032
1050
|
const rows = this.db.query(`SELECT check_results.* FROM check_results JOIN monitors ON monitors.id = check_results.monitor_id ${where} ORDER BY checked_at DESC LIMIT ?`).all(...args);
|
|
1033
1051
|
return rows.map(checkResultFromRow);
|
|
1034
1052
|
}
|
|
1035
|
-
getProvenance(source, sourceId) {
|
|
1036
|
-
const
|
|
1053
|
+
getProvenance(source, sourceId, options = {}) {
|
|
1054
|
+
const workspaceId = options.workspaceId ? normalizeWorkspaceId(options.workspaceId) : undefined;
|
|
1055
|
+
const row = workspaceId ? this.db.query("SELECT * FROM monitor_provenance WHERE workspace_id = ? AND source = ? AND source_id = ?").get(workspaceId, source, sourceId) : this.db.query("SELECT * FROM monitor_provenance WHERE source = ? AND source_id = ? ORDER BY imported_at DESC LIMIT 1").get(source, sourceId);
|
|
1037
1056
|
return row ? provenanceFromRow(row) : null;
|
|
1038
1057
|
}
|
|
1039
1058
|
upsertMonitorProvenance(input) {
|
|
1040
1059
|
const importedAt = new Date().toISOString();
|
|
1060
|
+
const monitor = this.getMonitor(input.monitorId);
|
|
1061
|
+
const workspaceId = normalizeWorkspaceId(input.workspaceId ?? monitor?.workspaceId ?? "local");
|
|
1041
1062
|
this.db.query(`INSERT INTO monitor_provenance (
|
|
1042
|
-
monitor_id, source, source_id, source_label, imported_at, snapshot_json
|
|
1043
|
-
) VALUES (?, ?, ?, ?, ?, ?)
|
|
1044
|
-
ON CONFLICT(source, source_id) DO UPDATE SET
|
|
1063
|
+
workspace_id, monitor_id, source, source_id, source_label, imported_at, snapshot_json
|
|
1064
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
1065
|
+
ON CONFLICT(workspace_id, source, source_id) DO UPDATE SET
|
|
1045
1066
|
monitor_id = excluded.monitor_id,
|
|
1046
1067
|
source_label = excluded.source_label,
|
|
1047
1068
|
imported_at = excluded.imported_at,
|
|
1048
|
-
snapshot_json = excluded.snapshot_json`).run(input.monitorId, input.source, input.sourceId, input.sourceLabel ?? null, importedAt, JSON.stringify(input.snapshot));
|
|
1049
|
-
return this.getProvenance(input.source, input.sourceId);
|
|
1069
|
+
snapshot_json = excluded.snapshot_json`).run(workspaceId, input.monitorId, input.source, input.sourceId, input.sourceLabel ?? null, importedAt, JSON.stringify(input.snapshot));
|
|
1070
|
+
return this.getProvenance(input.source, input.sourceId, { workspaceId });
|
|
1050
1071
|
}
|
|
1051
1072
|
saveImportBatch(input) {
|
|
1052
1073
|
const createdAt = new Date().toISOString();
|
|
@@ -1229,6 +1250,49 @@ class UptimeStore {
|
|
|
1229
1250
|
this.db.run("PRAGMA foreign_keys = ON");
|
|
1230
1251
|
}
|
|
1231
1252
|
}
|
|
1253
|
+
ensureMonitorProvenanceWorkspaceScoped() {
|
|
1254
|
+
const row = this.db.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'monitor_provenance'").get();
|
|
1255
|
+
const columns = this.db.query("PRAGMA table_info(monitor_provenance)").all();
|
|
1256
|
+
const hasWorkspaceId = columns.some((column) => column.name === "workspace_id");
|
|
1257
|
+
const hasWorkspacePrimaryKey = Boolean(row?.sql?.includes("PRIMARY KEY (workspace_id, source, source_id)"));
|
|
1258
|
+
if (hasWorkspaceId && hasWorkspacePrimaryKey)
|
|
1259
|
+
return;
|
|
1260
|
+
this.db.run("PRAGMA foreign_keys = OFF");
|
|
1261
|
+
this.db.run("PRAGMA legacy_alter_table = ON");
|
|
1262
|
+
try {
|
|
1263
|
+
const migrate = this.db.transaction(() => {
|
|
1264
|
+
this.db.run("ALTER TABLE monitor_provenance RENAME TO monitor_provenance_old_workspace");
|
|
1265
|
+
this.db.run(`
|
|
1266
|
+
CREATE TABLE monitor_provenance (
|
|
1267
|
+
workspace_id TEXT NOT NULL DEFAULT 'local',
|
|
1268
|
+
monitor_id TEXT NOT NULL REFERENCES monitors(id) ON DELETE CASCADE,
|
|
1269
|
+
source TEXT NOT NULL,
|
|
1270
|
+
source_id TEXT NOT NULL,
|
|
1271
|
+
source_label TEXT,
|
|
1272
|
+
imported_at TEXT NOT NULL,
|
|
1273
|
+
snapshot_json TEXT NOT NULL,
|
|
1274
|
+
PRIMARY KEY (workspace_id, source, source_id)
|
|
1275
|
+
)
|
|
1276
|
+
`);
|
|
1277
|
+
const workspaceSelect = hasWorkspaceId ? "COALESCE(old.workspace_id, monitors.workspace_id, 'local')" : "COALESCE(monitors.workspace_id, 'local')";
|
|
1278
|
+
this.db.run(`
|
|
1279
|
+
INSERT OR REPLACE INTO monitor_provenance (
|
|
1280
|
+
workspace_id, monitor_id, source, source_id, source_label, imported_at, snapshot_json
|
|
1281
|
+
)
|
|
1282
|
+
SELECT
|
|
1283
|
+
${workspaceSelect}, old.monitor_id, old.source, old.source_id, old.source_label,
|
|
1284
|
+
old.imported_at, old.snapshot_json
|
|
1285
|
+
FROM monitor_provenance_old_workspace old
|
|
1286
|
+
LEFT JOIN monitors ON monitors.id = old.monitor_id
|
|
1287
|
+
`);
|
|
1288
|
+
this.db.run("DROP TABLE monitor_provenance_old_workspace");
|
|
1289
|
+
});
|
|
1290
|
+
migrate();
|
|
1291
|
+
} finally {
|
|
1292
|
+
this.db.run("PRAGMA legacy_alter_table = OFF");
|
|
1293
|
+
this.db.run("PRAGMA foreign_keys = ON");
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1232
1296
|
vacuumInto(backupPath) {
|
|
1233
1297
|
const quoted = backupPath.replace(/'/g, "''");
|
|
1234
1298
|
this.db.run(`VACUUM INTO '${quoted}'`);
|
|
@@ -1258,10 +1322,11 @@ function verifyBackupFile(backupPath) {
|
|
|
1258
1322
|
const missingTables = REQUIRED_TABLES.filter((table) => !tableExists(db, table));
|
|
1259
1323
|
const schemaVersion = missingTables.includes("schema_migrations") ? null : db.query("SELECT value FROM schema_migrations WHERE key = 'schema_version'").get()?.value ?? null;
|
|
1260
1324
|
const currentOk = missingTables.length === 0 && schemaVersion === CURRENT_SCHEMA_VERSION;
|
|
1325
|
+
const restorableV4 = schemaVersion === "4" && missingTables.length === 0;
|
|
1261
1326
|
const restorableV1 = schemaVersion === "1" && missingTables.every((table) => PROBE_TABLES.has(table) || REPORT_AUDIT_TABLES.has(table));
|
|
1262
1327
|
const restorableV2 = schemaVersion === "2" && missingTables.every((table) => REPORT_AUDIT_TABLES.has(table));
|
|
1263
1328
|
return {
|
|
1264
|
-
ok: integrity === "ok" && (currentOk || restorableV1 || restorableV2),
|
|
1329
|
+
ok: integrity === "ok" && (currentOk || restorableV4 || restorableV1 || restorableV2),
|
|
1265
1330
|
backupPath,
|
|
1266
1331
|
integrity,
|
|
1267
1332
|
schemaVersion,
|
|
@@ -1646,6 +1711,7 @@ function checkResultFromRow(row) {
|
|
|
1646
1711
|
}
|
|
1647
1712
|
function provenanceFromRow(row) {
|
|
1648
1713
|
return {
|
|
1714
|
+
workspaceId: row.workspace_id,
|
|
1649
1715
|
monitorId: row.monitor_id,
|
|
1650
1716
|
source: row.source,
|
|
1651
1717
|
sourceId: row.source_id,
|
|
@@ -1733,6 +1799,7 @@ function reportRunFromRow(row) {
|
|
|
1733
1799
|
function auditEventFromRow(row) {
|
|
1734
1800
|
return {
|
|
1735
1801
|
id: row.id,
|
|
1802
|
+
workspaceId: row.workspace_id,
|
|
1736
1803
|
action: row.action,
|
|
1737
1804
|
resourceType: row.resource_type,
|
|
1738
1805
|
resourceId: row.resource_id,
|
package/dist/types.d.ts
CHANGED
|
@@ -194,6 +194,7 @@ export interface ListReportRunsOptions {
|
|
|
194
194
|
}
|
|
195
195
|
export interface AuditEvent {
|
|
196
196
|
id: string;
|
|
197
|
+
workspaceId: string | null;
|
|
197
198
|
action: string;
|
|
198
199
|
resourceType: string | null;
|
|
199
200
|
resourceId: string | null;
|
|
@@ -203,6 +204,7 @@ export interface AuditEvent {
|
|
|
203
204
|
createdAt: string;
|
|
204
205
|
}
|
|
205
206
|
export interface RecordAuditEventInput {
|
|
207
|
+
workspaceId?: string | null;
|
|
206
208
|
action: string;
|
|
207
209
|
resourceType?: string | null;
|
|
208
210
|
resourceId?: string | null;
|
|
@@ -212,6 +214,7 @@ export interface RecordAuditEventInput {
|
|
|
212
214
|
createdAt?: string;
|
|
213
215
|
}
|
|
214
216
|
export interface ListAuditEventsOptions {
|
|
217
|
+
workspaceId?: string;
|
|
215
218
|
resourceType?: string;
|
|
216
219
|
resourceId?: string;
|
|
217
220
|
limit?: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ call AWS or mutate infrastructure.
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
uptime cloud plan --json > open-uptime-aws-plan.json
|
|
11
|
-
uptime cloud private-probe-config --probe-id prb_private_01 --machine-id private-probe-01 --
|
|
11
|
+
uptime cloud private-probe-config --probe-id prb_private_01 --machine-id private-probe-01 --json > private-probe-01-preflight.json
|
|
12
|
+
uptime cloud private-probe-config --probe-id prb_private_01 --machine-id private-probe-01 --env --allow-blocked-env > private-probe-01-review-only.env
|
|
12
13
|
```
|
|
13
14
|
|
|
14
15
|
Public package defaults are placeholders:
|
|
@@ -33,8 +34,10 @@ The app repo includes a hosted runtime `Dockerfile` and Terraform/OpenTofu
|
|
|
33
34
|
starter files in `infra/aws`. The plan output points to these files and keeps
|
|
34
35
|
`applyAllowed: false`.
|
|
35
36
|
|
|
36
|
-
`uptime cloud private-probe-config --env`
|
|
37
|
-
|
|
37
|
+
`uptime cloud private-probe-config --env` is blocked by default while hosted
|
|
38
|
+
probe routes remain fail-closed. It requires both a real `--probe-id` and the
|
|
39
|
+
explicit `--allow-blocked-env` review override; do not use that env output to
|
|
40
|
+
start a private probe until the JSON output says `canStart: true`.
|
|
38
41
|
|
|
39
42
|
## Preflight
|
|
40
43
|
|
|
@@ -398,11 +401,13 @@ routes are backed by cloud check jobs and cloud audit rows.
|
|
|
398
401
|
URLs, or probe private keys in task definitions. Use ECS `secrets.valueFrom`
|
|
399
402
|
refs such as `HASNA_UPTIME_HOSTED_TOKEN`.
|
|
400
403
|
- Do not run public probe workers against private targets.
|
|
401
|
-
- Do not enable public probe workers until their cloud check-job path calls
|
|
402
|
-
|
|
403
|
-
smokes for denied DNS answers, redirect-to-denied targets, and
|
|
404
|
-
pinning. The SDK
|
|
405
|
-
|
|
404
|
+
- Do not enable public probe workers until their cloud check-job path calls the
|
|
405
|
+
hosted public-check runner, records target-policy decision evidence, and
|
|
406
|
+
passes AWS smokes for denied DNS answers, redirect-to-denied targets, and
|
|
407
|
+
address pinning. The SDK and `uptime cloud public-checks run-due` path now
|
|
408
|
+
handle execution-time DNS and redirect enforcement for bounded smokes, but a
|
|
409
|
+
sustained public-probe worker loop is not active until it is wired to cloud
|
|
410
|
+
leases.
|
|
406
411
|
- Do not enable scheduler, public-probe, reporter, or migration workers against
|
|
407
412
|
the EFS SQLite bridge; those services need Postgres/cloud leases first.
|
|
408
413
|
- Do not expose dashboard/API routes without hosted auth and workspace checks.
|
|
@@ -416,8 +421,9 @@ routes are backed by cloud check jobs and cloud audit rows.
|
|
|
416
421
|
files, and AWS CloudFront/ALB configuration; restrict access accordingly.
|
|
417
422
|
- Do not treat local SQLite, local project DBs, or private-probe local state as cloud
|
|
418
423
|
authority after cutover.
|
|
419
|
-
- Do configure owner/project/environment/service/cost-center tags
|
|
420
|
-
|
|
424
|
+
- Do configure owner/project/environment/service/cost-center tags, AWS Budgets
|
|
425
|
+
notifications, approved human/on-call SNS subscriptions, and a non-secret
|
|
426
|
+
human delivery smoke in the approved infra root before live scale-out.
|
|
421
427
|
|
|
422
428
|
## Rollback
|
|
423
429
|
|
|
@@ -427,7 +427,8 @@ Default retention must be short until usage is measured.
|
|
|
427
427
|
|
|
428
428
|
The AWS Terraform starter exposes optional AWS Budgets alerts through
|
|
429
429
|
`monthly_budget_limit_usd` and `budget_alert_email_addresses`; the approved
|
|
430
|
-
infra root must set real
|
|
430
|
+
infra root must set real human/on-call notification targets and prove
|
|
431
|
+
non-secret delivery before live scale-out. Budget alarms and alert delivery are
|
|
431
432
|
required before browser evidence or public probe scale-out.
|
|
432
433
|
|
|
433
434
|
## Implementation Blockers
|
|
@@ -122,11 +122,12 @@ or delete workspace B data.
|
|
|
122
122
|
The target-state architecture uses one shared target policy at both
|
|
123
123
|
configuration time and execution time. The current hosted API implements
|
|
124
124
|
configuration-time checks for direct targets, and the SDK exposes
|
|
125
|
-
`runHostedHttpCheck`
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
125
|
+
`runHostedHttpCheck` plus a bounded hosted public-check service/CLI path for
|
|
126
|
+
workspace-scoped HTTP/TCP checks. Those paths perform runtime DNS resolution,
|
|
127
|
+
address pinning, redirect validation, DNS-rebinding protection, and
|
|
128
|
+
decision-record evidence. Long-running public probe execution stays disabled
|
|
129
|
+
until cloud check-job leases and the public-probe worker loop are wired to that
|
|
130
|
+
runner and validated in AWS.
|
|
130
131
|
|
|
131
132
|
Public probes must deny:
|
|
132
133
|
|
|
@@ -428,8 +429,10 @@ ECS/API/RDS/S3/probe lag/job backlog/delivery failures, and rollback commands.
|
|
|
428
429
|
- Hosted API reads are protected only by a broad bootstrap token, and the hosted
|
|
429
430
|
dashboard shell still fails closed; production-grade identity/RBAC is not
|
|
430
431
|
implemented yet.
|
|
431
|
-
- Outbound target policy for hosted HTTP
|
|
432
|
-
cloud public-
|
|
432
|
+
- Outbound target policy for hosted HTTP/TCP checks exists in the SDK and the
|
|
433
|
+
`uptime cloud public-checks run-due` operator path. The cloud public-probe
|
|
434
|
+
worker loop, durable check-job lease path, and sustained ECS liveness are not
|
|
435
|
+
wired yet.
|
|
433
436
|
- `@hasna/cloud` hybrid mode still returns SQLite, so it is not cloud-primary.
|
|
434
437
|
- The local cloud config currently points at a stale/non-resolving database host.
|
|
435
438
|
- Todos has unresolved conflicts that must be reconciled before cloud cutover.
|
|
@@ -449,9 +452,9 @@ ECS/API/RDS/S3/probe lag/job backlog/delivery failures, and rollback commands.
|
|
|
449
452
|
prefix list; that header value is secret-bearing Terraform/AWS configuration,
|
|
450
453
|
not public evidence. The private deployment evidence also includes a
|
|
451
454
|
representative SQLite EFS backup/restore drill with integrity/count checks.
|
|
452
|
-
It is not live: live scale-up is still blocked by edge/auth smokes,
|
|
453
|
-
|
|
454
|
-
static operator tokens.
|
|
455
|
+
It is not live: live scale-up is still blocked by edge/auth smokes, approved
|
|
456
|
+
human/on-call SNS subscriptions and delivery smoke, and production auth
|
|
457
|
+
hardening beyond scoped static operator tokens.
|
|
455
458
|
- Projects per-project cloud stores do not exist yet; current local
|
|
456
459
|
`project.db` stores are not enough for cloud-backed canvases or JSON Render.
|
|
457
460
|
- Browser/page monitoring lacks the artifact, redaction, retention, and storage
|
|
@@ -87,5 +87,5 @@ uptime --version
|
|
|
87
87
|
|
|
88
88
|
AWS plan, apply, and smoke tests should run only from an approved private
|
|
89
89
|
deployment root or infrastructure repository with remote state, locking, reviewed
|
|
90
|
-
KMS/secrets,
|
|
91
|
-
values in Terraform state.
|
|
90
|
+
KMS/secrets, approved human/on-call alert subscriptions, rollback instructions,
|
|
91
|
+
and no plaintext secret values in Terraform state.
|
|
@@ -19,7 +19,7 @@ alb_ingress_cidr_blocks = []
|
|
|
19
19
|
private_subnet_ids = ["subnet-replace-private-a", "subnet-replace-private-b"]
|
|
20
20
|
private_route_table_ids = ["rtb-replace-private"]
|
|
21
21
|
container_image = "123456789012.dkr.ecr.us-east-1.amazonaws.com/open-uptime@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
22
|
-
runtime_package_version = "0.1.
|
|
22
|
+
runtime_package_version = "0.1.24"
|
|
23
23
|
certificate_arn = null
|
|
24
24
|
hosted_zone_id = null
|
|
25
25
|
app_env_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:open-uptime/prod/app/env"
|
package/infra/aws/variables.tf
CHANGED
|
@@ -201,7 +201,7 @@ variable "container_image" {
|
|
|
201
201
|
variable "runtime_package_version" {
|
|
202
202
|
description = "Published @hasna/uptime package version that CodeBuild should build into the ECR image."
|
|
203
203
|
type = string
|
|
204
|
-
default = "0.1.
|
|
204
|
+
default = "0.1.24"
|
|
205
205
|
|
|
206
206
|
validation {
|
|
207
207
|
condition = can(regex("^[0-9]+\\.[0-9]+\\.[0-9]+(-[0-9A-Za-z.-]+)?$", var.runtime_package_version))
|
package/package.json
CHANGED