@haaaiawd/second-nature 0.2.2 → 0.2.4

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 (42) hide show
  1. package/openclaw.plugin.json +1 -1
  2. package/package.json +1 -1
  3. package/runtime/cli/ops/heartbeat-surface.d.ts +20 -0
  4. package/runtime/cli/ops/heartbeat-surface.js +72 -1
  5. package/runtime/cli/ops/ops-router.js +115 -31
  6. package/runtime/connectors/base/contract.d.ts +10 -0
  7. package/runtime/connectors/base/policy-bound-write-dispatch.d.ts +29 -0
  8. package/runtime/connectors/base/policy-bound-write-dispatch.js +127 -0
  9. package/runtime/core/second-nature/control-plane/heartbeat-orchestrator.js +336 -25
  10. package/runtime/core/second-nature/control-plane/real-runtime-spine.d.ts +33 -0
  11. package/runtime/core/second-nature/control-plane/real-runtime-spine.js +41 -0
  12. package/runtime/core/second-nature/guidance/impulse-context-reader.d.ts +44 -0
  13. package/runtime/core/second-nature/guidance/impulse-context-reader.js +84 -0
  14. package/runtime/core/second-nature/guidance/impulse-context-writer.d.ts +39 -0
  15. package/runtime/core/second-nature/guidance/impulse-context-writer.js +70 -0
  16. package/runtime/core/second-nature/perception/judgment-engine.d.ts +2 -0
  17. package/runtime/core/second-nature/perception/judgment-engine.js +11 -1
  18. package/runtime/core/second-nature/perception/perception-builder.d.ts +6 -2
  19. package/runtime/core/second-nature/perception/perception-builder.js +18 -7
  20. package/runtime/core/second-nature/quiet-dream/daily-rhythm-scheduler.d.ts +43 -0
  21. package/runtime/core/second-nature/quiet-dream/daily-rhythm-scheduler.js +157 -0
  22. package/runtime/core/second-nature/quiet-dream/memory-projection-lifecycle.js +17 -16
  23. package/runtime/core/second-nature/quiet-dream/quiet-daily-review-builder.d.ts +3 -0
  24. package/runtime/core/second-nature/quiet-dream/quiet-daily-review-builder.js +4 -0
  25. package/runtime/observability/living-loop-health-gate.d.ts +45 -0
  26. package/runtime/observability/living-loop-health-gate.js +94 -0
  27. package/runtime/observability/loop-status.d.ts +11 -0
  28. package/runtime/observability/loop-status.js +49 -3
  29. package/runtime/observability/services/heartbeat-digest-assembler.d.ts +12 -0
  30. package/runtime/observability/services/heartbeat-digest-assembler.js +9 -0
  31. package/runtime/shared/types/v8-contracts.d.ts +2 -2
  32. package/runtime/storage/db/index.js +34 -0
  33. package/runtime/storage/db/migrations/index.js +4 -0
  34. package/runtime/storage/db/migrations/v8-001-living-perception-loop.js +119 -119
  35. package/runtime/storage/db/migrations/v8-002-perception-contract-alignment.d.ts +12 -0
  36. package/runtime/storage/db/migrations/v8-002-perception-contract-alignment.js +14 -0
  37. package/runtime/storage/db/migrations/v8-003-quiet-closure-refs.d.ts +10 -0
  38. package/runtime/storage/db/migrations/v8-003-quiet-closure-refs.js +12 -0
  39. package/runtime/storage/db/schema/v8-entities.d.ts +586 -0
  40. package/runtime/storage/db/schema/v8-entities.js +39 -0
  41. package/runtime/storage/v8-state-stores.d.ts +32 -2
  42. package/runtime/storage/v8-state-stores.js +121 -2
@@ -346,6 +346,25 @@ export declare const perceptionCard: import("drizzle-orm/sqlite-core").SQLiteTab
346
346
  identity: undefined;
347
347
  generated: undefined;
348
348
  }, {}, {}>;
349
+ relevanceClass: import("drizzle-orm/sqlite-core").SQLiteColumn<{
350
+ name: "relevance_class";
351
+ tableName: "perception_card";
352
+ dataType: "string";
353
+ columnType: "SQLiteText";
354
+ data: string;
355
+ driverParam: string;
356
+ notNull: false;
357
+ hasDefault: false;
358
+ isPrimaryKey: false;
359
+ isAutoincrement: false;
360
+ hasRuntimeDefault: false;
361
+ enumValues: [string, ...string[]];
362
+ baseColumn: never;
363
+ identity: undefined;
364
+ generated: undefined;
365
+ }, {}, {
366
+ length: number | undefined;
367
+ }>;
349
368
  summary: import("drizzle-orm/sqlite-core").SQLiteColumn<{
350
369
  name: "summary";
351
370
  tableName: "perception_card";
@@ -1087,6 +1106,25 @@ export declare const quietDailyReview: import("drizzle-orm/sqlite-core").SQLiteT
1087
1106
  }, {}, {
1088
1107
  length: number | undefined;
1089
1108
  }>;
1109
+ closureRefsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1110
+ name: "closure_refs_json";
1111
+ tableName: "quiet_daily_review";
1112
+ dataType: "string";
1113
+ columnType: "SQLiteText";
1114
+ data: string;
1115
+ driverParam: string;
1116
+ notNull: false;
1117
+ hasDefault: false;
1118
+ isPrimaryKey: false;
1119
+ isAutoincrement: false;
1120
+ hasRuntimeDefault: false;
1121
+ enumValues: [string, ...string[]];
1122
+ baseColumn: never;
1123
+ identity: undefined;
1124
+ generated: undefined;
1125
+ }, {}, {
1126
+ length: number | undefined;
1127
+ }>;
1090
1128
  redactionClass: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1091
1129
  name: "redaction_class";
1092
1130
  tableName: "quiet_daily_review";
@@ -1971,3 +2009,551 @@ export declare const loopStageEvent: import("drizzle-orm/sqlite-core").SQLiteTab
1971
2009
  }>;
1972
2010
  export type LoopStageEventRecord = typeof loopStageEvent.$inferSelect;
1973
2011
  export type NewLoopStageEventRecord = typeof loopStageEvent.$inferInsert;
2012
+ export declare const impulseContextArtifact: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2013
+ name: "impulse_context_artifact";
2014
+ schema: undefined;
2015
+ columns: {
2016
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2017
+ name: "id";
2018
+ tableName: "impulse_context_artifact";
2019
+ dataType: "string";
2020
+ columnType: "SQLiteText";
2021
+ data: string;
2022
+ driverParam: string;
2023
+ notNull: true;
2024
+ hasDefault: false;
2025
+ isPrimaryKey: true;
2026
+ isAutoincrement: false;
2027
+ hasRuntimeDefault: false;
2028
+ enumValues: [string, ...string[]];
2029
+ baseColumn: never;
2030
+ identity: undefined;
2031
+ generated: undefined;
2032
+ }, {}, {
2033
+ length: number | undefined;
2034
+ }>;
2035
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2036
+ name: "created_at";
2037
+ tableName: "impulse_context_artifact";
2038
+ dataType: "string";
2039
+ columnType: "SQLiteText";
2040
+ data: string;
2041
+ driverParam: string;
2042
+ notNull: true;
2043
+ hasDefault: false;
2044
+ isPrimaryKey: false;
2045
+ isAutoincrement: false;
2046
+ hasRuntimeDefault: false;
2047
+ enumValues: [string, ...string[]];
2048
+ baseColumn: never;
2049
+ identity: undefined;
2050
+ generated: undefined;
2051
+ }, {}, {
2052
+ length: number | undefined;
2053
+ }>;
2054
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2055
+ name: "updated_at";
2056
+ tableName: "impulse_context_artifact";
2057
+ dataType: "string";
2058
+ columnType: "SQLiteText";
2059
+ data: string;
2060
+ driverParam: string;
2061
+ notNull: true;
2062
+ hasDefault: false;
2063
+ isPrimaryKey: false;
2064
+ isAutoincrement: false;
2065
+ hasRuntimeDefault: false;
2066
+ enumValues: [string, ...string[]];
2067
+ baseColumn: never;
2068
+ identity: undefined;
2069
+ generated: undefined;
2070
+ }, {}, {
2071
+ length: number | undefined;
2072
+ }>;
2073
+ sceneType: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2074
+ name: "scene_type";
2075
+ tableName: "impulse_context_artifact";
2076
+ dataType: "string";
2077
+ columnType: "SQLiteText";
2078
+ data: string;
2079
+ driverParam: string;
2080
+ notNull: true;
2081
+ hasDefault: false;
2082
+ isPrimaryKey: false;
2083
+ isAutoincrement: false;
2084
+ hasRuntimeDefault: false;
2085
+ enumValues: [string, ...string[]];
2086
+ baseColumn: never;
2087
+ identity: undefined;
2088
+ generated: undefined;
2089
+ }, {}, {
2090
+ length: number | undefined;
2091
+ }>;
2092
+ capabilityIntent: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2093
+ name: "capability_intent";
2094
+ tableName: "impulse_context_artifact";
2095
+ dataType: "string";
2096
+ columnType: "SQLiteText";
2097
+ data: string;
2098
+ driverParam: string;
2099
+ notNull: false;
2100
+ hasDefault: false;
2101
+ isPrimaryKey: false;
2102
+ isAutoincrement: false;
2103
+ hasRuntimeDefault: false;
2104
+ enumValues: [string, ...string[]];
2105
+ baseColumn: never;
2106
+ identity: undefined;
2107
+ generated: undefined;
2108
+ }, {}, {
2109
+ length: number | undefined;
2110
+ }>;
2111
+ platformId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2112
+ name: "platform_id";
2113
+ tableName: "impulse_context_artifact";
2114
+ dataType: "string";
2115
+ columnType: "SQLiteText";
2116
+ data: string;
2117
+ driverParam: string;
2118
+ notNull: false;
2119
+ hasDefault: false;
2120
+ isPrimaryKey: false;
2121
+ isAutoincrement: false;
2122
+ hasRuntimeDefault: false;
2123
+ enumValues: [string, ...string[]];
2124
+ baseColumn: never;
2125
+ identity: undefined;
2126
+ generated: undefined;
2127
+ }, {}, {
2128
+ length: number | undefined;
2129
+ }>;
2130
+ capabilityClass: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2131
+ name: "capability_class";
2132
+ tableName: "impulse_context_artifact";
2133
+ dataType: "string";
2134
+ columnType: "SQLiteText";
2135
+ data: string;
2136
+ driverParam: string;
2137
+ notNull: false;
2138
+ hasDefault: false;
2139
+ isPrimaryKey: false;
2140
+ isAutoincrement: false;
2141
+ hasRuntimeDefault: false;
2142
+ enumValues: [string, ...string[]];
2143
+ baseColumn: never;
2144
+ identity: undefined;
2145
+ generated: undefined;
2146
+ }, {}, {
2147
+ length: number | undefined;
2148
+ }>;
2149
+ impulseSource: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2150
+ name: "impulse_source";
2151
+ tableName: "impulse_context_artifact";
2152
+ dataType: "string";
2153
+ columnType: "SQLiteText";
2154
+ data: string;
2155
+ driverParam: string;
2156
+ notNull: true;
2157
+ hasDefault: false;
2158
+ isPrimaryKey: false;
2159
+ isAutoincrement: false;
2160
+ hasRuntimeDefault: false;
2161
+ enumValues: [string, ...string[]];
2162
+ baseColumn: never;
2163
+ identity: undefined;
2164
+ generated: undefined;
2165
+ }, {}, {
2166
+ length: number | undefined;
2167
+ }>;
2168
+ impulseText: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2169
+ name: "impulse_text";
2170
+ tableName: "impulse_context_artifact";
2171
+ dataType: "string";
2172
+ columnType: "SQLiteText";
2173
+ data: string;
2174
+ driverParam: string;
2175
+ notNull: false;
2176
+ hasDefault: false;
2177
+ isPrimaryKey: false;
2178
+ isAutoincrement: false;
2179
+ hasRuntimeDefault: false;
2180
+ enumValues: [string, ...string[]];
2181
+ baseColumn: never;
2182
+ identity: undefined;
2183
+ generated: undefined;
2184
+ }, {}, {
2185
+ length: number | undefined;
2186
+ }>;
2187
+ atmosphereText: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2188
+ name: "atmosphere_text";
2189
+ tableName: "impulse_context_artifact";
2190
+ dataType: "string";
2191
+ columnType: "SQLiteText";
2192
+ data: string;
2193
+ driverParam: string;
2194
+ notNull: false;
2195
+ hasDefault: false;
2196
+ isPrimaryKey: false;
2197
+ isAutoincrement: false;
2198
+ hasRuntimeDefault: false;
2199
+ enumValues: [string, ...string[]];
2200
+ baseColumn: never;
2201
+ identity: undefined;
2202
+ generated: undefined;
2203
+ }, {}, {
2204
+ length: number | undefined;
2205
+ }>;
2206
+ expressionBoundaryConstraintsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2207
+ name: "expression_boundary_constraints_json";
2208
+ tableName: "impulse_context_artifact";
2209
+ dataType: "string";
2210
+ columnType: "SQLiteText";
2211
+ data: string;
2212
+ driverParam: string;
2213
+ notNull: false;
2214
+ hasDefault: false;
2215
+ isPrimaryKey: false;
2216
+ isAutoincrement: false;
2217
+ hasRuntimeDefault: false;
2218
+ enumValues: [string, ...string[]];
2219
+ baseColumn: never;
2220
+ identity: undefined;
2221
+ generated: undefined;
2222
+ }, {}, {
2223
+ length: number | undefined;
2224
+ }>;
2225
+ expressionBoundaryStyle: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2226
+ name: "expression_boundary_style";
2227
+ tableName: "impulse_context_artifact";
2228
+ dataType: "string";
2229
+ columnType: "SQLiteText";
2230
+ data: string;
2231
+ driverParam: string;
2232
+ notNull: false;
2233
+ hasDefault: false;
2234
+ isPrimaryKey: false;
2235
+ isAutoincrement: false;
2236
+ hasRuntimeDefault: false;
2237
+ enumValues: [string, ...string[]];
2238
+ baseColumn: never;
2239
+ identity: undefined;
2240
+ generated: undefined;
2241
+ }, {}, {
2242
+ length: number | undefined;
2243
+ }>;
2244
+ freshnessVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2245
+ name: "freshness_version";
2246
+ tableName: "impulse_context_artifact";
2247
+ dataType: "number";
2248
+ columnType: "SQLiteInteger";
2249
+ data: number;
2250
+ driverParam: number;
2251
+ notNull: true;
2252
+ hasDefault: true;
2253
+ isPrimaryKey: false;
2254
+ isAutoincrement: false;
2255
+ hasRuntimeDefault: false;
2256
+ enumValues: undefined;
2257
+ baseColumn: never;
2258
+ identity: undefined;
2259
+ generated: undefined;
2260
+ }, {}, {}>;
2261
+ sourceRefsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2262
+ name: "source_refs_json";
2263
+ tableName: "impulse_context_artifact";
2264
+ dataType: "string";
2265
+ columnType: "SQLiteText";
2266
+ data: string;
2267
+ driverParam: string;
2268
+ notNull: true;
2269
+ hasDefault: false;
2270
+ isPrimaryKey: false;
2271
+ isAutoincrement: false;
2272
+ hasRuntimeDefault: false;
2273
+ enumValues: [string, ...string[]];
2274
+ baseColumn: never;
2275
+ identity: undefined;
2276
+ generated: undefined;
2277
+ }, {}, {
2278
+ length: number | undefined;
2279
+ }>;
2280
+ redactionClass: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2281
+ name: "redaction_class";
2282
+ tableName: "impulse_context_artifact";
2283
+ dataType: "string";
2284
+ columnType: "SQLiteText";
2285
+ data: string;
2286
+ driverParam: string;
2287
+ notNull: true;
2288
+ hasDefault: true;
2289
+ isPrimaryKey: false;
2290
+ isAutoincrement: false;
2291
+ hasRuntimeDefault: false;
2292
+ enumValues: [string, ...string[]];
2293
+ baseColumn: never;
2294
+ identity: undefined;
2295
+ generated: undefined;
2296
+ }, {}, {
2297
+ length: number | undefined;
2298
+ }>;
2299
+ payloadJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2300
+ name: "payload_json";
2301
+ tableName: "impulse_context_artifact";
2302
+ dataType: "string";
2303
+ columnType: "SQLiteText";
2304
+ data: string;
2305
+ driverParam: string;
2306
+ notNull: false;
2307
+ hasDefault: false;
2308
+ isPrimaryKey: false;
2309
+ isAutoincrement: false;
2310
+ hasRuntimeDefault: false;
2311
+ enumValues: [string, ...string[]];
2312
+ baseColumn: never;
2313
+ identity: undefined;
2314
+ generated: undefined;
2315
+ }, {}, {
2316
+ length: number | undefined;
2317
+ }>;
2318
+ lifecycleStatus: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2319
+ name: "lifecycle_status";
2320
+ tableName: "impulse_context_artifact";
2321
+ dataType: "string";
2322
+ columnType: "SQLiteText";
2323
+ data: string;
2324
+ driverParam: string;
2325
+ notNull: true;
2326
+ hasDefault: true;
2327
+ isPrimaryKey: false;
2328
+ isAutoincrement: false;
2329
+ hasRuntimeDefault: false;
2330
+ enumValues: [string, ...string[]];
2331
+ baseColumn: never;
2332
+ identity: undefined;
2333
+ generated: undefined;
2334
+ }, {}, {
2335
+ length: number | undefined;
2336
+ }>;
2337
+ };
2338
+ dialect: "sqlite";
2339
+ }>;
2340
+ export type ImpulseContextArtifactRecord = typeof impulseContextArtifact.$inferSelect;
2341
+ export type NewImpulseContextArtifactRecord = typeof impulseContextArtifact.$inferInsert;
2342
+ export declare const dailyRhythmState: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2343
+ name: "daily_rhythm_state";
2344
+ schema: undefined;
2345
+ columns: {
2346
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2347
+ name: "id";
2348
+ tableName: "daily_rhythm_state";
2349
+ dataType: "string";
2350
+ columnType: "SQLiteText";
2351
+ data: string;
2352
+ driverParam: string;
2353
+ notNull: true;
2354
+ hasDefault: false;
2355
+ isPrimaryKey: true;
2356
+ isAutoincrement: false;
2357
+ hasRuntimeDefault: false;
2358
+ enumValues: [string, ...string[]];
2359
+ baseColumn: never;
2360
+ identity: undefined;
2361
+ generated: undefined;
2362
+ }, {}, {
2363
+ length: number | undefined;
2364
+ }>;
2365
+ day: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2366
+ name: "day";
2367
+ tableName: "daily_rhythm_state";
2368
+ dataType: "string";
2369
+ columnType: "SQLiteText";
2370
+ data: string;
2371
+ driverParam: string;
2372
+ notNull: true;
2373
+ hasDefault: false;
2374
+ isPrimaryKey: false;
2375
+ isAutoincrement: false;
2376
+ hasRuntimeDefault: false;
2377
+ enumValues: [string, ...string[]];
2378
+ baseColumn: never;
2379
+ identity: undefined;
2380
+ generated: undefined;
2381
+ }, {}, {
2382
+ length: number | undefined;
2383
+ }>;
2384
+ quietStatus: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2385
+ name: "quiet_status";
2386
+ tableName: "daily_rhythm_state";
2387
+ dataType: "string";
2388
+ columnType: "SQLiteText";
2389
+ data: string;
2390
+ driverParam: string;
2391
+ notNull: true;
2392
+ hasDefault: true;
2393
+ isPrimaryKey: false;
2394
+ isAutoincrement: false;
2395
+ hasRuntimeDefault: false;
2396
+ enumValues: [string, ...string[]];
2397
+ baseColumn: never;
2398
+ identity: undefined;
2399
+ generated: undefined;
2400
+ }, {}, {
2401
+ length: number | undefined;
2402
+ }>;
2403
+ dreamStatus: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2404
+ name: "dream_status";
2405
+ tableName: "daily_rhythm_state";
2406
+ dataType: "string";
2407
+ columnType: "SQLiteText";
2408
+ data: string;
2409
+ driverParam: string;
2410
+ notNull: true;
2411
+ hasDefault: true;
2412
+ isPrimaryKey: false;
2413
+ isAutoincrement: false;
2414
+ hasRuntimeDefault: false;
2415
+ enumValues: [string, ...string[]];
2416
+ baseColumn: never;
2417
+ identity: undefined;
2418
+ generated: undefined;
2419
+ }, {}, {
2420
+ length: number | undefined;
2421
+ }>;
2422
+ quietReason: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2423
+ name: "quiet_reason";
2424
+ tableName: "daily_rhythm_state";
2425
+ dataType: "string";
2426
+ columnType: "SQLiteText";
2427
+ data: string;
2428
+ driverParam: string;
2429
+ notNull: false;
2430
+ hasDefault: false;
2431
+ isPrimaryKey: false;
2432
+ isAutoincrement: false;
2433
+ hasRuntimeDefault: false;
2434
+ enumValues: [string, ...string[]];
2435
+ baseColumn: never;
2436
+ identity: undefined;
2437
+ generated: undefined;
2438
+ }, {}, {
2439
+ length: number | undefined;
2440
+ }>;
2441
+ dreamReason: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2442
+ name: "dream_reason";
2443
+ tableName: "daily_rhythm_state";
2444
+ dataType: "string";
2445
+ columnType: "SQLiteText";
2446
+ data: string;
2447
+ driverParam: string;
2448
+ notNull: false;
2449
+ hasDefault: false;
2450
+ isPrimaryKey: false;
2451
+ isAutoincrement: false;
2452
+ hasRuntimeDefault: false;
2453
+ enumValues: [string, ...string[]];
2454
+ baseColumn: never;
2455
+ identity: undefined;
2456
+ generated: undefined;
2457
+ }, {}, {
2458
+ length: number | undefined;
2459
+ }>;
2460
+ quietCompletedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2461
+ name: "quiet_completed_at";
2462
+ tableName: "daily_rhythm_state";
2463
+ dataType: "string";
2464
+ columnType: "SQLiteText";
2465
+ data: string;
2466
+ driverParam: string;
2467
+ notNull: false;
2468
+ hasDefault: false;
2469
+ isPrimaryKey: false;
2470
+ isAutoincrement: false;
2471
+ hasRuntimeDefault: false;
2472
+ enumValues: [string, ...string[]];
2473
+ baseColumn: never;
2474
+ identity: undefined;
2475
+ generated: undefined;
2476
+ }, {}, {
2477
+ length: number | undefined;
2478
+ }>;
2479
+ dreamCompletedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2480
+ name: "dream_completed_at";
2481
+ tableName: "daily_rhythm_state";
2482
+ dataType: "string";
2483
+ columnType: "SQLiteText";
2484
+ data: string;
2485
+ driverParam: string;
2486
+ notNull: false;
2487
+ hasDefault: false;
2488
+ isPrimaryKey: false;
2489
+ isAutoincrement: false;
2490
+ hasRuntimeDefault: false;
2491
+ enumValues: [string, ...string[]];
2492
+ baseColumn: never;
2493
+ identity: undefined;
2494
+ generated: undefined;
2495
+ }, {}, {
2496
+ length: number | undefined;
2497
+ }>;
2498
+ sourceRefsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2499
+ name: "source_refs_json";
2500
+ tableName: "daily_rhythm_state";
2501
+ dataType: "string";
2502
+ columnType: "SQLiteText";
2503
+ data: string;
2504
+ driverParam: string;
2505
+ notNull: true;
2506
+ hasDefault: false;
2507
+ isPrimaryKey: false;
2508
+ isAutoincrement: false;
2509
+ hasRuntimeDefault: false;
2510
+ enumValues: [string, ...string[]];
2511
+ baseColumn: never;
2512
+ identity: undefined;
2513
+ generated: undefined;
2514
+ }, {}, {
2515
+ length: number | undefined;
2516
+ }>;
2517
+ payloadJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2518
+ name: "payload_json";
2519
+ tableName: "daily_rhythm_state";
2520
+ dataType: "string";
2521
+ columnType: "SQLiteText";
2522
+ data: string;
2523
+ driverParam: string;
2524
+ notNull: false;
2525
+ hasDefault: false;
2526
+ isPrimaryKey: false;
2527
+ isAutoincrement: false;
2528
+ hasRuntimeDefault: false;
2529
+ enumValues: [string, ...string[]];
2530
+ baseColumn: never;
2531
+ identity: undefined;
2532
+ generated: undefined;
2533
+ }, {}, {
2534
+ length: number | undefined;
2535
+ }>;
2536
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2537
+ name: "updated_at";
2538
+ tableName: "daily_rhythm_state";
2539
+ dataType: "string";
2540
+ columnType: "SQLiteText";
2541
+ data: string;
2542
+ driverParam: string;
2543
+ notNull: true;
2544
+ hasDefault: false;
2545
+ isPrimaryKey: false;
2546
+ isAutoincrement: false;
2547
+ hasRuntimeDefault: false;
2548
+ enumValues: [string, ...string[]];
2549
+ baseColumn: never;
2550
+ identity: undefined;
2551
+ generated: undefined;
2552
+ }, {}, {
2553
+ length: number | undefined;
2554
+ }>;
2555
+ };
2556
+ dialect: "sqlite";
2557
+ }>;
2558
+ export type DailyRhythmStateRecord = typeof dailyRhythmState.$inferSelect;
2559
+ export type NewDailyRhythmStateRecord = typeof dailyRhythmState.$inferInsert;
@@ -39,6 +39,7 @@ export const perceptionCard = sqliteTable("perception_card", {
39
39
  entitiesJson: text("entities_json"),
40
40
  novelty: text("novelty"),
41
41
  relevance: real("relevance"),
42
+ relevanceClass: text("relevance_class"),
42
43
  summary: text("summary"),
43
44
  riskFlagsJson: text("risk_flags_json"),
44
45
  confidence: real("confidence"),
@@ -92,6 +93,7 @@ export const quietDailyReview = sqliteTable("quiet_daily_review", {
92
93
  closureCount: integer("closure_count").notNull().default(0),
93
94
  memoryCandidateCount: integer("memory_candidate_count").notNull().default(0),
94
95
  sourceRefsJson: text("source_refs_json").notNull(),
96
+ closureRefsJson: text("closure_refs_json"),
95
97
  redactionClass: text("redaction_class").notNull().default("none"),
96
98
  payloadJson: text("payload_json"),
97
99
  lifecycleStatus: text("lifecycle_status").notNull().default("pending"),
@@ -158,3 +160,40 @@ export const loopStageEvent = sqliteTable("loop_stage_event", {
158
160
  payloadJson: text("payload_json"),
159
161
  lifecycleStatus: text("lifecycle_status").notNull().default("started"),
160
162
  });
163
+ // ───────────────────────────────────────────────────────────────
164
+ // 10. ImpulseContextArtifact
165
+ // ───────────────────────────────────────────────────────────────
166
+ export const impulseContextArtifact = sqliteTable("impulse_context_artifact", {
167
+ id: text("id").primaryKey(),
168
+ createdAt: text("created_at").notNull(),
169
+ updatedAt: text("updated_at").notNull(),
170
+ sceneType: text("scene_type").notNull(),
171
+ capabilityIntent: text("capability_intent"),
172
+ platformId: text("platform_id"),
173
+ capabilityClass: text("capability_class"),
174
+ impulseSource: text("impulse_source").notNull(),
175
+ impulseText: text("impulse_text"),
176
+ atmosphereText: text("atmosphere_text"),
177
+ expressionBoundaryConstraintsJson: text("expression_boundary_constraints_json"),
178
+ expressionBoundaryStyle: text("expression_boundary_style"),
179
+ freshnessVersion: integer("freshness_version").notNull().default(1),
180
+ sourceRefsJson: text("source_refs_json").notNull(),
181
+ redactionClass: text("redaction_class").notNull().default("none"),
182
+ payloadJson: text("payload_json"),
183
+ lifecycleStatus: text("lifecycle_status").notNull().default("active"),
184
+ });
185
+ // 11. DailyRhythmState
186
+ // ───────────────────────────────────────────────────────────────
187
+ export const dailyRhythmState = sqliteTable("daily_rhythm_state", {
188
+ id: text("id").primaryKey(),
189
+ day: text("day").notNull(),
190
+ quietStatus: text("quiet_status").notNull().default("not_due"),
191
+ dreamStatus: text("dream_status").notNull().default("not_due"),
192
+ quietReason: text("quiet_reason"),
193
+ dreamReason: text("dream_reason"),
194
+ quietCompletedAt: text("quiet_completed_at"),
195
+ dreamCompletedAt: text("dream_completed_at"),
196
+ sourceRefsJson: text("source_refs_json").notNull(),
197
+ payloadJson: text("payload_json"),
198
+ updatedAt: text("updated_at").notNull(),
199
+ });