@aiassesstech/noah 0.1.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.
Files changed (149) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +41 -0
  3. package/README.md +170 -0
  4. package/SKILL.md +64 -0
  5. package/agent/AGENTS.md +138 -0
  6. package/agent/IDENTITY.md +12 -0
  7. package/agent/SOUL.md +143 -0
  8. package/dist/alert/alert-system.d.ts +47 -0
  9. package/dist/alert/alert-system.d.ts.map +1 -0
  10. package/dist/alert/alert-system.js +117 -0
  11. package/dist/alert/alert-system.js.map +1 -0
  12. package/dist/alert/commander-escalation.d.ts +26 -0
  13. package/dist/alert/commander-escalation.d.ts.map +1 -0
  14. package/dist/alert/commander-escalation.js +61 -0
  15. package/dist/alert/commander-escalation.js.map +1 -0
  16. package/dist/cli/bin.d.ts +8 -0
  17. package/dist/cli/bin.d.ts.map +1 -0
  18. package/dist/cli/bin.js +12 -0
  19. package/dist/cli/bin.js.map +1 -0
  20. package/dist/cli/runner.d.ts +13 -0
  21. package/dist/cli/runner.d.ts.map +1 -0
  22. package/dist/cli/runner.js +95 -0
  23. package/dist/cli/runner.js.map +1 -0
  24. package/dist/cli/setup.d.ts +34 -0
  25. package/dist/cli/setup.d.ts.map +1 -0
  26. package/dist/cli/setup.js +237 -0
  27. package/dist/cli/setup.js.map +1 -0
  28. package/dist/clock/financial-runway.d.ts +32 -0
  29. package/dist/clock/financial-runway.d.ts.map +1 -0
  30. package/dist/clock/financial-runway.js +46 -0
  31. package/dist/clock/financial-runway.js.map +1 -0
  32. package/dist/clock/internal-clock.d.ts +53 -0
  33. package/dist/clock/internal-clock.d.ts.map +1 -0
  34. package/dist/clock/internal-clock.js +177 -0
  35. package/dist/clock/internal-clock.js.map +1 -0
  36. package/dist/clock/phase-machine.d.ts +36 -0
  37. package/dist/clock/phase-machine.d.ts.map +1 -0
  38. package/dist/clock/phase-machine.js +123 -0
  39. package/dist/clock/phase-machine.js.map +1 -0
  40. package/dist/clock/phase-transitions.d.ts +9 -0
  41. package/dist/clock/phase-transitions.d.ts.map +1 -0
  42. package/dist/clock/phase-transitions.js +58 -0
  43. package/dist/clock/phase-transitions.js.map +1 -0
  44. package/dist/deviation/corridor-classifier.d.ts +15 -0
  45. package/dist/deviation/corridor-classifier.d.ts.map +1 -0
  46. package/dist/deviation/corridor-classifier.js +21 -0
  47. package/dist/deviation/corridor-classifier.js.map +1 -0
  48. package/dist/deviation/deviation-calculator.d.ts +25 -0
  49. package/dist/deviation/deviation-calculator.d.ts.map +1 -0
  50. package/dist/deviation/deviation-calculator.js +53 -0
  51. package/dist/deviation/deviation-calculator.js.map +1 -0
  52. package/dist/deviation/recommendations.d.ts +13 -0
  53. package/dist/deviation/recommendations.d.ts.map +1 -0
  54. package/dist/deviation/recommendations.js +54 -0
  55. package/dist/deviation/recommendations.js.map +1 -0
  56. package/dist/flight-plan/corridor.d.ts +31 -0
  57. package/dist/flight-plan/corridor.d.ts.map +1 -0
  58. package/dist/flight-plan/corridor.js +49 -0
  59. package/dist/flight-plan/corridor.js.map +1 -0
  60. package/dist/flight-plan/default-plan.d.ts +16 -0
  61. package/dist/flight-plan/default-plan.d.ts.map +1 -0
  62. package/dist/flight-plan/default-plan.js +166 -0
  63. package/dist/flight-plan/default-plan.js.map +1 -0
  64. package/dist/flight-plan/flight-plan-engine.d.ts +37 -0
  65. package/dist/flight-plan/flight-plan-engine.d.ts.map +1 -0
  66. package/dist/flight-plan/flight-plan-engine.js +94 -0
  67. package/dist/flight-plan/flight-plan-engine.js.map +1 -0
  68. package/dist/flight-plan/interpolation.d.ts +48 -0
  69. package/dist/flight-plan/interpolation.d.ts.map +1 -0
  70. package/dist/flight-plan/interpolation.js +179 -0
  71. package/dist/flight-plan/interpolation.js.map +1 -0
  72. package/dist/go-no-go/temporal-decision-matrix.d.ts +30 -0
  73. package/dist/go-no-go/temporal-decision-matrix.d.ts.map +1 -0
  74. package/dist/go-no-go/temporal-decision-matrix.js +94 -0
  75. package/dist/go-no-go/temporal-decision-matrix.js.map +1 -0
  76. package/dist/index.d.ts +31 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +37 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/integration/event-emitter.d.ts +14 -0
  81. package/dist/integration/event-emitter.d.ts.map +1 -0
  82. package/dist/integration/event-emitter.js +24 -0
  83. package/dist/integration/event-emitter.js.map +1 -0
  84. package/dist/integration/grillo-hook.d.ts +106 -0
  85. package/dist/integration/grillo-hook.d.ts.map +1 -0
  86. package/dist/integration/grillo-hook.js +202 -0
  87. package/dist/integration/grillo-hook.js.map +1 -0
  88. package/dist/plugin.d.ts +20 -0
  89. package/dist/plugin.d.ts.map +1 -0
  90. package/dist/plugin.js +480 -0
  91. package/dist/plugin.js.map +1 -0
  92. package/dist/store/hash-chain.d.ts +35 -0
  93. package/dist/store/hash-chain.d.ts.map +1 -0
  94. package/dist/store/hash-chain.js +64 -0
  95. package/dist/store/hash-chain.js.map +1 -0
  96. package/dist/store/json-store.d.ts +47 -0
  97. package/dist/store/json-store.d.ts.map +1 -0
  98. package/dist/store/json-store.js +213 -0
  99. package/dist/store/json-store.js.map +1 -0
  100. package/dist/store/temporal-state-store.d.ts +7 -0
  101. package/dist/store/temporal-state-store.d.ts.map +1 -0
  102. package/dist/store/temporal-state-store.js +7 -0
  103. package/dist/store/temporal-state-store.js.map +1 -0
  104. package/dist/store/types.d.ts +27 -0
  105. package/dist/store/types.d.ts.map +1 -0
  106. package/dist/store/types.js +8 -0
  107. package/dist/store/types.js.map +1 -0
  108. package/dist/types/assessment-record.d.ts +34 -0
  109. package/dist/types/assessment-record.d.ts.map +1 -0
  110. package/dist/types/assessment-record.js +9 -0
  111. package/dist/types/assessment-record.js.map +1 -0
  112. package/dist/types/events.d.ts +57 -0
  113. package/dist/types/events.d.ts.map +1 -0
  114. package/dist/types/events.js +8 -0
  115. package/dist/types/events.js.map +1 -0
  116. package/dist/types/flight-plan.d.ts +59 -0
  117. package/dist/types/flight-plan.d.ts.map +1 -0
  118. package/dist/types/flight-plan.js +8 -0
  119. package/dist/types/flight-plan.js.map +1 -0
  120. package/dist/types/guidance.d.ts +57 -0
  121. package/dist/types/guidance.d.ts.map +1 -0
  122. package/dist/types/guidance.js +8 -0
  123. package/dist/types/guidance.js.map +1 -0
  124. package/dist/types/index.d.ts +10 -0
  125. package/dist/types/index.d.ts.map +1 -0
  126. package/dist/types/index.js +10 -0
  127. package/dist/types/index.js.map +1 -0
  128. package/dist/types/lifecycle.d.ts +56 -0
  129. package/dist/types/lifecycle.d.ts.map +1 -0
  130. package/dist/types/lifecycle.js +33 -0
  131. package/dist/types/lifecycle.js.map +1 -0
  132. package/dist/types/temporal-state.d.ts +53 -0
  133. package/dist/types/temporal-state.d.ts.map +1 -0
  134. package/dist/types/temporal-state.js +8 -0
  135. package/dist/types/temporal-state.js.map +1 -0
  136. package/dist/waypoints/inertial-monitor.d.ts +65 -0
  137. package/dist/waypoints/inertial-monitor.d.ts.map +1 -0
  138. package/dist/waypoints/inertial-monitor.js +125 -0
  139. package/dist/waypoints/inertial-monitor.js.map +1 -0
  140. package/dist/waypoints/triggers.d.ts +18 -0
  141. package/dist/waypoints/triggers.d.ts.map +1 -0
  142. package/dist/waypoints/triggers.js +59 -0
  143. package/dist/waypoints/triggers.js.map +1 -0
  144. package/dist/waypoints/waypoint-manager.d.ts +46 -0
  145. package/dist/waypoints/waypoint-manager.d.ts.map +1 -0
  146. package/dist/waypoints/waypoint-manager.js +82 -0
  147. package/dist/waypoints/waypoint-manager.js.map +1 -0
  148. package/openclaw.plugin.json +25 -0
  149. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-store.d.ts","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA8DjE,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,eAAe;IAMnC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;YAEF,SAAS;IAMvB;;;OAGG;YACW,WAAW;YAQX,QAAQ;IAUhB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKxD,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAqBvE,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA0B1F,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAOlF,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAO9D,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Noah — JSON File Store (Phase 1 Persistence)
3
+ *
4
+ * Zero-infrastructure persistence using atomic JSON file writes.
5
+ * Same proven pattern from Grillo: temp file → rename for atomicity.
6
+ *
7
+ * Directory layout:
8
+ * .noah-data/
9
+ * ├── state/{agentId}.json
10
+ * ├── flight-plans/{planId}.json
11
+ * ├── assessments/{agentId}/{cycle}-{timestamp}.json
12
+ * ├── waypoints/{agentId}.json
13
+ * └── audit/{agentId}-chain.json
14
+ */
15
+ import { readFile, writeFile, mkdir, readdir, rename } from 'node:fs/promises';
16
+ import { existsSync } from 'node:fs';
17
+ import { join } from 'node:path';
18
+ import { randomUUID } from 'node:crypto';
19
+ import { GENESIS_HASH } from './hash-chain.js';
20
+ // ================================================================
21
+ // Serialization Helpers
22
+ // ================================================================
23
+ function serializeState(state) {
24
+ return JSON.stringify(state, (_key, value) => {
25
+ if (value instanceof Date)
26
+ return value.toISOString();
27
+ return value;
28
+ }, 2);
29
+ }
30
+ function deserializeState(json) {
31
+ const raw = JSON.parse(json);
32
+ return {
33
+ ...raw,
34
+ initializationTimestamp: new Date(raw.initializationTimestamp),
35
+ phaseEntryTimestamp: new Date(raw.phaseEntryTimestamp),
36
+ lastAssessmentTimestamp: raw.lastAssessmentTimestamp ? new Date(raw.lastAssessmentTimestamp) : null,
37
+ lastVetoTimestamp: raw.lastVetoTimestamp ? new Date(raw.lastVetoTimestamp) : null,
38
+ lastIncidentTimestamp: raw.lastIncidentTimestamp ? new Date(raw.lastIncidentTimestamp) : null,
39
+ lastConversionTimestamp: raw.lastConversionTimestamp ? new Date(raw.lastConversionTimestamp) : null,
40
+ lastUpdated: new Date(raw.lastUpdated),
41
+ recentAssessments: raw.recentAssessments.map(deserializeRecord),
42
+ };
43
+ }
44
+ function serializeRecord(record) {
45
+ return JSON.stringify(record, (_key, value) => {
46
+ if (value instanceof Date)
47
+ return value.toISOString();
48
+ return value;
49
+ }, 2);
50
+ }
51
+ function deserializeRecord(raw) {
52
+ return {
53
+ ...raw,
54
+ timestamp: new Date(raw.timestamp),
55
+ };
56
+ }
57
+ function serializePlan(plan) {
58
+ return JSON.stringify(plan, (_key, value) => {
59
+ if (value instanceof Date)
60
+ return value.toISOString();
61
+ return value;
62
+ }, 2);
63
+ }
64
+ function deserializePlan(json) {
65
+ const raw = JSON.parse(json);
66
+ return {
67
+ ...raw,
68
+ createdAt: new Date(raw.createdAt),
69
+ };
70
+ }
71
+ // ================================================================
72
+ // JSON Store Implementation
73
+ // ================================================================
74
+ export class JsonTemporalStore {
75
+ dataDir;
76
+ constructor(config) {
77
+ this.dataDir = config.dataDir;
78
+ }
79
+ // ── Internal helpers ──
80
+ stateDir() { return join(this.dataDir, 'state'); }
81
+ plansDir() { return join(this.dataDir, 'flight-plans'); }
82
+ assessmentsDir(agentId) { return join(this.dataDir, 'assessments', agentId); }
83
+ waypointsDir() { return join(this.dataDir, 'waypoints'); }
84
+ auditDir() { return join(this.dataDir, 'audit'); }
85
+ async ensureDir(dir) {
86
+ if (!existsSync(dir)) {
87
+ await mkdir(dir, { recursive: true });
88
+ }
89
+ }
90
+ /**
91
+ * Atomic write: write to a temp file, then rename.
92
+ * Prevents partial writes from corrupting data.
93
+ */
94
+ async atomicWrite(filePath, data) {
95
+ const dir = filePath.substring(0, filePath.lastIndexOf('/'));
96
+ await this.ensureDir(dir);
97
+ const tmp = `${filePath}.${randomUUID()}.tmp`;
98
+ await writeFile(tmp, data, 'utf-8');
99
+ await rename(tmp, filePath);
100
+ }
101
+ async readJson(filePath) {
102
+ try {
103
+ return await readFile(filePath, 'utf-8');
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ // ── Temporal State ──
110
+ async getState(agentId) {
111
+ const json = await this.readJson(join(this.stateDir(), `${agentId}.json`));
112
+ return json ? deserializeState(json) : null;
113
+ }
114
+ async saveState(state) {
115
+ await this.atomicWrite(join(this.stateDir(), `${state.agentId}.json`), serializeState(state));
116
+ }
117
+ // ── Flight Plans ──
118
+ async getActiveFlightPlan(agentId) {
119
+ await this.ensureDir(this.plansDir());
120
+ const dir = this.plansDir();
121
+ let files;
122
+ try {
123
+ files = await readdir(dir);
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ for (const file of files) {
129
+ const json = await this.readJson(join(dir, file));
130
+ if (!json)
131
+ continue;
132
+ const plan = deserializePlan(json);
133
+ if (plan.agentId === agentId && plan.status === 'ACTIVE') {
134
+ return plan;
135
+ }
136
+ }
137
+ return null;
138
+ }
139
+ async saveFlightPlan(plan) {
140
+ await this.atomicWrite(join(this.plansDir(), `${plan.id}.json`), serializePlan(plan));
141
+ }
142
+ async supersedePlan(planId) {
143
+ const filePath = join(this.plansDir(), `${planId}.json`);
144
+ const json = await this.readJson(filePath);
145
+ if (!json)
146
+ return;
147
+ const plan = deserializePlan(json);
148
+ plan.status = 'SUPERSEDED';
149
+ await this.atomicWrite(filePath, serializePlan(plan));
150
+ }
151
+ // ── Assessment Records ──
152
+ async appendAssessmentRecord(agentId, record) {
153
+ const dir = this.assessmentsDir(agentId);
154
+ const filename = `${String(record.assessmentCycle).padStart(6, '0')}-${record.timestamp instanceof Date ? record.timestamp.toISOString() : record.timestamp}.json`;
155
+ await this.atomicWrite(join(dir, filename), serializeRecord(record));
156
+ }
157
+ async getAssessmentRecords(agentId, limit) {
158
+ const dir = this.assessmentsDir(agentId);
159
+ await this.ensureDir(dir);
160
+ let files;
161
+ try {
162
+ files = await readdir(dir);
163
+ }
164
+ catch {
165
+ return [];
166
+ }
167
+ // Sort descending (newest first) by filename (which is cycle-padded + timestamp)
168
+ files.sort().reverse();
169
+ if (limit !== undefined) {
170
+ files = files.slice(0, limit);
171
+ }
172
+ const records = [];
173
+ for (const file of files) {
174
+ const json = await this.readJson(join(dir, file));
175
+ if (json)
176
+ records.push(deserializeRecord(JSON.parse(json)));
177
+ }
178
+ return records;
179
+ }
180
+ async getLastAssessmentRecord(agentId) {
181
+ const records = await this.getAssessmentRecords(agentId, 1);
182
+ return records[0] ?? null;
183
+ }
184
+ // ── Waypoint Tracking ──
185
+ async getTriggeredWaypointIds(agentId) {
186
+ const json = await this.readJson(join(this.waypointsDir(), `${agentId}.json`));
187
+ if (!json)
188
+ return new Set();
189
+ const arr = JSON.parse(json);
190
+ return new Set(arr);
191
+ }
192
+ async saveTriggeredWaypoint(agentId, waypointId) {
193
+ const existing = await this.getTriggeredWaypointIds(agentId);
194
+ existing.add(waypointId);
195
+ await this.atomicWrite(join(this.waypointsDir(), `${agentId}.json`), JSON.stringify([...existing], null, 2));
196
+ }
197
+ // ── Audit / Hash Chain ──
198
+ async getLastHash(agentId) {
199
+ const lastRecord = await this.getLastAssessmentRecord(agentId);
200
+ return lastRecord ? lastRecord.cryptographicHash : GENESIS_HASH;
201
+ }
202
+ // ── Cleanup (for testing) ──
203
+ async clear() {
204
+ const { rm } = await import('node:fs/promises');
205
+ try {
206
+ await rm(this.dataDir, { recursive: true, force: true });
207
+ }
208
+ catch {
209
+ // Directory may not exist
210
+ }
211
+ }
212
+ }
213
+ //# sourceMappingURL=json-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-store.js","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Noah — Temporal State Store (Re-export)
3
+ *
4
+ * Re-exports the abstract interface for external consumers.
5
+ */
6
+ export type { TemporalStateStore, JsonStoreConfig } from './types.js';
7
+ //# sourceMappingURL=temporal-state-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-state-store.d.ts","sourceRoot":"","sources":["../../src/store/temporal-state-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Noah — Temporal State Store (Re-export)
3
+ *
4
+ * Re-exports the abstract interface for external consumers.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=temporal-state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-state-store.js","sourceRoot":"","sources":["../../src/store/temporal-state-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Noah — Store Type Definitions
3
+ *
4
+ * Abstract interfaces for temporal data persistence.
5
+ * Phase 1: JSON file store. Phase 2: PostgreSQL adapter.
6
+ */
7
+ import { TemporalState } from '../types/temporal-state.js';
8
+ import { TemporalAssessmentRecord } from '../types/assessment-record.js';
9
+ import { EthicalFlightPlan } from '../types/flight-plan.js';
10
+ export interface TemporalStateStore {
11
+ getState(agentId: string): Promise<TemporalState | null>;
12
+ saveState(state: TemporalState): Promise<void>;
13
+ getActiveFlightPlan(agentId: string): Promise<EthicalFlightPlan | null>;
14
+ saveFlightPlan(plan: EthicalFlightPlan): Promise<void>;
15
+ supersedePlan(planId: string): Promise<void>;
16
+ appendAssessmentRecord(agentId: string, record: TemporalAssessmentRecord): Promise<void>;
17
+ getAssessmentRecords(agentId: string, limit?: number): Promise<TemporalAssessmentRecord[]>;
18
+ getLastAssessmentRecord(agentId: string): Promise<TemporalAssessmentRecord | null>;
19
+ getTriggeredWaypointIds(agentId: string): Promise<Set<string>>;
20
+ saveTriggeredWaypoint(agentId: string, waypointId: string): Promise<void>;
21
+ getLastHash(agentId: string): Promise<string>;
22
+ }
23
+ export interface JsonStoreConfig {
24
+ /** Root directory for all Noah data. Default: .noah-data */
25
+ dataDir: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACzD,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACxE,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7C,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC3F,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IAGnF,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG1E,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AAMD,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Noah — Store Type Definitions
3
+ *
4
+ * Abstract interfaces for temporal data persistence.
5
+ * Phase 1: JSON file store. Phase 2: PostgreSQL adapter.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Noah — Temporal Assessment Record Types
3
+ *
4
+ * Each Grillo assessment is enriched with temporal context
5
+ * and stored as an immutable, hash-chained record.
6
+ * MVP spec Section 3.5.
7
+ */
8
+ import { GuidanceStatus, DeviationVector, ObservedScores } from './guidance.js';
9
+ import { ExpectedScores } from './flight-plan.js';
10
+ import { LifecyclePhase } from './lifecycle.js';
11
+ export type Archetype = 'WELL_ADJUSTED' | 'PSYCHOPATH' | 'MISGUIDED' | 'MANIPULATIVE';
12
+ export interface TemporalAssessmentRecord {
13
+ assessmentId: string;
14
+ timestamp: Date;
15
+ assessmentCycle: number;
16
+ observedScores: ObservedScores;
17
+ archetype: Archetype;
18
+ variance: number;
19
+ expectedScores: ExpectedScores;
20
+ deviationVector: DeviationVector;
21
+ deviationMagnitude: number;
22
+ guidanceStatus: GuidanceStatus;
23
+ temporalContext: {
24
+ operationalAgeDays: number;
25
+ lifecyclePhase: LifecyclePhase;
26
+ financialRunwayDays: number;
27
+ assessmentCycle: number;
28
+ timeSinceLastVetoDays: number | null;
29
+ activeWaypointId: string | null;
30
+ };
31
+ cryptographicHash: string;
32
+ previousHash: string;
33
+ }
34
+ //# sourceMappingURL=assessment-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment-record.d.ts","sourceRoot":"","sources":["../../src/types/assessment-record.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAiB,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,CAAC;AAMtF,MAAM,WAAW,wBAAwB;IAEvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IAGxB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IAGjB,cAAc,EAAE,cAAc,CAAC;IAG/B,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAG3B,cAAc,EAAE,cAAc,CAAC;IAG/B,eAAe,EAAE;QACf,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,cAAc,CAAC;QAC/B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;IAGF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Noah — Temporal Assessment Record Types
3
+ *
4
+ * Each Grillo assessment is enriched with temporal context
5
+ * and stored as an immutable, hash-chained record.
6
+ * MVP spec Section 3.5.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=assessment-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment-record.js","sourceRoot":"","sources":["../../src/types/assessment-record.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Noah — Event Types
3
+ *
4
+ * Clock update events and waypoint trigger results.
5
+ * MVP spec Section 5.1.
6
+ */
7
+ import { ObservedScores } from './guidance.js';
8
+ import { EthicalWaypoint } from './flight-plan.js';
9
+ export type ClockUpdateEvent = {
10
+ type: 'ASSESSMENT_COMPLETE';
11
+ assessmentId: string;
12
+ scores: ObservedScores;
13
+ } | {
14
+ type: 'VETO_EXERCISED';
15
+ vetoId: string;
16
+ dimension: string;
17
+ } | {
18
+ type: 'ADVERSARIAL_ENCOUNTER';
19
+ incidentId: string;
20
+ severity: string;
21
+ } | {
22
+ type: 'CONVERSION_SUCCESS';
23
+ subscriberId: string;
24
+ } | {
25
+ type: 'FINANCIAL_UPDATE';
26
+ balance: number;
27
+ burnRate: number;
28
+ revenue: number;
29
+ } | {
30
+ type: 'PERIODIC_TICK';
31
+ };
32
+ export interface TriggeredWaypoint {
33
+ waypoint: EthicalWaypoint;
34
+ triggeredAt: Date;
35
+ triggerReason: string;
36
+ }
37
+ export type AlertSeverity = 'INFO' | 'WARNING' | 'CRITICAL';
38
+ export interface TemporalAlert {
39
+ id: string;
40
+ severity: AlertSeverity;
41
+ dimension: string | null;
42
+ message: string;
43
+ recommendations: string[];
44
+ requiresCommanderReview: boolean;
45
+ timestamp: Date;
46
+ acknowledged: boolean;
47
+ }
48
+ export interface InertialMonitoringState {
49
+ lastFixPosition: ObservedScores;
50
+ lastFixTimestamp: Date;
51
+ lastFixCycle: number;
52
+ vetoCountSinceLastFix: number;
53
+ incidentCountSinceLastFix: number;
54
+ conversionCountSinceLastFix: number;
55
+ confidenceLevel: number;
56
+ }
57
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAM9B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,IAAI,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,cAAc,CAAC;IAChC,gBAAgB,EAAE,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,2BAA2B,EAAE,MAAM,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Noah — Event Types
3
+ *
4
+ * Clock update events and waypoint trigger results.
5
+ * MVP spec Section 5.1.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Noah — Ethical Flight Plan Types
3
+ *
4
+ * Defines the flight plan, waypoints, corridor bounds, and triggers.
5
+ * MVP spec Section 3.4.
6
+ */
7
+ import { LifecyclePhase } from './lifecycle.js';
8
+ export interface CorridorBounds {
9
+ /** Absolute deviation <= this = GREEN (on course) */
10
+ greenThreshold: number;
11
+ /** Absolute deviation <= this = YELLOW (approaching boundary), > = RED */
12
+ yellowThreshold: number;
13
+ }
14
+ export interface DimensionExpectation {
15
+ min: number;
16
+ target: number;
17
+ max: number;
18
+ }
19
+ export interface ExpectedScores {
20
+ lying: DimensionExpectation;
21
+ cheating: DimensionExpectation;
22
+ stealing: DimensionExpectation;
23
+ harm: DimensionExpectation;
24
+ }
25
+ export type WaypointEventType = 'FIRST_CONVERSION' | 'FIRST_VETO' | 'FIRST_ADVERSARIAL' | 'FIRST_LIEUTENANT' | 'ECONOMIC_SUSTAINABILITY' | 'ALLIANCE_THRESHOLD';
26
+ export type WaypointTrigger = {
27
+ type: 'CALENDAR';
28
+ dayNumber: number;
29
+ } | {
30
+ type: 'CYCLE';
31
+ assessmentCycle: number;
32
+ } | {
33
+ type: 'EVENT';
34
+ eventType: WaypointEventType;
35
+ } | {
36
+ type: 'PHASE_ENTRY';
37
+ phase: LifecyclePhase;
38
+ };
39
+ export interface EthicalWaypoint {
40
+ id: string;
41
+ sequenceNumber: number;
42
+ trigger: WaypointTrigger;
43
+ expectedScores: ExpectedScores;
44
+ corridor: CorridorBounds;
45
+ assessmentType: 'FULL_120' | 'ABBREVIATED' | 'DIMENSION_SPECIFIC';
46
+ description: string;
47
+ }
48
+ export interface EthicalFlightPlan {
49
+ id: string;
50
+ agentId: string;
51
+ version: number;
52
+ createdBy: string;
53
+ createdAt: Date;
54
+ status: 'ACTIVE' | 'SUPERSEDED' | 'DRAFT';
55
+ corridorDefaults: CorridorBounds;
56
+ waypoints: EthicalWaypoint[];
57
+ cryptographicHash: string;
58
+ }
59
+ //# sourceMappingURL=flight-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-plan.d.ts","sourceRoot":"","sources":["../../src/types/flight-plan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAMD,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,YAAY,GACZ,mBAAmB,GACnB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAMnD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,UAAU,GAAG,aAAa,GAAG,oBAAoB,CAAC;IAClE,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;IAC1C,gBAAgB,EAAE,cAAc,CAAC;IACjC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Noah — Ethical Flight Plan Types
3
+ *
4
+ * Defines the flight plan, waypoints, corridor bounds, and triggers.
5
+ * MVP spec Section 3.4.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=flight-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-plan.js","sourceRoot":"","sources":["../../src/types/flight-plan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Noah — Guidance Types
3
+ *
4
+ * Deviation results, guidance colors, and the recommendation model.
5
+ * MVP spec Section 6.2.
6
+ */
7
+ import { LifecyclePhase } from './lifecycle.js';
8
+ export type GuidanceColor = 'GREEN' | 'YELLOW' | 'RED';
9
+ export interface ObservedScores {
10
+ lying: number;
11
+ cheating: number;
12
+ stealing: number;
13
+ harm: number;
14
+ }
15
+ export interface DeviationVector {
16
+ lying: number;
17
+ cheating: number;
18
+ stealing: number;
19
+ harm: number;
20
+ }
21
+ export interface GuidanceStatus {
22
+ lying: GuidanceColor;
23
+ cheating: GuidanceColor;
24
+ stealing: GuidanceColor;
25
+ harm: GuidanceColor;
26
+ overall: GuidanceColor;
27
+ }
28
+ export interface DeviationResult {
29
+ deviationVector: DeviationVector;
30
+ deviationMagnitude: number;
31
+ guidanceStatus: GuidanceStatus;
32
+ temporalContext: TemporalContext;
33
+ requiresCommanderReview: boolean;
34
+ recommendations: string[];
35
+ }
36
+ export interface TemporalContext {
37
+ operationalAgeDays: number;
38
+ lifecyclePhase: LifecyclePhase;
39
+ financialRunwayDays: number;
40
+ assessmentCycle: number;
41
+ timeSinceLastVetoDays: number | null;
42
+ activeWaypointId: string | null;
43
+ }
44
+ export type TemporalDecision = 'GO' | 'CAUTION' | 'NO_GO';
45
+ export interface TemporalGoNoGoResult {
46
+ /** Standard assessment pass/fail from Grillo */
47
+ assessmentPassed: boolean;
48
+ /** Current guidance color from flight plan deviation */
49
+ guidanceStatus: GuidanceColor;
50
+ /** Current lifecycle phase */
51
+ lifecyclePhase: LifecyclePhase;
52
+ /** Phase-based risk factors */
53
+ temporalRiskFactors: string[];
54
+ /** Final decision incorporating temporal context */
55
+ decision: TemporalDecision;
56
+ }
57
+ //# sourceMappingURL=guidance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../src/types/guidance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAMvD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAMD,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAMD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,gBAAgB,EAAE,OAAO,CAAC;IAE1B,wDAAwD;IACxD,cAAc,EAAE,aAAa,CAAC;IAE9B,8BAA8B;IAC9B,cAAc,EAAE,cAAc,CAAC;IAE/B,+BAA+B;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B,oDAAoD;IACpD,QAAQ,EAAE,gBAAgB,CAAC;CAC5B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Noah — Guidance Types
3
+ *
4
+ * Deviation results, guidance colors, and the recommendation model.
5
+ * MVP spec Section 6.2.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/types/guidance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Noah — Type Barrel Export
3
+ */
4
+ export * from './lifecycle.js';
5
+ export * from './flight-plan.js';
6
+ export * from './guidance.js';
7
+ export * from './temporal-state.js';
8
+ export * from './assessment-record.js';
9
+ export * from './events.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Noah — Type Barrel Export
3
+ */
4
+ export * from './lifecycle.js';
5
+ export * from './flight-plan.js';
6
+ export * from './guidance.js';
7
+ export * from './temporal-state.js';
8
+ export * from './assessment-record.js';
9
+ export * from './events.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}