@haaaiawd/second-nature 0.1.21 → 0.1.23

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 (73) hide show
  1. package/openclaw.plugin.json +1 -1
  2. package/package.json +1 -1
  3. package/runtime/cli/commands/connector-init.d.ts +19 -0
  4. package/runtime/cli/commands/connector-init.js +168 -0
  5. package/runtime/cli/commands/connector-status.d.ts +12 -0
  6. package/runtime/cli/commands/connector-status.js +156 -0
  7. package/runtime/cli/commands/index.js +40 -0
  8. package/runtime/cli/index.js +8 -6
  9. package/runtime/cli/ops/ops-router.d.ts +5 -0
  10. package/runtime/cli/ops/ops-router.js +34 -0
  11. package/runtime/cli/ops/workspace-heartbeat-runner.js +22 -0
  12. package/runtime/connectors/base/manifest.d.ts +13 -0
  13. package/runtime/connectors/base/manifest.js +47 -0
  14. package/runtime/connectors/manifest/manifest-parser.d.ts +16 -0
  15. package/runtime/connectors/manifest/manifest-parser.js +35 -0
  16. package/runtime/connectors/manifest/manifest-schema.d.ts +145 -0
  17. package/runtime/connectors/manifest/manifest-schema.js +51 -0
  18. package/runtime/connectors/registry/dynamic-connector-registry.d.ts +29 -0
  19. package/runtime/connectors/registry/dynamic-connector-registry.js +123 -0
  20. package/runtime/connectors/registry/index.d.ts +3 -0
  21. package/runtime/connectors/registry/index.js +3 -0
  22. package/runtime/connectors/registry/manifest-scanner.d.ts +9 -0
  23. package/runtime/connectors/registry/manifest-scanner.js +29 -0
  24. package/runtime/connectors/registry/trust-policy.d.ts +13 -0
  25. package/runtime/connectors/registry/trust-policy.js +37 -0
  26. package/runtime/core/second-nature/heartbeat/heartbeat-loop.d.ts +3 -0
  27. package/runtime/core/second-nature/heartbeat/heartbeat-loop.js +52 -1
  28. package/runtime/core/second-nature/heartbeat/snapshot-builder.d.ts +3 -0
  29. package/runtime/core/second-nature/orchestrator/goal-priority.d.ts +19 -0
  30. package/runtime/core/second-nature/orchestrator/goal-priority.js +67 -0
  31. package/runtime/core/second-nature/orchestrator/intent-planner.js +8 -0
  32. package/runtime/core/second-nature/orchestrator/narrative-update.d.ts +27 -0
  33. package/runtime/core/second-nature/orchestrator/narrative-update.js +107 -0
  34. package/runtime/core/second-nature/runtime/service-entry.js +1 -1
  35. package/runtime/core/second-nature/types.d.ts +4 -0
  36. package/runtime/guidance/draft-narrative-outreach.d.ts +36 -0
  37. package/runtime/guidance/draft-narrative-outreach.js +84 -0
  38. package/runtime/guidance/index.d.ts +1 -0
  39. package/runtime/guidance/index.js +1 -0
  40. package/runtime/guidance/outreach-draft-schema.d.ts +3 -3
  41. package/runtime/observability/connector-inventory-ledger.d.ts +45 -0
  42. package/runtime/observability/connector-inventory-ledger.js +72 -0
  43. package/runtime/observability/db/index.js +13 -0
  44. package/runtime/observability/db/schema/connector-inventory.d.ts +174 -0
  45. package/runtime/observability/db/schema/connector-inventory.js +15 -0
  46. package/runtime/observability/db/schema/index.d.ts +1 -0
  47. package/runtime/observability/db/schema/index.js +1 -0
  48. package/runtime/storage/chronicle/session-chronicle-store.d.ts +42 -0
  49. package/runtime/storage/chronicle/session-chronicle-store.js +66 -0
  50. package/runtime/storage/db/index.js +75 -0
  51. package/runtime/storage/db/schema/agent-goal.d.ts +235 -0
  52. package/runtime/storage/db/schema/agent-goal.js +19 -0
  53. package/runtime/storage/db/schema/index.d.ts +5 -0
  54. package/runtime/storage/db/schema/index.js +5 -0
  55. package/runtime/storage/db/schema/memory-store.d.ts +199 -0
  56. package/runtime/storage/db/schema/memory-store.js +18 -0
  57. package/runtime/storage/db/schema/narrative-state.d.ts +195 -0
  58. package/runtime/storage/db/schema/narrative-state.js +16 -0
  59. package/runtime/storage/db/schema/relationship-memory.d.ts +174 -0
  60. package/runtime/storage/db/schema/relationship-memory.js +14 -0
  61. package/runtime/storage/db/schema/session-chronicle.d.ts +199 -0
  62. package/runtime/storage/db/schema/session-chronicle.js +18 -0
  63. package/runtime/storage/goal/agent-goal-store.d.ts +57 -0
  64. package/runtime/storage/goal/agent-goal-store.js +109 -0
  65. package/runtime/storage/index.d.ts +5 -0
  66. package/runtime/storage/index.js +5 -0
  67. package/runtime/storage/memory-store/memory-store-lifecycle.d.ts +70 -0
  68. package/runtime/storage/memory-store/memory-store-lifecycle.js +113 -0
  69. package/runtime/storage/narrative/narrative-state-store.d.ts +40 -0
  70. package/runtime/storage/narrative/narrative-state-store.js +79 -0
  71. package/runtime/storage/relationship/relationship-memory-store.d.ts +42 -0
  72. package/runtime/storage/relationship/relationship-memory-store.js +76 -0
  73. package/workspace-ops-bridge.js +1 -0
@@ -0,0 +1,174 @@
1
+ export declare const connectorInventoryAudit: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "connector_inventory_audit";
3
+ schema: undefined;
4
+ columns: {
5
+ auditId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "audit_id";
7
+ tableName: "connector_inventory_audit";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ snapshotId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "snapshot_id";
26
+ tableName: "connector_inventory_audit";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ scanned: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "scanned";
45
+ tableName: "connector_inventory_audit";
46
+ dataType: "number";
47
+ columnType: "SQLiteInteger";
48
+ data: number;
49
+ driverParam: number;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: undefined;
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {}>;
60
+ registered: import("drizzle-orm/sqlite-core").SQLiteColumn<{
61
+ name: "registered";
62
+ tableName: "connector_inventory_audit";
63
+ dataType: "number";
64
+ columnType: "SQLiteInteger";
65
+ data: number;
66
+ driverParam: number;
67
+ notNull: true;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: undefined;
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {}>;
77
+ skipped: import("drizzle-orm/sqlite-core").SQLiteColumn<{
78
+ name: "skipped";
79
+ tableName: "connector_inventory_audit";
80
+ dataType: "number";
81
+ columnType: "SQLiteInteger";
82
+ data: number;
83
+ driverParam: number;
84
+ notNull: true;
85
+ hasDefault: false;
86
+ isPrimaryKey: false;
87
+ isAutoincrement: false;
88
+ hasRuntimeDefault: false;
89
+ enumValues: undefined;
90
+ baseColumn: never;
91
+ identity: undefined;
92
+ generated: undefined;
93
+ }, {}, {}>;
94
+ conflictsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
95
+ name: "conflicts_json";
96
+ tableName: "connector_inventory_audit";
97
+ dataType: "string";
98
+ columnType: "SQLiteText";
99
+ data: string;
100
+ driverParam: string;
101
+ notNull: true;
102
+ hasDefault: false;
103
+ isPrimaryKey: false;
104
+ isAutoincrement: false;
105
+ hasRuntimeDefault: false;
106
+ enumValues: [string, ...string[]];
107
+ baseColumn: never;
108
+ identity: undefined;
109
+ generated: undefined;
110
+ }, {}, {
111
+ length: number | undefined;
112
+ }>;
113
+ validationErrorsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
114
+ name: "validation_errors_json";
115
+ tableName: "connector_inventory_audit";
116
+ dataType: "string";
117
+ columnType: "SQLiteText";
118
+ data: string;
119
+ driverParam: string;
120
+ notNull: true;
121
+ hasDefault: false;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: [string, ...string[]];
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {
130
+ length: number | undefined;
131
+ }>;
132
+ trustSummaryJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
133
+ name: "trust_summary_json";
134
+ tableName: "connector_inventory_audit";
135
+ dataType: "string";
136
+ columnType: "SQLiteText";
137
+ data: string;
138
+ driverParam: string;
139
+ notNull: true;
140
+ hasDefault: false;
141
+ isPrimaryKey: false;
142
+ isAutoincrement: false;
143
+ hasRuntimeDefault: false;
144
+ enumValues: [string, ...string[]];
145
+ baseColumn: never;
146
+ identity: undefined;
147
+ generated: undefined;
148
+ }, {}, {
149
+ length: number | undefined;
150
+ }>;
151
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
152
+ name: "created_at";
153
+ tableName: "connector_inventory_audit";
154
+ dataType: "string";
155
+ columnType: "SQLiteText";
156
+ data: string;
157
+ driverParam: string;
158
+ notNull: true;
159
+ hasDefault: false;
160
+ isPrimaryKey: false;
161
+ isAutoincrement: false;
162
+ hasRuntimeDefault: false;
163
+ enumValues: [string, ...string[]];
164
+ baseColumn: never;
165
+ identity: undefined;
166
+ generated: undefined;
167
+ }, {}, {
168
+ length: number | undefined;
169
+ }>;
170
+ };
171
+ dialect: "sqlite";
172
+ }>;
173
+ export type ConnectorInventoryAuditRow = typeof connectorInventoryAudit.$inferSelect;
174
+ export type NewConnectorInventoryAuditRow = typeof connectorInventoryAudit.$inferInsert;
@@ -0,0 +1,15 @@
1
+ import { index, sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
2
+ export const connectorInventoryAudit = sqliteTable("connector_inventory_audit", {
3
+ auditId: text("audit_id").primaryKey(),
4
+ snapshotId: text("snapshot_id").notNull(),
5
+ scanned: integer("scanned").notNull(),
6
+ registered: integer("registered").notNull(),
7
+ skipped: integer("skipped").notNull(),
8
+ conflictsJson: text("conflicts_json").notNull(),
9
+ validationErrorsJson: text("validation_errors_json").notNull(),
10
+ trustSummaryJson: text("trust_summary_json").notNull(),
11
+ createdAt: text("created_at").notNull(),
12
+ }, (table) => [
13
+ index("connector_inventory_snapshot_idx").on(table.snapshotId),
14
+ index("connector_inventory_created_at_idx").on(table.createdAt),
15
+ ]);
@@ -945,3 +945,4 @@ export type NewGovernanceAuditDb = typeof governanceAudit.$inferInsert;
945
945
  export type RedactionManifestDb = typeof redactionManifest.$inferSelect;
946
946
  export type NewRedactionManifestDb = typeof redactionManifest.$inferInsert;
947
947
  export { hostCapabilityReports, type HostCapabilityReportRow, type NewHostCapabilityReportRow, } from "./host-capability-reports.js";
948
+ export { connectorInventoryAudit, type ConnectorInventoryAuditRow, type NewConnectorInventoryAuditRow, } from "./connector-inventory.js";
@@ -69,3 +69,4 @@ export const redactionManifest = sqliteTable("redaction_manifest", {
69
69
  index("redact_event_idx").on(table.eventId),
70
70
  ]);
71
71
  export { hostCapabilityReports, } from "./host-capability-reports.js";
72
+ export { connectorInventoryAudit, } from "./connector-inventory.js";
@@ -0,0 +1,42 @@
1
+ import type { StateDatabase } from "../db/index.js";
2
+ export type ChronicleEventKind = "heartbeat" | "connector_action" | "outreach" | "owner_reply" | "dream_run" | "maintenance";
3
+ export interface SourceRef {
4
+ sourceId: string;
5
+ kind: string;
6
+ url?: string;
7
+ snippet?: string;
8
+ }
9
+ export interface OwnerReplySignal {
10
+ tone?: string;
11
+ delayMinutes?: number;
12
+ topics?: string[];
13
+ explicitPreference?: string;
14
+ }
15
+ export interface SessionChronicleEntry {
16
+ entryId: string;
17
+ eventKind: ChronicleEventKind;
18
+ actor: "agent" | "owner" | "system";
19
+ occurredAt: string;
20
+ summary: string;
21
+ result: "succeeded" | "failed" | "skipped" | "no_reply" | "partial";
22
+ sourceRefs: SourceRef[];
23
+ relatedDecisionId?: string;
24
+ relatedDreamRunId?: string;
25
+ ownerReply?: OwnerReplySignal;
26
+ }
27
+ export interface ChronicleQuery {
28
+ eventKinds?: ChronicleEventKind[];
29
+ from?: string;
30
+ to?: string;
31
+ actor?: "agent" | "owner" | "system";
32
+ limit?: number;
33
+ }
34
+ export interface ChronicleWriteAck {
35
+ entryId: string;
36
+ status: "acknowledged" | "degraded";
37
+ }
38
+ export interface SessionChronicleStore {
39
+ appendSessionChronicle(entry: SessionChronicleEntry): Promise<ChronicleWriteAck>;
40
+ loadSessionChronicle(query: ChronicleQuery): Promise<SessionChronicleEntry[]>;
41
+ }
42
+ export declare function createSessionChronicleStore(database: StateDatabase): SessionChronicleStore;
@@ -0,0 +1,66 @@
1
+ import { eq, gte, lte, inArray, desc, and } from "drizzle-orm";
2
+ import { sessionChronicle } from "../db/schema/session-chronicle.js";
3
+ function rowToEntry(row) {
4
+ return {
5
+ entryId: row.entryId,
6
+ eventKind: row.eventKind,
7
+ actor: row.actor,
8
+ occurredAt: row.occurredAt,
9
+ summary: row.summary,
10
+ result: row.result,
11
+ sourceRefs: safeParseJson(row.sourceRefsJson, []),
12
+ relatedDecisionId: row.relatedDecisionId ?? undefined,
13
+ relatedDreamRunId: row.relatedDreamRunId ?? undefined,
14
+ ownerReply: row.ownerReplyJson ? safeParseJson(row.ownerReplyJson, undefined) : undefined,
15
+ };
16
+ }
17
+ function safeParseJson(json, fallback) {
18
+ try {
19
+ return JSON.parse(json);
20
+ }
21
+ catch {
22
+ return fallback;
23
+ }
24
+ }
25
+ export function createSessionChronicleStore(database) {
26
+ const db = database.db;
27
+ return {
28
+ async appendSessionChronicle(entry) {
29
+ await db.insert(sessionChronicle).values({
30
+ entryId: entry.entryId,
31
+ eventKind: entry.eventKind,
32
+ actor: entry.actor,
33
+ occurredAt: entry.occurredAt,
34
+ summary: entry.summary,
35
+ result: entry.result,
36
+ sourceRefsJson: JSON.stringify(entry.sourceRefs),
37
+ relatedDecisionId: entry.relatedDecisionId ?? null,
38
+ relatedDreamRunId: entry.relatedDreamRunId ?? null,
39
+ ownerReplyJson: entry.ownerReply ? JSON.stringify(entry.ownerReply) : null,
40
+ });
41
+ return { entryId: entry.entryId, status: "acknowledged" };
42
+ },
43
+ async loadSessionChronicle(query) {
44
+ const conditions = [];
45
+ if (query.eventKinds && query.eventKinds.length > 0) {
46
+ conditions.push(inArray(sessionChronicle.eventKind, query.eventKinds));
47
+ }
48
+ if (query.from) {
49
+ conditions.push(gte(sessionChronicle.occurredAt, query.from));
50
+ }
51
+ if (query.to) {
52
+ conditions.push(lte(sessionChronicle.occurredAt, query.to));
53
+ }
54
+ if (query.actor) {
55
+ conditions.push(eq(sessionChronicle.actor, query.actor));
56
+ }
57
+ const rows = await db
58
+ .select()
59
+ .from(sessionChronicle)
60
+ .where(conditions.length > 0 ? and(...conditions) : undefined)
61
+ .orderBy(desc(sessionChronicle.occurredAt))
62
+ .limit(query.limit ?? 100);
63
+ return rows.map(rowToEntry);
64
+ },
65
+ };
66
+ }
@@ -99,6 +99,81 @@ const STATE_SCHEMA_SQL = `
99
99
  created_at TEXT NOT NULL
100
100
  );
101
101
  CREATE INDEX IF NOT EXISTS operator_fallback_decision_idx ON operator_fallback_artifacts(decision_id);
102
+ CREATE TABLE IF NOT EXISTS session_chronicle (
103
+ entry_id TEXT PRIMARY KEY,
104
+ event_kind TEXT NOT NULL,
105
+ actor TEXT NOT NULL,
106
+ occurred_at TEXT NOT NULL,
107
+ summary TEXT NOT NULL,
108
+ result TEXT NOT NULL,
109
+ source_refs_json TEXT NOT NULL,
110
+ related_decision_id TEXT,
111
+ related_dream_run_id TEXT,
112
+ owner_reply_json TEXT
113
+ );
114
+ CREATE INDEX IF NOT EXISTS session_chronicle_event_kind_idx ON session_chronicle(event_kind);
115
+ CREATE INDEX IF NOT EXISTS session_chronicle_occurred_at_idx ON session_chronicle(occurred_at);
116
+ CREATE INDEX IF NOT EXISTS session_chronicle_actor_idx ON session_chronicle(actor);
117
+ CREATE INDEX IF NOT EXISTS session_chronicle_decision_idx ON session_chronicle(related_decision_id);
118
+ CREATE TABLE IF NOT EXISTS narrative_state (
119
+ narrative_id TEXT PRIMARY KEY,
120
+ revision INTEGER NOT NULL DEFAULT 1,
121
+ focus TEXT NOT NULL,
122
+ progress_json TEXT NOT NULL,
123
+ next_intent TEXT NOT NULL,
124
+ confidence INTEGER NOT NULL DEFAULT 0,
125
+ source_refs_json TEXT NOT NULL,
126
+ unsupported_claims_json TEXT NOT NULL,
127
+ status TEXT NOT NULL,
128
+ updated_at TEXT NOT NULL
129
+ );
130
+ CREATE INDEX IF NOT EXISTS narrative_state_status_idx ON narrative_state(status);
131
+ CREATE INDEX IF NOT EXISTS narrative_state_updated_at_idx ON narrative_state(updated_at);
132
+ CREATE TABLE IF NOT EXISTS relationship_memory (
133
+ relationship_id TEXT PRIMARY KEY,
134
+ revision INTEGER NOT NULL DEFAULT 1,
135
+ tone_preference TEXT NOT NULL,
136
+ average_reply_delay_minutes INTEGER,
137
+ no_reply_count INTEGER NOT NULL DEFAULT 0,
138
+ topic_affinities_json TEXT NOT NULL,
139
+ last_interaction_at TEXT,
140
+ source_refs_json TEXT NOT NULL,
141
+ updated_at TEXT NOT NULL
142
+ );
143
+ CREATE INDEX IF NOT EXISTS relationship_memory_updated_at_idx ON relationship_memory(updated_at);
144
+ CREATE TABLE IF NOT EXISTS agent_goal (
145
+ goal_id TEXT PRIMARY KEY,
146
+ kind TEXT NOT NULL,
147
+ status TEXT NOT NULL,
148
+ origin TEXT NOT NULL,
149
+ description TEXT NOT NULL,
150
+ completion_criteria TEXT NOT NULL,
151
+ risk TEXT NOT NULL,
152
+ priority_hint INTEGER NOT NULL DEFAULT 0,
153
+ source_refs_json TEXT NOT NULL,
154
+ accepted_by TEXT,
155
+ created_at TEXT NOT NULL,
156
+ updated_at TEXT NOT NULL
157
+ );
158
+ CREATE INDEX IF NOT EXISTS agent_goal_status_idx ON agent_goal(status);
159
+ CREATE INDEX IF NOT EXISTS agent_goal_origin_idx ON agent_goal(origin);
160
+ CREATE INDEX IF NOT EXISTS agent_goal_updated_at_idx ON agent_goal(updated_at);
161
+ CREATE TABLE IF NOT EXISTS memory_store (
162
+ memory_store_id TEXT PRIMARY KEY,
163
+ lifecycle_status TEXT NOT NULL,
164
+ created_at TEXT NOT NULL,
165
+ input_memory_store_id TEXT,
166
+ dream_run_id TEXT,
167
+ canonical_entries_json TEXT NOT NULL,
168
+ insights_json TEXT NOT NULL,
169
+ narrative_snapshot_json TEXT,
170
+ relationship_snapshot_json TEXT,
171
+ validation_json TEXT NOT NULL
172
+ );
173
+ CREATE INDEX IF NOT EXISTS memory_store_lifecycle_idx ON memory_store(lifecycle_status);
174
+ CREATE INDEX IF NOT EXISTS memory_store_created_at_idx ON memory_store(created_at);
175
+ CREATE INDEX IF NOT EXISTS memory_store_input_idx ON memory_store(input_memory_store_id);
176
+ CREATE INDEX IF NOT EXISTS memory_store_dream_run_idx ON memory_store(dream_run_id);
102
177
  `;
103
178
  function resolveDbPath(filename) {
104
179
  if (path.isAbsolute(filename) || filename === ":memory:") {
@@ -0,0 +1,235 @@
1
+ export declare const agentGoal: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "agent_goal";
3
+ schema: undefined;
4
+ columns: {
5
+ goalId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "goal_id";
7
+ tableName: "agent_goal";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "kind";
26
+ tableName: "agent_goal";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "status";
45
+ tableName: "agent_goal";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ origin: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "origin";
64
+ tableName: "agent_goal";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ description: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "description";
83
+ tableName: "agent_goal";
84
+ dataType: "string";
85
+ columnType: "SQLiteText";
86
+ data: string;
87
+ driverParam: string;
88
+ notNull: true;
89
+ hasDefault: false;
90
+ isPrimaryKey: false;
91
+ isAutoincrement: false;
92
+ hasRuntimeDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ identity: undefined;
96
+ generated: undefined;
97
+ }, {}, {
98
+ length: number | undefined;
99
+ }>;
100
+ completionCriteria: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "completion_criteria";
102
+ tableName: "agent_goal";
103
+ dataType: "string";
104
+ columnType: "SQLiteText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: true;
108
+ hasDefault: false;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {
117
+ length: number | undefined;
118
+ }>;
119
+ risk: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
+ name: "risk";
121
+ tableName: "agent_goal";
122
+ dataType: "string";
123
+ columnType: "SQLiteText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: true;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {
136
+ length: number | undefined;
137
+ }>;
138
+ priorityHint: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "priority_hint";
140
+ tableName: "agent_goal";
141
+ dataType: "number";
142
+ columnType: "SQLiteInteger";
143
+ data: number;
144
+ driverParam: number;
145
+ notNull: true;
146
+ hasDefault: true;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: undefined;
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {}>;
155
+ sourceRefsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
+ name: "source_refs_json";
157
+ tableName: "agent_goal";
158
+ dataType: "string";
159
+ columnType: "SQLiteText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: true;
163
+ hasDefault: false;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: [string, ...string[]];
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {
172
+ length: number | undefined;
173
+ }>;
174
+ acceptedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "accepted_by";
176
+ tableName: "agent_goal";
177
+ dataType: "string";
178
+ columnType: "SQLiteText";
179
+ data: string;
180
+ driverParam: string;
181
+ notNull: false;
182
+ hasDefault: false;
183
+ isPrimaryKey: false;
184
+ isAutoincrement: false;
185
+ hasRuntimeDefault: false;
186
+ enumValues: [string, ...string[]];
187
+ baseColumn: never;
188
+ identity: undefined;
189
+ generated: undefined;
190
+ }, {}, {
191
+ length: number | undefined;
192
+ }>;
193
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
194
+ name: "created_at";
195
+ tableName: "agent_goal";
196
+ dataType: "string";
197
+ columnType: "SQLiteText";
198
+ data: string;
199
+ driverParam: string;
200
+ notNull: true;
201
+ hasDefault: false;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
205
+ enumValues: [string, ...string[]];
206
+ baseColumn: never;
207
+ identity: undefined;
208
+ generated: undefined;
209
+ }, {}, {
210
+ length: number | undefined;
211
+ }>;
212
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
213
+ name: "updated_at";
214
+ tableName: "agent_goal";
215
+ dataType: "string";
216
+ columnType: "SQLiteText";
217
+ data: string;
218
+ driverParam: string;
219
+ notNull: true;
220
+ hasDefault: false;
221
+ isPrimaryKey: false;
222
+ isAutoincrement: false;
223
+ hasRuntimeDefault: false;
224
+ enumValues: [string, ...string[]];
225
+ baseColumn: never;
226
+ identity: undefined;
227
+ generated: undefined;
228
+ }, {}, {
229
+ length: number | undefined;
230
+ }>;
231
+ };
232
+ dialect: "sqlite";
233
+ }>;
234
+ export type AgentGoalRow = typeof agentGoal.$inferSelect;
235
+ export type NewAgentGoalRow = typeof agentGoal.$inferInsert;
@@ -0,0 +1,19 @@
1
+ import { index, sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
2
+ export const agentGoal = sqliteTable("agent_goal", {
3
+ goalId: text("goal_id").primaryKey(),
4
+ kind: text("kind").notNull(),
5
+ status: text("status").notNull(),
6
+ origin: text("origin").notNull(),
7
+ description: text("description").notNull(),
8
+ completionCriteria: text("completion_criteria").notNull(),
9
+ risk: text("risk").notNull(),
10
+ priorityHint: integer("priority_hint").notNull().default(0),
11
+ sourceRefsJson: text("source_refs_json").notNull(),
12
+ acceptedBy: text("accepted_by"),
13
+ createdAt: text("created_at").notNull(),
14
+ updatedAt: text("updated_at").notNull(),
15
+ }, (table) => [
16
+ index("agent_goal_status_idx").on(table.status),
17
+ index("agent_goal_origin_idx").on(table.origin),
18
+ index("agent_goal_updated_at_idx").on(table.updatedAt),
19
+ ]);
@@ -7,3 +7,8 @@ export * from "./proposals.js";
7
7
  export * from "./provenance.js";
8
8
  export * from "./delivery-attempts.js";
9
9
  export * from "./operator-fallback-artifacts.js";
10
+ export * from "./session-chronicle.js";
11
+ export * from "./narrative-state.js";
12
+ export * from "./relationship-memory.js";
13
+ export * from "./agent-goal.js";
14
+ export * from "./memory-store.js";
@@ -7,3 +7,8 @@ export * from "./proposals.js";
7
7
  export * from "./provenance.js";
8
8
  export * from "./delivery-attempts.js";
9
9
  export * from "./operator-fallback-artifacts.js";
10
+ export * from "./session-chronicle.js";
11
+ export * from "./narrative-state.js";
12
+ export * from "./relationship-memory.js";
13
+ export * from "./agent-goal.js";
14
+ export * from "./memory-store.js";